From 4f8d3c1bd0d262934c4a7dd4f042c7f83ecbb137 Mon Sep 17 00:00:00 2001 From: Lufaneng Date: Thu, 31 Jul 2025 15:48:27 +0800 Subject: [PATCH] 1 --- src/components.d.ts | 16 +- src/components/MapSelector.md | 89 -------- src/components/UploadFile.vue | 67 ++++++ src/config/map.js | 2 +- src/layout/components/aside.vue | 136 +++++++----- src/router/index.js | 11 +- src/utils/hook.js | 2 +- src/views/BusinessManage/DataManage.vue | 116 ++++++++++- src/views/BusinessManage/DataManageDialog.vue | 179 ++++++++++++++++ src/views/BusinessManage/HandleDialog.vue | 134 +++++++++--- src/views/BusinessManage/index.vue | 194 ++++++++++++------ src/views/MessageCenter/HandleDialog.vue | 163 +++++++++++++++ src/views/MessageCenter/index.vue | 177 +++++++++++++++- vite.config.js | 4 + 14 files changed, 1025 insertions(+), 265 deletions(-) delete mode 100644 src/components/MapSelector.md create mode 100644 src/components/UploadFile.vue create mode 100644 src/views/BusinessManage/DataManageDialog.vue create mode 100644 src/views/MessageCenter/HandleDialog.vue diff --git a/src/components.d.ts b/src/components.d.ts index 0aad524..508bf81 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -22,13 +22,13 @@ declare module 'vue' { ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElHeader: typeof import('element-plus/es')['ElHeader'] ElIcon: typeof import('element-plus/es')['ElIcon'] + ElImage: typeof import('element-plus/es')['ElImage'] ElInput: typeof import('element-plus/es')['ElInput'] ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] ElMain: typeof import('element-plus/es')['ElMain'] ElMenu: typeof import('element-plus/es')['ElMenu'] ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] ElOption: typeof import('element-plus/es')['ElOption'] - ElOptionGroup: typeof import('element-plus/es')['ElOptionGroup'] ElPagination: typeof import('element-plus/es')['ElPagination'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElSelect: typeof import('element-plus/es')['ElSelect'] @@ -36,23 +36,11 @@ declare module 'vue' { ElTable: typeof import('element-plus/es')['ElTable'] ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] ElUpload: typeof import('element-plus/es')['ElUpload'] - IEpHelpFilled: typeof import('~icons/ep/help-filled')['default'] - IEpHomeFilled: typeof import('~icons/ep/home-filled')['default'] - IEpMenu: typeof import('~icons/ep/menu')['default'] - IEpMessageBox: typeof import('~icons/ep/message-box')['default'] - IEpPlus: typeof import('~icons/ep/plus')['default'] - IEpScaleToOriginal: typeof import('~icons/ep/scale-to-original')['default'] MapSelector: typeof import('./components/MapSelector.vue')['default'] - MapSelectorFinal: typeof import('./components/MapSelectorFinal.vue')['default'] - MapSelectorFixed: typeof import('./components/MapSelectorFixed.vue')['default'] - MapSelectorOptimized: typeof import('./components/MapSelectorOptimized.vue')['default'] - MapSelectorSimple: typeof import('./components/MapSelectorSimple.vue')['default'] - MapSelectorWithMarker: typeof import('./components/MapSelectorWithMarker.vue')['default'] - MapTest: typeof import('./components/MapTest.vue')['default'] Pagination: typeof import('./components/Pagination/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] - SimpleMapTest: typeof import('./components/SimpleMapTest.vue')['default'] + UploadFile: typeof import('./components/UploadFile.vue')['default'] } export interface ComponentCustomProperties { vLoading: typeof import('element-plus/es')['ElLoadingDirective'] diff --git a/src/components/MapSelector.md b/src/components/MapSelector.md deleted file mode 100644 index be585cc..0000000 --- a/src/components/MapSelector.md +++ /dev/null @@ -1,89 +0,0 @@ -# 腾讯地图坐标选择器使用说明 (基于 tlbs-map-vue) - -## 功能说明 -MapSelector 是一个基于 `tlbs-map-vue` 的坐标选择器组件,用于在地图上选择经纬度坐标。 - -## 技术栈 -- Vue 3 -- tlbs-map-vue (腾讯地图官方 Vue 组件库) -- Element Plus - -## 安装依赖 -```bash -npm install tlbs-map-vue -``` - -## 使用方法 - -### 1. 配置腾讯地图API密钥 -在 `src/config/map.js` 文件中,将 `TENCENT_MAP_KEY` 替换为你的实际API密钥: - -```javascript -export const MAP_CONFIG = { - TENCENT_MAP_KEY: '你的腾讯地图API密钥', - // ...其他配置 -} -``` - -### 2. 获取腾讯地图API密钥 -1. 访问腾讯位置服务官网:https://lbs.qq.com/ -2. 注册并登录账号 -3. 创建应用并获取API密钥(WebServiceAPI密钥) -4. 在控制台中配置域名白名单 - -### 3. 在组件中使用 -```vue - - - -``` - -## Props -- `modelValue`: Boolean - 控制对话框显示/隐藏 -- `longitude`: Number - 初始经度值 -- `latitude`: Number - 初始纬度值 - -## Events -- `update:modelValue`: 更新对话框显示状态 -- `confirm`: 确认选择坐标时触发,返回 `{longitude, latitude}` 对象 - -## 特性 -- ✅ 基于腾讯地图官方 Vue 组件库 -- ✅ 支持点击地图选择坐标 -- ✅ 实时显示选择的经纬度 -- ✅ 支持初始坐标显示 -- ✅ 响应式设计 -- ✅ 自动处理地图加载 - -## 注意事项 -1. 确保已正确配置腾讯地图API密钥 -2. 需要在腾讯地图控制台中配置域名白名单 -3. 在生产环境中建议将API密钥配置在环境变量中 -4. 使用的是 WebServiceAPI 密钥,不是 JavaScript API 密钥 - -## 故障排除 -如果地图无法显示: -1. 检查 API 密钥是否正确 -2. 确认域名已添加到白名单 -3. 检查网络连接 -4. 查看浏览器控制台错误信息 \ No newline at end of file diff --git a/src/components/UploadFile.vue b/src/components/UploadFile.vue new file mode 100644 index 0000000..638805a --- /dev/null +++ b/src/components/UploadFile.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/src/config/map.js b/src/config/map.js index 94b1acc..83f2706 100644 --- a/src/config/map.js +++ b/src/config/map.js @@ -1,7 +1,7 @@ // 地图配置 export const MAP_CONFIG = { // 腾讯地图API密钥 - 请替换为你的实际密钥 - TENCENT_MAP_KEY: 'HGWBZ-QUB6Z-C7KXZ-TJRCH-IFLLO-AMFIJ', + TENCENT_MAP_KEY: 'N6LBZ-JLDCT-SQNXQ-LQUWR-6PQX7-TQBQN', // 默认地图中心点(北京) DEFAULT_CENTER: { diff --git a/src/layout/components/aside.vue b/src/layout/components/aside.vue index 9aaa0bd..bdaed0d 100644 --- a/src/layout/components/aside.vue +++ b/src/layout/components/aside.vue @@ -1,67 +1,103 @@ \ No newline at end of file + diff --git a/src/router/index.js b/src/router/index.js index 0433a5f..2c47b8a 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -22,19 +22,19 @@ export const routes = [ path: 'BusinessManage', name: 'BusinessManage', redirect: '/BusinessManage/EnterpriseManage', - meta: { title: '企业管理' }, + meta: { title: '门店管理' }, children: [ { path: 'EnterpriseManage', name: 'EnterpriseManage', component: () => import('@/views/BusinessManage/index.vue'), - meta: { title: '企业列表', hide: true }, + meta: { title: '门店列表' }, }, { path: 'DataManage', name: 'DataManage', component: () => import('@/views/BusinessManage/DataManage.vue'), - meta: { title: '资料管理', hide: true }, + meta: { title: '分类管理' }, }, ], }, @@ -48,7 +48,7 @@ export const routes = [ path: 'MessageCenter', name: 'MessageCenter', component: () => import('@/views/MessageCenter/index.vue'), - meta: { title: '消息中心' }, + meta: { title: '门店审核', needAdmin: true }, }, ], }, @@ -74,6 +74,9 @@ router.beforeEach((to) => { NProgress.start() // 如果没有 token ,并且不在白名单中,则从定向到登陆 if (!useUserStore().token && !wihteList.includes(to.path)) return '/login' + if (to.meta.needAdmin && !(useUserStore().userInfo?.jurisdictions?.findIndex(item => item.code === 'superadmin') !== -1)) { + return false + } }) // 全局后置导航守卫 diff --git a/src/utils/hook.js b/src/utils/hook.js index 606fc0b..e01fdb5 100644 --- a/src/utils/hook.js +++ b/src/utils/hook.js @@ -165,7 +165,7 @@ export function useTableRPC({ RPC.post(remoteDataFn, params) .then((response) => { tableData.value = response?.rows || [] - total.value = response.count + total.value = response.count || 0 }) .finally(() => { loading.value = false diff --git a/src/views/BusinessManage/DataManage.vue b/src/views/BusinessManage/DataManage.vue index 5339c1a..7d9ce90 100644 --- a/src/views/BusinessManage/DataManage.vue +++ b/src/views/BusinessManage/DataManage.vue @@ -1,11 +1,121 @@ - \ No newline at end of file + diff --git a/src/views/BusinessManage/DataManageDialog.vue b/src/views/BusinessManage/DataManageDialog.vue new file mode 100644 index 0000000..602ece8 --- /dev/null +++ b/src/views/BusinessManage/DataManageDialog.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/src/views/BusinessManage/HandleDialog.vue b/src/views/BusinessManage/HandleDialog.vue index 9172171..790ec54 100644 --- a/src/views/BusinessManage/HandleDialog.vue +++ b/src/views/BusinessManage/HandleDialog.vue @@ -1,33 +1,18 @@