Commit bef3511c6e784d1fcb2032a175647545bb79b874

Authored by 芋道源码
Committed by Gitee
2 parents cb6a9a12 2c1419fb

!291 升级 vue2 && 完善 vue3 vxe demo

Merge pull request !291 from xingyu/dev
Showing 136 changed files with 4252 additions and 4528 deletions

Too many changes.

To preserve performance only 100 of 136 files are displayed.

yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue/views/index.vue.vm
@@ -67,13 +67,13 @@ @@ -67,13 +67,13 @@
67 #set ($comment=$column.columnComment) 67 #set ($comment=$column.columnComment)
68 #if ($column.javaType == "Date")## 时间类型 68 #if ($column.javaType == "Date")## 时间类型
69 <el-table-column label="${comment}" align="center" prop="${javaField}" width="180"> 69 <el-table-column label="${comment}" align="center" prop="${javaField}" width="180">
70 - <template slot-scope="scope"> 70 + <template v-slot="scope">
71 <span>{{ parseTime(scope.row.${javaField}) }}</span> 71 <span>{{ parseTime(scope.row.${javaField}) }}</span>
72 </template> 72 </template>
73 </el-table-column> 73 </el-table-column>
74 #elseif("" != $column.dictType)## 数据字典 74 #elseif("" != $column.dictType)## 数据字典
75 <el-table-column label="${comment}" align="center" prop="${javaField}"> 75 <el-table-column label="${comment}" align="center" prop="${javaField}">
76 - <template slot-scope="scope"> 76 + <template v-slot="scope">
77 <dict-tag :type="DICT_TYPE.$dictType.toUpperCase()" :value="scope.row.${column.javaField}" /> 77 <dict-tag :type="DICT_TYPE.$dictType.toUpperCase()" :value="scope.row.${column.javaField}" />
78 </template> 78 </template>
79 </el-table-column> 79 </el-table-column>
@@ -83,7 +83,7 @@ @@ -83,7 +83,7 @@
83 #end 83 #end
84 #end 84 #end
85 <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> 85 <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
86 - <template slot-scope="scope"> 86 + <template v-slot="scope">
87 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" 87 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
88 v-hasPermi="['${permissionPrefix}:update']">修改</el-button> 88 v-hasPermi="['${permissionPrefix}:update']">修改</el-button>
89 <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" 89 <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm
@@ -97,17 +97,20 @@ getList() @@ -97,17 +97,20 @@ getList()
97 <ContentWrap> 97 <ContentWrap>
98 <!-- 操作工具栏 --> 98 <!-- 操作工具栏 -->
99 <div class="mb-10px"> 99 <div class="mb-10px">
100 - <el-button type="primary" v-hasPermi="['${permissionPrefix}:create']" @click="handleCreate">  
101 - <Icon icon="ep:zoom-in" class="mr-5px" /> {{ t('action.add') }}  
102 - </el-button>  
103 - <el-button 100 + <XButton
  101 + type="primary"
  102 + preIcon="ep:zoom-in"
  103 + :title="t('action.add')"
  104 + v-hasPermi="['${permissionPrefix}:create']"
  105 + @click="handleCreate()"
  106 + />
  107 + <XButton
104 type="warning" 108 type="warning"
  109 + preIcon="ep:download"
  110 + :title="t('action.export')"
105 v-hasPermi="['${permissionPrefix}:export']" 111 v-hasPermi="['${permissionPrefix}:export']"
106 - :loading="tableObject.exportLoading"  
107 @click="exportList('数据.xls')" 112 @click="exportList('数据.xls')"
108 - >  
109 - <Icon icon="ep:download" class="mr-5px" /> {{ t('action.export') }}  
110 - </el-button> 113 + />
111 </div> 114 </div>
112 <!-- 列表 --> 115 <!-- 列表 -->
113 <Table 116 <Table
@@ -137,30 +140,30 @@ getList() @@ -137,30 +140,30 @@ getList()
137 #end 140 #end
138 #end 141 #end
139 <template #action="{ row }"> 142 <template #action="{ row }">
140 - <el-button 143 + <XButton
141 link 144 link
142 type="primary" 145 type="primary"
  146 + preIcon="ep:edit"
  147 + :title="t('action.edit')"
143 v-hasPermi="['${permissionPrefix}:update']" 148 v-hasPermi="['${permissionPrefix}:update']"
144 - @click="handleUpdate(row)"  
145 - >  
146 - <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }}  
147 - </el-button>  
148 - <el-button 149 + @click="handleUpdate(row.id)"
  150 + />
  151 + <XButton
149 link 152 link
150 type="primary" 153 type="primary"
  154 + preIcon="ep:view"
  155 + :title="t('action.detail')"
151 v-hasPermi="['${permissionPrefix}:update']" 156 v-hasPermi="['${permissionPrefix}:update']"
152 @click="handleDetail(row)" 157 @click="handleDetail(row)"
153 - >  
154 - <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }}  
155 - </el-button>  
156 - <el-button 158 + />
  159 + <XButton
157 link 160 link
158 type="primary" 161 type="primary"
  162 + preIcon="ep:delete"
  163 + :title="t('action.del')"
159 v-hasPermi="['${permissionPrefix}:delete']" 164 v-hasPermi="['${permissionPrefix}:delete']"
160 - @click="delList(row.id, false)"  
161 - >  
162 - <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }}  
163 - </el-button> 165 + @click="handleDelete(row.id)"
  166 + />
164 </template> 167 </template>
165 </Table> 168 </Table>
166 </ContentWrap> 169 </ContentWrap>
@@ -196,15 +199,14 @@ getList() @@ -196,15 +199,14 @@ getList()
196 </Descriptions> 199 </Descriptions>
197 <!-- 操作按钮 --> 200 <!-- 操作按钮 -->
198 <template #footer> 201 <template #footer>
199 - <el-button 202 + <XButton
200 v-if="['create', 'update'].includes(actionType)" 203 v-if="['create', 'update'].includes(actionType)"
201 - type="primary"  
202 :loading="actionLoading" 204 :loading="actionLoading"
  205 + :title="t('action.save')"
  206 + type="primary"
203 @click="submitForm" 207 @click="submitForm"
204 - >  
205 - {{ t('action.save') }}  
206 - </el-button>  
207 - <el-button @click="dialogVisible = false">{{ t('dialog.close') }}</el-button> 208 + />
  209 + <XButton :loading="actionLoading" :title="t('dialog.close')" @click="dialogVisible = false" />
208 </template> 210 </template>
209 </Dialog> 211 </Dialog>
210 </template> 212 </template>
yudao-ui-admin-vue3/package.json
1 { 1 {
2 "name": "ruoyi-vue-pro-vue3", 2 "name": "ruoyi-vue-pro-vue3",
3 - "version": "1.6.4.1831", 3 + "version": "1.6.4.1841",
4 "description": "基于vue3、vite3、element-plus、typesScript", 4 "description": "基于vue3、vite3、element-plus、typesScript",
5 "author": "xingyu", 5 "author": "xingyu",
6 "private": false, 6 "private": false,
@@ -31,7 +31,7 @@ @@ -31,7 +31,7 @@
31 "@wangeditor/editor-for-vue": "^5.1.10", 31 "@wangeditor/editor-for-vue": "^5.1.10",
32 "@zxcvbn-ts/core": "^2.1.0", 32 "@zxcvbn-ts/core": "^2.1.0",
33 "animate.css": "^4.1.1", 33 "animate.css": "^4.1.1",
34 - "axios": "^0.27.2", 34 + "axios": "^1.1.3",
35 "crypto-js": "^4.1.1", 35 "crypto-js": "^4.1.1",
36 "dayjs": "^1.11.6", 36 "dayjs": "^1.11.6",
37 "echarts": "^5.4.0", 37 "echarts": "^5.4.0",
@@ -64,14 +64,14 @@ @@ -64,14 +64,14 @@
64 "@purge-icons/generated": "^0.9.0", 64 "@purge-icons/generated": "^0.9.0",
65 "@types/intro.js": "^5.1.0", 65 "@types/intro.js": "^5.1.0",
66 "@types/lodash-es": "^4.17.6", 66 "@types/lodash-es": "^4.17.6",
67 - "@types/node": "^18.8.0", 67 + "@types/node": "^18.11.9",
68 "@types/nprogress": "^0.2.0", 68 "@types/nprogress": "^0.2.0",
69 "@types/qrcode": "^1.5.0", 69 "@types/qrcode": "^1.5.0",
70 "@types/qs": "^6.9.7", 70 "@types/qs": "^6.9.7",
71 - "@typescript-eslint/eslint-plugin": "^5.42.0",  
72 - "@typescript-eslint/parser": "^5.42.0", 71 + "@typescript-eslint/eslint-plugin": "^5.42.1",
  72 + "@typescript-eslint/parser": "^5.42.1",
73 "@vitejs/plugin-vue": "^3.2.0", 73 "@vitejs/plugin-vue": "^3.2.0",
74 - "@vitejs/plugin-vue-jsx": "^2.1.0", 74 + "@vitejs/plugin-vue-jsx": "^2.1.1",
75 "autoprefixer": "^10.4.13", 75 "autoprefixer": "^10.4.13",
76 "eslint": "^8.27.0", 76 "eslint": "^8.27.0",
77 "eslint-config-prettier": "^8.5.0", 77 "eslint-config-prettier": "^8.5.0",
@@ -94,8 +94,8 @@ @@ -94,8 +94,8 @@
94 "stylelint-config-standard": "^29.0.0", 94 "stylelint-config-standard": "^29.0.0",
95 "stylelint-order": "^5.0.0", 95 "stylelint-order": "^5.0.0",
96 "typescript": "4.8.4", 96 "typescript": "4.8.4",
97 - "unplugin-vue-macros": "^0.16.0",  
98 - "vite": "3.2.2", 97 + "unplugin-vue-macros": "^0.16.1",
  98 + "vite": "3.2.3",
99 "vite-plugin-compression": "^0.5.1", 99 "vite-plugin-compression": "^0.5.1",
100 "vite-plugin-eslint": "^1.8.1", 100 "vite-plugin-eslint": "^1.8.1",
101 "vite-plugin-html": "^3.2.0", 101 "vite-plugin-html": "^3.2.0",
yudao-ui-admin-vue3/pnpm-lock.yaml
@@ -9,21 +9,21 @@ specifiers: @@ -9,21 +9,21 @@ specifiers:
9 '@purge-icons/generated': ^0.9.0 9 '@purge-icons/generated': ^0.9.0
10 '@types/intro.js': ^5.1.0 10 '@types/intro.js': ^5.1.0
11 '@types/lodash-es': ^4.17.6 11 '@types/lodash-es': ^4.17.6
12 - '@types/node': ^18.8.0 12 + '@types/node': ^18.11.9
13 '@types/nprogress': ^0.2.0 13 '@types/nprogress': ^0.2.0
14 '@types/qrcode': ^1.5.0 14 '@types/qrcode': ^1.5.0
15 '@types/qs': ^6.9.7 15 '@types/qs': ^6.9.7
16 - '@typescript-eslint/eslint-plugin': ^5.42.0  
17 - '@typescript-eslint/parser': ^5.42.0 16 + '@typescript-eslint/eslint-plugin': ^5.42.1
  17 + '@typescript-eslint/parser': ^5.42.1
18 '@vitejs/plugin-vue': ^3.2.0 18 '@vitejs/plugin-vue': ^3.2.0
19 - '@vitejs/plugin-vue-jsx': ^2.1.0 19 + '@vitejs/plugin-vue-jsx': ^2.1.1
20 '@vueuse/core': ^9.4.0 20 '@vueuse/core': ^9.4.0
21 '@wangeditor/editor': ^5.1.22 21 '@wangeditor/editor': ^5.1.22
22 '@wangeditor/editor-for-vue': ^5.1.10 22 '@wangeditor/editor-for-vue': ^5.1.10
23 '@zxcvbn-ts/core': ^2.1.0 23 '@zxcvbn-ts/core': ^2.1.0
24 animate.css: ^4.1.1 24 animate.css: ^4.1.1
25 autoprefixer: ^10.4.13 25 autoprefixer: ^10.4.13
26 - axios: ^0.27.2 26 + axios: ^1.1.3
27 crypto-js: ^4.1.1 27 crypto-js: ^4.1.1
28 dayjs: ^1.11.6 28 dayjs: ^1.11.6
29 echarts: ^5.4.0 29 echarts: ^5.4.0
@@ -59,9 +59,9 @@ specifiers: @@ -59,9 +59,9 @@ specifiers:
59 stylelint-config-standard: ^29.0.0 59 stylelint-config-standard: ^29.0.0
60 stylelint-order: ^5.0.0 60 stylelint-order: ^5.0.0
61 typescript: 4.8.4 61 typescript: 4.8.4
62 - unplugin-vue-macros: ^0.16.0 62 + unplugin-vue-macros: ^0.16.1
63 url: ^0.11.0 63 url: ^0.11.0
64 - vite: 3.2.2 64 + vite: 3.2.3
65 vite-plugin-compression: ^0.5.1 65 vite-plugin-compression: ^0.5.1
66 vite-plugin-eslint: ^1.8.1 66 vite-plugin-eslint: ^1.8.1
67 vite-plugin-html: ^3.2.0 67 vite-plugin-html: ^3.2.0
@@ -87,7 +87,7 @@ dependencies: @@ -87,7 +87,7 @@ dependencies:
87 '@wangeditor/editor-for-vue': 5.1.12_wrllzy32b3ic46yjdgf3mkhqlq 87 '@wangeditor/editor-for-vue': 5.1.12_wrllzy32b3ic46yjdgf3mkhqlq
88 '@zxcvbn-ts/core': 2.1.0 88 '@zxcvbn-ts/core': 2.1.0
89 animate.css: 4.1.1 89 animate.css: 4.1.1
90 - axios: 0.27.2 90 + axios: 1.1.3
91 crypto-js: 4.1.1 91 crypto-js: 4.1.1
92 dayjs: 1.11.6 92 dayjs: 1.11.6
93 echarts: 5.4.0 93 echarts: 5.4.0
@@ -116,18 +116,18 @@ devDependencies: @@ -116,18 +116,18 @@ devDependencies:
116 '@commitlint/cli': 17.2.0 116 '@commitlint/cli': 17.2.0
117 '@commitlint/config-conventional': 17.2.0 117 '@commitlint/config-conventional': 17.2.0
118 '@iconify/json': 2.1.134 118 '@iconify/json': 2.1.134
119 - '@intlify/vite-plugin-vue-i18n': 6.0.3_vite@3.2.2+vue-i18n@9.2.2 119 + '@intlify/vite-plugin-vue-i18n': 6.0.3_vite@3.2.3+vue-i18n@9.2.2
120 '@purge-icons/generated': 0.9.0 120 '@purge-icons/generated': 0.9.0
121 '@types/intro.js': 5.1.0 121 '@types/intro.js': 5.1.0
122 '@types/lodash-es': 4.17.6 122 '@types/lodash-es': 4.17.6
123 - '@types/node': 18.11.2 123 + '@types/node': 18.11.9
124 '@types/nprogress': 0.2.0 124 '@types/nprogress': 0.2.0
125 '@types/qrcode': 1.5.0 125 '@types/qrcode': 1.5.0
126 '@types/qs': 6.9.7 126 '@types/qs': 6.9.7
127 - '@typescript-eslint/eslint-plugin': 5.42.0_ofgjrzjuekeo7s3hdyz2yuzw34  
128 - '@typescript-eslint/parser': 5.42.0_rmayb2veg2btbq6mbmnyivgasy  
129 - '@vitejs/plugin-vue': 3.2.0_vite@3.2.2+vue@3.2.41  
130 - '@vitejs/plugin-vue-jsx': 2.1.0_vite@3.2.2+vue@3.2.41 127 + '@typescript-eslint/eslint-plugin': 5.42.1_2udltptbznfmezdozpdoa2aemq
  128 + '@typescript-eslint/parser': 5.42.1_rmayb2veg2btbq6mbmnyivgasy
  129 + '@vitejs/plugin-vue': 3.2.0_vite@3.2.3+vue@3.2.41
  130 + '@vitejs/plugin-vue-jsx': 2.1.1_vite@3.2.3+vue@3.2.41
131 autoprefixer: 10.4.13_postcss@8.4.18 131 autoprefixer: 10.4.13_postcss@8.4.18
132 eslint: 8.27.0 132 eslint: 8.27.0
133 eslint-config-prettier: 8.5.0_eslint@8.27.0 133 eslint-config-prettier: 8.5.0_eslint@8.27.0
@@ -150,15 +150,15 @@ devDependencies: @@ -150,15 +150,15 @@ devDependencies:
150 stylelint-config-standard: 29.0.0_stylelint@14.14.1 150 stylelint-config-standard: 29.0.0_stylelint@14.14.1
151 stylelint-order: 5.0.0_stylelint@14.14.1 151 stylelint-order: 5.0.0_stylelint@14.14.1
152 typescript: 4.8.4 152 typescript: 4.8.4
153 - unplugin-vue-macros: 0.16.0_f6zolwli45a6dkgzq5zhbk2c7e  
154 - vite: 3.2.2_less@4.1.3  
155 - vite-plugin-compression: 0.5.1_vite@3.2.2  
156 - vite-plugin-eslint: 1.8.1_eslint@8.27.0+vite@3.2.2  
157 - vite-plugin-html: 3.2.0_vite@3.2.2  
158 - vite-plugin-purge-icons: 0.9.1_vite@3.2.2  
159 - vite-plugin-style-import: 2.0.0_vite@3.2.2  
160 - vite-plugin-svg-icons: 2.0.1_vite@3.2.2  
161 - vite-plugin-windicss: 1.8.8_vite@3.2.2 153 + unplugin-vue-macros: 0.16.1_y7pktweo3ai2nyo3s3skrzfcku
  154 + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi
  155 + vite-plugin-compression: 0.5.1_vite@3.2.3
  156 + vite-plugin-eslint: 1.8.1_eslint@8.27.0+vite@3.2.3
  157 + vite-plugin-html: 3.2.0_vite@3.2.3
  158 + vite-plugin-purge-icons: 0.9.1_vite@3.2.3
  159 + vite-plugin-style-import: 2.0.0_vite@3.2.3
  160 + vite-plugin-svg-icons: 2.0.1_vite@3.2.3
  161 + vite-plugin-windicss: 1.8.8_vite@3.2.3
162 vue-tsc: 1.0.9_typescript@4.8.4 162 vue-tsc: 1.0.9_typescript@4.8.4
163 windicss: 3.5.6 163 windicss: 3.5.6
164 164
@@ -205,7 +205,7 @@ packages: @@ -205,7 +205,7 @@ packages:
205 '@babel/parser': 7.20.0 205 '@babel/parser': 7.20.0
206 '@babel/template': 7.18.10 206 '@babel/template': 7.18.10
207 '@babel/traverse': 7.20.0 207 '@babel/traverse': 7.20.0
208 - '@babel/types': 7.19.4 208 + '@babel/types': 7.20.0
209 convert-source-map: 1.8.0 209 convert-source-map: 1.8.0
210 debug: 4.3.4 210 debug: 4.3.4
211 gensync: 1.0.0-beta.2 211 gensync: 1.0.0-beta.2
@@ -244,8 +244,8 @@ packages: @@ -244,8 +244,8 @@ packages:
244 semver: 6.3.0 244 semver: 6.3.0
245 dev: true 245 dev: true
246 246
247 - /@babel/helper-create-class-features-plugin/7.19.0_@babel+core@7.19.6:  
248 - resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} 247 + /@babel/helper-create-class-features-plugin/7.20.2_@babel+core@7.19.6:
  248 + resolution: {integrity: sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==}
249 engines: {node: '>=6.9.0'} 249 engines: {node: '>=6.9.0'}
250 peerDependencies: 250 peerDependencies:
251 '@babel/core': ^7.0.0 251 '@babel/core': ^7.0.0
@@ -307,7 +307,7 @@ packages: @@ -307,7 +307,7 @@ packages:
307 '@babel/helper-validator-identifier': 7.19.1 307 '@babel/helper-validator-identifier': 7.19.1
308 '@babel/template': 7.18.10 308 '@babel/template': 7.18.10
309 '@babel/traverse': 7.20.0 309 '@babel/traverse': 7.20.0
310 - '@babel/types': 7.19.4 310 + '@babel/types': 7.20.0
311 transitivePeerDependencies: 311 transitivePeerDependencies:
312 - supports-color 312 - supports-color
313 dev: true 313 dev: true
@@ -319,8 +319,8 @@ packages: @@ -319,8 +319,8 @@ packages:
319 '@babel/types': 7.20.0 319 '@babel/types': 7.20.0
320 dev: true 320 dev: true
321 321
322 - /@babel/helper-plugin-utils/7.19.0:  
323 - resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} 322 + /@babel/helper-plugin-utils/7.20.2:
  323 + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==}
324 engines: {node: '>=6.9.0'} 324 engines: {node: '>=6.9.0'}
325 dev: true 325 dev: true
326 326
@@ -401,7 +401,7 @@ packages: @@ -401,7 +401,7 @@ packages:
401 engines: {node: '>=6.0.0'} 401 engines: {node: '>=6.0.0'}
402 hasBin: true 402 hasBin: true
403 dependencies: 403 dependencies:
404 - '@babel/types': 7.19.4 404 + '@babel/types': 7.20.0
405 dev: true 405 dev: true
406 406
407 /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.19.6: 407 /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.19.6:
@@ -411,29 +411,29 @@ packages: @@ -411,29 +411,29 @@ packages:
411 '@babel/core': ^7.0.0-0 411 '@babel/core': ^7.0.0-0
412 dependencies: 412 dependencies:
413 '@babel/core': 7.19.6 413 '@babel/core': 7.19.6
414 - '@babel/helper-plugin-utils': 7.19.0 414 + '@babel/helper-plugin-utils': 7.20.2
415 dev: true 415 dev: true
416 416
417 - /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.19.6:  
418 - resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} 417 + /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.19.6:
  418 + resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==}
419 engines: {node: '>=6.9.0'} 419 engines: {node: '>=6.9.0'}
420 peerDependencies: 420 peerDependencies:
421 '@babel/core': ^7.0.0-0 421 '@babel/core': ^7.0.0-0
422 dependencies: 422 dependencies:
423 '@babel/core': 7.19.6 423 '@babel/core': 7.19.6
424 - '@babel/helper-plugin-utils': 7.19.0 424 + '@babel/helper-plugin-utils': 7.20.2
425 dev: true 425 dev: true
426 426
427 - /@babel/plugin-transform-typescript/7.19.3_@babel+core@7.19.6:  
428 - resolution: {integrity: sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==} 427 + /@babel/plugin-transform-typescript/7.20.2_@babel+core@7.19.6:
  428 + resolution: {integrity: sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==}
429 engines: {node: '>=6.9.0'} 429 engines: {node: '>=6.9.0'}
430 peerDependencies: 430 peerDependencies:
431 '@babel/core': ^7.0.0-0 431 '@babel/core': ^7.0.0-0
432 dependencies: 432 dependencies:
433 '@babel/core': 7.19.6 433 '@babel/core': 7.19.6
434 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.6  
435 - '@babel/helper-plugin-utils': 7.19.0  
436 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.19.6 434 + '@babel/helper-create-class-features-plugin': 7.20.2_@babel+core@7.19.6
  435 + '@babel/helper-plugin-utils': 7.20.2
  436 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.19.6
437 transitivePeerDependencies: 437 transitivePeerDependencies:
438 - supports-color 438 - supports-color
439 dev: true 439 dev: true
@@ -454,24 +454,6 @@ packages: @@ -454,24 +454,6 @@ packages:
454 '@babel/types': 7.20.0 454 '@babel/types': 7.20.0
455 dev: true 455 dev: true
456 456
457 - /@babel/traverse/7.19.3:  
458 - resolution: {integrity: sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==}  
459 - engines: {node: '>=6.9.0'}  
460 - dependencies:  
461 - '@babel/code-frame': 7.18.6  
462 - '@babel/generator': 7.20.0  
463 - '@babel/helper-environment-visitor': 7.18.9  
464 - '@babel/helper-function-name': 7.19.0  
465 - '@babel/helper-hoist-variables': 7.18.6  
466 - '@babel/helper-split-export-declaration': 7.18.6  
467 - '@babel/parser': 7.20.0  
468 - '@babel/types': 7.20.0  
469 - debug: 4.3.4  
470 - globals: 11.12.0  
471 - transitivePeerDependencies:  
472 - - supports-color  
473 - dev: true  
474 -  
475 /@babel/traverse/7.20.0: 457 /@babel/traverse/7.20.0:
476 resolution: {integrity: sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ==} 458 resolution: {integrity: sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ==}
477 engines: {node: '>=6.9.0'} 459 engines: {node: '>=6.9.0'}
@@ -498,15 +480,6 @@ packages: @@ -498,15 +480,6 @@ packages:
498 '@babel/helper-validator-identifier': 7.19.1 480 '@babel/helper-validator-identifier': 7.19.1
499 to-fast-properties: 2.0.0 481 to-fast-properties: 2.0.0
500 482
501 - /@babel/types/7.19.4:  
502 - resolution: {integrity: sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==}  
503 - engines: {node: '>=6.9.0'}  
504 - dependencies:  
505 - '@babel/helper-string-parser': 7.19.4  
506 - '@babel/helper-validator-identifier': 7.19.1  
507 - to-fast-properties: 2.0.0  
508 - dev: true  
509 -  
510 /@babel/types/7.20.0: 483 /@babel/types/7.20.0:
511 resolution: {integrity: sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==} 484 resolution: {integrity: sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==}
512 engines: {node: '>=6.9.0'} 485 engines: {node: '>=6.9.0'}
@@ -856,7 +829,7 @@ packages: @@ -856,7 +829,7 @@ packages:
856 engines: {node: '>= 14'} 829 engines: {node: '>= 14'}
857 dev: true 830 dev: true
858 831
859 - /@intlify/vite-plugin-vue-i18n/6.0.3_vite@3.2.2+vue-i18n@9.2.2: 832 + /@intlify/vite-plugin-vue-i18n/6.0.3_vite@3.2.3+vue-i18n@9.2.2:
860 resolution: {integrity: sha512-6SgNzPAOCR90wvt368lKzi7f/5ZEWJn22UCGvhFsP3XvKqlF3cVzojahgQ6o+LTdCkExeM6wPgd+haFf28E9VQ==} 833 resolution: {integrity: sha512-6SgNzPAOCR90wvt368lKzi7f/5ZEWJn22UCGvhFsP3XvKqlF3cVzojahgQ6o+LTdCkExeM6wPgd+haFf28E9VQ==}
861 engines: {node: '>= 14.6'} 834 engines: {node: '>= 14.6'}
862 peerDependencies: 835 peerDependencies:
@@ -877,7 +850,7 @@ packages: @@ -877,7 +850,7 @@ packages:
877 debug: 4.3.4 850 debug: 4.3.4
878 fast-glob: 3.2.12 851 fast-glob: 3.2.12
879 source-map: 0.6.1 852 source-map: 0.6.1
880 - vite: 3.2.2_less@4.1.3 853 + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi
881 vue-i18n: 9.2.2_vue@3.2.41 854 vue-i18n: 9.2.2_vue@3.2.41
882 transitivePeerDependencies: 855 transitivePeerDependencies:
883 - supports-color 856 - supports-color
@@ -1056,7 +1029,7 @@ packages: @@ -1056,7 +1029,7 @@ packages:
1056 resolution: {integrity: sha512-Ny/PJkO6nxWAQnaet8q/oWz15lrfwvdvBpuY4treB0CSsBO1CG0fVuNLngR3m3bepQLd+E4c3Y3DlC2okpUvPw==} 1029 resolution: {integrity: sha512-Ny/PJkO6nxWAQnaet8q/oWz15lrfwvdvBpuY4treB0CSsBO1CG0fVuNLngR3m3bepQLd+E4c3Y3DlC2okpUvPw==}
1057 dependencies: 1030 dependencies:
1058 '@types/fined': 1.1.3 1031 '@types/fined': 1.1.3
1059 - '@types/node': 18.11.2 1032 + '@types/node': 18.11.9
1060 dev: true 1033 dev: true
1061 1034
1062 /@types/lodash-es/4.17.6: 1035 /@types/lodash-es/4.17.6:
@@ -1075,8 +1048,8 @@ packages: @@ -1075,8 +1048,8 @@ packages:
1075 resolution: {integrity: sha512-vQAnaReSQkEDa8uwAyQby8bYGKu84R/deEc6mg5T8fX6gzCn8QW6rziSgsti1fNvsrswKUKPnVTi7uoB+u62Mw==} 1048 resolution: {integrity: sha512-vQAnaReSQkEDa8uwAyQby8bYGKu84R/deEc6mg5T8fX6gzCn8QW6rziSgsti1fNvsrswKUKPnVTi7uoB+u62Mw==}
1076 dev: true 1049 dev: true
1077 1050
1078 - /@types/node/18.11.2:  
1079 - resolution: {integrity: sha512-BWN3M23gLO2jVG8g/XHIRFWiiV4/GckeFIqbU/C4V3xpoBBWSMk4OZomouN0wCkfQFPqgZikyLr7DOYDysIkkw==} 1051 + /@types/node/18.11.9:
  1052 + resolution: {integrity: sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==}
1080 dev: true 1053 dev: true
1081 1054
1082 /@types/normalize-package-data/2.4.1: 1055 /@types/normalize-package-data/2.4.1:
@@ -1094,7 +1067,7 @@ packages: @@ -1094,7 +1067,7 @@ packages:
1094 /@types/qrcode/1.5.0: 1067 /@types/qrcode/1.5.0:
1095 resolution: {integrity: sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA==} 1068 resolution: {integrity: sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA==}
1096 dependencies: 1069 dependencies:
1097 - '@types/node': 18.11.2 1070 + '@types/node': 18.11.9
1098 dev: true 1071 dev: true
1099 1072
1100 /@types/qs/6.9.7: 1073 /@types/qs/6.9.7:
@@ -1108,20 +1081,20 @@ packages: @@ -1108,20 +1081,20 @@ packages:
1108 /@types/svgo/2.6.4: 1081 /@types/svgo/2.6.4:
1109 resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} 1082 resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==}
1110 dependencies: 1083 dependencies:
1111 - '@types/node': 18.11.2 1084 + '@types/node': 18.11.9
1112 dev: true 1085 dev: true
1113 1086
1114 /@types/through/0.0.30: 1087 /@types/through/0.0.30:
1115 resolution: {integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==} 1088 resolution: {integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==}
1116 dependencies: 1089 dependencies:
1117 - '@types/node': 18.11.2 1090 + '@types/node': 18.11.9
1118 dev: true 1091 dev: true
1119 1092
1120 /@types/web-bluetooth/0.0.16: 1093 /@types/web-bluetooth/0.0.16:
1121 resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} 1094 resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
1122 1095
1123 - /@typescript-eslint/eslint-plugin/5.42.0_ofgjrzjuekeo7s3hdyz2yuzw34:  
1124 - resolution: {integrity: sha512-5TJh2AgL6+wpL8H/GTSjNb4WrjKoR2rqvFxR/DDTqYNk6uXn8BJMEcncLSpMbf/XV1aS0jAjYwn98uvVCiAywQ==} 1096 + /@typescript-eslint/eslint-plugin/5.42.1_2udltptbznfmezdozpdoa2aemq:
  1097 + resolution: {integrity: sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg==}
1125 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1098 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1126 peerDependencies: 1099 peerDependencies:
1127 '@typescript-eslint/parser': ^5.0.0 1100 '@typescript-eslint/parser': ^5.0.0
@@ -1131,10 +1104,10 @@ packages: @@ -1131,10 +1104,10 @@ packages:
1131 typescript: 1104 typescript:
1132 optional: true 1105 optional: true
1133 dependencies: 1106 dependencies:
1134 - '@typescript-eslint/parser': 5.42.0_rmayb2veg2btbq6mbmnyivgasy  
1135 - '@typescript-eslint/scope-manager': 5.42.0  
1136 - '@typescript-eslint/type-utils': 5.42.0_rmayb2veg2btbq6mbmnyivgasy  
1137 - '@typescript-eslint/utils': 5.42.0_rmayb2veg2btbq6mbmnyivgasy 1107 + '@typescript-eslint/parser': 5.42.1_rmayb2veg2btbq6mbmnyivgasy
  1108 + '@typescript-eslint/scope-manager': 5.42.1
  1109 + '@typescript-eslint/type-utils': 5.42.1_rmayb2veg2btbq6mbmnyivgasy
  1110 + '@typescript-eslint/utils': 5.42.1_rmayb2veg2btbq6mbmnyivgasy
1138 debug: 4.3.4 1111 debug: 4.3.4
1139 eslint: 8.27.0 1112 eslint: 8.27.0
1140 ignore: 5.2.0 1113 ignore: 5.2.0
@@ -1147,8 +1120,8 @@ packages: @@ -1147,8 +1120,8 @@ packages:
1147 - supports-color 1120 - supports-color
1148 dev: true 1121 dev: true
1149 1122
1150 - /@typescript-eslint/parser/5.42.0_rmayb2veg2btbq6mbmnyivgasy:  
1151 - resolution: {integrity: sha512-Ixh9qrOTDRctFg3yIwrLkgf33AHyEIn6lhyf5cCfwwiGtkWhNpVKlEZApi3inGQR/barWnY7qY8FbGKBO7p3JA==} 1123 + /@typescript-eslint/parser/5.42.1_rmayb2veg2btbq6mbmnyivgasy:
  1124 + resolution: {integrity: sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q==}
1152 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1125 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1153 peerDependencies: 1126 peerDependencies:
1154 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 1127 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1157,9 +1130,9 @@ packages: @@ -1157,9 +1130,9 @@ packages:
1157 typescript: 1130 typescript:
1158 optional: true 1131 optional: true
1159 dependencies: 1132 dependencies:
1160 - '@typescript-eslint/scope-manager': 5.42.0  
1161 - '@typescript-eslint/types': 5.42.0  
1162 - '@typescript-eslint/typescript-estree': 5.42.0_typescript@4.8.4 1133 + '@typescript-eslint/scope-manager': 5.42.1
  1134 + '@typescript-eslint/types': 5.42.1
  1135 + '@typescript-eslint/typescript-estree': 5.42.1_typescript@4.8.4
1163 debug: 4.3.4 1136 debug: 4.3.4
1164 eslint: 8.27.0 1137 eslint: 8.27.0
1165 typescript: 4.8.4 1138 typescript: 4.8.4
@@ -1167,16 +1140,16 @@ packages: @@ -1167,16 +1140,16 @@ packages:
1167 - supports-color 1140 - supports-color
1168 dev: true 1141 dev: true
1169 1142
1170 - /@typescript-eslint/scope-manager/5.42.0:  
1171 - resolution: {integrity: sha512-l5/3IBHLH0Bv04y+H+zlcLiEMEMjWGaCX6WyHE5Uk2YkSGAMlgdUPsT/ywTSKgu9D1dmmKMYgYZijObfA39Wow==} 1143 + /@typescript-eslint/scope-manager/5.42.1:
  1144 + resolution: {integrity: sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ==}
1172 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1145 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1173 dependencies: 1146 dependencies:
1174 - '@typescript-eslint/types': 5.42.0  
1175 - '@typescript-eslint/visitor-keys': 5.42.0 1147 + '@typescript-eslint/types': 5.42.1
  1148 + '@typescript-eslint/visitor-keys': 5.42.1
1176 dev: true 1149 dev: true
1177 1150
1178 - /@typescript-eslint/type-utils/5.42.0_rmayb2veg2btbq6mbmnyivgasy:  
1179 - resolution: {integrity: sha512-HW14TXC45dFVZxnVW8rnUGnvYyRC0E/vxXShFCthcC9VhVTmjqOmtqj6H5rm9Zxv+ORxKA/1aLGD7vmlLsdlOg==} 1151 + /@typescript-eslint/type-utils/5.42.1_rmayb2veg2btbq6mbmnyivgasy:
  1152 + resolution: {integrity: sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg==}
1180 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1153 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1181 peerDependencies: 1154 peerDependencies:
1182 eslint: '*' 1155 eslint: '*'
@@ -1185,8 +1158,8 @@ packages: @@ -1185,8 +1158,8 @@ packages:
1185 typescript: 1158 typescript:
1186 optional: true 1159 optional: true
1187 dependencies: 1160 dependencies:
1188 - '@typescript-eslint/typescript-estree': 5.42.0_typescript@4.8.4  
1189 - '@typescript-eslint/utils': 5.42.0_rmayb2veg2btbq6mbmnyivgasy 1161 + '@typescript-eslint/typescript-estree': 5.42.1_typescript@4.8.4
  1162 + '@typescript-eslint/utils': 5.42.1_rmayb2veg2btbq6mbmnyivgasy
1190 debug: 4.3.4 1163 debug: 4.3.4
1191 eslint: 8.27.0 1164 eslint: 8.27.0
1192 tsutils: 3.21.0_typescript@4.8.4 1165 tsutils: 3.21.0_typescript@4.8.4
@@ -1195,13 +1168,13 @@ packages: @@ -1195,13 +1168,13 @@ packages:
1195 - supports-color 1168 - supports-color
1196 dev: true 1169 dev: true
1197 1170
1198 - /@typescript-eslint/types/5.42.0:  
1199 - resolution: {integrity: sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==} 1171 + /@typescript-eslint/types/5.42.1:
  1172 + resolution: {integrity: sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==}
1200 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1173 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1201 dev: true 1174 dev: true
1202 1175
1203 - /@typescript-eslint/typescript-estree/5.42.0_typescript@4.8.4:  
1204 - resolution: {integrity: sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==} 1176 + /@typescript-eslint/typescript-estree/5.42.1_typescript@4.8.4:
  1177 + resolution: {integrity: sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==}
1205 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1178 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1206 peerDependencies: 1179 peerDependencies:
1207 typescript: '*' 1180 typescript: '*'
@@ -1209,8 +1182,8 @@ packages: @@ -1209,8 +1182,8 @@ packages:
1209 typescript: 1182 typescript:
1210 optional: true 1183 optional: true
1211 dependencies: 1184 dependencies:
1212 - '@typescript-eslint/types': 5.42.0  
1213 - '@typescript-eslint/visitor-keys': 5.42.0 1185 + '@typescript-eslint/types': 5.42.1
  1186 + '@typescript-eslint/visitor-keys': 5.42.1
1214 debug: 4.3.4 1187 debug: 4.3.4
1215 globby: 11.1.0 1188 globby: 11.1.0
1216 is-glob: 4.0.3 1189 is-glob: 4.0.3
@@ -1221,17 +1194,17 @@ packages: @@ -1221,17 +1194,17 @@ packages:
1221 - supports-color 1194 - supports-color
1222 dev: true 1195 dev: true
1223 1196
1224 - /@typescript-eslint/utils/5.42.0_rmayb2veg2btbq6mbmnyivgasy:  
1225 - resolution: {integrity: sha512-JZ++3+h1vbeG1NUECXQZE3hg0kias9kOtcQr3+JVQ3whnjvKuMyktJAAIj6743OeNPnGBmjj7KEmiDL7qsdnCQ==} 1197 + /@typescript-eslint/utils/5.42.1_rmayb2veg2btbq6mbmnyivgasy:
  1198 + resolution: {integrity: sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ==}
