diff --git a/package-lock.json b/package-lock.json index 146e600..75d8156 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "JinShan-Admin", "version": "1.0.0", "dependencies": { + "@amap/amap-jsapi-loader": "^1.0.1", "@ant-design/colors": "^7.0.0", "@ant-design/icons-vue": "^6.1.0", "@icon-park/vue-next": "^1.4.2", @@ -242,6 +243,12 @@ "@algolia/requester-common": "4.19.1" } }, + "node_modules/@amap/amap-jsapi-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz", + "integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==", + "license": "MIT" + }, "node_modules/@ant-design/colors": { "version": "7.0.0", "resolved": "https://registry.npmmirror.com/@ant-design/colors/-/colors-7.0.0.tgz", @@ -5514,6 +5521,11 @@ "@algolia/requester-common": "4.19.1" } }, + "@amap/amap-jsapi-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz", + "integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==" + }, "@ant-design/colors": { "version": "7.0.0", "resolved": "https://registry.npmmirror.com/@ant-design/colors/-/colors-7.0.0.tgz", diff --git a/package.json b/package.json index 6f07182..fdad0c8 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "src/**/*.{js,vue}": "eslint --ext .js,.vue .eslintignore --no-cache --fix" }, "dependencies": { + "@amap/amap-jsapi-loader": "^1.0.1", "@ant-design/colors": "^7.0.0", "@ant-design/icons-vue": "^6.1.0", "@icon-park/vue-next": "^1.4.2", diff --git a/src/apis/modules/customer.js b/src/apis/modules/customer.js new file mode 100644 index 0000000..f4bc68d --- /dev/null +++ b/src/apis/modules/customer.js @@ -0,0 +1,14 @@ +/** + * 图片管理接口 + */ +import request from '@/utils/request' +// 获取菜单列表 +export const getDataList = (params) => request.basic.get('/api/v1/customers', params) +// 获取菜单条数据 +export const getMenu = (id) => request.basic.get(`/api/v1/customers/${id}`) +// 添加菜单 +export const createMenu = (params) => request.basic.post('/api/v1/customers', params) +// 更新菜单 +export const updateMenu = (id, params) => request.basic.put(`/api/v1/customers/${id}`, params) +// 删除菜单 +export const delMenu = (id) => request.basic.delete(`/api/v1/customers/${id}`) diff --git a/src/apis/modules/mettingRoom.js b/src/apis/modules/mettingRoom.js new file mode 100644 index 0000000..4835a4e --- /dev/null +++ b/src/apis/modules/mettingRoom.js @@ -0,0 +1,14 @@ +/** + * 图片管理接口 + */ +import request from '@/utils/request' +// 获取菜单列表 +export const getDataList = (params) => request.basic.get('/api/v1/metting-rooms', params) +// 获取菜单条数据 +export const getMenu = (id) => request.basic.get(`/api/v1/metting-rooms/${id}`) +// 添加菜单 +export const createMenu = (params) => request.basic.post('/api/v1/metting-rooms', params) +// 更新菜单 +export const updateMenu = (id, params) => request.basic.put(`/api/v1/metting-rooms/${id}`, params) +// 删除菜单 +export const delMenu = (id) => request.basic.delete(`/api/v1/metting-rooms/${id}`) diff --git a/src/apis/modules/mettingYuYue.js b/src/apis/modules/mettingYuYue.js new file mode 100644 index 0000000..0994cd4 --- /dev/null +++ b/src/apis/modules/mettingYuYue.js @@ -0,0 +1,14 @@ +/** + * 图片管理接口 + */ +import request from '@/utils/request' +// 获取菜单列表 +export const getDataList = (params) => request.basic.get('/api/v1/metting-room-orders', params) +// 获取菜单条数据 +export const getMenu = (id) => request.basic.get(`/api/v1/metting-room-orders/${id}`) +// 添加菜单 +export const createMenu = (params) => request.basic.post('/api/v1/metting-room-orders', params) +// 更新菜单 +export const updateMenu = (id, params) => request.basic.put(`/api/v1/metting-room-orders/${id}`, params) +// 删除菜单 +export const delMenu = (id) => request.basic.delete(`/api/v1/metting-room-orders/${id}`) diff --git a/src/apis/modules/mutualComment.js b/src/apis/modules/mutualComment.js new file mode 100644 index 0000000..58a69ed --- /dev/null +++ b/src/apis/modules/mutualComment.js @@ -0,0 +1,14 @@ +/** + * 图片管理接口 + */ +import request from '@/utils/request' +// 获取菜单列表 +export const getDataList = (params) => request.basic.get('api/v1/mutualComment', params) +// 获取菜单条数据 +export const getMenu = (id) => request.basic.get(`api/v1/mutualComment/${id}`) +// 添加菜单 +export const createMenu = (params) => request.basic.post('api/v1/mutualComment', params) +// 更新菜单 +export const updateMenu = (id, params) => request.basic.put(`api/v1/mutualComment/${id}`, params) +// 删除菜单 +export const delMenu = (id) => request.basic.delete(`api/v1/mutualComment/${id}`) diff --git a/src/apis/modules/nbdMutuaAid.js b/src/apis/modules/nbdMutuaAid.js new file mode 100644 index 0000000..28b0ab0 --- /dev/null +++ b/src/apis/modules/nbdMutuaAid.js @@ -0,0 +1,16 @@ +/** + * 图片管理接口 + */ +import request from '@/utils/request' +// 获取菜单列表 +export const getDataList = (params) => request.basic.get('/api/v1/reciprocities', params) +// 获取菜单条数据 +export const getMenu = (id) => request.basic.get(`/api/v1/reciprocities/${id}`) +// 添加菜单 +export const createMenu = (params) => request.basic.post('/api/v1/reciprocities', params) +// 更新菜单 +export const updateMenu = (id, params) => request.basic.put(`/api/v1/reciprocities/${id}`, params) +// 删除菜单 +export const delMenu = (id) => request.basic.delete(`/api/v1/reciprocities/${id}`) +// 获取评论历史 +export const getList = (id) => request.basic.get(`/api/v1/reciprocity-histories/${id}`) diff --git a/src/apis/modules/orderList.js b/src/apis/modules/orderList.js new file mode 100644 index 0000000..a3390e1 --- /dev/null +++ b/src/apis/modules/orderList.js @@ -0,0 +1,14 @@ +/** + * 图片管理接口 + */ +import request from '@/utils/request' +// 获取菜单列表 +export const getDataList = (params) => request.basic.get('/api/v1/work-orders', params) +// 获取菜单条数据 +export const getMenu = (id) => request.basic.get(`/api/v1/work-orders/${id}`) +// 添加菜单 +export const createMenu = (params) => request.basic.post('/api/v1/work-orders', params) +// 更新菜单 +export const updateMenu = (id, params) => request.basic.put(`/api/v1/work-orders/${id}`, params) +// 删除菜单 +export const delMenu = (id) => request.basic.delete(`/api/v1/work-orders/${id}`) diff --git a/src/apis/modules/orderType.js b/src/apis/modules/orderType.js new file mode 100644 index 0000000..3ac222e --- /dev/null +++ b/src/apis/modules/orderType.js @@ -0,0 +1,14 @@ +/** + * 图片管理接口 + */ +import request from '@/utils/request' +// 获取菜单列表 +export const getDataList = (params) => request.basic.get('/api/v1/work-order-types', params) +// 获取菜单条数据 +export const getMenu = (id) => request.basic.get(`/api/v1/work-order-types/${id}`) +// 添加菜单 +export const createMenu = (params) => request.basic.post('/api/v1/work-order-types', params) +// 更新菜单 +export const updateMenu = (id, params) => request.basic.put(`/api/v1/work-order-types/${id}`, params) +// 删除菜单 +export const delMenu = (id) => request.basic.delete(`/api/v1/work-order-types/${id}`) diff --git a/src/apis/modules/serverList.js b/src/apis/modules/serverList.js new file mode 100644 index 0000000..f9ff955 --- /dev/null +++ b/src/apis/modules/serverList.js @@ -0,0 +1,14 @@ +/** + * 图片管理接口 + */ +import request from '@/utils/request' +// 获取菜单列表 +export const getDataList = (params) => request.basic.get('/api/v1/surrounding-services', params) +// 获取菜单条数据 +export const getMenu = (id) => request.basic.get(`/api/v1/surrounding-services/${id}`) +// 添加菜单 +export const createMenu = (params) => request.basic.post('/api/v1/surrounding-services', params) +// 更新菜单 +export const updateMenu = (id, params) => request.basic.put(`/api/v1/surrounding-services/${id}`, params) +// 删除菜单 +export const delMenu = (id) => request.basic.delete(`/api/v1/surrounding-services/${id}`) diff --git a/src/apis/modules/serverType.js b/src/apis/modules/serverType.js new file mode 100644 index 0000000..c0006ed --- /dev/null +++ b/src/apis/modules/serverType.js @@ -0,0 +1,14 @@ +/** + * 图片管理接口 + */ +import request from '@/utils/request' +// 获取菜单列表 +export const getDataList = (params) => request.basic.get('/api/v1/surrounding-service-types', params) +// 获取菜单条数据 +export const getMenu = (id) => request.basic.get(`/api/v1/surrounding-service-types/${id}`) +// 添加菜单 +export const createMenu = (params) => request.basic.post('/api/v1/surrounding-service-types', params) +// 更新菜单 +export const updateMenu = (id, params) => request.basic.put(`/api/v1/surrounding-service-types/${id}`, params) +// 删除菜单 +export const delMenu = (id) => request.basic.delete(`/api/v1/surrounding-service-types/${id}`) diff --git a/src/assets/iconfont/iconfont.css b/src/assets/iconfont/iconfont.css index 0fd2e91..60267ea 100644 --- a/src/assets/iconfont/iconfont.css +++ b/src/assets/iconfont/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "iconfont"; /* Project id 4966438 */ - src: url('iconfont.woff2?t=1751607897346') format('woff2'), - url('iconfont.woff?t=1751607897346') format('woff'), - url('iconfont.ttf?t=1751607897346') format('truetype'); + src: url('iconfont.woff2?t=1752057370159') format('woff2'), + url('iconfont.woff?t=1752057370159') format('woff'), + url('iconfont.ttf?t=1752057370159') format('truetype'); } .iconfont { @@ -13,6 +13,38 @@ -moz-osx-font-smoothing: grayscale; } +.icon-cooperation:before { + content: "\e611"; +} + +.icon-huiyishi:before { + content: "\e614"; +} + +.icon-gongdan:before { + content: "\ec37"; +} + +.icon-zhoubian:before { + content: "\e739"; +} + +.icon-lishi:before { + content: "\e60e"; +} + +.icon-xiangqing:before { + content: "\e63c"; +} + +.icon-kaishi-yuan:before { + content: "\e64b"; +} + +.icon-shenhe:before { + content: "\f195"; +} + .icon-huodongliebiao-copy:before { content: "\e600"; } diff --git a/src/assets/iconfont/iconfont.js b/src/assets/iconfont/iconfont.js index 2145856..65c0bfe 100644 --- a/src/assets/iconfont/iconfont.js +++ b/src/assets/iconfont/iconfont.js @@ -1 +1 @@ -window._iconfont_svg_string_4966438='',(c=>{var t=(e=(e=document.getElementsByTagName("script"))[e.length-1]).getAttribute("data-injectcss"),e=e.getAttribute("data-disable-injectsvg");if(!e){var n,o,i,s,d,l=function(t,e){e.parentNode.insertBefore(t,e)};if(t&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(t){console&&console.log(t)}}n=function(){var t,e=document.createElement("div");e.innerHTML=c._iconfont_svg_string_4966438,(e=e.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",e=e,(t=document.body).firstChild?l(e,t.firstChild):t.appendChild(e))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(n,0):(o=function(){document.removeEventListener("DOMContentLoaded",o,!1),n()},document.addEventListener("DOMContentLoaded",o,!1)):document.attachEvent&&(i=n,s=c.document,d=!1,h(),s.onreadystatechange=function(){"complete"==s.readyState&&(s.onreadystatechange=null,a())})}function a(){d||(d=!0,i())}function h(){try{s.documentElement.doScroll("left")}catch(t){return void setTimeout(h,50)}a()}})(window); \ No newline at end of file +window._iconfont_svg_string_4966438='',(a=>{var c=(t=(t=document.getElementsByTagName("script"))[t.length-1]).getAttribute("data-injectcss"),t=t.getAttribute("data-disable-injectsvg");if(!t){var e,i,l,o,h,n=function(c,t){t.parentNode.insertBefore(c,t)};if(c&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}e=function(){var c,t=document.createElement("div");t.innerHTML=a._iconfont_svg_string_4966438,(t=t.getElementsByTagName("svg")[0])&&(t.setAttribute("aria-hidden","true"),t.style.position="absolute",t.style.width=0,t.style.height=0,t.style.overflow="hidden",t=t,(c=document.body).firstChild?n(t,c.firstChild):c.appendChild(t))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(e,0):(i=function(){document.removeEventListener("DOMContentLoaded",i,!1),e()},document.addEventListener("DOMContentLoaded",i,!1)):document.attachEvent&&(l=e,o=a.document,h=!1,d(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,s())})}function s(){h||(h=!0,l())}function d(){try{o.documentElement.doScroll("left")}catch(c){return void setTimeout(d,50)}s()}})(window); \ No newline at end of file diff --git a/src/assets/iconfont/iconfont.json b/src/assets/iconfont/iconfont.json index 0446e56..740fd53 100644 --- a/src/assets/iconfont/iconfont.json +++ b/src/assets/iconfont/iconfont.json @@ -5,6 +5,62 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "551475", + "name": "同行互助", + "font_class": "cooperation", + "unicode": "e611", + "unicode_decimal": 58897 + }, + { + "icon_id": "4942645", + "name": "会议室", + "font_class": "huiyishi", + "unicode": "e614", + "unicode_decimal": 58900 + }, + { + "icon_id": "5769243", + "name": "工单", + "font_class": "gongdan", + "unicode": "ec37", + "unicode_decimal": 60471 + }, + { + "icon_id": "14145077", + "name": "周边", + "font_class": "zhoubian", + "unicode": "e739", + "unicode_decimal": 59193 + }, + { + "icon_id": "10933913", + "name": "历史", + "font_class": "lishi", + "unicode": "e60e", + "unicode_decimal": 58894 + }, + { + "icon_id": "24848552", + "name": "详情", + "font_class": "xiangqing", + "unicode": "e63c", + "unicode_decimal": 58940 + }, + { + "icon_id": "34273005", + "name": "开始-圆", + "font_class": "kaishi-yuan", + "unicode": "e64b", + "unicode_decimal": 58955 + }, + { + "icon_id": "19738994", + "name": "审核", + "font_class": "shenhe", + "unicode": "f195", + "unicode_decimal": 61845 + }, { "icon_id": "29742036", "name": "活动列表", diff --git a/src/assets/iconfont/iconfont.ttf b/src/assets/iconfont/iconfont.ttf index d3e41e4..4ca9d78 100644 Binary files a/src/assets/iconfont/iconfont.ttf and b/src/assets/iconfont/iconfont.ttf differ diff --git a/src/assets/iconfont/iconfont.woff b/src/assets/iconfont/iconfont.woff index 6aae73f..800d980 100644 Binary files a/src/assets/iconfont/iconfont.woff and b/src/assets/iconfont/iconfont.woff differ diff --git a/src/assets/iconfont/iconfont.woff2 b/src/assets/iconfont/iconfont.woff2 index a000978..4b61249 100644 Binary files a/src/assets/iconfont/iconfont.woff2 and b/src/assets/iconfont/iconfont.woff2 differ diff --git a/src/components/GxMap/index.vue b/src/components/GxMap/index.vue new file mode 100644 index 0000000..ab1d08c --- /dev/null +++ b/src/components/GxMap/index.vue @@ -0,0 +1,262 @@ + + + + + + + + + {{ item.name }} + + + + + + + + + \ No newline at end of file diff --git a/src/components/comment/index.vue b/src/components/comment/index.vue new file mode 100644 index 0000000..e69de29 diff --git a/src/components/index.js b/src/components/index.js index 7a747b5..1c2c111 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -20,6 +20,7 @@ import UploadInput from './Upload/UploadInput.vue' import Scrollbar from './Scrollbar/Scrollbar.vue' import Cascader from './Cascader/Cascader.vue' import GxUpload from './GxUpload/index.vue' +import GxMap from './GxMap/index.vue' import { setupLoadingDirective } from './Loading/directive' const componentList = [ @@ -42,7 +43,8 @@ const componentList = [ UploadInput, Scrollbar, Cascader, - GxUpload + GxUpload, + GxMap ] export const loading = Loading diff --git a/src/enums/index.js b/src/enums/index.js index 64ab02b..8811e43 100644 --- a/src/enums/index.js +++ b/src/enums/index.js @@ -1,15 +1,57 @@ import {EnumManager} from './enums' const activatyStatus = new EnumManager([ + { value: 1, name: '待审核', color: '#faad14' }, // 黄色(警告色) + { value: 2, name: '待开始', color: '#faad14' }, // 黄色(警告色) + { value: 3, name: '进行中', color: '#52c41a' }, // 绿色(进行中) + { value: 4, name: '已结束', color: '#bfbfbf' }, // 灰色(失效色) + { value: 99, name: '审核不通过', color: '#ff4d4f' } // 红色(错误色) +]) +//工单 +const orderStatus = new EnumManager([ { value: 1, name: '待审核', color: '#faad14' }, // 黄色(警告色) { value: 2, name: '进行中', color: '#52c41a' }, // 绿色(进行中) { value: 3, name: '已完成', color: '#1890ff' }, // 蓝色(完成色) - { value: 4, name: '已过期', color: '#bfbfbf' }, // 灰色(失效色) - { value: 5, name: '审核不通过', color: '#ff4d4f' } // 红色(错误色) + { value: 97, name: '已过期', color: '#bfbfbf' }, // 灰色(失效色) + { value: 98, name: '已撤销', color: '#bfbfbf' }, // 灰色(失效色) + { value: 99, name: '审核不通过', color: '#ff4d4f' } // 红色(错误色) +]) +//公告状态 +const announcementStatus = new EnumManager([ + { value: 1, name: '待审核', color: '#faad14' }, // 黄色(警告色) + { value: 2, name: '进行中', color: '#52c41a' }, // 绿色(进行中) + { value:98, name: '停用', color: '#bfbfbf' }, // 灰色(失效色) + { value: 99, name: '审核不通过', color: '#ff4d4f' } // 红色(错误色) ]) - const enumsStatus = new EnumManager([ - { value: 0, name: '启用', color: '#52c41a' }, // 绿色(启用) - { value: 1, name: '停用', color: '#ff4d4f' } // 红色(停用) + { value: 1, name: '启用', color: '#52c41a' }, // 绿色(启用) + { value: 2, name: '停用', color: '#ff4d4f' } // 红色(停用) ]) -export {activatyStatus,enumsStatus} \ No newline at end of file +//互助状态 +const nbdMutualStatus = new EnumManager([ + { value: 1, name: '待审核', color: '#faad14' }, // 黄色(警告色) + { value: 2, name: '进行中', color: '#52c41a' }, // 绿色(进行中) + { value: 3, name: '已完成', color: '#1890ff' }, // 蓝色(完成色) + { value: 98, name: '已撤销', color: '#bfbfbf' }, // 灰色(失效色) + { value: 99, name: '审核不通过', color: '#ff4d4f' } // 红色(错误色) +]) +//工单类型状态 +const workTypeStatus = new EnumManager([ + { value: 1, name: '待审核', color: '#faad14' }, // 黄色(警告色) + { value: 2, name: '启用中', color: '#52c41a' }, // 绿色(进行中) + { value: 98, name: '禁用', color: '#bfbfbf' }, // 灰色(失效色) + { value: 99, name: '审核不通过', color: '#ff4d4f' } // 红色(错误色) +]) +//会议室类型状态 +const mettingStatus = new EnumManager([ + { value: 1, name: '待审核', color: '#faad14' }, // 黄色(警告色) + { value: 2, name: '启用中', color: '#52c41a' }, // 绿色(进行中) + { value: 98, name: '禁用', color: '#bfbfbf' }, // 灰色(失效色) + { value: 99, name: '审核不通过', color: '#ff4d4f' } // 红色(错误色) +]) +//用户类型状态 +const userStatus = new EnumManager([ + { value: 1, name: '启用', color: '#52c41a' }, // 黄色(警告色) + { value: 2, name: '禁用', color: '#ff4d4f' } // 红色(错误色) +]) +export {activatyStatus,enumsStatus,orderStatus,announcementStatus,nbdMutualStatus,workTypeStatus,mettingStatus,userStatus} \ No newline at end of file diff --git a/src/locales/lang/zh-CN/menu.js b/src/locales/lang/zh-CN/menu.js index a588162..4e29e26 100644 --- a/src/locales/lang/zh-CN/menu.js +++ b/src/locales/lang/zh-CN/menu.js @@ -32,8 +32,21 @@ export default { account: '个人页', 'account.trigger': '触发报错', 'account.logout': '退出登录', - homebanner:'首页轮播图', - neighborhood:'邻里圈轮播图', - announcementList:'社区公告', - activity:'活动列表' + homebanner: '首页轮播图', + neighborhood: '邻里圈轮播图', + announcementList: '社区公告', + activity: '活动列表', + nbdMutualAid: '邻里互助', + nbdMutual: '邻里互助', + mutualComment: '评论列表', + workOrder: '工单管理', + orderList: '工单列表', + orderType: '工单类型', + server:'周边服务', + serverList: '门店列表', + serverType: '门店分类', + mettingMgt:'会议室管理', + mettingRoom:'会议室列表', + mettingYuYue:'预约记录', + customer:'用户管理' } diff --git a/src/locales/lang/zh-CN/pages.js b/src/locales/lang/zh-CN/pages.js index 43d9a74..dc26da3 100644 --- a/src/locales/lang/zh-CN/pages.js +++ b/src/locales/lang/zh-CN/pages.js @@ -57,7 +57,7 @@ export default { // role 'pages.system.role.add': '添加角色', 'pages.system.role.edit': '编辑角色', - 'pages.system.role.delTip': '确定删除该角色吗?', + 'pages.system.role.delTip': '确定删除该项吗?', 'pages.system.role.form.code': '编码', 'pages.system.role.form.code.placeholder': '请输入编码', 'pages.system.role.form.code.required': '编码是必填项!', @@ -78,7 +78,7 @@ export default { // user 'pages.system.user.add': '添加用户', 'pages.system.user.edit': '编辑用户', - 'pages.system.user.delTip': '确定删除该用户吗?', + 'pages.system.user.delTip': '确定删除该项吗?', 'pages.system.user.form.username': '用户名', 'pages.system.user.form.username.placeholder': '请输入用户名', 'pages.system.user.form.username.required': '用户名是必填项!', diff --git a/src/router/routes/pages.js b/src/router/routes/pages.js index 98a3217..96c056b 100644 --- a/src/router/routes/pages.js +++ b/src/router/routes/pages.js @@ -1,4 +1,4 @@ -import { TableOutlined,HomeOutlined } from '@ant-design/icons-vue' +import { TableOutlined, HomeOutlined } from '@ant-design/icons-vue' export default [ { @@ -49,4 +49,168 @@ export default [ permission: '*', }, }, + { + path: 'nbdMutual', + name: 'nbdMutual', + component: 'RouteViewLayout', + meta: { + icon: 'icon-cooperation', + title: '邻里互助', + isMenu: true, + keepAlive: true, + permission: '*', + }, + children: [ + { + path: 'nbdMutual/nbdMutualAid', + name: 'nbdMutualAid', + component: 'pages/nbdMutual/nbdMutualAid/index.vue', + meta: { + icon: '', + title: '邻里互助', + isMenu: true, + keepAlive: true, + permission: '*', + }, + }, + // { + // path: 'nbdMutual/mutualComment', + // name: 'mutualComment', + // component: 'pages/nbdMutual/mutualComment/index.vue', + // meta: { + // icon: 'icon-huodongliebiao-copy', + // title: '求助评论', + // isMenu: true, + // keepAlive: true, + // permission: '*', + // }, + // }, + ], + }, + { + path: 'workOrder', + name: 'workOrder', + component: 'RouteViewLayout', + meta: { + icon: 'icon-gongdan', + title: '工单列表', + isMenu: true, + keepAlive: true, + permission: '*', + }, + children: [ + { + path: 'workOrder/orderType', + name: 'orderType', + component: 'pages/workOrder/orderType/index.vue', + meta: { + icon: '', + title: '功能类型', + isMenu: true, + keepAlive: true, + permission: '*', + }, + }, + { + path: 'workOrder/orderList', + name: 'orderList', + component: 'pages/workOrder/orderList/index.vue', + meta: { + icon: '', + title: '工单列表', + isMenu: true, + keepAlive: true, + permission: '*', + }, + }, + ], + }, + { + path: 'server', + name: 'server', + component: 'RouteViewLayout', + meta: { + icon: 'icon-zhoubian', + title: '周边服务', + isMenu: true, + keepAlive: true, + permission: '*', + }, + children: [ + { + path: 'server/serverType', + name: 'serverType', + component: 'pages/server/serverType/index.vue', + meta: { + icon: '', + title: '门店类型', + isMenu: true, + keepAlive: true, + permission: '*', + }, + }, + { + path: 'server/serverList', + name: 'serverList', + component: 'pages/server/serverList/index.vue', + meta: { + icon: '', + title: '门店列表', + isMenu: true, + keepAlive: true, + permission: '*', + }, + }, + ], + }, + { + path: 'mettingMgt', + name: 'mettingMgt', + component: 'RouteViewLayout', + meta: { + icon: 'icon-zhoubian', + title: '会议室管理', + isMenu: true, + keepAlive: true, + permission: '*', + }, + children: [ + { + path: 'mettingMgt/mettingRoom', + name: 'mettingRoom', + component: 'pages/mettingMgt/mettingList/index.vue', + meta: { + icon: '', + title: '会议室', + isMenu: true, + keepAlive: true, + permission: '*', + }, + }, + { + path: 'mettingMgt/mettingYuYue', + name: 'mettingYuYue', + component: 'pages/mettingMgt/mettingYuYue/index.vue', + meta: { + icon: '', + title: '会议室预约', + isMenu: true, + keepAlive: true, + permission: '*', + }, + }, + ], + }, + { + path: 'customer/index', + name: 'customer', + component: 'pages/user/index.vue', + meta: { + icon: HomeOutlined, + title: '用户管理', + isMenu: true, + keepAlive: true, + permission: '*', + }, + }, ] diff --git a/src/views/pages/activity/components/EditDialog.vue b/src/views/pages/activity/components/EditDialog.vue index c7bc3fa..c1a3a3e 100644 --- a/src/views/pages/activity/components/EditDialog.vue +++ b/src/views/pages/activity/components/EditDialog.vue @@ -1,6 +1,6 @@ + :after-close="onAfterClose" :cancel-text="cancelText" :ok-text="okText" @ok="handleOk" @cancel="handleCancel" :ok-button-props="{ disabled: formData.status!==2 }"> @@ -12,18 +12,18 @@ - - + + - - - + + + - + - + @@ -33,8 +33,8 @@ - - + @@ -56,7 +56,7 @@ import { useI18n } from 'vue-i18n' import dayjs from 'dayjs' import GxUpload from '@/components/GxUpload/index.vue' import { spliceUrl } from "@/utils/util" -import { enumsStatus } from '@/enums/index' +import { activatyStatus } from '@/enums/index' const emit = defineEmits(['ok']) const { t } = useI18n() // 解构出t方法 const { modal, showModal, hideModal, showLoading, hideLoading } = useModal() @@ -67,9 +67,9 @@ const okText = ref(t('button.confirm')) const fileList = ref([]) formRules.value = { title: [{ required: true, message: '请输入活动名称' }], - activityTime: [{ required: true, message: '请输入活动时间' }], + openAt: [{ required: true, message: '请输入活动时间' }], cover: [{required: false, message: '请上传图片', trigger: 'change'}], - backImg: [{ required: false, message: '请上传图片', trigger: 'change' }], + images: [{ required: false, message: '请上传图片', trigger: 'change' }], activityContent:[{ required: true, message: '请输入活动内容' }] } @@ -86,7 +86,7 @@ function handleCreate() { title: '新增活动', }) // initData() - formData.value.status = 'enabled' + formData.value.status = 1 } /** @@ -106,12 +106,15 @@ async function handleEdit(record = {}) { } hideSpining() formData.value = { ...data } - formData.value.startAt = dayjs(data.startAt) - formData.value.endAt = dayjs(data.endAt) - formData.value.endSignupAt = dayjs(data.endSignupAt) - if (data.images && data.images.length > 0) { - formData.value.fileList = data.images.map(item => config('http.apiBasic') + item) + formData.value.images = data.images.map(item => config('http.apiBasic') + item) + }else{ + formData.value.images=[] + } + if(data.cover){ + formData.value.cover=[config('http.apiBasic')+data.cover] + }else{ + formData.value.cover=[] } } catch (error) { message.error({ content: error.message }) @@ -132,7 +135,7 @@ function handleOk() { const params = { ...values, cover: formData.value.cover?spliceUrl(formData.value.cover[0]):'', - backImg: formData.value.backImg ? formData.value.backImg.map(item => spliceUrl(item)) : '' + images: formData.value.images ? formData.value.images.map(item => spliceUrl(item)) : [] } let result = null switch (modal.value.type) { diff --git a/src/views/pages/activity/index.vue b/src/views/pages/activity/index.vue index 4a85052..4415837 100644 --- a/src/views/pages/activity/index.vue +++ b/src/views/pages/activity/index.vue @@ -45,26 +45,44 @@ - - + - 点击查看 + 点击查看 - {{enumsStatus.getName(record.status)}} + {{ + activatyStatus.getName(record.status) + }} + + + {{ '审核' }} + + + + + + {{ '开始活动' }} + + + {{ $t('pages.system.user.edit') }} - - + + + {{ $t('pages.system.delete') }} - + + + @@ -72,19 +90,31 @@ - - - - 暂无图片 - - - - {{ content }} - - + + + + + 暂无图片 + + + + + + + + + + + + + + + + - @@ -95,11 +125,12 @@ import apis from '@/apis' import { formatUtcDateTime } from '@/utils/util' import { config } from '@/config' import dayjs from 'dayjs' -import { usePagination } from '@/hooks' +import { usePagination,useModal } from '@/hooks' import EditDialog from './components/EditDialog.vue' import { PlusOutlined, EditOutlined, DeleteOutlined, QrcodeOutlined } from '@ant-design/icons-vue' import { useI18n } from 'vue-i18n' -import { enumsStatus } from '@/enums/index.js' +import { activatyStatus } from '@/enums/index.js' +import errImg from '@/assets/blankSpace.png' defineOptions({ name: 'activity', }) @@ -109,17 +140,20 @@ const imgList = ref([]) const type = ref(1) const columns = [ - { title: '活动标题', dataIndex: 'title'}, - { title: '活动时间', dataIndex: 'activityTime',align: 'center' }, - { title: '活动内容', dataIndex: 'activityContent',align: 'center' }, { title: '活动封面', dataIndex: 'cover', align: 'center', width: 100 }, - { title: t('button.action'), key: 'action', fixed: 'right', width: 150, align: 'center' }, + { title: '活动标题', dataIndex: 'title' }, + { title: '活动时间', dataIndex: 'openAt', align: 'center' }, + { title: '活动内容', dataIndex: 'content', align: 'center', width: 100 }, + { title: '状态', dataIndex: 'status', align: 'center', width: 100 }, + { title: t('button.action'), key: 'action', fixed: 'right', width: 140, align: 'center' }, ] - -const { listData, loading, showLoading, hideLoading, paginationState, resetPagination, searchFormData } = - usePagination() +const { modal, showModal, hideModal, showLoading:auditShowLoading, hideLoading:auditHideLoading } = useModal() +const { listData, loading, showLoading, hideLoading, paginationState, resetPagination, searchFormData } =usePagination() const editDialogRef = ref() +const currentForm=ref({}) +const auditStatus=ref(2) +const remark=ref('') getPageList() /** * 获取表格数据 @@ -147,7 +181,51 @@ async function getPageList() { hideLoading() } } - +const auditHandleEdit = (params) => { + currentForm.value = params + showModal() +} +const startHandleEdit=async (obj)=>{ + try { + const params = { + ...obj, + status: 3, + } + const result = await apis.activity.updateItem(obj.id, params).catch(() => { + throw new Error() + }) + if (config('http.code.success') === result?.success) { + hideModal() + getPageList() + message.success('活动已成功') + } + } catch (error) { + message.error(error.message) + } +} +const handleAuditEdit = async () => { + try { + auditShowLoading() + const params = { + ...currentForm.value, + status: auditStatus.value, + remark: remark.value + } + console.log(params); + const result = await apis.activity.updateItem(currentForm.value.id, params).catch(() => { + throw new Error() + }) + auditHideLoading() + if (config('http.code.success') === result?.success) { + hideModal() + getPageList() + message.success('审核成功') + } + } catch (error) { + message.error(error.message) + auditHideLoading() + } +} /** * 删除 */ diff --git a/src/views/pages/announcementList/components/AddDialog.vue b/src/views/pages/announcementList/components/AddDialog.vue index 6a63e6a..a1de2b4 100644 --- a/src/views/pages/announcementList/components/AddDialog.vue +++ b/src/views/pages/announcementList/components/AddDialog.vue @@ -1,6 +1,6 @@ + :after-close="onAfterClose" :cancel-text="cancelText" :ok-text="okText" @ok="handleOk" @cancel="handleCancel" :ok-button-props="{ disabled: formData.status!==1 }"> @@ -16,24 +16,29 @@ style="width: 100%;" /> - + - + - + + + + + + - - + + - - + + @@ -52,7 +57,7 @@ import { useForm, useModal, useSpining } from '@/hooks' import { message } from 'ant-design-vue' import { useI18n } from 'vue-i18n' import dayjs from 'dayjs' -import { enumsStatus } from '@/enums/index' +import { announcementStatus } from '@/enums/index' import {spliceUrl} from '@/utils/util' const emit = defineEmits(['ok']) const { t } = useI18n() // 解构出t方法 @@ -65,11 +70,12 @@ const roles = ref([]) const { spining, showSpining, hideSpining } = useSpining() formRules.value = { title: { required: true, message: '请输入标题' }, - desc: { required: true, message: '请输入内容' }, + desc: { required: true, message: '请输入简介' }, + content: { required: true, message: '请输入内容' }, sequence: { required: true, message: '请选择排序' }, status: { required: true, message: '请选择是否启用' }, createdAt: { required: true, message: '请选择创建时间' }, - img:{required: false, message: '请上传封面'} + cover:{required: false, message: '请上传封面'} } /** @@ -80,7 +86,7 @@ function handleCreate() { type: 'create', title: '新增', }) - formData.value.status = 0 + formData.value.status = 1 } /** @@ -98,7 +104,7 @@ async function handleEdit(record = {}) { hideSpining() formData.value = { ...data } formData.value.createdAt = dayjs(data.createdAt) - formData.value.img=formData.value.img?[config('http.apiBasic')+formData.value.img]:[] + formData.value.cover=formData.value.cover?[config('http.apiBasic')+formData.value.cover]:[] } catch (error) { message.error(error.message) } @@ -109,7 +115,6 @@ async function handleEdit(record = {}) { * 确定 */ function handleOk() { - console.log(formData.value) formRef.value .validateFields() .then(async (values) => { @@ -118,7 +123,7 @@ function handleOk() { showLoading() const params = { ...values, - img:formData.value.img?spliceUrl(formData.value.img[0]):'' + cover:formData.value.cover?spliceUrl(formData.value.cover[0]):'' } console.log(params); diff --git a/src/views/pages/announcementList/index.vue b/src/views/pages/announcementList/index.vue index 142909d..9bc021b 100644 --- a/src/views/pages/announcementList/index.vue +++ b/src/views/pages/announcementList/index.vue @@ -10,7 +10,10 @@ - + + {{ + item.label }} + @@ -39,11 +42,14 @@ - - + + - {{ enumsStatus.getName(record.status) }} + {{ + announcementStatus.getName(record.status) + }} {{ dayjs(record.createdAt).format('YYYY-MM-DD') }} @@ -52,6 +58,12 @@ + + + {{ '审核' }} + + + {{ '编辑公告' }} @@ -70,7 +82,18 @@ - + + + + + + + + + + @@ -79,10 +102,11 @@ import { message, Modal } from 'ant-design-vue' import { ref } from 'vue' import apis from '@/apis' import { config } from '@/config' -import { enumsStatus } from '@/enums/index.js' -import { usePagination } from '@/hooks' +import { announcementStatus } from '@/enums/index.js' +import { usePagination,useModal } from '@/hooks' import AddDialog from './components/AddDialog.vue' import { PlusOutlined, EditOutlined, DeleteOutlined } from '@ant-design/icons-vue' + import { useI18n } from 'vue-i18n' import dayjs from 'dayjs' import errImg from '@/assets/blankSpace.png' @@ -92,20 +116,21 @@ defineOptions({ }) const { t } = useI18n() // 解构出t方法 const columns = [ - { title: '封面', dataIndex: 'img', key: 'img',with:60,align:'center'}, + { title: '封面', dataIndex: 'cover', key: 'cover', with: 60, align: 'center' }, { title: '标题', dataIndex: 'title', key: 'title', ellipsis: true }, - { title: '内容', dataIndex: 'desc', ellipsis: true }, + { title: '简介', dataIndex: 'desc', ellipsis: true }, { title: '排序', dataIndex: 'sequence', width: 80, align: 'center' }, { title: '状态', key: 'status', dataIndex: 'status', width: 120, align: 'center' }, { title: '创建时间', dataIndex: 'createdAt', width: 200, align: 'center' }, - { title: t('button.action'), key: 'action', fixed: 'right', width: 100, align: 'center' }, + { title: t('button.action'), key: 'action', fixed: 'right', width: 140, align: 'center' }, ] - -const { listData, loading, showLoading, hideLoading, paginationState, searchFormData, resetPagination } = - usePagination() +const { modal, showModal, hideModal, showLoading:auditShowLoading, hideLoading:auditHideLoading } = useModal() +const { listData, loading, showLoading, hideLoading, paginationState, searchFormData, resetPagination } = usePagination() // const { resetForm } = useForm() const addDialogRef = ref() - +const currentForm=ref({}) +const auditStatus=ref(2) +const remark=ref('') getPageList() /** @@ -163,7 +188,33 @@ function handleRemove({ id }) { }, }) } - +const auditHandleEdit = (params) => { + currentForm.value = params + showModal() +} +const handleAuditEdit = async () => { + try { + auditShowLoading() + const params = { + ...currentForm.value, + status: auditStatus.value, + remark: remark.value + } + console.log(params); + const result = await apis.announcement.updateNotices(currentForm.value.id, params).catch(() => { + throw new Error() + }) + auditHideLoading() + if (config('http.code.success') === result?.success) { + hideModal() + getPageList() + message.success('审核成功') + } + } catch (error) { + message.error(error.message) + auditHideLoading() + } +} /** * 分页 */ diff --git a/src/views/pages/homeBanner/components/EditDialog.vue b/src/views/pages/homeBanner/components/EditDialog.vue index fc822f0..744b5c0 100644 --- a/src/views/pages/homeBanner/components/EditDialog.vue +++ b/src/views/pages/homeBanner/components/EditDialog.vue @@ -16,11 +16,11 @@ - + - + @@ -45,6 +45,7 @@ import { useI18n } from 'vue-i18n' import dayjs from 'dayjs' import { createMenu, getMenu, updateMenu } from '@/apis/modules/imgmgt' import {spliceUrl} from '@/utils/util' +import { enumsStatus } from '@/enums/index.js' const emit = defineEmits(['ok']) const { t } = useI18n() // 解构出t方法 const { modal, showModal, hideModal, showLoading, hideLoading } = useModal() @@ -72,7 +73,7 @@ function handleCreate() { // 80对应about title: '添加', }) - formData.value.status = 0 + formData.value.status = 1 } /** @@ -106,7 +107,7 @@ function handleOk() { const params = { ...values, img: spliceUrl(formData.value?.img[0]), - type: 'homeBanner' , + scene: 1 , } let result = null switch (modal.value.type) { diff --git a/src/views/pages/homeBanner/index.vue b/src/views/pages/homeBanner/index.vue index 1263c3b..3e0ed5d 100644 --- a/src/views/pages/homeBanner/index.vue +++ b/src/views/pages/homeBanner/index.vue @@ -1,5 +1,5 @@ - + @@ -41,14 +40,15 @@ + :pagination="paginationState" :scroll="{ x: 1000 }" @change="onTableChange"> - + - {{ enumsStatus.getName(record.status) }} + {{ enumsStatus.getName(record.status) + }} @@ -111,8 +111,8 @@ async function getPageList() { const { success, data, total } = await apis.imgmgt .getDataList({ pageSize, - current:current, - type: 'homeBanner', + current: current, + scene: 1, ...searchFormData.value, }) .catch(() => { diff --git a/src/views/pages/mettingMgt/mettingList/components/EditDialog.vue b/src/views/pages/mettingMgt/mettingList/components/EditDialog.vue new file mode 100644 index 0000000..25bf70d --- /dev/null +++ b/src/views/pages/mettingMgt/mettingList/components/EditDialog.vue @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + 人间 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/pages/mettingMgt/mettingList/index.vue b/src/views/pages/mettingMgt/mettingList/index.vue new file mode 100644 index 0000000..ec7498c --- /dev/null +++ b/src/views/pages/mettingMgt/mettingList/index.vue @@ -0,0 +1,182 @@ + + + + + + + + + + 新增会议室 + + + + + + {{ + workTypeStatus.getName(record.status) }} + + + 点击查看 + + + + + 编辑 + + + + + + 审核 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/pages/mettingMgt/mettingYuYue/components/EditDialog.vue b/src/views/pages/mettingMgt/mettingYuYue/components/EditDialog.vue new file mode 100644 index 0000000..3ae2f04 --- /dev/null +++ b/src/views/pages/mettingMgt/mettingYuYue/components/EditDialog.vue @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/pages/mettingMgt/mettingYuYue/index.vue b/src/views/pages/mettingMgt/mettingYuYue/index.vue new file mode 100644 index 0000000..7c87295 --- /dev/null +++ b/src/views/pages/mettingMgt/mettingYuYue/index.vue @@ -0,0 +1,182 @@ + + + + + + + + {{ dayjs(record.startAt).format('YYYY-MM-DD HH:mm:ss') + ' - ' + + dayjs(record.endAt).format('YYYY-MM-DD HH:mm:ss')}} + + + + + 审核 + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/pages/nbdMutual/mutualComment/components/EditDialog.vue b/src/views/pages/nbdMutual/mutualComment/components/EditDialog.vue new file mode 100644 index 0000000..5366a9f --- /dev/null +++ b/src/views/pages/nbdMutual/mutualComment/components/EditDialog.vue @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/pages/nbdMutualAid/index.vue b/src/views/pages/nbdMutual/mutualComment/index.vue similarity index 62% rename from src/views/pages/nbdMutualAid/index.vue rename to src/views/pages/nbdMutual/mutualComment/index.vue index 8493a14..75d1b6b 100644 --- a/src/views/pages/nbdMutualAid/index.vue +++ b/src/views/pages/nbdMutual/mutualComment/index.vue @@ -1,20 +1,16 @@ - + - - + + - - - 全部 - 启用 - 停用 - + + @@ -32,33 +28,22 @@ - - - - - - 新增 - - + :pagination="paginationState" :scroll="{ x: 1000 }" @change="onTableChange"> - - - - - {{ enumsStatus.getName(record.status) }} + {{activatyStatus.getName(record.status)}} + + + {{ dayjs(record.pushAt).format('YYYY-MM-DD HH:mm:ss') }} - - - {{ $t('pages.system.user.edit') }} - {{ $t('pages.system.delete') }} - + + + @@ -73,26 +58,24 @@ import { message, Modal } from 'ant-design-vue' import { ref } from 'vue' import apis from '@/apis' -import { formatUtcDateTime } from '@/utils/util' import { config } from '@/config' -import { statusUserTypeEnum } from '@/enums/system' import { usePagination } from '@/hooks' import errImg from '@/assets/blankSpace.png' import EditDialog from './components/EditDialog.vue' import { PlusOutlined, EditOutlined, DeleteOutlined } from '@ant-design/icons-vue' import { useI18n } from 'vue-i18n' -import { delMenu, getDataList } from '@/apis/modules/imgmgt' -import { enumsStatus } from '@/enums/index.js' +import { activatyStatus } from '@/enums/index.js' defineOptions({ - name: 'nbdMa', + name: 'mutualComment', }) const { t } = useI18n() // 解构出t方法 const columns = [ - { title: '图片', dataIndex: 'img', width: 100, align: 'center' }, - { title: '名称', dataIndex: 'title', key: 'name' }, - { title: '状态', dataIndex: 'status', width: 120, align: 'center' }, - { title: '顺序', dataIndex: 'sequence', width: 100, align: 'center' }, - { title: t('button.action'), key: 'action', fixed: 'right', width: 100, align: 'center' }, + { title: '评论人名称', dataIndex: 'commentUser', key: 'commentUser' }, + { title: '评论内容', dataIndex: 'commentContent' }, + { title: '发布时间', dataIndex: 'pushAt', width: 120, align: 'center' }, + { title: '被评论人', dataIndex: 'userName', align: 'center' }, + { title: '被评论帖子', dataIndex: 'title', width: 120, align: 'center' }, + { title: t('button.action'), key: 'action', fixed: 'right', width: 100, align: 'center' }, ] const { listData, loading, showLoading, hideLoading, paginationState, resetPagination, searchFormData } = usePagination() @@ -108,11 +91,10 @@ async function getPageList() { try { showLoading() const { pageSize, current } = paginationState - const { success, data, total } = await apis.imgmgt + const { success, data, total } = await apis.mutualComment .getDataList({ pageSize, - current:current, - type: 'neighborhoodBanner', + current: current, ...searchFormData.value, }) .catch(() => { @@ -141,7 +123,7 @@ function handleDelete({ id }) { return new Promise((resolve, reject) => { ; (async () => { try { - const { success } = await apis.imgmgt.delMenu(id).catch(() => { + const { success } = await apis.mutualComment.delMenu(id).catch(() => { throw new Error() }) if (config('http.code.success') === success) { diff --git a/src/views/pages/nbdMutual/nbdMutualAid/components/CommentItem.js b/src/views/pages/nbdMutual/nbdMutualAid/components/CommentItem.js new file mode 100644 index 0000000..a911280 --- /dev/null +++ b/src/views/pages/nbdMutual/nbdMutualAid/components/CommentItem.js @@ -0,0 +1,59 @@ +// CommentItem.js +import { h } from 'vue' + +export const CommentItem = { + name: 'CommentItem', + props: { + comment: { + type: Object, + required: true, + }, + // 可选:添加深度限制防止无限递归 + depth: { + type: Number, + default: 0, + }, + }, + setup(props) { + // 日期格式化函数 + const formatDate = (dateString) => { + return new Date(dateString).toLocaleString() + } + + // 返回渲染函数 + return () => { + const { comment, depth } = props + // 创建子评论元素(递归部分) + let childComments = null + if (comment.children?.length && depth < 10) { + // 限制最大深度为10层 + childComments = h( + 'div', + { class: 'replies' }, + comment.children.map((child) => + h(CommentItem, { + comment: child, + key: child.id, + depth: depth + 1, // 传递增加后的深度 + }) + ) + ) + } + + // 构建主组件结构 + return h('div', { class: 'comment' }, [ + // 评论头部 + h('div', { class: 'comment-header' }, [ + h('span', { class: 'username' }, comment.pusherName), + h('span', { class: 'time' }, formatDate(comment.createdAt)), + ]), + + // 评论内容 + h('div', { class: 'comment-content' }, comment.content), + + // 子评论容器 + childComments, + ]) + } + }, +} diff --git a/src/views/pages/nbdMutual/nbdMutualAid/components/EditDialog.vue b/src/views/pages/nbdMutual/nbdMutualAid/components/EditDialog.vue new file mode 100644 index 0000000..6d168e6 --- /dev/null +++ b/src/views/pages/nbdMutual/nbdMutualAid/components/EditDialog.vue @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/pages/nbdMutual/nbdMutualAid/index.vue b/src/views/pages/nbdMutual/nbdMutualAid/index.vue new file mode 100644 index 0000000..e1d1bb7 --- /dev/null +++ b/src/views/pages/nbdMutual/nbdMutualAid/index.vue @@ -0,0 +1,307 @@ + + + + + + + + + + + + + + {{ + item.label }} + + + + + + {{ $t('button.reset') }} + + {{ $t('button.search') }} + + + + + + + + + + + + + + + + + + {{ + nbdMutualStatus.getName(record.status) + }} + + + {{ dayjs(record.createdAt).format('YYYY-MM-DD HH:mm:ss') }} + + + + {{ record.title }} + + + + + {{ record.content }} + + + + + {{ record.remark }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 通过 + 不通过 + + + + + + + + + + + {{ nbdMutualAidInfo.content }} + + + + 暂无记录... + + + + + + + + + diff --git a/src/views/pages/nbdMutualAid/components/EditDialog.vue b/src/views/pages/nbdMutualAid/components/EditDialog.vue deleted file mode 100644 index 46273e4..0000000 --- a/src/views/pages/nbdMutualAid/components/EditDialog.vue +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/views/pages/neighborhood/components/EditDialog.vue b/src/views/pages/neighborhood/components/EditDialog.vue index 46273e4..3fa5fa9 100644 --- a/src/views/pages/neighborhood/components/EditDialog.vue +++ b/src/views/pages/neighborhood/components/EditDialog.vue @@ -1,35 +1,35 @@ - - - - - - - - - - - - - - - - - - + :after-close="onAfterClose" :cancel-text="cancelText" :ok-text="okText" @ok="handleOk" @cancel="handleCancel"> + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -43,8 +43,8 @@ import { useForm, useModal, useSpining } from '@/hooks' import { message } from 'ant-design-vue' import { useI18n } from 'vue-i18n' import dayjs from 'dayjs' -import { createMenu, getMenu, updateMenu } from '@/apis/modules/imgmgt' -import {spliceUrl} from '@/utils/util' +import { enumsStatus } from '@/enums/index.js' +import { spliceUrl } from '@/utils/util' const emit = defineEmits(['ok']) const { t } = useI18n() // 解构出t方法 const { modal, showModal, hideModal, showLoading, hideLoading } = useModal() @@ -72,7 +72,7 @@ function handleCreate() { // 80对应about title: '添加', }) - formData.value.status = 0 + formData.value.status = 1 } /** @@ -91,7 +91,7 @@ async function handleEdit(record = {}) { } hideSpining() formData.value = { ...data } - formData.value.img=[config('http.apiBasic')+data.img] + formData.value.img = [config('http.apiBasic') + data.img] } /** @@ -106,7 +106,7 @@ function handleOk() { const params = { ...values, img: spliceUrl(formData.value?.img[0]), - type: 'neighborhoodBanner' , + scene: 2, } let result = null switch (modal.value.type) { @@ -142,7 +142,7 @@ function handleOk() { * 取消 */ function handleCancel() { - formData.value.img=[''] + formData.value.img = [''] hideModal() } diff --git a/src/views/pages/neighborhood/index.vue b/src/views/pages/neighborhood/index.vue index 74cf1f8..2180599 100644 --- a/src/views/pages/neighborhood/index.vue +++ b/src/views/pages/neighborhood/index.vue @@ -1,19 +1,17 @@ - + @@ -112,7 +110,7 @@ async function getPageList() { .getDataList({ pageSize, current:current, - type: 'neighborhoodBanner', + scene: 2, ...searchFormData.value, }) .catch(() => { diff --git a/src/views/pages/server/serverList/components/EditDialog.vue b/src/views/pages/server/serverList/components/EditDialog.vue new file mode 100644 index 0000000..97704c7 --- /dev/null +++ b/src/views/pages/server/serverList/components/EditDialog.vue @@ -0,0 +1,245 @@ + + + + + + + + + + + + {{ + item.label }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/pages/server/serverList/index.vue b/src/views/pages/server/serverList/index.vue new file mode 100644 index 0000000..ed64dce --- /dev/null +++ b/src/views/pages/server/serverList/index.vue @@ -0,0 +1,159 @@ + + + + + + + + + + 新增门店 + + + + + + {{ enumsStatus.getName(record.status) + }} + + + + + 编辑 + + + + 撤销 + + + + + + + + + + + + + + diff --git a/src/views/pages/server/serverType/components/EditDialog.vue b/src/views/pages/server/serverType/components/EditDialog.vue new file mode 100644 index 0000000..2b98fe7 --- /dev/null +++ b/src/views/pages/server/serverType/components/EditDialog.vue @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/pages/server/serverType/index.vue b/src/views/pages/server/serverType/index.vue new file mode 100644 index 0000000..ecb320d --- /dev/null +++ b/src/views/pages/server/serverType/index.vue @@ -0,0 +1,160 @@ + + + + + + + + + + 新增分类 + + + + + + + + + {{ orderStatus.getName(record.status)}} + + + + + 编辑分类 + + + + {{ $t('pages.system.delete') }} + + + + + + + + + + + + + + + + diff --git a/src/views/pages/user/index.vue b/src/views/pages/user/index.vue new file mode 100644 index 0000000..9ef458d --- /dev/null +++ b/src/views/pages/user/index.vue @@ -0,0 +1,232 @@ + + + + + + + + + + + + {{ + userStatus.getName(record.status) + }} + + + {{ dayjs(record.createdAt).format('YYYY-MM-DD') }} + + + + + + {{ '编辑' }} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/pages/workOrder/orderList/components/EditDialog.vue b/src/views/pages/workOrder/orderList/components/EditDialog.vue new file mode 100644 index 0000000..3ae2f04 --- /dev/null +++ b/src/views/pages/workOrder/orderList/components/EditDialog.vue @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/pages/workOrder/orderList/index.vue b/src/views/pages/workOrder/orderList/index.vue new file mode 100644 index 0000000..e639050 --- /dev/null +++ b/src/views/pages/workOrder/orderList/index.vue @@ -0,0 +1,230 @@ + + + + + + + + 点击查看 + + + {{ + orderStatus.getName(record.status) }} + + + + + {{ '审核' }} + + + + + + 撤销 + + + + + + + + + + + + + 通过 + 不通过 + + + + + + + + + + + + + + + + + + 暂无 + + + + + + + + + 暂无 + + + + + + + + diff --git a/src/views/pages/workOrder/orderType/components/EditDialog.vue b/src/views/pages/workOrder/orderType/components/EditDialog.vue new file mode 100644 index 0000000..61eecb7 --- /dev/null +++ b/src/views/pages/workOrder/orderType/components/EditDialog.vue @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/pages/workOrder/orderType/index.vue b/src/views/pages/workOrder/orderType/index.vue new file mode 100644 index 0000000..4194d88 --- /dev/null +++ b/src/views/pages/workOrder/orderType/index.vue @@ -0,0 +1,170 @@ + + + + + + + + + + 新增分类 + + + + + + {{ + workTypeStatus.getName(record.status) }} + + + + + 编辑分类 + + + + + + 审核 + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue index e47c7af..d3d32cd 100644 --- a/src/views/system/menu/index.vue +++ b/src/views/system/menu/index.vue @@ -239,7 +239,6 @@ function handleDelete({ id }) { * 编辑完成 */ async function onOk() { - message.success(t('component.message.success.delete')) await getMenuList() } diff --git a/yarn.lock b/yarn.lock index 912dbb5..53954f2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -138,6 +138,11 @@ "@algolia/logger-common" "4.19.1" "@algolia/requester-common" "4.19.1" +"@amap/amap-jsapi-loader@^1.0.1": + version "1.0.1" + resolved "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz" + integrity sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw== + "@ant-design/colors@^6.0.0": version "6.0.0" resolved "https://registry.npmmirror.com/@ant-design/colors/-/colors-6.0.0.tgz"
{{ nbdMutualAidInfo.content }}