diff --git a/public/plugins/jessibucaPlayer/bg.jpg b/public/plugins/jessibucaPlayer/bg.jpg deleted file mode 100644 index 829850b..0000000 Binary files a/public/plugins/jessibucaPlayer/bg.jpg and /dev/null differ diff --git a/src/api/basedata/area/area.js b/src/api/basedata/area/area.js index 1d050a3..465103b 100644 --- a/src/api/basedata/area/area.js +++ b/src/api/basedata/area/area.js @@ -68,6 +68,14 @@ export function editSave (data) { data: data }) } +// 修改巡视任务(绍兴) +export function shaoxingEditSave (data) { + return request({ + url: '/patrol/task/shaoxing/save', + method: 'post', + data: data + }) +} //主设备下巡检点和巡检点巡检设备树(巡视任务回显) export function editList (query) { return request({ @@ -83,6 +91,13 @@ export function editTask (taskId) { method: 'get', }) } +// 巡视任务编辑回显(绍兴) +export function editTaskShaoxing (taskId) { + return request({ + url: '/patrol/task/shaoxing/' + taskId, + method: 'get', + }) +} // 复制巡检任务 export function copyTask (query) { return request({ @@ -136,6 +151,14 @@ export function addPatrol (data) { data: data }) } +// 绍兴站新增/修改巡视任务 +export function shaoxingAddPatrol (data) { + return request({ + url: '/patrol/task/shaoxing/add', + method: 'post', + data: data + }) +} // 巡视任务管理列表 export function taskPatrol (query) { return request({ @@ -659,3 +682,11 @@ export function downAreas (ids) { } }) } + +export function proDotManTableRelation (params) { + return request({ + url: '/basedata/patrolpointmnt/patrolpoint/list/monitor/relation', + method: 'get', + params: params + }) +} diff --git a/src/api/basedata/patrolpointmnt/patrolpoint.js b/src/api/basedata/patrolpointmnt/patrolpoint.js index a1cd276..e7cd75c 100644 --- a/src/api/basedata/patrolpointmnt/patrolpoint.js +++ b/src/api/basedata/patrolpointmnt/patrolpoint.js @@ -149,4 +149,27 @@ export function getBdconfigMainsystem() { } +// 获取点位管理右侧设备树 +export function treeAreaDeviceSelectFilterByPresetRight(query) { + return request({ + url: '/basedata/prodevmnt/device/treeAreaDeviceSelectFilterByPreset/relation/right', + method: 'get', + params: query + }) +} + +export function treeAreaDeviceSelectFilterByPreset() { + return request({ + url: '/basedata/prodevmnt/device/treeAreaDeviceSelectFilterByPreset', + method: 'get' + }) +} + +export function treeAreaDeviceSelectFilterByPresetRelation() { + return request({ + url: '/basedata/prodevmnt/device/treeAreaDeviceSelectFilterByPreset/relation', + method: 'get' + }) +} + diff --git a/src/assets/images/pay.png b/src/assets/images/pay.png deleted file mode 100644 index bb8b967..0000000 Binary files a/src/assets/images/pay.png and /dev/null differ diff --git a/src/assets/images/r1.png b/src/assets/images/r1.png index 716272b..96a9a55 100644 Binary files a/src/assets/images/r1.png and b/src/assets/images/r1.png differ diff --git a/src/assets/images/r2.png b/src/assets/images/r2.png index 288b756..64a96a9 100644 Binary files a/src/assets/images/r2.png and b/src/assets/images/r2.png differ diff --git a/src/assets/images/r3.png b/src/assets/images/r3.png index c10e963..4f3c842 100644 Binary files a/src/assets/images/r3.png and b/src/assets/images/r3.png differ diff --git a/src/assets/images/r4.png b/src/assets/images/r4.png index 281163b..8671fcc 100644 Binary files a/src/assets/images/r4.png and b/src/assets/images/r4.png differ diff --git a/src/assets/images/r5.png b/src/assets/images/r5.png index 6888f75..a19e9da 100644 Binary files a/src/assets/images/r5.png and b/src/assets/images/r5.png differ diff --git a/src/assets/images/r6.png b/src/assets/images/r6.png index a08a7cf..56f77eb 100644 Binary files a/src/assets/images/r6.png and b/src/assets/images/r6.png differ diff --git a/src/assets/images/r7.png b/src/assets/images/r7.png index ec5fbd9..89f3ffc 100644 Binary files a/src/assets/images/r7.png and b/src/assets/images/r7.png differ diff --git a/src/assets/images/r8.png b/src/assets/images/r8.png index 42a38d0..253a11d 100644 Binary files a/src/assets/images/r8.png and b/src/assets/images/r8.png differ diff --git a/src/assets/images/renwuzhanbi.png b/src/assets/images/renwuzhanbi.png deleted file mode 100644 index ceccc1e..0000000 Binary files a/src/assets/images/renwuzhanbi.png and /dev/null differ diff --git a/src/assets/images/yuntai1.png b/src/assets/images/yuntai1.png index b47b5ba..9135088 100644 Binary files a/src/assets/images/yuntai1.png and b/src/assets/images/yuntai1.png differ diff --git a/src/components/ImagePreviewDialog/index.vue b/src/components/ImagePreviewDialog/index.vue new file mode 100644 index 0000000..5f9a57a --- /dev/null +++ b/src/components/ImagePreviewDialog/index.vue @@ -0,0 +1,383 @@ + + + + + diff --git a/src/layout/components/Sidebar/Item.vue b/src/layout/components/Sidebar/Item.vue index 1f33517..15b7ded 100644 --- a/src/layout/components/Sidebar/Item.vue +++ b/src/layout/components/Sidebar/Item.vue @@ -10,6 +10,7 @@ const navIconMap = { '巡视任务': require('@/assets/images/nav/task.png'), '设备管理': require('@/assets/images/nav/device.png'), '点位管理': require('@/assets/images/nav/point.png'), + '点位管理(实施用)': require('@/assets/images/nav/point.png'), '系统管理': require('@/assets/images/nav/system.png'), '区域管理': require('@/assets/images/nav/area.png'), '系统监控': require('@/assets/images/nav/monitor.png'), diff --git a/src/layout/components/Sidebar/SidebarItem.vue b/src/layout/components/Sidebar/SidebarItem.vue index d8f9bc9..aa5d92f 100644 --- a/src/layout/components/Sidebar/SidebarItem.vue +++ b/src/layout/components/Sidebar/SidebarItem.vue @@ -159,6 +159,9 @@ export default { str = "首页"; } } + if (str === "点位管理" && this.basePath !== "/site-management") { + str = "点位管理(实施用)"; + } return str; } }, diff --git a/src/plugins/modal.js b/src/plugins/modal.js index b37ca14..5832a2f 100644 --- a/src/plugins/modal.js +++ b/src/plugins/modal.js @@ -57,6 +57,7 @@ export default { confirmButtonText: '确定', cancelButtonText: '取消', type: "warning", + customClass: "card-page card-message-box", }) }, // 提交内容 diff --git a/src/router/index.js b/src/router/index.js index a27d6f3..7ece22f 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -101,6 +101,38 @@ export const constantRoutes = [ meta: { title: '巡视任务', icon: 'task', activeMenu: '/task-summary' } } ] + }, + { + path: '/patrol-plan', + component: Layout, + redirect: '/patrol-plan/notstart', + meta: { title: '巡视方案', icon: 'task' }, + children: [ + { + path: 'notstart', + component: () => import('@/views/cards/patrolPlan/notstart'), + name: 'PatrolPlan', + meta: { title: '巡视方案', icon: 'task', activeMenu: '/patrol-plan' } + } + ] + }, + { + path: '/site-management', + component: Layout, + redirect: '/site-management/index', + meta: { title: '点位管理', icon: 'point' }, + children: [ + { + path: 'index', + component: () => import('@/views/cards/site_management/site_management'), + name: 'SiteManagementCard', + meta: { + title: '点位管理', + icon: 'point', + activeMenu: '/site-management' + } + } + ] } ] diff --git a/src/utils/index.js b/src/utils/index.js index df5db12..4276ab4 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -388,3 +388,45 @@ export function isNumberStr(str) { return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str) } +export function getWeekdaysInRange(startDate, endDate) { + const start = new Date(startDate) + const end = new Date(endDate) + const days = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'] + + const totalDays = Math.ceil((end - start) / (1000 * 60 * 60 * 24)) + if (totalDays >= 7) { + return days + } + + const result = [] + const current = new Date(start) + while (current <= end) { + result.push(days[current.getDay()]) + current.setDate(current.getDate() + 1) + } + + return result +} + +export function getDaysInRange(startDate, endDate) { + const start = new Date(startDate) + const end = new Date(endDate) + + const totalDays = Math.ceil((end - start) / (1000 * 60 * 60 * 24)) + if (totalDays > 365) { + return Array.from({ length: 31 }, (_, index) => `${index + 1}号`) + } + + const result = [] + const current = new Date(start) + while (current <= end) { + const dayOfMonth = current.getDate() + if (!result.includes(dayOfMonth)) { + result.push(`${dayOfMonth}号`) + } + current.setDate(current.getDate() + 1) + } + + return result +} + diff --git a/src/views/cards/assets/card_full_bg.png b/src/views/cards/assets/card_full_bg.png new file mode 100644 index 0000000..05b8c2e Binary files /dev/null and b/src/views/cards/assets/card_full_bg.png differ diff --git a/src/views/cards/assets/collect.png b/src/views/cards/assets/collect.png new file mode 100644 index 0000000..f8a3823 Binary files /dev/null and b/src/views/cards/assets/collect.png differ diff --git a/src/views/cards/assets/styles/index.scss b/src/views/cards/assets/styles/index.scss index ec608a4..6bddfd3 100644 --- a/src/views/cards/assets/styles/index.scss +++ b/src/views/cards/assets/styles/index.scss @@ -546,6 +546,159 @@ } } +.site-point-add-dialog { + height: 92vh; + max-height: 92vh; + margin-top: 4vh; + display: flex; + flex-direction: column; + border: 0; + box-shadow: none; + + .el-dialog__body { + flex: 1 1 auto; + min-height: 0; + height: auto; + max-height: calc(92vh - 135px); + overflow-y: auto; + } + + .el-dialog__footer { + flex-shrink: 0; + border-top: 0; + } + + .site-point-cancel-btn { + border: 1px solid #3988ff !important; + background: #174d9b !important; + color: #43c0ff !important; + + &:hover, + &:focus { + border-color: #75c9ff !important; + background: #256fcc !important; + color: #ffffff !important; + } + } +} + +.monitor-config-dialog { + height: 88vh; + max-height: 88vh; + margin-bottom: 0; + display: flex; + flex-direction: column; + + &, + * { + scrollbar-width: none; + -ms-overflow-style: none; + } + + &::-webkit-scrollbar, + *::-webkit-scrollbar { + width: 0; + height: 0; + display: none; + } + + .el-dialog__body { + height: calc(88vh - 135px) !important; + flex: 1 1 auto; + overflow: auto; + padding: 24px; + box-sizing: border-box; + } + + .horizontal-tabs-container { + min-height: 650px; + } + + .el-dialog__footer { + flex-shrink: 0; + } + + .el-button { + border: 1px solid #3988ff !important; + background: rgba(3, 81, 198, 0.78) !important; + color: #43c0ff !important; + + &:hover, + &:focus { + border-color: #43c0ff !important; + background: rgba(57, 136, 255, 0.86) !important; + color: #ffffff !important; + } + + &.is-disabled, + &.is-disabled:hover, + &.is-disabled:focus { + border-color: rgba(57, 136, 255, 0.35) !important; + background: rgba(3, 81, 198, 0.28) !important; + color: rgba(67, 192, 255, 0.45) !important; + } + } + + .el-button--text { + border-color: transparent !important; + background: transparent !important; + color: #43c0ff !important; + + &:hover, + &:focus { + background: rgba(57, 136, 255, 0.14) !important; + color: #43c0ff !important; + } + } +} + +.monitor-config-popover { + &, + * { + scrollbar-width: none; + -ms-overflow-style: none; + } + + &::-webkit-scrollbar, + *::-webkit-scrollbar { + width: 0; + height: 0; + display: none; + } + + .el-button { + border: 1px solid #3988ff !important; + background: rgba(3, 81, 198, 0.78) !important; + color: #43c0ff !important; + + &:hover, + &:focus { + border-color: #43c0ff !important; + background: rgba(57, 136, 255, 0.86) !important; + color: #ffffff !important; + } + } +} + +.bind-thermal-dialog .bind-thermal-secondary-btn { + border: 1px solid transparent !important; + background: + linear-gradient(#1f6fe8, #2f8df2) padding-box, + linear-gradient(135deg, #75c9ff, #1c5fd8) border-box !important; + color: #ffffff !important; + box-shadow: 0 0 0 1px rgba(117, 201, 255, 0.35); + + &:hover, + &:focus { + border-color: transparent !important; + background: + linear-gradient(#2f8df2, #4aa3ff) padding-box, + linear-gradient(135deg, #9cdbff, #3988ff) border-box !important; + color: #ffffff !important; + box-shadow: 0 0 0 1px rgba(156, 219, 255, 0.55); + } +} + .card-message-box { border: none; padding-bottom: 0; @@ -632,6 +785,26 @@ } } + .el-button, + .el-button--primary { + border: 1px solid transparent !important; + background: + linear-gradient(#1f6fe8, #2f8df2) padding-box, + linear-gradient(135deg, #75c9ff, #1c5fd8) border-box !important; + color: #ffffff !important; + box-shadow: 0 0 0 1px rgba(117, 201, 255, 0.35); + + &:hover, + &:focus { + border-color: transparent !important; + background: + linear-gradient(#2f8df2, #4aa3ff) padding-box, + linear-gradient(135deg, #9cdbff, #3988ff) border-box !important; + color: #ffffff !important; + box-shadow: 0 0 0 1px rgba(156, 219, 255, 0.55); + } + } + } } diff --git a/src/views/cards/patrolPlan/notstart.vue b/src/views/cards/patrolPlan/notstart.vue new file mode 100644 index 0000000..a43a06e --- /dev/null +++ b/src/views/cards/patrolPlan/notstart.vue @@ -0,0 +1,717 @@ + + + + + + diff --git a/src/views/cards/patrolPlan/summary_editTask.vue b/src/views/cards/patrolPlan/summary_editTask.vue new file mode 100644 index 0000000..b1fdcbc --- /dev/null +++ b/src/views/cards/patrolPlan/summary_editTask.vue @@ -0,0 +1,1536 @@ + + + + + + + diff --git a/src/views/cards/patrolPlan/summary_newTask.vue b/src/views/cards/patrolPlan/summary_newTask.vue new file mode 100644 index 0000000..490f636 --- /dev/null +++ b/src/views/cards/patrolPlan/summary_newTask.vue @@ -0,0 +1,1442 @@ + + + + + + + diff --git a/src/views/cards/site_management/algorithm.vue b/src/views/cards/site_management/algorithm.vue new file mode 100644 index 0000000..9dea3bf --- /dev/null +++ b/src/views/cards/site_management/algorithm.vue @@ -0,0 +1,607 @@ + + + + + + diff --git a/src/views/cards/site_management/components/ImageAnnotation.vue b/src/views/cards/site_management/components/ImageAnnotation.vue new file mode 100644 index 0000000..0435664 --- /dev/null +++ b/src/views/cards/site_management/components/ImageAnnotation.vue @@ -0,0 +1,534 @@ + + + + + diff --git a/src/views/cards/site_management/components/chooseAlg.vue b/src/views/cards/site_management/components/chooseAlg.vue new file mode 100644 index 0000000..e40a57f --- /dev/null +++ b/src/views/cards/site_management/components/chooseAlg.vue @@ -0,0 +1,837 @@ + + + + + diff --git a/src/views/cards/site_management/components/chooseDevices.vue b/src/views/cards/site_management/components/chooseDevices.vue new file mode 100644 index 0000000..63e2a7c --- /dev/null +++ b/src/views/cards/site_management/components/chooseDevices.vue @@ -0,0 +1,222 @@ + + + diff --git a/src/views/cards/site_management/components/uploadDialog.vue b/src/views/cards/site_management/components/uploadDialog.vue new file mode 100644 index 0000000..d5c309f --- /dev/null +++ b/src/views/cards/site_management/components/uploadDialog.vue @@ -0,0 +1,171 @@ + + + \ No newline at end of file diff --git a/src/views/cards/site_management/site_management.vue b/src/views/cards/site_management/site_management.vue new file mode 100644 index 0000000..9a63bd2 --- /dev/null +++ b/src/views/cards/site_management/site_management.vue @@ -0,0 +1,4686 @@ + + + + + diff --git a/src/views/cards/taskSummary/inspectionTask.vue b/src/views/cards/taskSummary/inspectionTask.vue index 111f46e..9bde97a 100644 --- a/src/views/cards/taskSummary/inspectionTask.vue +++ b/src/views/cards/taskSummary/inspectionTask.vue @@ -1120,11 +1120,16 @@ export default { } .card-page ::v-deep .el-table__header-wrapper, -.card-page ::v-deep .el-table__fixed-header-wrapper, +.card-page ::v-deep .el-table__fixed-header-wrapper { + background: #dbe7fb !important; +} + .card-page ::v-deep .el-table__body-wrapper, .card-page ::v-deep .el-table__fixed, -.card-page ::v-deep .el-table__fixed-right { - background: #dbe7fb !important; +.card-page ::v-deep .el-table__fixed-right, +.card-page ::v-deep .el-table__empty-block { + background: transparent !important; + background-color: transparent !important; } .card-page ::v-deep .el-table th.el-table__cell {