1226 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1199 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1227 peerDependencies: 1200 peerDependencies:
1228 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 1201 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
1229 dependencies: 1202 dependencies:
1230 '@types/json-schema': 7.0.11 1203 '@types/json-schema': 7.0.11
1231 '@types/semver': 7.3.12 1204 '@types/semver': 7.3.12
1232 - '@typescript-eslint/scope-manager': 5.42.0  
1233 - '@typescript-eslint/types': 5.42.0  
1234 - '@typescript-eslint/typescript-estree': 5.42.0_typescript@4.8.4 1205 + '@typescript-eslint/scope-manager': 5.42.1
  1206 + '@typescript-eslint/types': 5.42.1
  1207 + '@typescript-eslint/typescript-estree': 5.42.1_typescript@4.8.4
1235 eslint: 8.27.0 1208 eslint: 8.27.0
1236 eslint-scope: 5.1.1 1209 eslint-scope: 5.1.1
1237 eslint-utils: 3.0.0_eslint@8.27.0 1210 eslint-utils: 3.0.0_eslint@8.27.0
@@ -1241,11 +1214,11 @@ packages: @@ -1241,11 +1214,11 @@ packages:
1241 - typescript 1214 - typescript
1242 dev: true 1215 dev: true
1243 1216
1244 - /@typescript-eslint/visitor-keys/5.42.0:  
1245 - resolution: {integrity: sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==} 1217 + /@typescript-eslint/visitor-keys/5.42.1:
  1218 + resolution: {integrity: sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==}
1246 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1219 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1247 dependencies: 1220 dependencies:
1248 - '@typescript-eslint/types': 5.42.0 1221 + '@typescript-eslint/types': 5.42.1
1249 eslint-visitor-keys: 3.3.0 1222 eslint-visitor-keys: 3.3.0
1250 dev: true 1223 dev: true
1251 1224
@@ -1290,30 +1263,30 @@ packages: @@ -1290,30 +1263,30 @@ packages:
1290 nanoid: 3.3.4 1263 nanoid: 3.3.4
1291 dev: false 1264 dev: false
1292 1265
1293 - /@vitejs/plugin-vue-jsx/2.1.0_vite@3.2.2+vue@3.2.41:  
1294 - resolution: {integrity: sha512-vvL8MHKN0hUf5LE+/rCk1rduwzW6NihD6xEfM4s1gGCSWQFYd5zLdxBs++z3S7AV/ynr7Yig5Xp1Bm0wlB4IAA==} 1266 + /@vitejs/plugin-vue-jsx/2.1.1_vite@3.2.3+vue@3.2.41:
  1267 + resolution: {integrity: sha512-JgDhxstQlwnHBvZ1BSnU5mbmyQ14/t5JhREc6YH5kWyu2QdAAOsLF6xgHoIWarj8tddaiwFrNzLbWJPudpXKYA==}
1295 engines: {node: ^14.18.0 || >=16.0.0} 1268 engines: {node: ^14.18.0 || >=16.0.0}
1296 peerDependencies: 1269 peerDependencies:
1297 vite: ^3.0.0 1270 vite: ^3.0.0
1298 vue: ^3.0.0 1271 vue: ^3.0.0
1299 dependencies: 1272 dependencies:
1300 '@babel/core': 7.19.6 1273 '@babel/core': 7.19.6
1301 - '@babel/plugin-transform-typescript': 7.19.3_@babel+core@7.19.6 1274 + '@babel/plugin-transform-typescript': 7.20.2_@babel+core@7.19.6
1302 '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.19.6 1275 '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.19.6
1303 - vite: 3.2.2_less@4.1.3 1276 + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi
1304 vue: 3.2.41 1277 vue: 3.2.41
1305 transitivePeerDependencies: 1278 transitivePeerDependencies:
1306 - supports-color 1279 - supports-color
1307 dev: true 1280 dev: true
1308 1281
1309 - /@vitejs/plugin-vue/3.2.0_vite@3.2.2+vue@3.2.41: 1282 + /@vitejs/plugin-vue/3.2.0_vite@3.2.3+vue@3.2.41:
1310 resolution: {integrity: sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==} 1283 resolution: {integrity: sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==}
1311 engines: {node: ^14.18.0 || >=16.0.0} 1284 engines: {node: ^14.18.0 || >=16.0.0}
1312 peerDependencies: 1285 peerDependencies:
1313 vite: ^3.0.0 1286 vite: ^3.0.0
1314 vue: ^3.2.25 1287 vue: ^3.2.25
1315 dependencies: 1288 dependencies:
1316 - vite: 3.2.2_less@4.1.3 1289 + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi
1317 vue: 3.2.41 1290 vue: 3.2.41
1318 dev: true 1291 dev: true
1319 1292
@@ -1365,8 +1338,8 @@ packages: @@ -1365,8 +1338,8 @@ packages:
1365 '@vue-macros/common': 0.13.3 1338 '@vue-macros/common': 0.13.3
1366 dev: true 1339 dev: true
1367 1340
1368 - /@vue-macros/better-define/0.0.4:  
1369 - resolution: {integrity: sha512-wp4C7Oom1P80oKvCtrpEDtotdIsTHXt0OqgBn47xUqdj4S/baG7Ji6qQ3MUtHxBTQ+nyC+7g9nxSADl+s1Px/Q==} 1341 + /@vue-macros/better-define/0.1.0:
  1342 + resolution: {integrity: sha512-ujuB6G/1+/2Y789CGZegyyRzGoW8bTWzGUXgpNPiIF9H+o3r+1/Ksd1wYC9J08jZrtaXh9q4a6m6b0otbABQ8g==}
1370 engines: {node: '>=14.19.0'} 1343 engines: {node: '>=14.19.0'}
1371 dependencies: 1344 dependencies:
1372 '@rollup/pluginutils': 4.2.1 1345 '@rollup/pluginutils': 4.2.1
@@ -1445,16 +1418,16 @@ packages: @@ -1445,16 +1418,16 @@ packages:
1445 unplugin: 0.10.2 1418 unplugin: 0.10.2
1446 dev: true 1419 dev: true
1447 1420
1448 - /@vue-macros/named-template/0.0.5_kfit4shdbw4ah6piqfzpu53piy: 1421 + /@vue-macros/named-template/0.0.5_t3l5nd4o5yt7e6vilzibgbljou:
1449 resolution: {integrity: sha512-bZRUljNyvOOqeE9dyqXvKPQCLUCcPt1EkThmXqSbxagV29ohyviF8+CCs/8OdmNygLTBIChjP8DexQ3nUIFzUg==} 1422 resolution: {integrity: sha512-bZRUljNyvOOqeE9dyqXvKPQCLUCcPt1EkThmXqSbxagV29ohyviF8+CCs/8OdmNygLTBIChjP8DexQ3nUIFzUg==}
1450 engines: {node: '>=14.19.0'} 1423 engines: {node: '>=14.19.0'}
1451 dependencies: 1424 dependencies:
1452 '@rollup/pluginutils': 4.2.1 1425 '@rollup/pluginutils': 4.2.1
1453 - '@vitejs/plugin-vue': 3.2.0_vite@3.2.2+vue@3.2.41 1426 + '@vitejs/plugin-vue': 3.2.0_vite@3.2.3+vue@3.2.41
1454 '@vue-macros/common': 0.13.3 1427 '@vue-macros/common': 0.13.3
1455 '@vue/compiler-dom': 3.2.41 1428 '@vue/compiler-dom': 3.2.41
1456 unplugin: 0.10.2 1429 unplugin: 0.10.2
1457 - unplugin-combine: 0.2.8_rollup@3.2.5+vite@3.2.2 1430 + unplugin-combine: 0.2.8_rollup@3.2.5+vite@3.2.3
1458 transitivePeerDependencies: 1431 transitivePeerDependencies:
1459 - esbuild 1432 - esbuild
1460 - rollup 1433 - rollup
@@ -1463,14 +1436,14 @@ packages: @@ -1463,14 +1436,14 @@ packages:
1463 - webpack 1436 - webpack
1464 dev: true 1437 dev: true
1465 1438
1466 - /@vue-macros/setup-component/0.12.7_rollup@3.2.5+vite@3.2.2: 1439 + /@vue-macros/setup-component/0.12.7_rollup@3.2.5+vite@3.2.3:
1467 resolution: {integrity: sha512-L0WkJgw0QDwZh4tOjjKIDR0DMIybiOunsaxVqkJjicTb2YaiRUSLq4Wadl8Ttrsd0IEfI51CSlg7Sx0/dKLrlQ==} 1440 resolution: {integrity: sha512-L0WkJgw0QDwZh4tOjjKIDR0DMIybiOunsaxVqkJjicTb2YaiRUSLq4Wadl8Ttrsd0IEfI51CSlg7Sx0/dKLrlQ==}
1468 engines: {node: '>=14.19.0'} 1441 engines: {node: '>=14.19.0'}
1469 dependencies: 1442 dependencies:
1470 '@rollup/pluginutils': 4.2.1 1443 '@rollup/pluginutils': 4.2.1
1471 '@vue-macros/common': 0.13.3 1444 '@vue-macros/common': 0.13.3
1472 unplugin: 0.10.2 1445 unplugin: 0.10.2
1473 - unplugin-combine: 0.2.8_rollup@3.2.5+vite@3.2.2 1446 + unplugin-combine: 0.2.8_rollup@3.2.5+vite@3.2.3
1474 transitivePeerDependencies: 1447 transitivePeerDependencies:
1475 - esbuild 1448 - esbuild
1476 - rollup 1449 - rollup
@@ -1506,8 +1479,8 @@ packages: @@ -1506,8 +1479,8 @@ packages:
1506 '@babel/helper-module-imports': 7.18.6 1479 '@babel/helper-module-imports': 7.18.6
1507 '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.6 1480 '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.6
1508 '@babel/template': 7.18.10 1481 '@babel/template': 7.18.10
1509 - '@babel/traverse': 7.19.3  
1510 - '@babel/types': 7.19.4 1482 + '@babel/traverse': 7.20.0
  1483 + '@babel/types': 7.20.0
1511 '@vue/babel-helper-vue-transform-on': 1.0.2 1484 '@vue/babel-helper-vue-transform-on': 1.0.2
1512 camelcase: 6.3.0 1485 camelcase: 6.3.0
1513 html-tags: 3.2.0 1486 html-tags: 3.2.0
@@ -2072,11 +2045,12 @@ packages: @@ -2072,11 +2045,12 @@ packages:
2072 - debug 2045 - debug
2073 dev: true 2046 dev: true
2074 2047
2075 - /axios/0.27.2:  
2076 - resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} 2048 + /axios/1.1.3:
  2049 + resolution: {integrity: sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==}
2077 dependencies: 2050 dependencies:
2078 follow-redirects: 1.15.2 2051 follow-redirects: 1.15.2
2079 form-data: 4.0.0 2052 form-data: 4.0.0
  2053 + proxy-from-env: 1.1.0
2080 transitivePeerDependencies: 2054 transitivePeerDependencies:
2081 - debug 2055 - debug
2082 dev: false 2056 dev: false
@@ -5709,6 +5683,10 @@ packages: @@ -5709,6 +5683,10 @@ packages:
5709 engines: {node: '>=6'} 5683 engines: {node: '>=6'}
5710 dev: false 5684 dev: false
5711 5685
  5686 + /proxy-from-env/1.1.0:
  5687 + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
  5688 + dev: false
  5689 +
5712 /prr/1.0.1: 5690 /prr/1.0.1:
5713 resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} 5691 resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
5714 dev: true 5692 dev: true
@@ -6757,7 +6735,7 @@ packages: @@ -6757,7 +6735,7 @@ packages:
6757 engines: {node: '>= 10.0.0'} 6735 engines: {node: '>= 10.0.0'}
6758 dev: true 6736 dev: true
6759 6737
6760 - /unplugin-combine/0.2.8_rollup@3.2.5+vite@3.2.2: 6738 + /unplugin-combine/0.2.8_rollup@3.2.5+vite@3.2.3:
6761 resolution: {integrity: sha512-Z38AC/TEjXbVyZ5HjVqo+lADj0/dcfwWC0Z4y0LNhybJzJQwmcMxm+ZsqHY3faauj4YigmlRMdptR5JEW9RuLg==} 6739 resolution: {integrity: sha512-Z38AC/TEjXbVyZ5HjVqo+lADj0/dcfwWC0Z4y0LNhybJzJQwmcMxm+ZsqHY3faauj4YigmlRMdptR5JEW9RuLg==}
6762 engines: {node: '>=14.19.0'} 6740 engines: {node: '>=14.19.0'}
6763 peerDependencies: 6741 peerDependencies:
@@ -6778,7 +6756,7 @@ packages: @@ -6778,7 +6756,7 @@ packages:
6778 '@antfu/utils': 0.6.0 6756 '@antfu/utils': 0.6.0
6779 rollup: 3.2.5 6757 rollup: 3.2.5
6780 unplugin: 0.10.2 6758 unplugin: 0.10.2
6781 - vite: 3.2.2_less@4.1.3 6759 + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi
6782 dev: true 6760 dev: true
6783 6761
6784 /unplugin-vue-define-options/0.12.7: 6762 /unplugin-vue-define-options/0.12.7:
@@ -6791,25 +6769,25 @@ packages: @@ -6791,25 +6769,25 @@ packages:
6791 unplugin: 0.10.2 6769 unplugin: 0.10.2
6792 dev: true 6770 dev: true
6793 6771
6794 - /unplugin-vue-macros/0.16.0_f6zolwli45a6dkgzq5zhbk2c7e:  
6795 - resolution: {integrity: sha512-GdSJT+8Anc5zrGtZTvEnya2XVOneG0MEyyRrWWhVtn5xYEsUkrB0IxsHiT/mGjR5U+tjyQ/9sNL+FhhC54NFnQ==} 6772 + /unplugin-vue-macros/0.16.1_y7pktweo3ai2nyo3s3skrzfcku:
  6773 + resolution: {integrity: sha512-EPgAiESpFj8o2pOdYrtD4hkmbXVzUq6f+6votCS90t3Ke2aJAnukxU2nuM9+P81PAkgggnzolXwZwdJMspHzPA==}
6796 engines: {node: '>=14.19.0'} 6774 engines: {node: '>=14.19.0'}
6797 peerDependencies: 6775 peerDependencies:
6798 vue: ^2.7.0 || ^3.2.25 6776 vue: ^2.7.0 || ^3.2.25
6799 dependencies: 6777 dependencies:
6800 '@rollup/pluginutils': 4.2.1 6778 '@rollup/pluginutils': 4.2.1
6801 - '@vue-macros/better-define': 0.0.4 6779 + '@vue-macros/better-define': 0.1.0
6802 '@vue-macros/define-model': 0.13.8_@vueuse+core@9.4.0 6780 '@vue-macros/define-model': 0.13.8_@vueuse+core@9.4.0
6803 '@vue-macros/define-props': 0.0.1_vue@3.2.41 6781 '@vue-macros/define-props': 0.0.1_vue@3.2.41
6804 '@vue-macros/define-render': 0.13.8_vue@3.2.41 6782 '@vue-macros/define-render': 0.13.8_vue@3.2.41
6805 '@vue-macros/define-slots': 0.0.5_vue@3.2.41 6783 '@vue-macros/define-slots': 0.0.5_vue@3.2.41
6806 '@vue-macros/hoist-static': 0.12.7 6784 '@vue-macros/hoist-static': 0.12.7
6807 - '@vue-macros/named-template': 0.0.5_kfit4shdbw4ah6piqfzpu53piy  
6808 - '@vue-macros/setup-component': 0.12.7_rollup@3.2.5+vite@3.2.2 6785 + '@vue-macros/named-template': 0.0.5_t3l5nd4o5yt7e6vilzibgbljou
  6786 + '@vue-macros/setup-component': 0.12.7_rollup@3.2.5+vite@3.2.3
6809 '@vue-macros/setup-sfc': 0.12.7 6787 '@vue-macros/setup-sfc': 0.12.7
6810 '@vue-macros/short-emits': 0.12.8 6788 '@vue-macros/short-emits': 0.12.8
6811 local-pkg: 0.4.2 6789 local-pkg: 0.4.2
6812 - unplugin-combine: 0.2.8_rollup@3.2.5+vite@3.2.2 6790 + unplugin-combine: 0.2.8_rollup@3.2.5+vite@3.2.3
6813 unplugin-vue-define-options: 0.12.7 6791 unplugin-vue-define-options: 0.12.7
6814 vue: 3.2.41 6792 vue: 3.2.41
6815 transitivePeerDependencies: 6793 transitivePeerDependencies:
@@ -6912,7 +6890,7 @@ packages: @@ -6912,7 +6890,7 @@ packages:
6912 engines: {node: '>= 0.8'} 6890 engines: {node: '>= 0.8'}
6913 dev: true 6891 dev: true
6914 6892
6915 - /vite-plugin-compression/0.5.1_vite@3.2.2: 6893 + /vite-plugin-compression/0.5.1_vite@3.2.3:
6916 resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} 6894 resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==}
6917 peerDependencies: 6895 peerDependencies:
6918 vite: '>=2.0.0' 6896 vite: '>=2.0.0'
@@ -6920,12 +6898,12 @@ packages: @@ -6920,12 +6898,12 @@ packages:
6920 chalk: 4.1.2 6898 chalk: 4.1.2
6921 debug: 4.3.4 6899 debug: 4.3.4
6922 fs-extra: 10.1.0 6900 fs-extra: 10.1.0
6923 - vite: 3.2.2_less@4.1.3 6901 + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi
6924 transitivePeerDependencies: 6902 transitivePeerDependencies:
6925 - supports-color 6903 - supports-color
6926 dev: true 6904 dev: true
6927 6905
6928 - /vite-plugin-eslint/1.8.1_eslint@8.27.0+vite@3.2.2: 6906 + /vite-plugin-eslint/1.8.1_eslint@8.27.0+vite@3.2.3:
6929 resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} 6907 resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==}
6930 peerDependencies: 6908 peerDependencies:
6931 eslint: '>=7' 6909 eslint: '>=7'
@@ -6935,10 +6913,10 @@ packages: @@ -6935,10 +6913,10 @@ packages:
6935 '@types/eslint': 8.4.6 6913 '@types/eslint': 8.4.6
6936 eslint: 8.27.0 6914 eslint: 8.27.0
6937 rollup: 2.79.1 6915 rollup: 2.79.1
6938 - vite: 3.2.2_less@4.1.3 6916 + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi
6939 dev: true 6917 dev: true
6940 6918
6941 - /vite-plugin-html/3.2.0_vite@3.2.2: 6919 + /vite-plugin-html/3.2.0_vite@3.2.3:
6942 resolution: {integrity: sha512-2VLCeDiHmV/BqqNn5h2V+4280KRgQzCFN47cst3WiNK848klESPQnzuC3okH5XHtgwHH/6s1Ho/YV6yIO0pgoQ==} 6920 resolution: {integrity: sha512-2VLCeDiHmV/BqqNn5h2V+4280KRgQzCFN47cst3WiNK848klESPQnzuC3okH5XHtgwHH/6s1Ho/YV6yIO0pgoQ==}
6943 peerDependencies: 6921 peerDependencies:
6944 vite: '>=2.0.0' 6922 vite: '>=2.0.0'
@@ -6955,10 +6933,10 @@ packages: @@ -6955,10 +6933,10 @@ packages:
6955 html-minifier-terser: 6.1.0 6933 html-minifier-terser: 6.1.0
6956 node-html-parser: 5.4.2 6934 node-html-parser: 5.4.2
6957 pathe: 0.2.0 6935 pathe: 0.2.0
6958 - vite: 3.2.2_less@4.1.3 6936 + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi
6959 dev: true 6937 dev: true
6960 6938
6961 - /vite-plugin-purge-icons/0.9.1_vite@3.2.2: 6939 + /vite-plugin-purge-icons/0.9.1_vite@3.2.3:
6962 resolution: {integrity: sha512-oS0Y9Iq6vGnTDVRzB8xJNhA/gGlyR0lfCICU6+9FRKdrO5PnT34fRjvd8YWEsegCrk91+w3GVZc0HJDj/dPp5Q==} 6940 resolution: {integrity: sha512-oS0Y9Iq6vGnTDVRzB8xJNhA/gGlyR0lfCICU6+9FRKdrO5PnT34fRjvd8YWEsegCrk91+w3GVZc0HJDj/dPp5Q==}
6963 engines: {node: '>= 12'} 6941 engines: {node: '>= 12'}
6964 peerDependencies: 6942 peerDependencies:
@@ -6967,13 +6945,13 @@ packages: @@ -6967,13 +6945,13 @@ packages:
6967 '@purge-icons/core': 0.9.1 6945 '@purge-icons/core': 0.9.1
6968 '@purge-icons/generated': 0.9.0 6946 '@purge-icons/generated': 0.9.0
6969 rollup-plugin-purge-icons: 0.9.1 6947 rollup-plugin-purge-icons: 0.9.1
6970 - vite: 3.2.2_less@4.1.3 6948 + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi
6971 transitivePeerDependencies: 6949 transitivePeerDependencies:
6972 - encoding 6950 - encoding
6973 - supports-color 6951 - supports-color
6974 dev: true 6952 dev: true
6975 6953
6976 - /vite-plugin-style-import/2.0.0_vite@3.2.2: 6954 + /vite-plugin-style-import/2.0.0_vite@3.2.3:
6977 resolution: {integrity: sha512-qtoHQae5dSUQPo/rYz/8p190VU5y19rtBaeV7ryLa/AYAU/e9CG89NrN/3+k7MR8mJy/GPIu91iJ3zk9foUOSA==} 6955 resolution: {integrity: sha512-qtoHQae5dSUQPo/rYz/8p190VU5y19rtBaeV7ryLa/AYAU/e9CG89NrN/3+k7MR8mJy/GPIu91iJ3zk9foUOSA==}
6978 peerDependencies: 6956 peerDependencies:
6979 vite: '>=2.0.0' 6957 vite: '>=2.0.0'
@@ -6985,10 +6963,10 @@ packages: @@ -6985,10 +6963,10 @@ packages:
6985 fs-extra: 10.1.0 6963 fs-extra: 10.1.0
6986 magic-string: 0.25.9 6964 magic-string: 0.25.9
6987 pathe: 0.2.0 6965 pathe: 0.2.0
6988 - vite: 3.2.2_less@4.1.3 6966 + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi
6989 dev: true 6967 dev: true
6990 6968
6991 - /vite-plugin-svg-icons/2.0.1_vite@3.2.2: 6969 + /vite-plugin-svg-icons/2.0.1_vite@3.2.3:
6992 resolution: {integrity: sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==} 6970 resolution: {integrity: sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==}
6993 peerDependencies: 6971 peerDependencies:
6994 vite: '>=2.0.0' 6972 vite: '>=2.0.0'
@@ -7001,12 +6979,12 @@ packages: @@ -7001,12 +6979,12 @@ packages:
7001 pathe: 0.2.0 6979 pathe: 0.2.0
7002 svg-baker: 1.7.0 6980 svg-baker: 1.7.0
7003 svgo: 2.8.0 6981 svgo: 2.8.0
7004 - vite: 3.2.2_less@4.1.3 6982 + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi
7005 transitivePeerDependencies: 6983 transitivePeerDependencies:
7006 - supports-color 6984 - supports-color
7007 dev: true 6985 dev: true
7008 6986
7009 - /vite-plugin-windicss/1.8.8_vite@3.2.2: 6987 + /vite-plugin-windicss/1.8.8_vite@3.2.3:
7010 resolution: {integrity: sha512-iyu+ZX0NmhNEUaLPv7xtC+EFRBpWMmw0nhd9a9upayfuNG/thwslKiQKmRB7U/dG0k/2oWLvPDvN/B9i7oRgSA==} 6988 resolution: {integrity: sha512-iyu+ZX0NmhNEUaLPv7xtC+EFRBpWMmw0nhd9a9upayfuNG/thwslKiQKmRB7U/dG0k/2oWLvPDvN/B9i7oRgSA==}
7011 peerDependencies: 6989 peerDependencies:
7012 vite: ^2.0.1 || ^3.0.0 6990 vite: ^2.0.1 || ^3.0.0
@@ -7014,23 +6992,26 @@ packages: @@ -7014,23 +6992,26 @@ packages:
7014 '@windicss/plugin-utils': 1.8.8 6992 '@windicss/plugin-utils': 1.8.8
7015 debug: 4.3.4 6993 debug: 4.3.4
7016 kolorist: 1.6.0 6994 kolorist: 1.6.0
7017 - vite: 3.2.2_less@4.1.3 6995 + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi
7018 windicss: 3.5.6 6996 windicss: 3.5.6
7019 transitivePeerDependencies: 6997 transitivePeerDependencies:
7020 - supports-color 6998 - supports-color
7021 dev: true 6999 dev: true
7022 7000
7023 - /vite/3.2.2_less@4.1.3:  
7024 - resolution: {integrity: sha512-pLrhatFFOWO9kS19bQ658CnRYzv0WLbsPih6R+iFeEEhDOuYgYCX2rztUViMz/uy/V8cLCJvLFeiOK7RJEzHcw==} 7001 + /vite/3.2.3_mp5lu76ee5qtwstsyca37sdhqi:
  7002 + resolution: {integrity: sha512-h8jl1TZ76eGs3o2dIBSsvXDLb1m/Ec1iej8ZMdz+PsaFUsftZeWe2CZOI3qogEsMNaywc17gu0q6cQDzh/weCQ==}
7025 engines: {node: ^14.18.0 || >=16.0.0} 7003 engines: {node: ^14.18.0 || >=16.0.0}
7026 hasBin: true 7004 hasBin: true
7027 peerDependencies: 7005 peerDependencies:
  7006 + '@types/node': '>= 14'
7028 less: '*' 7007 less: '*'
7029 sass: '*' 7008 sass: '*'
7030 stylus: '*' 7009 stylus: '*'
7031 sugarss: '*' 7010 sugarss: '*'
7032 terser: ^5.4.0 7011 terser: ^5.4.0
7033 peerDependenciesMeta: 7012 peerDependenciesMeta:
  7013 + '@types/node':
  7014 + optional: true
7034 less: 7015 less:
7035 optional: true 7016 optional: true
7036 sass: 7017 sass:
@@ -7042,6 +7023,7 @@ packages: @@ -7042,6 +7023,7 @@ packages:
7042 terser: 7023 terser:
7043 optional: true 7024 optional: true
7044 dependencies: 7025 dependencies:
  7026 + '@types/node': 18.11.9
