perf: 优化角色、部门管理页面

This commit is contained in:
xiaoxian521 2022-04-16 14:00:56 +08:00
parent b23066c52b
commit 9271997a30
7 changed files with 370 additions and 261 deletions

View File

@ -10,43 +10,58 @@ export default [
data: {
list: [
{
name: "董事长",
code: "ceo",
createTime: 1609837428000,
updateTime: 1645477701000,
creator: "admin",
updater: "",
deleted: false,
tenantId: 1,
id: 1,
name: "超级管理员",
code: "super_admin",
sort: 1,
status: 0,
remark: "",
id: 1,
createTime: 1609837428000
type: 1,
remark: "超级管理员",
dataScope: 1,
dataScopeDeptIds: null
},
{
name: "项目经理",
code: "se",
createTime: 1609837428000,
updateTime: 1645477700000,
creator: "admin",
updater: "",
deleted: false,
tenantId: 1,
id: 2,
name: "普通角色",
code: "common",
sort: 2,
status: 0,
remark: "",
id: 2,
createTime: 1609837428000
type: 1,
remark: "普通角色",
dataScope: 2,
dataScopeDeptIds: null
},
{
name: "人力资源",
code: "hr",
sort: 3,
status: 1,
remark: "",
id: 3,
createTime: 1609837428000
},
{
name: "普通员工",
code: "user",
sort: 4,
createTime: 1609912175000,
updateTime: 1647698441000,
creator: "",
updater: "1",
deleted: false,
tenantId: 1,
id: 101,
name: "测试账号",
code: "test",
sort: 0,
status: 0,
remark: "",
id: 4,
createTime: 1609837428000
type: 2,
remark: "132",
dataScope: 1,
dataScopeDeptIds: []
}
],
total: 4
total: 3
},
msg: ""
};

View File

@ -57,7 +57,7 @@
"responsive-storage": "^1.0.11",
"rgb-hex": "^4.0.0",
"v-contextmenu": "3.0.0",
"vue": "^3.2.32",
"vue": "^3.2.33",
"vue-i18n": "^9.2.0-beta.35",
"vue-json-pretty": "^2.0.2",
"vue-router": "^4.0.14",
@ -123,7 +123,7 @@
"stylelint-order": "^5.0.0",
"typescript": "^4.6.3",
"unplugin-element-plus": "^0.3.4",
"vite": "^2.9.2",
"vite": "^2.9.5",
"vite-plugin-mock": "^2.9.6",
"vite-plugin-remove-console": "^0.0.7",
"vite-plugin-style-import": "1.4.1",

290
pnpm-lock.yaml generated
View File

