From 36c3a0fe4f6750891cb69f9622e141b2f74f38b9 Mon Sep 17 00:00:00 2001 From: hcong <1050828145@qq.com> Date: 星期五, 15 十一月 2024 17:01:58 +0800 Subject: [PATCH] 码头搅拌站模版导出 --- src/views/fysp/scene/CompSceneConstructionInfo.vue | 575 +++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 396 insertions(+), 179 deletions(-) diff --git a/src/views/fysp/scene/CompSceneConstructionInfo.vue b/src/views/fysp/scene/CompSceneConstructionInfo.vue index 4ff7cfb..ca21b75 100644 --- a/src/views/fysp/scene/CompSceneConstructionInfo.vue +++ b/src/views/fysp/scene/CompSceneConstructionInfo.vue @@ -1,125 +1,341 @@ <!-- 宸ュ湴涓撳睘淇℃伅缂栬緫 --> <template> - <el-form - :inline="false" - :model="formObj" - ref="formRef" - :rules="rules" - label-position="right" - label-width="150px" + <BaseSceneInfo + ref="baseSceneInfo" + :scene="scene" + :formInfo="formInfo" + :scene-type="sceneType" > - <el-form-item label="宸ョ▼绫诲瀷" prop="csProjectType"> - <el-input - clearable - v-model="formObj.csProjectType" - placeholder="宸ョ▼绫诲瀷" - /> - </el-form-item> - <el-form-item label="寤鸿鐘舵��" prop="csStatus"> - <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-form-item> - <el-form-item label="鏂藉伐闃舵" prop="siExtension1"> - <el-select v-model="formObj.siExtension1" placeholder="鏂藉伐闃舵"> - <el-option - v-for="s in stage" - :key="s.value" - :label="s.label" - :value="s.value" - /> - </el-select> - </el-form-item> - <el-form-item label="鏂藉伐鏃堕棿" prop="_timeRange"> - <el-date-picker - v-model="formObj._timeRange" - type="daterange" - range-separator="鑷�" - start-placeholder="寮�宸ユ椂闂�" - end-placeholder="瀹屽伐鏃堕棿" - /> - </el-form-item> - <el-form-item label="鍓╀綑宸ユ湡" prop="csLeftTime"> - <el-input - clearable - v-model="formObj.csLeftTime" - placeholder="鍓╀綑宸ユ湡锛屼緥濡傚嚑骞淬�佸嚑鏈堛�佸嚑鍛ㄣ�佸嚑澶╃瓑" - /> - </el-form-item> - <el-form-item label="鍗犲湴闈㈢Н" prop="csFloorSpace"> - <el-input clearable v-model="formObj.csFloorSpace" placeholder="鍗犲湴闈㈢Н"> - <template #append>銕�</template> - </el-input> - </el-form-item> - <el-form-item label="鏂藉伐闈㈢Н" prop="csConstructionArea"> - <el-input - clearable - v-model="formObj.csConstructionArea" - placeholder="鏂藉伐闈㈢Н" + <template #form-items> + <el-form + v-show="showStyle == 'form'" + :inline="false" + :model="formObj" + ref="formRef" + :rules="rules" + label-position="right" + label-width="150px" > - <template #append>銕�</template> - </el-input> - </el-form-item> - <el-form-item label="姣忔湀鏂藉伐闈㈢Н" prop="csConstructionAreaPerMonth"> - <el-input - clearable - v-model="formObj.csConstructionAreaPerMonth" - placeholder="姣忔湀鏂藉伐闈㈢Н" + <el-form-item label="宸ョ▼绫诲瀷" prop="csProjectType"> + <el-input + clearable + v-model="formObj.csProjectType" + placeholder="宸ョ▼绫诲瀷" + /> + </el-form-item> + <el-form-item label="寤鸿鐘舵��" prop="csStatus"> + <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-form-item> + <el-form-item label="鏂藉伐闃舵" prop="siExtension1"> + <el-select v-model="formObj.siExtension1" placeholder="鏂藉伐闃舵"> + <el-option + v-for="s in stage" + :key="s.value" + :label="s.label" + :value="s.value" + /> + </el-select> + </el-form-item> + <el-form-item label="鏂藉伐鏃堕棿" prop="_timeRange"> + <el-date-picker + v-model="formObj._timeRange" + type="daterange" + range-separator="鑷�" + start-placeholder="寮�宸ユ椂闂�" + end-placeholder="瀹屽伐鏃堕棿" + /> + </el-form-item> + <el-form-item label="鍓╀綑宸ユ湡" prop="csLeftTime"> + <el-input + clearable + v-model="formObj.csLeftTime" + placeholder="鍓╀綑宸ユ湡锛屼緥濡傚嚑骞淬�佸嚑鏈堛�佸嚑鍛ㄣ�佸嚑澶╃瓑" + /> + </el-form-item> + <el-form-item label="鍗犲湴闈㈢Н" prop="csFloorSpace"> + <el-input + clearable + v-model="formObj.csFloorSpace" + placeholder="鍗犲湴闈㈢Н" + > + <template #append>銕�</template> + </el-input> + </el-form-item> + <el-form-item label="鏂藉伐闈㈢Н" prop="csConstructionArea"> + <el-input + clearable + v-model="formObj.csConstructionArea" + placeholder="鏂藉伐闈㈢Н" + > + <template #append>銕�</template> + </el-input> + </el-form-item> + <el-form-item label="姣忔湀鏂藉伐闈㈢Н" prop="csConstructionAreaPerMonth"> + <el-input + clearable + v-model="formObj.csConstructionAreaPerMonth" + placeholder="姣忔湀鏂藉伐闈㈢Н" + > + <template #append>銕�</template> + </el-input> + </el-form-item> + <el-form-item label="涓氫富鍗曚綅" prop="csEmployerUnit"> + <el-input + clearable + v-model="formObj.csEmployerUnit" + placeholder="涓氫富鍗曚綅" + /> + </el-form-item> + <el-form-item label="涓氫富鍗曚綅鑱旂郴浜�" prop="csEmployerContacts"> + <el-input + clearable + v-model="formObj.csEmployerContacts" + placeholder="涓氫富鍗曚綅鑱旂郴浜�" + /> + </el-form-item> + <el-form-item + label="涓氫富鍗曚綅鑱旂郴鐢佃瘽" + prop="csEmployerContactsTel" + class="input-with-select" + > + <el-input + clearable + type="tel" + v-model="formObj.csEmployerContactsTel" + placeholder="涓氫富鍗曚綅鑱旂郴鐢佃瘽" + > + <template #prepend> + <el-icon><Iphone /></el-icon> + </template> + </el-input> + </el-form-item> + <el-form-item label="鏂藉伐鍗曚綅" prop="csConstructionUnit"> + <el-input + clearable + v-model="formObj.csConstructionUnit" + placeholder="鏂藉伐鍗曚綅" + /> + </el-form-item> + <el-form-item label="鏂藉伐鍗曚綅鑱旂郴浜�" prop="csConstructionContacts"> + <el-input + clearable + v-model="formObj.csConstructionContacts" + placeholder="鏂藉伐鍗曚綅鑱旂郴浜�" + /> + </el-form-item> + <el-form-item label="鏂藉伐鍗曚綅鑱旂郴鐢佃瘽" prop="csConstructionContactsTel"> + <el-input + clearable + type="tel" + v-model="formObj.csConstructionContactsTel" + placeholder="鏂藉伐鍗曚綅鑱旂郴鐢佃瘽" + > + <template #prepend> + <el-icon><Iphone /></el-icon> + </template> + </el-input> + </el-form-item> + <el-form-item label="瀹夊叏鍛�" prop="csSecurityOfficer"> + <el-input + clearable + v-model="formObj.csSecurityOfficer" + placeholder="瀹夊叏鍛�" + /> + </el-form-item> + <el-form-item label="瀹夊叏鍛樼數璇�" prop="csSecurityOfficerTel"> + <el-input + clearable + type="tel" + v-model="formObj.csSecurityOfficerTel" + placeholder="瀹夊叏鍛樼數璇�" + > + <template #prepend> + <el-icon><Iphone /></el-icon> + </template> + </el-input> + </el-form-item> + + <el-form-item> + <el-button + :disabled="!edit" + type="primary" + @click="onSubmit" + :loading="loading" + >鎻愪氦</el-button + > + <el-button :disabled="!edit" @click="onReset">閲嶇疆</el-button> + </el-form-item> + </el-form> + </template> + <template #description-items> + <el-descriptions + v-show="showStyle == 'descriptions'" + :column="2" + :size="fontSize" + direction="horizontal" + border > - <template #append>銕�</template> - </el-input> - </el-form-item> - <el-form-item label="涓氫富鍗曚綅" prop="csEmployerUnit"> - <el-input - clearable - v-model="formObj.csEmployerUnit" - placeholder="涓氫富鍗曚綅" - /> - </el-form-item> - <el-form-item label="涓氫富鍗曚綅鑱旂郴浜�" prop="csEmployerContacts"> - <el-input - clearable - v-model="formObj.csEmployerContacts" - placeholder="涓氫富鍗曚綅鑱旂郴浜�" - /> - </el-form-item> - <el-form-item - label="涓氫富鍗曚綅鑱旂郴鐢佃瘽" - prop="csEmployerContactsTel" - class="input-with-select" - > - <el-input - clearable - type="tel" - v-model="formObj.csEmployerContactsTel" - placeholder="涓氫富鍗曚綅鑱旂郴鐢佃瘽" - > - <template #prepend> - <el-icon><Iphone /></el-icon> + <template #title> + <el-text tag="h1">{{ title }}</el-text> </template> - </el-input> - </el-form-item> - <el-form-item label="鏂藉伐鍗曚綅" prop="csConstructionUnit"> - <el-input - clearable - v-model="formObj.csConstructionUnit" - placeholder="鏂藉伐鍗曚綅" - /> - </el-form-item> - <el-form-item label="鏂藉伐鍗曚綅鑱旂郴浜�" prop="csConstructionContacts"> - <el-input + <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-form-item> - <el-form-item label="鏂藉伐鍗曚綅鑱旂郴鐢佃瘽" prop="csConstructionContactsTel"> - <el-input + /></el-descriptions-item> + <el-descriptions-item label="鏂藉伐鍗曚綅鑱旂郴鐢佃瘽" + ><el-input clearable type="tel" v-model="formObj.csConstructionContactsTel" @@ -127,68 +343,79 @@ > <template #prepend> <el-icon><Iphone /></el-icon> - </template> - </el-input> - </el-form-item> - <el-form-item label="瀹夊叏鍛�" prop="csSecurityOfficer"> - <el-input + </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.csSecurityOfficer" - placeholder="瀹夊叏鍛�" - /> - </el-form-item> - <el-form-item label="瀹夊叏鍛樼數璇�" prop="csSecurityOfficerTel"> - <el-input + v-model="formObj.csEmployerContacts" + placeholder="涓氫富鍗曚綅鑱旂郴浜�" + /></el-descriptions-item> + <el-descriptions-item label="涓氫富鍗曚綅鑱旂郴鐢佃瘽" + ><el-input clearable type="tel" - v-model="formObj.csSecurityOfficerTel" - placeholder="瀹夊叏鍛樼數璇�" + v-model="formObj.csEmployerContactsTel" + placeholder="涓氫富鍗曚綅鑱旂郴鐢佃瘽" > <template #prepend> <el-icon><Iphone /></el-icon> - </template> - </el-input> - </el-form-item> - - <el-form-item> - <el-button - :disabled="!edit" - type="primary" - @click="onSubmit" - :loading="loading" - >鎻愪氦</el-button - > - <el-button :disabled="!edit" @click="onReset">閲嶇疆</el-button> - </el-form-item> - </el-form> + </template> </el-input + ></el-descriptions-item> --> + </el-descriptions> + </template> + </BaseSceneInfo> </template> <script setup> -import { defineProps, defineEmits, reactive, ref, watch } from 'vue'; -import { useDateFormat } from '@vueuse/core'; +import { reactive, ref, watch, computed } from 'vue'; import { enumStatusNA, enumStageNA } from '@/enum/construction'; -import sceneApi from '@/api/fysp/sceneApi'; import { useFormConfirm } from '@/composables/formConfirm'; +import BaseSceneInfo from './BaseSceneInfo.vue'; 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,48 +424,28 @@ { 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() { - loading.value = true; - - if (formObj.value._timeRange && formObj.value._timeRange.length == 2) { - const t = formObj.value._timeRange; - formObj.value.csStartTime = useDateFormat(t[0], 'YYYY-MM-DD'); - formObj.value.csEndTime = useDateFormat(t[1], 'YYYY-MM-DD'); - } - return sceneApi - .updateSubScene(props.sceneType, formObj.value) - .then((res) => { - return res.data; - }) - .finally(() => { - loading.value = false; - }); -} - +const baseSceneInfo = ref(null); function submit() { - emit('onSubmit', formObj); - - return createOrupdateScene(); + return baseSceneInfo.value.submit(); } function cancel() { @@ -252,12 +459,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