From fa9d2b5117227f263ad9aa15b71bddb3fe64ac81 Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期二, 29 七月 2025 13:21:28 +0800 Subject: [PATCH] 新增巡查任务编辑功能 --- src/components/mission/MissionEdit.vue | 139 +++++++++++++++++++++++++++++++++------------- 1 files changed, 99 insertions(+), 40 deletions(-) diff --git a/src/components/mission/MissionEdit.vue b/src/components/mission/MissionEdit.vue index c8695b7..b114951 100644 --- a/src/components/mission/MissionEdit.vue +++ b/src/components/mission/MissionEdit.vue @@ -1,5 +1,9 @@ <template> - <CardDialog v-model="visible" title="鏂板缓璧拌埅浠诲姟"> + <CardDialog + :title="dialogTitle" + :model-value="modelValue" + @update:modelValue="(e) => $emit('update:modelValue', e)" + > <el-form :inline="false" :model="formObj" @@ -43,26 +47,10 @@ </el-form-item> </el-form> </CardDialog> - <el-button - v-if="mode == 'create'" - type="primary" - class="el-button-custom" - @click="visible = !visible" - > - 鏂板缓浠诲姟 - </el-button> - <el-button - v-else - type="primary" - size="small" - icon="EditPen" - class="el-button-custom" - @click="visible = !visible" - ></el-button> </template> <script setup> import moment from 'moment'; -import { ref, reactive, computed } from 'vue'; +import { ref, onMounted, reactive, computed, watch } from 'vue'; import missionApi from '@/api/missionApi'; import thirdPartyDataApi from '@/api/thirdPartyDataApi'; import { useFormConfirm } from '@/composables/formConfirm'; @@ -74,15 +62,19 @@ mode: { type: String, default: 'create' + }, + modelValue: Boolean, + mission: { + type: Object } - // visible: { - // type: String, - // default: 'create' - // } +}); +const dialogTitle = computed(() => { + return `${props.mode == 'create' ? '鏂板缓' : '淇敼'}璧拌埅浠诲姟`; }); +const emits = defineEmits(['update:modelValue']); + const missionStore = useMissionStore(); -const visible = ref(false); const { loading, fetchData } = useFetchData(); const rules = reactive({ location: [ @@ -122,6 +114,11 @@ }); const param = computed(() => { return { + provinceCode: formObj.value.location.pCode, + provinceName: formObj.value.location.pName, + cityCode: formObj.value.location.cCode, + cityName: formObj.value.location.cName, + districtCode: formObj.value.location.dCode, districtName: formObj.value.location.dName, missionCode: formObj.value.missionCode, deviceType: formObj.value.deviceType, @@ -130,37 +127,99 @@ endTime: formObj.value.timeArray[1] }; }); + +function submitMission() { + // const newMission = { ...param.value }; + if (props.mode == 'create') { + createMission(); + } else { + updateMission(); + } +} + // 鍒涘缓浠诲姟 function createMission() { fetchData((page, pageSize) => { - return missionApi.putNewMission(param.value).then((res) => { - visible.value = false; - missionStore.fetchMission(); - // 閫氱煡鏈嶅姟绔惎鍔ㄤ换鍔¤寖鍥村唴鐨勭涓夋柟鏁版嵁鑾峰彇浠诲姟 - thirdPartyDataApi.fetchMissionData(param.value.missionCode); - }); + return missionApi + .putNewMission(param.value) + .then((res) => { + missionStore.fetchMission(); + // 閫氱煡鏈嶅姟绔惎鍔ㄤ换鍔¤寖鍥村唴鐨勭涓夋柟鏁版嵁鑾峰彇浠诲姟 + thirdPartyDataApi.fetchMissionData(param.value.missionCode); + }) + .finally(() => emits('update:modelValue', false)); }); } + +function updateMission() { + fetchData((page, pageSize) => { + return missionApi + .updateMission(param.value) + .then((res) => { + missionStore.fetchMission(); + // 閫氱煡鏈嶅姟绔惎鍔ㄤ换鍔¤寖鍥村唴鐨勭涓夋柟鏁版嵁鑾峰彇浠诲姟 + thirdPartyDataApi.fetchMissionData(param.value.missionCode); + }) + .finally(() => emits('update:modelValue', false)); + }); +} + const { formObj, formRef, edit, onSubmit, onCancel } = useFormConfirm({ submit: { - do: createMission + do: submitMission }, cancel: { do: () => { - visible.value = false; + emits('update:modelValue', false); } } }); -if (import.meta.env.VITE_DATA_MODE == 'jingan') { - formObj.value.location = { - pCode: '31', - pName: '涓婃捣甯�', - cCode: '3100', - cName: '涓婃捣甯�', - dCode: '310106', - dName: '闈欏畨鍖�' - }; +// 鐩戝惉浼犲叆鐨勪换鍔′俊鎭紝鍦ㄦ洿鏂版ā寮忎笅锛屽皢浠诲姟淇℃伅鏄犲皠鍒拌〃鍗曚笂 +watch( + () => [props.modelValue, props.mission], + (nV, oV) => { + if (nV != oV) { + const [v, m] = nV; + if (v) { + initFormObj(); + } + if (m && props.mode == 'update') { + formObj.value.location = { + pCode: m.provinceCode, + pName: m.provinceName, + cCode: m.cityCode, + cName: m.cityName, + dCode: m.districtCode, + dName: m.districtName + }; + formObj.value.missionCode = m.missionCode; + formObj.value.deviceType = m.deviceType; + formObj.value.deviceCode = m.deviceCode; + formObj.value.timeArray = [m.startTime, m.endTime]; + } + } + }, + { immediate: true } +); + +onMounted(() => { + initFormObj(); +}); + +function initFormObj() { + if (import.meta.env.VITE_DATA_MODE == 'jingan') { + formObj.value.location = { + pCode: '31', + pName: '涓婃捣甯�', + cCode: '3100', + cName: '涓婃捣甯�', + dCode: '310106', + dName: '闈欏畨鍖�' + }; + } else { + formObj.value = {}; + } } </script> <style scoped> -- Gitblit v1.9.3