From 4fbdf4c6b13d19b9be54900b5dcff29e2ca7ef01 Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期二, 24 六月 2025 17:31:45 +0800 Subject: [PATCH] 巡查单据自动下载功能(待完成) --- src/views/fysp/task/TaskManage.vue | 242 +++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 205 insertions(+), 37 deletions(-) diff --git a/src/views/fysp/task/TaskManage.vue b/src/views/fysp/task/TaskManage.vue index 4239a94..24129b6 100644 --- a/src/views/fysp/task/TaskManage.vue +++ b/src/views/fysp/task/TaskManage.vue @@ -1,9 +1,8 @@ <template> <BaseContentLayout> <template #header> - <FYSearchBar @search="search"> + <!-- <FYSearchBar @search="search"> <template #options> - <!-- 鍖哄幙 --> <FYOptionLocation :allOption="true" :level="3" @@ -11,13 +10,14 @@ v-model:value="formSearch.locations" ></FYOptionLocation> </template> - <!-- <template #buttons> - <slot name="buttons"></slot> - </template> --> - </FYSearchBar> + </FYSearchBar> --> </template> <template #aside> - <SideList :items="tasks" :loading="sideLoading" @item-click="chooseTask"></SideList> + <SideList + :items="tasks" + :loading="sideLoading" + @item-click="chooseTask" + ></SideList> </template> <template #main> <ToolBar @@ -32,36 +32,100 @@ v-loading="mainLoading" > <el-row justify="space-between"> - <div><el-text>鐩戠璁″垝</el-text></div> - <el-button type="warning" size="small" @click="editPlan">璁″垝璋冩暣</el-button> - <CompMonitorPlan :task="curTask.data"></CompMonitorPlan> + <!-- <div><el-text>鐩戠璁″垝</el-text></div> + <el-button type="warning" size="small" @click="editPlan" + >璁″垝璋冩暣</el-button + > --> + <el-tabs model-value="first"> + <el-tab-pane label="鐩戠璁″垝" name="first"> + <el-row> + <el-col :span="curSubTaskList ? 16 : 24"> + <CompMonitorPlan + ref="planRef" + :task="curTask.data" + @date-change="onDateChange" + ></CompMonitorPlan> + </el-col> + <el-col v-if="curSubTaskList" :span="8"> + <CompSubTaskList + create + v-model="curSubTaskList" + :loading="subTaskLoading" + :create-loading="daytaskLoading" + height="56vh" + @add="handleAddSubtask" + @submit="handleSubtaskSubmit" + ></CompSubTaskList> + </el-col> + </el-row> + </el-tab-pane> + <!-- <el-tab-pane label="鐩戠鍦板浘" name="second"> + <CompTaskMap></CompTaskMap> + </el-tab-pane> --> + </el-tabs> </el-row> <el-divider></el-divider> <el-row justify="space-between"> <div><el-text>鐩戠鍦烘櫙</el-text></div> - <el-button type="warning" size="small" @click="editTask">鍦烘櫙璋冩暣</el-button> + <el-button type="warning" size="small" @click="editTask" + >鍦烘櫙璋冩暣</el-button + > </el-row> <CompMonitorObj :data="curMonitorObjList"></CompMonitorObj> - <!-- <div><el-text>鐩戠鍦烘櫙</el-text></div> - <div> - <el-space wrap> - <ItemMonitorObj - v-for="item in curMonitorObjList" - :key="item.movid" - :item="item" - ></ItemMonitorObj> - </el-space> - </div> --> </el-scrollbar> - <el-empty v-else description="鏆傛棤璁板綍" v-loading="mainLoading" /> + <div v-else> + <el-empty description="鏆傛棤璁板綍" v-loading="mainLoading" /> + <el-row v-if="!mainLoading" justify="center"> + <el-button + type="primary" + size="default" + @click="navToTaskCreate(curTask.data)" + >娣诲姞鐩戠鍦烘櫙</el-button + > + </el-row> + </div> </template> </BaseContentLayout> + <el-drawer + v-model="subTaskDrawer" + title="鏃ヨ鍒掔鐞�" + direction="btt" + size="96%" + destroy-on-close + > + <CompDayTask + :day-task="curDayTask" + :mObjList="curMonitorObjList" + @submit="handleSubtaskSubmit" + ></CompDayTask> + </el-drawer> + <el-dialog + v-model="topTaskAddVisible" + width="600" + title="涓�閿垱寤烘�讳换鍔�" + destroy-on-close + :close-on-click-modal="false" + :close-on-press-escape="false" + :show-close="false" + > + <CompTaskEdit + @submit="navToTaskCreate" + @cancel="topTaskAddVisible = false" + ></CompTaskEdit> + </el-dialog> </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'; +import CompDayTask from './components/CompDayTask.vue'; +import CompTaskMap from './components/CompTaskMap.vue'; +import CompTaskEdit from './components/CompTaskEdit.vue'; +import CompSubTaskList from './components/CompSubTaskList.vue'; export default { beforeRouteEnter(to, from, next) { // 鍦ㄦ覆鏌撹缁勪欢鐨勫搴旇矾鐢辫楠岃瘉鍓嶈皟鐢� @@ -70,10 +134,19 @@ next((vm) => { if (from.name == 'monitorObjEdit' && vm.task) { vm.chooseTask(vm.task); + } else if (from.name == 'monitorTaskCreate') { + vm.search(); } }); }, - components: { CompMonitorObj, CompMonitorPlan }, + components: { + CompMonitorObj, + CompMonitorPlan, + CompDayTask, + CompTaskMap, + CompTaskEdit, + CompSubTaskList + }, data() { return { formSearch: { @@ -96,24 +169,49 @@ curTask: {}, //鎿嶄綔鎸夐挳 buttons: [ - // { - // name: '璁″垝璋冩暣', - // color: 'success' - // }, + { + name: '涓�閿垱寤烘�讳换鍔�', + color: 'success', + click: () => { + this.topTaskAddVisible = true; + } + } // { // name: '鍦烘櫙璋冩暣', // color: 'warning' // } - ] + ], + // 瀛愪换鍔$紪杈戝脊鍑烘 + subTaskDrawer: false, + // 褰撳墠閫夋嫨鐨勬棩浠诲姟 + curDayTask: {}, + curDay: undefined, + daytaskLoading: false, + // 褰撳墠閫夋嫨鐨勬棩浠诲姟涓嬬殑瀛愪换鍔� + curSubTaskList: undefined, + subTaskLoading: false, + // 鎬讳换鍔℃柊澧炲脊鍑烘 + 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 } ]; } }, @@ -148,10 +246,10 @@ type = 0; break; case '姝e湪鎵ц': - type = 1; + type = 5; break; case '宸茬粨鏉�': - type = 2; + type = 6; break; default: type = 0; @@ -163,11 +261,12 @@ this.task = task; 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; @@ -182,14 +281,83 @@ } }); }, - editPlan(){ + editPlan() { this.$router.push({ name: 'monitorPlanEdit', query: { data: encodeURIComponent(JSON.stringify(this.curMonitorObjList)), - task: encodeURIComponent(JSON.stringify(this.curTask.data)), + task: encodeURIComponent(JSON.stringify(this.curTask.data)) } }); + }, + onDateChange(dayTask, day) { + this.curDay = day; + if (dayTask) { + this.subTaskLoading = true; + // this.subTaskDrawer = true; + this.curDayTask = dayTask; + taskApi + .fetchSubtaskByDayTask(dayTask.guid) + .then((res) => { + this.curSubTaskList = res; + }) + .finally(() => (this.subTaskLoading = false)); + } else { + this.curSubTaskList = []; + this.curDayTask = {}; + } + }, + navToTaskCreate(value) { + this.topTaskAddVisible = false; + this.$router.push({ + name: 'monitorTaskCreate', + query: { + 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.daytaskLoading = 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.daytaskLoading = false)); + } } }, mounted() { @@ -206,6 +374,6 @@ } .el-scrollbar { - height: calc((100vh - 60px * 2 - 20px * 2 - var(--height-toolbar))); + height: calc((100vh - 60px - 20px * 2 - var(--height-toolbar))); } </style> -- Gitblit v1.9.3