From 76f2c48e8fb1d58e9b9b4c5d5faed0c0303af05d Mon Sep 17 00:00:00 2001 From: gaofy <1014893517@qq.com> Date: Mon, 18 Dec 2023 14:29:28 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E5=8C=BB=E7=94=9F=E7=AE=A1?= =?UTF-8?q?=E7=90=86=EF=BC=8C=E6=B7=BB=E5=8A=A0xlxs=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 +- src/assets/css/animastore.css | 29 +++- src/assets/css/custom-element.scss | 4 + src/components/import-dialog.vue | 67 +++++++++ src/utils/table-util.ts | 50 +++++++ src/views/home/home.vue | 6 +- src/views/home/record-form.vue | 2 +- .../permissions-manage/doctor-manage.vue | 99 +++++++++++-- .../permissions-manage/form/doctor-form.vue | 133 ++++++++++++++++++ .../permissions-manage/permissions-manage.vue | 1 - 10 files changed, 372 insertions(+), 22 deletions(-) create mode 100644 src/components/import-dialog.vue create mode 100644 src/utils/table-util.ts create mode 100644 src/views/permissions-manage/form/doctor-form.vue diff --git a/package.json b/package.json index 584b139..efb01f6 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "sass": "^1.58.3", "slider-verify-v3": "^1.1.11", "vue": "^3.2.45", - "vue-router": "^4.1.6" + "vue-router": "^4.1.6", + "xlsx": "^0.18.5" }, "devDependencies": { "@types/node": "^18.11.12", diff --git a/src/assets/css/animastore.css b/src/assets/css/animastore.css index 87bf132..1f27f5c 100644 --- a/src/assets/css/animastore.css +++ b/src/assets/css/animastore.css @@ -963,14 +963,39 @@ } .swing_skew_1 { - animation: swing_skew_1 1s ease; + animation: swing_skew_1 1.5s ease; transform-origin: 0% 100%; } @keyframes swing_skew_1 { 0% { opacity: 0; - transform: translateX(400px) skew(-45deg) + transform: translateX(100%) skew(-45deg) + } + + 30% { + opacity: 1; + transform: translateX(0) skew(8deg); + } + + 50% { + transform: translateX(0) skew(-3deg); + } + + 70% { + transform: translateX(0) skew(1deg); + } +} + +.swing_skew_2 { + animation: swing_skew_2 1.5s ease; + transform-origin: 0% 100%; +} + +@keyframes swing_skew_2 { + 0% { + opacity: 0; + transform: translateX(-100%) skew(-45deg) } 30% { diff --git a/src/assets/css/custom-element.scss b/src/assets/css/custom-element.scss index de446ad..a39035b 100644 --- a/src/assets/css/custom-element.scss +++ b/src/assets/css/custom-element.scss @@ -33,6 +33,9 @@ &:focus { color: rgba($main-color, .7); } + &:focus-visible { + outline: 0; + } } .el-button.el-button--primary { background-color: $main-color; @@ -61,6 +64,7 @@ } .el-dialog { + border-radius: 20px; .el-dialog__header { padding: 30px 30px 0 30px; .el-dialog__headerbtn { diff --git a/src/components/import-dialog.vue b/src/components/import-dialog.vue new file mode 100644 index 0000000..f05ee1c --- /dev/null +++ b/src/components/import-dialog.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/src/utils/table-util.ts b/src/utils/table-util.ts new file mode 100644 index 0000000..b2613c2 --- /dev/null +++ b/src/utils/table-util.ts @@ -0,0 +1,50 @@ +import * as XLSX from "xlsx" +import { ElMessage, ElMessageBox } from 'element-plus' + +export const tableRemoveRow = (params: any, callback: (res: boolean) => void) => { + if (!params.data) params.data = [] + if (Array.isArray(params.data)) { + if (params.data.length < 1) { + ElMessageBox.alert('请至少选择一条数据进行删除', '系统提醒', { type: 'warning' }) + return callback(false) + } + ElMessageBox.confirm( + params.batchRemoveTip || '是否确认删除选中的' + params.data.length + '条数据?此操作将永久删除', + '系统提醒', + { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + } + ).then(() => { + ElMessage.success('删除成功!') + callback(true) + }).catch(() => { + callback(false) + }) + } else { + ElMessageBox.confirm( + params.removeTip || '此操作将永久删除', + '系统提醒', + { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + } + ).then(() => { + ElMessage.success('删除成功!') + callback(true) + }).catch(() => { + callback(false) + }) + } +} + +export const exportData = (fileName: string, data: Array) => { + const wb = XLSX.utils.book_new(); + XLSX.utils.book_append_sheet( + wb, + XLSX.utils.json_to_sheet(data) + ); + XLSX.writeFile(wb, fileName + '.xls'); // 导出Excel +} \ No newline at end of file diff --git a/src/views/home/home.vue b/src/views/home/home.vue index 4daeeac..b0c545f 100644 --- a/src/views/home/home.vue +++ b/src/views/home/home.vue @@ -2,7 +2,7 @@
-
+
{{ userInfo.name }} {{ userInfo.permissions }} @@ -18,10 +18,10 @@
-
+
-
+
diff --git a/src/views/home/record-form.vue b/src/views/home/record-form.vue index def9a41..18e2d70 100644 --- a/src/views/home/record-form.vue +++ b/src/views/home/record-form.vue @@ -57,7 +57,7 @@ const rules = reactive({ { required: true, message: '请选择类型', trigger: 'blur' }, ], state: [ - { required: true, message: '请选中状态', trigger: 'blur' }, + { required: true, message: '请选择状态', trigger: 'blur' }, ], date: [ { required: true, message: '请输入日期', trigger: 'blur' }, diff --git a/src/views/permissions-manage/doctor-manage.vue b/src/views/permissions-manage/doctor-manage.vue index 1c57b68..a88a306 100644 --- a/src/views/permissions-manage/doctor-manage.vue +++ b/src/views/permissions-manage/doctor-manage.vue @@ -5,32 +5,38 @@ 用户名
- 查询 - 重置 + 查询 + 重置
- 新增 - 导入 - 删除 - 导出 + 新增 + 导入 + 删除 + 导出
- + - + - + @@ -39,15 +45,26 @@
+ + - + diff --git a/src/views/permissions-manage/form/doctor-form.vue b/src/views/permissions-manage/form/doctor-form.vue new file mode 100644 index 0000000..b78afec --- /dev/null +++ b/src/views/permissions-manage/form/doctor-form.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/src/views/permissions-manage/permissions-manage.vue b/src/views/permissions-manage/permissions-manage.vue index 3ab64c6..a1e22e9 100644 --- a/src/views/permissions-manage/permissions-manage.vue +++ b/src/views/permissions-manage/permissions-manage.vue @@ -30,7 +30,6 @@ const menuData = [ const pageTabsRef = ref() const selectMenu = (e: MenuItem) => { - console.log(e) pageTabsRef.value.setTab(e) }