diff --git a/package.json b/package.json index 5d3cd90..17219c4 100644 --- a/package.json +++ b/package.json @@ -1,43 +1,43 @@ { - "name": "msb-shop-admin", - "author": { - "name": "向文可", - "email": "1041367524@qq.com" - }, - "private": true, - "version": "0.0.1", - "scripts": { - "dev": "vite", - "build:test": "vite build --mode test", - "build:preview": "vite build --mode preview", - "build:prod": "vite build --mode prod", - "preview": "vite preview" - }, - "dependencies": { - "@element-plus/icons": "^0.0.11", - "axios": "^0.26.1", - "dayjs": "^1.11.0", - "element-plus": "^2.1.2", - "lodash": "^4.17.21", - "qs": "^6.10.3", - "sortablejs": "^1.14.0", - "vue": "^3.2.25", - "vue-router": "^4.0.14", - "vuex": "^4.0.2" - }, - "devDependencies": { - "@originjs/vite-plugin-global-style": "^1.0.2", - "@types/node": "^17.0.21", - "@vitejs/plugin-legacy": "^1.7.1", - "@vitejs/plugin-vue": "^2.2.0", - "@vitejs/plugin-vue-jsx": "^1.3.8", - "consola": "^2.15.3", - "less": "^4.1.2", - "unplugin-auto-import": "^0.6.4", - "unplugin-vue-components": "^0.18.0", - "vite": "^2.8.0", - "vite-plugin-remove-console": "^0.0.6", - "vite-plugin-style-import": "^2.0.0", - "vite-plugin-svg-icons": "^2.0.1" - } + "name": "msb-shop-admin", + "author": { + "name": "向文可", + "email": "1041367524@qq.com" + }, + "private": true, + "version": "0.0.1", + "scripts": { + "dev": "vite", + "build:test": "vite build --mode test", + "build:preview": "vite build --mode preview", + "build:prod": "vite build --mode prod", + "preview": "vite preview" + }, + "dependencies": { + "@element-plus/icons": "^0.0.11", + "axios": "^0.26.1", + "dayjs": "^1.11.0", + "element-plus": "^2.1.2", + "lodash": "^4.17.21", + "qs": "^6.10.3", + "sortablejs": "^1.14.0", + "vue": "^3.2.25", + "vue-router": "^4.0.14", + "vuex": "^4.0.2" + }, + "devDependencies": { + "@originjs/vite-plugin-global-style": "^1.0.2", + "@types/node": "^17.0.21", + "@vitejs/plugin-legacy": "^1.7.1", + "@vitejs/plugin-vue": "^2.2.0", + "@vitejs/plugin-vue-jsx": "^1.3.8", + "consola": "^2.15.3", + "less": "^4.1.2", + "unplugin-auto-import": "^0.6.4", + "unplugin-vue-components": "^0.18.0", + "vite": "^2.8.0", + "vite-plugin-remove-console": "^0.0.6", + "vite-plugin-style-import": "^2.0.0", + "vite-plugin-svg-icons": "^2.0.1" + } } diff --git a/src/components/SortableTable.vue b/src/components/SortableTable.vue new file mode 100644 index 0000000..514ec0e --- /dev/null +++ b/src/components/SortableTable.vue @@ -0,0 +1,293 @@ + + + + diff --git a/src/layouts/components/main.vue b/src/layouts/components/main.vue index 39fc213..b20c095 100644 --- a/src/layouts/components/main.vue +++ b/src/layouts/components/main.vue @@ -14,14 +14,16 @@ background-color: @color-white; border-radius: @layout-border-radius; box-shadow: @layout-shadow; - :deep(.el-scrollbar__view) { - width: 100%; - height: 100%; - > * { - // display: inline-block; // 创建BFC + > :deep(.el-scrollbar__wrap) { + > .el-scrollbar__view { width: 100%; height: 100%; - padding: @layout-space-large; + > * { + // display: inline-block; // 创建BFC + width: 100%; + height: 100%; + padding: @layout-space-large; + } } } } diff --git a/src/router/demo.js b/src/router/demo.js new file mode 100644 index 0000000..6312e74 --- /dev/null +++ b/src/router/demo.js @@ -0,0 +1,22 @@ +export default [ + { + path: '/demo', + name: 'Demo', + component: () => import('@/layouts/default.vue'), + meta: { + title: '组件示例', + icon: 'home-fill', + }, + children: [ + { + path: 'sortable', + name: 'SortableTableDemo', + component: () => import('@/views/demo/sortableTableDemo.vue'), + meta: { + title: '拖拽排序', + icon: 'home-fill', + }, + }, + ], + }, +]; diff --git a/src/router/index.js b/src/router/index.js index a6c349e..2cba8e1 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -20,6 +20,10 @@ export const globalRoutes = [ }, ]; +// 示例模块 +import demoModule from './demo'; +export const demeRoutes = import.meta.env.DEV ? demoModule : []; + // 动态模块 const dynamicRoutes = []; const modules = import.meta.globEager('./modules/*.js'); diff --git a/src/store/modules/auth.js b/src/store/modules/auth.js index d5f9ee1..2535eaf 100644 --- a/src/store/modules/auth.js +++ b/src/store/modules/auth.js @@ -1,6 +1,6 @@ import { getUserInfo, getPermission, sendSmsCode, login } from '@/api/auth'; import { ElMessage } from '@/plugins/element-plus'; -import router, { reset as resetRoutes } from '@/router'; +import router, { reset as resetRoutes, demeRoutes } from '@/router'; import config from '@/configs'; const viewComponents = import.meta.glob('../../views/**/*.vue'); const state = () => ({ @@ -56,7 +56,9 @@ const mutations = { return route; }); }; - state.permission = config.useLocalRouter ? data : convert(data); + data = config.useLocalRouter ? data : convert(data); + data.push(...demeRoutes); + state.permission = data; resetRoutes(state.permission); }, }; diff --git a/src/styles/base.less b/src/styles/base.less index ff7a3b7..aa7c46b 100644 --- a/src/styles/base.less +++ b/src/styles/base.less @@ -4,6 +4,10 @@ body, width: 100vw; height: 100vh; } +ul, +ol { + list-style: none; +} // *:not([class^='el-']):not([class^='el-'] *) { *:not([class^='el-']) { margin: 0; diff --git a/src/views/demo/sortableTableDemo.vue b/src/views/demo/sortableTableDemo.vue new file mode 100644 index 0000000..693e2c4 --- /dev/null +++ b/src/views/demo/sortableTableDemo.vue @@ -0,0 +1,218 @@ + + + diff --git a/src/views/home/index.vue b/src/views/home/index.vue index 0f2fccd..ac36386 100644 --- a/src/views/home/index.vue +++ b/src/views/home/index.vue @@ -1,20 +1,5 @@