@ -86,13 +86,13 @@ specifiers:
typescript: ^4.6.3
unplugin-element-plus: ^0.3.4
v-contextmenu: 3.0.0
vite: ^2.9.2
vite: ^2.9.5
vite-plugin-mock: ^2.9.6
vite-plugin-remove-console: ^0.0.7
vite-plugin-style-import: 1.4.1
vite-plugin-windicss: ^1.8.4
vite-svg-loader: 2.2.0
vue: ^3.2.32
vue: ^3.2.33
vue-eslint-parser: ^8.2.0
vue-i18n: ^9.2.0-beta.35
vue-json-pretty: ^2.0.2
@ -110,10 +110,10 @@ dependencies:
"@ctrl/tinycolor": 3.4.0
"@logicflow/core": 0.7.1
"@logicflow/extension": 0.7.1
"@pureadmin/components": 1.0.6_vue@3.2.32
"@vueuse/core": 8.2.5_vue@3.2.32
"@vueuse/motion": 2.0.0-beta.12_vue@3.2.32
"@vueuse/shared": 8.2.5_vue@3.2.32
"@pureadmin/components": 1.0.6_vue@3.2.33
"@vueuse/core": 8.2.5_vue@3.2.33
"@vueuse/motion": 2.0.0-beta.12_vue@3.2.33
"@vueuse/shared": 8.2.5_vue@3.2.33
animate.css: 4.1.1
axios: 0.26.1
cropperjs: 1.5.12
@ -121,7 +121,7 @@ dependencies:
dayjs: 1.11.0
driver.js: 0.9.8
echarts: 5.3.2
element-plus: 2.1.9_vue@3.2.32
element-plus: 2.1.9_vue@3.2.33
element-resize-detector: 1.2.4
js-cookie: 3.0.1
lodash: 4.17.21
@ -131,19 +131,19 @@ dependencies:
mockjs: 1.1.0
nprogress: 0.2.0
path: 0.12.7
pinia: 2.0.13_typescript@4.6.3+vue@3.2.32
pinia: 2.0.13_typescript@4.6.3+vue@3.2.33
qs: 6.10.3
resize-observer-polyfill: 1.5.1
responsive-storage: 1.0.11_vue@3.2.32
responsive-storage: 1.0.11_vue@3.2.33
rgb-hex: 4.0.0
v-contextmenu: 3.0.0_vue@3.2.32
vue: 3.2.32
vue-i18n: 9.2.0-beta.35_vue@3.2.32
vue-json-pretty: 2.0.6_vue@3.2.32
vue-router: 4.0.14_vue@3.2.32
vue-types: 4.1.1_vue@3.2.32
vuedraggable: 4.1.0_vue@3.2.32
vxe-table: 4.2.0_vue@3.2.32+xe-utils@3.5.4
v-contextmenu: 3.0.0_vue@3.2.33
vue: 3.2.33
vue-i18n: 9.2.0-beta.35_vue@3.2.33
vue-json-pretty: 2.0.6_vue@3.2.33
vue-router: 4.0.14_vue@3.2.33
vue-types: 4.1.1_vue@3.2.33
vuedraggable: 4.1.0_vue@3.2.33
vxe-table: 4.2.0_vue@3.2.33+xe-utils@3.5.4
wangeditor: 4.7.12
xe-utils: 3.5.4
xgplayer: 2.31.4
@ -158,8 +158,8 @@ devDependencies:
"@iconify-icons/mdi": 1.2.8
"@iconify-icons/ri": 1.2.1
"@iconify-icons/uil": 1.2.1
"@iconify/vue": 3.2.1_vue@3.2.32
"@intlify/vite-plugin-vue-i18n": 3.3.1_8d42b6fd1280c3a2cc3b36c6b35fef46
"@iconify/vue": 3.2.1_vue@3.2.33
"@intlify/vite-plugin-vue-i18n": 3.3.1_3d08e1d9025840888da5ae870455a383
"@pureadmin/theme": 0.0.1
"@types/element-resize-detector": 1.1.3
"@types/js-cookie": 3.0.1
@ -171,8 +171,8 @@ devDependencies:
"@types/qs": 6.9.7
"@typescript-eslint/eslint-plugin": 5.16.0_bc68a9cd5bf604202498b1a9faaf9387
"@typescript-eslint/parser": 5.16.0_eslint@8.11.0+typescript@4.6.3
"@vitejs/plugin-legacy": 1.8.1_vite@2.9.2
"@vitejs/plugin-vue": 2.3.1_vite@2.9.2+vue@3.2.32
"@vitejs/plugin-legacy": 1.8.1_vite@2.9.5
"@vitejs/plugin-vue": 2.3.1_vite@2.9.5+vue@3.2.33
"@vitejs/plugin-vue-jsx": 1.3.10
"@vue/eslint-config-prettier": 7.0.0_eslint@8.11.0+prettier@2.6.0
"@vue/eslint-config-typescript": 10.0.0_67e26bb50fed2173443e3fe1262a69b2
@ -202,12 +202,12 @@ devDependencies:
stylelint-config-standard: 24.0.0_stylelint@14.6.0
stylelint-order: 5.0.0_stylelint@14.6.0
typescript: 4.6.3
unplugin-element-plus: 0.3.4_rollup@2.70.1+vite@2.9.2
vite: 2.9.2_sass@1.49.9
vite-plugin-mock: 2.9.6_7a7c25d612186dcba4127a365587ade3
unplugin-element-plus: 0.3.4_rollup@2.70.1+vite@2.9.5
vite: 2.9.5_sass@1.49.9
vite-plugin-mock: 2.9.6_9bee6d01fd796cb52b526d4503041d36
vite-plugin-remove-console: 0.0.7
vite-plugin-style-import: 1.4.1_vite@2.9.2
vite-plugin-windicss: 1.8.4_vite@2.9.2
vite-plugin-style-import: 1.4.1_vite@2.9.5
vite-plugin-windicss: 1.8.4_vite@2.9.5
vite-svg-loader: 2.2.0
vue-eslint-parser: 8.3.0_eslint@8.11.0
windicss: 3.5.1
@ -246,7 +246,7 @@ packages:
}
dev: false
/@ant-design/icons-vue/6.1.0_vue@3.2.32:
/@ant-design/icons-vue/6.1.0_vue@3.2.33:
resolution:
{
integrity: sha512-EX6bYm56V+ZrKN7+3MT/ubDkvJ5rK/O2t380WFRflDcVFgsvl3NLH7Wxeau6R8DbrO5jWR6DSTC3B6gYFp77AA==
@ -256,7 +256,7 @@ packages:
dependencies:
"@ant-design/colors": 6.0.0
"@ant-design/icons-svg": 4.2.1
vue: 3.2.32
vue: 3.2.33
dev: false
/@antfu/utils/0.5.1:
@ -644,7 +644,7 @@ packages:
engines: { node: ">=6.9.0" }
dependencies:
"@babel/code-frame": 7.16.7
"@babel/parser": 7.17.8
"@babel/parser": 7.17.9
"@babel/types": 7.17.0
dev: true
@ -877,7 +877,7 @@ packages:
engines: { node: ">=10" }
dev: false
/@element-plus/icons-vue/1.1.4_vue@3.2.32:
/@element-plus/icons-vue/1.1.4_vue@3.2.33:
resolution:
{
integrity: sha512-Iz/nHqdp1sFPmdzRwHkEQQA3lKvoObk8azgABZ81QUOpW9s/lUyQVUSh0tNtEPZXQlKwlSh7SPgoVxzrE0uuVQ==
@ -885,7 +885,7 @@ packages:
peerDependencies:
vue: ^3.2.0
dependencies:
vue: 3.2.32
vue: 3.2.33
dev: false
/@endemolshinegroup/cosmiconfig-typescript-loader/3.0.2_ec5c0ebd3030a0a5109338876648df1b:
@ -1033,7 +1033,7 @@ packages:
}
dev: true
/@iconify/vue/3.2.1_vue@3.2.32:
/@iconify/vue/3.2.1_vue@3.2.33:
resolution:
{
integrity: sha512-c4R6ZgFo1JrJ8aPMMgOPgfU7lBswihMGR+yWe/P4ZukC3kTkeT4+lkt9Pc/itVFMkwva/S/7u9YofmYv57fnNQ==
@ -1041,7 +1041,7 @@ packages:
peerDependencies:
vue: 3.x
dependencies:
vue: 3.2.32
vue: 3.2.33
dev: true
/@intlify/bundle-utils/3.0.0_vue-i18n@9.2.0-beta.35:
@ -1063,7 +1063,7 @@ packages:
"@intlify/shared": 9.2.0-beta.35
jsonc-eslint-parser: 1.4.1
source-map: 0.6.1
vue-i18n: 9.2.0-beta.35_vue@3.2.32
vue-i18n: 9.2.0-beta.35_vue@3.2.33
yaml-eslint-parser: 0.3.2
dev: true
@ -1107,7 +1107,7 @@ packages:
}
engines: { node: ">= 12" }
/@intlify/vite-plugin-vue-i18n/3.3.1_8d42b6fd1280c3a2cc3b36c6b35fef46:
/@intlify/vite-plugin-vue-i18n/3.3.1_3d08e1d9025840888da5ae870455a383:
resolution:
{
integrity: sha512-b9HIUANzL4/LmrA5RqeiPabZl2/RiWNAJ90TVZ8kSi3APRZ4BbmwUAclKe8ip+1jCDhqaGO/qfAI7SbQ0Y76Uw==
@ -1129,8 +1129,8 @@ packages:
debug: 4.3.4
fast-glob: 3.2.11
source-map: 0.6.1
vite: 2.9.2_sass@1.49.9
vue-i18n: 9.2.0-beta.35_vue@3.2.32
vite: 2.9.5_sass@1.49.9
vue-i18n: 9.2.0-beta.35_vue@3.2.33
transitivePeerDependencies:
- supports-color
dev: true
@ -1229,7 +1229,7 @@ packages:
}
dev: false
/@pureadmin/components/1.0.6_vue@3.2.32:
/@pureadmin/components/1.0.6_vue@3.2.33:
resolution:
{
integrity: sha512-k+ZF/vsnLAZDkTGpBqZ44s9LTPZsCDFRnfNNXlGy7+TXInarzopuVWeQHGsPbHB3LPHcNd2/4MBjOq4NKYglpw==
@ -1238,8 +1238,8 @@ packages:
vue: ^3.2.0
dependencies:
"@ant-design/icons-svg": 4.2.1
"@ant-design/icons-vue": 6.1.0_vue@3.2.32
vue: 3.2.32
"@ant-design/icons-vue": 6.1.0_vue@3.2.33
vue: 3.2.33
dev: false
/@pureadmin/theme/0.0.1:
@ -1585,7 +1585,7 @@ packages:
eslint-visitor-keys: 3.3.0
dev: true
/@vitejs/plugin-legacy/1.8.1_vite@2.9.2:
/@vitejs/plugin-legacy/1.8.1_vite@2.9.5:
resolution:
{
integrity: sha512-kmBWKq7EeNvzS4AqPBqUKdoWG/NYQXh7StUFMWR3D21aN5Mfmar7CTO2a7K+bBxJH/vAL9gnnueA0wb7cycCmQ==
@ -1595,11 +1595,11 @@ packages:
vite: ^2.8.0
dependencies:
"@babel/standalone": 7.17.9
core-js: 3.21.1
core-js: 3.22.0
magic-string: 0.26.1
regenerator-runtime: 0.13.9
systemjs: 6.12.1
vite: 2.9.2_sass@1.49.9
vite: 2.9.5_sass@1.49.9
dev: true
/@vitejs/plugin-vue-jsx/1.3.10:
@ -1619,7 +1619,7 @@ packages:
- supports-color
dev: true
/@vitejs/plugin-vue/2.3.1_vite@2.9.2+vue@3.2.32:
/@vitejs/plugin-vue/2.3.1_vite@2.9.5+vue@3.2.33:
resolution:
{
integrity: sha512-YNzBt8+jt6bSwpt7LP890U1UcTOIZZxfpE5WOJ638PNxSEKOqAi0+FSKS0nVeukfdZ0Ai/H7AFd6k3hayfGZqQ==
@ -1629,8 +1629,8 @@ packages:
vite: ^2.5.10
vue: ^3.2.25
dependencies:
vite: 2.9.2_sass@1.49.9
vue: 3.2.32
vite: 2.9.5_sass@1.49.9
vue: 3.2.33
dev: true
/@vue/babel-helper-vue-transform-on/1.0.2:
@ -1672,14 +1672,14 @@ packages:
source-map: 0.6.1
dev: true
/@vue/compiler-core/3.2.32:
/@vue/compiler-core/3.2.33:
resolution:
{
integrity: sha512-bRQ8Rkpm/aYFElDWtKkTPHeLnX5pEkNxhPUcqu5crEJIilZH0yeFu/qUAcV4VfSE2AudNPkQSOwMZofhnuutmA==
integrity: sha512-AAmr52ji3Zhk7IKIuigX2osWWsb2nQE5xsdFYjdnmtQ4gymmqXbjLvkSE174+fF3A3kstYrTgGkqgOEbsdLDpw==
}
dependencies:
"@babel/parser": 7.17.9
"@vue/shared": 3.2.32
"@vue/shared": 3.2.33
estree-walker: 2.0.2
source-map: 0.6.1
dev: false
@ -1694,14 +1694,14 @@ packages:
"@vue/shared": 3.2.31
dev: true
/@vue/compiler-dom/3.2.32:
/@vue/compiler-dom/3.2.33:
resolution:
{
integrity: sha512-maa3PNB/NxR17h2hDQfcmS02o1f9r9QIpN1y6fe8tWPrS1E4+q8MqrvDDQNhYVPd84rc3ybtyumrgm9D5Rf/kg==
integrity: sha512-GhiG1C8X98Xz9QUX/RlA6/kgPBWJkjq0Rq6//5XTAGSYrTMBgcLpP9+CnlUg1TFxnnCVughAG+KZl28XJqw8uQ==
}
dependencies:
"@vue/compiler-core": 3.2.32
"@vue/shared": 3.2.32
"@vue/compiler-core": 3.2.33
"@vue/shared": 3.2.33
dev: false
/@vue/compiler-sfc/3.2.31:
@ -1722,18 +1722,18 @@ packages:
source-map: 0.6.1
dev: true
/@vue/compiler-sfc/3.2.32:
/@vue/compiler-sfc/3.2.33:
resolution:
{
integrity: sha512-uO6+Gh3AVdWm72lRRCjMr8nMOEqc6ezT9lWs5dPzh1E9TNaJkMYPaRtdY9flUv/fyVQotkfjY/ponjfR+trPSg==
integrity: sha512-H8D0WqagCr295pQjUYyO8P3IejM3vEzeCO1apzByAEaAR/WimhMYczHfZVvlCE/9yBaEu/eu9RdiWr0kF8b71Q==
}
dependencies:
"@babel/parser": 7.17.9
"@vue/compiler-core": 3.2.32
"@vue/compiler-dom": 3.2.32
"@vue/compiler-ssr": 3.2.32
"@vue/reactivity-transform": 3.2.32
"@vue/shared": 3.2.32
"@vue/compiler-core": 3.2.33
"@vue/compiler-dom": 3.2.33
"@vue/compiler-ssr": 3.2.33
"@vue/reactivity-transform": 3.2.33
"@vue/shared": 3.2.33
estree-walker: 2.0.2
magic-string: 0.25.9
postcss: 8.4.12
@ -1750,14 +1750,14 @@ packages:
"@vue/shared": 3.2.31
dev: true
/@vue/compiler-ssr/3.2.32:
/@vue/compiler-ssr/3.2.33:
resolution:
{
integrity: sha512-ZklVUF/SgTx6yrDUkaTaBL/JMVOtSocP+z5Xz/qIqqLdW/hWL90P+ob/jOQ0Xc/om57892Q7sRSrex0wujOL2Q==
integrity: sha512-XQh1Xdk3VquDpXsnoCd7JnMoWec9CfAzQDQsaMcSU79OrrO2PNR0ErlIjm/mGq3GmBfkQjzZACV+7GhfRB8xMQ==
}
dependencies:
"@vue/compiler-dom": 3.2.32
"@vue/shared": 3.2.32
"@vue/compiler-dom": 3.2.33
"@vue/shared": 3.2.33
dev: false
/@vue/devtools-api/6.1.3:
@ -1822,60 +1822,60 @@ packages:
magic-string: 0.25.9
dev: true
/@vue/reactivity-transform/3.2.32:
/@vue/reactivity-transform/3.2.33:
resolution:
{
integrity: sha512-CW1W9zaJtE275tZSWIfQKiPG0iHpdtSlmTqYBu7Y62qvtMgKG5yOxtvBs4RlrZHlaqFSE26avLAgQiTp4YHozw==
integrity: sha512-4UL5KOIvSQb254aqenW4q34qMXbfZcmEsV/yVidLUgvwYQQ/D21bGX3DlgPUGI3c4C+iOnNmDCkIxkILoX/Pyw==
}
dependencies:
"@babel/parser": 7.17.9
"@vue/compiler-core": 3.2.32
"@vue/shared": 3.2.32
"@vue/compiler-core": 3.2.33
"@vue/shared": 3.2.33
estree-walker: 2.0.2
magic-string: 0.25.9
dev: false
/@vue/reactivity/3.2.32:
/@vue/reactivity/3.2.33:
resolution:
{
integrity: sha512-4zaDumuyDqkuhbb63hRd+YHFGopW7srFIWesLUQ2su/rJfWrSq3YUvoKAJE8Eu1EhZ2Q4c1NuwnEreKj1FkDxA==
integrity: sha512-62Sq0mp9/0bLmDuxuLD5CIaMG2susFAGARLuZ/5jkU1FCf9EDbwUuF+BO8Ub3Rbodx0ziIecM/NsmyjardBxfQ==
}
dependencies:
"@vue/shared": 3.2.32
"@vue/shared": 3.2.33
dev: false
/@vue/runtime-core/3.2.32:
/@vue/runtime-core/3.2.33:
resolution:
{
integrity: sha512-uKKzK6LaCnbCJ7rcHvsK0azHLGpqs+Vi9B28CV1mfWVq1F3Bj8Okk3cX+5DtD06aUh4V2bYhS2UjjWiUUKUF0w==
integrity: sha512-N2D2vfaXsBPhzCV3JsXQa2NECjxP3eXgZlFqKh4tgakp3iX6LCGv76DLlc+IfFZq+TW10Y8QUfeihXOupJ1dGw==
}
dependencies:
"@vue/reactivity": 3.2.32
"@vue/shared": 3.2.32
"@vue/reactivity": 3.2.33
"@vue/shared": 3.2.33
dev: false
/@vue/runtime-dom/3.2.32:
/@vue/runtime-dom/3.2.33:
resolution:
{
integrity: sha512-AmlIg+GPqjkNoADLjHojEX5RGcAg+TsgXOOcUrtDHwKvA8mO26EnLQLB8nylDjU6AMJh2CIYn8NEgyOV5ZIScQ==
integrity: sha512-LSrJ6W7CZTSUygX5s8aFkraDWlO6K4geOwA3quFF2O+hC3QuAMZt/0Xb7JKE3C4JD4pFwCSO7oCrZmZ0BIJUnw==
}
dependencies:
"@vue/runtime-core": 3.2.32
"@vue/shared": 3.2.32
"@vue/runtime-core": 3.2.33
"@vue/shared": 3.2.33
csstype: 2.6.20
dev: false
/@vue/server-renderer/3.2.32_vue@3.2.32:
/@vue/server-renderer/3.2.33_vue@3.2.33:
resolution:
{
integrity: sha512-TYKpZZfRJpGTTiy/s6bVYwQJpAUx3G03z4G7/3O18M11oacrMTVHaHjiPuPqf3xQtY8R4LKmQ3EOT/DRCA/7Wg==
integrity: sha512-4jpJHRD4ORv8PlbYi+/MfP8ec1okz6rybe36MdpkDrGIdEItHEUyaHSKvz+ptNEyQpALmmVfRteHkU9F8vxOew==
}
peerDependencies:
vue: 3.2.32
vue: 3.2.33
dependencies:
"@vue/compiler-ssr": 3.2.32
"@vue/shared": 3.2.32
vue: 3.2.32
"@vue/compiler-ssr": 3.2.33
"@vue/shared": 3.2.33
vue: 3.2.33
dev: false
/@vue/shared/3.2.31:
@ -1885,14 +1885,14 @@ packages:
}
dev: true
/@vue/shared/3.2.32:
/@vue/shared/3.2.33:
resolution:
{
integrity: sha512-bjcixPErUsAnTQRQX4Z5IQnICYjIfNCyCl8p29v1M6kfVzvwOICPw+dz48nNuWlTOOx2RHhzHdazJibE8GSnsw==
integrity: sha512-UBc1Pg1T3yZ97vsA2ueER0F6GbJebLHYlEi4ou1H5YL4KWvMOOWwpYo9/QpWq93wxKG6Wo13IY74Hcn/f7c7Bg==
}
dev: false
/@vueuse/core/8.2.5_vue@3.2.32:
/@vueuse/core/8.2.5_vue@3.2.33:
resolution:
{
integrity: sha512-5prZAA1Ji2ltwNUnzreu6WIXYqHYP/9U2BiY5mD/650VYLpVcwVlYznJDFcLCmEWI3o3Vd34oS1FUf+6Mh68GQ==
@ -1907,9 +1907,9 @@ packages:
optional: true
dependencies:
"@vueuse/metadata": 8.2.5
"@vueuse/shared": 8.2.5_vue@3.2.32
vue: 3.2.32
vue-demi: 0.12.4_vue@3.2.32
"@vueuse/shared": 8.2.5_vue@3.2.33
vue: 3.2.33
vue-demi: 0.12.4_vue@3.2.33
dev: false
/@vueuse/metadata/8.2.5:
@ -1919,7 +1919,7 @@ packages:
}
dev: false
/@vueuse/motion/2.0.0-beta.12_vue@3.2.32:
/@vueuse/motion/2.0.0-beta.12_vue@3.2.33:
resolution:
{
integrity: sha512-cAZqXexLX6xo+H1N1Mv+wBSSqG4wB+BdjIuHQ50jwlelXCDxSi8gj0K/9nDS+aUZtWh6YMwS6UGCKg58jMVglA==
@ -1931,16 +1931,16 @@ packages:
"@vue/composition-api":
optional: true
dependencies:
"@vueuse/core": 8.2.5_vue@3.2.32
"@vueuse/shared": 8.2.5_vue@3.2.32
"@vueuse/core": 8.2.5_vue@3.2.33
"@vueuse/shared": 8.2.5_vue@3.2.33
framesync: 6.1.0
popmotion: 11.0.3
style-value-types: 5.1.0
vue: 3.2.32
vue-demi: 0.12.4_vue@3.2.32
vue: 3.2.33
vue-demi: 0.12.4_vue@3.2.33
dev: false
/@vueuse/shared/8.2.5_vue@3.2.32:
/@vueuse/shared/8.2.5_vue@3.2.33:
resolution:
{
integrity: sha512-lNWo+7sk6JCuOj4AiYM+6HZ6fq4xAuVq1sVckMQKgfCJZpZRe4i8es+ZULO5bYTKP+VrOCtqrLR2GzEfrbr3YQ==
@ -1954,8 +1954,8 @@ packages:
vue:
optional: true
dependencies:
vue: 3.2.32
vue-demi: 0.12.4_vue@3.2.32
vue: 3.2.33
vue-demi: 0.12.4_vue@3.2.33
dev: false
/@windicss/config/1.8.4:
@ -2757,10 +2757,10 @@ packages:
requiresBuild: true
dev: false
/core-js/3.21.1:
/core-js/3.22.0:
resolution:
{
integrity: sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==
integrity: sha512-8h9jBweRjMiY+ORO7bdWSeWfHhLPO7whobj7Z2Bl0IDo00C228EdGgH7FE4jGumbEjzcFfkfW8bXgdkEDhnwHQ==
}
requiresBuild: true
dev: true
@ -3220,7 +3220,7 @@ packages:
}
dev: true
/element-plus/2.1.9_vue@3.2.32:
/element-plus/2.1.9_vue@3.2.33:
resolution:
{
integrity: sha512-6mWqS3YrmJPnouWP4otzL8+MehfOnDFqDbcIdnmC07p+Z0JkWe/CVKc4Wky8AYC8nyDMUQyiZYvooCbqGuM7pg==
@ -3229,12 +3229,12 @@ packages:
vue: ^3.2.0
dependencies:
"@ctrl/tinycolor": 3.4.0
"@element-plus/icons-vue": 1.1.4_vue@3.2.32
"@element-plus/icons-vue": 1.1.4_vue@3.2.33
"@floating-ui/dom": 0.4.4
"@popperjs/core": 2.11.5
"@types/lodash": 4.14.181
"@types/lodash-es": 4.17.6
"@vueuse/core": 8.2.5_vue@3.2.32
"@vueuse/core": 8.2.5_vue@3.2.33
async-validator: 4.0.7
dayjs: 1.11.0
escape-html: 1.0.3
@ -3243,7 +3243,7 @@ packages:
lodash-unified: 1.0.2_da03a4540fbd16bbaafbb96724306afd
memoize-one: 6.0.0
normalize-wheel-es: 1.1.2
vue: 3.2.32
vue: 3.2.33
transitivePeerDependencies:
- "@vue/composition-api"
dev: false
@ -5697,7 +5697,7 @@ packages:
engines: { node: ">=0.10.0" }
dev: true
/pinia/2.0.13_typescript@4.6.3+vue@3.2.32:
/pinia/2.0.13_typescript@4.6.3+vue@3.2.33:
resolution:
{
integrity: sha512-B7rSqm1xNpwcPMnqns8/gVBfbbi7lWTByzS6aPZ4JOXSJD4Y531rZHDCoYWBwLyHY/8hWnXljgiXp6rRyrofcw==
@ -5714,8 +5714,8 @@ packages:
dependencies:
"@vue/devtools-api": 6.1.4
typescript: 4.6.3
vue: 3.2.32
vue-demi: 0.12.4_vue@3.2.32
vue: 3.2.33
vue-demi: 0.12.4_vue@3.2.33
dev: false
/please-upgrade-node/3.2.0:
@ -6442,7 +6442,7 @@ packages:
supports-preserve-symlinks-flag: 1.0.0
dev: true
/responsive-storage/1.0.11_vue@3.2.32:
/responsive-storage/1.0.11_vue@3.2.33:
resolution:
{
integrity: sha512-XY/21b7FKCXwBWGLuxp5KUQOAh8jOTsdfRMz0RVE9P+HhK4oYXKcNESDLxE1mD5MWPg/i+k4SGogro5daMrE9A==
@ -6450,7 +6450,7 @@ packages:
peerDependencies:
vue: ^3.2.0
dependencies:
vue: 3.2.32
vue: 3.2.33
dev: false
/restore-cursor/3.1.0:
@ -7352,7 +7352,7 @@ packages:
engines: { node: ">= 0.8" }
dev: true
/unplugin-element-plus/0.3.4_rollup@2.70.1+vite@2.9.2:
/unplugin-element-plus/0.3.4_rollup@2.70.1+vite@2.9.5:
resolution:
{
integrity: sha512-U6rbBBPzBO1NsCpD5pmp6KnuR4Gwbqphndgix1TW9uMY1+P+gYHolbnECHwRngbPk3+IDIPJhKXz0a6pD7T6fw==
@ -7362,7 +7362,7 @@ packages:
"@rollup/pluginutils": 4.2.0
es-module-lexer: 0.10.5
magic-string: 0.26.1
unplugin: 0.6.1_rollup@2.70.1+vite@2.9.2
unplugin: 0.6.1_rollup@2.70.1+vite@2.9.5
transitivePeerDependencies:
- esbuild
- rollup
@ -7370,7 +7370,7 @@ packages:
- webpack
dev: true
/unplugin/0.6.1_rollup@2.70.1+vite@2.9.2:
/unplugin/0.6.1_rollup@2.70.1+vite@2.9.5:
resolution:
{
integrity: sha512-cQqRCgQ2v/Q4fPIWNVZ6sNIDdl5v8JXOnlsUOsGzT4fblTONoPWaytiYSpu5qJ9lvSDZYAQN6BRVo3XQoZMfUQ==
@ -7392,7 +7392,7 @@ packages:
dependencies:
chokidar: 3.5.3
rollup: 2.70.1
vite: 2.9.2_sass@1.49.9
vite: 2.9.5_sass@1.49.9
webpack-sources: 3.2.3
webpack-virtual-modules: 0.4.3
dev: true
@ -7450,7 +7450,7 @@ packages:
hasBin: true
dev: true
/v-contextmenu/3.0.0_vue@3.2.32:
/v-contextmenu/3.0.0_vue@3.2.33:
resolution:
{
integrity: sha512-zi38JxmTt66TmljgV1JbfEa9WvoQkpzRuEwZK7Tjb2XoRejbWLozQtkyTWXJa6x6Y3FrVDfgT36w01gpTpo41A==
@ -7459,7 +7459,7 @@ packages:
peerDependencies:
vue: ^3.0.0
dependencies:
vue: 3.2.32
vue: 3.2.33
dev: false
/v8-compile-cache/2.3.0:
@ -7479,7 +7479,7 @@ packages:
spdx-expression-parse: 3.0.1
dev: true
/vite-plugin-mock/2.9.6_7a7c25d612186dcba4127a365587ade3:
/vite-plugin-mock/2.9.6_9bee6d01fd796cb52b526d4503041d36:
resolution:
{
integrity: sha512-/Rm59oPppe/ncbkSrUuAxIQihlI2YcBmnbR4ST1RA2VzM1C0tEQc1KlbQvnUGhXECAGTaQN2JyasiwXP6EtKgg==
@ -7499,7 +7499,7 @@ packages:
fast-glob: 3.2.11
mockjs: 1.1.0
path-to-regexp: 6.2.0
vite: 2.9.2_sass@1.49.9
vite: 2.9.5_sass@1.49.9
transitivePeerDependencies:
- rollup
- supports-color
@ -7512,7 +7512,7 @@ packages:
}
dev: true
/vite-plugin-style-import/1.4.1_vite@2.9.2:
/vite-plugin-style-import/1.4.1_vite@2.9.5:
resolution:
{
integrity: sha512-lJCRvm7+So0hHdnSJiJPg9gD5mxtL6YY0jmhEph+k7ArpsyvqOh6han2kG5htbWWDZxHkUN9d1BuTFL//yCLLQ==
@ -7526,12 +7526,12 @@ packages:
es-module-lexer: 0.9.3
fs-extra: 10.0.1
magic-string: 0.25.9
vite: 2.9.2_sass@1.49.9
vite: 2.9.5_sass@1.49.9
transitivePeerDependencies:
- supports-color
dev: true
/vite-plugin-windicss/1.8.4_vite@2.9.2:
/vite-plugin-windicss/1.8.4_vite@2.9.5:
resolution:
{
integrity: sha512-LSZAO8BZn3x406GRbYX5t5ONXXJVdqiQtN1qrznLA/Dy5/NzZVhfcrL6N1qEYYO7HsCDT4pLAjTzObvDnM9Y8A==
@ -7542,7 +7542,7 @@ packages:
"@windicss/plugin-utils": 1.8.4
debug: 4.3.4
kolorist: 1.5.1
vite: 2.9.2_sass@1.49.9
vite: 2.9.5_sass@1.49.9
windicss: 3.5.1
transitivePeerDependencies:
- supports-color
@ -7558,10 +7558,10 @@ packages:
svgo: 2.8.0
dev: true
/vite/2.9.2_sass@1.49.9:
/vite/2.9.5_sass@1.49.9:
resolution:
{
integrity: sha512-ScbfYsiG1N/xE2TnZWYWJ8aOFBQovEl4VLU+0dktxqXvqdAvcTOEUM5YqwaBkmNHSHUGHLPd92tuXFQ35wDkVw==
integrity: sha512-dvMN64X2YEQgSXF1lYabKXw3BbN6e+BL67+P3Vy4MacnY+UzT1AfkHiioFSi9+uiDUiaDy7Ax/LQqivk6orilg==
}
engines: { node: ">=12.2.0" }
hasBin: true
@ -7586,7 +7586,7 @@ packages:
fsevents: 2.3.2
dev: true
/vue-demi/0.12.4_vue@3.2.32:
/vue-demi/0.12.4_vue@3.2.33:
resolution:
{
integrity: sha512-ztPDkFt0TSUdoq1ZI6oD730vgztBkiByhUW7L1cOTebiSBqSYfSQgnhYakYigBkyAybqCTH7h44yZuDJf2xILQ==
@ -7601,7 +7601,7 @@ packages:
"@vue/composition-api":
optional: true
dependencies:
vue: 3.2.32
vue: 3.2.33
dev: false
/vue-eslint-parser/8.3.0_eslint@8.11.0:
@ -7625,7 +7625,7 @@ packages:
- supports-color
dev: true
/vue-i18n/9.2.0-beta.35_vue@3.2.32:
/vue-i18n/9.2.0-beta.35_vue@3.2.33:
resolution:
{
integrity: sha512-kTYzZSB3B/ar3M9RfQ0KAyTGfvRw544qVzY++/sNV4stOKG6NxIDOdHdYTfVEXTSkczFwoZHTKXTWNVpx+GuHA==
@ -7638,10 +7638,10 @@ packages:
"@intlify/shared": 9.2.0-beta.35
"@intlify/vue-devtools": 9.2.0-beta.35
"@vue/devtools-api": 6.1.4
vue: 3.2.32
vue: 3.2.33
dev: false
/vue-json-pretty/2.0.6_vue@3.2.32:
/vue-json-pretty/2.0.6_vue@3.2.33:
resolution:
{
integrity: sha512-aVdxw8ZRGR/Uj8GEaJ1/W2Ks/MdCfv5t2HRbbd+ICp3nL7msKRLN+1qOkSzaMvDygbDPxGhwUHBxZz8nxP+r3A==
@ -7650,10 +7650,10 @@ packages:
peerDependencies:
vue: ">=3.0.0"
dependencies:
vue: 3.2.32
vue: 3.2.33
dev: false
/vue-router/4.0.14_vue@3.2.32:
/vue-router/4.0.14_vue@3.2.33:
resolution:
{
integrity: sha512-wAO6zF9zxA3u+7AkMPqw9LjoUCjSxfFvINQj3E/DceTt6uEz1XZLraDhdg2EYmvVwTBSGlLYsUw8bDmx0754Mw==
@ -7662,10 +7662,10 @@ packages:
vue: ^3.2.0
dependencies:
"@vue/devtools-api": 6.1.3
vue: 3.2.32
vue: 3.2.33
dev: false
/vue-types/4.1.1_vue@3.2.32:
/vue-types/4.1.1_vue@3.2.33:
resolution:
{
integrity: sha512-Jq2GZ/w6rExJbLA/h7nHBFLciu+YNekgox0DB64wN1snZ4IIJMq+qnqp1/vE4fc7vEjZcP5KGhLzkkSjIHLRzw==
@ -7675,23 +7675,23 @@ packages:
vue: ^2.0.0 || ^3.0.0
dependencies:
is-plain-object: 5.0.0
vue: 3.2.32
vue: 3.2.33
dev: false
/vue/3.2.32:
/vue/3.2.33:
resolution:
{
integrity: sha512-6L3jKZApF042OgbCkh+HcFeAkiYi3Lovi8wNhWqIK98Pi5efAMLZzRHgi91v+60oIRxdJsGS9sTMsb+yDpY8Eg==
integrity: sha512-si1ExAlDUrLSIg/V7D/GgA4twJwfsfgG+t9w10z38HhL/HA07132pUQ2KuwAo8qbCyMJ9e6OqrmWrOCr+jW7ZQ==
}
dependencies:
"@vue/compiler-dom": 3.2.32
"@vue/compiler-sfc": 3.2.32
"@vue/runtime-dom": 3.2.32
"@vue/server-renderer": 3.2.32_vue@3.2.32
"@vue/shared": 3.2.32
"@vue/compiler-dom": 3.2.33
"@vue/compiler-sfc": 3.2.33
"@vue/runtime-dom": 3.2.33
"@vue/server-renderer": 3.2.33_vue@3.2.33
"@vue/shared": 3.2.33
dev: false
/vuedraggable/4.1.0_vue@3.2.32:
/vuedraggable/4.1.0_vue@3.2.33:
resolution:
{
integrity: sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==
@ -7700,10 +7700,10 @@ packages:
vue: ^3.0.1
dependencies:
sortablejs: 1.14.0
vue: 3.2.32
vue: 3.2.33
dev: false
/vxe-table/4.2.0_vue@3.2.32+xe-utils@3.5.4:
/vxe-table/4.2.0_vue@3.2.33+xe-utils@3.5.4:
resolution:
{
integrity: sha512-ddb4OdTdhjT+E+5gu+NbJuTLJa/BlzUb98O0ZsVwGYUnMWoYqHh68JRkHxFona/Dxv6ir8HBX7kZamfoWhB+NQ==
@ -7712,7 +7712,7 @@ packages:
vue: ^3.2.2
xe-utils: ^3.5.0
dependencies:
vue: 3.2.32
vue: 3.2.33
xe-utils: 3.5.4
dev: false

View File

@ -25,10 +25,13 @@ import Tickets from "@iconify-icons/ep/tickets";
import OfficeBuilding from "@iconify-icons/ep/office-building";
import Notebook from "@iconify-icons/ep/notebook";
import Rank from "@iconify-icons/ep/rank";
import videoPlay from "@iconify-icons/ep/video-play";
import VideoPlay from "@iconify-icons/ep/video-play";
import Monitor from "@iconify-icons/ep/monitor";
import Search from "@iconify-icons/ep/search";
import Refresh from "@iconify-icons/ep/refresh";
import EditPen from "@iconify-icons/ep/edit-pen";
import Delete from "@iconify-icons/ep/delete";
import More from "@iconify-icons/ep/more-filled";
addIcon("check", Check);
addIcon("menu", Menu);
addIcon("home-filled", HomeFilled);
@ -51,52 +54,56 @@ addIcon("location", Location);
addIcon("tickets", Tickets);
addIcon("office-building", OfficeBuilding);
addIcon("notebook", Notebook);
addIcon("video-play", videoPlay);
addIcon("video-play", VideoPlay);
addIcon("rank", Rank);
addIcon("monitor", Monitor);
addIcon("search", Search);
addIcon("refresh", Refresh);
addIcon("edits", EditPen);
addIcon("delete", Delete);
addIcon("more", More);
// remixicon
import arrowRightSLine from "@iconify-icons/ri/arrow-right-s-line";
import arrowLeftSLine from "@iconify-icons/ri/arrow-left-s-line";
import logoutCircleRLine from "@iconify-icons/ri/logout-circle-r-line";
import nodeTree from "@iconify-icons/ri/node-tree";
import ubuntuFill from "@iconify-icons/ri/ubuntu-fill";
import questionLine from "@iconify-icons/ri/question-line";
import checkboxCircleLine from "@iconify-icons/ri/checkbox-circle-line";
import informationLine from "@iconify-icons/ri/information-line";
import closeCircleLine from "@iconify-icons/ri/close-circle-line";
import arrowUpLine from "@iconify-icons/ri/arrow-up-line";
import arrowDownLine from "@iconify-icons/ri/arrow-down-line";
import bookmark2Line from "@iconify-icons/ri/bookmark-2-line";
import addFill from "@iconify-icons/ri/add-circle-line";
import listCheck from "@iconify-icons/ri/list-check";
import more2Fill from "@iconify-icons/ri/more-2-fill";
addIcon("arrow-right-s-line", arrowRightSLine);
addIcon("arrow-left-s-line", arrowLeftSLine);
addIcon("logout-circle-r-line", logoutCircleRLine);
addIcon("node-tree", nodeTree);
addIcon("ubuntu-fill", ubuntuFill);
addIcon("question-line", questionLine);
addIcon("checkbox-circle-line", checkboxCircleLine);
addIcon("information-line", informationLine);
addIcon("close-circle-line", closeCircleLine);
addIcon("arrow-up-line", arrowUpLine);
addIcon("arrow-down-line", arrowDownLine);
addIcon("bookmark-2-line", bookmark2Line);
addIcon("add", addFill);
addIcon("list-check", listCheck);
addIcon("more-2-fill", more2Fill);
import ArrowRightSLine from "@iconify-icons/ri/arrow-right-s-line";
import ArrowLeftSLine from "@iconify-icons/ri/arrow-left-s-line";
import LogoutCircleRLine from "@iconify-icons/ri/logout-circle-r-line";
import NodeTree from "@iconify-icons/ri/node-tree";
import UbuntuFill from "@iconify-icons/ri/ubuntu-fill";
import QuestionLine from "@iconify-icons/ri/question-line";
import CheckboxCircleLine from "@iconify-icons/ri/checkbox-circle-line";
import InformationLine from "@iconify-icons/ri/information-line";
import CloseCircleLine from "@iconify-icons/ri/close-circle-line";
import ArrowUpLine from "@iconify-icons/ri/arrow-up-line";
import ArrowDownLine from "@iconify-icons/ri/arrow-down-line";
import Bookmark2Line from "@iconify-icons/ri/bookmark-2-line";
import AddFill from "@iconify-icons/ri/add-circle-line";
import ListCheck from "@iconify-icons/ri/list-check";
import More2Fill from "@iconify-icons/ri/more-2-fill";
import Database from "@iconify-icons/ri/database-2-line";
addIcon("arrow-right-s-line", ArrowRightSLine);
addIcon("arrow-left-s-line", ArrowLeftSLine);
addIcon("logout-circle-r-line", LogoutCircleRLine);
addIcon("node-tree", NodeTree);
addIcon("ubuntu-fill", UbuntuFill);
addIcon("question-line", QuestionLine);
addIcon("checkbox-circle-line", CheckboxCircleLine);
addIcon("information-line", InformationLine);
addIcon("close-circle-line", CloseCircleLine);
addIcon("arrow-up-line", ArrowUpLine);
addIcon("arrow-down-line", ArrowDownLine);
addIcon("bookmark-2-line", Bookmark2Line);
addIcon("add", AddFill);
addIcon("list-check", ListCheck);
addIcon("more-2-fill", More2Fill);
addIcon("database", Database);
// Font Awesome 4
import faUser from "@iconify-icons/fa/user";
import faLock from "@iconify-icons/fa/lock";
import faSignOut from "@iconify-icons/fa/sign-out";
addIcon("fa-user", faUser);
addIcon("fa-lock", faLock);
addIcon("fa-sign-out", faSignOut);
import FaUser from "@iconify-icons/fa/user";
import FaLock from "@iconify-icons/fa/lock";
import FaSignOut from "@iconify-icons/fa/sign-out";
addIcon("fa-user", FaUser);
addIcon("fa-lock", FaLock);
addIcon("fa-sign-out", FaSignOut);
// Unicons
import Import from "@iconify-icons/uil/import";

View File

@ -36,7 +36,12 @@
z-index: 99999 !important;
}
// 自定义popover的类名
/* 重置button中icon的margin */
.reset-margin [class*="el-icon"] + span {
margin-left: 2px !important;
}
/* 自定义popover的类名 */
.pure-popper {
padding: 0 !important;
}

View File

@ -79,11 +79,11 @@ onMounted(() => {
:loading="loading"
@click="onSearch"
>
搜索</el-button
>
<el-button :icon="useRenderIcon('refresh')" @click="resetForm(formRef)"
>重置</el-button
>
搜索
</el-button>
<el-button :icon="useRenderIcon('refresh')" @click="resetForm(formRef)">
重置
</el-button>
</el-form-item>
</el-form>
@ -129,6 +129,7 @@ onMounted(() => {
<el-table-column label="状态" align="center" prop="status" width="80">
<template #default="scope">
<el-tag
:size="size"
:type="scope.row.status === 0 ? 'danger' : 'success'"
effect="plain"
>
@ -141,13 +142,12 @@ onMounted(() => {
align="center"
width="180"
prop="createTime"
>
<template #default="scope">
<span>{{
dayjs(scope.row.createTime).format("YYYY-MM-DD HH:mm:ss")
}}</span>
</template>
</el-table-column>
:formatter="
({ createTime }) => {
return dayjs(createTime).format('YYYY-MM-DD HH:mm:ss');
}
"
/>
<el-table-column
label="备注"
align="center"
@ -158,17 +158,29 @@ onMounted(() => {
fixed="right"
label="操作"
align="center"
width="130"
width="140"
>
<template #default="scope">
<el-button type="text" @click="handleUpdate(scope.row)"
>修改</el-button
<el-button
class="reset-margin"
type="text"
:size="size"
@click="handleUpdate(scope.row)"
:icon="useRenderIcon('edits')"
>
修改
</el-button>
<el-popconfirm title="是否确认删除?">
<template #reference>
<el-button type="text" @click="handleDelete(scope.row)"
>删除</el-button
<el-button
class="reset-margin"
type="text"
:size="size"
:icon="useRenderIcon('delete')"
@click="handleDelete(scope.row)"
>
删除
</el-button>
</template>
</el-popconfirm>
</template>

View File

@ -15,8 +15,8 @@ import { Switch, message } from "@pureadmin/components";
import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
const form = reactive({
name: "",
code: "",
user: "",
status: ""
});
let dataList = ref([]);
@ -49,7 +49,11 @@ function handleSelectionChange(val) {
function onChange(checked, { $index, row }) {
ElMessageBox.confirm(
`确认要<strong>停用</strong><strong style='color:var(--el-color-primary)'>${row.name}</strong>角色吗?`,
`确认要<strong>${
row.status === 0 ? "停用" : "启用"
}</strong><strong style='color:var(--el-color-primary)'>${
row.name
}</strong>角色吗?`,
"系统提示",
{
confirmButtonText: "确定",
@ -112,16 +116,16 @@ onMounted(() => {
:model="form"
class="bg-white w-99/100 pl-8 pt-4"
>
<el-form-item label="角色编码:" prop="code">
<el-input v-model="form.code" placeholder="请输入" clearable />
<el-form-item label="角色名称:" prop="name">
<el-input v-model="form.name" placeholder="请输入" clearable />
</el-form-item>
<el-form-item label="角色名称:" prop="user">
<el-input v-model="form.user" placeholder="请输入" clearable />
<el-form-item label="角色标识:" prop="code">
<el-input v-model="form.code" placeholder="请输入" clearable />
</el-form-item>
<el-form-item label="状态:" prop="status">
<el-select v-model="form.status" placeholder="请选择" clearable>
<el-option label="开启" value="1" />
<el-option label="关闭" value="0" />
<el-option label="开启" value="1" />
<el-option label="关闭" value="0" />
</el-select>
</el-form-item>
<el-form-item>
@ -131,11 +135,11 @@ onMounted(() => {
:loading="loading"
@click="onSearch"
>
搜索</el-button
>
<el-button :icon="useRenderIcon('refresh')" @click="resetForm(formRef)"
>重置</el-button
>
搜索
</el-button>
<el-button :icon="useRenderIcon('refresh')" @click="resetForm(formRef)">
重置
</el-button>
</el-form-item>
</el-form>
@ -146,9 +150,9 @@ onMounted(() => {
@refresh="onSearch"
>
<template #buttons>
<el-button type="primary" :icon="useRenderIcon('add')"
>新增角色</el-button
>
<el-button type="primary" :icon="useRenderIcon('add')">
新增角色
</el-button>
</template>
<template v-slot="{ size, checkList }">
<el-table
@ -173,10 +177,26 @@ onMounted(() => {
width="70"
/>
<el-table-column label="角色编号" align="center" prop="id" />
<el-table-column label="角色编码" align="center" prop="code" />
<el-table-column label="角色名称" align="center" prop="name" />
<el-table-column label="角色排序" align="center" prop="sort" />
<el-table-column label="状态" align="center" prop="status">
<el-table-column label="角色标识" align="center" prop="code" />
<el-table-column label="角色类型" align="center" prop="type">
<template #default="scope">
<el-tag
:size="size"
:type="scope.row.type === 1 ? 'danger' : ''"
effect="plain"
>
{{ scope.row.type === 1 ? "内置" : "自定义" }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="显示顺序" align="center" prop="sort" />
<el-table-column
label="状态"
align="center"
width="130"
prop="status"
>
<template #default="scope">
<Switch
:size="size === 'small' ? 'small' : 'default'"
@ -195,30 +215,74 @@ onMounted(() => {
align="center"
width="180"
prop="createTime"
>
<template #default="scope">
<span>{{
dayjs(scope.row.createTime).format("YYYY-MM-DD HH:mm:ss")
}}</span>
</template>
</el-table-column>
:formatter="
({ createTime }) => {
return dayjs(createTime).format('YYYY-MM-DD HH:mm:ss');
}
"
/>
<el-table-column
fixed="right"
label="操作"
width="130"
width="180"
align="center"
>
<template #default="scope">
<el-button type="text" @click="handleUpdate(scope.row)"
>修改</el-button
<el-button
class="reset-margin"
type="text"
:size="size"
@click="handleUpdate(scope.row)"
:icon="useRenderIcon('edits')"
>
修改
</el-button>
<el-popconfirm title="是否确认删除?">
<template #reference>
<el-button type="text" @click="handleDelete(scope.row)"
>删除</el-button
<el-button
class="reset-margin"
type="text"
:size="size"
:icon="useRenderIcon('delete')"
@click="handleDelete(scope.row)"
>
删除
</el-button>
</template>
</el-popconfirm>
<el-dropdown>
<el-button
class="ml-3"
type="text"
:size="size"
@click="handleUpdate(scope.row)"
:icon="useRenderIcon('more')"
/>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item>
<el-button
class="reset-margin !h-20px !text-gray-500"
type="text"
:size="size"
:icon="useRenderIcon('menu')"
>
菜单权限
</el-button>
</el-dropdown-item>
<el-dropdown-item>
<el-button
class="reset-margin !h-20px !text-gray-500"
type="text"
:size="size"
:icon="useRenderIcon('database')"
>
数据权限
</el-button>
</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</template>
</el-table-column>
</el-table>
@ -237,3 +301,9 @@ onMounted(() => {
</EpTableProBar>
</div>
</template>
<style scoped lang="scss">
:deep(.el-dropdown-menu__item i) {
margin: 0;
}
</style>