From 63d9a9c62fd34f4b48a157e0bc57dd82ee09a197 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期四, 27 十一月 2025 17:36:12 +0800
Subject: [PATCH] 2025.11.27
---
src/components/iconfont/index.js | 5
src/components/list-item/ItemScene.vue | 3
src/components.d.ts | 15 +
src/components/SideList.vue | 3
src/components/ToolBar.vue | 17 -
src/views/HomePage.vue | 2
src/constants/menu.js | 33 ++
src/components/iconfont/IconPrinter.vue | 6
src/utils/doc.js | 22
public/工地巡查单据模板-简版.docx | 0
src/assets/iconfont/iconfont.js | 70 +++++
src/components/list-item/ItemMonitorObj.vue | 6
src/components/map/BaseMap.vue | 8
src/utils/map/index.js | 1
src/components/core/SiderMenu.vue | 4
src/views/fysp/scene/SceneInspectFile.vue | 145 +++++-----
src/components/map/SceneMap.vue | 206 ++++++++++++---
public/现场监管场景信息导入模板.xlsx | 0
src/views/fysp/task/components/CompTaskMap.vue | 8
src/views/fysp/task/components/CompSubTaskSelect.vue | 9
src/views/fysp/task/components/CompMonitorObj.vue | 5
src/utils/map/marks.js | 2
/dev/null | 0
src/components/iconfont/SvgIcon.vue | 42 +++
src/main.js | 9
src/composables/messageBox.js | 2
src/views/fysp/config/DomainCatalog.vue | 25 +
src/components/list-item/ItemSubTask.vue | 6
src/views/fysp/support/JingAnNightConstruction.vue | 24
src/components/core/Header.vue | 13
src/views/fysp/task/components/CompSubTaskList.vue | 30 +-
31 files changed, 512 insertions(+), 209 deletions(-)
diff --git "a/public/~$\345\267\241\346\237\245\345\215\225\346\215\256\346\250\241\346\235\277-\347\256\200\347\211\210.docx" "b/public/~$\345\267\241\346\237\245\345\215\225\346\215\256\346\250\241\346\235\277-\347\256\200\347\211\210.docx"
deleted file mode 100644
index fa96a92..0000000
--- "a/public/~$\345\267\241\346\237\245\345\215\225\346\215\256\346\250\241\346\235\277-\347\256\200\347\211\210.docx"
+++ /dev/null
Binary files differ
diff --git "a/public/\345\267\245\345\234\260\345\267\241\346\237\245\345\215\225\346\215\256\346\250\241\346\235\277-\347\256\200\347\211\210.docx" "b/public/\345\267\245\345\234\260\345\267\241\346\237\245\345\215\225\346\215\256\346\250\241\346\235\277-\347\256\200\347\211\210.docx"
index b02fcab..0041525 100644
--- "a/public/\345\267\245\345\234\260\345\267\241\346\237\245\345\215\225\346\215\256\346\250\241\346\235\277-\347\256\200\347\211\210.docx"
+++ "b/public/\345\267\245\345\234\260\345\267\241\346\237\245\345\215\225\346\215\256\346\250\241\346\235\277-\347\256\200\347\211\210.docx"
Binary files differ
diff --git "a/public/\347\216\260\345\234\272\347\233\221\347\256\241\345\234\272\346\231\257\344\277\241\346\201\257\345\257\274\345\205\245\346\250\241\346\235\277.xlsx" "b/public/\347\216\260\345\234\272\347\233\221\347\256\241\345\234\272\346\231\257\344\277\241\346\201\257\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
index 9ed8888..0ad502b 100644
--- "a/public/\347\216\260\345\234\272\347\233\221\347\256\241\345\234\272\346\231\257\344\277\241\346\201\257\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
+++ "b/public/\347\216\260\345\234\272\347\233\221\347\256\241\345\234\272\346\231\257\344\277\241\346\201\257\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
Binary files differ
diff --git a/src/assets/iconfont/iconfont.js b/src/assets/iconfont/iconfont.js
new file mode 100644
index 0000000..e548fd4
--- /dev/null
+++ b/src/assets/iconfont/iconfont.js
@@ -0,0 +1,70 @@
+(window._iconfont_svg_string_5068051 =
+ '<svg><symbol id="icon-element-ui_printer" viewBox="0 0 1024 1024"><path d="M249.856 774.144H95.232c-6.827 0-12.117-0.341-15.872-1.024s-6.997-1.707-9.728-3.072c-5.461-3.413-9.557-7.509-12.288-12.288-1.365-2.731-2.389-5.973-3.072-9.728-0.683-3.755-1.024-9.045-1.024-15.872V375.808c0-21.163 1.195-37.205 3.584-48.128 2.389-10.923 5.632-20.139 9.728-27.648 8.875-15.701 21.163-27.989 36.864-36.864 7.509-4.096 16.725-7.339 27.648-9.728 10.923-2.389 26.965-3.584 48.128-3.584h70.656V53.248h524.288v196.608H844.8c21.163 0 37.205 1.195 48.128 3.584 10.923 2.389 20.139 5.632 27.648 9.728 15.701 8.875 27.989 21.163 36.864 36.864 4.096 7.509 7.339 16.725 9.728 27.648 2.389 10.923 3.584 26.965 3.584 48.128V732.16c0 6.827-0.341 12.117-1.024 15.872s-1.707 6.997-3.072 9.728c-3.413 5.461-7.509 9.557-12.288 12.288-2.731 1.365-5.973 2.389-9.728 3.072-3.755 0.683-9.045 1.024-15.872 1.024H774.144v196.608H249.856V774.144z m65.536-196.608v327.68h393.216v-327.68H315.392z m-65.536 131.072V512h524.288v196.608h131.072v-332.8c0-14.336-0.341-24.576-1.024-30.72s-2.219-11.093-4.608-14.848a29.687 29.687 0 0 0-9.216-9.216c-3.755-2.389-8.704-3.925-14.848-4.608-6.144-0.683-16.384-1.024-30.72-1.024H179.2c-14.336 0-24.576 0.341-30.72 1.024s-11.093 2.219-14.848 4.608a29.687 29.687 0 0 0-9.216 9.216c-2.389 3.755-3.925 8.704-4.608 14.848-0.683 6.144-1.024 16.384-1.024 30.72v332.8h131.072z m65.536-458.752h393.216V118.784H315.392v131.072z m-65.536 131.072h65.536v65.536h-65.536v-65.536z m131.072 0h65.536v65.536h-65.536v-65.536z" ></path></symbol></svg>'),
+ ((n) => {
+ var e = (t = (t = document.getElementsByTagName('script'))[
+ t.length - 1
+ ]).getAttribute('data-injectcss'),
+ t = t.getAttribute('data-disable-injectsvg');
+ if (!t) {
+ var i,
+ o,
+ c,
+ s,
+ d,
+ a = function (e, t) {
+ t.parentNode.insertBefore(e, t);
+ };
+ if (e && !n.__iconfont__svg__cssinject__) {
+ n.__iconfont__svg__cssinject__ = !0;
+ try {
+ document.write(
+ '<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>'
+ );
+ } catch (e) {
+ console && console.log(e);
+ }
+ }
+ (i = function () {
+ var e,
+ t = document.createElement('div');
+ (t.innerHTML = n._iconfont_svg_string_5068051),
+ (t = t.getElementsByTagName('svg')[0]) &&
+ (t.setAttribute('aria-hidden', 'true'),
+ (t.style.position = 'absolute'),
+ (t.style.width = 0),
+ (t.style.height = 0),
+ (t.style.overflow = 'hidden'),
+ (t = t),
+ (e = document.body).firstChild
+ ? a(t, e.firstChild)
+ : e.appendChild(t));
+ }),
+ document.addEventListener
+ ? ~['complete', 'loaded', 'interactive'].indexOf(document.readyState)
+ ? setTimeout(i, 0)
+ : ((o = function () {
+ document.removeEventListener('DOMContentLoaded', o, !1), i();
+ }),
+ document.addEventListener('DOMContentLoaded', o, !1))
+ : document.attachEvent &&
+ ((c = i),
+ (s = n.document),
+ (d = !1),
+ l(),
+ (s.onreadystatechange = function () {
+ 'complete' == s.readyState &&
+ ((s.onreadystatechange = null), r());
+ }));
+ }
+ function r() {
+ d || ((d = !0), c());
+ }
+ function l() {
+ try {
+ s.documentElement.doScroll('left');
+ } catch (e) {
+ return void setTimeout(l, 50);
+ }
+ r();
+ }
+ })(window);
diff --git a/src/components.d.ts b/src/components.d.ts
index 086570b..6fe00cd 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -14,12 +14,14 @@
CompQuickSet: typeof import('./components/search-option/CompQuickSet.vue')['default']
Content: typeof import('./components/core/Content.vue')['default']
ElAffix: typeof import('element-plus/es')['ElAffix']
+ ElAlert: typeof import('element-plus/es')['ElAlert']
ElAside: typeof import('element-plus/es')['ElAside']
ElAvatar: typeof import('element-plus/es')['ElAvatar']
ElBadge: typeof import('element-plus/es')['ElBadge']
ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
ElButton: typeof import('element-plus/es')['ElButton']
+ ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
ElCalendar: typeof import('element-plus/es')['ElCalendar']
ElCard: typeof import('element-plus/es')['ElCard']
ElCascader: typeof import('element-plus/es')['ElCascader']
@@ -36,6 +38,9 @@
ElDialog: typeof import('element-plus/es')['ElDialog']
ElDivider: typeof import('element-plus/es')['ElDivider']
ElDrawer: typeof import('element-plus/es')['ElDrawer']
+ ElDropdown: typeof import('element-plus/es')['ElDropdown']
+ ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
+ ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
ElEmpty: typeof import('element-plus/es')['ElEmpty']
ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem']
@@ -51,9 +56,16 @@
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElMenuItemGroup: typeof import('element-plus/es')['ElMenuItemGroup']
ElOption: typeof import('element-plus/es')['ElOption']
+ ElPageHeader: typeof import('element-plus/es')['ElPageHeader']
+ ElPagination: typeof import('element-plus/es')['ElPagination']
+ ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
ElPopover: typeof import('element-plus/es')['ElPopover']
+ ElRadio: typeof import('element-plus/es')['ElRadio']
+ ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
+ ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
+ ElSegmented: typeof import('element-plus/es')['ElSegmented']
ElSelect: typeof import('element-plus/es')['ElSelect']
ElSpace: typeof import('element-plus/es')['ElSpace']
ElStep: typeof import('element-plus/es')['ElStep']
@@ -67,6 +79,7 @@
ElTag: typeof import('element-plus/es')['ElTag']
ElText: typeof import('element-plus/es')['ElText']
ElTooltip: typeof import('element-plus/es')['ElTooltip']
+ ElTransfer: typeof import('element-plus/es')['ElTransfer']
ElTree: typeof import('element-plus/es')['ElTree']
ElUpload: typeof import('element-plus/es')['ElUpload']
Footer: typeof import('./components/core/Footer.vue')['default']
@@ -92,6 +105,7 @@
FYSearchBar: typeof import('./components/search-option/FYSearchBar.vue')['default']
FYTable: typeof import('./components/table/FYTable.vue')['default']
Header: typeof import('./components/core/Header.vue')['default']
+ IconPrinter: typeof import('./components/iconfont/IconPrinter.vue')['default']
ItemDevice: typeof import('./components/list-item/ItemDevice.vue')['default']
ItemMonitorObj: typeof import('./components/list-item/ItemMonitorObj.vue')['default']
ItemScene: typeof import('./components/list-item/ItemScene.vue')['default']
@@ -104,6 +118,7 @@
SearchBar: typeof import('./components/SearchBar.vue')['default']
SideList: typeof import('./components/SideList.vue')['default']
SiderMenu: typeof import('./components/core/SiderMenu.vue')['default']
+ SvgIcon: typeof import('./components/iconfont/SvgIcon.vue')['default']
ToolBar: typeof import('./components/ToolBar.vue')['default']
}
export interface ComponentCustomProperties {
diff --git a/src/components/SideList.vue b/src/components/SideList.vue
index a3a795c..071fea8 100644
--- a/src/components/SideList.vue
+++ b/src/components/SideList.vue
@@ -1,5 +1,5 @@
<template>
- <div style="padding-right: 10px;">
+ <div style="padding-right: 10px">
<div v-if="legend" class="state-label">
<el-input
v-model="filterText"
@@ -47,6 +47,7 @@
</el-space>
</el-tooltip>
</div>
+ <slot name="header" class="state-label"></slot>
<el-tree
ref="treeRef"
class="el-tree"
diff --git a/src/components/ToolBar.vue b/src/components/ToolBar.vue
index 86d046c..918d271 100644
--- a/src/components/ToolBar.vue
+++ b/src/components/ToolBar.vue
@@ -38,22 +38,11 @@
title: String,
descriptions: {
type: Array,
- default: () => [
- {
- name: '',
- value: ''
- }
- ]
+ default: () => []
},
buttons: {
type: Array,
- default: () => [
- {
- name: '',
- color: 'primary',
- click: () => {}
- }
- ]
+ default: () => []
}
}
};
@@ -63,7 +52,7 @@
background-color: white;
height: var(--height-toolbar);
border-bottom: 1px solid var(--el-color-info-light-7);
- box-shadow: 6px 4px 4px rgba(0, 0, 0, 0.12);
+ box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.12);
margin-bottom: 4px;
}
diff --git a/src/components/core/Header.vue b/src/components/core/Header.vue
index 3c742e0..4ee1493 100644
--- a/src/components/core/Header.vue
+++ b/src/components/core/Header.vue
@@ -2,9 +2,16 @@
<el-row align="middle" class="header">
<el-col :span="12">
<el-space>
- <el-button @click="collapsedSider" icon="Fold" circle :class="rotateIcon" />
+ <el-button
+ @click="collapsedSider"
+ icon="ArrowLeftBold"
+ circle
+ :class="rotateIcon"
+ />
<el-breadcrumb separator="/" style="white-space: nowrap">
- <el-breadcrumb-item v-for="(t, i) in navTitles" :key="i">{{ t }}</el-breadcrumb-item>
+ <el-breadcrumb-item v-for="(t, i) in navTitles" :key="i">{{
+ t
+ }}</el-breadcrumb-item>
</el-breadcrumb>
</el-space>
</el-col>
@@ -65,7 +72,7 @@
}
.rotate-icon {
- transform: rotate(-90deg);
+ transform: rotate(-180deg);
}
.logout {
diff --git a/src/components/core/SiderMenu.vue b/src/components/core/SiderMenu.vue
index 6419154..9f7df7c 100644
--- a/src/components/core/SiderMenu.vue
+++ b/src/components/core/SiderMenu.vue
@@ -70,7 +70,7 @@
props: {
collapse: {
type: Boolean,
- default: false
+ default: true
}
},
emits: ['navPage'],
@@ -97,7 +97,7 @@
return this.sysNames[this.sysIndex].name;
},
menus() {
- return [MENU_FYSP, MENU_FYTZ, MENU_FYPW][this.sysIndex];
+ return [MENU_FYSP(), MENU_FYTZ, MENU_FYPW][this.sysIndex];
}
},
methods: {
diff --git a/src/components/iconfont/IconPrinter.vue b/src/components/iconfont/IconPrinter.vue
new file mode 100644
index 0000000..6802a39
--- /dev/null
+++ b/src/components/iconfont/IconPrinter.vue
@@ -0,0 +1,6 @@
+<template>
+ <SvgIcon
+ icon-class="icon-element-ui_printer"
+ color="var(--el-color-default)"
+ />
+</template>
diff --git a/src/components/iconfont/SvgIcon.vue b/src/components/iconfont/SvgIcon.vue
new file mode 100644
index 0000000..27163ee
--- /dev/null
+++ b/src/components/iconfont/SvgIcon.vue
@@ -0,0 +1,42 @@
+<template>
+ <svg :class="classList" aria-hidden="true">
+ <use :xlink:href="iconName" :fill="color" />
+ </svg>
+</template>
+<script setup>
+import { computed } from 'vue';
+const props = defineProps({
+ className: {
+ type: String,
+ default: ''
+ },
+ iconClass: {
+ type: String,
+ required: true
+ },
+ color: {
+ type: String,
+ default: '#409eff'
+ },
+ size: {
+ type: String,
+ default: '20px'
+ }
+});
+const classList = computed(() => {
+ return ['icon', props.className || ''];
+});
+const iconName = computed(() => {
+ return `#${props.iconClass}`;
+});
+</script>
+<style scoped>
+.icon {
+ /* v-bind鏄疺ue3鎵嶆敮鎸佺殑鍔熻兘锛屽彲浠ュ皢CSS鐨勫�间笌js鐨勫�肩粦瀹� */
+ width: v-bind('props.size');
+ height: v-bind('props.size');
+ position: relative;
+ vertical-align: -2px;
+ fill: currentColor;
+}
+</style>
diff --git a/src/components/iconfont/index.js b/src/components/iconfont/index.js
new file mode 100644
index 0000000..deb1464
--- /dev/null
+++ b/src/components/iconfont/index.js
@@ -0,0 +1,5 @@
+/**
+ * 鍦ㄦ澶勬敞鍐岀殑鍥炬爣缁勪欢锛屽湪鍏ㄥ眬缁勪欢涓彲浠ョ洿鎺ヤ娇鐢�
+ * 鐢ㄦ硶鍜宔lementUI涓殑鍥炬爣缁勪欢鐢ㄦ硶鐩稿悓
+ */
+export {default as IconPrinter} from './IconPrinter.vue';
\ No newline at end of file
diff --git a/src/components/list-item/ItemMonitorObj.vue b/src/components/list-item/ItemMonitorObj.vue
index 128c5fc..e576e4e 100644
--- a/src/components/list-item/ItemMonitorObj.vue
+++ b/src/components/list-item/ItemMonitorObj.vue
@@ -2,13 +2,12 @@
<!-- <el-card shadow="hover"> -->
<div :class="statusClass + ' wrapper'">
<div>
- <!-- <el-text>{{ item.displayid }}銆�</el-text> -->
<el-text tag="b" class="text-line-2">
- {{ item.displayid + '銆�' + item.sensename }}
+ {{ item.displayid + '. ' + item.sensename }}
</el-text>
</div>
<div>
- <el-text truncated class="w-250px" type="info">
+ <el-text truncated class="w-300px" type="info">
<el-icon><LocationInformation /></el-icon>
{{ item.scene.location }}
</el-text>
@@ -97,6 +96,7 @@
width: 300px;
height: 40px;
display: -webkit-box;
+ line-height: 20px;
line-clamp: 2;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
diff --git a/src/components/list-item/ItemScene.vue b/src/components/list-item/ItemScene.vue
index e333f30..a1bad6c 100644
--- a/src/components/list-item/ItemScene.vue
+++ b/src/components/list-item/ItemScene.vue
@@ -2,8 +2,7 @@
<!-- <el-card shadow="hover"> -->
<div class="wrapper">
<div>
- <el-text>{{ item.index }}銆�</el-text>
- <el-text>{{ item.name }}</el-text>
+ <el-text>{{ item.index + '. ' + item.name }}</el-text>
</div>
<!-- <div>
<el-text>鍦板潃锛歿{ item.location }}</el-text>
diff --git a/src/components/list-item/ItemSubTask.vue b/src/components/list-item/ItemSubTask.vue
index 20f9ee1..b53fd56 100644
--- a/src/components/list-item/ItemSubTask.vue
+++ b/src/components/list-item/ItemSubTask.vue
@@ -21,7 +21,7 @@
<div class="text-info">
<div class="text-label">
<el-icon class="m-r-4" size="16"><LocationInformation /></el-icon>
- <span>浠诲姟鍦板潃锛�</span>
+ <span>鍦板潃锛�</span>
</div>
{{ item.scenseaddress }}
</div>
@@ -29,14 +29,14 @@
<div class="text-label">
<!-- <el-icon><Clock /></el-icon> -->
<el-icon class="m-r-4" size="16"><AlarmClock /></el-icon>
- <span>浠诲姟鏃堕棿锛�</span>
+ <span>鏃堕棿锛�</span>
</div>
{{ $fm.formatYMD(item.planstarttime) }}
</div>
<div class="text-info">
<div class="text-label">
<el-icon class="m-r-4" size="16"><User /></el-icon>
- 浠诲姟浜哄憳锛�
+ 浜哄憳锛�
</div>
{{ item.executorrealtimes }}
</div>
diff --git a/src/components/map/BaseMap.vue b/src/components/map/BaseMap.vue
index 11e34ed..d4aa7fb 100644
--- a/src/components/map/BaseMap.vue
+++ b/src/components/map/BaseMap.vue
@@ -17,7 +17,7 @@
#container {
position: relative;
width: 100%;
- height: 100vh;
+ height: 100%;
min-height: var(--screen-min-height);
min-width: var(--screen-min-width);
z-index: 0px;
@@ -33,8 +33,8 @@
opacity: 0 !important;
}
-.amap-marker-label {
- font-size: 13px;
+/* .amap-marker-label {
+ font-size: 14px;
text-align: center;
color: white;
background-color: transparent;
@@ -42,5 +42,5 @@
border-radius: 2px;
border: 0px;
padding: 4px;
-}
+} */
</style>
diff --git a/src/components/map/SceneMap.vue b/src/components/map/SceneMap.vue
index 3abe4c6..42dede6 100644
--- a/src/components/map/SceneMap.vue
+++ b/src/components/map/SceneMap.vue
@@ -1,14 +1,72 @@
<template>
<BaseMap></BaseMap>
- <el-row class="left-top-wrap">
- <FYOptionScene
- label=""
- :allOption="true"
- :type="2"
- v-model:value="scenetype"
- ></FYOptionScene>
- <slot name="left-top"></slot>
- </el-row>
+ <div class="wrap p-events-none">
+ <el-row class="p-events-none">
+ <FYOptionScene
+ class="p-events-auto"
+ label=""
+ :allOption="true"
+ :type="2"
+ v-model:value="scenetype"
+ ></FYOptionScene>
+ <div class="p-events-auto">
+ <slot name="left-top"></slot>
+ </div>
+ </el-row>
+ <el-row
+ class="p-events-none left-wrap"
+ align="bottom"
+ :style="leftCardWrapStyle"
+ >
+ <div
+ ref="refLeftCard"
+ v-show="leftCardShow"
+ class="card-left p-events-auto"
+ >
+ <div><el-text size="large">鍦烘櫙鍒楄〃</el-text></div>
+ <el-scrollbar height="400px" class="scrollbar">
+ <el-row
+ v-for="s in selectedSceneList"
+ :key="s.guid"
+ justify="space-between"
+ class="p-v-4 scene-item"
+ >
+ <el-text truncated style="width: 250px">
+ {{ s.index + '銆�' + s.name }}
+ </el-text>
+ <el-space>
+ <el-icon
+ :color="
+ s._checked ? 'rgb(121, 187, 255)' : 'rgb(200, 201, 204)'
+ "
+ @click="locateTo(s)"
+ >
+ <LocationInformation />
+ </el-icon>
+ <el-icon
+ class="cursor-p"
+ :color="
+ s._visible ? 'rgb(121, 187, 255)' : 'rgb(200, 201, 204)'
+ "
+ @click="handleVisibleChange(s)"
+ >
+ <View />
+ </el-icon>
+ </el-space>
+ </el-row>
+ </el-scrollbar>
+ </div>
+ <el-button
+ class="close-btn-right p-events-auto"
+ type="primary"
+ plain
+ size="small"
+ :icon="leftCardShow ? 'ArrowLeft' : 'ArrowRight'"
+ @click="leftCardShow = !leftCardShow"
+ ></el-button>
+ </el-row>
+ </div>
+
<!-- <el-row class="right-wrap">
<el-col :span="4">
<el-button>close</el-button>
@@ -17,19 +75,9 @@
</el-col>
</el-row> -->
- <el-scrollbar class="right-wrap">
- <div v-for="s in selectedSceneList" :key="s.guid">
- <el-checkbox
- v-model="s._checked"
- :label="s.name"
- @change="handleChange(s)"
- />
- <!-- <el-text>{{ s.name }}</el-text> -->
- </div>
- </el-scrollbar>
</template>
<script setup>
-import { ref, watch, computed } from 'vue';
+import { ref, watch, computed, onMounted } from 'vue';
import { map, onMapMounted } from '@/utils/map/index';
import marks from '@/utils/map/marks';
import mapUtil from '@/utils/map/util';
@@ -39,6 +87,17 @@
data: Array
});
+onMounted(() => {
+ // refLeftCard.value.offsetHeight;
+ // leftCardWrapStyle.value = {
+ // height: refLeftCard.value.offsetHeight + 'px'
+ // };
+});
+
+const refLeftCard = ref();
+const leftCardShow = ref(true);
+const leftCardWrapStyle = ref();
+
let allMarkViews = [];
let markViewList = [];
@@ -46,7 +105,7 @@
const selectedSceneList = computed(() => {
return props.data.filter((v) => {
- v._checked = true;
+ v._visible = true;
return (
scenetype.value == undefined ||
scenetype.value.value == null ||
@@ -74,16 +133,25 @@
}
});
-function handleChange(scene) {
+function handleVisibleChange(scene) {
const mv = markViewList.find((v) => {
return scene.guid == v.getExtData().guid;
});
- if (scene._checked) {
+ scene._visible = !scene._visible;
+ if (scene._visible) {
map.add(mv);
} else {
map.remove(mv);
}
- // filterMarkViews();
+}
+
+function locateTo(scene) {
+ const mv = markViewList.find((v) => {
+ return scene.guid == v.getExtData().guid;
+ });
+ if (mv) {
+ mapUtil.setFitView(mv);
+ }
}
function createSceneMarks() {
@@ -94,28 +162,40 @@
const mark = marks.createMarker({
position: [d.longitude, d.latitude],
img: sceneIcon(d.typeid),
- // label: d.name,
+ label: '',
extData: d
});
+ var timeout;
// 娣诲姞鐐瑰嚮浜嬩欢
- mark.on('click', (ev) => {
+ mark.on('mouseover', (ev) => {
+ if (timeout) {
+ clearTimeout(timeout);
+ }
const _mark = ev.target;
const _extData = _mark.getExtData();
- if (_extData._show) {
+ ev.target.setLabel({
+ content: _extData.name
+ });
+ timeout = setTimeout(() => {
ev.target.setLabel({
content: ''
- // direction: 'bottom'
});
- _extData._show = false;
- ev.target.setExtData(_extData);
- } else {
- ev.target.setLabel({
- content: _extData.name
- // direction: 'bottom'
- });
- _extData._show = true;
- ev.target.setExtData(_extData);
- }
+ }, 2000);
+ // if (_extData._show) {
+ // ev.target.setLabel({
+ // content: ''
+ // // direction: 'bottom'
+ // });
+ // _extData._show = false;
+ // ev.target.setExtData(_extData);
+ // } else {
+ // ev.target.setLabel({
+ // content: _extData.name
+ // // direction: 'bottom'
+ // });
+ // _extData._show = true;
+ // ev.target.setExtData(_extData);
+ // }
});
allMarkViews.push(mark);
});
@@ -142,7 +222,7 @@
}
markViewList = markViewList.filter((v) => {
const _index = selectedSceneList.value.findIndex((s) => {
- return s.guid == v.getExtData().guid && s._checked;
+ return s.guid == v.getExtData().guid && s._visible;
});
return _index != -1;
});
@@ -169,20 +249,46 @@
}
</script>
<style scoped>
-.left-top-wrap {
+.wrap {
+ position: absolute;
+ left: 0px;
+ top: 0;
+ width: 100%;
+ height: 100%;
+}
+.left-wrap {
position: absolute;
left: 0;
- top: 0;
+ bottom: 1px;
}
-.right-wrap {
- position: absolute;
- right: 0px;
- bottom: 0;
- height: 50%;
+
+.card-left {
background-color: white;
- border-radius: 4px;
- padding: 2px 8px;
- max-width: 300px;
- box-shadow: var(--el-box-shadow);
+ /* border-radius: 4px; */
+ width: 316px;
+ /* box-shadow: var(--el-box-shadow); */
+ z-index: 0;
+}
+
+.scrollbar {
+ padding-right: 8px;
+ /* width: 300px; */
+}
+
+.close-btn-right {
+ margin-left: -3px;
+ height: 60px;
+}
+
+.p-events-auto {
+ pointer-events: auto;
+}
+
+.p-events-none {
+ pointer-events: none;
+}
+
+.scene-item {
+ /* background-color: aliceblue; */
}
</style>
diff --git a/src/composables/messageBox.js b/src/composables/messageBox.js
index 6cb46f8..a45738c 100644
--- a/src/composables/messageBox.js
+++ b/src/composables/messageBox.js
@@ -34,7 +34,7 @@
}
ElMessage({
message: errStr,
- type: 'warning',
+ type: 'error',
});
});
}
diff --git a/src/constants/menu.js b/src/constants/menu.js
index 64ea2ac..4e498bc 100644
--- a/src/constants/menu.js
+++ b/src/constants/menu.js
@@ -13,7 +13,7 @@
});
}
-const MENU_FYSP = [
+const _MENU_FYSP = [
// {
// icon: 'Search',
// name: '宸℃煡瀹℃牳',
@@ -164,7 +164,8 @@
{
path: '/fysp/config/domainCatalog',
icon: 'List',
- name: '鍊煎煙鐩綍'
+ name: '鍊煎煙鐩綍',
+ debug: true
}
]
},
@@ -259,4 +260,32 @@
}
];
+
+const MENU_FYSP = () => {
+ // 娣辨嫹璐濆師濮嬭彍鍗曟暟缁勶紝閬垮厤淇敼鍘熸暟鎹�
+ const menuCopy = JSON.parse(JSON.stringify(_MENU_FYSP));
+
+ // 閫掑綊澶勭悊鑿滃崟椤�
+ const processMenuItem = (item) => {
+ // 濡傛灉褰撳墠椤规湁children灞炴��
+ if (item.children && Array.isArray(item.children)) {
+ // 鏍规嵁鐜杩囨护children鏁扮粍
+ item.children = item.children.filter(child => {
+ // 閫掑綊澶勭悊瀛愰」鐨刢hildren
+ processMenuItem(child);
+
+ // 寮�鍙戠幆澧冧繚鐣欐墍鏈夐」锛堝寘鎷琩ebug: true鐨勶級锛岀敓浜х幆澧冭繃婊ゆ帀debug: true鐨勯」
+ // 娉ㄦ剰锛氬彧鏈夎缃簡debug: true鐨勯」鎵嶉渶瑕佸湪闈炲紑鍙戠幆澧冭繃婊�
+ // 濡傛灉娌℃湁debug灞炴�э紝搴旇淇濈暀
+ return import.meta.env.DEV || child.debug !== true;
+ });
+ }
+ return item;
+ };
+
+ // 澶勭悊鏁翠釜鑿滃崟鏁扮粍
+ return menuCopy.map(processMenuItem);
+};
+
+
export { MENU_FYSP, MENU_FYTZ, MENU_FYPW, MENU_COMMON };
diff --git a/src/main.js b/src/main.js
index 175bb60..d4cf1d6 100644
--- a/src/main.js
+++ b/src/main.js
@@ -8,6 +8,8 @@
// import 'element-plus/dist/index.css';
import './assets/main.css';
+import './assets/iconfont/iconfont.js'
+import * as MyIconfont from './components/iconfont';
import { ElMessageBox, ElNotification, ElMessage } from 'element-plus';
import 'element-plus/theme-chalk/src/overlay.scss';
@@ -35,6 +37,13 @@
app.component(key, component);
}
+// 鍏ㄥ眬娉ㄥ唽鑷畾涔夊浘鏍囩粍浠�
+for (const [key, component] of Object.entries(MyIconfont)) {
+ app.component(key, component);
+}
+
+
+
app
.use(pinia)
.use(router)
diff --git a/src/utils/doc.js b/src/utils/doc.js
index 631fc3c..2127116 100644
--- a/src/utils/doc.js
+++ b/src/utils/doc.js
@@ -311,7 +311,7 @@
FileSaver.saveAs(blob, zipName);
}
-function print(
+function print({
ref,
title,
style,
@@ -320,23 +320,23 @@
borderHeadStyle,
gridStyle,
css
-) {
+}) {
printJS({
printable: ref,
header: title || null,
type: type || 'html',
- // headerStyle:
- // 'font-size:6px;font-weight:600;text-align:center;padding:15px 0 10px 0;', //鏍囬璁剧疆
+ headerStyle:
+ 'font-size:6px;font-weight:600;text-align:center;padding:15px 0 10px 0;', //鏍囬璁剧疆
properties: jsonData || [], //json鏁版嵁鍏�
- gridHeaderStyle:
- borderHeadStyle ||
- 'font-size:6px;font-weight:400;height:40px;line-height:40px;border: 1px solid #ccc;padding:3px 5px 3px 5px;text-align:center;', //json鏍煎紡琛ㄥご鏍峰紡
- gridStyle:
- gridStyle ||
- 'font-size:1px;font-weight:200;border: 1px solid #ccc;padding:3px 5px 3px 5px;text-align:center;', //json鍚勫紡琛ㄥ摜澶
+ // gridHeaderStyle:
+ // borderHeadStyle ||
+ // 'font-size:6px;font-weight:400;height:40px;line-height:40px;border: 1px solid #ccc;padding:3px 5px 3px 5px;text-align:center;', //json鏍煎紡琛ㄥご鏍峰紡
+ // gridStyle:
+ // gridStyle ||
+ // 'font-size:1px;font-weight:200;border: 1px solid #ccc;padding:3px 5px 3px 5px;text-align:center;', //json鍚勫紡琛ㄥ摜澶
scanStyles: false, //涓嶉�傜敤榛樿鏍峰紡
repeatTableHeader: false, //鎵撳嵃json琛ㄥご鍙樉绀哄湪绗竴椤�
- style: style || `@page{size:auto;margin: 0cm 1cm 0cm 1cm;}`, //鍘婚櫎椤电湁椤佃剼
+ style: style || `@page{size:A4;margin: -1cm 0cm 0cm 0cm;}`, //鍘婚櫎椤电湁椤佃剼
css: css || null //css url
});
}
diff --git a/src/utils/map/index.js b/src/utils/map/index.js
index fe8b0ba..78b5d3d 100644
--- a/src/utils/map/index.js
+++ b/src/utils/map/index.js
@@ -49,6 +49,7 @@
e();
});
onMapMountedEvents = [];
+ console.log('-------------------map init done');
})
.catch((e) => {
console.log(e);
diff --git a/src/utils/map/marks.js b/src/utils/map/marks.js
index 0c3b428..6ba80b9 100644
--- a/src/utils/map/marks.js
+++ b/src/utils/map/marks.js
@@ -145,7 +145,7 @@
return layer;
},
- createMarker({ position, img, label = ' ', extData }) {
+ createMarker({ position, img, label = '', extData }) {
//鍒涘缓 AMap.Icon 瀹炰緥锛�
const icon = new AMap.Icon({
size: new AMap.Size(30, 30), //鍥炬爣灏哄
diff --git a/src/views/HomePage.vue b/src/views/HomePage.vue
index 65add8b..7dde080 100644
--- a/src/views/HomePage.vue
+++ b/src/views/HomePage.vue
@@ -45,7 +45,7 @@
export default {
data() {
return {
- isCollapsed: false,
+ isCollapsed: true,
navTitles: [],
headerHeight: 60,
mainPadding: 10,
diff --git a/src/views/fysp/config/DomainCatalog.vue b/src/views/fysp/config/DomainCatalog.vue
index 3c9151e..33d3695 100644
--- a/src/views/fysp/config/DomainCatalog.vue
+++ b/src/views/fysp/config/DomainCatalog.vue
@@ -6,9 +6,26 @@
:items="domainCatalog"
:loading="sideLoading"
@item-click="chooseCatalog"
- ></SideList>
+ >
+ <template #header>
+ <el-row justify="end">
+ <el-button
+ type="primary"
+ icon="CirclePlusFilled"
+ size="small"
+ @click="handelDownload"
+ >
+ </el-button>
+ </el-row>
+ </template>
+ </SideList>
</template>
<template #main>
+ <ToolBar
+ class="toolbar-sticky"
+ :title="selectedCatalog?.name"
+ :loading="loading"
+ ></ToolBar>
<!-- <FormCol> -->
<el-table
:data="domainItems"
@@ -204,12 +221,12 @@
// 鍙栨秷缂栬緫
function cancelEdit(scope) {
+ if (scope.row._isAdd) {
+ domainItems.value.splice(scope.$index, 1);
+ }
scope.row._isAdd = false;
scope.row._isEdit = false;
- domainItems.value.splice(scope.$index, 1);
}
-
-
function _validate(row) {
return (
diff --git a/src/views/fysp/scene/SceneInspectFile.vue b/src/views/fysp/scene/SceneInspectFile.vue
index e59d32a..7bec485 100644
--- a/src/views/fysp/scene/SceneInspectFile.vue
+++ b/src/views/fysp/scene/SceneInspectFile.vue
@@ -2,7 +2,7 @@
<el-dialog
:model-value="modelValue"
@update:model-value="handleDialogChange"
- title="宸℃煡鍗曟嵁涓嬭浇"
+ title="宸℃煡鍗曟嵁涓嬭浇鎵撳嵃"
class="dialog-wrapper"
v-loading="loading"
>
@@ -43,9 +43,9 @@
type="default"
size="small"
class="m-t-4"
+ icon="IconPrinter"
@click="handlePreview(item)"
>
- 棰勮
</el-button>
</el-row>
</el-checkbox>
@@ -54,17 +54,33 @@
</el-scrollbar>
<template #footer>
<div class="dialog-footer">
- <el-button type="danger" @click="cancel">鍙栨秷</el-button>
- <el-button type="primary" :loading="docLoading" @click="handelDownload">
- 涓嬭浇
+ <el-button type="danger" @click="cancel" icon="CloseBold"
+ >鍙栨秷</el-button
+ >
+ <el-button
+ type="primary"
+ :loading="docLoading"
+ icon="Download"
+ :disabled="checkList.length == 0"
+ @click="handelDownload"
+ >
+ 涓嬭浇鎵�閫�
</el-button>
- <el-button type="default" :loading="docLoading" @click="handelPrint">
- 鎵撳嵃
+ <el-button
+ type="default"
+ :loading="docLoading"
+ :disabled="checkList.length == 0"
+ @click="handlePreview()"
+ icon="IconPrinter"
+ >
+ <el-space>
+ 鎵撳嵃鎵�閫�
+ </el-space>
</el-button>
</div>
</template>
</el-dialog>
- <el-dialog v-model="previewVisible" :show-close="true" fullscreen>
+ <el-dialog v-model="previewVisible" :show-close="false" fullscreen>
<template #header="{ close, titleId, titleClass }">
<el-row justify="end">
<el-button type="danger" @click="close" icon="CircleCloseFilled">
@@ -73,14 +89,18 @@
<el-button
type="primary"
@click="handelPrint(refWord)"
- icon="PrintFilled"
+ icon="IconPrinter"
>
鎵撳嵃
</el-button>
</el-row>
</template>
<div ref="refWord">
-
+ <div
+ :id="`word-preview-${i}`"
+ v-for="(item, i) in previewList"
+ :key="item"
+ ></div>
</div>
<!-- <iframe ref="pdfPreview" width="100%" height="100vh" style="height: calc(100vh - 60px);"></iframe> -->
</el-dialog>
@@ -90,7 +110,7 @@
* 鍦烘櫙宸℃煡鍗曟嵁鑷姩涓嬭浇
*/
import { ref, watch } from 'vue';
-import { useRouter } from "vue-router";
+import { useRouter } from 'vue-router';
import {
exportDocx,
prepareDocxBlob,
@@ -124,6 +144,8 @@
// 棰勮瀵硅瘽妗嗗紑鍏�
const previewVisible = ref(false);
+// 棰勮鐨勬枃妗�
+const previewList = ref([]);
watch(
() => [props.modelValue, props.value],
@@ -236,7 +258,7 @@
// 鏍规嵁鍦烘櫙绫诲瀷锛岀敓鎴愬搴旂殑word鏂囨。
function generateDoc(param, callback) {
- param.map((p) => {
+ param.map((p, index) => {
let template, _param;
switch (p.type) {
// 宸ュ湴
@@ -253,30 +275,7 @@
break;
}
prepareDocxBlob(template, _param).then((blob) => {
- callback(blob, `${_param.name}宸℃煡鍗曟嵁.docx`);
- });
- });
-}
-
-function generatePdf(param, callback) {
- param.map((p) => {
- let template, _param;
- switch (p.type) {
- // 宸ュ湴
- case 1:
- template = '/宸ュ湴宸℃煡鍗曟嵁妯℃澘-绠�鐗�.docx';
- _param = p.params;
- break;
- // 椁愰ギ
- case 5:
- template = '/椁愰ギ宸℃煡鍗曟嵁妯℃澘.docx';
- _param = p.params;
- break;
- default:
- break;
- }
- preparePdf(template, _param).then((blob) => {
- callback(blob, `${_param.name}宸℃煡鍗曟嵁.pdf`);
+ callback(blob, `${_param.name}宸℃煡鍗曟嵁.docx`, index);
});
});
}
@@ -298,47 +297,36 @@
// 鐐瑰嚮鎵撳嵃鎸夐挳鎿嶄綔
function handelPrint(ref) {
if (ref) {
- print(ref);
+ print({
+ ref,
+ // 鏍规嵁鐩墠浣跨敤鐨刣ocx-preview缁勪欢锛岃缃墦鍗版牱寮忥紝涓昏鍘婚櫎澶氫綑鐨刴argin鍜宲adding锛屼互鍙婇槾褰辨晥鏋�
+ style: `
+ @page{size:A4;margin: 0 !important;padding:0 !important;}
+ body {margin: 0 !important;padding:0 !important;}
+ header {color: rgb(182, 182, 182);}
+ footer {color: rgb(182, 182, 182);}
+ .docx-wrapper {padding: 0 !important;}
+ .docx {margin-bottom: 0 !important; box-shadow: none !important;}
+ .docx_5 {
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-end;
+ }
+ `
+ });
}
- // const file = filePrepare();
- // if (file) {
- // previewDocx(file.blob, refWord.value);
- // }
}
function handlePreview(item) {
- const param = parseParam(item);
+ // 棰勮鐨勬枃妗o紝鍖哄垎鍗曠嫭鎵撳嵃鍜屾墦鍗板叏閮�
+ previewList.value = item ? ['0'] : checkList.value;
+ const param = item ? parseParam(item) : parseParam();
if (param) {
- generatePdf(param, (blob, name) => {
+ generateDoc(param, (blob, name, index) => {
previewVisible.value = true;
setTimeout(() => {
- previewDocx(blob, refWord.value);
+ previewDocx(blob, document.getElementById(`word-preview-${index}`));
}, 200);
- // blob.print()
- // blob.getBlob((buffer) => {
- // previewDocx(buffer, refWord.value);
- // });
-
- // const resolved = router.resolve({
- // path: '/fysp/scene/SceneInspectFile',
- // query: {
- // data: JSON.stringify(blob),
- // }
- // });
- // window.open(resolved.href, '_blank')
-
-
- // console.log('pdf', blob);
-
- // blob.autoPrint();
- // // blob.save(name)
- // // 鐢熸垚PDF鐨凚lob瀵硅薄
- // var pdfBlob = blob.output('blob');
-
- // setTimeout(() => {
- // // 鍦╥frame涓樉绀洪瑙�
- // pdfPreview.value.src = URL.createObjectURL(pdfBlob);
- // }, 200);
});
}
}
@@ -363,4 +351,23 @@
:deep(.el-checkbox__label) {
width: 100%;
}
+
+/* 鏂囨。瀛椾綋 */
+:deep(section.docx) {
+ font-family: '榛戜綋' !important;
+}
+/* 鏂囨。鏍囬 */
+:deep(header) {
+ color: rgb(182, 182, 182);
+}
+:deep(.docx_5) {
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-end;
+}
+
+/* */
+:deep(footer) {
+ color: rgb(182, 182, 182);
+}
</style>
diff --git a/src/views/fysp/support/JingAnNightConstruction.vue b/src/views/fysp/support/JingAnNightConstruction.vue
index ec5d544..af62af3 100644
--- a/src/views/fysp/support/JingAnNightConstruction.vue
+++ b/src/views/fysp/support/JingAnNightConstruction.vue
@@ -23,7 +23,7 @@
sortable
prop="ncNum"
label="缂栧彿"
- width="100"
+ width="90"
>
</el-table-column>
<el-table-column
@@ -31,7 +31,7 @@
prop="ncItemName"
label="椤圭洰鍚嶇О"
:show-overflow-tooltip="true"
- width="400"
+ width="200"
>
</el-table-column>
<!-- <el-table-column prop="ncItemUnit" label="涓氫富鍗曚綅" width="130" /> -->
@@ -42,7 +42,7 @@
<el-table-column
prop="ncFileName"
label="澶滄柦鏂囦欢"
- width="170"
+ width="186"
>
<template #default="{ row }">
<el-link
@@ -51,6 +51,15 @@
:href="row.ncUrl"
target="_blank"
>{{ row.ncFileName }}</el-link
+ >
+ </template>
+ </el-table-column>
+ <el-table-column prop="ncUserId" label="鍖归厤鐢ㄦ埛">
+ <template #default="{ row }">
+ <el-text
+ :loading="row._loading"
+ :type="row._user ? 'success' : 'danger'"
+ >{{ row._user ? row._user.realname : '鏈尮閰�' }}</el-text
>
</template>
</el-table-column>
@@ -81,15 +90,6 @@
{{ $fm.formatYMD(row.ncCreateTime) }}
</template>
</el-table-column> -->
- <el-table-column prop="ncUserId" label="鍖归厤鐢ㄦ埛">
- <template #default="{ row }">
- <el-text
- :loading="row._loading"
- :type="row._user ? 'success' : 'danger'"
- >{{ row._user ? row._user.realname : '鏈尮閰�' }}</el-text
- >
- </template>
- </el-table-column>
<el-table-column fixed="right" label="鎿嶄綔" width="80">
<template #default="{ row }">
<el-button
diff --git a/src/views/fysp/task/components/CompMonitorObj.vue b/src/views/fysp/task/components/CompMonitorObj.vue
index 65da3fe..70e8ee2 100644
--- a/src/views/fysp/task/components/CompMonitorObj.vue
+++ b/src/views/fysp/task/components/CompMonitorObj.vue
@@ -41,7 +41,7 @@
</el-checkbox-group>
</el-space>
<el-scrollbar :height="height">
- <el-space wrap>
+ <el-space v-if="activeData.length > 0" wrap style="padding-bottom: 200px;">
<ItemMonitorObj v-for="obj in activeData" :key="obj.movid" :item="obj">
<template #default="{ item }">
<slot :item="item">
@@ -57,6 +57,7 @@
</template>
</ItemMonitorObj>
</el-space>
+ <el-empty v-else description="鏆傛棤璁板綍" />
</el-scrollbar>
</div>
</template>
@@ -95,7 +96,7 @@
return {
activeName: defaultTabName,
tabs: [],
- checkList: [0, 1, 2]
+ checkList: [0]
};
},
computed: {
diff --git a/src/views/fysp/task/components/CompSubTaskList.vue b/src/views/fysp/task/components/CompSubTaskList.vue
index 2ff7199..818339f 100644
--- a/src/views/fysp/task/components/CompSubTaskList.vue
+++ b/src/views/fysp/task/components/CompSubTaskList.vue
@@ -1,19 +1,16 @@
<template>
<el-row justify="space-between">
<el-text>鍗曟棩璁″垝</el-text>
- <div>
+ <div v-show="create && data && data.length > 0">
<el-button
+ icon="IconPrinter"
type="success"
size="small"
plain
@click="handleInspectFileDownload"
- >鍗曟嵁涓嬭浇</el-button
+ >鍗曟嵁鎵撳嵃</el-button
>
- <el-button
- v-show="create && data && data.length > 0"
- type="success"
- size="small"
- @click="add"
+ <el-button type="success" size="small" @click="add" icon="Switch"
>浠诲姟璋冩暣</el-button
>
</div>
@@ -36,13 +33,15 @@
plain
type="primary"
size="small"
+ icon="EditPen"
@click="edit(item)"
- >缂栬緫</el-button
+ >淇敼</el-button
>
<el-button
:disabled="item.status != '鏈墽琛�'"
- type="default"
+ type="danger"
size="small"
+ icon="Delete"
@click="remove(item)"
>绉婚櫎</el-button
>
@@ -79,13 +78,16 @@
@cancel="dialogVisible = false"
></CompSubTaskEdit>
</el-dialog>
- <SceneInspectFile v-model="downloadDialog" :value="downloadSceneList"></SceneInspectFile>
+ <SceneInspectFile
+ v-model="downloadDialog"
+ :value="downloadSceneList"
+ ></SceneInspectFile>
</template>
<script setup>
import { ref, computed, watch, onMounted, onUnmounted } from 'vue';
import { ElMessageBox, ElNotification, ElMessage } from 'element-plus';
import CompSubTaskEdit from './CompSubTaskEdit.vue';
-import SceneInspectFile from "@/views/fysp/scene/SceneInspectFile.vue";
+import SceneInspectFile from '@/views/fysp/scene/SceneInspectFile.vue';
import subtaskApi from '@/api/fysp/subtaskApi';
const props = defineProps({
@@ -104,7 +106,7 @@
const activeItem = ref(null);
const data = computed(() => props.modelValue);
const downloadDialog = ref(false);
-const downloadSceneList = ref([])
+const downloadSceneList = ref([]);
const emit = defineEmits(['submit', 'add', 'remove', 'update:modelValue']);
@@ -154,7 +156,7 @@
});
function handleInspectFileDownload() {
- downloadSceneList.value = data.value.map(v=>v.scenseid)
- downloadDialog.value = true
+ downloadSceneList.value = data.value.map((v) => v.scenseid);
+ downloadDialog.value = true;
}
</script>
diff --git a/src/views/fysp/task/components/CompSubTaskSelect.vue b/src/views/fysp/task/components/CompSubTaskSelect.vue
index 738df23..cfeb571 100644
--- a/src/views/fysp/task/components/CompSubTaskSelect.vue
+++ b/src/views/fysp/task/components/CompSubTaskSelect.vue
@@ -110,11 +110,9 @@
});
function submit(v, success, fail) {
if (props.data.length == 0) {
- // ElMessage({
- // message: '鏈�夋嫨鐩戠鍦烘櫙',
- // type: 'warning'
- // });
fail('鏈�夋嫨鐩戠鍦烘櫙');
+ } else if (v.value.executor.length == 0) {
+ fail('鏈�夋嫨鎵ц浜�');
} else {
success();
// 灏嗕换鍔℃墽琛屼汉鏍煎紡鍖栧苟浼犻��
@@ -174,7 +172,8 @@
() => props.dayTask,
(nV, oV) => {
if (nV != oV) {
- taskApi.fetchTaskById(nV.guid).then((res) => {
+ // 鏍规嵁鏃ヤ换鍔★紝鑾峰彇瀵瑰簲鐨勬�讳换鍔′俊鎭紝鍐嶈幏鍙栨墽琛屼汉鍛樹俊鎭�
+ taskApi.fetchTaskById(nV.tsGuid).then((res) => {
getExecutors(res);
});
}
diff --git a/src/views/fysp/task/components/CompTaskMap.vue b/src/views/fysp/task/components/CompTaskMap.vue
index 4636ff3..1af7d06 100644
--- a/src/views/fysp/task/components/CompTaskMap.vue
+++ b/src/views/fysp/task/components/CompTaskMap.vue
@@ -31,6 +31,9 @@
const scenes = computed(() => {
return props.plans
.filter((v) => {
+ if (!v.scene.longitude || !v.scene.latitude) {
+ return false;
+ }
// 鎸夌収鐩戠鐘舵�佺瓫閫�
if (supervisionStatus.value) {
switch (supervisionStatus.value.value) {
@@ -50,11 +53,6 @@
} else {
return true
}
- // if (supervisionStatus.value) {
- // supervisionStatus.value;
- // } else {
- // return true;
- // }
})
.map((p) => {
return p.scene;
--
Gitblit v1.9.3