Commit 135ee3f39d918bdfd31949dc43f8ed6f89b2aef8
Committed by
Gitee
!349 vue3 XTable 组件
Merge pull request !349 from xingyu/dev
Showing
45 changed files
with
996 additions
and
597 deletions
README.md
| ... | ... | @@ -223,7 +223,7 @@ ps:核心功能已经实现,正在对接微信小程序中... |
| 223 | 223 | |----------------------------------------------------------------------|:------------:|:------:| |
| 224 | 224 | | [Vue](https://staging-cn.vuejs.org/) | Vue 框架 | 3.2.45 | |
| 225 | 225 | | [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 4.0.3 | |
| 226 | -| [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.2.27 | | |
| 226 | +| [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.2.28 | | |
| 227 | 227 | | [TypeScript](https://www.typescriptlang.org/docs/) | TypeScript | 4.9.4 | |
| 228 | 228 | | [pinia](https://pinia.vuejs.org/) | vuex5 | 2.0.28 | |
| 229 | 229 | | [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化 | 9.2.2 | | ... | ... |
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <!-- 操作:新增 --> |
| 7 | 7 | <XButton |
| ... | ... | @@ -43,7 +43,7 @@ |
| 43 | 43 | @click="handleDelete(row.id)" |
| 44 | 44 | /> |
| 45 | 45 | </template> |
| 46 | - </vxe-grid> | |
| 46 | + </XTable> | |
| 47 | 47 | </ContentWrap> |
| 48 | 48 | <!-- 弹窗 --> |
| 49 | 49 | <XModal id="${classNameVar}Model" :loading="modelLoading" v-model="modelVisible" :title="modelTitle"> |
| ... | ... | @@ -79,8 +79,7 @@ |
| 79 | 79 | import { ref, unref } from 'vue' |
| 80 | 80 | import { useI18n } from '@/hooks/web/useI18n' |
| 81 | 81 | import { useMessage } from '@/hooks/web/useMessage' |
| 82 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 83 | -import { VxeGridInstance } from 'vxe-table' | |
| 82 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 84 | 83 | import { FormExpose } from '@/components/Form' |
| 85 | 84 | // 业务相关的 import |
| 86 | 85 | import { rules, allSchemas } from './${classNameVar}.data' |
| ... | ... | @@ -90,8 +89,7 @@ const { t } = useI18n() // 国际化 |
| 90 | 89 | const message = useMessage() // 消息弹窗 |
| 91 | 90 | |
| 92 | 91 | // 列表相关的变量 |
| 93 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 94 | -const { gridOptions, getList, deleteData, exportList } = useVxeGrid<${simpleClassName}Api.${simpleClassName}VO>({ | |
| 92 | +const [registerTable, { reload, deleteData, exportList }] = useXTable({ | |
| 95 | 93 | allSchemas: allSchemas, |
| 96 | 94 | getListApi: ${simpleClassName}Api.get${simpleClassName}PageApi, |
| 97 | 95 | deleteApi: ${simpleClassName}Api.delete${simpleClassName}Api, |
| ... | ... | @@ -123,7 +121,7 @@ const handleCreate = () => { |
| 123 | 121 | |
| 124 | 122 | // 导出操作 |
| 125 | 123 | const handleExport = async () => { |
| 126 | - await exportList(xGrid, '${table.classComment}.xls') | |
| 124 | + await exportList('${table.classComment}.xls') | |
| 127 | 125 | } |
| 128 | 126 | |
| 129 | 127 | // 修改操作 |
| ... | ... | @@ -145,7 +143,7 @@ const handleDetail = async (rowId: number) => { |
| 145 | 143 | |
| 146 | 144 | // 删除操作 |
| 147 | 145 | const handleDelete = async (rowId: number) => { |
| 148 | - await deleteData(xGrid, rowId) | |
| 146 | + await deleteData(rowId) | |
| 149 | 147 | } |
| 150 | 148 | |
| 151 | 149 | // 提交按钮 |
| ... | ... | @@ -169,7 +167,7 @@ const submitForm = async () => { |
| 169 | 167 | } finally { |
| 170 | 168 | actionLoading.value = false |
| 171 | 169 | // 刷新列表 |
| 172 | - await getList(xGrid) | |
| 170 | + await reload() | |
| 173 | 171 | } |
| 174 | 172 | } |
| 175 | 173 | }) | ... | ... |
yudao-ui-admin-vue3/README.md
| ... | ... | @@ -26,19 +26,19 @@ |
| 26 | 26 | |
| 27 | 27 | ### 前端依赖 |
| 28 | 28 | |
| 29 | -| 框架 | 说明 | 版本 | | |
| 30 | -| --- | --- | --- | | |
| 29 | +| 框架 | 说明 | 版本 | | |
| 30 | +| --- | --- |--------| | |
| 31 | 31 | | [Vue](https://staging-cn.vuejs.org/) | vue 框架 | 3.2.45 | |
| 32 | -| [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 4.0.3 | | |
| 33 | -| [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.2.27 | | |
| 34 | -| [TypeScript](https://www.typescriptlang.org/docs/) | JavaScript 的超集 | 4.9.4 | | |
| 32 | +| [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 4.0.3 | | |
| 33 | +| [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.2.28 | | |
| 34 | +| [TypeScript](https://www.typescriptlang.org/docs/) | JavaScript 的超集 | 4.9.4 | | |
| 35 | 35 | | [pinia](https://pinia.vuejs.org/) | Vue 存储库 替代 vuex5 | 2.0.28 | |
| 36 | -| [vueuse](https://vueuse.org/) | 常用工具集 | 9.8.2 | | |
| 37 | -| [vxe-table](https://vxetable.cn/) | vue 最强表单 | 4.3.7 | | |
| 38 | -| [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化 | 9.2.2 | | |
| 39 | -| [vue-router](https://router.vuejs.org/) | vue 路由 | 4.1.6 | | |
| 40 | -| [windicss](https://cn.windicss.org/) | 下一代工具优先的 CSS 框架 | 3.5.6 | | |
| 41 | -| [iconify](https://icon-sets.iconify.design/) | 在线图标库 | 3.0.0 | | |
| 36 | +| [vueuse](https://vueuse.org/) | 常用工具集 | 9.8.2 | | |
| 37 | +| [vxe-table](https://vxetable.cn/) | vue 最强表单 | 4.3.7 | | |
| 38 | +| [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化 | 9.2.2 | | |
| 39 | +| [vue-router](https://router.vuejs.org/) | vue 路由 | 4.1.6 | | |
| 40 | +| [windicss](https://cn.windicss.org/) | 下一代工具优先的 CSS 框架 | 3.5.6 | | |
| 41 | +| [iconify](https://icon-sets.iconify.design/) | 在线图标库 | 3.0.1 | | |
| 42 | 42 | | [wangeditor](https://www.wangeditor.com/) | 富文本编辑器 | 5.1.23 | |
| 43 | 43 | |
| 44 | 44 | ### 推荐 VScode 开发,插件如下 | ... | ... |
yudao-ui-admin-vue3/package.json
| 1 | 1 | { |
| 2 | 2 | "name": "yudao-ui-admin-vue3", |
| 3 | - "version": "1.6.5.1879", | |
| 3 | + "version": "1.6.5.1901", | |
| 4 | 4 | "description": "基于vue3、vite4、element-plus、typesScript", |
| 5 | 5 | "author": "xingyu", |
| 6 | 6 | "private": false, |
| ... | ... | @@ -30,13 +30,13 @@ |
| 30 | 30 | "@wangeditor/editor-for-vue": "^5.1.10", |
| 31 | 31 | "@zxcvbn-ts/core": "^2.1.0", |
| 32 | 32 | "animate.css": "^4.1.1", |
| 33 | - "axios": "^1.2.1", | |
| 33 | + "axios": "^1.2.2", | |
| 34 | 34 | "cropperjs": "^1.5.13", |
| 35 | 35 | "crypto-js": "^4.1.1", |
| 36 | 36 | "dayjs": "^1.11.7", |
| 37 | 37 | "echarts": "^5.4.1", |
| 38 | 38 | "echarts-wordcloud": "^2.1.0", |
| 39 | - "element-plus": "2.2.27", | |
| 39 | + "element-plus": "2.2.28", | |
| 40 | 40 | "intro.js": "^6.0.0", |
| 41 | 41 | "jsencrypt": "^3.3.1", |
| 42 | 42 | "lodash-es": "^4.17.21", |
| ... | ... | @@ -57,25 +57,25 @@ |
| 57 | 57 | "devDependencies": { |
| 58 | 58 | "@commitlint/cli": "^17.3.0", |
| 59 | 59 | "@commitlint/config-conventional": "^17.3.0", |
| 60 | - "@iconify/json": "^2.1.157", | |
| 60 | + "@iconify/json": "^2.2.1", | |
| 61 | 61 | "@intlify/unplugin-vue-i18n": "^0.8.1", |
| 62 | 62 | "@purge-icons/generated": "^0.9.0", |
| 63 | 63 | "@types/intro.js": "^5.1.0", |
| 64 | 64 | "@types/lodash-es": "^4.17.6", |
| 65 | - "@types/node": "^18.11.17", | |
| 65 | + "@types/node": "^18.11.18", | |
| 66 | 66 | "@types/nprogress": "^0.2.0", |
| 67 | 67 | "@types/qrcode": "^1.5.0", |
| 68 | 68 | "@types/qs": "^6.9.7", |
| 69 | - "@typescript-eslint/eslint-plugin": "^5.47.0", | |
| 70 | - "@typescript-eslint/parser": "^5.47.0", | |
| 69 | + "@typescript-eslint/eslint-plugin": "^5.48.0", | |
| 70 | + "@typescript-eslint/parser": "^5.48.0", | |
| 71 | 71 | "@vitejs/plugin-legacy": "^3.0.1", |
| 72 | 72 | "@vitejs/plugin-vue": "^4.0.0", |
| 73 | 73 | "@vitejs/plugin-vue-jsx": "^3.0.0", |
| 74 | 74 | "autoprefixer": "^10.4.13", |
| 75 | 75 | "consola": "^2.15.3", |
| 76 | - "eslint": "^8.30.0", | |
| 77 | - "eslint-config-prettier": "^8.5.0", | |
| 78 | - "eslint-define-config": "^1.12.0", | |
| 76 | + "eslint": "^8.31.0", | |
| 77 | + "eslint-config-prettier": "^8.6.0", | |
| 78 | + "eslint-define-config": "^1.13.0", | |
| 79 | 79 | "eslint-plugin-prettier": "^4.2.1", |
| 80 | 80 | "eslint-plugin-vue": "^9.8.0", |
| 81 | 81 | "lint-staged": "^13.1.0", |
| ... | ... | @@ -84,9 +84,9 @@ |
| 84 | 84 | "postcss-scss": "^4.0.6", |
| 85 | 85 | "prettier": "^2.8.1", |
| 86 | 86 | "rimraf": "^3.0.2", |
| 87 | - "rollup": "^3.8.1", | |
| 87 | + "rollup": "^3.9.1", | |
| 88 | 88 | "sass": "^1.57.1", |
| 89 | - "stylelint": "^14.16.0", | |
| 89 | + "stylelint": "^14.16.1", | |
| 90 | 90 | "stylelint-config-html": "^1.1.0", |
| 91 | 91 | "stylelint-config-prettier": "^9.0.4", |
| 92 | 92 | "stylelint-config-recommended": "^9.0.0", |
| ... | ... | @@ -104,7 +104,7 @@ |
| 104 | 104 | "vite-plugin-svg-icons": "^2.0.1", |
| 105 | 105 | "vite-plugin-vue-setup-extend": "^0.4.0", |
| 106 | 106 | "vite-plugin-windicss": "^1.8.10", |
| 107 | - "vue-tsc": "^1.0.17", | |
| 107 | + "vue-tsc": "^1.0.19", | |
| 108 | 108 | "windicss": "^3.5.6" |
| 109 | 109 | }, |
| 110 | 110 | "engines": { | ... | ... |
yudao-ui-admin-vue3/pnpm-lock.yaml
| ... | ... | @@ -4,37 +4,37 @@ specifiers: |
| 4 | 4 | '@commitlint/cli': ^17.3.0 |
| 5 | 5 | '@commitlint/config-conventional': ^17.3.0 |
| 6 | 6 | '@iconify/iconify': ^3.0.1 |
| 7 | - '@iconify/json': ^2.1.156 | |
| 7 | + '@iconify/json': ^2.2.1 | |
| 8 | 8 | '@intlify/unplugin-vue-i18n': ^0.8.1 |
| 9 | 9 | '@purge-icons/generated': ^0.9.0 |
| 10 | 10 | '@types/intro.js': ^5.1.0 |
| 11 | 11 | '@types/lodash-es': ^4.17.6 |
| 12 | - '@types/node': ^18.11.17 | |
| 12 | + '@types/node': ^18.11.18 | |
| 13 | 13 | '@types/nprogress': ^0.2.0 |
| 14 | 14 | '@types/qrcode': ^1.5.0 |
| 15 | 15 | '@types/qs': ^6.9.7 |
| 16 | - '@typescript-eslint/eslint-plugin': ^5.47.0 | |
| 17 | - '@typescript-eslint/parser': ^5.47.0 | |
| 16 | + '@typescript-eslint/eslint-plugin': ^5.48.0 | |
| 17 | + '@typescript-eslint/parser': ^5.48.0 | |
| 18 | 18 | '@vitejs/plugin-legacy': ^3.0.1 |
| 19 | 19 | '@vitejs/plugin-vue': ^4.0.0 |
| 20 | 20 | '@vitejs/plugin-vue-jsx': ^3.0.0 |
| 21 | - '@vueuse/core': ^9.8.2 | |
| 21 | + '@vueuse/core': ^9.9.0 | |
| 22 | 22 | '@wangeditor/editor': ^5.1.23 |
| 23 | 23 | '@wangeditor/editor-for-vue': ^5.1.10 |
| 24 | 24 | '@zxcvbn-ts/core': ^2.1.0 |
| 25 | 25 | animate.css: ^4.1.1 |
| 26 | 26 | autoprefixer: ^10.4.13 |
| 27 | - axios: ^1.2.1 | |
| 27 | + axios: ^1.2.2 | |
| 28 | 28 | consola: ^2.15.3 |
| 29 | 29 | cropperjs: ^1.5.13 |
| 30 | 30 | crypto-js: ^4.1.1 |
| 31 | 31 | dayjs: ^1.11.7 |
| 32 | 32 | echarts: ^5.4.1 |
| 33 | 33 | echarts-wordcloud: ^2.1.0 |
| 34 | - element-plus: 2.2.27 | |
| 35 | - eslint: ^8.30.0 | |
| 36 | - eslint-config-prettier: ^8.5.0 | |
| 37 | - eslint-define-config: ^1.12.0 | |
| 34 | + element-plus: 2.2.28 | |
| 35 | + eslint: ^8.31.0 | |
| 36 | + eslint-config-prettier: ^8.6.0 | |
| 37 | + eslint-define-config: ^1.13.0 | |
| 38 | 38 | eslint-plugin-prettier: ^4.2.1 |
| 39 | 39 | eslint-plugin-vue: ^9.8.0 |
| 40 | 40 | intro.js: ^6.0.0 |
| ... | ... | @@ -51,9 +51,9 @@ specifiers: |
| 51 | 51 | qrcode: ^1.5.1 |
| 52 | 52 | qs: ^6.11.0 |
| 53 | 53 | rimraf: ^3.0.2 |
| 54 | - rollup: ^3.8.1 | |
| 54 | + rollup: ^3.9.1 | |
| 55 | 55 | sass: ^1.57.1 |
| 56 | - stylelint: ^14.16.0 | |
| 56 | + stylelint: ^14.16.1 | |
| 57 | 57 | stylelint-config-html: ^1.1.0 |
| 58 | 58 | stylelint-config-prettier: ^9.0.4 |
| 59 | 59 | stylelint-config-recommended: ^9.0.0 |
| ... | ... | @@ -75,7 +75,7 @@ specifiers: |
| 75 | 75 | vue: 3.2.45 |
| 76 | 76 | vue-i18n: 9.2.2 |
| 77 | 77 | vue-router: ^4.1.6 |
| 78 | - vue-tsc: ^1.0.16 | |
| 78 | + vue-tsc: ^1.0.19 | |
| 79 | 79 | vue-types: ^5.0.2 |
| 80 | 80 | vxe-table: ^4.3.7 |
| 81 | 81 | web-storage-cache: ^1.1.1 |
| ... | ... | @@ -84,18 +84,18 @@ specifiers: |
| 84 | 84 | |
| 85 | 85 | dependencies: |
| 86 | 86 | '@iconify/iconify': 3.0.1 |
| 87 | - '@vueuse/core': 9.8.2_vue@3.2.45 | |
| 87 | + '@vueuse/core': 9.9.0_vue@3.2.45 | |
| 88 | 88 | '@wangeditor/editor': 5.1.23 |
| 89 | 89 | '@wangeditor/editor-for-vue': 5.1.12_3apfu3xbp6awzuex7ed3sbrv6y |
| 90 | 90 | '@zxcvbn-ts/core': 2.1.0 |
| 91 | 91 | animate.css: 4.1.1 |
| 92 | - axios: 1.2.1 | |
| 92 | + axios: 1.2.2 | |
| 93 | 93 | cropperjs: 1.5.13 |
| 94 | 94 | crypto-js: 4.1.1 |
| 95 | 95 | dayjs: 1.11.7 |
| 96 | 96 | echarts: registry.npmmirror.com/echarts/5.4.1 |
| 97 | 97 | echarts-wordcloud: 2.1.0_echarts@5.4.1 |
| 98 | - element-plus: 2.2.27_vue@3.2.45 | |
| 98 | + element-plus: 2.2.28_vue@3.2.45 | |
| 99 | 99 | intro.js: 6.0.0 |
| 100 | 100 | jsencrypt: 3.3.1 |
| 101 | 101 | lodash-es: 4.17.21 |
| ... | ... | @@ -116,58 +116,79 @@ dependencies: |
| 116 | 116 | devDependencies: |
| 117 | 117 | '@commitlint/cli': 17.3.0 |
| 118 | 118 | '@commitlint/config-conventional': 17.3.0 |
| 119 | - '@iconify/json': 2.1.156 | |
| 119 | + '@iconify/json': 2.2.1 | |
| 120 | 120 | '@intlify/unplugin-vue-i18n': 0.8.1_vue-i18n@9.2.2 |
| 121 | 121 | '@purge-icons/generated': 0.9.0 |
| 122 | 122 | '@types/intro.js': 5.1.0 |
| 123 | 123 | '@types/lodash-es': 4.17.6 |
| 124 | - '@types/node': 18.11.17 | |
| 124 | + '@types/node': 18.11.18 | |
| 125 | 125 | '@types/nprogress': 0.2.0 |
| 126 | 126 | '@types/qrcode': 1.5.0 |
| 127 | 127 | '@types/qs': 6.9.7 |
| 128 | - '@typescript-eslint/eslint-plugin': 5.47.0_ncmi6noazr3nzas7jxykisekym | |
| 129 | - '@typescript-eslint/parser': 5.47.0_lzzuuodtsqwxnvqeq4g4likcqa | |
| 128 | + '@typescript-eslint/eslint-plugin': 5.48.0_k73wpmdolxikpyqun3p36akaaq | |
| 129 | + '@typescript-eslint/parser': 5.48.0_iukboom6ndih5an6iafl45j2fe | |
| 130 | 130 | '@vitejs/plugin-legacy': registry.npmmirror.com/@vitejs/plugin-legacy/3.0.1_terser@5.16.1+vite@4.0.3 |
| 131 | 131 | '@vitejs/plugin-vue': registry.npmmirror.com/@vitejs/plugin-vue/4.0.0_vite@4.0.3+vue@3.2.45 |
| 132 | 132 | '@vitejs/plugin-vue-jsx': registry.npmmirror.com/@vitejs/plugin-vue-jsx/3.0.0_vite@4.0.3+vue@3.2.45 |
| 133 | 133 | autoprefixer: 10.4.13_postcss@8.4.20 |
| 134 | 134 | consola: 2.15.3 |
| 135 | - eslint: 8.30.0 | |
| 136 | - eslint-config-prettier: 8.5.0_eslint@8.30.0 | |
| 137 | - eslint-define-config: 1.12.0 | |
| 138 | - eslint-plugin-prettier: 4.2.1_kl4pe43v5b43npmso5hoplpbyi | |
| 139 | - eslint-plugin-vue: 9.8.0_eslint@8.30.0 | |
| 135 | + eslint: 8.31.0 | |
| 136 | + eslint-config-prettier: 8.6.0_eslint@8.31.0 | |
| 137 | + eslint-define-config: 1.13.0 | |
| 138 | + eslint-plugin-prettier: 4.2.1_32m5uc2milwdw3tnkcq5del26y | |
| 139 | + eslint-plugin-vue: 9.8.0_eslint@8.31.0 | |
| 140 | 140 | lint-staged: 13.1.0 |
| 141 | 141 | postcss: registry.npmmirror.com/postcss/8.4.20 |
| 142 | 142 | postcss-html: 1.5.0 |
| 143 | 143 | postcss-scss: 4.0.6_postcss@8.4.20 |
| 144 | 144 | prettier: 2.8.1 |
| 145 | 145 | rimraf: 3.0.2 |
| 146 | - rollup: 3.8.1 | |
| 146 | + rollup: 3.9.1 | |
| 147 | 147 | sass: 1.57.1 |
| 148 | - stylelint: 14.16.0 | |
| 149 | - stylelint-config-html: 1.1.0_bto6pmslw3cibsiuq6smxboytq | |
| 150 | - stylelint-config-prettier: 9.0.4_stylelint@14.16.0 | |
| 151 | - stylelint-config-recommended: 9.0.0_stylelint@14.16.0 | |
| 152 | - stylelint-config-standard: 29.0.0_stylelint@14.16.0 | |
| 153 | - stylelint-order: 5.0.0_stylelint@14.16.0 | |
| 148 | + stylelint: 14.16.1 | |
| 149 | + stylelint-config-html: 1.1.0_kbto3rg3njmczth2rrsgfnlsqa | |
| 150 | + stylelint-config-prettier: 9.0.4_stylelint@14.16.1 | |
| 151 | + stylelint-config-recommended: 9.0.0_stylelint@14.16.1 | |
| 152 | + stylelint-config-standard: 29.0.0_stylelint@14.16.1 | |
| 153 | + stylelint-order: 5.0.0_stylelint@14.16.1 | |
| 154 | 154 | terser: 5.16.1 |
| 155 | 155 | typescript: 4.9.4 |
| 156 | - vite: 4.0.3_amyfslv6hdwxqbf7f4ldebbtce | |
| 156 | + vite: 4.0.3_zxbrnrc4iyldik6mikh3pswz4i | |
| 157 | 157 | vite-plugin-compression: 0.5.1_vite@4.0.3 |
| 158 | 158 | vite-plugin-ejs: 1.6.4 |
| 159 | - vite-plugin-eslint: 1.8.1_eslint@8.30.0+vite@4.0.3 | |
| 159 | + vite-plugin-eslint: 1.8.1_eslint@8.31.0+vite@4.0.3 | |
| 160 | 160 | vite-plugin-progress: 0.0.6_vite@4.0.3 |
| 161 | 161 | vite-plugin-purge-icons: registry.npmmirror.com/vite-plugin-purge-icons/0.9.2_vite@4.0.3 |
| 162 | 162 | vite-plugin-style-import: 2.0.0_vite@4.0.3 |
| 163 | 163 | vite-plugin-svg-icons: 2.0.1_vite@4.0.3 |
| 164 | 164 | vite-plugin-vue-setup-extend: 0.4.0_vite@4.0.3 |
| 165 | 165 | vite-plugin-windicss: registry.npmmirror.com/vite-plugin-windicss/1.8.10_vite@4.0.3 |
| 166 | - vue-tsc: 1.0.16_typescript@4.9.4 | |
| 166 | + vue-tsc: 1.0.19_typescript@4.9.4 | |
| 167 | 167 | windicss: 3.5.6 |
| 168 | 168 | |
| 169 | 169 | packages: |
| 170 | 170 | |
| 171 | + /@babel/code-frame/7.18.6: | |
| 172 | + resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} | |
| 173 | + engines: {node: '>=6.9.0'} | |
| 174 | + dependencies: | |
| 175 | + '@babel/highlight': 7.18.6 | |
| 176 | + dev: true | |
| 177 | + | |
| 178 | + /@babel/helper-validator-identifier/7.19.1: | |
| 179 | + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} | |
| 180 | + engines: {node: '>=6.9.0'} | |
| 181 | + dev: true | |
| 182 | + | |
| 183 | + /@babel/highlight/7.18.6: | |
| 184 | + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} | |
| 185 | + engines: {node: '>=6.9.0'} | |
| 186 | + dependencies: | |
| 187 | + '@babel/helper-validator-identifier': 7.19.1 | |
| 188 | + chalk: 2.4.2 | |
| 189 | + js-tokens: 4.0.0 | |
| 190 | + dev: true | |
| 191 | + | |
| 171 | 192 | /@babel/parser/7.20.3: |
| 172 | 193 | resolution: {integrity: sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==} |
| 173 | 194 | engines: {node: '>=6.0.0'} |
| ... | ... | @@ -364,7 +385,7 @@ packages: |
| 364 | 385 | postcss: ^8.2 |
| 365 | 386 | postcss-selector-parser: ^6.0.10 |
| 366 | 387 | dependencies: |
| 367 | - postcss: registry.npmmirror.com/postcss/8.4.20 | |
| 388 | + postcss: 8.4.20 | |
| 368 | 389 | postcss-selector-parser: 6.0.11 |
| 369 | 390 | dev: true |
| 370 | 391 | |
| ... | ... | @@ -579,8 +600,8 @@ packages: |
| 579 | 600 | dev: true |
| 580 | 601 | optional: true |
| 581 | 602 | |
| 582 | - /@eslint/eslintrc/1.4.0: | |
| 583 | - resolution: {integrity: sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==} | |
| 603 | + /@eslint/eslintrc/1.4.1: | |
| 604 | + resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} | |
| 584 | 605 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 585 | 606 | dependencies: |
| 586 | 607 | ajv: 6.12.6 |
| ... | ... | @@ -631,11 +652,11 @@ packages: |
| 631 | 652 | dependencies: |
| 632 | 653 | '@iconify/types': 2.0.0 |
| 633 | 654 | |
| 634 | - /@iconify/json/2.1.156: | |
| 635 | - resolution: {integrity: sha512-QaLf/XSPRe6i35Z9WIRBxlWOLykDXNnEGYFf+9E+GWLmRqVQ2VNyTsEo6CNZqP5eGQRDPJyNhd+2vH+gbehGDg==} | |
| 655 | + /@iconify/json/2.2.1: | |
| 656 | + resolution: {integrity: sha512-h6QAV4i0B/QdpJRWExgE5am3WtmNAy/NucsAGNtYsNzeLBa+TVig4QpO9nQrX172tQvEZAfSqUkvCx/y7GN0GQ==} | |
| 636 | 657 | dependencies: |
| 637 | 658 | '@iconify/types': 2.0.0 |
| 638 | - pathe: 0.3.9 | |
| 659 | + pathe: 1.0.0 | |
| 639 | 660 | dev: true |
| 640 | 661 | |
| 641 | 662 | /@iconify/types/2.0.0: |
| ... | ... | @@ -653,8 +674,8 @@ packages: |
| 653 | 674 | vue-i18n: |
| 654 | 675 | optional: true |
| 655 | 676 | dependencies: |
| 656 | - '@intlify/message-compiler': 9.3.0-beta.11 | |
| 657 | - '@intlify/shared': 9.3.0-beta.11 | |
| 677 | + '@intlify/message-compiler': 9.3.0-beta.12 | |
| 678 | + '@intlify/shared': 9.3.0-beta.12 | |
| 658 | 679 | jsonc-eslint-parser: 1.4.1 |
| 659 | 680 | source-map: 0.6.1 |
| 660 | 681 | vue-i18n: 9.2.2_vue@3.2.45 |
| ... | ... | @@ -683,8 +704,8 @@ packages: |
| 683 | 704 | '@intlify/shared': 9.2.2 |
| 684 | 705 | source-map: 0.6.1 |
| 685 | 706 | |
| 686 | - /@intlify/message-compiler/9.3.0-beta.11: | |
| 687 | - resolution: {integrity: sha512-gGGfBGzM7JBXp1Q9gbDAy5jELz9ho3ILqnpxp2yp64+gkqohrqc2YXIvCdwZoc6AtKIh/Zmv4sWVqxkvMsBWtQ==} | |
| 707 | + /@intlify/message-compiler/9.3.0-beta.12: | |
| 708 | + resolution: {integrity: sha512-A8/s7pb3v8nf6HG77qFPJntxgQKI9GXxGnkn7aO+b03/X/GkF/4WceDSAIk3i+yLeIgszeBn9GZ23tSg4sTEHA==} | |
| 688 | 709 | engines: {node: '>= 14'} |
| 689 | 710 | dependencies: |
| 690 | 711 | '@intlify/shared': 9.3.0-beta.11 |
| ... | ... | @@ -700,6 +721,11 @@ packages: |
| 700 | 721 | engines: {node: '>= 14'} |
| 701 | 722 | dev: true |
| 702 | 723 | |
| 724 | + /@intlify/shared/9.3.0-beta.12: | |
| 725 | + resolution: {integrity: sha512-WsmaS54sA8xuwezPKpa/OMoaX1v2VF2fCgAmYS6prDr2ir0CkUFWPm9A8ilmxzv4nkS61/v8+vf4lGGkn5uBdA==} | |
| 726 | + engines: {node: '>= 14'} | |
| 727 | + dev: true | |
| 728 | + | |
| 703 | 729 | /@intlify/unplugin-vue-i18n/0.8.1_vue-i18n@9.2.2: |
| 704 | 730 | resolution: {integrity: sha512-BhigujPmP6JL1FSxmpogCaL+REozncHCVkJuUnefz4GWBu3X+pRe5O7PeJn8/g+Iml2ieQJz4ISPMmEbuGQjqQ==} |
| 705 | 731 | engines: {node: '>= 14.16'} |
| ... | ... | @@ -716,7 +742,7 @@ packages: |
| 716 | 742 | optional: true |
| 717 | 743 | dependencies: |
| 718 | 744 | '@intlify/bundle-utils': 3.4.0_vue-i18n@9.2.2 |
| 719 | - '@intlify/shared': 9.3.0-beta.11 | |
| 745 | + '@intlify/shared': 9.3.0-beta.12 | |
| 720 | 746 | '@rollup/pluginutils': 4.2.1 |
| 721 | 747 | '@vue/compiler-sfc': 3.2.45 |
| 722 | 748 | debug: 4.3.4 |
| ... | ... | @@ -869,8 +895,8 @@ packages: |
| 869 | 895 | resolution: {integrity: sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==} |
| 870 | 896 | dev: true |
| 871 | 897 | |
| 872 | - /@types/node/18.11.17: | |
| 873 | - resolution: {integrity: sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng==} | |
| 898 | + /@types/node/18.11.18: | |
| 899 | + resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} | |
| 874 | 900 | dev: true |
| 875 | 901 | |
| 876 | 902 | /@types/normalize-package-data/2.4.1: |
| ... | ... | @@ -888,7 +914,7 @@ packages: |
| 888 | 914 | /@types/qrcode/1.5.0: |
| 889 | 915 | resolution: {integrity: sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA==} |
| 890 | 916 | dependencies: |
| 891 | - '@types/node': 18.11.17 | |
| 917 | + '@types/node': 18.11.18 | |
| 892 | 918 | dev: true |
| 893 | 919 | |
| 894 | 920 | /@types/qs/6.9.7: |
| ... | ... | @@ -902,15 +928,15 @@ packages: |
| 902 | 928 | /@types/svgo/2.6.4: |
| 903 | 929 | resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} |
| 904 | 930 | dependencies: |
| 905 | - '@types/node': 18.11.17 | |
| 931 | + '@types/node': 18.11.18 | |
| 906 | 932 | dev: true |
| 907 | 933 | |
| 908 | 934 | /@types/web-bluetooth/0.0.16: |
| 909 | 935 | resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} |
| 910 | 936 | dev: false |
| 911 | 937 | |
| 912 | - /@typescript-eslint/eslint-plugin/5.47.0_ncmi6noazr3nzas7jxykisekym: | |
| 913 | - resolution: {integrity: sha512-AHZtlXAMGkDmyLuLZsRpH3p4G/1iARIwc/T0vIem2YB+xW6pZaXYXzCBnZSF/5fdM97R9QqZWZ+h3iW10XgevQ==} | |
| 938 | + /@typescript-eslint/eslint-plugin/5.48.0_k73wpmdolxikpyqun3p36akaaq: | |
| 939 | + resolution: {integrity: sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==} | |
| 914 | 940 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 915 | 941 | peerDependencies: |
| 916 | 942 | '@typescript-eslint/parser': ^5.0.0 |
| ... | ... | @@ -920,12 +946,12 @@ packages: |
| 920 | 946 | typescript: |
| 921 | 947 | optional: true |
| 922 | 948 | dependencies: |
| 923 | - '@typescript-eslint/parser': 5.47.0_lzzuuodtsqwxnvqeq4g4likcqa | |
| 924 | - '@typescript-eslint/scope-manager': 5.47.0 | |
| 925 | - '@typescript-eslint/type-utils': 5.47.0_lzzuuodtsqwxnvqeq4g4likcqa | |
| 926 | - '@typescript-eslint/utils': 5.47.0_lzzuuodtsqwxnvqeq4g4likcqa | |
| 949 | + '@typescript-eslint/parser': 5.48.0_iukboom6ndih5an6iafl45j2fe | |
| 950 | + '@typescript-eslint/scope-manager': 5.48.0 | |
| 951 | + '@typescript-eslint/type-utils': 5.48.0_iukboom6ndih5an6iafl45j2fe | |
| 952 | + '@typescript-eslint/utils': 5.48.0_iukboom6ndih5an6iafl45j2fe | |
| 927 | 953 | debug: 4.3.4 |
| 928 | - eslint: 8.30.0 | |
| 954 | + eslint: 8.31.0 | |
| 929 | 955 | ignore: 5.2.1 |
| 930 | 956 | natural-compare-lite: 1.4.0 |
| 931 | 957 | regexpp: 3.2.0 |
| ... | ... | @@ -936,8 +962,8 @@ packages: |
| 936 | 962 | - supports-color |
| 937 | 963 | dev: true |
| 938 | 964 | |
| 939 | - /@typescript-eslint/parser/5.47.0_lzzuuodtsqwxnvqeq4g4likcqa: | |
| 940 | - resolution: {integrity: sha512-udPU4ckK+R1JWCGdQC4Qa27NtBg7w020ffHqGyAK8pAgOVuNw7YaKXGChk+udh+iiGIJf6/E/0xhVXyPAbsczw==} | |
| 965 | + /@typescript-eslint/parser/5.48.0_iukboom6ndih5an6iafl45j2fe: | |
| 966 | + resolution: {integrity: sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==} | |
| 941 | 967 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 942 | 968 | peerDependencies: |
| 943 | 969 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 |
| ... | ... | @@ -946,26 +972,26 @@ packages: |
| 946 | 972 | typescript: |
| 947 | 973 | optional: true |
| 948 | 974 | dependencies: |
| 949 | - '@typescript-eslint/scope-manager': 5.47.0 | |
| 950 | - '@typescript-eslint/types': 5.47.0 | |
| 951 | - '@typescript-eslint/typescript-estree': 5.47.0_typescript@4.9.4 | |
| 975 | + '@typescript-eslint/scope-manager': 5.48.0 | |
| 976 | + '@typescript-eslint/types': 5.48.0 | |
| 977 | + '@typescript-eslint/typescript-estree': 5.48.0_typescript@4.9.4 | |
| 952 | 978 | debug: 4.3.4 |
| 953 | - eslint: 8.30.0 | |
| 979 | + eslint: 8.31.0 | |
| 954 | 980 | typescript: 4.9.4 |
| 955 | 981 | transitivePeerDependencies: |
| 956 | 982 | - supports-color |
| 957 | 983 | dev: true |
| 958 | 984 | |
| 959 | - /@typescript-eslint/scope-manager/5.47.0: | |
| 960 | - resolution: {integrity: sha512-dvJab4bFf7JVvjPuh3sfBUWsiD73aiftKBpWSfi3sUkysDQ4W8x+ZcFpNp7Kgv0weldhpmMOZBjx1wKN8uWvAw==} | |
| 985 | + /@typescript-eslint/scope-manager/5.48.0: | |
| 986 | + resolution: {integrity: sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==} | |
| 961 | 987 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 962 | 988 | dependencies: |
| 963 | - '@typescript-eslint/types': 5.47.0 | |
| 964 | - '@typescript-eslint/visitor-keys': 5.47.0 | |
| 989 | + '@typescript-eslint/types': 5.48.0 | |
| 990 | + '@typescript-eslint/visitor-keys': 5.48.0 | |
| 965 | 991 | dev: true |
| 966 | 992 | |
| 967 | - /@typescript-eslint/type-utils/5.47.0_lzzuuodtsqwxnvqeq4g4likcqa: | |
| 968 | - resolution: {integrity: sha512-1J+DFFrYoDUXQE1b7QjrNGARZE6uVhBqIvdaXTe5IN+NmEyD68qXR1qX1g2u4voA+nCaelQyG8w30SAOihhEYg==} | |
| 993 | + /@typescript-eslint/type-utils/5.48.0_iukboom6ndih5an6iafl45j2fe: | |
| 994 | + resolution: {integrity: sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==} | |
| 969 | 995 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 970 | 996 | peerDependencies: |
| 971 | 997 | eslint: '*' |
| ... | ... | @@ -974,23 +1000,23 @@ packages: |
| 974 | 1000 | typescript: |
| 975 | 1001 | optional: true |
| 976 | 1002 | dependencies: |
| 977 | - '@typescript-eslint/typescript-estree': 5.47.0_typescript@4.9.4 | |
| 978 | - '@typescript-eslint/utils': 5.47.0_lzzuuodtsqwxnvqeq4g4likcqa | |
| 1003 | + '@typescript-eslint/typescript-estree': 5.48.0_typescript@4.9.4 | |
| 1004 | + '@typescript-eslint/utils': 5.48.0_iukboom6ndih5an6iafl45j2fe | |
| 979 | 1005 | debug: 4.3.4 |
| 980 | - eslint: 8.30.0 | |
| 1006 | + eslint: 8.31.0 | |
| 981 | 1007 | tsutils: 3.21.0_typescript@4.9.4 |
| 982 | 1008 | typescript: 4.9.4 |
| 983 | 1009 | transitivePeerDependencies: |
| 984 | 1010 | - supports-color |
| 985 | 1011 | dev: true |
| 986 | 1012 | |
| 987 | - /@typescript-eslint/types/5.47.0: | |
| 988 | - resolution: {integrity: sha512-eslFG0Qy8wpGzDdYKu58CEr3WLkjwC5Usa6XbuV89ce/yN5RITLe1O8e+WFEuxnfftHiJImkkOBADj58ahRxSg==} | |
| 1013 | + /@typescript-eslint/types/5.48.0: | |
| 1014 | + resolution: {integrity: sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==} | |
| 989 | 1015 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 990 | 1016 | dev: true |
| 991 | 1017 | |
| 992 | - /@typescript-eslint/typescript-estree/5.47.0_typescript@4.9.4: | |
| 993 | - resolution: {integrity: sha512-LxfKCG4bsRGq60Sqqu+34QT5qT2TEAHvSCCJ321uBWywgE2dS0LKcu5u+3sMGo+Vy9UmLOhdTw5JHzePV/1y4Q==} | |
| 1018 | + /@typescript-eslint/typescript-estree/5.48.0_typescript@4.9.4: | |
| 1019 | + resolution: {integrity: sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==} | |
| 994 | 1020 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 995 | 1021 | peerDependencies: |
| 996 | 1022 | typescript: '*' |
| ... | ... | @@ -998,8 +1024,8 @@ packages: |
| 998 | 1024 | typescript: |
| 999 | 1025 | optional: true |
| 1000 | 1026 | dependencies: |
| 1001 | - '@typescript-eslint/types': 5.47.0 | |
| 1002 | - '@typescript-eslint/visitor-keys': 5.47.0 | |
| 1027 | + '@typescript-eslint/types': 5.48.0 | |
| 1028 | + '@typescript-eslint/visitor-keys': 5.48.0 | |
| 1003 | 1029 | debug: 4.3.4 |
| 1004 | 1030 | globby: 11.1.0 |
| 1005 | 1031 | is-glob: 4.0.3 |
| ... | ... | @@ -1010,31 +1036,31 @@ packages: |
| 1010 | 1036 | - supports-color |
| 1011 | 1037 | dev: true |
| 1012 | 1038 | |
| 1013 | - /@typescript-eslint/utils/5.47.0_lzzuuodtsqwxnvqeq4g4likcqa: | |
| 1014 | - resolution: {integrity: sha512-U9xcc0N7xINrCdGVPwABjbAKqx4GK67xuMV87toI+HUqgXj26m6RBp9UshEXcTrgCkdGYFzgKLt8kxu49RilDw==} | |
| 1039 | + /@typescript-eslint/utils/5.48.0_iukboom6ndih5an6iafl45j2fe: | |
| 1040 | + resolution: {integrity: sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==} | |
| 1015 | 1041 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 1016 | 1042 | peerDependencies: |
| 1017 | 1043 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 |
| 1018 | 1044 | dependencies: |
| 1019 | 1045 | '@types/json-schema': 7.0.11 |
| 1020 | 1046 | '@types/semver': 7.3.13 |
| 1021 | - '@typescript-eslint/scope-manager': 5.47.0 | |
| 1022 | - '@typescript-eslint/types': 5.47.0 | |
| 1023 | - '@typescript-eslint/typescript-estree': 5.47.0_typescript@4.9.4 | |
| 1024 | - eslint: 8.30.0 | |
| 1047 | + '@typescript-eslint/scope-manager': 5.48.0 | |
| 1048 | + '@typescript-eslint/types': 5.48.0 | |
| 1049 | + '@typescript-eslint/typescript-estree': 5.48.0_typescript@4.9.4 | |
| 1050 | + eslint: 8.31.0 | |
| 1025 | 1051 | eslint-scope: 5.1.1 |
| 1026 | - eslint-utils: 3.0.0_eslint@8.30.0 | |
| 1052 | + eslint-utils: 3.0.0_eslint@8.31.0 | |
| 1027 | 1053 | semver: 7.3.8 |
| 1028 | 1054 | transitivePeerDependencies: |
| 1029 | 1055 | - supports-color |
| 1030 | 1056 | - typescript |
| 1031 | 1057 | dev: true |
| 1032 | 1058 | |
| 1033 | - /@typescript-eslint/visitor-keys/5.47.0: | |
| 1034 | - resolution: {integrity: sha512-ByPi5iMa6QqDXe/GmT/hR6MZtVPi0SqMQPDx15FczCBXJo/7M8T88xReOALAfpBLm+zxpPfmhuEvPb577JRAEg==} | |
| 1059 | + /@typescript-eslint/visitor-keys/5.48.0: | |
| 1060 | + resolution: {integrity: sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==} | |
| 1035 | 1061 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 1036 | 1062 | dependencies: |
| 1037 | - '@typescript-eslint/types': 5.47.0 | |
| 1063 | + '@typescript-eslint/types': 5.48.0 | |
| 1038 | 1064 | eslint-visitor-keys: 3.3.0 |
| 1039 | 1065 | dev: true |
| 1040 | 1066 | |
| ... | ... | @@ -1079,31 +1105,30 @@ packages: |
| 1079 | 1105 | nanoid: registry.npmmirror.com/nanoid/3.3.4 |
| 1080 | 1106 | dev: false |
| 1081 | 1107 | |
| 1082 | - /@volar/language-core/1.0.16: | |
| 1083 | - resolution: {integrity: sha512-IGnOxWTs4DZ81TDcmxBAkCBxs97hUblwcjpBsTx/pOGGaSSDQRJPn0wL8NYTybEObU0i7lhEpKZ+0vJfdIy1Kg==} | |
| 1108 | + /@volar/language-core/1.0.19: | |
| 1109 | + resolution: {integrity: sha512-BRxhwqn66VHeLIxxgV4ybY9NDtwMp2bl1w7085qlK7i1pa4jeFR5lJG2U5qd0oI3e0PIWML+PryxSrKNd3+SZw==} | |
| 1084 | 1110 | dependencies: |
| 1085 | - '@volar/source-map': 1.0.16 | |
| 1086 | - '@vue/reactivity': 3.2.45 | |
| 1111 | + '@volar/source-map': 1.0.19 | |
| 1087 | 1112 | muggle-string: 0.1.0 |
| 1088 | 1113 | dev: true |
| 1089 | 1114 | |
| 1090 | - /@volar/source-map/1.0.16: | |
| 1091 | - resolution: {integrity: sha512-PKjzmQcg8QOGC/1V9tmGh2jcy6bKLhkW5bGidElSr83iDbCzLvldt2/La/QlDxaRCHYLT0MeyuGJBZIChB1dYQ==} | |
| 1115 | + /@volar/source-map/1.0.19: | |
| 1116 | + resolution: {integrity: sha512-5fYKsl1evR/QAZ9LADto3kzbYKfpjZLWS9reNpxGR3ODPFTpaJgYk4lqghFyq4yU7/e/ZPZ1zLXjEsnL526URw==} | |
| 1092 | 1117 | dependencies: |
| 1093 | 1118 | muggle-string: 0.1.0 |
| 1094 | 1119 | dev: true |
| 1095 | 1120 | |
| 1096 | - /@volar/typescript/1.0.16: | |
| 1097 | - resolution: {integrity: sha512-Yov+n4oO3iYnuMt9QJAFpJabfTRCzc7KvjlAwBaSuZy+Gc/f9611MgtqAh5/SIGmltFN8dXn1Ijno8ro8I4lyw==} | |
| 1121 | + /@volar/typescript/1.0.19: | |
| 1122 | + resolution: {integrity: sha512-S6n945uhpc5J1qCVXVV4tz4k1nyxWaoG+wqy9TYdRDazPHeq9l45WDg58g/ehblUWux85TZN8i3zdsLRLkFrdw==} | |
| 1098 | 1123 | dependencies: |
| 1099 | - '@volar/language-core': 1.0.16 | |
| 1124 | + '@volar/language-core': 1.0.19 | |
| 1100 | 1125 | dev: true |
| 1101 | 1126 | |
| 1102 | - /@volar/vue-language-core/1.0.16: | |
| 1103 | - resolution: {integrity: sha512-sQ/aW1Vuiyy4OQuh2lthyYicruM3qh9VSk/aDh8/bFvM8GoohHZqVpMN3LYldEJ9eT/rN6u4xmYP54vc/EjX4Q==} | |
| 1127 | + /@volar/vue-language-core/1.0.19: | |
| 1128 | + resolution: {integrity: sha512-3mIjJvQ+0tNOp+U9+Nggy92HYIqnltf882UMG9RuNHrd0Jn/rdvjRBs0jNTzwYDV9tn3tjDHGIfQak9XrUCaRg==} | |
| 1104 | 1129 | dependencies: |
| 1105 | - '@volar/language-core': 1.0.16 | |
| 1106 | - '@volar/source-map': 1.0.16 | |
| 1130 | + '@volar/language-core': 1.0.19 | |
| 1131 | + '@volar/source-map': 1.0.19 | |
| 1107 | 1132 | '@vue/compiler-dom': 3.2.45 |
| 1108 | 1133 | '@vue/compiler-sfc': 3.2.45 |
| 1109 | 1134 | '@vue/reactivity': 3.2.45 |
| ... | ... | @@ -1112,11 +1137,11 @@ packages: |
| 1112 | 1137 | vue-template-compiler: 2.7.14 |
| 1113 | 1138 | dev: true |
| 1114 | 1139 | |
| 1115 | - /@volar/vue-typescript/1.0.16: | |
| 1116 | - resolution: {integrity: sha512-M018Ulg/o2FVktAdlr5b/z4K69bYzekxNUA1o39y5Ur6CObc/o+5eDCCS7gIYijWnx9iNKkSQpWWWblJFv7kHQ==} | |
| 1140 | + /@volar/vue-typescript/1.0.19: | |
| 1141 | + resolution: {integrity: sha512-HKaLCz/lb5xkJ1SyaMmms0Ww/OVStQ16qWttSbHRnnyRV/IDMFrwlovA/bIAPzHUq8EVoDAznRVsCysr2QCOGA==} | |
| 1117 | 1142 | dependencies: |
| 1118 | - '@volar/typescript': 1.0.16 | |
| 1119 | - '@volar/vue-language-core': 1.0.16 | |
| 1143 | + '@volar/typescript': 1.0.19 | |
| 1144 | + '@volar/vue-language-core': 1.0.19 | |
| 1120 | 1145 | dev: true |
| 1121 | 1146 | |
| 1122 | 1147 | /@vue/compiler-core/3.2.45: |
| ... | ... | @@ -1196,24 +1221,24 @@ packages: |
| 1196 | 1221 | /@vue/shared/3.2.45: |
| 1197 | 1222 | resolution: {integrity: sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==} |
| 1198 | 1223 | |
| 1199 | - /@vueuse/core/9.8.2_vue@3.2.45: | |
| 1200 | - resolution: {integrity: sha512-aWiCmcYIpPt7xjuqYiceODEMHchDYthrJ4AqI+FXPZrR23PZOqdiktbUVyQl2kGlR3H4i9UJ/uimQrwhz9UouQ==} | |
| 1224 | + /@vueuse/core/9.9.0_vue@3.2.45: | |
| 1225 | + resolution: {integrity: sha512-JdDb7TrE0imZnwBhMF4+0PCJqGD3AxzH8S2sfk54P0rqvklK+EAtAR/mPb1HwV/JPujQFQJhghQ190Yq03YpVw==} | |
| 1201 | 1226 | dependencies: |
| 1202 | 1227 | '@types/web-bluetooth': 0.0.16 |
| 1203 | - '@vueuse/metadata': 9.8.2 | |
| 1204 | - '@vueuse/shared': 9.8.2_vue@3.2.45 | |
| 1228 | + '@vueuse/metadata': 9.9.0 | |
| 1229 | + '@vueuse/shared': 9.9.0_vue@3.2.45 | |
| 1205 | 1230 | vue-demi: 0.13.11_vue@3.2.45 |
| 1206 | 1231 | transitivePeerDependencies: |
| 1207 | 1232 | - '@vue/composition-api' |
| 1208 | 1233 | - vue |
| 1209 | 1234 | dev: false |
| 1210 | 1235 | |
| 1211 | - /@vueuse/metadata/9.8.2: | |
| 1212 | - resolution: {integrity: sha512-N4E/BKS+9VsUeD4WLVRU1J2kCOLh+iikBcMtipFcTyL204132vDYHs27zLAVabJYGnhC0dIVGdhg9pbOZiY2TQ==} | |
| 1236 | + /@vueuse/metadata/9.9.0: | |
| 1237 | + resolution: {integrity: sha512-pgxsUJv/d7IjKpLeB6TthggEsaBwM3ffc5jPrr5TmxAm/fup0mGR5VTzrdA/PSx85tpb+CIvP92D+55qBNc8ag==} | |
| 1213 | 1238 | dev: false |
| 1214 | 1239 | |
| 1215 | - /@vueuse/shared/9.8.2_vue@3.2.45: | |
| 1216 | - resolution: {integrity: sha512-ACjrPQzowd5dnabNJt9EoGVobco9/ENiA5qP53vjiuxndlJYuc/UegwhXC7KdQbPX4F45a50+45K3g1wNqOzmA==} | |
| 1240 | + /@vueuse/shared/9.9.0_vue@3.2.45: | |
| 1241 | + resolution: {integrity: sha512-+D0XFwHG0T+uaIbCSlROBwm1wzs71B7n3KyDOxnvfEMMHDOzl09rYKwaE2AENmYwYPXfHPbSBRDD2gBVHbvTcg==} | |
| 1217 | 1242 | dependencies: |
| 1218 | 1243 | vue-demi: 0.13.11_vue@3.2.45 |
| 1219 | 1244 | transitivePeerDependencies: |
| ... | ... | @@ -1503,6 +1528,18 @@ packages: |
| 1503 | 1528 | engines: {node: '>=12'} |
| 1504 | 1529 | dev: true |
| 1505 | 1530 | |
| 1531 | + /ansi-styles/2.2.1: | |
| 1532 | + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} | |
| 1533 | + engines: {node: '>=0.10.0'} | |
| 1534 | + dev: true | |
| 1535 | + | |
| 1536 | + /ansi-styles/3.2.1: | |
| 1537 | + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} | |
| 1538 | + engines: {node: '>=4'} | |
| 1539 | + dependencies: | |
| 1540 | + color-convert: registry.npmmirror.com/color-convert/1.9.3 | |
| 1541 | + dev: true | |
| 1542 | + | |
| 1506 | 1543 | /ansi-styles/4.3.0: |
| 1507 | 1544 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} |
| 1508 | 1545 | engines: {node: '>=8'} |
| ... | ... | @@ -1609,8 +1646,16 @@ packages: |
| 1609 | 1646 | postcss-value-parser: 4.2.0 |
| 1610 | 1647 | dev: true |
| 1611 | 1648 | |
| 1612 | - /axios/1.2.1: | |
| 1613 | - resolution: {integrity: sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A==} | |
| 1649 | + /axios/0.26.1_debug@4.3.4: | |
| 1650 | + resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} | |
| 1651 | + dependencies: | |
| 1652 | + follow-redirects: 1.15.2 | |
| 1653 | + transitivePeerDependencies: | |
| 1654 | + - debug | |
| 1655 | + dev: true | |
| 1656 | + | |
| 1657 | + /axios/1.2.2: | |
| 1658 | + resolution: {integrity: sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==} | |
| 1614 | 1659 | dependencies: |
| 1615 | 1660 | follow-redirects: 1.15.2 |
| 1616 | 1661 | form-data: 4.0.0 |
| ... | ... | @@ -1751,20 +1796,20 @@ packages: |
| 1751 | 1796 | resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} |
| 1752 | 1797 | engines: {node: '>=0.10.0'} |
| 1753 | 1798 | dependencies: |
| 1754 | - ansi-styles: registry.npmmirror.com/ansi-styles/2.2.1 | |
| 1799 | + ansi-styles: 2.2.1 | |
| 1755 | 1800 | escape-string-regexp: 1.0.5 |
| 1756 | 1801 | has-ansi: 2.0.0 |
| 1757 | 1802 | strip-ansi: 3.0.1 |
| 1758 | - supports-color: registry.npmmirror.com/supports-color/2.0.0 | |
| 1803 | + supports-color: 2.0.0 | |
| 1759 | 1804 | dev: true |
| 1760 | 1805 | |
| 1761 | 1806 | /chalk/2.4.2: |
| 1762 | 1807 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} |
| 1763 | 1808 | engines: {node: '>=4'} |
| 1764 | 1809 | dependencies: |
| 1765 | - ansi-styles: registry.npmmirror.com/ansi-styles/3.2.1 | |
| 1810 | + ansi-styles: 3.2.1 | |
| 1766 | 1811 | escape-string-regexp: 1.0.5 |
| 1767 | - supports-color: registry.npmmirror.com/supports-color/5.5.0 | |
| 1812 | + supports-color: 5.5.0 | |
| 1768 | 1813 | dev: true |
| 1769 | 1814 | |
| 1770 | 1815 | /chalk/4.1.2: |
| ... | ... | @@ -2312,8 +2357,8 @@ packages: |
| 2312 | 2357 | resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} |
| 2313 | 2358 | dev: true |
| 2314 | 2359 | |
| 2315 | - /element-plus/2.2.27_vue@3.2.45: | |
| 2316 | - resolution: {integrity: sha512-P04HDOZBYDdvlYuleuCZRULzAc5xJVOBfLDK9xWxVo0vyo8ntdaXS5sTU+/76vrNzuO3FhLn9kvrsbiJEVa1jg==} | |
| 2360 | + /element-plus/2.2.28_vue@3.2.45: | |
| 2361 | + resolution: {integrity: sha512-BsxF7iEaBydmRfw1Tt++EO9jRBjbtJr7ZRIrnEwz4J3Cwa1IzHCNCcx3ZwcYTlJq9CYFxv94JnbNr1EbkTou3A==} | |
| 2317 | 2362 | peerDependencies: |
| 2318 | 2363 | vue: ^3.2.0 |
| 2319 | 2364 | dependencies: |
| ... | ... | @@ -2323,7 +2368,7 @@ packages: |
| 2323 | 2368 | '@popperjs/core': /@sxzz/popperjs-es/2.11.7 |
| 2324 | 2369 | '@types/lodash': 4.14.189 |
| 2325 | 2370 | '@types/lodash-es': 4.17.6 |
| 2326 | - '@vueuse/core': 9.8.2_vue@3.2.45 | |
| 2371 | + '@vueuse/core': 9.9.0_vue@3.2.45 | |
| 2327 | 2372 | async-validator: 4.2.5 |
| 2328 | 2373 | dayjs: 1.11.7 |
| 2329 | 2374 | escape-html: 1.0.3 |
| ... | ... | @@ -2450,21 +2495,21 @@ packages: |
| 2450 | 2495 | engines: {node: '>=10'} |
| 2451 | 2496 | dev: true |
| 2452 | 2497 | |
| 2453 | - /eslint-config-prettier/8.5.0_eslint@8.30.0: | |
| 2454 | - resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} | |
| 2498 | + /eslint-config-prettier/8.6.0_eslint@8.31.0: | |
| 2499 | + resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} | |
| 2455 | 2500 | hasBin: true |
| 2456 | 2501 | peerDependencies: |
| 2457 | 2502 | eslint: '>=7.0.0' |
| 2458 | 2503 | dependencies: |
| 2459 | - eslint: 8.30.0 | |
| 2504 | + eslint: 8.31.0 | |
| 2460 | 2505 | dev: true |
| 2461 | 2506 | |
| 2462 | - /eslint-define-config/1.12.0: | |
| 2463 | - resolution: {integrity: sha512-Kt9TcMbgsY9VRt7jIuw76KE/2RuD31eWB4Ubv6btXgU8NTSsbT6gZ8qzeiU+rAih/8sOl8Kt89spAZBMElu6qQ==} | |
| 2507 | + /eslint-define-config/1.13.0: | |
| 2508 | + resolution: {integrity: sha512-d0BfmPGBcMusfiz6QY/piAhWaEyJriJtvk9SHfuJzI7am9k4ce07SfmPkpcR0ckXNyu4FBons10akOO2Tx+X+Q==} | |
| 2464 | 2509 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13', pnpm: '>= 7.0.0'} |
| 2465 | 2510 | dev: true |
| 2466 | 2511 | |
| 2467 | - /eslint-plugin-prettier/4.2.1_kl4pe43v5b43npmso5hoplpbyi: | |
| 2512 | + /eslint-plugin-prettier/4.2.1_32m5uc2milwdw3tnkcq5del26y: | |
| 2468 | 2513 | resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} |
| 2469 | 2514 | engines: {node: '>=12.0.0'} |
| 2470 | 2515 | peerDependencies: |
| ... | ... | @@ -2475,25 +2520,25 @@ packages: |
| 2475 | 2520 | eslint-config-prettier: |
| 2476 | 2521 | optional: true |
| 2477 | 2522 | dependencies: |
| 2478 | - eslint: 8.30.0 | |
| 2479 | - eslint-config-prettier: 8.5.0_eslint@8.30.0 | |
| 2523 | + eslint: 8.31.0 | |
| 2524 | + eslint-config-prettier: 8.6.0_eslint@8.31.0 | |
| 2480 | 2525 | prettier: 2.8.1 |
| 2481 | 2526 | prettier-linter-helpers: 1.0.0 |
| 2482 | 2527 | dev: true |
| 2483 | 2528 | |
| 2484 | - /eslint-plugin-vue/9.8.0_eslint@8.30.0: | |
| 2529 | + /eslint-plugin-vue/9.8.0_eslint@8.31.0: | |
| 2485 | 2530 | resolution: {integrity: sha512-E/AXwcTzunyzM83C2QqDHxepMzvI2y6x+mmeYHbVDQlKFqmKYvRrhaVixEeeG27uI44p9oKDFiyCRw4XxgtfHA==} |
| 2486 | 2531 | engines: {node: ^14.17.0 || >=16.0.0} |
| 2487 | 2532 | peerDependencies: |
| 2488 | 2533 | eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 |
| 2489 | 2534 | dependencies: |
| 2490 | - eslint: 8.30.0 | |
| 2491 | - eslint-utils: 3.0.0_eslint@8.30.0 | |
| 2535 | + eslint: 8.31.0 | |
| 2536 | + eslint-utils: 3.0.0_eslint@8.31.0 | |
| 2492 | 2537 | natural-compare: 1.4.0 |
| 2493 | 2538 | nth-check: 2.1.1 |
| 2494 | 2539 | postcss-selector-parser: 6.0.10 |
| 2495 | 2540 | semver: 7.3.8 |
| 2496 | - vue-eslint-parser: 9.1.0_eslint@8.30.0 | |
| 2541 | + vue-eslint-parser: 9.1.0_eslint@8.31.0 | |
| 2497 | 2542 | xml-name-validator: 4.0.0 |
| 2498 | 2543 | transitivePeerDependencies: |
| 2499 | 2544 | - supports-color |
| ... | ... | @@ -2522,13 +2567,13 @@ packages: |
| 2522 | 2567 | eslint-visitor-keys: 1.3.0 |
| 2523 | 2568 | dev: true |
| 2524 | 2569 | |
| 2525 | - /eslint-utils/3.0.0_eslint@8.30.0: | |
| 2570 | + /eslint-utils/3.0.0_eslint@8.31.0: | |
| 2526 | 2571 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} |
| 2527 | 2572 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} |
| 2528 | 2573 | peerDependencies: |
| 2529 | 2574 | eslint: '>=5' |
| 2530 | 2575 | dependencies: |
| 2531 | - eslint: 8.30.0 | |
| 2576 | + eslint: 8.31.0 | |
| 2532 | 2577 | eslint-visitor-keys: 2.1.0 |
| 2533 | 2578 | dev: true |
| 2534 | 2579 | |
| ... | ... | @@ -2547,12 +2592,12 @@ packages: |
| 2547 | 2592 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 2548 | 2593 | dev: true |
| 2549 | 2594 | |
| 2550 | - /eslint/8.30.0: | |
| 2551 | - resolution: {integrity: sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==} | |
| 2595 | + /eslint/8.31.0: | |
| 2596 | + resolution: {integrity: sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==} | |
| 2552 | 2597 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 2553 | 2598 | hasBin: true |
| 2554 | 2599 | dependencies: |
| 2555 | - '@eslint/eslintrc': 1.4.0 | |
| 2600 | + '@eslint/eslintrc': 1.4.1 | |
| 2556 | 2601 | '@humanwhocodes/config-array': 0.11.8 |
| 2557 | 2602 | '@humanwhocodes/module-importer': 1.0.1 |
| 2558 | 2603 | '@nodelib/fs.walk': 1.2.8 |
| ... | ... | @@ -2563,7 +2608,7 @@ packages: |
| 2563 | 2608 | doctrine: 3.0.0 |
| 2564 | 2609 | escape-string-regexp: 4.0.0 |
| 2565 | 2610 | eslint-scope: 7.1.1 |
| 2566 | - eslint-utils: 3.0.0_eslint@8.30.0 | |
| 2611 | + eslint-utils: 3.0.0_eslint@8.31.0 | |
| 2567 | 2612 | eslint-visitor-keys: 3.3.0 |
| 2568 | 2613 | espree: 9.4.1 |
| 2569 | 2614 | esquery: 1.4.0 |
| ... | ... | @@ -2787,7 +2832,7 @@ packages: |
| 2787 | 2832 | /filelist/1.0.4: |
| 2788 | 2833 | resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} |
| 2789 | 2834 | dependencies: |
| 2790 | - minimatch: 5.1.0 | |
| 2835 | + minimatch: 5.1.2 | |
| 2791 | 2836 | dev: true |
| 2792 | 2837 | |
| 2793 | 2838 | /find-up/4.1.0: |
| ... | ... | @@ -2825,7 +2870,6 @@ packages: |
| 2825 | 2870 | peerDependenciesMeta: |
| 2826 | 2871 | debug: |
| 2827 | 2872 | optional: true |
| 2828 | - dev: false | |
| 2829 | 2873 | |
| 2830 | 2874 | /for-in/1.0.2: |
| 2831 | 2875 | resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} |
| ... | ... | @@ -3007,6 +3051,16 @@ packages: |
| 3007 | 3051 | ansi-regex: 2.1.1 |
| 3008 | 3052 | dev: true |
| 3009 | 3053 | |
| 3054 | + /has-flag/1.0.0: | |
| 3055 | + resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} | |
| 3056 | + engines: {node: '>=0.10.0'} | |
| 3057 | + dev: true | |
| 3058 | + | |
| 3059 | + /has-flag/3.0.0: | |
| 3060 | + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} | |
| 3061 | + engines: {node: '>=4'} | |
| 3062 | + dev: true | |
| 3063 | + | |
| 3010 | 3064 | /has-flag/4.0.0: |
| 3011 | 3065 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} |
| 3012 | 3066 | engines: {node: '>=8'} |
| ... | ... | @@ -3379,6 +3433,10 @@ packages: |
| 3379 | 3433 | resolution: {integrity: sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==} |
| 3380 | 3434 | dev: true |
| 3381 | 3435 | |
| 3436 | + /js-tokens/4.0.0: | |
| 3437 | + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} | |
| 3438 | + dev: true | |
| 3439 | + | |
| 3382 | 3440 | /js-tokens/8.0.0: |
| 3383 | 3441 | resolution: {integrity: sha512-PC7MzqInq9OqKyTXfIvQNcjMkODJYC8A17kAaQgeW79yfhqTWSOfjHYQ2mDDcwJ96Iibtwkfh0C7R/OvqPlgVA==} |
| 3384 | 3442 | dev: true |
| ... | ... | @@ -3828,13 +3886,6 @@ packages: |
| 3828 | 3886 | brace-expansion: 1.1.11 |
| 3829 | 3887 | dev: true |
| 3830 | 3888 | |
| 3831 | - /minimatch/5.1.0: | |
| 3832 | - resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} | |
| 3833 | - engines: {node: '>=10'} | |
| 3834 | - dependencies: | |
| 3835 | - brace-expansion: 2.0.1 | |
| 3836 | - dev: true | |
| 3837 | - | |
| 3838 | 3889 | /minimatch/5.1.2: |
| 3839 | 3890 | resolution: {integrity: sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==} |
| 3840 | 3891 | engines: {node: '>=10'} |
| ... | ... | @@ -4105,7 +4156,7 @@ packages: |
| 4105 | 4156 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} |
| 4106 | 4157 | engines: {node: '>=8'} |
| 4107 | 4158 | dependencies: |
| 4108 | - '@babel/code-frame': registry.npmmirror.com/@babel/code-frame/7.18.6 | |
| 4159 | + '@babel/code-frame': 7.18.6 | |
| 4109 | 4160 | error-ex: 1.3.2 |
| 4110 | 4161 | json-parse-even-better-errors: 2.3.1 |
| 4111 | 4162 | lines-and-columns: 1.2.4 |
| ... | ... | @@ -4162,10 +4213,6 @@ packages: |
| 4162 | 4213 | resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} |
| 4163 | 4214 | dev: true |
| 4164 | 4215 | |
| 4165 | - /pathe/0.3.9: | |
| 4166 | - resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==} | |
| 4167 | - dev: true | |
| 4168 | - | |
| 4169 | 4216 | /pathe/1.0.0: |
| 4170 | 4217 | resolution: {integrity: sha512-nPdMG0Pd09HuSsr7QOKUXO2Jr9eqaDiZvDwdyIhNG5SHYujkQHYKDfGQkulBxvbDHz8oHLsTgKN86LSwYzSHAg==} |
| 4171 | 4218 | dev: true |
| ... | ... | @@ -4555,8 +4602,8 @@ packages: |
| 4555 | 4602 | fsevents: 2.3.2 |
| 4556 | 4603 | dev: true |
| 4557 | 4604 | |
| 4558 | - /rollup/3.8.1: | |
| 4559 | - resolution: {integrity: sha512-4yh9eMW7byOroYcN8DlF9P/2jCpu6txVIHjEqquQVSx7DI0RgyCCN3tjrcy4ra6yVtV336aLBB3v2AarYAxePQ==} | |
| 4605 | + /rollup/3.9.1: | |
| 4606 | + resolution: {integrity: sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==} | |
| 4560 | 4607 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} |
| 4561 | 4608 | hasBin: true |
| 4562 | 4609 | optionalDependencies: |
| ... | ... | @@ -4691,7 +4738,7 @@ packages: |
| 4691 | 4738 | resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} |
| 4692 | 4739 | engines: {node: '>=8'} |
| 4693 | 4740 | dependencies: |
| 4694 | - ansi-styles: registry.npmmirror.com/ansi-styles/4.3.0 | |
| 4741 | + ansi-styles: 4.3.0 | |
| 4695 | 4742 | astral-regex: 2.0.0 |
| 4696 | 4743 | is-fullwidth-code-point: 3.0.0 |
| 4697 | 4744 | dev: true |
| ... | ... | @@ -4929,7 +4976,7 @@ packages: |
| 4929 | 4976 | resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} |
| 4930 | 4977 | dev: true |
| 4931 | 4978 | |
| 4932 | - /stylelint-config-html/1.1.0_bto6pmslw3cibsiuq6smxboytq: | |
| 4979 | + /stylelint-config-html/1.1.0_kbto3rg3njmczth2rrsgfnlsqa: | |
| 4933 | 4980 | resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==} |
| 4934 | 4981 | engines: {node: ^12 || >=14} |
| 4935 | 4982 | peerDependencies: |
| ... | ... | @@ -4937,48 +4984,48 @@ packages: |
| 4937 | 4984 | stylelint: '>=14.0.0' |
| 4938 | 4985 | dependencies: |
| 4939 | 4986 | postcss-html: 1.5.0 |
| 4940 | - stylelint: 14.16.0 | |
| 4987 | + stylelint: 14.16.1 | |
| 4941 | 4988 | dev: true |
| 4942 | 4989 | |
| 4943 | - /stylelint-config-prettier/9.0.4_stylelint@14.16.0: | |
| 4990 | + /stylelint-config-prettier/9.0.4_stylelint@14.16.1: | |
| 4944 | 4991 | resolution: {integrity: sha512-38nIGTGpFOiK5LjJ8Ma1yUgpKENxoKSOhbDNSemY7Ep0VsJoXIW9Iq/2hSt699oB9tReynfWicTAoIHiq8Rvbg==} |
| 4945 | 4992 | engines: {node: '>= 12'} |
| 4946 | 4993 | hasBin: true |
| 4947 | 4994 | peerDependencies: |
| 4948 | 4995 | stylelint: '>=11.0.0' |
| 4949 | 4996 | dependencies: |
| 4950 | - stylelint: 14.16.0 | |
| 4997 | + stylelint: 14.16.1 | |
| 4951 | 4998 | dev: true |
| 4952 | 4999 | |
| 4953 | - /stylelint-config-recommended/9.0.0_stylelint@14.16.0: | |
| 5000 | + /stylelint-config-recommended/9.0.0_stylelint@14.16.1: | |
| 4954 | 5001 | resolution: {integrity: sha512-9YQSrJq4NvvRuTbzDsWX3rrFOzOlYBmZP+o513BJN/yfEmGSr0AxdvrWs0P/ilSpVV/wisamAHu5XSk8Rcf4CQ==} |
| 4955 | 5002 | peerDependencies: |
| 4956 | 5003 | stylelint: ^14.10.0 |
| 4957 | 5004 | dependencies: |
| 4958 | - stylelint: 14.16.0 | |
| 5005 | + stylelint: 14.16.1 | |
| 4959 | 5006 | dev: true |
| 4960 | 5007 | |
| 4961 | - /stylelint-config-standard/29.0.0_stylelint@14.16.0: | |
| 5008 | + /stylelint-config-standard/29.0.0_stylelint@14.16.1: | |
| 4962 | 5009 | resolution: {integrity: sha512-uy8tZLbfq6ZrXy4JKu3W+7lYLgRQBxYTUUB88vPgQ+ZzAxdrvcaSUW9hOMNLYBnwH+9Kkj19M2DHdZ4gKwI7tg==} |
| 4963 | 5010 | peerDependencies: |
| 4964 | 5011 | stylelint: ^14.14.0 |
| 4965 | 5012 | dependencies: |
| 4966 | - stylelint: 14.16.0 | |
| 4967 | - stylelint-config-recommended: 9.0.0_stylelint@14.16.0 | |
| 5013 | + stylelint: 14.16.1 | |
| 5014 | + stylelint-config-recommended: 9.0.0_stylelint@14.16.1 | |
| 4968 | 5015 | dev: true |
| 4969 | 5016 | |
| 4970 | - /stylelint-order/5.0.0_stylelint@14.16.0: | |
| 5017 | + /stylelint-order/5.0.0_stylelint@14.16.1: | |
| 4971 | 5018 | resolution: {integrity: sha512-OWQ7pmicXufDw5BlRqzdz3fkGKJPgLyDwD1rFY3AIEfIH/LQY38Vu/85v8/up0I+VPiuGRwbc2Hg3zLAsJaiyw==} |
| 4972 | 5019 | peerDependencies: |
| 4973 | 5020 | stylelint: ^14.0.0 |
| 4974 | 5021 | dependencies: |
| 4975 | 5022 | postcss: registry.npmmirror.com/postcss/8.4.20 |
| 4976 | 5023 | postcss-sorting: 7.0.1_postcss@8.4.20 |
| 4977 | - stylelint: 14.16.0 | |
| 5024 | + stylelint: 14.16.1 | |
| 4978 | 5025 | dev: true |
| 4979 | 5026 | |
| 4980 | - /stylelint/14.16.0: | |
| 4981 | - resolution: {integrity: sha512-X6uTi9DcxjzLV8ZUAjit1vsRtSwcls0nl07c9rqOPzvpA8IvTX/xWEkBRowS0ffevRrqkHa/ThDEu86u73FQDg==} | |
| 5027 | + /stylelint/14.16.1: | |
| 5028 | + resolution: {integrity: sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==} | |
| 4982 | 5029 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} |
| 4983 | 5030 | hasBin: true |
| 4984 | 5031 | dependencies: |
| ... | ... | @@ -5005,7 +5052,7 @@ packages: |
| 5005 | 5052 | micromatch: 4.0.5 |
| 5006 | 5053 | normalize-path: 3.0.0 |
| 5007 | 5054 | picocolors: 1.0.0 |
| 5008 | - postcss: registry.npmmirror.com/postcss/8.4.20 | |
| 5055 | + postcss: 8.4.20 | |
| 5009 | 5056 | postcss-media-query-parser: 0.2.3 |
| 5010 | 5057 | postcss-resolve-nested-selector: 0.1.1 |
| 5011 | 5058 | postcss-safe-parser: 6.0.0_postcss@8.4.20 |
| ... | ... | @@ -5024,6 +5071,18 @@ packages: |
| 5024 | 5071 | - supports-color |
| 5025 | 5072 | dev: true |
| 5026 | 5073 | |
| 5074 | + /supports-color/2.0.0: | |
| 5075 | + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} | |
| 5076 | + engines: {node: '>=0.8.0'} | |
| 5077 | + dev: true | |
| 5078 | + | |
| 5079 | + /supports-color/5.5.0: | |
| 5080 | + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} | |
| 5081 | + engines: {node: '>=4'} | |
| 5082 | + dependencies: | |
| 5083 | + has-flag: 3.0.0 | |
| 5084 | + dev: true | |
| 5085 | + | |
| 5027 | 5086 | /supports-color/7.2.0: |
| 5028 | 5087 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} |
| 5029 | 5088 | engines: {node: '>=8'} |
| ... | ... | @@ -5357,7 +5416,7 @@ packages: |
| 5357 | 5416 | chalk: 4.1.2 |
| 5358 | 5417 | debug: 4.3.4 |
| 5359 | 5418 | fs-extra: 10.1.0 |
| 5360 | - vite: 4.0.3_amyfslv6hdwxqbf7f4ldebbtce | |
| 5419 | + vite: 4.0.3_zxbrnrc4iyldik6mikh3pswz4i | |
| 5361 | 5420 | transitivePeerDependencies: |
| 5362 | 5421 | - supports-color |
| 5363 | 5422 | dev: true |
| ... | ... | @@ -5368,7 +5427,7 @@ packages: |
| 5368 | 5427 | ejs: 3.1.8 |
| 5369 | 5428 | dev: true |
| 5370 | 5429 | |
| 5371 | - /vite-plugin-eslint/1.8.1_eslint@8.30.0+vite@4.0.3: | |
| 5430 | + /vite-plugin-eslint/1.8.1_eslint@8.31.0+vite@4.0.3: | |
| 5372 | 5431 | resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} |
| 5373 | 5432 | peerDependencies: |
| 5374 | 5433 | eslint: '>=7' |
| ... | ... | @@ -5376,9 +5435,9 @@ packages: |
| 5376 | 5435 | dependencies: |
| 5377 | 5436 | '@rollup/pluginutils': 4.2.1 |
| 5378 | 5437 | '@types/eslint': 8.4.10 |
| 5379 | - eslint: 8.30.0 | |
| 5438 | + eslint: 8.31.0 | |
| 5380 | 5439 | rollup: 2.79.1 |
| 5381 | - vite: 4.0.3_amyfslv6hdwxqbf7f4ldebbtce | |
| 5440 | + vite: 4.0.3_zxbrnrc4iyldik6mikh3pswz4i | |
| 5382 | 5441 | dev: true |
| 5383 | 5442 | |
| 5384 | 5443 | /vite-plugin-progress/0.0.6_vite@4.0.3: |
| ... | ... | @@ -5390,7 +5449,7 @@ packages: |
| 5390 | 5449 | picocolors: 1.0.0 |
| 5391 | 5450 | progress: 2.0.3 |
| 5392 | 5451 | rd: 2.0.1 |
| 5393 | - vite: 4.0.3_amyfslv6hdwxqbf7f4ldebbtce | |
| 5452 | + vite: 4.0.3_zxbrnrc4iyldik6mikh3pswz4i | |
| 5394 | 5453 | dev: true |
| 5395 | 5454 | |
| 5396 | 5455 | /vite-plugin-style-import/2.0.0_vite@4.0.3: |
| ... | ... | @@ -5405,7 +5464,7 @@ packages: |
| 5405 | 5464 | fs-extra: 10.1.0 |
| 5406 | 5465 | magic-string: 0.25.9 |
| 5407 | 5466 | pathe: 0.2.0 |
| 5408 | - vite: 4.0.3_amyfslv6hdwxqbf7f4ldebbtce | |
| 5467 | + vite: 4.0.3_zxbrnrc4iyldik6mikh3pswz4i | |
| 5409 | 5468 | dev: true |
| 5410 | 5469 | |
| 5411 | 5470 | /vite-plugin-svg-icons/2.0.1_vite@4.0.3: |
| ... | ... | @@ -5421,7 +5480,7 @@ packages: |
| 5421 | 5480 | pathe: 0.2.0 |
| 5422 | 5481 | svg-baker: 1.7.0 |
| 5423 | 5482 | svgo: 2.8.0 |
| 5424 | - vite: 4.0.3_amyfslv6hdwxqbf7f4ldebbtce | |
| 5483 | + vite: 4.0.3_zxbrnrc4iyldik6mikh3pswz4i | |
| 5425 | 5484 | transitivePeerDependencies: |
| 5426 | 5485 | - supports-color |
| 5427 | 5486 | dev: true |
| ... | ... | @@ -5433,10 +5492,10 @@ packages: |
| 5433 | 5492 | dependencies: |
| 5434 | 5493 | '@vue/compiler-sfc': 3.2.45 |
| 5435 | 5494 | magic-string: 0.25.9 |
| 5436 | - vite: 4.0.3_amyfslv6hdwxqbf7f4ldebbtce | |
| 5495 | + vite: 4.0.3_zxbrnrc4iyldik6mikh3pswz4i | |
| 5437 | 5496 | dev: true |
| 5438 | 5497 | |
| 5439 | - /vite/4.0.3_amyfslv6hdwxqbf7f4ldebbtce: | |
| 5498 | + /vite/4.0.3_zxbrnrc4iyldik6mikh3pswz4i: | |
| 5440 | 5499 | resolution: {integrity: sha512-HvuNv1RdE7deIfQb8mPk51UKjqptO/4RXZ5yXSAvurd5xOckwS/gg8h9Tky3uSbnjYTgUm0hVCet1cyhKd73ZA==} |
| 5441 | 5500 | engines: {node: ^14.18.0 || >=16.0.0} |
| 5442 | 5501 | hasBin: true |
| ... | ... | @@ -5461,11 +5520,11 @@ packages: |
| 5461 | 5520 | terser: |
| 5462 | 5521 | optional: true |
| 5463 | 5522 | dependencies: |
| 5464 | - '@types/node': 18.11.17 | |
| 5523 | + '@types/node': 18.11.18 | |
| 5465 | 5524 | esbuild: 0.16.5 |
| 5466 | 5525 | postcss: 8.4.20 |
| 5467 | 5526 | resolve: 1.22.1 |
| 5468 | - rollup: 3.8.1 | |
| 5527 | + rollup: 3.9.1 | |
| 5469 | 5528 | sass: 1.57.1 |
| 5470 | 5529 | terser: 5.16.1 |
| 5471 | 5530 | optionalDependencies: |
| ... | ... | @@ -5487,14 +5546,14 @@ packages: |
| 5487 | 5546 | vue: 3.2.45 |
| 5488 | 5547 | dev: false |
| 5489 | 5548 | |
| 5490 | - /vue-eslint-parser/9.1.0_eslint@8.30.0: | |
| 5549 | + /vue-eslint-parser/9.1.0_eslint@8.31.0: | |
| 5491 | 5550 | resolution: {integrity: sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==} |
| 5492 | 5551 | engines: {node: ^14.17.0 || >=16.0.0} |
| 5493 | 5552 | peerDependencies: |
| 5494 | 5553 | eslint: '>=6.0.0' |
| 5495 | 5554 | dependencies: |
| 5496 | 5555 | debug: 4.3.4 |
| 5497 | - eslint: 8.30.0 | |
| 5556 | + eslint: 8.31.0 | |
| 5498 | 5557 | eslint-scope: 7.1.1 |
| 5499 | 5558 | eslint-visitor-keys: 3.3.0 |
| 5500 | 5559 | espree: 9.4.1 |
| ... | ... | @@ -5533,14 +5592,14 @@ packages: |
| 5533 | 5592 | he: 1.2.0 |
| 5534 | 5593 | dev: true |
| 5535 | 5594 | |
| 5536 | - /vue-tsc/1.0.16_typescript@4.9.4: | |
| 5537 | - resolution: {integrity: sha512-yZaiJBbcKR1rSLhiF9KryAFH7R63po+N/invr2EAHGXxMzZksE5j1zyQKvrYiqK47ZHLAlCR+re/PHqWp/UzTg==} | |
| 5595 | + /vue-tsc/1.0.19_typescript@4.9.4: | |
| 5596 | + resolution: {integrity: sha512-UuI4G9PwV07Q2U+xYDLP5y3aUXTfuIF0Exy0qXT8+BbLlahubQ2r2PGSodSBnHxAhm/XsrD0KleC2rSzLKXDfQ==} | |
| 5538 | 5597 | hasBin: true |
| 5539 | 5598 | peerDependencies: |
| 5540 | 5599 | typescript: '*' |
| 5541 | 5600 | dependencies: |
| 5542 | - '@volar/vue-language-core': 1.0.16 | |
| 5543 | - '@volar/vue-typescript': 1.0.16 | |
| 5601 | + '@volar/vue-language-core': 1.0.19 | |
| 5602 | + '@volar/vue-typescript': 1.0.19 | |
| 5544 | 5603 | typescript: 4.9.4 |
| 5545 | 5604 | dev: true |
| 5546 | 5605 | |
| ... | ... | @@ -6229,7 +6288,7 @@ packages: |
| 6229 | 6288 | version: 0.9.1 |
| 6230 | 6289 | dependencies: |
| 6231 | 6290 | '@iconify/iconify': registry.npmmirror.com/@iconify/iconify/2.1.2 |
| 6232 | - axios: registry.npmmirror.com/axios/0.26.1_debug@4.3.4 | |
| 6291 | + axios: 0.26.1_debug@4.3.4 | |
| 6233 | 6292 | debug: 4.3.4 |
| 6234 | 6293 | fast-glob: registry.npmmirror.com/fast-glob/3.2.12 |
| 6235 | 6294 | fs-extra: registry.npmmirror.com/fs-extra/10.1.0 |
| ... | ... | @@ -6262,7 +6321,7 @@ packages: |
| 6262 | 6321 | regenerator-runtime: registry.npmmirror.com/regenerator-runtime/0.13.11 |
| 6263 | 6322 | systemjs: registry.npmmirror.com/systemjs/6.13.0 |
| 6264 | 6323 | terser: 5.16.1 |
| 6265 | - vite: 4.0.3_amyfslv6hdwxqbf7f4ldebbtce | |
| 6324 | + vite: 4.0.3_zxbrnrc4iyldik6mikh3pswz4i | |
| 6266 | 6325 | dev: true |
| 6267 | 6326 | |
| 6268 | 6327 | registry.npmmirror.com/@vitejs/plugin-vue-jsx/3.0.0_vite@4.0.3+vue@3.2.45: |
| ... | ... | @@ -6278,7 +6337,7 @@ packages: |
| 6278 | 6337 | '@babel/core': registry.npmmirror.com/@babel/core/7.20.5 |
| 6279 | 6338 | '@babel/plugin-transform-typescript': registry.npmmirror.com/@babel/plugin-transform-typescript/7.20.2_@babel+core@7.20.5 |
| 6280 | 6339 | '@vue/babel-plugin-jsx': registry.npmmirror.com/@vue/babel-plugin-jsx/1.1.1_@babel+core@7.20.5 |
| 6281 | - vite: 4.0.3_amyfslv6hdwxqbf7f4ldebbtce | |
| 6340 | + vite: 4.0.3_zxbrnrc4iyldik6mikh3pswz4i | |
| 6282 | 6341 | vue: 3.2.45 |
| 6283 | 6342 | transitivePeerDependencies: |
| 6284 | 6343 | - supports-color |
| ... | ... | @@ -6294,7 +6353,7 @@ packages: |
| 6294 | 6353 | vite: ^4.0.0 |
| 6295 | 6354 | vue: ^3.2.25 |
| 6296 | 6355 | dependencies: |
| 6297 | - vite: 4.0.3_amyfslv6hdwxqbf7f4ldebbtce | |
| 6356 | + vite: 4.0.3_zxbrnrc4iyldik6mikh3pswz4i | |
| 6298 | 6357 | vue: 3.2.45 |
| 6299 | 6358 | dev: true |
| 6300 | 6359 | |
| ... | ... | @@ -6388,22 +6447,6 @@ packages: |
| 6388 | 6447 | - supports-color |
| 6389 | 6448 | dev: true |
| 6390 | 6449 | |
| 6391 | - registry.npmmirror.com/ansi-styles/2.2.1: | |
| 6392 | - resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz} | |
| 6393 | - name: ansi-styles | |
| 6394 | - version: 2.2.1 | |
| 6395 | - engines: {node: '>=0.10.0'} | |
| 6396 | - dev: true | |
| 6397 | - | |
| 6398 | - registry.npmmirror.com/ansi-styles/3.2.1: | |
| 6399 | - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz} | |
| 6400 | - name: ansi-styles | |
| 6401 | - version: 3.2.1 | |
| 6402 | - engines: {node: '>=4'} | |
| 6403 | - dependencies: | |
| 6404 | - color-convert: registry.npmmirror.com/color-convert/1.9.3 | |
| 6405 | - dev: true | |
| 6406 | - | |
| 6407 | 6450 | registry.npmmirror.com/ansi-styles/4.3.0: |
| 6408 | 6451 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz} |
| 6409 | 6452 | name: ansi-styles |
| ... | ... | @@ -6412,17 +6455,6 @@ packages: |
| 6412 | 6455 | dependencies: |
| 6413 | 6456 | color-convert: registry.npmmirror.com/color-convert/2.0.1 |
| 6414 | 6457 | |
| 6415 | - registry.npmmirror.com/axios/0.26.1_debug@4.3.4: | |
| 6416 | - resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/axios/-/axios-0.26.1.tgz} | |
| 6417 | - id: registry.npmmirror.com/axios/0.26.1 | |
| 6418 | - name: axios | |
| 6419 | - version: 0.26.1 | |
| 6420 | - dependencies: | |
| 6421 | - follow-redirects: registry.npmmirror.com/follow-redirects/1.15.2_debug@4.3.4 | |
| 6422 | - transitivePeerDependencies: | |
| 6423 | - - debug | |
| 6424 | - dev: true | |
| 6425 | - | |
| 6426 | 6458 | registry.npmmirror.com/braces/2.3.2: |
| 6427 | 6459 | resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz} |
| 6428 | 6460 | name: braces |
| ... | ... | @@ -6585,7 +6617,7 @@ packages: |
| 6585 | 6617 | '@nodelib/fs.walk': 1.2.8 |
| 6586 | 6618 | glob-parent: 5.1.2 |
| 6587 | 6619 | merge2: registry.npmmirror.com/merge2/1.4.1 |
| 6588 | - micromatch: registry.npmmirror.com/micromatch/4.0.5 | |
| 6620 | + micromatch: 4.0.5 | |
| 6589 | 6621 | dev: true |
| 6590 | 6622 | |
| 6591 | 6623 | registry.npmmirror.com/fill-range/4.0.0: |
| ... | ... | @@ -6609,21 +6641,6 @@ packages: |
| 6609 | 6641 | to-regex-range: registry.npmmirror.com/to-regex-range/5.0.1 |
| 6610 | 6642 | dev: true |
| 6611 | 6643 | |
| 6612 | - registry.npmmirror.com/follow-redirects/1.15.2_debug@4.3.4: | |
| 6613 | - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz} | |
| 6614 | - id: registry.npmmirror.com/follow-redirects/1.15.2 | |
| 6615 | - name: follow-redirects | |
| 6616 | - version: 1.15.2 | |
| 6617 | - engines: {node: '>=4.0'} | |
| 6618 | - peerDependencies: | |
| 6619 | - debug: '*' | |
| 6620 | - peerDependenciesMeta: | |
| 6621 | - debug: | |
| 6622 | - optional: true | |
| 6623 | - dependencies: | |
| 6624 | - debug: 4.3.4 | |
| 6625 | - dev: true | |
| 6626 | - | |
| 6627 | 6644 | registry.npmmirror.com/fs-extra/10.1.0: |
| 6628 | 6645 | resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz} |
| 6629 | 6646 | name: fs-extra |
| ... | ... | @@ -6653,20 +6670,6 @@ packages: |
| 6653 | 6670 | version: 4.2.10 |
| 6654 | 6671 | dev: true |
| 6655 | 6672 | |
| 6656 | - registry.npmmirror.com/has-flag/1.0.0: | |
| 6657 | - resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has-flag/-/has-flag-1.0.0.tgz} | |
| 6658 | - name: has-flag | |
| 6659 | - version: 1.0.0 | |
| 6660 | - engines: {node: '>=0.10.0'} | |
| 6661 | - dev: true | |
| 6662 | - | |
| 6663 | - registry.npmmirror.com/has-flag/3.0.0: | |
| 6664 | - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz} | |
| 6665 | - name: has-flag | |
| 6666 | - version: 3.0.0 | |
| 6667 | - engines: {node: '>=4'} | |
| 6668 | - dev: true | |
| 6669 | - | |
| 6670 | 6673 | registry.npmmirror.com/has/1.0.3: |
| 6671 | 6674 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has/-/has-1.0.3.tgz} |
| 6672 | 6675 | name: has |
| ... | ... | @@ -6932,29 +6935,13 @@ packages: |
| 6932 | 6935 | version: 1.0.2 |
| 6933 | 6936 | engines: {node: '>=0.10.0'} |
| 6934 | 6937 | |
| 6935 | - registry.npmmirror.com/supports-color/2.0.0: | |
| 6936 | - resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz} | |
| 6937 | - name: supports-color | |
| 6938 | - version: 2.0.0 | |
| 6939 | - engines: {node: '>=0.8.0'} | |
| 6940 | - dev: true | |
| 6941 | - | |
| 6942 | 6938 | registry.npmmirror.com/supports-color/3.2.3: |
| 6943 | 6939 | resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/supports-color/-/supports-color-3.2.3.tgz} |
| 6944 | 6940 | name: supports-color |
| 6945 | 6941 | version: 3.2.3 |
| 6946 | 6942 | engines: {node: '>=0.8.0'} |
| 6947 | 6943 | dependencies: |
| 6948 | - has-flag: registry.npmmirror.com/has-flag/1.0.0 | |
| 6949 | - dev: true | |
| 6950 | - | |
| 6951 | - registry.npmmirror.com/supports-color/5.5.0: | |
| 6952 | - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz} | |
| 6953 | - name: supports-color | |
| 6954 | - version: 5.5.0 | |
| 6955 | - engines: {node: '>=4'} | |
| 6956 | - dependencies: | |
| 6957 | - has-flag: registry.npmmirror.com/has-flag/3.0.0 | |
| 6944 | + has-flag: 1.0.0 | |
| 6958 | 6945 | dev: true |
| 6959 | 6946 | |
| 6960 | 6947 | registry.npmmirror.com/svg-tags/1.0.0: |
| ... | ... | @@ -7045,7 +7032,7 @@ packages: |
| 7045 | 7032 | '@purge-icons/core': registry.npmmirror.com/@purge-icons/core/0.9.1 |
| 7046 | 7033 | '@purge-icons/generated': registry.npmmirror.com/@purge-icons/generated/0.9.0 |
| 7047 | 7034 | rollup-plugin-purge-icons: registry.npmmirror.com/rollup-plugin-purge-icons/0.9.1 |
| 7048 | - vite: 4.0.3_amyfslv6hdwxqbf7f4ldebbtce | |
| 7035 | + vite: 4.0.3_zxbrnrc4iyldik6mikh3pswz4i | |
| 7049 | 7036 | transitivePeerDependencies: |
| 7050 | 7037 | - encoding |
| 7051 | 7038 | - supports-color |
| ... | ... | @@ -7062,7 +7049,7 @@ packages: |
| 7062 | 7049 | '@windicss/plugin-utils': registry.npmmirror.com/@windicss/plugin-utils/1.8.10 |
| 7063 | 7050 | debug: registry.npmmirror.com/debug/4.3.4 |
| 7064 | 7051 | kolorist: registry.npmmirror.com/kolorist/1.6.0 |
| 7065 | - vite: 4.0.3_amyfslv6hdwxqbf7f4ldebbtce | |
| 7052 | + vite: 4.0.3_zxbrnrc4iyldik6mikh3pswz4i | |
| 7066 | 7053 | windicss: registry.npmmirror.com/windicss/3.5.6 |
| 7067 | 7054 | transitivePeerDependencies: |
| 7068 | 7055 | - supports-color | ... | ... |
yudao-ui-admin-vue3/src/components/XTable/index.ts
0 → 100644
yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <VxeGrid v-bind="getProps" ref="xGrid" :class="`${prefixCls}`" class="xtable-scrollbar"> | |
| 3 | + <template #[item]="data" v-for="item in Object.keys($slots)" :key="item"> | |
| 4 | + <slot :name="item" v-bind="data || {}"></slot> | |
| 5 | + </template> | |
| 6 | + </VxeGrid> | |
| 7 | +</template> | |
| 8 | +<script lang="ts" setup name="XTable"> | |
| 9 | +import { computed, PropType, ref, unref, useAttrs, watch } from 'vue' | |
| 10 | +import { SizeType, VxeGridInstance } from 'vxe-table' | |
| 11 | +import { useAppStore } from '@/store/modules/app' | |
| 12 | +import { useDesign } from '@/hooks/web/useDesign' | |
| 13 | +import { XTableProps } from './type' | |
| 14 | +import { isBoolean, isFunction } from '@/utils/is' | |
| 15 | +import { useMessage } from '@/hooks/web/useMessage' | |
| 16 | +import download from '@/utils/download' | |
| 17 | +import { useI18n } from '@/hooks/web/useI18n' | |
| 18 | + | |
| 19 | +const { t } = useI18n() | |
| 20 | +const message = useMessage() // 消息弹窗 | |
| 21 | + | |
| 22 | +const appStore = useAppStore() | |
| 23 | + | |
| 24 | +const { getPrefixCls } = useDesign() | |
| 25 | +const prefixCls = getPrefixCls('x-vxe-table') | |
| 26 | + | |
| 27 | +const attrs = useAttrs() | |
| 28 | +const emit = defineEmits(['register']) | |
| 29 | + | |
| 30 | +watch( | |
| 31 | + () => appStore.getIsDark, | |
| 32 | + () => { | |
| 33 | + if (appStore.getIsDark == true) { | |
| 34 | + import('./style/dark.scss') | |
| 35 | + } | |
| 36 | + if (appStore.getIsDark == false) { | |
| 37 | + import('./style/light.scss') | |
| 38 | + } | |
| 39 | + }, | |
| 40 | + { immediate: true } | |
| 41 | +) | |
| 42 | + | |
| 43 | +const currentSize = computed(() => { | |
| 44 | + let resSize: SizeType = 'small' | |
| 45 | + const appsize = appStore.getCurrentSize | |
| 46 | + switch (appsize) { | |
| 47 | + case 'large': | |
| 48 | + resSize = 'medium' | |
| 49 | + break | |
| 50 | + case 'default': | |
| 51 | + resSize = 'small' | |
| 52 | + break | |
| 53 | + case 'small': | |
| 54 | + resSize = 'mini' | |
| 55 | + break | |
| 56 | + } | |
| 57 | + return resSize | |
| 58 | +}) | |
| 59 | + | |
| 60 | +const props = defineProps({ | |
| 61 | + options: { | |
| 62 | + type: Object as PropType<XTableProps>, | |
| 63 | + default: () => {} | |
| 64 | + } | |
| 65 | +}) | |
| 66 | +const innerProps = ref<Partial<XTableProps>>() | |
| 67 | + | |
| 68 | +const getProps = computed(() => { | |
| 69 | + const options = innerProps.value || props.options | |
| 70 | + options.size = currentSize as any | |
| 71 | + options.height = 700 | |
| 72 | + getOptionInitConfig(options) | |
| 73 | + getColumnsConfig(options) | |
| 74 | + getProxyConfig(options) | |
| 75 | + getPageConfig(options) | |
| 76 | + getToolBarConfig(options) | |
| 77 | + // console.log(options); | |
| 78 | + return { | |
| 79 | + ...options, | |
| 80 | + ...attrs | |
| 81 | + } | |
| 82 | +}) | |
| 83 | + | |
| 84 | +const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 85 | + | |
| 86 | +let proxyForm = false | |
| 87 | + | |
| 88 | +const getOptionInitConfig = (options: XTableProps) => { | |
| 89 | + options.size = currentSize as any | |
| 90 | + options.rowConfig = { | |
| 91 | + isCurrent: true, // 当鼠标点击行时,是否要高亮当前行 | |
| 92 | + isHover: true // 当鼠标移到行时,是否要高亮当前行 | |
| 93 | + } | |
| 94 | +} | |
| 95 | + | |
| 96 | +// columns | |
| 97 | +const getColumnsConfig = (options: XTableProps) => { | |
| 98 | + const { allSchemas } = options | |
| 99 | + if (!allSchemas) return | |
| 100 | + if (allSchemas.printSchema) { | |
| 101 | + options.printConfig = { | |
| 102 | + columns: allSchemas.printSchema | |
| 103 | + } | |
| 104 | + } | |
| 105 | + if (allSchemas.formSchema) { | |
| 106 | + proxyForm = true | |
| 107 | + options.formConfig = { | |
| 108 | + enabled: true, | |
| 109 | + titleWidth: 100, | |
| 110 | + titleAlign: 'right', | |
| 111 | + items: allSchemas.searchSchema | |
| 112 | + } | |
| 113 | + } | |
| 114 | + if (allSchemas.tableSchema) { | |
| 115 | + options.columns = allSchemas.tableSchema | |
| 116 | + } | |
| 117 | +} | |
| 118 | + | |
| 119 | +// 动态请求 | |
| 120 | +const getProxyConfig = (options: XTableProps) => { | |
| 121 | + const { getListApi, proxyConfig, data, isList } = options | |
| 122 | + if (proxyConfig || data) return | |
| 123 | + if (getListApi && isFunction(getListApi) && !isList) { | |
| 124 | + if (!isList) { | |
| 125 | + options.proxyConfig = { | |
| 126 | + seq: true, // 启用动态序号代理(分页之后索引自动计算为当前页的起始序号) | |
| 127 | + form: proxyForm, // 启用表单代理,当点击表单提交按钮时会自动触发 reload 行为 | |
| 128 | + props: { result: 'list', total: 'total' }, | |
| 129 | + ajax: { | |
| 130 | + query: async ({ page, form }) => { | |
| 131 | + let queryParams: any = Object.assign({}, JSON.parse(JSON.stringify(form))) | |
| 132 | + if (options.params) { | |
| 133 | + queryParams = Object.assign(queryParams, options.params) | |
| 134 | + } | |
| 135 | + if (!options?.treeConfig) { | |
| 136 | + queryParams.pageSize = page.pageSize | |
| 137 | + queryParams.pageNo = page.currentPage | |
| 138 | + } | |
| 139 | + return new Promise(async (resolve) => { | |
| 140 | + resolve(await getListApi(queryParams)) | |
| 141 | + }) | |
| 142 | + }, | |
| 143 | + delete: ({ body }) => { | |
| 144 | + return new Promise(async (resolve) => { | |
| 145 | + if (options.deleteApi) { | |
| 146 | + resolve(await options.deleteApi(JSON.stringify(body))) | |
| 147 | + } else { | |
| 148 | + Promise.reject('未设置deleteApi') | |
| 149 | + } | |
| 150 | + }) | |
| 151 | + }, | |
| 152 | + queryAll: ({ form }) => { | |
| 153 | + const queryParams = Object.assign({}, JSON.parse(JSON.stringify(form))) | |
| 154 | + return new Promise(async (resolve) => { | |
| 155 | + if (options.getAllListApi) { | |
| 156 | + resolve(await options.getAllListApi(queryParams)) | |
| 157 | + } else { | |
| 158 | + resolve(await getListApi(queryParams)) | |
| 159 | + } | |
| 160 | + }) | |
| 161 | + } | |
| 162 | + } | |
| 163 | + } | |
| 164 | + } else { | |
| 165 | + options.proxyConfig = { | |
| 166 | + seq: true, // 启用动态序号代理(分页之后索引自动计算为当前页的起始序号) | |
| 167 | + form: true, // 启用表单代理,当点击表单提交按钮时会自动触发 reload 行为 | |
| 168 | + props: { result: 'data' }, | |
| 169 | + ajax: { | |
| 170 | + query: ({ form }) => { | |
| 171 | + let queryParams: any = Object.assign({}, JSON.parse(JSON.stringify(form))) | |
| 172 | + if (options?.params) { | |
| 173 | + queryParams = Object.assign(queryParams, options.params) | |
| 174 | + } | |
| 175 | + return new Promise(async (resolve) => { | |
| 176 | + resolve(await getListApi(queryParams)) | |
| 177 | + }) | |
| 178 | + } | |
| 179 | + } | |
| 180 | + } | |
| 181 | + } | |
| 182 | + } | |
| 183 | + if (options.exportListApi) { | |
| 184 | + options.exportConfig = { | |
| 185 | + filename: options?.exportName, | |
| 186 | + // 默认选中类型 | |
| 187 | + type: 'csv', | |
| 188 | + // 自定义数据量列表 | |
| 189 | + modes: options?.getAllListApi ? ['current', 'all'] : ['current'], | |
| 190 | + columns: options?.allSchemas?.printSchema | |
| 191 | + } | |
| 192 | + } | |
| 193 | +} | |
| 194 | + | |
| 195 | +// 分页 | |
| 196 | +const getPageConfig = (options: XTableProps) => { | |
| 197 | + const { pagination, pagerConfig, treeConfig } = options | |
| 198 | + if (treeConfig) { | |
| 199 | + options.treeConfig = options.treeConfig | |
| 200 | + return | |
| 201 | + } | |
| 202 | + if (pagerConfig) return | |
| 203 | + if (pagination) { | |
| 204 | + if (isBoolean(pagination)) { | |
| 205 | + options.pagerConfig = { | |
| 206 | + border: false, // 带边框 | |
| 207 | + background: true, // 带背景颜色 | |
| 208 | + perfect: false, // 配套的样式 | |
| 209 | + pageSize: 10, // 每页大小 | |
| 210 | + pagerCount: 7, // 显示页码按钮的数量 | |
| 211 | + autoHidden: false, // 当只有一页时自动隐藏 | |
| 212 | + pageSizes: [5, 10, 20, 30, 50, 100], // 每页大小选项列表 | |
| 213 | + layouts: [ | |
| 214 | + 'PrevJump', | |
| 215 | + 'PrevPage', | |
| 216 | + 'JumpNumber', | |
| 217 | + 'NextPage', | |
| 218 | + 'NextJump', | |
| 219 | + 'Sizes', | |
| 220 | + 'FullJump', | |
| 221 | + 'Total' | |
| 222 | + ] | |
| 223 | + } | |
| 224 | + return | |
| 225 | + } | |
| 226 | + options.pagerConfig = pagination | |
| 227 | + } else { | |
| 228 | + if (pagination != false) { | |
| 229 | + options.pagerConfig = { | |
| 230 | + border: false, // 带边框 | |
| 231 | + background: true, // 带背景颜色 | |
| 232 | + perfect: false, // 配套的样式 | |
| 233 | + pageSize: 10, // 每页大小 | |
| 234 | + pagerCount: 7, // 显示页码按钮的数量 | |
| 235 | + autoHidden: false, // 当只有一页时自动隐藏 | |
| 236 | + pageSizes: [5, 10, 20, 30, 50, 100], // 每页大小选项列表 | |
| 237 | + layouts: [ | |
| 238 | + 'PrevJump', | |
| 239 | + 'PrevPage', | |
| 240 | + 'JumpNumber', | |
| 241 | + 'NextPage', | |
| 242 | + 'NextJump', | |
| 243 | + 'Sizes', | |
| 244 | + 'FullJump', | |
| 245 | + 'Total' | |
| 246 | + ] | |
| 247 | + } | |
| 248 | + } | |
| 249 | + } | |
| 250 | +} | |
| 251 | + | |
| 252 | +// tool bar | |
| 253 | +const getToolBarConfig = (options: XTableProps) => { | |
| 254 | + const { toolBar, toolbarConfig, topActionSlots } = options | |
| 255 | + if (toolbarConfig) return | |
| 256 | + if (toolBar) { | |
| 257 | + if (!isBoolean(toolBar)) { | |
| 258 | + options.toolbarConfig = toolBar | |
| 259 | + return | |
| 260 | + } | |
| 261 | + } else if (!topActionSlots) { | |
| 262 | + options.toolbarConfig = { | |
| 263 | + slots: { buttons: 'toolbar_buttons' } | |
| 264 | + } | |
| 265 | + } | |
| 266 | +} | |
| 267 | + | |
| 268 | +// 刷新列表 | |
| 269 | +const reload = () => { | |
| 270 | + const g = unref(xGrid) | |
| 271 | + if (!g) { | |
| 272 | + return | |
| 273 | + } | |
| 274 | + g.commitProxy('query') | |
| 275 | +} | |
| 276 | + | |
| 277 | +// 删除 | |
| 278 | +const deleteData = async (ids: string | number) => { | |
| 279 | + const g = unref(xGrid) | |
| 280 | + if (!g) { | |
| 281 | + return | |
| 282 | + } | |
| 283 | + const options = innerProps.value || props.options | |
| 284 | + if (!options.deleteApi) { | |
| 285 | + console.error('未传入delListApi') | |
| 286 | + return | |
| 287 | + } | |
| 288 | + return new Promise(async () => { | |
| 289 | + message.delConfirm().then(async () => { | |
| 290 | + await (options?.deleteApi && options?.deleteApi(ids)) | |
| 291 | + message.success(t('common.delSuccess')) | |
| 292 | + // 刷新列表 | |
| 293 | + reload() | |
| 294 | + }) | |
| 295 | + }) | |
| 296 | +} | |
| 297 | + | |
| 298 | +// 导出 | |
| 299 | +const exportList = async (fileName?: string) => { | |
| 300 | + const g = unref(xGrid) | |
| 301 | + if (!g) { | |
| 302 | + return | |
| 303 | + } | |
| 304 | + const options = innerProps.value || props.options | |
| 305 | + if (!options?.exportListApi) { | |
| 306 | + console.error('未传入exportListApi') | |
| 307 | + return | |
| 308 | + } | |
| 309 | + const queryParams = Object.assign({}, JSON.parse(JSON.stringify(g.getProxyInfo()?.form))) | |
| 310 | + message.exportConfirm().then(async () => { | |
| 311 | + const res = await (options?.exportListApi && options?.exportListApi(queryParams)) | |
| 312 | + download.excel(res as unknown as Blob, fileName ? fileName : 'excel.xls') | |
| 313 | + }) | |
| 314 | +} | |
| 315 | + | |
| 316 | +// 获取查询参数 | |
| 317 | +const getSearchData = () => { | |
| 318 | + const g = unref(xGrid) | |
| 319 | + if (!g) { | |
| 320 | + return | |
| 321 | + } | |
| 322 | + const queryParams = Object.assign({}, JSON.parse(JSON.stringify(g.getProxyInfo()?.form))) | |
| 323 | + return queryParams | |
| 324 | +} | |
| 325 | + | |
| 326 | +const setProps = (prop: Partial<XTableProps>) => { | |
| 327 | + innerProps.value = { ...unref(innerProps), ...prop } | |
| 328 | +} | |
| 329 | + | |
| 330 | +defineExpose({ reload, Ref: xGrid, getSearchData, deleteData, exportList }) | |
| 331 | +emit('register', { reload, getSearchData, setProps, deleteData, exportList }) | |
| 332 | +</script> | |
| 333 | +<style lang="scss"> | |
| 334 | +@import './style/index.scss'; | |
| 335 | +</style> | ... | ... |
yudao-ui-admin-vue3/src/components/XTable/src/style/dark.scss
0 → 100644
| 1 | +// 修改样式变量 | |
| 2 | +//@import 'vxe-table/styles/variable.scss'; | |
| 3 | + | |
| 4 | +/*font*/ | |
| 5 | +$vxe-font-color: #e5e7eb; | |
| 6 | +// $vxe-font-size: 14px !default; | |
| 7 | +// $vxe-font-size-medium: 16px !default; | |
| 8 | +// $vxe-font-size-small: 14px !default; | |
| 9 | +// $vxe-font-size-mini: 12px !default; | |
| 10 | + | |
| 11 | +/*color*/ | |
| 12 | +$vxe-primary-color: #409eff !default; | |
| 13 | +$vxe-success-color: #67c23a !default; | |
| 14 | +$vxe-info-color: #909399 !default; | |
| 15 | +$vxe-warning-color: #e6a23c !default; | |
| 16 | +$vxe-danger-color: #f56c6c !default; | |
| 17 | +$vxe-disabled-color: #bfbfbf !default; | |
| 18 | +$vxe-primary-disabled-color: #c0c4cc !default; | |
| 19 | + | |
| 20 | +/*loading*/ | |
| 21 | +$vxe-loading-color: $vxe-primary-color !default; | |
| 22 | +$vxe-loading-background-color: #1d1e1f !default; | |
| 23 | +$vxe-loading-z-index: 999 !default; | |
| 24 | + | |
| 25 | +/*icon*/ | |
| 26 | +$vxe-icon-font-family: Verdana, Arial, Tahoma !default; | |
| 27 | +$vxe-icon-background-color: #e5e7eb !default; | |
| 28 | + | |
| 29 | +/*toolbar*/ | |
| 30 | +$vxe-toolbar-background-color: #1d1e1f !default; | |
| 31 | +$vxe-toolbar-button-border: #dcdfe6 !default; | |
| 32 | +$vxe-toolbar-custom-active-background-color: #d9dadb !default; | |
| 33 | +$vxe-toolbar-panel-background-color: #e5e7eb !default; | |
| 34 | + | |
| 35 | +$vxe-table-font-color: #e5e7eb; | |
| 36 | +$vxe-table-header-background-color: #1d1e1f; | |
| 37 | +$vxe-table-body-background-color: #141414; | |
| 38 | +$vxe-table-row-striped-background-color: #1d1d1d; | |
| 39 | +$vxe-table-row-hover-background-color: #1d1e1f; | |
| 40 | +$vxe-table-row-hover-striped-background-color: #1e1e1e; | |
| 41 | +$vxe-table-footer-background-color: #1d1e1f; | |
| 42 | +$vxe-table-row-current-background-color: #302d2d; | |
| 43 | +$vxe-table-column-current-background-color: #302d2d; | |
| 44 | +$vxe-table-column-hover-background-color: #302d2d; | |
| 45 | +$vxe-table-row-hover-current-background-color: #302d2d; | |
| 46 | +$vxe-table-row-checkbox-checked-background-color: #3e3c37 !default; | |
| 47 | +$vxe-table-row-hover-checkbox-checked-background-color: #615a4a !default; | |
| 48 | +$vxe-table-menu-background-color: #1d1e1f; | |
| 49 | +$vxe-table-border-width: 1px !default; | |
| 50 | +$vxe-table-border-color: #4c4d4f !default; | |
| 51 | +$vxe-table-fixed-left-scrolling-box-shadow: 8px 0px 10px -5px rgba(0, 0, 0, 0.12) !default; | |
| 52 | +$vxe-table-fixed-right-scrolling-box-shadow: -8px 0px 10px -5px rgba(0, 0, 0, 0.12) !default; | |
| 53 | + | |
| 54 | +$vxe-form-background-color: #141414; | |
| 55 | + | |
| 56 | +/*pager*/ | |
| 57 | +$vxe-pager-background-color: #1d1e1f !default; | |
| 58 | +$vxe-pager-perfect-background-color: #262727 !default; | |
| 59 | +$vxe-pager-perfect-button-background-color: #a7a3a3 !default; | |
| 60 | + | |
| 61 | +$vxe-input-background-color: #141414; | |
| 62 | +$vxe-input-border-color: #4c4d4f !default; | |
| 63 | + | |
| 64 | +$vxe-select-option-hover-background-color: #262626 !default; | |
| 65 | +$vxe-select-panel-background-color: #141414 !default; | |
| 66 | +$vxe-select-empty-color: #262626 !default; | |
| 67 | +$vxe-optgroup-title-color: #909399 !default; | |
| 68 | + | |
| 69 | +/*button*/ | |
| 70 | +$vxe-button-default-background-color: #262626; | |
| 71 | +$vxe-button-dropdown-panel-background-color: #141414; | |
| 72 | + | |
| 73 | +/*modal*/ | |
| 74 | +$vxe-modal-header-background-color: #141414; | |
| 75 | +$vxe-modal-body-background-color: #141414; | |
| 76 | +$vxe-modal-border-color: #3b3b3b; | |
| 77 | + | |
| 78 | +/*pulldown*/ | |
| 79 | +$vxe-pulldown-panel-background-color: #262626 !default; | |
| 80 | + | |
| 81 | +@import 'vxe-table/styles/index'; | ... | ... |
yudao-ui-admin-vue3/src/components/XTable/src/style/index.scss
0 → 100644
yudao-ui-admin-vue3/src/components/XTable/src/style/light.scss
0 → 100644
| 1 | +// 修改样式变量 | |
| 2 | +// /*font*/ | |
| 3 | +// $vxe-font-size: 12px !default; | |
| 4 | +// $vxe-font-size-medium: 16px !default; | |
| 5 | +// $vxe-font-size-small: 14px !default; | |
| 6 | +// $vxe-font-size-mini: 12px !default; | |
| 7 | +/*color*/ | |
| 8 | +$vxe-primary-color: #409eff !default; | |
| 9 | +$vxe-success-color: #67c23a !default; | |
| 10 | +$vxe-info-color: #909399 !default; | |
| 11 | +$vxe-warning-color: #e6a23c !default; | |
| 12 | +$vxe-danger-color: #f56c6c !default; | |
| 13 | +$vxe-disabled-color: #bfbfbf !default; | |
| 14 | +$vxe-primary-disabled-color: #c0c4cc !default; | |
| 15 | + | |
| 16 | +@import 'vxe-table/styles/index.scss'; | ... | ... |
yudao-ui-admin-vue3/src/components/XTable/src/type.ts
0 → 100644
| 1 | +import { CrudSchema } from '@/hooks/web/useCrudSchemas' | |
| 2 | +import type { VxeGridProps, VxeGridPropTypes, VxeTablePropTypes } from 'vxe-table' | |
| 3 | + | |
| 4 | +export type XTableProps<D = any> = VxeGridProps<D> & { | |
| 5 | + allSchemas?: CrudSchema | |
| 6 | + height?: number // 高度 默认730 | |
| 7 | + topActionSlots?: boolean // 是否开启表格内顶部操作栏插槽 | |
| 8 | + treeConfig?: VxeTablePropTypes.TreeConfig // 树形表单配置 | |
| 9 | + isList?: boolean // 是否不带分页的list | |
| 10 | + getListApi?: Function | |
| 11 | + getAllListApi?: Function | |
| 12 | + deleteApi?: Function | |
| 13 | + exportListApi?: Function | |
| 14 | + exportName?: string // 导出文件夹名称 | |
| 15 | + params?: any | |
| 16 | + pagination?: boolean | VxeGridPropTypes.PagerConfig | |
| 17 | + toolBar?: boolean | VxeGridPropTypes.ToolbarConfig | |
| 18 | + afterFetch?: Function | |
| 19 | +} | |
| 20 | +export type XColumns = VxeGridPropTypes.Columns | |
| 21 | + | |
| 22 | +export type VxeTableColumn = { | |
| 23 | + field: string | |
| 24 | + title?: string | |
| 25 | + children?: VxeTableColumn[] | |
| 26 | +} & Recordable | ... | ... |
yudao-ui-admin-vue3/src/components/index.ts
| ... | ... | @@ -4,6 +4,7 @@ import { Form } from '@/components/Form' |
| 4 | 4 | import { Table } from '@/components/Table' |
| 5 | 5 | import { Search } from '@/components/Search' |
| 6 | 6 | import { XModal } from '@/components/XModal' |
| 7 | +import { XTable } from '@/components/XTable' | |
| 7 | 8 | import { XButton, XTextButton } from '@/components/XButton' |
| 8 | 9 | import { DictTag } from '@/components/DictTag' |
| 9 | 10 | import { ContentWrap } from '@/components/ContentWrap' |
| ... | ... | @@ -15,6 +16,7 @@ export const setupGlobCom = (app: App<Element>): void => { |
| 15 | 16 | app.component('Table', Table) |
| 16 | 17 | app.component('Search', Search) |
| 17 | 18 | app.component('XModal', XModal) |
| 19 | + app.component('XTable', XTable) | |
| 18 | 20 | app.component('XButton', XButton) |
| 19 | 21 | app.component('XTextButton', XTextButton) |
| 20 | 22 | app.component('DictTag', DictTag) | ... | ... |
yudao-ui-admin-vue3/src/hooks/web/useXTable.ts
0 → 100644
| 1 | +import { ref, unref } from 'vue' | |
| 2 | +import { XTableProps } from '@/components/XTable/src/type' | |
| 3 | + | |
| 4 | +export interface tableMethod { | |
| 5 | + reload: () => void | |
| 6 | + setProps: (props: XTableProps) => void | |
| 7 | + deleteData: (ids: string | number) => void | |
| 8 | + exportList: (fileName?: string) => void | |
| 9 | +} | |
| 10 | + | |
| 11 | +export const useXTable = (props: XTableProps): [Function, tableMethod] => { | |
| 12 | + const tableRef = ref<Nullable<tableMethod>>(null) | |
| 13 | + | |
| 14 | + const register = (instance) => { | |
| 15 | + tableRef.value = instance | |
| 16 | + props && instance.setProps(props) | |
| 17 | + } | |
| 18 | + const getInstance = (): tableMethod => { | |
| 19 | + const table = unref(tableRef) | |
| 20 | + if (!table) { | |
| 21 | + console.error('表格实例不存在') | |
| 22 | + } | |
| 23 | + return table as tableMethod | |
| 24 | + } | |
| 25 | + const methods: tableMethod = { | |
| 26 | + reload: () => getInstance().reload(), | |
| 27 | + setProps: (props) => getInstance().setProps(props), | |
| 28 | + deleteData: (ids: string | number) => getInstance().deleteData(ids), | |
| 29 | + exportList: (fileName?: string) => getInstance().exportList(fileName) | |
| 30 | + } | |
| 31 | + return [register, methods] | |
| 32 | +} | ... | ... |
yudao-ui-admin-vue3/src/plugins/vxeTable/index.ts
| 1 | -import { App, unref, watch } from 'vue' | |
| 1 | +import { App, unref } from 'vue' | |
| 2 | 2 | import XEUtils from 'xe-utils' |
| 3 | -import './index.scss' | |
| 4 | 3 | import './renderer' |
| 5 | 4 | import { i18n } from '@/plugins/vueI18n' |
| 6 | -import { useAppStore } from '@/store/modules/app' | |
| 7 | 5 | import zhCN from 'vxe-table/lib/locale/lang/zh-CN' |
| 8 | 6 | import enUS from 'vxe-table/lib/locale/lang/en-US' |
| 9 | 7 | import { |
| ... | ... | @@ -46,21 +44,6 @@ import { |
| 46 | 44 | Table |
| 47 | 45 | } from 'vxe-table' |
| 48 | 46 | |
| 49 | -const appStore = useAppStore() | |
| 50 | -watch( | |
| 51 | - () => appStore.getIsDark, | |
| 52 | - () => { | |
| 53 | - if (appStore.getIsDark) { | |
| 54 | - import('./theme/dark.scss') | |
| 55 | - } else { | |
| 56 | - import('./theme/light.scss') | |
| 57 | - } | |
| 58 | - }, | |
| 59 | - { | |
| 60 | - deep: true, | |
| 61 | - immediate: true | |
| 62 | - } | |
| 63 | -) | |
| 64 | 47 | // 全局默认参数 |
| 65 | 48 | VXETable.setup({ |
| 66 | 49 | size: 'medium', // 全局尺寸 | ... | ... |
yudao-ui-admin-vue3/src/views/infra/apiAccessLog/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #duration_default="{ row }"> |
| 6 | 6 | <span>{{ row.duration + 'ms' }}</span> |
| 7 | 7 | </template> |
| ... | ... | @@ -17,7 +17,7 @@ |
| 17 | 17 | @click="handleDetail(row)" |
| 18 | 18 | /> |
| 19 | 19 | </template> |
| 20 | - </vxe-grid> | |
| 20 | + </XTable> | |
| 21 | 21 | </ContentWrap> |
| 22 | 22 | <XModal v-model="dialogVisible" :title="dialogTitle"> |
| 23 | 23 | <!-- 对话框(详情) --> |
| ... | ... | @@ -38,15 +38,14 @@ |
| 38 | 38 | <script setup lang="ts" name="ApiAccessLog"> |
| 39 | 39 | import { ref } from 'vue' |
| 40 | 40 | import { useI18n } from '@/hooks/web/useI18n' |
| 41 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 42 | -import { VxeGridInstance } from 'vxe-table' | |
| 41 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 43 | 42 | import { allSchemas } from './apiAccessLog.data' |
| 44 | 43 | import * as ApiAccessLogApi from '@/api/infra/apiAccessLog' |
| 44 | + | |
| 45 | 45 | const { t } = useI18n() // 国际化 |
| 46 | 46 | |
| 47 | 47 | // 列表相关的变量 |
| 48 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 49 | -const { gridOptions } = useVxeGrid<ApiAccessLogApi.ApiAccessLogVO>({ | |
| 48 | +const [registerTable] = useXTable({ | |
| 50 | 49 | allSchemas: allSchemas, |
| 51 | 50 | topActionSlots: false, |
| 52 | 51 | getListApi: ApiAccessLogApi.getApiAccessLogPageApi | ... | ... |
yudao-ui-admin-vue3/src/views/infra/apiErrorLog/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <!-- 操作:导出 --> |
| 6 | 6 | <template #toolbar_buttons> |
| 7 | 7 | <XButton |
| ... | ... | @@ -40,7 +40,7 @@ |
| 40 | 40 | @click="handleProcessClick(row, InfraApiErrorLogProcessStatusEnum.IGNORE, '已忽略')" |
| 41 | 41 | /> |
| 42 | 42 | </template> |
| 43 | - </vxe-grid> | |
| 43 | + </XTable> | |
| 44 | 44 | </ContentWrap> |
| 45 | 45 | <XModal v-model="dialogVisible" :title="dialogTitle"> |
| 46 | 46 | <!-- 对话框(详情) --> |
| ... | ... | @@ -54,18 +54,17 @@ |
| 54 | 54 | <script setup lang="ts" name="ApiErrorLog"> |
| 55 | 55 | import { ref } from 'vue' |
| 56 | 56 | import { useI18n } from '@/hooks/web/useI18n' |
| 57 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 58 | -import { VxeGridInstance } from 'vxe-table' | |
| 57 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 59 | 58 | import { allSchemas } from './apiErrorLog.data' |
| 60 | 59 | import * as ApiErrorLogApi from '@/api/infra/apiErrorLog' |
| 61 | 60 | import { InfraApiErrorLogProcessStatusEnum } from '@/utils/constants' |
| 62 | 61 | import { useMessage } from '@/hooks/web/useMessage' |
| 63 | -const message = useMessage() | |
| 62 | + | |
| 64 | 63 | const { t } = useI18n() // 国际化 |
| 64 | +const message = useMessage() | |
| 65 | 65 | |
| 66 | 66 | // ========== 列表相关 ========== |
| 67 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 68 | -const { gridOptions, getList, exportList } = useVxeGrid<ApiErrorLogApi.ApiErrorLogVO>({ | |
| 67 | +const [registerTable, { reload, exportList }] = useXTable({ | |
| 69 | 68 | allSchemas: allSchemas, |
| 70 | 69 | getListApi: ApiErrorLogApi.getApiErrorLogPageApi, |
| 71 | 70 | exportListApi: ApiErrorLogApi.exportApiErrorLogApi |
| ... | ... | @@ -84,7 +83,7 @@ const handleDetail = (row: ApiErrorLogApi.ApiErrorLogVO) => { |
| 84 | 83 | } |
| 85 | 84 | // 导出 |
| 86 | 85 | const handleExport = async () => { |
| 87 | - await exportList(xGrid, '错误数据.xls') | |
| 86 | + await exportList('错误数据.xls') | |
| 88 | 87 | } |
| 89 | 88 | // 异常处理操作 |
| 90 | 89 | const handleProcessClick = ( |
| ... | ... | @@ -100,7 +99,7 @@ const handleProcessClick = ( |
| 100 | 99 | }) |
| 101 | 100 | .finally(async () => { |
| 102 | 101 | // 刷新列表 |
| 103 | - await getList(xGrid) | |
| 102 | + await reload() | |
| 104 | 103 | }) |
| 105 | 104 | .catch(() => {}) |
| 106 | 105 | } | ... | ... |
yudao-ui-admin-vue3/src/views/infra/codegen/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <!-- 操作:导入 --> |
| 7 | 7 | <XButton |
| ... | ... | @@ -49,7 +49,7 @@ |
| 49 | 49 | @click="handleGenTable(row)" |
| 50 | 50 | /> |
| 51 | 51 | </template> |
| 52 | - </vxe-grid> | |
| 52 | + </XTable> | |
| 53 | 53 | </ContentWrap> |
| 54 | 54 | <!-- 弹窗:导入表 --> |
| 55 | 55 | <ImportTable ref="importRef" @ok="handleQuery()" /> |
| ... | ... | @@ -59,10 +59,9 @@ |
| 59 | 59 | <script setup lang="ts" name="Codegen"> |
| 60 | 60 | import { ref } from 'vue' |
| 61 | 61 | import { useRouter } from 'vue-router' |
| 62 | -import { VxeGridInstance } from 'vxe-table' | |
| 63 | 62 | import { useI18n } from '@/hooks/web/useI18n' |
| 64 | 63 | import { useMessage } from '@/hooks/web/useMessage' |
| 65 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 64 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 66 | 65 | import download from '@/utils/download' |
| 67 | 66 | import * as CodegenApi from '@/api/infra/codegen' |
| 68 | 67 | import { CodegenTableVO } from '@/api/infra/codegen/types' |
| ... | ... | @@ -73,8 +72,7 @@ const { t } = useI18n() // 国际化 |
| 73 | 72 | const message = useMessage() // 消息弹窗 |
| 74 | 73 | const { push } = useRouter() // 路由跳转 |
| 75 | 74 | // 列表相关的变量 |
| 76 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 77 | -const { gridOptions, getList, deleteData } = useVxeGrid<CodegenTableVO>({ | |
| 75 | +const [registerTable, { reload, deleteData }] = useXTable({ | |
| 78 | 76 | allSchemas: allSchemas, |
| 79 | 77 | getListApi: CodegenApi.getCodegenTablePageApi, |
| 80 | 78 | deleteApi: CodegenApi.deleteCodegenTableApi |
| ... | ... | @@ -112,10 +110,10 @@ const handleGenTable = async (row: CodegenTableVO) => { |
| 112 | 110 | } |
| 113 | 111 | // 删除操作 |
| 114 | 112 | const handleDelete = async (rowId: number) => { |
| 115 | - await deleteData(xGrid, rowId) | |
| 113 | + await deleteData(rowId) | |
| 116 | 114 | } |
| 117 | 115 | // 查询操作 |
| 118 | 116 | const handleQuery = async () => { |
| 119 | - await getList(xGrid) | |
| 117 | + await reload() | |
| 120 | 118 | } |
| 121 | 119 | </script> | ... | ... |
yudao-ui-admin-vue3/src/views/infra/config/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <!-- 操作:新增 --> |
| 7 | 7 | <XButton |
| ... | ... | @@ -46,7 +46,7 @@ |
| 46 | 46 | @click="handleDelete(row.id)" |
| 47 | 47 | /> |
| 48 | 48 | </template> |
| 49 | - </vxe-grid> | |
| 49 | + </XTable> | |
| 50 | 50 | </ContentWrap> |
| 51 | 51 | |
| 52 | 52 | <XModal v-model="dialogVisible" :title="dialogTitle"> |
| ... | ... | @@ -87,8 +87,7 @@ |
| 87 | 87 | import { ref, unref } from 'vue' |
| 88 | 88 | import { useI18n } from '@/hooks/web/useI18n' |
| 89 | 89 | import { useMessage } from '@/hooks/web/useMessage' |
| 90 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 91 | -import { VxeGridInstance } from 'vxe-table' | |
| 90 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 92 | 91 | import { FormExpose } from '@/components/Form' |
| 93 | 92 | // 业务相关的 import |
| 94 | 93 | import * as ConfigApi from '@/api/infra/config' |
| ... | ... | @@ -97,8 +96,7 @@ import { rules, allSchemas } from './config.data' |
| 97 | 96 | const { t } = useI18n() // 国际化 |
| 98 | 97 | const message = useMessage() // 消息弹窗 |
| 99 | 98 | // 列表相关的变量 |
| 100 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 101 | -const { gridOptions, getList, deleteData, exportList } = useVxeGrid<ConfigApi.ConfigVO>({ | |
| 99 | +const [registerTable, { reload, deleteData, exportList }] = useXTable({ | |
| 102 | 100 | allSchemas: allSchemas, |
| 103 | 101 | getListApi: ConfigApi.getConfigPageApi, |
| 104 | 102 | deleteApi: ConfigApi.deleteConfigApi, |
| ... | ... | @@ -127,7 +125,7 @@ const handleCreate = () => { |
| 127 | 125 | |
| 128 | 126 | // 导出操作 |
| 129 | 127 | const handleExport = async () => { |
| 130 | - await exportList(xGrid, '配置.xls') | |
| 128 | + await exportList('配置.xls') | |
| 131 | 129 | } |
| 132 | 130 | |
| 133 | 131 | // 修改操作 |
| ... | ... | @@ -147,7 +145,7 @@ const handleDetail = async (rowId: number) => { |
| 147 | 145 | |
| 148 | 146 | // 删除操作 |
| 149 | 147 | const handleDelete = async (rowId: number) => { |
| 150 | - await deleteData(xGrid, rowId) | |
| 148 | + await deleteData(rowId) | |
| 151 | 149 | } |
| 152 | 150 | |
| 153 | 151 | // 提交按钮 |
| ... | ... | @@ -171,7 +169,7 @@ const submitForm = async () => { |
| 171 | 169 | } finally { |
| 172 | 170 | actionLoading.value = false |
| 173 | 171 | // 刷新列表 |
| 174 | - await getList(xGrid) | |
| 172 | + await reload() | |
| 175 | 173 | } |
| 176 | 174 | } |
| 177 | 175 | }) | ... | ... |
yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <XButton |
| 7 | 7 | type="primary" |
| ... | ... | @@ -34,7 +34,7 @@ |
| 34 | 34 | @click="handleDelete(row.id)" |
| 35 | 35 | /> |
| 36 | 36 | </template> |
| 37 | - </vxe-grid> | |
| 37 | + </XTable> | |
| 38 | 38 | </ContentWrap> |
| 39 | 39 | <XModal v-model="dialogVisible" :title="dialogTitle"> |
| 40 | 40 | <!-- 对话框(添加 / 修改) --> |
| ... | ... | @@ -69,9 +69,8 @@ |
| 69 | 69 | // 全局相关的 import |
| 70 | 70 | import { ref, unref } from 'vue' |
| 71 | 71 | import { useI18n } from '@/hooks/web/useI18n' |
| 72 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 72 | 73 | import { useMessage } from '@/hooks/web/useMessage' |
| 73 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 74 | -import { VxeGridInstance } from 'vxe-table' | |
| 75 | 74 | import { FormExpose } from '@/components/Form' |
| 76 | 75 | // 业务相关的 import |
| 77 | 76 | import * as DataSourceConfiggApi from '@/api/infra/dataSourceConfig' |
| ... | ... | @@ -80,8 +79,7 @@ import { rules, allSchemas } from './dataSourceConfig.data' |
| 80 | 79 | const { t } = useI18n() // 国际化 |
| 81 | 80 | const message = useMessage() // 消息弹窗 |
| 82 | 81 | // 列表相关的变量 |
| 83 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 84 | -const { gridOptions, getList, deleteData } = useVxeGrid<DataSourceConfiggApi.DataSourceConfigVO>({ | |
| 82 | +const [registerTable, { reload, deleteData }] = useXTable({ | |
| 85 | 83 | allSchemas: allSchemas, |
| 86 | 84 | isList: true, |
| 87 | 85 | getListApi: DataSourceConfiggApi.getDataSourceConfigListApi, |
| ... | ... | @@ -125,7 +123,7 @@ const handleDetail = async (rowId: number) => { |
| 125 | 123 | |
| 126 | 124 | // 删除操作 |
| 127 | 125 | const handleDelete = async (rowId: number) => { |
| 128 | - await deleteData(xGrid, rowId) | |
| 126 | + await deleteData(rowId) | |
| 129 | 127 | } |
| 130 | 128 | |
| 131 | 129 | // 提交按钮 |
| ... | ... | @@ -149,7 +147,7 @@ const submitForm = async () => { |
| 149 | 147 | } finally { |
| 150 | 148 | loading.value = false |
| 151 | 149 | // 刷新列表 |
| 152 | - await getList(xGrid) | |
| 150 | + await reload() | |
| 153 | 151 | } |
| 154 | 152 | } |
| 155 | 153 | }) | ... | ... |
yudao-ui-admin-vue3/src/views/infra/fileConfig/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <!-- 操作:新增 --> |
| 7 | 7 | <XButton |
| ... | ... | @@ -44,7 +44,7 @@ |
| 44 | 44 | @click="handleDelete(row.id)" |
| 45 | 45 | /> |
| 46 | 46 | </template> |
| 47 | - </vxe-grid> | |
| 47 | + </XTable> | |
| 48 | 48 | </ContentWrap> |
| 49 | 49 | <XModal v-model="dialogVisible" :title="dialogTitle"> |
| 50 | 50 | <!-- 对话框(添加 / 修改) --> |
| ... | ... | @@ -173,8 +173,7 @@ import { |
| 173 | 173 | } from 'element-plus' |
| 174 | 174 | import { useI18n } from '@/hooks/web/useI18n' |
| 175 | 175 | import { useMessage } from '@/hooks/web/useMessage' |
| 176 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 177 | -import { VxeGridInstance } from 'vxe-table' | |
| 176 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 178 | 177 | // 业务相关的 import |
| 179 | 178 | import * as FileConfigApi from '@/api/infra/fileConfig' |
| 180 | 179 | import { rules, allSchemas } from './fileConfig.data' |
| ... | ... | @@ -183,8 +182,7 @@ import { getIntDictOptions, DICT_TYPE } from '@/utils/dict' |
| 183 | 182 | const { t } = useI18n() // 国际化 |
| 184 | 183 | const message = useMessage() // 消息弹窗 |
| 185 | 184 | // 列表相关的变量 |
| 186 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 187 | -const { gridOptions, getList, deleteData } = useVxeGrid<FileConfigApi.FileConfigVO>({ | |
| 185 | +const [registerTable, { reload, deleteData }] = useXTable({ | |
| 188 | 186 | allSchemas: allSchemas, |
| 189 | 187 | getListApi: FileConfigApi.getFileConfigPageApi, |
| 190 | 188 | deleteApi: FileConfigApi.deleteFileConfigApi |
| ... | ... | @@ -276,7 +274,7 @@ const handleMaster = (row: FileConfigApi.FileConfigVO) => { |
| 276 | 274 | .confirm('是否确认修改配置【 ' + row.name + ' 】为主配置?', t('common.reminder')) |
| 277 | 275 | .then(async () => { |
| 278 | 276 | await FileConfigApi.updateFileConfigMasterApi(row.id) |
| 279 | - await getList(xGrid) | |
| 277 | + await reload() | |
| 280 | 278 | }) |
| 281 | 279 | } |
| 282 | 280 | |
| ... | ... | @@ -287,7 +285,7 @@ const handleTest = async (rowId: number) => { |
| 287 | 285 | |
| 288 | 286 | // 删除操作 |
| 289 | 287 | const handleDelete = async (rowId: number) => { |
| 290 | - await deleteData(xGrid, rowId) | |
| 288 | + await deleteData(rowId) | |
| 291 | 289 | } |
| 292 | 290 | |
| 293 | 291 | // 提交按钮 |
| ... | ... | @@ -308,7 +306,7 @@ const submitForm = async (formEl: FormInstance | undefined) => { |
| 308 | 306 | dialogVisible.value = false |
| 309 | 307 | } finally { |
| 310 | 308 | actionLoading.value = false |
| 311 | - await getList(xGrid) | |
| 309 | + await reload() | |
| 312 | 310 | } |
| 313 | 311 | } |
| 314 | 312 | }) | ... | ... |
yudao-ui-admin-vue3/src/views/infra/fileList/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <XButton |
| 7 | 7 | type="primary" |
| ... | ... | @@ -24,7 +24,7 @@ |
| 24 | 24 | @click="handleDelete(row.id)" |
| 25 | 25 | /> |
| 26 | 26 | </template> |
| 27 | - </vxe-grid> | |
| 27 | + </XTable> | |
| 28 | 28 | </ContentWrap> |
| 29 | 29 | <XModal v-model="dialogVisible" :title="dialogTitle"> |
| 30 | 30 | <!-- 对话框(详情) --> |
| ... | ... | @@ -85,8 +85,7 @@ |
| 85 | 85 | import { ref, unref } from 'vue' |
| 86 | 86 | import { useI18n } from '@/hooks/web/useI18n' |
| 87 | 87 | import { useMessage } from '@/hooks/web/useMessage' |
| 88 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 89 | -import { VxeGridInstance } from 'vxe-table' | |
| 88 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 90 | 89 | import { ElUpload, ElImage, UploadInstance, UploadRawFile } from 'element-plus' |
| 91 | 90 | // 业务相关的 import |
| 92 | 91 | import { allSchemas } from './fileList.data' |
| ... | ... | @@ -98,8 +97,7 @@ const { t } = useI18n() // 国际化 |
| 98 | 97 | const message = useMessage() // 消息弹窗 |
| 99 | 98 | |
| 100 | 99 | // 列表相关的变量 |
| 101 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 102 | -const { gridOptions, getList, deleteData } = useVxeGrid<FileApi.FileVO>({ | |
| 100 | +const [registerTable, { reload, deleteData }] = useXTable({ | |
| 103 | 101 | allSchemas: allSchemas, |
| 104 | 102 | getListApi: FileApi.getFilePageApi, |
| 105 | 103 | deleteApi: FileApi.deleteFileApi |
| ... | ... | @@ -145,7 +143,7 @@ const handleFileSuccess = async (response: any): Promise<void> => { |
| 145 | 143 | message.success('上传成功') |
| 146 | 144 | uploadDialogVisible.value = false |
| 147 | 145 | uploadDisabled.value = false |
| 148 | - await getList(xGrid) | |
| 146 | + await reload() | |
| 149 | 147 | } |
| 150 | 148 | // 文件数超出提示 |
| 151 | 149 | const handleExceed = (): void => { |
| ... | ... | @@ -166,7 +164,7 @@ const handleDetail = (row: FileApi.FileVO) => { |
| 166 | 164 | |
| 167 | 165 | // 删除操作 |
| 168 | 166 | const handleDelete = async (rowId: number) => { |
| 169 | - await deleteData(xGrid, rowId) | |
| 167 | + await deleteData(rowId) | |
| 170 | 168 | } |
| 171 | 169 | |
| 172 | 170 | // ========== 复制相关 ========== | ... | ... |
yudao-ui-admin-vue3/src/views/infra/job/JobLog.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <XButton |
| 7 | 7 | type="warning" |
| ... | ... | @@ -29,7 +29,7 @@ |
| 29 | 29 | @click="handleDetail(row)" |
| 30 | 30 | /> |
| 31 | 31 | </template> |
| 32 | - </vxe-grid> | |
| 32 | + </XTable> | |
| 33 | 33 | </ContentWrap> |
| 34 | 34 | <XModal v-model="dialogVisible" :title="dialogTitle"> |
| 35 | 35 | <!-- 对话框(详情) --> |
| ... | ... | @@ -51,15 +51,13 @@ |
| 51 | 51 | import { ref } from 'vue' |
| 52 | 52 | import dayjs from 'dayjs' |
| 53 | 53 | import { useI18n } from '@/hooks/web/useI18n' |
| 54 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 55 | -import { VxeGridInstance } from 'vxe-table' | |
| 54 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 56 | 55 | import * as JobLogApi from '@/api/infra/jobLog' |
| 57 | 56 | import { allSchemas } from './jobLog.data' |
| 58 | 57 | |
| 59 | 58 | const { t } = useI18n() // 国际化 |
| 60 | 59 | // 列表相关的变量 |
| 61 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 62 | -const { gridOptions, exportList } = useVxeGrid<JobLogApi.JobLogVO>({ | |
| 60 | +const [registerTable, { exportList }] = useXTable({ | |
| 63 | 61 | allSchemas: allSchemas, |
| 64 | 62 | getListApi: JobLogApi.getJobLogPageApi, |
| 65 | 63 | exportListApi: JobLogApi.exportJobLogApi |
| ... | ... | @@ -81,6 +79,6 @@ const handleDetail = async (row: JobLogApi.JobLogVO) => { |
| 81 | 79 | } |
| 82 | 80 | // 导出操作 |
| 83 | 81 | const handleExport = async () => { |
| 84 | - await exportList(xGrid, '定时任务详情.xls') | |
| 82 | + await exportList('定时任务详情.xls') | |
| 85 | 83 | } |
| 86 | 84 | </script> | ... | ... |
yudao-ui-admin-vue3/src/views/infra/job/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <!-- 操作:新增 --> |
| 7 | 7 | <XButton |
| ... | ... | @@ -83,7 +83,7 @@ |
| 83 | 83 | </template> |
| 84 | 84 | </el-dropdown> |
| 85 | 85 | </template> |
| 86 | - </vxe-grid> | |
| 86 | + </XTable> | |
| 87 | 87 | </ContentWrap> |
| 88 | 88 | <XModal v-model="dialogVisible" :title="dialogTitle"> |
| 89 | 89 | <!-- 对话框(添加 / 修改) --> |
| ... | ... | @@ -134,8 +134,7 @@ import { useRouter } from 'vue-router' |
| 134 | 134 | import { ElDropdown, ElDropdownMenu, ElDropdownItem } from 'element-plus' |
| 135 | 135 | import { useI18n } from '@/hooks/web/useI18n' |
| 136 | 136 | import { useMessage } from '@/hooks/web/useMessage' |
| 137 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 138 | -import { VxeGridInstance } from 'vxe-table' | |
| 137 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 139 | 138 | import { FormExpose } from '@/components/Form' |
| 140 | 139 | import { Crontab } from '@/components/Crontab' |
| 141 | 140 | import * as JobApi from '@/api/infra/job' |
| ... | ... | @@ -147,8 +146,7 @@ const message = useMessage() // 消息弹窗 |
| 147 | 146 | const { push } = useRouter() |
| 148 | 147 | |
| 149 | 148 | // 列表相关的变量 |
| 150 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 151 | -const { gridOptions, getList, deleteData, exportList } = useVxeGrid<JobApi.JobVO>({ | |
| 149 | +const [registerTable, { reload, deleteData, exportList }] = useXTable({ | |
| 152 | 150 | allSchemas: allSchemas, |
| 153 | 151 | getListApi: JobApi.getJobPageApi, |
| 154 | 152 | deleteApi: JobApi.deleteJobApi, |
| ... | ... | @@ -183,7 +181,7 @@ const handleCreate = () => { |
| 183 | 181 | |
| 184 | 182 | // 导出操作 |
| 185 | 183 | const handleExport = async () => { |
| 186 | - await exportList(xGrid, '定时任务.xls') | |
| 184 | + await exportList('定时任务.xls') | |
| 187 | 185 | } |
| 188 | 186 | |
| 189 | 187 | // 修改操作 |
| ... | ... | @@ -252,7 +250,7 @@ const parseTime = (time) => { |
| 252 | 250 | |
| 253 | 251 | // 删除操作 |
| 254 | 252 | const handleDelete = async (rowId: number) => { |
| 255 | - await deleteData(xGrid, rowId) | |
| 253 | + await deleteData(rowId) | |
| 256 | 254 | } |
| 257 | 255 | const handleChangeStatus = async (row: JobApi.JobVO) => { |
| 258 | 256 | const text = row.status === InfraJobStatusEnum.STOP ? '开启' : '关闭' |
| ... | ... | @@ -267,7 +265,7 @@ const handleChangeStatus = async (row: JobApi.JobVO) => { |
| 267 | 265 | : InfraJobStatusEnum.STOP |
| 268 | 266 | await JobApi.updateJobStatusApi(row.id, status) |
| 269 | 267 | message.success(text + '成功') |
| 270 | - await getList(xGrid) | |
| 268 | + await reload() | |
| 271 | 269 | }) |
| 272 | 270 | .catch(() => { |
| 273 | 271 | row.status = |
| ... | ... | @@ -289,7 +287,7 @@ const handleRun = (row: JobApi.JobVO) => { |
| 289 | 287 | message.confirm('确认要立即执行一次' + row.name + '?', t('common.reminder')).then(async () => { |
| 290 | 288 | await JobApi.runJobApi(row.id) |
| 291 | 289 | message.success('执行成功') |
| 292 | - await getList(xGrid) | |
| 290 | + await reload() | |
| 293 | 291 | }) |
| 294 | 292 | } |
| 295 | 293 | // 提交按钮 |
| ... | ... | @@ -312,7 +310,7 @@ const submitForm = async () => { |
| 312 | 310 | dialogVisible.value = false |
| 313 | 311 | } finally { |
| 314 | 312 | actionLoading.value = false |
| 315 | - await getList(xGrid) | |
| 313 | + await reload() | |
| 316 | 314 | } |
| 317 | 315 | } |
| 318 | 316 | }) | ... | ... |
yudao-ui-admin-vue3/src/views/pay/app/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <!-- 操作:新增 --> |
| 7 | 7 | <XButton |
| ... | ... | @@ -43,7 +43,7 @@ |
| 43 | 43 | @click="handleDelete(row.id)" |
| 44 | 44 | /> |
| 45 | 45 | </template> |
| 46 | - </vxe-grid> | |
| 46 | + </XTable> | |
| 47 | 47 | </ContentWrap> |
| 48 | 48 | |
| 49 | 49 | <XModal v-model="dialogVisible" :title="dialogTitle"> |
| ... | ... | @@ -79,8 +79,7 @@ |
| 79 | 79 | import { ref, unref } from 'vue' |
| 80 | 80 | import { useI18n } from '@/hooks/web/useI18n' |
| 81 | 81 | import { useMessage } from '@/hooks/web/useMessage' |
| 82 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 83 | -import { VxeGridInstance } from 'vxe-table' | |
| 82 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 84 | 83 | import { FormExpose } from '@/components/Form' |
| 85 | 84 | import { rules, allSchemas } from './app.data' |
| 86 | 85 | import * as AppApi from '@/api/pay/app' |
| ... | ... | @@ -89,8 +88,7 @@ const { t } = useI18n() // 国际化 |
| 89 | 88 | const message = useMessage() // 消息弹窗 |
| 90 | 89 | |
| 91 | 90 | // 列表相关的变量 |
| 92 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 93 | -const { gridOptions, getList, deleteData, exportList } = useVxeGrid<AppApi.AppVO>({ | |
| 91 | +const [registerTable, { reload, deleteData, exportList }] = useXTable({ | |
| 94 | 92 | allSchemas: allSchemas, |
| 95 | 93 | getListApi: AppApi.getAppPageApi, |
| 96 | 94 | deleteApi: AppApi.deleteAppApi, |
| ... | ... | @@ -119,7 +117,7 @@ const handleCreate = () => { |
| 119 | 117 | |
| 120 | 118 | // 导出操作 |
| 121 | 119 | const handleExport = async () => { |
| 122 | - await exportList(xGrid, '应用信息.xls') | |
| 120 | + await exportList('应用信息.xls') | |
| 123 | 121 | } |
| 124 | 122 | |
| 125 | 123 | // 修改操作 |
| ... | ... | @@ -139,7 +137,7 @@ const handleDetail = async (rowId: number) => { |
| 139 | 137 | |
| 140 | 138 | // 删除操作 |
| 141 | 139 | const handleDelete = async (rowId: number) => { |
| 142 | - await deleteData(xGrid, rowId) | |
| 140 | + await deleteData(rowId) | |
| 143 | 141 | } |
| 144 | 142 | |
| 145 | 143 | // 提交按钮 |
| ... | ... | @@ -163,7 +161,7 @@ const submitForm = async () => { |
| 163 | 161 | } finally { |
| 164 | 162 | actionLoading.value = false |
| 165 | 163 | // 刷新列表 |
| 166 | - await getList(xGrid) | |
| 164 | + await reload() | |
| 167 | 165 | } |
| 168 | 166 | } |
| 169 | 167 | }) | ... | ... |
yudao-ui-admin-vue3/src/views/pay/merchant/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <!-- 操作:新增 --> |
| 7 | 7 | <XButton |
| ... | ... | @@ -43,7 +43,7 @@ |
| 43 | 43 | @click="handleDelete(row.id)" |
| 44 | 44 | /> |
| 45 | 45 | </template> |
| 46 | - </vxe-grid> | |
| 46 | + </XTable> | |
| 47 | 47 | </ContentWrap> |
| 48 | 48 | <XModal v-model="dialogVisible" :title="dialogTitle"> |
| 49 | 49 | <!-- 对话框(添加 / 修改) --> |
| ... | ... | @@ -78,8 +78,7 @@ |
| 78 | 78 | import { ref, unref } from 'vue' |
| 79 | 79 | import { useI18n } from '@/hooks/web/useI18n' |
| 80 | 80 | import { useMessage } from '@/hooks/web/useMessage' |
| 81 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 82 | -import { VxeGridInstance } from 'vxe-table' | |
| 81 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 83 | 82 | import { FormExpose } from '@/components/Form' |
| 84 | 83 | import { rules, allSchemas } from './merchant.data' |
| 85 | 84 | import * as MerchantApi from '@/api/pay/merchant' |
| ... | ... | @@ -87,8 +86,7 @@ import * as MerchantApi from '@/api/pay/merchant' |
| 87 | 86 | const { t } = useI18n() // 国际化 |
| 88 | 87 | const message = useMessage() // 消息弹窗 |
| 89 | 88 | // 列表相关的变量 |
| 90 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 91 | -const { gridOptions, getList, deleteData, exportList } = useVxeGrid<MerchantApi.MerchantVO>({ | |
| 89 | +const [registerTable, { reload, deleteData, exportList }] = useXTable({ | |
| 92 | 90 | allSchemas: allSchemas, |
| 93 | 91 | getListApi: MerchantApi.getMerchantPageApi, |
| 94 | 92 | deleteApi: MerchantApi.deleteMerchantApi, |
| ... | ... | @@ -117,7 +115,7 @@ const handleCreate = () => { |
| 117 | 115 | |
| 118 | 116 | // 导出操作 |
| 119 | 117 | const handleExport = async () => { |
| 120 | - await exportList(xGrid, '商户列表.xls') | |
| 118 | + await exportList('商户列表.xls') | |
| 121 | 119 | } |
| 122 | 120 | |
| 123 | 121 | // 修改操作 |
| ... | ... | @@ -137,7 +135,7 @@ const handleDetail = async (rowId: number) => { |
| 137 | 135 | |
| 138 | 136 | // 删除操作 |
| 139 | 137 | const handleDelete = async (rowId: number) => { |
| 140 | - await deleteData(xGrid, rowId) | |
| 138 | + await deleteData(rowId) | |
| 141 | 139 | } |
| 142 | 140 | |
| 143 | 141 | // 提交按钮 |
| ... | ... | @@ -161,7 +159,7 @@ const submitForm = async () => { |
| 161 | 159 | } finally { |
| 162 | 160 | actionLoading.value = false |
| 163 | 161 | // 刷新列表 |
| 164 | - await getList(xGrid) | |
| 162 | + await reload() | |
| 165 | 163 | } |
| 166 | 164 | } |
| 167 | 165 | }) | ... | ... |
yudao-ui-admin-vue3/src/views/pay/order/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <!-- 操作:新增 --> |
| 7 | 7 | <XButton |
| ... | ... | @@ -29,7 +29,7 @@ |
| 29 | 29 | @click="handleDetail(row.id)" |
| 30 | 30 | /> |
| 31 | 31 | </template> |
| 32 | - </vxe-grid> | |
| 32 | + </XTable> | |
| 33 | 33 | </ContentWrap> |
| 34 | 34 | <XModal v-model="dialogVisible" :title="dialogTitle"> |
| 35 | 35 | <!-- 对话框(详情) --> |
| ... | ... | @@ -44,15 +44,13 @@ |
| 44 | 44 | <script setup lang="ts" name="Order"> |
| 45 | 45 | import { ref } from 'vue' |
| 46 | 46 | import { useI18n } from '@/hooks/web/useI18n' |
| 47 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 48 | -import { VxeGridInstance } from 'vxe-table' | |
| 47 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 49 | 48 | import { allSchemas } from './order.data' |
| 50 | 49 | import * as OrderApi from '@/api/pay/order' |
| 51 | 50 | |
| 52 | 51 | const { t } = useI18n() // 国际化 |
| 53 | 52 | // 列表相关的变量 |
| 54 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 55 | -const { gridOptions, exportList } = useVxeGrid<OrderApi.OrderVO>({ | |
| 53 | +const [registerTable, { exportList }] = useXTable({ | |
| 56 | 54 | allSchemas: allSchemas, |
| 57 | 55 | getListApi: OrderApi.getOrderPageApi, |
| 58 | 56 | exportListApi: OrderApi.exportOrderApi |
| ... | ... | @@ -76,7 +74,7 @@ const handleCreate = () => { |
| 76 | 74 | } |
| 77 | 75 | // 导出操作 |
| 78 | 76 | const handleExport = async () => { |
| 79 | - await exportList(xGrid, '订单数据.xls') | |
| 77 | + await exportList('订单数据.xls') | |
| 80 | 78 | } |
| 81 | 79 | |
| 82 | 80 | // 详情操作 | ... | ... |
yudao-ui-admin-vue3/src/views/pay/refund/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <!-- 操作:导出 --> |
| 7 | 7 | <XButton |
| ... | ... | @@ -21,7 +21,7 @@ |
| 21 | 21 | @click="handleDetail(row.id)" |
| 22 | 22 | /> |
| 23 | 23 | </template> |
| 24 | - </vxe-grid> | |
| 24 | + </XTable> | |
| 25 | 25 | </ContentWrap> |
| 26 | 26 | |
| 27 | 27 | <XModal v-model="dialogVisible" :title="t('action.detail')"> |
| ... | ... | @@ -36,16 +36,14 @@ |
| 36 | 36 | <script setup lang="ts" name="Refund"> |
| 37 | 37 | import { ref } from 'vue' |
| 38 | 38 | import { useI18n } from '@/hooks/web/useI18n' |
| 39 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 40 | -import { VxeGridInstance } from 'vxe-table' | |
| 39 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 41 | 40 | import { allSchemas } from './refund.data' |
| 42 | 41 | import * as RefundApi from '@/api/pay/refund' |
| 43 | 42 | |
| 44 | 43 | const { t } = useI18n() // 国际化 |
| 45 | 44 | |
| 46 | 45 | // 列表相关的变量 |
| 47 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 48 | -const { gridOptions, exportList } = useVxeGrid<RefundApi.RefundVO>({ | |
| 46 | +const [registerTable, { exportList }] = useXTable({ | |
| 49 | 47 | allSchemas: allSchemas, |
| 50 | 48 | getListApi: RefundApi.getRefundPageApi, |
| 51 | 49 | exportListApi: RefundApi.exportRefundApi |
| ... | ... | @@ -53,7 +51,7 @@ const { gridOptions, exportList } = useVxeGrid<RefundApi.RefundVO>({ |
| 53 | 51 | |
| 54 | 52 | // 导出操作 |
| 55 | 53 | const handleExport = async () => { |
| 56 | - await exportList(xGrid, '退款订单.xls') | |
| 54 | + await exportList('退款订单.xls') | |
| 57 | 55 | } |
| 58 | 56 | |
| 59 | 57 | // ========== CRUD 相关 ========== | ... | ... |
yudao-ui-admin-vue3/src/views/system/dept/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" show-overflow class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable" show-overflow> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <!-- 操作:新增 --> |
| 7 | 7 | <XButton |
| ... | ... | @@ -33,7 +33,7 @@ |
| 33 | 33 | @click="handleDelete(row.id)" |
| 34 | 34 | /> |
| 35 | 35 | </template> |
| 36 | - </vxe-grid> | |
| 36 | + </XTable> | |
| 37 | 37 | </ContentWrap> |
| 38 | 38 | <!-- 添加或修改菜单对话框 --> |
| 39 | 39 | <XModal id="deptModel" v-model="dialogVisible" :title="dialogTitle"> |
| ... | ... | @@ -81,7 +81,7 @@ import { VxeGridInstance } from 'vxe-table' |
| 81 | 81 | import { handleTree, defaultProps } from '@/utils/tree' |
| 82 | 82 | import { useI18n } from '@/hooks/web/useI18n' |
| 83 | 83 | import { useMessage } from '@/hooks/web/useMessage' |
| 84 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 84 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 85 | 85 | import { FormExpose } from '@/components/Form' |
| 86 | 86 | import { allSchemas, rules } from './dept.data' |
| 87 | 87 | import * as DeptApi from '@/api/system/dept' |
| ... | ... | @@ -119,7 +119,7 @@ const getTree = async () => { |
| 119 | 119 | dept.children = handleTree(res) |
| 120 | 120 | deptOptions.value.push(dept) |
| 121 | 121 | } |
| 122 | -const { gridOptions, getList, deleteData } = useVxeGrid<DeptApi.DeptVO>({ | |
| 122 | +const [registerTable, { reload, deleteData }] = useXTable({ | |
| 123 | 123 | allSchemas: allSchemas, |
| 124 | 124 | treeConfig: treeConfig, |
| 125 | 125 | getListApi: DeptApi.getDeptPageApi, |
| ... | ... | @@ -168,7 +168,7 @@ const submitForm = async () => { |
| 168 | 168 | dialogVisible.value = false |
| 169 | 169 | } finally { |
| 170 | 170 | actionLoading.value = false |
| 171 | - await getList(xGrid) | |
| 171 | + await reload() | |
| 172 | 172 | } |
| 173 | 173 | } |
| 174 | 174 | }) |
| ... | ... | @@ -176,7 +176,7 @@ const submitForm = async () => { |
| 176 | 176 | |
| 177 | 177 | // 删除操作 |
| 178 | 178 | const handleDelete = async (rowId: number) => { |
| 179 | - await deleteData(xGrid, rowId) | |
| 179 | + await deleteData(rowId) | |
| 180 | 180 | } |
| 181 | 181 | |
| 182 | 182 | const userNicknameFormat = (row) => { | ... | ... |
yudao-ui-admin-vue3/src/views/system/dict/index.vue
| ... | ... | @@ -7,12 +7,7 @@ |
| 7 | 7 | <span>字典分类</span> |
| 8 | 8 | </div> |
| 9 | 9 | </template> |
| 10 | - <vxe-grid | |
| 11 | - ref="xTypeGrid" | |
| 12 | - v-bind="typeGridOptions" | |
| 13 | - @cell-click="cellClickEvent" | |
| 14 | - class="xtable-scrollbar" | |
| 15 | - > | |
| 10 | + <XTable @register="registerType" @cell-click="cellClickEvent"> | |
| 16 | 11 | <!-- 操作:新增类型 --> |
| 17 | 12 | <template #toolbar_buttons> |
| 18 | 13 | <XButton |
| ... | ... | @@ -39,7 +34,7 @@ |
| 39 | 34 | @click="handleTypeDelete(row.id)" |
| 40 | 35 | /> |
| 41 | 36 | </template> |
| 42 | - </vxe-grid> | |
| 37 | + </XTable> | |
| 43 | 38 | <!-- @星语:分页和列表重叠在一起了 --> |
| 44 | 39 | </el-card> |
| 45 | 40 | <!-- ====== 字典数据 ====== --> |
| ... | ... | @@ -55,7 +50,7 @@ |
| 55 | 50 | </div> |
| 56 | 51 | <div v-if="tableTypeSelect"> |
| 57 | 52 | <!-- 列表 --> |
| 58 | - <vxe-grid ref="xDataGrid" v-bind="dataGridOptions" class="xtable-scrollbar"> | |
| 53 | + <XTable @register="registerData"> | |
| 59 | 54 | <!-- 操作:新增数据 --> |
| 60 | 55 | <template #toolbar_buttons> |
| 61 | 56 | <XButton |
| ... | ... | @@ -82,7 +77,7 @@ |
| 82 | 77 | @click="handleDataDelete(row.id)" |
| 83 | 78 | /> |
| 84 | 79 | </template> |
| 85 | - </vxe-grid> | |
| 80 | + </XTable> | |
| 86 | 81 | </div> |
| 87 | 82 | </el-card> |
| 88 | 83 | <XModal id="dictModel" v-model="dialogVisible" :title="dialogTitle"> |
| ... | ... | @@ -130,8 +125,8 @@ |
| 130 | 125 | import { ref, unref, reactive } from 'vue' |
| 131 | 126 | import { useI18n } from '@/hooks/web/useI18n' |
| 132 | 127 | import { useMessage } from '@/hooks/web/useMessage' |
| 133 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 134 | -import { VxeGridInstance, VxeTableEvents } from 'vxe-table' | |
| 128 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 129 | +import { VxeTableEvents } from 'vxe-table' | |
| 135 | 130 | import { FormExpose } from '@/components/Form' |
| 136 | 131 | import { ElInput, ElTag, ElCard } from 'element-plus' |
| 137 | 132 | import * as DictTypeSchemas from './dict.type' |
| ... | ... | @@ -143,28 +138,18 @@ import { DictDataVO, DictTypeVO } from '@/api/system/dict/types' |
| 143 | 138 | const { t } = useI18n() // 国际化 |
| 144 | 139 | const message = useMessage() // 消息弹窗 |
| 145 | 140 | |
| 146 | -const xTypeGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 147 | -const { | |
| 148 | - gridOptions: typeGridOptions, | |
| 149 | - getList: typeGetList, | |
| 150 | - deleteData: typeDeleteData | |
| 151 | -} = useVxeGrid<DictTypeVO>({ | |
| 141 | +const [registerType, { reload: typeGetList, deleteData: typeDeleteData }] = useXTable({ | |
| 152 | 142 | allSchemas: DictTypeSchemas.allSchemas, |
| 153 | 143 | getListApi: DictTypeApi.getDictTypePageApi, |
| 154 | 144 | deleteApi: DictTypeApi.deleteDictTypeApi |
| 155 | 145 | }) |
| 156 | 146 | |
| 157 | -const xDataGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 158 | 147 | const queryParams = reactive({ |
| 159 | 148 | dictType: null |
| 160 | 149 | }) |
| 161 | -const { | |
| 162 | - gridOptions: dataGridOptions, | |
| 163 | - getList: dataGetList, | |
| 164 | - deleteData: dataDeleteData | |
| 165 | -} = useVxeGrid<DictDataVO>({ | |
| 150 | +const [registerData, { reload: dataGetList, deleteData: dataDeleteData }] = useXTable({ | |
| 166 | 151 | allSchemas: DictDataSchemas.allSchemas, |
| 167 | - queryParams: queryParams, | |
| 152 | + params: queryParams, | |
| 168 | 153 | getListApi: DictDataApi.getDictDataPageApi, |
| 169 | 154 | deleteApi: DictDataApi.deleteDictDataApi |
| 170 | 155 | }) |
| ... | ... | @@ -199,7 +184,7 @@ const tableTypeSelect = ref(false) |
| 199 | 184 | const cellClickEvent: VxeTableEvents.CellClick = async ({ row }) => { |
| 200 | 185 | tableTypeSelect.value = true |
| 201 | 186 | queryParams.dictType = row['type'] |
| 202 | - await dataGetList(xDataGrid) | |
| 187 | + await dataGetList() | |
| 203 | 188 | parentType.value = row['type'] |
| 204 | 189 | } |
| 205 | 190 | // 弹出框 |
| ... | ... | @@ -219,11 +204,11 @@ const setDialogTile = (type: string) => { |
| 219 | 204 | |
| 220 | 205 | // 删除操作 |
| 221 | 206 | const handleTypeDelete = async (rowId: number) => { |
| 222 | - await typeDeleteData(xTypeGrid, rowId) | |
| 207 | + await typeDeleteData(rowId) | |
| 223 | 208 | } |
| 224 | 209 | |
| 225 | 210 | const handleDataDelete = async (rowId: number) => { |
| 226 | - await dataDeleteData(xDataGrid, rowId) | |
| 211 | + await dataDeleteData(rowId) | |
| 227 | 212 | } |
| 228 | 213 | |
| 229 | 214 | // 提交按钮 |
| ... | ... | @@ -247,7 +232,7 @@ const submitTypeForm = async () => { |
| 247 | 232 | dialogVisible.value = false |
| 248 | 233 | } finally { |
| 249 | 234 | actionLoading.value = false |
| 250 | - typeGetList(xTypeGrid) | |
| 235 | + typeGetList() | |
| 251 | 236 | } |
| 252 | 237 | } |
| 253 | 238 | }) |
| ... | ... | @@ -272,7 +257,7 @@ const submitDataForm = async () => { |
| 272 | 257 | dialogVisible.value = false |
| 273 | 258 | } finally { |
| 274 | 259 | actionLoading.value = false |
| 275 | - dataGetList(xDataGrid) | |
| 260 | + dataGetList() | |
| 276 | 261 | } |
| 277 | 262 | } |
| 278 | 263 | }) | ... | ... |
yudao-ui-admin-vue3/src/views/system/errorCode/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <!-- 操作:新增 --> |
| 6 | 6 | <template #toolbar_buttons> |
| 7 | 7 | <XButton |
| ... | ... | @@ -35,7 +35,7 @@ |
| 35 | 35 | @click="handleDelete(row.id)" |
| 36 | 36 | /> |
| 37 | 37 | </template> |
| 38 | - </vxe-grid> | |
| 38 | + </XTable> | |
| 39 | 39 | </ContentWrap> |
| 40 | 40 | <!-- 弹窗 --> |
| 41 | 41 | <XModal id="errorCodeModel" v-model="dialogVisible" :title="dialogTitle"> |
| ... | ... | @@ -71,8 +71,7 @@ |
| 71 | 71 | import { ref, unref } from 'vue' |
| 72 | 72 | import { useI18n } from '@/hooks/web/useI18n' |
| 73 | 73 | import { useMessage } from '@/hooks/web/useMessage' |
| 74 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 75 | -import { VxeGridInstance } from 'vxe-table' | |
| 74 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 76 | 75 | import { FormExpose } from '@/components/Form' |
| 77 | 76 | // 业务相关的 import |
| 78 | 77 | import { rules, allSchemas } from './errorCode.data' |
| ... | ... | @@ -81,8 +80,7 @@ import * as ErrorCodeApi from '@/api/system/errorCode' |
| 81 | 80 | const { t } = useI18n() // 国际化 |
| 82 | 81 | const message = useMessage() // 消息弹窗 |
| 83 | 82 | // 列表相关的变量 |
| 84 | -const xGrid = ref<VxeGridInstance>() // grid Ref | |
| 85 | -const { gridOptions, getList, deleteData } = useVxeGrid<ErrorCodeApi.ErrorCodeVO>({ | |
| 83 | +const [registerTable, { reload, deleteData }] = useXTable({ | |
| 86 | 84 | allSchemas: allSchemas, |
| 87 | 85 | getListApi: ErrorCodeApi.getErrorCodePageApi, |
| 88 | 86 | deleteApi: ErrorCodeApi.deleteErrorCodeApi |
| ... | ... | @@ -125,7 +123,7 @@ const handleDetail = async (rowId: number) => { |
| 125 | 123 | |
| 126 | 124 | // 删除操作 |
| 127 | 125 | const handleDelete = async (rowId: number) => { |
| 128 | - await deleteData(xGrid, rowId) | |
| 126 | + await deleteData(rowId) | |
| 129 | 127 | } |
| 130 | 128 | |
| 131 | 129 | // 提交新增/修改的表单 |
| ... | ... | @@ -149,7 +147,7 @@ const submitForm = async () => { |
| 149 | 147 | } finally { |
| 150 | 148 | actionLoading.value = false |
| 151 | 149 | // 刷新列表 |
| 152 | - await getList(xGrid) | |
| 150 | + await reload() | |
| 153 | 151 | } |
| 154 | 152 | } |
| 155 | 153 | }) | ... | ... |
yudao-ui-admin-vue3/src/views/system/loginlog/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <!-- 操作:导出 --> |
| 6 | 6 | <template #toolbar_buttons> |
| 7 | 7 | <XButton |
| ... | ... | @@ -15,7 +15,7 @@ |
| 15 | 15 | <!-- 操作:详情 --> |
| 16 | 16 | <XTextButton preIcon="ep:view" :title="t('action.detail')" @click="handleDetail(row)" /> |
| 17 | 17 | </template> |
| 18 | - </vxe-grid> | |
| 18 | + </XTable> | |
| 19 | 19 | </ContentWrap> |
| 20 | 20 | <!-- 弹窗 --> |
| 21 | 21 | <XModal id="postModel" v-model="dialogVisible" :title="dialogTitle"> |
| ... | ... | @@ -31,16 +31,14 @@ |
| 31 | 31 | // 全局相关的 import |
| 32 | 32 | import { ref } from 'vue' |
| 33 | 33 | import { useI18n } from '@/hooks/web/useI18n' |
| 34 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 35 | -import { VxeGridInstance } from 'vxe-table' | |
| 34 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 36 | 35 | // 业务相关的 import |
| 37 | 36 | import { allSchemas } from './loginLog.data' |
| 38 | 37 | import { getLoginLogPageApi, exportLoginLogApi, LoginLogVO } from '@/api/system/loginLog' |
| 39 | 38 | |
| 40 | 39 | const { t } = useI18n() // 国际化 |
| 41 | 40 | // 列表相关的变量 |
| 42 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 43 | -const { gridOptions, exportList } = useVxeGrid<LoginLogVO>({ | |
| 41 | +const [registerTable, { exportList }] = useXTable({ | |
| 44 | 42 | allSchemas: allSchemas, |
| 45 | 43 | getListApi: getLoginLogPageApi, |
| 46 | 44 | exportListApi: exportLoginLogApi |
| ... | ... | @@ -59,6 +57,6 @@ const handleDetail = async (row: LoginLogVO) => { |
| 59 | 57 | |
| 60 | 58 | // 导出操作 |
| 61 | 59 | const handleExport = async () => { |
| 62 | - await exportList(xGrid, '登录列表.xls') | |
| 60 | + await exportList('登录列表.xls') | |
| 63 | 61 | } |
| 64 | 62 | </script> | ... | ... |
yudao-ui-admin-vue3/src/views/system/menu/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" show-overflow class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable" show-overflow> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <!-- 操作:新增 --> |
| 7 | 7 | <XButton |
| ... | ... | @@ -34,7 +34,7 @@ |
| 34 | 34 | @click="handleDelete(row.id)" |
| 35 | 35 | /> |
| 36 | 36 | </template> |
| 37 | - </vxe-grid> | |
| 37 | + </XTable> | |
| 38 | 38 | </ContentWrap> |
| 39 | 39 | <!-- 添加或修改菜单对话框 --> |
| 40 | 40 | <XModal id="menuModel" v-model="dialogVisible" :title="dialogTitle"> |
| ... | ... | @@ -201,7 +201,7 @@ import { SystemMenuTypeEnum, CommonStatusEnum } from '@/utils/constants' |
| 201 | 201 | import { handleTree, defaultProps } from '@/utils/tree' |
| 202 | 202 | import * as MenuApi from '@/api/system/menu' |
| 203 | 203 | import { allSchemas, rules } from './menu.data' |
| 204 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 204 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 205 | 205 | |
| 206 | 206 | const { t } = useI18n() // 国际化 |
| 207 | 207 | const message = useMessage() // 消息弹窗 |
| ... | ... | @@ -215,7 +215,7 @@ const treeConfig = { |
| 215 | 215 | parentField: 'parentId', |
| 216 | 216 | expandAll: false |
| 217 | 217 | } |
| 218 | -const { gridOptions, getList, deleteData } = useVxeGrid<MenuApi.MenuVO>({ | |
| 218 | +const [registerTable, { reload, deleteData }] = useXTable({ | |
| 219 | 219 | allSchemas: allSchemas, |
| 220 | 220 | treeConfig: treeConfig, |
| 221 | 221 | getListApi: MenuApi.getMenuListApi, |
| ... | ... | @@ -326,7 +326,7 @@ const submitForm = async () => { |
| 326 | 326 | actionLoading.value = false |
| 327 | 327 | wsCache.delete(CACHE_KEY.ROLE_ROUTERS) |
| 328 | 328 | // 操作成功,重新加载列表 |
| 329 | - await getList(xGrid) | |
| 329 | + await reload() | |
| 330 | 330 | } |
| 331 | 331 | } |
| 332 | 332 | |
| ... | ... | @@ -338,6 +338,6 @@ const isExternal = (path: string) => { |
| 338 | 338 | // ========== 删除 ========== |
| 339 | 339 | // 删除操作 |
| 340 | 340 | const handleDelete = async (rowId: number) => { |
| 341 | - await deleteData(xGrid, rowId) | |
| 341 | + await deleteData(rowId) | |
| 342 | 342 | } |
| 343 | 343 | </script> | ... | ... |
yudao-ui-admin-vue3/src/views/system/notice/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <!-- 操作:新增 --> |
| 6 | 6 | <template #toolbar_buttons> |
| 7 | 7 | <XButton |
| ... | ... | @@ -35,7 +35,7 @@ |
| 35 | 35 | @click="handleDelete(row.id)" |
| 36 | 36 | /> |
| 37 | 37 | </template> |
| 38 | - </vxe-grid> | |
| 38 | + </XTable> | |
| 39 | 39 | </ContentWrap> |
| 40 | 40 | <!-- 弹窗 --> |
| 41 | 41 | <XModal id="noticeModel" v-model="dialogVisible" :title="dialogTitle"> |
| ... | ... | @@ -75,8 +75,7 @@ |
| 75 | 75 | import { ref, unref } from 'vue' |
| 76 | 76 | import { useI18n } from '@/hooks/web/useI18n' |
| 77 | 77 | import { useMessage } from '@/hooks/web/useMessage' |
| 78 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 79 | -import { VxeGridInstance } from 'vxe-table' | |
| 78 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 80 | 79 | import { FormExpose } from '@/components/Form' |
| 81 | 80 | // 业务相关的 import |
| 82 | 81 | import * as NoticeApi from '@/api/system/notice' |
| ... | ... | @@ -86,8 +85,7 @@ import { Editor } from '@/components/Editor' |
| 86 | 85 | const { t } = useI18n() // 国际化 |
| 87 | 86 | const message = useMessage() // 消息弹窗 |
| 88 | 87 | // 列表相关的变量 |
| 89 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 90 | -const { gridOptions, getList, deleteData } = useVxeGrid<NoticeApi.NoticeVO>({ | |
| 88 | +const [registerTable, { reload, deleteData }] = useXTable({ | |
| 91 | 89 | allSchemas: allSchemas, |
| 92 | 90 | getListApi: NoticeApi.getNoticePageApi, |
| 93 | 91 | deleteApi: NoticeApi.deleteNoticeApi |
| ... | ... | @@ -130,7 +128,7 @@ const handleDetail = async (rowId: number) => { |
| 130 | 128 | |
| 131 | 129 | // 删除操作 |
| 132 | 130 | const handleDelete = async (rowId: number) => { |
| 133 | - await deleteData(xGrid, rowId) | |
| 131 | + await deleteData(rowId) | |
| 134 | 132 | } |
| 135 | 133 | |
| 136 | 134 | // 提交新增/修改的表单 |
| ... | ... | @@ -153,7 +151,7 @@ const submitForm = async () => { |
| 153 | 151 | dialogVisible.value = false |
| 154 | 152 | } finally { |
| 155 | 153 | actionLoading.value = false |
| 156 | - await getList(xGrid) | |
| 154 | + await reload() | |
| 157 | 155 | } |
| 158 | 156 | } |
| 159 | 157 | }) | ... | ... |
yudao-ui-admin-vue3/src/views/system/oauth2/client/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <!-- 操作:新增 --> |
| 7 | 7 | <XButton |
| ... | ... | @@ -51,7 +51,7 @@ |
| 51 | 51 | @click="handleDelete(row.id)" |
| 52 | 52 | /> |
| 53 | 53 | </template> |
| 54 | - </vxe-grid> | |
| 54 | + </XTable> | |
| 55 | 55 | </ContentWrap> |
| 56 | 56 | <!-- 弹窗 --> |
| 57 | 57 | <XModal id="postModel" v-model="dialogVisible" :title="dialogTitle"> |
| ... | ... | @@ -135,8 +135,7 @@ import { ref, unref } from 'vue' |
| 135 | 135 | import { ElTag } from 'element-plus' |
| 136 | 136 | import { useI18n } from '@/hooks/web/useI18n' |
| 137 | 137 | import { useMessage } from '@/hooks/web/useMessage' |
| 138 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 139 | -import { VxeGridInstance } from 'vxe-table' | |
| 138 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 140 | 139 | import { FormExpose } from '@/components/Form' |
| 141 | 140 | // 业务相关的 import |
| 142 | 141 | import * as ClientApi from '@/api/system/oauth2/client' |
| ... | ... | @@ -146,8 +145,7 @@ const { t } = useI18n() // 国际化 |
| 146 | 145 | const message = useMessage() // 消息弹窗 |
| 147 | 146 | |
| 148 | 147 | // 列表相关的变量 |
| 149 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 150 | -const { gridOptions, getList, deleteData } = useVxeGrid<ClientApi.OAuth2ClientVO>({ | |
| 148 | +const [registerTable, { reload, deleteData }] = useXTable({ | |
| 151 | 149 | allSchemas: allSchemas, |
| 152 | 150 | getListApi: ClientApi.getOAuth2ClientPageApi, |
| 153 | 151 | deleteApi: ClientApi.deleteOAuth2ClientApi |
| ... | ... | @@ -188,7 +186,7 @@ const handleDetail = async (rowId: number) => { |
| 188 | 186 | |
| 189 | 187 | // 删除操作 |
| 190 | 188 | const handleDelete = async (rowId: number) => { |
| 191 | - await deleteData(xGrid, rowId) | |
| 189 | + await deleteData(rowId) | |
| 192 | 190 | } |
| 193 | 191 | |
| 194 | 192 | // 提交新增/修改的表单 |
| ... | ... | @@ -212,7 +210,7 @@ const submitForm = async () => { |
| 212 | 210 | } finally { |
| 213 | 211 | actionLoading.value = false |
| 214 | 212 | // 刷新列表 |
| 215 | - await getList(xGrid) | |
| 213 | + await reload() | |
| 216 | 214 | } |
| 217 | 215 | } |
| 218 | 216 | }) | ... | ... |
yudao-ui-admin-vue3/src/views/system/oauth2/token/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #actionbtns_default="{ row }"> |
| 6 | 6 | <!-- 操作:详情 --> |
| 7 | 7 | <XTextButton preIcon="ep:view" :title="t('action.detail')" @click="handleDetail(row)" /> |
| ... | ... | @@ -13,7 +13,7 @@ |
| 13 | 13 | @click="handleForceLogout(row.id)" |
| 14 | 14 | /> |
| 15 | 15 | </template> |
| 16 | - </vxe-grid> | |
| 16 | + </XTable> | |
| 17 | 17 | </ContentWrap> |
| 18 | 18 | <XModal v-model="dialogVisible" :title="dialogTitle"> |
| 19 | 19 | <!-- 对话框(详情) --> |
| ... | ... | @@ -28,8 +28,7 @@ |
| 28 | 28 | import { ref } from 'vue' |
| 29 | 29 | import { useI18n } from '@/hooks/web/useI18n' |
| 30 | 30 | import { useMessage } from '@/hooks/web/useMessage' |
| 31 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 32 | -import { VxeGridInstance } from 'vxe-table' | |
| 31 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 33 | 32 | |
| 34 | 33 | import { allSchemas } from './token.data' |
| 35 | 34 | import * as TokenApi from '@/api/system/oauth2/token' |
| ... | ... | @@ -37,8 +36,7 @@ import * as TokenApi from '@/api/system/oauth2/token' |
| 37 | 36 | const { t } = useI18n() // 国际化 |
| 38 | 37 | const message = useMessage() // 消息弹窗 |
| 39 | 38 | // 列表相关的变量 |
| 40 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 41 | -const { gridOptions, getList } = useVxeGrid<TokenApi.OAuth2TokenVO>({ | |
| 39 | +const [registerTable, { reload }] = useXTable({ | |
| 42 | 40 | allSchemas: allSchemas, |
| 43 | 41 | topActionSlots: false, |
| 44 | 42 | getListApi: TokenApi.getAccessTokenPageApi |
| ... | ... | @@ -65,7 +63,7 @@ const handleForceLogout = (rowId: number) => { |
| 65 | 63 | }) |
| 66 | 64 | .finally(async () => { |
| 67 | 65 | // 刷新列表 |
| 68 | - await getList(xGrid) | |
| 66 | + await reload() | |
| 69 | 67 | }) |
| 70 | 68 | } |
| 71 | 69 | </script> | ... | ... |
yudao-ui-admin-vue3/src/views/system/operatelog/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <!-- 操作:新增 --> |
| 7 | 7 | <XButton |
| ... | ... | @@ -22,7 +22,7 @@ |
| 22 | 22 | <!-- 操作:详情 --> |
| 23 | 23 | <XTextButton preIcon="ep:view" :title="t('action.detail')" @click="handleDetail(row)" /> |
| 24 | 24 | </template> |
| 25 | - </vxe-grid> | |
| 25 | + </XTable> | |
| 26 | 26 | </ContentWrap> |
| 27 | 27 | <!-- 弹窗 --> |
| 28 | 28 | <XModal id="postModel" v-model="dialogVisible" :title="t('action.detail')"> |
| ... | ... | @@ -45,16 +45,14 @@ |
| 45 | 45 | // 全局相关的 import |
| 46 | 46 | import { ref } from 'vue' |
| 47 | 47 | import { useI18n } from '@/hooks/web/useI18n' |
| 48 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 49 | -import { VxeGridInstance } from 'vxe-table' | |
| 48 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 50 | 49 | // 业务相关的 import |
| 51 | 50 | import * as OperateLogApi from '@/api/system/operatelog' |
| 52 | 51 | import { allSchemas } from './operatelog.data' |
| 53 | 52 | |
| 54 | 53 | const { t } = useI18n() // 国际化 |
| 55 | 54 | // 列表相关的变量 |
| 56 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 57 | -const { gridOptions, exportList } = useVxeGrid<OperateLogApi.OperateLogVO>({ | |
| 55 | +const [registerTable, { exportList }] = useXTable({ | |
| 58 | 56 | allSchemas: allSchemas, |
| 59 | 57 | getListApi: OperateLogApi.getOperateLogPageApi, |
| 60 | 58 | exportListApi: OperateLogApi.exportOperateLogApi |
| ... | ... | @@ -73,6 +71,6 @@ const handleDetail = (row: OperateLogApi.OperateLogVO) => { |
| 73 | 71 | |
| 74 | 72 | // 导出操作 |
| 75 | 73 | const handleExport = async () => { |
| 76 | - await exportList(xGrid, '操作日志.xls') | |
| 74 | + await exportList('操作日志.xls') | |
| 77 | 75 | } |
| 78 | 76 | </script> | ... | ... |
yudao-ui-admin-vue3/src/views/system/post/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <!-- 操作:新增 --> |
| 7 | 7 | <XButton |
| ... | ... | @@ -43,7 +43,7 @@ |
| 43 | 43 | @click="handleDelete(row.id)" |
| 44 | 44 | /> |
| 45 | 45 | </template> |
| 46 | - </vxe-grid> | |
| 46 | + </XTable> | |
| 47 | 47 | </ContentWrap> |
| 48 | 48 | <!-- 弹窗 --> |
| 49 | 49 | <XModal id="postModel" :loading="modelLoading" v-model="modelVisible" :title="modelTitle"> |
| ... | ... | @@ -79,8 +79,7 @@ |
| 79 | 79 | import { ref, unref } from 'vue' |
| 80 | 80 | import { useI18n } from '@/hooks/web/useI18n' |
| 81 | 81 | import { useMessage } from '@/hooks/web/useMessage' |
| 82 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 83 | -import { VxeGridInstance } from 'vxe-table' | |
| 82 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 84 | 83 | import { FormExpose } from '@/components/Form' |
| 85 | 84 | // 业务相关的 import |
| 86 | 85 | import * as PostApi from '@/api/system/post' |
| ... | ... | @@ -89,8 +88,7 @@ import { rules, allSchemas } from './post.data' |
| 89 | 88 | const { t } = useI18n() // 国际化 |
| 90 | 89 | const message = useMessage() // 消息弹窗 |
| 91 | 90 | // 列表相关的变量 |
| 92 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 93 | -const { gridOptions, getList, deleteData, exportList } = useVxeGrid<PostApi.PostVO>({ | |
| 91 | +const [registerTable, { reload, deleteData, exportList }] = useXTable({ | |
| 94 | 92 | allSchemas: allSchemas, |
| 95 | 93 | getListApi: PostApi.getPostPageApi, |
| 96 | 94 | deleteApi: PostApi.deletePostApi, |
| ... | ... | @@ -121,7 +119,7 @@ const handleCreate = () => { |
| 121 | 119 | |
| 122 | 120 | // 导出操作 |
| 123 | 121 | const handleExport = async () => { |
| 124 | - await exportList(xGrid, '岗位列表.xls') | |
| 122 | + await exportList('岗位列表.xls') | |
| 125 | 123 | } |
| 126 | 124 | |
| 127 | 125 | // 修改操作 |
| ... | ... | @@ -143,7 +141,7 @@ const handleDetail = async (rowId: number) => { |
| 143 | 141 | |
| 144 | 142 | // 删除操作 |
| 145 | 143 | const handleDelete = async (rowId: number) => { |
| 146 | - await deleteData(xGrid, rowId) | |
| 144 | + await deleteData(rowId) | |
| 147 | 145 | } |
| 148 | 146 | |
| 149 | 147 | // 提交新增/修改的表单 |
| ... | ... | @@ -167,7 +165,7 @@ const submitForm = async () => { |
| 167 | 165 | } finally { |
| 168 | 166 | actionLoading.value = false |
| 169 | 167 | // 刷新列表 |
| 170 | - await getList(xGrid) | |
| 168 | + await reload() | |
| 171 | 169 | } |
| 172 | 170 | } |
| 173 | 171 | }) | ... | ... |
yudao-ui-admin-vue3/src/views/system/role/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <!-- 操作:新增 --> |
| 6 | 6 | <template #toolbar_buttons> |
| 7 | 7 | <XButton |
| ... | ... | @@ -49,7 +49,7 @@ |
| 49 | 49 | @click="handleDelete(row.id)" |
| 50 | 50 | /> |
| 51 | 51 | </template> |
| 52 | - </vxe-grid> | |
| 52 | + </XTable> | |
| 53 | 53 | </ContentWrap> |
| 54 | 54 | |
| 55 | 55 | <XModal v-model="dialogVisible" :title="dialogTitle"> |
| ... | ... | @@ -159,11 +159,10 @@ import { |
| 159 | 159 | ElSwitch, |
| 160 | 160 | ElTag |
| 161 | 161 | } from 'element-plus' |
| 162 | -import { VxeGridInstance } from 'vxe-table' | |
| 163 | 162 | import { FormExpose } from '@/components/Form' |
| 164 | 163 | import { useI18n } from '@/hooks/web/useI18n' |
| 165 | 164 | import { useMessage } from '@/hooks/web/useMessage' |
| 166 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 165 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 167 | 166 | import { handleTree, defaultProps } from '@/utils/tree' |
| 168 | 167 | import { SystemDataScopeEnum } from '@/utils/constants' |
| 169 | 168 | import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' |
| ... | ... | @@ -176,8 +175,7 @@ import * as PermissionApi from '@/api/system/permission' |
| 176 | 175 | const { t } = useI18n() // 国际化 |
| 177 | 176 | const message = useMessage() // 消息弹窗 |
| 178 | 177 | // 列表相关的变量 |
| 179 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 180 | -const { gridOptions, getList, deleteData } = useVxeGrid<RoleApi.RoleVO>({ | |
| 178 | +const [registerTable, { reload, deleteData }] = useXTable({ | |
| 181 | 179 | allSchemas: allSchemas, |
| 182 | 180 | getListApi: RoleApi.getRolePageApi, |
| 183 | 181 | deleteApi: RoleApi.deleteRoleApi |
| ... | ... | @@ -221,7 +219,7 @@ const handleDetail = async (rowId: number) => { |
| 221 | 219 | |
| 222 | 220 | // 删除操作 |
| 223 | 221 | const handleDelete = async (rowId: number) => { |
| 224 | - await deleteData(xGrid, rowId) | |
| 222 | + await deleteData(rowId) | |
| 225 | 223 | } |
| 226 | 224 | |
| 227 | 225 | // 提交按钮 |
| ... | ... | @@ -245,7 +243,7 @@ const submitForm = async () => { |
| 245 | 243 | } finally { |
| 246 | 244 | actionLoading.value = false |
| 247 | 245 | // 刷新列表 |
| 248 | - await getList(xGrid) | |
| 246 | + await reload() | |
| 249 | 247 | } |
| 250 | 248 | } |
| 251 | 249 | }) | ... | ... |
yudao-ui-admin-vue3/src/views/system/sensitiveWord/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <!-- 操作:新增 --> |
| 7 | 7 | <XButton |
| ... | ... | @@ -53,7 +53,7 @@ |
| 53 | 53 | @click="handleDelete(row.id)" |
| 54 | 54 | /> |
| 55 | 55 | </template> |
| 56 | - </vxe-grid> | |
| 56 | + </XTable> | |
| 57 | 57 | </ContentWrap> |
| 58 | 58 | |
| 59 | 59 | <XModal v-model="dialogVisible" :title="dialogTitle"> |
| ... | ... | @@ -106,8 +106,7 @@ |
| 106 | 106 | import { onMounted, ref, unref } from 'vue' |
| 107 | 107 | import { useI18n } from '@/hooks/web/useI18n' |
| 108 | 108 | import { useMessage } from '@/hooks/web/useMessage' |
| 109 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 110 | -import { VxeGridInstance } from 'vxe-table' | |
| 109 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 111 | 110 | import { FormExpose } from '@/components/Form' |
| 112 | 111 | import { ElTag, ElSelect, ElOption } from 'element-plus' |
| 113 | 112 | import * as SensitiveWordApi from '@/api/system/sensitiveWord' |
| ... | ... | @@ -116,14 +115,12 @@ import { rules, allSchemas } from './sensitiveWord.data' |
| 116 | 115 | const { t } = useI18n() // 国际化 |
| 117 | 116 | const message = useMessage() // 消息弹窗 |
| 118 | 117 | // 列表相关的变量 |
| 119 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 120 | -const { gridOptions, getList, deleteData, exportList } = | |
| 121 | - useVxeGrid<SensitiveWordApi.SensitiveWordVO>({ | |
| 122 | - allSchemas: allSchemas, | |
| 123 | - getListApi: SensitiveWordApi.getSensitiveWordPageApi, | |
| 124 | - deleteApi: SensitiveWordApi.deleteSensitiveWordApi, | |
| 125 | - exportListApi: SensitiveWordApi.exportSensitiveWordApi | |
| 126 | - }) | |
| 118 | +const [registerTable, { reload, deleteData, exportList }] = useXTable({ | |
| 119 | + allSchemas: allSchemas, | |
| 120 | + getListApi: SensitiveWordApi.getSensitiveWordPageApi, | |
| 121 | + deleteApi: SensitiveWordApi.deleteSensitiveWordApi, | |
| 122 | + exportListApi: SensitiveWordApi.exportSensitiveWordApi | |
| 123 | +}) | |
| 127 | 124 | const actionLoading = ref(false) // 遮罩层 |
| 128 | 125 | const actionType = ref('') // 操作按钮的类型 |
| 129 | 126 | const dialogVisible = ref(false) // 是否显示弹出层 |
| ... | ... | @@ -152,7 +149,7 @@ const handleCreate = () => { |
| 152 | 149 | |
| 153 | 150 | // 导出操作 |
| 154 | 151 | const handleExport = async () => { |
| 155 | - await exportList(xGrid, '敏感词数据.xls') | |
| 152 | + await exportList('敏感词数据.xls') | |
| 156 | 153 | } |
| 157 | 154 | |
| 158 | 155 | // 修改操作 |
| ... | ... | @@ -172,7 +169,7 @@ const handleDetail = async (rowId: number) => { |
| 172 | 169 | |
| 173 | 170 | // 删除操作 |
| 174 | 171 | const handleDelete = async (rowId: number) => { |
| 175 | - await deleteData(xGrid, rowId) | |
| 172 | + await deleteData(rowId) | |
| 176 | 173 | } |
| 177 | 174 | |
| 178 | 175 | // 提交按钮 |
| ... | ... | @@ -196,7 +193,7 @@ const submitForm = async () => { |
| 196 | 193 | } finally { |
| 197 | 194 | actionLoading.value = false |
| 198 | 195 | // 刷新列表 |
| 199 | - await getList(xGrid) | |
| 196 | + await reload() | |
| 200 | 197 | } |
| 201 | 198 | } |
| 202 | 199 | }) | ... | ... |
yudao-ui-admin-vue3/src/views/system/sms/smsChannel/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <!-- 操作:新增 --> |
| 6 | 6 | <template #toolbar_buttons> |
| 7 | 7 | <XButton |
| ... | ... | @@ -35,7 +35,7 @@ |
| 35 | 35 | @click="handleDelete(row.id)" |
| 36 | 36 | /> |
| 37 | 37 | </template> |
| 38 | - </vxe-grid> | |
| 38 | + </XTable> | |
| 39 | 39 | </ContentWrap> |
| 40 | 40 | |
| 41 | 41 | <XModal id="smsChannel" v-model="dialogVisible" :title="dialogTitle"> |
| ... | ... | @@ -72,8 +72,7 @@ |
| 72 | 72 | import { ref, unref } from 'vue' |
| 73 | 73 | import { useI18n } from '@/hooks/web/useI18n' |
| 74 | 74 | import { useMessage } from '@/hooks/web/useMessage' |
| 75 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 76 | -import { VxeGridInstance } from 'vxe-table' | |
| 75 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 77 | 76 | import { FormExpose } from '@/components/Form' |
| 78 | 77 | // 业务相关的 import |
| 79 | 78 | import * as SmsChannelApi from '@/api/system/sms/smsChannel' |
| ... | ... | @@ -83,8 +82,7 @@ const { t } = useI18n() // 国际化 |
| 83 | 82 | const message = useMessage() // 消息弹窗 |
| 84 | 83 | |
| 85 | 84 | // 列表相关的变量 |
| 86 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 87 | -const { gridOptions, getList, deleteData } = useVxeGrid<SmsChannelApi.SmsChannelVO>({ | |
| 85 | +const [registerTable, { reload, deleteData }] = useXTable({ | |
| 88 | 86 | allSchemas: allSchemas, |
| 89 | 87 | getListApi: SmsChannelApi.getSmsChannelPageApi, |
| 90 | 88 | deleteApi: SmsChannelApi.deleteSmsChannelApi |
| ... | ... | @@ -127,7 +125,7 @@ const handleDetail = async (rowId: number) => { |
| 127 | 125 | |
| 128 | 126 | // 删除操作 |
| 129 | 127 | const handleDelete = async (rowId: number) => { |
| 130 | - await deleteData(xGrid, rowId) | |
| 128 | + await deleteData(rowId) | |
| 131 | 129 | } |
| 132 | 130 | |
| 133 | 131 | // 提交按钮 |
| ... | ... | @@ -151,7 +149,7 @@ const submitForm = async () => { |
| 151 | 149 | } finally { |
| 152 | 150 | actionLoading.value = false |
| 153 | 151 | // 刷新列表 |
| 154 | - await getList(xGrid) | |
| 152 | + await reload() | |
| 155 | 153 | } |
| 156 | 154 | } |
| 157 | 155 | }) | ... | ... |
yudao-ui-admin-vue3/src/views/system/sms/smsLog/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <!-- 操作:导出 --> |
| 6 | 6 | <template #toolbar_buttons> |
| 7 | 7 | <XButton |
| ... | ... | @@ -14,7 +14,7 @@ |
| 14 | 14 | <template #actionbtns_default="{ row }"> |
| 15 | 15 | <XTextButton preIcon="ep:view" :title="t('action.detail')" @click="handleDetail(row)" /> |
| 16 | 16 | </template> |
| 17 | - </vxe-grid> | |
| 17 | + </XTable> | |
| 18 | 18 | </ContentWrap> |
| 19 | 19 | |
| 20 | 20 | <XModal id="smsLog" v-model="dialogVisible" :title="dialogTitle"> |
| ... | ... | @@ -34,15 +34,13 @@ |
| 34 | 34 | // 全局相关的 import |
| 35 | 35 | import { ref } from 'vue' |
| 36 | 36 | import { useI18n } from '@/hooks/web/useI18n' |
| 37 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 38 | -import { VxeGridInstance } from 'vxe-table' | |
| 37 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 39 | 38 | import { allSchemas } from './sms.log.data' |
| 40 | 39 | import * as SmsLoglApi from '@/api/system/sms/smsLog' |
| 41 | 40 | const { t } = useI18n() // 国际化 |
| 42 | 41 | |
| 43 | 42 | // 列表相关的变量 |
| 44 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 45 | -const { gridOptions, exportList } = useVxeGrid<SmsLoglApi.SmsLogVO>({ | |
| 43 | +const [registerTable, { exportList }] = useXTable({ | |
| 46 | 44 | allSchemas: allSchemas, |
| 47 | 45 | getListApi: SmsLoglApi.getSmsLogPageApi, |
| 48 | 46 | exportListApi: SmsLoglApi.exportSmsLogApi |
| ... | ... | @@ -62,6 +60,6 @@ const handleDetail = (row: SmsLoglApi.SmsLogVO) => { |
| 62 | 60 | |
| 63 | 61 | // 导出操作 |
| 64 | 62 | const handleExport = async () => { |
| 65 | - await exportList(xGrid, '短信日志.xls') | |
| 63 | + await exportList('短信日志.xls') | |
| 66 | 64 | } |
| 67 | 65 | </script> | ... | ... |
yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <!-- 操作:新增 --> |
| 6 | 6 | <template #toolbar_buttons> |
| 7 | 7 | <XButton |
| ... | ... | @@ -41,7 +41,7 @@ |
| 41 | 41 | @click="handleDelete(row.id)" |
| 42 | 42 | /> |
| 43 | 43 | </template> |
| 44 | - </vxe-grid> | |
| 44 | + </XTable> | |
| 45 | 45 | </ContentWrap> |
| 46 | 46 | <XModal id="smsTemplate" v-model="dialogVisible" :title="dialogTitle"> |
| 47 | 47 | <!-- 对话框(添加 / 修改) --> |
| ... | ... | @@ -113,8 +113,7 @@ |
| 113 | 113 | import { ref, unref } from 'vue' |
| 114 | 114 | import { useI18n } from '@/hooks/web/useI18n' |
| 115 | 115 | import { useMessage } from '@/hooks/web/useMessage' |
| 116 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 117 | -import { VxeGridInstance } from 'vxe-table' | |
| 116 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 118 | 117 | import { FormExpose } from '@/components/Form' |
| 119 | 118 | import { ElForm, ElFormItem, ElInput } from 'element-plus' |
| 120 | 119 | // 业务相关的 import |
| ... | ... | @@ -125,8 +124,7 @@ const { t } = useI18n() // 国际化 |
| 125 | 124 | const message = useMessage() // 消息弹窗 |
| 126 | 125 | |
| 127 | 126 | // 列表相关的变量 |
| 128 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 129 | -const { gridOptions, getList, deleteData } = useVxeGrid<SmsTemplateApi.SmsTemplateVO>({ | |
| 127 | +const [registerTable, { reload, deleteData }] = useXTable({ | |
| 130 | 128 | allSchemas: allSchemas, |
| 131 | 129 | getListApi: SmsTemplateApi.getSmsTemplatePageApi, |
| 132 | 130 | deleteApi: SmsTemplateApi.deleteSmsTemplateApi |
| ... | ... | @@ -170,7 +168,7 @@ const handleDetail = async (rowId: number) => { |
| 170 | 168 | |
| 171 | 169 | // 删除操作 |
| 172 | 170 | const handleDelete = async (rowId: number) => { |
| 173 | - await deleteData(xGrid, rowId) | |
| 171 | + await deleteData(rowId) | |
| 174 | 172 | } |
| 175 | 173 | |
| 176 | 174 | // 提交按钮 |
| ... | ... | @@ -194,7 +192,7 @@ const submitForm = async () => { |
| 194 | 192 | } finally { |
| 195 | 193 | actionLoading.value = false |
| 196 | 194 | // 刷新列表 |
| 197 | - await getList(xGrid) | |
| 195 | + await reload() | |
| 198 | 196 | } |
| 199 | 197 | } |
| 200 | 198 | }) | ... | ... |
yudao-ui-admin-vue3/src/views/system/tenant/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <!-- 操作:新增 --> |
| 7 | 7 | <XButton |
| ... | ... | @@ -49,7 +49,7 @@ |
| 49 | 49 | @click="handleDelete(row.id)" |
| 50 | 50 | /> |
| 51 | 51 | </template> |
| 52 | - </vxe-grid> | |
| 52 | + </XTable> | |
| 53 | 53 | </ContentWrap> |
| 54 | 54 | <XModal v-model="dialogVisible" :title="dialogTitle"> |
| 55 | 55 | <!-- 对话框(添加 / 修改) --> |
| ... | ... | @@ -89,8 +89,7 @@ |
| 89 | 89 | import { ref, unref } from 'vue' |
| 90 | 90 | import { useI18n } from '@/hooks/web/useI18n' |
| 91 | 91 | import { useMessage } from '@/hooks/web/useMessage' |
| 92 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 93 | -import { VxeGridInstance } from 'vxe-table' | |
| 92 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 94 | 93 | import { ElTag } from 'element-plus' |
| 95 | 94 | import { FormExpose } from '@/components/Form' |
| 96 | 95 | import * as TenantApi from '@/api/system/tenant' |
| ... | ... | @@ -99,8 +98,7 @@ import { rules, allSchemas, tenantPackageOption } from './tenant.data' |
| 99 | 98 | const { t } = useI18n() // 国际化 |
| 100 | 99 | const message = useMessage() // 消息弹窗 |
| 101 | 100 | // 列表相关的变量 |
| 102 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 103 | -const { gridOptions, getList, deleteData, exportList } = useVxeGrid<TenantApi.TenantVO>({ | |
| 101 | +const [registerTable, { reload, deleteData, exportList }] = useXTable({ | |
| 104 | 102 | allSchemas: allSchemas, |
| 105 | 103 | getListApi: TenantApi.getTenantPageApi, |
| 106 | 104 | deleteApi: TenantApi.deleteTenantApi, |
| ... | ... | @@ -153,12 +151,12 @@ const handleDetail = async (rowId: number) => { |
| 153 | 151 | |
| 154 | 152 | // 删除操作 |
| 155 | 153 | const handleDelete = async (rowId: number) => { |
| 156 | - await deleteData(xGrid, rowId) | |
| 154 | + await deleteData(rowId) | |
| 157 | 155 | } |
| 158 | 156 | |
| 159 | 157 | // 导出操作 |
| 160 | 158 | const handleExport = async () => { |
| 161 | - await exportList(xGrid, '租户列表.xls') | |
| 159 | + await exportList('租户列表.xls') | |
| 162 | 160 | } |
| 163 | 161 | |
| 164 | 162 | // 提交按钮 |
| ... | ... | @@ -183,7 +181,7 @@ const submitForm = async () => { |
| 183 | 181 | } finally { |
| 184 | 182 | actionLoading.value = false |
| 185 | 183 | // 刷新列表 |
| 186 | - await getList(xGrid) | |
| 184 | + await reload() | |
| 187 | 185 | } |
| 188 | 186 | } |
| 189 | 187 | }) | ... | ... |
yudao-ui-admin-vue3/src/views/system/tenantPackage/index.vue
| 1 | 1 | <template> |
| 2 | 2 | <ContentWrap> |
| 3 | 3 | <!-- 列表 --> |
| 4 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 4 | + <XTable @register="registerTable"> | |
| 5 | 5 | <template #toolbar_buttons> |
| 6 | 6 | <XButton |
| 7 | 7 | type="primary" |
| ... | ... | @@ -14,7 +14,7 @@ |
| 14 | 14 | <XTextButton preIcon="ep:edit" :title="t('action.edit')" @click="handleUpdate(row.id)" /> |
| 15 | 15 | <XTextButton preIcon="ep:delete" :title="t('action.del')" @click="handleDelete(row.id)" /> |
| 16 | 16 | </template> |
| 17 | - </vxe-grid> | |
| 17 | + </XTable> | |
| 18 | 18 | </ContentWrap> |
| 19 | 19 | <XModal v-model="dialogVisible" :title="dialogTitle"> |
| 20 | 20 | <!-- 对话框(添加 / 修改) --> |
| ... | ... | @@ -69,8 +69,7 @@ import { onMounted, ref, unref } from 'vue' |
| 69 | 69 | import { handleTree, defaultProps } from '@/utils/tree' |
| 70 | 70 | import { useI18n } from '@/hooks/web/useI18n' |
| 71 | 71 | import { useMessage } from '@/hooks/web/useMessage' |
| 72 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 73 | -import { VxeGridInstance } from 'vxe-table' | |
| 72 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 74 | 73 | import { FormExpose } from '@/components/Form' |
| 75 | 74 | import { ElCard, ElSwitch, ElTree } from 'element-plus' |
| 76 | 75 | // 业务相关的 import |
| ... | ... | @@ -86,7 +85,6 @@ const menuExpand = ref(false) |
| 86 | 85 | const menuNodeAll = ref(false) |
| 87 | 86 | const treeRef = ref<InstanceType<typeof ElTree>>() |
| 88 | 87 | const treeNodeAll = ref(false) |
| 89 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 90 | 88 | const formRef = ref<FormExpose>() // 表单 Ref |
| 91 | 89 | const loading = ref(false) // 遮罩层 |
| 92 | 90 | const actionType = ref('') // 操作按钮的类型 |
| ... | ... | @@ -102,7 +100,7 @@ const getTree = async () => { |
| 102 | 100 | menuOptions.value = handleTree(res) |
| 103 | 101 | } |
| 104 | 102 | |
| 105 | -const { gridOptions, getList, deleteData } = useVxeGrid<TenantPackageApi.TenantPackageVO>({ | |
| 103 | +const [registerTable, { reload, deleteData }] = useXTable({ | |
| 106 | 104 | allSchemas: allSchemas, |
| 107 | 105 | getListApi: TenantPackageApi.getTenantPackageTypePageApi, |
| 108 | 106 | deleteApi: TenantPackageApi.deleteTenantPackageTypeApi |
| ... | ... | @@ -136,7 +134,7 @@ const handleUpdate = async (rowId: number) => { |
| 136 | 134 | |
| 137 | 135 | // 删除操作 |
| 138 | 136 | const handleDelete = async (rowId: number) => { |
| 139 | - await deleteData(xGrid, rowId) | |
| 137 | + await deleteData(rowId) | |
| 140 | 138 | } |
| 141 | 139 | |
| 142 | 140 | // 提交按钮 |
| ... | ... | @@ -162,7 +160,7 @@ const submitForm = async () => { |
| 162 | 160 | } finally { |
| 163 | 161 | loading.value = false |
| 164 | 162 | // 刷新列表 |
| 165 | - await getList(xGrid) | |
| 163 | + await reload() | |
| 166 | 164 | } |
| 167 | 165 | } |
| 168 | 166 | }) | ... | ... |
yudao-ui-admin-vue3/src/views/system/user/index.vue
| ... | ... | @@ -27,7 +27,7 @@ |
| 27 | 27 | </div> |
| 28 | 28 | </template> |
| 29 | 29 | <!-- 列表 --> |
| 30 | - <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | |
| 30 | + <XTable @register="registerTable"> | |
| 31 | 31 | <template #toolbar_buttons> |
| 32 | 32 | <!-- 操作:新增 --> |
| 33 | 33 | <XButton |
| ... | ... | @@ -119,7 +119,7 @@ |
| 119 | 119 | </template> |
| 120 | 120 | </el-dropdown> |
| 121 | 121 | </template> |
| 122 | - </vxe-grid> | |
| 122 | + </XTable> | |
| 123 | 123 | </el-card> |
| 124 | 124 | </div> |
| 125 | 125 | <XModal v-model="dialogVisible" :title="dialogTitle"> |
| ... | ... | @@ -283,14 +283,13 @@ import { |
| 283 | 283 | UploadRawFile |
| 284 | 284 | } from 'element-plus' |
| 285 | 285 | import { useRouter } from 'vue-router' |
| 286 | -import { VxeGridInstance } from 'vxe-table' | |
| 287 | 286 | import { handleTree, defaultProps } from '@/utils/tree' |
| 288 | 287 | import download from '@/utils/download' |
| 289 | 288 | import { CommonStatusEnum } from '@/utils/constants' |
| 290 | 289 | import { getAccessToken, getTenantId } from '@/utils/auth' |
| 291 | 290 | import { useI18n } from '@/hooks/web/useI18n' |
| 292 | 291 | import { useMessage } from '@/hooks/web/useMessage' |
| 293 | -import { useVxeGrid } from '@/hooks/web/useVxeGrid' | |
| 292 | +import { useXTable } from '@/hooks/web/useXTable' | |
| 294 | 293 | import { FormExpose } from '@/components/Form' |
| 295 | 294 | import { rules, allSchemas } from './user.data' |
| 296 | 295 | import * as UserApi from '@/api/system/user' |
| ... | ... | @@ -312,10 +311,9 @@ const queryParams = reactive({ |
| 312 | 311 | // ========== 列表相关 ========== |
| 313 | 312 | const tableTitle = ref('用户列表') |
| 314 | 313 | // 列表相关的变量 |
| 315 | -const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | |
| 316 | -const { gridOptions, getList, deleteData, exportList } = useVxeGrid<UserApi.UserVO>({ | |
| 314 | +const [registerTable, { reload, deleteData, exportList }] = useXTable({ | |
| 317 | 315 | allSchemas: allSchemas, |
| 318 | - queryParams: queryParams, | |
| 316 | + params: queryParams, | |
| 319 | 317 | getListApi: UserApi.getUserPageApi, |
| 320 | 318 | deleteApi: UserApi.deleteUserApi, |
| 321 | 319 | exportListApi: UserApi.exportUserApi |
| ... | ... | @@ -334,7 +332,7 @@ const filterNode = (value: string, data: Tree) => { |
| 334 | 332 | } |
| 335 | 333 | const handleDeptNodeClick = async (row: { [key: string]: any }) => { |
| 336 | 334 | queryParams.deptId = row.id |
| 337 | - await getList(xGrid) | |
| 335 | + await reload() | |
| 338 | 336 | } |
| 339 | 337 | const { push } = useRouter() |
| 340 | 338 | const handleDeptEdit = () => { |
| ... | ... | @@ -409,7 +407,7 @@ const handleDetail = async (rowId: number) => { |
| 409 | 407 | } |
| 410 | 408 | // 删除操作 |
| 411 | 409 | const handleDelete = async (rowId: number) => { |
| 412 | - await deleteData(xGrid, rowId) | |
| 410 | + await deleteData(rowId) | |
| 413 | 411 | } |
| 414 | 412 | // 提交按钮 |
| 415 | 413 | const submitForm = async () => { |
| ... | ... | @@ -428,7 +426,7 @@ const submitForm = async () => { |
| 428 | 426 | } finally { |
| 429 | 427 | // unref(formRef)?.setSchema(allSchemas.formSchema) |
| 430 | 428 | // 刷新列表 |
| 431 | - await getList(xGrid) | |
| 429 | + await reload() | |
| 432 | 430 | loading.value = false |
| 433 | 431 | } |
| 434 | 432 | } |
| ... | ... | @@ -443,7 +441,7 @@ const handleStatusChange = async (row: UserApi.UserVO) => { |
| 443 | 441 | await UserApi.updateUserStatusApi(row.id, row.status) |
| 444 | 442 | message.success(text + '成功') |
| 445 | 443 | // 刷新列表 |
| 446 | - await getList(xGrid) | |
| 444 | + await reload() | |
| 447 | 445 | }) |
| 448 | 446 | .catch(() => { |
| 449 | 447 | row.status = |
| ... | ... | @@ -544,7 +542,7 @@ const handleFileSuccess = async (response: any): Promise<void> => { |
| 544 | 542 | text += '< ' + username + ': ' + data.failureUsernames[username] + ' >' |
| 545 | 543 | } |
| 546 | 544 | message.alert(text) |
| 547 | - await getList(xGrid) | |
| 545 | + await reload() | |
| 548 | 546 | } |
| 549 | 547 | // 文件数超出提示 |
| 550 | 548 | const handleExceed = (): void => { | ... | ... |