From 2baec25423a5c5023d8c97395a029633db85f504 Mon Sep 17 00:00:00 2001 From: JinMao Date: Fri, 13 May 2022 09:20:46 +0800 Subject: [PATCH] wip: VbenComponent first commit --- package.json | 65 +++++++++---------- src/main.ts | 19 ++++-- src/vbenComponents/button/index.ts | 4 ++ src/vbenComponents/button/src/Button.vue | 12 ++++ src/vbenComponents/card/index.ts | 4 ++ src/vbenComponents/card/src/Card.vue | 20 ++++++ src/vbenComponents/divider/index.ts | 4 ++ src/vbenComponents/divider/src/Divider.vue | 12 ++++ src/vbenComponents/index.ts | 30 +++++++++ src/vbenComponents/popover/index.ts | 3 + src/vbenComponents/popover/src/Popover.vue | 12 ++++ src/vbenComponents/space/index.ts | 4 ++ src/vbenComponents/space/src/Space.vue | 12 ++++ src/vbenComponents/table/index.ts | 6 ++ src/vbenComponents/table/src/Table.vue | 74 ++++++++++++++++++++++ src/vbenComponents/table/src/type.ts | 11 ++++ src/vbenComponents/tag/index.ts | 4 ++ src/vbenComponents/tag/src/Tag.vue | 12 ++++ 18 files changed, 272 insertions(+), 36 deletions(-) create mode 100644 src/vbenComponents/button/index.ts create mode 100644 src/vbenComponents/button/src/Button.vue create mode 100644 src/vbenComponents/card/index.ts create mode 100644 src/vbenComponents/card/src/Card.vue create mode 100644 src/vbenComponents/divider/index.ts create mode 100644 src/vbenComponents/divider/src/Divider.vue create mode 100644 src/vbenComponents/index.ts create mode 100644 src/vbenComponents/popover/index.ts create mode 100644 src/vbenComponents/popover/src/Popover.vue create mode 100644 src/vbenComponents/space/index.ts create mode 100644 src/vbenComponents/space/src/Space.vue create mode 100644 src/vbenComponents/table/index.ts create mode 100644 src/vbenComponents/table/src/Table.vue create mode 100644 src/vbenComponents/table/src/type.ts create mode 100644 src/vbenComponents/tag/index.ts create mode 100644 src/vbenComponents/tag/src/Tag.vue diff --git a/package.json b/package.json index 2974310b..942d0d3c 100644 --- a/package.json +++ b/package.json @@ -35,25 +35,26 @@ "@ant-design/colors": "^6.0.0", "@ant-design/icons-vue": "^6.1.0", "@iconify/iconify": "^2.2.1", - "@logicflow/core": "^1.1.13", - "@logicflow/extension": "^1.1.13", + "@logicflow/core": "^1.1.15", + "@logicflow/extension": "^1.1.15", "@vue/runtime-core": "^3.2.33", "@vue/shared": "^3.2.33", - "@vueuse/core": "^8.3.0", - "@vueuse/shared": "^8.3.0", + "@vueuse/core": "^8.4.2", + "@vueuse/shared": "^8.4.2", "@zxcvbn-ts/core": "^2.0.1", - "ant-design-vue": "^3.2.0", + "ant-design-vue": "^3.2.3", "axios": "^0.26.1", "codemirror": "^5.65.3", "cropperjs": "^1.5.12", "crypto-js": "^4.1.1", - "dayjs": "^1.11.1", + "dayjs": "^1.11.2", "echarts": "^5.3.2", "intro.js": "^5.1.0", "lodash-es": "^4.17.21", "mockjs": "^1.1.0", + "naive-ui": "^2.28.4", "nprogress": "^0.2.0", - "path-to-regexp": "^6.2.0", + "path-to-regexp": "^6.2.1", "pinia": "2.0.12", "print-js": "^1.6.0", "qrcode": "^1.5.0", @@ -61,21 +62,21 @@ "resize-observer-polyfill": "^1.5.1", "showdown": "^2.1.0", "sortablejs": "^1.15.0", - "tinymce": "^5.10.3", - "vditor": "^3.8.13", + "tinymce": "^5.10.4", + "vditor": "^3.8.14", "vue": "^3.2.33", - "vue-i18n": "^9.1.9", - "vue-json-pretty": "^2.0.6", - "vue-router": "^4.0.14", + "vue-i18n": "^9.1.10", + "vue-json-pretty": "^2.1.0", + "vue-router": "^4.0.15", "vue-types": "^4.1.1", - "vxe-table": "^4.2.3-beta.0", + "vxe-table": "^4.2.3", "xe-utils": "^3.5.4", "xlsx": "^0.18.5" }, "devDependencies": { - "@commitlint/cli": "^16.2.3", - "@commitlint/config-conventional": "^16.2.1", - "@iconify/json": "^2.1.30", + "@commitlint/cli": "^16.2.4", + "@commitlint/config-conventional": "^16.2.4", + "@iconify/json": "^2.1.41", "@purge-icons/generated": "^0.8.1", "@types/codemirror": "^5.60.5", "@types/crypto-js": "^4.1.1", @@ -84,52 +85,52 @@ "@types/intro.js": "^3.0.2", "@types/lodash-es": "^4.17.6", "@types/mockjs": "^1.0.6", - "@types/node": "^17.0.25", + "@types/node": "^17.0.32", "@types/nprogress": "^0.2.0", "@types/qrcode": "^1.4.2", "@types/qs": "^6.9.7", "@types/showdown": "^1.9.4", - "@types/sortablejs": "^1.10.7", - "@typescript-eslint/eslint-plugin": "^5.20.0", - "@typescript-eslint/parser": "^5.20.0", - "@vitejs/plugin-legacy": "^1.8.1", - "@vitejs/plugin-vue": "^2.3.1", + "@types/sortablejs": "^1.13.0", + "@typescript-eslint/eslint-plugin": "^5.23.0", + "@typescript-eslint/parser": "^5.23.0", + "@vitejs/plugin-legacy": "^1.8.2", + "@vitejs/plugin-vue": "^2.3.3", "@vitejs/plugin-vue-jsx": "^1.3.10", "@vue/compiler-sfc": "^3.2.33", "@vue/test-utils": "^2.0.0-rc.21", - "autoprefixer": "^10.4.4", + "autoprefixer": "^10.4.7", "commitizen": "^4.2.4", "conventional-changelog-cli": "^2.2.2", "cross-env": "^7.0.3", - "dotenv": "^16.0.0", - "eslint": "^8.13.0", + "dotenv": "^16.0.1", + "eslint": "^8.15.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-vue": "^8.6.0", + "eslint-plugin-vue": "^8.7.1", "esno": "^0.14.1", "fs-extra": "^10.1.0", "husky": "^7.0.4", - "inquirer": "^8.2.2", + "inquirer": "^8.2.4", "less": "^4.1.2", "lint-staged": "12.3.7", "npm-run-all": "^4.1.5", "picocolors": "^1.0.0", - "postcss": "^8.4.12", + "postcss": "^8.4.13", "postcss-html": "^1.4.1", "postcss-less": "^6.0.0", "prettier": "^2.6.2", "rimraf": "^3.0.2", - "rollup": "^2.70.2", + "rollup": "^2.72.1", "rollup-plugin-visualizer": "^5.6.0", - "stylelint": "^14.7.1", + "stylelint": "^14.8.2", "stylelint-config-prettier": "^9.0.3", "stylelint-config-recommended": "^7.0.0", "stylelint-config-recommended-vue": "^1.4.0", "stylelint-config-standard": "^25.0.0", "stylelint-order": "^5.0.0", "ts-node": "^10.7.0", - "typescript": "^4.6.3", - "vite": "^2.9.5", + "typescript": "^4.6.4", + "vite": "^2.9.9", "vite-plugin-compression": "^0.5.1", "vite-plugin-html": "^3.2.0", "vite-plugin-imagemin": "^0.6.1", diff --git a/src/main.ts b/src/main.ts index 9cc72ea8..2e723921 100644 --- a/src/main.ts +++ b/src/main.ts @@ -5,10 +5,6 @@ import 'virtual:windi-utilities.css'; // Register icon sprite import 'virtual:svg-icons-register'; -import 'xe-utils'; -import VXETable from 'vxe-table'; -import 'vxe-table/lib/style.css'; - import App from './App.vue'; import { createApp } from 'vue'; import { initAppConfigStore } from '/@/logics/initAppConfig'; @@ -20,9 +16,24 @@ import { setupGlobDirectives } from '/@/directives'; import { setupI18n } from '/@/locales/setupI18n'; import { registerGlobComp } from '/@/components/registerGlobComp'; +import 'xe-utils'; +import VXETable from 'vxe-table'; +import 'vxe-table/lib/style.css'; + +import { initVbenComponent } from '/@/vbenComponents'; +import { NTag, NCard, NDivider, NSpace, NPopover, NButton } from 'naive-ui'; + async function bootstrap() { const app = createApp(App); + initVbenComponent(app, { + Tag: NTag, + Card: NCard, + Divider: NDivider, + Space: NSpace, + Popover: NPopover, + Button: NButton, + }); // Configure store setupStore(app); diff --git a/src/vbenComponents/button/index.ts b/src/vbenComponents/button/index.ts new file mode 100644 index 00000000..900e7489 --- /dev/null +++ b/src/vbenComponents/button/index.ts @@ -0,0 +1,4 @@ +import { withInstall } from '/@/utils'; +import Button from './src/Button.vue'; + +export const VbenButton = withInstall(Button); diff --git a/src/vbenComponents/button/src/Button.vue b/src/vbenComponents/button/src/Button.vue new file mode 100644 index 00000000..d0bf8008 --- /dev/null +++ b/src/vbenComponents/button/src/Button.vue @@ -0,0 +1,12 @@ + + + + diff --git a/src/vbenComponents/card/index.ts b/src/vbenComponents/card/index.ts new file mode 100644 index 00000000..421bf709 --- /dev/null +++ b/src/vbenComponents/card/index.ts @@ -0,0 +1,4 @@ +import { withInstall } from '/@/utils'; +import Card from './src/Card.vue'; + +export const VbenCard = withInstall(Card); diff --git a/src/vbenComponents/card/src/Card.vue b/src/vbenComponents/card/src/Card.vue new file mode 100644 index 00000000..28b1fc4e --- /dev/null +++ b/src/vbenComponents/card/src/Card.vue @@ -0,0 +1,20 @@ + + + + diff --git a/src/vbenComponents/divider/index.ts b/src/vbenComponents/divider/index.ts new file mode 100644 index 00000000..2cb3e236 --- /dev/null +++ b/src/vbenComponents/divider/index.ts @@ -0,0 +1,4 @@ +import { withInstall } from '/@/utils'; +import Divider from './src/Divider.vue'; + +export const VbenDivider = withInstall(Divider); diff --git a/src/vbenComponents/divider/src/Divider.vue b/src/vbenComponents/divider/src/Divider.vue new file mode 100644 index 00000000..2583ab2f --- /dev/null +++ b/src/vbenComponents/divider/src/Divider.vue @@ -0,0 +1,12 @@ + + + + diff --git a/src/vbenComponents/index.ts b/src/vbenComponents/index.ts new file mode 100644 index 00000000..387ebc0a --- /dev/null +++ b/src/vbenComponents/index.ts @@ -0,0 +1,30 @@ +import type { Component, App } from 'vue'; + +//组件map +export const maps = new Map(); + +// 引入组件 +import { VbenPopover } from './popover'; +import { VbenDivider } from './divider'; +import { VbenTag } from './tag'; +import { VbenTable } from './table'; +import { VbenCard } from './card'; +import { VbenSpace } from './space'; +import { VbenButton } from './button'; + +// 初始化组件 +// global 是否全局注册 +export function initVbenComponent(app: App, comp: Object, global: boolean = true) { + Object.keys(comp).forEach((k) => { + maps.set(k, comp[k]); + }); + if (!global) return; + app + .use(VbenCard) + .use(VbenTable) + .use(VbenTag) + .use(VbenDivider) + .use(VbenSpace) + .use(VbenPopover) + .use(VbenButton); +} diff --git a/src/vbenComponents/popover/index.ts b/src/vbenComponents/popover/index.ts new file mode 100644 index 00000000..3dd6545e --- /dev/null +++ b/src/vbenComponents/popover/index.ts @@ -0,0 +1,3 @@ +import Popover from './src/Popover.vue'; +import { withInstall } from '/@/utils'; +export const VbenPopover = withInstall(Popover); diff --git a/src/vbenComponents/popover/src/Popover.vue b/src/vbenComponents/popover/src/Popover.vue new file mode 100644 index 00000000..b288c27d --- /dev/null +++ b/src/vbenComponents/popover/src/Popover.vue @@ -0,0 +1,12 @@ + + + + diff --git a/src/vbenComponents/space/index.ts b/src/vbenComponents/space/index.ts new file mode 100644 index 00000000..90faa407 --- /dev/null +++ b/src/vbenComponents/space/index.ts @@ -0,0 +1,4 @@ +import { withInstall } from '/@/utils'; +import Space from './src/Space.vue'; + +export const VbenSpace = withInstall(Space); diff --git a/src/vbenComponents/space/src/Space.vue b/src/vbenComponents/space/src/Space.vue new file mode 100644 index 00000000..d8da5912 --- /dev/null +++ b/src/vbenComponents/space/src/Space.vue @@ -0,0 +1,12 @@ + + + + diff --git a/src/vbenComponents/table/index.ts b/src/vbenComponents/table/index.ts new file mode 100644 index 00000000..c413c39b --- /dev/null +++ b/src/vbenComponents/table/index.ts @@ -0,0 +1,6 @@ +import { withInstall } from '/@/utils'; +import Table from './src/Table.vue'; + +export * from './src/type'; + +export const VbenTable = withInstall(Table); diff --git a/src/vbenComponents/table/src/Table.vue b/src/vbenComponents/table/src/Table.vue new file mode 100644 index 00000000..a0195f66 --- /dev/null +++ b/src/vbenComponents/table/src/Table.vue @@ -0,0 +1,74 @@ + + diff --git a/src/vbenComponents/table/src/type.ts b/src/vbenComponents/table/src/type.ts new file mode 100644 index 00000000..95b07e2c --- /dev/null +++ b/src/vbenComponents/table/src/type.ts @@ -0,0 +1,11 @@ +import type { VxeGridProps } from 'vxe-table'; +import { VxeGridPropTypes } from 'vxe-table'; + +export type VbenTableProps = VxeGridProps & { + api?: Function; + Params?: Object; + + title?: string; + pagination?: boolean | VxeGridPropTypes.PagerConfig; + afterFetch?: Fn; +}; diff --git a/src/vbenComponents/tag/index.ts b/src/vbenComponents/tag/index.ts new file mode 100644 index 00000000..8baf76f1 --- /dev/null +++ b/src/vbenComponents/tag/index.ts @@ -0,0 +1,4 @@ +import { withInstall } from '/@/utils'; +import Tag from './src/Tag.vue'; + +export const VbenTag = withInstall(Tag); diff --git a/src/vbenComponents/tag/src/Tag.vue b/src/vbenComponents/tag/src/Tag.vue new file mode 100644 index 00000000..26b85047 --- /dev/null +++ b/src/vbenComponents/tag/src/Tag.vue @@ -0,0 +1,12 @@ + + + +