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