src/views/fysp/scene/CompSceneConstructionInfo.vue
@@ -1,7 +1,7 @@
<!-- 工地专属信息编辑 -->
<template>
  <el-form
    v-if="showStyle == 'form'"
    v-show="showStyle == 'form'"
    :inline="false"
    :model="formObj"
    ref="formRef"
@@ -164,7 +164,7 @@
  </el-form>
  <el-descriptions
    v-else-if="showStyle == 'descriptions'"
    v-show="showStyle == 'descriptions'"
    :column="2"
    :size="fontSize"
    direction="horizontal"
@@ -175,14 +175,17 @@
    </template>
    <template #extra>
      <el-button
        :disabled="!edit && !ignoreEdit"
        :size="fontSize"
        :disabled="!edit"
        type="primary"
        @click="onSubmit"
        :loading="loading"
        >提交</el-button
      >
      <el-button :size="fontSize" :disabled="!edit" @click="onReset"
      <el-button
        :size="fontSize"
        :disabled="!edit && !ignoreEdit"
        @click="onReset"
        >重置</el-button
      >
    </template>
@@ -237,7 +240,7 @@
    <el-descriptions-item label="施工地址" span="2"
      ><el-input
        clearable
        v-model="formObj.location"
        v-model="sceneObj.location"
        placeholder="施工地址"
        :size="fontSize"
    /></el-descriptions-item>
@@ -271,6 +274,25 @@
        <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"
@@ -342,7 +364,7 @@
</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';
@@ -366,8 +388,14 @@
  title: String
});
const fontSize = ref('small');
const emit = defineEmits(['onSubmit', 'onCancel']);
const emit = defineEmits([
  'onSubmit',
  'onCancel',
  'update:scene',
  'update:formInfo'
]);
const sceneObj = ref({});
const { formObj, formRef, edit, onSubmit, onReset } = useFormConfirm({
  submit: {
    do: submit
@@ -376,6 +404,8 @@
    do: cancel
  }
});
const ignoreEdit = computed(() => props.showStyle == 'descriptions');
const loading = ref(false);
const status = reactive(enumStatusNA());
const stage = reactive(enumStageNA());
@@ -404,7 +434,7 @@
});
// 创建或更新场景详情
function createOrupdateScene() {
function createOrupdateSubScene() {
  loading.value = true;
  if (formObj.value._timeRange && formObj.value._timeRange.length == 2) {
@@ -415,6 +445,8 @@
  return sceneApi
    .updateSubScene(props.sceneType, formObj.value)
    .then((res) => {
      emit('onSubmit', formObj);
      emit('update:formInfo', formObj);
      return res.data;
    })
    .finally(() => {
@@ -422,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() {
@@ -445,6 +483,16 @@
  },
  { deep: false, immediate: true }
);
watch(
  () => props.scene,
  (nValue) => {
    if (nValue) {
      sceneObj.value = nValue;
    }
  },
  { deep: false, immediate: true }
);
</script>
<style>