From 4a836815f12e8ba717702cc8ed431e1b4f96134c Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期五, 25 四月 2025 13:55:34 +0800 Subject: [PATCH] 新增内部线索相关管理逻辑 --- src/views/overlay-clue/task/ClueTaskEdit.vue | 294 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 292 insertions(+), 2 deletions(-) diff --git a/src/views/overlay-clue/task/ClueTaskEdit.vue b/src/views/overlay-clue/task/ClueTaskEdit.vue index 61c7765..ee4a4dc 100644 --- a/src/views/overlay-clue/task/ClueTaskEdit.vue +++ b/src/views/overlay-clue/task/ClueTaskEdit.vue @@ -1,3 +1,293 @@ <template> - -</template> \ No newline at end of file + <el-dialog + style="pointer-events: auto" + :model-value="modelValue" + @update:modelValue="handleDialogChange" + width="50%" + :close-on-click-modal="false" + :close-on-press-escape="false" + destroy-on-close + > + <template #header> + <span> {{ create ? '鍙戝竷绾跨储浠诲姟' : '鏇存柊绾跨储浠诲姟' }}</span> + </template> + <el-form + label-width="120px" + label-position="right" + :rules="rules" + :model="formObj" + ref="formRef" + > + <el-form-item label="绾跨储缂栧彿" prop="clueId"> + <el-input + v-model="formObj.clueId" + placeholder="璇疯緭鍏ョ嚎绱㈢紪鍙�" + class="w-200" + :disabled="true" + ></el-input> + </el-form-item> + <el-form-item label="浠诲姟鏃堕棿" prop="taskTime"> + <el-date-picker + v-model="formObj.taskTime" + type="date" + placeholder="閫夋嫨鏃ユ湡" + /> + </el-form-item> + <el-form-item label="鍖哄幙" prop="_location"> + <OptionLocation + :level="3" + :initValue="false" + :checkStrictly="false" + :allOption="false" + v-model="formObj._location" + ></OptionLocation> + </el-form-item> + <el-form-item label="鍝嶅簲绾у埆" prop="responseLevel"> + <OptionResponseLevel + v-model="formObj.responseLevel" + ></OptionResponseLevel> + </el-form-item> + <el-form-item label="鍑鸿鏂瑰紡" prop="travelMode"> + <OptionTravelMode + v-model="formObj.travelMode" + ></OptionTravelMode> + </el-form-item> + <el-form-item label="鏃犱汉鏈�" prop="hasUav"> + <el-switch + v-model="formObj.hasUav" + inline-prompt + active-text="鏈�" + inactive-text="鏃�" + /> + </el-form-item> + <el-form-item label="鎵ц浜�" prop="executorIds"> + <OptionExecutors + v-model="formObj.executorIds" + ></OptionExecutors> + </el-form-item> + </el-form> + <template #footer> + <el-button @click="onCancel">鍙栨秷</el-button> + <el-button + :disabled="!edit" + type="primary" + :loading="loading" + @click="onSubmit" + >纭畾</el-button + > + </template> + </el-dialog> +</template> +<script setup> +import { ref, reactive, watch, onMounted } from 'vue'; +import { useFormConfirm } from '@/composables/formConfirm'; +import clueTaskApi from '@/api/clue/clueTaskApi'; + +const props = defineProps({ + modelValue: Boolean, + clueData: Object, + clueTask: Object, + create: { + type: Boolean, + default: true + }, + // 鑷畾涔夊垱寤烘柟娉� + onCreate: Function, + // 鑷畾涔夋洿鏂版柟娉� + onUpdate: Function +}); + +const emits = defineEmits(['update:modelValue', 'onSubmit']); + +function handleDialogChange(value) { + emits('update:modelValue', value); +} + +const { formObj, formRef, edit, onSubmit, onCancel, clear } = + useFormConfirm({ + submit: { + do: submit + }, + cancel: { + do: cancel + } + }); +const loading = ref(false); +// 琛ㄥ崟妫�鏌ヨ鍒� +const rules = reactive({ + // clueId: [ + // { + // required: true, + // message: '绾跨储缂栧彿涓嶈兘涓虹┖', + // trigger: 'blur' + // } + // ], + taskTime: [ + { + required: true, + message: '绾跨储鏃堕棿涓嶈兘涓虹┖', + trigger: 'change' + } + ], + _location: [ + { + required: true, + message: '鍖哄幙涓嶈兘涓虹┖', + trigger: 'change' + } + ], + responseLevel: [ + { + required: true, + message: '鍝嶅簲绾у埆涓嶈兘涓虹┖', + trigger: 'change' + } + ], + executorIds: [ + { + required: true, + message: '鎵ц浜轰笉鑳戒负绌�', + trigger: 'change' + } + ] +}); + +function submit() { + const param = getParams(); + return props.create + ? props.onCreate + ? props.onCreate(param) + : createClueTask(param) + : props.onUpdate + ? props.onUpdate(param) + : updateClueTask(param); +} + +function cancel() { + emits('update:modelValue', false); +} + +function createClueTask(param) { + return clueTaskApi + .createClueTask(param) + .then(() => { + emits('update:modelValue', false); + emits('onSubmit'); + // clear(); + }) + .finally(() => { + loading.value = false; + }); +} + +function updateClueTask(param) { + return clueTaskApi + .updateClueTask(param) + .then(() => { + emits('update:modelValue', false); + emits('onSubmit'); + // clear(); + }) + .finally(() => { + loading.value = false; + }); +} + +function getParams() { + return { + guid: formObj.value.guid, + clueId: formObj.value.clueId, + taskTime: formObj.value.taskTime, + 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, + townCode: formObj.value._location.tCode, + townName: formObj.value._location.tName, + responseLevel: formObj.value.responseLevel, + travelMode: formObj.value.travelMode, + hasUav: formObj.value.hasUav, + executorIds: formObj.value.executorIds.join(';') + }; +} + +// watch( +// () => props.clueData, +// (nV, oV) => { +// if (nV && nV != oV) { +// formObj.value.clueId = nV.cid; +// } +// } +// ); + +// watch( +// () => props.clueTask, +// (nV, oV) => { +// if (nV && nV != oV) { +// formObj.value.guid = nV.guid; +// formObj.value.clueId = nV.clueId; +// formObj.value.taskTime = nV.taskTime; +// formObj.value._location = { +// pCode: nV.provinceCode, +// pName: nV.provinceName, +// cCode: nV.cityCode, +// cName: nV.cityName, +// dCode: nV.districtCode, +// dName: nV.districtName, +// tCode: nV.townCode, +// tName: nV.townName +// }; +// formObj.value.responseLevel = nV.responseLevel; +// formObj.value.travelMode = nV.travelMode; +// formObj.value.hasUav = nV.hasUav; +// formObj.value.executorIds = nV.executorIds.split(';'); +// } +// } +// ); + +watch( + () => [props.modelValue, props.clueData, props.clueTask], + (nV, oV) => { + const [m, d, t] = nV; + if (m) { + formObj.value = { + taskTime: new Date(), + _location: { + pCode: '31', + pName: '涓婃捣甯�', + cCode: '3100', + cName: '涓婃捣甯�', + dCode: '310106', + dName: '闈欏畨鍖�', + tCode: undefined, + tName: undefined + } + }; + if (d) { + formObj.value.clueId = d.cid; + } + if (t) { + formObj.value.guid = t.guid; + formObj.value.clueId = t.clueId; + formObj.value.taskTime = t.taskTime; + formObj.value._location = { + pCode: t.provinceCode, + pName: t.provinceName, + cCode: t.cityCode, + cName: t.cityName, + dCode: t.districtCode, + dName: t.districtName, + tCode: t.townCode, + tName: t.townName + }; + formObj.value.responseLevel = t.responseLevel; + formObj.value.travelMode = t.travelMode; + formObj.value.hasUav = t.hasUav; + formObj.value.executorIds = t.executorIds.split(';'); + } + } + } +); +</script> -- Gitblit v1.9.3