src/views/fysp/scene/SceneEditDialog.vue
@@ -1,31 +1,29 @@
<template>
  <el-dialog>
    <div class="sub-title">账户信息</div>
    <el-row>
      <FormCol>
        <CompUserInfo :form-info="formUser" />
      </FormCol>
    </el-row>
    <el-divider />
    <div class="sub-title">基本信息</div>
    <el-row>
      <FormCol>
        <CompSceneBaseInfo :model="formScene" />
      </FormCol>
    </el-row>
    <template v-if="formScene.typeid == 1">
      <el-divider />
      <div class="sub-title">工地信息</div>
      <el-row>
        <FormCol>
          <CompSceneConstructionInfo
            showStyle="form"
            :form-info="formSubScene"
          />
        </FormCol>
      </el-row>
      <el-divider />
      <div class="sub-title">设备信息</div>
  <el-dialog
    :model-value="modelValue"
    @update:model-value="handleDialogChange"
    top="2vh"
    class="dialog-wrapper"
    v-loading="loading"
  >
    <el-scrollbar
      ref="scrollbarRef"
      height="86vh"
      v-loading="loading"
      :always="true"
    >
      <template v-if="formScene && formScene.typeid == 1">
        <div class="sub-title">工地信息</div>
        <el-row>
          <FormCol>
            <CompSceneConstructionInfo
              showStyle="form"
              :form-info="formSubScene"
            />
          </FormCol>
        </el-row>
        <!-- <el-divider /> -->
        <!-- <div class="sub-title">设备信息</div>
      <el-row>
        <FormCol>
          <CompSceneDeviceInfo
@@ -33,12 +31,27 @@
            :scene-type="formScene.typeid"
          />
        </FormCol>
      </el-row> -->
        <el-divider />
      </template>
      <div class="sub-title">基本信息</div>
      <el-row>
        <FormCol>
          <CompSceneBaseInfo :model="formScene" />
        </FormCol>
      </el-row>
    </template>
      <el-divider />
      <div class="sub-title">账户信息</div>
      <el-row>
        <FormCol>
          <CompUserInfo :form-info="formUser" />
        </FormCol>
      </el-row>
    </el-scrollbar>
  </el-dialog>
</template>
<script setup>
import { ref } from 'vue';
import { ref, watch } from 'vue';
import sceneApi from '@/api/fysp/sceneApi';
import userApi from '@/api/fysp/userApi';
@@ -48,11 +61,77 @@
import CompUserInfo from '../user/CompUserInfo.vue';
const props = defineProps({
  modelValue: Boolean,
  sceneId: String
});
const emits = defineEmits(['update:modelValue']);
const formUser = ref({});
const formScene = ref({});
const formScene = ref();
const formSubScene = ref({});
const formSceneDevice = ref({});
const loading = ref(false);
const scrollbarRef = ref();
watch(
  () => [props.modelValue, props.sceneId],
  (nV, oV) => {
    if (nV[0] && nV[1]) {
      fetchSceneInfo();
    }
  }
);
function handleDialogChange(value) {
  formUser.value = {};
  formScene.value = undefined;
  formSubScene.value = {};
  formSceneDevice.value = {};
  emits('update:modelValue', value);
}
function fetchSceneInfo() {
  const sid = props.sceneId;
  loading.value = true;
  sceneApi
    .getSceneDetail(sid)
    .then((res) => {
      userApi
        .getUserByScene(sid)
        .then((user) => {
          //场景
          if (res.data.scense) formScene.value = res.data.scense;
          if (res.data.subScene) {
            formSubScene.value = res.data.subScene;
          } else {
            formSubScene.value = {
              sGuid: formScene.value.guid
            };
          }
          if (res.data.sceneDevice) {
            formSceneDevice.value = res.data.sceneDevice;
          } else {
            formSceneDevice.value = {
              sGuid: formScene.value.guid
            };
          }
          //账户
          if (user) {
            formUser.value = user;
          } else {
            formUser.value = {
              dguid: sid
            };
          }
        })
        .finally(() => {
          loading.value = false;
          scrollbarRef.value.setScrollTop(0);
        });
    })
    .catch(() => (loading.value = false));
}
</script>
<style scoped></style>