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