From 5eb6903bde0b9be730b35fc116eabf808f8f64e0 Mon Sep 17 00:00:00 2001 From: web <candymxq888@outlook.com> Date: 星期二, 18 三月 2025 11:33:58 +0800 Subject: [PATCH] fix:简化项目模板&剔除无用部分 --- src/permission.js | 3 src/views/system/role/index.vue | 2 src/screen/flow.vue | 1 src/assets/images/login_icon.png | 0 src/layout/components/Navbar.vue | 12 src/utils/ruoyi.js | 6 src/components/RightToolbar/index.vue | 134 +++++ src/layout/components/TagsView/index.vue | 2 src/api/facility/parameter.js | 2 src/views/facility/facilityType/index.vue | 384 +++++++------- src/utils/validate.js | 23 .env.development | 2 /dev/null | 157 ------ src/store/modules/tagsView.js | 1 src/views/system/menu/index.vue | 2 src/views/system/user/index.vue | 3 src/views/facility/facilityList/index.vue | 7 src/views/login.vue | 4 src/components/UploadIcons/index.vue | 105 ++++ src/main.js | 7 src/api/facility/supplier.js | 0 src/layout/components/Sidebar/index.vue | 6 src/utils/index.js | 2 src/views/system/dict/index.vue | 665 +++++++++++++------------ 24 files changed, 823 insertions(+), 707 deletions(-) diff --git a/.env.development b/.env.development index c4c671d..7396d49 100644 --- a/.env.development +++ b/.env.development @@ -6,7 +6,7 @@ VITE_APP_ENV = 'development' # 金川接口 - # VITE_APP_PUBLIC_REQUEST_API = 'http://113.250.189.120:8030' + # VITE_APP_PUBLIC_REQUEST_API = 'http://113.250.189.120:8030' # VITE_APP_PUBLIC_REQUEST_API = 'http://113.250.189.120:8036' #后端本地 VITE_APP_PUBLIC_REQUEST_API = 'http://192.168.0.200:8036' diff --git a/src/api/alarmApi/alarmHistory.js b/src/api/alarmApi/alarmHistory.js deleted file mode 100644 index 9c53ff6..0000000 --- a/src/api/alarmApi/alarmHistory.js +++ /dev/null @@ -1,69 +0,0 @@ -/* - * @Author: elkers - * @Date: 2024-08-09 14:29:49 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-09-30 09:17:48 - * @FilePath: \water-qinghe-web\src\api\alarmApi\alarmHistory.js - * @Description: 历史记录api - */ -import { publicRequest } from '@/utils/request' -export default function alarmHistoryApi() { - return { - create: (data) => { - return publicRequest({ - url: '/alarmHistory/create', - method: 'post', - data, - }); - }, - modify: (data) => { - return publicRequest({ - url: '/alarmHistory/modify', - method: 'post', - data, - }); - }, - remove: (data) => { - return publicRequest({ - url: `/alarmHistory/remove?id=${data}`, - method: 'post', - data, - }); - }, - stop: (data) => { - return publicRequest({ - url: `/alarmHistory/stop?id=${data}`, - method: 'post', - data, - }); - }, - enable: (data) => { - return publicRequest({ - url: `/alarmHistory/enable?id=${data}`, - method: 'post', - data, - }); - }, - search: (data) => { - return publicRequest({ - url: '/alarmHistory/search', - method: 'post', - data, - }); - }, - get: (data) => { - return publicRequest({ - url: `/alarmHistory/get?id=${data}`, - method: 'get', - data, - }); - }, - setSort: (data) => { - return publicRequest({ - url: `/alarmHistory/setSort`, - method: 'post', - data, - }); - } - }; -} diff --git a/src/api/alarmApi/alarmScheme.js b/src/api/alarmApi/alarmScheme.js deleted file mode 100644 index 985755a..0000000 --- a/src/api/alarmApi/alarmScheme.js +++ /dev/null @@ -1,69 +0,0 @@ -/* - * @Author: elkers - * @Date: 2024-08-09 14:29:49 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-10 08:57:04 - * @FilePath: \water-qinghe-web\src\api\alarmApi\alarmHistory.js - * @Description: 历史记录api - */ -import { publicRequest } from '@/utils/request' -export default function alarmSchemeApi() { - return { - create: (data) => { - return publicRequest({ - url: '/alarmScheme/create', - method: 'post', - data, - }); - }, - modify: (data) => { - return publicRequest({ - url: '/alarmScheme/modify', - method: 'post', - data, - }); - }, - remove: (data) => { - return publicRequest({ - url: `/alarmScheme/remove?id=${data}`, - method: 'post', - data, - }); - }, - stop: (data) => { - return publicRequest({ - url: `/alarmScheme/stop?id=${data}`, - method: 'post', - data, - }); - }, - enable: (data) => { - return publicRequest({ - url: `/alarmScheme/enable?id=${data}`, - method: 'post', - data, - }); - }, - search: (data) => { - return publicRequest({ - url: '/alarmScheme/search', - method: 'post', - data, - }); - }, - get: (data) => { - return publicRequest({ - url: `/alarmScheme/get?id=${data}`, - method: 'get', - data, - }); - }, - setSort: (data) => { - return publicRequest({ - url: `/alarmScheme/setSort`, - method: 'post', - data, - }); - } - }; -} diff --git a/src/api/archivesApi/index.js b/src/api/archivesApi/index.js deleted file mode 100644 index cef101e..0000000 --- a/src/api/archivesApi/index.js +++ /dev/null @@ -1,69 +0,0 @@ -/* - * @Author: elkers - * @Date: 2024-08-09 14:29:49 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-10 08:57:04 - * @FilePath: \water-qinghe-web\src\api\archivesApi\index.js - * @Description: 用户档案api - */ -import { publicRequest } from '@/utils/request' -export default function archivesApi() { - return { - create: (data) => { - return publicRequest({ - url: '/archives/create', - method: 'post', - data, - }); - }, - modify: (data) => { - return publicRequest({ - url: '/archives/modify', - method: 'post', - data, - }); - }, - remove: (data) => { - return publicRequest({ - url: `/archives/remove?id=${data}`, - method: 'post', - data, - }); - }, - stop: (data) => { - return publicRequest({ - url: `/archives/stop?id=${data}`, - method: 'post', - data, - }); - }, - enable: (data) => { - return publicRequest({ - url: `/archives/enable?id=${data}`, - method: 'post', - data, - }); - }, - search: (data) => { - return publicRequest({ - url: '/archives/search', - method: 'post', - data, - }); - }, - get: (data) => { - return publicRequest({ - url: `/archives/get?id=${data}`, - method: 'get', - data, - }); - }, - setSort: (data) => { - return publicRequest({ - url: `/archives/setSort`, - method: 'post', - data, - }); - } - }; -} diff --git a/src/api/area/index.js b/src/api/area/index.js deleted file mode 100644 index 96115b3..0000000 --- a/src/api/area/index.js +++ /dev/null @@ -1,61 +0,0 @@ -/* - * @Author: hqs elkers@163.com - * @Date: 2024-05-16 11:24:17 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-07-18 17:24:10 - * @FilePath: \wisdom-water-factory-web\src\api\configApi\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ -import { publicRequest } from '@/utils/request' - -//区域管理 -export function areaApi() { - return { - //创建 - create: (data) => { - return publicRequest({ - url: '/waterArea/create', - method: 'post', - data - }); - }, - //删除 - remove: (data) => { - return publicRequest({ - url: `/waterArea/remove?id=${data}`, - method: 'post', - data - }); - }, - //编辑 - modify: (data) => { - return publicRequest({ - url: '/waterArea/modify', - method: 'post', - data - }); - }, - //分页 - search: (data) => { - return publicRequest({ - url: '/waterArea/search', - method: 'post', - data - }); - }, - //查询树形结构 - getTree: () => { - return publicRequest({ - url: '/waterArea/getParentArea', - method: 'get' - }); - }, - //获取 - get: (id) => { - return publicRequest({ - url: `/waterArea/get?id=${id}`, - method: 'get' - }); - }, - }; -} diff --git a/src/api/configuration/alarmDefinition/index.js b/src/api/configuration/alarmDefinition/index.js deleted file mode 100644 index b61be2e..0000000 --- a/src/api/configuration/alarmDefinition/index.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-12 15:06:52 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-12 15:22:30 - * @FilePath: \water-qinghe-web\src\api\configuration\alarmDefinition\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - - -import { publicRequest } from '@/utils/request' -//异常定义 -export default function alarmDefinition() { - return { - //创建异常定义 - create: (data) => { - return publicRequest({ - url: '/alarmDefinition/create', - method: 'post', - data, - }); - }, - //编辑异常定义 - modify: (data) => { - return publicRequest({ - url: '/alarmDefinition/modify', - method: 'post', - data, - }); - }, - //分页查询异常定义 - search: (data) => { - return publicRequest({ - url: '/alarmDefinition/search', - method: 'post', - data, - }); - }, - //获取异常定义 - get: (id) => { - return publicRequest({ - url: `/alarmDefinition/get?id=${id}`, - method: 'get', - }); - }, - //删除 - remove: (id) => { - return publicRequest({ - url: `/alarmDefinition/remove?id=${id}`, - method: 'get' - }); - }, - }; -} \ No newline at end of file diff --git a/src/api/configuration/bussinessApi/index.js b/src/api/configuration/bussinessApi/index.js deleted file mode 100644 index a3337ed..0000000 --- a/src/api/configuration/bussinessApi/index.js +++ /dev/null @@ -1,68 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-14 10:48:03 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-14 15:33:09 - * @FilePath: \water-qinghe-web\src\api\configuration\bussinessApi\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' -export default function salePlaceApi() { - return { - //创建营业网点 - create: (data) => { - return publicRequest({ - url: '/businessHall/create', - method: 'post', - data, - }); - }, - //删除营业网点 - remove: (data) => { - return publicRequest({ - url: `/businessHall/remove?id=${data}`, - method: 'post', - data, - }); - }, - //编辑营业网点 - modify: (data) => { - return publicRequest({ - url: '/businessHall/modify', - method: 'post', - data, - }); - }, - //分页查询营业网点 - search: (data) => { - return publicRequest({ - url: '/businessHall/search', - method: 'post', - data, - }); - }, - //获取营业网点 - get: (id) => { - return publicRequest({ - url: `/businessHall/get?id=${id}`, - method: 'get' - }); - }, - //获取营业网点管理员 - getByAccount: () => { - return publicRequest({ - url: `/businessHall/getByAccount`, - method: 'get' - }); - }, - //营业网点绑定账号 - bind: (data) => { - return publicRequest({ - url: `/businessHall/bindAccount`, - method: 'post', - data, - }); - }, - }; -} \ No newline at end of file diff --git a/src/api/configuration/companySetting/index.js b/src/api/configuration/companySetting/index.js deleted file mode 100644 index 9527252..0000000 --- a/src/api/configuration/companySetting/index.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-13 15:42:27 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-13 15:45:58 - * @FilePath: \water-qinghe-web\src\api\configuration\companySetting\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' - -//公司配置信息 -export default function companySetting() { - return { - //创建公司配置信息 - create: (data) => { - return publicRequest({ - url: '/companySetting/create', - method: 'post', - data, - }); - }, - //删除公司配置信息 - remove: (id) => { - return publicRequest({ - url: `/companySetting/remove?id=${id}`, - method: 'post', - }); - }, - //编辑公司配置信息 - modify: (data) => { - return publicRequest({ - url: '/companySetting/modify', - method: 'post', - data, - }); - }, - //分页查询公司配置信息 - search: (data) => { - return publicRequest({ - url: '/companySetting/search', - method: 'post', - data, - }); - }, - //获取公司配置信息 - get: (id) => { - return publicRequest({ - url: `/companySetting/get?id=${id}`, - method: 'get', - }); - }, - }; -} \ No newline at end of file diff --git a/src/api/configuration/defaultAmountSetting/index.js b/src/api/configuration/defaultAmountSetting/index.js deleted file mode 100644 index 3538395..0000000 --- a/src/api/configuration/defaultAmountSetting/index.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-12 16:55:00 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-12 17:01:11 - * @FilePath: \water-qinghe-web\src\api\configuration\defaultAmountSetting\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' - -export default function defaultAmountSetting() { - return { - //创建[违约金配置] - create: (data) => { - return publicRequest({ - url: '/defaultAmountSetting/create', - method: 'post', - data, - }); - }, - //删除[违约金配置] - remove: (id) => { - return publicRequest({ - url: `/defaultAmountSetting/remove?id=${id}`, - method: 'post', - }); - }, - //编辑[违约金配置] - modify: (data) => { - return publicRequest({ - url: '/defaultAmountSetting/modify', - method: 'post', - data, - }); - }, - //查询[违约金配置] - search: (data) => { - return publicRequest({ - url: '/defaultAmountSetting/search', - method: 'post', - data, - }); - }, - //获取[违约金配置] - getD: (id) => { - return publicRequest({ - url: `/defaultAmountSetting/get?id=${id}`, - method: 'get', - }); - }, - }; - -} \ No newline at end of file diff --git a/src/api/configuration/invoiceTitle/index.js b/src/api/configuration/invoiceTitle/index.js deleted file mode 100644 index 97d9552..0000000 --- a/src/api/configuration/invoiceTitle/index.js +++ /dev/null @@ -1,72 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-20 10:12:32 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-20 10:40:46 - * @FilePath: \water-qinghe-web\src\api\configuration\invoiceTitle\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' - - -//发票抬头 -export default function invoiceTitle() { - return { - //创建发票抬头 - create: (data) => { - return publicRequest({ - url: '/invoiceTitle/create', - method: 'post', - data, - }); - }, - //删除发票抬头 - remove: (data) => { - return publicRequest({ - url: `/invoiceTitle/remove?id=${data}`, - method: 'post', - data, - }); - }, - //编辑发票抬头 - modify: (data) => { - return publicRequest({ - url: '/invoiceTitle/modify', - method: 'post', - data, - }); - }, - //停用发票抬头 - stop: (data) => { - return publicRequest({ - url: `/invoiceTitle/stop?id=${data}`, - method: 'post', - data, - }); - }, - //启用发票抬头 - enable: (data) => { - return publicRequest({ - url: `/invoiceTitle/enable?id=${data}`, - method: 'post', - data, - }); - }, - //分页查询发票抬头 - search: (data) => { - return publicRequest({ - url: '/invoiceTitle/search', - method: 'post', - data, - }); - }, - //获取发票抬头 - get: (id) => { - return publicRequest({ - url: `/invoiceTitle/get?id=${id}`, - method: 'get', - }); - }, - }; -} \ No newline at end of file diff --git a/src/api/configuration/userClassify/index.js b/src/api/configuration/userClassify/index.js deleted file mode 100644 index 2886077..0000000 --- a/src/api/configuration/userClassify/index.js +++ /dev/null @@ -1,61 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-12 13:50:06 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-12 14:24:00 - * @FilePath: \water-qinghe-web\src\api\configuration\userClassify\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' -//用户类型 -export default function userClassify() { - return { - //创建用户管理 - create: (data) => { - return publicRequest({ - url: '/userclassify/create', - method: 'post', - data, - }); - }, - //删除用户管理 - remove: (id) => { - return publicRequest({ - url: `/userclassify/remove?id=${id}`, - method: 'post', - }); - }, - //编辑用户管理 - modify: (data) => { - return publicRequest({ - url: '/userclassify/modify', - method: 'post', - data, - }); - }, - //停用用户管理 - stop: (data) => { - return publicRequest({ - url: `/userclassify/stop?id=${data}`, - method: 'post', - data, - }); - }, - //分页查询用户管理 - search: (data) => { - return publicRequest({ - url: '/userclassify/search', - method: 'post', - data, - }); - }, - //获取用户管理 - get: (id) => { - return publicRequest({ - url: `/userclassify/get?id=${id}`, - method: 'get', - }); - }, - }; -} diff --git a/src/api/configuration/waterOtherFee/index.js b/src/api/configuration/waterOtherFee/index.js deleted file mode 100644 index 521db6e..0000000 --- a/src/api/configuration/waterOtherFee/index.js +++ /dev/null @@ -1,69 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-12 15:44:34 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-12 15:55:20 - * @FilePath: \water-qinghe-web\src\api\configuration\waterOtherFee\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - - -import { publicRequest } from '@/utils/request' -//用水其他费用 -export default function waterOtherFee() { - return { - //创建用水其他费用 - create: (data) => { - return publicRequest({ - url: '/companyOtherFee/create', - method: 'post', - data, - }); - }, - //删除用水其他费用 - remove: (id) => { - return publicRequest({ - url: `/companyOtherFee/remove/${id}`, - method: 'post', - }); - }, - //停用用水其他费用 - stop: (id) => { - return publicRequest({ - url: `/companyOtherFee/stop/${id}`, - method: 'post', - }); - }, - //启用用水其他费用 - enable: (id) => { - return publicRequest({ - url: `/companyOtherFee/enable/${id}`, - method: 'post', - }); - }, - //编辑用水其他费用 - modify: (data) => { - return publicRequest({ - url: '/companyOtherFee/modify', - method: 'post', - data, - }); - }, - //分页查询用水其他费用 - search: (data) => { - return publicRequest({ - url: '/companyOtherFee/search', - method: 'post', - data, - }); - }, - //获取用水其他费用 - get: (data) => { - return publicRequest({ - url: `/companyOtherFee/get?id=${data}`, - method: 'get', - data, - }); - }, - }; -} \ No newline at end of file diff --git a/src/api/configuration/waterPrice/index.js b/src/api/configuration/waterPrice/index.js deleted file mode 100644 index 8ee9a6f..0000000 --- a/src/api/configuration/waterPrice/index.js +++ /dev/null @@ -1,60 +0,0 @@ - -import { publicRequest } from '@/utils/request' - -//阶梯收费配置 -export default function TieredCharging() { - return { - //创建阶梯收费配置 - create: (data) => { - return publicRequest({ - url: '/tieredCharging/create', - method: 'post', - data, - }); - }, - //删除阶梯收费配置 - remove: (id) => { - return publicRequest({ - url: `/tieredCharging/remove?id=${id}`, - method: 'post', - }); - }, - //编辑阶梯收费配置 - modify: (data) => { - return publicRequest({ - url: '/tieredCharging/modify', - method: 'post', - data, - }); - }, - //停用阶梯收费配置 - stop: (id) => { - return publicRequest({ - url: `/tieredCharging/stop?id=${id}`, - method: 'post', - }); - }, - //启用阶梯收费配置 - enable: (id) => { - return publicRequest({ - url: `/tieredCharging/enable?id=${id}`, - method: 'post', - }); - }, - //分页查询阶梯收费配置 - search: (data) => { - return publicRequest({ - url: '/tieredCharging/search', - method: 'post', - data, - }); - }, - //获取阶梯收费配置 - get: (id) => { - return publicRequest({ - url: `/tieredCharging/get?id=${id}`, - method: 'get', - }); - }, - }; -} \ No newline at end of file diff --git a/src/api/examine/plan/index.js b/src/api/examine/plan/index.js deleted file mode 100644 index 6145c63..0000000 --- a/src/api/examine/plan/index.js +++ /dev/null @@ -1,77 +0,0 @@ -/* - * @Author: hqs elkers@163.com - * @Date: 2024-05-17 17:11:53 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-10 17:52:11 - * @FilePath: \wisdom-water-factory-web\src\api\facilityExamine\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ -import { publicRequest } from '@/utils/request.js' - -//巡检计划 -export function facilityExaminePlanApi() { - return { - //创建巡检计划 - create: (data) => { - return publicRequest({ - url: '/facilityExaminePlan/create', - method: 'post', - data - }); - }, - - //删除巡检计划 - remove: (id) => { - return publicRequest({ - url: `/facilityExaminePlan/remove?id=${id}`, - method: 'post' - }); - }, - //编辑巡检计划 - modify: (data) => { - return publicRequest({ - url: '/facilityExaminePlan/modify', - method: 'post', - data - }); - }, - //停用巡检计划 - stop: (data) => { - return publicRequest({ - url: `/facilityExaminePlan/stop?id=${data}`, - method: 'post', - data - }); - }, - //启用巡检计划 - enable: (data) => { - return publicRequest({ - url: `/facilityExaminePlan/enable?id=${data}`, - method: 'post', - data - }); - }, - //分页查巡检计划 - search: (data) => { - return publicRequest({ - url: '/facilityExaminePlan/search', - method: 'post', - data - }); - }, - //获取巡检计划详情 - get: (id) => { - return publicRequest({ - url: `/facilityExaminePlan/get?id=${id}`, - method: 'get' - }); - }, - //修改执行状态 - updateState: (id) => { - return publicRequest({ - url: `/facilityExamine/updateState?facilityId=${id}`, - method: 'post' - }); - }, - }; -} diff --git a/src/api/examine/record/index.js b/src/api/examine/record/index.js deleted file mode 100644 index 19a4037..0000000 --- a/src/api/examine/record/index.js +++ /dev/null @@ -1,61 +0,0 @@ -/* - * @Author: hqs elkers@163.com - * @Date: 2024-05-17 17:11:53 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-05-29 14:50:30 - * @FilePath: \wisdom-water-factory-web\src\api\facilityExamine\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ -import { publicRequest } from '@/utils/request.js' -//巡检管理 -export function facilityExamineRecordApi() { - return { - //创建 - create: (data) => { - return publicRequest({ - url: '/facilityExamineRecord/create', - method: 'post', - data - }); - }, - //编辑 - modify: (data) => { - return publicRequest({ - url: '/facilityExamineRecord/modify', - method: 'post', - data - }); - }, - //停用 - stop: (data) => { - return publicRequest({ - url: `/facilityExamineRecord/stop?id=${data}`, - method: 'post', - data - }); - }, - //启用 - enable: (data) => { - return publicRequest({ - url: `/facilityExamineRecord/enable?id=${data}`, - method: 'post', - data - }); - }, - //分页查巡检 - search: (data) => { - return publicRequest({ - url: '/facilityExamineRecord/search', - method: 'post', - data - }); - }, - //获取详情 - get: (id) => { - return publicRequest({ - url: `/facilityExamineRecord/get?id=${id}`, - method: 'get' - }); - }, - }; -} diff --git a/src/api/facility/collector.js b/src/api/facility/collector.js deleted file mode 100644 index 53becf8..0000000 --- a/src/api/facility/collector.js +++ /dev/null @@ -1,59 +0,0 @@ -/* - * @Author: elkers - * @Date: 2024-08-09 14:29:49 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-14 09:34:23 - * @FilePath: \water-qinghe-web\src\api\facility\collector.js - * @Description: 集中器api - */ -import { publicRequest } from '@/utils/request' -export default function collectorApi() { - return { - create: (data) => { - return publicRequest({ - url: '/collectorManagement/create', - method: 'post', - data - }); - }, - modify: (data) => { - return publicRequest({ - url: '/collectorManagement/modify', - method: 'post', - data - }); - }, - remove: (id) => { - return publicRequest({ - url: `/collectorManagement/remove?id=${id}`, - method: 'post' - }); - }, - stop: (id) => { - return publicRequest({ - url: `/collectorManagement/stop?id=${id}`, - method: 'post' - }); - }, - enable: (id) => { - return publicRequest({ - url: `/collectorManagement/enable?id=${id}`, - method: 'post' - }); - }, - search: (data) => { - return publicRequest({ - url: '/collectorManagement/search', - method: 'post', - data - }); - }, - getList: (data) => { - return publicRequest({ - url: `/collectorManagement/getList`, - method: 'get', - data - }); - }, - }; -} diff --git a/src/api/configuration/facilityParameter/index.js b/src/api/facility/parameter.js similarity index 95% rename from src/api/configuration/facilityParameter/index.js rename to src/api/facility/parameter.js index 75c54f8..f587ec9 100644 --- a/src/api/configuration/facilityParameter/index.js +++ b/src/api/facility/parameter.js @@ -7,7 +7,7 @@ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ -import { publicRequest } from '@/utils/request' +import { publicRequest } from '@/utils/request.js' //公司配置信息 export default function waterFacilityParameter() { diff --git a/src/api/facility/record.js b/src/api/facility/record.js deleted file mode 100644 index 0306c49..0000000 --- a/src/api/facility/record.js +++ /dev/null @@ -1,13 +0,0 @@ - -import { publicRequest } from '@/utils/request' -export default function recordApi() { - return { - handleRecord: (data) => { - return publicRequest({ - url: '/waterMeterOperationRecord/search', - method: 'post', - data - }); - }, - } -} \ No newline at end of file diff --git a/src/api/waterMeterApi/supplier.js b/src/api/facility/supplier.js similarity index 100% rename from src/api/waterMeterApi/supplier.js rename to src/api/facility/supplier.js diff --git a/src/api/facility/valveDevice.js b/src/api/facility/valveDevice.js deleted file mode 100644 index 61be424..0000000 --- a/src/api/facility/valveDevice.js +++ /dev/null @@ -1,62 +0,0 @@ -/* - * @Author: elkers - * @Date: 2024-08-09 14:29:49 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-14 09:04:16 - * @FilePath: \water-qinghe-web\src\api\facility\index.js - * @Description: 阀门api - */ -import { publicRequest } from '@/utils/request' -export default function valveDeviceApi() { - return { - create: (data) => { - return publicRequest({ - url: '/valveDevice/create', - method: 'post', - data, - }); - }, - modify: (data) => { - return publicRequest({ - url: '/valveDevice/modify', - method: 'post', - data, - }); - }, - remove: (data) => { - return publicRequest({ - url: `/valveDevice/remove?id=${data}`, - method: 'post', - data, - }); - }, - stop: (data) => { - return publicRequest({ - url: `/valveDevice/stop?id=${data}`, - method: 'post', - data, - }); - }, - enable: (data) => { - return publicRequest({ - url: `/valveDevice/enable?id=${data}`, - method: 'post', - data, - }); - }, - search: (data) => { - return publicRequest({ - url: '/valveDevice/search', - method: 'post', - data, - }); - }, - getList: (data) => { - return publicRequest({ - url: `/valveDevice/getList`, - method: 'get', - data, - }); - }, - }; -} diff --git a/src/api/financial/billRecord/index.js b/src/api/financial/billRecord/index.js deleted file mode 100644 index 9c7f4de..0000000 --- a/src/api/financial/billRecord/index.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-20 14:56:51 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-20 15:31:57 - * @FilePath: \water-qinghe-web\src\api\financial\payRecord\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' - -export default function billRecord() { - return { - search: (data) => { - return publicRequest({ - url: '/userWaterBill/search', - method: 'post', - data, - }); - }, - //获取应付 - getUserWaterBill: (data) => { - return publicRequest({ - url: `/userWaterBill/get?id=${data}`, - method: 'get', - data, - }); - }, - //获取用户未支付金额 - getMeterArrearsAmount: (data) => { - return publicRequest({ - url: `/userWaterBill/getMeterArrearsAmount?meterSn=${data}`, - method: 'get', - data, - }); - }, - //人工抄表 - manualMeterReading: (data) => { - return publicRequest({ - url: '/userWaterBill/manualMeterReading', - method: 'post', - data, - }); - }, - //调账 - changeBillFee: (data) => { - return publicRequest({ - url: '/userWaterBill/changeBillFee', - method: 'post', - data, - }); - }, - } -} \ No newline at end of file diff --git a/src/api/financial/invoice/index.js b/src/api/financial/invoice/index.js deleted file mode 100644 index 24146ff..0000000 --- a/src/api/financial/invoice/index.js +++ /dev/null @@ -1,68 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-15 14:49:55 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-20 14:13:30 - * @FilePath: \water-qinghe-web\src\api\financial\invoice\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' - -//发票 -export default function invoice(){ - return { - //创建发票 - create: (data) => { - return publicRequest({ - url: '/invoice/create', - method: 'post', - data, - }); - }, - //删除发票 - remove: (id) => { - return publicRequest({ - url: `/invoice/remove?id=${id}`, - method: 'post', - }); - }, - //编辑发票 - modify: (data) => { - return publicRequest({ - url: '/invoice/modify', - method: 'post', - data, - }); - }, - //停用发票 - stop: (data) => { - return publicRequest({ - url: `/invoice/stop?id=${data}`, - method: 'post', - }); - }, - //启用发票 - enable: (data) => { - return publicRequest({ - url: `/invoice/enable?id=${data}`, - method: 'post', - }); - }, - //分页查询发票 - search: (data) => { - return publicRequest({ - url: '/invoice/search', - method: 'post', - data, - }); - }, - //获取发票 - get: (id) => { - return publicRequest({ - url: `/invoice/get?id=${id}`, - method: 'get', - }); - }, - }; -} diff --git a/src/api/financial/payRecord/index.js b/src/api/financial/payRecord/index.js deleted file mode 100644 index 5244e0d..0000000 --- a/src/api/financial/payRecord/index.js +++ /dev/null @@ -1,22 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-20 14:56:51 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-20 15:33:33 - * @FilePath: \water-qinghe-web\src\api\financial\payRecord\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' - -export default function payRecord() { - return { - search: (data) => { - return publicRequest({ - url: '/paymentRecords/search', - method: 'post', - data, - }); - }, - } -} \ No newline at end of file diff --git a/src/api/financial/payable/index.js b/src/api/financial/payable/index.js deleted file mode 100644 index 8438a42..0000000 --- a/src/api/financial/payable/index.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-15 14:49:55 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-20 14:42:14 - * @FilePath: \water-qinghe-web\src\api\financial\invoice\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' - -//应付管理 -export default function payable() { - return { - //创建应付 - create: (data) => { - return publicRequest({ - url: '/payment/create', - method: 'post', - data, - }); - }, - //删除应付 - remove: (id) => { - return publicRequest({ - url: `/payment/remove?id=${id}`, - method: 'post', - }); - }, - //编辑应付 - modify: (data) => { - return publicRequest({ - url: '/payment/modify', - method: 'post', - data, - }); - }, - //分页查询应付 - search: (data) => { - return publicRequest({ - url: '/payment/search', - method: 'post', - data, - }); - }, - //获取应付 - get: (id) => { - return publicRequest({ - url: `/payment/get?id=${id}`, - method: 'get', - }); - }, - }; -} diff --git a/src/api/financial/recharge/index.js b/src/api/financial/recharge/index.js deleted file mode 100644 index 7e0946c..0000000 --- a/src/api/financial/recharge/index.js +++ /dev/null @@ -1,36 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-20 14:56:51 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-21 09:22:18 - * @FilePath: \water-qinghe-web\src\api\financial\payRecord\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' - -export default function recharge() { - return { - search: (data) => { - return publicRequest({ - url: '/recharge/search', - method: 'post', - data, - }); - }, - pay: (data) => { - return publicRequest({ - url: '/recharge/fees', - method: 'post', - data, - }); - }, - //获取充值 - get: (id) => { - return publicRequest({ - url: `/recharge/get?id=${id}`, - method: 'get', - }); - }, - } -} \ No newline at end of file diff --git a/src/api/financial/tradeRecord/index.js b/src/api/financial/tradeRecord/index.js deleted file mode 100644 index 5246643..0000000 --- a/src/api/financial/tradeRecord/index.js +++ /dev/null @@ -1,28 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-20 14:56:51 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-20 15:33:33 - * @FilePath: \water-qinghe-web\src\api\financial\payRecord\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' - -export default function tradeRecord() { - return { - search: (data) => { - return publicRequest({ - url: '/tradeRecord/search', - method: 'post', - data, - }); - }, - exportData: (data) => { - return publicRequest({ - url: `/tradeRecord/exportData?createTimeRange=${data}`, - method: 'post', - }); - }, - } -} \ No newline at end of file diff --git a/src/api/financial/userBankAccount/index.js b/src/api/financial/userBankAccount/index.js deleted file mode 100644 index d708a81..0000000 --- a/src/api/financial/userBankAccount/index.js +++ /dev/null @@ -1,49 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-20 14:56:51 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-20 15:57:45 - * @FilePath: \water-qinghe-web\src\api\financial\payRecord\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' - - -export default function userBankAccount() { - return { - create: (data) => { - return publicRequest({ - url: '/userBankAccount/create', - method: 'post', - data, - }); - }, - modify: (data) => { - return publicRequest({ - url: '/userBankAccount/modify', - method: 'post', - data, - }); - }, - remove: (id) => { - return publicRequest({ - url: `/userBankAccount/remove?id=${id}`, - method: 'post', - }); - }, - search: (data) => { - return publicRequest({ - url: '/userBankAccount/search', - method: 'post', - data, - }); - }, - get: (id) => { - return publicRequest({ - url: `/userBankAccount/get?id=${id}`, - method: 'get', - }); - }, - }; -} \ No newline at end of file diff --git a/src/api/financial/userCapitalChange/index.js b/src/api/financial/userCapitalChange/index.js deleted file mode 100644 index 8d69ec3..0000000 --- a/src/api/financial/userCapitalChange/index.js +++ /dev/null @@ -1,14 +0,0 @@ - -import { publicRequest } from '@/utils/request' - -export default function userCapitalChange() { - return { - search: (data) => { - return publicRequest({ - url: '/userCapitalChange/search', - method: 'post', - data, - }); - }, - } -} \ No newline at end of file diff --git a/src/api/financial/waterMeterTask/index.js b/src/api/financial/waterMeterTask/index.js deleted file mode 100644 index 5bdc98f..0000000 --- a/src/api/financial/waterMeterTask/index.js +++ /dev/null @@ -1,22 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-20 14:56:51 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-20 15:31:57 - * @FilePath: \water-qinghe-web\src\api\financial\payRecord\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' - -export default function waterMeterTask() { - return { - search: (data) => { - return publicRequest({ - url: '/waterMeterTask/search', - method: 'post', - data, - }); - }, - } -} \ No newline at end of file diff --git a/src/api/knowledgeApi/index.js b/src/api/knowledgeApi/index.js deleted file mode 100644 index 98ef13d..0000000 --- a/src/api/knowledgeApi/index.js +++ /dev/null @@ -1,69 +0,0 @@ -/* - * @Author: elkers - * @Date: 2024-08-09 14:29:49 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-09 17:52:47 - * @FilePath: \water-qinghe-web\src\api\knowledgeApi\index.js - * @Description: 知识库api - */ -import { publicRequest } from '@/utils/request' -export default function knowledgeApi() { - return { - create: (data) => { - return publicRequest({ - url: '/knowledgeBase/create', - method: 'post', - data, - }); - }, - modify: (data) => { - return publicRequest({ - url: '/knowledgeBase/modify', - method: 'post', - data, - }); - }, - remove: (data) => { - return publicRequest({ - url: `/knowledgeBase/remove?id=${data}`, - method: 'post', - data, - }); - }, - stop: (data) => { - return publicRequest({ - url: `/knowledgeBase/stop?id=${data}`, - method: 'post', - data, - }); - }, - enable: (data) => { - return publicRequest({ - url: `/knowledgeBase/enable?id=${data}`, - method: 'post', - data, - }); - }, - search: (data) => { - return publicRequest({ - url: '/knowledgeBase/search', - method: 'post', - data, - }); - }, - get: (data) => { - return publicRequest({ - url: `/knowledgeBase/get?id=${data}`, - method: 'get', - data, - }); - }, - setSort: (data) => { - return publicRequest({ - url: `/knowledgeBase/setSort`, - method: 'post', - data, - }); - } - }; -} diff --git a/src/api/maintain/plan/index.js b/src/api/maintain/plan/index.js deleted file mode 100644 index 9a0d7a7..0000000 --- a/src/api/maintain/plan/index.js +++ /dev/null @@ -1,77 +0,0 @@ -/* - * @Author: hqs elkers@163.com - * @Date: 2024-05-17 17:11:53 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-05-29 14:50:30 - * @FilePath: \wisdom-water-factory-web\src\api\facilityExamine\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ -import { publicRequest } from '@/utils/request.js' - -//巡检计划 -export function facilityMaintainPlanApi() { - return { - //创建维护计划 - create: (data) => { - return publicRequest({ - url: '/facilityMaintainPlan/create', - method: 'post', - data - }); - }, - - //删除维护计划 - // remove: (id) => { - // return publicRequest({ - // url: `/facilityMaintainPlan/remove?id=${id}`, - // method: 'post' - // }); - // }, - //编辑维护计划 - modify: (data) => { - return publicRequest({ - url: '/facilityMaintainPlan/modify', - method: 'post', - data - }); - }, - //停用维护计划 - stop: (data) => { - return publicRequest({ - url: `/facilityMaintainPlan/stop?id=${data}`, - method: 'post', - data - }); - }, - //启用维护计划 - enable: (data) => { - return publicRequest({ - url: `/facilityMaintainPlan/enable?id=${data}`, - method: 'post', - data - }); - }, - //分页查维护计划 - search: (data) => { - return publicRequest({ - url: '/facilityMaintainPlan/search', - method: 'post', - data - }); - }, - //获取维护计划详情 - get: (id) => { - return publicRequest({ - url: `/facilityMaintainPlan/get?id=${id}`, - method: 'get' - }); - }, - //修改执行状态 - updateState: (id) => { - return publicRequest({ - url: `/facilityMaintainPlan/updateState?facilityId=${id}`, - method: 'post' - }); - }, - }; -} diff --git a/src/api/maintain/record/index.js b/src/api/maintain/record/index.js deleted file mode 100644 index 3869850..0000000 --- a/src/api/maintain/record/index.js +++ /dev/null @@ -1,77 +0,0 @@ -/* - * @Author: hqs elkers@163.com - * @Date: 2024-05-17 17:11:53 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-05-29 14:50:30 - * @FilePath: \wisdom-water-factory-web\src\api\facilityExamine\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ -import { publicRequest } from '@/utils/request.js' - -//巡检计划 -export function facilityMaintainRecordApi() { - return { - //创建巡检计划 - create: (data) => { - return publicRequest({ - url: '/facilityMaintainRecord/create', - method: 'post', - data - }); - }, - - //删除巡检计划 - remove: (id) => { - return publicRequest({ - url: `/facilityMaintainRecord/remove?id=${id}`, - method: 'post' - }); - }, - //编辑巡检计划 - modify: (data) => { - return publicRequest({ - url: '/facilityMaintainRecord/modify', - method: 'post', - data - }); - }, - //停用巡检计划 - stop: (data) => { - return publicRequest({ - url: `/facilityMaintainRecord/stop?id=${data}`, - method: 'post', - data - }); - }, - //启用巡检计划 - enable: (data) => { - return publicRequest({ - url: `/facilityMaintainRecord/enable?id=${data}`, - method: 'post', - data - }); - }, - //分页查巡检计划 - search: (data) => { - return publicRequest({ - url: '/facilityMaintainRecord/search', - method: 'post', - data - }); - }, - //获取巡检计划详情 - get: (id) => { - return publicRequest({ - url: `/facilityMaintainRecord/get?id=${id}`, - method: 'get' - }); - }, - //修改执行状态 - updateState: (id) => { - return publicRequest({ - url: `/facilityMaintainRecord/updateState?facilityId=${id}`, - method: 'post' - }); - }, - }; -} diff --git a/src/api/meterReadingApi/meterReadingRecord.js b/src/api/meterReadingApi/meterReadingRecord.js deleted file mode 100644 index 4c81687..0000000 --- a/src/api/meterReadingApi/meterReadingRecord.js +++ /dev/null @@ -1,78 +0,0 @@ -/* - * @Author: elkers - * @Date: 2024-08-09 14:29:49 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-10 09:46:35 - * @FilePath: \water-qinghe-web\src\api\meterReadingApi\meterReadingRecord.js - * @Description: 自动抄表上报数据api - */ -import { publicRequest } from '@/utils/request' -export default function meterReadingRecordApi() { - return { - //抄表管理 - create: (data) => { - return publicRequest({ - url: '/meterReadingRecord/create', - method: 'post', - data, - }); - }, - modify: (data) => { - return publicRequest({ - url: '/meterReadingRecord/modify', - method: 'post', - data, - }); - }, - remove: (data) => { - return publicRequest({ - url: `/meterReadingRecord/remove?id=${data}`, - method: 'post', - data, - }); - }, - stop: (data) => { - return publicRequest({ - url: `/meterReadingRecord/stop?id=${data}`, - method: 'post', - data, - }); - }, - enable: (data) => { - return publicRequest({ - url: `/meterReadingRecord/enable?id=${data}`, - method: 'post', - data, - }); - }, - search: (data) => { - return publicRequest({ - url: '/meterReadingRecord/search', - method: 'post', - data, - }); - }, - getByMonth: (data) => { - return publicRequest({ - url: '/meterReadingRecord/getByMonth', - method: 'post', - data, - }); - }, - get: (data) => { - return publicRequest({ - url: `/meterReadingRecord/get?id=${data}`, - method: 'get', - data, - }); - }, - //手动抄表 - manualMeterReading: (data) => { - return publicRequest({ - url: '/userWaterBill/manualMeterReading', - method: 'post', - data, - }); - }, - }; -} diff --git a/src/api/screen/alarm/index.js b/src/api/screen/alarm/index.js deleted file mode 100644 index 22c8c3b..0000000 --- a/src/api/screen/alarm/index.js +++ /dev/null @@ -1,19 +0,0 @@ - -import { publicRequest } from '@/utils/request' - -export default function alarm() { - return { - get: () => { - return publicRequest({ - url: '/statistics/alarmAnalysis', - method: 'get', - }) - }, - getHandel: () => { - return publicRequest({ - url: '/statistics/alarmCount', - method: 'post', - }) - }, - } -} \ No newline at end of file diff --git a/src/api/screen/dma/index.js b/src/api/screen/dma/index.js deleted file mode 100644 index ab56fb4..0000000 --- a/src/api/screen/dma/index.js +++ /dev/null @@ -1,46 +0,0 @@ - -import { publicRequest } from '@/utils/request' - -export default function dma() { - return { - //获取压力-流量-液位-监测数据 - searchMonitor: (data) => { - return publicRequest({ - url: '/statistics/monitor', - method: 'post', - data - }) - }, - //获取夜间流量分析-监测数据 - searchStatistic: (data) => { - return publicRequest({ - url: '/statistics/flowAnalysis', - method: 'post', - data - }) - }, - //获取区域 - getArea: () => { - return publicRequest({ - url: '/waterArea/getParentArea', - method: 'get', - }) - }, - //首页分区用水数据统计 - headWaterArea: (data) => { - return publicRequest({ - url: '/statistics/headWaterArea', - method: 'post', - data - }); - }, - //实时报警 - alarm: (data) => { - return publicRequest({ - url: '/alarmHistory/search', - method: 'post', - data - }); - }, - } -} \ No newline at end of file diff --git a/src/api/screen/overview/index.js b/src/api/screen/overview/index.js deleted file mode 100644 index fe5b0d9..0000000 --- a/src/api/screen/overview/index.js +++ /dev/null @@ -1,14 +0,0 @@ - -import { publicRequest } from '@/utils/request' - -export default function overview() { - return { - //获取overview - getDataOverview: () => { - return publicRequest({ - url: '/statistics/dataOverview', - method: 'post', - }) - }, - } -} \ No newline at end of file diff --git a/src/api/screen/pupm/index.js b/src/api/screen/pupm/index.js deleted file mode 100644 index 13ecc45..0000000 --- a/src/api/screen/pupm/index.js +++ /dev/null @@ -1,27 +0,0 @@ - -import { publicRequest } from '@/utils/request' - -export default function pump() { - return { - getPumpData: (id) => { - return publicRequest({ - url: '/statistics/getPumpStatus', - method: 'get', - }) - }, - handelPump: (data) => { - return publicRequest({ - url: 'waterFacility/openOrClose', - method: 'post', - data - }) - }, - handelPumpStatus: (data) => { - return publicRequest({ - url: 'statistics/editPumpStatus', - method: 'post', - data - }) - }, - } -} \ No newline at end of file diff --git a/src/api/screen/revenue/index.js b/src/api/screen/revenue/index.js deleted file mode 100644 index ebf606c..0000000 --- a/src/api/screen/revenue/index.js +++ /dev/null @@ -1,78 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-08 14:29:49 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-08 14:39:09 - * @FilePath: \water-qinghe-web\src\api\system\user.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' - -export function revenue() { - return{ - // 当年缴费趋势统计 - searchPay:() =>{ - return publicRequest({ - url: '/statistics/yearStatistics', - method: 'post', - }) - }, - // 当年用水趋势统计 - searchWater:() =>{ - return publicRequest({ - url: '/statistics/useWaterStatistics', - method: 'post', - }) - }, - // 缴费排行统计 - getPayRank:() =>{ - return publicRequest({ - url: '/statistics/userPayStatistics', - method: 'post', - }) - }, - // 用水排行统计 - getWaterRank:() =>{ - return publicRequest({ - url: '/statistics/yearUseWater', - method: 'post', - }) - }, - // 抄表记录 - getMeterReading:() =>{ - return publicRequest({ - url: '/statistics/getMeterReading', - method: 'post', - }) - }, - // 用户类型 - getUserClassify:() =>{ - return publicRequest({ - url: '/statistics/userClassify', - method: 'post', - }) - }, - // 用户缴费情况 - getUserPayCondition:() =>{ - return publicRequest({ - url: '/statistics/userPayCondition', - method: 'post', - }) - }, - // (营收)营收统计 - getEvenueStatistics:() =>{ - return publicRequest({ - url: '/statistics/revenueStatistics', - method: 'post', - }) - }, - // (营收)用户数量统计 - getUserCount:() =>{ - return publicRequest({ - url: '/statistics/userCount', - method: 'post', - }) - }, -} -} diff --git a/src/api/screen/statistics/index.js b/src/api/screen/statistics/index.js deleted file mode 100644 index 960debb..0000000 --- a/src/api/screen/statistics/index.js +++ /dev/null @@ -1,23 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-08 14:29:49 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-08 14:39:09 - * @FilePath: \water-qinghe-web\src\api\system\user.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' - -export default function statistics() { - return{ - search:(data) =>{ - return publicRequest({ - //(统计分析)根据监控点和时间获取数据 - url: '/statistics/getDataByPoint', - method: 'post', - data - }) - }, - } -} diff --git a/src/api/waterMeterApi/index.js b/src/api/waterMeterApi/index.js deleted file mode 100644 index bed2c12..0000000 --- a/src/api/waterMeterApi/index.js +++ /dev/null @@ -1,85 +0,0 @@ -/* - * @Author: elkers - * @Date: 2024-08-09 14:29:49 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-15 16:10:59 - * @FilePath: \water-qinghe-web\src\api\system\user.js - * @Description: 水表api - */ - -import {publicRequest} from '@/utils/request' - -export default function waterMeterApi() { - return { - //添加水表信息 - create: (data) => { - return publicRequest({ - url: '/waterMeterInventory/create', - method: 'post', - data, - }); - }, - //修改 - modify: (data) => { - return publicRequest({ - url: '/waterMeterInventory/modify', - method: 'post', - data, - }); - }, - //删除 - remove: (data) => { - return publicRequest({ - url: `/waterMeterInventory/remove?id=${data}`, - method: 'post', - data, - }); - }, - //停用 - stop: (data) => { - return publicRequest({ - url: `/waterMeterInventory/stop?id=${data}`, - method: 'post', - data, - }); - }, - //启用 - enable: (data) => { - return publicRequest({ - url: `/waterMeterInventory/enable?id=${data}`, - method: 'post', - data, - }); - }, - //分页查询 - search: (data) => { - return publicRequest({ - url: '/waterMeterInventory/search', - method: 'post', - data, - }); - }, - //获取水表信息 - get: (data) => { - return publicRequest({ - url: `/waterMeterInventory/get?id=${data}`, - method: 'get', - data, - }); - }, - //获取水表信息,0未使用,1已使用 - getIsUse: (isUse) => { - return publicRequest({ - url: `/waterMeterInventory/getMeterByIsUse?isUse=${isUse}`, - method: 'get', - }); - }, - //根据用户获取所有水表 - getByUser: (id) => { - return publicRequest({ - url: `/useWaterMeter/list4User/${id}`, - method: 'get', - }); - }, - }; -} diff --git a/src/api/waterMeterApi/meterOperation.js b/src/api/waterMeterApi/meterOperation.js deleted file mode 100644 index 18216fa..0000000 --- a/src/api/waterMeterApi/meterOperation.js +++ /dev/null @@ -1,62 +0,0 @@ -/* - * @Author: elkers - * @Date: 2024-08-09 14:29:49 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-13 18:34:33 - * @FilePath: \water-qinghe-web\src\api\system\meterOperation.js - * @Description: 水表操作api - */ -import { publicRequest } from '@/utils/request' -export default function meterOperationApi() { - return { - create: (data) => { - return publicRequest({ - url: '/waterMeterOperationRecord/create', - method: 'post', - data, - }); - }, - modify: (data) => { - return publicRequest({ - url: '/waterMeterOperationRecord/modify', - method: 'post', - data, - }); - }, - remove: (data) => { - return publicRequest({ - url: `/waterMeterOperationRecord/remove?id=${data}`, - method: 'post', - data, - }); - }, - stop: (data) => { - return publicRequest({ - url: `/waterMeterOperationRecord/stop?id=${data}`, - method: 'post', - data, - }); - }, - enable: (data) => { - return publicRequest({ - url: `/waterMeterOperationRecord/enable?id=${data}`, - method: 'post', - data, - }); - }, - search: (data) => { - return publicRequest({ - url: '/waterMeterOperationRecord/search', - method: 'post', - data, - }); - }, - getList: (data) => { - return publicRequest({ - url: `/waterMeterOperationRecord/getList`, - method: 'get', - data, - }); - }, - }; -} diff --git a/src/api/waterMeterApi/useWaterMeter.js b/src/api/waterMeterApi/useWaterMeter.js deleted file mode 100644 index c5e5ef8..0000000 --- a/src/api/waterMeterApi/useWaterMeter.js +++ /dev/null @@ -1,81 +0,0 @@ -/* - * @Author: elkers - * @Date: 2024-08-09 14:29:49 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-10 08:42:47 - * @FilePath: \water-qinghe-web\src\api\waterMeterApi\useWaterMeter.js - * @Description: 用户已绑水表api - */ -import { publicRequest } from '@/utils/request' -export default function useWaterMeterApi() { - return { - create: (data) => { - return publicRequest({ - url: '/useWaterMeter/create', - method: 'post', - data, - }); - }, - modify: (data) => { - return publicRequest({ - url: '/useWaterMeter/modify', - method: 'post', - data, - }); - }, - remove: (data) => { - return publicRequest({ - url: `/useWaterMeter/remove?id=${data}`, - method: 'post', - data, - }); - }, - stop: (data) => { - return publicRequest({ - url: `/useWaterMeter/stop?id=${data}`, - method: 'post', - data, - }); - }, - enable: (data) => { - return publicRequest({ - url: `/useWaterMeter/enable?id=${data}`, - method: 'post', - data, - }); - }, - search: (data) => { - return publicRequest({ - url: '/useWaterMeter/search', - method: 'post', - data, - }); - }, - get: (data) => { - return publicRequest({ - url: `/useWaterMeter/get?id=${data}`, - method: 'get', - data, - }); - }, - setSort: (data) => { - return publicRequest({ - url: `/useWaterMeter/setSort`, - method: 'post', - data, - }); - }, - open: (id) => { - return publicRequest({ - url: `/useWaterMeter/open?id=${id}`, - method: 'get', - }); - }, - close: (id) => { - return publicRequest({ - url: `/useWaterMeter/close?id=${id}`, - method: 'get', - }); - }, - }; -} diff --git a/src/api/waterMeterApi/verification.js b/src/api/waterMeterApi/verification.js deleted file mode 100644 index 083180a..0000000 --- a/src/api/waterMeterApi/verification.js +++ /dev/null @@ -1,62 +0,0 @@ -/* - * @Author: elkers - * @Date: 2024-08-09 14:29:49 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-09 17:43:00 - * @FilePath: \water-qinghe-web\src\api\system\user.js - * @Description: 检定api - */ -import { publicRequest } from '@/utils/request' -export default function verificationApi() { - return { - create: (data) => { - return publicRequest({ - url: '/VerificationRecords/create', - method: 'post', - data, - }); - }, - modify: (data) => { - return publicRequest({ - url: '/VerificationRecords/modify', - method: 'post', - data, - }); - }, - remove: (data) => { - return publicRequest({ - url: `/VerificationRecords/remove?id=${data}`, - method: 'post', - data, - }); - }, - stop: (data) => { - return publicRequest({ - url: `/VerificationRecords/stop?id=${data}`, - method: 'post', - data, - }); - }, - enable: (data) => { - return publicRequest({ - url: `/VerificationRecords/enable?id=${data}`, - method: 'post', - data, - }); - }, - search: (data) => { - return publicRequest({ - url: '/VerificationRecords/search', - method: 'post', - data, - }); - }, - get: (data) => { - return publicRequest({ - url: `/VerificationRecords/get?id=${data}`, - method: 'get', - data, - }); - }, - }; -} diff --git a/src/api/waterMeterApi/waterModel.js b/src/api/waterMeterApi/waterModel.js deleted file mode 100644 index 078fecd..0000000 --- a/src/api/waterMeterApi/waterModel.js +++ /dev/null @@ -1,69 +0,0 @@ -/* - * @Author: elkers - * @Date: 2024-08-09 14:29:49 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-09 17:52:47 - * @FilePath: \water-qinghe-web\src\api\waterMeterApi\waterModel.js - * @Description: 水表型号api - */ -import { publicRequest } from '@/utils/request' -export default function supplierApi() { - return { - create: (data) => { - return publicRequest({ - url: '/watermodel/create', - method: 'post', - data, - }); - }, - modify: (data) => { - return publicRequest({ - url: '/watermodel/modify', - method: 'post', - data, - }); - }, - remove: (data) => { - return publicRequest({ - url: `/watermodel/remove?id=${data}`, - method: 'post', - data, - }); - }, - stop: (data) => { - return publicRequest({ - url: `/watermodel/stop?id=${data}`, - method: 'post', - data, - }); - }, - enable: (data) => { - return publicRequest({ - url: `/watermodel/enable?id=${data}`, - method: 'post', - data, - }); - }, - search: (data) => { - return publicRequest({ - url: '/watermodel/search', - method: 'post', - data, - }); - }, - get: (data) => { - return publicRequest({ - url: `/watermodel/get?id=${data}`, - method: 'get', - data, - }); - }, - setSort: (data) => { - return publicRequest({ - url: `/watermodel/setSort`, - method: 'post', - data, - }); - } - }; -} diff --git a/src/api/workOrderManage/meterConstructionApi/index.js b/src/api/workOrderManage/meterConstructionApi/index.js deleted file mode 100644 index 5d26fec..0000000 --- a/src/api/workOrderManage/meterConstructionApi/index.js +++ /dev/null @@ -1,71 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-13 17:51:13 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-16 15:25:38 - * @FilePath: \water-qinghe-web\src\api\workOrderManage\meterConstructionApi\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' - -export default function meterConstructionApi() { - return { - //添加水表施工记录 - create: (data) => { - return publicRequest({ - url: '/waterMeterConstructionRecords/create', - method: 'post', - data, - }); - }, - //修改水表施工记录 - modify: (data) => { - return publicRequest({ - url: '/waterMeterConstructionRecords/modify', - method: 'post', - data, - }); - }, - //删除水表施工记录 - remove: (data) => { - return publicRequest({ - url: `/waterMeterConstructionRecords/remove?id=${data}`, - method: 'post', - data, - }); - }, - //停用水表施工记录 - stop: (data) => { - return publicRequest({ - url: `/waterMeterConstructionRecords/stop?id=${data}`, - method: 'post', - data, - }); - }, - //启用水表施工记录 - enable: (data) => { - return publicRequest({ - url: `/waterMeterConstructionRecords/enable?id=${data}`, - method: 'post', - data, - }); - }, - //分页查询水表施工记录 - search: (data) => { - return publicRequest({ - url: '/waterMeterConstructionRecords/search', - method: 'post', - data, - }); - }, - //获取水表施工记录 - get: (data) => { - return publicRequest({ - url: `/waterMeterConstructionRecords/get?id=${data}`, - method: 'get', - data, - }); - }, - }; -} diff --git a/src/api/workOrderManage/waterMeterAlterationApi/index.js b/src/api/workOrderManage/waterMeterAlterationApi/index.js deleted file mode 100644 index fd2ab80..0000000 --- a/src/api/workOrderManage/waterMeterAlterationApi/index.js +++ /dev/null @@ -1,37 +0,0 @@ - -import { publicRequest } from '@/utils/request' - -export function waterMeterAlterationApi(){ - return{ - // 创建[用户水表过户记录] - creatWaterMeterAlteration:(data) =>{ - return publicRequest({ - url:'/userWaterAlterationRecord/create', - method:'post', - data, - }) - }, - // 查询[用户水表过户记录] - searchWaterMeterAlteration:(data) =>{ - return publicRequest({ - url:'/userWaterAlterationRecord/search', - method:'post', - data, - }) - }, - // 获取[用户水表过户记录] - getWaterMeterAlteration:(id) =>{ - return publicRequest({ - url:`/userWaterAlterationRecord/get?id=${id}`, - method:'get', - }) - }, - // 执行工单 - executeWaterMeterAlteration:(id,executeType) =>{ - return publicRequest({ - url:`/userWaterAlterationRecord/execute?id=${id}&executeType=${executeType}`, - method:'get', - }) - }, - } -} \ No newline at end of file diff --git a/src/api/workOrderManage/waterMeterApplyApi/index.js b/src/api/workOrderManage/waterMeterApplyApi/index.js deleted file mode 100644 index 9db08d5..0000000 --- a/src/api/workOrderManage/waterMeterApplyApi/index.js +++ /dev/null @@ -1,62 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-13 17:49:03 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-13 17:55:54 - * @FilePath: \water-qinghe-web\src\api\workOrderManage\waterMeterApplyApi\index.ts - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ -import { publicRequest } from '@/utils/request' - -export function waterMeterApplyApi() { - return { - //创建水表开户申请表 - createWaterMeterApply: (data) => { - return publicRequest({ - url: '/waterMeterApply/create', - method: 'post', - data, - }); - }, - //搜索水表开户申请表 - searchWaterMeterApply: (data) => { - return publicRequest({ - url: '/waterMeterApply/search', - method: 'post', - data, - }); - }, - //执行工单 - executeWaterMeterApply: (data) => { - return publicRequest({ - url:'/waterMeterApply/execute', - method: 'post', - data - - }); - }, - //编辑[水表开户申请表] - modifyWaterMeterApplyList: (data) => { - return publicRequest({ - url: '/waterMeterApply/modify', - method: 'post', - data, - }); - }, - //获取[水表开户申请表] - getWaterMeterApply: (id) => { - return publicRequest({ - url: `/waterMeterApply/get?id=${id}`, - method: 'get' - }); - }, - //根据id批量获取[水表开户申请表] - searchWaterMeterApplyList: (data) => { - return publicRequest({ - url: '/waterMeterApply/getList', - method: 'post', - data, - }); - }, - } - } \ No newline at end of file diff --git a/src/api/workOrderManage/waterMeterChangeApi/index.js b/src/api/workOrderManage/waterMeterChangeApi/index.js deleted file mode 100644 index 966b8b0..0000000 --- a/src/api/workOrderManage/waterMeterChangeApi/index.js +++ /dev/null @@ -1,80 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-13 17:47:53 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-16 11:58:10 - * @FilePath: \water-qinghe-web\src\api\workOrderManage\waterMeterChangeApi\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' - -export function waterMeterChangeApi() { - return { - //添加水表信息 - create: (data) => { - return publicRequest({ - url: '/userWaterMeterChange/create', - method: 'post', - data, - }); - }, - //修改水表信息 - modify: (data) => { - return publicRequest({ - url: '/userWaterMeterChange/modify', - method: 'post', - data, - }); - }, - //删除水表信息 - remove: (data) => { - return publicRequest({ - url: `/userWaterMeterChange/remove?id=${data}`, - method: 'post', - data, - }); - }, - //停用水表信息 - stop: (data) => { - return publicRequest({ - url: `/userWaterMeterChange/stop?id=${data}`, - method: 'post', - data, - }); - }, - //启用水表信息 - enable: (data) => { - return publicRequest({ - url: `/userWaterMeterChange/enable?id=${data}`, - method: 'post', - data, - }); - }, - //分页查询水表信息 - search: (data) => { - return publicRequest({ - url: '/userWaterMeterChange/search', - method: 'post', - data, - }); - }, - //获取水表信息 - get: (data) => { - return publicRequest({ - url: `/userWaterMeterChange/get?id=${data}`, - method: 'get', - data, - }); - }, - execute: (data) => { - return publicRequest({ - url: '/userWaterMeterChange/execute', - method: 'post', - data - }); - }, - }; -} - - diff --git a/src/api/workOrderManage/waterMeterCloseAccountApi/index.js b/src/api/workOrderManage/waterMeterCloseAccountApi/index.js deleted file mode 100644 index 41604b6..0000000 --- a/src/api/workOrderManage/waterMeterCloseAccountApi/index.js +++ /dev/null @@ -1,72 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-13 17:47:53 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-15 16:52:32 - * @FilePath: \water-qinghe-web\src\api\workOrderManage\waterMeterCloseAccountApi\index.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import { publicRequest } from '@/utils/request' - -export function waterMeterCloseAccountApi() { - return { - //添加水表信息 - create: (data) => { - return publicRequest({ - url: '/waterMeterCloseAccount/create', - method: 'post', - data, - }); - }, - //修改水表信息 - modify: (data) => { - return publicRequest({ - url: '/waterMeterCloseAccount/modify', - method: 'post', - data, - }); - }, - //删除水表信息 - remove: (data) => { - return publicRequest({ - url: `/waterMeterCloseAccount/remove?id=${data}`, - method: 'post', - data, - }); - }, - //分页查询水表信息 - search: (data) => { - return publicRequest({ - url: '/waterMeterCloseAccount/search', - method: 'post', - data, - }); - }, - //获取水表信息 - get: (data) => { - return publicRequest({ - url: `/waterMeterCloseAccount/get?id=${data}`, - method: 'get', - data, - }); - }, - //执行工单 - // executeWaterMeterCloseAccount: (id: Number,executeType:any) => { - // return publicRequest({ - // url: `/waterMeterCloseAccount/execute?id=${id}&executeType=${executeType}`, - // method: 'get', - // }); - // }, - //执行工单 - execute: (data) => { - return publicRequest({ - url: '/waterMeterCloseAccount/execute', - method: 'post', - data - }); - }, - }; -} - - diff --git a/src/api/workOrderManage/waterMeterMaintainRecordsApi/index.js b/src/api/workOrderManage/waterMeterMaintainRecordsApi/index.js deleted file mode 100644 index ae00fca..0000000 --- a/src/api/workOrderManage/waterMeterMaintainRecordsApi/index.js +++ /dev/null @@ -1,56 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-13 17:47:53 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-16 15:15:11 - * @FilePath: \water-qinghe-web\src\api\workOrderManage\waterMeterMaintainRecordsApi\index.ts - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE -import { publicRequest } from '@/utils/request' - */ -import { publicRequest } from '@/utils/request' - -export function waterMeterMaintainRecordsApi() { - return { - //添加水表信息 - create: (data) => { - return publicRequest({ - url: '/waterMeterMaintainRecords/create', - method: 'post', - data, - }); - }, - //修改水表信息 - modify: (data) => { - return publicRequest({ - url: '/waterMeterMaintainRecords/modify', - method: 'post', - data, - }); - }, - //删除水表信息 - remove: (data) => { - return publicRequest({ - url: `/waterMeterMaintainRecords/remove?id=${data}`, - method: 'post', - data, - }); - }, - //分页查询水表信息 - search: (data) => { - return publicRequest({ - url: '/waterMeterMaintainRecords/search', - method: 'post', - data, - }); - }, - //获取水表信息 - get: (id) => { - return publicRequest({ - url: `/waterMeterMaintainRecords/get?id=${id}`, - method: 'get', - }); - }, - }; -} - - diff --git a/src/api/workOrderManage/waterMeterRepairApi/index.js b/src/api/workOrderManage/waterMeterRepairApi/index.js deleted file mode 100644 index 602661a..0000000 --- a/src/api/workOrderManage/waterMeterRepairApi/index.js +++ /dev/null @@ -1,70 +0,0 @@ - -import { publicRequest } from '@/utils/request' - -export function waterMeterRepairApi(){ - return{ - // 创建用户水表保修 - creatWaterMeterRepairs:(data) =>{ - return publicRequest({ - url:'/waterMeterRepairs/create', - method:'post', - data, - }) - }, - // 查询[用户水表报修] - searchWaterMeterRepairs:(data) =>{ - return publicRequest({ - url:'/waterMeterRepairs/search', - method:'post', - data - }) - }, - // 编辑[用户水表报修] - modifyWaterMeterRepairs:(data) =>{ - return publicRequest({ - url:'/waterMeterRepairs/modify', - method:'post', - data - }) - }, - // 根据id批量获取[用户水表报修] - getListWaterMeterRepairs:(data) =>{ - return publicRequest({ - url:'/waterMeterRepairs/getList', - method:'post', - data - }) - }, - // 获取[用户水表报修] - getWaterMeterRepairs:(id) =>{ - return publicRequest({ - url:`/waterMeterRepairs/get?id=${id}`, - method:'get' - }) - }, - // 报修工状态扭转(1待维修 2维修中 3已维修 4关闭) - getStatusWaterMeterRepairs:(id,state) =>{ - return publicRequest({ - url:`/waterMeterRepairs/editState?id=${id}&state=${state}`, - method:'get' - }) - }, - // 执行工单get - // executeStatusWaterMeterRepairs:(id:number,state:any) =>{ - // return publicRequest({ - // url:`/waterMeterRepairs/execute?id=${id}&executeType=${state}`, - // method:'get' - // }) - // }, - - // 执行工单post - executeStatusWaterMeterRepairs:(data) =>{ - return publicRequest({ - url:'/waterMeterRepairs/execute', - method:'post', - data - }) - }, - - } -} \ No newline at end of file diff --git a/src/api/workOrderManage/waterMeterStopAccountApi/index.js b/src/api/workOrderManage/waterMeterStopAccountApi/index.js deleted file mode 100644 index 3e46766..0000000 --- a/src/api/workOrderManage/waterMeterStopAccountApi/index.js +++ /dev/null @@ -1,81 +0,0 @@ - -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-13 17:47:53 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-16 14:26:39 - * @FilePath: \water-qinghe-web\src\api\workOrderManage\waterMeterStopAccountApi\index.ts - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ - -import {publicRequest} from '@/utils/request' - -export function waterMeterStopAccountApi() { - return { - //添加水表信息 - create: (data) => { - return publicRequest({ - url: '/waterMeterStopAccount/create', - method: 'post', - data, - }); - }, - //修改水表信息 - modify: (data) => { - return publicRequest({ - url: '/waterMeterStopAccount/modify', - method: 'post', - data, - }); - }, - //删除水表信息 - remove: (data) => { - return publicRequest({ - url: `/waterMeterStopAccount/remove?id=${data}`, - method: 'post', - data, - }); - }, - //停用水表信息 - stop: (data) => { - return publicRequest({ - url: `/waterMeterStopAccount/stop?id=${data}`, - method: 'post', - data, - }); - }, - //启用水表信息 - enable: (data) => { - return publicRequest({ - url: `/waterMeterStopAccount/enable?id=${data}`, - method: 'post', - data, - }); - }, - //分页查询水表信息 - search: (data) => { - return publicRequest({ - url: '/waterMeterStopAccount/search', - method: 'post', - data, - }); - }, - //获取水表信息 - get: (data) => { - return publicRequest({ - url: `/waterMeterStopAccount/get?id=${data}`, - method: 'get', - data, - }); - }, - //执行工单 - execute: (id,state) => { - return publicRequest({ - url: `/waterMeterStopAccount/execute?id=${id}&state=${state}`, - method: 'get', - }); - }, - }; -} - - diff --git a/src/assets/images/login_icon.png b/src/assets/images/login_icon.png new file mode 100644 index 0000000..6f4e94d --- /dev/null +++ b/src/assets/images/login_icon.png Binary files differ diff --git a/src/components/Crontab/day.vue b/src/components/Crontab/day.vue deleted file mode 100644 index 25c4f79..0000000 --- a/src/components/Crontab/day.vue +++ /dev/null @@ -1,174 +0,0 @@ -<template> - <el-form> - <el-form-item> - <el-radio v-model='radioValue' :label="1"> - 日,允许的通配符[, - * ? / L W] - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="2"> - 不指定 - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="3"> - 周期从 - <el-input-number v-model='cycle01' :min="1" :max="30" /> - - <el-input-number v-model='cycle02' :min="cycle01 + 1" :max="31" /> 日 - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="4"> - 从 - <el-input-number v-model='average01' :min="1" :max="30" /> 号开始,每 - <el-input-number v-model='average02' :min="1" :max="31 - average01" /> 日执行一次 - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="5"> - 每月 - <el-input-number v-model='workday' :min="1" :max="31" /> 号最近的那个工作日 - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="6"> - 本月最后一天 - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="7"> - 指定 - <el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="10"> - <el-option v-for="item in 31" :key="item" :label="item" :value="item" /> - </el-select> - </el-radio> - </el-form-item> - </el-form> -</template> -<script setup> -const emit = defineEmits(['update']) -const props = defineProps({ - cron: { - type: Object, - default: { - second: "*", - min: "*", - hour: "*", - day: "*", - month: "*", - week: "?", - year: "", - } - }, - check: { - type: Function, - default: () => { - } - } -}) -const radioValue = ref(1) -const cycle01 = ref(1) -const cycle02 = ref(2) -const average01 = ref(1) -const average02 = ref(1) -const workday = ref(1) -const checkboxList = ref([]) -const checkCopy = ref([1]) -const cycleTotal = computed(() => { - cycle01.value = props.check(cycle01.value, 1, 30) - cycle02.value = props.check(cycle02.value, cycle01.value + 1, 31) - return cycle01.value + '-' + cycle02.value -}) -const averageTotal = computed(() => { - average01.value = props.check(average01.value, 1, 30) - average02.value = props.check(average02.value, 1, 31 - average01.value) - return average01.value + '/' + average02.value -}) -const workdayTotal = computed(() => { - workday.value = props.check(workday.value, 1, 31) - return workday.value + 'W' -}) -const checkboxString = computed(() => { - return checkboxList.value.join(',') -}) -watch(() => props.cron.day, value => changeRadioValue(value)) -watch([radioValue, cycleTotal, averageTotal, workdayTotal, checkboxString], () => onRadioChange()) -function changeRadioValue(value) { - if (value === "*") { - radioValue.value = 1 - } else if (value === "?") { - radioValue.value = 2 - } else if (value.indexOf("-") > -1) { - const indexArr = value.split('-') - cycle01.value = Number(indexArr[0]) - cycle02.value = Number(indexArr[1]) - radioValue.value = 3 - } else if (value.indexOf("/") > -1) { - const indexArr = value.split('/') - average01.value = Number(indexArr[0]) - average02.value = Number(indexArr[1]) - radioValue.value = 4 - } else if (value.indexOf("W") > -1) { - const indexArr = value.split("W") - workday.value = Number(indexArr[0]) - radioValue.value = 5 - } else if (value === "L") { - radioValue.value = 6 - } else { - checkboxList.value = [...new Set(value.split(',').map(item => Number(item)))] - radioValue.value = 7 - } -} -// 单选按钮值变化时 -function onRadioChange() { - if (radioValue.value === 2 && props.cron.week === '?') { - emit('update', 'week', '*', 'day') - } - if (radioValue.value !== 2 && props.cron.week !== '?') { - emit('update', 'week', '?', 'day') - } - switch (radioValue.value) { - case 1: - emit('update', 'day', '*', 'day') - break - case 2: - emit('update', 'day', '?', 'day') - break - case 3: - emit('update', 'day', cycleTotal.value, 'day') - break - case 4: - emit('update', 'day', averageTotal.value, 'day') - break - case 5: - emit('update', 'day', workdayTotal.value, 'day') - break - case 6: - emit('update', 'day', 'L', 'day') - break - case 7: - if (checkboxList.value.length === 0) { - checkboxList.value.push(checkCopy.value[0]) - } else { - checkCopy.value = checkboxList.value - } - emit('update', 'day', checkboxString.value, 'day') - break - } -} -</script> - -<style lang="scss" scoped> -.el-input-number--small, .el-select, .el-select--small { - margin: 0 0.2rem; -} -.el-select, .el-select--small { - width: 18.8rem; -} -</style> \ No newline at end of file diff --git a/src/components/Crontab/hour.vue b/src/components/Crontab/hour.vue deleted file mode 100644 index 9f052ad..0000000 --- a/src/components/Crontab/hour.vue +++ /dev/null @@ -1,127 +0,0 @@ -<template> - <el-form> - <el-form-item> - <el-radio v-model='radioValue' :label="1"> - 小时,允许的通配符[, - * /] - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="2"> - 周期从 - <el-input-number v-model='cycle01' :min="0" :max="22" /> - - <el-input-number v-model='cycle02' :min="cycle01 + 1" :max="23" /> 时 - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="3"> - 从 - <el-input-number v-model='average01' :min="0" :max="22" /> 时开始,每 - <el-input-number v-model='average02' :min="1" :max="23 - average01" /> 小时执行一次 - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="4"> - 指定 - <el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="10"> - <el-option v-for="item in 24" :key="item" :label="item - 1" :value="item - 1" /> - </el-select> - </el-radio> - </el-form-item> - </el-form> -</template> - -<script setup> -const emit = defineEmits(['update']) -const props = defineProps({ - cron: { - type: Object, - default: { - second: "*", - min: "*", - hour: "*", - day: "*", - month: "*", - week: "?", - year: "", - } - }, - check: { - type: Function, - default: () => { - } - } -}) -const radioValue = ref(1) -const cycle01 = ref(0) -const cycle02 = ref(1) -const average01 = ref(0) -const average02 = ref(1) -const checkboxList = ref([]) -const checkCopy = ref([0]) -const cycleTotal = computed(() => { - cycle01.value = props.check(cycle01.value, 0, 22) - cycle02.value = props.check(cycle02.value, cycle01.value + 1, 23) - return cycle01.value + '-' + cycle02.value -}) -const averageTotal = computed(() => { - average01.value = props.check(average01.value, 0, 22) - average02.value = props.check(average02.value, 1, 23 - average01.value) - return average01.value + '/' + average02.value -}) -const checkboxString = computed(() => { - return checkboxList.value.join(',') -}) -watch(() => props.cron.hour, value => changeRadioValue(value)) -watch([radioValue, cycleTotal, averageTotal, checkboxString], () => onRadioChange()) -function changeRadioValue(value) { - if (value === '*') { - radioValue.value = 1 - } else if (value.indexOf('-') > -1) { - const indexArr = value.split('-') - cycle01.value = Number(indexArr[0]) - cycle02.value = Number(indexArr[1]) - radioValue.value = 2 - } else if (value.indexOf('/') > -1) { - const indexArr = value.split('/') - average01.value = Number(indexArr[0]) - average02.value = Number(indexArr[1]) - radioValue.value = 3 - } else { - checkboxList.value = [...new Set(value.split(',').map(item => Number(item)))] - radioValue.value = 4 - } -} -function onRadioChange() { - switch (radioValue.value) { - case 1: - emit('update', 'hour', '*', 'hour') - break - case 2: - emit('update', 'hour', cycleTotal.value, 'hour') - break - case 3: - emit('update', 'hour', averageTotal.value, 'hour') - break - case 4: - if (checkboxList.value.length === 0) { - checkboxList.value.push(checkCopy.value[0]) - } else { - checkCopy.value = checkboxList.value - } - emit('update', 'hour', checkboxString.value, 'hour') - break - } -} -</script> - -<style lang="scss" scoped> -.el-input-number--small, .el-select, .el-select--small { - margin: 0 0.2rem; -} -.el-select, .el-select--small { - width: 18.8rem; -} -</style> \ No newline at end of file diff --git a/src/components/Crontab/index.vue b/src/components/Crontab/index.vue deleted file mode 100644 index 910c9b3..0000000 --- a/src/components/Crontab/index.vue +++ /dev/null @@ -1,310 +0,0 @@ -<template> - <div> - <el-tabs type="border-card"> - <el-tab-pane label="秒" v-if="shouldHide('second')"> - <CrontabSecond - @update="updateCrontabValue" - :check="checkNumber" - :cron="crontabValueObj" - ref="cronsecond" - /> - </el-tab-pane> - - <el-tab-pane label="分钟" v-if="shouldHide('min')"> - <CrontabMin - @update="updateCrontabValue" - :check="checkNumber" - :cron="crontabValueObj" - ref="cronmin" - /> - </el-tab-pane> - - <el-tab-pane label="小时" v-if="shouldHide('hour')"> - <CrontabHour - @update="updateCrontabValue" - :check="checkNumber" - :cron="crontabValueObj" - ref="cronhour" - /> - </el-tab-pane> - - <el-tab-pane label="日" v-if="shouldHide('day')"> - <CrontabDay - @update="updateCrontabValue" - :check="checkNumber" - :cron="crontabValueObj" - ref="cronday" - /> - </el-tab-pane> - - <el-tab-pane label="月" v-if="shouldHide('month')"> - <CrontabMonth - @update="updateCrontabValue" - :check="checkNumber" - :cron="crontabValueObj" - ref="cronmonth" - /> - </el-tab-pane> - - <el-tab-pane label="周" v-if="shouldHide('week')"> - <CrontabWeek - @update="updateCrontabValue" - :check="checkNumber" - :cron="crontabValueObj" - ref="cronweek" - /> - </el-tab-pane> - - <el-tab-pane label="年" v-if="shouldHide('year')"> - <CrontabYear - @update="updateCrontabValue" - :check="checkNumber" - :cron="crontabValueObj" - ref="cronyear" - /> - </el-tab-pane> - </el-tabs> - - <div class="popup-main"> - <div class="popup-result"> - <p class="title">时间表达式</p> - <table> - <thead> - <th v-for="item of tabTitles" :key="item">{{item}}</th> - <th>Cron 表达式</th> - </thead> - <tbody> - <td> - <span v-if="crontabValueObj.second.length < 10">{{crontabValueObj.second}}</span> - <el-tooltip v-else :content="crontabValueObj.second" placement="top"><span>{{crontabValueObj.second}}</span></el-tooltip> - </td> - <td> - <span v-if="crontabValueObj.min.length < 10">{{crontabValueObj.min}}</span> - <el-tooltip v-else :content="crontabValueObj.min" placement="top"><span>{{crontabValueObj.min}}</span></el-tooltip> - </td> - <td> - <span v-if="crontabValueObj.hour.length < 10">{{crontabValueObj.hour}}</span> - <el-tooltip v-else :content="crontabValueObj.hour" placement="top"><span>{{crontabValueObj.hour}}</span></el-tooltip> - </td> - <td> - <span v-if="crontabValueObj.day.length < 10">{{crontabValueObj.day}}</span> - <el-tooltip v-else :content="crontabValueObj.day" placement="top"><span>{{crontabValueObj.day}}</span></el-tooltip> - </td> - <td> - <span v-if="crontabValueObj.month.length < 10">{{crontabValueObj.month}}</span> - <el-tooltip v-else :content="crontabValueObj.month" placement="top"><span>{{crontabValueObj.month}}</span></el-tooltip> - </td> - <td> - <span v-if="crontabValueObj.week.length < 10">{{crontabValueObj.week}}</span> - <el-tooltip v-else :content="crontabValueObj.week" placement="top"><span>{{crontabValueObj.week}}</span></el-tooltip> - </td> - <td> - <span v-if="crontabValueObj.year.length < 10">{{crontabValueObj.year}}</span> - <el-tooltip v-else :content="crontabValueObj.year" placement="top"><span>{{crontabValueObj.year}}</span></el-tooltip> - </td> - <td class="result"> - <span v-if="crontabValueString.length < 90">{{crontabValueString}}</span> - <el-tooltip v-else :content="crontabValueString" placement="top"><span>{{crontabValueString}}</span></el-tooltip> - </td> - </tbody> - </table> - </div> - <CrontabResult :ex="crontabValueString"></CrontabResult> - - <div class="pop_btn"> - <el-button type="primary" @click="submitFill">确定</el-button> - <el-button type="warning" @click="clearCron">重置</el-button> - <el-button @click="hidePopup">取消</el-button> - </div> - </div> - </div> -</template> - -<script setup> -import CrontabSecond from "./second.vue" -import CrontabMin from "./min.vue" -import CrontabHour from "./hour.vue" -import CrontabDay from "./day.vue" -import CrontabMonth from "./month.vue" -import CrontabWeek from "./week.vue" -import CrontabYear from "./year.vue" -import CrontabResult from "./result.vue" -const { proxy } = getCurrentInstance() -const emit = defineEmits(['hide', 'fill']) -const props = defineProps({ - hideComponent: { - type: Array, - default: () => [], - }, - expression: { - type: String, - default: "" - } -}) -const tabTitles = ref(["秒", "分钟", "小时", "日", "月", "周", "年"]) -const tabActive = ref(0) -const hideComponent = ref([]) -const expression = ref('') -const crontabValueObj = ref({ - second: "*", - min: "*", - hour: "*", - day: "*", - month: "*", - week: "?", - year: "", -}) -const crontabValueString = computed(() => { - const obj = crontabValueObj.value - return obj.second - + " " - + obj.min - + " " - + obj.hour - + " " - + obj.day - + " " - + obj.month - + " " - + obj.week - + (obj.year === "" ? "" : " " + obj.year) -}) -watch(expression, () => resolveExp()) -function shouldHide(key) { - return !(hideComponent.value && hideComponent.value.includes(key)) -} -function resolveExp() { - // 反解析 表达式 - if (expression.value) { - const arr = expression.value.split(/\s+/) - if (arr.length >= 6) { - //6 位以上是合法表达式 - let obj = { - second: arr[0], - min: arr[1], - hour: arr[2], - day: arr[3], - month: arr[4], - week: arr[5], - year: arr[6] ? arr[6] : "" - } - crontabValueObj.value = { - ...obj, - } - } - } else { - // 没有传入的表达式 则还原 - clearCron() - } -} -// tab切换值 -function tabCheck(index) { - tabActive.value = index -} -// 由子组件触发,更改表达式组成的字段值 -function updateCrontabValue(name, value, from) { - crontabValueObj.value[name] = value -} -// 表单选项的子组件校验数字格式(通过-props传递) -function checkNumber(value, minLimit, maxLimit) { - // 检查必须为整数 - value = Math.floor(value) - if (value < minLimit) { - value = minLimit - } else if (value > maxLimit) { - value = maxLimit - } - return value -} -// 隐藏弹窗 -function hidePopup() { - emit("hide") -} -// 填充表达式 -function submitFill() { - emit("fill", crontabValueString.value) - hidePopup() -} -function clearCron() { - // 还原选择项 - crontabValueObj.value = { - second: "*", - min: "*", - hour: "*", - day: "*", - month: "*", - week: "?", - year: "", - } -} -onMounted(() => { - expression.value = props.expression - hideComponent.value = props.hideComponent -}) -</script> - -<style lang="scss" scoped> -.pop_btn { - text-align: center; - margin-top: 20px; -} -.popup-main { - position: relative; - margin: 10px auto; - background: #fff; - border-radius: 5px; - font-size: 12px; - overflow: hidden; -} -.popup-title { - overflow: hidden; - line-height: 34px; - padding-top: 6px; - background: #f2f2f2; -} -.popup-result { - box-sizing: border-box; - line-height: 24px; - margin: 25px auto; - padding: 15px 10px 10px; - border: 1px solid #ccc; - position: relative; -} -.popup-result .title { - position: absolute; - top: -28px; - left: 50%; - width: 140px; - font-size: 14px; - margin-left: -70px; - text-align: center; - line-height: 30px; - background: #fff; -} -.popup-result table { - text-align: center; - width: 100%; - margin: 0 auto; -} -.popup-result table td:not(.result) { - width: 3.5rem; - min-width: 3.5rem; - max-width: 3.5rem; -} -.popup-result table span { - display: block; - width: 100%; - font-family: arial; - line-height: 30px; - height: 30px; - white-space: nowrap; - overflow: hidden; - border: 1px solid #e8e8e8; -} -.popup-result-scroll { - font-size: 12px; - line-height: 24px; - height: 10em; - overflow-y: auto; -} -</style> \ No newline at end of file diff --git a/src/components/Crontab/min.vue b/src/components/Crontab/min.vue deleted file mode 100644 index 5d80cd2..0000000 --- a/src/components/Crontab/min.vue +++ /dev/null @@ -1,126 +0,0 @@ -<template> - <el-form> - <el-form-item> - <el-radio v-model='radioValue' :label="1"> - 分钟,允许的通配符[, - * /] - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="2"> - 周期从 - <el-input-number v-model='cycle01' :min="0" :max="58" /> - - <el-input-number v-model='cycle02' :min="cycle01 + 1" :max="59" /> 分钟 - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="3"> - 从 - <el-input-number v-model='average01' :min="0" :max="58" /> 分钟开始, 每 - <el-input-number v-model='average02' :min="1" :max="59 - average01" /> 分钟执行一次 - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="4"> - 指定 - <el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="10"> - <el-option v-for="item in 60" :key="item" :label="item - 1" :value="item - 1" /> - </el-select> - </el-radio> - </el-form-item> - </el-form> -</template> -<script setup> -const emit = defineEmits(['update']) -const props = defineProps({ - cron: { - type: Object, - default: { - second: "*", - min: "*", - hour: "*", - day: "*", - month: "*", - week: "?", - year: "", - } - }, - check: { - type: Function, - default: () => { - } - } -}) -const radioValue = ref(1) -const cycle01 = ref(0) -const cycle02 = ref(1) -const average01 = ref(0) -const average02 = ref(1) -const checkboxList = ref([]) -const checkCopy = ref([0]) -const cycleTotal = computed(() => { - cycle01.value = props.check(cycle01.value, 0, 58) - cycle02.value = props.check(cycle02.value, cycle01.value + 1, 59) - return cycle01.value + '-' + cycle02.value -}) -const averageTotal = computed(() => { - average01.value = props.check(average01.value, 0, 58) - average02.value = props.check(average02.value, 1, 59 - average01.value) - return average01.value + '/' + average02.value -}) -const checkboxString = computed(() => { - return checkboxList.value.join(',') -}) -watch(() => props.cron.min, value => changeRadioValue(value)) -watch([radioValue, cycleTotal, averageTotal, checkboxString], () => onRadioChange()) -function changeRadioValue(value) { - if (value === '*') { - radioValue.value = 1 - } else if (value.indexOf('-') > -1) { - const indexArr = value.split('-') - cycle01.value = Number(indexArr[0]) - cycle02.value = Number(indexArr[1]) - radioValue.value = 2 - } else if (value.indexOf('/') > -1) { - const indexArr = value.split('/') - average01.value = Number(indexArr[0]) - average02.value = Number(indexArr[1]) - radioValue.value = 3 - } else { - checkboxList.value = [...new Set(value.split(',').map(item => Number(item)))] - radioValue.value = 4 - } -} -function onRadioChange() { - switch (radioValue.value) { - case 1: - emit('update', 'min', '*', 'min') - break - case 2: - emit('update', 'min', cycleTotal.value, 'min') - break - case 3: - emit('update', 'min', averageTotal.value, 'min') - break - case 4: - if (checkboxList.value.length === 0) { - checkboxList.value.push(checkCopy.value[0]) - } else { - checkCopy.value = checkboxList.value - } - emit('update', 'min', checkboxString.value, 'min') - break - } -} -</script> - -<style lang="scss" scoped> -.el-input-number--small, .el-select, .el-select--small { - margin: 0 0.2rem; -} -.el-select, .el-select--small { - width: 19.8rem; -} -</style> \ No newline at end of file diff --git a/src/components/Crontab/month.vue b/src/components/Crontab/month.vue deleted file mode 100644 index 657d3f2..0000000 --- a/src/components/Crontab/month.vue +++ /dev/null @@ -1,141 +0,0 @@ -<template> - <el-form> - <el-form-item> - <el-radio v-model='radioValue' :label="1"> - 月,允许的通配符[, - * /] - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="2"> - 周期从 - <el-input-number v-model='cycle01' :min="1" :max="11" /> - - <el-input-number v-model='cycle02' :min="cycle01 + 1" :max="12" /> 月 - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="3"> - 从 - <el-input-number v-model='average01' :min="1" :max="11" /> 月开始,每 - <el-input-number v-model='average02' :min="1" :max="12 - average01" /> 月月执行一次 - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="4"> - 指定 - <el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="8"> - <el-option v-for="item in monthList" :key="item.key" :label="item.value" :value="item.key" /> - </el-select> - </el-radio> - </el-form-item> - </el-form> -</template> - -<script setup> -const emit = defineEmits(['update']) -const props = defineProps({ - cron: { - type: Object, - default: { - second: "*", - min: "*", - hour: "*", - day: "*", - month: "*", - week: "?", - year: "", - } - }, - check: { - type: Function, - default: () => { - } - } -}) -const radioValue = ref(1) -const cycle01 = ref(1) -const cycle02 = ref(2) -const average01 = ref(1) -const average02 = ref(1) -const checkboxList = ref([]) -const checkCopy = ref([1]) -const monthList = ref([ - {key: 1, value: '一月'}, - {key: 2, value: '二月'}, - {key: 3, value: '三月'}, - {key: 4, value: '四月'}, - {key: 5, value: '五月'}, - {key: 6, value: '六月'}, - {key: 7, value: '七月'}, - {key: 8, value: '八月'}, - {key: 9, value: '九月'}, - {key: 10, value: '十月'}, - {key: 11, value: '十一月'}, - {key: 12, value: '十二月'} -]) -const cycleTotal = computed(() => { - cycle01.value = props.check(cycle01.value, 1, 11) - cycle02.value = props.check(cycle02.value, cycle01.value + 1, 12) - return cycle01.value + '-' + cycle02.value -}) -const averageTotal = computed(() => { - average01.value = props.check(average01.value, 1, 11) - average02.value = props.check(average02.value, 1, 12 - average01.value) - return average01.value + '/' + average02.value -}) -const checkboxString = computed(() => { - return checkboxList.value.join(',') -}) -watch(() => props.cron.month, value => changeRadioValue(value)) -watch([radioValue, cycleTotal, averageTotal, checkboxString], () => onRadioChange()) -function changeRadioValue(value) { - if (value === '*') { - radioValue.value = 1 - } else if (value.indexOf('-') > -1) { - const indexArr = value.split('-') - cycle01.value = Number(indexArr[0]) - cycle02.value = Number(indexArr[1]) - radioValue.value = 2 - } else if (value.indexOf('/') > -1) { - const indexArr = value.split('/') - average01.value = Number(indexArr[0]) - average02.value = Number(indexArr[1]) - radioValue.value = 3 - } else { - checkboxList.value = [...new Set(value.split(',').map(item => Number(item)))] - radioValue.value = 4 - } -} -function onRadioChange() { - switch (radioValue.value) { - case 1: - emit('update', 'month', '*', 'month') - break - case 2: - emit('update', 'month', cycleTotal.value, 'month') - break - case 3: - emit('update', 'month', averageTotal.value, 'month') - break - case 4: - if (checkboxList.value.length === 0) { - checkboxList.value.push(checkCopy.value[0]) - } else { - checkCopy.value = checkboxList.value - } - emit('update', 'month', checkboxString.value, 'month') - break - } -} -</script> - -<style lang="scss" scoped> -.el-input-number--small, .el-select, .el-select--small { - margin: 0 0.2rem; -} -.el-select, .el-select--small { - width: 18.8rem; -} -</style> \ No newline at end of file diff --git a/src/components/Crontab/result.vue b/src/components/Crontab/result.vue deleted file mode 100644 index 5a812ee..0000000 --- a/src/components/Crontab/result.vue +++ /dev/null @@ -1,540 +0,0 @@ -<template> - <div class="popup-result"> - <p class="title">最近5次运行时间</p> - <ul class="popup-result-scroll"> - <template v-if='isShow'> - <li v-for='item in resultList' :key="item">{{item}}</li> - </template> - <li v-else>计算结果中...</li> - </ul> - </div> -</template> - -<script setup> -const props = defineProps({ - ex: { - type: String, - default: '' - } -}) -const dayRule = ref('') -const dayRuleSup = ref('') -const dateArr = ref([]) -const resultList = ref([]) -const isShow = ref(false) -watch(() => props.ex, () => expressionChange()) -// 表达式值变化时,开始去计算结果 -function expressionChange() { - // 计算开始-隐藏结果 - isShow.value = false; - // 获取规则数组[0秒、1分、2时、3日、4月、5星期、6年] - let ruleArr = props.ex.split(' '); - // 用于记录进入循环的次数 - let nums = 0; - // 用于暂时存符号时间规则结果的数组 - let resultArr = []; - // 获取当前时间精确至[年、月、日、时、分、秒] - let nTime = new Date(); - let nYear = nTime.getFullYear(); - let nMonth = nTime.getMonth() + 1; - let nDay = nTime.getDate(); - let nHour = nTime.getHours(); - let nMin = nTime.getMinutes(); - let nSecond = nTime.getSeconds(); - // 根据规则获取到近100年可能年数组、月数组等等 - getSecondArr(ruleArr[0]); - getMinArr(ruleArr[1]); - getHourArr(ruleArr[2]); - getDayArr(ruleArr[3]); - getMonthArr(ruleArr[4]); - getWeekArr(ruleArr[5]); - getYearArr(ruleArr[6], nYear); - // 将获取到的数组赋值-方便使用 - let sDate = dateArr.value[0]; - let mDate = dateArr.value[1]; - let hDate = dateArr.value[2]; - let DDate = dateArr.value[3]; - let MDate = dateArr.value[4]; - let YDate = dateArr.value[5]; - // 获取当前时间在数组中的索引 - let sIdx = getIndex(sDate, nSecond); - let mIdx = getIndex(mDate, nMin); - let hIdx = getIndex(hDate, nHour); - let DIdx = getIndex(DDate, nDay); - let MIdx = getIndex(MDate, nMonth); - let YIdx = getIndex(YDate, nYear); - // 重置月日时分秒的函数(后面用的比较多) - const resetSecond = function () { - sIdx = 0; - nSecond = sDate[sIdx] - } - const resetMin = function () { - mIdx = 0; - nMin = mDate[mIdx] - resetSecond(); - } - const resetHour = function () { - hIdx = 0; - nHour = hDate[hIdx] - resetMin(); - } - const resetDay = function () { - DIdx = 0; - nDay = DDate[DIdx] - resetHour(); - } - const resetMonth = function () { - MIdx = 0; - nMonth = MDate[MIdx] - resetDay(); - } - // 如果当前年份不为数组中当前值 - if (nYear !== YDate[YIdx]) { - resetMonth(); - } - // 如果当前月份不为数组中当前值 - if (nMonth !== MDate[MIdx]) { - resetDay(); - } - // 如果当前“日”不为数组中当前值 - if (nDay !== DDate[DIdx]) { - resetHour(); - } - // 如果当前“时”不为数组中当前值 - if (nHour !== hDate[hIdx]) { - resetMin(); - } - // 如果当前“分”不为数组中当前值 - if (nMin !== mDate[mIdx]) { - resetSecond(); - } - // 循环年份数组 - goYear: for (let Yi = YIdx; Yi < YDate.length; Yi++) { - let YY = YDate[Yi]; - // 如果到达最大值时 - if (nMonth > MDate[MDate.length - 1]) { - resetMonth(); - continue; - } - // 循环月份数组 - goMonth: for (let Mi = MIdx; Mi < MDate.length; Mi++) { - // 赋值、方便后面运算 - let MM = MDate[Mi]; - MM = MM < 10 ? '0' + MM : MM; - // 如果到达最大值时 - if (nDay > DDate[DDate.length - 1]) { - resetDay(); - if (Mi === MDate.length - 1) { - resetMonth(); - continue goYear; - } - continue; - } - // 循环日期数组 - goDay: for (let Di = DIdx; Di < DDate.length; Di++) { - // 赋值、方便后面运算 - let DD = DDate[Di]; - let thisDD = DD < 10 ? '0' + DD : DD; - // 如果到达最大值时 - if (nHour > hDate[hDate.length - 1]) { - resetHour(); - if (Di === DDate.length - 1) { - resetDay(); - if (Mi === MDate.length - 1) { - resetMonth(); - continue goYear; - } - continue goMonth; - } - continue; - } - // 判断日期的合法性,不合法的话也是跳出当前循环 - if (checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true && dayRule.value !== 'workDay' && dayRule.value !== 'lastWeek' && dayRule.value !== 'lastDay') { - resetDay(); - continue goMonth; - } - // 如果日期规则中有值时 - if (dayRule.value === 'lastDay') { - // 如果不是合法日期则需要将前将日期调到合法日期即月末最后一天 - if (checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) { - while (DD > 0 && checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) { - DD--; - thisDD = DD < 10 ? '0' + DD : DD; - } - } - } else if (dayRule.value === 'workDay') { - // 校验并调整如果是2月30号这种日期传进来时需调整至正常月底 - if (checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) { - while (DD > 0 && checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) { - DD--; - thisDD = DD < 10 ? '0' + DD : DD; - } - } - // 获取达到条件的日期是星期X - let thisWeek = formatDate(new Date(YY + '-' + MM + '-' + thisDD + ' 00:00:00'), 'week'); - // 当星期日时 - if (thisWeek === 1) { - // 先找下一个日,并判断是否为月底 - DD++; - thisDD = DD < 10 ? '0' + DD : DD; - // 判断下一日已经不是合法日期 - if (checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) { - DD -= 3; - } - } else if (thisWeek === 7) { - // 当星期6时只需判断不是1号就可进行操作 - if (dayRuleSup.value !== 1) { - DD--; - } else { - DD += 2; - } - } - } else if (dayRule.value === 'weekDay') { - // 如果指定了是星期几 - // 获取当前日期是属于星期几 - let thisWeek = formatDate(new Date(YY + '-' + MM + '-' + DD + ' 00:00:00'), 'week'); - // 校验当前星期是否在星期池(dayRuleSup)中 - if (dayRuleSup.value.indexOf(thisWeek) < 0) { - // 如果到达最大值时 - if (Di === DDate.length - 1) { - resetDay(); - if (Mi === MDate.length - 1) { - resetMonth(); - continue goYear; - } - continue goMonth; - } - continue; - } - } else if (dayRule.value === 'assWeek') { - // 如果指定了是第几周的星期几 - // 获取每月1号是属于星期几 - let thisWeek = formatDate(new Date(YY + '-' + MM + '-' + DD + ' 00:00:00'), 'week'); - if (dayRuleSup.value[1] >= thisWeek) { - DD = (dayRuleSup.value[0] - 1) * 7 + dayRuleSup.value[1] - thisWeek + 1; - } else { - DD = dayRuleSup.value[0] * 7 + dayRuleSup.value[1] - thisWeek + 1; - } - } else if (dayRule.value === 'lastWeek') { - // 如果指定了每月最后一个星期几 - // 校验并调整如果是2月30号这种日期传进来时需调整至正常月底 - if (checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) { - while (DD > 0 && checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) { - DD--; - thisDD = DD < 10 ? '0' + DD : DD; - } - } - // 获取月末最后一天是星期几 - let thisWeek = formatDate(new Date(YY + '-' + MM + '-' + thisDD + ' 00:00:00'), 'week'); - // 找到要求中最近的那个星期几 - if (dayRuleSup.value < thisWeek) { - DD -= thisWeek - dayRuleSup.value; - } else if (dayRuleSup.value > thisWeek) { - DD -= 7 - (dayRuleSup.value - thisWeek) - } - } - // 判断时间值是否小于10置换成“05”这种格式 - DD = DD < 10 ? '0' + DD : DD; - // 循环“时”数组 - goHour: for (let hi = hIdx; hi < hDate.length; hi++) { - let hh = hDate[hi] < 10 ? '0' + hDate[hi] : hDate[hi] - // 如果到达最大值时 - if (nMin > mDate[mDate.length - 1]) { - resetMin(); - if (hi === hDate.length - 1) { - resetHour(); - if (Di === DDate.length - 1) { - resetDay(); - if (Mi === MDate.length - 1) { - resetMonth(); - continue goYear; - } - continue goMonth; - } - continue goDay; - } - continue; - } - // 循环"分"数组 - goMin: for (let mi = mIdx; mi < mDate.length; mi++) { - let mm = mDate[mi] < 10 ? '0' + mDate[mi] : mDate[mi]; - // 如果到达最大值时 - if (nSecond > sDate[sDate.length - 1]) { - resetSecond(); - if (mi === mDate.length - 1) { - resetMin(); - if (hi === hDate.length - 1) { - resetHour(); - if (Di === DDate.length - 1) { - resetDay(); - if (Mi === MDate.length - 1) { - resetMonth(); - continue goYear; - } - continue goMonth; - } - continue goDay; - } - continue goHour; - } - continue; - } - // 循环"秒"数组 - goSecond: for (let si = sIdx; si <= sDate.length - 1; si++) { - let ss = sDate[si] < 10 ? '0' + sDate[si] : sDate[si]; - // 添加当前时间(时间合法性在日期循环时已经判断) - if (MM !== '00' && DD !== '00') { - resultArr.push(YY + '-' + MM + '-' + DD + ' ' + hh + ':' + mm + ':' + ss) - nums++; - } - // 如果条数满了就退出循环 - if (nums === 5) break goYear; - // 如果到达最大值时 - if (si === sDate.length - 1) { - resetSecond(); - if (mi === mDate.length - 1) { - resetMin(); - if (hi === hDate.length - 1) { - resetHour(); - if (Di === DDate.length - 1) { - resetDay(); - if (Mi === MDate.length - 1) { - resetMonth(); - continue goYear; - } - continue goMonth; - } - continue goDay; - } - continue goHour; - } - continue goMin; - } - } //goSecond - } //goMin - }//goHour - }//goDay - }//goMonth - } - // 判断100年内的结果条数 - if (resultArr.length === 0) { - resultList.value = ['没有达到条件的结果!']; - } else { - resultList.value = resultArr; - if (resultArr.length !== 5) { - resultList.value.push('最近100年内只有上面' + resultArr.length + '条结果!') - } - } - // 计算完成-显示结果 - isShow.value = true; -} -// 用于计算某位数字在数组中的索引 -function getIndex(arr, value) { - if (value <= arr[0] || value > arr[arr.length - 1]) { - return 0; - } else { - for (let i = 0; i < arr.length - 1; i++) { - if (value > arr[i] && value <= arr[i + 1]) { - return i + 1; - } - } - } -} -// 获取"年"数组 -function getYearArr(rule, year) { - dateArr.value[5] = getOrderArr(year, year + 100); - if (rule !== undefined) { - if (rule.indexOf('-') >= 0) { - dateArr.value[5] = getCycleArr(rule, year + 100, false) - } else if (rule.indexOf('/') >= 0) { - dateArr.value[5] = getAverageArr(rule, year + 100) - } else if (rule !== '*') { - dateArr.value[5] = getAssignArr(rule) - } - } -} -// 获取"月"数组 -function getMonthArr(rule) { - dateArr.value[4] = getOrderArr(1, 12); - if (rule.indexOf('-') >= 0) { - dateArr.value[4] = getCycleArr(rule, 12, false) - } else if (rule.indexOf('/') >= 0) { - dateArr.value[4] = getAverageArr(rule, 12) - } else if (rule !== '*') { - dateArr.value[4] = getAssignArr(rule) - } -} -// 获取"日"数组-主要为日期规则 -function getWeekArr(rule) { - // 只有当日期规则的两个值均为“”时则表达日期是有选项的 - if (dayRule.value === '' && dayRuleSup.value === '') { - if (rule.indexOf('-') >= 0) { - dayRule.value = 'weekDay'; - dayRuleSup.value = getCycleArr(rule, 7, false) - } else if (rule.indexOf('#') >= 0) { - dayRule.value = 'assWeek'; - let matchRule = rule.match(/[0-9]{1}/g); - dayRuleSup.value = [Number(matchRule[1]), Number(matchRule[0])]; - dateArr.value[3] = [1]; - if (dayRuleSup.value[1] === 7) { - dayRuleSup.value[1] = 0; - } - } else if (rule.indexOf('L') >= 0) { - dayRule.value = 'lastWeek'; - dayRuleSup.value = Number(rule.match(/[0-9]{1,2}/g)[0]); - dateArr.value[3] = [31]; - if (dayRuleSup.value === 7) { - dayRuleSup.value = 0; - } - } else if (rule !== '*' && rule !== '?') { - dayRule.value = 'weekDay'; - dayRuleSup.value = getAssignArr(rule) - } - } -} -// 获取"日"数组-少量为日期规则 -function getDayArr(rule) { - dateArr.value[3] = getOrderArr(1, 31); - dayRule.value = ''; - dayRuleSup.value = ''; - if (rule.indexOf('-') >= 0) { - dateArr.value[3] = getCycleArr(rule, 31, false) - dayRuleSup.value = 'null'; - } else if (rule.indexOf('/') >= 0) { - dateArr.value[3] = getAverageArr(rule, 31) - dayRuleSup.value = 'null'; - } else if (rule.indexOf('W') >= 0) { - dayRule.value = 'workDay'; - dayRuleSup.value = Number(rule.match(/[0-9]{1,2}/g)[0]); - dateArr.value[3] = [dayRuleSup.value]; - } else if (rule.indexOf('L') >= 0) { - dayRule.value = 'lastDay'; - dayRuleSup.value = 'null'; - dateArr.value[3] = [31]; - } else if (rule !== '*' && rule !== '?') { - dateArr.value[3] = getAssignArr(rule) - dayRuleSup.value = 'null'; - } else if (rule === '*') { - dayRuleSup.value = 'null'; - } -} -// 获取"时"数组 -function getHourArr(rule) { - dateArr.value[2] = getOrderArr(0, 23); - if (rule.indexOf('-') >= 0) { - dateArr.value[2] = getCycleArr(rule, 24, true) - } else if (rule.indexOf('/') >= 0) { - dateArr.value[2] = getAverageArr(rule, 23) - } else if (rule !== '*') { - dateArr.value[2] = getAssignArr(rule) - } -} -// 获取"分"数组 -function getMinArr(rule) { - dateArr.value[1] = getOrderArr(0, 59); - if (rule.indexOf('-') >= 0) { - dateArr.value[1] = getCycleArr(rule, 60, true) - } else if (rule.indexOf('/') >= 0) { - dateArr.value[1] = getAverageArr(rule, 59) - } else if (rule !== '*') { - dateArr.value[1] = getAssignArr(rule) - } -} -// 获取"秒"数组 -function getSecondArr(rule) { - dateArr.value[0] = getOrderArr(0, 59); - if (rule.indexOf('-') >= 0) { - dateArr.value[0] = getCycleArr(rule, 60, true) - } else if (rule.indexOf('/') >= 0) { - dateArr.value[0] = getAverageArr(rule, 59) - } else if (rule !== '*') { - dateArr.value[0] = getAssignArr(rule) - } -} -// 根据传进来的min-max返回一个顺序的数组 -function getOrderArr(min, max) { - let arr = []; - for (let i = min; i <= max; i++) { - arr.push(i); - } - return arr; -} -// 根据规则中指定的零散值返回一个数组 -function getAssignArr(rule) { - let arr = []; - let assiginArr = rule.split(','); - for (let i = 0; i < assiginArr.length; i++) { - arr[i] = Number(assiginArr[i]) - } - arr.sort(compare) - return arr; -} -// 根据一定算术规则计算返回一个数组 -function getAverageArr(rule, limit) { - let arr = []; - let agArr = rule.split('/'); - let min = Number(agArr[0]); - let step = Number(agArr[1]); - while (min <= limit) { - arr.push(min); - min += step; - } - return arr; -} -// 根据规则返回一个具有周期性的数组 -function getCycleArr(rule, limit, status) { - // status--表示是否从0开始(则从1开始) - let arr = []; - let cycleArr = rule.split('-'); - let min = Number(cycleArr[0]); - let max = Number(cycleArr[1]); - if (min > max) { - max += limit; - } - for (let i = min; i <= max; i++) { - let add = 0; - if (status === false && i % limit === 0) { - add = limit; - } - arr.push(Math.round(i % limit + add)) - } - arr.sort(compare) - return arr; -} -// 比较数字大小(用于Array.sort) -function compare(value1, value2) { - if (value2 - value1 > 0) { - return -1; - } else { - return 1; - } -} -// 格式化日期格式如:2017-9-19 18:04:33 -function formatDate(value, type) { - // 计算日期相关值 - let time = typeof value == 'number' ? new Date(value) : value; - let Y = time.getFullYear(); - let M = time.getMonth() + 1; - let D = time.getDate(); - let h = time.getHours(); - let m = time.getMinutes(); - let s = time.getSeconds(); - let week = time.getDay(); - // 如果传递了type的话 - if (type === undefined) { - return Y + '-' + (M < 10 ? '0' + M : M) + '-' + (D < 10 ? '0' + D : D) + ' ' + (h < 10 ? '0' + h : h) + ':' + (m < 10 ? '0' + m : m) + ':' + (s < 10 ? '0' + s : s); - } else if (type === 'week') { - // 在quartz中 1为星期日 - return week + 1; - } -} -// 检查日期是否存在 -function checkDate(value) { - let time = new Date(value); - let format = formatDate(time) - return value === format; -} -onMounted(() => { - expressionChange() -}) -</script> \ No newline at end of file diff --git a/src/components/Crontab/second.vue b/src/components/Crontab/second.vue deleted file mode 100644 index a7e5798..0000000 --- a/src/components/Crontab/second.vue +++ /dev/null @@ -1,128 +0,0 @@ -<template> - <el-form> - <el-form-item> - <el-radio v-model='radioValue' :label="1"> - 秒,允许的通配符[, - * /] - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="2"> - 周期从 - <el-input-number v-model='cycle01' :min="0" :max="58" /> - - <el-input-number v-model='cycle02' :min="cycle01 + 1" :max="59" /> 秒 - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="3"> - 从 - <el-input-number v-model='average01' :min="0" :max="58" /> 秒开始,每 - <el-input-number v-model='average02' :min="1" :max="59 - average01" /> 秒执行一次 - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="4"> - 指定 - <el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="10"> - <el-option v-for="item in 60" :key="item" :label="item - 1" :value="item - 1" /> - </el-select> - </el-radio> - </el-form-item> - </el-form> -</template> - -<script setup> -const emit = defineEmits(['update']) -const props = defineProps({ - cron: { - type: Object, - default: { - second: "*", - min: "*", - hour: "*", - day: "*", - month: "*", - week: "?", - year: "", - } - }, - check: { - type: Function, - default: () => { - } - } -}) -const radioValue = ref(1) -const cycle01 = ref(0) -const cycle02 = ref(1) -const average01 = ref(0) -const average02 = ref(1) -const checkboxList = ref([]) -const checkCopy = ref([0]) -const cycleTotal = computed(() => { - cycle01.value = props.check(cycle01.value, 0, 58) - cycle02.value = props.check(cycle02.value, cycle01.value + 1, 59) - return cycle01.value + '-' + cycle02.value -}) -const averageTotal = computed(() => { - average01.value = props.check(average01.value, 0, 58) - average02.value = props.check(average02.value, 1, 59 - average01.value) - return average01.value + '/' + average02.value -}) -const checkboxString = computed(() => { - return checkboxList.value.join(',') -}) -watch(() => props.cron.second, value => changeRadioValue(value)) -watch([radioValue, cycleTotal, averageTotal, checkboxString], () => onRadioChange()) -function changeRadioValue(value) { - if (value === '*') { - radioValue.value = 1 - } else if (value.indexOf('-') > -1) { - const indexArr = value.split('-') - cycle01.value = Number(indexArr[0]) - cycle02.value = Number(indexArr[1]) - radioValue.value = 2 - } else if (value.indexOf('/') > -1) { - const indexArr = value.split('/') - average01.value = Number(indexArr[0]) - average02.value = Number(indexArr[1]) - radioValue.value = 3 - } else { - checkboxList.value = [...new Set(value.split(',').map(item => Number(item)))] - radioValue.value = 4 - } -} -// 单选按钮值变化时 -function onRadioChange() { - switch (radioValue.value) { - case 1: - emit('update', 'second', '*', 'second') - break - case 2: - emit('update', 'second', cycleTotal.value, 'second') - break - case 3: - emit('update', 'second', averageTotal.value, 'second') - break - case 4: - if (checkboxList.value.length === 0) { - checkboxList.value.push(checkCopy.value[0]) - } else { - checkCopy.value = checkboxList.value - } - emit('update', 'second', checkboxString.value, 'second') - break - } -} -</script> - -<style lang="scss" scoped> -.el-input-number--small, .el-select, .el-select--small { - margin: 0 0.2rem; -} -.el-select, .el-select--small { - width: 18.8rem; -} -</style> \ No newline at end of file diff --git a/src/components/Crontab/week.vue b/src/components/Crontab/week.vue deleted file mode 100644 index 105a3be..0000000 --- a/src/components/Crontab/week.vue +++ /dev/null @@ -1,197 +0,0 @@ -<template> - <el-form> - <el-form-item> - <el-radio v-model='radioValue' :label="1"> - 周,允许的通配符[, - * ? / L #] - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="2"> - 不指定 - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="3"> - 周期从 - <el-select clearable v-model="cycle01"> - <el-option - v-for="(item,index) of weekList" - :key="index" - :label="item.value" - :value="item.key" - :disabled="item.key === 7" - >{{item.value}}</el-option> - </el-select> - - - <el-select clearable v-model="cycle02"> - <el-option - v-for="(item,index) of weekList" - :key="index" - :label="item.value" - :value="item.key" - :disabled="item.key <= cycle01" - >{{item.value}}</el-option> - </el-select> - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="4"> - 第 - <el-input-number v-model='average01' :min="1" :max="4" /> 周的 - <el-select clearable v-model="average02"> - <el-option v-for="item in weekList" :key="item.key" :label="item.value" :value="item.key" /> - </el-select> - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="5"> - 本月最后一个 - <el-select clearable v-model="weekday"> - <el-option v-for="item in weekList" :key="item.key" :label="item.value" :value="item.key" /> - </el-select> - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="6"> - 指定 - <el-select class="multiselect" clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="6"> - <el-option v-for="item in weekList" :key="item.key" :label="item.value" :value="item.key" /> - </el-select> - </el-radio> - </el-form-item> - - </el-form> -</template> - -<script setup> -const emit = defineEmits(['update']) -const props = defineProps({ - cron: { - type: Object, - default: { - second: "*", - min: "*", - hour: "*", - day: "*", - month: "*", - week: "?", - year: "" - } - }, - check: { - type: Function, - default: () => { - } - } -}) -const radioValue = ref(2) -const cycle01 = ref(2) -const cycle02 = ref(3) -const average01 = ref(1) -const average02 = ref(2) -const weekday = ref(2) -const checkboxList = ref([]) -const checkCopy = ref([2]) -const weekList = ref([ - {key: 1, value: '星期日'}, - {key: 2, value: '星期一'}, - {key: 3, value: '星期二'}, - {key: 4, value: '星期三'}, - {key: 5, value: '星期四'}, - {key: 6, value: '星期五'}, - {key: 7, value: '星期六'} -]) -const cycleTotal = computed(() => { - cycle01.value = props.check(cycle01.value, 1, 6) - cycle02.value = props.check(cycle02.value, cycle01.value + 1, 7) - return cycle01.value + '-' + cycle02.value -}) -const averageTotal = computed(() => { - average01.value = props.check(average01.value, 1, 4) - average02.value = props.check(average02.value, 1, 7) - return average02.value + '#' + average01.value -}) -const weekdayTotal = computed(() => { - weekday.value = props.check(weekday.value, 1, 7) - return weekday.value + 'L' -}) -const checkboxString = computed(() => { - return checkboxList.value.join(',') -}) -watch(() => props.cron.week, value => changeRadioValue(value)) -watch([radioValue, cycleTotal, averageTotal, weekdayTotal, checkboxString], () => onRadioChange()) -function changeRadioValue(value) { - if (value === "*") { - radioValue.value = 1 - } else if (value === "?") { - radioValue.value = 2 - } else if (value.indexOf("-") > -1) { - const indexArr = value.split('-') - cycle01.value = Number(indexArr[0]) - cycle02.value = Number(indexArr[1]) - radioValue.value = 3 - } else if (value.indexOf("#") > -1) { - const indexArr = value.split('#') - average01.value = Number(indexArr[1]) - average02.value = Number(indexArr[0]) - radioValue.value = 4 - } else if (value.indexOf("L") > -1) { - const indexArr = value.split("L") - weekday.value = Number(indexArr[0]) - radioValue.value = 5 - } else { - checkboxList.value = [...new Set(value.split(',').map(item => Number(item)))] - radioValue.value = 6 - } -} -function onRadioChange() { - if (radioValue.value === 2 && props.cron.day === '?') { - emit('update', 'day', '*', 'week') - } - if (radioValue.value !== 2 && props.cron.day !== '?') { - emit('update', 'day', '?', 'week') - } - switch (radioValue.value) { - case 1: - emit('update', 'week', '*', 'week') - break - case 2: - emit('update', 'week', '?', 'week') - break - case 3: - emit('update', 'week', cycleTotal.value, 'week') - break - case 4: - emit('update', 'week', averageTotal.value, 'week') - break - case 5: - emit('update', 'week', weekdayTotal.value, 'week') - break - case 6: - if (checkboxList.value.length === 0) { - checkboxList.value.push(checkCopy.value[0]) - } else { - checkCopy.value = checkboxList.value - } - emit('update', 'week', checkboxString.value, 'week') - break - } -} -</script> - -<style lang="scss" scoped> -.el-input-number--small, .el-select, .el-select--small { - margin: 0 0.5rem; -} -.el-select, .el-select--small { - width: 8rem; -} -.el-select.multiselect, .el-select--small.multiselect { - width: 17.8rem; -} -</style> \ No newline at end of file diff --git a/src/components/Crontab/year.vue b/src/components/Crontab/year.vue deleted file mode 100644 index b26bdae..0000000 --- a/src/components/Crontab/year.vue +++ /dev/null @@ -1,149 +0,0 @@ -<template> - <el-form> - <el-form-item> - <el-radio :label="1" v-model='radioValue'> - 不填,允许的通配符[, - * /] - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio :label="2" v-model='radioValue'> - 每年 - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio :label="3" v-model='radioValue'> - 周期从 - <el-input-number v-model='cycle01' :min='fullYear' :max="2098"/> - - <el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : fullYear + 1" :max="2099"/> - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio :label="4" v-model='radioValue'> - 从 - <el-input-number v-model='average01' :min='fullYear' :max="2098"/> 年开始,每 - <el-input-number v-model='average02' :min="1" :max="2099 - average01 || fullYear"/> 年执行一次 - </el-radio> - - </el-form-item> - - <el-form-item> - <el-radio :label="5" v-model='radioValue'> - 指定 - <el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="8"> - <el-option v-for="item in 9" :key="item" :value="item - 1 + fullYear" :label="item -1 + fullYear" /> - </el-select> - </el-radio> - </el-form-item> - </el-form> -</template> - -<script setup> -const emit = defineEmits(['update']) -const props = defineProps({ - cron: { - type: Object, - default: { - second: "*", - min: "*", - hour: "*", - day: "*", - month: "*", - week: "?", - year: "" - } - }, - check: { - type: Function, - default: () => { - } - } -}) -const fullYear = ref(0) -const maxFullYear = ref(0) -const radioValue = ref(1) -const cycle01 = ref(0) -const cycle02 = ref(0) -const average01 = ref(0) -const average02 = ref(1) -const checkboxList = ref([]) -const checkCopy = ref([]) -const cycleTotal = computed(() => { - cycle01.value = props.check(cycle01.value, fullYear.value, maxFullYear.value - 1) - cycle02.value = props.check(cycle02.value, cycle01.value + 1, maxFullYear.value) - return cycle01.value + '-' + cycle02.value -}) -const averageTotal = computed(() => { - average01.value = props.check(average01.value, fullYear.value, maxFullYear.value - 1) - average02.value = props.check(average02.value, 1, 10) - return average01.value + '/' + average02.value -}) -const checkboxString = computed(() => { - return checkboxList.value.join(',') -}) -watch(() => props.cron.year, value => changeRadioValue(value)) -watch([radioValue, cycleTotal, averageTotal, checkboxString], () => onRadioChange()) -function changeRadioValue(value) { - if (value === '') { - radioValue.value = 1 - } else if (value === "*") { - radioValue.value = 2 - } else if (value.indexOf("-") > -1) { - const indexArr = value.split('-') - cycle01.value = Number(indexArr[0]) - cycle02.value = Number(indexArr[1]) - radioValue.value = 3 - } else if (value.indexOf("/") > -1) { - const indexArr = value.split('/') - average01.value = Number(indexArr[1]) - average02.value = Number(indexArr[0]) - radioValue.value = 4 - } else { - checkboxList.value = [...new Set(value.split(',').map(item => Number(item)))] - radioValue.value = 5 - } -} -function onRadioChange() { - switch (radioValue.value) { - case 1: - emit('update', 'year', '', 'year') - break - case 2: - emit('update', 'year', '*', 'year') - break - case 3: - emit('update', 'year', cycleTotal.value, 'year') - break - case 4: - emit('update', 'year', averageTotal.value, 'year') - break - case 5: - if (checkboxList.value.length === 0) { - checkboxList.value.push(checkCopy.value[0]) - } else { - checkCopy.value = checkboxList.value - } - emit('update', 'year', checkboxString.value, 'year') - break - } -} -onMounted(() => { - fullYear.value = Number(new Date().getFullYear()) - maxFullYear.value = fullYear.value + 10 - cycle01.value = fullYear.value - cycle02.value = cycle01.value + 1 - average01.value = fullYear.value - checkCopy.value = [fullYear.value] -}) -</script> - -<style lang="scss" scoped> -.el-input-number--small, .el-select, .el-select--small { - margin: 0 0.2rem; -} -.el-select, .el-select--small { - width: 18.8rem; -} -</style> \ No newline at end of file diff --git a/src/components/RightToolbar/index.vue b/src/components/RightToolbar/index.vue new file mode 100644 index 0000000..5a53dd4 --- /dev/null +++ b/src/components/RightToolbar/index.vue @@ -0,0 +1,134 @@ +<template> + <div class="top-right-btn" :style="style"> + <el-row> + <el-tooltip class="item" effect="dark" :content="showSearch ? '隐藏搜索' : '显示搜索'" placement="top" v-if="search"> + <el-button circle icon="Search" @click="toggleSearch()" /> + </el-tooltip> + <el-tooltip class="item" effect="dark" content="刷新" placement="top"> + <el-button circle icon="Refresh" @click="refresh()" /> + </el-tooltip> + <el-tooltip class="item" effect="dark" content="显隐列" placement="top" v-if="columns"> + <el-button circle icon="Menu" @click="showColumn()" v-if="showColumnsType == 'transfer'"/> + <el-dropdown trigger="click" :hide-on-click="false" style="padding-left: 12px" v-if="showColumnsType == 'checkbox'"> + <el-button circle icon="Menu" /> + <template #dropdown> + <el-dropdown-menu> + <template v-for="item in columns" :key="item.key"> + <el-dropdown-item> + <el-checkbox :checked="item.visible" @change="checkboxChange($event, item.label)" :label="item.label" /> + </el-dropdown-item> + </template> + </el-dropdown-menu> + </template> + </el-dropdown> + </el-tooltip> + </el-row> + <el-dialog :title="title" v-model="open" append-to-body> + <el-transfer + :titles="['显示', '隐藏']" + v-model="value" + :data="columns" + @change="dataChange" + ></el-transfer> + </el-dialog> + </div> +</template> + +<script setup> +const props = defineProps({ + /* 是否显示检索条件 */ + showSearch: { + type: Boolean, + default: true, + }, + /* 显隐列信息 */ + columns: { + type: Array, + }, + /* 是否显示检索图标 */ + search: { + type: Boolean, + default: true, + }, + /* 显隐列类型(transfer穿梭框、checkbox复选框) */ + showColumnsType: { + type: String, + default: "checkbox", + }, + /* 右外边距 */ + gutter: { + type: Number, + default: 10, + }, +}) + +const emits = defineEmits(['update:showSearch', 'queryTable']); + +// 显隐数据 +const value = ref([]); +// 弹出层标题 +const title = ref("显示/隐藏"); +// 是否显示弹出层 +const open = ref(false); + +const style = computed(() => { + const ret = {}; + if (props.gutter) { + ret.marginRight = `${props.gutter / 2}px`; + } + return ret; +}); + +// 搜索 +function toggleSearch() { + emits("update:showSearch", !props.showSearch); +} + +// 刷新 +function refresh() { + emits("queryTable"); +} + +// 右侧列表元素变化 +function dataChange(data) { + for (let item in props.columns) { + const key = props.columns[item].key; + props.columns[item].visible = !data.includes(key); + } +} + +// 打开显隐列dialog +function showColumn() { + open.value = true; +} + +if (props.showColumnsType == 'transfer') { + // 显隐列初始默认隐藏列 + for (let item in props.columns) { + if (props.columns[item].visible === false) { + value.value.push(parseInt(item)); + } + } +} + +// 勾选 +function checkboxChange(event, label) { + props.columns.filter(item => item.label == label)[0].visible = event; +} + +</script> + +<style lang='scss' scoped> +:deep(.el-transfer__button) { + border-radius: 50%; + display: block; + margin-left: 0px; +} +:deep(.el-transfer__button:first-child) { + margin-bottom: 10px; +} +:deep(.el-dropdown-menu__item) { + line-height: 30px; + padding: 0 17px; +} +</style> diff --git a/src/components/UploadIcons/index.vue b/src/components/UploadIcons/index.vue new file mode 100644 index 0000000..8c2d25c --- /dev/null +++ b/src/components/UploadIcons/index.vue @@ -0,0 +1,105 @@ +<template> + <el-upload + v-model:file-list="fileList" + list-type="picture-card" + :on-preview="handlePictureCardPreview" + :on-remove="handleRemove" + :on-exceed="handleExceed" + :http-request="uploadImg" + :limit="props.limit" + :disabled="props.disabled" + > + <el-icon><Plus /></el-icon> + </el-upload> + + <el-dialog v-model="dialogVisible"> + <img w-full :src="dialogImageUrl" alt="Preview Image" /> + </el-dialog> +</template> + +<script setup> + import { ref } from 'vue' + import { Plus } from '@element-plus/icons-vue' + + import { ElMessage } from 'element-plus' + import { upload } from '@/api/basicApi/index' + + // import type { UploadProps } from 'element-plus' + import { getImage, setImage } from '@/utils/validate.js' + const props = defineProps({ + imageList: { + type: String, + default: '', + }, + limit: { + type: Number, + }, + disabled:{ + type: Boolean, + default:false, + }, + }) + const fileList = ref([]) + const file = ref([]) + + const emit = defineEmits(['uploadData']) + // const imageUrl = ref('') + + const dialogImageUrl = ref('') + const dialogVisible = ref(false) + + const handleRemove = (_, uploadFiles) => { + file.value = uploadFiles.map((item)=>{return item.url}) + emit('uploadData', file.value) + } + + const handlePictureCardPreview = (uploadFile) => { + dialogImageUrl.value = uploadFile.url + dialogVisible.value = true + } + //超出限制 + const handleExceed = () => { + ElMessage({ message: `只能上传${props.limit}张图片`, type: 'error' }) + } + //上传图片调用接口 + const uploadImg = async (params) => { + //建立表单,请求参数传表单形式 + let form = new FormData(); + form.append("file1", params.file); + form.append("fileId", params.file.lastModified); + form.append("path", 'operation'); + //发出上传文件请求 + let res = await upload().uploadFile(form) + if(res.code == 200){ + //返回的图片网络地址传给form + ElMessage({ message: '上传图片成功', type: 'success' }) + file.value.push(res.data.newFileName) + emit('uploadData', setImage(file.value)) + } + } + //监听props.image + watch(props, (newvalue)=>{ + let newList = '' + if(newvalue.imageList!='' && newvalue.imageList != null){ + newList = getImage(newvalue.imageList).join(',') + } + if( newList != ''){ + //判断是否加上PREURL前缀 + if(file.value.join(',') != newList){ + let list = [] + newList.split(',').forEach((item)=>{ + list.push({ + url: item + }) + }) + fileList.value = list + console.log('回显',fileList.value) + + file.value = newList.split(',') + } + }else{ + fileList.value = [] //父组件image从有值到空变化,也要清空一遍组件中的值 + file.value = [] + } + },{immediate:true}) +</script> \ No newline at end of file diff --git a/src/components/iFrame/index.vue b/src/components/iFrame/index.vue deleted file mode 100644 index 091b1a2..0000000 --- a/src/components/iFrame/index.vue +++ /dev/null @@ -1,31 +0,0 @@ -<template> - <div v-loading="loading" :style="'height:' + height"> - <iframe - :src="url" - frameborder="no" - style="width: 100%; height: 100%" - scrolling="auto" /> - </div> -</template> - -<script setup> -const props = defineProps({ - src: { - type: String, - required: true - } -}) - -const height = ref(document.documentElement.clientHeight - 94.5 + "px;") -const loading = ref(true) -const url = computed(() => props.src) - -onMounted(() => { - setTimeout(() => { - loading.value = false; - }, 300); - window.onresize = function temp() { - height.value = document.documentElement.clientHeight - 94.5 + "px;"; - }; -}) -</script> diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index af0d39c..fe6e175 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -16,12 +16,12 @@ </div> <template #dropdown> <el-dropdown-menu> - <router-link to="/userCenter"> - <el-dropdown-item >个人中心</el-dropdown-item> - </router-link> - <el-dropdown-item command="setLayout" v-if="settingsStore.showSettings"> - <span>布局设置</span> - </el-dropdown-item> +<!-- <router-link to="/userCenter">--> +<!-- <el-dropdown-item >个人中心</el-dropdown-item>--> +<!-- </router-link>--> +<!-- <el-dropdown-item command="setLayout" v-if="settingsStore.showSettings">--> +<!-- <span>布局设置</span>--> +<!-- </el-dropdown-item>--> <el-dropdown-item divided command="logout"> <span>退出登录</span> </el-dropdown-item> diff --git a/src/layout/components/Sidebar/index.vue b/src/layout/components/Sidebar/index.vue index a1a74bf..2bab073 100644 --- a/src/layout/components/Sidebar/index.vue +++ b/src/layout/components/Sidebar/index.vue @@ -51,12 +51,6 @@ :item="route" :base-path="route.path" /> - <app-link :to="'/userCenter'"> - <el-menu-item :index="'/userCenter'" > - <svg-icon :icon-class="'PhUserCircleFill'" /> - <template #title><span class="menu-title" :title="'个人中心'">个人中心</span></template> - </el-menu-item> - </app-link> </el-menu> </el-scrollbar> </div> diff --git a/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue index 167eb3e..e9404f2 100644 --- a/src/layout/components/TagsView/index.vue +++ b/src/layout/components/TagsView/index.vue @@ -61,7 +61,6 @@ const router = useRouter(); const visitedViews = computed(() => { - console.log('visitedViews',useTagsViewStore().visitedViews) return useTagsViewStore().visitedViews }); const routes = computed(() => usePermissionStore().routes); @@ -143,7 +142,6 @@ } //添加tag function addTags() { - console.log('11111',route) const { name } = route if (name) { useTagsViewStore().addView(route) diff --git a/src/main.js b/src/main.js index 4385060..3ee2f7a 100644 --- a/src/main.js +++ b/src/main.js @@ -23,7 +23,6 @@ // 注册指令 import plugins from './plugins' // plugins -// import { download } from '@/utils/request' // svg图标 import 'virtual:svg-icons-register' @@ -39,6 +38,10 @@ import Pagination from '@/components/Pagination' // 自定义树选择组件 import TreeSelect from '@/components/TreeSelect' +// 自定义表格工具组件 +import RightToolbar from '@/components/RightToolbar' +//多张图片上传 +import UploadIcons from "@/components/UploadIcons" //数据持久化 @@ -61,6 +64,8 @@ // 全局组件挂载 app.component('Pagination', Pagination) app.component('TreeSelect', TreeSelect) +app.component('RightToolbar', RightToolbar) +app.component('UploadIcons', UploadIcons) import { addActiveRoute } from '@/utils/index' diff --git a/src/permission.js b/src/permission.js index 89db57a..da5934d 100644 --- a/src/permission.js +++ b/src/permission.js @@ -7,12 +7,10 @@ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ import router from './router' -import { ElMessage } from 'element-plus' import NProgress from 'nprogress' import 'nprogress/nprogress.css' import { getToken } from '@/utils/auth' import useSettingsStore from '@/store/modules/settings' -import usePermissionStore from '@/store/modules/permission' NProgress.configure({ showSpinner: false }); @@ -23,7 +21,6 @@ NProgress.start() if (getToken()) { to.meta.title && useSettingsStore().setTitle(to.meta.title) - console.log(20,to.meta.title) /* has token*/ if (to.path === '/login') { next({ path: '/overview' }) diff --git a/src/plugins/download.js b/src/plugins/download.js deleted file mode 100644 index 0821007..0000000 --- a/src/plugins/download.js +++ /dev/null @@ -1,87 +0,0 @@ -// /* -// * @Author: hqs elkers@163.com -// * @Date: 2024-05-06 09:59:48 -// * @LastEditors: hqs elkers@163.com -// * @LastEditTime: 2024-05-06 19:12:56 -// * @FilePath: \RuoYi-Vue3\src\plugins\download.js -// * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE -// */ -// import axios from 'axios' -// import { ElLoading, ElMessage } from 'element-plus' -// import { saveAs } from 'file-saver' -// import { getToken } from '@/utils/auth' -// import errorCode from '@/utils/errorCode' -// import { blobValidate } from '@/utils/ruoyi' -// -// const baseURL = import.meta.env.VITE_APP_BISIC_API -// let downloadLoadingInstance; -// -// export default { -// name(name, isDelete = true) { -// var url = baseURL + "/common/download?fileName=" + encodeURIComponent(name) + "&delete=" + isDelete -// axios({ -// method: 'get', -// url: url, -// responseType: 'blob', -// headers: { 'Authorization': 'Bearer ' + getToken() } -// }).then((res) => { -// const isBlob = blobValidate(res.data); -// if (isBlob) { -// const blob = new Blob([res.data]) -// this.saveAs(blob, decodeURIComponent(res.headers['download-filename'])) -// } else { -// this.printErrMsg(res.data); -// } -// }) -// }, -// resource(resource) { -// var url = baseURL + "/common/download/resource?resource=" + encodeURIComponent(resource); -// axios({ -// method: 'get', -// url: url, -// responseType: 'blob', -// headers: { 'Authorization': 'Bearer ' + getToken() } -// }).then((res) => { -// const isBlob = blobValidate(res.data); -// if (isBlob) { -// const blob = new Blob([res.data]) -// this.saveAs(blob, decodeURIComponent(res.headers['download-filename'])) -// } else { -// this.printErrMsg(res.data); -// } -// }) -// }, -// zip(url, name) { -// var url = baseURL + url -// downloadLoadingInstance = ElLoading.service({ text: "正在下载数据,请稍候", background: "rgba(0, 0, 0, 0.7)", }) -// axios({ -// method: 'get', -// url: url, -// responseType: 'blob', -// headers: { 'Authorization': 'Bearer ' + getToken() } -// }).then((res) => { -// const isBlob = blobValidate(res.data); -// if (isBlob) { -// const blob = new Blob([res.data], { type: 'application/zip' }) -// this.saveAs(blob, name) -// } else { -// this.printErrMsg(res.data); -// } -// downloadLoadingInstance.close(); -// }).catch((r) => { -// console.error(r) -// ElMessage.error('下载文件出现错误,请联系管理员!') -// downloadLoadingInstance.close(); -// }) -// }, -// saveAs(text, name, opts) { -// saveAs(text, name, opts); -// }, -// async printErrMsg(data) { -// const resText = await data.text(); -// const rspObj = JSON.parse(resText); -// const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default'] -// ElMessage.error(errMsg); -// } -// } -// diff --git a/src/screen/flow.vue b/src/screen/flow.vue index e543a76..942f633 100644 --- a/src/screen/flow.vue +++ b/src/screen/flow.vue @@ -23,7 +23,6 @@ {name:'设备管理',url:''}, {name:'报警管理',url:''}, {name:'报表管理',url:''}, - {name:'系统管理',url:'/user'}, ]) const navTo = (item) =>{ router.push(item.url) diff --git a/src/store/modules/tagsView.js b/src/store/modules/tagsView.js index c7984ad..9d07f33 100644 --- a/src/store/modules/tagsView.js +++ b/src/store/modules/tagsView.js @@ -21,7 +21,6 @@ }, addVisitedView(view) { if (this.visitedViews.some(v => v.path === view.path)) return - console.log('view',view,view.meta.title) this.visitedViews.push( Object.assign({}, view, { title: view.meta.title || 'no-name' diff --git a/src/utils/color.js b/src/utils/color.js deleted file mode 100644 index 4c4e27d..0000000 --- a/src/utils/color.js +++ /dev/null @@ -1,8 +0,0 @@ -export function romColor() { - let colors = ['#e7eccb','#54d6be','#57b6ae','#21565a','#37364a','#49566e','#3e839f','#2f8f6c','#f37b60','#f7f8ea','#74a995','#0d0944','#ee571e','#e7f3ff','#a4c0d8','#317460','#dbbd65','#20083a','#7e0d41','#ef3e50','#f2795e','#fcfee6','#f3db9f','#e49463','#4f7b88','#eeebdc','#eeebdc','#c7e4f2','#6098c9','#511112'] - return colors -} -export function screenAlarmColor() { - let colors = ['#6cfeba','#fe7915','#c6f983','#ffe725','#fd6c96','#b5e8ff','#ffb5b6','#7be5ff','#ffdbf8','#ffb7ff','#c6ffc9','#a0ffa0','#ffe3ca','#fccc8a','#ffaa32','#b7ac92','#fbfe8a','#89e0d5','#55ffd5','#ff7927'] - return colors -} diff --git a/src/utils/index.js b/src/utils/index.js index 8e78dd2..35b043c 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -14,12 +14,10 @@ let routesData = JSON.parse(JSON.stringify(menuStore.sidebarRouters)); //定义路径模式 const views = import.meta.glob('../views/**/*/index.vue'); - // console.log('routesData',routesData) //组装成router需要的格式(加上component和meta) routesData = setActiveRoute(routesData, views) //设置路由 // console.log('组装完成',routesData) routesData.forEach((item) => { - console.log(222222,router) //路由数据解析完成,开始添加到本地路由表中 router.addRoute('/', item); // console.log('item',item) diff --git a/src/utils/methods.js b/src/utils/methods.js deleted file mode 100644 index 06fb75f..0000000 --- a/src/utils/methods.js +++ /dev/null @@ -1,57 +0,0 @@ -/* - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-06 14:47:41 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-15 11:15:57 - * @FilePath: \water-qinghe-web\src\utils\methods.js - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ -//将没有层级的对象列表传为树形,树形节点标识为parentId -export const listToTree = (data) => { - const tree = {}; - - // 遍历数据数组 - data.forEach((item) => { - const { id, parentId } = item; - - if (!tree[id]) { - tree[id] = { ...item, children: [] }; // 创建节点 - } else { - tree[id] = { ...tree[id], ...item }; // 更新节点 - } - - if (parentId !== id) { - if (!tree[parentId]) { - tree[parentId] = { children: [] }; // 创建父节点 - } - tree[parentId].children.push(tree[id]); // 将子节点添加到父节点的 children 中 - } - }); - // 找到根节点 - const rootIds = Object.keys(tree).filter(idx => tree[idx].parentId === 0 || tree[idx].parentId === 40); - const root = rootIds.map(idx => tree[idx]); - console.log('tree', tree, rootIds, root) - return root; - } - //设置图片路径 -import { PREURL } from '@/config/index' -export const getImage = (imgList) =>{ - if(imgList != null){ - return imgList.split(',').map((image) => { - if(image.indexOf('http') == -1 && image != ''){ - return PREURL + image - }else { - return image - } - }) - } -} -export const setImage = (imgList) =>{ - return imgList.map((image) => { - if(image.indexOf(PREURL) != -1){ - return image.replace(PREURL,'') - }else { - return image - } - }) -} diff --git a/src/utils/ruoyi.js b/src/utils/ruoyi.js index d4f44a4..a5d2e3b 100644 --- a/src/utils/ruoyi.js +++ b/src/utils/ruoyi.js @@ -5,12 +5,6 @@ * Copyright (c) 2019 ruoyi */ - -//加载动态图片 -export const getImageUrl = (name) =>{ - return new URL(`../assets/images/${name}`, import.meta.url).href -} - // 日期格式化 export function parseTime(time, pattern) { if (arguments.length === 0 || !time) { diff --git a/src/utils/textConst.js b/src/utils/textConst.js deleted file mode 100644 index 20038bd..0000000 --- a/src/utils/textConst.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * @Author: hqs elkers@163.com - * @Date: 2024-08-12 14:15:41 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-14 16:16:36 - * @FilePath: \water-qinghe-web\src\utils\textConst.js - * @Description:常用文字声明 - */ - -//姓名(包含少数民族姓名) -export const inpTip= '请输入', -selTip = '请选择'; diff --git a/src/utils/validate.js b/src/utils/validate.js index cbd8af7..78487c0 100644 --- a/src/utils/validate.js +++ b/src/utils/validate.js @@ -91,3 +91,26 @@ } return Array.isArray(arg) } + +//设置图片路径 +import { PREURL } from '@/config/index' +export const getImage = (imgList) =>{ + if(imgList != null){ + return imgList.split(',').map((image) => { + if(image.indexOf('http') == -1 && image != ''){ + return PREURL + image + }else { + return image + } + }) + } +} +export const setImage = (imgList) =>{ + return imgList.map((image) => { + if(image.indexOf(PREURL) != -1){ + return image.replace(PREURL,'') + }else { + return image + } + }) +} \ No newline at end of file diff --git a/src/views/alarm/alarmDefinition/index.vue b/src/views/alarm/alarmDefinition/index.vue deleted file mode 100644 index adfa206..0000000 --- a/src/views/alarm/alarmDefinition/index.vue +++ /dev/null @@ -1,214 +0,0 @@ -<template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item label="报警参数" prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入报警参数" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="报警参数" prop="code"> - <el-input v-model="form.code" placeholder="请输入报警参数"/> - </el-form-item> - <el-form-item label="描述" prop="description"> - <el-input v-model="form.description" placeholder="请输入分类标识" /> - </el-form-item> - <el-form-item label="备注" prop="comment"> - <el-input v-model="form.comment" placeholder="请输入备注" /> - </el-form-item> - <el-form-item></el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> - </template> - - <script setup name="Menu"> - import alarmDefinition from "@/api/configuration/alarmDefinition/index.js"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name,page:1}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ - -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - code: '报警参数', - description: '描述', - comment: '备注', - - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await alarmDefinition().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增报警参数"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - form.value = Object.assign({},row) - open.value = true; - title.value = "修改报警参数"; - } - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.code + '"的数据项?').then(function() { - return alarmDefinition().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => {}); -} - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -const data = reactive({ -form:{}, -queryParams: { - name: undefined, -}, -rules: { - code: [{ required: true, message: "请输入报警参数", trigger: "blur" }], - description: [{ required: true, message: "请输入内容", trigger: "blur" }], -}, -}); -const { queryParams, form, rules } = toRefs(data); - - /** 提交按钮 */ - function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - if (form.value.id != undefined) { - alarmDefinition().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - alarmDefinition().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - code: '', - comment: '', - description:undefined, - }; - proxy.resetForm("formRef"); - } - getList(); - </script> - \ No newline at end of file diff --git a/src/views/alarm/alarmHistory/index.vue b/src/views/alarm/alarmHistory/index.vue deleted file mode 100644 index 85d45f6..0000000 --- a/src/views/alarm/alarmHistory/index.vue +++ /dev/null @@ -1,149 +0,0 @@ -<!-- - * @Author: elkers - * @Date: 2024-08-06 16:17:39 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-13 10:18:39 - * @FilePath: \water-qinghe-web\src\views\alarm\alarmHistory\index.vue - * @Description: 历史记录 ---> - - <script setup> - import alarmHistoryApi from "@/api/alarmApi/alarmHistory"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:searchParams.value.deviceId}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const searchParam = { - limit:10, - page:1 -} -const pageParam = ref({ - total:0, - limit:0, - page:1, -}) -const tableData = ref([]); -let tableHeader = ref({ - facilityName: '报警设备', - code: '警报代码', - description:'描述', - createTimeView:'上报时间' - }) - /** 获取列表 */ - const loading = ref(false); - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await alarmHistoryApi().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - /** - * 表单相关 - */ -const formLabel = ({ - deviceId: '报警设备', - code: '警报代码', - description:'描述' -}) - -const searchParams = ref({ - keywords: '', -}); - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增"; - } - - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.description + '"的数据项?').then(function() { - return alarmHistoryApi().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => {}); -} - - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="searchParams" ref="queryRef" :inline="true"> - <el-form-item label="" prop=""> - <el-input - v-model="searchParams.deviceId" - placeholder="请输入搜索信息" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key.toString() == 'headImg'"> - <img :src="scope.row.headImg" class="table-headImg"/> - </div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-deviceId="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" v-has="['update',route]" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" v-has="['delete',route]" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - - </div> - </template> - - <style lang="scss" scoped> - -</style> - \ No newline at end of file diff --git a/src/views/alarm/alarmScheme/index.vue b/src/views/alarm/alarmScheme/index.vue deleted file mode 100644 index ae6f792..0000000 --- a/src/views/alarm/alarmScheme/index.vue +++ /dev/null @@ -1,407 +0,0 @@ -<!-- - * @Author: elkers - * @Date: 2024-08-06 16:17:39 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-09-28 10:36:18 - * @FilePath: \water-qinghe-web\src\views\alarm\alarmHistory\index.vue - * @Description: 历史记录 ---> - -<script setup> -import alarmSchemeApi from "@/api/alarmApi/alarmScheme.js"; -import facilityApi from "@/api/facility/index"; -import waterFacilityParameter from "@/api/configuration/facilityParameter/index.js"; -import {ref} from "vue"; -import user from "@/api/system/user.js"; -import waterMeterApi from "@/api/waterMeterApi/index.js"; -import {sysDictData} from "@/api/system/dict.js"; -import setPostParams from "@/utils/searchParams.js"; -import{ useRoute } from 'vue-router' - -const {proxy} = getCurrentInstance(); -const route = ref(useRoute()) -/** - * 搜索相关 - */ -/** 搜索按钮操作 */ -function handleQuery() { - getList({keywords: searchParams.value.deviceId}) -} - -/** 重置按钮操作 */ -function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); -} - -/** - * Table表格权限数据列表相关 - */ -const searchParam = { - limit: 15, - page: 1 -} -const pageParam = ref({ - total: 0, - limit: 0, - page: 1, -}) -const tableData = ref([]); -let tableHeader = ref({ - schemeName: '方案名称', - facilityName: '设备名称', - columnsCode: '参数编码', - columnsShow: '参数名称', - schemeTypeView: '方案类型', - informTypeView: '通知方式', - lowAlarm: '低报警值', - lowsAlarm: '低低报警值', - tallAlarm: '高报警值', - tallsAlarm: '高高报警值', - informUser: '通知人员', - beginTime: '启用日期', - periodTime: '有效日期', - createTimeView: '创建日期' -}) - -async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await alarmSchemeApi().search(postParam).then((res) => { - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; -} - -//查询设备列表 -const facilityList = ref(); -const informUserList = ref(); -const parameterList = ref(); -const informTypeList = ref(); -const schemeTypeList=ref(); - - -const getFacilityList = async () => { - await facilityApi().search({limit: 100, page: 1}).then((res) => { - console.log("设备列表" + res.data.list); - facilityList.value = res.data.list - }) -} -const getInformUserList = async () => { - await user().search({limit: 100, page: 1}).then((res) => { - console.log("通知人员列表" + res.data.list); - informUserList.value = res.data.list - }) -} -const getInformTypeList = async () => { - let res= await sysDictData().searchType('inform_type') - console.log("字典列表1" + res.data); - if (res.code == 200) { - informTypeList.value = res.data - } - let res1= await sysDictData().searchType('scheme_type') - console.log("字典列表2" + res.data); - if (res1.code == 200) { - schemeTypeList.value = res1.data - } -} -getInformTypeList() -const handleChange = async (val) => { - form.columnsCode = ""; - //通过用户id获取该用户下的水表信息 - let res = await waterFacilityParameter().getParam(val) - console.log("设备参数", res.data) - if (res.code == 200) { - parameterList.value = res.data - } -} -getInformUserList() -getFacilityList() -/** - * 表单相关 - */ -const formLabel = ({ - deviceId: '报警设备', - code: '警报代码', - description: '描述' -}) - -const searchParams = ref({ - keywords: '', -}); -/** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -const data = reactive({ - form: {}, - queryParams: { - name: undefined, - }, - rules: { - schemeName: [{required: true, message: "请输入方案名称", trigger: "blur"}], - facilityId: [{required: true, message: "请输入设备信息", trigger: "blur"}], - columnsCode: [{required: true, message: "请输入参数信息", trigger: "blur"}], - schemeType: [{required: true, message: "请输入方案类型", trigger: "blur"}], - informType: [{required: true, message: "请输入通知方式", trigger: "blur"}], - beginTime: [{required: true, message: "请输入启用时间", trigger: "blur"}], - periodTime: [{required: true, message: "请输入有效时间", trigger: "blur"}], - informUser: [{required: true, message: "请输入通人员", trigger: "blur"}], - - - }, -}); -const {queryParams, form, rules} = toRefs(data); - -/** 提交按钮 */ -function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - if (form.value.id != undefined) { - alarmSchemeApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() => { - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - alarmSchemeApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() => { - open.value = false; - proxy.$modal.msgError("新增失败"); - }); - ; - } - } - }); -} - -/** 新增按钮操作 */ -async function handleAdd() { - reset(); - open.value = true; - title.value = "新增"; -} - -/** 修改按钮操作 */ -async function handleUpdate(row) { - reset(); - form.value = Object.assign({}, row) - open.value = true; - title.value = "修改报警参数"; -} - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.description + '"的数据项?').then(function () { - return alarmSchemeApi().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => { - }); -} - -/** 取消按钮 */ -function cancel() { - open.value = false; - reset(); -} - -/** 表单重置 */ -function reset() { - form.value = { - code: '', - comment: '', - description: undefined, - }; - proxy.resetForm("formRef"); -} - -getList(); -</script> -<template> - <div class="app-container"> - <el-form :model="searchParams" ref="queryRef" :inline="true"> - <el-form-item label="" prop=""> - <el-input - v-model="searchParams.deviceId" - placeholder="请输入搜索信息" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增 - </el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key.toString() == 'headImg'"> - <img :src="scope.row.headImg" class="table-headImg"/> - </div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-deviceId="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" v-has="['update',route]" - @click="handleUpdate(scope.row)">修改 - </el-button> - <el-button link type="primary" icon="Delete" v-has="['delete',route]" - @click="handleDelete(scope.row)">删除 - </el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="选择设备" prop="facilityId"> - <el-select v-model="form.facilityId" placeholder="请输入设备信息" @change="handleChange"> - <el-option - v-for="(item,index) in facilityList" - :label="item.facilityName" - :value="item.id" - :key="index" - ></el-option> - </el-select> - </el-form-item> - <el-form-item label="选择设备参数" prop="columnsCode"> - <el-select v-model="form.columnsCode" placeholder="请输入设备参数" > - <el-option - v-for="(item,index) in parameterList" - :label="item.columnsShow" - :value="item.columnsCode" - :key="index" - ></el-option> - </el-select> - </el-form-item> - <el-form-item label="报警方案名称" prop="schemeName"> - <el-input v-model="form.schemeName" placeholder="请输入报警方案名称"/> - </el-form-item> - <el-form-item label="报警类型" prop="schemeType"> - <el-select v-model="form.schemeType" placeholder="请选择报警类型" > - <el-option - v-for="item in schemeTypeList" - :key="item.id" - :label="item.dictLabel" - :title="item.dictValue" - :value="item.dictValue" - /> - </el-select> - </el-form-item> - <el-form-item label="通知方式" prop="informType"> - <el-select v-model="form.informType" placeholder="请选择通知方式" > - <el-option - v-for="item in informTypeList" - :key="item.id" - :label="item.dictLabel" - :title="item.dictValue" - :value="item.dictValue" - /> - </el-select> - </el-form-item> - <el-form-item label="低报警值" prop="lowAlarm"> - <el-input v-model="form.lowAlarm" placeholder="请输入低报警值"/> - </el-form-item> - <el-form-item label="低低报警值" prop="lowsAlarm"> - <el-input v-model="form.lowsAlarm" placeholder="请输低低报警值"/> - </el-form-item> - <el-form-item label="高报警值" prop="tallAlarm"> - <el-input v-model="form.tallAlarm" placeholder="请输入高报警值"/> - </el-form-item> - <el-form-item label="高高报警值" prop="tallsAlarm"> - <el-input v-model="form.tallsAlarm" placeholder="请输入高高报警值"/> - </el-form-item> - <el-form-item label="通知人员" prop="informUser"> - <el-select v-model="form.informUser" placeholder="请选择通知人员"> - <el-option - v-for="item in informUserList" - :key="item.id" - :label="item.nickName" - :title="item.nickName" - :value="item.nickName" - /> - </el-select> - </el-form-item> - <el-form-item label="启用日期" prop="beginTime"> - <el-date-picker - v-model="form.beginTime" - type="date" - placeholder="请选择启用时间" - format="YYYY-MM-DD" - value-format="YYYY-MM-DD" - :disabled="isDetail ? true : false" - /> - </el-form-item> - <el-form-item label="有效日期" prop="periodTime"> - <el-date-picker - v-model="form.periodTime" - type="date" - placeholder="请选择启用时间" - format="YYYY-MM-DD" - value-format="YYYY-MM-DD" - :disabled="isDetail ? true : false" - /> - </el-form-item> - <el-form-item label="备注" prop="remark"> - <el-input v-model="form.remark" placeholder="请输入备注"/> - </el-form-item> - <el-form-item></el-form-item> - - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> -</template> - -<style lang="scss" scoped> - -</style> - \ No newline at end of file diff --git a/src/views/configuration/companySetting/index.vue b/src/views/configuration/companySetting/index.vue deleted file mode 100644 index 9f8ef1d..0000000 --- a/src/views/configuration/companySetting/index.vue +++ /dev/null @@ -1,280 +0,0 @@ -<template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入内容" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="水费账单类型" prop="waterBillType"> - <el-select v-model="form.waterBillType" placeholder="请选择水费账单类型"> - <el-option - v-for="(item,index) in waterBillTypeList" - :label="item.dictLabel" - :value="item.dictValue" - :key="index" - ></el-option> - </el-select> - </el-form-item> - <el-form-item label="账单周期" prop="waterMonthBillDay"> - <div> - <el-input-number v-model="form.waterMonthBillDay" :min="1" max="31" /> - <span>(n日 ~ 次月n-1日)</span> - </div> - </el-form-item> - <el-form-item label="出账后支付时间限制" prop="waterPayDays"> - <el-input v-model="form.waterPayDays" placeholder="请输入出账后支付时间限制(单位:天)" /> - </el-form-item> - <el-form-item label="账单出账日" prop="waterMonthBillCreateDay"> - <el-input-number v-model="form.waterMonthBillCreateDay" :min="1" max="31" placeholder="请输入水费账单生成日期" /> - </el-form-item> - <el-form-item label="水表欠费是否关阀 " prop="waterMeterDelinquentClose"> - <el-select v-model="form.waterMeterDelinquentClose" placeholder="请选择"> - <el-option - v-for="(item,index) in waterMeterDelinquentCloseList" - :label="item.dictLabel" - :value="item.dictValue" - :key="index" - ></el-option> - </el-select> - </el-form-item> - <el-form-item></el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> - </template> - - <script setup name="Menu"> - import companySetting from "@/api/configuration/companySetting"; - import { sysDictData } from "@/api/system/dict"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name,page:1}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ - -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - waterBillTypeName: '水费账单类型', - waterMonthBillDay: '水费账单起始日期(日)', - waterMonthBillCreateDay: '水费账单生成日期(天)', - waterPayDays: '出账后支付时间限制(天)', - waterMeterDelinquentCloseName: '水表欠费是否关阀', - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await companySetting().search(postParam).then((res) =>{ - tableData.value = res.data.list - tableData.value.forEach((item)=>{ - if(item.waterBillType === 2){ - item.waterBillTypeName = '每日' - }else{ - item.waterBillTypeName = '每月' - } - if(item.waterMeterDelinquentClose === 0){ - item.waterMeterDelinquentCloseName = '否' - }else{ - item.waterMeterDelinquentCloseName = '是' - } - }) - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增用户分类"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - form.value = Object.assign({},row) - form.value.waterBillType = form.value.waterBillType.toString() - form.value.waterMeterDelinquentClose = form.value.waterMeterDelinquentClose.toString() - open.value = true; - title.value = "修改用户分类"; - } - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.waterBillType + '"的数据项?').then(function() { - return companySetting().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => {}); -} - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -const data = reactive({ -form:{}, -queryParams: { - name: undefined, -}, -rules: { - waterBillType: [{ required: true, message: "请输入水费账单类型", trigger: "blur" }], - waterMonthBillDay: [ - { required: true, message: "请输入水费账单起始日期", trigger: "blur" }], - // { pattern: /^(3[01]|[12][0-9]|[1-9])$/,message: '日期必须在1到31之间',trigger: 'blur'} ], - waterMonthBillCreateDay: [ - { required: true, message: "请输入出账后支付时间限制", trigger: "blur" }], - // { pattern: /^(3[01]|[12][0-9]|[1-9])$/,message: '日期必须在1到31之间',trigger: 'blur'} ], - waterPayDays: [{ required: true, message: "出账后支付时间限制", trigger: "blur" }], - waterMeterDelinquentClose: [{ required: true, message: "请选择", trigger: "blur" }], -}, -}); -const { queryParams, form, rules } = toRefs(data); - -//获取账单类型字典 -const waterBillTypeList = ref() -const getBillType = async() =>{ - await sysDictData().searchType('billDate_type').then((res) =>{ - waterBillTypeList.value = res.data - }) -} -//获取欠费是否关阀字典 -const waterMeterDelinquentCloseList = ref() -const getvalveType = async() =>{ - await sysDictData().searchType('isCloseValve_type').then((res) =>{ - waterMeterDelinquentCloseList.value = res.data - }) -} -//动态显示 - - /** 提交按钮 */ - function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - if (form.value.id != undefined) { - companySetting().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - companySetting().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - waterBillType: '', - waterMonthBillCreateDay: '', - waterMonthBillDay:undefined, - waterPayDays:undefined, - waterMeterDelinquentClose:undefined, - }; - proxy.resetForm("formRef"); - } - getvalveType() - getBillType() - getList(); - </script> - \ No newline at end of file diff --git a/src/views/configuration/defaultAmountSetting/index.vue b/src/views/configuration/defaultAmountSetting/index.vue deleted file mode 100644 index f3930d8..0000000 --- a/src/views/configuration/defaultAmountSetting/index.vue +++ /dev/null @@ -1,235 +0,0 @@ -<template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item label="费用名称" prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入费用名称" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="费用名称" prop="name"> - <el-input v-model="form.name" placeholder="请输入费用名称"/> - </el-form-item> - <el-form-item label="用户分类" prop="classifyId"> - <el-select v-model="form.classifyId" placeholder="请选择用户分类"> - <el-option - v-for="(item,index) in userTypeList" - :label="item.name" - :value="item.id" - :key="index" - ></el-option> - </el-select> - </el-form-item> - <el-form-item label="配置比例" prop="ratio"> - <el-input v-model="form.ratio" placeholder="请输入配置比例" /> - </el-form-item> - <el-form-item label="备注" prop="remark"> - <el-input v-model="form.remark" placeholder="请输入备注" /> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> - </template> - - <script setup name="Menu"> - import defaultAmountSetting from "@/api/configuration/defaultAmountSetting"; - import userClassify from "@/api/configuration/userClassify"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name,page:1}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ - -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - name: '费用名称', - className: '用户分类', - ratio:'配置比例', - remark: '备注', - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await defaultAmountSetting().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增违约金配置"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - form.value = Object.assign({},row) - open.value = true; - title.value = "修改违约金配置"; - } - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.name + '"的数据项?').then(function() { - return defaultAmountSetting().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => {}); -} - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -const data = reactive({ -form:{}, -queryParams: { - name: undefined, -}, -rules: { - name: [{ required: true, message: "请输入费用名称", trigger: "blur" }], - classifyId: [{ required: true, message: "请选择用户分类", trigger: "blur"}], - ratio: [{ required: true, message: "请输入配置比例", trigger: "blur" }], -}, -}); -const { queryParams, form, rules } = toRefs(data); - -//获取用户分类列表 -const userTypeList = ref() -const getUserType = async() =>{ - await userClassify().search({limit:10000,page:1}).then((res) =>{ - userTypeList.value = res.data.list - }) -} - - /** 提交按钮 */ - function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - if (form.value.id != undefined) { - defaultAmountSetting().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - defaultAmountSetting().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - name: '', - classifyId: '', - ratio:undefined, - remark:'', - }; - proxy.resetForm("formRef"); - } - getUserType() - getList(); - </script> - \ No newline at end of file diff --git a/src/views/configuration/invoiceTitle/index.vue b/src/views/configuration/invoiceTitle/index.vue deleted file mode 100644 index e6dd7f0..0000000 --- a/src/views/configuration/invoiceTitle/index.vue +++ /dev/null @@ -1,297 +0,0 @@ - - <script setup > - import invoiceTitle from "@/api/configuration/invoiceTitle"; - import { sysDictData } from "@/api/system/dict"; - import user from "@/api/system/user"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - typeName: "抬头类型", - name: "抬头名称", - taxNum: "税号", - email: "邮箱", - comment: "备注", - createTimeView: "创建时间", - updateTimeView: "更新时间" - }) - - /** 获取列表 */ -const loading = ref(false); - async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await invoiceTitle ().search(postParam).then((res) =>{ - tableData.value = res.data.list - tableData.value.forEach((item) =>{ - if(item.type == 1){ - item.typeName = '企业单位' - }else{ - item.typeName = '个人/非企业' - } - }) - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.type = form.value.type.toString() - form.value.id = row.id - open.value = true; - title.value = "修改"; - } - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.name + '"的数据项?').then(function() { - return invoiceTitle ().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => {}); -} - - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const title = ref(""); - -const data = reactive({ -form:{}, -queryParams: { - name: undefined, -}, -rules: { - userId: [{ required: true, message: "请选择用户", trigger: "blur" }], - type: [{ required: true, message: "请选择发票类型", trigger: "blur" }], - name: [{ required: true, message: "请输入发票抬头名称", trigger: "blur" }], - email: [{ required: true, message: "请输入邮箱", trigger: "blur" }] -}, -}); -const { queryParams, form, rules } = toRefs(data); - - - //获取发票类型 - const invoiceTypeList = ref() - const getType = async() =>{ - await sysDictData().searchType('invoice_type').then((res) =>{ - invoiceTypeList.value = res.data - }) - } - - //获取账号列表 - const accountList = ref() - const getAccount = async() =>{ - await user().search({limit:10000,page:1}).then((res) =>{ - accountList.value = res.data.list - }) - } - - /** 提交按钮 */ - function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - if (form.value.id) { - if(form.value.type == 2){ - form.value.taxNum = '' - } - invoiceTitle ().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - }else { - invoiceTitle().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - userId: "", - type: "", - name: "", - taxNum: "", - email: "", - comment: "", - sort: 1, - }; - proxy.resetForm("formRef"); - } - getType(); - getAccount(); - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入内容" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - ></el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <el-dialog :title="title" v-model="open" center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="用户" prop="userId"> - <el-select v-model="form.userId" placeholder="请选择" > - <el-option - v-for="item in accountList" - :key="item.id" - :label="item.nickName" - :title="item.nickName" - :value="item.id" - /> - </el-select> - </el-form-item> - <el-form-item label="抬头类型" prop="type"> - <el-select v-model="form.type" placeholder="请选择" > - <el-option - v-for="item in invoiceTypeList" - :key="item.id" - :label="item.dictLabel" - :title="item.dictLabel" - :value="item.dictValue" - /> - </el-select> - </el-form-item> - <el-form-item label="抬头名称" prop="name"> - <el-input v-model="form.name" ></el-input> - </el-form-item> - <el-form-item label="税号" prop="taxNum" v-if="form.type == 1"> - <el-input v-model="form.taxNum" ></el-input> - </el-form-item> - <el-form-item label="邮箱" prop="email"> - <el-input v-model="form.email" ></el-input> - </el-form-item> - <el-form-item label="备注" prop="comment"> - <el-input v-model="form.comment" ></el-input> - </el-form-item> - <el-form-item label="显示排序" prop="sort"> - <el-input-number v-model="form.sort" controls-position="right" :min="1" /> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> -</template> - <style lang = scss scoped> - .el-form{ - width:100%; - display: flex; - flex-wrap: wrap; - justify-content: space-evenly; - .el-form-item{ - width: 45%; - } - } - </style> - \ No newline at end of file diff --git a/src/views/configuration/salePlace/index.vue b/src/views/configuration/salePlace/index.vue deleted file mode 100644 index 47763c5..0000000 --- a/src/views/configuration/salePlace/index.vue +++ /dev/null @@ -1,406 +0,0 @@ -<template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item label="营业网点" prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入营业网点" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key.toString() === 'image'" style="height: 50px;margin: 0 auto"> - <img :src="preUrl + scope.row.image" class="table-headImg"/> - </div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" :model="form" :rules="rules" ref="formRef"> - <el-form-item label="网点名称" prop="name"> - <el-input v-model="form.name" autocomplete="on" placeholder="请输入网点名称"></el-input> - </el-form-item> - <el-form-item label="工作日" prop="workDay"> - <el-input v-model="form.workDay" autocomplete="on" placeholder="请输入工作日"></el-input> - </el-form-item> - <el-form-item label="休息日" prop="dayOff"> - <el-input v-model="form.dayOff" autocomplete="on" placeholder="请输入休息日"></el-input> - </el-form-item> - <el-form-item label="业务范围" prop="businessRange"> - <el-input v-model="form.businessRange" autocomplete="on" placeholder="请输入业务范围"></el-input> - </el-form-item> - <el-form-item label="行政区域" prop="regionName"> - <el-tree-select - v-model="regionName" - :data="regionTreeList" - :props="{label:'name', value:'id'}" - placeholder="请选择区域" - filterable - highlight-current - :check-strictly="true" - @node-expand="expandTree" - @current-change="changeTreeValue" - /> - </el-form-item> - <el-form-item label="地址" prop="address"> - <el-input v-model="form.address" autocomplete="on" placeholder="请输入地址"></el-input> - </el-form-item> - <el-form-item label="联系方式" prop="phone"> - <el-input v-model="form.phone" autocomplete="on" placeholder="请输入电话"></el-input> - </el-form-item> - <el-form-item label="管理员" prop="phone"> - <span v-for="(item,index) in form.listAccount" :key="index" >{{ item.nickName }} </span> - <el-button style="height:32px" @click="addAdmin">选择管理员</el-button> - </el-form-item> - <el-form-item label="备注" prop="comment"> - <el-input v-model="form.comment" autocomplete="on" placeholder="请输入备注"></el-input> - </el-form-item> - <el-form-item label="显示排序" prop="sort"> - <el-input-number v-model="form.sort" controls-position="right" :min="1" /> - </el-form-item> - <el-form-item label="上传图片" prop="image"> - <upload-icons @uploadData="uploadData" :imageList="form.image" :limit="1"></upload-icons> - </el-form-item> - <el-form-item></el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - <!-- 管理员绑定营业网点弹窗 --> - <el-dialog - v-model="bandVisible" - title="用户绑定" - align-center - center - width="400" - > - <div class="bandCheck"> - <el-checkbox-group v-model="adminCheckedList"> - <el-checkbox v-for="(item,index) in adminSelectList" :key="index" :label="item.nickName" :value="item" size ="large" /> - </el-checkbox-group> - </div> - <div class="flex3"> - <el-button @click="bandVisible = false">取消</el-button> - <el-button type="primary" @click="bandListConfirm">确认</el-button></div> - </el-dialog> - </div> - </template> - - <script setup> - import salePlaceApi from "@/api/configuration/bussinessApi"; - import { region } from "@/api/basicApi"; - import user from "@/api/system/user"; - import { PREURL } from "@/config/index"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name,page:1}) - } - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - /** - * Table表格权限数据列表相关 - */ - let preUrl = ref(PREURL) -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - name: '网点名称', - businessRange: '业务范围', - workDay: '工作日', - dayOff: '休息日', - regionName: '所属区域', - address: '地址', - image: '网点图片', - phone: '联系方式', - status: '状态' - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await salePlaceApi().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增网点"; - regionName.value = '' - adminCheckedList.value = [] - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.id = row.id - form.value.listAccount = JSON.parse(row.associatedAccount) - adminCheckedList.value = form.value.listAccount - regionName.value = row.regionName - open.value = true; - title.value = "修改网点"; - } - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.name + '"的数据项?').then(function() { - return salePlaceApi().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => {}); -} - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -const data = reactive({ -form:{}, -queryParams: { - name: undefined, -}, -rules: { - name: [ - { required: true, message: '请输入网点名称', trigger: 'blur' }, - { max: 50, message: '长度不超过50个字', trigger: 'blur' }], - businessRange: [ - { required: true, message: '请输入业务范围', trigger: 'blur' }, - { max: 200, message: '长度不超过200个字', trigger: 'blur' }], - workDay: [ - { required: true, message: '请输入工作日', trigger: 'blur' }, - { max: 50, message: '长度不超过50个字', trigger: 'blur' }], - dayOff: [ - { required: true, message: '请输入休息日', trigger: 'blur' }, - { max: 50, message: '长度不超过50个字', trigger: 'blur' }], - listRegion: [ - { required: true, message: '请选择所属区域', trigger: 'change' }], - address: [ - { required: true, message: '请输入地址', trigger: 'blur' }, - { max: 200, message: '长度不超过200个字', trigger: 'blur' }], - phone: [ - { required: true, message: '请输入联系方式', trigger: 'blur' }, - { pattern: '^1(3|4|5|7|8)\\d{9}$|^0\\d{2,3}-\\d{7,8}$', message: '请输入合法手机号或座机号', trigger: 'blur' }], - comment: [ - { max: 500, message: '长度不超过500个字', trigger: 'blur' }], -}, -}); -const { queryParams, form, rules } = toRefs(data); - -//上传文件,添加图片地址信息 -const uploadData = (data) => { - form.value.image = data.toString() -} - -//省市区域列表 -const regionTreeList = ref([]) -const regionName = ref() -//获取省市区域列表 -const getRegionList = async() =>{ - let res = await region().search('') - if(res.code == 200) { - res.data.forEach((item)=>{ - if(item.children == null){ - item.children = [{}] - } - }) - regionTreeList.value = res.data - } -} -//展开所属区域树形, 请求展开区域的下一层子级数据 -const expandTree = async (data) => { - - //请求展开区域的下一层子级列表数据 - let res = await region().search(data.code) - if(res.code == 200) { - res.data.forEach((item)=>{ - if((item.children == null) && item.level!=4){ - item.children = [{}] - } - }) - data.children = res.data - } - } - //选中区域 - const changeTreeValue = (_, nodeData) => { - let idList = getTreeCode(nodeData, 'id').join(',') - form.value.region = idList - nextTick(()=>{ - regionName.value = getTreeCode(nodeData, 'name').join(',') - }) - } - //从当前选择区域树形查找父级code,组装为[123,456,789](xx省/xx市/xx区) - const getTreeCode = (tree, type) => { - let codeList = [] - if(tree.data.level!=1){ - codeList = codeList.concat(getTreeCode(tree.parent, type)) - codeList.push(tree.data[type]) - }else{ - return [tree.data[type]] - } - return codeList - } - -/** - * 绑定相关 - */ - const bandVisible = ref(false) - const adminSelectList = ref([]) - const adminCheckedList = ref([]) -//获取管理员列表 -const getAdminList = async () => { - await user().search({limit:10000,page:1}).then((res) =>{ - let list = [] - res.data.list.forEach(((item) =>{ - list.push({ - id:item.id, - userName:item.userName, - nickName:item.nickName - }) - })) - adminSelectList.value = list - }) -} -//添加管理员 -const addAdmin = ()=>{ - bandVisible.value = true -} -//绑定确认,1绑定,2添加,3编辑 - const bandListConfirm = async() =>{ - form.value.listAccount = adminCheckedList.value - bandVisible.value = false - } - - /** 提交按钮 */ - function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - if (form.value.id != undefined) { - salePlaceApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - salePlaceApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - name: '', - businessRange: '', - workDay: '', - dayOff: '', - address: '', - image: '', - phone: '', - listAccount: [], - comment:'', - sort:undefined, - }; - proxy.resetForm("formRef"); - } -getAdminList() -getRegionList() -getList(); - </script> - -<style lang = scss scoped> -.table-headImg{ - max-width: 100px; - height: 50px; -} -</style> - \ No newline at end of file diff --git a/src/views/configuration/userClassify/index.vue b/src/views/configuration/userClassify/index.vue deleted file mode 100644 index ef361dc..0000000 --- a/src/views/configuration/userClassify/index.vue +++ /dev/null @@ -1,217 +0,0 @@ -<template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item label="分类名称" prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入分类名称" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="分类名称" prop="name"> - <el-input v-model="form.name" placeholder="请输入分类名称"/> - </el-form-item> - <el-form-item label="分类标识" prop="mark"> - <el-input v-model="form.mark" placeholder="请输入分类标识" /> - </el-form-item> - <el-form-item label="备注" prop="comment"> - <el-input v-model="form.comment" placeholder="请输入备注" /> - </el-form-item> - <el-form-item label="显示排序" prop="sort"> - <el-input-number v-model="form.sort" controls-position="right" :min="1" /> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> - </template> - - <script setup name="Menu"> - import userClassify from "@/api/configuration/userClassify"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name,page:1}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ - -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - name: '分类名称', - mark: '分类标识', - comment: '备注', - sort:'排序值', - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await userClassify().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增用户分类"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - form.value = Object.assign({},row) - open.value = true; - title.value = "修改用户分类"; - } - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.name + '"的数据项?').then(function() { - return userClassify().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => {}); -} - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -const data = reactive({ -form:{}, -queryParams: { - name: undefined, -}, -rules: { - name: [{ required: true, message: "请输入分类名称", trigger: "blur" }], - mark: [{ required: true, message: "请输入分类标识", trigger: "blur" }], -}, -}); -const { queryParams, form, rules } = toRefs(data); - - /** 提交按钮 */ - function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - if (form.value.id != undefined) { - userClassify().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - userClassify().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - name: '', - comment: '', - mark:undefined, - sort:1, - }; - proxy.resetForm("formRef"); - } - getList(); - </script> - \ No newline at end of file diff --git a/src/views/configuration/waterOtherFee/index.vue b/src/views/configuration/waterOtherFee/index.vue deleted file mode 100644 index 8ffcf08..0000000 --- a/src/views/configuration/waterOtherFee/index.vue +++ /dev/null @@ -1,244 +0,0 @@ -<template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item label="费用项" prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入费用项" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="费用项" prop="feeItem"> - <el-input v-model="form.feeItem" placeholder="请输入费用项"/> - </el-form-item> - <el-form-item label="所属用户分类" prop="userClassify"> - <el-select v-model="form.userClassify" placeholder="请输入所属用户分类"> - <el-option - v-for="(item,index) in userTypeList" - :label="item.name" - :value="item.id" - :key="index" - ></el-option> - </el-select> - </el-form-item> - <el-form-item label="费用类型" prop="feeType"> - <el-input v-model="form.feeType" placeholder="请输入费用类型"/> - </el-form-item> - <el-form-item label="费用金额" prop="feeValue"> - <el-input v-model="form.feeValue" placeholder="请输入费用金额" /> - </el-form-item> - <el-form-item label="费用说明" prop="description"> - <el-input v-model="form.description" placeholder="请输入说明" /> - </el-form-item> - <el-form-item label="显示排序" prop="sort"> - <el-input-number v-model="form.sort" controls-position="right" :min="1" /> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> - </template> - - <script setup name="Menu"> - import waterOtherFee from "@/api/configuration/waterOtherFee"; - import userClassify from "@/api/configuration/userClassify"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name,page:1}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ - -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - feeItem: '费用项', - className: '所属用户分类', - feeTypeView: '费用类型', - description: '费用说明', - sort:'排序值', - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await waterOtherFee().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增费用项"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - form.value = Object.assign({},row) - open.value = true; - title.value = "修改费用项"; - } - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.feeItem + '"的数据项?').then(function() { - return waterOtherFee().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => {}); -} - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -const data = reactive({ -form:{}, -queryParams: { - name: undefined, -}, -rules: { - feeItem: [{ required: true, message: "请输入费用项", trigger: "blur" }], - userClassify: [{ required: true, message: "请选择用户分类", trigger: "blur" }], - feeType: [{ required: true, message: "请选择费用类型", trigger: "blur" }], - feeValue: [{ required: true, message: "请输入费用值", trigger: "blur" }], - description: [{ required: true, message: "请输入费用说明", trigger: "blur" }], -}, -}); -const { queryParams, form, rules } = toRefs(data); -//获取用户分类列表 -const userTypeList = ref() -const getUserType = async() =>{ - await userClassify().search({limit:10000,page:1}).then((res) =>{ - userTypeList.value = res.data.list - }) -} - - /** 提交按钮 */ - function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - if (form.value.id != undefined) { - waterOtherFee().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - waterOtherFee().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - feeItem: '', - userClassify: '', - feeType:undefined, - feeValue:undefined, - description:undefined, - }; - proxy.resetForm("formRef"); - } - getUserType() - getList(); - </script> - \ No newline at end of file diff --git a/src/views/configuration/waterPrice/index.vue b/src/views/configuration/waterPrice/index.vue deleted file mode 100644 index 606a45a..0000000 --- a/src/views/configuration/waterPrice/index.vue +++ /dev/null @@ -1,359 +0,0 @@ -<template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item label="水价标准名称" prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入水价标准名称" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="price-form" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-row> - <el-col :span="12"> - <el-form-item label="水价标准名称" prop="name"> - <el-input v-model="form.name" placeholder="请输入水价标准名称"/> - </el-form-item> - </el-col> - </el-row> - <!-- 循环阶梯水价 --> - <div class="fee-box"> - <div v-for="(item,index) in form.feeContent" class="fee-item"> - <div class="item-title" v-if="form.feeContent.length == 1">标准水价</div> - <div class="item-title" v-else>第{{ index + 1 }}阶梯 :</div> - <el-form-item :label="index + 1 == form.feeContent.length && form.feeContent.length > 1 ? '最高用水量(m³)' : '用水量(m³)' " prop="maxUse"> - <el-input - :disabled="form.feeContent.length > 1 && index + 1 == form.feeContent.length && form.feeContent[index-1].maxUse == '' " - v-model="item.maxUse" - @blur="maxUseChange(index)" - placeholder="用水量"/> - <span v-if="maxUseValid && !form.feeContent[index].maxUse && index + 1 != form.feeContent.length " class="message">请输入用水量</span> - </el-form-item> - - <el-form-item label="水价(元)" prop = 'price'> - <el-input v-model="item.price" @blur="priceChange(index)" placeholder="请输入水价" /> - <span v-if="priceValid && !form.feeContent[index].price" class="message">请输入水价</span> - </el-form-item> - <el-form-item label="备注" prop="comment"> - <el-input v-model="item.comment" placeholder="请输入备注" /> - </el-form-item> - <div class="item-delete"> - <el-button v-if="form.feeContent.length > 1" type="danger" size="small" @click="deleteFee(index)">删 除</el-button> - </div> - </div> - </div> - <div class="fee-add"> - <el-button type="primary" @click="addFee"> + 添加阶梯水费</el-button> - </div> - <el-row> - <el-col :span="12"> - <el-form-item label="备注" prop="comment"> - <el-input v-model="form.comment" placeholder="请输入备注" /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="显示排序" prop="sort"> - <el-input-number v-model="form.sort" controls-position="right" :min="1" /> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> - </template> - - <script setup name="Menu"> - import TieredCharging from "@/api/configuration/waterPrice"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name,page:1}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - /** - * Table表格权限数据列表相关 - */ -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - name: '水价标准名称', - comment: '备注', - sort:'排序值', - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await TieredCharging().search(postParam).then((res) =>{ - let list = res.data.list.map(obj => { - const { content, ...rest } = obj; - return { - ...rest, - feeContent: content, - }; - }); - console.log('reslist',list,res.data.list); - tableData.value = list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增用户水价标准"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - form.value = Object.assign({},row) - await TieredCharging().get(row.id).then((res) =>{ - form.value.feeContent = res.data.contentView; - }) - open.value = true; - title.value = "修改用户水价标准"; - console.log('123.',form.value) - } - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.name + '"的数据项?').then(function() { - return TieredCharging().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => {}); -} - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -const data = reactive({ -form:{ - name: '', - comment: '', - feeContent:[ - { - maxUse:'', - price:'', - comment:'' - } - ], - sort:1, - }, -queryParams: { - name: undefined, -}, -rules: { - name: [{ required: true, message: "请输入水价标准名称", trigger: "blur" }], -}, -}); -const { queryParams, form, rules } = toRefs(data); -//添加水表阶梯 -const addFee = () =>{ - form.value.feeContent.push( - { - maxUse:'', - price:'', - comment:'' - }) -} -//删除指定水表阶梯 -const deleteFee = (index) =>{ - if(form.value.feeContent.length > 1){ - form.value.feeContent.splice(index,1) - } -} -//校验 -const maxUseValid =ref(false) -const priceValid =ref(false) -//用水量校验 -const maxUseChange = (index) =>{ - if(!form.value.feeContent[index].maxUse){ - maxUseValid.value = true - } - if(form.value.feeContent.length > 1 && index > 0){ - if(form.value.feeContent[index].maxUse <= form.value.feeContent[index - 1].maxUse){ - proxy.$modal.msgError(`请输入大于第${index}阶梯用水量"${form.value.feeContent[index-1].maxUse}"的值`); - form.value.feeContent[index].maxUse = '' - maxUseValid.value = true - } - } -} -//水价校验 -const priceChange = (index) =>{ - if(!form.value.feeContent[index].price){ - priceValid.value = true - } -} - - /** 提交按钮 */ - function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - if (form.value.id != undefined) { - TieredCharging().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - TieredCharging().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - name: '', - comment: '', - feeContent:[ - { - maxUse:'', - price:'', - comment:'' - } - ], - sort:1, - }; - proxy.resetForm("formRef"); - } - getList(); - </script> - <style lang="scss"> - .price-form{ - padding: 20px 0; - background:#fff; - border-radius: 10px; - } -.fee-box{ - display: flex; - flex-wrap: wrap; -.fee-item{ - // background-color: rgb(255, 255, 255); - border: 1px solid #cfd5dd; - padding: 10px; - margin-left: 20px; - margin-bottom: 20px; - border-radius: 10px; - height: 250px; - width:420px; - .item-title{ - font-size: 18px; - font-weight:600; - width: 100px; - margin: 10px auto; - } - .item-delete{ - display: flex; - justify-content: center; - } -} -} -.fee-add{ - display: flex; - margin-bottom: 20px; - margin-left: 19%; -} -.message{ - position:absolute; - top: 80%; - z-index: 100; - color: var(--el-color-danger); - font-size: 12px; -} - -</style> - \ No newline at end of file diff --git a/src/views/customer/archives/index.vue b/src/views/customer/archives/index.vue deleted file mode 100644 index c6008b8..0000000 --- a/src/views/customer/archives/index.vue +++ /dev/null @@ -1,252 +0,0 @@ -<!-- - * @Author: elkers - * @Date: 2024-08-06 16:17:39 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-11-09 09:44:55 - * @FilePath: \water-qinghe-web\src\views\customer\archives\index.vue - * @Description: 用户档案 ---> - - <script setup> - import archivesApi from "@/api/archivesApi/index"; - import {areaApi} from "@/api/area/index"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:searchParams.value.userName}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const searchParam = { - limit:10, - page:1 -} -const pageParam = ref({ - total:0, - limit:0, - page:1, -}) -const tableData = ref([]); -const inpTip= '请输入',selTip = '请输入'; -let tableHeader = ref({ - userName: '用户名称', - userCode: '用户编号', - areaName:'所属区域', - walletBalance: '余额', - regionName:'所属地区', - userAddress:'详细地址', - userPhone:'用户电话', - createTimeView:'创建时间' - }) - /** 获取列表 */ - const loading = ref(false) - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await archivesApi().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - -const searchParams = ref({ - keywords: '', -}); - - -/** - * 表单相关 - */ -const rules = ref({ - userName: [ - { required: true, message: '请输入名称', trigger: 'blur' }, - {pattern: /^[\u4e00-\u9fa5\\·]*$/, message: '请输入中文或" · "符号', trigger: 'blur'}, - ], - userPhone: [ - { required: true, message: '请输入电话号码', trigger: 'blur' }, - { pattern: /^1[3-9]\d{9}$/, message: '手机号格式不正确', trigger: 'blur' } - ], - areaId: [ - { required: true, message: '请输入区域id', trigger: 'blur' }, - ], - // idCard: [ - // { required: true, message: '请输入身份证号', trigger: 'blur' }, - // { pattern: /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}(\d|X|x)$/, trigger: 'blur' ,message:"身份证号格式不正确"} - // ], -}); -const form = ref({}); -const open = ref(false) -/** 表单重置 */ -function reset() { - form.value = { - areaId:'', - userCode:'', - userName: '', - areaName:'', - userPhone: '', - idCard: '', - userAddress: '' - }; - proxy.resetForm("formRef"); -} -/** 修改按钮操作 */ -async function handleUpdate(row){ - reset(); - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.id = row.id - open.value = true; -} -//42222409120001 -/** 提交按钮 */ -function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - archivesApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() => { - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } - }); -} - /** - * select列表数据 - */ -//获取管网父级区域列表 - const parentAreaList = ref([]) - const getParentArea = async()=>{ - let res = await areaApi().getTree('') - parentAreaList.value = res.data - } - const changeParentTree = (e)=>{ - // form.value.parentAreaId = e.id - form.value.areaGrade = e.areaGrade - console.log('e001',e) - } - -/** 取消按钮 */ -function cancel() { - open.value = false; - reset(); -} - getList(); - getParentArea() - </script> - <template> - <div class="app-container"> - <el-form :model="searchParams" ref="queryRef" :inline="true"> - <el-form-item label="" prop=""> - <el-input - v-model="searchParams.userName" - placeholder="请输入搜索信息" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - :sortable="key.toString() == 'walletBalance' ? true : false" - > - <template #default="scope"> - <div v-if="key.toString() == 'headImg'"> - <img :src="scope.row.headImg" class="table-headImg"/> - </div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - - <!-- 添加/修改表单 --> - <el-dialog title="修改" v-model="open" append-to-body center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto' > - <el-form-item label="用户名" prop="userName"> - <el-input v-model="form.userName" placeholder="请输入用户名称"/> - </el-form-item> - <el-form-item label="用户编号(水表编号)" prop="userCode" > - <el-input v-model="form.userCode" placeholder="请输入用户名称" :disabled="true"/> - </el-form-item> - <el-form-item label="电话" prop="userPhone"> - <el-input v-model="form.userPhone" placeholder="请输入电话"/> - </el-form-item> - <el-form-item label="身份证号" prop="idCard"> - <el-input v-model="form.idCard" placeholder="请输入身份证号"/> - </el-form-item> - <el-form-item label="详细地址" > - <el-input v-model="form.userAddress" placeholder="请输入详细地址"/> - </el-form-item> - <el-form-item label="所属区域" prop="areaId"> - <el-tree-select - v-model="form.areaId" - :data="parentAreaList" - clearable - :props="{label:'areaName', value:'id'}" - placeholder="请选择区域" - highlight-current - @current-change="changeParentTree" - :check-strictly="true" - /> - </el-form-item> - <el-form-item></el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> - </template> - - <style lang="scss" scoped> - -</style> - \ No newline at end of file diff --git a/src/views/document/knowledge/index.vue b/src/views/document/knowledge/index.vue deleted file mode 100644 index f97be78..0000000 --- a/src/views/document/knowledge/index.vue +++ /dev/null @@ -1,267 +0,0 @@ -<!-- - * @Author: elkers - * @Date: 2024-08-06 16:17:39 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-14 09:16:00 - * @FilePath: \water-qinghe-web\src\views\document\knowledge\index.vue - * @Description: 知识库 ---> - - <script setup> - import knowledgeApi from "@/api/knowledgeApi/index"; - import { nameReg ,phoneReg } from "@/utils/regular"; - - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:searchParams.value.name}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const searchParam = { - limit:10, - page:1 -} -const pageParam = ref({ - total:0, - limit:0, - page:1, -}) -const tableData = ref([]); -const inpTip= '请输入',selTip = '请输入'; -let tableHeader = ref({ - name: '供应商名称', - address: '供应商地址', - contact:'联系人', - contactPhone:'联系人电话', - createTimeView:'创建时间' - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await knowledgeApi().search(val).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - /** - * 表单相关 - */ -const formLabel = ({ - name: '供应商名称', - address: '供应商地址', - contact:'联系人', - contactPhone:'联系人电话', - createTimeView:'创建时间' -}) - const rules = ref({ - name: [{ required: true, message: `${inpTip+formLabel.name}`, trigger: "blur" } - - ], - address: [{ required: true, message: `${inpTip+formLabel.address}`, trigger: "blur" }], - contact: [ - { required: true, message: `${inpTip+formLabel.contact}`, trigger: "blur" }, - { pattern: nameReg, message: '请输入真实姓名!', trigger: 'blur' }, - ], - contactPhone: [ - { required: true, message: `${inpTip+formLabel.contactPhone}`, trigger: "blur" }, - { pattern: phoneReg, message: '电话号码不正确!', trigger: 'blur' }, - ], -}); -const form = ref({}); -const searchParams = ref({ - keywords: '', -}); - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - // form.value = Object.assign({},row) - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.id = row.id - open.value = true; - title.value = "修改"; - } - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.contact + '"的数据项?').then(function() { - return knowledgeApi().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => {}); -} - - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -//上传文件,添加图片地址信息 -const uploadData = (data) => { - form.value.headImg = data.newFileView -} - /** 提交按钮 */ - function submitForm() { - proxy.$refs["supplierRef"].validate(valid => { - if (valid) { - form.value.contactPhone = Number(form.value.contactPhone) - if (form.value.id != undefined) { - knowledgeApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - knowledgeApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - }); - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - name: '', - address: '', - contact:'', - contactPhone:'' - }; - proxy.resetForm("supplierRef"); - } - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="searchParams" ref="queryRef" :inline="true"> - <el-form-item label="" prop=""> - <el-input - v-model="searchParams.name" - placeholder="请输入搜索信息" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key.toString() == 'headImg'"> - <img :src="scope.row.headImg" class="table-headImg"/> - </div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" v-has="['update',route]" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" v-has="['delete',route]" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加/修改表单 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="supplierRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item :label="formLabel.name" prop="name"> - <el-input v-model="form.name" :placeholder="inpTip+formLabel.name"/> - </el-form-item> - <el-form-item :label="formLabel.address" prop="address"> - <el-input v-model="form.address" :placeholder="inpTip+formLabel.address" /> - </el-form-item> - <el-form-item :label="formLabel.contact" prop="contact"> - <el-input v-model="form.contact" :placeholder="inpTip+formLabel.contact" /> - </el-form-item> - <el-form-item :label="formLabel.contactPhone" prop="contactPhone"> - <el-input v-model="form.contactPhone" :placeholder="inpTip+formLabel.contactPhone" /> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> - </template> - - <style lang="scss" scoped> - -</style> - \ No newline at end of file diff --git a/src/views/facility/area/index.vue b/src/views/facility/area/index.vue deleted file mode 100644 index 19243f9..0000000 --- a/src/views/facility/area/index.vue +++ /dev/null @@ -1,396 +0,0 @@ - -<script setup name="Post"> -import { areaApi} from "@/api/area/index"; -import {region} from "@/api/basicApi/index.js"; -import { onMounted } from "vue"; -import user from "@/api/system/user.js"; -import setPostParams from "@/utils/searchParams.js"; -const { proxy } = getCurrentInstance(); - -const loading = ref(true); //加载状态 - -/** 区域table相关 */ -const tableData = ref([]); //区域列表 -const total = ref(0); -const ids = ref([]); -const single = ref(true); -const multiple = ref(true); -let tableHeader = ref({ - - areaName: '区域名称', - // regionName: '省市区域', - areaUserName: '区域负责人', - address:'详细地址', - statusName: '状态', - updateTimeView: '更新时间', -}) -//获取列表数据 -const getList = async(val) => { - - loading.value = true; - let postParam = setPostParams(val) - let res = await areaApi().search(postParam) - if(res.code == 200) { - loading.value = false; - tableData.value = res.data.list; - - total.value = res.data.total; - search.page = res.data.page; - search.limit = res.data.limit; - } -} - - -/** - * 表单相关 - */ -const openForm = ref(false); -const title = ref(""); -const data = reactive({ - //表单 - form: { - areaGrade:'', - parentAreaId:'', - areaName:'', - region:'', - regionName:'', - areaUser:'', - areaUserName:'', - address:'', - remark:'', - status:true, - }, - //查询数据 - search: { - page: 1, //当前页 - limit: 10, //每页条数 - areaName: '', - status: '' - }, - //表单验证 - rules: { - areaName: [{ required: true, message: "请输入区域名称", trigger: "blur" }], - address: [{ required: true, message: "请输入详细地址", trigger: "blur" }], - areaUser: [{ required: true, message: "请选择区域负责人", trigger: "blur" }], - name:[{ required: false, message: "请选择省市区域", trigger: "blur" }], - }, -}); -const { search, form, rules } = toRefs(data); - -/** - * select列表数据 - */ -//获取管网父级区域列表 -const parentAreaList = ref([]) -const getParentArea = async()=>{ - let res = await areaApi().getTree('') - parentAreaList.value = res.data -} -const changeParentTree = (e)=>{ - // form.value.parentAreaId = e.id - form.value.areaGrade = e.areaGrade - console.log('e001',e) -} - - -//省市区域列表 -const regionTreeList = ref([]) -//获取省市区域列表 -const getRegionList = async() =>{ - let res = await region().search('') - if(res.code == 200) { - res.data.forEach((item)=>{ - if(item.children == null){ - item.children = [{}] - } - }) - regionTreeList.value = res.data - } -} -//展开所属区域树形, 请求展开区域的下一层子级数据 -const expandTree = async (data) => { - //请求展开区域的下一层子级列表数据 - let res = await region().search(data.code) - if(res.code == 200) { - res.data.forEach((item)=>{ - if((item.children == null) && item.level!=4){ - item.children = [{}] - } - }) - data.children = res.data - } -} -//选中区域 -const changeTreeValue = (_, nodeData) => { - - form.value.region = getTreeCode(nodeData, 'code').join(',') - nextTick(()=>{ - form.value.regionName = getTreeCode(nodeData, 'name').join(',') - }) -} -//从当前选择区域树形查找父级code,组装为[123,456,789](xx省/xx市/xx区) -const getTreeCode = (tree, type) => { - - let codeList = [] - if(tree.data.level!=1){ - codeList = codeList.concat(getTreeCode(tree.parent, type)) - codeList.push(tree.data[type]) - }else{ - return [tree.data[type]] - } - return codeList -} - -//获取管理员列表 -const areaUserList =ref([]) -const getUserList = async() =>{ - - loading.value = true; - let res = await user().search({limit:100,page:1}) - if(res.code == 200) { - loading.value = false; - areaUserList.value = res.data.list - } -} -async function changeUserList(e){ - - console.log('areauser',e) - areaUserList.value.forEach((item =>{ - if(item.id == e){ - form.value.areaUserName = item.nickName - } - })) -} - -/** 提交表单按钮 */ -function submitForm() { - - proxy.$refs["postRef"].validate(async valid => { - if (valid) { - if(!form.value.id){ - console.log('form.value000',form.value) - form.value.status = form.value.status ? 1: 0 - let res = await areaApi().create(form.value) - if(res.code == 200) { - proxy.$modal.msgSuccess("添加成功") - openForm.value = false - getList() - reset() - }else{ - proxy.$modal.msgError("添加失败") - openForm.value = false - reset() - } - }else{ - form.value.status = form.value.status ? 1: 0 - let res = await areaApi().modify(form.value) - if(res.code == 200) { - proxy.$modal.msgSuccess("修改成功") - openForm.value = false - getList() - reset() - }else{ - proxy.$modal.msgError("修改失败") - openForm.value = false - reset() - } - } - } - }); -} - -/** - * 操作相关 - */ - -/** 搜索按钮操作 */ -function handleQuery() { - getList({keywords:search.value.areaName}); -} -/** 重置按钮操作 */ -function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); -} -/** 多选框选中数据 */ -function handleSelectionChange(selection) { - ids.value = selection.map(item => item.id); - single.value = selection.length != 1; - multiple.value = !selection.length; -} -/** 新增按钮操作 */ -function handleAdd() { - getParentArea() - reset(); - openForm.value = true; - title.value = "添加区域"; -} -/** 修改按钮操作 */ -function handleUpdate(row) { - reset(); - //将表单数据更新为table对应值 - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.id = row.id - form.value.areaUser = Number(form.value.areaUser) - console.log('form',form.value); - openForm.value = true; - title.value = "修改区域"; -} - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('确认删除"' + row.areaName +'?') - .then(async() => { - console.log("无删除功能"); - let res = await areaApi().remove(row.id) - if(res.code == 200) { - proxy.$modal.msgSuccess("删除成功"); - openForm.value = false - getList() - } - }).catch(() => {}); -} - -/** 关闭弹窗 */ -function cancel() { - openForm.value = false; - reset(); -} -/** 表单重置 */ -const reset = () => { - proxy.resetForm("postRef"); - openForm.value = false -} -onMounted(async()=>{ - - getList(); - getRegionList() - getUserList() - getParentArea() -}) - - -</script> -<template> - <div class="app-container"> - <!--搜索框--> - <el-form :model="search" ref="queryRef" :inline="true"> - <el-form-item label="" prop="areaName"> - <el-input - v-model="search.areaName" - placeholder="请输入区域名称" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - - </el-form-item> - </el-form> - <!--操作按钮列--> - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData" @selection-change="handleSelectionChange"> - <el-table-column type="selection" width="55" align ="center" /> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - ></el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - v-show="total > 0" - :total="total" - v-model:page="search.page" - v-model:limit="search.limit" - @pagination="getList" - /> - <!-- 添加/修改弹窗 --> - <el-dialog :title="title" v-model="openForm" width="45vw" center append-to-body> - <el-form class="form-box" ref="postRef" :model="form" :rules="rules"> - <el-form-item label="父级区域" prop="parentAreaId"> - <el-tree-select - v-model="form.parentAreaId" - :data="parentAreaList" - clearable - :props="{label:'areaName', value:'id'}" - placeholder="请选择区域" - highlight-current - @current-change="changeParentTree" - :check-strictly="true" - /> - </el-form-item> - <el-form-item label="行政区域" prop="regionName"> - <el-tree-select - v-model="form.regionName" - :data="regionTreeList" - :props="{label:'name', value:'code'}" - placeholder="请选择区域" - filterable - highlight-current - :check-strictly="true" - @node-expand="expandTree" - @current-change="changeTreeValue" - /> - </el-form-item> - <el-form-item label="区域负责人" prop="areaUser"> - <el-select v-model="form.areaUser" placeholder="请输入负责人名称" @change="changeUserList"> - <el-option - v-for="item in areaUserList" - :key="item.id" - :label="item.nickName" - :title="item.nickName" - :value="item.id" - /> - </el-select> - </el-form-item> - <el-form-item label="区域名称" prop="areaName"> - <el-input v-model="form.areaName" placeholder="请输入区域名称" /> - </el-form-item> - <el-form-item label="详细地址" prop="address"> - <el-input v-model="form.address" placeholder="请输入详细地址" /> - </el-form-item> - <el-form-item label="状态" prop="status"> - <el-switch v-model="form.status"/> - </el-form-item> - <el-form-item label="备注" prop="remark"> - <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /> - </el-form-item> - <el-form-item></el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> -</template> -<style scoped lang="scss"> -</style> \ No newline at end of file diff --git a/src/views/facility/collector/index.vue b/src/views/facility/collector/index.vue deleted file mode 100644 index 0e70c9b..0000000 --- a/src/views/facility/collector/index.vue +++ /dev/null @@ -1,263 +0,0 @@ -<!-- - * @Author: elkers - * @Date: 2024-08-06 16:17:39 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-14 16:08:28 - * @FilePath: \water-qinghe-web\src\views\waterMeter\collector\index.vue - * @Description: 采集器 ---> - -<script setup> -import collectorApi from "@/api/facility/collector"; -import { nameReg ,phoneReg } from "@/utils/regular"; -import setPostParams from "@/utils/searchParams.js"; - -const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:searchParams.value.deviceName}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const pageParam = ref({ - total:0, - limit:0, - page:1, -}) -const tableData = ref([]); -const inpTip= '请输入',selTip = '请选择'; -let tableHeader = ref({ - deviceName: '采集器名称', - parentId: '父级ID', - installAddId:'安装地点', - channelsNum:'通道数', - - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await collectorApi().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - /** - * 表单相关 - */ -const formLabel = ({ - deviceName: '采集器名称', - parentId: '父级ID', - installAddId:'安装地点', - channelsNum:'通道数', - -}) - const rules = ref({ - deviceName: [{ required: true, message: `${inpTip+formLabel.deviceName}`, trigger: "blur" } - - ], - parentId: [{ required: true, message: `${inpTip+formLabel.parentId}`, trigger: "blur" }], - installAddId: [ - { required: true, message: `${inpTip+formLabel.installAddId}`, trigger: "blur" }, - { pattern: nameReg, message: '请输入真实姓名!', trigger: 'blur' }, - ], - channelsNum: [ - { required: true, message: `${inpTip+formLabel.channelsNum}`, trigger: "blur" }, - { pattern: phoneReg, message: '电话号码不正确!', trigger: 'blur' }, - ], -}); -const form = ref({}); -const searchParams = ref({ - keywords: '', -}); - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - // form.value = Object.assign({},row) - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.id = row.id - open.value = true; - title.value = "修改"; - } - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.installAddId + '"的数据项?').then(function() { - return collectorApi().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => {}); -} - - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -//上传文件,添加图片地址信息 -const uploadData = (data) => { - form.value.headImg = data.newFileView -} - /** 提交按钮 */ - function submitForm() { - proxy.$refs["supplierRef"].validate(valid => { - if (valid) { - form.value.channelsNum = Number(form.value.channelsNum) - if (form.value.id != undefined) { - collectorApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - collectorApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - deviceName: '', - parentId: '', - installAddId:'', - channelsNum:'' - }; - proxy.resetForm("supplierRef"); - } - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="searchParams" ref="queryRef" :inline="true"> - <el-form-item label="" prop=""> - <el-input - v-model="searchParams.deviceName" - placeholder="请输入搜索信息" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key.toString() == 'headImg'"> - <img :src="scope.row.headImg" class="table-headImg"/> - </div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" v-has="['update',route]" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" v-has="['delete',route]" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加/修改表单 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="supplierRef" :model="form" :rules="rules"> - <el-form-item :label="formLabel.deviceName" prop="deviceName"> - <el-input v-model="form.deviceName" :placeholder="inpTip+formLabel.deviceName"/> - </el-form-item> - <el-form-item :label="formLabel.parentId" prop="parentId"> - <el-input v-model="form.parentId" :placeholder="inpTip+formLabel.parentId" /> - </el-form-item> - <el-form-item :label="formLabel.installAddId" prop="installAddId"> - <el-input v-model="form.installAddId" :placeholder="inpTip+formLabel.installAddId" /> - </el-form-item> - <el-form-item :label="formLabel.channelsNum" prop="channelsNum"> - <el-input v-model="form.channelsNum" :placeholder="inpTip+formLabel.channelsNum" /> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> - </template> - - <style lang="scss" scoped> - -</style> - \ No newline at end of file diff --git a/src/views/facility/facilityList/index.vue b/src/views/facility/facilityList/index.vue index 7f7ab47..a35c9be 100644 --- a/src/views/facility/facilityList/index.vue +++ b/src/views/facility/facilityList/index.vue @@ -1,10 +1,10 @@ <script setup> import facilityApi from "@/api/facility/index"; import pointApi from "@/api/facility/point"; -import supplierApi from "@/api/waterMeterApi/supplier.js"; +import supplierApi from "@/api/facility/supplier.js"; import facilityTypeApi from "@/api/facility/facilityType.js"; import commonParameters from "@/api/configuration/commonParameters/index.js"; -import waterFacilityParameter from "@/api/configuration/facilityParameter/index.js"; +import waterFacilityParameter from "@/api/facility/parameter.js"; import {PREURL} from '@/config/index' import setPostParams from "@/utils/searchParams.js"; const route = useRoute(); @@ -141,6 +141,7 @@ async function handleAdd() { reset(); open.value = true; + isDetail.value = false; title.value = "新增"; console.log('form',form.value) } @@ -156,6 +157,7 @@ }); form.value.id = row.id open.value = true; + isDetail.value = true; title.value = "修改"; } @@ -179,6 +181,7 @@ const openParamForm = ref(false) const open = ref(false); const title = ref(""); +const isDetail = ref(false); const multipleSelection = ref([]) let tableParamHeader = ref({ name: '参数名称', diff --git a/src/views/facility/facilityParameter/index.vue b/src/views/facility/facilityParameter/index.vue deleted file mode 100644 index f737600..0000000 --- a/src/views/facility/facilityParameter/index.vue +++ /dev/null @@ -1,215 +0,0 @@ -<template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入设备编号" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - </el-table-column> - - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-row> - <el-col :span="12"> - <el-form-item label="参数名称" prop="name"> - <el-input v-model="form.name" placeholder="请输入参数名称" /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="参数标识" prop="mark"> - <el-input v-model="form.mark" placeholder="请输入参数标识" /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="参数单位" prop="unit"> - <el-input v-model="form.unit" placeholder="请输入参数单位" /> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> - </template> - - <script setup name="Menu"> - import waterFacilityParameter from "@/api/configuration/facilityParameter/index.js"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name,page:1}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ - -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - facilityName:'设备名称', - facilityCode: '设备编号', - columnsCode: '参数编码', - columnsShow: '参数名称', - columnsUnits: '参数单位', - createTimeView: '创建日期', - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await waterFacilityParameter().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增设备参数"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - form.value = Object.assign({},row) - form.value.waterMeterDelinquentClose = form.value.waterMeterDelinquentClose.toString() - open.value = true; - title.value = "修改设备参数"; - } - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.waterBillType + '"的数据项?').then(function() { - return companySetting().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => {}); -} - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -const data = reactive({ -form:{}, -queryParams: { - name: undefined, -}, -rules: { - name: [{ required: true, message: "请输入参数名称", trigger: "blur" }], - mark: [{ required: true, message: "请输入参数标识", trigger: "blur" }], - unit: [{ required: true, message: "请输入参数单位", trigger: "blur" }], -}, -}); -const { queryParams, form, rules } = toRefs(data); - -//动态显示 - - /** 提交按钮 */ - function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - if (form.value.id != undefined) { - commonParameters().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - commonParameters().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - waterBillType: '', - waterMonthBillCreateDay: '', - waterMonthBillDay:undefined, - waterPayDays:undefined, - waterMeterDelinquentClose:undefined, - }; - proxy.resetForm("formRef"); - } - getList(); - </script> - \ No newline at end of file diff --git a/src/views/facility/facilityType/index.vue b/src/views/facility/facilityType/index.vue index 3131f0d..c48047f 100644 --- a/src/views/facility/facilityType/index.vue +++ b/src/views/facility/facilityType/index.vue @@ -7,109 +7,113 @@ * @Description: 设备类型 --> <script setup> -import facilityTypeApi from "@/api/facility/facilityType"; +import facilityTypeApi from "@/api/facility/facilityType"; import setPostParams from "@/utils/searchParams.js"; const route = useRoute(); -const { proxy } = getCurrentInstance(); +const {proxy} = getCurrentInstance(); /** * 搜索相关 */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:searchParams.value.name}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } +/** 搜索按钮操作 */ +function handleQuery() { + getList({keywords: searchParams.value.name}) +} - /** - * Table表格权限数据列表相关 - */ +/** 重置按钮操作 */ +function resetQuery() { + proxy.resetForm("queryRef"); + handleQuery(); +} + +/** + * Table表格权限数据列表相关 + */ const pageParam = ref({ - total:0, - limit:0, - page:1, + total: 0, + limit: 0, + page: 1, }) const tableData = ref([]); -const inpTip= '请输入',selTip = '请选择'; -let tableHeader = ref({ - name: '类型名称', - code: '类型编号', - facilityType: '设备类型', - createTimeView:'创建时间' - }) - /** 获取权限列表 */ - async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await facilityTypeApi().search(postParam).then((res) =>{ +const inpTip = '请输入', selTip = '请选择'; +let tableHeader = ref({ + name: '类型名称', + code: '类型编号', + facilityType: '设备类型', + createTimeView: '创建时间' +}) + +/** 获取权限列表 */ +async function getList(val) { + loading.value = true; + let postParam = setPostParams(val) + await facilityTypeApi().search(postParam).then((res) => { tableData.value = res.data.list pageParam.value.total = res.data.total pageParam.value.limit = res.data.limit pageParam.value.page = res.data.page }) loading.value = false; - } - /** - * 表单相关 - */ -const formLabel = ({ - name: '类型名称', - code: '类型编号', - createTimeView:'创建时间' +} + +/** + * 表单相关 + */ +const formLabel = ({ + name: '类型名称', + code: '类型编号', + createTimeView: '创建时间' }) - const rules = ref({ - name: [{ required: true, message: `${inpTip+formLabel.name}`, trigger: "blur" } - +const rules = ref({ + name: [{required: true, message: `${inpTip + formLabel.name}`, trigger: "blur"} + ], - code: [{ required: true, message: `${inpTip+formLabel.code}`, trigger: "blur" }], + code: [{required: true, message: `${inpTip + formLabel.code}`, trigger: "blur"}], }); const form = ref({}); const searchParams = ref({ keywords: '', }); - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - // form.value = Object.assign({},row) - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.id = row.id - open.value = true; - title.value = "修改"; - } + +/** 新增按钮操作 */ +async function handleAdd() { + reset(); + open.value = true; + title.value = "新增"; +} + +/** 修改按钮操作 */ +async function handleUpdate(row) { + reset(); + // form.value = Object.assign({},row) + Object.keys(row).forEach(key => { + if (form.value.hasOwnProperty(key)) { + form.value[key] = row[key]; + } + }); + form.value.id = row.id + open.value = true; + title.value = "修改"; +} /** 删除按钮操作 */ function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.contact + '"的数据项?').then(function() { - return facilityTypeApi().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => {}); + proxy.$modal.confirm('是否确认删除名称为"' + row.contact + '"的数据项?').then(function () { + return facilityTypeApi().remove(row.id); + }).then(() => { + getList(); + proxy.$modal.msgSuccess("删除成功"); + }).catch(() => { + }); } - - /** - * 新增/修改弹窗Form表单相关 - */ + +/** + * 新增/修改弹窗Form表单相关 + */ const open = ref(false); const loading = ref(false); const title = ref(""); @@ -118,128 +122,136 @@ const uploadData = (data) => { form.value.headImg = data.newFileView } - /** 提交按钮 */ - function submitForm() { - proxy.$refs["facilityTypeRef"].validate(valid => { - if (valid) { - form.value.contactPhone = Number(form.value.contactPhone) - if (form.value.id != undefined) { - facilityTypeApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - facilityTypeApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { +/** 提交按钮 */ +function submitForm() { + proxy.$refs["facilityTypeRef"].validate(valid => { + if (valid) { + form.value.contactPhone = Number(form.value.contactPhone) + if (form.value.id != undefined) { + facilityTypeApi().modify(form.value).then(res => { + proxy.$modal.msgSuccess("修改成功"); + open.value = false; + getList(); + }).catch(() => { + open.value = false; + proxy.$modal.msgError("修改失败"); + }); + } else { + facilityTypeApi().create(form.value).then(res => { + proxy.$modal.msgSuccess("新增成功"); + open.value = false; + getList(); + }).catch(() => { + open.value = false; + proxy.$modal.msgError("新增失败"); + }); + ; + } + } + }); +} + +/** 取消按钮 */ +function cancel() { + open.value = false; + reset(); +} + +/** 表单重置 */ +function reset() { + form.value = { name: '', code: '' - }; - proxy.resetForm("facilityTypeRef"); - } - getList(); - </script> - <template> + }; + proxy.resetForm("facilityTypeRef"); +} + +getList(); +</script> +<template> <div class="app-container"> - <el-form :model="searchParams" ref="queryRef" :inline="true"> - <el-form-item label="" prop=""> - <el-input - v-model="searchParams.name" - placeholder="请输入搜索信息" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key.toString() == 'headImg'"> - <img :src="scope.row.headImg" class="table-headImg"/> - </div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" v-has="['update',route]" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" v-has="['delete',route]" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> + <el-form :model="searchParams" ref="queryRef" :inline="true"> + <el-form-item label="" prop=""> + <el-input + v-model="searchParams.name" + placeholder="请输入搜索信息" + clearable + style="width: 200px" + @keyup.enter="handleQuery" + /> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> + <el-button icon="Refresh" @click="resetQuery">重置</el-button> + </el-form-item> + </el-form> + + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="primary" + plain + icon="Plus" + @click="handleAdd" + >新增 + </el-button> + </el-col> + </el-row> + <!--表格及分页--> + <el-table v-loading="loading" :data="tableData"> + <el-table-column + v-for="(item, key, index) of tableHeader" + :prop="key.toString()" + :label="item" + :key="index" + align="center" + > + <template #default="scope"> + <div v-if="key.toString() == 'headImg'"> + <img :src="scope.row.headImg" class="table-headImg"/> + </div> + </template> + </el-table-column> + <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-button link type="primary" icon="Edit" v-has="['update',route]" + @click="handleUpdate(scope.row)">修改 + </el-button> + <el-button link type="primary" icon="Delete" v-has="['delete',route]" + @click="handleDelete(scope.row)">删除 + </el-button> + </template> + </el-table-column> </el-table> <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" + :total="pageParam.total" + v-model:page="pageParam.page" + v-model:limit="pageParam.limit" + :page-sizes="[10,20,30]" + @pagination="getList" /> - <!-- 添加/修改表单 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="facilityTypeRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item :label="formLabel.name" prop="name"> - <el-input v-model="form.name" :placeholder="inpTip+formLabel.name"/> - </el-form-item> - <el-form-item :label="formLabel.code" prop="code"> - <el-input v-model="form.code" :placeholder="inpTip+formLabel.code" /> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> + <!-- 添加/修改表单 --> + <el-dialog :title="title" v-model="open" append-to-body center> + <el-form class="form-box" ref="facilityTypeRef" :model="form" :rules="rules" label-width='auto'> + <el-form-item :label="formLabel.name" prop="name"> + <el-input v-model="form.name" :placeholder="inpTip+formLabel.name"/> + </el-form-item> + <el-form-item :label="formLabel.code" prop="code"> + <el-input v-model="form.code" :placeholder="inpTip+formLabel.code"/> + </el-form-item> + </el-form> + <template #footer> + <div class="dialog-footer"> + <el-button type="primary" @click="submitForm">确 定</el-button> + <el-button @click="cancel">取 消</el-button> + </div> + </template> + </el-dialog> </div> - </template> - - <style lang="scss" scoped> +</template> + +<style lang="scss" scoped> </style> \ No newline at end of file diff --git a/src/views/facility/handleRecord/index.vue b/src/views/facility/handleRecord/index.vue deleted file mode 100644 index ec21fba..0000000 --- a/src/views/facility/handleRecord/index.vue +++ /dev/null @@ -1,108 +0,0 @@ -<!-- - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-09-30 09:03:03 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-09-30 09:52:38 - * @FilePath: \water-qinghe-web\src\views\facility\handleRecord\index.vue - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE ---> - <script setup> - import recordApi from "@/api/facility/record.js"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:searchParams.value.keywords}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - searchParams.value.keywords = '' - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const pageParam = ref({ - total:0, - limit:0, - page:1, -}) -const tableData = ref([]); -let tableHeader = ref({ - facilityName: '设备名称', - comment: '操作内容', - operateIp: 'IP地址', - createUserName:'操作人员', - createTimeView:'创建时间' - }) - /** 获取列表 */ - const loading = ref(false); - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await recordApi().handleRecord(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } -const searchParams = ref({ - keywords: '', -}) - getList(); - </script> - - <template> - <div class="app-container"> - <el-form :model="searchParams" ref="queryRef" :inline="true"> - <el-form-item label="" prop=""> - <el-input - v-model="searchParams.keywords" - placeholder="请输入搜索信息" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - - </div> - </template> - - <style lang="scss" scoped> - -</style> - \ No newline at end of file diff --git a/src/views/facility/supplier/index.vue b/src/views/facility/supplier/index.vue deleted file mode 100644 index 848b71b..0000000 --- a/src/views/facility/supplier/index.vue +++ /dev/null @@ -1,275 +0,0 @@ -<!-- - * @Author: elkers - * @Date: 2024-08-06 16:17:39 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-14 09:34:55 - * @FilePath: \water-qinghe-web\src\views\waterMeter\supplier\index.vue - * @Description: 供应商 ---> - - <script setup> - import supplierApi from "@/api/waterMeterApi/supplier"; -import { nameReg ,phoneReg } from "@/utils/regular"; - import setPostParams from "@/utils/searchParams.js"; - - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:searchParams.value.name}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const searchParam = { - limit:10, - page:1 -} -const pageParam = ref({ - total:0, - limit:0, - page:1, -}) -const tableData = ref([]); -const inpTip= '请输入',selTip = '请选择'; -let tableHeader = ref({ - name: '供应商名称', - address: '供应商地址', - contact:'联系人', - contactPhone:'联系人电话', - createTimeView:'创建时间' - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await supplierApi().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - /** - * 表单相关 - */ -const formLabel = ({ - name: '供应商名称', - address: '供应商地址', - contact:'联系人', - contactPhone:'联系人电话', - createTimeView:'创建时间' -}) - const rules = ref({ - name: [{ required: true, message: `${inpTip+formLabel.name}`, trigger: "blur" } - - ], - address: [{ required: true, message: `${inpTip+formLabel.address}`, trigger: "blur" }], - contact: [ - { required: true, message: `${inpTip+formLabel.contact}`, trigger: "blur" }, - { pattern: nameReg, message: '请输入真实姓名!', trigger: 'blur' }, - ], - contactPhone: [ - { required: true, message: `${inpTip+formLabel.contactPhone}`, trigger: "blur" }, - { pattern: phoneReg, message: '电话号码不正确!', trigger: 'blur' }, - ], -}); -const form = ref({}); -const searchParams = ref({ - keywords: '', -}); - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - // form.value = Object.assign({},row) - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.id = row.id - open.value = true; - title.value = "修改"; - } - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.contact + '"的数据项?').then(function() { - return supplierApi().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => {}); -} - - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -//上传文件,添加图片地址信息 -const uploadData = (data) => { - form.value.headImg = data.newFileView -} - /** 提交按钮 */ - function submitForm() { - proxy.$refs["supplierRef"].validate(valid => { - if (valid) { - form.value.contactPhone = Number(form.value.contactPhone) - if (form.value.id != undefined) { - supplierApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - supplierApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - name: '', - address: '', - contact:'', - contactPhone:'' - }; - proxy.resetForm("supplierRef"); - } - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="searchParams" ref="queryRef" :inline="true"> - <el-form-item label="" prop=""> - <el-input - v-model="searchParams.name" - placeholder="请输入搜索信息" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key.toString() == 'headImg'"> - <img :src="scope.row.headImg" class="table-headImg"/> - </div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" v-has="['update',route]" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" v-has="['delete',route]" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加/修改表单 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="supplierRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item :label="formLabel.name" prop="name"> - <el-input v-model="form.name" :placeholder="inpTip+formLabel.name"/> - </el-form-item> - <el-form-item :label="formLabel.address" prop="address"> - <el-input v-model="form.address" :placeholder="inpTip+formLabel.address" /> - </el-form-item> - <el-form-item :label="formLabel.contact" prop="contact"> - <el-input v-model="form.contact" :placeholder="inpTip+formLabel.contact" /> - </el-form-item> - <el-form-item :label="formLabel.contactPhone" prop="contactPhone"> - <el-input v-model="form.contactPhone" :placeholder="inpTip+formLabel.contactPhone" /> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> - </template> - - <style lang="scss" scoped> - .el-form{ - width: 100%; - display: flex; - justify-content: space-evenly; - flex-wrap: wrap; - .el-form-item{ - width: 45%; - } - } -</style> - \ No newline at end of file diff --git a/src/views/facility/valveDevice/index.vue b/src/views/facility/valveDevice/index.vue deleted file mode 100644 index cc46c63..0000000 --- a/src/views/facility/valveDevice/index.vue +++ /dev/null @@ -1,445 +0,0 @@ -<!-- - * @Author: hqs elkers@163.com - * @Date: 2024-08-06 14:47:41 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-10 08:52:28 - * @FilePath: \water-qinghe-web\src\views\facilit\facilityList\index.vue - * @Description: 阀门列表 ---> -<script setup> -import valveDeviceApi from "@/api/facility/valveDevice.js"; -import { areaApi} from "@/api/area/index"; -import supplierApi from "@/api/waterMeterApi/supplier.js"; -import facilityTypeApi from "@/api/facility/facilityType.js"; -import commonParameters from "@/api/configuration/commonParameters/index.js"; -import waterFacilityParameter from "@/api/configuration/facilityParameter/index.js"; -import {PREURL} from '@/config/index' -import setPostParams from "@/utils/searchParams.js"; -const route = useRoute(); -const preUrl = ref(PREURL); -const {proxy} = getCurrentInstance(); - -/** - * 搜索相关 - */ -/** 搜索按钮操作 */ -function handleQuery() { - getList({keywords: searchParams.value.sn}) -} - -/** 重置按钮操作 */ -function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); -} - -/** - * Table表格权限数据列表相关 - */ -const pageParam = ref({ - total: 0, - limit: 0, - page: 1,q -}) -const tableData = ref([]); -const inpTip = '请输入', selTip = '请选择'; -let tableHeader = ref({ - sn: '阀门编号', - name: '阀门名称', - address: '所在位置', - electricityAmount:'电量', - signalStrength:'信号强度', - comment:'备注信息', - createTimeView: '创建时间' -}) - -/** 获取权限列表 */ -async function getList(val) { - let postParam = setPostParams(val) - await valveDeviceApi().search(postParam).then((res) => { - tableData.value = res.data.list - tableData.value.forEach((item,index) =>{ - item.num = index + 1 - }) - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) -} - -/** - * 表单相关 - */ -const formLabel = ({ - sn: '阀门编号', - name: '阀门名称', - sort:"排序", - address: '所在位置', - longitude: '经度', - latitude: '纬度', - comment:'备注信息', - createTimeView: '创建时间' -}) -const rules = ref({ - sn: [{required: true, message: `${inpTip + formLabel.sn}`, trigger: "blur"}], - name: [{required: true, message: `${inpTip + formLabel.name}`, trigger: "blur"}], - facilityType: [{required: true, message: `${inpTip + formLabel.facilityTypeName}`, trigger: "blur"}], - address: [{required: true, message: `${inpTip + formLabel.address}`, trigger: "blur"}], - supplier: [{required: true, message: `${inpTip + formLabel.supplier}`, trigger: "blur"}], -}); -const form = ref({ - sn: '', - name: '', - longitude: '', - latitude: '', - sort:1, - address: '', - areaName:'', - comment:'' -}); -const searchParams = ref({ - keywords: '', -}); -//查询监控点 -const areaList = ref(); -const getArea = async () => { - await areaApi().search({limit: 100, page: 1}).then((res) => { - areaList.value = res.data.list - }) -} -getArea() -//查询供应商 -const supplierList = ref(); -const getSupplier = async () => { - await supplierApi().search({limit: 100, page: 1}).then((res) => { - console.log("供应商" + res.data.list); - supplierList.value = res.data.list - }) -} -getSupplier() -//查询阀门类型 -const facilityTypeList = ref(); -const getFacilityTypeList = async () => { - await facilityTypeApi().search({limit: 10000, page: 1}).then((res) => { - facilityTypeList.value = res.data.list - }) -} -getFacilityTypeList() -//获取参数列表数据 -//阀门参数table -const tableParamData = ref([]); -const getParamList = async() => { - await commonParameters().search({limit:10000,page: 1}).then((res)=>{ - tableParamData.value = res.data.list; - }) -} -//获取已绑定参数数据 -const getSelectParamList = async(val) => { - await waterFacilityParameter().getParam(val).then((res)=>{ - const data = res.data - console.log("参数列表",data) - if(data.length > 0){ - data.forEach( item =>{ - tableParamData.value.forEach((tableItem)=>{ - if(item.columnsCode == tableItem.mark){ - tableRef.value.toggleRowSelection(tableItem, undefined) - } - }) - }) - } - }) -} -/** 新增按钮操作 */ -async function handleAdd() { - reset(); - open.value = true; - title.value = "新增"; - console.log('form',form.value) -} - -/** 修改按钮操作 */ -async function handleUpdate(row) { - reset(); - // form.value = Object.assign({},row) - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.id = row.id - open.value = true; - title.value = "修改"; -} - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.contact + '"的数据项?').then(function () { - return valveDeviceApi().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => { - }); -} - - -/** - * 新增/修改弹窗Form表单相关 - */ -//阀门参数弹窗 -const tableRef = ref() -const openParamForm = ref(false) -const open = ref(false); -const title = ref(""); -const multipleSelection = ref([]) -let tableParamHeader = ref({ - name: '参数名称', - mark:'参数标识', - unit: '参数单位', -}) -/** - * 绑定相关 - */ -//绑定数据 -const facilityData = ref({ - facilityId:'', - parameterList:[] -}) -//已选择阀门参数 -const handleSelectionParams = (val) =>{ - multipleSelection.value = val - console.log('esele',val); -} -/** - * 阀门参数操作相关 - */ - -//提交绑定 -const handleSubmit = async() =>{ - multipleSelection.value.forEach((item) =>{ - facilityData.value.parameterList.push({ - columnsCode:item.mark, - columnsShow:item.name, - columnsUnits:item.unit, - }) - }) - let res = await waterFacilityParameter().create(facilityData.value) - if(res.code == 200){ - - proxy.$modal.msgSuccess('绑定成功!') - facilityData.value.parameterList = [] - openParamForm.value = false - tableRef.value.clearSelection() - - }else{ - proxy.$modal.msgError('绑定失败!') - openParamForm.value = false - tableRef.value.clearSelection() - } -} -//上传文件,添加图片地址信息 -const uploadData = (data) => { - form.value.facilityUrl = data.toString(); -} - -/** 提交按钮 */ -function submitForm() { - proxy.$refs["facilityTypeRef"].validate(valid => { - if (valid) { - // form.value.contactPhone = Number(form.value.contactPhone) - - if (form.value.id != undefined) { - valveDeviceApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() => { - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - valveDeviceApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() => { - open.value = false; - proxy.$modal.msgError("新增失败"); - }); - ; - } - } - }); -} - -/** 取消按钮 */ -function cancel() { - open.value = false; - openParamForm.value = false; - reset(); -} -/** 绑定按钮操作 */ -const handleband = async(row) =>{ - facilityData.value.facilityId = row.id - await getParamList() - getSelectParamList(row.id) - openParamForm.value = true -} -/** 表单重置 */ -function reset() { - form.value = { - sn: '', - name: '', - facilityUrl: '', - }; - proxy.resetForm("facilityTypeRef"); -} - -getList(); -</script> -<template> - <div class="app-container"> - <el-form :model="searchParams" ref="queryRef" :inline="true"> - <el-form-item label="" prop=""> - <el-input - v-model="searchParams.sn" - placeholder="请输入搜索信息" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增 - </el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table :data="tableData"> - <el-table-column - label="序号" - align="center" - prop="num" - fixed="left" - > - </el-table-column> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key.toString() === 'facilityUrl'" style="height: 50px;margin: 0 auto"> - <img :src="preUrl + scope.row.facilityUrl" class="table-headImg"/> - </div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <!-- <el-button link type="primary" icon="Edit" @click="handleband(scope.row)">参数绑定</el-button> --> - <el-button link type="primary" icon="Edit" v-has="['update',route]" - @click="handleUpdate(scope.row)">修改 - </el-button> - <el-button link type="primary" icon="Delete" v-has="['delete',route]" - @click="handleDelete(scope.row)">删除 - </el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加/修改表单 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="facilityTypeRef" :model="form" :rules="rules" label-width='auto' > - <el-form-item :label="formLabel.sn" prop="sn"> - <el-input v-model="form.sn" :placeholder="inpTip+formLabel.sn"/> - </el-form-item> - <el-form-item :label="formLabel.name" prop="name"> - <el-input v-model="form.name" :placeholder="inpTip+formLabel.name"/> - </el-form-item> - <el-form-item label="安装区域" prop="address"> - <el-select v-model="form.address" :placeholder="inpTip+formLabel.address"> - <el-option - v-for="(item,index) in areaList" - :label="item.areaName" - :value="item.areaName" - :key="index" - ></el-option> - </el-select> - </el-form-item> - <!-- <el-form-item :label="formLabel.longitude" prop="longitude"> - <el-input v-model="form.longitude" :placeholder="inpTip+formLabel.longitude"/> - </el-form-item> - <el-form-item :label="formLabel.latitude" prop="latitude"> - <el-input v-model="form.latitude" :placeholder="inpTip+formLabel.latitude"/> - </el-form-item> --> - <el-form-item :label="formLabel.sort" > - <el-input v-model="form.sort" :placeholder="inpTip+formLabel.sort"/> - </el-form-item> - - - - - <el-form-item :label="formLabel.comment" prop="comment"> - <el-input v-model="form.comment" :placeholder="inpTip+formLabel.comment" /> - </el-form-item> - <el-form-item><br></el-form-item> - - <el-form-item></el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - <!-- 阀门参数弹窗 --> - <el-dialog title="阀门参数" v-model="openParamForm" width="50vw" center align-center append-to-body> - <!--表格--> - <el-table ref='tableRef' :data="tableParamData" height="75vh" @selection-change="handleSelectionParams" > - <el-table-column type="selection" width="55" align ="center" /> - <el-table-column - v-for="(item, key, index) of tableParamHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - ></el-table-column> - </el-table> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="handleSubmit">确认绑定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> -</template> - -<style lang="scss" scoped> -.table-headImg{ - max-width: 100px; - height: 50px; -} -</style> - diff --git a/src/views/facilityExamine/facilityExaminePlan/index.vue b/src/views/facilityExamine/facilityExaminePlan/index.vue deleted file mode 100644 index 69fa660..0000000 --- a/src/views/facilityExamine/facilityExaminePlan/index.vue +++ /dev/null @@ -1,367 +0,0 @@ - -<script setup name="Post"> -import { facilityExaminePlanApi } from "@/api/examine/plan/index.js"; -import setPostParams from "@/utils/searchParams.js"; -import user from "@/api/system/user"; -import {sysDictData} from "../../../api/system/dict.js"; -import facilityApi from "../../../api/facility/index.js"; -const { proxy } = getCurrentInstance(); - -/** - * 搜索 - */ -const queryParams = ref({ - name:'' -}) -/** 搜索操作 */ -function handleQuery() { - getList({keywords:queryParams.value.name}) -} - -/** - * 重置 - */ -const resetQuery = () =>{ - queryParams.value.name = '' - proxy.resetForm("queryRef"); - getList() -} -/** 列表 */ -const tableData = ref([]); //初始化列表 -const open = ref(false); -const loading = ref(true); //加载状态 -const total = ref(0); -const title = ref(""); - -/** 表头 */ -let tableHeader = ref({ - planName: '计划名称', - planTypeView: '计划类型', - periodTypeView: '周期', - facilityNames:'巡检设备列表', - inspectUserName: '巡检人员', - content:'巡检内容', - beginTime: '计划开始日期', - endTime: '计划结束日期', - createTimeView:'创建时间', - - }) -const pageParam = ref({ - total:0, - limit:10, - page:1, -}) -/** 获取列表 */ -const getList = async(val) => { - loading.value = true; - let postParam = setPostParams(val) - let res = await facilityExaminePlanApi().search(postParam) - loading.value = false; - if(res.code == 200) { - tableData.value = res.data.list; - //枚举转换 - tableData.value.forEach((item)=>{ - item.stateName = item.state == 1 ? '启动' : '关闭' - }) - pageParam.value.total = res.data.total; - pageParam.value.page = res.data.page; - pageParam.value.limit = res.data.limit; - } -} -/** - * 详情相关 - * - * */ -let openForm2 = ref(false) -let detailForm = ref({}) -let detailTable = ref([]) - -/** 新增按钮操作 */ -function handleAdd(){ - reset(); - open.value = true; - title.value = "添加计划"; -} -/** 修改按钮操作 */ -function handleUpdate(row) { - reset(); - Object.keys(form.value).forEach((key)=>{ - if(Object.keys(row).includes(key)){ - form.value[key] = row[key] - } - }) - //数据类型及格式转换 - dateRange.value.push(form.value.beginTime) - dateRange.value.push(form.value.endTime) - form.value.periodType = form.value.periodType.toString(); - form.value.planType = form.value.planType.toString(); - form.value.facilityIds = form.value.facilityIds.split(','); - form.value.id = row.id - open.value = true; - title.value = "修改计划"; -} -/** - * 表单相关 - */ -const data = reactive({ - //表单 - form: {}, - //表单验证 - rules: { - planName: [{ required: true, message: "计划名称不能为空", trigger: "blur" }], - inspectUser: [{ required: true, message: "巡检人员不能为空", trigger: "blur" }] - }, -}); - -const { form, rules} = toRefs(data); -/** - * 下拉框数据 - */ -//获取枚举类型 -const planTypeList = ref() -const periodTypeList = ref() -const getType = async(val) =>{ - let res = await sysDictData().searchType(val) - if (res.code == 200) { - return res.data - } -} - -//巡检人员 -const userNameList = ref() -const getAccount = async() =>{ -// 获取维修账号列表信息 - let res = await user().search({limit: 10000, status: 1,page:1}) - if (res.code == 200) { - userNameList.value = res.data.list - } -} -const checkedUser = (val) =>{ - userNameList.value.forEach( item =>{ - if(item.id == val){ - form.value.inspectUserName = item.nickName - } - }) -} -//日期 -const dateRange = ref([]); -async function changeDate(e){ - form.value.beginTime = e[0] + ' 00:00:00' - form.value.endTime = e[1] + ' 23:59:59' -} -//巡检设备 -const facilityList = ref() -const getFacility = async() =>{ - let res = await facilityApi().search({limit: 10000, status: 1,page:1}) - if (res.code == 200) { - facilityList.value = res.data.list - } -} - -/** 提交表单按钮 */ -function submitForm() { - proxy.$refs["postRef"].validate(async valid => { - if (valid) { - form.value.facilityIds = form.value.facilityIds.join() - if(!form.value.id){ - let res = await facilityExaminePlanApi().create(form.value) - if(res.code == 200) { - proxy.$modal.msgSuccess("添加成功"); - open.value = false - getList() - reset() - } - }else{ - let res = await facilityExaminePlanApi().modify(form.value) - if(res.code == 200) { - proxy.$modal.msgSuccess("修改成功"); - open.value = false - getList() - reset() - } - } - } - }); -} -/** 删除按钮操作 */ -// function handleDelete(row) { -// proxy.$modal.confirm('是否确认删除名称为"' + row.planName + '"的计划?') -// .then(async() => { -// let res = await facilityExaminePlanApi().remove(row.id) -// if(res.code == 200) { -// proxy.$modal.msgSuccess("删除成功"); -// open.value = false -// getList() -// } -// }).catch(() => {}); -// } -/** 关闭弹窗 */ -function cancel() { - open.value = false; - openForm2.value = false; - reset(); -} -/** 表单重置 */ -const reset = () => { - form.value = { - planName: '', - planType: '', - periodType: '', - facilityIds:[], - beginTime: '', - endTime: '', - inspectUser: '', - inspectUserName: '', - content: '', - remark: '', - } - proxy.resetForm("postRef"); - open.value = false - openForm2.value = false; - getList(); -} -onMounted(async () =>{ - - planTypeList.value = await getType('inspect_type'); - periodTypeList.value = await getType('period_type'); - await getAccount() - await getFacility() - getList(); -}) - -</script> -<template> - <div class="app-container"> - <!--搜索框--> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item label="" prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入计划名称" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - <!--操作按钮列--> - <el-row :gutter="10"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - ></el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> -<!-- <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button>--> - </template> - </el-table-column> - </el-table> - <pagination - v-show="pageParam.total > 0" - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - @pagination="getList" - /> - <!-- 添加表单弹窗 --> - <el-dialog :title="title" v-model="open" center> - <el-form class="form-box" ref="postRef" :model="form" :rules="rules" label-width="90px"> - <el-form-item label="计划名称" prop="planName" > - <el-input v-model="form.planName" placeholder="请输入设备名称" /> - </el-form-item> - <el-form-item label="计划类型"> - <el-select v-model="form.planType" placeholder="请选择所计划类型"> - <el-option - v-for="(item,index) in planTypeList" - :key="index" - :label="item.dictLabel" - :title="item.dictLabel" - :value="item.dictValue" - /> - </el-select> - </el-form-item> - <el-form-item class="checkbox-item" label="巡检设备" prop="facilityIds"> - <el-checkbox-group v-model="form.facilityIds"> - <el-checkbox v-for="(item,index) in facilityList" :key="index" :label="item.facilityName" :value="item.id" size ="large" /> - </el-checkbox-group> - </el-form-item> - <el-form-item label="计划周期"> - <el-select v-model="form.periodType" placeholder="请选择所计划类型"> - <el-option - v-for="(item,index) in periodTypeList" - :key="index" - :label="item.dictLabel" - :title="item.dictLabel" - :value="item.dictValue" - /> - </el-select> - </el-form-item> - <el-form-item label="有效期"> - <el-date-picker - v-model="dateRange" - value-format="YYYY-MM-DD" - type="daterange" - start-placeholder="开始日期" - end-placeholder="结束日期" - @change="changeDate" - ></el-date-picker> - </el-form-item> - <el-form-item label="巡检人员" prop="inspectUser"> - <el-select v-model="form.inspectUser" placeholder="请选择巡检人员" @change="checkedUser"> - <el-option - v-for="(item,index) in userNameList" - :key="index" - :label="item.nickName" - :title="item.nickName" - :value="item.id" - /> - </el-select> - </el-form-item> - <el-form-item label="巡检内容" prop="content"> - <el-input v-model="form.content" type="textarea" placeholder="请输入内容" /> - </el-form-item> - <el-form-item label="备注" prop="remark"> - <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /> - </el-form-item> - <el-form-item></el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> -</template> -<style scoped lang="scss"> - .checkbox-item{ - width: 98%; - .el-checkbox-group{ - background: rgba(241, 247, 253, 0.73); - border-radius: 5px; - border: 1px solid #dcdfe6; - padding: 10px; - } - } -</style> \ No newline at end of file diff --git a/src/views/facilityExamine/facilityExamineRecord/index.vue b/src/views/facilityExamine/facilityExamineRecord/index.vue deleted file mode 100644 index ee7a8ba..0000000 --- a/src/views/facilityExamine/facilityExamineRecord/index.vue +++ /dev/null @@ -1,242 +0,0 @@ -<script setup name="Post"> -import {facilityExamineRecordApi} from "@/api/examine/record/index.js"; -import setPostParams from "@/utils/searchParams.js"; -import facilityApi from "@/api/facility/index.js"; -const {proxy} = getCurrentInstance(); -/** - * 搜索 - */ -const queryParams = ref({ - name:'' -}) -/** 搜索操作 */ -function handleQuery() { - getList({keywords:queryParams.value.name}) -} -/** 表单重置 */ -function reset() { - form.value = { - facilityCode: '', - facilityName: '', - facilityUrl: '', - }; - proxy.resetForm("postRef"); -} -/** - * 绑定相关 - */ -//绑定数据 -const facilityExamineData = ref({ - facilityExamineId:'', - -}) -//已选 -/** - * 重置 - */ -const resetQuery = () =>{ - queryParams.value.name = '' - getList() -} -/** 列表 */ -const route = useRoute(); -const tableData = ref([]); //初始化列表 -const loading = ref(true); //加载状态 -const total = ref(0); -const open = ref(false); -const form = ref({}); - -/** 表头 */ -let tableHeader = ref({ - content: '巡检内容', - inspectUrl: '巡检图片', - resultTypeView: '执行结果', - inspectUser: '巡检人员', - createTimeView: '创建时间', -}) -//分页 -const pageParam = ref({ - total:0, - limit:10, - page:1, -}) -/** 新增按钮操作 */ -async function handleAdd() { - reset(); - open.value = true; - title.value = "新增"; - console.log('form',form.value) -} - -/** 修改按钮操作 */ -async function handleUpdate(row) { - reset(); - form.value = Object.assign({},row) - open.value = true; - title.value = "修改用户分类"; -} - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.contact + '"的数据项?').then(function () { - return facilityApi().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => { - }); -} - -/** 获取列表 */ -const getList = async (val) => { - loading.value = true; - let postParam = setPostParams(val) - let res = await facilityExamineRecordApi().search(postParam) - loading.value = false; - if (res.code == 200 && res.data.list.length > 0) { - tableData.value = res.data.list; - tableData.value.forEach((item) => { - if (item.resultType == 1) { - item.resultType = '正常' - } else if (item.resultType == 2) { - item.resultType = '异常' - } - }) - pageParam.value.total = res.data.total; - pageParam.value.page = res.data.page; - pageParam.value.limit = res.data.limit; - } -} -//上传文件,添加图片地址信息 -const uploadData = (data) => { - form.value.inspectUrl = data.toString(); -} -/** 提交按钮 */ -function submitForm() { - proxy.$refs["postRef"].validate(valid => { - if (valid) { - // form.value.contactPhone = Number(form.value.contactPhone) - - if (form.value.id != undefined) { - facilityExamineRecordApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() => { - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - facilityExamineRecordApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() => { - open.value = false; - proxy.$modal.msgError("新增失败"); - }); - ; - } - } - }); -} -/** 绑定按钮操作 */ -const handleband = async(row) =>{ - facilityExamineData.value.facilityExamineId = row.id - await getParamList() - openParamForm.value = true -} -/** 取消按钮 */ -function cancel() { - open.value = false; - openParamForm.value = false; - reset(); -} -getList(); -</script> -<template> - <div class="app-container"> - <!--搜索框--> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item label="" prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入计划名称" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增 - </el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key.toString() === 'inspectUrl'"> <img :src="scope.row.inspectUrl" alt="" style="width:50px;height: 50px"></div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - v-show="pageParam.total > 0" - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - @pagination="getList" - /> - <!-- 添加表单弹窗 --> - <el-dialog :title="title" v-model="open" center> - <el-form class="form-box" ref="postRef" :model="form" :rules="rules" label-width="90px"> - <el-form-item label="巡检内容" prop="content"> - <el-input v-model="form.content" type="textarea" placeholder="请输入内容" /> - </el-form-item> - <el-form-item label="图片上传" prop="inspectUrl"> - <upload-icons @uploadData="uploadData" :imageList="form.inspectUrl" :limit="1" - :disabled='isDetail ? true : false'></upload-icons> - <span style="display: block;">(请上传1张现场图片)</span> - </el-form-item> - <el-form-item label="备注" prop="remark"> - <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /> - </el-form-item> - <el-form-item label="巡检状态" prop="resultType"> - <el-radio-group v-model="form.resultType"> - <el-radio-button value="1">正常</el-radio-button> - <el-radio-button value="2">异常</el-radio-button> - </el-radio-group> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> -</template> \ No newline at end of file diff --git a/src/views/facilityMaintain/facilityMaintainPlan/index.vue b/src/views/facilityMaintain/facilityMaintainPlan/index.vue deleted file mode 100644 index 829f835..0000000 --- a/src/views/facilityMaintain/facilityMaintainPlan/index.vue +++ /dev/null @@ -1,349 +0,0 @@ - -<script setup name="Post"> -import { facilityMaintainPlanApi } from "@/api/maintain/plan/index.js"; -import {sysDictData} from "../../../api/system/dict.js"; -import facilityApi from "../../../api/facility/index.js"; -import user from "@/api/system/user"; -const { proxy } = getCurrentInstance(); -/** 列表 */ -const tableData = ref([]); //初始化列表 -const open = ref(false); -const loading = ref(true); //加载状态 -const total = ref(0); -const title = ref(""); -/** 表头 */ -let tableHeader = ref({ - maintainCode:'计划编号', - maintainName: '计划名称', - maintainTypeView: '维护类型', - periodTypeView: '维护周期', - facilityName:'巡检设备列表', - inspectUserName: '巡检人员', - content:'巡检内容', - beginTime: '计划开始日期', - endTime: '计划结束日期', - createTimeView:'创建时间', - - }) -/** 获取列表 */ -const getList = async() => { - loading.value = true; - - let res = await facilityMaintainPlanApi().search(search.value) - if(res.code == 200) { - loading.value = false; - tableData.value = res.data.list; - tableData.value.forEach((item)=>{ - item.stateName = item.state==1?'启动':'关闭' - }) - - total.value = res.data.total; - search.page = res.data.page; - search.limit = res.data.limit; - } - -} -const data = reactive({ - //表单 - form: {}, - - //查询数据 - search: { - page: 1, //当前页 - limit: 10, //每页条数 - planName: undefined, - status: undefined - }, - //表单验证 - rules: { - maintainName: [{ required: true, message: "请输入计划名称", trigger: "blur" }], - maintainType: [{ required: true, message: "请选择维护类型", trigger: "blur" }], - periodType: [{ required: true, message: "请选择维护周期", trigger: "blur" }], - facilityIds: [{ required: true, message: "请选择维护设备", trigger: "blur" }], - inspectUser: [{ required: true, message: "请选择维护人员", trigger: "blur" }] - }, -}); - -const { search, form, rules} = toRefs(data); -/** - * 详情相关 - * - * */ -let openForm2 = ref(false) -let info = ref({}) -let detailTable = ref([]) -/** 搜索按钮操作 */ -function handleQuery() { - search.value.page = 1; - getList(); -} -/** 重置按钮操作 */ -function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); -} -/** 新增按钮操作 */ -async function handleAdd() { - reset(); - open.value = true; - title.value = "添加计划"; -} -/** 修改按钮操作 */ -function handleUpdate(row) { - reset(); - Object.keys(row).forEach(key =>{ - if(form.value.hasOwnProperty(key)){ - form.value[key] = row[key] - } - }) - //数据类型及格式转换 - dateRange.value.push(form.value.beginTime) - dateRange.value.push(form.value.endTime) - form.value.periodType = form.value.periodType.toString(); - form.value.maintainType = form.value.periodType.toString(); - form.value.facilityIds = form.value.facilityIds.split(','); - form.value.id = row.id - open.value = true; - title.value = "修改计划"; -} - -/** - * 下拉框数据 - */ -//获取枚举类型 -const maintainTypeList = ref() -const periodTypeList = ref() -const getType = async(val) =>{ - let res = await sysDictData().searchType(val) - if (res.code == 200) { - return res.data - } -} - -//巡检人员 -const userNameList = ref() -const getAccount = async() =>{ -// 获取维修账号列表信息 - let res = await user().search({limit: 10000, status: 1,page:1}) - if (res.code == 200) { - userNameList.value = res.data.list - } -} -const checkedUser = (val) =>{ - userNameList.value.forEach( item =>{ - if(item.id == val){ - form.value.inspectUserName = item.nickName - } - }) -} -//日期 -const dateRange = ref([]); -async function changeDate(e){ - form.value.beginTime = e[0] + ' 00:00:00' - form.value.endTime = e[1] + ' 23:59:59' -} -//巡检设备 -const facilityList = ref() -const getFacility = async() =>{ - let res = await facilityApi().search({limit: 10000, status: 1,page:1}) - if (res.code == 200) { - facilityList.value = res.data.list - } -} -/** 提交表单按钮 */ -function submitForm() { - - proxy.$refs["postRef"].validate(async valid => { - if (valid) { - form.value.facilityIds = form.value.facilityIds.join() - if(!form.value.id){ - let res = await facilityMaintainPlanApi().create(form.value) - if(res.code == 200) { - proxy.$modal.msgSuccess("添加成功"); - open.value = false - getList() - reset() - } - }else{ - let res = await facilityMaintainPlanApi().modify(form.value) - if(res.code == 200) { - proxy.$modal.msgSuccess("编辑成功"); - open.value = false - getList() - reset() - } - } - } - }); -} -/** 关闭弹窗 */ -function cancel() { - open.value = false; - openForm2.value = false; - reset(); -} -/** 表单重置 */ -const reset = () => { - form.value = { - maintainName: '', - maintainType: '', - periodType: '', - facilityIds:[], - beginTime: '', - endTime: '', - inspectUser: '', - inspectUserName: '', - content: '', - remark: '', - } - proxy.resetForm("postRef"); - open.value = false - openForm2.value = false; - getList(); -} -onMounted(async () =>{ - - maintainTypeList.value = await getType('maintain_type'); - periodTypeList.value = await getType('period_type'); - await getAccount() - await getFacility() - await getList(); -}) - -</script> -<template> - <div class="app-container"> - <!--搜索框--> - <el-form :model="search" ref="queryRef" :inline="true" > - <el-form-item label="" prop="name"> - <el-input - v-model="search.name" - placeholder="请输入计划名称" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - - </el-form-item> - </el-form> - <!--操作按钮列--> - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - ></el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> -<!-- <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button>--> - </template> - </el-table-column> - </el-table> - <pagination - v-show="total > 0" - :total="total" - v-model:page="search.page" - v-model:limit="search.limit" - @pagination="getList" - /> - <!-- 添加表单弹窗 --> - <el-dialog :title="title" v-model="open" center> - <el-form class="form-box" ref="postRef" :model="form" :rules="rules" label-width="90px"> - <el-form-item label="计划名称" prop="planName" > - <el-input v-model="form.maintainName" placeholder="请输入设备名称" /> - </el-form-item> - <el-form-item label="计划类型"> - <el-select v-model="form.maintainType" placeholder="请选择所计划类型"> - <el-option - v-for="(item,index) in maintainTypeList" - :key="index" - :label="item.dictLabel" - :title="item.dictLabel" - :value="item.dictValue" - /> - </el-select> - </el-form-item> - <el-form-item class="checkbox-item" label="巡检设备" prop="facilityIds"> - <el-checkbox-group v-model="form.facilityIds"> - <el-checkbox v-for="(item,index) in facilityList" :key="index" :label="item.facilityName" :value="item.id" size ="large" /> - </el-checkbox-group> - </el-form-item> - <el-form-item label="计划周期"> - <el-select v-model="form.periodType" placeholder="请选择所计划类型"> - <el-option - v-for="(item,index) in periodTypeList" - :key="index" - :label="item.dictLabel" - :title="item.dictLabel" - :value="item.dictValue" - /> - </el-select> - </el-form-item> - <el-form-item label="有效期"> - <el-date-picker - v-model="dateRange" - value-format="YYYY-MM-DD" - type="daterange" - start-placeholder="开始日期" - end-placeholder="结束日期" - @change="changeDate" - ></el-date-picker> - </el-form-item> - <el-form-item label="巡检人员" prop="inspectUser"> - <el-select v-model="form.inspectUser" placeholder="请选择巡检人员" @change="checkedUser"> - <el-option - v-for="(item,index) in userNameList" - :key="index" - :label="item.nickName" - :title="item.nickName" - :value="item.id" - /> - </el-select> - </el-form-item> - <el-form-item label="巡检内容" prop="content"> - <el-input v-model="form.content" type="textarea" placeholder="请输入内容" /> - </el-form-item> - <el-form-item label="备注" prop="remark"> - <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /> - </el-form-item> - <el-form-item></el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> -</template> -<style scoped lang="scss"> - .checkbox-item{ - width: 98%; - .el-checkbox-group{ - background: rgba(241, 247, 253, 0.73); - border-radius: 5px; - border: 1px solid #dcdfe6; - padding: 10px; - } - } -</style> \ No newline at end of file diff --git a/src/views/facilityMaintain/facilityMaintainRecord/index.vue b/src/views/facilityMaintain/facilityMaintainRecord/index.vue deleted file mode 100644 index fa497d1..0000000 --- a/src/views/facilityMaintain/facilityMaintainRecord/index.vue +++ /dev/null @@ -1,119 +0,0 @@ -<script setup > -import {facilityMaintainRecordApi} from "@/api/maintain/record/index.js"; -import setPostParams from "@/utils/searchParams.js"; - -const {proxy} = getCurrentInstance(); -/** - * 搜索 - */ -const queryParams = ref({ - name:'' -}) -function handleQuery() { - getList({keywords:queryParams.value.name}) -} -/** - * 重置 - */ -const resetQuery = () =>{ - queryParams.value.name = '' - getList() -} -/** 列表 */ -const tableData = ref([]); //初始化列表 -const loading = ref(false); //加载状态 -const total = ref(0); -/** 表头 */ -let tableHeader = ref({ - maintainCode:'计划编号', - maintainType: '维护类型', - periodType: '维护周期', - facilityName: '设备名称', - content: '维护内容', - url: '维护图片', - resultType: '执行结果', - inspectUserName: '巡检人员', - createTimeView: '创建时间', -}) -//分页 -const pageParam = ref({ - total:0, - limit:10, - page:1, -}) -/** 获取列表 */ -const getList = async (val) => { - loading.value = true; - let postParam = setPostParams(val) - let res = await facilityMaintainRecordApi().search(postParam) - if (res.code == 200) { - loading.value = false; - tableData.value = res.data.list; - tableData.value.forEach((item) => { - if (item.resultType == 1) { - item.resultType = '待执行' - } else if (item.resultType == 2) { - item.resultType = '正常' - } else if (item.resultType == 3) { - item.resultType = '异常' - } - }) - pageParam.value.total = res.data.total; - pageParam.value.page = res.data.page; - pageParam.value.limit = res.data.limit; - } -} -getList(); - -</script> -<template> - <div class="app-container"> - <!--搜索框--> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - - <el-form-item label="" prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入计划名称" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData" @selection-change="handleSelectionChange"> - <el-table-column type="selection" width="55" align="center"/> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key.toString() === 'url'"> <img :src="scope.row.url" alt="" style="width:50px;height: 50px"></div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - v-show="pageParam.total > 0" - :total="pageParamtotal" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - @pagination="getList" - /> - </div> -</template> -<style scoped lang="scss"> -</style> \ No newline at end of file diff --git a/src/views/financial/billRecord/index.vue b/src/views/financial/billRecord/index.vue deleted file mode 100644 index 22f5a28..0000000 --- a/src/views/financial/billRecord/index.vue +++ /dev/null @@ -1,221 +0,0 @@ - - <script setup > - import billRecord from "@/api/financial/billRecord"; - import TieredCharging from "@/api/configuration/waterPrice"; - const { proxy } = getCurrentInstance(); - import archivesApi from "@/api/archivesApi/index"; - import setPostParams from "@/utils/searchParams.js"; - -/** - * 搜索相关 - */ - const queryParams =ref({ - name: undefined, -},) - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - billNo: "账单编号", - waterMeterSn: "所属水表", - userName: "所属用户", - waterAmount: "用水量", - billMoney: "账单总金额", - billStateView: "账单状态", - createTimeView: "创建时间:", - }) - - /** 获取列表 */ -const loading = ref(false); - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await billRecord().search(postParam).then((res) =>{ - tableData.value = res.data.list - tableData.value.forEach((item,index) =>{ - if(item.payTime === 0){ - delete item.payTime - } - if(item.billState === 100){ - item.billStateView = '待缴费' - }else if(item.billState === 102){ - item.billStateView = '部分缴费' - }else{ - item.billStateView = '已缴费' - } - }) - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - /** - * - * 详情 - */ - let detailName = ref({ - billNo: "账单编号:", - waterMeterSn: "所属水表:", - userName: "所属用户:", - startDate: "起始日期:", - endDate: "截止日期:", - lastAmount: "上月抄表:", - currentAmount: "本月抄表:", - waterAmount: "用水量:", - tieredChargingIdName: "收费标准:", - waterMoney: "水费金额:", - otherMoney: "其他费用:", - overdueMoney: "滞纳金:", - billMoney: "总金额:", - needPayTime:'应付时间:', - totalMoney: "实际应缴:", - paidMoney: "实际缴费:", - billStateView: "账单状态:", - payTime: "缴费时间:", - createTimeView: "创建时间:", - }) - const open = ref(false) - const detailList = ref([]) - const toDetail = async (row) =>{ - //水价id转name - await TieredCharging().search({limit:10000,page:1}).then((res) =>{ - res.data.list.forEach((item) =>{ - if(item.id === row.tieredChargingId){ - row.tieredChargingIdName = item.name - } - }) - }) - //用户id转username - await archivesApi().search({limit:10000,page:1}).then((res) =>{ - res.data.list.forEach((item) =>{ - if(item.id === row.userId){ - row.userName = item.userName - } - }) - }) - let list = [] - Object.keys(detailName.value).forEach(key1=>{ - Object.keys(row).forEach((key2)=>{ - if(key1 === key2){ - list.push({name:detailName.value[key1],value:row[key2]}) - } - }) - }) - detailList.value = list - open.value = true - } - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入内容" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - ></el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed" fixed="right"> - <template #default="scope"> - <el-button link type="primary" icon="Document" @click="toDetail(scope.row)">详情</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <el-dialog v-model="open" title="账单详情" center> - <div class="detail-content"> - <div v-for="(item,index) of detailList" :key="index"> - <span>{{item.name}}</span> - <span>{{item.value}}</span> - </div> - <!-- flex布局调整--> - <div v-if="detailList.length % 2 !== 0"></div> - </div> - </el-dialog> - </div> -</template> - <style lang="scss" scoped> - :deep(.el-dialog){ - .el-dialog__body{ - overflow-y: auto; - max-height: 80vh; - } - .detail-content{ - background: #fff; - width: 98%; - display: flex; - flex-wrap: wrap; - justify-content:space-evenly; - padding:20px 50px; - align-items: center; - box-shadow: 0 0 10px 1px rgba(0, 0, 0, 0.05); - border-radius: 20px; - margin: 10px auto; - div{ - width:48%; - margin-bottom: 20px; - padding-bottom: 10px; - span:first-child{ - display: inline-block; - width: 79px; - font-size: 18px; - color: rgba(60, 59, 59, 0.93); - margin-right:2%; - text-align-last:justify; - } - span:last-child{ - display: inline-block; - width:62%; - font-size: 18px; - color: #5a5a5a; - font-weight:600; - border-bottom: 1px solid rgba(168, 168, 168, 0.44); - } - } - } - } - - </style> - \ No newline at end of file diff --git a/src/views/financial/invoice/index.vue b/src/views/financial/invoice/index.vue deleted file mode 100644 index 3a3234e..0000000 --- a/src/views/financial/invoice/index.vue +++ /dev/null @@ -1,323 +0,0 @@ - - <script setup > - import invoice from "@/api/financial/invoice"; - import { sysDictData } from "@/api/system/dict"; - import user from "@/api/system/user"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - nickName: "用户", //userId转 - typeName: "抬头类型", //type转 - money: "开票金额", - content: "开票信息", - name: "抬头名称", - taxNum: "税号", - email: "邮箱", - stateName: "开票状态", //state转 - comment: "备注", - createTimeView: "创建时间", - updateTimeView: "更新时间" - }) - - /** 获取列表 */ - -const accountList = ref([]) -const invoiceStateList = ref() -const invoiceTypeList = ref() -const loading = ref(false); - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await invoice().search(postParam).then((res) =>{ - tableData.value = res.data.list - //id转name - tableData.value.forEach((item) =>{ - if(item.type == 1){ - item.typeName = '企业单位' - }else{ - item.typeName = '个人/非企业' - } - }) - tableData.value.forEach((item) =>{ - accountList.value.forEach((user) =>{ - if(item.userId == user.id){ - item.nickName = user.nickName - } - }) - invoiceStateList.value.forEach((stateItem) =>{ - if(item.state == stateItem.dictValue){ - item.stateName = stateItem.dictLabel - } - }) - }) - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.type = form.value.type.toString() - // form.value.state = form.value.state.toString() - form.value.id = row.id - open.value = true; - title.value = "修改"; - } - - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const title = ref(""); - -const data = reactive({ -form:{}, -queryParams: { - name: undefined, -}, -rules: { - userId: [{ required: true, message: "请选择用户", trigger: "blur" }], - type: [{ required: true, message: "请选择发票类型", trigger: "blur" }], - name: [{ required: true, message: "请输入发票抬头名称", trigger: "blur" }], - email: [{ required: true, message: "请输入邮箱", trigger: "blur" }] -}, -}); -const { queryParams, form, rules } = toRefs(data); - - - //获取发票类型 - const getType = async() =>{ - await sysDictData().searchType('invoice_type').then((res) =>{ - invoiceTypeList.value = res.data - }) - } -//获取发票状态 -const getInvoiceState = async() =>{ -await sysDictData().searchType('invoice_state').then((res) =>{ - invoiceStateList.value = res.data -}) -} - //获取账号列表 - const getAccount = async() =>{ - await user().search({limit:10000,page:1}).then((res) =>{ - accountList.value = res.data.list - }) - } - - /** 提交按钮 */ - function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - if (form.value.id) { - if(form.value.type == 2){ - form.value.taxNum = '' - } - invoice().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - }else { - invoice().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - userId: "", - type: "", - money: undefined, - content: "", - state: undefined, - name: "", - taxNum: "", - email: "", - comment: "", - sort: 1, - }; - proxy.resetForm("formRef"); - } -getType(); -getInvoiceState(); -getAccount(); - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入内容" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - ></el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="用户" prop="userId"> - <el-select v-model="form.userId" placeholder="请选择" > - <el-option - v-for="item in accountList" - :key="item.id" - :label="item.nickName" - :title="item.nickName" - :value="item.id" - /> - </el-select> - </el-form-item> - <el-form-item label="抬头类型" prop="type"> - <el-select v-model="form.type" placeholder="请选择" > - <el-option - v-for="item in invoiceTypeList" - :key="item.id" - :label="item.dictLabel" - :title="item.dictLabel" - :value="item.dictValue" - /> - </el-select> - </el-form-item> - <el-form-item label="抬头名称" prop="name"> - <el-input v-model="form.name" ></el-input> - </el-form-item> - <el-form-item label="税号" prop="taxNum" v-if="form.type == 1"> - <el-input v-model="form.taxNum" ></el-input> - </el-form-item> - <el-form-item label="邮箱" prop="email"> - <el-input v-model="form.email" ></el-input> - </el-form-item> - <el-form-item label="开票金额" prop="money"> - <el-input v-model="form.money" ></el-input> - </el-form-item> - <el-form-item label="开票信息" prop="content"> - <el-input v-model="form.content" ></el-input> - </el-form-item> - <el-form-item label="开票状态" prop="state"> - <el-select v-model="form.state" placeholder="请选择"> - <el-option - v-for="item in invoiceStateList" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue" - /> - </el-select> - </el-form-item> - <el-form-item label="备注" prop="comment"> - <el-input v-model="form.comment" ></el-input> - </el-form-item> - <el-form-item label="显示排序" prop="sort"> - <el-input-number v-model="form.sort" controls-position="right" :min="1" /> - </el-form-item> - <el-form-item></el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> -</template> - - \ No newline at end of file diff --git a/src/views/financial/payRecord/index.vue b/src/views/financial/payRecord/index.vue deleted file mode 100644 index 22a5790..0000000 --- a/src/views/financial/payRecord/index.vue +++ /dev/null @@ -1,95 +0,0 @@ - - <script setup > - import payRecord from "@/api/financial/payRecord"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - const queryParams =ref({ - name: undefined, -},) - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - userName: "用户名称", - companyName:'所属公司', - paymentType: "缴费类型", - paymentMethod: "支付方式", - paymentAmount: "缴费金额", - createTimeView: '缴费时间', - }) - - /** 获取列表 */ - -const loading = ref(false); - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await payRecord().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入内容" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - ></el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - </div> -</template> - \ No newline at end of file diff --git a/src/views/financial/payable/index.vue b/src/views/financial/payable/index.vue deleted file mode 100644 index 285f57a..0000000 --- a/src/views/financial/payable/index.vue +++ /dev/null @@ -1,102 +0,0 @@ - - <script setup > - import payable from "@/api/financial/payable"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - const queryParams =ref({ - name: undefined, -},) - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - code: "单号", - feeName: "费用名称", - feeDetails: "费用详情", - detailsMoney: "费用金额", - dedMoney: "扣款金额", - addMoney: "补充金额", - payTotal: "应付合计", - settleType: "结算方式", - settleDate: "结算时间", - settleState: "结算状态", - comment: "备注", - createTimeView: "创建时间", - updateTimeView: "更新时间" - }) - - /** 获取列表 */ - -const loading = ref(false); - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await payable().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入内容" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - ></el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - </div> -</template> - \ No newline at end of file diff --git a/src/views/financial/recharge/index.vue b/src/views/financial/recharge/index.vue deleted file mode 100644 index c4c93f1..0000000 --- a/src/views/financial/recharge/index.vue +++ /dev/null @@ -1,248 +0,0 @@ - -<script setup > -import recharge from "@/api/financial/recharge"; -import archivesApi from "@/api/archivesApi"; -import { sysDictData} from "@/api/system/dict"; -import setPostParams from "@/utils/searchParams.js"; -const { proxy } = getCurrentInstance(); - -/** -* 搜索相关 -*/ -/** 搜索按钮操作 */ -function handleQuery() { - getList({keywords:queryParams.value.name}) -} - -/** 重置按钮操作 */ -function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); -} - -/** - * Table表格权限数据列表相关 - */ -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - userName: "用户姓名", - userCode:"水表编号", - userPhone: "用户电话", - rechargeOrder: "充值订单号", - rechargeType: "充值类型", - paymentMethod: "支付方式", - rechargeAmount: "充值金额", - rechargeStatusView: "充值状态", - createTimeView:"创建日期", - - }) - -/** 获取列表 */ - -const loading = ref(false); -async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await recharge().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; -} - -/** 新增按钮操作 */ -async function handleAdd() { - reset(); - open.value = true; - title.value = "充值"; -} - -/** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const title = ref(""); - -const data = reactive({ -form:{}, -queryParams: { - name: undefined, -}, -rules: { - userCode: [{required: true, message: '请选择用户', trigger: 'blur'}], - rechargeAmount: [ - {required: true, message: '请输入充值金额', trigger: 'blur'}, - { pattern: "^(?!10000(?:\\.0{1,2})?$)(?:\\d{1,4}(?:\\.\\d{1,2})?|0(?:\\.\\d{1,2})?)$", message: '请输入0到9999.99之间的正整数或小数(最多保留两位小数)', trigger: 'blur' }, - ], - }, -}); -const { queryParams, form, rules } = toRefs(data); - -//获取支付方式 -const paymentMethodList = ref() -const getMethod = async() =>{ - await sysDictData().searchType('pay_method').then((res) =>{ - paymentMethodList.value = res.data - }) -} -//获取账号列表 -const userNameList = ref() -const getUser = async() =>{ - await archivesApi().search({limit:1500,page:1}).then((res) =>{ - userNameList.value = res.data.list - }) -} - //选择用户,获取用户名及余额 - const changeUser = async(val) => { - userNameList.value.forEach(item => { - if(val == item.userCode){ - form.value.userName = item.userName - form.value.walletBalance = item.walletBalance - } - }) - } - -/** 提交按钮 */ -function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - recharge().pay(form.value).then(res => { - proxy.$modal.msgSuccess("充值成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("充值失败,请联系管理员"); - }); - } - }); -} - -/** 取消按钮 */ -function cancel() { - open.value = false; - reset(); -} - -/** 表单重置 */ -function reset() { - form.value = { - walletBalance:'', - userName: '', - userCode: '', - rechargeType: '柜台业务', - paymentMethod: '1', - rechargeAmount: '', //收取金额 - }; - proxy.resetForm("formRef"); -} -getUser(); -getMethod(); -getList(); -</script> -<template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入水表编号或电话" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >充值</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - ></el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="户号" prop="userCode"> - <el-select v-model="form.userCode" filterable clearable placeholder="请选择用户" @change="changeUser"> - <el-option - v-for="item in userNameList" - :key="item.id" - :label="item.userCode" - :title="item.userCode" - :value="item.userCode"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="用户名称">{{ form.userName }}</el-form-item> - <div class="hr"></div> - <el-form-item label="余额" > - <el-input v-model="form.walletBalance" disabled></el-input> - </el-form-item> - <el-form-item label="充值类型" > - <el-input v-model="form.rechargeType" disabled></el-input> - </el-form-item> - <el-form-item label="支付方式" prop="paymentMethod"> - <el-select v-model="form.paymentMethod" disabled placeholder="请选择"> - <el-option - v-for="item in paymentMethodList" - :key="item.dictValue" - :label="item.dictLabel" - :title="item.dictLabel" - :value="item.dictValue"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="充值金额" prop="rechargeAmount"> - <el-input v-model="form.rechargeAmount" ></el-input> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> -</template> -<style lang="scss"> - .hr { - width: 90%; - border-bottom: 1px solid rgb(218, 218, 218); - margin: 0 auto 30px; - } -</style> diff --git a/src/views/financial/tradeRecord/index.vue b/src/views/financial/tradeRecord/index.vue deleted file mode 100644 index aebeaa4..0000000 --- a/src/views/financial/tradeRecord/index.vue +++ /dev/null @@ -1,132 +0,0 @@ - - <script setup > - import payable from "@/api/financial/payable"; - import setPostParams from "@/utils/searchParams.js"; - import tradeRecord from "../../../api/financial/tradeRecord/index.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - const queryParams =ref({ - name: undefined, - createTime: undefined, -},) - /** 搜索按钮操作 */ - function handleQuery() { - let dateValue=queryParams.value.createTime[0] + ' 00:00:00'+' ~ '+ queryParams.value.createTime[1] + ' 23:59:59' - getList({keywords:queryParams.value.name,createTimeRange:dateValue}) - } - /** 导出按钮操作 */ - function exportQuery() { - let createTimeRange=queryParams.value.createTime[0] + ' 00:00:00'+' ~ '+ queryParams.value.createTime[1] + ' 23:59:59' - tradeRecord().exportData(createTimeRange) - } - const queryRef=ref(); - //日期 - const dateRange = ref([]); - // async function changeDate(e){ - // queryParams.value.createTimeRange=e[0] + ' 00:00:00'+'~'+ e[1] + ' 23:59:59' - // } - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - businessNo: "交易流水号", - thirdTradeNo:"微信流水号", - businessComment:"业务描述", - tradeAmount: "交易金额", - paidAmount: "实际支付金额", - channelName: "支付渠道", - submitTimeView: "交易发起时间", - paidTimeView: "交易成功时间", - payState: "支付状态", - createTimeView: "创建时间", - }) - - /** 获取列表 */ - -const loading = ref(false); - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await tradeRecord().search(postParam).then((res) =>{ - tableData.value = res.data.list - tableData.value.forEach((item,index) =>{ - if(item.payState === 20){ - item.payState = '支付中' - }else if(item.payState === 200){ - item.payState = '已支付' - }else if(item.payState ===10){ - item.payState = '待支付' - } - }) - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入内容" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item label="开始结束时间"> - <el-date-picker - v-model="queryParams.createTime" - value-format="YYYY-MM-DD" - type="daterange" - start-placeholder="开始日期" - end-placeholder="结束日期" - @change="changeDate" - ></el-date-picker> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="exportQuery">导出</el-button> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - ></el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - </div> -</template> - \ No newline at end of file diff --git a/src/views/financial/userBankAccount/index.vue b/src/views/financial/userBankAccount/index.vue deleted file mode 100644 index ac755f3..0000000 --- a/src/views/financial/userBankAccount/index.vue +++ /dev/null @@ -1,249 +0,0 @@ - - <script setup > - import userBankAccount from "@/api/financial/userBankAccount"; - import user from "@/api/system/user"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - bankName: "银行名称", - bankAccount: "银行账户", - address: "开户地址", - userName: "用户姓名", - remark: "备注", - createTimeView: "创建日期", - createUserName: "创建人" - }) - - /** 获取列表 */ - -const accountList = ref() -const loading = ref(false); - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await userBankAccount().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.id = row.id - open.value = true; - title.value = "修改"; - } - - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const title = ref(""); - -const data = reactive({ -form:{}, -queryParams: { - name: undefined, -}, -rules: { - userId: [{required: true, message: '请选择用户', trigger: 'blur'}], - bankName: [{required: true, message: '请输入银行名称', trigger: 'blur'}], - bankAccount: [{required: true, message: '请输入银行卡账户', trigger: 'blur'}], - address: [{required: true, message: '请选择开户地址', trigger: 'blur'}], - }, -}); -const { queryParams, form, rules } = toRefs(data); - - //获取账号列表 - const getAccount = async() =>{ - await user().search({limit:10000,page:1}).then((res) =>{ - accountList.value = res.data.list - }) - } - const changeUser = (userId)=>{ - accountList.value.forEach((item) =>{ - if(item.id == userId){ - form.value.userName = item.userName - } - }) - } - - /** 提交按钮 */ - function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - if (form.value.id) { - userBankAccount().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - }else { - userBankAccount().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - userId:"", - userName:"", - bankName: "", - bankAccount: "", - address: "", - remark: "", - }; - proxy.resetForm("formRef"); - } -getAccount(); - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入内容" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - ></el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="银行名称" prop="bankName"> - <el-input v-model="form.bankName"></el-input> - </el-form-item> - <el-form-item label="银行账户" prop="bankAccount"> - <el-input v-model="form.bankAccount"></el-input> - </el-form-item> - <el-form-item label="开户地址" prop="address"> - <el-input v-model="form.address"></el-input> - </el-form-item> - <el-form-item label="用户名称" prop="userName"> - <el-select v-model="form.userId" @change="changeUser" filterable placeholder="请输入或选择用户"> - <el-option - v-for="item in accountList" - :key="item.id" - :label="item.nickName" - :title="item.nickName" - :value="item.id" - - /> - </el-select> - </el-form-item> - <el-form-item label="备注" prop="remark"> - <el-input v-model="form.remark" ></el-input> - </el-form-item> - <el-form-item></el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> -</template> - \ No newline at end of file diff --git a/src/views/financial/userCapitalChange/index.vue b/src/views/financial/userCapitalChange/index.vue deleted file mode 100644 index 1e51c2e..0000000 --- a/src/views/financial/userCapitalChange/index.vue +++ /dev/null @@ -1,94 +0,0 @@ - - <script setup > - import userCapitalChange from "@/api/financial/userCapitalChange"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); -/** - * 搜索相关 - */ - const queryParams =ref({ - name: undefined, -},) - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - businessCode: '订单编号', - userName: '所属用户', - businessName: '变动业务名称', - beforeMoney: '变动前余额', - changeMoney: '变动金额', - afterMoney: '变动后余额', - description: '描述', - createTimeView: '创建时间', - }) - /** 获取列表 */ -const loading = ref(false); - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await userCapitalChange().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入内容" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - ></el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - </div> -</template> - \ No newline at end of file diff --git a/src/views/financial/waterMeterTask/index.vue b/src/views/financial/waterMeterTask/index.vue deleted file mode 100644 index 57dec3f..0000000 --- a/src/views/financial/waterMeterTask/index.vue +++ /dev/null @@ -1,167 +0,0 @@ - - <script setup > - import billRecord from "@/api/financial/billRecord"; - import TieredCharging from "@/api/configuration/waterPrice"; - const { proxy } = getCurrentInstance(); - import archivesApi from "@/api/archivesApi/index"; - import setPostParams from "@/utils/searchParams.js"; - import waterMeterTask from "@/api/financial/waterMeterTask/index.js"; - -/** - * 搜索相关 - */ - const queryParams =ref({ - name: undefined, -},) - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - waterMeterSn: "水表编号", - userName: "所属用户", - taskType: "任务类型", - rechargeAmount: "账单总金额", - isExecute: "执行状态", - createTimeView: "创建时间:", - }) - /** 获取列表 */ -const loading = ref(false); - async function getList(val) { - loading.value = true; - - const params = setPostParams({...val},["limit","page","taskType"]); - params.taskType=1; - await waterMeterTask().search(params).then((res) =>{ - tableData.value = res.data.list - tableData.value.forEach((item,index) =>{ - if(item.isExecute === 0){ - item.isExecute = '充值中' - }else if(item.isExecute === 1){ - item.isExecute = '已到账' - }else if(item.isExecute === 2){ - item.isExecute = '执行失败' - } - if(item.taskType === 1){ - item.taskType = '充值' - }else if(item.taskType === 2){ - item.taskType = '开关阀' - }else if(item.taskType === 3){ - item.taskType = '设置阶梯价' - } - }) - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - const open = ref(false) - const detailList = ref([]) - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入水表编号" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - ></el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <el-dialog v-model="open" title="账单详情" center> - <div class="detail-content"> - <div v-for="(item,index) of detailList" :key="index"> - <span>{{item.name}}</span> - <span>{{item.value}}</span> - </div> - <!-- flex布局调整--> - <div v-if="detailList.length % 2 !== 0"></div> - </div> - </el-dialog> - </div> -</template> - <style lang="scss" scoped> - :deep(.el-dialog){ - .el-dialog__body{ - overflow-y: auto; - max-height: 80vh; - } - .detail-content{ - background: #fff; - width: 98%; - display: flex; - flex-wrap: wrap; - justify-content:space-evenly; - padding:20px 50px; - align-items: center; - box-shadow: 0 0 10px 1px rgba(0, 0, 0, 0.05); - border-radius: 20px; - margin: 10px auto; - div{ - width:48%; - margin-bottom: 20px; - padding-bottom: 10px; - span:first-child{ - display: inline-block; - width: 79px; - font-size: 18px; - color: rgba(60, 59, 59, 0.93); - margin-right:2%; - text-align-last:justify; - } - span:last-child{ - display: inline-block; - width:62%; - font-size: 18px; - color: #5a5a5a; - font-weight:600; - border-bottom: 1px solid rgba(168, 168, 168, 0.44); - } - } - } - } - - </style> - \ No newline at end of file diff --git a/src/views/index.vue b/src/views/index.vue deleted file mode 100644 index fddcef1..0000000 --- a/src/views/index.vue +++ /dev/null @@ -1,21 +0,0 @@ -<!-- - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-06 14:47:41 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-12 10:41:43 - * @FilePath: \water-qinghe-web\src\views\index.vue - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE ---> -<template> - <div> -首页 - </div> -</template> - -<script setup> - -</script> - -<style lang="scss" scoped> - -</style> \ No newline at end of file diff --git a/src/views/linkage/valveLlinkage/index.vue b/src/views/linkage/valveLlinkage/index.vue deleted file mode 100644 index 4221136..0000000 --- a/src/views/linkage/valveLlinkage/index.vue +++ /dev/null @@ -1,21 +0,0 @@ -<!-- - * @Author: Liuyi candymxq888@outlook.com - * @Date: 2024-08-06 14:47:41 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-13 14:45:36 - * @FilePath: \water-qinghe-web\src\views\index.vue - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE ---> -<template> - <div> - - </div> -</template> - -<script setup> - -</script> - -<style lang="scss" scoped> - -</style> \ No newline at end of file diff --git a/src/views/login.vue b/src/views/login.vue index b2d1e8a..581be80 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -64,7 +64,7 @@ </el-button> </el-form-item> </el-form> - <img class="left-img" src="../assets/images/login/login_icon.png"/> + <img class="left-img" src="../assets/images/login_icon.png"/> </div> <!-- 底部 --> <div class="footer"> @@ -242,7 +242,7 @@ function getCookie() { const userName = Cookies.get("userName"); - const password = Cookies.get("password"); + const password = decrypt(Cookies.get("password")); const rememberMe = Cookies.get("rememberMe"); loginForm.userName = userName === undefined ? loginForm.userName : userName; loginForm.password = password === undefined ? loginForm.password : password; diff --git a/src/views/meterReading/manualMeterReading/index.vue b/src/views/meterReading/manualMeterReading/index.vue deleted file mode 100644 index 1c96524..0000000 --- a/src/views/meterReading/manualMeterReading/index.vue +++ /dev/null @@ -1,128 +0,0 @@ - - <script setup > - import meterReadingRecordApi from "@/api/meterReadingApi/meterReadingRecord"; - // import user from "@/api/system/user"; - import useWaterMeterApi from "@/api/waterMeterApi/useWaterMeter"; - const { proxy } = getCurrentInstance(); - - /** - * 新增/修改弹窗Form表单相关 - */ -const data = reactive({ -form:{}, -rules: { - useWaterMeterId: [{required: true, message: '请选择水表', trigger: 'blur'}], - currentAmount: [{required: true, message: '请输入抄表读数', trigger: 'blur'}], - }, -}); -const { form, rules } = toRefs(data); - - //获取账号列表 - const meterList = ref() - const getMeterList = async() =>{ - await useWaterMeterApi().search({limit:10000,page:1}).then((res) =>{ - meterList.value = res.data.list - }) - } - getMeterList() - /** 提交按钮 */ - function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - meterReadingRecordApi().manualMeterReading(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - reset() - }).catch(() =>{ - proxy.$modal.msgError("新增失败"); - reset() - }); - } - }); - } - /** 取消按钮 */ - function cancel() { - reset(); - } - /** 表单重置 */ - function reset() { - form.value = { - useWaterMeterId:"", - currentAmount:"", - description: "", - }; - proxy.resetForm("formRef"); - } - </script> - <template> - <div class="app-container"> - <!-- 添加或修改对话框 --> - <div class="form-container"> - <div class="title">手动抄表:</div> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="所属水表" prop="useWaterMeterId"> - <el-select v-model="form.useWaterMeterId" filterable placeholder="请输入或选择用户"> - <el-option - v-for="item in meterList" - :key="item.id" - :label="item.sn" - :title="item.sn" - :value="item.id" - /> - </el-select> - </el-form-item> - <el-form-item label="本月抄表止数" prop="currentAmount"> - <el-input v-model="form.currentAmount"></el-input> - </el-form-item> - <el-form-item label="描述" prop="description"> - <el-input v-model="form.description"></el-input> - </el-form-item> - <el-form-item></el-form-item> - </el-form> - <div class="footer"> - <el-button type="primary" size="large" @click="submitForm">确 定</el-button> - <el-button @click="cancel" size="large">取 消</el-button> - </div> - </div> - </div> -</template> - <style lang="scss" scoped> - .app-container{ - width: 100%; - height: 100%; - display: flex; - justify-content: center; - align-items: center; - .form-container{ - width: 70%; - height: 800px; - background: rgba(28, 132, 198, 0.07); - padding: 0 5%; - border-radius: 10px; - border-top: 2px solid rgb(11, 136, 216); - .title{ - width: 100%; - display: flex; - justify-content:flex-start; - align-items: center; - height: 100px; - font-weight: bold; - font-size: 20px; - color: #3f4040; - } - .el-form{ - width: 100%; - margin-top: 40px; - .el-form-item{ - height: 40px; - } - } - .footer{ - display: flex; - align-items: center; - justify-content: center; - margin: 200px 0; - } - } - } - </style> - \ No newline at end of file diff --git a/src/views/meterReading/meterReadingMonthRecord/index.vue b/src/views/meterReading/meterReadingMonthRecord/index.vue deleted file mode 100644 index 5003e06..0000000 --- a/src/views/meterReading/meterReadingMonthRecord/index.vue +++ /dev/null @@ -1,120 +0,0 @@ -<!-- - * @Author: elkers - * @Date: 2024-08-06 16:17:39 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-10-22 16:47:01 - * @FilePath: \water-qinghe-web\src\views\meterReading\meterReadingRecord\index.vue - * @Description: 自动抄表 数据上报 ---> - -<script setup> -import meterReadingRecordApi from "@/api/meterReadingApi/meterReadingRecord"; -import setPostParams from "@/utils/searchParams.js"; - -const {proxy} = getCurrentInstance(); - -/** - * 搜索相关 - */ -/** 搜索按钮操作 */ -function handleQuery() { - getList({keywords: queryParam.value.name,dateString: queryParam.value.dateString}) -} - -/** 重置按钮操作 */ -function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); -} - -/** - * Table表格权限数据列表相关 - */ -const queryParam = ref({ - name: '', - dateString:'' -}) -const pageParam = ref({ - total: 0, - limit: 0, - page: 1, -}) -const tableData = ref([]); -const inpTip = '请输入', selTip = '请输入'; -let tableHeader = ref({ - userName: "所属用户", - meterSn: '表号', - montAmount: '月扣除金额', - monthData: '月使用水量', - dateString:'日期' -}) -/** 获取列表 */ -const loading = ref(false) - -async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await meterReadingRecordApi().getByMonth(postParam).then((res) => { - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; -} - -getList(); -</script> -<template> - <div class="app-container"> - <el-form :model="queryParam" ref="queryRef" :inline="true"> - <el-form-item label="表号查询" prop="name"> - <el-input - v-model="queryParam.name" - placeholder="请输入表号" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item label="日期查询" prop="dateString"> - <el-date-picker - v-model="queryParam.dateString" - type="month" - placeholder="请选择年月" - format="YYYY-MM" - value-format="YYYY-MM" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - :sortable="key.toString() == 'deductAmount' ? true : false" - > - <template #default="scope"> - <div v-if="key.toString() == 'headImg'"> - <img :src="scope.row.headImg" class="table-headImg"/> - </div> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - </div> -</template> \ No newline at end of file diff --git a/src/views/meterReading/meterReadingRecord/index.vue b/src/views/meterReading/meterReadingRecord/index.vue deleted file mode 100644 index 7d5763e..0000000 --- a/src/views/meterReading/meterReadingRecord/index.vue +++ /dev/null @@ -1,115 +0,0 @@ -<!-- - * @Author: elkers - * @Date: 2024-08-06 16:17:39 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-10-22 16:47:01 - * @FilePath: \water-qinghe-web\src\views\meterReading\meterReadingRecord\index.vue - * @Description: 自动抄表 数据上报 ---> - - <script setup> - import meterReadingRecordApi from "@/api/meterReadingApi/meterReadingRecord"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParam.value.name}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - /** - * Table表格权限数据列表相关 - */ -const queryParam = ref({ - name:'' -}) -const pageParam = ref({ - total:0, - limit:0, - page:1, -}) -const tableData = ref([]); -const inpTip= '请输入',selTip = '请输入'; -let tableHeader = ref({ - userName:"所属用户", - waterMeterSn: '表号', - atData: '累计用水量', - deductAmount: '扣除金额', - useData:'本次使用水量', - usableData:'剩余水量', - comment:"备注", - createTimeView:'上传时间' - }) - /** 获取列表 */ - const loading = ref(false) - async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await meterReadingRecordApi().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="queryParam" ref="queryRef" :inline="true"> - <el-form-item label="" prop=""> - <el-input - v-model="queryParam.name" - placeholder="请输入搜索信息" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - :sortable="key.toString() == 'deductAmount' ? true : false" - > - <template #default="scope"> - <div v-if="key.toString() == 'headImg'"> - <img :src="scope.row.headImg" class="table-headImg"/> - </div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" v-has="['update',route]" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" v-has="['delete',route]" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - </div> - </template> \ No newline at end of file diff --git a/src/views/point/ecology/index.vue b/src/views/point/ecology/index.vue deleted file mode 100644 index e69de29..0000000 --- a/src/views/point/ecology/index.vue +++ /dev/null diff --git a/src/views/point/index.vue b/src/views/point/index.vue deleted file mode 100644 index 05be6c2..0000000 --- a/src/views/point/index.vue +++ /dev/null @@ -1,389 +0,0 @@ -<!-- - * @Author: hqs elkers@163.com - * @Date: 2024-08-06 14:47:41 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-14 16:50:56 - * @FilePath: \water-qinghe-web\src\views\facilit\index.vue - * @Description: 监控点 ---> -<script setup> -import pointApi from "@/api/facility/point"; -import { areaApi} from "@/api/area/index"; -import {inpTip, selTip} from "@/utils/textConst"; -import {longitudeReg, latitudeReg} from "@/utils/regular"; -import {ref} from "vue"; -import {region} from "@/api/basicApi/index.js"; -import setPostParams from "@/utils/searchParams.js"; - -const route = useRoute(); -const {proxy} = getCurrentInstance(); - -/** - * 搜索相关 - */ -/** 搜索按钮操作 */ -function handleQuery() { - getList({keywords: searchParams.value.keywords}) -} - -/** 重置按钮操作 */ -function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); -} - -/** - * Table表格权限数据列表相关 - */ - -const pageParam = ref({ - total: 0, - limit: 0, - page: 1, -}) -const tableData = ref([]); - -let tableHeader = ref({ - pointName: '监控点名称', - longitude: '经度', - latitude: '纬度', - regionName: '区域', - address: '详细地址', - createTimeView: '创建时间' -}) - -/** 获取权限列表 */ -async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await pointApi().search(postParam).then((res) => { - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; -} - -/** - * 表单相关 - */ -const formLabel = ({ - pointName: '监控点名称', - longitude: '经度', - latitude: '纬度', - region: '区域', - regionName: '区域信息', - address: '详细地址', - createTimeView: '创建时间' -}) -const rules = ref({ - pointName: [{required: true, message: `${inpTip + formLabel.pointName}`, trigger: "blur"} - - ], - address: [{required: true, message: `${inpTip + formLabel.address}`, trigger: "blur"}], - longitude: [ - {required: true, message: `${inpTip + formLabel.longitude}`, trigger: "blur"}, - ], - latitude: [ - {required: true, message: `${inpTip + formLabel.latitude}`, trigger: "blur"}, - ], - -}); -const accountRegionId = ref('') -const accountData=ref({ - -}) -const form = ref({ - areaId:'', - pointName: '', - longitude: '', - latitude: '', - region: '', - address: '', -}); -const searchParams = ref({ - keywords: '', -}); -// select区域 -const regionTreeList = ref([]) -const getRegion = async () => { - let res2=await region().search('') - if (res2.code == 200) { - res2.data.forEach((item) => { - if (item.children == null) { - item.children = [{}] - } - }) - regionTreeList.value = res2.data - // regionTreeList.value = listToTree(res2.data) - } -} -getRegion() -//区域相关------------------------------------------------------------------ -//获取管网父级区域列表 -const parentAreaList = ref([]) -const getParentArea = async()=>{ - let res = await areaApi().getTree('') - console.log("分区列表",res.data) - parentAreaList.value = res.data -} -getParentArea() -const changeParentTree = (e)=>{ - // form.value.parentAreaId = e.id - form.value.areaName = e.areaName - console.log('e001',e) -} -//展开所属区域树形, 请求展开区域的下一层子级数据 -const expandTree = async (data) => { - //请求展开区域的下一层子级列表数据 - let res = await region().search(data.code) - if(res.code == 200) { - res.data.forEach((item)=>{ - if((item.children == null) && item.level!=4){ - item.children = [{}] - } - }) - data.children = res.data - } -} -//选中区域数据处理 -const changeTreeValue = (_,nodeData,form,index) => { - - let codelist = getTreeCode(nodeData, 'id') - if(form == 1){ - accountData.value.region = codelist.join() - - nextTick(()=>{ - accountRegionId.value = getTreeCode(nodeData, 'name').join(',') - - }) - }else{ - waterMeterFormList.value[index].region = codelist.join() - nextTick(()=>{ - waterRegionIdlist.value[index] = getTreeCode(nodeData, 'name').join(',') - }) - } -} -//从当前选择区域树形查找父级code,组装为[123,456,789](xx省/xx市/xx区) -const getTreeCode = (tree, type) => { - let codeList = [] - if(tree.data.level!=1){ - codeList = codeList.concat(getTreeCode(tree.parent, type)) - codeList.push(tree.data[type]) - }else{ - return [tree.data[type]] - } - return codeList -} -/** 新增按钮操作 */ -async function handleAdd() { - getParentArea() - reset(); - open.value = true; - title.value = "新增"; -} - -/** 修改按钮操作 */ -async function handleUpdate(row) { - reset(); - // form.value = Object.assign({},row) - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.id = row.id - open.value = true; - title.value = "修改"; -} - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.contact + '"的数据项?').then(function () { - return pointApi().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => { - }); -} - - -/** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -//上传文件,添加图片地址信息 -const uploadData = (data) => { - form.value.headImg = data.newFileView -} - -/** 提交按钮 */ -function submitForm() { - proxy.$refs["facilityTypeRef"].validate(valid => { - if (valid) { - form.value.region = accountData.value.region - if (form.value.id != undefined) { - pointApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() => { - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - pointApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() => { - open.value = false; - proxy.$modal.msgError("新增失败"); - }); - ; - } - } - }); -} - -/** 取消按钮 */ -function cancel() { - open.value = false; - reset(); -} - -/** 表单重置 */ -function reset() { - form.value = { - pointName: '', - address: '' - }; - proxy.resetForm("facilityTypeRef"); -} - -getList(); -</script> -<template> - <div class="app-container"> - <el-form :model="searchParams" ref="queryRef" :inline="true"> - <el-form-item label="" prop=""> - <el-input - v-model="searchParams.pointName" - placeholder="请输入搜索信息" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增 - </el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key.toString() == 'headImg'"> - <img :src="scope.row.headImg" class="table-headImg"/> - </div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" v-has="['update',route]" - @click="handleUpdate(scope.row)">修改 - </el-button> - <el-button link type="primary" icon="Delete" v-has="['delete',route]" - @click="handleDelete(scope.row)">删除 - </el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加/修改表单 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="facilityTypeRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="选择DMA区域" prop="areaId"> - <el-tree-select - v-model="form.areaId" - :data="parentAreaList" - clearable - :props="{label:'areaName', value:'id'}" - placeholder="请选择区域" - highlight-current - @current-change="changeParentTree" - :check-strictly="true" - /> - </el-form-item> - <el-form-item :label="formLabel.pointName" prop="pointName"> - <el-input v-model="form.pointName" :placeholder="inpTip+formLabel.pointName"/> - </el-form-item> - - <el-form-item :label="formLabel.longitude" prop="longitude"> - <el-input v-model="form.longitude" :placeholder="inpTip+formLabel.longitude"/> - </el-form-item> - <el-form-item :label="formLabel.latitude" prop="latitude"> - <el-input v-model="form.latitude" :placeholder="inpTip+formLabel.latitude"/> - </el-form-item> - <el-form-item :label="formLabel.region" label="所属区域" prop="region"> - <el-tree-select - v-model="accountRegionId" - :data="regionTreeList" - :props="{label:'name', value:'id'}" - placeholder="请选择所属区域" - filterable - highlight-current - :check-strictly="true" - @node-expand="expandTree" - @current-change="(val1,val2) =>changeTreeValue(val1,val2,1)" - /> - <el-input v-if="isDetail ? true : false" v-model="form.regionName" disabled></el-input> - </el-form-item> - <el-form-item :label="formLabel.address" prop="address"> - <el-input v-model="form.address" :placeholder="inpTip+formLabel.address"/> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> -</template> - -<style lang="scss" scoped> - -</style> - \ No newline at end of file diff --git a/src/views/redirect/index.vue b/src/views/redirect/index.vue deleted file mode 100644 index a469960..0000000 --- a/src/views/redirect/index.vue +++ /dev/null @@ -1,14 +0,0 @@ -<template> - <div></div> -</template> - -<script setup> -import { useRoute, useRouter } from 'vue-router' - -const route = useRoute(); -const router = useRouter(); -const { params, query } = route -const { path } = params - -router.replace({ path: '/' + path, query }) -</script> \ No newline at end of file diff --git a/src/views/system/dict/index.vue b/src/views/system/dict/index.vue index 85e27a5..81625f0 100644 --- a/src/views/system/dict/index.vue +++ b/src/views/system/dict/index.vue @@ -1,38 +1,38 @@ - -<script setup name="Post"> -import { sysDictType,sysDictData} from "@/api/system/dict"; -import { onMounted } from "vue"; +<script setup> +import {sysDictType, sysDictData} from "@/api/system/dict"; +import {onMounted} from "vue"; import setPostParams from "@/utils/searchParams.js"; -const { proxy } = getCurrentInstance(); + +const {proxy} = getCurrentInstance(); const loading = ref(true); //加载状态 /** 区域table相关 */ const tableData = ref([]); //数据字典列表 -const total = ref(0); +const total = ref(0); const ids = ref([]); const single = ref(true); const multiple = ref(true); -let tableHeader = ref({ +let tableHeader = ref({ dictName: '字典名称', dictType: '字典类型', - remark:'备注', - updateTimeView:'更新时间' - }) - //获取列表数据 -const getList = async(val) => { + remark: '备注', + updateTimeView: '更新时间' +}) +//获取列表数据 +const getList = async (val) => { - loading.value = true; + loading.value = true; let postParam = setPostParams(val) - let res = await sysDictType().search(postParam) - if(res.code == 200) { - loading.value = false; - tableData.value = res.data.list; - - total.value = res.data.total; - search.page = res.data.page; - search.limit = res.data.limit; - } + let res = await sysDictType().search(postParam) + if (res.code == 200) { + loading.value = false; + tableData.value = res.data.list; + + total.value = res.data.total; + search.page = res.data.page; + search.limit = res.data.limit; + } } /** * 添加修改表单相关 @@ -41,126 +41,127 @@ const showSearch = ref(true); const title = ref(""); const data = reactive({ - //表单 - form: { - dictName:'', - dictType:'', - remark:'', - }, + //表单 + form: { + dictName: '', + dictType: '', + remark: '', + }, - //查询数据 - search: { - page: 1, //当前页 - limit: 10, //每页条数 - dictName: '', - status: '' - }, - //表单验证 - rules: { - dictName: [{ required: true, message: "请输入字典名称", trigger: "blur" }], - dictType: [{ required: true, message: "请输入字典类型", trigger: "blur" }], - }, + //查询数据 + search: { + page: 1, //当前页 + limit: 10, //每页条数 + dictName: '', + status: '' + }, + //表单验证 + rules: { + dictName: [{required: true, message: "请输入字典名称", trigger: "blur"}], + dictType: [{required: true, message: "请输入字典类型", trigger: "blur"}], + }, }); -const { search, form, rules } = toRefs(data); -/** - * 提交添加修改表单按钮 +const {search, form, rules} = toRefs(data); + +/** + * 提交添加修改表单按钮 */ function submitForm() { - - proxy.$refs["postRef"].validate(async valid => { - if (valid) { - if(!form.value.id){ - let res = await sysDictType().create(form.value) - if(res.code == 200) { - proxy.$modal.msgSuccess("添加成功") - openForm.value = false - getList() - reset() - }else{ - proxy.$modal.msgError("添加失败") - openForm.value = false - reset() - } - }else{ - let res = await sysDictType().modify(form.value) - if(res.code == 200) { - proxy.$modal.msgSuccess("修改成功") - openForm.value = false - getList() - reset() - }else{ - proxy.$modal.msgError("修改失败") - openForm.value = false - reset() - } + + proxy.$refs["postRef"].validate(async valid => { + if (valid) { + if (!form.value.id) { + let res = await sysDictType().create(form.value) + if (res.code == 200) { + proxy.$modal.msgSuccess("添加成功") + openForm.value = false + getList() + reset() + } else { + proxy.$modal.msgError("添加失败") + openForm.value = false + reset() + } + } else { + let res = await sysDictType().modify(form.value) + if (res.code == 200) { + proxy.$modal.msgSuccess("修改成功") + openForm.value = false + getList() + reset() + } else { + proxy.$modal.msgError("修改失败") + openForm.value = false + reset() + } + } } - } - }); + }); } + /** * 字典类型操作相关 */ /** 搜索按钮操作 */ function handleQuery() { - getList({keywords:search.value.dictName,page:1}); + getList({keywords: search.value.dictName, page: 1}); } + /** 重置按钮操作 */ function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); + proxy.resetForm("queryRef"); + handleQuery(); } + /** 多选框选中数据 */ function handleSelectionChange(selection) { - ids.value = selection.map(item => item.id); - single.value = selection.length != 1; - multiple.value = !selection.length; + ids.value = selection.map(item => item.id); + single.value = selection.length != 1; + multiple.value = !selection.length; } + /** 新增按钮操作 */ function handleAdd() { - reset(); - openForm.value = true; - title.value = "添加字典"; + reset(); + openForm.value = true; + title.value = "添加字典"; } /** 修改按钮操作 */ function handleUpdate(row) { - reset(); - //将表单数据更新为table对应值 - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.id = row.id - console.log('form',form.value); - openForm.value = true; - title.value = "修改字典"; + reset(); + //将表单数据更新为table对应值 + Object.keys(row).forEach(key => { + if (form.value.hasOwnProperty(key)) { + form.value[key] = row[key]; + } + }); + form.value.id = row.id + console.log('form', form.value); + openForm.value = true; + title.value = "修改字典"; } /** 删除按钮操作 */ function handleDelete(row) { - proxy.$modal.confirm('确认删除"' + row.dictName +'?') - .then(async() => { - console.log("无删除功能"); - // let res = await areaApi().remove(row.id) - // if(res.code == 200) { - // proxy.$modal.msgSuccess("删除成功"); - // openForm.value = false - // getList() - // } - }).catch(() => {}); + proxy.$modal.confirm('确认删除"' + row.dictName + '?') + .then(async () => { + console.log("无删除功能"); + }).catch(() => { + }); } /** 关闭弹窗 */ function cancel() { - openForm.value = false; - reset(); + openForm.value = false; + reset(); } + /** 表单重置 */ const reset = () => { - proxy.resetForm("postRef"); - openForm.value = false + proxy.resetForm("postRef"); + openForm.value = false } /** @@ -171,126 +172,129 @@ //判断 const isHandle = ref(false) //table -const tableDictData = ref([]); -let tableDataHeader = ref({ - dictType: '字典类型', - dictValue: '字典键值', - dictLabel: '字典描述', - remark:'备注', - }) +const tableDictData = ref([]); +let tableDataHeader = ref({ + dictType: '字典类型', + dictValue: '字典键值', + dictLabel: '字典描述', + remark: '备注', +}) //获取列表 -const getDataList = async(val) => { - console.log('val',val); - loading.value = true; - let res = await sysDictData().searchType(val) - if(res.code == 200) { - loading.value = false; - tableDictData.value = res.data; - } +const getDataList = async (val) => { + console.log('val', val); + loading.value = true; + let res = await sysDictData().searchType(val) + if (res.code == 200) { + loading.value = false; + tableDictData.value = res.data; + } } const postDataRef = ref() - //表单 +//表单 const dataForm = ref({ - dictLabel:'', - dictValue:'', - dictType:'', - remark:'' + dictLabel: '', + dictValue: '', + dictType: '', + remark: '' }) const dataRules = ref({ - dictLabel: [{ required: true, message: "请输入字典描述", trigger: "blur" }], - dictValue: [{ required: true, message: "请输入字典键值", trigger: "blur" }], + dictLabel: [{required: true, message: "请输入字典描述", trigger: "blur"}], + dictValue: [{required: true, message: "请输入字典键值", trigger: "blur"}], }) //提交 -const handleData = () =>{ - - proxy.$refs["postDataRef"].validate(async valid => { - if (valid) { - if(!dataForm.value.id){ - let res = await sysDictData().create(dataForm.value) - if(res.code == 200) { - proxy.$modal.msgSuccess("添加成功") - isHandle.value = false - getDataList(dataForm.value.dictType) - proxy.resetForm("postDataRef"); - }else{ - proxy.$modal.msgError("添加失败") - isHandle.value = false - proxy.resetForm("postDataRef"); - } - }else{ - let res = await sysDictData().modify(dataForm.value) - if(res.code == 200) { - proxy.$modal.msgSuccess("修改成功") - isHandle.value = false - getDataList(dataForm.value.dictType) - proxy.resetForm("postDataRef"); - - }else{ - proxy.$modal.msgError("修改失败") - isHandle.value = false - proxy.resetForm("postDataRef"); - } +const handleData = () => { + + proxy.$refs["postDataRef"].validate(async valid => { + if (valid) { + if (!dataForm.value.id) { + let res = await sysDictData().create(dataForm.value) + if (res.code == 200) { + proxy.$modal.msgSuccess("添加成功") + isHandle.value = false + getDataList(dataForm.value.dictType) + proxy.resetForm("postDataRef"); + } else { + proxy.$modal.msgError("添加失败") + isHandle.value = false + proxy.resetForm("postDataRef"); + } + } else { + let res = await sysDictData().modify(dataForm.value) + if (res.code == 200) { + proxy.$modal.msgSuccess("修改成功") + isHandle.value = false + getDataList(dataForm.value.dictType) + proxy.resetForm("postDataRef"); + + } else { + proxy.$modal.msgError("修改失败") + isHandle.value = false + proxy.resetForm("postDataRef"); + } + } } - } - }); + }); } //取消 -const cancelData = () =>{ - isHandle.value = false - proxy.resetForm("postDataRef"); +const cancelData = () => { + isHandle.value = false + proxy.resetForm("postDataRef"); } //查看按钮相关 -const handleDetail = (row) =>{ - getDataList(row.dictType) - openDataForm.value = true - console.log('form',dataForm.value); - dataForm.value.dictType = row.dictType - isHandle.value = false +const handleDetail = (row) => { + getDataList(row.dictType) + openDataForm.value = true + console.log('form', dataForm.value); + dataForm.value.dictType = row.dictType + isHandle.value = false } //关闭按钮相关 -const close = () =>{ - openDataForm.value = false - proxy.resetForm('postDataRef') - isHandle.value = false +const close = () => { + openDataForm.value = false + proxy.resetForm('postDataRef') + isHandle.value = false } -// 新增 + +// 新增 function handleAddData() { - let type = dataForm.value.dictType - proxy.resetForm("postDataRef"); - dataForm.value.dictType = type - console.log('form1',dataForm.value); - isHandle.value = true - if(dataForm.value.id){ - delete dataForm.value.id - } + let type = dataForm.value.dictType + proxy.resetForm("postDataRef"); + dataForm.value.dictType = type + console.log('form1', dataForm.value); + isHandle.value = true + if (dataForm.value.id) { + delete dataForm.value.id + } } /** 修改 */ async function handleUpdateData(row) { - //将表单数据更新为table对应值 - Object.keys(row).forEach(key => { - if (dataForm.value.hasOwnProperty(key)) { - dataForm.value[key] = row[key]; - } - }); - dataForm.value.id = row.id - isHandle.value = true + //将表单数据更新为table对应值 + Object.keys(row).forEach(key => { + if (dataForm.value.hasOwnProperty(key)) { + dataForm.value[key] = row[key]; + } + }); + dataForm.value.id = row.id + isHandle.value = true } /** 删除 */ function handleDeleteData(row) { - proxy.$modal.confirm('确认删除"' + row.dictValue +'?') - .then(async() => { - let res = await sysDictData().remove(row.id) - if(res.code == 200) { - proxy.$modal.msgSuccess("删除成功"); - getDataList(row.dictType) - } - }).catch(() => {}); + proxy.$modal.confirm('确认删除"' + row.dictValue + '?') + .then(async () => { + let res = await sysDictData().remove(row.id) + if (res.code == 200) { + proxy.$modal.msgSuccess("删除成功"); + getDataList(row.dictType) + } + }).catch(() => { + }); } -onMounted(async()=>{ - - getList(); + +onMounted(async () => { + + getList(); }) @@ -300,153 +304,162 @@ <!--搜索框--> <el-form :model="search" ref="queryRef" :inline="true" v-show="showSearch"> <el-form-item label="" prop="dictName"> - <el-input - v-model="search.dictName" - placeholder="请输入管点名称或编号" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> + <el-input + v-model="search.dictName" + placeholder="请输入管点名称或编号" + clearable + style="width: 200px" + @keyup.enter="handleQuery" + /> </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - - </el-form-item> + <el-form-item> + <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> + <el-button icon="Refresh" @click="resetQuery">重置</el-button> + + </el-form-item> </el-form> <!--操作按钮列--> <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> + <el-col :span="1.5"> + <el-button + type="primary" + plain + icon="Plus" + @click="handleAdd" + >新增 + </el-button> + </el-col> + <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> </el-row> <!--表格及分页--> <el-table v-loading="loading" :data="tableData" @selection-change="handleSelectionChange"> - <el-table-column type="selection" width="55" align ="center" /> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - ></el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleDetail(scope.row)">查看字典数据</el-button> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> + <el-table-column type="selection" width="55" align="center"/> + <el-table-column + v-for="(item, key, index) of tableHeader" + :prop="key.toString()" + :label="item" + :key="index" + align="center" + ></el-table-column> + <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-button link type="primary" icon="Edit" @click="handleDetail(scope.row)">查看字典数据</el-button> + <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button> + <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button> + </template> + </el-table-column> </el-table> <pagination - v-show="total > 0" - :total="total" - v-model:page="search.page" - v-model:limit="search.limit" - @pagination="getList" + v-show="total > 0" + :total="total" + v-model:page="search.page" + v-model:limit="search.limit" + @pagination="getList" /> <!-- 添加/修改弹窗 --> <el-dialog :title="title" v-model="openForm" width="45vw" center append-to-body> - <el-form class="form-box" ref="postRef" :model="form" :rules="rules"> - <el-form-item label="字典名称" prop="dictName"> - <el-input v-model="form.dictName" placeholder="请输入字典名称" /> - </el-form-item> - <el-form-item label="字典类型" prop="dictType"> - <el-input v-model="form.dictType" placeholder="请输入字典类型" /> - </el-form-item> - <el-form-item label="备注" prop="remark"> - <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /> - </el-form-item> - <el-form-item></el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> + <el-form class="form-box" ref="postRef" :model="form" :rules="rules"> + <el-form-item label="字典名称" prop="dictName"> + <el-input v-model="form.dictName" placeholder="请输入字典名称"/> + </el-form-item> + <el-form-item label="字典类型" prop="dictType"> + <el-input v-model="form.dictType" placeholder="请输入字典类型"/> + </el-form-item> + <el-form-item label="备注" prop="remark"> + <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/> + </el-form-item> + <el-form-item></el-form-item> + </el-form> + <template #footer> + <div class="dialog-footer"> + <el-button type="primary" @click="submitForm">确 定</el-button> + <el-button @click="cancel">取 消</el-button> + </div> + </template> </el-dialog> <!-- 字典数据弹窗 --> <el-dialog title="字典数据" v-model="openDataForm" width="50vw" center append-to-body> - <!--操作按钮列--> - <el-row> - <el-col> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAddData" - >新增</el-button> - </el-col> - </el-row> - <!--表格--> - <el-table v-loading="loading" :data="tableDictData"> - <el-table-column - v-for="(item, key, index) of tableDataHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - - > - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link :type="dataForm.dictValue == scope.row.dictValue ? 'warning' : 'primary'" icon="Edit" @click="handleUpdateData(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" @click="handleDeleteData(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <el-form title="添加数据" v-show="isHandle" class="dataForm-box" ref="postDataRef" :rules="dataRules" :model="dataForm" inline label-width="100px"> - <el-form-item prop="dictType"> - <span>{{ dataForm.dictType }}</span> - </el-form-item> - <el-form-item prop="dictValue"> - <el-input v-model="dataForm.dictValue" placeholder="请输入字典键值"></el-input> - </el-form-item> - <el-form-item prop="dictLabel"> - <el-input v-model="dataForm.dictLabel" placeholder="请输入字典描述"></el-input> - </el-form-item> - <el-form-item prop="remark"> - <el-input v-model="dataForm.remark" placeholder="请输入备注"></el-input> - </el-form-item> - <el-form-item> - <el-button type="primary" @click="handleData">确 认</el-button> - <el-button @click="cancelData">取 消</el-button> - </el-form-item> - </el-form> - - <template #footer> - <div class="dialog-footer"> - <el-button @click="close">关 闭</el-button> - </div> - </template> - </el-dialog> + <!--操作按钮列--> + <el-row> + <el-col> + <el-button + type="primary" + plain + icon="Plus" + @click="handleAddData" + >新增 + </el-button> + </el-col> + </el-row> + <!--表格--> + <el-table v-loading="loading" :data="tableDictData"> + <el-table-column + v-for="(item, key, index) of tableDataHeader" + :prop="key.toString()" + :label="item" + :key="index" + align="center" + + > + </el-table-column> + <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-button link :type="dataForm.dictValue == scope.row.dictValue ? 'warning' : 'primary'" + icon="Edit" @click="handleUpdateData(scope.row)">修改 + </el-button> + <el-button link type="primary" icon="Delete" @click="handleDeleteData(scope.row)">删除 + </el-button> + </template> + </el-table-column> + </el-table> + <el-form title="添加数据" v-show="isHandle" class="dataForm-box" ref="postDataRef" :rules="dataRules" + :model="dataForm" inline label-width="100px"> + <el-form-item prop="dictType"> + <span>{{ dataForm.dictType }}</span> + </el-form-item> + <el-form-item prop="dictValue"> + <el-input v-model="dataForm.dictValue" placeholder="请输入字典键值"></el-input> + </el-form-item> + <el-form-item prop="dictLabel"> + <el-input v-model="dataForm.dictLabel" placeholder="请输入字典描述"></el-input> + </el-form-item> + <el-form-item prop="remark"> + <el-input v-model="dataForm.remark" placeholder="请输入备注"></el-input> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="handleData">确 认</el-button> + <el-button @click="cancelData">取 消</el-button> + </el-form-item> + </el-form> + + <template #footer> + <div class="dialog-footer"> + <el-button @click="close">关 闭</el-button> + </div> + </template> + </el-dialog> </div> </template> <style scoped lang="scss"> -.dataForm-box{ - background-color: #ffffff; - display:flex; - .el-form-item{ - width: 18%; - margin: 10px 1%; - span{ - margin: 0 auto; - // font-weight: 600; - } - } +.dataForm-box { + background-color: #ffffff; + display: flex; + + .el-form-item { + width: 18%; + margin: 10px 1%; + + span { + margin: 0 auto; + // font-weight: 600; + } + } } -.focus{ - color: aqua; + +.focus { + color: aqua; } </style> \ No newline at end of file diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue index 5b1e221..7cf31a6 100644 --- a/src/views/system/menu/index.vue +++ b/src/views/system/menu/index.vue @@ -45,7 +45,7 @@ align="center" :default-expand-all="isExpandAll" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" - fit="true" + :fit="true" > <el-table-column prop="name" label="菜单名称" :show-overflow-tooltip="true"></el-table-column> <el-table-column prop="icon" label="图标" align="center"> diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue index c52e7e4..b37deec 100644 --- a/src/views/system/role/index.vue +++ b/src/views/system/role/index.vue @@ -258,7 +258,7 @@ form.value = { name: '', description: '', - sort:'', + sort: 0, }; proxy.resetForm("roleRef"); } diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index f813cbb..9554149 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -67,7 +67,7 @@ <el-dialog :title="title" v-model="open" append-to-body center> <el-form class="form-box" ref="userRef" :model="form" :rules="rules"> <el-form-item label="用户名" prop="userName"> - <el-input :disabled ="form.id" v-model="form.userName" placeholder="请输入用户名称"/> + <el-input :disabled ="!!form.id" v-model="form.userName" placeholder="请输入用户名称"/> </el-form-item> <el-form-item v-if="!form.id" label="密码" prop="password"> <el-input v-model="form.password" placeholder="请输入密码" /> @@ -132,7 +132,6 @@ import user from "@/api/system/user"; import role from "@/api/system/role"; import { PREURL } from "@/config/index"; - import userClassify from "@/api/configuration/userClassify"; import { sysDictData } from "@/api/system/dict"; import setPostParams from "@/utils/searchParams.js"; const { proxy } = getCurrentInstance(); diff --git a/src/views/userCenter.vue b/src/views/userCenter.vue deleted file mode 100644 index acc225f..0000000 --- a/src/views/userCenter.vue +++ /dev/null @@ -1,218 +0,0 @@ -<template> - <div class="user-container"> - <div class="user-content"> - <div class="title">个人信息</div> - <div class="user-form"> - <div class="item"> - <div class="name">头像:</div> - <div class="image"> - <img :src="preUrl + form.headImg" class="userImage"/> - </div> - </div> - <div class="item"> - <div class="name">用户名:</div> - <div class="info">{{ form.userName }}</div> - </div> - <div class="item"> - <div class="name">昵称:</div> - <div class="info">{{ form.nickName }}</div> - </div> - <div class="item"> - <div class="name">联系方式:</div> - <div class="info">{{ form.contact }}</div> - </div> - <div class="item"> - <div class="name">邮箱:</div> - <div class="info">{{ form.email }}</div> - </div> - <div class="item"> - <div class="name">密码:</div> - <div class="info pwd"> - ******** - <el-button type="plain" @click="isShow = true">修改密码</el-button> - </div> - </div> - </div> - <div class="bottom"> - <el-button type="primary" @click="loginOut">退出登录</el-button> - </div> - <div class="footer"></div> - </div> - <el-dialog v-model="isShow"> - <div class="title">修改密码</div> - <el-form model="pwdForm" :rules="rules"> - <el-form-item prop="oldPassword" label="旧密码"> - <el-input v-model="pwdForm.oldPassword" placeholder="请输入旧密码"></el-input> - </el-form-item> - <el-form-item prop="newPassword" label="新密码"> - <el-input v-model="pwdForm.newPassword" placeholder="请输入新密码"></el-input> - </el-form-item> - <el-form-item class="handel-btn"> - <el-button @click="cancel()">取消</el-button> - <el-button type="primary" @click="modifyPwd()">提交</el-button> - </el-form-item> - </el-form> - </el-dialog> - </div> -</template> - -<script setup> -import {userDetail} from '@/api/login' -const { proxy } = getCurrentInstance(); -const form = ref({}) -import { PREURL } from "@/config/index"; -const preUrl = ref(PREURL) -const getUserInfo = async () =>{ - let id = JSON.parse(localStorage.getItem('id')) - await userDetail().get(id).then(res => { - form.value = res.data - }) -} -//修改密码 -const rules = ref({ - oldPassword: [{ required: true, trigger: "blur", message: "请输入旧密码" }], - newPassword: [{ required: true, trigger: "blur", message: "请输入新密码" }], -}) -const isShow = ref(false) -const pwdForm = ref({ - oldPassword:'', - newPassword:'', -}) -const modifyPwd = async () =>{ - await userDetail().setPsw(pwdForm.value).then(res => { - if(res.code == 200){ - proxy.$modal.msgSuccess("修改成功"); - } - }) -} -const cancel = () =>{ - isShow.value = false - pwdForm.value = {} -} -onMounted(() =>{ - getUserInfo() -}) - -</script> - -<style lang="scss" scoped> -.user-container{ - width: 100%; - padding: 1% 12%; - .user-content{ - width: 100%; - background: rgba(242, 246, 248, 0.4); - border-radius: 20px; - .title{ - width: 100%; - height:80px; - background: rgba(112, 184, 225, 0.13); - display: flex; - align-items: center; - justify-content: center; - font-size: 30px; - color: #262627; - border-top-left-radius: 20px; - border-top-right-radius: 20px; - } - .user-form{ - width: 100%; - height:550px; - padding: 10px 80px; - .item{ - width: 100%; - height: 16%; - display: flex; - justify-content:flex-start; - align-items:center; - margin-left: 10%; - .name{ - width:90px; - font-size: 20px; - color: #626268; - font-weight: bold; - margin-right: 20px; - } - .info{ - width: 70%; - height: 35%; - display: flex; - align-items:center; - border-bottom: 1px solid rgba(29, 33, 41, 0.27); - font-size: 18px; - color: rgba(66, 66, 67, 0.98); - font-weight: bold; - } - .pwd{ - display: flex; - justify-content: space-between; - align-items: center; - .el-button{ - margin-bottom: 10px; - } - } - } - } - .bottom{ - width: 100%; - height:80px; - //background: rgba(112, 184, 225, 0.13); - display: flex; - align-items: center; - justify-content: center; - font-size: 30px; - color: #262627; - } - .footer{ - width: 100%; - height:100px; - background: rgba(112, 184, 225, 0.13); - border-bottom-left-radius: 20px; - border-bottom-right-radius: 20px; - } - } - :deep(.el-dialog){ - width: 40%; - height:40vh; - padding: 10px 200px; - .title{ - width: 100%; - height: 50px; - display: flex; - justify-content:center; - align-items: center; - font-weight: bold; - font-size: 20px; - margin-bottom: 50px; - } - .el-form{ - .el-form-item{ - margin-bottom: 30px; - } - .handel-btn{ - width: 50%; - margin: 0 auto; - .el-button{ - width: 40%; - height: 35px; - display: flex; - justify-content:center; - align-items: center; - font-size: 18px; - margin: 20px auto; - letter-spacing: 6px; - } - } - } - } -} -.image{ - border:1px solid rgba(112, 184, 225, 0.32); - border-radius: 10px; - padding: 5px; -} -.userImage{ - width: 100px; - max-height:100px; -} -</style> \ No newline at end of file diff --git a/src/views/waterMeter/meterOperation/index.vue b/src/views/waterMeter/meterOperation/index.vue deleted file mode 100644 index cd10591..0000000 --- a/src/views/waterMeter/meterOperation/index.vue +++ /dev/null @@ -1,129 +0,0 @@ -<!-- - * @Author: elkers - * @Date: 2024-08-06 16:17:39 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-13 18:41:23 - * @FilePath: \water-qinghe-web\src\views\waterMeter\meterOperation\index.vue - * @Description: 水表检定 ---> - - <script setup> - import meterOperationApi from "@/api/waterMeterApi/meterOperation"; -import { nameReg ,phoneReg } from "@/utils/regular"; - import setPostParams from "@/utils/searchParams.js"; - - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:searchParams.value.deviceId}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const pageParam = ref({ - total:0, - limit:0, - page:1, -}) -const tableData = ref([]); -const inpTip= '请输入',selTip = '请选择'; -let tableHeader = ref({ - useFacilityId: '设备/水表编号', - comment: '操作说明', - operateIp:'ip地址', - createUserName:'操作人', - - }) - /** 获取列表 */ - const loading = ref() - async function getList(val) { - let postParam = setPostParams(val) - loading.value = true; - await meterOperationApi().search(postParam).then((res) =>{ - tableData.value = res.data.list - tableData.value.forEach((item,index) =>{ - if (item.facilityId){ - item.useFacilityId = item.facilityId - } - if(item.useWaterMeterId){ - item.useFacilityId = item.useWaterMeterId - } - }) - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - /** - * 表单相关 - */ -const searchParams = ref({ - keywords: '', -}); - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="searchParams" ref="queryRef" :inline="true"> - <el-form-item label="" prop=""> - <el-input - v-model="searchParams.deviceId" - placeholder="请输入搜索信息" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key.toString() == 'headImg'"> - <img :src="scope.row.headImg" class="table-headImg"/> - </div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" v-has="['update',route]" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" v-has="['delete',route]" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - </div> - </template> - - <style lang="scss" scoped> - -</style> - \ No newline at end of file diff --git a/src/views/waterMeter/supplier/index.vue b/src/views/waterMeter/supplier/index.vue deleted file mode 100644 index 848b71b..0000000 --- a/src/views/waterMeter/supplier/index.vue +++ /dev/null @@ -1,275 +0,0 @@ -<!-- - * @Author: elkers - * @Date: 2024-08-06 16:17:39 - * @LastEditors: Liuyi candymxq888@outlook.com - * @LastEditTime: 2024-08-14 09:34:55 - * @FilePath: \water-qinghe-web\src\views\waterMeter\supplier\index.vue - * @Description: 供应商 ---> - - <script setup> - import supplierApi from "@/api/waterMeterApi/supplier"; -import { nameReg ,phoneReg } from "@/utils/regular"; - import setPostParams from "@/utils/searchParams.js"; - - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:searchParams.value.name}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const searchParam = { - limit:10, - page:1 -} -const pageParam = ref({ - total:0, - limit:0, - page:1, -}) -const tableData = ref([]); -const inpTip= '请输入',selTip = '请选择'; -let tableHeader = ref({ - name: '供应商名称', - address: '供应商地址', - contact:'联系人', - contactPhone:'联系人电话', - createTimeView:'创建时间' - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await supplierApi().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - /** - * 表单相关 - */ -const formLabel = ({ - name: '供应商名称', - address: '供应商地址', - contact:'联系人', - contactPhone:'联系人电话', - createTimeView:'创建时间' -}) - const rules = ref({ - name: [{ required: true, message: `${inpTip+formLabel.name}`, trigger: "blur" } - - ], - address: [{ required: true, message: `${inpTip+formLabel.address}`, trigger: "blur" }], - contact: [ - { required: true, message: `${inpTip+formLabel.contact}`, trigger: "blur" }, - { pattern: nameReg, message: '请输入真实姓名!', trigger: 'blur' }, - ], - contactPhone: [ - { required: true, message: `${inpTip+formLabel.contactPhone}`, trigger: "blur" }, - { pattern: phoneReg, message: '电话号码不正确!', trigger: 'blur' }, - ], -}); -const form = ref({}); -const searchParams = ref({ - keywords: '', -}); - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - // form.value = Object.assign({},row) - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.id = row.id - open.value = true; - title.value = "修改"; - } - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.contact + '"的数据项?').then(function() { - return supplierApi().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => {}); -} - - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -//上传文件,添加图片地址信息 -const uploadData = (data) => { - form.value.headImg = data.newFileView -} - /** 提交按钮 */ - function submitForm() { - proxy.$refs["supplierRef"].validate(valid => { - if (valid) { - form.value.contactPhone = Number(form.value.contactPhone) - if (form.value.id != undefined) { - supplierApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - supplierApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - name: '', - address: '', - contact:'', - contactPhone:'' - }; - proxy.resetForm("supplierRef"); - } - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="searchParams" ref="queryRef" :inline="true"> - <el-form-item label="" prop=""> - <el-input - v-model="searchParams.name" - placeholder="请输入搜索信息" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key.toString() == 'headImg'"> - <img :src="scope.row.headImg" class="table-headImg"/> - </div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" v-has="['update',route]" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" v-has="['delete',route]" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加/修改表单 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="supplierRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item :label="formLabel.name" prop="name"> - <el-input v-model="form.name" :placeholder="inpTip+formLabel.name"/> - </el-form-item> - <el-form-item :label="formLabel.address" prop="address"> - <el-input v-model="form.address" :placeholder="inpTip+formLabel.address" /> - </el-form-item> - <el-form-item :label="formLabel.contact" prop="contact"> - <el-input v-model="form.contact" :placeholder="inpTip+formLabel.contact" /> - </el-form-item> - <el-form-item :label="formLabel.contactPhone" prop="contactPhone"> - <el-input v-model="form.contactPhone" :placeholder="inpTip+formLabel.contactPhone" /> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> - </template> - - <style lang="scss" scoped> - .el-form{ - width: 100%; - display: flex; - justify-content: space-evenly; - flex-wrap: wrap; - .el-form-item{ - width: 45%; - } - } -</style> - \ No newline at end of file diff --git a/src/views/waterMeter/useWaterMeter/index.vue b/src/views/waterMeter/useWaterMeter/index.vue deleted file mode 100644 index 7456310..0000000 --- a/src/views/waterMeter/useWaterMeter/index.vue +++ /dev/null @@ -1,289 +0,0 @@ -<!-- - * @Author: elkers - * @Date: 2024-08-06 16:17:39 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-13 18:14:55 - * @FilePath: \water-qinghe-web\src\views\waterMeter\useWaterMeter\index.vue - * @Description: 用户已绑水表 ---> - - <script setup> - import useWaterMeterApi from "@/api/waterMeterApi/useWaterMeter"; -import { nameReg ,phoneReg } from "@/utils/regular"; -import {useRoute} from "vue-router"; - import setPostParams from "@/utils/searchParams.js"; -const route = useRoute() - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:searchParams.value.sn}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const searchParam = { - limit:10, - page:1 -} -const pageParam = ref({ - total:0, - limit:0, - page:1, -}) -const tableData = ref([]); -const inpTip= '请输入',selTip = '请选择'; -let tableHeader = ref({ - sn: '水表编号', - openAddress: '开户点', - userName:'所属用户', - phone:'开户人电话', - createTimeView:'创建时间' - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await useWaterMeterApi().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - /** - * 表单相关 - */ -const formLabel = ({ - sn: '水表编号', - openAddress: '开户点', - userId:'所属用户', - phone:'开户人电话', - createTimeView:'创建时间' -}) - const rules = ref({ - sn: [{ required: true, message: `${inpTip+formLabel.sn}`, trigger: "blur" } - - ], - openAddress: [{ required: true, message: `${inpTip+formLabel.openAddress}`, trigger: "blur" }], - userId: [ - { required: true, message: `${inpTip+formLabel.userId}`, trigger: "blur" }, - { pattern: nameReg, message: '请输入真实姓名!', trigger: 'blur' }, - ], - phone: [ - { required: true, message: `${inpTip+formLabel.phone}`, trigger: "blur" }, - { pattern: phoneReg, message: '电话号码不正确!', trigger: 'blur' }, - ], -}); -const form = ref({}); -const searchParams = ref({ - keywords: '', -}); - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - // form.value = Object.assign({},row) - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.id = row.id - open.value = true; - title.value = "修改"; - } - /** - * 开关阀操作 - */ -const handleValve = async (val) =>{ - if(val.open === 1){ - proxy.$modal.confirm('确认开阀!').then(async function() { - await useWaterMeterApi().open().then(() =>{ - proxy.$modal.msgSuccess("开阀成功!"); - getList(); - }) - }) - }else if(val.open === 0){ - proxy.$modal.confirm('确认关阀!').then(async function() { - await useWaterMeterApi().close().then(() =>{ - proxy.$modal.msgSuccess("关阀成功!"); - getList(); - }) - }) - } - } -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.userId + '"的数据项?').then(function() { - return useWaterMeterApi().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功!"); - }).catch(() => {}); -} - - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -//上传文件,添加图片地址信息 -const uploadData = (data) => { - form.value.headImg = data.newFileView -} - /** 提交按钮 */ - function submitForm() { - proxy.$refs["supplierRef"].validate(valid => { - if (valid) { - form.value.phone = Number(form.value.phone) - if (form.value.id != undefined) { - useWaterMeterApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - useWaterMeterApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - sn: '', - openAddress: '', - userId:'', - phone:'' - }; - proxy.resetForm("supplierRef"); - } - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="searchParams" ref="queryRef" :inline="true"> - <el-form-item label="" prop=""> - <el-input - v-model="searchParams.sn" - placeholder="请输入搜索信息" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key.toString() == 'headImg'"> - <img :src="scope.row.headImg" class="table-headImg"/> - </div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" v-has="['update',route]" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="TurnOff" @click="handleValve(scope.row)">开阀</el-button> - <el-button link type="primary" icon="Delete" v-has="['delete',route]" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加/修改表单 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="supplierRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item :label="formLabel.sn" prop="sn"> - <el-input v-model="form.sn" :placeholder="inpTip+formLabel.sn"/> - </el-form-item> - <el-form-item :label="formLabel.openAddress" prop="openAddress"> - <el-input v-model="form.openAddress" :placeholder="inpTip+formLabel.openAddress" /> - </el-form-item> - <el-form-item :label="formLabel.userId" prop="userId"> - <el-input v-model="form.userId" :placeholder="inpTip+formLabel.userId" /> - </el-form-item> - <el-form-item :label="formLabel.phone" prop="phone"> - <el-input v-model="form.phone" :placeholder="inpTip+formLabel.phone" /> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> - </template> - - <style lang="scss" scoped> - -</style> - \ No newline at end of file diff --git a/src/views/waterMeter/verification/index.vue b/src/views/waterMeter/verification/index.vue deleted file mode 100644 index 8a9c547..0000000 --- a/src/views/waterMeter/verification/index.vue +++ /dev/null @@ -1,273 +0,0 @@ -<!-- - * @Author: elkers - * @Date: 2024-08-06 16:17:39 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-13 18:28:16 - * @FilePath: \water-qinghe-web\src\views\waterMeter\verification\index.vue - * @Description: 水表检定 ---> - - <script setup> - import verificationApi from "@/api/waterMeterApi/verification"; -import { nameReg ,phoneReg } from "@/utils/regular"; - import setPostParams from "@/utils/searchParams.js"; - - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:searchParams.value.deviceId}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ -const searchParam = { - limit:10, - page:1 -} -const pageParam = ref({ - total:0, - limit:0, - page:1, -}) -const tableData = ref([]); -const inpTip= '请输入',selTip = '请选择'; -let tableHeader = ref({ - deviceId: '水表编号', - verifyCompany: '检定单位', - verifyStaff:'检定人员', - verifyContent:'检定内容', - verifyCost:'检定结果', - verifyTime:'检定时间' - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - - let postParam = setPostParams(val) - await verificationApi().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - /** - * 表单相关 - */ -const formLabel = ({ - deviceId: '水表编号', - verifyCompany: '检定单位', - verifyStaff:'检定人员', - verifyContent:'检定内容', - verifyCost:'检定结果', - verifyTime:'检定时间' -}) - const rules = ref({ - deviceId: [{ required: true, message: `${inpTip+formLabel.deviceId}`, trigger: "blur" } - - ], - verifyCompany: [{ required: true, message: `${inpTip+formLabel.verifyCompany}`, trigger: "blur" }], - verifyStaff: [ - { required: true, message: `${inpTip+formLabel.verifyStaff}`, trigger: "blur" }, - { pattern: nameReg, message: '请输入真实姓名!', trigger: 'blur' }, - ], - verifyContent: [ - { required: true, message: `${inpTip+formLabel.verifyContent}`, trigger: "blur" }, - { pattern: phoneReg, message: '电话号码不正确!', trigger: 'blur' }, - ], -}); -const form = ref({}); -const searchParams = ref({ - keywords: '', -}); - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - // form.value = Object.assign({},row) - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.id = row.id - open.value = true; - title.value = "修改"; - } - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.verifyStaff + '"的数据项?').then(function() { - return verificationApi().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => {}); -} - - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -//上传文件,添加图片地址信息 -const uploadData = (data) => { - form.value.headImg = data.newFileView -} - /** 提交按钮 */ - function submitForm() { - proxy.$refs["supplierRef"].validate(valid => { - if (valid) { - form.value.verifyContent = Number(form.value.verifyContent) - if (form.value.id != undefined) { - verificationApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - verificationApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - deviceId: '', - verifyCompany: '', - verifyStaff:'', - verifyContent:'' - }; - proxy.resetForm("supplierRef"); - } - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="searchParams" ref="queryRef" :inline="true"> - <el-form-item label="" prop=""> - <el-input - v-model="searchParams.deviceId" - placeholder="请输入搜索信息" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key.toString() == 'headImg'"> - <img :src="scope.row.headImg" class="table-headImg"/> - </div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" v-has="['update',route]" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" v-has="['delete',route]" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加/修改表单 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="supplierRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item :label="formLabel.deviceId" prop="deviceId"> - <el-input v-model="form.deviceId" :placeholder="inpTip+formLabel.deviceId"/> - </el-form-item> - <el-form-item :label="formLabel.verifyCompany" prop="verifyCompany"> - <el-input v-model="form.verifyCompany" :placeholder="inpTip+formLabel.verifyCompany" /> - </el-form-item> - <el-form-item :label="formLabel.verifyStaff" prop="verifyStaff"> - <el-input v-model="form.verifyStaff" :placeholder="inpTip+formLabel.verifyStaff" /> - </el-form-item> - <el-form-item :label="formLabel.verifyContent" prop="verifyContent"> - <el-input v-model="form.verifyContent" :placeholder="inpTip+formLabel.verifyContent" /> - </el-form-item> - <el-form-item :label="formLabel.verifyCost" prop="verifyCost"> - <el-input v-model="form.verifyCost" :placeholder="inpTip+formLabel.verifyCost" /> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> - </template> - - <style lang="scss" scoped> - -</style> - \ No newline at end of file diff --git a/src/views/waterMeter/waterMeterInfo/index.vue b/src/views/waterMeter/waterMeterInfo/index.vue deleted file mode 100644 index 14d1f30..0000000 --- a/src/views/waterMeter/waterMeterInfo/index.vue +++ /dev/null @@ -1,298 +0,0 @@ -<!-- - * @Author: elkers - * @Date: 2024-08-06 16:17:39 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-13 17:43:00 - * @FilePath: \water-qinghe-web\src\views\waterMeter\waterMeter\index.vue - * @Description: 水表信息 ---> - - <script setup> - import waterMeterApi from "@/api/waterMeterApi/index"; - import {onMounted} from "vue"; - import userClassify from "@/api/configuration/userClassify/index.js"; - import waterModelApi from "@/api/waterMeterApi/waterModel"; - import setPostParams from "@/utils/searchParams"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:searchParams.value.modelCode}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ - -const pageParam = ref({ - total:0, - limit:0, - page:1, -}) -const tableData = ref([]); -let tableHeader = ref({ - sn: '水表编号', - modelName:'水表型号', - initialReading: '初始读数', - meterTypeView:'水表分类', - isUseView:'是否使用', - manufactureTime:'生成日期', - createTimeView:'创建时间' - }) -const rules = ref({ - sn: [{ required: true, message: "请输入水表编号", trigger: "blur" }], - modelId: [{ required: true, message: "请选择水表型号", trigger: "blur" }], - initialReading: [{ required: true, message: "请输入水表初始读数", trigger: "blur" }], - manufactureTime: [{ required: true, message: "请选择生产日期", trigger: "blur" }], - meterType: [{ required: true, message: "请选择水表分类", trigger: "blur" }], -}); -const form = ref({}); -const searchParams = ref({ - keywords: '', -}); - /** 获取列表 */ - async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await waterMeterApi().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - open.value = true; - title.value = "新增"; - } - - /** 修改按钮操作 */ - async function handleUpdate(row) { - reset(); - // form.value = Object.assign({},row) - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.id = row.id - open.value = true; - title.value = "修改"; - } - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.isUse + '"的数据项?').then(function() { - return waterMeterApi().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => {}); -} - - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); -const meterTypeList = ref([ - { id: 1, name: '用户水表' }, - { id: 2, name: '大口径水表' } - - ]) -const modelList = ref([]) - -//上传文件,添加图片地址信息 -const uploadData = (data) => { - form.value.headImg = data.newFileView -} - /** 提交按钮 */ - function submitForm() { - proxy.$refs["userRef"].validate(valid => { - if (valid) { - if (form.value.id != undefined) { - waterMeterApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - waterMeterApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - });; - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - sn: '', - modelId: undefined, - initialReading: '', - meterType: '', - manufactureTime:'', - isUse:'', - remark: '', - - }; - proxy.resetForm("userRef"); - } - onMounted(async() =>{ - // 获取用户类型 - let res1 = await waterModelApi().search({ status: 1,limit: 10000, page: 1}) - if(res1.code == 200) { - modelList.value = res1.data.list - } - }) - getList(); - </script> - <template> - <div class="app-container"> - <el-form :model="searchParams" ref="queryRef" :inline="true"> - <el-form-item label="用户名称" prop="modelCode"> - <el-input - v-model="searchParams.modelCode" - placeholder="请输入搜索内容" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key.toString() == 'headImg'"> - <img :src="scope.row.headImg" class="table-headImg"/> - </div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-modelCode="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" v-has="['update',route]" @click="handleUpdate(scope.row)">修改</el-button> - <el-button link type="primary" icon="Delete" v-has="['delete',route]" @click="handleDelete(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改权限对话框 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="userRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="水表编号" prop="sn"> - <el-input v-model="form.sn" placeholder="请输入水表编号"/> - </el-form-item> - <el-form-item label="水表型号" prop="modelId"> - <el-select v-model="form.modelId" class="m-2" placeholder="请选择" size="large"> - <el-option - v-for="item in modelList" - :key="item.id" - :label="item.model" - :title="item.model" - :value="item.id" - /> - </el-select> - </el-form-item> - <el-form-item label="水表分类" prop="meterType"> - <el-select v-model="form.meterType" class="m-2" placeholder="请选择" size="large"> - <el-option - v-for="item in meterTypeList" - :key="item.id" - :label="item.name" - :title="item.name" - :value="item.id" - /> - </el-select> - </el-form-item> - <el-form-item label="初始读数" prop="initialReading"> - <el-input v-model="form.initialReading" placeholder="请输入初始读数" /> - </el-form-item> - <el-form-item label="生产日期" prop="manufactureTime"> - <el-date-picker - v-model="form.manufactureTime" - type="date" - placeholder="请选择生产日期" - format="YYYY-MM-DD" - value-format="YYYY-MM-DD" - :disabled="isDetail ? true : false" - /> - </el-form-item> - <el-form-item label="备注信息" prop="remark"> - <el-input v-model="form.remark" placeholder="请选择" /> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> - </template> - - <style> - .table-headImg{ - width: 50px; - height: 50px; - } -</style> - \ No newline at end of file diff --git a/src/views/waterMeter/waterModel/index.vue b/src/views/waterMeter/waterModel/index.vue deleted file mode 100644 index c582223..0000000 --- a/src/views/waterMeter/waterModel/index.vue +++ /dev/null @@ -1,393 +0,0 @@ -<!-- - * @Author: elkers - * @Date: 2024-08-06 16:17:39 - * @LastEditors: hqs elkers@163.com - * @LastEditTime: 2024-08-12 10:08:12 - * @FilePath: \water-qinghe-web\src\views\waterMeter\waterModel\index.vue - * @Description: 水表型号 ---> - -<script setup> -import waterModelApi from "@/api/waterMeterApi/waterModel"; -import setPostParams from "@/utils/searchParams.js"; - -const {proxy} = getCurrentInstance(); - -/** - * 搜索相关 - */ -/** 搜索按钮操作 */ -function handleQuery() { - getList({keywords: queryParams.value.name}) -} - -/** 重置按钮操作 */ -function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); -} -/** - * Table表格权限数据列表相关 - */ - -const pageParam = ref({ - total: 0, - limit: 0, - page: 1, -}) -const tableData = ref([]); -let tableHeader = ref({ - - model: "水表型号", - type: "水表类型", - standard: "水表规格", - comMode: "通讯方式", - comProtocolName: "通讯协议", - material: "水表材质", - factory: "生产厂家", - status: '状态' - -}) - -/** 获取列表 */ -async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await waterModelApi().search(postParam).then((res) => { - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; -} - -/** 新增按钮操作 */ -async function handleAdd() { - reset(); - open.value = true; - title.value = "新增用户"; -} - -/** 修改按钮操作 */ -async function handleUpdate(row) { - reset(); - // form.value = Object.assign({},row) - Object.keys(row).forEach(key => { - if (form.value.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.id = row.id - open.value = true; - title.value = "修改"; -} - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.contact + '"的数据项?').then(function () { - return waterModelApi().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => { - }); -} - - -/** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); -formLabelWidth: 200; -const data = reactive({ - - form: {}, - queryParams: { - name: undefined, - }, - rules: { - model: [ - {required: true, message: '请输入水表型号', trigger: 'blur'}, - {max: 50, message: '长度不超过50', trigger: 'blur'}, - {pattern: '^[a-zA-Z0-9_-]+$', message: '请输入数字、字母或下划线、短横线', trigger: 'blur'}, - ], - type: [ - {required: true, message: '请选择水表类型', trigger: 'change'} - ], - standard: [ - {required: true, message: '请选择水表规格', trigger: 'change'} - ], - comMode: [ - {required: true, message: '请选择通讯方式', trigger: 'change'} - ], - comProtocolId: [ - {required: true, message: '请选择通讯协议', trigger: 'change'} - ], - material: [ - {required: true, message: '请选择水表材质', trigger: 'change'} - ], - accuracy: [ - {required: true, message: '请输入水表精度', trigger: 'blur'}, - { - pattern: '^(?!100$)(\\d{1,2}(?:\\.\\d{1,2})?|0(?:\\.\\d{1,2})?)$', - message: '请输入小于100的整数或小数(小数点后保留两位)', - trigger: 'blur' - }, - ], - factory: [ - {max: 50, message: '长度不超过50', trigger: 'blur'} - ], - comment: [ - {max: 500, message: '长度不超过500', trigger: 'blur'} - ], - }, -}); -const {queryParams, form, rules} = toRefs(data); -const type = ref([ - {name: '智能水表'}, - {name: '机械师水表'}, - {name: '预付费水表'}, - {name: '远传水表'}, - {name: '其他'}, -]) -const standard = ref([ - {name: 'DN15'}, - {name: 'DN20'}, - {name: 'DN25'}, - {name: 'DN32'}, - {name: 'DN40'}, - {name: 'DN50'}, -]) -const mode = ref([ - {name: '蓝牙'}, - {name: 'NB-loT'}, - {name: 'LoRa'}, - {name: '其他'}, -]) -const protocol = ref([ - {id: 1, name: 'modbus-RTU'}, - {id: 2, name: 'modbus-1'}, - {id: 3, name: 'modbus-2'}, -]) -const material = ref([ - {name: '铜'}, - {name: '铁'}, - {name: '不锈钢'}, - {name: '塑料'}, - {name: '其他'}, -]) -//上传文件,添加图片地址信息 -const uploadData = (data) => { - form.value.headImg = data.newFileView -} - -/** 提交按钮 */ -function submitForm() { - proxy.$refs["userRef"].validate(valid => { - if (valid) { - form.value.contactPhone = Number(form.value.contactPhone) - if (form.value.id != undefined) { - waterModelApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() => { - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - waterModelApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() => { - open.value = false; - proxy.$modal.msgError("新增失败"); - }); - ; - } - } - }); -} - -/** 取消按钮 */ -function cancel() { - open.value = false; - reset(); -} - -/** 表单重置 */ -function reset() { - form.value = { - name: '', - contact: '', - headImg: '', - contactPhone: undefined, - contact: '', - email: '', - }; - proxy.resetForm("userRef"); -} - -getList(); -</script> -<template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item label="水表型号" prop="model"> - <el-input - v-model="queryParams.name" - placeholder="请输入水表型号" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增 - </el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key.toString() == 'headImg'"> - <img :src="scope.row.headImg" class="table-headImg"/> - </div> - </template> - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" v-has="['update',route]" - @click="handleUpdate(scope.row)">修改 - </el-button> - <el-button link type="primary" icon="Delete" v-has="['delete',route]" - @click="handleDelete(scope.row)">删除 - </el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="userRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="水表型号" prop="model"> - <el-input v-model="form.name" placeholder="请输入水表型号"/> - </el-form-item> - <el-form-item label="水表类型" prop="type"> - <el-select v-model="form.type" :label-width="formLabelWidth" placeholder="请选择水表类型" - size="large"> - <el-option - v-for="item in type" - :key="item.name" - :label="item.name" - :title="item.name" - :value="item.name" - /> - </el-select> - </el-form-item> - <el-form-item label="水表规格" prop="standard"> - <el-select v-model="form.standard" class="m-2" placeholder="请选择水表规格" size="large"> - <el-option - v-for="item in standard" - :key="item.name" - :label="item.name" - :title="item.name" - :value="item.name" - /> - </el-select> - </el-form-item> - <el-form-item label="通讯方式" prop="comMode"> - <el-select v-model="form.comMode" class="m-2" placeholder="请选择通讯方式" size="large"> - <el-option - v-for="item in mode" - :key="item.name" - :label="item.name" - :title="item.name" - :value="item.name" - /> - </el-select> - </el-form-item> - <el-form-item label="通讯协议" prop="comProtocolId"> - <el-select v-model="form.comProtocolId" class="m-2" placeholder="请选择通讯协议" - size="large"> - <el-option - v-for="item in protocol" - :key="item.id" - :label="item.name" - :title="item.name" - :value="item.id" - /> - </el-select> - </el-form-item> - <el-form-item label="水表材质" prop="material"> - <el-select v-model="form.material" class="m-2" placeholder="请选择水表材质" size="large"> - <el-option - v-for="item in material" - :key="item.name" - :label="item.name" - :title="item.name" - :value="item.name" - /> - </el-select> - </el-form-item> - <el-form-item label="生产厂家" prop="material"> - <el-select v-model="form.material" class="m-2" placeholder="请选择生产厂家" size="large"> - <el-option - v-for="item in material" - :key="item.name" - :label="item.name" - :title="item.name" - :value="item.name" - /> - </el-select> - </el-form-item> - <el-form-item label="备注" prop="comment"> - <el-input v-model="form.comment" autocomplete="off" placeholder="请输入备注"></el-input> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> -</template> - -<style> -.table-headImg{ - width: 50px; - height: 50px; -} -</style> - \ No newline at end of file diff --git a/src/views/workOrderManage/accountApply/index.vue b/src/views/workOrderManage/accountApply/index.vue deleted file mode 100644 index dcd743d..0000000 --- a/src/views/workOrderManage/accountApply/index.vue +++ /dev/null @@ -1,829 +0,0 @@ - -<script setup> -import userClassify from "@/api/configuration/userClassify"; -import salePlaceApi from "@/api/configuration/bussinessApi"; -import { region } from "@/api/basicApi"; -import TieredCharging from "@/api/configuration/waterPrice"; - import waterMeterApi from "@/api/waterMeterApi/index"; - import user from "@/api/system/user"; - import archivesApi from "@/api/archivesApi/index"; -import { ElMessage } from 'element-plus' - -import { PREURL } from '@/config/index'; -import { waterMeterApplyApi } from '@/api/workOrderManage/waterMeterApplyApi/index'; -import {onMounted, ref} from 'vue'; -import {areaApi} from "@/api/area/index.js"; -const emit = defineEmits(['getTableData','setFormVisible']) -const props = defineProps({ - isDetail:{ - type: Boolean, - required: true, - default:false - }, - rowDetail:{ - type: Object, - default:{} - }, - isExecute:{ - type: Boolean, - required: true, - default:false - }, -}) -/** - * 开户表单信息 -*/ -const accountData = ref({ - workNumber: '', - userName: '', - userPhone: '',//userPhone - idCard: '', - classifyId: null, - userCode: '', - region: '', - userAddress: '',//userAddress - userUrl:'',//userUrl - businessAddress: '', - tieredChargingId: null, - installState: '', - remark: '', - operatorUser:'', - operatorUserName:'', - listDetails: [] -}) -// 选中账户Id -const accountedData = ref({ - userId:'', - listDetails: [] -}) -const waterFormRef = ref() -//判断是否已有账户 -const isNewForm = ref(false) -const userNameList = ref() -/** - * 水表表单信息 - */ - const waterMeterFormList = ref([ - { - id: null, - applyId: null, - meterSn: '', - meterStatus: '', - region: '', - areaId: '', - areaName: '', - installAddress: '', - installUser: '', - installUserName: '', - installTime: '', - installMoney: null, - createTime: null, - updateTime: '', - installState: null, - isDelete: null, - } - ]) -// 用数组储存多个水表信息中区域form-item的绑定值,方便select选项变化时,不影响其他保单已选区域数据 - const waterRegionIdlist = ref([' ']) -// const formVisible = ref() - -const meterSnList = ref([]) -const operatorUserList = ref([]) -const accountRegionId = ref('') -// const waterRegionId = ref('') -// const userDetail = ref() -const accountFormRef = ref() -const rules = ref({ - userName: [ - { required: true, message: '请输入名称', trigger: 'blur' }, - {pattern: /^[\u4e00-\u9fa5\\·]*$/, message: '请输入中文或" · "符号', trigger: 'blur'}, - ], - userPhone: [ - { required: true, message: '请输入电话号码', trigger: 'blur' }, - { pattern: /^1[3-9]\d{9}$/, message: '手机号格式不正确', trigger: 'blur' } - ], - userAddress: [ - { required: true, message: '请输入用户地址', trigger: 'blur' } - ], - idCard: [ - { required: true, message: '请输入身份证号', trigger: 'blur' }, - { pattern: /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}(\d|X|x)$/, trigger: 'blur' ,message:"身份证号格式不正确"} - ], - classifyId: [ - { required: true, message: '请选择用户类型', trigger: 'blur' } - ], - region: [ - { required: true, message: '请选择区域', trigger: 'blur' } - ], - businessAddress: [ - { required: true,message: '请选择营业网点', trigger: 'blur' } - ], - tieredChargingId: [ - { required: true, message: '请选择收费配置', trigger: 'blur' }, - ], - userUrl: [ - { required: true, message: '请上传相关资料', trigger: 'blur' } - ], - operatorUser: [ - { required: true, message: '请选择操作人', trigger: 'blur' } - ], - meterSn: [ - { required: true, message: '请选择水表编号', trigger: 'blur' } - ], - installAddress: [ - { required: true, message: '请输入安装地址', trigger: 'blur' } - ], - installUser: [ - { required: true, message: '请输入安装人员', trigger: 'blur' }, - ], - installTime: [ - { required: true, message: '请选择上门时间', trigger: 'blur' }, - ], - installMoney: [ - { required: true, message: '请输入安装金额', trigger: 'blur' }, - { pattern:/^[1-9][0-9]{0,4}$/, message: '只能输入数字', trigger: 'blur' } - ] -}) -// select用户类型 -const userTypeList = ref([]); -// select营业网点 -const businessAddressList = ref([]); -// select区域 -const regionTreeList = ref([]) - -// 安装人员选择列表 -const maintainUserList = ref() -const tieredChargingList = ref([]) - -/*/** - * 添加form表单相关 - * -*/ - -//新建账户 -const setNewForm = () =>{ - isNewForm.value = true - accountedData.value.userId = '' -} -const concel = () =>{ - isNewForm.value = false - accountData.value = {} -} - -//区域相关------------------------------------------------------------------ -//获取管网父级区域列表 -const parentAreaList = ref([]) -const getParentArea = async()=>{ - let res = await areaApi().getTree('') - console.log("分区列表",res.data) - parentAreaList.value = res.data -} -getParentArea() -const changeParentTree = (e)=>{ - // form.value.parentAreaId = e.id - waterMeterFormList.value.areaName = e.areaName - console.log('e001',e) -} -//展开所属区域树形, 请求展开区域的下一层子级数据 -const expandTree = async (data) => { - - //请求展开区域的下一层子级列表数据 - let res = await region().search(data.code) - if(res.code == 200) { - res.data.forEach((item)=>{ - if((item.children == null) && item.level!=4){ - item.children = [{}] - } - }) - data.children = res.data - } -} -//选中区域数据处理 -const changeTreeValue = (_,nodeData,form,index) => { - - let codelist = getTreeCode(nodeData, 'id') - console.log('codelist',codelist) - if(form == 1){ - accountData.value.region = codelist.join() - nextTick(()=>{ - accountRegionId.value = getTreeCode(nodeData, 'name').join(',') - }) - }else{ - waterMeterFormList.value[index].region = codelist.join() - console.log('waterMeterFormList.value001',waterMeterFormList.value) - nextTick(()=>{ - waterRegionIdlist.value[index] = getTreeCode(nodeData, 'name').join(',') - }) - } - -} -//表单添加经办人名称 -const changeOperatorUser = async (val) => { - operatorUserList.value.forEach((item) =>{ - if(item.id == val){ - accountData.value.operatorUserName = item.nickName - } - }) -// accountData.value.operatorUserName = res.data.nickName -} -//表单添加安装人员名称 -const selectChange = (val,e)=>{ - maintainUserList.value.forEach((item) =>{ - if(item.id == val){ - waterMeterFormList.value[e].installUserName = item.nickName - } - }) -} -//从当前选择区域树形查找父级code,组装为[123,456,789](xx省/xx市/xx区) -const getTreeCode = (tree, type) => { - let codeList = [] - if(tree.data.level!=1){ - codeList = codeList.concat(getTreeCode(tree.parent, type)) - codeList.push(tree.data[type]) - }else{ - return [tree.data[type]] - } - return codeList -} -//------------------------------------------------------------------ -//上传文件,添加图片地址信息 -const uploadData = (data) => { - accountData.value.userUrl = data.toString() - console.log('url',data) -} -const addWaterMeterMore = () =>{ - waterMeterFormList.value.push({ - id: null, - applyId: null, - meterSn: '', - meterStatus: '', - region: '', - installAddress: '', - installUser: '', - installUserName: '', - installTime: '', - installMoney: null, - createTime: null, - updateTime: '', - installState: null, - isDelete: null, - }) - waterRegionIdlist.value.push(' ') - // console.log('waterRegionIdlist.value',waterRegionIdlist.value) -} -const deleteWaterMeterForm = (e) =>{ - if(waterMeterFormList.value.length > 1){ - waterMeterFormList.value.splice(e,1) - waterRegionIdlist.value.splice(e,1) - // console.log('waterRegionIdlist.value',waterRegionIdlist.value) - } -} -/*/ - *提交表单 -*/ -const setWaterMeterList = () =>{ - //排除空水表 - let waterList = [] - if(waterMeterFormList.value){ - waterMeterFormList.value.forEach((item)=>{ - if(item.meterSn){ - waterList.push(item) - } - }) - } - // 将金额转为数字类型 - waterList.map((item) =>{ - if(item.installMoney && item.installMoney != 0 ){ - item.installMoney = Number(item.installMoney) - }else{ - item.installMoney = null - } - }) - return waterList -} -const submitAccountForm = async() =>{ - //判断是否已有账户 - if(!isNewForm.value){ - let waterList1 = setWaterMeterList() - // 加入水表form表单信息 - accountedData.value.listDetails = waterList1 - console.log('111',waterList1); - //提交申请 - let res = await waterMeterApplyApi().createWaterMeterApply(accountedData.value) - if(res.code == 200){ - ElMessage({message:"申请已提交!",type:'success'}) - getTableData() - emit('setFormVisible') - } - }else{ - accountFormRef.value.validate(async(validate) => { - if (validate) { - // 将url字符串转数组,方便加imageUrl前缀,再转为字符串 - // accountData.value.userUrl = accountData.value.userUrl.split(",") - // accountData.value.userUrl = accountData.value.userUrl.map((item) => PREURL + item).join() - let waterList2 = setWaterMeterList() - // 加入水表form表单信息 - accountData.value.listDetails = waterList2 - - // 校验资料图片是否上传 - if(accountData.value.userUrl){ - let res = await waterMeterApplyApi().createWaterMeterApply(accountData.value) - if(res.code == 200){ - ElMessage({message:"申请已提交!",type:'success'}) - getTableData() - emit('setFormVisible') - } - }else{ - ElMessage({message:"请上传资料!",type:'error'}) - } - } - }) - } -} -const concelAccountForm = () =>{ - emit('setFormVisible') -} - -/** - * @name 执行工单 - * @description executeType【1待安装 2安装中 3已安装 4撤销工单】 -**/ -// 提交接受安装 -const acceptAccountForm = async() =>{ - let res = await waterMeterApplyApi().executeWaterMeterApply({id:accountData.value.id,executeType:2}) - if(res.code == 200){ - ElMessage({message:'接受成功!',type:'success'}) - emit('setFormVisible') - }else{ - ElMessage({message:'网络错误,请刷新再试!',type:'error'}) - } -} -// 提交完成安装 -const completeAccountForm = async() =>{ - let res = await waterMeterApplyApi().executeWaterMeterApply({id:accountData.value.id,executeType:3}) - if(res.code == 200){ - ElMessage({message:'完成安装!',type:'success'}) - emit('setFormVisible') - getTableData() - }else{ - ElMessage({message:'网络错误,请刷新再试!',type:'error'}) - } -} -// 撤销安装 -const revokeAccountForm = async() =>{ - let res = await waterMeterApplyApi().executeWaterMeterApply({id:accountData.value.id,executeType:4}) - if(res.code == 200){ - ElMessage({message:'撤销成功!',type:'success'}) - emit('setFormVisible') - getTableData() - }else{ - ElMessage({message:'网络错误,请刷新再试!',type:'error'}) - } -} -const getTableData = () =>{ - emit('getTableData') -} -onMounted(async() =>{ - // 进入执行页 - if(props.isDetail){ - // 根据该列表行id值获取该申请单详细信息 - let res0 = await waterMeterApplyApi().getWaterMeterApply(props.rowDetail.id) - accountData.value = res0.data - console.log("申请详情", res0.data) - let res1=await areaApi().get(res0.data.areaId); - console.log("分区详情", res1.data) - waterMeterFormList.value[0].meterSn = res0.data.meterSn - waterMeterFormList.value[0].regionName = res0.data.regionName - waterMeterFormList.value[0].installAddress = res0.data.installAddress - waterMeterFormList.value[0].installUser = res0.data.installUser - waterMeterFormList.value[0].installMoney = res0.data.installMoney - waterMeterFormList.value[0].installTime = res0.data.installTime - waterMeterFormList.value[0].areaName = res1.data.areaName - }else{ - // 进入申请页 - accountData.value = {} - waterMeterFormList.value = [ - { - id: null, - applyId: null, - meterSn: '', - meterStatus: '', - region: '', - areaId: null, - areaName: '', - installAddress: '', - installUser: '', - installUserName: '', - installTime: null, - installMoney: null, - createTime: null, - updateTime: '', - installState: null, - isDelete: null, - } - ] - } - let searchDefeult = { limit:10000,page:1} - // 获取各select选项列表 - // 获取营业网点列表 - let res0 = await salePlaceApi().search(searchDefeult) - if(res0.code == 200){ - businessAddressList.value = res0.data.list - } - // 获取用户类型 - let res1 = await userClassify().search({ status: 1,limit: 10000, page: 1}) - if(res1.code == 200) { - userTypeList.value = res1.data.list - } - //获取区域信息 - let res2 = await region().search('') - if(res2.code == 200) { - res2.data.forEach((item)=>{ - if(item.children == null){ - item.children = [{}] - } - }) - regionTreeList.value = res2.data - // regionTreeList.value = listToTree(res2.data) - } - // 获取水表编号 // limit暂定10000 - let res3 = await waterMeterApi().getIsUse(0) - if(res3.code == 200){ - meterSnList.value = res3.data - } - // 请求阶梯类型 - let res4 = await TieredCharging().search(searchDefeult) - if(res4.code == 200){ - tieredChargingList.value = res4.data.list - } - // 获取用户档案列表 - let res5 = await archivesApi().search({limit: 10000, status: 1,page:1}) - if (res5.code == 200) { - userNameList.value = res5.data.list - } - //获取用户列表,经办人&&维修账号列表选择 - let res6 = await user().search({limit: 10000, status: 1,page:1}) - if (res6.code == 200) { - operatorUserList.value = res6.data.list - maintainUserList.value = res6.data.list - } - // 获取维修账号列表信息 - // let res7 = await userApi().searchUser({ limit: 1000, status:1 ,companyId:userDetail.value.customerCompany}) - // if(res7.code == 200){ - // maintainUserList.value = res7.data.list - // console.log('res2.data',res7.data) - // } -}) - -</script> - -<template> - <div class="main"> - <div class="account-form"> - <div class="name">开户信息</div> - <div> - <!-- 已开户用户添加水表信息,通过选择用户名称获取开户信息 --> - <p v-if="isDetail ? false : true">*已有账户请选择,无账户请先新建账户</p> - <el-form :model="accountedData" inline > - <el-form-item v-if= "isDetail ? false : true" style="width: 50%" label="用户名称" prop="userId" > - <el-select v-model="accountedData.userId" :disabled="isDetail || isNewForm ? true : false" placeholder="请选择用户名称" clearable> - <el-option - v-for="item in userNameList" - :key="item.value" - :label="item.userName" - :title="item.userName" - :value="item.id"> - </el-option> - </el-select> - </el-form-item> - <el-form-item v-if="isDetail ? false : true"> - <el-button type="primary" @click="setNewForm">新建账户</el-button> - <el-button @click="concel">取消</el-button> - </el-form-item> - </el-form> - <!--新建账户表单--> - <el-form :model="accountData" :rules="rules" ref="accountFormRef" :label-width="80" inline> - <el-form-item v-if="isNewForm || isDetail" label="用户名称" prop="userName"> - <el-input v-model="accountData.userName" :disabled="isDetail ? true : false"></el-input> - </el-form-item> - - <el-form-item v-if="isNewForm || isDetail" label="用户类型" prop="classifyId" > - <el-select v-model="accountData.classifyId" :disabled="isDetail ? true : false" placeholder="请选择用户类型"> - <el-option - v-for="item in userTypeList" - :key="item.value" - :label="item.name" - :title="item.name" - :value="item.id"> - </el-option> - </el-select> - </el-form-item> - - <el-form-item v-if="isNewForm || isDetail" label="身份证号" prop="idCard"> - <el-input v-model="accountData.idCard" :disabled="isDetail ? true : false"></el-input> - </el-form-item> - - <el-form-item v-if="isNewForm || isDetail" label="电话号码" prop="userPhone"> - <el-input v-model="accountData.userPhone" :disabled="isDetail ? true : false"></el-input> - </el-form-item> - - <el-form-item v-if="isNewForm || isDetail" label="营业点" prop="businessAddress"> - <el-select v-model="accountData.businessAddress" :disabled="isDetail ? true : false" placeholder="请选择营业网点"> - <el-option - v-for="item in businessAddressList" - :key="item.value" - :label="item.name" - :title="item.name" - :value="item.id"> - </el-option> - </el-select> - </el-form-item> - - <el-form-item v-if="isNewForm" label="所属区域" prop="region"> - <el-tree-select - v-model="accountRegionId" - :data="regionTreeList" - :props="{label:'name', value:'id'}" - placeholder="请选择所属区域" - filterable - highlight-current - :check-strictly="true" - @node-expand="expandTree" - @current-change="(val1,val2) =>changeTreeValue(val1,val2,1)" - /> - <el-input v-if="isDetail ? true : false" v-model="accountData.regionName" disabled></el-input> - </el-form-item> - - <el-form-item v-if="isNewForm || isDetail" label="用户地址" prop="userAddress"> - <el-input v-model="accountData.userAddress" :disabled="isDetail ? true : false"></el-input> - </el-form-item> - - <el-form-item v-if="isNewForm || isDetail" label="收费类型" prop="tieredChargingId"> - <el-select v-model="accountData.tieredChargingId" filterable placeholder="请选择阶梯收费配置" :disabled="isDetail ? true : false"> - <el-option - v-for="item in tieredChargingList" - :key="item.id" - :label="item.name" - :title="item.name" - :value="item.id" - /> - </el-select> - </el-form-item> - <br> - <div v-if="isNewForm || isDetail" class="upload"> - <el-form-item label="资料上传" prop="userUrl"> - <upload-icons @uploadData="uploadData" :imageList="accountData.userUrl" :limit="9" :disabled = 'isDetail ? true : false'></upload-icons> - <span style="display: block;">(可上传身份证、房产证等最多9张)</span> - </el-form-item> - </div> - - <el-form-item v-if="isNewForm || isDetail" label="经办人" prop="operatorUser"> - <el-select v-model="accountData.operatorUser" @change="changeOperatorUser" filterable placeholder="请选择经办人" :disabled="isDetail ? true : false"> - <el-option - v-for="item in operatorUserList" - :key="item.id" - :label="item.nickName" - :title="item.nickName" - :value="item.id" - /> - </el-select> - <!-- <el-input v-model="accountData.operatorUser" :disabled="isDetail ? true : false"></el-input> --> - </el-form-item> - </el-form> - </div> - </div> - <div class="waterMeter-form" > - <div class ="name">水表信息</div> - <div class = form> - <div v-for="(item,index) in waterMeterFormList" :key="index" class="meters-form"> - <el-form :model="item" ref="waterFormRef" label-width="auto" > - <el-form-item label="水表编号" prop="meterSn"> - <el-select v-model="item.meterSn" :disabled="isDetail ? true : false" clearable placeholder="请选择水表编号"> - <el-option - v-for="(item) in meterSnList" - :label="item.name" - :title="item.name" - :value="item.sn" - /> - </el-select> - </el-form-item> - - <el-form-item label="所属区域" prop="region"> - <el-tree-select - v-if="isDetail ? false : true" - v-model="waterRegionIdlist[index]" - :data="regionTreeList" - :props="{label:'name', value:'id'}" - placeholder="请选择所属区域" - filterable - clearable - highlight-current - :check-strictly="true" - @node-expand="expandTree" - @current-change="(val1,val2) =>changeTreeValue(val1,val2,2,index)" - /> - <el-input v-else v-model="item.regionName" disabled></el-input> - </el-form-item> - <el-form-item label="选择DMA区域" prop="areaId"> - <el-tree-select - v-if="isDetail ? false : true" - v-model="item.areaId" - :data="parentAreaList" - clearable - :props="{label:'areaName', value:'id'}" - placeholder="请选择DMA区域" - highlight-current - @current-change="changeParentTree" - :check-strictly="true" - /> - <el-input v-else v-model="item.areaName" disabled></el-input> - </el-form-item> - - <el-form-item label="安装地址" prop="installAddress"> - <el-input v-model="item.installAddress" :disabled="isDetail ? true : false"></el-input> - </el-form-item> - - <el-form-item label="安装人员" prop="installUser"> - <el-select v-model="item.installUser" :disabled="isDetail ? true : false" filterable clearable placeholder="请选择安装人员" @change="(val) =>selectChange(val,index)"> - <el-option - v-for="item in maintainUserList" - :key="item.id" - :label="item.nickName" - :title="item.nickName" - :value="item.id" - /> - </el-select> - <!-- <el-input v-model="item.installUser" :disabled="isDetail ? true : false"></el-input> --> - </el-form-item> - - <el-form-item label="上门时间" prop="installTime"> - <el-date-picker - v-model="item.installTime" - type="date" - placeholder="请选择安装日期和时间" - format="YYYY-MM-DD" - value-format="YYYY-MM-DD" - :disabled="isDetail ? true : false" - /> - <!-- <el-input v-model="item.installTime" :disabled="isDetail ? true : false"></el-input> --> - </el-form-item> - - <el-form-item label="安装费用" prop="installMoney"> - <el-input v-model="item.installMoney" :disabled="isDetail ? true : false"></el-input> - </el-form-item> - </el-form> - <el-button v-if="waterMeterFormList.length > 1 && isDetail == false" type=danger @click="deleteWaterMeterForm(index)">删除</el-button> - </div> - </div> - - </div> - <div class="add-btn"> - <el-button v-if="isDetail ? false : true" type="primary" @click= addWaterMeterMore>继续添加水表</el-button> - </div> - <div class="foot-form"> - <div> - <el-form :model="accountData" label-width="68"> - <el-form-item label="备注" prop="remark" style="width: 50%"> - <el-input v-model="accountData.remark" :disabled="isDetail ? true : false"></el-input> - </el-form-item> - <!-- 执行时额外添加创建时间项 --> - <el-form-item v-if="isDetail ? true : false" label="申请时间" prop="createTimeView"> - <el-input v-model="accountData.createTimeView" disabled></el-input> - </el-form-item> - <el-form-item v-if="isDetail ? true : false" label="执行状态" prop="installStateView"> - <el-input v-model="accountData.installStateView" disabled></el-input> - </el-form-item> - </el-form> - </div> - </div> - <div class="submit-btn"> - <el-button v-if="isDetail ? false : true" size="large" @click="concelAccountForm">取消</el-button> - <el-button v-if="isDetail ? false : true" type="primary" size="large" @click="submitAccountForm">提交申请</el-button> - </div> - <div class="Execution-btn" v-if="props.isExecute == true"> - <div> - <el-button v-if="accountData.installState==1" type="primary" size="large" @click="acceptAccountForm">接受安装</el-button> - </div> - <div> - <el-button v-if="accountData.installState==2" type="primary" size="large" @click="completeAccountForm">完成安装</el-button> - </div> - <div> - <el-button v-if="accountData.installState==1" type="primary" size="large" @click="revokeAccountForm">撤销工单</el-button> - </div> - </div> - </div> -</template> -<style lang="scss" scoped> -.main{ - background-color: rgb(244, 245, 247); - width:100%; - height: calc(100% - 30px); - border-radius:10px; - .account-form{ - width: 100%; - p{ - margin-left: 2%; - font-size: 12px; - color: #79bbff; - } - .el-form{ - margin:0 auto; - width: 96%; - //height: 100%; - .el-form-item{ - width: 22%; - } - .upload{ - width: 96%; - .el-form-item{ - width: 100%; - } - } - } - .name{ - padding: 20px 0 20px 20px; - height: 8%; - margin-left: 10px; - font-size: 22px; - font-weight: 500; - color: #414244; - } - :deep(.el-select__wrapper){ - width: 100% - } - - } - .waterMeter-form{ - width: 100%; - margin:0 auto; - .name{ - padding: 20px 0 20px 20px; - height: 8%; - margin-left: 10px; - font-size: 22px; - font-weight: 500px; - color: #414244; - } - .form{ - width: 100%; - margin:0 auto; - display: flex; - flex-wrap: wrap; - .meters-form{ - width: 30%; - margin-left:30px; - margin-bottom:10px; - border: #dcdee2 solid 1px; - border-radius: 10px; - .el-form{ - margin:15px; - // background-color: #d9dadb; - .el-form-item{ - width: 100%; - .el-select{ - width: 100%; - } - } - } - .el-button{ - margin-bottom:15px; - margin-left: 50%; - transform:translateX(-50%); - } - } - } - } - .add-btn{ - margin: 20px 0; - width: 35%; - .el-button{ - margin-left: 50%; - transform:translateX(-50%); - } - } - .foot-form{ - width: 96%; - margin:0 auto; - .el-form-item{ - width: 400px - } - } - .submit-btn{ - width: 100%; - margin: 20px 0; - height: 5%; - display: flex; - justify-content: center; - .el-button{ - margin-bottom: 10px; - } - } - .Execution-btn{ - display: flex; - justify-content: center; - div{ - margin: 0 50px 10px 80px ; - } - } -} -</style> \ No newline at end of file diff --git a/src/views/workOrderManage/meterConstruction/index.vue b/src/views/workOrderManage/meterConstruction/index.vue deleted file mode 100644 index a627c4b..0000000 --- a/src/views/workOrderManage/meterConstruction/index.vue +++ /dev/null @@ -1,449 +0,0 @@ - - <script setup name="Menu"> -// import user from "@/api/system/user"; -// import archivesApi from "@/api/archivesApi/index"; -import { ElMessage } from 'element-plus' -// import waterMeterApi from "@/api/waterMeterApi/index"; -import meterConstructionApi from '@/api/workOrderManage/meterConstructionApi/index'; -import setPostParams from "@/utils/searchParams.js"; -// import billRecord from "@/api/financial/billRecord/index"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ -const queryParams = ref({ - name: undefined, -},) - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name,page:1}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ - -const loading = ref(false); -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - id: '序号', - meterSn:"水表编号", - userName:"所属用户", - address: "施工地点", - content: "施工内容", - article: "施工携带", - operatorUser: "负责人", - workerUser: "施工人员", - typeName: "施工类型", - constructionTime: "施工日期", - completionTime: "完成日期", - comment: "备注", - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await meterConstructionApi().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - - /** 新增按钮操作 */ -// async function handleAdd() { -// reset(); -// title.value = "新增停用工单"; -// open.value = true; -// } - /** - * 新增/修改弹窗Form表单相关 - */ -// const open = ref(false); -// const loading = ref(false); -// const title = ref(""); - -// const data = reactive({ -// form:{}, -// queryParams: { -// name: undefined, -// }, -// rules: { -// userName: [{required: true, message: '请选择用户', trigger: 'blur'}], -// meterSn: [{required: true, message: '请选择需要停用的水表编号', trigger: 'blur'}], -// operatorUser: [{required: true, message: '请选择经办人', trigger: 'blur'}] -// }, -// }); -// const { queryParams, form, rules } = toRefs(data); - -//获取账号列表选择 -// const accountList = ref() -// const userList = ref() -// const getAllList = async() =>{ -// // 获取用户档案列表 -// let res1 = await archivesApi().search({limit: 10000, status: 1,page:1}) -// if (res1.code == 200) { -// userList.value = res1.data.list -// } -// //获取账号列表 -// let res2 = await user().search({limit: 10000, status: 1,page:1}) -// if (res2.code == 200) { -// accountList.value = res2.data.list -// } -// } -//选择用户获取对应水表列表 -// const meterSnList = ref() -// const changeUser = async (val) => { -// form.value.meterSn="" -// //选中用户显示用户信息 -// let user = userList.value.find((item) => item.id == val) -// Object.keys(user).forEach((key) =>{ -// if(form.value.hasOwnProperty(key)){ -// form.value[key] = user[key] -// } -// }) -// //请求该用户名下水表 -// let res3 = await waterMeterApi().getByUser(val) -// if (res3.code == 200) { -// meterSnList.value = res3.data -// } -// } -// //选中水表获取水表信息及欠费信息 -// const changeWaterMeter = async (val) => { -// let res1 = await billRecord().getMeterArrearsAmount(val) -// if (res1.code == 200) { -// form.value.isArrearage = res1.data -// } -// let meter = meterSnList.value.find((item) => item.sn == val) -// form.value.address = meter.address -// form.value.modeCode = meter.modeCode -// } -// //根据经办人id添加经办人Name -// const changeOperatorUser = async (val) => { -// accountList.value.forEach((item) =>{ -// if(item.id == val){ -// form.value.operatorUserName = item.nickName -// } -// }) -// console.log('45646',form.value); -// } -// /** 提交按钮 */ -// function submitForm() { -// proxy.$refs["formRef"].validate(valid => { -// if (valid) { -// if (form.value.id != undefined) { -// meterConstructionApi().modify(form.value).then(res => { -// proxy.$modal.msgSuccess("修改成功"); -// open.value = false; -// getList(); -// }).catch(() =>{ -// open.value = false; -// proxy.$modal.msgError("修改失败"); -// }); -// } else { -// meterConstructionApi().create(form.value).then(res => { -// proxy.$modal.msgSuccess("新增成功"); -// open.value = false; -// getList(); -// }).catch(() =>{ -// open.value = false; -// proxy.$modal.msgError("新增失败"); -// }); -// } -// } -// }); -// } - - /** 取消按钮 */ -// function cancel() { -// open.value = false; -// reset(); -// } - - /** 表单重置 */ -// function reset() { -// form.value = { -// classifyTxt: '', -// classifyId: 0, -// userAddress: "", -// address: "", -// userId: "", -// userCode: "", -// userPhone: "", -// modeCode: "", -// operatorUser: "", -// operatorUserName: "", -// idCard: "", -// userName: "", -// meterSn: "", -// businessAddress: "", -// arrearageAmount: "", -// stopTime: "", -// startTime: "", -// }; -// proxy.resetForm("formRef"); -// } - /** - * 详情、执行相关 - */ -const formDetail = ref() -const formDetailVisible = ref() -// const isExecute = ref(false) -const ToDetail = async(row) =>{ - let res = await meterConstructionApi().get(row.id) - if(res.code == 200) { - formDetail.value = res.data - } - formDetailVisible.value = true - // if(val === 2){ - // isExecute.value = true - // }else{ - // isExecute.value = false - // } -} -// 提交确认停用 -// const stopAccountForm = async() =>{ -// let res = await meterConstructionApi().execute(formDetail.value.id,3) -// if(res.code == 200){ -// ElMessage({message:'停用成功!',type:'success'}) -// } -// formDetailVisible.value = false -// getList() -// } - getList(); -// getAllList() - </script> - <template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入用户或水表编号查询" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <!-- <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> --> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button @click="ToDetail(scope.row)" link type="primary" icon="Document" title="详细信息">详情</el-button> - <!-- <el-button v-if="(scope.row.executeType == 1) || (scope.row.executeType == 2)" @click="ToDetail(scope.row)" link type="primary" icon="Document" title="详细信息">执行</el-button> --> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <!-- <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="用户名称" prop="userId"> - <el-select v-model="form.userId" class="m-2" filterable placeholder="请选择开户人" - @change="changeUser" > - <el-option - v-for="(item,index) in userList" - :key="item.id" - :label="item.userName" - :title="item.userName" - :value="item.id" - - /> - </el-select> - </el-form-item> - <el-form-item label="用户类型" prop="classifyTxt"> - {{ form.classifyTxt }} - </el-form-item> - <el-form-item label="联系电话" prop="userPhone"> - {{ form.userPhone }} - </el-form-item> - <el-form-item label="身份证号码" prop="idCard"> - {{ form.idCard }} - </el-form-item> - <el-form-item label="用户地址" prop="userAddress"> - {{ form.userAddress }} - </el-form-item> - <el-form-item label="户号" prop="userCode"> - {{ form.userCode }} - </el-form-item> - - - <el-form-item label="停用水表" prop="meterSn"> - <el-select v-model="form.meterSn" filterable - placeholder="请输入或选择水表编号" @change="changeWaterMeter"> - <el-option - v-for="item in meterSnList" - :key="item.id" - :label="item.sn" - :title="item.sn" - :value="item.sn" - /> - </el-select> - </el-form-item> - - <el-form-item label="水表型号" prop="modeCode"> - {{ form.modeCode }} - </el-form-item> - <el-form-item label="安装地址" prop="address"> - {{ form.address }} - </el-form-item> - <el-form-item label="欠费金额" prop="isArrearage"> - {{ form.isArrearage }} - </el-form-item> - - <el-form-item label="经办人" prop="operatorUser"> - <el-select v-model="form.operatorUser" class="m-2" filterable - placeholder="请选择经办人" @change="changeOperatorUser"> - <el-option - v-for="item in accountList" - :key="item.id" - :label="item.nickName" - :title="item.nickName" - :value="item.id" - /> - </el-select> - </el-form-item> - - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - --> - <el-dialog v-model="formDetailVisible" title="水表维修记录详情" style="width: 60vw;" center align-center > - <div class="detail"> - <div class="item"> - <div>水表编号:</div> - <div>{{ formDetail.meterSn }}</div> - </div> - <div class="item"> - <div>所属用户:</div> - <div>{{ formDetail.userName }}</div> - </div> - <div class="item"> - <div>施工地点:</div> - <div>{{ formDetail.address }}</div> - </div> - <div class="item"> - <div>施工内容:</div> - <div>{{ formDetail.content }}</div> - </div> - <div class="item"> - <div>施工携带:</div> - <div>{{ formDetail.article }}</div> - </div> - <div class="item"> - <div>负责人:</div> - <div>{{ formDetail.operatorUser }}</div> - </div> - <div class="item"> - <div>施工人员:</div> - <div>{{ formDetail.workerUser }}</div> - </div> - <div class="item"> - <div>施工日期:</div> - <div>{{ formDetail.constructionTime }}</div> - </div> - <div class="item"> - <div>完成日期:</div> - <div>{{ formDetail.completionTime }}</div> - </div> - <div class="item"> - <div>施工类型:</div> - <div>{{ formDetail.typeName }}</div> - </div> - <div class="item"> - <div>备注:</div> - <div>{{ formDetail.comment }}</div> - </div> - <div class="item"> - <div>状态:</div> - <div>{{ formDetail.status == 1?'正常':'停用' }}</div> - </div> - <div class="item"> - <div>创建时间:</div> - <div>{{ formDetail.createTimeView }}</div> - </div> - - <div class="item"> - <div>更新时间:</div> - <div>{{ formDetail.updateTimeView }}</div> - </div> - </div> - <template #footer> - <el-button v-if="!isExecute" @click="formDetailVisible = false" style="width:10%">关闭</el-button> - <!-- <div class="Execution-btn" v-if="isExecute"> - <div> - <el-button v-if="formDetail.executeType==1" type="primary" size="large" @click="stopAccountForm">确认停用</el-button> - </div> - </div> --> - </template> - </el-dialog> - </div> - </template> - <style> - .detail{ - display:flex; - justify-content:center; - width:100%; - flex-wrap:wrap; -.item{ - margin-bottom: 15px; - width:45%; - font-size: 18px; - display: flex; - .title{ - color: #696969; - margin-right: 10px; - } -} -} -</style> - \ No newline at end of file diff --git a/src/views/workOrderManage/waterMeterAlteration/index.vue b/src/views/workOrderManage/waterMeterAlteration/index.vue deleted file mode 100644 index ee2f3e3..0000000 --- a/src/views/workOrderManage/waterMeterAlteration/index.vue +++ /dev/null @@ -1,873 +0,0 @@ - -<script setup > - import {onMounted, reactive, ref} from 'vue' - import { ElMessage } from 'element-plus' - import archivesApi from "@/api/archivesApi/index"; - import userClassify from "@/api/configuration/userClassify"; - import salePlaceApi from "@/api/configuration/bussinessApi"; - import waterMeterApi from "@/api/waterMeterApi/index"; - import billRecord from "@/api/financial/billRecord/index"; - import { region } from "@/api/basicApi"; - import TieredCharging from "@/api/configuration/waterPrice"; - import {waterMeterAlterationApi} from '@/api/workOrderManage/waterMeterAlterationApi'; - import {PREURL} from '@/config/index'; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - //定义table数据 - const queryParams = ref({ - name: undefined, - }) - const tableData = ref([]) - const pageParam = ref({ - total:0, - limit:10, - page:0, - }) - const setTableList = reactive({ - alterationNumber: '过户单编号', - meterSn: '过户水表编号', - beforeUserName: '过户用户', - laterUserName: '承接用户', - companyName: '所属公司', - executeTypeName:'状态', - createUser: '创建人', - createTimeView:'创建时间' - }) - //弹窗 - const formVisible = ref(false) - // 添加-过户form表单 - const accountData = ref({ - userName: '', - userPhone: '', - idCard: '', - classifyTxt: '', - region: '', - userCode:'', //水表安装地址 - url:'' - - }) - const waterData = ref({ - sn:'', - tieredChargingId:'', - arrearageAmount:'', //欠费金额 - address:'', //水表安装地址 - }) - const Forms = ref({accountData:accountData.value,waterData:waterData.value}) - // 添加-承接form表单 - const alterationFormId = ref({ - beforeUserId:'', - laterUserId:'', - meterSn:'' - }) - const alterationFormData = ref({ - beforeUserId:'', - meterSn:'', - userName: '', - phone: '', - idCard: '', - classifyId: '', - listRegion: [], - address: '', - businessAddress: '', - tieredChargingId: '', - remark: '', - url: '' -}) - const businessAddress = ref() - //单独定义form表单中用户名称与水表编号,如果不单独定义,@change方法中给form表单数据赋值时会报错 - const userNameId = ref() - const snId = ref() - - const alterationFormRefNew = ref() - const alterationFormRef = ref() - const accountFormRef = ref() - // 选项列表数据 - const snList = ref() - const userNameList = ref([]) - const businessAddressList = ref([]) - const userTypeList = ref([]); - const alterationRegionId = ref([]); - const tieredChargeList = ref([]); - const regionTreeList = ref([]); - - const isShow = ref(false) - const confirmFormData = ref() - - const getTableData = async(val) =>{ - let postParam = setPostParams(val) - let res =await waterMeterAlterationApi().searchWaterMeterAlteration(postParam) - if(res.code == 200){ - tableData.value = res.data.list - tableData.value.forEach((item) =>{ - if(item.executeType == 1){ - item.executeTypeName ='待执行' - }else if(item.executeType == 2){ - item.executeTypeName ='执行中' - }else if(item.executeType == 3){ - item.executeTypeName ='已执行' - }else if(item.executeType == 4){ - item.executeTypeName ='已撤销' - }else{ - item.executeTypeName ='' - } - }) - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - } - } - - const addAccount = async() =>{ - //打开时清空数据 - Forms.value.accountData = { - userName: '', - userPhone: '', - idCard: '', - classifyTxt: '', - region: '', - userCode:'', - url:'' - } - Forms.value.waterData = { - sn:'', - tieredChargingId:'', - arrearageAmount:'', - address:'', - } - alterationFormId.value = { - beforeUserId:'', - laterUserId:'', - meterSn:'' - } - alterationFormData.value = { - beforeUserId:'', - meterSn:'', - userName: '', - phone: '', - idCard: '', - classifyId: '', - listRegion: [], - address: '', - businessAddress: businessAddress.value, - tieredChargingId: '', - remark: '', - url: '' - } - alterationRegionId.value = '' - userNameId.value = '' - snId.value = '' - formVisible.value = true - proxy.resetForm("alterationFormRefNew"); - proxy.resetForm("alterationFormRef"); - proxy.resetForm("accountFormRef"); - } - //条件搜索 - const search = () =>{ - getTableData({keywords:queryParams.value.name}) - } - - const handleChange = async(val) =>{ - Forms.value.accountData = userNameList.value.find((item) => item.id == val) - //将所属区域与详细地址拼接为完整地址,并去掉区域中的#号字符 - Forms.value.accountData.regionName = Forms.value.accountData.regionName ? Forms.value.accountData.regionName : "" - Forms.value.accountData.userAddress = Forms.value.accountData.userAddress ? Forms.value.accountData.userAddress : "" - Forms.value.accountData.region = (Forms.value.accountData.regionName +'-'+ Forms.value.accountData.userAddress).replace(/#/g,"") - //通过用户id获取该用户下的水表信息 - let res = await waterMeterApi().getByUser(Forms.value.accountData.id) - - if(res.code == 200){ - snList.value = res.data - } - Forms.value.waterData = {} - snId.value = '' - - } - const handleWaterChange = async (val) => { - //通过选中水表sn编号自动获取该水表信息 - Forms.value.waterData = snList.value.find((item) => item.sn == val) - console.log("水表编号", val) - let res1 = await billRecord().getMeterArrearsAmount(val) - if (res1.code == 200) { - Forms.value.waterData.arrearageAmount = res1.data - } - - //若欠费金额为空,则显示已结清 - Forms.value.waterData.arrearageAmount = Forms.value.waterData.arrearageAmount ? Forms.value.waterData.arrearageAmount : '已结清' - //将阶梯收费id转为name - tieredChargeList.value.forEach((item) => { - if (item.id == Forms.value.waterData.tieredChargingId) { - Forms.value.waterData.tieredChargingId = item.name - } - }) - } - //新建账户判断 - const isNewForm = ref(false) - const setNewForm = () =>{ - isShow.value = true - isNewForm.value = true - alterationFormId.value.laterUserId = '' - } - //取消清空数据 - const concelNewForm = ()=>{ - isShow.value = false - isNewForm.value = false - alterationFormData.value = { - beforeUserId:'', - meterSn:'', - userName: '', - phone: '', - idCard: '', - classifyId: '', - listRegion: [], - address: '', - businessAddress: businessAddress.value, - tieredChargingId: '', - remark: '', - url: '' - } - } - // const handleCurrentChange = (val) =>{ - // getTableData({page:val}) - // console.log('val2',val) - // } - - //上传文件,添加图片地址信息 - const uploadData = (data) => { - alterationFormData.value.url = data.toString() - } - //区域相关---------------------------------------------------------------------------- - //展开所属区域树形, 请求展开区域的下一层子级数据 - const expandTree = async (data) => { - - //请求展开区域的下一层子级列表数据 - let res = await region().search(data.code) - if(res.code == 200) { - res.data.forEach((item)=>{ - if((item.children == null) && item.level!=4){ - item.children = [{}] - } - }) - data.children = res.data - } - } - //选中区域数据处理 - const changeTreeValue = (_,nodeData) => { - console.log('alterationRegionId',nodeData); - let codelist = getTreeCode(nodeData, 'id') - // alterationFormData.value.listRegion = codelist.map((item) => item = Number(item)); - alterationFormData.value.listRegion = codelist.join().split(',') - console.log('alterationFormData.value.listRegion',alterationFormData.value.listRegion); - nextTick(()=>{ - alterationRegionId.value = getTreeCode(nodeData, 'name').join(',') - }) - - } - //从当前选择区域树形查找父级code,组装为[123,456,789](xx省/xx市/xx区) - const getTreeCode = (tree, type) => { - let codeList = [] - if(tree.data.level!=1){ - codeList = codeList.concat(getTreeCode(tree.parent, type)) - codeList.push(tree.data[type]) - }else{ - return [tree.data[type]] - } - return codeList - } - - /** - * - * 表单校验 - */ - //过户表单校验 - const accountRules = ref({ - snId: [{required: true, message: '请选择水表编号', trigger: 'blur'}], - userNameId: [ - {required: true, message: '请选择账户名称', trigger: 'blur'} - ], - }) - //老用户开户表单校验 - const rules0 = ref({ - laterUserId: [ - {required: true, message: '请选择账户名称', trigger: 'blur'} - ], - }) - //新用户开户表单校验 - const rules = ref({ - userName: [ - {required: true, message: '请输入名称', trigger: 'blur'}, - {pattern: /^[\u4e00-\u9fa5\\·]*$/, message: '请输入中文或" · "符号', trigger: 'blur'}, - ], - phone: [ - {required: true, message: '请输入电话号码', trigger: 'blur'}, - {pattern: /^1[3-9]\d{9}$/, message: '手机号格式不正确', trigger: 'blur'} - ], - address: [ - {required: true, message: '请输入用户地址', trigger: 'blur'} - ], - idCard: [ - {required: true, message: '请输入身份证号', trigger: 'blur'}, - { - pattern: /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}(\d|X|x)$/, - trigger: 'blur', - message: "身份证号格式不正确" - } - ], - classifyId: [ - {required: true, message: '请选择用户类型', trigger: 'blur'} - ], - listRegion: [ - {required: true, message: '请选择区域', trigger: 'blur'} - ], - businessAddress: [ - {required: true, message: '请选择营业网点', trigger: 'blur'} - ], - tieredChargingId: [ - {required: true, message: '请选择收费配置', trigger: 'blur'}, - ], - url: [ - {required: true, message: '请上传相关资料', trigger: 'blur'} - ], - }) - //提交过户申请 - const submitForm = async() =>{ - if(userNameId.value && snId.value){ - if(isShow.value){ - alterationFormRefNew.value.validate(async (validate) =>{ - if(validate){ - alterationFormData.value.beforeUserId = userNameId.value - alterationFormData.value.meterSn = snId.value - // 将url字符串转数组,方便加imageUrl前缀,再转为字符串 - // let url = alterationFormData.value.url.split(",") - // alterationFormData.value.url = url.map((item) => PREURL + item).join() - confirmFormData.value = alterationFormData.value - - let res = await waterMeterAlterationApi().creatWaterMeterAlteration(confirmFormData.value) - if(res.code == 200){ - ElMessage({message:"已提交过户申请!",type:'success'}) - formVisible.value = false - getTableData() - } - } - }) - }else{ - alterationFormRef.value.validate(async(validate) =>{ - if(validate){ - alterationFormId.value.beforeUserId = userNameId.value - alterationFormId.value.meterSn = snId.value - confirmFormData.value = alterationFormId.value - - let res = await waterMeterAlterationApi().creatWaterMeterAlteration(confirmFormData.value) - if(res.code == 200){ - ElMessage({message:"已提交过户申请!",type:'success'}) - formVisible.value = false - getTableData() - } - } - }) - } - }else{ - proxy.$modal.msgWarning("请选择账户名称和水表编号!"); - } - } - const cancelForm = () =>{ - formVisible.value = false - } - // 详情相关 - const formDetailVisible = ref(false) - const formDetail = ref({ - alterationNumber: '', - meterSn: '', - companyName: '', - createTimeView: '', - updateTimeView: '', - installAddress: '', - beforeUser: { - userName:'', - idCard: '', - userPhone: '', - userAddress: '', - walletBalance: '', - totalWater: '', - arrearsStatus: '', - }, - laterUser: { - userName:'', - idCard: '', - userPhone: '', - userAddress: '', - }, -}) - const ToDetail = async(row,val) =>{ - formDetailVisible.value = true - let res = await waterMeterAlterationApi().getWaterMeterAlteration(row.id) - console.log('row',row) - if(res.code == 200){ - formDetail.value = res.data - } - if(val === 2){ - isExecute.value = true - }else{ - isExecute.value = false - } - } - //执行相关 - const isExecute = ref(false) - // 提交确认过户 - const acceptAccountForm = async() =>{ - let res = await waterMeterAlterationApi().executeWaterMeterAlteration(formDetail.value.id,3) - if(res.code == 200){ - ElMessage({message:'过户成功!',type:'success'}) - } - formDetailVisible.value = false - getTableData() - } - - onMounted(async() => { - getTableData() - - // 获取用户类型列表 - let res1 = await userClassify().search({ status: 1,limit: 10000, page: 1}) - if(res1.code == 200) { - userTypeList.value = res1.data.list - } - - //获取区域列表 - let res3 = await region().search('') - if(res3.code == 200) { - res3.data.forEach((item)=>{ - if(item.children == null){ - item.children = [{}] - } - }) - regionTreeList.value = res3.data - } - // 获取用户档案列表 - - let res4 = await archivesApi().search({limit: 10000, status: 1,page:1}) - if (res4.code == 200) { - userNameList.value = res4.data.list - } - - let res5 = await salePlaceApi().search({limit:10,page:1}) - if(res5.code == 200){ - businessAddressList.value = res5.data.list - } - - // 请求阶梯类型列表 - let res6 = await TieredCharging().search({ limit: 100,page:1}) - if(res6.code == 200){ - tieredChargeList.value = res6.data.list - } - }) -</script> -<template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入用户或水表编号查询" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="search">搜索</el-button> - <el-button icon="Refresh" @click="getTableData">重置</el-button> - </el-form-item> - </el-form> - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="addAccount" - >新增</el-button> - </el-col> - </el-row> - <el-table :data="tableData"> - <el-table-column v-for="(item,key,index) of setTableList" :key="index" :prop="key.toString()" :label="item" width="180" /> - <el-table-column prop="handle" label="操作" width="180" fixed="right"> - <template #default="scope"> - <el-button @click="ToDetail(scope.row,1)" link type="primary" icon="Document">查看</el-button> - <el-button v-if="scope.row.executeType == 1 || scope.row.executeType == 2" @click="ToDetail(scope.row,2)" link type="primary" icon="EditPen" >执行</el-button> - </template> - </el-table-column> - </el-table> - <!--分页区域--> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getTableData" - /> - <el-dialog v-model="formVisible" title="水表过户" center align-center > - <div class="main"> - <p>过户人信息</p> - <el-form class="form-box1" :model="Forms.accountData" :rules="accountRules" ref="accountFormRef" label-width="auto" inline> - <el-form-item label="账户名称:" prop="userNameId"> - <el-select v-model="userNameId" placeholder="请选择用户" @change="handleChange"> - <el-option - v-for="item in userNameList" - :key="item.id" - :label="item.userName" - :title="item.userName" - :value="item.id" - /> - </el-select> - </el-form-item> - - <el-form-item label="用户类型:" prop="classifyTxt" > - <span>{{Forms.accountData.classifyTxt }}</span> - </el-form-item> - - <el-form-item label="过户水表编号:" prop="snId"> - <el-select v-model="snId" placeholder="请选择水表编号" @change=handleWaterChange> - <el-option - v-for="(item) in snList" - :label="item.sn" - :title="item.sn" - :value="item.sn" - /> - </el-select> - </el-form-item> - - <el-form-item label="用户户号:" prop="userCode"> - <span>{{Forms.accountData.userCode}}</span> - </el-form-item> - - <el-form-item label="身份证号:" prop="idCard"> - <span>{{Forms.accountData.idCard}}</span> - </el-form-item> - - <el-form-item label="开户地址:" prop="region"> - <span>{{Forms.accountData.region}}</span> - </el-form-item> - - <el-form-item label="电话号码:" prop="userPhone"> - <span>{{Forms.accountData.userPhone}}</span> - </el-form-item> - - <el-form-item label="欠费金额:" prop="arrearageAmount"> - <span>{{Forms.waterData.arrearageAmount}}</span> - </el-form-item> - - - <el-form-item label="水表安装地址:" prop="address"> - <span>{{Forms.waterData.address}}</span> - </el-form-item> - - <el-form-item label="收费类型:" prop="tieredChargingId"> - <span>{{Forms.waterData.tieredChargingId}}</span> - </el-form-item> - <br> - <div class="upload"> - <el-form-item label="用户资料:" prop="url" > - <upload-icons @uploadData="uploadData" :imageList="Forms.accountData.url" :limit="9" :disabled="true"></upload-icons> - <span style="display: block;">(身份证、房产证等)</span> - </el-form-item> - </div> - </el-form> - <!-- 承接人为老用户 --> - <p>承接人信息</p> - <div class="form2"> - <div class="formUp"> - <el-form class="form-box1" :model="alterationFormId" :rules="rules0" ref="alterationFormRef" label-width="auto" inline> - <el-form-item label="承接用户:" prop="laterUserId" > - <el-select v-model="alterationFormId.laterUserId" :disabled="isNewForm ? true : false" filterable placeholder="请选择承接用户"> - <el-option - v-for="item in userNameList" - :key="item.id" - :label="item.userName" - :title="item.userName" - :value="item.id" - /> - </el-select> - </el-form-item> - <el-form-item> - <el-button type="primary" @click="setNewForm">新建账户</el-button> - <el-button @click="concelNewForm">取消</el-button> - </el-form-item> - </el-form> - </div> - <!-- 承接人为新用户 --> - <el-form class="form-box1" v-if="isShow" :rules="rules" :model="alterationFormData" ref="alterationFormRefNew" label-width="auto" inline> - <el-form-item label="用户名称:" prop="userName"> - <el-input v-model="alterationFormData.userName" ></el-input> - </el-form-item> - - <el-form-item label="电话号码:" prop="phone"> - <el-input v-model="alterationFormData.phone" ></el-input> - </el-form-item> - - <el-form-item label="身份证号:" prop="idCard"> - <el-input v-model="alterationFormData.idCard" ></el-input> - </el-form-item> - - <el-form-item label="用户类型:" prop="classifyId" > - <el-select v-model="alterationFormData.classifyId" placeholder="请选择用户类型"> - <el-option - v-for="item in userTypeList" - :key="item.value" - :label="item.name" - :title="item.name" - :value="item.id"> - </el-option> - </el-select> - </el-form-item> - - <el-form-item label="所属区域:" prop="listRegion"> - <el-tree-select - v-model="alterationRegionId" - :data="regionTreeList" - :props="{label:'name', value:'id'}" - placeholder="请选择所属区域" - filterable - highlight-current - :check-strictly="true" - @node-expand="expandTree" - @current-change="changeTreeValue" - /> - </el-form-item> - - <el-form-item label="用户地址:" prop="address"> - <el-input v-model="alterationFormData.address" ></el-input> - </el-form-item> - - <el-form-item label="营业点:" prop="businessAddress"> - <el-select v-model="alterationFormData.businessAddress" placeholder="请选择营业网点"> - <el-option - v-for="item in businessAddressList" - :key="item.value" - :label="item.name" - :title="item.name" - :value="item.id"> - </el-option> - </el-select> - </el-form-item> - - <el-form-item label="收费类型:" prop="tieredChargingId"> - <el-select v-model="alterationFormData.tieredChargingId" filterable placeholder="请选择阶梯收费配置"> - <el-option - v-for="item in tieredChargeList" - :key="item.id" - :label="item.name" - :title="item.name" - :value="item.id" - /> - </el-select> - </el-form-item> - - <el-form-item label="备注:" prop="remark"> - <el-input type="textarea" v-model="alterationFormData.remark" maxlength="200" size="large" ></el-input> - </el-form-item> - <br> - <div class="upload"> - <el-form-item label="资料上传:" prop="url"> - <upload-icons @uploadData="uploadData" :imageList="alterationFormData.url" :limit="9" ></upload-icons> - <span style="display: block;">(可上传身份证、房产证等最多9张)</span> - </el-form-item> - </div> - </el-form> - </div> - <div class="submit-btn"> - <el-button size="large" @click="cancelForm">取消</el-button> - <el-button type="primary" size="large" @click="submitForm">确认过户</el-button> - </div> - </div> - </el-dialog> - <el-dialog v-model="formDetailVisible" :title="isExecute ? '水表过户确认' : '水表过户详情'" style="width: 60vw;" center align-center > - <div class="detail"> - <div class="item"> - <div class="title">过户单编号:</div> - <div>{{ formDetail.alterationNumber }}</div> - </div> - <div class="item"> - <div class="title">水表唯一编号:</div> - <div>{{ formDetail.meterSn }}</div> - </div> - <div class="item"> - <div class="title">所属公司名称:</div> - <div>{{ formDetail.companyName }}</div> - </div> - <div class="item"> - <div class="title">水表安装地址:</div> - <div>{{ formDetail.installAddress }}</div> - </div> - <div class="item"> - <div class="title">过户人:</div> - <div>{{ formDetail.beforeUser.userName }}</div> - </div> - <div class="item"> - <div class="title">过户人身份证号:</div> - <div>{{ formDetail.beforeUser.idCard }}</div> - </div> - <div class="item"> - <div class="title">过户人电话号码:</div> - <div>{{ formDetail.beforeUser.userPhone }}</div> - </div> - <div class="item"> - <div class="title">过户人地址:</div> - <div>{{ formDetail.beforeUser.regionName + formDetail.beforeUser.userAddress }}</div> - </div> - <div class="item"> - <div class="title">承接人:</div> - <div>{{ formDetail.laterUser.userName }}</div> - </div> - <div class="item"> - <div class="title">承接人身份证号:</div> - <div>{{ formDetail.laterUser.idCard }}</div> - </div> - <div class="item"> - <div class="title">承接人电话:</div> - <div>{{ formDetail.laterUser.userPhone }}</div> - </div> - <div class="item"> - <div class="title">承接人地址:</div> - <div>{{ formDetail.laterUser.regionName + formDetail.laterUser.userAddress }}</div> - </div> - <div class="item"> - <div>创建时间:</div> - <div>{{ formDetail.createTimeView }}</div> - </div> - <div class="item"> - <div>修改时间:</div> - <div>{{ formDetail.updateTimeView }}</div> - </div> - </div> - <template #footer> - <el-button v-if="!isExecute" @click="formDetailVisible = false" style="width:10%">关闭</el-button> - <div class="Execution-btn" v-if="isExecute"> - <div> - <el-button v-if="formDetail.executeType==1" type="primary" size="large" @click="acceptAccountForm">确认过户</el-button> - </div> - </div> - </template> - </el-dialog> - </div> -</template> - -<style lang="scss" scoped> -.main{ - width: 100%; - height: 100%; - // background-color: #f3f5f8; - border-radius: 15px; - .text-select { - height: 5%; - padding-top: 20px; - display: flex; - align-items: center; - margin-left: 20px; - :deep(.el-input) { - width: 318px !important; - height: 40px; - margin-right: 0; - margin-bottom: 2px; - } - :deep(.el-input__wrapper) { - margin-right: 0; - } - .el-button { - margin-left: 10px; - margin-right: 80px; - } - }; - p{ - margin-left: 20px; - font-size: 22px; - font-weight: 500; - color: #414244; - }; - .el-form { - padding: 20px; - width: 94%; - margin: 0 auto; - .upload{ - .el-form-item{ - width:90%; - } - } - .el-form-item{ - width:45%; - } - } - .submit-btn{ - display: flex; - justify-content: center; - .el-button{ - margin: 10px; - } - } - .add-btn{ - width: 100%; - height: 80px; - .el-button{ - margin: 25px 0 0 2.5%; - } - } - .el-table{ - width: 95%; - padding-top: 10px; - margin: 0 auto; - border-radius: 20px; - // border: solid 1px; - } - - :deep(.el-dialog) { - // text-align: left; - min-width: 954px; - max-height: 88vh; - overflow-y: auto; - border-radius: 15px; - --el-dialog-margin-top: 8vh; - .el-dialog__body { - padding: 10px; - } - } -} -.detail{ - display:flex; - justify-content:flex-start; - width:100%; - flex-wrap:wrap; - padding-left: 50px; - .item{ - margin-bottom: 15px; - width:45%; - font-size: 18px; - display: flex; - .title{ - color: #696969; - margin-right: 10px; - } -} -} -.Execution-btn{ - display: flex; - justify-content: center; - div{ - margin: 0 10px 10px 10px ; - } - } -.formUp{ - margin-bottom: 20px; -} -.form-box1{ - padding-top: 20px; - display: flex; - flex-wrap: wrap; - width: 98%; - justify-content:flex-start; - border-radius: 10px; - box-shadow: 0 0 5px 1px #ecedee; - background-color: #ffffff; - margin:0 auto; - .el-form-item{ - width: 46%; - } -} -</style> \ No newline at end of file diff --git a/src/views/workOrderManage/waterMeterChange/index.vue b/src/views/workOrderManage/waterMeterChange/index.vue deleted file mode 100644 index aec0531..0000000 --- a/src/views/workOrderManage/waterMeterChange/index.vue +++ /dev/null @@ -1,541 +0,0 @@ - - - <script setup name="Menu"> - import user from "@/api/system/user"; - import archivesApi from "@/api/archivesApi/index"; -import { ElMessage } from 'element-plus' - import waterMeterApi from "@/api/waterMeterApi/index"; -import { waterMeterChangeApi } from '@/api/workOrderManage/waterMeterChangeApi/index'; -import billRecord from "@/api/financial/billRecord/index"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name,page:1}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ - -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - id: '序号', - userName: "用户姓名", - beforeMeterSn: "更换前水表", - laterMeterSn: "更换后水表", - constructionUserName: "施工人员", - constructionTime: "上门时间", - operatorUserName: "经办人", - executeTypeView: "操作状态", - createTimeView: "创建日期", - createUserName: "创建人" - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await waterMeterChangeApi().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - title.value = "新增更换工单"; - open.value = true; - } - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -const data = reactive({ -form:{}, -queryParams: { - name: undefined, -}, -rules: { - - userName: [{required: true, message: '请选择用户', trigger: 'blur'},], - beforeMeterSn: [{required: true, message: '请选择需要更换的水表编号', trigger: 'blur'},], - laterMeterSn: [{required: true, message: '请选择更换后的水表编号', trigger: 'blur'},], - operatorUser: [{required: true, message: '请选择经办人', trigger: 'blur'},], - constructionUser: [{required: true, message: '请选择施工人员', trigger: 'blur'},], - constructionTime: [{required: true, message: '请选择上门时间', trigger: 'blur'},], -}, -}); -const { queryParams, form, rules } = toRefs(data); - -//获取账号列表选择 -const accountList = ref() -const userList = ref() -const newMeterSnList = ref() -const getAllList = async() =>{ -// 获取用户档案列表 -let res1 = await archivesApi().search({limit: 10000, status: 1,page:1}) -if (res1.code == 200) { -userList.value = res1.data.list -} -//获取账号列表 -let res2 = await user().search({limit: 10000, status: 1,page:1}) -if (res2.code == 200) { - accountList.value = res2.data.list -} -// 获取未使用水表编号 -let res3 = await waterMeterApi().getIsUse(0) -if(res3.code == 200){ - newMeterSnList.value = res3.data - console.log('456',newMeterSnList.value); -} - } -//选择用户获取对应水表列表 -const beforeMeterSnList = ref() -const changeUser = async (val) => { - form.value.beforeMeterSn="" - //选中用户显示用户信息 - let user = userList.value.find((item) => item.id == val) - Object.keys(user).forEach((key) =>{ - if(form.value.hasOwnProperty(key)){ - form.value[key] = user[key] - } - }) - //请求该用户名下水表 - let res3 = await waterMeterApi().getByUser(val) - if (res3.code == 200) { - beforeMeterSnList.value = res3.data - } -} -//选中水表获取欠费信息 -const changeWaterMeter = async (val) => { -let res1 = await billRecord().getMeterArrearsAmount(val) - if (res1.code == 200) { - form.value.isArrearage = res1.data - } - let meter = beforeMeterSnList.value.find((item) => item.sn == val) - form.value.address = meter.address - form.value.modeCode = meter.modeCode - console.log('meter',meter); -} -//根据经办人id添加经办人Name -const changeOperatorUser = async (val) => { - accountList.value.forEach((item) =>{ - if(item.id == val){ - form.value.operatorUserName = item.nickName - } - }) - console.log('45646',form.value); -} -//根据施工人员id添加施工人员Name -const changeConstructionUser = (val)=>{ - accountList.value.forEach((item) =>{ - if(item.id == val){ - form.value.constructionUserName = item.nickName - } - }) -} - /** 提交按钮 */ - function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - if (form.value.id != undefined) { - waterMeterChangeApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - waterMeterChangeApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - }); - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - classifyTxt: '', - classifyId: 0, - userId: "", - userName: "", - idCard: "", - userCode: "", - modeCode: "", - userAddress: "", - userPhone: "", - beforeMeterSn: "", - address: "", - laterMeterSn: "", - operatorUser: "", - operatorUserName: "", - arrearageAmount: "", - constructionUser:"", - constructionUserName:"", - constructionTime:"", - }; - proxy.resetForm("formRef"); - } - /** - * 详情、执行相关 - */ -const formDetail = ref() -const formDetailVisible = ref() -const isExecute = ref(false) -const ToDetail = async(row,val) =>{ - let res = await waterMeterChangeApi().get(row.id) - if(res.code == 200) { - formDetail.value = res.data - } - formDetailVisible.value = true - if(val === 2){ - isExecute.value = true - }else{ - isExecute.value = false - } -} -// 提交确认 -const acceptAccountForm = async() =>{ - let res = await waterMeterChangeApi().execute({id:formDetail.value.id,executeType:2}) - if(res.code == 200){ - ElMessage({message:'已接受更换申请!',type:'success'}) - } - formDetailVisible.value = false - getList() -} -// 提交完成 -const completeAccountForm = async() =>{ - let res = await waterMeterChangeApi().execute({id:formDetail.value.id,executeType:3}) - if(res.code == 200){ - ElMessage({message:'完成水表更换!',type:'success'}) - } - formDetailVisible.value = false - getList() -} -// 撤销 -const revokeAccountForm = async() =>{ - let res = await waterMeterChangeApi().execute({id:formDetail.value.id,executeType:4}) - if(res.code == 200){ - ElMessage({message:'撤销成功!',type:'success'}) - } - formDetailVisible.value = false - getList() -} - getList(); - getAllList() - </script> - <template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入用户或水表编号查询" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button @click="ToDetail(scope.row,1)" link type="primary" icon="Document">详情</el-button> - <el-button v-if="(scope.row.executeType == 1) || (scope.row.executeType == 2)" @click="ToDetail(scope.row,2)" link type="primary" icon="EditPen">执行</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="开户人名称" prop="userId"> - <el-select v-model="form.userId" clearable placeholder="请选择开户人" - @change="changeUser"> - <el-option - v-for="(item,index) in userList" - :key="item.id" - :label="item.userName" - :title="item.userName" - :value="item.id" - /> - </el-select> - </el-form-item> - <el-form-item label="用户类型" prop="classifyTxt">{{ - form.classifyTxt - }} - </el-form-item> - <el-form-item label="联系电话" prop="userPhone"> - {{ form.userPhone }} - </el-form-item> - <el-form-item label="身份证号码" prop="idCard"> - {{ form.idCard }} - </el-form-item> - <el-form-item label="用户地址" prop="userAddress"> - {{ form.userAddress }} - </el-form-item> - <el-form-item label="户号" prop="userId"> - {{ form.userCode }} - </el-form-item> - <el-form-item label="更换水表" prop="beforeMeterSn"> - <el-select v-model="form.beforeMeterSn" - placeholder="请选择水表编号" @change="changeWaterMeter"> - <el-option - v-for="(item,index) in beforeMeterSnList" - :key="item.id" - :label="item.sn" - :title="item.sn" - :value="item.sn" - /> - </el-select> - </el-form-item> - - <el-form-item label="水表型号" prop="modelCode"> - {{ form.modeCode }} - </el-form-item> - <el-form-item label="安装地址" prop="address"> - {{ form.address }} - </el-form-item> - <el-form-item label="欠费金额" prop="isArrearage"> - {{ form.isArrearage }} - </el-form-item> - - - <el-form-item label="新水表" prop="laterMeterSn"> - <el-select v-model="form.laterMeterSn" - placeholder="请选择水表编号" > - <el-option - v-for="item in newMeterSnList" - :key="item.id" - :label="item.sn" - :title="item.sn" - :value="item.sn" - /> - </el-select> - </el-form-item> - <el-form-item label="施工人员" prop="constructionUser"> - <el-select v-model="form.constructionUser" - placeholder="请选择施工人员" @change="changeConstructionUser"> - <el-option - v-for="item in accountList" - :key="item.id" - :label="item.nickName" - :title="item.nickName" - :value="item.id" - /> - </el-select> - </el-form-item> - <el-form-item label="上门时间" prop="constructionTime"> - <el-date-picker - v-model="form.constructionTime" - type="date" - placeholder="请选择安装日期和时间" - format="YYYY-MM-DD" - value-format="YYYY-MM-DD" - style="width: 100%" - /> - </el-form-item> - <el-form-item label="经办人" prop="operatorUser"> - <el-select v-model="form.operatorUser" - placeholder="请输入或选择经办人" @change="changeOperatorUser"> - <el-option - v-for="item in accountList" - :key="item.id" - :label="item.nickName" - :title="item.nickName" - :value="item.id" - /> - </el-select> - </el-form-item> - - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - - <el-dialog v-model="formDetailVisible" title="水表维修详情" style="width: 60vw;" center align-center > - <div class="detail"> - <div class="item"> - <div class="title">工单编号:</div> - <div>{{ formDetail.workNumber }}</div> - </div> - <div class="item"> - <div class="title">用户姓名:</div> - <div>{{ formDetail.userName }}</div> - </div> - <div class="item"> - <div class="title">用户编号:</div> - <div>{{ formDetail.userCode }}</div> - </div> - <div class="item"> - <div class="title">用户类型:</div> - <div>{{ formDetail.classifyName }}</div> - </div> - <div class="item"> - <div class="title">用户电话:</div> - <div>{{ formDetail.userPhone }}</div> - </div> - <div class="item"> - <div class="title">用户地址:</div> - <div>{{ formDetail.userAddress }}</div> - </div> - <div class="item"> - <div class="title">销户水表编号:</div> - <div>{{ formDetail.meterSn }}</div> - </div> - <div class="item"> - <div class="title">水表安装地址:</div> - <div>{{ formDetail.installAddress }}</div> - </div> - <div class="item"> - <div class="title">是否欠费:</div> - <div>{{ formDetail.isArrearage == 0 ? '否' : '是' }}</div> - </div> - <div class="item"> - <div class="title">执行状态:</div> - <div>{{ formDetail.executeTypeView }}</div> - </div> - <div class="item"> - <div>施工人员:</div> - <div>{{ formDetail.constructionUserName }}</div> - </div> - <div class="item"> - <div>上门时间:</div> - <div>{{ formDetail.constructionTime }}</div> - </div> - <div class="item"> - <div>经办人姓名:</div> - <div>{{ formDetail.operatorUserName }}</div> - </div> - <div class="item"> - <div>创建时间:</div> - <div>{{ formDetail.createTimeView }}</div> - </div> - <div class="item"> - <div>更新时间:</div> - <div>{{ formDetail.updateTime }}</div> - </div> - <div class="item"> - <div>创建人:</div> - <div>{{ formDetail.createUserName }}</div> - </div> - <div class="item"> - <div>更新人:</div> - <div>{{ formDetail.updateUserName }}</div> - </div> - </div> - <template #footer> - <el-button v-if="!isExecute" @click="formDetailVisible = false" style="width:10%">关闭</el-button> - <div class="Execution-btn" v-if="isExecute"> - <div> - <el-button v-if="formDetail.executeType==1" type="primary" size="large" @click="acceptAccountForm">接受更换</el-button> - </div> - <div> - <el-button v-if="formDetail.executeType==2" type="primary" size="large" @click="completeAccountForm">完成更换</el-button> - </div> - <div> - <el-button v-if="formDetail.executeType==1" type="primary" size="large" @click="revokeAccountForm">撤销工单</el-button> - </div> - </div> - </template> - </el-dialog> - </div> - </template> - <style> -.Execution-btn{ - display: flex; - justify-content: center; - div{ - margin: 0 10px 10px 10px; - } - } -.detail{ - display:flex; - justify-content:flex-start; - width:100%; - flex-wrap:wrap; - padding-left: 50px; - .item{ - margin-bottom: 15px; - width:45%; - font-size: 18px; - display: flex; - .title{ - color: #696969; - margin-right: 10px; - } - } -} -</style> - \ No newline at end of file diff --git a/src/views/workOrderManage/waterMeterCloseAccount/index.vue b/src/views/workOrderManage/waterMeterCloseAccount/index.vue deleted file mode 100644 index daa0f83..0000000 --- a/src/views/workOrderManage/waterMeterCloseAccount/index.vue +++ /dev/null @@ -1,516 +0,0 @@ - - - <script setup name="Menu"> - import user from "@/api/system/user"; - import archivesApi from "@/api/archivesApi/index"; -import { ElMessage } from 'element-plus' - import waterMeterApi from "@/api/waterMeterApi/index"; -import { waterMeterCloseAccountApi } from '@/api/workOrderManage/waterMeterCloseAccountApi/index'; -import billRecord from "@/api/financial/billRecord/index"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name,page:1}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ - -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - id: '序号', - workNumber: '工单编号', - userName: "用户姓名", - classifyName: "用户类型", - userCode: "户号", - userPhone: "用户电话", - businessAddress: "营业点", - userAddress: "用户地址", - meterSn: "水表编号", - installAddress: "安装地址", - isArrearageView: "是否欠费", - executeTypeView: "执行状态", - createTimeView: "创建日期", - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await waterMeterCloseAccountApi().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - title.value = "新增销户"; - open.value = true; - } - - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -const data = reactive({ -form:{}, -queryParams: { - name: undefined, -}, -rules: { - userName: [{ required: true, message: "请选择用户", trigger: "blur" }], - constructionUser: [{ required: true, message: "请选择施工人员", trigger: "blur" }], - constructionTime: [{ required: true, message: "请选择上门时间", trigger: "blur" }], - operatorUser: [{ required: true, message: "请选择经办人", trigger: "blur" }], - meterSn: [{ required: true, message: "请选择注销水表", trigger: "blur" }], -}, -}); -const { queryParams, form, rules } = toRefs(data); - - //获取账号列表选择 - const constructionUserList = ref() - const operatorUserList = ref() - const userList = ref() - const getAllList = async() =>{ - // 获取用户档案列表 - let res5 = await archivesApi().search({limit: 10000, status: 1,page:1}) - if (res5.code == 200) { - userList.value = res5.data.list - } - let res6 = await user().search({limit: 10000, status: 1,page:1}) - if (res6.code == 200) { - constructionUserList.value = res6.data.list - operatorUserList.value = res6.data.list - } - } - const waterMeterList = ref() - //选择用户获取对应水表列表 -const changeUser = async (val) => { - form.value.meterSn="" - //选中用户显示用户信息 - let user = userList.value.find((item) => item.id == val) - Object.keys(user).forEach((key) =>{ - if(form.value.hasOwnProperty(key)){ - form.value[key] = user[key] - } - }) - //请求该用户名下水表 - let res3 = await waterMeterApi().getByUser(val) - if (res3.code == 200) { - waterMeterList.value = res3.data - } -} -//选中水表获取欠费信息 -const changeWaterMeter = async (val) => { -let res1 = await billRecord().getMeterArrearsAmount(val) - if (res1.code == 200) { - form.value.isArrearage = res1.data - } -} -//根据经办人id添加经办人Name -const changeOperatorUser = async (val) => { - operatorUserList.value.forEach((item) =>{ - if(item.id == val){ - form.value.operatorUserName = item.nickName - } - }) - console.log('45646',form.value); -} -//根据施工人员id添加施工人员Name -const changeConstructionUser = (val)=>{ - constructionUserList.value.forEach((item) =>{ - if(item.id == val){ - form.value.constructionUserName = item.nickName - } - }) -} - /** 提交按钮 */ - function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - if (form.value.id != undefined) { - waterMeterCloseAccountApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - waterMeterCloseAccountApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - }); - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - classifyTxt: '', - classifyId: 0, - userId: "", - userName: "", - idCard: "", - userCode: "", - modeCode: "", - userAddress: "", - userPhone: "", - meterSn: "", - address: "", - operatorUser: "", - operatorUserName: "", - constructionUser: "", - constructionUserName: "", - constructionTime:"", - isArrearage: 0, - remark: "", - }; - proxy.resetForm("formRef"); - } - /** - * 详情、执行相关 - */ -const formDetail = ref() -const formDetailVisible = ref() -const isExecute = ref(false) -const ToDetail = async(row,val) =>{ - let res = await waterMeterCloseAccountApi().get(row.id) - if(res.code == 200) { - formDetail.value = res.data - } - formDetailVisible.value = true - if(val === 2){ - isExecute.value = true - }else{ - isExecute.value = false - } -} -// 提交确认报修 -const acceptAccountForm = async() =>{ - let res = await waterMeterCloseAccountApi().execute({id:formDetail.value.id,executeType:2}) - if(res.code == 200){ - ElMessage({message:'已接受销户申请!',type:'success'}) - } - formDetailVisible.value = false - getList() -} -// 提交完成报修 -const completeAccountForm = async() =>{ - let res = await waterMeterCloseAccountApi().execute({id:formDetail.value.id,executeType:3}) - if(res.code == 200){ - ElMessage({message:'完成销户!',type:'success'}) - } - formDetailVisible.value = false - getList() -} -// 撤销报修 -const revokeAccountForm = async() =>{ - let res = await waterMeterCloseAccountApi().execute({id:formDetail.value.id,executeType:4}) - if(res.code == 200){ - ElMessage({message:'撤销成功!',type:'success'}) - } - formDetailVisible.value = false - getList() -} - getList(); - getAllList() - </script> - <template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入水表编号" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button @click="ToDetail(scope.row,1)" link type="primary" icon="Document" title="详细信息">详情</el-button> - <el-button v-if="(scope.row.executeType == 1) || (scope.row.executeType == 2)" @click="ToDetail(scope.row,2)" link type="primary" icon="EditPen" title="详细信息">执行</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="用户名称" prop="userId"> - <el-select v-model="form.userId" filterable placeholder="请输入或选择开户人" @change="changeUser"> - <el-option - v-for="(item,index) in userList" - :key="item.id" - :label="item.userName" - :title="item.userName" - :value="item.id" - /> - </el-select> - </el-form-item> - - <el-form-item label="用户类型:" prop="classifyTxt">{{ - form.classifyTxt - }} - </el-form-item> - <el-form-item label="联系电话:" prop="userPhone"> - {{ form.userPhone }} - </el-form-item> - <el-form-item label="身份证号码:" prop="idCard"> - {{ form.idCard }} - </el-form-item> - <el-form-item label="用户地址:" prop="userAddress"> - {{ form.userAddress}} - </el-form-item> - <el-form-item label="户号:" prop="userCode"> - {{ form.userCode }} - </el-form-item> - <el-form-item label="注销水表:" prop="meterSn"> - <el-select v-model="form.meterSn" filterable - placeholder="请选择要注销的水表编号" @change="changeWaterMeter"> - <el-option - v-for="item in waterMeterList" - :key="item.id" - :label="item.sn" - :title="item.sn" - :value="item.sn" - size="large" - /> - </el-select> - </el-form-item> - <el-form-item label="欠费金额:" prop="isArrearage"> - {{ form.isArrearage }} - </el-form-item> - <el-form-item label="施工人员" prop="constructionUser"> - <el-select v-model="form.constructionUser" filterable - placeholder="请选择施工人员" @change="changeConstructionUser"> - <el-option - v-for="item in constructionUserList" - :key="item.id" - :label="item.nickName" - :title="item.nickName" - :value="item.id" - /> - </el-select> - </el-form-item> - <el-form-item label="上门时间" prop="constructionTime"> - <el-date-picker - v-model="form.constructionTime" - type="date" - placeholder="请选择安装日期和时间" - format="YYYY-MM-DD" - value-format="YYYY-MM-DD" - style="width: 100%" - /> - </el-form-item> - <el-form-item label="经办人" prop="operatorUser"> - <el-select v-model="form.operatorUser" class="m-2" filterable - placeholder="请选择经办人" @change="changeOperatorUser"> - <el-option - v-for="item in operatorUserList" - :key="item.id" - :label="item.nickName" - :title="item.nickName" - :value="item.id" - /> - </el-select> - </el-form-item> - - <el-form-item label="备注" prop="remark"> - <el-input v-model="form.remark"></el-input> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - - <el-dialog v-model="formDetailVisible" title="水表维修详情" style="width: 60vw;" center align-center > - <div class="detail"> - <div class="item"> - <div class="title">工单编号:</div> - <div>{{ formDetail.workNumber }}</div> - </div> - <div class="item"> - <div class="title">用户姓名:</div> - <div>{{ formDetail.userName }}</div> - </div> - <div class="item"> - <div class="title">用户编号:</div> - <div>{{ formDetail.userCode }}</div> - </div> - <div class="item"> - <div class="title">用户类型:</div> - <div>{{ formDetail.classifyName }}</div> - </div> - <div class="item"> - <div class="title">用户电话:</div> - <div>{{ formDetail.userPhone }}</div> - </div> - <div class="item"> - <div class="title">用户地址:</div> - <div>{{ formDetail.userAddress }}</div> - </div> - <div class="item"> - <div class="title">销户水表编号:</div> - <div>{{ formDetail.meterSn }}</div> - </div> - <div class="item"> - <div class="title">水表安装地址:</div> - <div>{{ formDetail.installAddress }}</div> - </div> - <div class="item"> - <div class="title">是否欠费:</div> - <div>{{ formDetail.isArrearage == 0 ? '否' : '是' }}</div> - </div> - <div class="item"> - <div class="title">执行状态:</div> - <div>{{ formDetail.executeTypeView }}</div> - </div> - <div class="item"> - <div>施工人员:</div> - <div>{{ formDetail.constructionUserName }}</div> - </div> - <div class="item"> - <div>上门时间:</div> - <div>{{ formDetail.constructionTime }}</div> - </div> - <div class="item"> - <div>经办人姓名:</div> - <div>{{ formDetail.operatorUserName }}</div> - </div> - <div class="item"> - <div>创建时间:</div> - <div>{{ formDetail.createTimeView }}</div> - </div> - <div class="item"> - <div>更新时间:</div> - <div>{{ formDetail.updateTime }}</div> - </div> - <div class="item"> - <div>创建人:</div> - <div>{{ formDetail.createUserName }}</div> - </div> - <div class="item"> - <div>更新人:</div> - <div>{{ formDetail.updateUserName }}</div> - </div> - </div> - <template #footer> - <el-button v-if="!isExecute" @click="formDetailVisible = false" style="width:10%">关闭</el-button> - <div class="Execution-btn" v-if="isExecute"> - <div> - <el-button v-if="formDetail.executeType==1" type="primary" size="large" @click="acceptAccountForm">接受销户</el-button> - </div> - <div> - <el-button v-if="formDetail.executeType==2" type="primary" size="large" @click="completeAccountForm">完成销户</el-button> - </div> - <div> - <el-button v-if="formDetail.executeType==1" type="primary" size="large" @click="revokeAccountForm">撤销工单</el-button> - </div> - </div> - </template> - </el-dialog> - </div> - </template> - <style> -.Execution-btn{ - display: flex; - justify-content: center; - div{ - margin: 0 10px 10px 10px; - } - } - .detail{ - display:flex; - justify-content:flex-start; - width:100%; - flex-wrap:wrap; - padding-left: 50px; - .item{ - margin-bottom: 15px; - width:45%; - font-size: 18px; - display: flex; - .title{ - color: #696969; - margin-right: 10px; - } -} -} -</style> - \ No newline at end of file diff --git a/src/views/workOrderManage/waterMeterMaintainRecords/index.vue b/src/views/workOrderManage/waterMeterMaintainRecords/index.vue deleted file mode 100644 index e97e7c7..0000000 --- a/src/views/workOrderManage/waterMeterMaintainRecords/index.vue +++ /dev/null @@ -1,438 +0,0 @@ - - <script setup name="Menu"> -// import user from "@/api/system/user"; -// import archivesApi from "@/api/archivesApi/index"; -import { ElMessage } from 'element-plus' -// import waterMeterApi from "@/api/waterMeterApi/index"; -import { waterMeterMaintainRecordsApi } from '@/api/workOrderManage/waterMeterMaintainRecordsApi/index'; -import setPostParams from "@/utils/searchParams.js"; -// import billRecord from "@/api/financial/billRecord/index"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ -const queryParams = ref({ - name: undefined, -}) - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name,page:1}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ - -const loading = ref(false); -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - id: '序号', - repairsNumber:"维修单编号", - meterSn: "水表编号", - userName:"所属用户", - maintainTime: "维修时间", - maintainStaff: "维修人员", - maintainType: "维修类型", - maintainContent: "维修内容", - maintainCost: "维修费用", - image: "图片", - comment: "备注", - createTimeView: "创建时间", - updateTimeView: "更新时间" - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await waterMeterMaintainRecordsApi().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - - /** 新增按钮操作 */ -// async function handleAdd() { -// reset(); -// title.value = "新增停用工单"; -// open.value = true; -// } - /** - * 新增/修改弹窗Form表单相关 - */ -// const open = ref(false); -// const loading = ref(false); -// const title = ref(""); - -// const data = reactive({ -// form:{}, -// queryParams: { -// name: undefined, -// }, -// rules: { -// userName: [{required: true, message: '请选择用户', trigger: 'blur'}], -// meterSn: [{required: true, message: '请选择需要停用的水表编号', trigger: 'blur'}], -// operatorUser: [{required: true, message: '请选择经办人', trigger: 'blur'}] -// }, -// }); -// const { queryParams, form, rules } = toRefs(data); - -//获取账号列表选择 -// const accountList = ref() -// const userList = ref() -// const getAllList = async() =>{ -// // 获取用户档案列表 -// let res1 = await archivesApi().search({limit: 10000, status: 1,page:1}) -// if (res1.code == 200) { -// userList.value = res1.data.list -// } -// //获取账号列表 -// let res2 = await user().search({limit: 10000, status: 1,page:1}) -// if (res2.code == 200) { -// accountList.value = res2.data.list -// } -// } -//选择用户获取对应水表列表 -// const meterSnList = ref() -// const changeUser = async (val) => { -// form.value.meterSn="" -// //选中用户显示用户信息 -// let user = userList.value.find((item) => item.id == val) -// Object.keys(user).forEach((key) =>{ -// if(form.value.hasOwnProperty(key)){ -// form.value[key] = user[key] -// } -// }) -// //请求该用户名下水表 -// let res3 = await waterMeterApi().getByUser(val) -// if (res3.code == 200) { -// meterSnList.value = res3.data -// } -// } -// //选中水表获取水表信息及欠费信息 -// const changeWaterMeter = async (val) => { -// let res1 = await billRecord().getMeterArrearsAmount(val) -// if (res1.code == 200) { -// form.value.isArrearage = res1.data -// } -// let meter = meterSnList.value.find((item) => item.sn == val) -// form.value.address = meter.address -// form.value.modeCode = meter.modeCode -// } -// //根据经办人id添加经办人Name -// const changeOperatorUser = async (val) => { -// accountList.value.forEach((item) =>{ -// if(item.id == val){ -// form.value.operatorUserName = item.nickName -// } -// }) -// console.log('45646',form.value); -// } -// /** 提交按钮 */ -// function submitForm() { -// proxy.$refs["formRef"].validate(valid => { -// if (valid) { -// if (form.value.id != undefined) { -// waterMeterMaintainRecordsApi().modify(form.value).then(res => { -// proxy.$modal.msgSuccess("修改成功"); -// open.value = false; -// getList(); -// }).catch(() =>{ -// open.value = false; -// proxy.$modal.msgError("修改失败"); -// }); -// } else { -// waterMeterMaintainRecordsApi().create(form.value).then(res => { -// proxy.$modal.msgSuccess("新增成功"); -// open.value = false; -// getList(); -// }).catch(() =>{ -// open.value = false; -// proxy.$modal.msgError("新增失败"); -// }); -// } -// } -// }); -// } - - /** 取消按钮 */ -// function cancel() { -// open.value = false; -// reset(); -// } - - /** 表单重置 */ -// function reset() { -// form.value = { -// classifyTxt: '', -// classifyId: 0, -// userAddress: "", -// address: "", -// userId: "", -// userCode: "", -// userPhone: "", -// modeCode: "", -// operatorUser: "", -// operatorUserName: "", -// idCard: "", -// userName: "", -// meterSn: "", -// businessAddress: "", -// arrearageAmount: "", -// stopTime: "", -// startTime: "", -// }; -// proxy.resetForm("formRef"); -// } - /** - * 详情、执行相关 - */ -const formDetail = ref() -const formDetailVisible = ref() -// const isExecute = ref(false) -const ToDetail = async(row) =>{ - let res = await waterMeterMaintainRecordsApi().get(row.id) - if(res.code == 200) { - formDetail.value = res.data - } - formDetailVisible.value = true - // if(val === 2){ - // isExecute.value = true - // }else{ - // isExecute.value = false - // } -} -// 提交确认停用 -// const stopAccountForm = async() =>{ -// let res = await waterMeterMaintainRecordsApi().execute(formDetail.value.id,3) -// if(res.code == 200){ -// ElMessage({message:'停用成功!',type:'success'}) -// } -// formDetailVisible.value = false -// getList() -// } - getList(); -// getAllList() - </script> - <template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入用户或水表编号查询" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <!-- <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> --> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button @click="ToDetail(scope.row)" link type="primary" icon="Document" title="详细信息">详情</el-button> - <!-- <el-button v-if="(scope.row.executeType == 1) || (scope.row.executeType == 2)" @click="ToDetail(scope.row)" link type="primary" icon="Document" title="详细信息">执行</el-button> --> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <!-- <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="用户名称" prop="userId"> - <el-select v-model="form.userId" class="m-2" filterable placeholder="请选择开户人" - @change="changeUser" > - <el-option - v-for="(item,index) in userList" - :key="item.id" - :label="item.userName" - :title="item.userName" - :value="item.id" - - /> - </el-select> - </el-form-item> - <el-form-item label="用户类型" prop="classifyTxt"> - {{ form.classifyTxt }} - </el-form-item> - <el-form-item label="联系电话" prop="userPhone"> - {{ form.userPhone }} - </el-form-item> - <el-form-item label="身份证号码" prop="idCard"> - {{ form.idCard }} - </el-form-item> - <el-form-item label="用户地址" prop="userAddress"> - {{ form.userAddress }} - </el-form-item> - <el-form-item label="户号" prop="userCode"> - {{ form.userCode }} - </el-form-item> - - - <el-form-item label="停用水表" prop="meterSn"> - <el-select v-model="form.meterSn" filterable - placeholder="请输入或选择水表编号" @change="changeWaterMeter"> - <el-option - v-for="item in meterSnList" - :key="item.id" - :label="item.sn" - :title="item.sn" - :value="item.sn" - /> - </el-select> - </el-form-item> - - <el-form-item label="水表型号" prop="modeCode"> - {{ form.modeCode }} - </el-form-item> - <el-form-item label="安装地址" prop="address"> - {{ form.address }} - </el-form-item> - <el-form-item label="欠费金额" prop="isArrearage"> - {{ form.isArrearage }} - </el-form-item> - - <el-form-item label="经办人" prop="operatorUser"> - <el-select v-model="form.operatorUser" class="m-2" filterable - placeholder="请选择经办人" @change="changeOperatorUser"> - <el-option - v-for="item in accountList" - :key="item.id" - :label="item.nickName" - :title="item.nickName" - :value="item.id" - /> - </el-select> - </el-form-item> - - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - --> - <el-dialog v-model="formDetailVisible" title="水表维修记录详情" style="width: 60vw;" center align-center > - <div class="detail"> - <div class="item"> - <div>公司id:</div> - <div>{{ formDetail.companyId }}</div> - </div> - <div class="item"> - <div>公司名称:</div> - <div>{{ formDetail.companyName }}</div> - </div> - <div class="item"> - <div>维修单编号:</div> - <div>{{ formDetail.repairsNumber }}</div> - </div> - <div class="item"> - <div>水表:</div> - <div>{{ formDetail.meterSn }}</div> - </div> - <div class="item"> - <div>所属用户:</div> - <div>{{ formDetail.userName }}</div> - </div> - <div class="item"> - <div>维修时间:</div> - <div>{{ formDetail.maintainTime }}</div> - </div> - <div class="item"> - <div>维修人员:</div> - <div>{{ formDetail.maintainStaff }}</div> - </div> - <div class="item"> - <div>维修类型:</div> - <div>{{ formDetail.maintainType }}</div> - </div> - <div class="item"> - <div>维修内容:</div> - <div>{{ formDetail.maintainContent }}</div> - </div> - <div class="item"> - <div>维修费用:</div> - <div>{{ formDetail.maintainCost }}</div> - </div> - <div class="item"> - <div>图片:</div> - <common-image :src="formDetail.image" class="common-image"></common-image> - </div> - <div class="item"> - <div>备注:</div> - <div>{{ formDetail.comment }}</div> - </div> - <div class="item"> - <div>状态:</div> - <div>{{ formDetail.status == 1?'正常':'停用' }}</div> - </div> - <div class="item"> - <div>创建时间:</div> - <div>{{ formDetail.createTimeView }}</div> - </div> - - <div class="item"> - <div>更新时间:</div> - <div>{{ formDetail.updateTimeView }}</div> - </div> - </div> - <template #footer> - <el-button v-if="!isExecute" @click="formDetailVisible = false" style="width:10%">关闭</el-button> - <!-- <div class="Execution-btn" v-if="isExecute"> - <div> - <el-button v-if="formDetail.executeType==1" type="primary" size="large" @click="stopAccountForm">确认停用</el-button> - </div> - </div> --> - </template> - </el-dialog> - </div> - </template> - <style> -</style> - \ No newline at end of file diff --git a/src/views/workOrderManage/waterMeterRepair/index.vue b/src/views/workOrderManage/waterMeterRepair/index.vue deleted file mode 100644 index 98a7ebf..0000000 --- a/src/views/workOrderManage/waterMeterRepair/index.vue +++ /dev/null @@ -1,527 +0,0 @@ - -<script setup> -import user from "@/api/system/user"; - import archivesApi from "@/api/archivesApi/index"; -import { ElMessage } from 'element-plus' - import waterMeterApi from "@/api/waterMeterApi/index"; -import { waterMeterRepairApi } from '@/api/workOrderManage/waterMeterRepairApi'; -import { onMounted, reactive, ref } from 'vue' -import setPostParams from "@/utils/searchParams.js"; - //定义table数据 - const queryParams = ref({ - name: undefined, - }) - const tableData = ref([]) - const pageParam = ref({ - total:0, - limit:10, - page:0, - }) - const setTableList = reactive({ - repairsNumber:'保修单编号', - userName: '用户名称', - meterSn:'水表编号', - repairsAddress: '报修地址', - content:"维修内容", - // maintenanceCosts:"维修费用", - maintainUserName: '维修人员', - maintainTime: '上门时间', - stateName:'状态' - }) -//弹窗 -const formVisible = ref(false) -// 添加-form表单数据定义 -const repairFormData = ref({ - userId: '', - meterSn: '', - content:'', - maintainUser: '', - maintainUserName: '', - maintainTime:'', - repairsType: '1', - remark: '', -}) -const accountFormRef = ref() -// 维修人员选择列表 -const maintainUserList = ref() -// 用户选择列表 -const userNameList = ref() -//水表单号选择列表 -const meterSnList = ref() -const rules = ref({ - userId: [ - {required: true, message: '请选择用户', trigger: 'blur'} - ], - meterSn: [ - {required: true, message: '请选择水表', trigger: 'blur'} - ], - maintainUser: [ - {required: true, message: '请选择维修人员', trigger: 'blur'} - ], - maintainTime: [ - {required: true, message: '请选择维修时间', trigger: 'blur'} - ], - content:[ - {required: true, message: '请选择维修内容', trigger: 'blur'} - ], -}) - // 添加 - const addAccount = async() =>{ - repairFormData.value = { - userId: '', - meterSn: '', - content:'', - maintainUser: '', - maintainUserName: '', - maintainTime:'', - repairsType: '1', - remark: '', - } - - // 获取用户档案列表 - let res0 = await archivesApi().search({limit: 10000, status: 1,page:1}) - if (res0.code == 200) { - userNameList.value = res0.data.list - } - // 获取维修账号列表信息 - let res1 = await user().search({limit: 10000, status: 1,page:1}) - if (res1.code == 200) { - maintainUserList.value = res1.data.list - } - - formVisible.value = true -} -//条件搜索 -const search = () =>{ - getTableData({keywords:queryParams.value.name}) -} -const handleChange = async(val) =>{ - repairFormData.value.meterSn=""; - //通过用户id获取该用户下的水表信息 - let res = await waterMeterApi().getByUser(val) - if(res.code == 200){ - meterSnList.value = res.data - } -} -const selectChange = (val)=>{ - maintainUserList.value.forEach((item) =>{ - if(item.id == val){ - repairFormData.value.maintainUserName = item.nickName - } - }) -} -// 提交表单 -const submitRepairForm = async() =>{ - accountFormRef.value.validate(async (validate) =>{ - if(validate){ - console.log('repairFormData.value ',repairFormData.value ) - let res = await waterMeterRepairApi().creatWaterMeterRepairs(repairFormData.value) - if(res.code == 200){ - ElMessage({message:'提交成功!',type:'success'}) - formVisible.value = false - getTableData() - } - } - }) -} -const cancelRepairForm = () =>{ - formVisible.value = false -} -const getTableData = async (val) => { - let postParam = setPostParams(val) - let { code, data } = await waterMeterRepairApi().searchWaterMeterRepairs(postParam) - if(code == 200) { - tableData.value = data.list - tableData.value.forEach((item) =>{ - if(item.state == 1){ - item.stateName ='待执行' - }else if(item.state == 2){ - item.stateName ='执行中' - }else if(item.state == 3){ - item.stateName ='已执行' - }else if(item.state == 4){ - item.stateName ='已撤销' - }else{ - item.stateName ='' - } - }) - pageParam.value.total = data.total - pageParam.value.limit = data.limit - pageParam.value.page = data.page - console.log('tableData.value',tableData.value) - } -} - -//详情相关 -const formDetailVisible = ref(false) -const formDetail = ref({ - repairsNumber: '', - meterSn: '', - userName: '', - userPhone: '', - repairsAddress: '', - maintainUserName: '', - maintainTime: '', - repairsTypeView: '', - stateView:'', - remark: '', - createTimeView: "2024-06-26 10:59:21", - updateTimeView: "2024-06-26 10:59:30.700", -}) -const ToDetail = async(row,val) =>{ - let res = await waterMeterRepairApi().getWaterMeterRepairs(row.id) - if(res.code == 200) { - formDetail.value = res.data - console.log(res.code); - } - formDetailVisible.value = true - if(val === 2){ - isExecute.value = true - }else{ - isExecute.value = false - } - console.log('formDetail.value111',formDetail.value); - -} -//执行相关 -const isExecute = ref(false) -//提交数据处理 -// const handleExecuteData = () =>{ -// executeData.value.repairsId = formDetail.value.id -// executeData.value.meterSn = formDetail.value.meterSn -// executeData.value.userId = formDetail.value.userId -// executeData.value.userName = formDetail.value.userName -// executeData.value.maintainTime = formDetail.value.maintainTime -// executeData.value.maintainStaff = formDetail.value.maintainUserName -// executeData.value.maintainType = formDetail.value.repairsType -// } - -// 提交确认报修 -const acceptAccountForm = async() =>{ - let res = await waterMeterRepairApi().executeStatusWaterMeterRepairs({repairsId:formDetail.value.id,executeType:2}) - if(res.code == 200){ - ElMessage({message:'已接受报修!',type:'success'}) - } - formDetailVisible.value = false - getTableData() -} -// 提交完成报修 -const completeAccountForm = async() =>{ - let res = await waterMeterRepairApi().executeStatusWaterMeterRepairs({repairsId:formDetail.value.id,executeType:3}) - if(res.code == 200){ - ElMessage({message:'完成报修!',type:'success'}) - } - formDetailVisible.value = false - getTableData() -} -// 撤销报修 -const revokeAccountForm = async() =>{ - let res = await waterMeterRepairApi().executeStatusWaterMeterRepairs({repairsId:formDetail.value.id,executeType:4}) - if(res.code == 200){ - ElMessage({message:'撤销成功!',type:'success'}) - } - formDetailVisible.value = false - getTableData() -} -onMounted(async() => { - - getTableData() -}) -</script> -<template> - <div class="app-container"> - <!-- <div class="text-select"> - <el-button type="primary" @click="addAccount" size="large">添加</el-button> - <el-input placeholder="请输入用户名称或水表编号" v-model="searchData"></el-input> - <el-button @click="search" type="primary" size="large">搜索</el-button> - </div> --> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入用户或水表编号查询" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="search">搜索</el-button> - <el-button icon="Refresh" @click="getTableData">重置</el-button> - </el-form-item> - </el-form> - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="addAccount" - >新增</el-button> - </el-col> - </el-row> - - <el-table :data="tableData"> - <el-table-column v-for="(item,key,index) of setTableList" :key="index" :prop="key.toString()" :label="item" width="180" /> - <el-table-column prop="handle" label="操作" width="180" fixed="right"> - <template #default="scope"> - <el-button @click="ToDetail(scope.row,1)" link type="primary" icon="Document" title="详细信息">详情</el-button> - <el-button v-if="(scope.row.state == 1) || (scope.row.state == 2)" @click="ToDetail(scope.row,2)" link type="primary" icon="EditPen" title="详细信息">执行</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getTableData" - /> - <!-- 分页区域 --> - <!-- <div class="pagination"> - <el-pagination - layout="total, prev, pager, next, jumper" - v-model:page-size="pagination.pageSize" - :total="pagination.total" - @current-change="handleCurrentChange"> - </el-pagination> - </div> --> - <el-dialog v-model="formVisible" title="水表报修" align-center destroy-on-close> - <div class="main"> - <div class="account-form"> - <el-form :model="repairFormData" :rules="rules" ref="accountFormRef" :label-width="80"> - <br> - <el-form-item label="用户名称" prop="userId"> - <el-select v-model="repairFormData.userId" filterable placeholder="请选择用户" @change="handleChange"> - <el-option - v-for="item in userNameList" - :key="item.id" - :label="item.userName" - :title="item.userName" - :value="item.id" - /> - </el-select> - </el-form-item> - <el-form-item label="水表编号" prop="meterSn"> - <el-select v-model="repairFormData.meterSn" filterable placeholder="请选择用户"> - <el-option - v-for="item in meterSnList" - :key="item.id" - :label="item.sn" - :title="item.sn" - :value="item.sn" - /> - </el-select> - </el-form-item> - <el-form-item label="维修内容" prop="content"> - <el-input type="textarea" v-model="repairFormData.content" maxlength="200" size="large" ></el-input> - </el-form-item> - <el-form-item label="上门时间" prop="maintainTime"> - <el-date-picker - v-model="repairFormData.maintainTime" - type="date" - placeholder="请选择安装日期和时间" - format="YYYY-MM-DD " - value-format="YYYY-MM-DD " - style="width: 100%" - /> - </el-form-item> - <br> - <el-form-item label="备注" prop="remark"> - <el-input type="textarea" v-model="repairFormData.remark" maxlength="200" size="large" ></el-input> - </el-form-item> - <el-form-item label="维修人员" prop="maintainUser"> - <el-select v-model="repairFormData.maintainUser" filterable placeholder="请选择维修人员" @change="selectChange"> - <el-option - v-for="item in maintainUserList" - :key="item.id" - :label="item.nickName" - :title="item.nickName" - :value="item.id" - /> - </el-select> - </el-form-item> - </el-form> - </div> - <div class="submit-btn"> - <el-button size="large" @click="cancelRepairForm">取消</el-button> - <el-button type="primary" size="large" @click="submitRepairForm">提交</el-button> - </div> - </div> - </el-dialog> - - <el-dialog v-model="formDetailVisible" title="水表维修详情" style="width: 60vw;" center align-center > - <div class="detail"> - <div class="item"> - <div class="title">维修单编号:</div> - <div>{{ formDetail.repairsNumber }}</div> - </div> - <div class="item"> - <div class="title">水表编号:</div> - <div>{{ formDetail.meterSn }}</div> - </div> - <div class="item"> - <div class="title">用户名称:</div> - <div>{{ formDetail.userName }}</div> - </div> - <div class="item"> - <div class="title">用户电话:</div> - <div>{{ formDetail.userPhone }}</div> - </div> - <div class="item"> - <div class="title">报修地址:</div> - <div>{{ formDetail.repairsAddress }}</div> - </div> - <div class="item"> - <div class="title">维修内容:</div> - <div>{{ formDetail.content }}</div> - </div> - <div class="item"> - <div class="title">维修工程师:</div> - <div>{{ formDetail.maintainUserName }}</div> - </div> - <div class="item"> - <div class="title">维修费用:</div> - <div>{{ formDetail.maintenanceCosts }}</div> - </div> - <div class="item"> - <div class="title">维修时间:</div> - <div>{{ formDetail.maintainTime }}</div> - </div> - <div class="item"> - <div class="title">报修类型:</div> - <div>{{ formDetail.repairsTypeView }}</div> - </div> - <div class="item"> - <div class="title">状态:</div> - <div>{{ formDetail.stateView }}</div> - </div> - <div class="item"> - <div class="title">备注:</div> - <div>{{ formDetail.remark }}</div> - </div> - <div class="item"> - <div class="title">创建时间:</div> - <div>{{ formDetail.createTimeView }}</div> - </div> - <div class="item"> - <div class="title">修改日期:</div> - <div>{{ formDetail.updateTimeView }}</div> - </div> - </div> - <template #footer> - <el-button v-if="!isExecute" @click="formDetailVisible = false" style="width:10%">关闭</el-button> - <div class="Execution-btn" v-if="isExecute"> - <div> - <el-button v-if="formDetail.state==1" type="primary" size="large" @click="acceptAccountForm">接受报修</el-button> - </div> - <div> - <el-button v-if="formDetail.state==2" type="primary" size="large" @click="completeAccountForm">完成报修</el-button> - </div> - <div> - <el-button v-if="formDetail.state==1" type="primary" size="large" @click="revokeAccountForm">撤销工单</el-button> - </div> - </div> - </template> - </el-dialog> - </div> -</template> - -<style lang="scss" scoped> -.detail{ - display:flex; - justify-content:center; - width:100%; - flex-wrap:wrap; -.item{ - margin-bottom: 15px; - width:45%; - font-size: 18px; - display: flex; - .title{ - color: #696969; - margin-right: 10px; - } -} -} -.main{ - width: 100%; - height: 100%; - // background-color: azure; - .text-select { - height: 5%; - padding-top: 20px; - display: flex; - align-items: center; - margin-left: 20px; - :deep(.el-input) { - width: 318px !important; - height: 40px; - margin-right: 0; - margin-bottom: 2px; - } - :deep(.el-input__wrapper) { - margin-right: 0; - } - .el-button { - margin-left: 10px; - margin-right: 80px; - } - } - .account-form{ - width: 100%; - .el-form{ - margin: 0 auto; - width: 96%; - display: flex; - align-items: center; - flex-direction: column; - // p{ - // height: 8%; - // margin-bottom: 5px; - // margin-left: -60%; - // font-size: 16px; - // font-weight: 1000px; - // color: #212122; - // } - .el-form-item{ - width: 70%; - padding-bottom: 10px; - } - } - }; - .submit-btn{ - display: flex; - justify-content: center; - .el-button{ - margin: 10px; - } - } - .el-table{ - width: 95%; - padding-top: 10px; - margin: 0 auto; - border-radius: 20px; - // border: solid 1px; - } - - :deep(.el-dialog) { - // text-align: left; - min-width: 954px; - max-height: 88vh; - overflow-y: auto; - border-radius: 15px; - --el-dialog-margin-top: 8vh; - .el-dialog__body { - padding: 10px; - } - } - .Execution-btn{ - display: flex; - justify-content: center; - div{ - margin: 0 50px 10px 80px ; - } - } -} -</style> \ No newline at end of file diff --git a/src/views/workOrderManage/waterMeterStopAccount/index.vue b/src/views/workOrderManage/waterMeterStopAccount/index.vue deleted file mode 100644 index a8d6f85..0000000 --- a/src/views/workOrderManage/waterMeterStopAccount/index.vue +++ /dev/null @@ -1,447 +0,0 @@ - - <script setup name="Menu"> - import user from "@/api/system/user"; - import archivesApi from "@/api/archivesApi/index"; -import { ElMessage } from 'element-plus' - import waterMeterApi from "@/api/waterMeterApi/index"; -import { waterMeterStopAccountApi } from '@/api/workOrderManage/waterMeterStopAccountApi/index'; -import billRecord from "@/api/financial/billRecord/index"; - import setPostParams from "@/utils/searchParams.js"; - const { proxy } = getCurrentInstance(); - -/** - * 搜索相关 - */ - /** 搜索按钮操作 */ - function handleQuery() { - getList({keywords:queryParams.value.name,page:1}) - } - - /** 重置按钮操作 */ - function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); - } - - /** - * Table表格权限数据列表相关 - */ - -const pageParam = ref({ - total:0, - limit:0, - page:0, -}) -const tableData = ref([]); -let tableHeader = ref({ - id: '序号', - userName: "用户姓名", - classifyName: "用户类型", - meterSn: "水表编号", - businessAddress: "营业点", - operatorUserName: "经办人", - stopTime: "停用日期", - startTime: "启用日期", - isStopView: "水表状态", - executeTypeView: "执行状态", - createTimeView: "创建日期", - }) - /** 获取列表 */ - async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await waterMeterStopAccountApi().search(postParam).then((res) =>{ - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; - } - - /** 新增按钮操作 */ - async function handleAdd() { - reset(); - title.value = "新增停用工单"; - open.value = true; - } - /** - * 新增/修改弹窗Form表单相关 - */ -const open = ref(false); -const loading = ref(false); -const title = ref(""); - -const data = reactive({ -form:{}, -queryParams: { - name: undefined, -}, -rules: { - userName: [{required: true, message: '请选择用户', trigger: 'blur'}], - meterSn: [{required: true, message: '请选择需要停用的水表编号', trigger: 'blur'}], - operatorUser: [{required: true, message: '请选择经办人', trigger: 'blur'}] -}, -}); -const { queryParams, form, rules } = toRefs(data); - -//获取账号列表选择 -const accountList = ref() -const userList = ref() -const getAllList = async() =>{ -// 获取用户档案列表 -let res1 = await archivesApi().search({limit: 10000, status: 1,page:1}) -if (res1.code == 200) { -userList.value = res1.data.list -} -//获取账号列表 -let res2 = await user().search({limit: 10000, status: 1,page:1}) -if (res2.code == 200) { - accountList.value = res2.data.list -} - } -//选择用户获取对应水表列表 -const meterSnList = ref() -const changeUser = async (val) => { - form.value.meterSn="" - //选中用户显示用户信息 - let user = userList.value.find((item) => item.id == val) - Object.keys(user).forEach((key) =>{ - if(form.value.hasOwnProperty(key)){ - form.value[key] = user[key] - } - }) - //请求该用户名下水表 - let res3 = await waterMeterApi().getByUser(val) - if (res3.code == 200) { - meterSnList.value = res3.data - } -} -//选中水表获取水表信息及欠费信息 -const changeWaterMeter = async (val) => { -let res1 = await billRecord().getMeterArrearsAmount(val) - if (res1.code == 200) { - form.value.isArrearage = res1.data - } - let meter = meterSnList.value.find((item) => item.sn == val) - form.value.address = meter.address - form.value.modeCode = meter.modeCode -} -//根据经办人id添加经办人Name -const changeOperatorUser = async (val) => { - accountList.value.forEach((item) =>{ - if(item.id == val){ - form.value.operatorUserName = item.nickName - } - }) - console.log('45646',form.value); -} - /** 提交按钮 */ - function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - if (form.value.id != undefined) { - waterMeterStopAccountApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - waterMeterStopAccountApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() =>{ - open.value = false; - proxy.$modal.msgError("新增失败"); - }); - } - } - }); - } - - /** 取消按钮 */ - function cancel() { - open.value = false; - reset(); - } - - /** 表单重置 */ - function reset() { - form.value = { - classifyTxt: '', - classifyId: 0, - userAddress: "", - address: "", - userId: "", - userCode: "", - userPhone: "", - modeCode: "", - operatorUser: "", - operatorUserName: "", - idCard: "", - userName: "", - meterSn: "", - businessAddress: "", - arrearageAmount: "", - stopTime: "", - startTime: "", - }; - proxy.resetForm("formRef"); - } - /** - * 详情、执行相关 - */ -const formDetail = ref() -const formDetailVisible = ref() -const isExecute = ref(false) -const ToDetail = async(row,val) =>{ - let res = await waterMeterStopAccountApi().get(row.id) - if(res.code == 200) { - formDetail.value = res.data - } - formDetailVisible.value = true - if(val === 2){ - isExecute.value = true - }else{ - isExecute.value = false - } -} -// 提交确认停用 -const stopAccountForm = async() =>{ - let res = await waterMeterStopAccountApi().execute(formDetail.value.id,3) - if(res.code == 200){ - ElMessage({message:'停用成功!',type:'success'}) - } - formDetailVisible.value = false - getList() -} - getList(); - getAllList() - </script> - <template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入用户或水表编号查询" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增</el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - </el-table-column> - <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button @click="ToDetail(scope.row,1)" link type="primary" icon="Document" title="详细信息">详情</el-button> - <el-button v-if="(scope.row.executeType == 1) || (scope.row.executeType == 2)" @click="ToDetail(scope.row,2)" link type="primary" icon="EditPen" title="详细信息">执行</el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加或修改对话框 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item label="用户名称" prop="userId"> - <el-select v-model="form.userId" class="m-2" filterable placeholder="请选择开户人" - @change="changeUser" > - <el-option - v-for="(item,index) in userList" - :key="item.id" - :label="item.userName" - :title="item.userName" - :value="item.id" - - /> - </el-select> - </el-form-item> - <el-form-item label="用户类型" prop="classifyTxt"> - {{ form.classifyTxt }} - </el-form-item> - <el-form-item label="联系电话" prop="userPhone"> - {{ form.userPhone }} - </el-form-item> - <el-form-item label="身份证号码" prop="idCard"> - {{ form.idCard }} - </el-form-item> - <el-form-item label="用户地址" prop="userAddress"> - {{ form.userAddress }} - </el-form-item> - <el-form-item label="户号" prop="userCode"> - {{ form.userCode }} - </el-form-item> - - - <el-form-item label="停用水表" prop="meterSn"> - <el-select v-model="form.meterSn" filterable - placeholder="请输入或选择水表编号" @change="changeWaterMeter"> - <el-option - v-for="item in meterSnList" - :key="item.id" - :label="item.sn" - :title="item.sn" - :value="item.sn" - /> - </el-select> - </el-form-item> - - <el-form-item label="水表型号" prop="modeCode"> - {{ form.modeCode }} - </el-form-item> - <el-form-item label="安装地址" prop="address"> - {{ form.address }} - </el-form-item> - <el-form-item label="欠费金额" prop="isArrearage"> - {{ form.isArrearage }} - </el-form-item> - - <el-form-item label="经办人" prop="operatorUser"> - <el-select v-model="form.operatorUser" class="m-2" filterable - placeholder="请选择经办人" @change="changeOperatorUser"> - <el-option - v-for="item in accountList" - :key="item.id" - :label="item.nickName" - :title="item.nickName" - :value="item.id" - /> - </el-select> - </el-form-item> - <el-form-item></el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - - <el-dialog v-model="formDetailVisible" title="水表维修详情" style="width: 60vw;" center align-center > - <div class="detail"> - <div class="item"> - <div class="title">公司名称:</div> - <div>{{ formDetail.companyName }}</div> - </div> - <div class="item"> - <div class="title">所属用户:</div> - <div>{{ formDetail.userName }}</div> - </div> - <div class="item"> - <div class="title">水表编号:</div> - <div>{{ formDetail.meterSn }}</div> - </div> - <div class="item"> - <div class="title">停用时间:</div> - <div>{{ formDetail.stopTime }}</div> - </div> - <div class="item"> - <div class="title">启用时间:</div> - <div>{{ formDetail.startTime }}</div> - </div> - <div class="item"> - <div class="title">用户类型:</div> - <div>{{ formDetail.classifyName }}</div> - </div> - <div class="item"> - <div class="title">用户电话:</div> - <div>{{ formDetail.userPhone }}</div> - </div> - <div class="item"> - <div class="title">用户地址:</div> - <div>{{ formDetail.userAddress }}</div> - </div> - <div class="item"> - <div class="title">水表安装地址:</div> - <div>{{ formDetail.installAddress }}</div> - </div> - <div class="item"> - <div>创建人:</div> - <div>{{ formDetail.createUserName }}</div> - </div> - <div class="item"> - <div>更新人:</div> - <div>{{ formDetail.updateUserName }}</div> - </div> - <div class="item"> - <div>创建时间:</div> - <div>{{ formDetail.createTimeView }}</div> - </div> - <div class="item"> - <div>更新时间:</div> - <div>{{ formDetail.updateTime }}</div> - </div> - </div> - <template #footer> - <el-button v-if="!isExecute" @click="formDetailVisible = false" style="width:10%">关闭</el-button> - <div class="Execution-btn" v-if="isExecute"> - <div> - <el-button v-if="formDetail.executeType==1" type="primary" size="large" @click="stopAccountForm">确认停用</el-button> - </div> - </div> - </template> - </el-dialog> - </div> - </template> - <style> -.Execution-btn{ - display: flex; - justify-content: center; - div{ - margin: 0 10px 10px 10px; - } - } - .detail{ - display:flex; - justify-content:flex-start; - width:100%; - flex-wrap:wrap; - padding-left: 50px; - .item{ - margin-bottom: 15px; - width:45%; - font-size: 18px; - display: flex; - .title{ - color: #696969; - margin-right: 10px; - } -} -} -</style> - \ No newline at end of file diff --git a/src/views/workOrderManage/workOrderList/index.vue b/src/views/workOrderManage/workOrderList/index.vue deleted file mode 100644 index 9398874..0000000 --- a/src/views/workOrderManage/workOrderList/index.vue +++ /dev/null @@ -1,157 +0,0 @@ -<template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true"> - <el-form-item prop="name"> - <el-input - v-model="queryParams.name" - placeholder="请输入用户或水表编号查询" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="search">搜索</el-button> - <el-button icon="Refresh" @click="getTableData">重置</el-button> - </el-form-item> - </el-form> - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="addAccount" - >新增</el-button> - </el-col> - </el-row> - - <el-table :data="tableData"> - <el-table-column v-for="(item,key,index) of setTableList" :key="index" :prop="key.toString()" :label="item" /> - <el-table-column prop="handle" label="操作" width="200" fixed="right"> - <template #default="scope"> - <el-button @click="ToDetail(scope.row,1)" link type="primary" icon="Document" title="详细信息">详情</el-button> - <el-button v-if="scope.row.installState == 1 || scope.row.installState == 2" @click="ToDetail(scope.row,2)" link type="primary" icon="EditPen" title="详细信息">执行</el-button> - </template> - </el-table-column> - </el-table> - <!--分页区域--> - <!-- <div class="pagination"> - <el-pagination - layout="total, prev, pager, next, jumper" - v-model:page-size="pagination.pageSize" - :total="pagination.total" - @current-change="handleCurrentChange"> - </el-pagination> - </div> --> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getTableData" - /> - <el-dialog v-model="formVisible" style="width: 66vw; height:90vh;" center :title="isDetail ? '水表开户申请单': '水表开户申请'" align-center destroy-on-close> - <div> - <accountApply :isDetail = isDetail :rowDetail = rowDetail :isExecute = isExecute @setFormVisible="setFormVisible" @getTableData="getTableData"></accountApply> - </div> - </el-dialog> - </div> -</template> - -<script setup> -import { ref ,reactive} from 'vue' -import accountApply from '@/views/workOrderManage/accountApply/index.vue' -import { waterMeterApplyApi } from '@/api/workOrderManage/waterMeterApplyApi/index' -import { ElMessage } from 'element-plus' -import setPostParams from "@/utils/searchParams.js"; - - //定义变量内容 - const queryParams = ref({ - name: undefined, - }) - const tableData = ref([]) - // const pagination = ref({ - // total:0, - // currentPage:'', - // totalPage:'', - // pageSize:10 - // }) - const pageParam = ref({ - total:0, - limit:10, - page:0, - }) - const setTableList = reactive({ - // workNumber:'工单号', - meterSn:"水表编号", - userName: '申请用户', - // classifyName:'用户类型', - // userPhone: '电话号码', - // idCard:'身份证号码', - // userAddress:'用户地址', - installAddress:'安装地址', - installTime:'上门时间', - installMoney:"安装金额", - installUserName:"安装人员", - installStateView:'执行状态', - - }) - //控制弹窗-添加编辑 -const formVisible = ref(false) -const isDetail = ref(false) -const rowDetail = ref() - // 添加 -const addAccount = () =>{ - formVisible.value = true - isDetail.value = false -} -const setFormVisible = () =>{ - formVisible.value = false -} -const getTableData = async (val) => { - - let postParam = setPostParams(val) - let { code, data } = await waterMeterApplyApi().searchWaterMeterApply(postParam) - if(code == 200) { - tableData.value = data.list - pageParam.value.total = data.total - pageParam.value.limit = data.limit - pageParam.value.page = data.page - } -} -const search = () =>{ - getTableData({keywords:queryParams.value.name}) -} -// 分页 -// const handleCurrentChange = (val) =>{ -// getTableData({page:val}) -// console.log('val2',val) -// } -//执行相关 -const isExecute = ref(false) -const ToDetail =(row,val) =>{ - if(val == 2){ - isExecute.value = true - }else{ - isExecute.value = false - } - formVisible.value = true - isDetail.value = true - rowDetail.value = row - console.log('row',row) -} -onMounted(() => { - getTableData() -}) -</script> - -<style lang = scss scoped> -:deep(.el-dialog){ - background: #ffffff; -} -:deep(.el-dialog__body){ - overflow-y: auto; - max-height: 70vh; -} -</style> \ No newline at end of file -- Gitblit v1.9.3