From f5052fa7d4e73c0df5a02a6ad8987f35df42b8f8 Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期四, 07 十一月 2024 17:23:50 +0800 Subject: [PATCH] 1. 完成场景报告模块 2. 日报管理模块添加时间范围选择以及word报告生成 --- src/views/fysp/scene/CompSceneConstructionInfo.vue | 271 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 253 insertions(+), 18 deletions(-) diff --git a/src/views/fysp/scene/CompSceneConstructionInfo.vue b/src/views/fysp/scene/CompSceneConstructionInfo.vue index 4ff7cfb..65d98bd 100644 --- a/src/views/fysp/scene/CompSceneConstructionInfo.vue +++ b/src/views/fysp/scene/CompSceneConstructionInfo.vue @@ -1,6 +1,7 @@ <!-- 宸ュ湴涓撳睘淇℃伅缂栬緫 --> <template> <el-form + v-show="showStyle == 'form'" :inline="false" :model="formObj" ref="formRef" @@ -161,34 +162,250 @@ <el-button :disabled="!edit" @click="onReset">閲嶇疆</el-button> </el-form-item> </el-form> + + <el-descriptions + v-show="showStyle == 'descriptions'" + :column="2" + :size="fontSize" + direction="horizontal" + border + > + <template #title> + <el-text tag="h1">{{ title }}</el-text> + </template> + <template #extra> + <el-button + :disabled="!edit && !ignoreEdit" + :size="fontSize" + type="primary" + @click="onSubmit" + :loading="loading" + >鎻愪氦</el-button + > + <el-button + :size="fontSize" + :disabled="!edit && !ignoreEdit" + @click="onReset" + >閲嶇疆</el-button + > + </template> + <el-descriptions-item label="宸ョ▼绫诲瀷" + ><el-input + :size="fontSize" + clearable + v-model="formObj.csProjectType" + placeholder="宸ョ▼绫诲瀷" + /></el-descriptions-item> + <!-- <el-descriptions-item label="寤鸿鐘舵��" + ><el-select + v-model="formObj.csStatus" + placeholder="寤鸿鐘舵��" + > + <el-option + v-for="s in status" + :key="s.value" + :label="s.label" + :value="s.value" + /> </el-select + ></el-descriptions-item> --> + <el-descriptions-item label="鏂藉伐闃舵" + ><el-select + v-model="formObj.siExtension1" + placeholder="鏂藉伐闃舵" + :size="fontSize" + > + <el-option + v-for="s in stage" + :key="s.value" + :label="s.label" + :value="s.value" + /> </el-select + ></el-descriptions-item> + <el-descriptions-item label="鏂藉伐鏃堕棿" + ><el-date-picker + :size="fontSize" + v-model="formObj._timeRange" + type="daterange" + range-separator="鑷�" + start-placeholder="寮�宸ユ椂闂�" + end-placeholder="瀹屽伐鏃堕棿" + /></el-descriptions-item> + <el-descriptions-item label="鍓╀綑宸ユ湡" + ><el-input + :size="fontSize" + clearable + v-model="formObj.csLeftTime" + placeholder="鍓╀綑宸ユ湡锛屼緥濡傚嚑骞淬�佸嚑鏈堛�佸嚑鍛ㄣ�佸嚑澶╃瓑" + /></el-descriptions-item> + <el-descriptions-item label="鏂藉伐鍦板潃" span="2" + ><el-input + clearable + v-model="sceneObj.location" + placeholder="鏂藉伐鍦板潃" + :size="fontSize" + /></el-descriptions-item> + <el-descriptions-item label="鍗犲湴闈㈢Н" rowspan="2" + ><el-input + :size="fontSize" + clearable + v-model="formObj.csFloorSpace" + placeholder="鍗犲湴闈㈢Н" + > + <template #append>銕�</template> + </el-input></el-descriptions-item + > + <el-descriptions-item label="鏂藉伐闈㈢Н" + ><el-input + :size="fontSize" + clearable + v-model="formObj.csConstructionArea" + placeholder="鏂藉伐闈㈢Н" + > + <template #append>銕�</template> + </el-input></el-descriptions-item + > + <el-descriptions-item label="姣忔湀鏂藉伐闈㈢Н" + ><el-input + :size="fontSize" + clearable + v-model="formObj.csConstructionAreaPerMonth" + placeholder="姣忔湀鏂藉伐闈㈢Н" + > + <template #append>銕�</template> + </el-input></el-descriptions-item + > + <el-descriptions-item label="椤圭洰璐熻矗浜�" + ><el-input + :size="fontSize" + clearable + v-model="sceneObj.contacts" + placeholder="椤圭洰璐熻矗浜�" + /></el-descriptions-item> + <el-descriptions-item label="椤圭洰璐熻矗浜虹數璇�" + ><el-input + :size="fontSize" + clearable + type="tel" + v-model="sceneObj.contactst" + placeholder="椤圭洰璐熻矗浜虹數璇�" + > + <template #prepend> + <el-icon><Iphone /></el-icon> + </template> </el-input + ></el-descriptions-item> + <el-descriptions-item label="瀹夊叏鍛�" + ><el-input + :size="fontSize" + clearable + v-model="formObj.csSecurityOfficer" + placeholder="瀹夊叏鍛�" + /></el-descriptions-item> + <el-descriptions-item label="瀹夊叏鍛樼數璇�" + ><el-input + :size="fontSize" + clearable + type="tel" + v-model="formObj.csSecurityOfficerTel" + placeholder="瀹夊叏鍛樼數璇�" + > + <template #prepend> + <el-icon><Iphone /></el-icon> + </template> </el-input + ></el-descriptions-item> + <el-descriptions-item label="鎬诲寘鍗曚綅" + ><el-input + :size="fontSize" + clearable + v-model="formObj.csConstructionUnit" + placeholder="鎬诲寘鍗曚綅" + /></el-descriptions-item> + <!-- <el-descriptions-item label="鏂藉伐鍗曚綅鑱旂郴浜�" + ><el-input + clearable + v-model="formObj.csConstructionContacts" + placeholder="鏂藉伐鍗曚綅鑱旂郴浜�" + /></el-descriptions-item> + <el-descriptions-item label="鏂藉伐鍗曚綅鑱旂郴鐢佃瘽" + ><el-input + clearable + type="tel" + v-model="formObj.csConstructionContactsTel" + placeholder="鏂藉伐鍗曚綅鑱旂郴鐢佃瘽" + > + <template #prepend> + <el-icon><Iphone /></el-icon> + </template> </el-input + ></el-descriptions-item> --> + <el-descriptions-item label="寤鸿鍗曚綅" + ><el-input + :size="fontSize" + clearable + v-model="formObj.csEmployerUnit" + placeholder="寤鸿鍗曚綅" + /></el-descriptions-item> + <!-- <el-descriptions-item label="涓氫富鍗曚綅鑱旂郴浜�" + ><el-input + clearable + v-model="formObj.csEmployerContacts" + placeholder="涓氫富鍗曚綅鑱旂郴浜�" + /></el-descriptions-item> + <el-descriptions-item label="涓氫富鍗曚綅鑱旂郴鐢佃瘽" + ><el-input + clearable + type="tel" + v-model="formObj.csEmployerContactsTel" + placeholder="涓氫富鍗曚綅鑱旂郴鐢佃瘽" + > + <template #prepend> + <el-icon><Iphone /></el-icon> + </template> </el-input + ></el-descriptions-item> --> + </el-descriptions> </template> <script setup> -import { defineProps, defineEmits, reactive, ref, watch } from 'vue'; +import { reactive, ref, watch, computed } from 'vue'; import { useDateFormat } from '@vueuse/core'; import { enumStatusNA, enumStageNA } from '@/enum/construction'; import sceneApi from '@/api/fysp/sceneApi'; import { useFormConfirm } from '@/composables/formConfirm'; const props = defineProps({ + scene: Object, //宸ュ湴棰濆淇℃伅 formInfo: Object, //鍦烘櫙绫诲瀷锛氬伐鍦� sceneType: { type: Number, - default: 1, + default: 1 }, + // 灞曠ず鏍峰紡 form锛氳〃鍗曪紱descriptions锛氭弿杩板垪琛� + showStyle: { + type: String, + default: 'descriptions' + // default:'form' + }, + title: String }); -const emit = defineEmits(['onSubmit', 'onCancel']); +const fontSize = ref('small'); +const emit = defineEmits([ + 'onSubmit', + 'onCancel', + 'update:scene', + 'update:formInfo' +]); +const sceneObj = ref({}); const { formObj, formRef, edit, onSubmit, onReset } = useFormConfirm({ submit: { - do: submit, + do: submit }, cancel: { - do: cancel, - }, + do: cancel + } }); +const ignoreEdit = computed(() => props.showStyle == 'descriptions'); + const loading = ref(false); const status = reactive(enumStatusNA()); const stage = reactive(enumStageNA()); @@ -197,27 +414,27 @@ { required: true, message: '宸ョ▼绫诲瀷涓嶈兘涓虹┖', - trigger: 'blur', - }, + trigger: 'blur' + } ], csStatus: [ { required: true, message: '寤鸿鐘舵�佷笉鑳戒负绌�', - trigger: 'change', - }, + trigger: 'change' + } ], siExtension1: [ { required: true, message: '鏂藉伐闃舵涓嶈兘涓虹┖', - trigger: 'change', - }, - ], + trigger: 'change' + } + ] }); // 鍒涘缓鎴栨洿鏂板満鏅鎯� -function createOrupdateScene() { +function createOrupdateSubScene() { loading.value = true; if (formObj.value._timeRange && formObj.value._timeRange.length == 2) { @@ -228,6 +445,8 @@ return sceneApi .updateSubScene(props.sceneType, formObj.value) .then((res) => { + emit('onSubmit', formObj); + emit('update:formInfo', formObj); return res.data; }) .finally(() => { @@ -235,10 +454,16 @@ }); } -function submit() { - emit('onSubmit', formObj); +// 鏇存柊鍦烘櫙 +function updateScene() { + return sceneApi.updateScene(sceneObj.value).then(() => { + emit('update:scene', sceneObj); + }); +} - return createOrupdateScene(); +function submit() { + updateScene(); + return createOrupdateSubScene(); } function cancel() { @@ -252,12 +477,22 @@ formObj.value = nValue; formObj.value._timeRange = [ new Date(formObj.value.csStartTime), - new Date(formObj.value.csEndTime), + new Date(formObj.value.csEndTime) ]; } }, { deep: false, immediate: true } ); + +watch( + () => props.scene, + (nValue) => { + if (nValue) { + sceneObj.value = nValue; + } + }, + { deep: false, immediate: true } +); </script> <style> -- Gitblit v1.9.3