From 6b3f5fecba85d3d3f6c96d1e3c3f5b1074ff0deb Mon Sep 17 00:00:00 2001 From: wangxingyuan <2944009893@qq.com> Date: Tue, 15 Jul 2025 14:45:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A1=E8=A7=86=E4=BB=BB=E5=8A=A1=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + src/api/administration.js | 7 +- src/api/area/area.js | 661 ++++++ src/api/basedata/area/area.js | 661 ++++++ src/api/basedata/patrolpointmnt/patroltype.js | 8 + src/api/equipment/equipment.js | 8 + src/assets/card_full_bg.png | Bin 0 -> 47886 bytes src/assets/collect.png | Bin 0 -> 998 bytes src/assets/images/image-btn-left-disable.png | Bin 0 -> 781 bytes src/assets/images/image-btn-left-hover.png | Bin 0 -> 1288 bytes src/assets/images/image-btn-left-normal.png | Bin 0 -> 1323 bytes src/assets/images/image-btn-left-press.png | Bin 0 -> 1330 bytes src/assets/images/image-btn-right-disable.png | Bin 0 -> 779 bytes src/assets/images/image-btn-right-hover.png | Bin 0 -> 1283 bytes src/assets/images/image-btn-right-normal.png | Bin 0 -> 1317 bytes src/assets/images/image-btn-right-press.png | Bin 0 -> 1316 bytes .../administration/administration copy.vue | 1182 +++++++++++ src/views/administration/administration.vue | 119 +- src/views/administration/edit_task.vue | 1820 +++++++++++++++++ src/views/administration/new_task.vue | 1624 +++++++++++++++ src/views/area/area.vue | 72 +- src/views/equipment/equipment.vue | 28 +- 22 files changed, 6139 insertions(+), 52 deletions(-) create mode 100644 src/api/basedata/area/area.js create mode 100644 src/assets/card_full_bg.png create mode 100644 src/assets/collect.png create mode 100644 src/assets/images/image-btn-left-disable.png create mode 100644 src/assets/images/image-btn-left-hover.png create mode 100644 src/assets/images/image-btn-left-normal.png create mode 100644 src/assets/images/image-btn-left-press.png create mode 100644 src/assets/images/image-btn-right-disable.png create mode 100644 src/assets/images/image-btn-right-hover.png create mode 100644 src/assets/images/image-btn-right-normal.png create mode 100644 src/assets/images/image-btn-right-press.png create mode 100644 src/views/administration/administration copy.vue create mode 100644 src/views/administration/edit_task.vue create mode 100644 src/views/administration/new_task.vue diff --git a/package.json b/package.json index 0d9163f..7e23b1b 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "js-cookie": "3.0.1", "jsencrypt": "3.0.0-rc.1", "linq": "^4.0.3", + "lodash": "^4.17.21", "md5.js": "^1.3.5", "nprogress": "0.2.0", "quill": "2.0.2", diff --git a/src/api/administration.js b/src/api/administration.js index d50dc3b..4338bef 100644 --- a/src/api/administration.js +++ b/src/api/administration.js @@ -26,16 +26,17 @@ export function getPatroltypeList(query) { return request({ url: `/basedata/patrolpointmnt/patroltype/list`, method: 'get', + params: query, }) } -export function getAreaList(query,type=0) { - if(type==0){ +export function getAreaList(query, type = 0) { + if (type == 0) { return request({ url: `/basedata/area/list`, method: 'get', }) - }else{ + } else { return request({ url: `/basedata/area/list?areaIdS=${query}`, method: 'get', diff --git a/src/api/area/area.js b/src/api/area/area.js index d8b9e7e..28e9234 100644 --- a/src/api/area/area.js +++ b/src/api/area/area.js @@ -57,5 +57,666 @@ export function postRemove(query) { }) } +// 点位管理 +//联动点详情 +export function pointDel (linkageStrategyId) { + return request({ + url: '/patrol/strategy/' + linkageStrategyId, + method: 'get', + }) +} +//修改联动点位 +export function editPoint (data) { + return request({ + url: '/patrol/strategy/edit', + method: 'post', + data: data + }) +} +//  删除检修区域(批量) +export function delPoint (linkagestrategyIds) { + return request({ + url: '/patrol/strategy/remove/' + linkagestrategyIds, + method: 'post', + }) +} +//删除检修区域(批量) +export function delmaintenanceArea (lineIds) { + return request({ + url: '/patrol/maintarea/remove/' + lineIds, + method: 'post', + }) +} +//添加联动点位 +export function addPoint (data) { + return request({ + url: '/patrol/strategy', + method: 'post', + data: data + }) +} +//联动新增-查询巡检点 +export function getaddPoint (query) { + return request({ + url: '/patrol/linkage/patrolpoint', + method: 'get', + params: query + }) +} +//获取联动点位列表 +export function getPoints (query) { + return request({ + url: '/patrol/strategy/list', + method: 'get', + params: query + }) +} +//添加检修区域 +export function addTarea (data) { + return request({ + url: '/patrol/maintarea', + method: 'post', + data: data + }) +} +//修改巡检任务 +export function editSave (data) { + return request({ + url: '/patrol/task/save', + method: 'post', + data: data + }) +} +//主设备下巡检点和巡检点巡检设备树(巡视任务回显) +export function editList (query) { + return request({ + url: '/basedata/prodevmnt/device/treeProMainDevicePatrolEquSelectByEqookCode', + method: 'get', + params: query + }) +} +// 巡视任务编辑回显 +export function editTask (taskId) { + return request({ + url: '/patrol/task/' + taskId, + method: 'get', + }) +} +// 复制巡检任务 +export function copyTask (query) { + return request({ + url: '/patrol/task/copyTask', + method: 'get', + params: query + }) +} +// 删除巡检任务(批量) +export function delTask (taskIds) { + return request({ + url: 'patrol/task/remove/' + taskIds, + method: 'post' + }) +} + + + +// 下发巡检任务 +export function issue (query) { + return request({ + url: '/patrol/task/issue', + method: 'get', + params: query + }) +} + + + +// 立即执行任务 +export function controlChange (id) { + return request({ + url: '/patrol/taskstatus/controlChange?taskId=' + id, + method: 'get', + }) +} +//巡视任务列表修改任务状态(列表开关) +export function changeStatus (query) { + return request({ + url: '/patrol/task/changeStatus', + method: 'get', + params: query + }) +} + +// 新建/修改巡检任务 +export function addPatrol (data) { + return request({ + url: '/patrol/task/add', + method: 'post', + data: data + }) +} +// 巡视任务管理列表 +export function taskPatrol (query) { + return request({ + url: 'patrol/task/list', + method: 'get', + params: query + }) +} +// 主设备下巡检点和巡检点巡检设备树 +export function equSelect (query) { + return request({ + url: '/basedata/prodevmnt/device/treeProMainDevicePatrolEquSelect', + method: 'get', + params: query + }) +} +// 生产设备树 +export function equipmentree (query = {}) { + return request({ + url: '/basedata/prodevmnt/device/getProDeviceTreeSelect', + method: 'get', + params: query + }) +} +// 添加设备类型 +export function addDevicetype (data) { + return request({ + url: '/basedata/devicetype/add', + method: 'post', + data: data + }) +} +// 标准点位列表 +export function standardPoint (query) { + return request({ + url: '/basedata/patrolpointmnt/stdpatrolpoint/list', + method: 'get', + params: query + }) +} +// 联动点位管理列表 +export function linkageAdmin (query) { + return request({ + url: '/patrol/linkage/list', + method: 'get', + params: query + }) +} +// 联动点位管理设备类型列表 +export function linkageStyle () { + return request({ + url: '/basedata/devicetype/list', + method: 'get' + }) +} +// 获取生产设备树(包含区域、类型、部件模板) +export function productionEquipment () { + return request({ + url: '/basedata/prodevmnt/device/treeAreaDeviceSelect', + method: 'get' + }) +} +// 删除联动点位(批量) +export function dellinkPoint (linkagePosIds) { + return request({ + url: '/patrol/linkage/' + linkagePosIds, + method: 'delete' + }) +} +// 设备类型管理修改 +export function modifyEquipment (data) { + return request({ + url: '/basedata/devicetype/update', + method: 'post', + data: data + }) +} + +// 生产区域管理导出 +export function exportarea (query) { + return request({ + url: '/api/area/exportarea', + method: 'get', + params: query + }) +} +// 查询部门列表 +export function listArea (query) { + return request({ + url: '/basedata/area/list', + method: 'get', + params: query + }) +} + +// 查询部门列表(排除节点) +export function listAreaExcludeChild (areaId) { + return request({ + url: '/basedata/area/list/exclude/' + areaId, + method: 'get' + }) +} + +// 查询部门详细 +export function getArea (areaId) { + return request({ + url: '/basedata/area/' + areaId, + method: 'get' + }) +} + +// 查询部门下拉树结构 +export function treeselect (query) { + return request({ + url: '/basedata/area/treeselect', + method: 'get', + params: query + }) +} + +// 根据角色ID查询部门树结构 +export function roleAreaTreeselect (roleId) { + return request({ + url: '/basedata/area/roleAreaTreeselect/' + roleId, + method: 'get' + }) +} + +// 新增部门 +export function addArea (data) { + return request({ + url: '/basedata/area', + method: 'post', + data: data + }) +} +// 生产新增部门 +export function addArea1 (data) { + return request({ + url: '/basedata/area/add', + method: 'post', + data: data + }) +} + +// 修改部门 +export function updateArea (data) { + return request({ + url: '/basedata/area', + method: 'post', + data: data + }) +} + +// 修改生产部门 +export function updateArea1 (data) { + return request({ + url: '/basedata/area/update', + method: 'post', + data: data + }) +} + +// 删除部门 +export function delArea (areaId) { + return request({ + url: '/basedata/area/remove/' + areaId, + method: 'post' + }) +} +// 联动点位参数列表 +export function linkage (query) { + return request({ + url: '/system/config/list', + params: query + }) +} +// 保存联动参数 +export function saveLinkage (data) { + return request({ + url: '/patrol/linkage/action', + method: 'post', + data: data + }) +} +// 添加联动点位 +export function addLinkage (data) { + return request({ + url: '/patrol/linkage', + method: 'post', + data: data + }) +} +// 获取所属专业 +export function professionType () { + return request({ + url: '/system/dict/data/type/profession_type', + method: 'get' + }) +} +// 获取检修区域列表 +export function maintenanceArea (query) { + return request({ + url: '/patrol/maintarea/list', + method: 'get', + params: query + }) +} +// 添加设备类型 +export function addDevice (data) { + return request({ + url: '/basedata/devicetype/add', + method: 'post', + data: data + }) +} +// 删除设备类型 +export function deleteDevice (params) { + return request({ + url: '/basedata/devicetype/delete/' + params, + method: 'post' + }) +} +// 修改设备类型 +export function editDevice (data) { + return request({ + url: '/basedata/devicetype/update', + method: 'post', + data: data + }) +} +// 设备类型列表树 +export function deviceTrees (data) { + return request({ + url: '/basedata/devicetype/getProDeviceTypeTreeSelect', + method: 'get' + }) +} +// 查询点位列表 +export function dotList () { + return request({ + url: '/basedata/patrolpointmnt/stdpatrolpoint/list', + method: 'get' + }) +} +// 生产点位管理左侧列表树 +export function proDotManTrees () { + return request({ + url: '/basedata/prodevmnt/device/getProDeviceTreeSelect', + method: 'get' + }) +} +// 生产点位管理中间列表 +export function proDotManTable (params) { + return request({ + url: '/basedata/patrolpointmnt/patrolpoint/list/monitor', + method: 'get', + params: params + }) +} +// 生产点位管理单条、多条数据删除 +export function proDotTableDeleteSin (deleteid) { + return request({ + url: '/basedata/patrolpointmnt/patrolpoint/remove/' + deleteid, + method: 'post' + }) +} +// 生产点位管理单条数据新增 +export function proDotTableAddSin (data) { + return request({ + url: '/basedata/patrolpointmnt/patrolpoint', + method: 'post', + data: data + }) +} +// 生产点位管理单条数据修改 +export function proDotTableEditSin (data) { + return request({ + url: '/basedata/patrolpointmnt/patrolpoint/edit', + method: 'post', + data: data + }) +} +// 查询监控列表(预置点) +export function bindingMonitorDotList (channelType) { + return request({ + url: '/patrol/preset/camera/' + channelType, + method: 'get' + }) +} +// 预置点下发 +export function presetDotDistribute (params) { + return request({ + url: '/patrol/preset/issue', + method: 'get', + params: params + }) +} +// 转到预置点 +export function convertPresetDot (params) { + return request({ + url: '/patrol/preset/goto', + method: 'get', + params: params + }) +} +// 拍照 +export function photograph (params) { + return request({ + url: '/patrol/videotape/snap', + method: 'get', + params: params + }) +} +// 云台控制 +export function cloudControl (params) { + return request({ + url: '/patrol/videotape/ptz', + method: 'get', + params: params + }) +} +// 实时直播 +export function realLive (params) { + return request({ + url: '/patrol/video/realtime', + method: 'get', + params: params + }) +} +// 录像列表 +export function recordList (params) { + return request({ + url: '/patrol/videotape/record/list', + method: 'get', + params: params + }) +} +// 录像 +export function record (params) { + return request({ + url: '/patrol/videotape/record', + method: 'get', + params: params + }) +} +// 回放开始 +export function reviewStart (params) { + return request({ + url: '/patrol/videotape/review/start', + method: 'get', + params: params + }) +} +// 回放结束 +export function reviewStop (params) { + return request({ + url: '/patrol/videotape/review/stop', + method: 'get', + params: params + }) +} +// 回放控制 +export function reviewControl (params) { + return request({ + url: '/patrol/videotape/review/control', + method: 'get', + params: params + }) +} +// 焦距光圈 +export function focalAperture (params) { + return request({ + url: '/patrol/videotape/ptz/fi', + method: 'get', + params: params + }) +} +// 绑定预置点 +export function bindingPreset (data) { + return request({ + url: '/patrol/preset', + method: 'post', + data: data + }) +} + +// 设置预置位点 +export function issueUpdate (params) { + console.log('0000000',params) + return request({ + url: '/patrol/preset/issueUpdate', + method: 'get', + params: params + }) +} + +// 修改生产设备 +export function editProEquip (data) { + return request({ + url: '/basedata/prodevmnt/device/update', + method: 'post', + data: data + }) +} +// 获取生产设备树(包含区域、设备、部件) +export function getProEquipTree () { + return request({ + url: '/basedata/prodevmnt/device/getProDeviceTreeSelect', + method: 'get' + }) +} +// 获取生产设备详情 +export function getProEquipShow (deviceId) { + return request({ + url: '/basedata/prodevmnt/device/' + deviceId, + method: 'get' + }) +} +// 查询点位列表 +export function searchDotsList (params) { + return request({ + url: '/basedata/patrolpointmnt/stdpatrolpoint/list', + method: 'get', + params + }) +} +// 获取主设备类型下的部件类型 +export function getMainEquipPartType (params) { + return request({ + url: '/basedata/devicetype/getCommpTypeTreeSelectByMainDevicetypeId', + method: 'get', + params: params + }) +} +// 获取算法列表 +export function getAlgList () { + return request({ + url: '/basedata/alg/list', + method: 'get' + }) +} +// 获取算法子类型 +export function getAlgPartType () { + return request({ + url: '/basedata/subtype/list', + method: 'get' + }) +} +// 保存标准巡检点位 +export function saveStaDot (data) { + return request({ + url: '/basedata/patrolpointmnt/stdpatrolpoint/addBatchList', + method: 'post', + data: data + }) +} +// 获取主设备类型 +export function getMainEquipType (params) { + return request({ + url: '/basedata/devicetype/list', + method: 'get', + params: { 'powerMainEquFlag': 'Yes' } + }) +} + + +// 添加生产设备 +export function insertMainDeviceAndCommByDeviceType (data) { + return request({ + url: '/basedata/prodevmnt/device/insertMainDeviceAndCommByDeviceType', + method: 'post', + data: data + }) +} + +// 获取生产设备详情 +export function getEquInfo (id) { + return request({ + url: '/basedata/prodevmnt/device/' + id, + method: 'get', + params: { id } + }) +} + +export function getStationNameList (params) { + return request({ + url: '/basedata/station/getStationNameList', + method: 'get', + params + }) +} + +// 获取检修区域树 +export function getRepairAreaTree (params = {}) { + return request({ + url: '/basedata/prodevmnt/device/treeAreaDeviceSelectAgain', + method: 'get', + params + }) +} + +// 获取检修区域树 +export function updateRepairAreaStatus (id, enable) { + return request({ + url: '/patrol/maintarea/update', + method: 'get', + params: { + lineId: id, + enable + } + }) +} +// 批量下发检修区域 +export function downAreas (ids) { + return request({ + url: '/patrol/maintarea/issue', + method: 'get', + params: { + ids + } + }) +} diff --git a/src/api/basedata/area/area.js b/src/api/basedata/area/area.js new file mode 100644 index 0000000..1d050a3 --- /dev/null +++ b/src/api/basedata/area/area.js @@ -0,0 +1,661 @@ +import request from '@/utils/request' +//联动点详情 +export function pointDel (linkageStrategyId) { + return request({ + url: '/patrol/strategy/' + linkageStrategyId, + method: 'get', + }) +} +//修改联动点位 +export function editPoint (data) { + return request({ + url: '/patrol/strategy/edit', + method: 'post', + data: data + }) +} +//  删除检修区域(批量) +export function delPoint (linkagestrategyIds) { + return request({ + url: '/patrol/strategy/remove/' + linkagestrategyIds, + method: 'post', + }) +} +//删除检修区域(批量) +export function delmaintenanceArea (lineIds) { + return request({ + url: '/patrol/maintarea/remove/' + lineIds, + method: 'post', + }) +} +//添加联动点位 +export function addPoint (data) { + return request({ + url: '/patrol/strategy', + method: 'post', + data: data + }) +} +//联动新增-查询巡检点 +export function getaddPoint (query) { + return request({ + url: '/patrol/linkage/patrolpoint', + method: 'get', + params: query + }) +} +//获取联动点位列表 +export function getPoints (query) { + return request({ + url: '/patrol/strategy/list', + method: 'get', + params: query + }) +} +//添加检修区域 +export function addTarea (data) { + return request({ + url: '/patrol/maintarea', + method: 'post', + data: data + }) +} +//修改巡检任务 +export function editSave (data) { + return request({ + url: '/patrol/task/save', + method: 'post', + data: data + }) +} +//主设备下巡检点和巡检点巡检设备树(巡视任务回显) +export function editList (query) { + return request({ + url: '/basedata/prodevmnt/device/treeProMainDevicePatrolEquSelectByEqookCode', + method: 'get', + params: query + }) +} +// 巡视任务编辑回显 +export function editTask (taskId) { + return request({ + url: '/patrol/task/' + taskId, + method: 'get', + }) +} +// 复制巡检任务 +export function copyTask (query) { + return request({ + url: '/patrol/task/copyTask', + method: 'get', + params: query + }) +} +// 删除巡检任务(批量) +export function delTask (taskIds) { + return request({ + url: 'patrol/task/remove/' + taskIds, + method: 'post' + }) +} + + + +// 下发巡检任务 +export function issue (query) { + return request({ + url: '/patrol/task/issue', + method: 'get', + params: query + }) +} + + + +// 立即执行任务 +export function controlChange (id) { + return request({ + url: '/patrol/taskstatus/controlChange?taskId=' + id, + method: 'get', + }) +} +//巡视任务列表修改任务状态(列表开关) +export function changeStatus (query) { + return request({ + url: '/patrol/task/changeStatus', + method: 'get', + params: query + }) +} + +// 新建/修改巡检任务 +export function addPatrol (data) { + return request({ + url: '/patrol/task/add', + method: 'post', + data: data + }) +} +// 巡视任务管理列表 +export function taskPatrol (query) { + return request({ + url: 'patrol/task/list', + method: 'get', + params: query + }) +} +// 主设备下巡检点和巡检点巡检设备树 +export function equSelect (query) { + return request({ + url: '/basedata/prodevmnt/device/treeProMainDevicePatrolEquSelect', + method: 'get', + params: query + }) +} +// 生产设备树 +export function equipmentree (query = {}) { + return request({ + url: '/basedata/prodevmnt/device/getProDeviceTreeSelect', + method: 'get', + params: query + }) +} +// 添加设备类型 +export function addDevicetype (data) { + return request({ + url: '/basedata/devicetype/add', + method: 'post', + data: data + }) +} +// 标准点位列表 +export function standardPoint (query) { + return request({ + url: '/basedata/patrolpointmnt/stdpatrolpoint/list', + method: 'get', + params: query + }) +} +// 联动点位管理列表 +export function linkageAdmin (query) { + return request({ + url: '/patrol/linkage/list', + method: 'get', + params: query + }) +} +// 联动点位管理设备类型列表 +export function linkageStyle () { + return request({ + url: '/basedata/devicetype/list', + method: 'get' + }) +} +// 获取生产设备树(包含区域、类型、部件模板) +export function productionEquipment () { + return request({ + url: '/basedata/prodevmnt/device/treeAreaDeviceSelect', + method: 'get' + }) +} +// 删除联动点位(批量) +export function dellinkPoint (linkagePosIds) { + return request({ + url: '/patrol/linkage/' + linkagePosIds, + method: 'delete' + }) +} +// 设备类型管理修改 +export function modifyEquipment (data) { + return request({ + url: '/basedata/devicetype/update', + method: 'post', + data: data + }) +} + +// 生产区域管理导出 +export function exportarea (query) { + return request({ + url: '/api/area/exportarea', + method: 'get', + params: query + }) +} +// 查询部门列表 +export function listArea (query) { + return request({ + url: '/basedata/area/list', + method: 'get', + params: query + }) +} + +// 查询部门列表(排除节点) +export function listAreaExcludeChild (areaId) { + return request({ + url: '/basedata/area/list/exclude/' + areaId, + method: 'get' + }) +} + +// 查询部门详细 +export function getArea (areaId) { + return request({ + url: '/basedata/area/' + areaId, + method: 'get' + }) +} + +// 查询部门下拉树结构 +export function treeselect (query) { + return request({ + url: '/basedata/area/treeselect', + method: 'get', + params: query + }) +} + +// 根据角色ID查询部门树结构 +export function roleAreaTreeselect (roleId) { + return request({ + url: '/basedata/area/roleAreaTreeselect/' + roleId, + method: 'get' + }) +} + +// 新增部门 +export function addArea (data) { + return request({ + url: '/basedata/area', + method: 'post', + data: data + }) +} +// 生产新增部门 +export function addArea1 (data) { + return request({ + url: '/basedata/area/add', + method: 'post', + data: data + }) +} + +// 修改部门 +export function updateArea (data) { + return request({ + url: '/basedata/area', + method: 'post', + data: data + }) +} + +// 修改生产部门 +export function updateArea1 (data) { + return request({ + url: '/basedata/area/update', + method: 'post', + data: data + }) +} + +// 删除部门 +export function delArea (areaId) { + return request({ + url: '/basedata/area/remove/' + areaId, + method: 'post' + }) +} +// 联动点位参数列表 +export function linkage (query) { + return request({ + url: '/system/config/list', + params: query + }) +} +// 保存联动参数 +export function saveLinkage (data) { + return request({ + url: '/patrol/linkage/action', + method: 'post', + data: data + }) +} +// 添加联动点位 +export function addLinkage (data) { + return request({ + url: '/patrol/linkage', + method: 'post', + data: data + }) +} +// 获取所属专业 +export function professionType () { + return request({ + url: '/system/dict/data/type/profession_type', + method: 'get' + }) +} +// 获取检修区域列表 +export function maintenanceArea (query) { + return request({ + url: '/patrol/maintarea/list', + method: 'get', + params: query + }) +} +// 添加设备类型 +export function addDevice (data) { + return request({ + url: '/basedata/devicetype/add', + method: 'post', + data: data + }) +} +// 删除设备类型 +export function deleteDevice (params) { + return request({ + url: '/basedata/devicetype/delete/' + params, + method: 'post' + }) +} +// 修改设备类型 +export function editDevice (data) { + return request({ + url: '/basedata/devicetype/update', + method: 'post', + data: data + }) +} +// 设备类型列表树 +export function deviceTrees (data) { + return request({ + url: '/basedata/devicetype/getProDeviceTypeTreeSelect', + method: 'get' + }) +} +// 查询点位列表 +export function dotList () { + return request({ + url: '/basedata/patrolpointmnt/stdpatrolpoint/list', + method: 'get' + }) +} +// 生产点位管理左侧列表树 +export function proDotManTrees () { + return request({ + url: '/basedata/prodevmnt/device/getProDeviceTreeSelect', + method: 'get' + }) +} +// 生产点位管理中间列表 +export function proDotManTable (params) { + return request({ + url: '/basedata/patrolpointmnt/patrolpoint/list/monitor', + method: 'get', + params: params + }) +} +// 生产点位管理单条、多条数据删除 +export function proDotTableDeleteSin (deleteid) { + return request({ + url: '/basedata/patrolpointmnt/patrolpoint/remove/' + deleteid, + method: 'post' + }) +} +// 生产点位管理单条数据新增 +export function proDotTableAddSin (data) { + return request({ + url: '/basedata/patrolpointmnt/patrolpoint', + method: 'post', + data: data + }) +} +// 生产点位管理单条数据修改 +export function proDotTableEditSin (data) { + return request({ + url: '/basedata/patrolpointmnt/patrolpoint/edit', + method: 'post', + data: data + }) +} +// 查询监控列表(预置点) +export function bindingMonitorDotList (channelType) { + return request({ + url: '/patrol/preset/camera/' + channelType, + method: 'get' + }) +} +// 预置点下发 +export function presetDotDistribute (params) { + return request({ + url: '/patrol/preset/issue', + method: 'get', + params: params + }) +} +// 转到预置点 +export function convertPresetDot (params) { + return request({ + url: '/patrol/preset/goto', + method: 'get', + params: params + }) +} +// 拍照 +export function photograph (params) { + return request({ + url: '/patrol/videotape/snap', + method: 'get', + params: params + }) +} +// 云台控制 +export function cloudControl (params) { + return request({ + url: '/patrol/videotape/ptz', + method: 'get', + params: params + }) +} +// 实时直播 +export function realLive (params) { + return request({ + url: '/patrol/video/realtime', + method: 'get', + params: params + }) +} +// 录像列表 +export function recordList (params) { + return request({ + url: '/patrol/videotape/record/list', + method: 'get', + params: params + }) +} +// 录像 +export function record (params) { + return request({ + url: '/patrol/videotape/record', + method: 'get', + params: params + }) +} +// 回放开始 +export function reviewStart (params) { + return request({ + url: '/patrol/videotape/review/start', + method: 'get', + params: params + }) +} +// 回放结束 +export function reviewStop (params) { + return request({ + url: '/patrol/videotape/review/stop', + method: 'get', + params: params + }) +} +// 回放控制 +export function reviewControl (params) { + return request({ + url: '/patrol/videotape/review/control', + method: 'get', + params: params + }) +} +// 焦距光圈 +export function focalAperture (params) { + return request({ + url: '/patrol/videotape/ptz/fi', + method: 'get', + params: params + }) +} +// 绑定预置点 +export function bindingPreset (data) { + return request({ + url: '/patrol/preset', + method: 'post', + data: data + }) +} + +// 设置预置位点 +export function issueUpdate (params) { + console.log('0000000',params) + return request({ + url: '/patrol/preset/issueUpdate', + method: 'get', + params: params + }) +} + +// 修改生产设备 +export function editProEquip (data) { + return request({ + url: '/basedata/prodevmnt/device/update', + method: 'post', + data: data + }) +} +// 获取生产设备树(包含区域、设备、部件) +export function getProEquipTree () { + return request({ + url: '/basedata/prodevmnt/device/getProDeviceTreeSelect', + method: 'get' + }) +} +// 获取生产设备详情 +export function getProEquipShow (deviceId) { + return request({ + url: '/basedata/prodevmnt/device/' + deviceId, + method: 'get' + }) +} +// 查询点位列表 +export function searchDotsList (params) { + return request({ + url: '/basedata/patrolpointmnt/stdpatrolpoint/list', + method: 'get', + params + }) +} +// 获取主设备类型下的部件类型 +export function getMainEquipPartType (params) { + return request({ + url: '/basedata/devicetype/getCommpTypeTreeSelectByMainDevicetypeId', + method: 'get', + params: params + }) +} +// 获取算法列表 +export function getAlgList () { + return request({ + url: '/basedata/alg/list', + method: 'get' + }) +} +// 获取算法子类型 +export function getAlgPartType () { + return request({ + url: '/basedata/subtype/list', + method: 'get' + }) +} +// 保存标准巡检点位 +export function saveStaDot (data) { + return request({ + url: '/basedata/patrolpointmnt/stdpatrolpoint/addBatchList', + method: 'post', + data: data + }) +} +// 获取主设备类型 +export function getMainEquipType (params) { + return request({ + url: '/basedata/devicetype/list', + method: 'get', + params: { 'powerMainEquFlag': 'Yes' } + }) +} + + +// 添加生产设备 +export function insertMainDeviceAndCommByDeviceType (data) { + return request({ + url: '/basedata/prodevmnt/device/insertMainDeviceAndCommByDeviceType', + method: 'post', + data: data + }) +} + +// 获取生产设备详情 +export function getEquInfo (id) { + return request({ + url: '/basedata/prodevmnt/device/' + id, + method: 'get', + params: { id } + }) +} + +export function getStationNameList (params) { + return request({ + url: '/basedata/station/getStationNameList', + method: 'get', + params + }) +} + +// 获取检修区域树 +export function getRepairAreaTree (params = {}) { + return request({ + url: '/basedata/prodevmnt/device/treeAreaDeviceSelectAgain', + method: 'get', + params + }) +} + +// 获取检修区域树 +export function updateRepairAreaStatus (id, enable) { + return request({ + url: '/patrol/maintarea/update', + method: 'get', + params: { + lineId: id, + enable + } + }) +} +// 批量下发检修区域 +export function downAreas (ids) { + return request({ + url: '/patrol/maintarea/issue', + method: 'get', + params: { + ids + } + }) +} diff --git a/src/api/basedata/patrolpointmnt/patroltype.js b/src/api/basedata/patrolpointmnt/patroltype.js index 351401c..c6d12e4 100644 --- a/src/api/basedata/patrolpointmnt/patroltype.js +++ b/src/api/basedata/patrolpointmnt/patroltype.js @@ -38,4 +38,12 @@ export function postRemove(query) { method: 'post', // params: query }) +} +// 查询巡视类型列表 +export function listPatroltype(query) { + return request({ + url: "/basedata/patrolpointmnt/patroltype/list", + method: "get", + params: query, + }); } \ No newline at end of file diff --git a/src/api/equipment/equipment.js b/src/api/equipment/equipment.js index 6e82dec..97f89de 100644 --- a/src/api/equipment/equipment.js +++ b/src/api/equipment/equipment.js @@ -75,4 +75,12 @@ export function mainsystemList(query) { method: 'get', params: { pageNum: 1, pageSize: 10000 } }) +} +// 导出 +export function download(query) { + return request({ + url: '/basedata/eqpbook/export', + method: 'post', + data: query + }) } \ No newline at end of file diff --git a/src/assets/card_full_bg.png b/src/assets/card_full_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..05b8c2e7608f5788b5cb056122b0d140e9c5ecb3 GIT binary patch literal 47886 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 HegFRhv>^ME literal 0 HcmV?d00001 diff --git a/src/assets/collect.png b/src/assets/collect.png new file mode 100644 index 0000000000000000000000000000000000000000..f8a3823314556ae99743d6d156e9a6fb66d9ef74 GIT binary patch literal 998 zcmVPx&ph-kQR9Hvtncr&@Sro^==iWOuX-JG#OIKV()EA#B{eiOm=?`{A1uF=O8ZGrl z6$^s9i?k2+QA89`SkMRcUs!gxOJQ-XKT+sk;ESMO(Q2C5Bqfo98APxeg z12AS~CO^<5S{|xh0LVpHL)Xy|jnKKBCa7fr zAeRI*x7Zs9%4*AMZFzOYDG9i$@C2FJ{-rjk%xFaImIjl6L@;g zN(xD4fwHDXVGQe2&m$w5 z&ajXozwPeSVr`8oS{p0_aCDD_EM8p~rSrSm z)zP+1DiRFX0FRA{crqV?y~dQt;{L6zDjcZ!3K+=)l&OKUNV#P3?|Zt`>20l=!HnDg zztFFbJjUC2GAE=k+^d{R7MtPpb~Z~h+S~V^>u=u2A(Z6OWzt1hb9ch|@|eubST(kM zoh^~YY|P%9OdEMF)c&PuuI+tId`(<0fqoym$og1sLn(js@qLXxsxUUJ$^f$}qf}I5 zsEewMmkTbcXwYr9V#OnOJFKGNe{q6T_zYo(RrnxMysnC#X37ii@sY?5b39jl1~O%l Ug-djm;s5{u07*qoM6N<$f=E`*1^@s6 literal 0 HcmV?d00001 diff --git a/src/assets/images/image-btn-left-disable.png b/src/assets/images/image-btn-left-disable.png new file mode 100644 index 0000000000000000000000000000000000000000..93e11e1e53e9a0e967a047c5b47f505232f5d68a GIT binary patch literal 781 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&di3`~nWT^vIy7~kGC%zNY@a_r+w!%3?{qGx7h zzSwqaQc~uECHJ`}6u&W?#=YczpNYf6B7OmtB_1AyQ?)n>CcHW0?4l&N#Ph>*^IvsB zoC&MGZ}&}b*!XO2-TwcZbx!96ip16%8-B^Wc5CPVQgPRd88&k1`P=r!N%F9TufCe~ zLjKR~3rBy<{jGNXbKtCH{zcXD4sHA6*8l(2o9isD?tUa~^Ui4;e(xsO&Of}q?~GO7 zosiMrYXMIB z>Z`jpUHfMcB3b`z=ghNd+kdM+v^no?ci>KdYRWaE;+=9Q`=1v5oTG9wSH#t@zvc8K z+xp#i|9M{i;+c2*JO7IktFsn;?dNuGt1q~HA$-DmKi{WDGkyNa=T|V^?viZ3o)XRs POuY=Au6{1-oD!M<%*H@u literal 0 HcmV?d00001 diff --git a/src/assets/images/image-btn-left-hover.png b/src/assets/images/image-btn-left-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7de0cd4ec75a69936d362533839792ba6a4eb3 GIT binary patch literal 1288 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB?p#k7$B+ufw{yJnr9(xIpP&0NS?J`UfR%?X zGp%F^lwQdlA{uhyFeB?iD^C5=gVS8Kmeg_Dv91!oTh{E6G|^S5rD@g&fhl_=T*1SlK zP^M>{fef>m7R(Eu`|4BC*2n*`UAqP43v4jwc=Gx7Yx@4U5F_|tEz6$=ChU;lGqs%gTnz6q~ZEj~P- zxvk|yXsWyAovIZA4}2_~HZf?mFx_Wt6A^RZ;Z|s46*$b)k;r&t14B{-gP~4?1R26= zwM^?`zCH9h%I96Xd)=$u(tjP#RJ;sf80AQtoq_h*w@0xmVdGq3jRsS|Kah7mB;VQs}IM| zX0h+`_I;92y71z@K`QgP^C#u83omQy6xutk8iqYfs`3R?V7FXuZcx;*Y;fY6J zitWW++dnc0^<8C}a4lXVkzvpBb0Q!9U+>{q)3WH^xeU(llXVqEpSOIko0p&T;^;!p z`*WmU%$;uHt9f(DvrSX>#y^`~5hSPj;G2DPeE$2~GoLLV)@_QuE)?=7`r^B1&pY|$ zJ*P6H9G~={`oq?R6eVS}{Lm+KXjQi6+Q|v z*S}11WSGOgEZ;*l|6bI-eMxE$HEyp;vS(VRpKvYEZpEV;N0;yZYJKqK#LwDJX`f;^ zk8{iY4BYqkWYycYos|JL{~E6^U-xsJ_VX`&i8TzLk7z8Mwd2Obi4n2UKfiptSo@!O YqUbCg@%6Kp0}Cz&Pgg&ebxsLQ0B;>e`v3p{ literal 0 HcmV?d00001 diff --git a/src/assets/images/image-btn-left-normal.png b/src/assets/images/image-btn-left-normal.png new file mode 100644 index 0000000000000000000000000000000000000000..dd798ac744bd2fedc21629b8f5d382b72573828f GIT binary patch literal 1323 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB?g391$B+ufx3lm1%Y=#?I6pViVc}`L)1Njv zn}_7CxMi{|tI|l`lX zh?K1^n;ujaed^u0uX7}?UD{{%X6A0o{V9oQW%JLyzgPV3j`89LdU92NZmMfteYIif zl?~Ud7!U1Te1&O8RowKiS1!H3|NPyLRb>M91|od-)0dkZ&=e@+?Rj64x!J0;v@Wmt zoGqisA6wmp#tXhMaO~zwo7Q?s_q&Pbh8Ik|HJo*S1H5>*1fF?mQCV?fW9)Amj?&|$ zcP~#{TPy7JH*lJ1PUHfWuLg}9>yH&}eNv}ql5w1=QB?3i4@ZI-9SmtM z48}?gl4J-kd&qLc&0Y3agJR2q#uqi|S2|^+Ki z&3|;FK2v3(_HFSK3~hTqJiVFoZ!v$7KtYe#h1#q$oqG#pn%BR~74F(C{$E?(KW$y@ zS64Zn0}+h2`90Pf#SNc_Yrd#^^wa)F{A|IRLmrH_>-()gKL0y$y+~h;)*gw!cfPo! zy_GI*@|RFoC@i}3vWBlY{@T40>qYP0QBOB&%|FX!mpFyt`PM1I@^*ch?QXWIHSvdD zEuTE|&>73eKwZiU@>QOe$Q^w!{iRQ}rh6vq&GYKUKi{9>u}f@e*cTq`cm1-uP{2yv z*ME;}uF5m|y#C-pbte6U_Zz2N{(FTpe=GBCZ{MV+Hf;6Z)?7TO-ek`lvo!Iyn)ksz z)pSv*rUUO;WA~SAl*qcr{BUo7i{^9fsG>*9YyVHa_^S6&SmxLM*$D=2Imcq-eZ-x0 zH5R@PjAwdRa%paU%KwQOU!S#I6zaLj8|%(l7A)N&Y$05*T{z}WorB~>_I?*_6~*jj zEQ_}-zW(2d(?a+bP z>7wq*txHQbc5)SmuQm8>y3p8CV(aXvtGAw(EVw9OonzhmICn8ne+YAf?dDa zPabyeTl-ezUkSr$V4nZp!`7?qYr1&jJ-z=%)rHT?|1;`MU9|az@YIdKvW>yh)z4*} HQ$iB}66jV{ literal 0 HcmV?d00001 diff --git a/src/assets/images/image-btn-left-press.png b/src/assets/images/image-btn-left-press.png new file mode 100644 index 0000000000000000000000000000000000000000..fd371cf3f03ac85fd6460288c7d963446d91e763 GIT binary patch literal 1330 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB?r~2S$B+ufw{uSCN4tu&pO3Nb-?s6QiJx@* z@g?k)Vg?t^WF?i06|Z{n+@sw)okZxgWPS-F~qr{eAN) zuJ$QG?OU1*ILdo3O}MmRvg-V<^|3bd_dea+tG@6;!GW8Px-A#DJKk{l(o-LMym;pm zt-VF80Y9#my;kY_p(tP`yNct!{W-%)2^XbJKB@jW<`@~iZH0tw_`(+(Vi{j+3rO{a z{hASaai0W-&V{7oL0+e?9Bxgu&B~mxb3T7=w891@rWt~aXF3?tTo{a%8YBe|^l&7& zu^1?mA#5_Y;lz&}vXb*R92EF-!Nuj?oDJo6=25%XujMLuxwqW-L1E3?xwgKA^$z!? zh0A_a^29T1uqzbY|JSg!bavFt->ITDKEWXlUrJ?up6_c7eY$Kn-^G?iyEoeOePsHT zJh|+>@#4hTmHQpp48EO?ubURxw|_EgfAW@wf7jLCez=@0vG3T`mPL2&{<*Av-!J~( zuWlQOhK)>Rd%GUW%W(&94*lBME~mez|6zTy+mDusOlA9xGH zeuF>xXF2B^_#Jq+`1sos!4_|)+*SJ>fBElYXP*DN&-Zf8H}E=e;I#Ui6O&EeURbeQ za=%*Q$Hgy8zEyudq~0TFV9=)gpOa_5&-yLaPc_yiJbe7Js*HC8g z`IqaorvKCDgoQd9Klr(K!Rr02KZdhEx9oJNzx&-zW{p_5S8Mn4YX=j0 zZuIP~`scH8>00JpzudEgWS++TEPHP)uqH--3RnFs?SnJ!Uif1Z=A`Y_k)-+{Pu*h2 z-v*f5=5@qI z&e7c#r0U|97b*Mo%|WjN$7*zw+gKL&tE|_#s;#)^;*4zD#ODVNCV2lg`}+OTn&th< zoR819WD7A}xN9x6Varpqv|Tax6IbTk@N?p~bC(AYZ3|7fi_*Up^kbd3hP zZ_O7hWNbI@vZ+6nd+6Ugl9+XPe9aJoDDD$_d}1zig`U5(nPKg6|i+f?v0kDFmK4_rL11`+ugSPZRGN T#7@rv7I6%ou6{1-oD!M``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&di3``3=T^vIy7~kIAn0G5dr0wD7+aB{al^S{< zJ#=lQvU6lY%6r}kuV182kv?&+SLeWkjp70-OT0W%Ux~2n@YwNx;gUs~Go^l5xZhV+ zHEesi=hzW56~}om%XYtCy(;T{+3vDEGr9k67dT|{ufpSUiGd8Cc>Ue)TQ0o*nm6rq zs=eKh#TRZK>HWP<=d@#>NPkteyhHo`sI_*-t!F!>FF)V$wW@Ztpiu0>XuI}$ORLv9 zr+@8|v6|~=`|kaIj@XzvzjKAMzqBemTDM~DZiRPM4oMCCoZtTje0AaIVmu(h&_fw< zhJ{1%%2)3>D?1t64?b^C{o8V~yztSh`HaU8+n=zt6<%lOaOc));njCtHhhrUP?0$O zu~O4i@xz>SUrpRFn`4^4>yD0uzcCYja>)4| zo7wl^X-#Ycmq}_M1O; zF`M7DsN%})|9_@V3|k#~e$$%yDxSu6J2byYeG#@x{wvk%7T^E=2P@NUmQrJunuox& O%i!ti=d#Wzp$PyDxk!ls literal 0 HcmV?d00001 diff --git a/src/assets/images/image-btn-right-hover.png b/src/assets/images/image-btn-right-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..9477a94bb8cfccd5542517d9918fffcbedae4752 GIT binary patch literal 1283 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB?hH>C$B+ufw{y3zfDI9z!S=|K`T>^gwddW_n zWVXTXqFJfX^1kx+%FSh>Uk@$xx@Y&gcFM+U8~Lw&H~#$W?Wt_m^MO z6|M~r%P)nWP2_A*W)F8M&-icTRq#Q+?3wqE<83p)E`1U_+j7OsncDXnrS%#M-mD0S zFZ21qtuR4g$F4^i?q2+&TywblxLg@Ty_%mlICOC+xUmQ*Gj#|u9_e66a$zu3YLF0g z=pj$|q4I;nk>~pul^J;gK5w4)xz2L^*^OrWzdo<8l@LhMcQ|{t>RpK?|J@fmgEgNw zAMl8f;o;mUo{+U9EVk8ro9ox0nf$c}JuYw^l8)av{ejqdpJTtoRR6jsANO2(KvFj) zBqKk|z_~G6Bc;S@ZAtB3)}GG23@U5P%M!NVE%Z*`+{YQ;nkLyICFI7nH9xr;&z4^$iHGN}A{?if9L>V%rJQ&leL-hdES&P{UjKF$vFlC$#EYZeu$-^^#la_=* zp|As;#ZT{?-2R+Pz-9W1(DMiHy$!AZ&Mx;*S%-CxN#3FPbM%4YUpLR%U!8vS{?Cuz zW)GF$u<%SjwR8IYS=){8H^uh<%)Yz!=i1qO4!K8gO2}zH-<1F0%yCP3Q;QuRx4lyP z6aD9q`wb2WxoUIsPgN$LbN~FEd4I*v+xGVpB<&749XN4>J?`0=l6~=?fAc<{+#6c| zJAB_m<&EM7MgJz1Z;CkSy#9Q9-1_~s>z~>0J8NCja+vGFHy!cy1{t}kIr+0by#K&2 z-?_KJeZRihN1gH|KjyXn{rC9y{U81B^!QwUaCF-~Sjc&2-dibVe(7dmyF<&kf0h63 zZsgk6Ut>On{N#(42NqA2IEaUBjO29ZKKDoA z>zB)0mu7zpkGb+Wf5xnxk9OwmNQl#T$N($_yv#S=``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB?k-Ok$B+ufw{!022d7FLpZ|Q0Vzl={58muj z5wkdzcjdk3wbi%waeUwS{Q`IU_2z^# zjxv{{mOEAy2y`zfalC(VGWYfU(f`f|ubq75K!(!Aw{q7R@|!j!&ZzMZzut6m>Y<%R zvF%J6e{^T>_G5e{!y(=GQs?Na`>$9$3tlj;s^Q#UtB|DUH}i7k{SO((Lf<`C*dn|1 z3g_{wyuwbu9gj;E%Q$4(`pkIKZ{g+r{<%~0ISYjiN=!2Z8P9Yuq`5E{D>X<89_Zmn zaAPr0CQo>c;D*O9HuA_`NGxe&eN*u}L+$6Uim1!2Oc8&dB=cLbnBSb;`-R^mC|~w; zPJOOYuUZAye)aA4jTl5o@Z@ie!@!`Yj#|tM+^?xhRIZ>W* z>rHRb?dp6R_b&V7`(njQhmN<>J{GoyYht%mtGL85Bs#5I;k9$$(+3`x3?D8wI_!|C zeAMGbU*gwQdxh2rIIKA}toZSW$0W6s z9J!7E4!VT<%V^u*RzIl4*kYfr60-X1S~sSxO0)O_tOagwwtqOQEM#Zebe7jF0{?0b z@@q}~b~NL&!}|O~|BZe<6u!pwLRQj0HNMWAoAIrK>ud#6x&5_@@9+LP z)%Sr@n{^4l|B_AmGe2B^>2?3@&wKszE0?Z+%Q=68pTn;UE?MWhdr$E%4DJ6JJ?muk z(tNv3S~Z8X7+*f@4EZm(s%F*CV@&O8_m+BB<|m%o_klB;C8f>h$N9bDVRaJqt3Rcm zulRibmZV)`Ys0^blV=`pyXUdJsxJHB&JxS_XZ>$W+X+@O{+?$$v+_#==l-4N+Mh+$ zfAqRH+xq{)s}F@Q$}@76{Lm9W%L@jp{*}BKUDd1A``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB?oLk^$B+ufw{v1MWI{!bpPza6LE2=`ZD}m! z-m}bR<@DT)&X1)xsqt|7z#P__tA0BsU%$Kap7G6=ZThtuCui=S6K|B5_WbSt-Ouk>PoC?zqxl}Qa(}XL zpW-9KRsr^h^Bh?#S+&CX6Mr2$_ViKi^KIoa>Y3GZ7iRKb5#iX~VI_Mn$miCtE~(^M>adA;;IY zarrhMVA3tqaZz2{&V9P-SdhZr`TSEiI3&2T7$`H%5M(^l!I0*{V64<2DR`iVBf*V4 zVF~4g|JCY3TO4N#vN7NI|E}{$^LqcIqOvB8|9*TC7QfXJu;hEAgZ+Yw|IdZ}c=3{X z@6E-Ux4X&`Qy)Ip+QQhlo+0Gd@z zILgVugus+N3vwQ|+7ZQm1Z4a;A7MHo3ZZDi_rWfkhQ z^j*)^TNC$Za`FeNmOPF>EzYEWFoTiBGvk`p*L@dHMu)j`>}`Hr=I-Jh!MTk^`5o(B z-m5HIW?8SdyH&|KDd-<-$pXW;1C7h?7qrFAmOP-w>c3q_qqwElcyr#v?*49pf*vu4 zhwAZHA6Bn5eBWQ*vf4iF&Q|?qdAr0l4UNl}&6zkoo$bZ9EsK6T>#|Fyr{CSW{tU-_ zgP;QkJ!SuStFtd~bkAD;Jl@v)^|O6HPt5qh`Itqfrs$Mp?Z+kdpK3F%F0NnyXG&rC zepBt5LmG_j^DaEx@1Q*Y*q>`m?P~YFewO_Hsr*^1zl8FG3m47jy3fBa^|S8J+KKz? z6d%X^`sb{CSiMKU;M<+wod*}^AKza6?_1O7@7_K5*$~url*fyJzBf`AG@#B{FjX$PDQ{%jlt8^&t;ucLK6TRM?-4> literal 0 HcmV?d00001 diff --git a/src/views/administration/administration copy.vue b/src/views/administration/administration copy.vue new file mode 100644 index 0000000..475cd07 --- /dev/null +++ b/src/views/administration/administration copy.vue @@ -0,0 +1,1182 @@ + + + + + diff --git a/src/views/administration/administration.vue b/src/views/administration/administration.vue index 4e9e0e9..e7a763b 100644 --- a/src/views/administration/administration.vue +++ b/src/views/administration/administration.vue @@ -141,7 +141,7 @@ min-width="100px" /> - + @@ -205,7 +207,7 @@ size="mini" type="text" icon="el-icon-edit" - @click="handleUpdate(scope.row)" + @click="editClick(scope.row)" >{{ $t("share.edit") }} @@ -224,7 +226,7 @@ :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" - @pagination="init" + @pagination="init" /> @@ -634,6 +636,42 @@ }} + + + + + + + + + + + @@ -651,7 +689,10 @@ import { getTaskIsSue, } from "@/api/administration"; import TreeSelect from "@riophae/vue-treeselect"; +import newTask from "./new_task"; +import editTask from "./edit_task"; export default { + components: { newTask,editTask }, data() { return { queryParams: { @@ -842,6 +883,9 @@ export default { time: null, }, treeWatchInput: "", + addShow: false, + editShow: false, + editid: "", }; }, watch: { @@ -879,6 +923,38 @@ export default { }; this.init(); }, + addSuccess() { + this.addShow = false; + this.$modal.msgSuccess("添加成功"); + this.init(); + }, + editSuccess() { + this.editShow = false; + this.init(); + }, + stateFormat(row, column) { + if (row.executionStatus == 0) { + return "立即执行"; + } else if (row.executionStatus == 1) { + return "周期执行"; + } else if (row.executionStatus == 2) { + return "定时执行"; + } else if (row.executionStatus == 3) { + return "已执行"; + } else if (row.executionStatus == 4) { + return "间隔执行"; + } + }, + stateTask(row, column) { + if (row.executionStatus == 1) { + if (row.taskCycle == 0) { + return "按月"; + } else if (row.taskCycle == 1) { + return "按周"; + } + return ""; + } + }, handleStatusChange(row) { let data = { taskId: row.taskId, @@ -891,19 +967,22 @@ export default { }); }, // 新增 + // handleAdd() { + // this.dialogTableVisible = true; + // getPatroltypeList().then((res) => { + // if (res.code == 200) { + // this.patroltype = res.rows; + // } + // }); + // getAreaList().then((res) => { + // if (res.code == 200) { + // let tree = this.dialogTree(res.data); + // this.treeData = tree; + // } + // }); + // }, handleAdd() { - this.dialogTableVisible = true; - getPatroltypeList().then((res) => { - if (res.code == 200) { - this.patroltype = res.rows; - } - }); - getAreaList().then((res) => { - if (res.code == 200) { - let tree = this.dialogTree(res.data); - this.treeData = tree; - } - }); + this.addShow = true; }, // 弹框tree扁平转树结构 dialogTree(list) { @@ -1075,8 +1154,10 @@ export default { this.copyDialogVisible = true; }, // 编辑任务 - handleUpdate(row) { - this.dialogTableVisible = true; + editClick(row) { + this.editid = row.taskId; + sessionStorage.setItem("reportLineId", JSON.stringify(this.editid)); + this.editShow = true; }, handleClose() { this.copyDialogVisible = false; diff --git a/src/views/administration/edit_task.vue b/src/views/administration/edit_task.vue new file mode 100644 index 0000000..017fc7a --- /dev/null +++ b/src/views/administration/edit_task.vue @@ -0,0 +1,1820 @@ + + + + + + + diff --git a/src/views/administration/new_task.vue b/src/views/administration/new_task.vue new file mode 100644 index 0000000..1aa887f --- /dev/null +++ b/src/views/administration/new_task.vue @@ -0,0 +1,1624 @@ + + + + + + + diff --git a/src/views/area/area.vue b/src/views/area/area.vue index 8e9868a..06ea2b6 100644 --- a/src/views/area/area.vue +++ b/src/views/area/area.vue @@ -51,9 +51,13 @@ > - {{ - $t("area.UnfoldAndFold") - }} + {{ $t("area.UnfoldAndFold") }} {{ @@ -210,8 +214,9 @@ export default { components: { treeSelect }, data() { return { + treeKey: 0, queryParams: {}, - tableData: [{}], + tableData: [], dialogVisible: false, title: this.$t("area.AddArea"), dialogForm: {}, @@ -245,7 +250,7 @@ export default { menuOptions: [], type: 0, editData: {}, - isExpandAll:true + isExpandAll: true, }; }, mounted() { @@ -277,24 +282,30 @@ export default { }); }, //表格扁平转树结构 - tableListFn(list) { - var map = {}, - node, - tree = []; - for (let i = 0; i < list.length; i++) { - map[list[i].areaId] = list[i]; - list[i].children = []; + tableListFn(list = []) { + var map = {}; + var tree = []; + + // 只克隆一次 + const clonedList = list.map((item) => ({ + ...item, + children: item.children ? [...item.children] : [], + })); + + // 构建 map + for (const item of clonedList) { + map[item.areaId] = item; } - for (let i = 0; i < list.length; i += 1) { - list[i]; - if (list[i].parentId !== 0) { - // 不是根节点 - map[list[i].parentId].children.push(list[i]); // 放到父节点的children里 + + // 构建父子关系 + for (const item of clonedList) { + if (item.parentId !== 0 && map[item.parentId]) { + map[item.parentId].children.push(item); } else { - // 是根节点 - tree.push(list[i]); // 根节点计入结果数组 + tree.push(item); } } + return tree; }, areaTypeFn(type) { @@ -341,7 +352,7 @@ export default { }, handleAdd(areaId) { this.dialogForm = {}; - this.dialogForm.parentId=areaId; + this.dialogForm.parentId = areaId; let data = { parentId: areaId, }; @@ -406,16 +417,21 @@ export default { }); }); }, - toggleExpandAll(isExpandAll){ - this.treeKey = +new Date() + toggleExpandAll(isExpandAll) { + this.treeKey = +new Date(); this.isExpandAll = !isExpandAll; }, - /** 导出按钮操作 */ - handleExport() { - this.download('/basedata/area/export', { - ...this.queryParams - }, `area_${new Date().getTime()}.xlsx`) - } + /** 导出按钮操作 */ + handleExport() { + this.download( + "/basedata/area/export", + { + ...this.queryParams, + }, + `area_${new Date().getTime()}.xlsx` + ); + }, + handleClose() {}, }, }; diff --git a/src/views/equipment/equipment.vue b/src/views/equipment/equipment.vue index 6a2512e..b38818f 100644 --- a/src/views/equipment/equipment.vue +++ b/src/views/equipment/equipment.vue @@ -104,6 +104,7 @@ icon="el-icon-upload" size="mini" :disabled="uploadBtn" + @click="handleModel" >{{ $t("equipment.ModelSynchronization") }} @@ -694,7 +695,8 @@ import { video_mode, eqpbook, edit, - mainsystemList + mainsystemList, + download } from "@/api/equipment/equipment"; import Treeselect from "@riophae/vue-treeselect"; import "@riophae/vue-treeselect/dist/vue-treeselect.css"; @@ -727,6 +729,7 @@ export default { videoModeData: [], type: 0, mainSystemData: [], + modelData:[], }; }, mounted() { @@ -849,6 +852,15 @@ export default { }, handleSelectionChange(selection) { this.ids = selection.map((item) => item.eqpbookId); + this.modelData=selection; + // this.modelData=selection.map(item => { + // return { + // Code: item.areaId, + // Command: item.Command, + // Type: item.Type, + // deviceCode: item.deviceCode, + // } + // }); if (this.ids.length >= 0) { this.multiple = false; } @@ -909,12 +921,24 @@ export default { } }, // 导出 - handleExport() {}, + handleExport() { + let data={ + pageNum:this.queryParams.pageNum, + pageSize:this.queryParams.pageSize, + } + download(data).then(res=>{ + console.log(res) + }) + }, goToAboutPage(id) { this.$router.push("/basedata/eqpbook/channel"); }, // 图片上传弹框 uploadImg() {}, + // 模型同步 + handleModel(){ + console.log(this.modelData) + } }, };