diff --git a/components.d.ts b/components.d.ts index a9b470e..25a75fb 100644 --- a/components.d.ts +++ b/components.d.ts @@ -24,6 +24,7 @@ declare module '@vue/runtime-core' { ElIcon: typeof import('element-plus/es')['ElIcon'] ElImage: typeof import('element-plus/es')['ElImage'] ElInput: typeof import('element-plus/es')['ElInput'] + ElLink: typeof import('element-plus/es')['ElLink'] ElMenu: typeof import('element-plus/es')['ElMenu'] ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] ElOption: typeof import('element-plus/es')['ElOption'] diff --git a/package-lock.json b/package-lock.json index 5d62569..371e34d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2193,6 +2193,11 @@ "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true }, + "adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==" + }, "anymatch": { "version": "3.1.2", "resolved": "https://repo.huaweicloud.com/repository/npm/anymatch/-/anymatch-3.1.2.tgz", @@ -2252,6 +2257,15 @@ "fill-range": "^7.0.1" } }, + "cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "requires": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + } + }, "chokidar": { "version": "3.5.3", "resolved": "https://repo.huaweicloud.com/repository/npm/chokidar/-/chokidar-3.5.3.tgz", @@ -2268,6 +2282,11 @@ "readdirp": "~3.6.0" } }, + "codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==" + }, "combined-stream": { "version": "1.0.8", "resolved": "https://repo.huaweicloud.com/repository/npm/combined-stream/-/combined-stream-1.0.8.tgz", @@ -2281,6 +2300,11 @@ "resolved": "https://repo.huaweicloud.com/repository/npm/core-js-pure/-/core-js-pure-3.24.1.tgz", "integrity": "sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg==" }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" + }, "cropperjs": { "version": "1.5.12", "resolved": "https://repo.huaweicloud.com/repository/npm/cropperjs/-/cropperjs-1.5.12.tgz", @@ -2570,6 +2594,11 @@ "mime-types": "^2.1.12" } }, + "frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==" + }, "fsevents": { "version": "2.3.2", "resolved": "https://repo.huaweicloud.com/repository/npm/fsevents/-/fsevents-2.3.2.tgz", @@ -2896,6 +2925,14 @@ "resolved": "https://repo.huaweicloud.com/repository/npm/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, + "ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "requires": { + "frac": "~1.1.2" + } + }, "strip-literal": { "version": "0.4.0", "resolved": "https://repo.huaweicloud.com/repository/npm/strip-literal/-/strip-literal-0.4.0.tgz", @@ -3105,6 +3142,30 @@ "resolved": "https://repo.huaweicloud.com/repository/npm/webpack-virtual-modules/-/webpack-virtual-modules-0.4.4.tgz", "integrity": "sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA==", "dev": true + }, + "wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" + }, + "word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" + }, + "xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "requires": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + } } } } diff --git a/package.json b/package.json index c104840..e0fad80 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "vue-cropperjs": "^5.0.0", "vue-router": "^4.1.3", "vue-schart": "^2.0.0", - "wangeditor": "^4.7.15" + "wangeditor": "^4.7.15", + "xlsx": "^0.18.5" }, "devDependencies": { "@vitejs/plugin-vue": "^3.0.0", diff --git a/public/template.xlsx b/public/template.xlsx new file mode 100644 index 0000000..5d17cf7 Binary files /dev/null and b/public/template.xlsx differ diff --git a/src/App.vue b/src/App.vue index aade1f9..f0fca28 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,7 +1,13 @@ - + + + + diff --git a/src/main.ts b/src/main.ts index a06240b..43ae5c7 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,34 +1,28 @@ -import {createApp} from 'vue' -import { createPinia } from 'pinia' -import ElementPlus from 'element-plus' -import * as ElementPlusIconsVue from '@element-plus/icons-vue' -import zhCn from 'element-plus/es/locale/lang/zh-cn' -import App from './App.vue' -import router from './router' -import { usePermissStore } from './store/permiss' -import 'element-plus/dist/index.css' -import './assets/css/icon.css' +import { createApp } from 'vue'; +import { createPinia } from 'pinia'; +import * as ElementPlusIconsVue from '@element-plus/icons-vue'; +import App from './App.vue'; +import router from './router'; +import { usePermissStore } from './store/permiss'; +import 'element-plus/dist/index.css'; +import './assets/css/icon.css'; +const app = createApp(App); +app.use(createPinia()); +app.use(router); -const app = createApp(App) - -app.use(createPinia()) -app.use(router) -app.use(ElementPlus, { - locale: zhCn, -}) // 注册elementplus图标 for (const [key, component] of Object.entries(ElementPlusIconsVue)) { - app.component(key, component) + app.component(key, component); } // 自定义权限指令 -const permiss = usePermissStore() +const permiss = usePermissStore(); app.directive('permiss', { mounted(el, binding) { - if(!permiss.key.includes(String(binding.value))){ + if (!permiss.key.includes(String(binding.value))) { el['hidden'] = true; } - } -}) + }, +}); -app.mount('#app') \ No newline at end of file +app.mount('#app'); diff --git a/src/views/dashboard.vue b/src/views/dashboard.vue index 6ba78fa..5e6d039 100644 --- a/src/views/dashboard.vue +++ b/src/views/dashboard.vue @@ -26,10 +26,13 @@ Vue - JavaScript - CSS - HTML - + + TypeScript + + CSS + + HTML + diff --git a/src/views/export.vue b/src/views/export.vue new file mode 100644 index 0000000..21ecf6b --- /dev/null +++ b/src/views/export.vue @@ -0,0 +1,98 @@ + + + + + 导出Excel + + + + + + + + + + + + + + + + diff --git a/src/views/form.vue b/src/views/form.vue index 2744e68..75609ae 100644 --- a/src/views/form.vue +++ b/src/views/form.vue @@ -1,66 +1,66 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 表单提交 - 重置表单 - - - - + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 表单提交 + 重置表单 + + + + diff --git a/src/views/import.vue b/src/views/import.vue new file mode 100644 index 0000000..e0ca8c3 --- /dev/null +++ b/src/views/import.vue @@ -0,0 +1,118 @@ + + + + + + 批量导入 + + 下载模板 + + + + + + + + + + + + + + + + diff --git a/src/views/table.vue b/src/views/table.vue index cd9453f..6888ccb 100644 --- a/src/views/table.vue +++ b/src/views/table.vue @@ -177,7 +177,7 @@ const saveEdit = () => { font-size: 14px; } .red { - color: #ff0000; + color: #F56C6C; } .mr10 { margin-right: 10px; diff --git a/src/views/upload.vue b/src/views/upload.vue index f935ec6..960edc3 100644 --- a/src/views/upload.vue +++ b/src/views/upload.vue @@ -1,76 +1,48 @@ - - 支持拖拽 - - Element Plus自带上传组件。 访问地址: - Element Plus Upload - - - - - 将文件拖到此处,或 - 点击上传 - - - 只能上传 jpg/png 文件,且不超过 500kb - - + + 支持拖拽 + + Element Plus自带上传组件。 访问地址: + Element Plus Upload + + + + + 将文件拖到此处,或 + 点击上传 + + - 支持裁剪 - - vue-cropperjs:一个封装了 cropperjs 的 Vue 组件。 访问地址: - vue-cropperjs。 示例请查看 - 个人中心 - - + 支持裁剪 + + vue-cropperjs:一个封装了 cropperjs 的 Vue 组件。 访问地址: + vue-cropperjs。 示例请查看 + 个人中心 + +