7045 esbuild: 0.15.10 7027 esbuild: 0.15.10
7046 less: 4.1.3 7028 less: 4.1.3
7047 postcss: 8.4.18 7029 postcss: 8.4.18
yudao-ui-admin-vue3/src/api/system/post/types.ts
@@ -5,7 +5,7 @@ export type PostVO = { @@ -5,7 +5,7 @@ export type PostVO = {
5 sort: number 5 sort: number
6 status: number 6 status: number
7 remark: string 7 remark: string
8 - createTime: string 8 + createTime?: string
9 } 9 }
10 10
11 export type PostPageReqVO = { 11 export type PostPageReqVO = {
yudao-ui-admin-vue3/src/components/Form/src/Form.vue
@@ -226,6 +226,11 @@ export default defineComponent({ @@ -226,6 +226,11 @@ export default defineComponent({
226 vModel={formModel.value[item.field]} 226 vModel={formModel.value[item.field]}
227 {...(autoSetPlaceholder && setTextPlaceholder(item))} 227 {...(autoSetPlaceholder && setTextPlaceholder(item))}
228 {...setComponentProps(item)} 228 {...setComponentProps(item)}
  229 + style={
  230 + item?.component === 'Input'
  231 + ? { width: '189.5px', ...item.componentProps?.style }
  232 + : { ...item.componentProps?.style }
  233 + }
229 {...(notRenderOptions.includes(item?.component as string) && 234 {...(notRenderOptions.includes(item?.component as string) &&
230 item?.componentProps?.options 235 item?.componentProps?.options
231 ? { options: item?.componentProps?.options || [] } 236 ? { options: item?.componentProps?.options || [] }
yudao-ui-admin-vue3/src/components/Form/src/componentMap.ts
@@ -10,6 +10,7 @@ import { @@ -10,6 +10,7 @@ import {
10 ElRate, 10 ElRate,
11 ElSelect, 11 ElSelect,
12 ElSelectV2, 12 ElSelectV2,
  13 + ElTreeSelect,
13 ElSlider, 14 ElSlider,
14 ElSwitch, 15 ElSwitch,
15 ElTimePicker, 16 ElTimePicker,
@@ -41,6 +42,7 @@ const componentMap: Recordable&lt;Component, ComponentName&gt; = { @@ -41,6 +42,7 @@ const componentMap: Recordable&lt;Component, ComponentName&gt; = {
41 Divider: ElDivider, 42 Divider: ElDivider,
42 TimeSelect: ElTimeSelect, 43 TimeSelect: ElTimeSelect,
43 SelectV2: ElSelectV2, 44 SelectV2: ElSelectV2,
  45 + TreeSelect: ElTreeSelect,
44 RadioButton: ElRadioGroup, 46 RadioButton: ElRadioGroup,
45 InputPassword: InputPassword, 47 InputPassword: InputPassword,
46 Editor: Editor 48 Editor: Editor
yudao-ui-admin-vue3/src/components/Form/src/components/useRenderCheckbox.tsx
@@ -11,7 +11,12 @@ export const useRenderCheckbox = () =&gt; { @@ -11,7 +11,12 @@ export const useRenderCheckbox = () =&gt; {
11 typeof defineComponent 11 typeof defineComponent
12 > 12 >
13 return item?.componentProps?.options?.map((option) => { 13 return item?.componentProps?.options?.map((option) => {
14 - return <Com label={option[labelAlias || 'value']}>{option[valueAlias || 'label']}</Com> 14 + const { ...other } = option
  15 + return (
  16 + <Com label={option[labelAlias || 'value']} {...other}>
  17 + {option[valueAlias || 'label']}
  18 + </Com>
  19 + )
15 }) 20 })
16 } 21 }
17 22
yudao-ui-admin-vue3/src/components/Form/src/components/useRenderRadio.tsx
@@ -11,7 +11,12 @@ export const useRenderRadio = () =&gt; { @@ -11,7 +11,12 @@ export const useRenderRadio = () =&gt; {
11 typeof defineComponent 11 typeof defineComponent
12 > 12 >
13 return item?.componentProps?.options?.map((option) => { 13 return item?.componentProps?.options?.map((option) => {
14 - return <Com label={option[labelAlias || 'value']}>{option[valueAlias || 'label']}</Com> 14 + const { ...other } = option
  15 + return (
  16 + <Com label={option[labelAlias || 'value']} {...other}>
  17 + {option[valueAlias || 'label']}
  18 + </Com>
  19 + )
15 }) 20 })
16 } 21 }
17 22
yudao-ui-admin-vue3/src/components/Menu/src/Menu.vue
@@ -220,10 +220,10 @@ export default defineComponent({ @@ -220,10 +220,10 @@ export default defineComponent({
220 220
221 // 水平菜单 221 // 水平菜单
222 &__horizontal { 222 &__horizontal {
223 - height: calc(~'var( - -top-tool-height)') !important; 223 + height: calc(~'var(--top-tool-height)') !important;
224 224
225 :deep(.@{elNamespace}-menu--horizontal) { 225 :deep(.@{elNamespace}-menu--horizontal) {
226 - height: calc(~'var( - -top-tool-height)'); 226 + height: calc(~'var(--top-tool-height)');
227 border-bottom: none; 227 border-bottom: none;
228 // 重新设置底部高亮颜色 228 // 重新设置底部高亮颜色
229 & > .@{elNamespace}-sub-menu.is-active { 229 & > .@{elNamespace}-sub-menu.is-active {
yudao-ui-admin-vue3/src/config/axios/service.ts
@@ -48,7 +48,7 @@ service.interceptors.request.use( @@ -48,7 +48,7 @@ service.interceptors.request.use(
48 // 设置租户 48 // 设置租户
49 if (tenantEnable) { 49 if (tenantEnable) {
50 const tenantId = getTenantId() 50 const tenantId = getTenantId()
51 - if (tenantId) (config as Recordable).headers.common['tenant-id'] = tenantId 51 + if (tenantId) service.defaults.headers.common['tenant-id'] = tenantId
52 } 52 }
53 const params = config.params || {} 53 const params = config.params || {}
54 const data = config.data || false 54 const data = config.data || false
@@ -94,7 +94,7 @@ service.interceptors.request.use( @@ -94,7 +94,7 @@ service.interceptors.request.use(
94 94
95 // response 拦截器 95 // response 拦截器
96 service.interceptors.response.use( 96 service.interceptors.response.use(
97 - async (response: AxiosResponse<Recordable>) => { 97 + async (response: AxiosResponse<any>) => {
98 const { data } = response 98 const { data } = response
99 const config = response.config 99 const config = response.config
100 if (!data) { 100 if (!data) {
@@ -104,7 +104,6 @@ service.interceptors.response.use( @@ -104,7 +104,6 @@ service.interceptors.response.use(
104 const { t } = useI18n() 104 const { t } = useI18n()
105 // 未设置状态码则默认成功状态 105 // 未设置状态码则默认成功状态
106 const code = data.code || result_code 106 const code = data.code || result_code
107 - // 二进制数据则直接返回  
108 if ( 107 if (
109 response.request.responseType === 'blob' || 108 response.request.responseType === 'blob' ||
110 response.request.responseType === 'arraybuffer' 109 response.request.responseType === 'arraybuffer'
@@ -126,10 +125,11 @@ service.interceptors.response.use( @@ -126,10 +125,11 @@ service.interceptors.response.use(
126 } 125 }
127 // 2. 进行刷新访问令牌 126 // 2. 进行刷新访问令牌
128 try { 127 try {
129 - const refreshTokenRes = await refreshToken() 128 + const refreshTokenRes = refreshToken()
130 // 2.1 刷新成功,则回放队列的请求 + 当前请求 129 // 2.1 刷新成功,则回放队列的请求 + 当前请求
131 - setToken(refreshTokenRes.data.data) 130 + setToken((await refreshTokenRes).data.data)
132 config.headers!.Authorization = 'Bearer ' + getAccessToken() 131 config.headers!.Authorization = 'Bearer ' + getAccessToken()
  132 + service.defaults.headers.Authorization = 'Bearer ' + getAccessToken()
133 requestList.forEach((cb: any) => { 133 requestList.forEach((cb: any) => {
134 cb() 134 cb()
135 }) 135 })
yudao-ui-admin-vue3/src/hooks/web/useMessage.ts
@@ -52,13 +52,25 @@ export const useMessage = () =&gt; { @@ -52,13 +52,25 @@ export const useMessage = () =&gt; {
52 ElNotification.warning(content) 52 ElNotification.warning(content)
53 }, 53 },
54 // 确认窗体 54 // 确认窗体
55 - confirm(content: string, tip: string) {  
56 - return ElMessageBox.confirm(content, tip, { 55 + confirm(content: string, tip?: string) {
  56 + return ElMessageBox.confirm(content, tip ? tip : t('common.confirmTitle'), {
57 confirmButtonText: t('common.ok'), 57 confirmButtonText: t('common.ok'),
58 cancelButtonText: t('common.cancel'), 58 cancelButtonText: t('common.cancel'),
59 type: 'warning' 59 type: 'warning'
60 }) 60 })
61 }, 61 },
  62 + // 删除窗体
  63 + delConfirm(content?: string, tip?: string) {
  64 + return ElMessageBox.confirm(
  65 + content ? content : t('common.delMessage'),
  66 + tip ? tip : t('common.confirmTitle'),
  67 + {
  68 + confirmButtonText: t('common.ok'),
  69 + cancelButtonText: t('common.cancel'),
  70 + type: 'warning'
  71 + }
  72 + )
  73 + },
62 // 提交内容 74 // 提交内容
63 prompt(content: string, tip: string) { 75 prompt(content: string, tip: string) {
64 return ElMessageBox.prompt(content, tip, { 76 return ElMessageBox.prompt(content, tip, {
yudao-ui-admin-vue3/src/hooks/web/useVxeCrudSchemas.ts
@@ -3,6 +3,7 @@ import { getIntDictOptions } from &#39;@/utils/dict&#39; @@ -3,6 +3,7 @@ import { getIntDictOptions } from &#39;@/utils/dict&#39;
3 import { reactive } from 'vue' 3 import { reactive } from 'vue'
4 import { 4 import {
5 FormItemRenderOptions, 5 FormItemRenderOptions,
  6 + VxeColumnPropTypes,
6 VxeFormItemProps, 7 VxeFormItemProps,
7 VxeGridPropTypes, 8 VxeGridPropTypes,
8 VxeTableDefines 9 VxeTableDefines
@@ -10,15 +11,18 @@ import { @@ -10,15 +11,18 @@ import {
10 import { eachTree } from 'xe-utils' 11 import { eachTree } from 'xe-utils'
11 import { useI18n } from '@/hooks/web/useI18n' 12 import { useI18n } from '@/hooks/web/useI18n'
12 import { VxeTableColumn } from '@/types/table' 13 import { VxeTableColumn } from '@/types/table'
  14 +import { FormSchema } from '@/types/form'
  15 +import { ComponentOptions } from '@/types/components'
13 16
14 export type VxeCrudSchema = Omit<VxeTableColumn, 'children'> & { 17 export type VxeCrudSchema = Omit<VxeTableColumn, 'children'> & {
15 field: string 18 field: string
16 title?: string 19 title?: string
  20 + formatter?: VxeColumnPropTypes.Formatter
17 search?: CrudSearchParams 21 search?: CrudSearchParams
18 table?: CrudTableParams 22 table?: CrudTableParams
19 form?: CrudFormParams 23 form?: CrudFormParams
20 detail?: CrudDescriptionsParams 24 detail?: CrudDescriptionsParams
21 - print?: boolean 25 + print?: CrudPrintParams
22 children?: VxeCrudSchema[] 26 children?: VxeCrudSchema[]
23 dictType?: string 27 dictType?: string
24 } 28 }
@@ -35,17 +39,22 @@ type CrudTableParams = { @@ -35,17 +39,22 @@ type CrudTableParams = {
35 type CrudFormParams = { 39 type CrudFormParams = {
36 // 是否显示表单项 40 // 是否显示表单项
37 show?: boolean 41 show?: boolean
38 -} & Omit<VxeFormItemProps, 'field'> 42 +} & Omit<FormSchema, 'field'>
39 43
40 type CrudDescriptionsParams = { 44 type CrudDescriptionsParams = {
41 // 是否显示表单项 45 // 是否显示表单项
42 show?: boolean 46 show?: boolean
43 } & Omit<DescriptionsSchema, 'field'> 47 } & Omit<DescriptionsSchema, 'field'>
44 48
45 -interface VxeAllSchemas { 49 +type CrudPrintParams = {
  50 + // 是否显示表单项
  51 + show?: boolean
  52 +} & Omit<VxeTableDefines.ColumnInfo[], 'field'>
  53 +
  54 +export type VxeAllSchemas = {
46 searchSchema: VxeFormItemProps[] 55 searchSchema: VxeFormItemProps[]
47 tableSchema: VxeGridPropTypes.Columns 56 tableSchema: VxeGridPropTypes.Columns
48 - formSchema: VxeFormItemProps[] 57 + formSchema: FormSchema[]
49 detailSchema: DescriptionsSchema[] 58 detailSchema: DescriptionsSchema[]
50 printSchema: VxeTableDefines.ColumnInfo[] 59 printSchema: VxeTableDefines.ColumnInfo[]
51 } 60 }
@@ -155,6 +164,9 @@ const filterTableSchema = (crudSchema: VxeCrudSchema[]): VxeGridPropTypes.Column @@ -155,6 +164,9 @@ const filterTableSchema = (crudSchema: VxeCrudSchema[]): VxeGridPropTypes.Column
155 field: schemaItem.field, 164 field: schemaItem.field,
156 title: schemaItem.table?.title || schemaItem.title 165 title: schemaItem.table?.title || schemaItem.title
157 } 166 }
  167 + if (schemaItem?.formatter) {
  168 + tableSchemaItem.formatter = schemaItem.formatter
  169 + }
158 170
159 // 删除不必要的字段 171 // 删除不必要的字段
160 delete tableSchemaItem.show 172 delete tableSchemaItem.show
@@ -166,32 +178,31 @@ const filterTableSchema = (crudSchema: VxeCrudSchema[]): VxeGridPropTypes.Column @@ -166,32 +178,31 @@ const filterTableSchema = (crudSchema: VxeCrudSchema[]): VxeGridPropTypes.Column
166 } 178 }
167 179
168 // 过滤 form 结构 180 // 过滤 form 结构
169 -const filterFormSchema = (crudSchema: VxeCrudSchema[]): VxeFormItemProps[] => {  
170 - const formSchema: VxeFormItemProps[] = []  
171 - const { t } = useI18n() 181 +const filterFormSchema = (crudSchema: VxeCrudSchema[]): FormSchema[] => {
  182 + const formSchema: FormSchema[] = []
  183 +
172 eachTree(crudSchema, (schemaItem: VxeCrudSchema) => { 184 eachTree(crudSchema, (schemaItem: VxeCrudSchema) => {
173 // 判断是否显示 185 // 判断是否显示
174 if (schemaItem?.form?.show !== false) { 186 if (schemaItem?.form?.show !== false) {
175 - let itemRenderName = schemaItem?.form?.itemRender?.name || '$input'  
176 - let itemRender: FormItemRenderOptions = {  
177 - name: itemRenderName,  
178 - props: { placeholder: t('common.inputText') }  
179 - } 187 + let component = schemaItem?.form?.component || 'Input'
  188 + const options: ComponentOptions[] = []
  189 + let comonentProps = {}
180 if (schemaItem.dictType) { 190 if (schemaItem.dictType) {
181 - if (!(schemaItem.form && schemaItem.form.itemRender?.name)) itemRenderName = '$select'  
182 - itemRender = {  
183 - name: itemRenderName,  
184 - options: getIntDictOptions(schemaItem.dictType),  
185 - props: { placeholder: t('common.selectText') } 191 + getIntDictOptions(schemaItem.dictType).forEach((dict) => {
  192 + options.push(dict)
  193 + })
  194 + comonentProps = {
  195 + options: options
186 } 196 }
  197 + if (!(schemaItem.form && schemaItem.form.component)) component = 'Select'
187 } 198 }
188 const formSchemaItem = { 199 const formSchemaItem = {
189 // 默认为 input 200 // 默认为 input
190 - itemRender: itemRender, 201 + component: component,
  202 + componentProps: comonentProps,
191 ...schemaItem.form, 203 ...schemaItem.form,
192 - span: schemaItem.form?.span || 12,  
193 field: schemaItem.field, 204 field: schemaItem.field,
194 - title: schemaItem.form?.title || schemaItem.title 205 + label: schemaItem.form?.label || schemaItem.title
195 } 206 }
196 207
197 // 删除不必要的字段 208 // 删除不必要的字段
@@ -233,7 +244,7 @@ const filterPrintSchema = (crudSchema: VxeCrudSchema[]): any[] =&gt; { @@ -233,7 +244,7 @@ const filterPrintSchema = (crudSchema: VxeCrudSchema[]): any[] =&gt; {
233 244
234 eachTree(crudSchema, (schemaItem: VxeCrudSchema) => { 245 eachTree(crudSchema, (schemaItem: VxeCrudSchema) => {
235 // 判断是否显示 246 // 判断是否显示
236 - if (schemaItem?.detail?.show !== false) { 247 + if (schemaItem?.print?.show !== false) {
237 const printSchemaItem = { 248 const printSchemaItem = {
238 field: schemaItem.field 249 field: schemaItem.field
239 } 250 }
yudao-ui-admin-vue3/src/hooks/web/useVxeGrid.ts
1 -import { reactive } from 'vue' 1 +import { computed, reactive } from 'vue'
2 import { VxeGridProps } from 'vxe-table' 2 import { VxeGridProps } from 'vxe-table'
  3 +import { useAppStore } from '@/store/modules/app'
  4 +import { VxeAllSchemas } from './useVxeCrudSchemas'
  5 +import { useI18n } from '@/hooks/web/useI18n'
  6 +import { useMessage } from '@/hooks/web/useMessage'
3 7
4 -export const useVxeGrid = (allSchemas, getPageApi) => { 8 +const { t } = useI18n()
  9 +const message = useMessage() // 消息弹窗
  10 +
  11 +interface UseVxeGridConfig<T = any> {
  12 + allSchemas: VxeAllSchemas
  13 + getListApi: (option: any) => Promise<T>
  14 + delListApi?: (option: any) => Promise<T>
  15 + exportListApi?: (option: any) => Promise<T>
  16 +}
  17 +
  18 +const appStore = useAppStore()
  19 +
  20 +const currentSize = computed(() => {
  21 + if (appStore.getCurrentSize === 'small') {
  22 + return 'small'
  23 + } else if (appStore.getCurrentSize === 'large') {
  24 + return 'mini'
  25 + } else {
  26 + return 'medium'
  27 + }
  28 +})
  29 +
  30 +export const useVxeGrid = <T = any>(config?: UseVxeGridConfig<T>) => {
5 const gridOptions = reactive<VxeGridProps>({ 31 const gridOptions = reactive<VxeGridProps>({
6 - loading: false, 32 + loading: true,
  33 + size: currentSize.value,
7 height: 800, 34 height: 800,
8 rowConfig: { 35 rowConfig: {
9 - keyField: 'id',  
10 - isHover: true 36 + isCurrent: true, // 当鼠标点击行时,是否要高亮当前行
  37 + isHover: true // 当鼠标移到行时,是否要高亮当前行
  38 + },
  39 + showOverflow: 'tooltip', // 当内容溢出时显示为省略号
  40 + tooltipConfig: {
  41 + showAll: true // 开启全表工具提示
11 }, 42 },
12 toolbarConfig: { 43 toolbarConfig: {
13 custom: true, 44 custom: true,
14 slots: { buttons: 'toolbar_buttons' } 45 slots: { buttons: 'toolbar_buttons' }
15 }, 46 },
16 printConfig: { 47 printConfig: {
17 - columns: allSchemas.printSchema 48 + columns: config?.allSchemas.printSchema
18 }, 49 },
19 formConfig: { 50 formConfig: {
20 titleWidth: 100, 51 titleWidth: 100,
21 titleAlign: 'right', 52 titleAlign: 'right',
22 - items: allSchemas.searchSchema 53 + items: config?.allSchemas.searchSchema
23 }, 54 },
24 - columns: allSchemas.tableSchema, 55 + columns: config?.allSchemas.tableSchema,
25 pagerConfig: { 56 pagerConfig: {
26 - border: false,  
27 - background: false,  
28 - perfect: true,  
29 - pageSize: 10,  
30 - pagerCount: 7,  
31 - pageSizes: [5, 10, 15, 20, 50, 100, 200, 500], 57 + border: false, // 带边框
  58 + background: true, // 带背景颜色
  59 + perfect: true, // 配套的样式
  60 + pageSize: 10, // 每页大小
  61 + pagerCount: 7, // 显示页码按钮的数量
  62 + autoHidden: true, // 当只有一页时自动隐藏
  63 + pageSizes: [5, 10, 15, 20, 50, 100, 200, 500], // 每页大小选项列表
32 layouts: [ 64 layouts: [
33 'PrevJump', 65 'PrevJump',
34 'PrevPage', 66 'PrevPage',
@@ -49,12 +81,22 @@ export const useVxeGrid = (allSchemas, getPageApi) =&gt; { @@ -49,12 +81,22 @@ export const useVxeGrid = (allSchemas, getPageApi) =&gt; {
49 const queryParams = Object.assign({}, form) 81 const queryParams = Object.assign({}, form)
50 queryParams.pageSize = page.pageSize 82 queryParams.pageSize = page.pageSize
51 queryParams.pageNo = page.currentPage 83 queryParams.pageNo = page.currentPage
  84 + gridOptions.loading = false
52 return new Promise(async (resolve) => { 85 return new Promise(async (resolve) => {
53 - resolve(await getPageApi(queryParams)) 86 + resolve(await config?.getListApi(queryParams))
54 }) 87 })
55 } 88 }
56 } 89 }
57 } 90 }
58 }) 91 })
59 - return gridOptions 92 + const delList = (ids: string | number | string[] | number[]) => {
  93 + message.delConfirm().then(() => {
  94 + config?.delListApi && config?.delListApi(ids)
  95 + message.success(t('common.delSuccess'))
  96 + })
  97 + }
  98 + return {
  99 + gridOptions,
  100 + delList
  101 + }
60 } 102 }
yudao-ui-admin-vue3/src/plugins/vxeTable/index.ts
@@ -72,7 +72,6 @@ VXETable.setup({ @@ -72,7 +72,6 @@ VXETable.setup({
72 grid: { 72 grid: {
73 toolbarConfig: { 73 toolbarConfig: {
74 refresh: true, 74 refresh: true,
75 - import: true,  
76 export: true, 75 export: true,
77 print: true, 76 print: true,
78 zoom: true, 77 zoom: true,
yudao-ui-admin-vue3/src/styles/index.less
1 @import './var.css'; 1 @import './var.css';
  2 +@import './vxe.css';
2 @import 'element-plus/theme-chalk/dark/css-vars.css'; 3 @import 'element-plus/theme-chalk/dark/css-vars.css';
yudao-ui-admin-vue3/src/styles/vxe.css 0 → 100644
  1 +/*滚动条整体部分*/
  2 +.xtable-scrollbar ::-webkit-scrollbar {
  3 + width: 10px;
  4 + height: 10px;
  5 +}
  6 +/*滚动条的轨道*/
  7 +.xtable-scrollbar ::-webkit-scrollbar-track {
  8 + background-color: #ffffff;
  9 +}
  10 +/*滚动条里面的小方块,能向上向下移动*/
  11 +.xtable-scrollbar ::-webkit-scrollbar-thumb {
  12 + background-color: #bfbfbf;
  13 + border-radius: 5px;
  14 + border: 1px solid #f1f1f1;
  15 + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
  16 +}
  17 +.xtable-scrollbar ::-webkit-scrollbar-thumb:hover {
  18 + background-color: #a8a8a8;
  19 +}
  20 +.xtable-scrollbar ::-webkit-scrollbar-thumb:active {
  21 + background-color: #787878;
  22 +}
  23 +/*边角,即两个滚动条的交汇处*/
  24 +.xtable-scrollbar ::-webkit-scrollbar-corner {
  25 + background-color: #ffffff;
  26 +}
yudao-ui-admin-vue3/src/types/components.d.ts
@@ -18,6 +18,7 @@ export type ComponentName = @@ -18,6 +18,7 @@ export type ComponentName =
18 | 'Divider' 18 | 'Divider'
19 | 'TimeSelect' 19 | 'TimeSelect'
20 | 'SelectV2' 20 | 'SelectV2'
  21 + | 'TreeSelect'
21 | 'InputPassword' 22 | 'InputPassword'
22 | 'Editor' 23 | 'Editor'
23 24
yudao-ui-admin-vue3/src/views/Login/components/LoginForm.vue
@@ -125,7 +125,7 @@ const handleLogin = async (params) =&gt; { @@ -125,7 +125,7 @@ const handleLogin = async (params) =&gt; {
125 redirect.value = '/' 125 redirect.value = '/'
126 } 126 }
127 push({ path: redirect.value || permissionStore.addRouters[0].path }) 127 push({ path: redirect.value || permissionStore.addRouters[0].path })
128 - } finally { 128 + } catch {
129 loginLoading.value = false 129 loginLoading.value = false
130 } 130 }
131 } 131 }
yudao-ui-admin-vue3/src/views/infra/codegen/components/CloumInfoForm.vue
1 <script setup lang="ts"> 1 <script setup lang="ts">
2 -import { ElTable, ElTableColumn, ElInput, ElSelect, ElOption, ElCheckbox } from 'element-plus'  
3 import { onMounted, PropType, ref } from 'vue' 2 import { onMounted, PropType, ref } from 'vue'
  3 +import { ElInput, ElSelect, ElOption } from 'element-plus'
4 import { CodegenColumnVO } from '@/api/infra/codegen/types' 4 import { CodegenColumnVO } from '@/api/infra/codegen/types'
5 import { listSimpleDictTypeApi } from '@/api/system/dict/dict.type' 5 import { listSimpleDictTypeApi } from '@/api/system/dict/dict.type'
6 import { DictTypeVO } from '@/api/system/dict/types' 6 import { DictTypeVO } from '@/api/system/dict/types'
@@ -16,7 +16,6 @@ const getDictOptions = async () =&gt; { @@ -16,7 +16,6 @@ const getDictOptions = async () =&gt; {
16 const res = await listSimpleDictTypeApi() 16 const res = await listSimpleDictTypeApi()
17 dictOptions.value = res 17 dictOptions.value = res
18 } 18 }
19 -const tableHeight = document.documentElement.scrollHeight - 245 + 'px'  
20 onMounted(async () => { 19 onMounted(async () => {
21 await getDictOptions() 20 await getDictOptions()
22 }) 21 })
@@ -25,25 +24,15 @@ defineExpose({ @@ -25,25 +24,15 @@ defineExpose({
25 }) 24 })
26 </script> 25 </script>
27 <template> 26 <template>
28 - <el-table ref="dragTable" :data="info" row-key="columnId" :max-height="tableHeight">  
29 - <el-table-column  
30 - label="字段列名"  
31 - prop="columnName"  
32 - min-width="10%"  
33 - :show-overflow-tooltip="true"  
34 - />  
35 - <el-table-column label="字段描述" min-width="10%" prop="columnComment"> 27 + <vxe-table ref="dragTable" :data="info" stripe :column-config="{ resizable: true }">
  28 + <vxe-column title="字段列名" field="columnName" width="10%" />
  29 + <vxe-column title="字段描述" field="columnComment">
36 <template #default="{ row }"> 30 <template #default="{ row }">
37 <el-input v-model="row.columnComment" /> 31 <el-input v-model="row.columnComment" />
38 </template> 32 </template>
39 - </el-table-column>  
40 - <el-table-column  
41 - label="物理类型"  
42 - prop="dataType"  
43 - min-width="10%"  
44 - :show-overflow-tooltip="true"  
45 - />  
46 - <el-table-column label="Java类型" min-width="11%" prop="javaType"> 33 + </vxe-column>
  34 + <vxe-column title="物理类型" field="dataType" width="10%" />
  35 + <vxe-column title="Java类型" width="10%" field="javaType">
47 <template #default="{ row }"> 36 <template #default="{ row }">
48 <el-select v-model="row.javaType"> 37 <el-select v-model="row.javaType">
49 <el-option label="Long" value="Long" /> 38 <el-option label="Long" value="Long" />
@@ -55,33 +44,33 @@ defineExpose({ @@ -55,33 +44,33 @@ defineExpose({
55 <el-option label="Boolean" value="Boolean" /> 44 <el-option label="Boolean" value="Boolean" />
56 </el-select> 45 </el-select>
57 </template> 46 </template>
58 - </el-table-column>  
59 - <el-table-column label="java属性" min-width="10%" prop="javaField"> 47 + </vxe-column>
  48 + <vxe-column title="java属性" width="10%" field="javaField">
60 <template #default="{ row }"> 49 <template #default="{ row }">
61 <el-input v-model="row.javaField" /> 50 <el-input v-model="row.javaField" />
62 </template> 51 </template>
63 - </el-table-column>  
64 - <el-table-column label="插入" min-width="4%" prop="createOperation"> 52 + </vxe-column>
  53 + <vxe-column title="插入" width="4%" field="createOperation">
65 <template #default="{ row }"> 54 <template #default="{ row }">
66 - <el-checkbox true-label="true" false-label="false" v-model="row.createOperation" /> 55 + <vxe-checkbox true-label="true" false-label="false" v-model="row.createOperation" />
67 </template> 56 </template>
68 - </el-table-column>  
69 - <el-table-column label="编辑" min-width="4%" prop="updateOperation"> 57 + </vxe-column>
  58 + <vxe-column title="编辑" width="4%" field="updateOperation">
70 <template #default="{ row }"> 59 <template #default="{ row }">
71 - <el-checkbox true-label="true" false-label="false" v-model="row.updateOperation" /> 60 + <vxe-checkbox true-label="true" false-label="false" v-model="row.updateOperation" />
72 </template> 61 </template>
73 - </el-table-column>  
74 - <el-table-column label="列表" min-width="4%" prop="listOperationResult"> 62 + </vxe-column>
  63 + <vxe-column title="列表" width="4%" field="listOperationResult">
75 <template #default="{ row }"> 64 <template #default="{ row }">
76 - <el-checkbox true-label="true" false-label="false" v-model="row.listOperationResult" /> 65 + <vxe-checkbox true-label="true" false-label="false" v-model="row.listOperationResult" />
77 </template> 66 </template>
78 - </el-table-column>  
79 - <el-table-column label="查询" min-width="4%" prop="listOperation"> 67 + </vxe-column>
  68 + <vxe-column title="查询" width="4%" field="listOperation">
80 <template #default="{ row }"> 69 <template #default="{ row }">
81 - <el-checkbox true-label="true" false-label="false" v-model="row.listOperation" /> 70 + <vxe-checkbox true-label="true" false-label="false" v-model="row.listOperation" />
82 </template> 71 </template>
83 - </el-table-column>  
84 - <el-table-column label="查询方式" min-width="10%" prop="listOperationCondition"> 72 + </vxe-column>
  73 + <vxe-column title="查询方式" width="8%" field="listOperationCondition">
85 <template #default="{ row }"> 74 <template #default="{ row }">
86 <el-select v-model="row.listOperationCondition"> 75 <el-select v-model="row.listOperationCondition">
87 <el-option label="=" value="=" /> 76 <el-option label="=" value="=" />
@@ -94,13 +83,13 @@ defineExpose({ @@ -94,13 +83,13 @@ defineExpose({
94 <el-option label="BETWEEN" value="BETWEEN" /> 83 <el-option label="BETWEEN" value="BETWEEN" />
95 </el-select> 84 </el-select>
96 </template> 85 </template>
97 - </el-table-column>  
98 - <el-table-column label="允许空" min-width="5%" prop="nullable"> 86 + </vxe-column>
  87 + <vxe-column title="允许空" width="4%" field="nullable">
99 <template #default="{ row }"> 88 <template #default="{ row }">
100 - <el-checkbox true-label="true" false-label="false" v-model="row.nullable" /> 89 + <vxe-checkbox true-label="true" false-label="false" v-model="row.nullable" />
101 </template> 90 </template>
102 - </el-table-column>  
103 - <el-table-column label="显示类型" min-width="12%" prop="htmlType"> 91 + </vxe-column>
  92 + <vxe-column title="显示类型" width="10%" field="htmlType">
104 <template #default="{ row }"> 93 <template #default="{ row }">
105 <el-select v-model="row.htmlType"> 94 <el-select v-model="row.htmlType">
106 <el-option label="文本框" value="input" /> 95 <el-option label="文本框" value="input" />
@@ -114,8 +103,8 @@ defineExpose({ @@ -114,8 +103,8 @@ defineExpose({
114 <el-option label="富文本控件" value="editor" /> 103 <el-option label="富文本控件" value="editor" />
115 </el-select> 104 </el-select>
116 </template> 105 </template>
117 - </el-table-column>  
118 - <el-table-column label="字典类型" min-width="12%" prop="dictType"> 106 + </vxe-column>
  107 + <vxe-column title="字典类型" width="10%" field="dictType">
119 <template #default="{ row }"> 108 <template #default="{ row }">
120 <el-select v-model="row.dictType" clearable filterable placeholder="请选择"> 109 <el-select v-model="row.dictType" clearable filterable placeholder="请选择">
121 <el-option 110 <el-option
@@ -126,11 +115,11 @@ defineExpose({ @@ -126,11 +115,11 @@ defineExpose({
126 /> 115 />
127 </el-select> 116 </el-select>
128 </template> 117 </template>
129 - </el-table-column>  
130 - <el-table-column label="示例" min-width="10%" prop="example"> 118 + </vxe-column>
  119 + <vxe-column title="示例" field="example">
131 <template #default="{ row }"> 120 <template #default="{ row }">
132 <el-input v-model="row.example" /> 121 <el-input v-model="row.example" />
133 </template> 122 </template>
134 - </el-table-column>  
135 - </el-table> 123 + </vxe-column>
  124 + </vxe-table>
136 </template> 125 </template>
yudao-ui-admin-vue3/src/views/system/menu/index.vue
@@ -318,8 +318,8 @@ const queryParams = reactive({ @@ -318,8 +318,8 @@ const queryParams = reactive({
318 status: null 318 status: null
319 }) 319 })
320 const getList = async () => { 320 const getList = async () => {
321 - statusOption.value = getIntDictOptions(DICT_TYPE.COMMON_STATUS)  
322 tableLoading.value = true 321 tableLoading.value = true
  322 + statusOption.value = getIntDictOptions(DICT_TYPE.COMMON_STATUS)
323 const res = await MenuApi.getMenuListApi(queryParams) 323 const res = await MenuApi.getMenuListApi(queryParams)
324 tableData.value = res 324 tableData.value = res
325 tableLoading.value = false 325 tableLoading.value = false
yudao-ui-admin-vue3/src/views/system/post/index.vue
@@ -44,12 +44,11 @@ @@ -44,12 +44,11 @@
44 <XModal id="postModel" v-model="dialogVisible" :title="dialogTitle"> 44 <XModal id="postModel" v-model="dialogVisible" :title="dialogTitle">
45 <template #default> 45 <template #default>
46 <!-- 对话框(添加 / 修改) --> 46 <!-- 对话框(添加 / 修改) -->
47 - <vxe-form  
48 - ref="xForm" 47 + <Form
49 v-if="['create', 'update'].includes(actionType)" 48 v-if="['create', 'update'].includes(actionType)"
50 - :data="formData"  
51 - :items="formItems" 49 + :schema="allSchemas.formSchema"
52 :rules="rules" 50 :rules="rules"
  51 + ref="formRef"
53 /> 52 />
54 <Descriptions 53 <Descriptions
55 v-if="actionType === 'detail'" 54 v-if="actionType === 'detail'"
@@ -69,42 +68,39 @@ @@ -69,42 +68,39 @@
69 v-if="['create', 'update'].includes(actionType)" 68 v-if="['create', 'update'].includes(actionType)"
70 :loading="actionLoading" 69 :loading="actionLoading"
71 :title="t('action.save')" 70 :title="t('action.save')"
  71 + type="primary"
72 @click="submitForm" 72 @click="submitForm"
73 /> 73 />
74 - <XButton  
75 - v-if="['create', 'update'].includes(actionType)"  
76 - :loading="actionLoading"  
77 - :title="t('dialog.close')"  
78 - @click="dialogVisible = false"  
79 - /> 74 + <XButton :loading="actionLoading" :title="t('dialog.close')" @click="dialogVisible = false" />
80 </template> 75 </template>
81 </XModal> 76 </XModal>
82 </template> 77 </template>
83 <script setup lang="ts"> 78 <script setup lang="ts">
84 -import { ref } from 'vue' 79 +import { ref, unref } from 'vue'
85 import dayjs from 'dayjs' 80 import dayjs from 'dayjs'
86 -import { useI18n } from '@/hooks/web/useI18n'  
87 -import { VxeFormEvents, VxeFormInstance, VxeFormItemProps, VxeGridInstance } from 'vxe-table'  
88 -import * as PostApi from '@/api/system/post'  
89 import { DICT_TYPE } from '@/utils/dict' 81 import { DICT_TYPE } from '@/utils/dict'
90 -import { ContentWrap } from '@/components/ContentWrap' 82 +import * as PostApi from '@/api/system/post'
91 import { PostVO } from '@/api/system/post/types' 83 import { PostVO } from '@/api/system/post/types'
92 import { rules, allSchemas } from './post.data' 84 import { rules, allSchemas } from './post.data'
  85 +import { useI18n } from '@/hooks/web/useI18n'
93 import { useMessage } from '@/hooks/web/useMessage' 86 import { useMessage } from '@/hooks/web/useMessage'
94 import { useVxeGrid } from '@/hooks/web/useVxeGrid' 87 import { useVxeGrid } from '@/hooks/web/useVxeGrid'
  88 +import { VxeFormEvents, VxeGridInstance } from 'vxe-table'
  89 +import { FormExpose } from '@/components/Form'
95 90
96 const { t } = useI18n() // 国际化 91 const { t } = useI18n() // 国际化
97 -const message = useMessage() 92 +const message = useMessage() // 消息弹窗
98 const xGrid = ref<VxeGridInstance>() 93 const xGrid = ref<VxeGridInstance>()
99 -const xForm = ref<VxeFormInstance>() 94 +const formRef = ref<FormExpose>() // 表单 Ref
100 const dialogVisible = ref(false) // 是否显示弹出层 95 const dialogVisible = ref(false) // 是否显示弹出层
101 const dialogTitle = ref('edit') // 弹出层标题 96 const dialogTitle = ref('edit') // 弹出层标题
102 const actionType = ref('') // 操作按钮的类型 97 const actionType = ref('') // 操作按钮的类型
103 -const actionLoading = ref(false) // 遮罩层 98 +const actionLoading = ref(false) // 按钮Loading
104 99
105 -const gridOptions = useVxeGrid(allSchemas, PostApi.getPostPageApi)  
106 -const formData = ref<PostVO>()  
107 -const formItems = ref<VxeFormItemProps[]>(allSchemas.formSchema) 100 +const { gridOptions } = useVxeGrid<PostVO>({
  101 + allSchemas: allSchemas,
  102 + getListApi: PostApi.getPostPageApi
  103 +})
108 // 设置标题 104 // 设置标题
109 const setDialogTile = (type: string) => { 105 const setDialogTile = (type: string) => {
110 dialogTitle.value = t('action.' + type) 106 dialogTitle.value = t('action.' + type)
@@ -121,7 +117,8 @@ const handleDetail = (row: PostVO) =&gt; { @@ -121,7 +117,8 @@ const handleDetail = (row: PostVO) =&gt; {
121 // 新增操作 117 // 新增操作
122 const handleCreate = () => { 118 const handleCreate = () => {
123 setDialogTile('create') 119 setDialogTile('create')
124 - formData.value = undefined 120 + // 重置表单
  121 + unref(formRef)?.getElFormRef()?.resetFields()
125 } 122 }
126 123
127 // 修改操作 124 // 修改操作
@@ -129,12 +126,12 @@ const handleUpdate = async (rowId: number) =&gt; { @@ -129,12 +126,12 @@ const handleUpdate = async (rowId: number) =&gt; {
129 setDialogTile('update') 126 setDialogTile('update')
130 // 设置数据 127 // 设置数据
131 const res = await PostApi.getPostApi(rowId) 128 const res = await PostApi.getPostApi(rowId)
132 - formData.value = res 129 + unref(formRef)?.setValues(res)
133 } 130 }
134 // 删除操作 131 // 删除操作
135 -const handleDelete = (rowId: number) => { 132 +const handleDelete = async (rowId: number) => {
136 message 133 message
137 - .confirm(t('common.delMessage'), t('common.confirmTitle')) 134 + .delConfirm()
138 .then(async () => { 135 .then(async () => {
139 await PostApi.deletePostApi(rowId) 136 await PostApi.deletePostApi(rowId)
140 message.success(t('common.delSuccess')) 137 message.success(t('common.delSuccess'))
@@ -145,22 +142,28 @@ const handleDelete = (rowId: number) =&gt; { @@ -145,22 +142,28 @@ const handleDelete = (rowId: number) =&gt; {
145 } 142 }
146 // 提交按钮 143 // 提交按钮
147 const submitForm: VxeFormEvents.Submit = async () => { 144 const submitForm: VxeFormEvents.Submit = async () => {
148 - actionLoading.value = true  
149 - // 提交请求  
150 - try {  
151 - const data = formData.value as PostVO  
152 - if (actionType.value === 'create') {  
153 - await PostApi.createPostApi(data)  
154 - message.success(t('common.createSuccess'))  
155 - } else {  
156 - await PostApi.updatePostApi(data)  
157 - message.success(t('common.updateSuccess')) 145 + const elForm = unref(formRef)?.getElFormRef()
  146 + if (!elForm) return
  147 + elForm.validate(async (valid) => {
  148 + if (valid) {
  149 + actionLoading.value = true
  150 + // 提交请求
  151 + try {
  152 + const data = unref(formRef)?.formModel as PostVO
  153 + if (actionType.value === 'create') {
  154 + await PostApi.createPostApi(data)
  155 + message.success(t('common.createSuccess'))
  156 + } else {
  157 + await PostApi.updatePostApi(data)
  158 + message.success(t('common.updateSuccess'))
  159 + }
  160 + // 操作成功,重新加载列表
  161 + dialogVisible.value = false
  162 + } finally {
  163 + actionLoading.value = false
  164 + xGrid.value?.commitProxy('query')
  165 + }
158 } 166 }
159 - // 操作成功,重新加载列表  
160 - dialogVisible.value = false  
161 - } finally {  
162 - actionLoading.value = false  
163 - xGrid.value?.commitProxy('query')  
164 - } 167 + })
165 } 168 }
166 </script> 169 </script>
yudao-ui-admin-vue3/src/views/system/post/post.data.ts
@@ -57,8 +57,16 @@ const crudSchemas = reactive&lt;VxeCrudSchema[]&gt;([ @@ -57,8 +57,16 @@ const crudSchemas = reactive&lt;VxeCrudSchema[]&gt;([
57 } 57 }
58 }, 58 },
59 { 59 {
  60 + title: '备注',
  61 + field: 'remark',
  62 + table: {
  63 + show: false
  64 + }
  65 + },
  66 + {
60 title: t('common.createTime'), 67 title: t('common.createTime'),
61 field: 'createTime', 68 field: 'createTime',
  69 + formatter: 'formatDate',
62 form: { 70 form: {
63 show: false 71 show: false
64 } 72 }
@@ -66,10 +74,8 @@ const crudSchemas = reactive&lt;VxeCrudSchema[]&gt;([ @@ -66,10 +74,8 @@ const crudSchemas = reactive&lt;VxeCrudSchema[]&gt;([
66 { 74 {
67 title: t('table.action'), 75 title: t('table.action'),
68 field: 'action', 76 field: 'action',
69 - width: '240px',  
70 table: { 77 table: {
71 width: '240px', 78 width: '240px',
72 - showOverflow: true,  
73 slots: { 79 slots: {
74 default: 'action_default' 80 default: 'action_default'
75 } 81 }
yudao-ui-admin/.eslintrc.js
@@ -15,13 +15,6 @@ module.exports = { @@ -15,13 +15,6 @@ module.exports = {
15 // add your custom rules here 15 // add your custom rules here
16 //it is base on https://github.com/vuejs/eslint-config-vue 16 //it is base on https://github.com/vuejs/eslint-config-vue
17 rules: { 17 rules: {
18 - "vue/max-attributes-per-line": [2, {  
19 - "singleline": 10,  
20 - "multiline": {  
21 - "max": 1,  
22 - "allowFirstLine": false  
23 - }  
24 - }],  
25 "vue/singleline-html-element-content-newline": "off", 18 "vue/singleline-html-element-content-newline": "off",
26 "vue/multiline-html-element-content-newline":"off", 19 "vue/multiline-html-element-content-newline":"off",
27 "vue/name-property-casing": ["error", "PascalCase"], 20 "vue/name-property-casing": ["error", "PascalCase"],
yudao-ui-admin/build/index.js
@@ -12,8 +12,8 @@ if (process.env.npm_config_preview || rawArgv.includes(&#39;--preview&#39;)) { @@ -12,8 +12,8 @@ if (process.env.npm_config_preview || rawArgv.includes(&#39;--preview&#39;)) {
12 const port = 9526 12 const port = 9526
13 const publicPath = config.publicPath 13 const publicPath = config.publicPath
14 14
15 - var connect = require('connect')  
16 - var serveStatic = require('serve-static') 15 + const connect = require('connect')
  16 + const serveStatic = require('serve-static')
17 const app = connect() 17 const app = connect()
18 18
19 app.use( 19 app.use(
yudao-ui-admin/package.json
@@ -40,63 +40,61 @@ @@ -40,63 +40,61 @@
40 "url": "https://github.com/YunaiV/ruoyi-vue-pro" 40 "url": "https://github.com/YunaiV/ruoyi-vue-pro"
41 }, 41 },
42 "dependencies": { 42 "dependencies": {
  43 + "@babel/parser": "7.7.4",
43 "@riophae/vue-treeselect": "0.4.0", 44 "@riophae/vue-treeselect": "0.4.0",
44 - "axios": "0.24.0", 45 + "axios": "0.27.2",
  46 + "bpmn-js-token-simulation": "0.10.0",
45 "clipboard": "2.0.8", 47 "clipboard": "2.0.8",
46 - "core-js": "^3.21.1", 48 + "core-js": "^3.26.0",
  49 + "crypto-js": "^4.0.0",
47 "echarts": "4.9.0", 50 "echarts": "4.9.0",
48 - "element-ui": "2.15.8", 51 + "element-ui": "2.15.10",
49 "file-saver": "2.0.5", 52 "file-saver": "2.0.5",
50 - "fuse.js": "6.4.3", 53 + "fuse.js": "6.6.2",
51 "highlight.js": "9.18.5", 54 "highlight.js": "9.18.5",
52 "js-beautify": "1.13.0", 55 "js-beautify": "1.13.0",
53 - "jsencrypt": "3.0.0-rc.1",  
54 - "crypto-js": "^4.0.0", 56 + "jsencrypt": "3.3.1",
  57 + "min-dash": "3.5.2",
55 "nprogress": "0.2.0", 58 "nprogress": "0.2.0",
56 "quill": "1.3.7", 59 "quill": "1.3.7",
57 "screenfull": "5.0.2", 60 "screenfull": "5.0.2",
58 "sortablejs": "1.10.2", 61 "sortablejs": "1.10.2",
59 - "vue": "2.6.12", 62 + "throttle-debounce": "2.1.0",
  63 + "vue": "2.7.0",
60 "vue-count-to": "1.0.13", 64 "vue-count-to": "1.0.13",
61 - "vue-cropper": "0.5.5", 65 + "vue-cropper": "0.5.8",
62 "vue-meta": "^2.4.0", 66 "vue-meta": "^2.4.0",
63 "vue-router": "3.4.9", 67 "vue-router": "3.4.9",
64 "vuedraggable": "2.24.3", 68 "vuedraggable": "2.24.3",
65 - "vuex": "3.6.0",  
66 - "bpmn-js-token-simulation": "0.10.0",  
67 - "min-dash": "3.5.2",  
68 - "xml-js": "1.6.11",  
69 - "@babel/parser": "7.7.4",  
70 - "throttle-debounce": "2.1.0" 69 + "vuex": "3.6.2",
  70 + "xml-js": "1.6.11"
71 }, 71 },
72 "devDependencies": { 72 "devDependencies": {
73 - "@vue/cli-plugin-babel": "4.4.6",  
74 - "@vue/cli-plugin-eslint": "4.4.6",  
75 - "@vue/cli-service": "4.4.6", 73 + "@vue/cli-plugin-babel": "4.5.18",
  74 + "@vue/cli-plugin-eslint": "4.5.18",
  75 + "@vue/cli-service": "4.5.18",
  76 + "@vue/compiler-sfc": "^3.0.1",
  77 + "@vue/eslint-config-prettier": "^5.0.0",
76 "babel-eslint": "10.1.0", 78 "babel-eslint": "10.1.0",
  79 + "bpmn-js": "8.9.0",
  80 + "bpmn-js-properties-panel": "0.46.0",
77 "chalk": "4.1.0", 81 "chalk": "4.1.0",
78 "compression-webpack-plugin": "5.0.2", 82 "compression-webpack-plugin": "5.0.2",
79 "connect": "3.6.6", 83 "connect": "3.6.6",
80 "eslint": "7.15.0", 84 "eslint": "7.15.0",
81 - "eslint-plugin-vue": "7.2.0", 85 + "eslint-config-airbnb-base": "^14.0.0",
  86 + "eslint-plugin-import": "^2.26.0",
  87 + "eslint-plugin-prettier": "^3.1.0",
  88 + "eslint-plugin-vue": "9.0.0",
  89 + "fs-extra": "^8.1.0",
82 "lint-staged": "10.5.3", 90 "lint-staged": "10.5.3",
83 - "sass": "1.32.13",  
84 "runjs": "4.4.2", 91 "runjs": "4.4.2",
85 - "sass-loader": "10.1.1", 92 + "sass": "1.56.0",
  93 + "sass-loader": "13.1.0",
86 "script-ext-html-webpack-plugin": "2.1.5", 94 "script-ext-html-webpack-plugin": "2.1.5",
87 "svg-sprite-loader": "5.1.1", 95 "svg-sprite-loader": "5.1.1",
88 - "vue-template-compiler": "2.6.12",  
89 - "vue2-ace-editor": "^0.0.15",  
90 - "@vue/compiler-sfc": "^3.0.1",  
91 - "@vue/eslint-config-prettier": "^5.0.0",  
92 - "bpmn-js": "8.9.0",  
93 - "bpmn-js-properties-panel": "0.46.0",  
94 - "eslint-plugin-prettier": "^3.1.0",  
95 - "fs-extra": "^8.1.0",  
96 "terser-webpack-plugin": "^4.2.3", 96 "terser-webpack-plugin": "^4.2.3",
97 - "webpack-bundle-analyzer": "^3.9.0",  
98 - "eslint-config-airbnb-base": "^14.0.0",  
99 - "eslint-plugin-import": "^2.20.0" 97 + "webpack-bundle-analyzer": "^3.9.0"
100 }, 98 },
101 "engines": { 99 "engines": {
102 "node": ">=8.9", 100 "node": ">=8.9",
yudao-ui-admin/src/components/Breadcrumb/index.vue
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 <el-breadcrumb class="app-breadcrumb" separator="/"> 2 <el-breadcrumb class="app-breadcrumb" separator="/">
3 <transition-group name="breadcrumb"> 3 <transition-group name="breadcrumb">
4 <el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path"> 4 <el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
5 - <span v-if="item.redirect==='noRedirect'||index==levelList.length-1" class="no-redirect">{{ item.meta.title }}</span> 5 + <span v-if="item.redirect==='noRedirect'||index===levelList.length-1" class="no-redirect">{{ item.meta.title }}</span>
6 <a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a> 6 <a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a>
7 </el-breadcrumb-item> 7 </el-breadcrumb-item>
8 </transition-group> 8 </transition-group>
yudao-ui-admin/src/components/Crontab/day.vue
@@ -103,25 +103,25 @@ export default { @@ -103,25 +103,25 @@ export default {
103 }, 103 },
104 // 周期两个值变化时 104 // 周期两个值变化时
105 cycleChange() { 105 cycleChange() {
106 - if (this.radioValue == '3') { 106 + if (this.radioValue === '3') {
107 this.$emit('update', 'day', this.cycleTotal); 107 this.$emit('update', 'day', this.cycleTotal);
108 } 108 }
109 }, 109 },
110 // 平均两个值变化时 110 // 平均两个值变化时
111 averageChange() { 111 averageChange() {
112 - if (this.radioValue == '4') { 112 + if (this.radioValue === '4') {
113 this.$emit('update', 'day', this.averageTotal); 113 this.$emit('update', 'day', this.averageTotal);
114 } 114 }
115 }, 115 },
116 // 最近工作日值变化时 116 // 最近工作日值变化时
117 workdayChange() { 117 workdayChange() {
118 - if (this.radioValue == '5') { 118 + if (this.radioValue === '5') {
119 this.$emit('update', 'day', this.workdayCheck + 'W'); 119 this.$emit('update', 'day', this.workdayCheck + 'W');
120 } 120 }
121 }, 121 },
122 // checkbox值变化时 122 // checkbox值变化时
123 checkboxChange() { 123 checkboxChange() {
124 - if (this.radioValue == '7') { 124 + if (this.radioValue === '7') {
125 this.$emit('update', 'day', this.checkboxString); 125 this.$emit('update', 'day', this.checkboxString);
126 } 126 }
127 } 127 }
@@ -148,13 +148,12 @@ export default { @@ -148,13 +148,12 @@ export default {
148 }, 148 },
149 // 计算工作日格式 149 // 计算工作日格式
150 workdayCheck: function () { 150 workdayCheck: function () {
151 - const workday = this.checkNum(this.workday, 1, 31)  
152 - return workday; 151 + return this.checkNum(this.workday, 1, 31);
153 }, 152 },
154 // 计算勾选的checkbox值合集 153 // 计算勾选的checkbox值合集
155 checkboxString: function () { 154 checkboxString: function () {
156 let str = this.checkboxList.join(); 155 let str = this.checkboxList.join();
157 - return str == '' ? '*' : str; 156 + return str === '' ? '*' : str;
158 } 157 }
159 } 158 }
160 } 159 }
yudao-ui-admin/src/components/Crontab/hour.vue
@@ -68,19 +68,19 @@ export default { @@ -68,19 +68,19 @@ export default {
68 }, 68 },
69 // 周期两个值变化时 69 // 周期两个值变化时
70 cycleChange() { 70 cycleChange() {
71 - if (this.radioValue == '2') { 71 + if (this.radioValue === '2') {
72 this.$emit('update', 'hour', this.cycleTotal); 72 this.$emit('update', 'hour', this.cycleTotal);
73 } 73 }
74 }, 74 },
75 // 平均两个值变化时 75 // 平均两个值变化时
76 averageChange() { 76 averageChange() {
77 - if (this.radioValue == '3') { 77 + if (this.radioValue === '3') {
78 this.$emit('update', 'hour', this.averageTotal); 78 this.$emit('update', 'hour', this.averageTotal);
79 } 79 }
80 }, 80 },
81 // checkbox值变化时 81 // checkbox值变化时
82 checkboxChange() { 82 checkboxChange() {
83 - if (this.radioValue == '4') { 83 + if (this.radioValue === '4') {
84 this.$emit('update', 'hour', this.checkboxString); 84 this.$emit('update', 'hour', this.checkboxString);
85 } 85 }
86 } 86 }
@@ -107,7 +107,7 @@ export default { @@ -107,7 +107,7 @@ export default {
107 // 计算勾选的checkbox值合集 107 // 计算勾选的checkbox值合集
108 checkboxString: function () { 108 checkboxString: function () {
109 let str = this.checkboxList.join(); 109 let str = this.checkboxList.join();
110 - return str == '' ? '*' : str; 110 + return str === '' ? '*' : str;
111 } 111 }
112 } 112 }
113 } 113 }
yudao-ui-admin/src/components/Crontab/index.vue
@@ -143,8 +143,8 @@ export default { @@ -143,8 +143,8 @@ export default {
143 props: ["expression", "hideComponent"], 143 props: ["expression", "hideComponent"],
144 methods: { 144 methods: {
145 shouldHide(key) { 145 shouldHide(key) {
146 - if (this.hideComponent && this.hideComponent.includes(key)) return false;  
147 - return true; 146 + return !(this.hideComponent && this.hideComponent.includes(key));
  147 +
148 }, 148 },
149 resolveExp() { 149 resolveExp() {
150 // 反解析 表达式 150 // 反解析 表达式
@@ -215,10 +215,10 @@ export default { @@ -215,10 +215,10 @@ export default {
215 insValue = 4; 215 insValue = 4;
216 this.$refs[refName].checkboxList = value.split(","); 216 this.$refs[refName].checkboxList = value.split(",");
217 } 217 }
218 - } else if (name == "day") { 218 + } else if (name === "day") {
219 if (value === "*") { 219 if (value === "*") {
220 insValue = 1; 220 insValue = 1;
221 - } else if (value == "?") { 221 + } else if (value === "?") {
222 insValue = 2; 222 insValue = 2;
223 } else if (value.indexOf("-") > -1) { 223 } else if (value.indexOf("-") > -1) {
224 let indexArr = value.split("-"); 224 let indexArr = value.split("-");
@@ -246,10 +246,10 @@ export default { @@ -246,10 +246,10 @@ export default {
246 this.$refs[refName].checkboxList = value.split(","); 246 this.$refs[refName].checkboxList = value.split(",");
247 insValue = 7; 247 insValue = 7;
248 } 248 }
249 - } else if (name == "week") { 249 + } else if (name === "week") {
250 if (value === "*") { 250 if (value === "*") {
251 insValue = 1; 251 insValue = 1;
252 - } else if (value == "?") { 252 + } else if (value === "?") {
253 insValue = 2; 253 insValue = 2;
254 } else if (value.indexOf("-") > -1) { 254 } else if (value.indexOf("-") > -1) {
255 let indexArr = value.split("-"); 255 let indexArr = value.split("-");
@@ -275,10 +275,10 @@ export default { @@ -275,10 +275,10 @@ export default {
275 this.$refs[refName].checkboxList = value.split(","); 275 this.$refs[refName].checkboxList = value.split(",");
276 insValue = 6; 276 insValue = 6;
277 } 277 }
278 - } else if (name == "year") {  
279 - if (value == "") { 278 + } else if (name === "year") {
  279 + if (value === "") {
280 insValue = 1; 280 insValue = 1;
281 - } else if (value == "*") { 281 + } else if (value === "*") {
282 insValue = 2; 282 insValue = 2;
283 } else if (value.indexOf("-") > -1) { 283 } else if (value.indexOf("-") > -1) {
284 insValue = 3; 284 insValue = 3;
@@ -343,7 +343,7 @@ export default { @@ -343,7 +343,7 @@ export default {
343 obj.month + 343 obj.month +
344 " " + 344 " " +
345 obj.week + 345 obj.week +
346 - (obj.year == "" ? "" : " " + obj.year); 346 + (obj.year === "" ? "" : " " + obj.year);
347 return str; 347 return str;
348 }, 348 },
349 }, 349 },
yudao-ui-admin/src/components/Crontab/min.vue
@@ -69,19 +69,19 @@ export default { @@ -69,19 +69,19 @@ export default {
69 }, 69 },
70 // 周期两个值变化时 70 // 周期两个值变化时
71 cycleChange() { 71 cycleChange() {
72 - if (this.radioValue == '2') { 72 + if (this.radioValue === '2') {
73 this.$emit('update', 'min', this.cycleTotal, 'min'); 73 this.$emit('update', 'min', this.cycleTotal, 'min');
74 } 74 }
75 }, 75 },
76 // 平均两个值变化时 76 // 平均两个值变化时
77 averageChange() { 77 averageChange() {
78 - if (this.radioValue == '3') { 78 + if (this.radioValue === '3') {
79 this.$emit('update', 'min', this.averageTotal, 'min'); 79 this.$emit('update', 'min', this.averageTotal, 'min');
80 } 80 }
81 }, 81 },
82 // checkbox值变化时 82 // checkbox值变化时
83 checkboxChange() { 83 checkboxChange() {
84 - if (this.radioValue == '4') { 84 + if (this.radioValue === '4') {
85 this.$emit('update', 'min', this.checkboxString, 'min'); 85 this.$emit('update', 'min', this.checkboxString, 'min');
86 } 86 }
87 }, 87 },
@@ -109,8 +109,8 @@ export default { @@ -109,8 +109,8 @@ export default {
109 // 计算勾选的checkbox值合集 109 // 计算勾选的checkbox值合集
110 checkboxString: function () { 110 checkboxString: function () {
111 let str = this.checkboxList.join(); 111 let str = this.checkboxList.join();
112 - return str == '' ? '*' : str; 112 + return str === '' ? '*' : str;
113 } 113 }
114 } 114 }
115 } 115 }
116 -</script>  
117 \ No newline at end of file 116 \ No newline at end of file
  117 +</script>
yudao-ui-admin/src/components/Crontab/month.vue
@@ -68,19 +68,19 @@ export default { @@ -68,19 +68,19 @@ export default {
68 }, 68 },
69 // 周期两个值变化时 69 // 周期两个值变化时
70 cycleChange() { 70 cycleChange() {
71 - if (this.radioValue == '2') { 71 + if (this.radioValue === '2') {
72 this.$emit('update', 'month', this.cycleTotal); 72 this.$emit('update', 'month', this.cycleTotal);
73 } 73 }
74 }, 74 },
75 // 平均两个值变化时 75 // 平均两个值变化时
76 averageChange() { 76 averageChange() {
77 - if (this.radioValue == '3') { 77 + if (this.radioValue === '3') {
78 this.$emit('update', 'month', this.averageTotal); 78 this.$emit('update', 'month', this.averageTotal);
79 } 79 }
80 }, 80 },
81 // checkbox值变化时 81 // checkbox值变化时
82 checkboxChange() { 82 checkboxChange() {
83 - if (this.radioValue == '4') { 83 + if (this.radioValue === '4') {
84 this.$emit('update', 'month', this.checkboxString); 84 this.$emit('update', 'month', this.checkboxString);
85 } 85 }
86 } 86 }
@@ -107,7 +107,7 @@ export default { @@ -107,7 +107,7 @@ export default {
107 // 计算勾选的checkbox值合集 107 // 计算勾选的checkbox值合集
108 checkboxString: function () { 108 checkboxString: function () {
109 let str = this.checkboxList.join(); 109 let str = this.checkboxList.join();
110 - return str == '' ? '*' : str; 110 + return str === '' ? '*' : str;
111 } 111 }
112 } 112 }
113 } 113 }
yudao-ui-admin/src/components/Crontab/result.vue
@@ -126,7 +126,7 @@ export default { @@ -126,7 +126,7 @@ export default {
126 // 如果到达最大值时 126 // 如果到达最大值时
127 if (nDay > DDate[DDate.length - 1]) { 127 if (nDay > DDate[DDate.length - 1]) {
128 resetDay(); 128 resetDay();
129 - if (Mi == MDate.length - 1) { 129 + if (Mi === MDate.length - 1) {
130 resetMonth(); 130 resetMonth();
131 continue goYear; 131 continue goYear;
132 } 132 }
@@ -141,9 +141,9 @@ export default { @@ -141,9 +141,9 @@ export default {
141 // 如果到达最大值时 141 // 如果到达最大值时
142 if (nHour > hDate[hDate.length - 1]) { 142 if (nHour > hDate[hDate.length - 1]) {
143 resetHour(); 143 resetHour();
144 - if (Di == DDate.length - 1) { 144 + if (Di === DDate.length - 1) {
145 resetDay(); 145 resetDay();
146 - if (Mi == MDate.length - 1) { 146 + if (Mi === MDate.length - 1) {
147 resetMonth(); 147 resetMonth();
148 continue goYear; 148 continue goYear;
149 } 149 }
@@ -158,7 +158,7 @@ export default { @@ -158,7 +158,7 @@ export default {
158 continue goMonth; 158 continue goMonth;
159 } 159 }
160 // 如果日期规则中有值时 160 // 如果日期规则中有值时
161 - if (this.dayRule == 'lastDay') { 161 + if (this.dayRule === 'lastDay') {
162 // 如果不是合法日期则需要将前将日期调到合法日期即月末最后一天 162 // 如果不是合法日期则需要将前将日期调到合法日期即月末最后一天
163 163
164 if (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) { 164 if (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {
@@ -168,7 +168,7 @@ export default { @@ -168,7 +168,7 @@ export default {
168 thisDD = DD < 10 ? '0' + DD : DD; 168 thisDD = DD < 10 ? '0' + DD : DD;
169 } 169 }
170 } 170 }
171 - } else if (this.dayRule == 'workDay') { 171 + } else if (this.dayRule === 'workDay') {
172 // 校验并调整如果是2月30号这种日期传进来时需调整至正常月底 172 // 校验并调整如果是2月30号这种日期传进来时需调整至正常月底
173 if (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) { 173 if (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {
174 while (DD > 0 && this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) { 174 while (DD > 0 && this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {
@@ -179,7 +179,7 @@ export default { @@ -179,7 +179,7 @@ export default {
179 // 获取达到条件的日期是星期X 179 // 获取达到条件的日期是星期X
180 let thisWeek = this.formatDate(new Date(YY + '-' + MM + '-' + thisDD + ' 00:00:00'), 'week'); 180 let thisWeek = this.formatDate(new Date(YY + '-' + MM + '-' + thisDD + ' 00:00:00'), 'week');
181 // 当星期日时 181 // 当星期日时
182 - if (thisWeek == 1) { 182 + if (thisWeek === 1) {
183 // 先找下一个日,并判断是否为月底 183 // 先找下一个日,并判断是否为月底
184 DD++; 184 DD++;
185 thisDD = DD < 10 ? '0' + DD : DD; 185 thisDD = DD < 10 ? '0' + DD : DD;
@@ -187,7 +187,7 @@ export default { @@ -187,7 +187,7 @@ export default {
187 if (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) { 187 if (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {
188 DD -= 3; 188 DD -= 3;
189 } 189 }
190 - } else if (thisWeek == 7) { 190 + } else if (thisWeek === 7) {
191 // 当星期6时只需判断不是1号就可进行操作 191 // 当星期6时只需判断不是1号就可进行操作
192 if (this.dayRuleSup !== 1) { 192 if (this.dayRuleSup !== 1) {
193 DD--; 193 DD--;
@@ -195,16 +195,16 @@ export default { @@ -195,16 +195,16 @@ export default {
195 DD += 2; 195 DD += 2;
196 } 196 }
197 } 197 }
198 - } else if (this.dayRule == 'weekDay') { 198 + } else if (this.dayRule === 'weekDay') {
199 // 如果指定了是星期几 199 // 如果指定了是星期几
200 // 获取当前日期是属于星期几 200 // 获取当前日期是属于星期几
201 let thisWeek = this.formatDate(new Date(YY + '-' + MM + '-' + DD + ' 00:00:00'), 'week'); 201 let thisWeek = this.formatDate(new Date(YY + '-' + MM + '-' + DD + ' 00:00:00'), 'week');
202 // 校验当前星期是否在星期池(dayRuleSup)中 202 // 校验当前星期是否在星期池(dayRuleSup)中
203 if (this.dayRuleSup.indexOf(thisWeek) < 0) { 203 if (this.dayRuleSup.indexOf(thisWeek) < 0) {
204 // 如果到达最大值时 204 // 如果到达最大值时
205 - if (Di == DDate.length - 1) { 205 + if (Di === DDate.length - 1) {
206 resetDay(); 206 resetDay();
207 - if (Mi == MDate.length - 1) { 207 + if (Mi === MDate.length - 1) {
208 resetMonth(); 208 resetMonth();
209 continue goYear; 209 continue goYear;
210 } 210 }
@@ -212,7 +212,7 @@ export default { @@ -212,7 +212,7 @@ export default {
212 } 212 }
213 continue; 213 continue;
214 } 214 }
215 - } else if (this.dayRule == 'assWeek') { 215 + } else if (this.dayRule === 'assWeek') {
216 // 如果指定了是第几周的星期几 216 // 如果指定了是第几周的星期几
217 // 获取每月1号是属于星期几 217 // 获取每月1号是属于星期几
218 let thisWeek = this.formatDate(new Date(YY + '-' + MM + '-' + DD + ' 00:00:00'), 'week'); 218 let thisWeek = this.formatDate(new Date(YY + '-' + MM + '-' + DD + ' 00:00:00'), 'week');
@@ -221,7 +221,7 @@ export default { @@ -221,7 +221,7 @@ export default {
221 } else { 221 } else {
222 DD = this.dayRuleSup[0] * 7 + this.dayRuleSup[1] - thisWeek + 1; 222 DD = this.dayRuleSup[0] * 7 + this.dayRuleSup[1] - thisWeek + 1;
223 } 223 }
224 - } else if (this.dayRule == 'lastWeek') { 224 + } else if (this.dayRule === 'lastWeek') {
225 // 如果指定了每月最后一个星期几 225 // 如果指定了每月最后一个星期几
226 // 校验并调整如果是2月30号这种日期传进来时需调整至正常月底 226 // 校验并调整如果是2月30号这种日期传进来时需调整至正常月底
227 if (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) { 227 if (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {
@@ -249,11 +249,11 @@ export default { @@ -249,11 +249,11 @@ export default {
249 // 如果到达最大值时 249 // 如果到达最大值时
250 if (nMin > mDate[mDate.length - 1]) { 250 if (nMin > mDate[mDate.length - 1]) {
251 resetMin(); 251 resetMin();
252 - if (hi == hDate.length - 1) { 252 + if (hi === hDate.length - 1) {
253 resetHour(); 253 resetHour();
254 - if (Di == DDate.length - 1) { 254 + if (Di === DDate.length - 1) {
255 resetDay(); 255 resetDay();
256 - if (Mi == MDate.length - 1) { 256 + if (Mi === MDate.length - 1) {
257 resetMonth(); 257 resetMonth();
258 continue goYear; 258 continue goYear;
259 } 259 }
@@ -270,13 +270,13 @@ export default { @@ -270,13 +270,13 @@ export default {
270 // 如果到达最大值时 270 // 如果到达最大值时
271 if (nSecond > sDate[sDate.length - 1]) { 271 if (nSecond > sDate[sDate.length - 1]) {
272 resetSecond(); 272 resetSecond();
273 - if (mi == mDate.length - 1) { 273 + if (mi === mDate.length - 1) {
274 resetMin(); 274 resetMin();
275 - if (hi == hDate.length - 1) { 275 + if (hi === hDate.length - 1) {
276 resetHour(); 276 resetHour();
277 - if (Di == DDate.length - 1) { 277 + if (Di === DDate.length - 1) {
278 resetDay(); 278 resetDay();
279 - if (Mi == MDate.length - 1) { 279 + if (Mi === MDate.length - 1) {
280 resetMonth(); 280 resetMonth();
281 continue goYear; 281 continue goYear;
282 } 282 }
@@ -297,17 +297,17 @@ export default { @@ -297,17 +297,17 @@ export default {
297 nums++; 297 nums++;
298 } 298 }
299 // 如果条数满了就退出循环 299 // 如果条数满了就退出循环
300 - if (nums == 5) break goYear; 300 + if (nums === 5) break goYear;
301 // 如果到达最大值时 301 // 如果到达最大值时
302 - if (si == sDate.length - 1) { 302 + if (si === sDate.length - 1) {
303 resetSecond(); 303 resetSecond();
304 - if (mi == mDate.length - 1) { 304 + if (mi === mDate.length - 1) {
305 resetMin(); 305 resetMin();
306 - if (hi == hDate.length - 1) { 306 + if (hi === hDate.length - 1) {
307 resetHour(); 307 resetHour();
308 - if (Di == DDate.length - 1) { 308 + if (Di === DDate.length - 1) {
309 resetDay(); 309 resetDay();
310 - if (Mi == MDate.length - 1) { 310 + if (Mi === MDate.length - 1) {
311 resetMonth(); 311 resetMonth();
312 continue goYear; 312 continue goYear;
313 } 313 }
@@ -326,7 +326,7 @@ export default { @@ -326,7 +326,7 @@ export default {
326 }//goMonth 326 }//goMonth
327 } 327 }
328 // 判断100年内的结果条数 328 // 判断100年内的结果条数
329 - if (resultArr.length == 0) { 329 + if (resultArr.length === 0) {
330 this.resultList = ['没有达到条件的结果!']; 330 this.resultList = ['没有达到条件的结果!'];
331 } else { 331 } else {
332 this.resultList = resultArr; 332 this.resultList = resultArr;
@@ -378,23 +378,23 @@ export default { @@ -378,23 +378,23 @@ export default {
378 // 获取"日"数组-主要为日期规则 378 // 获取"日"数组-主要为日期规则
379 getWeekArr(rule) { 379 getWeekArr(rule) {
380 // 只有当日期规则的两个值均为“”时则表达日期是有选项的 380 // 只有当日期规则的两个值均为“”时则表达日期是有选项的
381 - if (this.dayRule == '' && this.dayRuleSup == '') { 381 + if (this.dayRule === '' && this.dayRuleSup === '') {
382 if (rule.indexOf('-') >= 0) { 382 if (rule.indexOf('-') >= 0) {
383 this.dayRule = 'weekDay'; 383 this.dayRule = 'weekDay';
384 this.dayRuleSup = this.getCycleArr(rule, 7, false) 384 this.dayRuleSup = this.getCycleArr(rule, 7, false)
385 } else if (rule.indexOf('#') >= 0) { 385 } else if (rule.indexOf('#') >= 0) {
386 this.dayRule = 'assWeek'; 386 this.dayRule = 'assWeek';
387 - let matchRule = rule.match(/[0-9]{1}/g); 387 + let matchRule = rule.match(/[0-9]/g);
388 this.dayRuleSup = [Number(matchRule[1]), Number(matchRule[0])]; 388 this.dayRuleSup = [Number(matchRule[1]), Number(matchRule[0])];
389 this.dateArr[3] = [1]; 389 this.dateArr[3] = [1];
390 - if (this.dayRuleSup[1] == 7) { 390 + if (this.dayRuleSup[1] === 7) {
391 this.dayRuleSup[1] = 0; 391 this.dayRuleSup[1] = 0;
392 } 392 }
393 } else if (rule.indexOf('L') >= 0) { 393 } else if (rule.indexOf('L') >= 0) {
394 this.dayRule = 'lastWeek'; 394 this.dayRule = 'lastWeek';
395 this.dayRuleSup = Number(rule.match(/[0-9]{1,2}/g)[0]); 395 this.dayRuleSup = Number(rule.match(/[0-9]{1,2}/g)[0]);
396 this.dateArr[3] = [31]; 396 this.dateArr[3] = [31];
397 - if (this.dayRuleSup == 7) { 397 + if (this.dayRuleSup === 7) {
398 this.dayRuleSup = 0; 398 this.dayRuleSup = 0;
399 } 399 }
400 } else if (rule !== '*' && rule !== '?') { 400 } else if (rule !== '*' && rule !== '?') {
@@ -425,7 +425,7 @@ export default { @@ -425,7 +425,7 @@ export default {
425 } else if (rule !== '*' && rule !== '?') { 425 } else if (rule !== '*' && rule !== '?') {
426 this.dateArr[3] = this.getAssignArr(rule) 426 this.dateArr[3] = this.getAssignArr(rule)
427 this.dayRuleSup = 'null'; 427 this.dayRuleSup = 'null';
428 - } else if (rule == '*') { 428 + } else if (rule === '*') {
429 this.dayRuleSup = 'null'; 429 this.dayRuleSup = 'null';
430 } 430 }
431 }, 431 },
@@ -504,7 +504,7 @@ export default { @@ -504,7 +504,7 @@ export default {
504 } 504 }
505 for (let i = min; i <= max; i++) { 505 for (let i = min; i <= max; i++) {
506 let add = 0; 506 let add = 0;
507 - if (status == false && i % limit == 0) { 507 + if (status === false && i % limit === 0) {
508 add = limit; 508 add = limit;
509 } 509 }
510 arr.push(Math.round(i % limit + add)) 510 arr.push(Math.round(i % limit + add))
@@ -532,9 +532,9 @@ export default { @@ -532,9 +532,9 @@ export default {
532 let s = time.getSeconds(); 532 let s = time.getSeconds();
533 let week = time.getDay(); 533 let week = time.getDay();
534 // 如果传递了type的话 534 // 如果传递了type的话
535 - if (type == undefined) { 535 + if (type === undefined) {
536 return Y + '-' + (M < 10 ? '0' + M : M) + '-' + (D < 10 ? '0' + D : D) + ' ' + (h < 10 ? '0' + h : h) + ':' + (m < 10 ? '0' + m : m) + ':' + (s < 10 ? '0' + s : s); 536 return Y + '-' + (M < 10 ? '0' + M : M) + '-' + (D < 10 ? '0' + D : D) + ' ' + (h < 10 ? '0' + h : h) + ':' + (m < 10 ? '0' + m : m) + ':' + (s < 10 ? '0' + s : s);
537 - } else if (type == 'week') { 537 + } else if (type === 'week') {
538 // 在quartz中 1为星期日 538 // 在quartz中 1为星期日
539 return week + 1; 539 return week + 1;
540 } 540 }
yudao-ui-admin/src/components/Crontab/second.vue
@@ -68,19 +68,19 @@ export default { @@ -68,19 +68,19 @@ export default {
68 }, 68 },
69 // 周期两个值变化时 69 // 周期两个值变化时
70 cycleChange() { 70 cycleChange() {
71 - if (this.radioValue == '2') { 71 + if (this.radioValue === '2') {
72 this.$emit('update', 'second', this.cycleTotal); 72 this.$emit('update', 'second', this.cycleTotal);
73 } 73 }
74 }, 74 },
75 // 平均两个值变化时 75 // 平均两个值变化时
76 averageChange() { 76 averageChange() {
77 - if (this.radioValue == '3') { 77 + if (this.radioValue === '3') {
78 this.$emit('update', 'second', this.averageTotal); 78 this.$emit('update', 'second', this.averageTotal);
79 } 79 }
80 }, 80 },
81 // checkbox值变化时 81 // checkbox值变化时
82 checkboxChange() { 82 checkboxChange() {
83 - if (this.radioValue == '4') { 83 + if (this.radioValue === '4') {
84 this.$emit('update', 'second', this.checkboxString); 84 this.$emit('update', 'second', this.checkboxString);
85 } 85 }
86 } 86 }
@@ -110,7 +110,7 @@ export default { @@ -110,7 +110,7 @@ export default {
110 // 计算勾选的checkbox值合集 110 // 计算勾选的checkbox值合集
111 checkboxString: function () { 111 checkboxString: function () {
112 let str = this.checkboxList.join(); 112 let str = this.checkboxList.join();
113 - return str == '' ? '*' : str; 113 + return str === '' ? '*' : str;
114 } 114 }
115 } 115 }
116 } 116 }
yudao-ui-admin/src/components/Crontab/week.vue
@@ -144,25 +144,25 @@ export default { @@ -144,25 +144,25 @@ export default {
144 144
145 // 周期两个值变化时 145 // 周期两个值变化时
146 cycleChange() { 146 cycleChange() {
147 - if (this.radioValue == '3') { 147 + if (this.radioValue === '3') {
148 this.$emit('update', 'week', this.cycleTotal); 148 this.$emit('update', 'week', this.cycleTotal);
149 } 149 }
150 }, 150 },
151 // 平均两个值变化时 151 // 平均两个值变化时
152 averageChange() { 152 averageChange() {
153 - if (this.radioValue == '4') { 153 + if (this.radioValue === '4') {
154 this.$emit('update', 'week', this.averageTotal); 154 this.$emit('update', 'week', this.averageTotal);
155 } 155 }
156 }, 156 },
157 // 最近工作日值变化时 157 // 最近工作日值变化时
158 weekdayChange() { 158 weekdayChange() {
159 - if (this.radioValue == '5') { 159 + if (this.radioValue === '5') {
160 this.$emit('update', 'week', this.weekday + 'L'); 160 this.$emit('update', 'week', this.weekday + 'L');
161 } 161 }
162 }, 162 },
163 // checkbox值变化时 163 // checkbox值变化时
164 checkboxChange() { 164 checkboxChange() {
165 - if (this.radioValue == '6') { 165 + if (this.radioValue === '6') {
166 this.$emit('update', 'week', this.checkboxString); 166 this.$emit('update', 'week', this.checkboxString);
167 } 167 }
168 }, 168 },
@@ -195,7 +195,7 @@ export default { @@ -195,7 +195,7 @@ export default {
195 // 计算勾选的checkbox值合集 195 // 计算勾选的checkbox值合集
196 checkboxString: function () { 196 checkboxString: function () {
197 let str = this.checkboxList.join(); 197 let str = this.checkboxList.join();
198 - return str == '' ? '*' : str; 198 + return str === '' ? '*' : str;
199 } 199 }
200 } 200 }
201 } 201 }
yudao-ui-admin/src/components/Crontab/year.vue
@@ -79,19 +79,19 @@ export default { @@ -79,19 +79,19 @@ export default {
79 }, 79 },
80 // 周期两个值变化时 80 // 周期两个值变化时
81 cycleChange() { 81 cycleChange() {
82 - if (this.radioValue == '3') { 82 + if (this.radioValue === '3') {
83 this.$emit('update', 'year', this.cycleTotal); 83 this.$emit('update', 'year', this.cycleTotal);
84 } 84 }
85 }, 85 },
86 // 平均两个值变化时 86 // 平均两个值变化时
87 averageChange() { 87 averageChange() {
88 - if (this.radioValue == '4') { 88 + if (this.radioValue === '4') {
89 this.$emit('update', 'year', this.averageTotal); 89 this.$emit('update', 'year', this.averageTotal);
90 } 90 }
91 }, 91 },
92 // checkbox值变化时 92 // checkbox值变化时
93 checkboxChange() { 93 checkboxChange() {
94 - if (this.radioValue == '5') { 94 + if (this.radioValue === '5') {
95 this.$emit('update', 'year', this.checkboxString); 95 this.$emit('update', 'year', this.checkboxString);
96 } 96 }
97 } 97 }
yudao-ui-admin/src/components/HeaderSearch/index.vue
@@ -167,7 +167,7 @@ export default { @@ -167,7 +167,7 @@ export default {
167 display: inline-block; 167 display: inline-block;
168 vertical-align: middle; 168 vertical-align: middle;
169 169
170 - ::v-deep .el-input__inner { 170 + :deep(.el-input__inner) {
171 border-radius: 0; 171 border-radius: 0;
172 border: 0; 172 border: 0;
173 padding-left: 0; 173 padding-left: 0;
yudao-ui-admin/src/components/ImagePreview/index.vue
@@ -64,14 +64,14 @@ export default { @@ -64,14 +64,14 @@ export default {
64 border-radius: 5px; 64 border-radius: 5px;
65 background-color: #ebeef5; 65 background-color: #ebeef5;
66 box-shadow: 0 0 5px 1px #ccc; 66 box-shadow: 0 0 5px 1px #ccc;
67 - ::v-deep .el-image__inner { 67 + :deep(.el-image__inner) {
68 transition: all 0.3s; 68 transition: all 0.3s;
69 cursor: pointer; 69 cursor: pointer;
70 &:hover { 70 &:hover {
71 transform: scale(1.2); 71 transform: scale(1.2);
72 } 72 }
73 } 73 }
74 - ::v-deep .image-slot { 74 + :deep(.image-slot) {
75 display: flex; 75 display: flex;
76 justify-content: center; 76 justify-content: center;
77 align-items: center; 77 align-items: center;
yudao-ui-admin/src/components/ImageUpload/index.vue
@@ -141,8 +141,7 @@ export default { @@ -141,8 +141,7 @@ export default {
141 } 141 }
142 isImg = this.fileType.some(type => { 142 isImg = this.fileType.some(type => {
143 if (file.type.indexOf(type) > -1) return true; 143 if (file.type.indexOf(type) > -1) return true;
144 - if (fileExtension && fileExtension.indexOf(type) > -1) return true;  
145 - return false; 144 + return !!(fileExtension && fileExtension.indexOf(type) > -1);
146 }); 145 });
147 } else { 146 } else {
148 isImg = file.type.indexOf("image") > -1; 147 isImg = file.type.indexOf("image") > -1;
@@ -190,16 +189,15 @@ export default { @@ -190,16 +189,15 @@ export default {
190 </script> 189 </script>
191 <style scoped lang="scss"> 190 <style scoped lang="scss">
192 // .el-upload--picture-card 控制加号部分 191 // .el-upload--picture-card 控制加号部分
193 -::v-deep.hide .el-upload--picture-card { 192 +:deep(.hide .el-upload--picture-card) {
194 display: none; 193 display: none;
195 } 194 }
196 // 去掉动画效果 195 // 去掉动画效果
197 -::v-deep .el-list-enter-active,  
198 -::v-deep .el-list-leave-active { 196 +:deep(.el-list-enter-active, .el-list-leave-active) {
199 transition: all 0s; 197 transition: all 0s;
200 } 198 }
201 199
202 -::v-deep .el-list-enter, .el-list-leave-active { 200 +:deep(.el-list-enter, .el-list-leave-active) {
203 opacity: 0; 201 opacity: 0;
204 transform: translateY(0); 202 transform: translateY(0);
205 } 203 }
yudao-ui-admin/src/components/PanThumb/index.vue
@@ -108,7 +108,6 @@ export default { @@ -108,7 +108,6 @@ export default {
108 108
109 .pan-info p a { 109 .pan-info p a {
110 display: block; 110 display: block;
111 - color: #333;  
112 width: 80px; 111 width: 80px;
113 height: 80px; 112 height: 80px;
114 background: rgba(255, 255, 255, 0.3); 113 background: rgba(255, 255, 255, 0.3);
yudao-ui-admin/src/components/RightToolbar/index.vue
@@ -62,7 +62,7 @@ export default { @@ -62,7 +62,7 @@ export default {
62 }, 62 },
63 // 右侧列表元素变化 63 // 右侧列表元素变化
64 dataChange(data) { 64 dataChange(data) {
65 - for (var item in this.columns) { 65 + for (let item in this.columns) {
66 const key = this.columns[item].key; 66 const key = this.columns[item].key;
67 this.columns[item].visible = !data.includes(key); 67 this.columns[item].visible = !data.includes(key);
68 } 68 }
@@ -75,13 +75,13 @@ export default { @@ -75,13 +75,13 @@ export default {
75 }; 75 };
76 </script> 76 </script>
77 <style lang="scss" scoped> 77 <style lang="scss" scoped>
78 -::v-deep .el-transfer__button { 78 +:deep(.el-transfer__button) {
79 border-radius: 50%; 79 border-radius: 50%;
80 padding: 12px; 80 padding: 12px;
81 display: block; 81 display: block;
82 - margin-left: 0px; 82 + margin-left: 0;
83 } 83 }
84 -::v-deep .el-transfer__button:first-child { 84 +:deep(.el-transfer__button:first-child) {
85 margin-bottom: 10px; 85 margin-bottom: 10px;
86 } 86 }
87 </style> 87 </style>
yudao-ui-admin/src/components/TopNav/index.vue
@@ -69,7 +69,7 @@ export default { @@ -69,7 +69,7 @@ export default {
69 childrenMenus() { 69 childrenMenus() {
70 const childrenMenus = []; 70 const childrenMenus = [];
71 this.routers.map((router) => { 71 this.routers.map((router) => {
72 - for (var item in router.children) { 72 + for (let item in router.children) {
73 if (router.children[item].parentPath === undefined) { 73 if (router.children[item].parentPath === undefined) {
74 if(router.path === "/") { 74 if(router.path === "/") {
75 router.children[item].path = "/" + router.children[item].path; 75 router.children[item].path = "/" + router.children[item].path;
@@ -135,10 +135,10 @@ export default { @@ -135,10 +135,10 @@ export default {
135 }, 135 },
136 // 当前激活的路由 136 // 当前激活的路由
137 activeRoutes(key) { 137 activeRoutes(key) {
138 - var routes = []; 138 + const routes = []
139 if (this.childrenMenus && this.childrenMenus.length > 0) { 139 if (this.childrenMenus && this.childrenMenus.length > 0) {
140 this.childrenMenus.map((item) => { 140 this.childrenMenus.map((item) => {
141 - if (key == item.parentPath || (key == "index" && "" == item.path)) { 141 + if (key === item.parentPath || (key === "index" && "" === item.path)) {
142 routes.push(item); 142 routes.push(item);
143 } 143 }
144 }); 144 });
yudao-ui-admin/src/components/Verifition/Verify.vue
@@ -440,7 +440,6 @@ export default { @@ -440,7 +440,6 @@ export default {
440 right: 0; 440 right: 0;
441 top: 0; 441 top: 0;
442 bottom: 0; 442 bottom: 0;
443 - background-size: cover;  
444 z-index: 9999; 443 z-index: 9999;
445 background-image: url("data:image/png;base64,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"); 444 background-image: url("data:image/png;base64,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");
446 background-size: contain; 445 background-size: contain;
yudao-ui-admin/src/components/Verifition/Verify/VerifyPoints.vue
@@ -58,7 +58,7 @@ @@ -58,7 +58,7 @@
58 * VerifyPoints 58 * VerifyPoints
59 * @description 点选 59 * @description 点选
60 * */ 60 * */
61 -import { resetSize, _code_chars, _code_color1, _code_color2 } from './../utils/util' 61 +import { resetSize } from './../utils/util'
62 import { aesEncrypt } from '@/utils/ase' 62 import { aesEncrypt } from '@/utils/ase'
63 import { reqGet, reqCheck } from './../api/index' 63 import { reqGet, reqCheck } from './../api/index'
64 64
@@ -167,7 +167,7 @@ export default { @@ -167,7 +167,7 @@ export default {
167 setTimeout(() => { 167 setTimeout(() => {
168 // var flag = this.comparePos(this.fontPos, this.checkPosArr); 168 // var flag = this.comparePos(this.fontPos, this.checkPosArr);
169 // 发送后端请求 169 // 发送后端请求
170 - var captchaVerification = this.secretKey ? aesEncrypt(this.backToken + '---' + JSON.stringify(this.checkPosArr), this.secretKey) : this.backToken + '---' + JSON.stringify(this.checkPosArr) 170 + const captchaVerification = this.secretKey ? aesEncrypt(this.backToken + '---' + JSON.stringify(this.checkPosArr), this.secretKey) : this.backToken + '---' + JSON.stringify(this.checkPosArr)
171 const data = { 171 const data = {
172 captchaType: this.captchaType, 172 captchaType: this.captchaType,
173 'pointJson': this.secretKey ? aesEncrypt(JSON.stringify(this.checkPosArr), this.secretKey) : JSON.stringify(this.checkPosArr), 173 'pointJson': this.secretKey ? aesEncrypt(JSON.stringify(this.checkPosArr), this.secretKey) : JSON.stringify(this.checkPosArr),
@@ -205,8 +205,8 @@ export default { @@ -205,8 +205,8 @@ export default {
205 205
206 // 获取坐标 206 // 获取坐标
207 getMousePos: function(obj, e) { 207 getMousePos: function(obj, e) {
208 - var x = e.offsetX  
209 - var y = e.offsetY 208 + const x = e.offsetX
  209 + const y = e.offsetY
210 return { x, y } 210 return { x, y }
211 }, 211 },
212 // 创建坐标点 212 // 创建坐标点
@@ -253,7 +253,7 @@ export default { @@ -253,7 +253,7 @@ export default {
253 }, 253 },
254 // 坐标转换函数 254 // 坐标转换函数
255 pointTransfrom(pointArr, imgSize) { 255 pointTransfrom(pointArr, imgSize) {
256 - var newPointArr = pointArr.map(p => { 256 + const newPointArr = pointArr.map(p => {
257 const x = Math.round(310 * p.x / parseInt(imgSize.imgWidth)) 257 const x = Math.round(310 * p.x / parseInt(imgSize.imgWidth))
258 const y = Math.round(155 * p.y / parseInt(imgSize.imgHeight)) 258 const y = Math.round(155 * p.y / parseInt(imgSize.imgHeight))
259 return { x, y } 259 return { x, y }
yudao-ui-admin/src/components/Verifition/Verify/VerifySlide.vue
@@ -193,7 +193,7 @@ export default { @@ -193,7 +193,7 @@ export default {
193 this.$parent.$emit('ready', this) 193 this.$parent.$emit('ready', this)
194 }) 194 })
195 195
196 - var _this = this 196 + const _this = this
197 197
198 window.removeEventListener('touchmove', function(e) { 198 window.removeEventListener('touchmove', function(e) {
199 _this.move(e) 199 _this.move(e)
@@ -228,11 +228,12 @@ export default { @@ -228,11 +228,12 @@ export default {
228 228
229 // 鼠标按下 229 // 鼠标按下
230 start: function(e) { 230 start: function(e) {
  231 + let x
231 e = e || window.event 232 e = e || window.event
232 if (!e.touches) { // 兼容PC端 233 if (!e.touches) { // 兼容PC端
233 - var x = e.clientX 234 + x = e.clientX
234 } else { // 兼容移动端 235 } else { // 兼容移动端
235 - var x = e.touches[0].pageX 236 + x = e.touches[0].pageX
236 } 237 }
237 this.startLeft = Math.floor(x - this.barArea.getBoundingClientRect().left) 238 this.startLeft = Math.floor(x - this.barArea.getBoundingClientRect().left)
238 this.startMoveTime = +new Date() // 开始滑动的时间 239 this.startMoveTime = +new Date() // 开始滑动的时间
@@ -247,15 +248,16 @@ export default { @@ -247,15 +248,16 @@ export default {
247 }, 248 },
248 // 鼠标移动 249 // 鼠标移动
249 move: function(e) { 250 move: function(e) {
  251 + let x
250 e = e || window.event 252 e = e || window.event
251 if (this.status && this.isEnd === false) { 253 if (this.status && this.isEnd === false) {
252 if (!e.touches) { // 兼容PC端 254 if (!e.touches) { // 兼容PC端
253 - var x = e.clientX 255 + x = e.clientX
254 } else { // 兼容移动端 256 } else { // 兼容移动端
255 - var x = e.touches[0].pageX 257 + x = e.touches[0].pageX
256 } 258 }
257 - var bar_area_left = this.barArea.getBoundingClientRect().left  
258 - var move_block_left = x - bar_area_left // 小方块相对于父元素的left值 259 + const bar_area_left = this.barArea.getBoundingClientRect().left
  260 + let move_block_left = x - bar_area_left // 小方块相对于父元素的left值
259 if (move_block_left >= this.barArea.offsetWidth - parseInt(parseInt(this.blockSize.width) / 2) - 2) { 261 if (move_block_left >= this.barArea.offsetWidth - parseInt(parseInt(this.blockSize.width) / 2) - 2) {
260 move_block_left = this.barArea.offsetWidth - parseInt(parseInt(this.blockSize.width) / 2) - 2 262 move_block_left = this.barArea.offsetWidth - parseInt(parseInt(this.blockSize.width) / 2) - 2
261 } 263 }
@@ -271,10 +273,10 @@ export default { @@ -271,10 +273,10 @@ export default {
271 // 鼠标松开 273 // 鼠标松开
272 end: function() { 274 end: function() {
273 this.endMovetime = +new Date() 275 this.endMovetime = +new Date()
274 - var _this = this 276 + const _this = this
275 // 判断是否重合 277 // 判断是否重合
276 if (this.status && this.isEnd === false) { 278 if (this.status && this.isEnd === false) {
277 - var moveLeftDistance = parseInt((this.moveBlockLeft || '').replace('px', '')) 279 + const moveLeftDistance = parseInt((this.moveBlockLeft || '').replace('px', ''))
278 moveLeftDistance = moveLeftDistance * 310 / parseInt(this.setSize.imgWidth) 280 moveLeftDistance = moveLeftDistance * 310 / parseInt(this.setSize.imgWidth)
279 const data = { 281 const data = {
280 captchaType: this.captchaType, 282 captchaType: this.captchaType,
@@ -297,7 +299,10 @@ export default { @@ -297,7 +299,10 @@ export default {
297 } 299 }
298 this.passFlag = true 300 this.passFlag = true
299 this.tipWords = `${((this.endMovetime - this.startMoveTime) / 1000).toFixed(2)}s验证成功` 301 this.tipWords = `${((this.endMovetime - this.startMoveTime) / 1000).toFixed(2)}s验证成功`
300 - var captchaVerification = this.secretKey ? aesEncrypt(this.backToken + '---' + JSON.stringify({ x: moveLeftDistance, y: 5.0 }), this.secretKey) : this.backToken + '---' + JSON.stringify({ x: moveLeftDistance, y: 5.0 }) 302 + const captchaVerification = this.secretKey ? aesEncrypt(this.backToken + '---' + JSON.stringify({
  303 + x: moveLeftDistance,
  304 + y: 5.0
  305 + }), this.secretKey) : this.backToken + '---' + JSON.stringify({ x: moveLeftDistance, y: 5.0 })
301 setTimeout(() => { 306 setTimeout(() => {
302 this.tipWords = '' 307 this.tipWords = ''
303 this.$parent.closeBox() 308 this.$parent.closeBox()
yudao-ui-admin/src/components/Verifition/utils/axios.js
@@ -21,8 +21,7 @@ service.interceptors.request.use( @@ -21,8 +21,7 @@ service.interceptors.request.use(
21 // response interceptor 21 // response interceptor
22 service.interceptors.response.use( 22 service.interceptors.response.use(
23 response => { 23 response => {
24 - const res = response.data  
25 - return res 24 + return response.data
26 }, 25 },
27 error => { 26 error => {
28 } 27 }
yudao-ui-admin/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue
@@ -346,13 +346,13 @@ export default { @@ -346,13 +346,13 @@ export default {
346 fill-opacity: 0.2 !important; 346 fill-opacity: 0.2 !important;
347 } 347 }
348 348
349 -/deep/.highlight-todo.djs-connection > .djs-visual > path { 349 +:deep(.highlight-todo.djs-connection > .djs-visual > path) {
350 stroke: #1890ff !important; 350 stroke: #1890ff !important;
351 stroke-dasharray: 4px !important; 351 stroke-dasharray: 4px !important;
352 fill-opacity: 0.2 !important; 352 fill-opacity: 0.2 !important;
353 marker-end: url(#sequenceflow-end-_E7DFDF-_E7DFDF-803g1kf6zwzmcig1y2ulm5egr); 353 marker-end: url(#sequenceflow-end-_E7DFDF-_E7DFDF-803g1kf6zwzmcig1y2ulm5egr);
354 } 354 }
355 -/deep/.highlight-todo.djs-shape .djs-visual > :nth-child(1) { 355 +:deep(.highlight-todo.djs-shape .djs-visual > :nth-child(1)) {
356 fill: #1890ff !important; 356 fill: #1890ff !important;
357 stroke: #1890ff !important; 357 stroke: #1890ff !important;
358 stroke-dasharray: 4px !important; 358 stroke-dasharray: 4px !important;
@@ -381,20 +381,20 @@ export default { @@ -381,20 +381,20 @@ export default {
381 fill: green !important; /* color elements as green */ 381 fill: green !important; /* color elements as green */
382 } 382 }
383 383
384 -/deep/.highlight.djs-shape .djs-visual > :nth-child(1) { 384 +:deep(.highlight.djs-shape .djs-visual > :nth-child(1)) {
385 fill: green !important; 385 fill: green !important;
386 stroke: green !important; 386 stroke: green !important;
387 fill-opacity: 0.2 !important; 387 fill-opacity: 0.2 !important;
388 } 388 }
389 -/deep/.highlight.djs-shape .djs-visual > :nth-child(2) { 389 +:deep(.highlight.djs-shape .djs-visual > :nth-child(2)) {
390 fill: green !important; 390 fill: green !important;
391 } 391 }
392 -/deep/.highlight.djs-shape .djs-visual > path { 392 +:deep(.highlight.djs-shape .djs-visual > path) {
393 fill: green !important; 393 fill: green !important;
394 fill-opacity: 0.2 !important; 394 fill-opacity: 0.2 !important;
395 stroke: green !important; 395 stroke: green !important;
396 } 396 }
397 -/deep/.highlight.djs-connection > .djs-visual > path { 397 +:deep(.highlight.djs-connection > .djs-visual > path) {
398 stroke: green !important; 398 stroke: green !important;
399 } 399 }
400 400
@@ -420,20 +420,20 @@ export default { @@ -420,20 +420,20 @@ export default {
420 fill: red !important; /* color elements as green */ 420 fill: red !important; /* color elements as green */
421 } 421 }
422 422
423 -/deep/.highlight-reject.djs-shape .djs-visual > :nth-child(1) { 423 +:deep(.highlight-reject.djs-shape .djs-visual > :nth-child(1)) {
424 fill: red !important; 424 fill: red !important;
425 stroke: red !important; 425 stroke: red !important;
426 fill-opacity: 0.2 !important; 426 fill-opacity: 0.2 !important;
427 } 427 }
428 -/deep/.highlight-reject.djs-shape .djs-visual > :nth-child(2) { 428 +:deep(.highlight-reject.djs-shape .djs-visual > :nth-child(2)) {
429 fill: red !important; 429 fill: red !important;
430 } 430 }
431 -/deep/.highlight-reject.djs-shape .djs-visual > path { 431 +:deep(.highlight-reject.djs-shape .djs-visual > path) {
432 fill: red !important; 432 fill: red !important;
433 fill-opacity: 0.2 !important; 433 fill-opacity: 0.2 !important;
434 stroke: red !important; 434 stroke: red !important;
435 } 435 }
436 -/deep/.highlight-reject.djs-connection > .djs-visual > path { 436 +:deep(.highlight-reject.djs-connection > .djs-visual > path) {
437 stroke: red !important; 437 stroke: red !important;
438 } 438 }
439 439
@@ -459,20 +459,20 @@ export default { @@ -459,20 +459,20 @@ export default {
459 fill: grey !important; /* color elements as green */ 459 fill: grey !important; /* color elements as green */
460 } 460 }
461 461
462 -/deep/.highlight-cancel.djs-shape .djs-visual > :nth-child(1) { 462 +:deep(.highlight-cancel.djs-shape .djs-visual > :nth-child(1)) {
463 fill: grey !important; 463 fill: grey !important;
464 stroke: grey !important; 464 stroke: grey !important;
465 fill-opacity: 0.2 !important; 465 fill-opacity: 0.2 !important;
466 } 466 }
467 -/deep/.highlight-cancel.djs-shape .djs-visual > :nth-child(2) { 467 +:deep(.highlight-cancel.djs-shape .djs-visual > :nth-child(2)) {
468 fill: grey !important; 468 fill: grey !important;
469 } 469 }
470 -/deep/.highlight-cancel.djs-shape .djs-visual > path { 470 +:deep(.highlight-cancel.djs-shape .djs-visual > path) {
471 fill: grey !important; 471 fill: grey !important;
472 fill-opacity: 0.2 !important; 472 fill-opacity: 0.2 !important;
473 stroke: grey !important; 473 stroke: grey !important;
474 } 474 }
475 -/deep/.highlight-cancel.djs-connection > .djs-visual > path { 475 +:deep(.highlight-cancel.djs-connection > .djs-visual > path) {
476 stroke: grey !important; 476 stroke: grey !important;
477 } 477 }
478 478
@@ -484,4 +484,4 @@ export default { @@ -484,4 +484,4 @@ export default {
484 color: #fafafa; 484 color: #fafafa;
485 width: 200px; 485 width: 200px;
486 } 486 }
487 -</style>  
488 \ No newline at end of file 487 \ No newline at end of file
  488 +</style>
yudao-ui-admin/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/contentPadProvider.js
@@ -49,14 +49,14 @@ export default function ContextPadProvider( @@ -49,14 +49,14 @@ export default function ContextPadProvider(
49 } 49 }
50 50
51 eventBus.on("create.end", 250, function(event) { 51 eventBus.on("create.end", 250, function(event) {
52 - var context = event.context,  
53 - shape = context.shape; 52 + const context = event.context,
  53 + shape = context.shape
54 54
55 if (!hasPrimaryModifier(event) || !contextPad.isOpen(shape)) { 55 if (!hasPrimaryModifier(event) || !contextPad.isOpen(shape)) {
56 return; 56 return;
57 } 57 }
58 58
59 - var entries = contextPad.getEntries(shape); 59 + const entries = contextPad.getEntries(shape)
60 60
61 if (entries.replace) { 61 if (entries.replace) {
62 entries.replace.action.click(event, shape); 62 entries.replace.action.click(event, shape);
@@ -81,7 +81,7 @@ ContextPadProvider.$inject = [ @@ -81,7 +81,7 @@ ContextPadProvider.$inject = [
81 ]; 81 ];
82 82
83 ContextPadProvider.prototype.getContextPadEntries = function(element) { 83 ContextPadProvider.prototype.getContextPadEntries = function(element) {
84 - var contextPad = this._contextPad, 84 + const contextPad = this._contextPad,
85 modeling = this._modeling, 85 modeling = this._modeling,
86 elementFactory = this._elementFactory, 86 elementFactory = this._elementFactory,
87 connect = this._connect, 87 connect = this._connect,
@@ -90,15 +90,15 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) { @@ -90,15 +90,15 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) {
90 canvas = this._canvas, 90 canvas = this._canvas,
91 rules = this._rules, 91 rules = this._rules,
92 autoPlace = this._autoPlace, 92 autoPlace = this._autoPlace,
93 - translate = this._translate; 93 + translate = this._translate
94 94
95 - var actions = {}; 95 + const actions = {}
96 96
97 if (element.type === "label") { 97 if (element.type === "label") {
98 return actions; 98 return actions;
99 } 99 }
100 100
101 - var businessObject = element.businessObject; 101 + const businessObject = element.businessObject
102 102
103 function startConnect(event, element) { 103 function startConnect(event, element) {
104 connect.start(event, element); 104 connect.start(event, element);
@@ -109,21 +109,21 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) { @@ -109,21 +109,21 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) {
109 } 109 }
110 110
111 function getReplaceMenuPosition(element) { 111 function getReplaceMenuPosition(element) {
112 - var Y_OFFSET = 5; 112 + const Y_OFFSET = 5
113 113
114 - var diagramContainer = canvas.getContainer(),  
115 - pad = contextPad.getPad(element).html; 114 + const diagramContainer = canvas.getContainer(),
  115 + pad = contextPad.getPad(element).html
116 116
117 - var diagramRect = diagramContainer.getBoundingClientRect(),  
118 - padRect = pad.getBoundingClientRect(); 117 + const diagramRect = diagramContainer.getBoundingClientRect(),
  118 + padRect = pad.getBoundingClientRect()
119 119
120 - var top = padRect.top - diagramRect.top;  
121 - var left = padRect.left - diagramRect.left; 120 + const top = padRect.top - diagramRect.top
  121 + const left = padRect.left - diagramRect.left
122 122
123 - var pos = { 123 + const pos = {
124 x: left, 124 x: left,
125 y: top + padRect.height + Y_OFFSET 125 y: top + padRect.height + Y_OFFSET
126 - }; 126 + }
127 127
128 return pos; 128 return pos;
129 } 129 }
@@ -145,19 +145,19 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) { @@ -145,19 +145,19 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) {
145 } 145 }
146 146
147 function appendStart(event, element) { 147 function appendStart(event, element) {
148 - var shape = elementFactory.createShape(assign({ type: type }, options)); 148 + const shape = elementFactory.createShape(assign({ type: type }, options))
149 create.start(event, shape, { 149 create.start(event, shape, {
150 source: element 150 source: element
151 }); 151 });
152 } 152 }
153 153
154 - var append = autoPlace 154 + const append = autoPlace
155 ? function(event, element) { 155 ? function(event, element) {
156 - var shape = elementFactory.createShape(assign({ type: type }, options)); 156 + const shape = elementFactory.createShape(assign({ type: type }, options))
157 157
158 - autoPlace.append(element, shape);  
159 - }  
160 - : appendStart; 158 + autoPlace.append(element, shape)
  159 + }
  160 + : appendStart
161 161
162 return { 162 return {
163 group: "model", 163 group: "model",
@@ -182,7 +182,7 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) { @@ -182,7 +182,7 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) {
182 } 182 }
183 183
184 if (isAny(businessObject, ["bpmn:Lane", "bpmn:Participant"]) && isExpanded(businessObject)) { 184 if (isAny(businessObject, ["bpmn:Lane", "bpmn:Participant"]) && isExpanded(businessObject)) {
185 - var childLanes = getChildLanes(element); 185 + const childLanes = getChildLanes(element)
186 186
187 assign(actions, { 187 assign(actions, {
188 "lane-insert-above": { 188 "lane-insert-above": {
@@ -302,9 +302,9 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) { @@ -302,9 +302,9 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) {
302 title: translate("Change type"), 302 title: translate("Change type"),
303 action: { 303 action: {
304 click: function(event, element) { 304 click: function(event, element) {
305 - var position = assign(getReplaceMenuPosition(element), { 305 + const position = assign(getReplaceMenuPosition(element), {
306 cursor: { x: event.x, y: event.y } 306 cursor: { x: event.x, y: event.y }
307 - }); 307 + })
308 308
309 popupMenu.open(element, "bpmn-replace", position); 309 popupMenu.open(element, "bpmn-replace", position);
310 } 310 }
@@ -350,7 +350,7 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) { @@ -350,7 +350,7 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) {
350 } 350 }
351 351
352 // delete element entry, only show if allowed by rules 352 // delete element entry, only show if allowed by rules
353 - var deleteAllowed = rules.allowed("elements.delete", { elements: [element] }); 353 + let deleteAllowed = rules.allowed('elements.delete', { elements: [element] })
354 354
355 if (isArray(deleteAllowed)) { 355 if (isArray(deleteAllowed)) {
356 // was the element returned as a deletion candidate? 356 // was the element returned as a deletion candidate?
@@ -376,10 +376,10 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) { @@ -376,10 +376,10 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) {
376 // helpers ///////// 376 // helpers /////////
377 377
378 function isEventType(eventBo, type, definition) { 378 function isEventType(eventBo, type, definition) {
379 - var isType = eventBo.$instanceOf(type);  
380 - var isDefinition = false; 379 + const isType = eventBo.$instanceOf(type)
  380 + let isDefinition = false
381 381
382 - var definitions = eventBo.eventDefinitions || []; 382 + const definitions = eventBo.eventDefinitions || []
383 forEach(definitions, function(def) { 383 forEach(definitions, function(def) {
384 if (def.$type === definition) { 384 if (def.$type === definition) {
385 isDefinition = true; 385 isDefinition = true;
yudao-ui-admin/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/activitiExtension.js
1 "use strict"; 1 "use strict";
2 2
3 -var some = require("min-dash").some; 3 +const some = require('min-dash').some
4 4
5 -var ALLOWED_TYPES = {  
6 - FailedJobRetryTimeCycle: ["bpmn:StartEvent", "bpmn:BoundaryEvent", "bpmn:IntermediateCatchEvent", "bpmn:Activity"],  
7 - Connector: ["bpmn:EndEvent", "bpmn:IntermediateThrowEvent"],  
8 - Field: ["bpmn:EndEvent", "bpmn:IntermediateThrowEvent"]  
9 -}; 5 +const ALLOWED_TYPES = {
  6 + FailedJobRetryTimeCycle: ['bpmn:StartEvent', 'bpmn:BoundaryEvent', 'bpmn:IntermediateCatchEvent', 'bpmn:Activity'],
  7 + Connector: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'],
  8 + Field: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent']
  9 +}
10 10
11 function is(element, type) { 11 function is(element, type) {
12 return element && typeof element.$instanceOf === "function" && element.$instanceOf(type); 12 return element && typeof element.$instanceOf === "function" && element.$instanceOf(type);
@@ -32,8 +32,8 @@ function anyType(element, types) { @@ -32,8 +32,8 @@ function anyType(element, types) {
32 } 32 }
33 33
34 function isAllowed(propName, propDescriptor, newElement) { 34 function isAllowed(propName, propDescriptor, newElement) {
35 - var name = propDescriptor.name,  
36 - types = ALLOWED_TYPES[name.replace(/activiti:/, "")]; 35 + const name = propDescriptor.name,
  36 + types = ALLOWED_TYPES[name.replace(/activiti:/, '')]
37 37
38 return name === propName && anyType(newElement, types); 38 return name === propName && anyType(newElement, types);
39 } 39 }
@@ -42,8 +42,8 @@ function ActivitiModdleExtension(eventBus) { @@ -42,8 +42,8 @@ function ActivitiModdleExtension(eventBus) {
42 eventBus.on( 42 eventBus.on(
43 "property.clone", 43 "property.clone",
44 function(context) { 44 function(context) {
45 - var newElement = context.newElement,  
46 - propDescriptor = context.propertyDescriptor; 45 + const newElement = context.newElement,
  46 + propDescriptor = context.propertyDescriptor
47 47
48 this.canCloneProperty(newElement, propDescriptor); 48 this.canCloneProperty(newElement, propDescriptor);
49 }, 49 },
yudao-ui-admin/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/extension.js
1 "use strict"; 1 "use strict";
2 2
3 -var isFunction = require("min-dash").isFunction,  
4 - isObject = require("min-dash").isObject,  
5 - some = require("min-dash").some; 3 +const isFunction = require('min-dash').isFunction,
  4 + isObject = require('min-dash').isObject,
  5 + some = require('min-dash').some
6 6
7 -var WILDCARD = "*"; 7 +const WILDCARD = '*'
8 8
9 function CamundaModdleExtension(eventBus) { 9 function CamundaModdleExtension(eventBus) {
10 - var self = this; 10 + const self = this
11 11
12 eventBus.on("moddleCopy.canCopyProperty", function(context) { 12 eventBus.on("moddleCopy.canCopyProperty", function(context) {
13 - var property = context.property,  
14 - parent = context.parent; 13 + const property = context.property,
  14 + parent = context.parent
15 15
16 return self.canCopyProperty(property, parent); 16 return self.canCopyProperty(property, parent);
17 }); 17 });
@@ -45,14 +45,14 @@ CamundaModdleExtension.prototype.canCopyProperty = function(property, parent) { @@ -45,14 +45,14 @@ CamundaModdleExtension.prototype.canCopyProperty = function(property, parent) {
45 45
46 CamundaModdleExtension.prototype.canHostInputOutput = function(parent) { 46 CamundaModdleExtension.prototype.canHostInputOutput = function(parent) {
47 // allowed in camunda:Connector 47 // allowed in camunda:Connector
48 - var connector = getParent(parent, "camunda:Connector"); 48 + const connector = getParent(parent, 'camunda:Connector')
49 49
50 if (connector) { 50 if (connector) {
51 return true; 51 return true;
52 } 52 }
53 53
54 // special rules inside bpmn:FlowNode 54 // special rules inside bpmn:FlowNode
55 - var flowNode = getParent(parent, "bpmn:FlowNode"); 55 + const flowNode = getParent(parent, 'bpmn:FlowNode')
56 56
57 if (!flowNode) { 57 if (!flowNode) {
58 return false; 58 return false;
@@ -62,15 +62,13 @@ CamundaModdleExtension.prototype.canHostInputOutput = function(parent) { @@ -62,15 +62,13 @@ CamundaModdleExtension.prototype.canHostInputOutput = function(parent) {
62 return false; 62 return false;
63 } 63 }
64 64
65 - if (is(flowNode, "bpmn:SubProcess") && flowNode.get("triggeredByEvent")) {  
66 - return false;  
67 - } 65 + return !(is(flowNode, "bpmn:SubProcess") && flowNode.get("triggeredByEvent"));
  66 +
68 67
69 - return true;  
70 }; 68 };
71 69
72 CamundaModdleExtension.prototype.canHostConnector = function(parent) { 70 CamundaModdleExtension.prototype.canHostConnector = function(parent) {
73 - var serviceTaskLike = getParent(parent, "camunda:ServiceTaskLike"); 71 + const serviceTaskLike = getParent(parent, 'camunda:ServiceTaskLike')
74 72
75 if (is(serviceTaskLike, "bpmn:MessageEventDefinition")) { 73 if (is(serviceTaskLike, "bpmn:MessageEventDefinition")) {
76 // only allow on throw and end events 74 // only allow on throw and end events
@@ -81,13 +79,13 @@ CamundaModdleExtension.prototype.canHostConnector = function(parent) { @@ -81,13 +79,13 @@ CamundaModdleExtension.prototype.canHostConnector = function(parent) {
81 }; 79 };
82 80
83 CamundaModdleExtension.prototype.canHostIn = function(parent) { 81 CamundaModdleExtension.prototype.canHostIn = function(parent) {
84 - var callActivity = getParent(parent, "bpmn:CallActivity"); 82 + const callActivity = getParent(parent, 'bpmn:CallActivity')
85 83
86 if (callActivity) { 84 if (callActivity) {
87 return true; 85 return true;
88 } 86 }
89 87
90 - var signalEventDefinition = getParent(parent, "bpmn:SignalEventDefinition"); 88 + const signalEventDefinition = getParent(parent, 'bpmn:SignalEventDefinition')
91 89
92 if (signalEventDefinition) { 90 if (signalEventDefinition) {
93 // only allow on throw and end events 91 // only allow on throw and end events
@@ -129,9 +127,9 @@ function getParent(element, type) { @@ -129,9 +127,9 @@ function getParent(element, type) {
129 127
130 function isAllowedInParent(property, parent) { 128 function isAllowedInParent(property, parent) {
131 // (1) find property descriptor 129 // (1) find property descriptor
132 - var descriptor = property.$type && property.$model.getTypeDescriptor(property.$type); 130 + const descriptor = property.$type && property.$model.getTypeDescriptor(property.$type)
133 131
134 - var allowedIn = descriptor && descriptor.meta && descriptor.meta.allowedIn; 132 + const allowedIn = descriptor && descriptor.meta && descriptor.meta.allowedIn
135 133
136 if (!allowedIn || isWildcard(allowedIn)) { 134 if (!allowedIn || isWildcard(allowedIn)) {
137 return true; 135 return true;
yudao-ui-admin/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/flowableExtension.js
1 "use strict"; 1 "use strict";
2 2
3 -var some = require("min-dash").some; 3 +const some = require('min-dash').some
4 4
5 -var ALLOWED_TYPES = {  
6 - FailedJobRetryTimeCycle: ["bpmn:StartEvent", "bpmn:BoundaryEvent", "bpmn:IntermediateCatchEvent", "bpmn:Activity"],  
7 - Connector: ["bpmn:EndEvent", "bpmn:IntermediateThrowEvent"],  
8 - Field: ["bpmn:EndEvent", "bpmn:IntermediateThrowEvent"]  
9 -}; 5 +const ALLOWED_TYPES = {
  6 + FailedJobRetryTimeCycle: ['bpmn:StartEvent', 'bpmn:BoundaryEvent', 'bpmn:IntermediateCatchEvent', 'bpmn:Activity'],
  7 + Connector: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'],
  8 + Field: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent']
  9 +}
10 10
11 function is(element, type) { 11 function is(element, type) {
12 return element && typeof element.$instanceOf === "function" && element.$instanceOf(type); 12 return element && typeof element.$instanceOf === "function" && element.$instanceOf(type);
@@ -32,8 +32,8 @@ function anyType(element, types) { @@ -32,8 +32,8 @@ function anyType(element, types) {
32 } 32 }
33 33
34 function isAllowed(propName, propDescriptor, newElement) { 34 function isAllowed(propName, propDescriptor, newElement) {
35 - var name = propDescriptor.name,  
36 - types = ALLOWED_TYPES[name.replace(/flowable:/, "")]; 35 + const name = propDescriptor.name,
  36 + types = ALLOWED_TYPES[name.replace(/flowable:/, '')]
37 37
38 return name === propName && anyType(newElement, types); 38 return name === propName && anyType(newElement, types);
39 } 39 }
@@ -42,8 +42,8 @@ function FlowableModdleExtension(eventBus) { @@ -42,8 +42,8 @@ function FlowableModdleExtension(eventBus) {
42 eventBus.on( 42 eventBus.on(
43 "property.clone", 43 "property.clone",
44 function(context) { 44 function(context) {
45 - var newElement = context.newElement,  
46 - propDescriptor = context.propertyDescriptor; 45 + const newElement = context.newElement,
  46 + propDescriptor = context.propertyDescriptor
47 47
48 this.canCloneProperty(newElement, propDescriptor); 48 this.canCloneProperty(newElement, propDescriptor);
49 }, 49 },
yudao-ui-admin/src/components/bpmnProcessDesigner/package/designer/plugins/palette/CustomPalette.js
@@ -10,18 +10,18 @@ F.prototype = PaletteProvider.prototype; // 核心,将父类的原型赋值给 @@ -10,18 +10,18 @@ F.prototype = PaletteProvider.prototype; // 核心,将父类的原型赋值给
10 10
11 // 利用中介函数重写原型链方法 11 // 利用中介函数重写原型链方法
12 F.prototype.getPaletteEntries = function() { 12 F.prototype.getPaletteEntries = function() {
13 - var actions = {}, 13 + const actions = {},
14 create = this._create, 14 create = this._create,
15 elementFactory = this._elementFactory, 15 elementFactory = this._elementFactory,
16 spaceTool = this._spaceTool, 16 spaceTool = this._spaceTool,
17 lassoTool = this._lassoTool, 17 lassoTool = this._lassoTool,
18 handTool = this._handTool, 18 handTool = this._handTool,
19 globalConnect = this._globalConnect, 19 globalConnect = this._globalConnect,
20 - translate = this._translate; 20 + translate = this._translate
21 21
22 function createAction(type, group, className, title, options) { 22 function createAction(type, group, className, title, options) {
23 function createListener(event) { 23 function createListener(event) {
24 - var shape = elementFactory.createShape(assign({ type: type }, options)); 24 + const shape = elementFactory.createShape(assign({ type: type }, options))
25 25
26 if (options) { 26 if (options) {
27 shape.businessObject.di.isExpanded = options.isExpanded; 27 shape.businessObject.di.isExpanded = options.isExpanded;
@@ -30,7 +30,7 @@ F.prototype.getPaletteEntries = function() { @@ -30,7 +30,7 @@ F.prototype.getPaletteEntries = function() {
30 create.start(event, shape); 30 create.start(event, shape);
31 } 31 }
32 32
33 - var shortType = type.replace(/^bpmn:/, ""); 33 + const shortType = type.replace(/^bpmn:/, '')
34 34
35 return { 35 return {
36 group: group, 36 group: group,
@@ -44,19 +44,19 @@ F.prototype.getPaletteEntries = function() { @@ -44,19 +44,19 @@ F.prototype.getPaletteEntries = function() {
44 } 44 }
45 45
46 function createSubprocess(event) { 46 function createSubprocess(event) {
47 - var subProcess = elementFactory.createShape({  
48 - type: "bpmn:SubProcess", 47 + const subProcess = elementFactory.createShape({
  48 + type: 'bpmn:SubProcess',
49 x: 0, 49 x: 0,
50 y: 0, 50 y: 0,
51 isExpanded: true 51 isExpanded: true
52 - }); 52 + })
53 53
54 - var startEvent = elementFactory.createShape({  
55 - type: "bpmn:StartEvent", 54 + const startEvent = elementFactory.createShape({
  55 + type: 'bpmn:StartEvent',
56 x: 40, 56 x: 40,
57 y: 82, 57 y: 82,
58 parent: subProcess 58 parent: subProcess
59 - }); 59 + })
60 60
61 create.start(event, [subProcess, startEvent], { 61 create.start(event, [subProcess, startEvent], {
62 hints: { 62 hints: {
yudao-ui-admin/src/components/bpmnProcessDesigner/package/designer/plugins/palette/paletteProvider.js
@@ -19,18 +19,18 @@ export default function PaletteProvider(palette, create, elementFactory, spaceTo @@ -19,18 +19,18 @@ export default function PaletteProvider(palette, create, elementFactory, spaceTo
19 PaletteProvider.$inject = ["palette", "create", "elementFactory", "spaceTool", "lassoTool", "handTool", "globalConnect", "translate"]; 19 PaletteProvider.$inject = ["palette", "create", "elementFactory", "spaceTool", "lassoTool", "handTool", "globalConnect", "translate"];
20 20
21 PaletteProvider.prototype.getPaletteEntries = function() { 21 PaletteProvider.prototype.getPaletteEntries = function() {
22 - var actions = {}, 22 + const actions = {},
23 create = this._create, 23 create = this._create,
24 elementFactory = this._elementFactory, 24 elementFactory = this._elementFactory,
25 spaceTool = this._spaceTool, 25 spaceTool = this._spaceTool,
26 lassoTool = this._lassoTool, 26 lassoTool = this._lassoTool,
27 handTool = this._handTool, 27 handTool = this._handTool,
28 globalConnect = this._globalConnect, 28 globalConnect = this._globalConnect,
29 - translate = this._translate; 29 + translate = this._translate
30 30
31 function createAction(type, group, className, title, options) { 31 function createAction(type, group, className, title, options) {
32 function createListener(event) { 32 function createListener(event) {
33 - var shape = elementFactory.createShape(assign({ type: type }, options)); 33 + const shape = elementFactory.createShape(assign({ type: type }, options))
34 34
35 if (options) { 35 if (options) {
36 shape.businessObject.di.isExpanded = options.isExpanded; 36 shape.businessObject.di.isExpanded = options.isExpanded;
@@ -39,7 +39,7 @@ PaletteProvider.prototype.getPaletteEntries = function() { @@ -39,7 +39,7 @@ PaletteProvider.prototype.getPaletteEntries = function() {
39 create.start(event, shape); 39 create.start(event, shape);
40 } 40 }
41 41
42 - var shortType = type.replace(/^bpmn:/, ""); 42 + const shortType = type.replace(/^bpmn:/, '')
43 43
44 return { 44 return {
45 group: group, 45 group: group,
@@ -53,19 +53,19 @@ PaletteProvider.prototype.getPaletteEntries = function() { @@ -53,19 +53,19 @@ PaletteProvider.prototype.getPaletteEntries = function() {
53 } 53 }
54 54
55 function createSubprocess(event) { 55 function createSubprocess(event) {
56 - var subProcess = elementFactory.createShape({  
57 - type: "bpmn:SubProcess", 56 + const subProcess = elementFactory.createShape({
  57 + type: 'bpmn:SubProcess',
58 x: 0, 58 x: 0,
59 y: 0, 59 y: 0,
60 isExpanded: true 60 isExpanded: true
61 - }); 61 + })
62 62
63 - var startEvent = elementFactory.createShape({  
64 - type: "bpmn:StartEvent", 63 + const startEvent = elementFactory.createShape({
  64 + type: 'bpmn:StartEvent',
65 x: 40, 65 x: 40,
66 y: 82, 66 y: 82,
67 parent: subProcess 67 parent: subProcess
68 - }); 68 + })
69 69
70 create.start(event, [subProcess, startEvent], { 70 create.start(event, [subProcess, startEvent], {
71 hints: { 71 hints: {
yudao-ui-admin/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue
@@ -76,7 +76,7 @@ export default { @@ -76,7 +76,7 @@ export default {
76 if (!value) { 76 if (!value) {
77 return; 77 return;
78 } 78 }
79 - if (!value.match(/[a-zA-Z_][\-_.0-9_a-zA-Z$]*/)) { 79 + if (!value.match(/[a-zA-Z_][\-_.0-9a-zA-Z$]*/)) {
80 console.log('key 不满足 XML NCName 规则,所以不进行赋值'); 80 console.log('key 不满足 XML NCName 规则,所以不进行赋值');
81 return; 81 return;
82 } 82 }
yudao-ui-admin/src/components/generator/js.js
1 import { isArray } from 'util' 1 import { isArray } from 'util'
2 -import { exportDefault, titleCase, deepClone } from '@/utils/index' 2 +import { exportDefault, titleCase, deepClone } from '@/utils'
3 import ruleTrigger from './ruleTrigger' 3 import ruleTrigger from './ruleTrigger'
4 4
5 const units = { 5 const units = {
yudao-ui-admin/src/directive/dialog/drag.js
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 export default { 5 export default {
6 bind(el, binding, vnode, oldVnode) { 6 bind(el, binding, vnode, oldVnode) {
7 const value = binding.value 7 const value = binding.value
8 - if (value == false) return 8 + if (value === false) return
9 // 获取拖拽内容头部 9 // 获取拖拽内容头部
10 const dialogHeaderEl = el.querySelector('.el-dialog__header'); 10 const dialogHeaderEl = el.querySelector('.el-dialog__header');
11 const dragDom = el.querySelector('.el-dialog'); 11 const dragDom = el.querySelector('.el-dialog');
@@ -16,7 +16,7 @@ export default { @@ -16,7 +16,7 @@ export default {
16 dragDom.style.marginTop = 0; 16 dragDom.style.marginTop = 0;
17 let width = dragDom.style.width; 17 let width = dragDom.style.width;
18 if (width.includes('%')) { 18 if (width.includes('%')) {
19 - width = +document.body.clientWidth * (+width.replace(/\%/g, '') / 100); 19 + width = +document.body.clientWidth * (+width.replace(/%/g, '') / 100);
20 } else { 20 } else {
21 width = +width.replace(/\px/g, ''); 21 width = +width.replace(/\px/g, '');
22 } 22 }
@@ -32,12 +32,12 @@ export default { @@ -32,12 +32,12 @@ export default {
32 32
33 // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px 33 // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
34 if (sty.left.includes('%')) { 34 if (sty.left.includes('%')) {
35 - styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100);  
36 - styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100); 35 + styL = +document.body.clientWidth * (+sty.left.replace(/%/g, '') / 100);
  36 + styT = +document.body.clientHeight * (+sty.top.replace(/%/g, '') / 100);
37 } else { 37 } else {
38 styL = +sty.left.replace(/\px/g, ''); 38 styL = +sty.left.replace(/\px/g, '');
39 styT = +sty.top.replace(/\px/g, ''); 39 styT = +sty.top.replace(/\px/g, '');
40 - }; 40 + }
41 41
42 // 鼠标拖拽事件 42 // 鼠标拖拽事件
43 document.onmousemove = function (e) { 43 document.onmousemove = function (e) {
yudao-ui-admin/src/layout/components/TagsView/ScrollPane.vue
@@ -82,13 +82,11 @@ export default { @@ -82,13 +82,11 @@ export default {
82 position: relative; 82 position: relative;
83 overflow: hidden; 83 overflow: hidden;
84 width: 100%; 84 width: 100%;
85 - ::v-deep {  
86 - .el-scrollbar__bar {  
87 - bottom: 0px; 85 + :deep(.el-scrollbar__bar) {
  86 + bottom: 0;
88 } 87 }
89 - .el-scrollbar__wrap { 88 + :deep(.el-scrollbar__wrap) {
90 height: 49px; 89 height: 49px;
91 } 90 }
92 - }  
93 } 91 }
94 </style> 92 </style>
yudao-ui-admin/src/plugins/tab.js
@@ -56,7 +56,7 @@ export default { @@ -56,7 +56,7 @@ export default {
56 }, 56 },
57 // 添加tab页签 57 // 添加tab页签
58 openPage(title, url, params) { 58 openPage(title, url, params) {
59 - var obj = { path: url, meta: { title: title } } 59 + const obj = { path: url, meta: { title: title } }
60 store.dispatch('tagsView/addView', obj); 60 store.dispatch('tagsView/addView', obj);
61 return router.push({ path: url, query: params }); 61 return router.push({ path: url, query: params });
62 }, 62 },
yudao-ui-admin/src/store/modules/permission.js
@@ -86,7 +86,7 @@ function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) { @@ -86,7 +86,7 @@ function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
86 } 86 }
87 87
88 function filterChildren(childrenMap, lastRouter = false) { 88 function filterChildren(childrenMap, lastRouter = false) {
89 - var children = [] 89 + let children = []
90 childrenMap.forEach((el, index) => { 90 childrenMap.forEach((el, index) => {
91 if (el.children && el.children.length) { 91 if (el.children && el.children.length) {
92 if (el.component === 'ParentView' && !lastRouter) { 92 if (el.component === 'ParentView' && !lastRouter) {
yudao-ui-admin/src/store/modules/user.js
1 -import {login, logout, getInfo, socialLogin, socialBindLogin, smsLogin} from '@/api/login' 1 +import {login, logout, getInfo, socialLogin, smsLogin} from '@/api/login'
2 import {setToken, removeToken} from '@/utils/auth' 2 import {setToken, removeToken} from '@/utils/auth'
3 3
4 const user = { 4 const user = {
yudao-ui-admin/src/utils/index.js
@@ -4,14 +4,14 @@ import { parseTime } from &#39;./ruoyi&#39; @@ -4,14 +4,14 @@ import { parseTime } from &#39;./ruoyi&#39;
4 * 表格时间格式化 4 * 表格时间格式化
5 */ 5 */
6 export function formatDate(cellValue) { 6 export function formatDate(cellValue) {
7 - if (cellValue == null || cellValue == "") return "";  
8 - var date = new Date(cellValue)  
9 - var year = date.getFullYear()  
10 - var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1  
11 - var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()  
12 - var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()  
13 - var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()  
14 - var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds() 7 + if (cellValue == null || cellValue === "") return "";
  8 + const date = new Date(cellValue)
  9 + const year = date.getFullYear()
  10 + const month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
  11 + const day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
  12 + const hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
  13 + const minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
  14 + const seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
15 return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds 15 return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds
16 } 16 }
17 17
@@ -78,13 +78,13 @@ export function getQueryObject(url) { @@ -78,13 +78,13 @@ export function getQueryObject(url) {
78 } 78 }
79 79
80 /** 80 /**
81 - * @param {string} input value  
82 - * @returns {number} output value 81 + * @param str
  82 + * @param str
83 */ 83 */
84 export function byteLength(str) { 84 export function byteLength(str) {
85 // returns the byte length of an utf8 string 85 // returns the byte length of an utf8 string
86 let s = str.length 86 let s = str.length
87 - for (var i = str.length - 1; i >= 0; i--) { 87 + for (let i = str.length - 1; i >= 0; i--) {
88 const code = str.charCodeAt(i) 88 const code = str.charCodeAt(i)
89 if (code > 0x7f && code <= 0x7ff) s++ 89 if (code > 0x7f && code <= 0x7ff) s++
90 else if (code > 0x7ff && code <= 0xffff) s += 2 90 else if (code > 0x7ff && code <= 0xffff) s += 2
@@ -136,8 +136,7 @@ export function param2Obj(url) { @@ -136,8 +136,7 @@ export function param2Obj(url) {
136 const index = v.indexOf('=') 136 const index = v.indexOf('=')
137 if (index !== -1) { 137 if (index !== -1) {
138 const name = v.substring(0, index) 138 const name = v.substring(0, index)
139 - const val = v.substring(index + 1, v.length)  
140 - obj[name] = val 139 + obj[name] = v.substring(index + 1, v.length)
141 } 140 }
142 }) 141 })
143 return obj 142 return obj
@@ -330,7 +329,7 @@ export function createUniqueString() { @@ -330,7 +329,7 @@ export function createUniqueString() {
330 329
331 /** 330 /**
332 * Check if an element has a class 331 * Check if an element has a class
333 - * @param {HTMLElement} elm 332 + * @param ele
334 * @param {string} cls 333 * @param {string} cls
335 * @returns {boolean} 334 * @returns {boolean}
336 */ 335 */
@@ -340,7 +339,7 @@ export function hasClass(ele, cls) { @@ -340,7 +339,7 @@ export function hasClass(ele, cls) {
340 339
341 /** 340 /**
342 * Add class to element 341 * Add class to element
343 - * @param {HTMLElement} elm 342 + * @param ele
344 * @param {string} cls 343 * @param {string} cls
345 */ 344 */
346 export function addClass(ele, cls) { 345 export function addClass(ele, cls) {
@@ -349,7 +348,7 @@ export function addClass(ele, cls) { @@ -349,7 +348,7 @@ export function addClass(ele, cls) {
349 348
350 /** 349 /**
351 * Remove class from element 350 * Remove class from element
352 - * @param {HTMLElement} elm 351 + * @param ele
353 * @param {string} cls 352 * @param {string} cls
354 */ 353 */
355 export function removeClass(ele, cls) { 354 export function removeClass(ele, cls) {
yudao-ui-admin/src/utils/permission.js
@@ -15,10 +15,8 @@ export function checkPermi(value) { @@ -15,10 +15,8 @@ export function checkPermi(value) {
15 return all_permission === permission || permissionDatas.includes(permission) 15 return all_permission === permission || permissionDatas.includes(permission)
16 }) 16 })
17 17
18 - if (!hasPermission) {  
19 - return false  
20 - }  
21 - return true 18 + return hasPermission;
  19 +
22 } else { 20 } else {
23 console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`) 21 console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`)
24 return false 22 return false
@@ -40,12 +38,10 @@ export function checkRole(value) { @@ -40,12 +38,10 @@ export function checkRole(value) {
40 return super_admin === role || permissionRoles.includes(role) 38 return super_admin === role || permissionRoles.includes(role)
41 }) 39 })
42 40
43 - if (!hasRole) {  
44 - return false  
45 - }  
46 - return true 41 + return hasRole;
  42 +
47 } else { 43 } else {
48 console.error(`need roles! Like checkRole="['admin','editor']"`) 44 console.error(`need roles! Like checkRole="['admin','editor']"`)
49 return false 45 return false
50 } 46 }
51 -}  
52 \ No newline at end of file 47 \ No newline at end of file
  48 +}
yudao-ui-admin/src/utils/request.js
@@ -49,12 +49,12 @@ service.interceptors.request.use(config =&gt; { @@ -49,12 +49,12 @@ service.interceptors.request.use(config =&gt; {
49 let url = config.url + '?'; 49 let url = config.url + '?';
50 for (const propName of Object.keys(config.params)) { 50 for (const propName of Object.keys(config.params)) {
51 const value = config.params[propName]; 51 const value = config.params[propName];
52 - var part = encodeURIComponent(propName) + "="; 52 + const part = encodeURIComponent(propName) + '='
53 if (value !== null && typeof(value) !== "undefined") { 53 if (value !== null && typeof(value) !== "undefined") {
54 if (typeof value === 'object') { 54 if (typeof value === 'object') {
55 for (const key of Object.keys(value)) { 55 for (const key of Object.keys(value)) {
56 let params = propName + '[' + key + ']'; 56 let params = propName + '[' + key + ']';
57 - var subPart = encodeURIComponent(params) + "="; 57 + const subPart = encodeURIComponent(params) + '='
58 url += subPart + encodeURIComponent(value[key]) + "&"; 58 url += subPart + encodeURIComponent(value[key]) + "&";
59 } 59 }
60 } else { 60 } else {
yudao-ui-admin/src/utils/ruoyi.js
@@ -18,7 +18,7 @@ export function parseTime(time, pattern) { @@ -18,7 +18,7 @@ export function parseTime(time, pattern) {
18 if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { 18 if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
19 time = parseInt(time) 19 time = parseInt(time)
20 } else if (typeof time === 'string') { 20 } else if (typeof time === 'string') {
21 - time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm),''); 21 + time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.\d{3}/gm),'');
22 } 22 }
23 if ((typeof time === 'number') && (time.toString().length === 10)) { 23 if ((typeof time === 'number') && (time.toString().length === 10)) {
24 time = time * 1000 24 time = time * 1000
@@ -34,7 +34,7 @@ export function parseTime(time, pattern) { @@ -34,7 +34,7 @@ export function parseTime(time, pattern) {
34 s: date.getSeconds(), 34 s: date.getSeconds(),
35 a: date.getDay() 35 a: date.getDay()
36 } 36 }
37 - const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { 37 + const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
38 let value = formatObj[key] 38 let value = formatObj[key]
39 // Note: getDay() returns 0 on Sunday 39 // Note: getDay() returns 0 on Sunday
40 if (key === 'a') { 40 if (key === 'a') {
@@ -102,9 +102,11 @@ export function addBeginAndEndTime(params, dateRange, propName) { @@ -102,9 +102,11 @@ export function addBeginAndEndTime(params, dateRange, propName) {
102 102
103 // 字符串格式化(%s ) 103 // 字符串格式化(%s )
104 export function sprintf(str) { 104 export function sprintf(str) {
105 - var args = arguments, flag = true, i = 1; 105 + const args = arguments
  106 + let flag = true
  107 + const i = 1
106 str = str.replace(/%s/g, function () { 108 str = str.replace(/%s/g, function () {
107 - var arg = args[i++]; 109 + const arg = args[i++]
108 if (typeof arg === 'undefined') { 110 if (typeof arg === 'undefined') {
109 flag = false; 111 flag = false;
110 return ''; 112 return '';
@@ -116,7 +118,7 @@ export function sprintf(str) { @@ -116,7 +118,7 @@ export function sprintf(str) {
116 118
117 // 转换字符串,undefined,null等转化为"" 119 // 转换字符串,undefined,null等转化为""
118 export function praseStrEmpty(str) { 120 export function praseStrEmpty(str) {
119 - if (!str || str == "undefined" || str == "null") { 121 + if (!str || str === "undefined" || str === "null") {
120 return ""; 122 return "";
121 } 123 }
122 return str; 124 return str;
@@ -244,7 +246,7 @@ export function getPath(path) { @@ -244,7 +246,7 @@ export function getPath(path) {
244 * @returns 246 * @returns
245 */ 247 */
246 export function divide(divisor, dividend) { 248 export function divide(divisor, dividend) {
247 - if(divisor == null || dividend == null || dividend == 0){ 249 + if(divisor == null || dividend == null || dividend === 0){
248 return null; 250 return null;
249 } 251 }
250 return Math.floor(divisor/dividend*100)/100; 252 return Math.floor(divisor/dividend*100)/100;
yudao-ui-admin/src/utils/scroll-to.js
@@ -8,8 +8,10 @@ Math.easeInOutQuad = function(t, b, c, d) { @@ -8,8 +8,10 @@ Math.easeInOutQuad = function(t, b, c, d) {
8 } 8 }
9 9
10 // requestAnimationFrame for Smart Animating http://goo.gl/sx5sts 10 // requestAnimationFrame for Smart Animating http://goo.gl/sx5sts
11 -var requestAnimFrame = (function() {  
12 - return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) { window.setTimeout(callback, 1000 / 60) } 11 +const requestAnimFrame = (function() {
  12 + return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) {
  13 + window.setTimeout(callback, 1000 / 60)
  14 + }
13 })() 15 })()
14 16
15 /** 17 /**
@@ -37,11 +39,11 @@ export function scrollTo(to, duration, callback) { @@ -37,11 +39,11 @@ export function scrollTo(to, duration, callback) {
37 const increment = 20 39 const increment = 20
38 let currentTime = 0 40 let currentTime = 0
39 duration = (typeof (duration) === 'undefined') ? 500 : duration 41 duration = (typeof (duration) === 'undefined') ? 500 : duration
40 - var animateScroll = function() { 42 + const animateScroll = function() {
41 // increment the time 43 // increment the time
42 currentTime += increment 44 currentTime += increment
43 // find the value with the quadratic in-out easing function 45 // find the value with the quadratic in-out easing function
44 - var val = Math.easeInOutQuad(currentTime, start, change, duration) 46 + const val = Math.easeInOutQuad(currentTime, start, change, duration)
45 // move the document.body 47 // move the document.body
46 move(val) 48 move(val)
47 // do the animation unless its over 49 // do the animation unless its over
yudao-ui-admin/src/utils/validate.js
@@ -56,7 +56,7 @@ export function validAlphabets(str) { @@ -56,7 +56,7 @@ export function validAlphabets(str) {
56 * @returns {Boolean} 56 * @returns {Boolean}
57 */ 57 */
58 export function validEmail(email) { 58 export function validEmail(email) {
59 - const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ 59 + const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
60 return reg.test(email) 60 return reg.test(email)
61 } 61 }
62 62
@@ -65,10 +65,8 @@ export function validEmail(email) { @@ -65,10 +65,8 @@ export function validEmail(email) {
65 * @returns {Boolean} 65 * @returns {Boolean}
66 */ 66 */
67 export function isString(str) { 67 export function isString(str) {
68 - if (typeof str === 'string' || str instanceof String) {  
69 - return true  
70 - }  
71 - return false 68 + return typeof str === 'string' || str instanceof String;
  69 +
72 } 70 }
73 71
74 /** 72 /**
yudao-ui-admin/src/views/bpm/definition/index.vue
@@ -6,19 +6,19 @@ @@ -6,19 +6,19 @@
6 <el-table v-loading="loading" :data="list"> 6 <el-table v-loading="loading" :data="list">
7 <el-table-column label="定义编号" align="center" prop="id" width="400" /> 7 <el-table-column label="定义编号" align="center" prop="id" width="400" />
8 <el-table-column label="定义名称" align="center" prop="name" width="100"> 8 <el-table-column label="定义名称" align="center" prop="name" width="100">
9 - <template slot-scope="scope"> 9 + <template v-slot="scope">
10 <el-button type="text" @click="handleBpmnDetail(scope.row)"> 10 <el-button type="text" @click="handleBpmnDetail(scope.row)">
11 <span>{{ scope.row.name }}</span> 11 <span>{{ scope.row.name }}</span>
12 </el-button> 12 </el-button>
13 </template> 13 </template>
14 </el-table-column> 14 </el-table-column>
15 <el-table-column label="定义分类" align="center" prop="category" width="100"> 15 <el-table-column label="定义分类" align="center" prop="category" width="100">
16 - <template slot-scope="scope"> 16 + <template v-slot="scope">
17 <dict-tag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="scope.row.category" /> 17 <dict-tag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="scope.row.category" />
18 </template> 18 </template>
19 </el-table-column> 19 </el-table-column>
20 <el-table-column label="表单信息" align="center" prop="formType" width="200"> 20 <el-table-column label="表单信息" align="center" prop="formType" width="200">
21 - <template slot-scope="scope"> 21 + <template v-slot="scope">
22 <el-button v-if="scope.row.formId" type="text" @click="handleFormDetail(scope.row)"> 22 <el-button v-if="scope.row.formId" type="text" @click="handleFormDetail(scope.row)">
23 <span>{{ scope.row.formName }}</span> 23 <span>{{ scope.row.formName }}</span>
24 </el-button> 24 </el-button>
@@ -29,25 +29,25 @@ @@ -29,25 +29,25 @@
29 </template> 29 </template>
30 </el-table-column> 30 </el-table-column>
31 <el-table-column label="流程版本" align="center" prop="processDefinition.version" width="80"> 31 <el-table-column label="流程版本" align="center" prop="processDefinition.version" width="80">
32 - <template slot-scope="scope"> 32 + <template v-slot="scope">
33 <el-tag size="medium" v-if="scope.row">v{{ scope.row.version }}</el-tag> 33 <el-tag size="medium" v-if="scope.row">v{{ scope.row.version }}</el-tag>
34 <el-tag size="medium" type="warning" v-else>未部署</el-tag> 34 <el-tag size="medium" type="warning" v-else>未部署</el-tag>
35 </template> 35 </template>
36 </el-table-column> 36 </el-table-column>
37 <el-table-column label="状态" align="center" prop="version" width="80"> 37 <el-table-column label="状态" align="center" prop="version" width="80">
38 - <template slot-scope="scope"> 38 + <template v-slot="scope">
39 <el-tag type="success" v-if="scope.row.suspensionState === 1">激活</el-tag> 39 <el-tag type="success" v-if="scope.row.suspensionState === 1">激活</el-tag>
40 <el-tag type="warning" v-if="scope.row.suspensionState === 2">挂起</el-tag> 40 <el-tag type="warning" v-if="scope.row.suspensionState === 2">挂起</el-tag>
41 </template> 41 </template>
42 </el-table-column> 42 </el-table-column>
43 <el-table-column label="部署时间" align="center" prop="deploymentTime" width="180"> 43 <el-table-column label="部署时间" align="center" prop="deploymentTime" width="180">
44 - <template slot-scope="scope"> 44 + <template v-slot="scope">
45 <span>{{ parseTime(scope.row.deploymentTime) }}</span> 45 <span>{{ parseTime(scope.row.deploymentTime) }}</span>
46 </template> 46 </template>
47 </el-table-column> 47 </el-table-column>
48 <el-table-column label="定义描述" align="center" prop="description" width="300" show-overflow-tooltip /> 48 <el-table-column label="定义描述" align="center" prop="description" width="300" show-overflow-tooltip />
49 <el-table-column label="操作" align="center" width="150" fixed="right"> 49 <el-table-column label="操作" align="center" width="150" fixed="right">
50 - <template slot-scope="scope"> 50 + <template v-slot="scope">
51 <el-button size="mini" type="text" icon="el-icon-s-custom" @click="handleAssignRule(scope.row)" 51 <el-button size="mini" type="text" icon="el-icon-s-custom" @click="handleAssignRule(scope.row)"
52 v-hasPermi="['bpm:task-assign-rule:update']">分配规则</el-button> 52 v-hasPermi="['bpm:task-assign-rule:update']">分配规则</el-button>
53 </template> 53 </template>
@@ -76,7 +76,6 @@ @@ -76,7 +76,6 @@
76 <script> 76 <script>
77 import {getProcessDefinitionBpmnXML, getProcessDefinitionPage} from "@/api/bpm/definition"; 77 import {getProcessDefinitionBpmnXML, getProcessDefinitionPage} from "@/api/bpm/definition";
78 import {DICT_TYPE, getDictDatas} from "@/utils/dict"; 78 import {DICT_TYPE, getDictDatas} from "@/utils/dict";
79 -import {getForm} from "@/api/bpm/form";  
80 import {decodeFields} from "@/utils/formGenerator"; 79 import {decodeFields} from "@/utils/formGenerator";
81 import Parser from '@/components/parser/Parser' 80 import Parser from '@/components/parser/Parser'
82 import taskAssignRuleDialog from "../taskAssignRule/taskAssignRuleDialog"; 81 import taskAssignRuleDialog from "../taskAssignRule/taskAssignRuleDialog";
yudao-ui-admin/src/views/bpm/form/formEditor.vue
@@ -151,9 +151,7 @@ import RightPanel from &#39;@/views/infra/build/RightPanel&#39; @@ -151,9 +151,7 @@ import RightPanel from &#39;@/views/infra/build/RightPanel&#39;
151 import { 151 import {
152 inputComponents, selectComponents, layoutComponents, formConf 152 inputComponents, selectComponents, layoutComponents, formConf
153 } from '@/components/generator/config' 153 } from '@/components/generator/config'
154 -import {  
155 - exportDefault, beautifierConf, isNumberStr, titleCase, deepClone, isObjectObject  
156 -} from '@/utils/index' 154 +import {beautifierConf, titleCase, deepClone, isObjectObject} from '@/utils'
157 import { 155 import {
158 makeUpHtml, vueTemplate, vueScript, cssStyle 156 makeUpHtml, vueTemplate, vueScript, cssStyle
159 } from '@/components/generator/html' 157 } from '@/components/generator/html'
yudao-ui-admin/src/views/bpm/form/index.vue
@@ -27,18 +27,18 @@ @@ -27,18 +27,18 @@
27 <el-table-column label="编号" align="center" prop="id" /> 27 <el-table-column label="编号" align="center" prop="id" />
28 <el-table-column label="表单名" align="center" prop="name" /> 28 <el-table-column label="表单名" align="center" prop="name" />
29 <el-table-column label="开启状态" align="center" prop="status"> 29 <el-table-column label="开启状态" align="center" prop="status">
30 - <template slot-scope="scope"> 30 + <template v-slot="scope">
31 <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status"/> 31 <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status"/>
32 </template> 32 </template>
33 </el-table-column> 33 </el-table-column>
34 <el-table-column label="备注" align="center" prop="remark" /> 34 <el-table-column label="备注" align="center" prop="remark" />
35 <el-table-column label="创建时间" align="center" prop="createTime" width="180"> 35 <el-table-column label="创建时间" align="center" prop="createTime" width="180">
36 - <template slot-scope="scope"> 36 + <template v-slot="scope">
37 <span>{{ parseTime(scope.row.createTime) }}</span> 37 <span>{{ parseTime(scope.row.createTime) }}</span>
38 </template> 38 </template>
39 </el-table-column> 39 </el-table-column>
40 <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> 40 <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
41 - <template slot-scope="scope"> 41 + <template v-slot="scope">
42 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleDetail(scope.row)" 42 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleDetail(scope.row)"
43 v-hasPermi="['bpm:form:query']">详情</el-button> 43 v-hasPermi="['bpm:form:query']">详情</el-button>
44 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" 44 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
yudao-ui-admin/src/views/bpm/group/index.vue
@@ -38,24 +38,24 @@ @@ -38,24 +38,24 @@
38 <el-table-column label="组名" align="center" prop="name" /> 38 <el-table-column label="组名" align="center" prop="name" />
39 <el-table-column label="描述" align="center" prop="description" /> 39 <el-table-column label="描述" align="center" prop="description" />
40 <el-table-column label="成员" align="center"> 40 <el-table-column label="成员" align="center">
41 - <template slot-scope="scope"> 41 + <template v-slot="scope">
42 <span v-for="userId in scope.row.memberUserIds"> 42 <span v-for="userId in scope.row.memberUserIds">
43 {{ getUserNickname(userId) }} 43 {{ getUserNickname(userId) }}
44 </span> 44 </span>
45 </template> 45 </template>
46 </el-table-column> 46 </el-table-column>
47 <el-table-column label="状态" align="center" prop="status"> 47 <el-table-column label="状态" align="center" prop="status">
48 - <template slot-scope="scope"> 48 + <template v-slot="scope">
49 <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" /> 49 <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
50 </template> 50 </template>
51 </el-table-column> 51 </el-table-column>
52 <el-table-column label="创建时间" align="center" prop="createTime" width="180"> 52 <el-table-column label="创建时间" align="center" prop="createTime" width="180">
53 - <template slot-scope="scope"> 53 + <template v-slot="scope">
54 <span>{{ parseTime(scope.row.createTime) }}</span> 54 <span>{{ parseTime(scope.row.createTime) }}</span>
55 </template> 55 </template>
56 </el-table-column> 56 </el-table-column>
57 <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> 57 <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
58 - <template slot-scope="scope"> 58 + <template v-slot="scope">
59 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" 59 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
60 v-hasPermi="['bpm:user-group:update']">修改</el-button> 60 v-hasPermi="['bpm:user-group:update']">修改</el-button>
61 <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" 61 <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
yudao-ui-admin/src/views/bpm/model/index.vue
@@ -40,19 +40,19 @@ @@ -40,19 +40,19 @@
40 <el-table v-loading="loading" :data="list"> 40 <el-table v-loading="loading" :data="list">
41 <el-table-column label="流程标识" align="center" prop="key" /> 41 <el-table-column label="流程标识" align="center" prop="key" />
42 <el-table-column label="流程名称" align="center" prop="name" width="200"> 42 <el-table-column label="流程名称" align="center" prop="name" width="200">
43 - <template slot-scope="scope"> 43 + <template v-slot="scope">
44 <el-button type="text" @click="handleBpmnDetail(scope.row)"> 44 <el-button type="text" @click="handleBpmnDetail(scope.row)">
45 <span>{{ scope.row.name }}</span> 45 <span>{{ scope.row.name }}</span>
46 </el-button> 46 </el-button>
47 </template> 47 </template>
48 </el-table-column> 48 </el-table-column>
49 <el-table-column label="流程分类" align="center" prop="category" width="100"> 49 <el-table-column label="流程分类" align="center" prop="category" width="100">
50 - <template slot-scope="scope"> 50 + <template v-slot="scope">
51 <dict-tag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="scope.row.category" /> 51 <dict-tag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="scope.row.category" />
52 </template> 52 </template>
53 </el-table-column> 53 </el-table-column>
54 <el-table-column label="表单信息" align="center" prop="formType" width="200"> 54 <el-table-column label="表单信息" align="center" prop="formType" width="200">
55 - <template slot-scope="scope"> 55 + <template v-slot="scope">
56 <el-button v-if="scope.row.formId" type="text" @click="handleFormDetail(scope.row)"> 56 <el-button v-if="scope.row.formId" type="text" @click="handleFormDetail(scope.row)">
57 <span>{{ scope.row.formName }}</span> 57 <span>{{ scope.row.formName }}</span>
58 </el-button> 58 </el-button>
@@ -63,31 +63,31 @@ @@ -63,31 +63,31 @@
63 </template> 63 </template>
64 </el-table-column> 64 </el-table-column>
65 <el-table-column label="创建时间" align="center" prop="createTime" width="180"> 65 <el-table-column label="创建时间" align="center" prop="createTime" width="180">
66 - <template slot-scope="scope"> 66 + <template v-slot="scope">
67 <span>{{ parseTime(scope.row.createTime) }}</span> 67 <span>{{ parseTime(scope.row.createTime) }}</span>
68 </template> 68 </template>
69 </el-table-column> 69 </el-table-column>
70 <el-table-column label="最新部署的流程定义" align="center"> 70 <el-table-column label="最新部署的流程定义" align="center">
71 <el-table-column label="流程版本" align="center" prop="processDefinition.version" width="80"> 71 <el-table-column label="流程版本" align="center" prop="processDefinition.version" width="80">
72 - <template slot-scope="scope"> 72 + <template v-slot="scope">
73 <el-tag size="medium" v-if="scope.row.processDefinition">v{{ scope.row.processDefinition.version }}</el-tag> 73 <el-tag size="medium" v-if="scope.row.processDefinition">v{{ scope.row.processDefinition.version }}</el-tag>
74 <el-tag size="medium" type="warning" v-else>未部署</el-tag> 74 <el-tag size="medium" type="warning" v-else>未部署</el-tag>
75 </template> 75 </template>
76 </el-table-column> 76 </el-table-column>
77 <el-table-column label="激活状态" align="center" prop="processDefinition.version" width="80"> 77 <el-table-column label="激活状态" align="center" prop="processDefinition.version" width="80">
78 - <template slot-scope="scope"> 78 + <template v-slot="scope">
79 <el-switch v-if="scope.row.processDefinition" v-model="scope.row.processDefinition.suspensionState" 79 <el-switch v-if="scope.row.processDefinition" v-model="scope.row.processDefinition.suspensionState"
80 :active-value="1" :inactive-value="2" @change="handleChangeState(scope.row)" /> 80 :active-value="1" :inactive-value="2" @change="handleChangeState(scope.row)" />
81 </template> 81 </template>
82 </el-table-column> 82 </el-table-column>
83 <el-table-column label="部署时间" align="center" prop="deploymentTime" width="180"> 83 <el-table-column label="部署时间" align="center" prop="deploymentTime" width="180">
84 - <template slot-scope="scope"> 84 + <template v-slot="scope">
85 <span v-if="scope.row.processDefinition">{{ parseTime(scope.row.processDefinition.deploymentTime) }}</span> 85 <span v-if="scope.row.processDefinition">{{ parseTime(scope.row.processDefinition.deploymentTime) }}</span>
86 </template> 86 </template>
87 </el-table-column> 87 </el-table-column>
88 </el-table-column> 88 </el-table-column>
89 <el-table-column label="操作" align="center" width="450" fixed="right"> 89 <el-table-column label="操作" align="center" width="450" fixed="right">
90 - <template slot-scope="scope"> 90 + <template v-slot="scope">
91 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" 91 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
92 v-hasPermi="['bpm:model:update']">修改流程</el-button> 92 v-hasPermi="['bpm:model:update']">修改流程</el-button>
93 <el-button size="mini" type="text" icon="el-icon-setting" @click="handleDesign(scope.row)" 93 <el-button size="mini" type="text" icon="el-icon-setting" @click="handleDesign(scope.row)"
yudao-ui-admin/src/views/bpm/oa/leave/index.vue
@@ -41,33 +41,33 @@ @@ -41,33 +41,33 @@
41 <el-table v-loading="loading" :data="list"> 41 <el-table v-loading="loading" :data="list">
42 <el-table-column label="申请编号" align="center" prop="id" /> 42 <el-table-column label="申请编号" align="center" prop="id" />
43 <el-table-column label="状态" align="center" prop="result"> 43 <el-table-column label="状态" align="center" prop="result">
44 - <template slot-scope="scope"> 44 + <template v-slot="scope">
45 <dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT" :value="scope.row.result"/> 45 <dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT" :value="scope.row.result"/>
46 </template> 46 </template>
47 </el-table-column> 47 </el-table-column>
48 <el-table-column label="开始时间" align="center" prop="startTime" width="180"> 48 <el-table-column label="开始时间" align="center" prop="startTime" width="180">
49 - <template slot-scope="scope"> 49 + <template v-slot="scope">
50 <span>{{ parseTime(scope.row.startTime) }}</span> 50 <span>{{ parseTime(scope.row.startTime) }}</span>
51 </template> 51 </template>
52 </el-table-column> 52 </el-table-column>
53 <el-table-column label="结束时间" align="center" prop="endTime" width="180"> 53 <el-table-column label="结束时间" align="center" prop="endTime" width="180">
54 - <template slot-scope="scope"> 54 + <template v-slot="scope">
55 <span>{{ parseTime(scope.row.endTime) }}</span> 55 <span>{{ parseTime(scope.row.endTime) }}</span>
56 </template> 56 </template>
57 </el-table-column> 57 </el-table-column>
58 <el-table-column label="请假类型" align="center" prop="type"> 58 <el-table-column label="请假类型" align="center" prop="type">
59 - <template slot-scope="scope"> 59 + <template v-slot="scope">
60 <dict-tag :type="DICT_TYPE.BPM_OA_LEAVE_TYPE" :value="scope.row.type"/> 60 <dict-tag :type="DICT_TYPE.BPM_OA_LEAVE_TYPE" :value="scope.row.type"/>
61 </template> 61 </template>
62 </el-table-column> 62 </el-table-column>
63 <el-table-column label="原因" align="center" prop="reason" /> 63 <el-table-column label="原因" align="center" prop="reason" />
64 <el-table-column label="申请时间" align="center" prop="applyTime" width="180"> 64 <el-table-column label="申请时间" align="center" prop="applyTime" width="180">
65 - <template slot-scope="scope"> 65 + <template v-slot="scope">
66 <span>{{ parseTime(scope.row.createTime) }}</span> 66 <span>{{ parseTime(scope.row.createTime) }}</span>
67 </template> 67 </template>
68 </el-table-column> 68 </el-table-column>
69 <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200"> 69 <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
70 - <template slot-scope="scope"> 70 + <template v-slot="scope">
71 <el-button size="mini" type="text" icon="el-icon-delete" @click="handleCancel(scope.row)" 71 <el-button size="mini" type="text" icon="el-icon-delete" @click="handleCancel(scope.row)"
72 v-hasPermi="['bpm:oa-leave:create']" v-if="scope.row.result === 1">取消请假</el-button> 72 v-hasPermi="['bpm:oa-leave:create']" v-if="scope.row.result === 1">取消请假</el-button>
73 <el-button size="mini" type="text" icon="el-icon-view" @click="handleDetail(scope.row)" 73 <el-button size="mini" type="text" icon="el-icon-view" @click="handleDetail(scope.row)"
@@ -159,7 +159,7 @@ export default { @@ -159,7 +159,7 @@ export default {
159 type: 'warning', 159 type: 'warning',
160 confirmButtonText: "确定", 160 confirmButtonText: "确定",
161 cancelButtonText: "取消", 161 cancelButtonText: "取消",
162 - inputPattern: /^[\s\S]*.*[^\s][\s\S]*$/, // 判断非空,且非空格 162 + inputPattern: /^[\s\S]*.*\S[\s\S]*$/, // 判断非空,且非空格
163 inputErrorMessage: "取消原因不能为空", 163 inputErrorMessage: "取消原因不能为空",
164 }).then(({ value }) => { 164 }).then(({ value }) => {
165 return cancelProcessInstance(id, value); 165 return cancelProcessInstance(id, value);
yudao-ui-admin/src/views/bpm/processInstance/create.vue
@@ -4,25 +4,25 @@ @@ -4,25 +4,25 @@
4 <div v-if="!selectProcessInstance"> 4 <div v-if="!selectProcessInstance">
5 <el-table v-loading="loading" :data="list"> 5 <el-table v-loading="loading" :data="list">
6 <el-table-column label="流程名称" align="center" prop="name" width="200"> 6 <el-table-column label="流程名称" align="center" prop="name" width="200">
7 - <template slot-scope="scope"> 7 + <template v-slot="scope">
8 <el-button type="text" @click="handleBpmnDetail(scope.row)"> 8 <el-button type="text" @click="handleBpmnDetail(scope.row)">
9 <span>{{ scope.row.name }}</span> 9 <span>{{ scope.row.name }}</span>
10 </el-button> 10 </el-button>
11 </template> 11 </template>
12 </el-table-column> 12 </el-table-column>
13 <el-table-column label="流程分类" align="center" prop="category" width="100"> 13 <el-table-column label="流程分类" align="center" prop="category" width="100">
14 - <template slot-scope="scope"> 14 + <template v-slot="scope">
15 <dict-tag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="scope.row.category" /> 15 <dict-tag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="scope.row.category" />
16 </template> 16 </template>
17 </el-table-column> 17 </el-table-column>
18 <el-table-column label="流程版本" align="center" prop="processDefinition.version" width="80"> 18 <el-table-column label="流程版本" align="center" prop="processDefinition.version" width="80">
19 - <template slot-scope="scope"> 19 + <template v-slot="scope">
20 <el-tag size="medium" v-if="scope.row">v{{ scope.row.version }}</el-tag> 20 <el-tag size="medium" v-if="scope.row">v{{ scope.row.version }}</el-tag>
21 </template> 21 </template>
22 </el-table-column> 22 </el-table-column>
23 <el-table-column label="流程描述" align="center" prop="description" width="300" show-overflow-tooltip /> 23 <el-table-column label="流程描述" align="center" prop="description" width="300" show-overflow-tooltip />
24 <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> 24 <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
25 - <template slot-scope="scope"> 25 + <template v-slot="scope">
26 <el-button type="text" size="small" icon="el-icon-plus" @click="handleSelect(scope.row)">选择</el-button> 26 <el-button type="text" size="small" icon="el-icon-plus" @click="handleSelect(scope.row)">选择</el-button>
27 </template> 27 </template>
28 </el-table-column> 28 </el-table-column>
yudao-ui-admin/src/views/bpm/processInstance/detail.vue
@@ -110,8 +110,8 @@ import {DICT_TYPE, getDictDatas} from &quot;@/utils/dict&quot;; @@ -110,8 +110,8 @@ import {DICT_TYPE, getDictDatas} from &quot;@/utils/dict&quot;;
110 import store from "@/store"; 110 import store from "@/store";
111 import {decodeFields} from "@/utils/formGenerator"; 111 import {decodeFields} from "@/utils/formGenerator";
112 import Parser from '@/components/parser/Parser' 112 import Parser from '@/components/parser/Parser'
113 -import {createProcessInstance, getProcessInstance} from "@/api/bpm/processInstance";  
114 -import {approveTask, getTaskListByProcessInstanceId, rejectTask, updateTaskAssignee,backTask} from "@/api/bpm/task"; 113 +import {getProcessInstance} from "@/api/bpm/processInstance";
  114 +import {approveTask, getTaskListByProcessInstanceId, rejectTask, updateTaskAssignee} from "@/api/bpm/task";
115 import {getDate} from "@/utils/dateUtils"; 115 import {getDate} from "@/utils/dateUtils";
116 import {listSimpleUsers} from "@/api/system/user"; 116 import {listSimpleUsers} from "@/api/system/user";
117 import {getActivityList} from "@/api/bpm/activity"; 117 import {getActivityList} from "@/api/bpm/activity";
yudao-ui-admin/src/views/bpm/processInstance/index.vue
@@ -52,39 +52,39 @@ @@ -52,39 +52,39 @@
52 <el-table-column label="编号" align="center" prop="id" width="320" /> 52 <el-table-column label="编号" align="center" prop="id" width="320" />
53 <el-table-column label="流程名" align="center" prop="name" /> 53 <el-table-column label="流程名" align="center" prop="name" />
54 <el-table-column label="流程分类" align="center" prop="category"> 54 <el-table-column label="流程分类" align="center" prop="category">
55 - <template slot-scope="scope"> 55 + <template v-slot="scope">
56 <dict-tag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="scope.row.category" /> 56 <dict-tag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="scope.row.category" />
57 </template> 57 </template>
58 </el-table-column> 58 </el-table-column>
59 <el-table-column label="当前审批任务" align="center" prop="tasks"> 59 <el-table-column label="当前审批任务" align="center" prop="tasks">
60 - <template slot-scope="scope"> 60 + <template v-slot="scope">
61 <el-button v-for="task in scope.row.tasks" :key="task.id" type="text" @click="handleFormDetail(task.id)"> 61 <el-button v-for="task in scope.row.tasks" :key="task.id" type="text" @click="handleFormDetail(task.id)">
62 <span>{{ task.name }}</span> 62 <span>{{ task.name }}</span>
63 </el-button> 63 </el-button>
64 </template> 64 </template>
65 </el-table-column> 65 </el-table-column>
66 <el-table-column label="状态" align="center" prop="status"> 66 <el-table-column label="状态" align="center" prop="status">
67 - <template slot-scope="scope"> 67 + <template v-slot="scope">
68 <dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS" :value="scope.row.status" /> 68 <dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS" :value="scope.row.status" />
69 </template> 69 </template>
70 </el-table-column> 70 </el-table-column>
71 <el-table-column label="结果" align="center" prop="result"> 71 <el-table-column label="结果" align="center" prop="result">
72 - <template slot-scope="scope"> 72 + <template v-slot="scope">
73 <dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT" :value="scope.row.result"/> 73 <dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT" :value="scope.row.result"/>
74 </template> 74 </template>
75 </el-table-column> 75 </el-table-column>
76 <el-table-column label="提交时间" align="center" prop="createTime" width="180"> 76 <el-table-column label="提交时间" align="center" prop="createTime" width="180">
77 - <template slot-scope="scope"> 77 + <template v-slot="scope">
78 <span>{{ parseTime(scope.row.createTime) }}</span> 78 <span>{{ parseTime(scope.row.createTime) }}</span>
79 </template> 79 </template>
80 </el-table-column> 80 </el-table-column>
81 <el-table-column label="结束时间" align="center" prop="createTime" width="180"> 81 <el-table-column label="结束时间" align="center" prop="createTime" width="180">
82 - <template slot-scope="scope"> 82 + <template v-slot="scope">
83 <span>{{ parseTime(scope.row.endTime) }}</span> 83 <span>{{ parseTime(scope.row.endTime) }}</span>
84 </template> 84 </template>
85 </el-table-column> 85 </el-table-column>
86 <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> 86 <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
87 - <template slot-scope="scope"> 87 + <template v-slot="scope">
88 <el-button type="text" size="small" icon="el-icon-delete" v-if="scope.row.result === 1" 88 <el-button type="text" size="small" icon="el-icon-delete" v-if="scope.row.result === 1"
89 v-hasPermi="['bpm:process-instance:cancel']" @click="handleCancel(scope.row)">取消</el-button> 89 v-hasPermi="['bpm:process-instance:cancel']" @click="handleCancel(scope.row)">取消</el-button>
90 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleDetail(scope.row)" 90 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleDetail(scope.row)"
@@ -164,7 +164,7 @@ export default { @@ -164,7 +164,7 @@ export default {
164 type: 'warning', 164 type: 'warning',
165 confirmButtonText: "确定", 165 confirmButtonText: "确定",
166 cancelButtonText: "取消", 166 cancelButtonText: "取消",
167 - inputPattern: /^[\s\S]*.*[^\s][\s\S]*$/, // 判断非空,且非空格 167 + inputPattern: /^[\s\S]*.*\S[\s\S]*$/, // 判断非空,且非空格
168 inputErrorMessage: "取消原因不能为空", 168 inputErrorMessage: "取消原因不能为空",
169 }).then(({ value }) => { 169 }).then(({ value }) => {
170 return cancelProcessInstance(id, value); 170 return cancelProcessInstance(id, value);
yudao-ui-admin/src/views/bpm/task/done.vue
@@ -24,28 +24,28 @@ @@ -24,28 +24,28 @@
24 <el-table-column label="所属流程" align="center" prop="processInstance.name" width="200" /> 24 <el-table-column label="所属流程" align="center" prop="processInstance.name" width="200" />
25 <el-table-column label="流程发起人" align="center" prop="processInstance.startUserNickname" width="120" /> 25 <el-table-column label="流程发起人" align="center" prop="processInstance.startUserNickname" width="120" />
26 <el-table-column label="结果" align="center" prop="result"> 26 <el-table-column label="结果" align="center" prop="result">
27 - <template slot-scope="scope"> 27 + <template v-slot="scope">
28 <dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT" :value="scope.row.result"/> 28 <dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT" :value="scope.row.result"/>
29 </template> 29 </template>
30 </el-table-column> 30 </el-table-column>
31 <el-table-column label="审批意见" align="center" prop="reason" width="200" /> 31 <el-table-column label="审批意见" align="center" prop="reason" width="200" />
32 <el-table-column label="创建时间" align="center" prop="createTime" width="180"> 32 <el-table-column label="创建时间" align="center" prop="createTime" width="180">
33 - <template slot-scope="scope"> 33 + <template v-slot="scope">
34 <span>{{ parseTime(scope.row.createTime) }}</span> 34 <span>{{ parseTime(scope.row.createTime) }}</span>
35 </template> 35 </template>
36 </el-table-column> 36 </el-table-column>
37 <el-table-column label="审批时间" align="center" prop="endTime" width="180"> 37 <el-table-column label="审批时间" align="center" prop="endTime" width="180">
38 - <template slot-scope="scope"> 38 + <template v-slot="scope">
39 <span>{{ parseTime(scope.row.endTime) }}</span> 39 <span>{{ parseTime(scope.row.endTime) }}</span>
40 </template> 40 </template>
41 </el-table-column> 41 </el-table-column>
42 <el-table-column label="耗时" align="center" prop="durationInMillis" width="180"> 42 <el-table-column label="耗时" align="center" prop="durationInMillis" width="180">
43 - <template slot-scope="scope"> 43 + <template v-slot="scope">
44 <span>{{ getDateStar(scope.row.durationInMillis) }}</span> 44 <span>{{ getDateStar(scope.row.durationInMillis) }}</span>
45 </template> 45 </template>
46 </el-table-column> 46 </el-table-column>
47 <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width"> 47 <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
48 - <template slot-scope="scope"> 48 + <template v-slot="scope">
49 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleAudit(scope.row)" 49 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleAudit(scope.row)"
50 v-hasPermi="['bpm:task:query']">详情</el-button> 50 v-hasPermi="['bpm:task:query']">详情</el-button>
51 </template> 51 </template>
yudao-ui-admin/src/views/bpm/task/todo.vue
@@ -24,18 +24,18 @@ @@ -24,18 +24,18 @@
24 <el-table-column label="所属流程" align="center" prop="processInstance.name" /> 24 <el-table-column label="所属流程" align="center" prop="processInstance.name" />
25 <el-table-column label="流程发起人" align="center" prop="processInstance.startUserNickname" /> 25 <el-table-column label="流程发起人" align="center" prop="processInstance.startUserNickname" />
26 <el-table-column label="创建时间" align="center" prop="createTime" width="180"> 26 <el-table-column label="创建时间" align="center" prop="createTime" width="180">
27 - <template slot-scope="scope"> 27 + <template v-slot="scope">
28 <span>{{ parseTime(scope.row.createTime) }}</span> 28 <span>{{ parseTime(scope.row.createTime) }}</span>
29 </template> 29 </template>
30 </el-table-column> 30 </el-table-column>
31 <el-table-column label="状态" align="center" prop="version" width="80"> 31 <el-table-column label="状态" align="center" prop="version" width="80">
32 - <template slot-scope="scope"> 32 + <template v-slot="scope">
33 <el-tag type="success" v-if="scope.row.suspensionState === 1">激活</el-tag> 33 <el-tag type="success" v-if="scope.row.suspensionState === 1">激活</el-tag>
34 <el-tag type="warning" v-if="scope.row.suspensionState === 2">挂起</el-tag> 34 <el-tag type="warning" v-if="scope.row.suspensionState === 2">挂起</el-tag>
35 </template> 35 </template>
36 </el-table-column> 36 </el-table-column>
37 <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> 37 <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
38 - <template slot-scope="scope"> 38 + <template v-slot="scope">
39 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleAudit(scope.row)" 39 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleAudit(scope.row)"
40 v-hasPermi="['bpm:task:update']">审批</el-button> 40 v-hasPermi="['bpm:task:update']">审批</el-button>
41 </template> 41 </template>
@@ -50,7 +50,6 @@ @@ -50,7 +50,6 @@
50 50
51 <script> 51 <script>
52 import {getTodoTaskPage} from '@/api/bpm/task' 52 import {getTodoTaskPage} from '@/api/bpm/task'
53 -import {listSimpleUsers} from "@/api/system/user";  
54 53
55 export default { 54 export default {
56 name: "Todo", 55 name: "Todo",
yudao-ui-admin/src/views/bpm/taskAssignRule/taskAssignRuleDialog.vue
@@ -6,19 +6,19 @@ @@ -6,19 +6,19 @@
6 <el-table-column label="任务名" align="center" prop="taskDefinitionName" width="120" fixed /> 6 <el-table-column label="任务名" align="center" prop="taskDefinitionName" width="120" fixed />
7 <el-table-column label="任务标识" align="center" prop="taskDefinitionKey" width="120" show-tooltip-when-overflow /> 7 <el-table-column label="任务标识" align="center" prop="taskDefinitionKey" width="120" show-tooltip-when-overflow />
8 <el-table-column label="规则类型" align="center" prop="type" width="120"> 8 <el-table-column label="规则类型" align="center" prop="type" width="120">
9 - <template slot-scope="scope"> 9 + <template v-slot="scope">
10 <dict-tag :type="DICT_TYPE.BPM_TASK_ASSIGN_RULE_TYPE" :value="scope.row.type" /> 10 <dict-tag :type="DICT_TYPE.BPM_TASK_ASSIGN_RULE_TYPE" :value="scope.row.type" />
11 </template> 11 </template>
12 </el-table-column> 12 </el-table-column>
13 <el-table-column label="规则范围" align="center" prop="options" width="440px"> 13 <el-table-column label="规则范围" align="center" prop="options" width="440px">
14 - <template slot-scope="scope"> 14 + <template v-slot="scope">
15 <el-tag size="medium" v-if="scope.row.options" :key="option" v-for="option in scope.row.options"> 15 <el-tag size="medium" v-if="scope.row.options" :key="option" v-for="option in scope.row.options">
16 {{ getAssignRuleOptionName(scope.row.type, option) }} 16 {{ getAssignRuleOptionName(scope.row.type, option) }}
17 </el-tag> 17 </el-tag>
18 </template> 18 </template>
19 </el-table-column> 19 </el-table-column>
20 <el-table-column v-if="modelId" label="操作" align="center" width="80" fixed="right"> 20 <el-table-column v-if="modelId" label="操作" align="center" width="80" fixed="right">
21 - <template slot-scope="scope"> 21 + <template v-slot="scope">
22 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdateTaskAssignRule(scope.row)" 22 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdateTaskAssignRule(scope.row)"
23 v-hasPermi="['bpm:task-assign-rule:update']">修改</el-button> 23 v-hasPermi="['bpm:task-assign-rule:update']">修改</el-button>
24 </template> 24 </template>
yudao-ui-admin/src/views/dashboard/PanelGroup.vue
@@ -143,8 +143,7 @@ export default { @@ -143,8 +143,7 @@ export default {
143 .card-panel-description { 143 .card-panel-description {
144 float: right; 144 float: right;
145 font-weight: bold; 145 font-weight: bold;
146 - margin: 26px;  
147 - margin-left: 0px; 146 + margin: 26px 26px 26px 0;
148 147
149 .card-panel-text { 148 .card-panel-text {
150 line-height: 18px; 149 line-height: 18px;
yudao-ui-admin/src/views/index_old.vue deleted
1 -<template>  
2 - <div class="app-container home">  
3 - <el-row :gutter="20">  
4 - <el-col :sm="24" :lg="24">  
5 - <blockquote class="text-warning" style="font-size: 14px">  
6 - 领取阿里云通用云产品1888优惠券  
7 - <br />  
8 - <el-link  
9 - href="https://www.aliyun.com/minisite/goods?userCode=brki8iof"  
10 - type="primary"  
11 - target="_blank"  
12 - >https://www.aliyun.com/minisite/goods?userCode=brki8iof</el-link  
13 - >  
14 - <br />  
15 - 领取腾讯云通用云产品2860优惠券  
16 - <br />  
17 - <el-link  
18 - href="https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console"  
19 - type="primary"  
20 - target="_blank"  
21 - >https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console</el-link  
22 - >  
23 - <br />  
24 - 阿里云服务器折扣区  
25 - <el-link href="http://aly.ruoyi.vip" type="primary" target="_blank"  
26 - >>☛☛点我进入☚☚</el-link  
27 - >  
28 - &nbsp;&nbsp;&nbsp; 腾讯云服务器秒杀区  
29 - <el-link href="http://txy.ruoyi.vip" type="primary" target="_blank"  
30 - >>☛☛点我进入☚☚</el-link  
31 - ><br />  
32 - <h4 class="text-danger">  
33 - 云产品通用红包,可叠加官网常规优惠使用。(仅限新用户)  
34 - </h4>  
35 - </blockquote>  
36 -  
37 - <hr />  
38 - </el-col>  
39 - </el-row>  
40 - <el-row :gutter="20">  
41 - <el-col :sm="24" :lg="12" style="padding-left: 20px">  
42 - <h2>芋道后台管理框架</h2>  
43 - <p>  
44 - 一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了芋道管理系统。,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。  
45 - </p>  
46 - <p>  
47 - <b>当前版本:</b> <span>v{{ version }}</span>  
48 - </p>  
49 - <p>  
50 - <el-tag type="danger">&yen;免费开源</el-tag>  
51 - </p>  
52 - <p>  
53 - <el-button  
54 - type="primary"  
55 - size="mini"  
56 - icon="el-icon-cloudy"  
57 - plain  
58 - @click="goTarget('https://gitee.com/zhijiantianya/ruoyi-vue-pro')"  
59 - >访问码云</el-button  
60 - >  
61 - <el-button  
62 - size="mini"  
63 - icon="el-icon-s-home"  
64 - plain  
65 - @click="goTarget('http://ruoyi.vip')"  
66 - >访问主页</el-button  
67 - >  
68 - </p>  
69 - </el-col>  
70 -  
71 - <el-col :sm="24" :lg="12" style="padding-left: 50px">  
72 - <el-row>  
73 - <el-col :span="12">  
74 - <h2>技术选型</h2>  
75 - </el-col>  
76 - </el-row>  
77 - <el-row>  
78 - <el-col :span="6">  
79 - <h4>后端技术</h4>  
80 - <ul>  
81 - <li>SpringBoot</li>  
82 - <li>Spring Security</li>  
83 - <li>JWT</li>  
84 - <li>MyBatis</li>  
85 - <li>Druid</li>  
86 - <li>Fastjson</li>  
87 - <li>...</li>  
88 - </ul>  
89 - </el-col>  
90 - <el-col :span="6">  
91 - <h4>前端技术</h4>  
92 - <ul>  
93 - <li>Vue</li>  
94 - <li>Vuex</li>  
95 - <li>Element-ui</li>  
96 - <li>Axios</li>  
97 - <li>Sass</li>  
98 - <li>Quill</li>  
99 - <li>...</li>  
100 - </ul>  
101 - </el-col>  
102 - </el-row>  
103 - </el-col>  
104 - </el-row>  
105 - <el-divider />  
106 - <el-row :gutter="20">  
107 - <el-col :xs="24" :sm="24" :md="12" :lg="8">  
108 - <el-card class="update-log">  
109 - <div slot="header" class="clearfix">  
110 - <span>联系信息</span>  
111 - </div>  
112 - <div class="body">  
113 - <p>  
114 - <i class="el-icon-s-promotion"></i> 官网:<el-link  
115 - href="http://www.ruoyi.vip"  
116 - target="_blank"  
117 - >http://www.ruoyi.vip</el-link  
118 - >  
119 - </p>  
120 - <p>  
121 - <i class="el-icon-user-solid"></i> QQ群:<s>满937441</s>  
122 - <s>满887144332</s> <s>满180251782</s>  
123 - <a href="https://jq.qq.com/?_wv=1027&k=4WWwqNxN" target="_blank"  
124 - > 104180207</a  
125 - >  
126 - </p>  
127 - <p>  
128 - <i class="el-icon-chat-dot-round"></i> 微信:<a  
129 - href="javascript:;"  
130 - >/ *芋道</a  
131 - >  
132 - </p>  
133 - <p>  
134 - <i class="el-icon-money"></i> 支付宝:<a  
135 - href="javascript:;"  
136 - class="支付宝信息"  
137 - >/ *芋道</a  
138 - >  
139 - </p>  
140 - </div>  
141 - </el-card>  
142 - </el-col>  
143 - <el-col :xs="24" :sm="24" :md="12" :lg="8">  
144 - <el-card class="update-log">  
145 - <div slot="header" class="clearfix">  
146 - <span>更新日志</span>  
147 - </div>  
148 - <el-collapse accordion>  
149 - <el-collapse-item title="v3.3.0 - 2020-12-14">  
150 - <ol>  
151 - <li>新增缓存监控功能</li>  
152 - <li>支持主题风格配置</li>  
153 - <li>修复多级菜单之间切换无法缓存的问题</li>  
154 - <li>多级菜单自动配置组件</li>  
155 - <li>代码生成预览支持高亮显示</li>  
156 - <li>支持Get请求映射Params参数</li>  
157 - <li>删除用户和角色解绑关联</li>  
158 - <li>去除用户手机邮箱部门必填验证</li>  
159 - <li>Excel支持注解align对齐方式</li>  
160 - <li>Excel支持导入Boolean型数据</li>  
161 - <li>优化头像样式,鼠标移入悬停遮罩</li>  
162 - <li>代码生成预览提供滚动机制</li>  
163 - <li>代码生成删除多余的数字float类型</li>  
164 - <li>修正转换字符串的目标字符集属性</li>  
165 - <li>回显数据字典防止空值报错</li>  
166 - <li>日志记录增加过滤多文件场景</li>  
167 - <li>修改缓存Set方法可能导致嵌套的问题</li>  
168 - <li>移除前端一些多余的依赖</li>  
169 - <li>防止安全扫描YUI出现的风险提示</li>  
170 - <li>修改node-sass为dart-sass</li>  
171 - <li>升级SpringBoot到最新版本2.1.18</li>  
172 - <li>升级poi到最新版本4.1.2</li>  
173 - <li>升级oshi到最新版本v5.3.6</li>  
174 - <li>升级bitwalker到最新版本1.21</li>  
175 - <li>升级axios到最新版本0.21.0</li>  
176 - <li>升级element-ui到最新版本2.14.1</li>  
177 - <li>升级vue到最新版本2.6.12</li>  
178 - <li>升级vuex到最新版本3.6.0</li>  
179 - <li>升级vue-cli到版本4.5.9</li>  
180 - <li>升级vue-router到最新版本3.4.9</li>  
181 - <li>升级vue-cli到最新版本4.4.6</li>  
182 - <li>升级vue-cropper到最新版本0.5.5</li>  
183 - <li>升级clipboard到最新版本2.0.6</li>  
184 - <li>升级core-js到最新版本3.8.1</li>  
185 - <li>升级echarts到最新版本4.9.0</li>  
186 - <li>升级file-saver到最新版本2.0.4</li>  
187 - <li>升级fuse.js到最新版本6.4.3</li>  
188 - <li>升级js-beautify到最新版本1.13.0</li>  
189 - <li>升级js-cookie到最新版本2.2.1</li>  
190 - <li>升级path-to-regexp到最新版本6.2.0</li>  
191 - <li>升级quill到最新版本1.3.7</li>  
192 - <li>升级screenfull到最新版本5.0.2</li>  
193 - <li>升级sortablejs到最新版本1.10.2</li>  
194 - <li>升级vuedraggable到最新版本2.24.3</li>  
195 - <li>升级chalk到最新版本4.1.0</li>  
196 - <li>升级eslint到最新版本7.15.0</li>  
197 - <li>升级eslint-plugin-vue到最新版本7.2.0</li>  
198 - <li>升级lint-staged到最新版本10.5.3</li>  
199 - <li>升级runjs到最新版本4.4.2</li>  
200 - <li>升级sass-loader到最新版本10.1.0</li>  
201 - <li>升级script-ext-html-webpack-plugin到最新版本2.1.5</li>  
202 - <li>升级svg-sprite-loader到最新版本5.1.1</li>  
203 - <li>升级vue-template-compiler到最新版本2.6.12</li>  
204 - <li>其他细节优化</li>  
205 - </ol>  
206 - </el-collapse-item>  
207 - <el-collapse-item title="v3.2.1 - 2020-11-18">  
208 - <ol>  
209 - <li>阻止任意文件下载漏洞</li>  
210 - <li>代码生成支持上传控件</li>  
211 - <li>新增图片上传组件</li>  
212 - <li>调整默认首页</li>  
213 - <li>升级druid到最新版本v1.2.2</li>  
214 - <li>mapperLocations配置支持分隔符</li>  
215 - <li>权限信息调整</li>  
216 - <li>调整sql默认时间</li>  
217 - <li>解决代码生成没有bit类型的问题</li>  
218 - <li>升级pagehelper到最新版1.3.0</li>  
219 - </ol>  
220 - </el-collapse-item>  
221 - <el-collapse-item title="v3.2.0 - 2020-10-10">  
222 - <ol>  
223 - <li>升级springboot版本到2.1.17 提升安全性</li>  
224 - <li>升级oshi到最新版本v5.2.5</li>  
225 - <li>升级druid到最新版本v1.2.1</li>  
226 - <li>升级jjwt到版本0.9.1</li>  
227 - <li>升级fastjson到最新版1.2.74</li>  
228 - <li>修改sass为node-sass,避免el-icon图标乱码</li>  
229 - <li>代码生成支持同步数据库</li>  
230 - <li>代码生成支持富文本控件</li>  
231 - <li>代码生成页面时不忽略remark属性</li>  
232 - <li>代码生成添加select必填选项</li>  
233 - <li>Excel导出类型NUMERIC支持精度浮点类型</li>  
234 - <li>Excel导出targetAttr优化获取值,防止get方法不规范</li>  
235 - <li>Excel注解支持自动统计数据总和</li>  
236 - <li>Excel注解支持设置BigDecimal精度&舍入规则</li>  
237 - <li>菜单&数据权限新增(展开/折叠 全选/全不选 父子联动)</li>  
238 - <li>允许用户分配到部门父节点</li>  
239 - <li>菜单新增是否缓存keep-alive</li>  
240 - <li>表格操作列间距调整</li>  
241 - <li>限制系统内置参数不允许删除</li>  
242 - <li>富文本组件优化,支持自定义高度&图片冲突问题</li>  
243 - <li>富文本工具栏样式对齐</li>  
244 - <li>导入excel整形值校验优化</li>  
245 - <li>修复页签关闭所有时固定标签路由不刷新问题</li>  
246 - <li>表单构建布局型组件新增按钮</li>  
247 - <li>左侧菜单文字过长显示省略号</li>  
248 - <li>修正根节点为子部门时,树状结构显示问题</li>  
249 - <li>修正调用目标字符串最大长度</li>  
250 - <li>修正菜单提示信息错误</li>  
251 - <li>修正定时任务执行一次权限标识</li>  
252 - <li>修正数据库字符串类型nvarchar</li>  
253 - <li>优化递归子节点</li>  
254 - <li>优化数据权限判断</li>  
255 - <li>其他细节优化</li>  
256 - </ol>  
257 - </el-collapse-item>  
258 -  
259 - <el-collapse-item title="v3.1.0 - 2020-08-13">  
260 - <ol>  
261 - <li>表格工具栏右侧添加刷新&显隐查询组件</li>  
262 - <li>后端支持CORS跨域请求</li>  
263 - <li>代码生成支持选择上级菜单</li>  
264 - <li>代码生成支持自定义路径</li>  
265 - <li>代码生成支持复选框</li>  
266 - <li>Excel导出导入支持dictType字典类型</li>  
267 - <li>Excel支持分割字符串组内容</li>  
268 - <li>验证码类型支持(数组计算、字符验证)</li>  
269 - <li>升级vue-cli版本到4.4.4</li>  
270 - <li>修改 node-sass 为 dart-sass</li>  
271 - <li>表单类型为Integer/Long设置整形默认值</li>  
272 - <li>代码生成器默认mapper路径与默认mapperScan路径不一致</li>  
273 - <li>优化防重复提交拦截器</li>  
274 - <li>优化上级菜单不能选择自己</li>  
275 - <li>修复角色的权限分配后,未实时生效问题</li>  
276 - <li>修复在线用户日志记录类型</li>  
277 - <li>修复富文本空格和缩进保存后不生效问题</li>  
278 - <li>修复在线用户判断逻辑</li>  
279 - <li>唯一限制条件只返回单条数据</li>  
280 - <li>添加获取当前的环境配置方法</li>  
281 - <li>超时登录后页面跳转到首页</li>  
282 - <li>全局异常状态汉化拦截处理</li>  
283 - <li>HTML过滤器改为将html转义</li>  
284 - <li>检查字符支持小数点&降级改成异常提醒</li>  
285 - <li>其他细节优化</li>  
286 - </ol>  
287 - </el-collapse-item>  
288 -  
289 - <el-collapse-item title="v3.0.0 - 2020-07-20">  
290 - <ol>  
291 - <li>单应用调整为多模块项目</li>  
292 - <li>升级element-ui版本到2.13.2</li>  
293 - <li>删除babel,提高编译速度。</li>  
294 - <li>新增菜单默认主类目</li>  
295 - <li>编码文件名修改为uuid方式</li>  
296 - <li>定时任务cron表达式验证</li>  
297 - <li>角色权限修改时已有权限未自动勾选异常修复</li>  
298 - <li>防止切换权限用户后登录出现404</li>  
299 - <li>Excel支持sort导出排序</li>  
300 - <li>创建用户不允许选择超级管理员角色</li>  
301 - <li>修复代码生成导入表结构出现异常页面不提醒问题</li>  
302 - <li>修复代码生成点击多次表修改数据不变化的问题</li>  
303 - <li>修复头像上传成功二次打开无法改变裁剪框大小和位置问题</li>  
304 - <li>修复布局为small者mini用户表单显示错位问题</li>  
305 - <li>修复热部署导致的强换异常问题</li>  
306 - <li>修改用户管理复选框宽度,防止部分浏览器出现省略号</li>  
307 - <li>IpUtils工具,清除Xss特殊字符,防止Xff注入攻击</li>  
308 - <li>生成domain 如果是浮点型 统一用BigDecimal</li>  
309 - <li>定时任务调整label-width,防止部署出现错位</li>  
310 - <li>调整表头固定列默认样式</li>  
311 - <li>代码生成模板调整,字段为String并且必填则加空串条件</li>  
312 - <li>代码生成字典Integer/Long使用parseInt</li>  
313 - <li>  
314 - 修复dict_sort不可update为0的问题&查询返回增加dict_sort升序排序  
315 - </li>  
316 - <li>修正岗位导出权限注解</li>  
317 - <li>禁止加密密文返回前端</li>  
318 - <li>修复代码生成页面中的查询条件创建时间未生效的问题</li>  
319 - <li>修复首页搜索菜单外链无法点击跳转问题</li>  
320 - <li>修复菜单管理选择图标,backspace删除时不过滤数据</li>  
321 - <li>用户管理部门分支节点不可检查&显示计数</li>  
322 - <li>数据范围过滤属性调整</li>  
323 - <li>其他细节优化</li>  
324 - </ol>  
325 - </el-collapse-item>  
326 -  
327 - <el-collapse-item title="v2.3.0 - 2020-06-01">  
328 - <ol>  
329 - <li>升级fastjson到最新版1.2.70 修复高危安全漏洞</li>  
330 - <li>dev启动默认打开浏览器</li>  
331 - <li>vue-cli使用默认source-map</li>  
332 - <li>slidebar eslint报错优化</li>  
333 - <li>当tags-view滚动关闭右键菜单</li>  
334 - <li>字典管理添加缓存读取</li>  
335 - <li>参数管理支持缓存操作</li>  
336 - <li>支持一级菜单(和主页同级)在main区域显示</li>  
337 - <li>限制外链地址必须以http(s)开头</li>  
338 - <li>tagview & sidebar 主题颜色与element ui(全局)同步</li>  
339 - <li>修改数据源类型优先级,先根据方法,再根据类</li>  
340 - <li>支持是否需要设置token属性,自定义返回码消息。</li>  
341 - <li>swagger请求前缀加入配置。</li>  
342 - <li>登录地点设置内容过长则隐藏显示</li>  
343 - <li>修复定时任务执行一次按钮后不提示消息问题</li>  
344 - <li>修改上级部门(选择项排除本身和下级)</li>  
345 - <li>通用http发送方法增加参数 contentType 编码类型</li>  
346 - <li>更换IP地址查询接口</li>  
347 - <li>修复页签变量undefined</li>  
348 - <li>添加校验部门包含未停用的子部门</li>  
349 - <li>修改定时任务详情下次执行时间日期显示错误</li>  
350 - <li>角色管理查询设置默认排序字段</li>  
351 - <li>swagger添加enable参数控制是否启用</li>  
352 - <li>只对json类型请求构建可重复读取inputStream的request</li>  
353 - <li>修改代码生成字典字段int类型没有自动选中问题</li>  
354 - <li>vuex用户名取值修正</li>  
355 - <li>表格树模板去掉多余的)</li>  
356 - <li>代码生成序号修正</li>  
357 - <li>全屏情况下不调整上外边距</li>  
358 - <li>代码生成Date字段添加默认格式</li>  
359 - <li>用户管理角色选择权限控制</li>  
360 - <li>修复路由懒加载报错问题</li>  
361 - <li>模板sql.vm添加菜单状态</li>  
362 - <li>设置用户名称不能修改</li>  
363 - <li>dialog添加append-to-body属性,防止ie遮罩</li>  
364 - <li>菜单区分状态和显示隐藏功能</li>  
365 - <li>升级fastjson到最新版1.2.68 修复安全加固</li>  
366 - <li>修复代码生成如果选择字典类型缺失逗号问题</li>  
367 - <li>登录请求params更换为data,防止暴露url</li>  
368 - <li>日志返回时间格式处理</li>  
369 - <li>添加handle控制允许拖动的元素</li>  
370 - <li>布局设置点击扩大范围</li>  
371 - <li>代码生成列属性排序查询</li>  
372 - <li>代码生成列支持拖动排序</li>  
373 - <li>修复时间格式不支持ios问题</li>  
374 - <li>表单构建添加父级class,防止冲突</li>  
375 - <li>定时任务并发属性修正</li>  
376 - <li>角色禁用&菜单隐藏不查询权限</li>  
377 - <li>其他细节优化</li>  
378 - </ol>  
379 - </el-collapse-item>  
380 -  
381 - <el-collapse-item title="v2.2.0 - 2020-03-18">  
382 - <ol>  
383 - <li>系统监控新增定时任务功能</li>  
384 - <li>添加一个打包Web工程bat</li>  
385 - <li>修复页签鼠标滚轮按下的时候,可以关闭不可关闭的tag</li>  
386 - <li>修复点击退出登录有时会无提示问题</li>  
387 - <li>修复防重复提交注解无效问题</li>  
388 - <li>修复通知公告批量删除异常问题</li>  
389 - <li>添加菜单时路由地址必填限制</li>  
390 - <li>代码生成字段描述可编辑</li>  
391 - <li>修复用户修改个人信息导致缓存不过期问题</li>  
392 - <li>个人信息创建时间获取正确属性值</li>  
393 - <li>操作日志详细显示正确类型</li>  
394 - <li>导入表单击行数据时选中对应的复选框</li>  
395 - <li>批量替换表前缀逻辑调整</li>  
396 - <li>固定重定向路径表达式</li>  
397 - <li>升级element-ui版本到2.13.0</li>  
398 - <li>操作日志排序调整</li>  
399 - <li>修复charts切换侧边栏或者缩放窗口显示bug</li>  
400 - <li>其他细节优化</li>  
401 - </ol>  
402 - </el-collapse-item>  
403 -  
404 - <el-collapse-item title="v2.1.0 - 2020-02-24">  
405 - <ol>  
406 - <li>新增表单构建</li>  
407 - <li>代码生成支持树表结构</li>  
408 - <li>新增用户导入</li>  
409 - <li>修复动态加载路由页面刷新问题</li>  
410 - <li>修复地址开关无效问题</li>  
411 - <li>汉化错误提示页面</li>  
412 - <li>代码生成已知问题修改</li>  
413 - <li>修复多数据源下配置关闭出现异常处理</li>  
414 - <li>添加HTML过滤器,用于去除XSS漏洞隐患</li>  
415 - <li>修复上传头像控制台出现异常</li>  
416 - <li>修改用户管理分页不正确的问题</li>  
417 - <li>修复验证码记录提示错误</li>  
418 - <li>修复request.js缺少Message引用</li>  
419 - <li>修复表格时间为空出现的异常</li>  
420 - <li>添加Jackson日期反序列化时区配置</li>  
421 - <li>调整根据用户权限加载菜单数据树形结构</li>  
422 - <li>调整成功登录不恢复按钮,防止多次点击</li>  
423 - <li>修改用户个人资料同步缓存信息</li>  
424 - <li>修复页面同时出现el-upload和Editor不显示处理</li>  
425 - <li>修复在角色管理页修改菜单权限偶尔未选中问题</li>  
426 - <li>配置文件新增redis密码属性</li>  
427 - <li>设置mybatis全局的配置文件</li>  
428 - <li>其他细节优化</li>  
429 - </ol>  
430 - </el-collapse-item>  
431 -  
432 - <el-collapse-item title="v2.0.0 - 2019-12-02">  
433 - <ol>  
434 - <li>新增代码生成</li>  
435 - <li>新增@RepeatSubmit注解,防止重复提交</li>  
436 - <li>新增菜单主目录添加/删除操作</li>  
437 - <li>日志记录过滤特殊对象,防止转换异常</li>  
438 - <li>修改代码生成路由脚本错误</li>  
439 - <li>用户上传头像实时同步缓存,无需重新登录</li>  
440 - <li>调整切换页签后不重新加载数据</li>  
441 - <li>添加jsencrypt实现参数的前端加密</li>  
442 - <li>系统退出删除用户缓存记录</li>  
443 - <li>其他细节优化</li>  
444 - </ol>  
445 - </el-collapse-item>  
446 - <el-collapse-item title="v1.1.0 - 2019-11-11">  
447 - <ol>  
448 - <li>新增在线用户管理</li>  
449 - <li>新增按钮组功能实现(批量删除、导出、清空)</li>  
450 - <li>新增查询条件重置按钮</li>  
451 - <li>新增Swagger全局Token配置</li>  
452 - <li>新增后端参数校验</li>  
453 - <li>修复字典管理页面的日期查询异常</li>  
454 - <li>修改时间函数命名防止冲突</li>  
455 - <li>去除菜单上级校验,默认为顶级</li>  
456 - <li>修复用户密码无法修改问题</li>  
457 - <li>修复菜单类型为按钮时不显示权限标识</li>  
458 - <li>其他细节优化</li>  
459 - </ol>  
460 - </el-collapse-item>  
461 - <el-collapse-item title="v1.0.0 - 2019-10-08">  
462 - <ol>  
463 - <li>芋道前后端分离系统正式发布</li>  
464 - </ol>  
465 - </el-collapse-item>  
466 - </el-collapse>  
467 - </el-card>  
468 - </el-col>  
469 - <el-col :xs="24" :sm="24" :md="12" :lg="8">  
470 - <el-card class="update-log">  
471 - <div slot="header" class="clearfix">  
472 - <span>捐赠支持</span>  
473 - </div>  
474 - <div class="body">  
475 - <img  
476 - src="https://oscimg.oschina.net/oscnet/up-d6695f82666e5018f715c41cb7ee60d3b73.png"  
477 - alt="donate"  
478 - width="100%"  
479 - />  
480 - <span style="display: inline-block; height: 30px; line-height: 30px"  
481 - >你可以请作者喝杯咖啡表示鼓励</span  
482 - >  
483 - </div>  
484 - </el-card>  
485 - </el-col>  
486 - </el-row>  
487 - </div>  
488 -</template>  
489 -  
490 -<script>  
491 -export default {  
492 - name: "Index",  
493 - data() {  
494 - return {  
495 - // 版本号  
496 - version: "3.3.0",  
497 - };  
498 - },  
499 - methods: {  
500 - goTarget(href) {  
501 - window.open(href, "_blank");  
502 - },  
503 - },  
504 -};  
505 -</script>  
506 -  
507 -<style scoped lang="scss">  
508 -.home {  
509 - blockquote {  
510 - padding: 10px 20px;  
511 - margin: 0 0 20px;  
512 - font-size: 17.5px;  
513 - border-left: 5px solid #eee;  
514 - }  
515 - hr {  
516 - margin-top: 20px;  
517 - margin-bottom: 20px;  
518 - border: 0;  
519 - border-top: 1px solid #eee;  
520 - }  
521 - .col-item {  
522 - margin-bottom: 20px;  
523 - }  
524 -  
525 - ul {  
526 - padding: 0;  
527 - margin: 0;  
528 - }  
529 -  
530 - font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;  
531 - font-size: 13px;  
532 - color: #676a6c;  
533 - overflow-x: hidden;  
534 -  
535 - ul {  
536 - list-style-type: none;  
537 - }  
538 -  
539 - h4 {  
540 - margin-top: 0px;  
541 - }  
542 -  
543 - h2 {  
544 - margin-top: 10px;  
545 - font-size: 26px;  
546 - font-weight: 100;  
547 - }  
548 -  
549 - p {  
550 - margin-top: 10px;  
551 -  
552 - b {  
553 - font-weight: 700;  
554 - }  
555 - }  
556 -  
557 - .update-log {  
558 - ol {  
559 - display: block;  
560 - list-style-type: decimal;  
561 - margin-block-start: 1em;  
562 - margin-block-end: 1em;  
563 - margin-inline-start: 0;  
564 - margin-inline-end: 0;  
565 - padding-inline-start: 40px;  
566 - }  
567 - }  
568 -}  
569 -</style>  
570 -  
yudao-ui-admin/src/views/infra/apiAccessLog/index.vue
@@ -48,7 +48,7 @@ @@ -48,7 +48,7 @@
48 <el-table-column label="日志编号" align="center" prop="id" /> 48 <el-table-column label="日志编号" align="center" prop="id" />
49 <el-table-column label="用户编号" align="center" prop="userId" /> 49 <el-table-column label="用户编号" align="center" prop="userId" />
50 <el-table-column label="用户类型" align="center" prop="userType"> 50 <el-table-column label="用户类型" align="center" prop="userType">
51 - <template slot-scope="scope"> 51 + <template v-slot="scope">
52 <dict-tag :type="DICT_TYPE.USER_TYPE" :value="scope.row.userType"/> 52 <dict-tag :type="DICT_TYPE.USER_TYPE" :value="scope.row.userType"/>
53 </template> 53 </template>
54 </el-table-column>> 54 </el-table-column>>
@@ -56,22 +56,22 @@ @@ -56,22 +56,22 @@
56 <el-table-column label="请求方法名" align="center" prop="requestMethod" /> 56 <el-table-column label="请求方法名" align="center" prop="requestMethod" />
57 <el-table-column label="请求地址" align="center" prop="requestUrl" width="250" /> 57 <el-table-column label="请求地址" align="center" prop="requestUrl" width="250" />
58 <el-table-column label="请求时间" align="center" prop="beginTime" width="180"> 58 <el-table-column label="请求时间" align="center" prop="beginTime" width="180">
59 - <template slot-scope="scope"> 59 + <template v-slot="scope">
60 <span>{{ parseTime(scope.row.beginTime) }}</span> 60 <span>{{ parseTime(scope.row.beginTime) }}</span>
61 </template> 61 </template>
62 </el-table-column> 62 </el-table-column>
63 <el-table-column label="执行时长" align="center" prop="startTime"> 63 <el-table-column label="执行时长" align="center" prop="startTime">
64 - <template slot-scope="scope"> 64 + <template v-slot="scope">
65 <span>{{ scope.row.duration }} ms</span> 65 <span>{{ scope.row.duration }} ms</span>
66 </template> 66 </template>
67 </el-table-column> 67 </el-table-column>
68 <el-table-column label="操作结果" align="center" prop="status"> 68 <el-table-column label="操作结果" align="center" prop="status">
69 - <template slot-scope="scope"> 69 + <template v-slot="scope">
70 <span>{{ scope.row.resultCode === 0 ? '成功' : '失败(' + scope.row.resultMsg + ')' }}</span> 70 <span>{{ scope.row.resultCode === 0 ? '成功' : '失败(' + scope.row.resultMsg + ')' }}</span>
71 </template> 71 </template>
72 </el-table-column> 72 </el-table-column>
73 <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> 73 <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
74 - <template slot-scope="scope"> 74 + <template v-slot="scope">
75 <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row,scope.index)" 75 <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row,scope.index)"
76 v-hasPermi="['infra:api-access-log:query']">详细</el-button> 76 v-hasPermi="['infra:api-access-log:query']">详细</el-button>
77 </template> 77 </template>
yudao-ui-admin/src/views/infra/apiErrorLog/index.vue
@@ -48,7 +48,7 @@ @@ -48,7 +48,7 @@
48 <el-table-column label="日志编号" align="center" prop="id" /> 48 <el-table-column label="日志编号" align="center" prop="id" />
49 <el-table-column label="用户编号" align="center" prop="userId" /> 49 <el-table-column label="用户编号" align="center" prop="userId" />
50 <el-table-column label="用户类型" align="center" prop="userType"> 50 <el-table-column label="用户类型" align="center" prop="userType">
51 - <template slot-scope="scope"> 51 + <template v-slot="scope">
52 <dict-tag :type="DICT_TYPE.USER_TYPE" :value="scope.row.userType"/> 52 <dict-tag :type="DICT_TYPE.USER_TYPE" :value="scope.row.userType"/>
53 </template> 53 </template>
54 </el-table-column>> 54 </el-table-column>>
@@ -56,18 +56,18 @@ @@ -56,18 +56,18 @@
56 <el-table-column label="请求方法名" align="center" prop="requestMethod" /> 56 <el-table-column label="请求方法名" align="center" prop="requestMethod" />
57 <el-table-column label="请求地址" align="center" prop="requestUrl" width="250" /> 57 <el-table-column label="请求地址" align="center" prop="requestUrl" width="250" />
58 <el-table-column label="异常发生时间" align="center" prop="exceptionTime" width="180"> 58 <el-table-column label="异常发生时间" align="center" prop="exceptionTime" width="180">
59 - <template slot-scope="scope"> 59 + <template v-slot="scope">
60 <span>{{ parseTime(scope.row.exceptionTime) }}</span> 60 <span>{{ parseTime(scope.row.exceptionTime) }}</span>
61 </template> 61 </template>
62 </el-table-column> 62 </el-table-column>
63 <el-table-column label="异常名" align="center" prop="exceptionName" width="250" /> 63 <el-table-column label="异常名" align="center" prop="exceptionName" width="250" />
64 <el-table-column label="处理状态" align="center" prop="processStatus"> 64 <el-table-column label="处理状态" align="center" prop="processStatus">
65 - <template slot-scope="scope"> 65 + <template v-slot="scope">
66 <dict-tag :type="DICT_TYPE.INFRA_API_ERROR_LOG_PROCESS_STATUS" :value="scope.row.processStatus" /> 66 <dict-tag :type="DICT_TYPE.INFRA_API_ERROR_LOG_PROCESS_STATUS" :value="scope.row.processStatus" />
67 </template> 67 </template>
68 </el-table-column> 68 </el-table-column>
69 <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> 69 <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
70 - <template slot-scope="scope"> 70 + <template v-slot="scope">
71 <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row,scope.index)" 71 <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row,scope.index)"
72 v-hasPermi="['infra:api-access-log:query']">详细</el-button> 72 v-hasPermi="['infra:api-access-log:query']">详细</el-button>
73 <el-button type="text" size="mini" icon="el-icon-check" 73 <el-button type="text" size="mini" icon="el-icon-check"
yudao-ui-admin/src/views/infra/build/FormDrawer.vue
@@ -84,7 +84,7 @@ import { @@ -84,7 +84,7 @@ import {
84 } from '@/components/generator/html' 84 } from '@/components/generator/html'
85 import { makeUpJs } from '@/components/generator/js' 85 import { makeUpJs } from '@/components/generator/js'
86 import { makeUpCss } from '@/components/generator/css' 86 import { makeUpCss } from '@/components/generator/css'
87 -import { exportDefault, beautifierConf, titleCase } from '@/utils/index' 87 +import { exportDefault, beautifierConf } from '@/utils'
88 import ResourceDialog from './ResourceDialog' 88 import ResourceDialog from './ResourceDialog'
89 import loadMonaco from '@/utils/loadMonaco' 89 import loadMonaco from '@/utils/loadMonaco'
90 import loadBeautifier from '@/utils/loadBeautifier' 90 import loadBeautifier from '@/utils/loadBeautifier'
@@ -325,7 +325,7 @@ export default { @@ -325,7 +325,7 @@ export default {
325 } 325 }
326 } 326 }
327 @include action-bar; 327 @include action-bar;
328 -::v-deep .el-drawer__header { 328 +:deep(.el-drawer__header) {
329 display: none; 329 display: none;
330 } 330 }
331 </style> 331 </style>
yudao-ui-admin/src/views/infra/build/IconsDialog.vue
@@ -101,7 +101,7 @@ export default { @@ -101,7 +101,7 @@ export default {
101 } 101 }
102 } 102 }
103 .icon-dialog { 103 .icon-dialog {
104 - ::v-deep .el-dialog { 104 + :deep(.el-dialog) {
105 border-radius: 8px; 105 border-radius: 8px;
106 margin-bottom: 0; 106 margin-bottom: 0;
107 margin-top: 4vh !important; 107 margin-top: 4vh !important;
yudao-ui-admin/src/views/infra/build/JsonDrawer.vue
@@ -25,7 +25,7 @@ @@ -25,7 +25,7 @@
25 </template> 25 </template>
26 26
27 <script> 27 <script>
28 -import { beautifierConf } from '@/utils/index' 28 +import { beautifierConf } from '@/utils'
29 import ClipboardJS from 'clipboard' 29 import ClipboardJS from 'clipboard'
30 import { saveAs } from 'file-saver' 30 import { saveAs } from 'file-saver'
31 import loadMonaco from '@/utils/loadMonaco' 31 import loadMonaco from '@/utils/loadMonaco'
@@ -133,7 +133,7 @@ export default { @@ -133,7 +133,7 @@ export default {
133 <style lang="scss" scoped> 133 <style lang="scss" scoped>
134 @import '@/styles/mixin.scss'; 134 @import '@/styles/mixin.scss';
135 135
136 -::v-deep .el-drawer__header { 136 +:deep(.el-drawer__header) {
137 display: none; 137 display: none;
138 } 138 }
139 @include action-bar; 139 @include action-bar;
yudao-ui-admin/src/views/infra/build/ResourceDialog.vue
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 </div> 60 </div>
61 </template> 61 </template>
62 <script> 62 <script>
63 -import { deepClone } from '@/utils/index' 63 +import { deepClone } from '@/utils'
64 64
65 export default { 65 export default {
66 components: {}, 66 components: {},
yudao-ui-admin/src/views/infra/build/RightPanel.vue
@@ -651,10 +651,10 @@ @@ -651,10 +651,10 @@
651 <script> 651 <script>
652 import { isArray } from 'util' 652 import { isArray } from 'util'
653 import TreeNodeDialog from './TreeNodeDialog' 653 import TreeNodeDialog from './TreeNodeDialog'
654 -import { isNumberStr } from '@/utils/index' 654 +import { isNumberStr } from '@/utils'
655 import IconsDialog from './IconsDialog' 655 import IconsDialog from './IconsDialog'
656 import { 656 import {
657 - inputComponents, selectComponents, layoutComponents 657 + inputComponents, selectComponents
658 } from '@/components/generator/config' 658 } from '@/components/generator/config'
659 import { saveFormConf } from '@/utils/db' 659 import { saveFormConf } from '@/utils/db'
660 660
@@ -1021,7 +1021,7 @@ export default { @@ -1021,7 +1021,7 @@ export default {
1021 .el-date-editor { 1021 .el-date-editor {
1022 width: 227px; 1022 width: 227px;
1023 } 1023 }
1024 - ::v-deep .el-icon-time { 1024 + :deep(.el-icon-time) {
1025 display: none; 1025 display: none;
1026 } 1026 }
1027 } 1027 }
yudao-ui-admin/src/views/infra/build/TreeNodeDialog.vue
@@ -71,7 +71,7 @@ @@ -71,7 +71,7 @@
71 </div> 71 </div>
72 </template> 72 </template>
73 <script> 73 <script>
74 -import { isNumberStr } from '@/utils/index' 74 +import { isNumberStr } from '@/utils'
75 import { getTreeNodeId, saveTreeNodeId } from '@/utils/db' 75 import { getTreeNodeId, saveTreeNodeId } from '@/utils/db'
76 76
77 const id = getTreeNodeId() 77 const id = getTreeNodeId()
yudao-ui-admin/src/views/infra/build/index.vue
@@ -133,8 +133,8 @@ import { @@ -133,8 +133,8 @@ import {
133 inputComponents, selectComponents, layoutComponents, formConf 133 inputComponents, selectComponents, layoutComponents, formConf
134 } from '@/components/generator/config' 134 } from '@/components/generator/config'
135 import { 135 import {
136 - exportDefault, beautifierConf, isNumberStr, titleCase, deepClone  
137 -} from '@/utils/index' 136 + beautifierConf, titleCase, deepClone
  137 +} from '@/utils'
138 import { 138 import {
139 makeUpHtml, vueTemplate, vueScript, cssStyle 139 makeUpHtml, vueTemplate, vueScript, cssStyle
140 } from '@/components/generator/html' 140 } from '@/components/generator/html'
yudao-ui-admin/src/views/infra/codegen/editTable.vue
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 :show-overflow-tooltip="true" 13 :show-overflow-tooltip="true"
14 /> 14 />
15 <el-table-column label="字段描述" min-width="10%"> 15 <el-table-column label="字段描述" min-width="10%">
16 - <template slot-scope="scope"> 16 + <template v-slot="scope">
17 <el-input v-model="scope.row.columnComment"></el-input> 17 <el-input v-model="scope.row.columnComment"></el-input>
18 </template> 18 </template>
19 </el-table-column> 19 </el-table-column>
@@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
24 :show-overflow-tooltip="true" 24 :show-overflow-tooltip="true"
25 /> 25 />
26 <el-table-column label="Java类型" min-width="11%"> 26 <el-table-column label="Java类型" min-width="11%">
27 - <template slot-scope="scope"> 27 + <template v-slot="scope">
28 <el-select v-model="scope.row.javaType"> 28 <el-select v-model="scope.row.javaType">
29 <el-option label="Long" value="Long" /> 29 <el-option label="Long" value="Long" />
30 <el-option label="String" value="String" /> 30 <el-option label="String" value="String" />
@@ -37,32 +37,32 @@ @@ -37,32 +37,32 @@
37 </template> 37 </template>
38 </el-table-column> 38 </el-table-column>
39 <el-table-column label="java属性" min-width="10%"> 39 <el-table-column label="java属性" min-width="10%">
40 - <template slot-scope="scope"> 40 + <template v-slot="scope">
41 <el-input v-model="scope.row.javaField"></el-input> 41 <el-input v-model="scope.row.javaField"></el-input>
42 </template> 42 </template>
43 </el-table-column> 43 </el-table-column>
44 <el-table-column label="插入" min-width="4%"> 44 <el-table-column label="插入" min-width="4%">
45 - <template slot-scope="scope"> 45 + <template v-slot="scope">
46 <el-checkbox true-label="true" false-label="false" v-model="scope.row.createOperation"></el-checkbox> 46 <el-checkbox true-label="true" false-label="false" v-model="scope.row.createOperation"></el-checkbox>
47 </template> 47 </template>
48 </el-table-column> 48 </el-table-column>
49 <el-table-column label="编辑" min-width="4%"> 49 <el-table-column label="编辑" min-width="4%">
50 - <template slot-scope="scope"> 50 + <template v-slot="scope">
51 <el-checkbox true-label="true" false-label="false" v-model="scope.row.updateOperation"></el-checkbox> 51 <el-checkbox true-label="true" false-label="false" v-model="scope.row.updateOperation"></el-checkbox>
52 </template> 52 </template>
53 </el-table-column> 53 </el-table-column>
54 <el-table-column label="列表" min-width="4%"> 54 <el-table-column label="列表" min-width="4%">
55 - <template slot-scope="scope"> 55 + <template v-slot="scope">
56 <el-checkbox true-label="true" false-label="false" v-model="scope.row.listOperationResult"></el-checkbox> 56 <el-checkbox true-label="true" false-label="false" v-model="scope.row.listOperationResult"></el-checkbox>
57 </template> 57 </template>
58 </el-table-column> 58 </el-table-column>
59 <el-table-column label="查询" min-width="4%"> 59 <el-table-column label="查询" min-width="4%">
60 - <template slot-scope="scope"> 60 + <template v-slot="scope">
61 <el-checkbox true-label="true" false-label="false" v-model="scope.row.listOperation"></el-checkbox> 61 <el-checkbox true-label="true" false-label="false" v-model="scope.row.listOperation"></el-checkbox>
62 </template> 62 </template>
63 </el-table-column> 63 </el-table-column>
64 <el-table-column label="查询方式" min-width="10%"> 64 <el-table-column label="查询方式" min-width="10%">
65 - <template slot-scope="scope"> 65 + <template v-slot="scope">
66 <el-select v-model="scope.row.listOperationCondition"> 66 <el-select v-model="scope.row.listOperationCondition">
67 <el-option label="=" value="=" /> 67 <el-option label="=" value="=" />
68 <el-option label="!=" value="!=" /> 68 <el-option label="!=" value="!=" />
@@ -76,12 +76,12 @@ @@ -76,12 +76,12 @@
76 </template> 76 </template>
77 </el-table-column> 77 </el-table-column>
78 <el-table-column label="允许空" min-width="5%"> 78 <el-table-column label="允许空" min-width="5%">
79 - <template slot-scope="scope"> 79 + <template v-slot="scope">
80 <el-checkbox true-label="true" false-label="false" v-model="scope.row.nullable"></el-checkbox> 80 <el-checkbox true-label="true" false-label="false" v-model="scope.row.nullable"></el-checkbox>
81 </template> 81 </template>
82 </el-table-column> 82 </el-table-column>
83 <el-table-column label="显示类型" min-width="12%"> 83 <el-table-column label="显示类型" min-width="12%">
84 - <template slot-scope="scope"> 84 + <template v-slot="scope">
85 <el-select v-model="scope.row.htmlType"> 85 <el-select v-model="scope.row.htmlType">
86 <el-option label="文本框" value="input" /> 86 <el-option label="文本框" value="input" />
87 <el-option label="文本域" value="textarea" /> 87 <el-option label="文本域" value="textarea" />
@@ -96,7 +96,7 @@ @@ -96,7 +96,7 @@
96 </template> 96 </template>
97 </el-table-column> 97 </el-table-column>
98 <el-table-column label="字典类型" min-width="12%"> 98 <el-table-column label="字典类型" min-width="12%">
99 - <template slot-scope="scope"> 99 + <template v-slot="scope">
100 <el-select v-model="scope.row.dictType" clearable filterable placeholder="请选择"> 100 <el-select v-model="scope.row.dictType" clearable filterable placeholder="请选择">
101 <el-option 101 <el-option
102 v-for="dict in dictOptions" 102 v-for="dict in dictOptions"
@@ -108,7 +108,7 @@ @@ -108,7 +108,7 @@
108 </template> 108 </template>
109 </el-table-column> 109 </el-table-column>
110 <el-table-column label="示例" min-width="10%"> 110 <el-table-column label="示例" min-width="10%">
111 - <template slot-scope="scope"> 111 + <template v-slot="scope">
112 <el-input v-model="scope.row.example"></el-input> 112 <el-input v-model="scope.row.example"></el-input>
113 </template> 113 </template>
114 </el-table-column> 114 </el-table-column>
yudao-ui-admin/src/views/infra/codegen/genInfoForm.vue
@@ -105,7 +105,7 @@ @@ -105,7 +105,7 @@
105 </el-form-item> 105 </el-form-item>
106 </el-col> 106 </el-col>
107 107
108 - <el-col :span="24" v-if="info.genType == '1'"> 108 + <el-col :span="24" v-if="info.genType === '1'">
109 <el-form-item prop="genPath"> 109 <el-form-item prop="genPath">
110 <span slot="label"> 110 <span slot="label">
111 自定义路径 111 自定义路径
@@ -128,7 +128,7 @@ @@ -128,7 +128,7 @@
128 </el-col> 128 </el-col>
129 </el-row> 129 </el-row>
130 130
131 - <el-row v-show="info.tplCategory == 'tree'"> 131 + <el-row v-show="info.tplCategory === 'tree'">
132 <h4 class="form-header">其他信息</h4> 132 <h4 class="form-header">其他信息</h4>
133 <el-col :span="12"> 133 <el-col :span="12">
134 <el-form-item> 134 <el-form-item>
@@ -185,7 +185,7 @@ @@ -185,7 +185,7 @@
185 </el-form-item> 185 </el-form-item>
186 </el-col> 186 </el-col>
187 </el-row> 187 </el-row>
188 - <el-row v-show="info.tplCategory == 'sub'"> 188 + <el-row v-show="info.tplCategory === 'sub'">
189 <h4 class="form-header">关联信息</h4> 189 <h4 class="form-header">关联信息</h4>
190 <el-col :span="12"> 190 <el-col :span="12">
191 <el-form-item> 191 <el-form-item>
@@ -314,7 +314,7 @@ export default { @@ -314,7 +314,7 @@ export default {
314 }, 314 },
315 /** 设置关联外键 */ 315 /** 设置关联外键 */
316 setSubTableColumns(value) { 316 setSubTableColumns(value) {
317 - for (var item in this.tables) { 317 + for (let item in this.tables) {
318 const name = this.tables[item].tableName; 318 const name = this.tables[item].tableName;
319 if (value === name) { 319 if (value === name) {
320 this.subColumns = this.tables[item].columns; 320 this.subColumns = this.tables[item].columns;
yudao-ui-admin/src/views/infra/codegen/index.vue
@@ -38,17 +38,17 @@ @@ -38,17 +38,17 @@
38 <el-table-column label="表描述" align="center" prop="tableComment" :show-overflow-tooltip="true" width="120"/> 38 <el-table-column label="表描述" align="center" prop="tableComment" :show-overflow-tooltip="true" width="120"/>
39 <el-table-column label="实体" align="center" prop="className" width="200"/> 39 <el-table-column label="实体" align="center" prop="className" width="200"/>
40 <el-table-column label="创建时间" align="center" prop="createTime" width="180"> 40 <el-table-column label="创建时间" align="center" prop="createTime" width="180">
41 - <template slot-scope="scope"> 41 + <template v-slot="scope">
42 <span>{{ parseTime(scope.row.createTime) }}</span> 42 <span>{{ parseTime(scope.row.createTime) }}</span>
43 </template> 43 </template>
44 </el-table-column> 44 </el-table-column>
45 <el-table-column label="更新时间" align="center" prop="createTime" width="180"> 45 <el-table-column label="更新时间" align="center" prop="createTime" width="180">
46 - <template slot-scope="scope"> 46 + <template v-slot="scope">
47 <span>{{ parseTime(scope.row.updateTime) }}</span> 47 <span>{{ parseTime(scope.row.updateTime) }}</span>
48 </template> 48 </template>
49 </el-table-column> 49 </el-table-column>
50 <el-table-column label="操作" align="center" width="300px" class-name="small-padding fixed-width"> 50 <el-table-column label="操作" align="center" width="300px" class-name="small-padding fixed-width">
51 - <template slot-scope="scope"> 51 + <template v-slot="scope">
52 <el-button type="text" size="small" icon="el-icon-view" @click="handlePreview(scope.row)" v-hasPermi="['infra:codegen:preview']">预览</el-button> 52 <el-button type="text" size="small" icon="el-icon-view" @click="handlePreview(scope.row)" v-hasPermi="['infra:codegen:preview']">预览</el-button>
53 <el-button type="text" size="small" icon="el-icon-edit" @click="handleEditTable(scope.row)" v-hasPermi="['infra:codegen:update']">编辑</el-button> 53 <el-button type="text" size="small" icon="el-icon-edit" @click="handleEditTable(scope.row)" v-hasPermi="['infra:codegen:update']">编辑</el-button>
54 <el-button type="text" size="small" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['infra:codegen:delete']">删除</el-button> 54 <el-button type="text" size="small" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['infra:codegen:delete']">删除</el-button>
@@ -209,7 +209,7 @@ export default { @@ -209,7 +209,7 @@ export default {
209 highlightedCode(item) { 209 highlightedCode(item) {
210 // const vmName = key.substring(key.lastIndexOf("/") + 1, key.indexOf(".vm")); 210 // const vmName = key.substring(key.lastIndexOf("/") + 1, key.indexOf(".vm"));
211 // var language = vmName.substring(vmName.indexOf(".") + 1, vmName.length); 211 // var language = vmName.substring(vmName.indexOf(".") + 1, vmName.length);
212 - var language = item.filePath.substring(item.filePath.lastIndexOf(".") + 1); 212 + const language = item.filePath.substring(item.filePath.lastIndexOf('.') + 1)
213 const result = hljs.highlight(language, item.code || "", true); 213 const result = hljs.highlight(language, item.code || "", true);
214 return result.value || '&nbsp;'; 214 return result.value || '&nbsp;';
215 }, 215 },
yudao-ui-admin/src/views/infra/config/index.vue
@@ -46,23 +46,23 @@ @@ -46,23 +46,23 @@
46 <el-table-column label="参数键名" align="center" prop="key" :show-overflow-tooltip="true" /> 46 <el-table-column label="参数键名" align="center" prop="key" :show-overflow-tooltip="true" />
47 <el-table-column label="参数键值" align="center" prop="value" /> 47 <el-table-column label="参数键值" align="center" prop="value" />
48 <el-table-column label="系统内置" align="center" prop="type"> 48 <el-table-column label="系统内置" align="center" prop="type">
49 - <template slot-scope="scope"> 49 + <template v-slot="scope">
50 <dict-tag :type="DICT_TYPE.INFRA_CONFIG_TYPE" :value="scope.row.type" /> 50 <dict-tag :type="DICT_TYPE.INFRA_CONFIG_TYPE" :value="scope.row.type" />
51 </template> 51 </template>
52 </el-table-column> 52 </el-table-column>
53 <el-table-column label="是否可见" align="center" prop="visible"> 53 <el-table-column label="是否可见" align="center" prop="visible">
54 - <template slot-scope="scope"> 54 + <template v-slot="scope">
55 <span>{{ scope.row.visible ? '是' : '否' }}</span> 55 <span>{{ scope.row.visible ? '是' : '否' }}</span>
56 </template> 56 </template>
57 </el-table-column> 57 </el-table-column>
58 <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" /> 58 <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
59 <el-table-column label="创建时间" align="center" prop="createTime" width="180"> 59 <el-table-column label="创建时间" align="center" prop="createTime" width="180">
60 - <template slot-scope="scope"> 60 + <template v-slot="scope">
61 <span>{{ parseTime(scope.row.createTime) }}</span> 61 <span>{{ parseTime(scope.row.createTime) }}</span>
62 </template> 62 </template>
63 </el-table-column> 63 </el-table-column>
64 <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> 64 <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
65 - <template slot-scope="scope"> 65 + <template v-slot="scope">
66 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" 66 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
67 v-hasPermi="['infra:config:update']">修改</el-button> 67 v-hasPermi="['infra:config:update']">修改</el-button>
68 <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" 68 <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
yudao-ui-admin/src/views/infra/dataSourceConfig/index.vue
@@ -15,12 +15,12 @@ @@ -15,12 +15,12 @@
15 <el-table-column label="数据源连接" align="center" prop="url" /> 15 <el-table-column label="数据源连接" align="center" prop="url" />
16 <el-table-column label="用户名" align="center" prop="username" /> 16 <el-table-column label="用户名" align="center" prop="username" />
17 <el-table-column label="创建时间" align="center" prop="createTime" width="180"> 17 <el-table-column label="创建时间" align="center" prop="createTime" width="180">
18 - <template slot-scope="scope"> 18 + <template v-slot="scope">
19 <span>{{ parseTime(scope.row.createTime) }}</span> 19 <span>{{ parseTime(scope.row.createTime) }}</span>
20 </template> 20 </template>
21 </el-table-column> 21 </el-table-column>
22 <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> 22 <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
23 - <template slot-scope="scope"> 23 + <template v-slot="scope">
24 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" 24 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
25 v-hasPermi="['infra:data-source-config:update']">修改</el-button> 25 v-hasPermi="['infra:data-source-config:update']">修改</el-button>
26 <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" 26 <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
yudao-ui-admin/src/views/infra/file/index.vue
@@ -32,7 +32,7 @@ @@ -32,7 +32,7 @@
32 <el-table-column label="文件大小" align="center" prop="size" min-width="120px" :formatter="sizeFormat"/> 32 <el-table-column label="文件大小" align="center" prop="size" min-width="120px" :formatter="sizeFormat"/>
33 <el-table-column label="文件类型" :show-overflow-tooltip="true" align="center" prop="type" width="180px"/> 33 <el-table-column label="文件类型" :show-overflow-tooltip="true" align="center" prop="type" width="180px"/>
34 <el-table-column label="文件内容" align="center" prop="content" min-width="150px"> 34 <el-table-column label="文件内容" align="center" prop="content" min-width="150px">
35 - <template slot-scope="scope"> 35 + <template v-slot="scope">
36 <image-preview v-if="scope.row.type&&scope.row.type.indexOf('image/') === 0" :src="scope.row.url" 36 <image-preview v-if="scope.row.type&&scope.row.type.indexOf('image/') === 0" :src="scope.row.url"
37 :width="'100px'"></image-preview> 37 :width="'100px'"></image-preview>
38 <i v-else>无法预览,点击 38 <i v-else>无法预览,点击
@@ -43,12 +43,12 @@ @@ -43,12 +43,12 @@
43 </template> 43 </template>
44 </el-table-column> 44 </el-table-column>
45 <el-table-column label="上传时间" align="center" prop="createTime" min-width="170px"> 45 <el-table-column label="上传时间" align="center" prop="createTime" min-width="170px">
46 - <template slot-scope="scope"> 46 + <template v-slot="scope">
47 <span>{{ parseTime(scope.row.createTime) }}</span> 47 <span>{{ parseTime(scope.row.createTime) }}</span>
48 </template> 48 </template>
49 </el-table-column> 49 </el-table-column>
50 <el-table-column label="操作" align="center" class-name="small-padding fixed-width" min-width="100px"> 50 <el-table-column label="操作" align="center" class-name="small-padding fixed-width" min-width="100px">
51 - <template slot-scope="scope"> 51 + <template v-slot="scope">
52 <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" 52 <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
53 v-hasPermi="['infra:file:delete']">删除 53 v-hasPermi="['infra:file:delete']">删除
54 </el-button> 54 </el-button>
yudao-ui-admin/src/views/infra/fileConfig/index.vue
@@ -36,23 +36,23 @@ @@ -36,23 +36,23 @@
36 <el-table-column label="编号" align="center" prop="id" /> 36 <el-table-column label="编号" align="center" prop="id" />
37 <el-table-column label="配置名" align="center" prop="name" /> 37 <el-table-column label="配置名" align="center" prop="name" />
38 <el-table-column label="存储器" align="center" prop="storage"> 38 <el-table-column label="存储器" align="center" prop="storage">
39 - <template slot-scope="scope"> 39 + <template v-slot="scope">
40 <dict-tag :type="DICT_TYPE.INFRA_FILE_STORAGE" :value="scope.row.storage" /> 40 <dict-tag :type="DICT_TYPE.INFRA_FILE_STORAGE" :value="scope.row.storage" />
41 </template> 41 </template>
42 </el-table-column> 42 </el-table-column>
43 <el-table-column label="备注" align="center" prop="remark" /> 43 <el-table-column label="备注" align="center" prop="remark" />
44 <el-table-column label="主配置" align="center" prop="primary"> 44 <el-table-column label="主配置" align="center" prop="primary">
45 - <template slot-scope="scope"> 45 + <template v-slot="scope">
46 <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.master" /> 46 <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.master" />
47 </template> 47 </template>
48 </el-table-column> 48 </el-table-column>
49 <el-table-column label="创建时间" align="center" prop="createTime" width="180"> 49 <el-table-column label="创建时间" align="center" prop="createTime" width="180">
50 - <template slot-scope="scope"> 50 + <template v-slot="scope">
51 <span>{{ parseTime(scope.row.createTime) }}</span> 51 <span>{{ parseTime(scope.row.createTime) }}</span>
52 </template> 52 </template>
53 </el-table-column> 53 </el-table-column>
54 <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="240"> 54 <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="240">
55 - <template slot-scope="scope"> 55 + <template v-slot="scope">
56 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" 56 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
57 v-hasPermi="['infra:file-config:update']">修改</el-button> 57 v-hasPermi="['infra:file-config:update']">修改</el-button>
58 <el-button size="mini" type="text" icon="el-icon-attract" @click="handleMaster(scope.row)" 58 <el-button size="mini" type="text" icon="el-icon-attract" @click="handleMaster(scope.row)"
yudao-ui-admin/src/views/infra/job/index.vue
@@ -43,7 +43,7 @@ @@ -43,7 +43,7 @@
43 <el-table-column label="任务编号" align="center" prop="id" /> 43 <el-table-column label="任务编号" align="center" prop="id" />
44 <el-table-column label="任务名称" align="center" prop="name" /> 44 <el-table-column label="任务名称" align="center" prop="name" />
45 <el-table-column label="任务状态" align="center" prop="status"> 45 <el-table-column label="任务状态" align="center" prop="status">
46 - <template slot-scope="scope"> 46 + <template v-slot="scope">
47 <dict-tag :type="DICT_TYPE.INFRA_JOB_STATUS" :value="scope.row.status" /> 47 <dict-tag :type="DICT_TYPE.INFRA_JOB_STATUS" :value="scope.row.status" />
48 </template> 48 </template>
49 </el-table-column>> 49 </el-table-column>>
@@ -51,7 +51,7 @@ @@ -51,7 +51,7 @@
51 <el-table-column label="处理器的参数" align="center" prop="handlerParam" /> 51 <el-table-column label="处理器的参数" align="center" prop="handlerParam" />
52 <el-table-column label="CRON 表达式" align="center" prop="cronExpression" /> 52 <el-table-column label="CRON 表达式" align="center" prop="cronExpression" />
53 <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> 53 <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
54 - <template slot-scope="scope"> 54 + <template v-slot="scope">
55 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" 55 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
56 v-hasPermi="['infra:job:update']">修改</el-button> 56 v-hasPermi="['infra:job:update']">修改</el-button>
57 <el-button size="mini" type="text" icon="el-icon-check" @click="handleChangeStatus(scope.row, true)" 57 <el-button size="mini" type="text" icon="el-icon-check" @click="handleChangeStatus(scope.row, true)"
yudao-ui-admin/src/views/infra/job/log.vue
@@ -41,22 +41,22 @@ @@ -41,22 +41,22 @@
41 <el-table-column label="处理器的参数" align="center" prop="handlerParam" /> 41 <el-table-column label="处理器的参数" align="center" prop="handlerParam" />
42 <el-table-column label="第几次执行" align="center" prop="executeIndex" /> 42 <el-table-column label="第几次执行" align="center" prop="executeIndex" />
43 <el-table-column label="执行时间" align="center" width="180"> 43 <el-table-column label="执行时间" align="center" width="180">
44 - <template slot-scope="scope"> 44 + <template v-slot="scope">
45 <span>{{ parseTime(scope.row.beginTime) + ' ~ ' + parseTime(scope.row.endTime) }}</span> 45 <span>{{ parseTime(scope.row.beginTime) + ' ~ ' + parseTime(scope.row.endTime) }}</span>
46 </template> 46 </template>
47 </el-table-column> 47 </el-table-column>
48 <el-table-column label="执行时长" align="center" prop="duration"> 48 <el-table-column label="执行时长" align="center" prop="duration">
49 - <template slot-scope="scope"> 49 + <template v-slot="scope">
50 <span>{{ scope.row.duration + ' 毫秒' }}</span> 50 <span>{{ scope.row.duration + ' 毫秒' }}</span>
51 </template> 51 </template>
52 </el-table-column> 52 </el-table-column>
53 <el-table-column label="任务状态" align="center" prop="status"> 53 <el-table-column label="任务状态" align="center" prop="status">
54 - <template slot-scope="scope"> 54 + <template v-slot="scope">
55 <dict-tag :type="DICT_TYPE.INFRA_JOB_LOG_STATUS" :value="scope.row.status" /> 55 <dict-tag :type="DICT_TYPE.INFRA_JOB_LOG_STATUS" :value="scope.row.status" />
56 </template> 56 </template>
57 </el-table-column> 57 </el-table-column>
58 <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> 58 <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
59 - <template slot-scope="scope"> 59 + <template v-slot="scope">
60 <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)" :loading="exportLoading" 60 <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)" :loading="exportLoading"
61 v-hasPermi="['infra:job:query']">详细</el-button> 61 v-hasPermi="['infra:job:query']">详细</el-button>
62 </template> 62 </template>
yudao-ui-admin/src/views/infra/redis/index.vue
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 <td><div class="cell">Redis版本</div></td> 13 <td><div class="cell">Redis版本</div></td>
14 <td><div class="cell" v-if="cache.info">{{ cache.info.redis_version }}</div></td> 14 <td><div class="cell" v-if="cache.info">{{ cache.info.redis_version }}</div></td>
15 <td><div class="cell">运行模式</div></td> 15 <td><div class="cell">运行模式</div></td>
16 - <td><div class="cell" v-if="cache.info">{{ cache.info.redis_mode == "standalone" ? "单机" : "集群" }}</div></td> 16 + <td><div class="cell" v-if="cache.info">{{ cache.info.redis_mode === "standalone" ? "单机" : "集群" }}</div></td>
17 <td><div class="cell">端口</div></td> 17 <td><div class="cell">端口</div></td>
18 <td><div class="cell" v-if="cache.info">{{ cache.info.tcp_port }}</div></td> 18 <td><div class="cell" v-if="cache.info">{{ cache.info.tcp_port }}</div></td>
19 <td><div class="cell">客户端数</div></td> 19 <td><div class="cell">客户端数</div></td>
@@ -71,7 +71,7 @@ @@ -71,7 +71,7 @@
71 <el-table-column prop="keyType" label="Key 类型" width="100" /> 71 <el-table-column prop="keyType" label="Key 类型" width="100" />
72 <el-table-column prop="valueType" label="Value 类型" /> 72 <el-table-column prop="valueType" label="Value 类型" />
73 <el-table-column prop="timeoutType" label="超时时间" width="200"> 73 <el-table-column prop="timeoutType" label="超时时间" width="200">
74 - <template slot-scope="scope"> 74 + <template v-slot="scope">
75 <dict-tag 75 <dict-tag
76 :type="DICT_TYPE.INFRA_REDIS_TIMEOUT_TYPE" 76 :type="DICT_TYPE.INFRA_REDIS_TIMEOUT_TYPE"
77 :value="scope.row.timeoutType" 77 :value="scope.row.timeoutType"
@@ -95,10 +95,10 @@ @@ -95,10 +95,10 @@
95 </div> 95 </div>
96 <el-table :data="cacheKeys" style="width: 100%" @row-click="handleKeyValue"> 96 <el-table :data="cacheKeys" style="width: 100%" @row-click="handleKeyValue">
97 <el-table-column label="缓存键名" align="center" :show-overflow-tooltip="true"> 97 <el-table-column label="缓存键名" align="center" :show-overflow-tooltip="true">
98 - <template slot-scope="scope">{{ scope.row }}</template> 98 + <template v-slot="scope">{{ scope.row }}</template>
99 </el-table-column> 99 </el-table-column>
100 <el-table-column label="操作" width="60" align="center" class-name="small-padding fixed-width"> 100 <el-table-column label="操作" width="60" align="center" class-name="small-padding fixed-width">
101 - <template slot-scope="scope"> 101 + <template v-slot="scope">
102 <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDeleteKey(scope.row)" /> 102 <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDeleteKey(scope.row)" />
103 </template> 103 </template>
104 </el-table-column> 104 </el-table-column>
yudao-ui-admin/src/views/infra/testDemo/index.vue
@@ -54,12 +54,12 @@ @@ -54,12 +54,12 @@
54 <el-table-column label="分类" align="center" prop="category" /> 54 <el-table-column label="分类" align="center" prop="category" />
55 <el-table-column label="备注" align="center" prop="remark" /> 55 <el-table-column label="备注" align="center" prop="remark" />
56 <el-table-column label="创建时间" align="center" prop="createTime" width="180"> 56 <el-table-column label="创建时间" align="center" prop="createTime" width="180">
57 - <template slot-scope="scope"> 57 + <template v-slot="scope">
58 <span>{{ parseTime(scope.row.createTime) }}</span> 58 <span>{{ parseTime(scope.row.createTime) }}</span>
59 </template> 59 </template>
60 </el-table-column> 60 </el-table-column>
61 <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> 61 <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
62 - <template slot-scope="scope"> 62 + <template v-slot="scope">
63 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" 63 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
64 v-hasPermi="['infra:test-demo:update']">修改</el-button> 64 v-hasPermi="['infra:test-demo:update']">修改</el-button>
65 <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" 65 <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"