Commit 005a3e6ab0a9a3a710aca08b0cb7daf6b6205063

Authored by xingyu
1 parent dec05a6c

fix: bugs

README.md
... ... @@ -223,9 +223,9 @@ ps:核心功能已经实现,正在对接微信小程序中...
223 223 |----------------------------------------------------------------------|:------------:|:------:|
224 224 | [Vue](https://staging-cn.vuejs.org/) | Vue 框架 | 3.2.45 |
225 225 | [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 3.2.3 |
226   -| [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.2.23 |
  226 +| [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.2.25 |
227 227 | [TypeScript](https://www.typescriptlang.org/docs/) | TypeScript | 4.9.3 |
228   -| [pinia](https://pinia.vuejs.org/) | vuex5 | 2.0.26 |
  228 +| [pinia](https://pinia.vuejs.org/) | vuex5 | 2.0.27 |
229 229 | [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化 | 9.2.2 |
230 230 | [vxe-table](https://vxetable.cn/) | vue最强表单 | 4.5.6 |
231 231  
... ...
yudao-dependencies/pom.xml
... ... @@ -60,7 +60,7 @@
60 60 <minio.version>8.2.2</minio.version>
61 61 <aliyun-java-sdk-core.version>4.6.2</aliyun-java-sdk-core.version>
62 62 <aliyun-java-sdk-dysmsapi.version>2.2.1</aliyun-java-sdk-dysmsapi.version>
63   - <tencentcloud-sdk-java.version>3.1.634</tencentcloud-sdk-java.version>
  63 + <tencentcloud-sdk-java.version>3.1.561</tencentcloud-sdk-java.version>
64 64 <justauth.version>1.4.0</justauth.version>
65 65 <jimureport.version>1.5.3</jimureport.version>
66 66 <xercesImpl.version>2.12.2</xercesImpl.version>
... ...
yudao-ui-admin-vue3/package.json
1 1 {
2 2 "name": "ruoyi-vue-pro-vue3",
3   - "version": "1.6.4.1862",
  3 + "version": "1.6.4.1863",
4 4 "description": "基于vue3、vite3、element-plus、typesScript",
5 5 "author": "xingyu",
6 6 "private": false,
... ... @@ -36,14 +36,14 @@
36 36 "dayjs": "^1.11.6",
37 37 "echarts": "^5.4.0",
38 38 "echarts-wordcloud": "^2.1.0",
39   - "element-plus": "2.2.23",
  39 + "element-plus": "2.2.25",
40 40 "intro.js": "^6.0.0",
41 41 "js-cookie": "^3.0.1",
42 42 "jsencrypt": "^3.3.1",
43 43 "lodash-es": "^4.17.21",
44 44 "mitt": "^3.0.0",
45 45 "nprogress": "^0.2.0",
46   - "pinia": "^2.0.26",
  46 + "pinia": "^2.0.27",
47 47 "qrcode": "^1.5.1",
48 48 "qs": "^6.11.0",
49 49 "url": "^0.11.0",
... ... @@ -59,7 +59,7 @@
59 59 "devDependencies": {
60 60 "@commitlint/cli": "^17.3.0",
61 61 "@commitlint/config-conventional": "^17.3.0",
62   - "@iconify/json": "^2.1.143",
  62 + "@iconify/json": "^2.1.144",
63 63 "@intlify/vite-plugin-vue-i18n": "^6.0.3",
64 64 "@purge-icons/generated": "^0.9.0",
65 65 "@types/intro.js": "^5.1.0",
... ... @@ -82,10 +82,10 @@
82 82 "plop": "^3.1.1",
83 83 "postcss": "^8.4.19",
84 84 "postcss-html": "^1.5.0",
85   - "postcss-scss": "^4.0.5",
  85 + "postcss-scss": "^4.0.6",
86 86 "prettier": "^2.8.0",
87 87 "rimraf": "^3.0.2",
88   - "rollup": "^3.4.0",
  88 + "rollup": "^3.5.0",
89 89 "sass": "^1.56.1",
90 90 "stylelint": "^14.15.0",
91 91 "stylelint-config-html": "^1.1.0",
... ...
yudao-ui-admin-vue3/pnpm-lock.yaml
... ... @@ -4,7 +4,7 @@ specifiers:
4 4 '@commitlint/cli': ^17.3.0
5 5 '@commitlint/config-conventional': ^17.3.0
6 6 '@iconify/iconify': ^3.0.0
7   - '@iconify/json': ^2.1.143
  7 + '@iconify/json': ^2.1.144
8 8 '@intlify/vite-plugin-vue-i18n': ^6.0.3
9 9 '@purge-icons/generated': ^0.9.0
10 10 '@types/intro.js': ^5.1.0
... ... @@ -28,7 +28,7 @@ specifiers:
28 28 dayjs: ^1.11.6
29 29 echarts: ^5.4.0
30 30 echarts-wordcloud: ^2.1.0
31   - element-plus: 2.2.23
  31 + element-plus: 2.2.25
32 32 eslint: ^8.28.0
33 33 eslint-config-prettier: ^8.5.0
34 34 eslint-define-config: ^1.12.0
... ... @@ -41,16 +41,16 @@ specifiers:
41 41 lodash-es: ^4.17.21
42 42 mitt: ^3.0.0
43 43 nprogress: ^0.2.0
44   - pinia: ^2.0.26
  44 + pinia: ^2.0.27
45 45 plop: ^3.1.1
46 46 postcss: ^8.4.19
47 47 postcss-html: ^1.5.0
48   - postcss-scss: ^4.0.5
  48 + postcss-scss: ^4.0.6
49 49 prettier: ^2.8.0
50 50 qrcode: ^1.5.1
51 51 qs: ^6.11.0
52 52 rimraf: ^3.0.2
53   - rollup: ^3.4.0
  53 + rollup: ^3.5.0
54 54 sass: ^1.56.1
55 55 stylelint: ^14.15.0
56 56 stylelint-config-html: ^1.1.0
... ... @@ -93,14 +93,14 @@ dependencies:
93 93 dayjs: registry.npmmirror.com/dayjs/1.11.6
94 94 echarts: registry.npmmirror.com/echarts/5.4.0
95 95 echarts-wordcloud: 2.1.0_echarts@5.4.0
96   - element-plus: 2.2.23_vue@3.2.45
  96 + element-plus: 2.2.25_vue@3.2.45
97 97 intro.js: registry.npmmirror.com/intro.js/6.0.0
98 98 js-cookie: registry.npmmirror.com/js-cookie/3.0.1
99 99 jsencrypt: registry.npmmirror.com/jsencrypt/3.3.1
100 100 lodash-es: registry.npmmirror.com/lodash-es/4.17.21
101 101 mitt: registry.npmmirror.com/mitt/3.0.0
102 102 nprogress: registry.npmmirror.com/nprogress/0.2.0
103   - pinia: 2.0.26_mgnvym7yiazkylwwogi5r767ue
  103 + pinia: 2.0.27_mgnvym7yiazkylwwogi5r767ue
104 104 qrcode: registry.npmmirror.com/qrcode/1.5.1
105 105 qs: registry.npmmirror.com/qs/6.11.0
106 106 url: registry.npmmirror.com/url/0.11.0
... ... @@ -116,7 +116,7 @@ dependencies:
116 116 devDependencies:
117 117 '@commitlint/cli': registry.npmmirror.com/@commitlint/cli/17.3.0
118 118 '@commitlint/config-conventional': registry.npmmirror.com/@commitlint/config-conventional/17.3.0
119   - '@iconify/json': 2.1.143
  119 + '@iconify/json': 2.1.144
120 120 '@intlify/vite-plugin-vue-i18n': registry.npmmirror.com/@intlify/vite-plugin-vue-i18n/6.0.3_vite@3.2.4+vue-i18n@9.2.2
121 121 '@purge-icons/generated': registry.npmmirror.com/@purge-icons/generated/0.9.0
122 122 '@types/intro.js': registry.npmmirror.com/@types/intro.js/5.1.0
... ... @@ -139,10 +139,10 @@ devDependencies:
139 139 plop: registry.npmmirror.com/plop/3.1.1
140 140 postcss: registry.npmmirror.com/postcss/8.4.19
141 141 postcss-html: registry.npmmirror.com/postcss-html/1.5.0
142   - postcss-scss: registry.npmmirror.com/postcss-scss/4.0.5_postcss@8.4.19
  142 + postcss-scss: 4.0.6_postcss@8.4.19
143 143 prettier: registry.npmmirror.com/prettier/2.8.0
144 144 rimraf: registry.npmmirror.com/rimraf/3.0.2
145   - rollup: registry.npmmirror.com/rollup/3.4.0
  145 + rollup: 3.5.0
146 146 sass: registry.npmmirror.com/sass/1.56.1
147 147 stylelint: registry.npmmirror.com/stylelint/14.15.0
148 148 stylelint-config-html: registry.npmmirror.com/stylelint-config-html/1.1.0_qendsqix7hqecpnpx4fjs6qry4
... ... @@ -207,8 +207,8 @@ packages:
207 207 '@floating-ui/core': 1.0.2
208 208 dev: false
209 209  
210   - /@iconify/json/2.1.143:
211   - resolution: {integrity: sha512-atN7UAsuRgXkXE9MiOh59T2hIkN3ulE6GVbfZjKeYPYdyRpsAgFsLOAMjJ+u6jIzaiZn+rSVwx7m2gQG47sN0A==}
  210 + /@iconify/json/2.1.144:
  211 + resolution: {integrity: sha512-U4W9EHgDVKk/ll8fJ8J6atgtYj9MjPUiKtVlMlyz+SO90lI34QbgVJZOP/DEezLP/HcAIDLS2pgX+x+kFIkeWg==}
212 212 dependencies:
213 213 '@iconify/types': 2.0.0
214 214 pathe: 0.3.9
... ... @@ -440,8 +440,8 @@ packages:
440 440 echarts: registry.npmmirror.com/echarts/5.4.0
441 441 dev: false
442 442  
443   - /element-plus/2.2.23_vue@3.2.45:
444   - resolution: {integrity: sha512-/7BtebETiknsW2TpSwt5RIpXxFQ1sbYoRelJqeiB1K9LcL0MwyQJ1rZSuWHBCHduMvfpogNZ66dwp2Giv9lYbg==}
  443 + /element-plus/2.2.25_vue@3.2.45:
  444 + resolution: {integrity: sha512-HC8CWY31e6pPyBpgqI0QnWkBgs0vRzdYnEw3mpdM/NlKfp0PtNFX7NESQLomqoIulH5ftL09hjQmJNvZBQpthQ==}
445 445 peerDependencies:
446 446 vue: ^3.2.0
447 447 dependencies:
... ... @@ -780,6 +780,7 @@ packages:
780 780  
781 781 /graceful-fs/4.2.10:
782 782 resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
  783 + requiresBuild: true
783 784 dev: true
784 785 optional: true
785 786  
... ... @@ -1006,8 +1007,8 @@ packages:
1006 1007 hasBin: true
1007 1008 dev: true
1008 1009  
1009   - /pinia/2.0.26_mgnvym7yiazkylwwogi5r767ue:
1010   - resolution: {integrity: sha512-tSxZNUcMGxQOvKZRjPKXxd2+/2NZhRF/CoYVE/+K6uE/Z3v1Oi4fcQFpxu5nMB1dCchjXUZ+lz0tBxV5ntwmQQ==}
  1010 + /pinia/2.0.27_mgnvym7yiazkylwwogi5r767ue:
  1011 + resolution: {integrity: sha512-nOnXP0OFeL8R4WjAHsterU+11vptda643gH02xKNtSCDPiRzVfRYodOLihLDoa0gL1KKuQKV+KOzEgdt3YvqEw==}
1011 1012 peerDependencies:
1012 1013 '@vue/composition-api': ^1.4.0
1013 1014 typescript: '>=4.4.4'
... ... @@ -1024,6 +1025,15 @@ packages:
1024 1025 vue-demi: 0.13.11_vue@3.2.45
1025 1026 dev: false
1026 1027  
  1028 + /postcss-scss/4.0.6_postcss@8.4.19:
  1029 + resolution: {integrity: sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==}
  1030 + engines: {node: '>=12.0'}
  1031 + peerDependencies:
  1032 + postcss: ^8.4.19
  1033 + dependencies:
  1034 + postcss: registry.npmmirror.com/postcss/8.4.19
  1035 + dev: true
  1036 +
1027 1037 /postcss-selector-parser/6.0.10:
1028 1038 resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
1029 1039 engines: {node: '>=4'}
... ... @@ -1044,6 +1054,22 @@ packages:
1044 1054 resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==}
1045 1055 dev: true
1046 1056  
  1057 + /rollup/2.79.1:
  1058 + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
  1059 + engines: {node: '>=10.0.0'}
  1060 + hasBin: true
  1061 + optionalDependencies:
  1062 + fsevents: 2.3.2
  1063 + dev: true
  1064 +
  1065 + /rollup/3.5.0:
  1066 + resolution: {integrity: sha512-TYu2L+TGhmNsXCtByont89u+ATQLcDy6A+++PwLXYunRtOm7XnaD+65s1pvewaOxMYR0eOkMXn9/i0saBxxpnQ==}
  1067 + engines: {node: '>=14.18.0', npm: '>=8.0.0'}
  1068 + hasBin: true
  1069 + optionalDependencies:
  1070 + fsevents: 2.3.2
  1071 + dev: true
  1072 +
1047 1073 /rxjs/7.5.7:
1048 1074 resolution: {integrity: sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==}
1049 1075 dependencies:
... ... @@ -7243,18 +7269,6 @@ packages:
7243 7269 postcss: registry.npmmirror.com/postcss/8.4.19
7244 7270 dev: true
7245 7271  
7246   - registry.npmmirror.com/postcss-scss/4.0.5_postcss@8.4.19:
7247   - resolution: {integrity: sha512-F7xpB6TrXyqUh3GKdyB4Gkp3QL3DDW1+uI+gxx/oJnUt/qXI4trj5OGlp9rOKdoABGULuqtqeG+3HEVQk4DjmA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-scss/-/postcss-scss-4.0.5.tgz}
7248   - id: registry.npmmirror.com/postcss-scss/4.0.5
7249   - name: postcss-scss
7250   - version: 4.0.5
7251   - engines: {node: '>=12.0'}
7252   - peerDependencies:
7253   - postcss: ^8.3.3
7254   - dependencies:
7255   - postcss: registry.npmmirror.com/postcss/8.4.19
7256   - dev: true
7257   -
7258 7272 registry.npmmirror.com/postcss-selector-parser/6.0.10:
7259 7273 resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz}
7260 7274 name: postcss-selector-parser
... ... @@ -7712,26 +7726,6 @@ packages:
7712 7726 - supports-color
7713 7727 dev: true
7714 7728  
7715   - registry.npmmirror.com/rollup/2.79.1:
7716   - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rollup/-/rollup-2.79.1.tgz}
7717   - name: rollup
7718   - version: 2.79.1
7719   - engines: {node: '>=10.0.0'}
7720   - hasBin: true
7721   - optionalDependencies:
7722   - fsevents: 2.3.2
7723   - dev: true
7724   -
7725   - registry.npmmirror.com/rollup/3.4.0:
7726   - resolution: {integrity: sha512-4g8ZrEFK7UbDvy3JF+d5bLiC8UKkS3n/27/cnVeESwB1LVPl6MoPL32/6+SCQ1vHTp6Mvp2veIHtwELhi+uXEw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rollup/-/rollup-3.4.0.tgz}
7727   - name: rollup
7728   - version: 3.4.0
7729   - engines: {node: '>=14.18.0', npm: '>=8.0.0'}
7730   - hasBin: true
7731   - optionalDependencies:
7732   - fsevents: 2.3.2
7733   - dev: true
7734   -
7735 7729 registry.npmmirror.com/run-async/2.4.1:
7736 7730 resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz}
7737 7731 name: run-async
... ... @@ -8835,7 +8829,7 @@ packages:
8835 8829 '@rollup/pluginutils': registry.npmmirror.com/@rollup/pluginutils/4.2.1
8836 8830 '@types/eslint': registry.npmmirror.com/@types/eslint/8.4.10
8837 8831 eslint: registry.npmmirror.com/eslint/8.28.0
8838   - rollup: registry.npmmirror.com/rollup/2.79.1
  8832 + rollup: 2.79.1
8839 8833 vite: registry.npmmirror.com/vite/3.2.4_ajklay5k626t46b6fyghkbup3i
8840 8834 dev: true
8841 8835  
... ... @@ -8996,7 +8990,7 @@ packages:
8996 8990 esbuild: registry.npmmirror.com/esbuild/0.15.14
8997 8991 postcss: registry.npmmirror.com/postcss/8.4.19
8998 8992 resolve: registry.npmmirror.com/resolve/1.22.1
8999   - rollup: registry.npmmirror.com/rollup/2.79.1
  8993 + rollup: 2.79.1
9000 8994 sass: registry.npmmirror.com/sass/1.56.1
9001 8995 optionalDependencies:
9002 8996 fsevents: 2.3.2
... ... @@ -9253,7 +9247,7 @@ packages:
9253 9247 version: 0.3.2
9254 9248 dependencies:
9255 9249 eslint-visitor-keys: 1.3.0
9256   - lodash: registry.npmmirror.com/lodash/4.17.21
  9250 + lodash: 4.17.21
9257 9251 yaml: 1.10.2
9258 9252 dev: true
9259 9253  
... ...
yudao-ui-admin-vue3/src/components/Descriptions/src/Descriptions.vue
... ... @@ -115,7 +115,9 @@ const toggleClick = () =&gt; {
115 115  
116 116 <template #default>
117 117 <slot v-if="item.dateFormat">
118   - {{ dayjs(data[item.field]).format(item.dateFormat) }}
  118 + {{
  119 + data[item.field] !== null ? dayjs(data[item.field]).format(item.dateFormat) : ''
  120 + }}
119 121 </slot>
120 122 <slot v-else-if="item.dictType">
121 123 <DictTag :type="item.dictType" :value="data[item.field] + ''" />
... ...
yudao-ui-admin-vue3/src/hooks/web/useVxeCrudSchemas.ts
... ... @@ -22,6 +22,7 @@ export type VxeCrudSchema = {
22 22 actionTitle?: string // 操作栏标题 默认为操作
23 23 actionWidth?: string // 操作栏插槽宽度,一般2个字带图标 text 类型按钮 50-70
24 24 columns: VxeCrudColumns[]
  25 + searchSpan?: number
25 26 }
26 27 type VxeCrudColumns = Omit<VxeTableColumn, 'children'> & {
27 28 field: string // 字段名
... ... @@ -112,6 +113,8 @@ export const useVxeCrudSchemas = (
112 113 // 过滤 Search 结构
113 114 const filterSearchSchema = (crudSchema: VxeCrudSchema): VxeFormItemProps[] => {
114 115 const { t } = useI18n()
  116 + const span = crudSchema.searchSpan ? crudSchema.searchSpan : 6
  117 + const spanLength = 24 / span
115 118 const searchSchema: VxeFormItemProps[] = []
116 119 eachTree(crudSchema.columns, (schemaItem: VxeCrudColumns) => {
117 120 // 判断是否显示
... ... @@ -144,13 +147,14 @@ const filterSearchSchema = (crudSchema: VxeCrudSchema): VxeFormItemProps[] =&gt; {
144 147 props: { placeholder: t('common.selectText') }
145 148 }
146 149 }
  150 +
147 151 const searchSchemaItem = {
148 152 // 默认为 input
149   - folding: searchSchema.length > 3,
  153 + folding: searchSchema.length > spanLength,
150 154 itemRender: schemaItem.itemRender ? schemaItem.itemRender : itemRender,
151 155 field: schemaItem.field,
152 156 title: schemaItem.search?.title || schemaItem.title,
153   - span: 6
  157 + span: span
154 158 }
155 159  
156 160 searchSchema.push(searchSchemaItem)
... ... @@ -161,7 +165,7 @@ const filterSearchSchema = (crudSchema: VxeCrudSchema): VxeFormItemProps[] =&gt; {
161 165 const buttons: VxeFormItemProps = {
162 166 span: 24,
163 167 align: 'center',
164   - collapseNode: searchSchema.length > 4,
  168 + collapseNode: searchSchema.length > spanLength + 1,
165 169 itemRender: {
166 170 name: '$buttons',
167 171 children: [
... ... @@ -181,11 +185,13 @@ const filterTableSchema = (crudSchema: VxeCrudSchema): VxeGridPropTypes.Columns
181 185 const tableSchema: VxeGridPropTypes.Columns = []
182 186 // 主键ID
183 187 if (crudSchema.primaryKey && crudSchema.primaryType) {
  188 + const primaryWidth =
  189 + (crudSchema.primaryTitle ? crudSchema.primaryTitle : t('common.index')).length * 20 + 'px'
184 190 const tableSchemaItem = {
185 191 title: crudSchema.primaryTitle ? crudSchema.primaryTitle : t('common.index'),
186 192 field: crudSchema.primaryKey,
187 193 type: crudSchema.primaryType ? crudSchema.primaryType : null,
188   - width: '80px'
  194 + width: primaryWidth
189 195 }
190 196 tableSchema.push(tableSchemaItem)
191 197 }
... ...
yudao-ui-admin-vue3/src/plugins/vxeTable/index.ts
... ... @@ -150,7 +150,11 @@ VXETable.setup({
150 150 VXETable.formats.mixin({
151 151 // 格式日期,默认 yyyy-MM-dd HH:mm:ss
152 152 formatDate({ cellValue }, format) {
153   - return XEUtils.toDateString(cellValue, format || 'yyyy-MM-dd HH:mm:ss')
  153 + if (cellValue != null) {
  154 + return XEUtils.toDateString(cellValue, format || 'yyyy-MM-dd HH:mm:ss')
  155 + } else {
  156 + return ''
  157 + }
154 158 },
155 159 // 四舍五入金额,每隔3位逗号分隔,默认2位数
156 160 formatAmount({ cellValue }, digits = 2) {
... ...
yudao-ui-admin-vue3/src/views/infra/codegen/index.vue
... ... @@ -18,7 +18,7 @@
18 18 preIcon="ep:view"
19 19 :title="t('action.preview')"
20 20 v-hasPermi="['infra:codegen:query']"
21   - @click="handlePreview(row.id)"
  21 + @click="handlePreview(row)"
22 22 />
23 23 <!-- 操作:编辑 -->
24 24 <XTextButton
... ... @@ -39,14 +39,14 @@
39 39 preIcon="ep:refresh"
40 40 :title="t('action.sync')"
41 41 v-hasPermi="['infra:codegen:update']"
42   - @click="handleSynchDb(row.id)"
  42 + @click="handleSynchDb(row)"
43 43 />
44 44 <!-- 操作:生成 -->
45 45 <XTextButton
46 46 preIcon="ep:download"
47 47 :title="t('action.generate')"
48 48 v-hasPermi="['infra:codegen:download']"
49   - @click="handleGenTable(row.id)"
  49 + @click="handleGenTable(row)"
50 50 />
51 51 </template>
52 52 </vxe-grid>
... ... @@ -86,7 +86,6 @@ const openImportTable = () =&gt; {
86 86 importRef.value.show()
87 87 }
88 88 // 预览操作
89   -// TODO 星语:点击后报错
90 89 const previewRef = ref()
91 90 const handlePreview = (row: CodegenTableVO) => {
92 91 previewRef.value.show(row)
... ...
yudao-ui-admin-vue3/src/views/infra/fileList/index.vue
... ... @@ -85,7 +85,6 @@ import { useVxeGrid } from &#39;@/hooks/web/useVxeGrid&#39;
85 85 import { VxeGridInstance } from 'vxe-table'
86 86 import { ElUpload, ElImage, UploadInstance, UploadRawFile } from 'element-plus'
87 87 // 业务相关的 import
88   -// TODO 星语:貌似这个界面打开 404
89 88 import { allSchemas } from './fileList.data'
90 89 import * as FileApi from '@/api/infra/fileList'
91 90 import { getAccessToken, getTenantId } from '@/utils/auth'
... ...
yudao-ui-admin-vue3/src/views/system/dept/dept.data.ts
... ... @@ -12,8 +12,8 @@ export const rules = reactive({
12 12 email: [required],
13 13 phone: [
14 14 {
15   - pattern:
16   - /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/, // TODO @星语:前端只校验长度,格式交给后端;因为号码格式不断在变的
  15 + min: 11,
  16 + max: 11,
17 17 trigger: 'blur',
18 18 message: '请输入正确的手机号码'
19 19 }
... ...
yudao-ui-admin-vue3/src/views/system/dict/dict.data.ts
... ... @@ -17,6 +17,7 @@ export const crudSchemas = reactive&lt;VxeCrudSchema&gt;({
17 17 primaryType: null,
18 18 action: true,
19 19 actionWidth: '140px',
  20 + searchSpan: 12,
20 21 columns: [
21 22 {
22 23 title: '字典类型',
... ...
yudao-ui-admin-vue3/src/views/system/dict/dict.type.ts
... ... @@ -7,8 +7,7 @@ const { t } = useI18n() // 国际化
7 7  
8 8 // 表单校验
9 9 export const dictTypeRules = reactive({
10   - name: [required],
11   - type: [required]
  10 + name: [required]
12 11 })
13 12 // 新增 + 修改
14 13 const crudSchemas = reactive<VxeCrudSchema>({
... ... @@ -16,6 +15,7 @@ const crudSchemas = reactive&lt;VxeCrudSchema&gt;({
16 15 primaryType: null,
17 16 action: true,
18 17 actionWidth: '140px',
  18 + searchSpan: 12,
19 19 columns: [
20 20 {
21 21 title: '字典名称',
... ...
yudao-ui-admin-vue3/src/views/system/dict/index.vue
1 1 <template>
2 2 <div class="flex">
3 3 <!-- ====== 字典分类 ====== -->
4   - <!-- TODO 星语:筛选框很小 -->
5 4 <el-card class="w-1/2 dict" :gutter="12" shadow="always">
6 5 <template #header>
7 6 <div class="card-header">
... ... @@ -94,7 +93,7 @@
94 93 ref="typeFormRef"
95 94 >
96 95 <template #type>
97   - <template v-if="dictTypeValue">
  96 + <template v-if="actionType == 'typeUpdate'">
98 97 <el-tag>{{ dictTypeValue }}</el-tag>
99 98 </template>
100 99 <template v-else><el-input v-model="dictTypeValue" /> </template>
... ... @@ -232,7 +231,7 @@ const submitTypeForm = async () =&gt; {
232 231 const elForm = unref(typeFormRef)?.getElFormRef()
233 232 if (!elForm) return
234 233 elForm.validate(async (valid) => {
235   - if (valid) {
  234 + if (valid && dictTypeValue.value != '') {
236 235 actionLoading.value = true
237 236 // 提交请求
238 237 try {
... ...
yudao-ui-admin-vue3/src/views/system/sensitiveWord/index.vue
... ... @@ -75,7 +75,18 @@
75 75 v-if="actionType === 'detail'"
76 76 :schema="allSchemas.detailSchema"
77 77 :data="detailData"
78   - />
  78 + >
  79 + <template #tags="{ row }">
  80 + <el-tag
  81 + :disable-transitions="true"
  82 + :key="index"
  83 + v-for="(tag, index) in row.tags"
  84 + :index="index"
  85 + >
  86 + {{ tag }}
  87 + </el-tag>
  88 + </template>
  89 + </Descriptions>
79 90 <!-- 操作按钮 -->
80 91 <template #footer>
81 92 <!-- 按钮:保存 -->
... ...
yudao-ui-admin-vue3/src/views/system/sensitiveWord/sensitiveWord.data.ts
... ... @@ -15,7 +15,7 @@ export const rules = reactive({
15 15 const crudSchemas = reactive<VxeCrudSchema>({
16 16 primaryKey: 'id',
17 17 primaryType: 'seq',
18   - primaryTitle: '敏感词编号', // TODO 星语:如果长度超过 4 个字符,会导致表格列宽度不够,需要优化
  18 + primaryTitle: '敏感词编号',
19 19 action: true,
20 20 columns: [
21 21 {
... ... @@ -25,7 +25,7 @@ const crudSchemas = reactive&lt;VxeCrudSchema&gt;({
25 25 },
26 26 {
27 27 title: '标签',
28   - field: 'tags', // TODO 星语:如果是数组的话,是不是使用 el tag 展示呀?
  28 + field: 'tags',
29 29 table: {
30 30 slots: {
31 31 default: 'tags_default'
... ...
yudao-ui-admin-vue3/src/views/system/tenant/tenant.data.ts
... ... @@ -122,7 +122,7 @@ const crudSchemas = reactive&lt;VxeCrudSchema&gt;({
122 122 {
123 123 title: t('table.createTime'),
124 124 field: 'createTime',
125   - formatter: 'formatDate', // TODO 星语:要不给 formatter = formatDate 的时候,设置一个它的默认宽度,避免缩进
  125 + formatter: 'formatDate',
126 126 isForm: false
127 127 }
128 128 ]
... ...
yudao-ui-admin-vue3/src/views/system/tenantPackage/index.vue
... ... @@ -25,7 +25,7 @@
25 25 ref="formRef"
26 26 >
27 27 <template #menuIds>
28   - <el-card class="box-card">
  28 + <el-card class="w-120">
29 29 <template #header>
30 30 <div class="card-header">
31 31 全选/全不选:
... ...
yudao-ui-admin-vue3/src/views/system/tenantPackage/tenantPackage.data.ts
... ... @@ -36,7 +36,7 @@ const crudSchemas = reactive&lt;VxeCrudSchema&gt;({
36 36 },
37 37 {
38 38 title: '菜单权限',
39   - field: 'menuIds', // TODO 星语:菜单权限,表单可以搞大点哇?
  39 + field: 'menuIds',
40 40 isTable: false
41 41 },
42 42 {
... ...
yudao-ui-admin-vue3/src/views/system/user/index.vue
... ... @@ -142,11 +142,14 @@
142 142 <span>{{ row.dept?.name }}</span>
143 143 </template>
144 144 <template #postIds="{ row }">
145   - <el-tag v-for="(post, index) in row.postIds" :key="index" index="">
146   - <template v-for="postObj in postOptions">
147   - {{ post === postObj.id ? postObj.name : '' }}
148   - </template>
149   - </el-tag>
  145 + <template v-if="row.postIds !== ''">
  146 + <el-tag v-for="(post, index) in row.postIds" :key="index" index="">
  147 + <template v-for="postObj in postOptions">
  148 + {{ post === postObj.id ? postObj.name : '' }}
  149 + </template>
  150 + </el-tag>
  151 + </template>
  152 + <template v-else> </template>
150 153 </template>
151 154 </Descriptions>
152 155 <!-- 操作按钮 -->
... ... @@ -379,7 +382,7 @@ const handleCreate = async () =&gt; {
379 382  
380 383 // 修改操作
381 384 const handleUpdate = async (rowId: number) => {
382   - setDialogTile('update') // TODO @星语:有警告
  385 + setDialogTile('update')
383 386 await nextTick()
384 387 unref(formRef)?.delSchema('username')
385 388 unref(formRef)?.delSchema('password')
... ...
yudao-ui-admin-vue3/src/views/system/user/user.data.ts
... ... @@ -13,8 +13,8 @@ export const rules = reactive({
13 13 status: [required],
14 14 mobile: [
15 15 {
16   - pattern:
17   - /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/, // TODO @星语:前端只校验长度,格式交给后端;因为号码格式不断在变的
  16 + min: 11,
  17 + max: 11,
18 18 trigger: 'blur',
19 19 message: '请输入正确的手机号码'
20 20 }
... ... @@ -57,12 +57,12 @@ const crudSchemas = reactive&lt;VxeCrudSchema&gt;({
57 57 },
58 58 {
59 59 title: '部门',
60   - field: 'deptId', // TODO 星语:详情的部门没展示
  60 + field: 'deptId',
61 61 isTable: false
62 62 },
63 63 {
64 64 title: '岗位',
65   - field: 'postIds', // TODO 星语:岗位为空的时候,要不要不展示
  65 + field: 'postIds',
66 66 isTable: false
67 67 },
68 68 {
... ... @@ -75,7 +75,7 @@ const crudSchemas = reactive&lt;VxeCrudSchema&gt;({
75 75 {
76 76 title: '最后登录时间',
77 77 field: 'loginDate',
78   - formatter: 'formatDate', // TODO 星语:未登录的时候,不要展示 Invalid Date
  78 + formatter: 'formatDate',
79 79 isForm: false
80 80 },
81 81 {
... ...