From 5be9679fb4288936b576cf3d1f1548af1c4151b8 Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期一, 21 七月 2025 15:31:21 +0800 Subject: [PATCH] 2025.7.21 任务管理-监管地图功能(待完成) --- src/views/fysp/task/TaskManage.vue | 104 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 92 insertions(+), 12 deletions(-) diff --git a/src/views/fysp/task/TaskManage.vue b/src/views/fysp/task/TaskManage.vue index a3e4f21..40ace5d 100644 --- a/src/views/fysp/task/TaskManage.vue +++ b/src/views/fysp/task/TaskManage.vue @@ -41,24 +41,28 @@ <el-row> <el-col :span="curSubTaskList ? 16 : 24"> <CompMonitorPlan + ref="planRef" :task="curTask.data" + :day-task-list="curDayTaskList" @date-change="onDateChange" ></CompMonitorPlan> </el-col> <el-col v-if="curSubTaskList" :span="8"> <CompSubTaskList create - :data="curSubTaskList" + v-model="curSubTaskList" :loading="subTaskLoading" + :create-loading="daytaskCreateLoading" height="56vh" - @add="subTaskDrawer = true" + @add="handleAddSubtask" + @submit="handleSubtaskSubmit" ></CompSubTaskList> </el-col> </el-row> </el-tab-pane> - <!-- <el-tab-pane label="鐩戠鍦板浘" name="second"> - <CompTaskMap></CompTaskMap> - </el-tab-pane> --> + <el-tab-pane label="鐩戠鍦板浘" name="second"> + <CompTaskMap :plans="curMonitorObjList"></CompTaskMap> + </el-tab-pane> </el-tabs> </el-row> <el-divider></el-divider> @@ -93,6 +97,7 @@ <CompDayTask :day-task="curDayTask" :mObjList="curMonitorObjList" + @submit="handleSubtaskSubmit" ></CompDayTask> </el-drawer> <el-dialog @@ -112,6 +117,9 @@ </template> <script> +import { unref } from 'vue'; +import { useCloned } from '@vueuse/core'; +import dayjs from 'dayjs'; import taskApi from '@/api/fysp/taskApi'; import CompMonitorObj from './components/CompMonitorObj.vue'; import CompMonitorPlan from './components/CompMonitorPlan.vue'; @@ -160,6 +168,9 @@ showMonitorObjList: [], //褰撳墠閫変腑鐨勪换鍔� curTask: {}, + //褰撳墠閫変腑鐨勬棩浠诲姟 + curDayTaskList: [], + daytaskLoading: false, //鎿嶄綔鎸夐挳 buttons: [ { @@ -178,6 +189,8 @@ subTaskDrawer: false, // 褰撳墠閫夋嫨鐨勬棩浠诲姟 curDayTask: {}, + curDay: undefined, + daytaskCreateLoading: false, // 褰撳墠閫夋嫨鐨勬棩浠诲姟涓嬬殑瀛愪换鍔� curSubTaskList: undefined, subTaskLoading: false, @@ -185,13 +198,24 @@ topTaskAddVisible: false }; }, + provide() { + return { + topTask: this.curTask + }; + }, computed: { // 鎬讳换鍔$姸鎬佺粺璁� taskStatus() { + let total = 0, + inspected = 0; + this.curMonitorObjList.forEach((obj) => { + total += parseInt(obj.monitornum); + inspected += obj.extension1 ? parseInt(obj.extension1) : 0; + }); return [ - { name: '鍦烘櫙鏁�', value: 100 }, - { name: '鏈贰鏌�', value: 0 }, - { name: '宸插贰鏌�', value: 0 } + { name: '鍦烘櫙鏁�', value: total }, + { name: '鏈贰鏌�', value: total - inspected }, + { name: '宸插贰鏌�', value: inspected } ]; } }, @@ -226,10 +250,10 @@ type = 0; break; case '姝e湪鎵ц': - type = 1; + type = 5; break; case '宸茬粨鏉�': - type = 2; + type = 6; break; default: type = 0; @@ -242,15 +266,26 @@ this.sideLoading = false; this.mainLoading = true; this.curSubTaskList = undefined; + this.curTask = task; taskApi .fetchMonitorObjectVersion(task.data.tguid) .then((res) => { this.curMonitorObjList = res; - this.curTask = task; }) .finally(() => { this.mainLoading = false; + this.fetchDayTasks(); }); + }, + fetchDayTasks() { + // 鑾峰彇鏃ヤ换鍔$粺璁′俊鎭� + this.dayTaskLoading = true; + return taskApi + .fetchDayTasks(this.curTask.data.tguid) + .then((res) => { + this.curDayTaskList = res; + }) + .finally(() => (this.dayTaskLoading = false)); }, editTask() { this.$router.push({ @@ -270,7 +305,8 @@ } }); }, - onDateChange(dayTask) { + onDateChange(dayTask, day) { + this.curDay = day; if (dayTask) { this.subTaskLoading = true; // this.subTaskDrawer = true; @@ -283,6 +319,7 @@ .finally(() => (this.subTaskLoading = false)); } else { this.curSubTaskList = []; + this.curDayTask = {}; } }, navToTaskCreate(value) { @@ -293,6 +330,49 @@ task: encodeURIComponent(JSON.stringify(value)) } }); + }, + handleSubtaskSubmit() { + this.subTaskLoading = true; + this.$refs.planRef + .fetchDayTasks() + .finally(() => (this.subTaskLoading = false)); + }, + handleAddSubtask() { + // 鍒ゆ柇褰撴棩鏄惁鏈夋棩浠诲姟锛岃嫢娌℃湁锛屽厛鍒涘缓鍦ㄨ烦杞瓙浠诲姟鍒涘缓鐣岄潰 + if (this.curDayTask.guid) { + this.subTaskDrawer = true; + } else { + const _dayTask = useCloned(this.curTask.data).cloned.value; + const taskDate = dayjs(this.curDay); + _dayTask.tsguid = _dayTask.tguid; + _dayTask.tguid = null; + _dayTask.levelnum = null; + _dayTask.name = `${taskDate.format('YYYY骞碝M鏈圖D鏃�')}${ + _dayTask.cityname + }${_dayTask.districtname}${_dayTask.typename}浠诲姟`; + _dayTask.starttime = taskDate.startOf('day').toDate(); + _dayTask.endtime = taskDate.endOf('day').millisecond(0).toDate(); + _dayTask.settime = dayjs().toDate(); + _dayTask.t1stverifytime = dayjs().toDate(); + _dayTask.runingstatus = '鏈墽琛�'; + this.daytaskCreateLoading = true; + taskApi + .putTask(_dayTask) + .then((res) => { + this.curDayTask = { + guid: res.data.tguid, + tsGuid: res.data.tsguid, + changedTaskNum: 0, + check: true, + completeTaskNum: 0, + date: res.data.starttime, + totalTaskNum: 0 + }; + this.subTaskDrawer = true; + this.handleSubtaskSubmit(); + }) + .finally(() => (this.daytaskCreateLoading = false)); + } } }, mounted() { -- Gitblit v1.9.3