hcong
2024-11-12 8f3255956f85af1df98170fb05e6551cea12e9b0
场景报告-码头搅拌站场景基本信息
已修改4个文件
已添加3个文件
844 ■■■■■ 文件已修改
src/components.d.ts 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fysp/data-product/ProdSceneReport.vue 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fysp/evaluation/components/precheck/CompPreCheck.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fysp/scene/BaseSceneInfo.vue 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fysp/scene/CompSceneConstructionInfo.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fysp/scene/CompSceneMixingPlantInfo.vue 338 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fysp/scene/CompSceneWharfInfo.vue 305 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components.d.ts
@@ -12,18 +12,13 @@
    BasePanelLayout: typeof import('./components/core/BasePanelLayout.vue')['default']
    CompQuickSet: typeof import('./components/search-option/CompQuickSet.vue')['default']
    Content: typeof import('./components/core/Content.vue')['default']
    ElAffix: typeof import('element-plus/es')['ElAffix']
    ElAside: typeof import('element-plus/es')['ElAside']
    ElAvatar: typeof import('element-plus/es')['ElAvatar']
    ElBadge: typeof import('element-plus/es')['ElBadge']
    ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
    ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
    ElButton: typeof import('element-plus/es')['ElButton']
    ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
    ElCalendar: typeof import('element-plus/es')['ElCalendar']
    ElCard: typeof import('element-plus/es')['ElCard']
    ElCascader: typeof import('element-plus/es')['ElCascader']
    ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
    ElCol: typeof import('element-plus/es')['ElCol']
    ElCollapse: typeof import('element-plus/es')['ElCollapse']
    ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
@@ -35,9 +30,6 @@
    ElDialog: typeof import('element-plus/es')['ElDialog']
    ElDivider: typeof import('element-plus/es')['ElDivider']
    ElDrawer: typeof import('element-plus/es')['ElDrawer']
    ElDropdown: typeof import('element-plus/es')['ElDropdown']
    ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
    ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
    ElEmpty: typeof import('element-plus/es')['ElEmpty']
    ElForm: typeof import('element-plus/es')['ElForm']
    ElFormItem: typeof import('element-plus/es')['ElFormItem']
@@ -45,37 +37,27 @@
    ElIcon: typeof import('element-plus/es')['ElIcon']
    ElImage: typeof import('element-plus/es')['ElImage']
    ElInput: typeof import('element-plus/es')['ElInput']
    ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
    ElLink: typeof import('element-plus/es')['ElLink']
    ElMain: typeof import('element-plus/es')['ElMain']
    ElMenu: typeof import('element-plus/es')['ElMenu']
    ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
    ElMenuItemGroup: typeof import('element-plus/es')['ElMenuItemGroup']
    ElOption: typeof import('element-plus/es')['ElOption']
    ElPageHeader: typeof import('element-plus/es')['ElPageHeader']
    ElPagination: typeof import('element-plus/es')['ElPagination']
    ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
    ElPopover: typeof import('element-plus/es')['ElPopover']
    ElRadio: typeof import('element-plus/es')['ElRadio']
    ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
    ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
    ElRow: typeof import('element-plus/es')['ElRow']
    ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
    ElSegmented: typeof import('element-plus/es')['ElSegmented']
    ElSelect: typeof import('element-plus/es')['ElSelect']
    ElSpace: typeof import('element-plus/es')['ElSpace']
    ElStep: typeof import('element-plus/es')['ElStep']
    ElSteps: typeof import('element-plus/es')['ElSteps']
    ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
    ElSwitch: typeof import('element-plus/es')['ElSwitch']
    ElTable: typeof import('element-plus/es')['ElTable']
    ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
    ElTabPane: typeof import('element-plus/es')['ElTabPane']
    ElTabs: typeof import('element-plus/es')['ElTabs']
    ElTag: typeof import('element-plus/es')['ElTag']
    ElText: typeof import('element-plus/es')['ElText']
    ElTooltip: typeof import('element-plus/es')['ElTooltip']
    ElTransfer: typeof import('element-plus/es')['ElTransfer']
    ElTree: typeof import('element-plus/es')['ElTree']
    ElUpload: typeof import('element-plus/es')['ElUpload']
    Footer: typeof import('./components/core/Footer.vue')['default']
src/views/fysp/data-product/ProdSceneReport.vue
@@ -13,10 +13,27 @@
    <template #main>
      <el-scrollbar class="el-scrollbar" v-loading="mainLoading">
        <CompSceneConstructionInfo
          v-if="curSubtask.data && curSubtask.data.sceneType == '工地'"
          title="A、基本信息"
          :scene="formScene"
          :form-info="formSubScene"
          :scene-type="1"
        />
        <CompSceneWharfInfo
          v-else-if="curSubtask.data && curSubtask.data.sceneType == '码头'"
          title="A、基本信息"
          :scene="formScene"
          :form-info="formSubScene"
          :scene-type="2"
        />
        <CompSceneMixingPlantInfo
          v-else-if="curSubtask.data && curSubtask.data.sceneType == '搅拌站'"
          title="A、基本信息"
          :scene="formScene"
          :form-info="formSubScene"
          :scene-type="3"
        />
        <div v-else><el-text tag="h1">A、基本信息</el-text></div>
        <div><el-text type="">附图片:</el-text></div>
        <CompImgInfo
          v-model:title="imgTitle"
@@ -71,13 +88,9 @@
      </el-scrollbar>
    </template>
  </BaseContentLayout>
  <el-dialog
    v-model="anyPhotoDialog"
    width="66%"
    title="任意图片"
    destroy-on-close
  >
    <ArbitraryPhoto
    v-if="anyPhotoDialog"
    v-model:dialog-visible="anyPhotoDialog"
      :max-select="1"
      :readonly="false"
      :subtask="curSubtask.data"
@@ -85,7 +98,6 @@
      :defaultFile="[sceneImg]"
    >
    </ArbitraryPhoto>
  </el-dialog>
  <el-dialog
    title="设备图片"
    width="66%"
@@ -113,6 +125,8 @@
import right_triangle from '@/assets/image/right_triangle.png';
import CompSceneConstructionInfo from '@/views/fysp/scene/CompSceneConstructionInfo.vue';
import CompSceneWharfInfo from '@/views/fysp/scene/CompSceneWharfInfo.vue';
import CompSceneMixingPlantInfo from '@/views/fysp/scene/CompSceneMixingPlantInfo.vue';
import ArbitraryPhoto from '@/views/fysp/check/components/ArbitraryPhoto.vue';
import CompDevicePhono from '@/views/fysp/check/components/CompDevicePhono.vue';
import CompImgInfo from '@/views/fysp/data-product/components/CompImgInfo.vue';
src/views/fysp/evaluation/components/precheck/CompPreCheck.vue
@@ -76,7 +76,7 @@
        online: true,
        sourceType: v.sourceType
      };
      this.$refs.refSource.startCheck(a);
      this.$.refSource.startCheck(a);
    },
    onDataSourceChange(val) {
      this.dataSource = val;
src/views/fysp/scene/BaseSceneInfo.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
<template>
  <slot name="form-items"></slot>
  <slot name="description-items"></slot>
</template>
<script setup>
import { reactive, ref, watch, computed } from 'vue';
import { useDateFormat } from '@vueuse/core';
import sceneApi from '@/api/fysp/sceneApi';
expose({
  submit
});
const props = defineProps({
  scene: Object,
  //工地额外信息
  formInfo: Object,
  //场景类型:工地
  sceneType: {
    type: Number,
    default: 1
  },
});
const emit = defineEmits([
  'onSubmit',
  'onCancel',
  'update:scene',
  'update:formInfo'
]);
const loading = ref(false);
const formObj = ref({});
const sceneObj = ref({});
// åˆ›å»ºæˆ–更新场景详情
function createOrupdateSubScene() {
  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) => {
      emit('onSubmit', formObj);
      emit('update:formInfo', formObj);
      return res.data;
    })
    .finally(() => {
      loading.value = false;
    });
}
// æ›´æ–°åœºæ™¯
function updateScene() {
  return sceneApi.updateScene(sceneObj.value).then(() => {
    emit('update:scene', sceneObj);
  });
}
function submit() {
  updateScene();
  return createOrupdateSubScene();
}
function cancel() {
  emit('onCancel');
}
watch(
  () => props.formInfo,
  (nValue) => {
    if (nValue) {
      formObj.value = nValue;
      formObj.value._timeRange = [
        new Date(formObj.value.csStartTime),
        new Date(formObj.value.csEndTime)
      ];
    }
  },
  { deep: false, immediate: true }
);
watch(
  () => props.scene,
  (nValue) => {
    if (nValue) {
      sceneObj.value = nValue;
    }
  },
  { deep: false, immediate: true }
);
</script>
src/views/fysp/scene/CompSceneConstructionInfo.vue
@@ -1,5 +1,12 @@
<!-- å·¥åœ°ä¸“属信息编辑 -->
<template>
  <BaseSceneInfo
    ref="baseSceneInfo"
    :scene="scene"
    :formInfo="formInfo"
    :scene-type="sceneType"
  >
    <template #form-items>
  <el-form
    v-show="showStyle == 'form'"
    :inline="false"
@@ -53,7 +60,11 @@
      />
    </el-form-item>
    <el-form-item label="占地面积" prop="csFloorSpace">
      <el-input clearable v-model="formObj.csFloorSpace" placeholder="占地面积">
          <el-input
            clearable
            v-model="formObj.csFloorSpace"
            placeholder="占地面积"
          >
        <template #append>㎡</template>
      </el-input>
    </el-form-item>
@@ -162,7 +173,8 @@
      <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"
@@ -196,18 +208,15 @@
        v-model="formObj.csProjectType"
        placeholder="工程类型"
    /></el-descriptions-item>
    <!-- <el-descriptions-item label="建设状态"
      ><el-select
        v-model="formObj.csStatus"
        placeholder="建设状态"
      >
        <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>
    <el-descriptions-item label="施工阶段"
      ><el-select
        v-model="formObj.siExtension1"
@@ -362,13 +371,14 @@
    ></el-descriptions-item> -->
  </el-descriptions>
</template>
  </BaseSceneInfo>
</template>
<script setup>
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';
import BaseSceneInfo from './BaseSceneInfo.vue';
const props = defineProps({
  scene: Object,
@@ -433,37 +443,9 @@
  ]
});
// åˆ›å»ºæˆ–更新场景详情
function createOrupdateSubScene() {
  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) => {
      emit('onSubmit', formObj);
      emit('update:formInfo', formObj);
      return res.data;
    })
    .finally(() => {
      loading.value = false;
    });
}
// æ›´æ–°åœºæ™¯
function updateScene() {
  return sceneApi.updateScene(sceneObj.value).then(() => {
    emit('update:scene', sceneObj);
  });
}
const baseSceneInfo = ref(null);
function submit() {
  updateScene();
  return createOrupdateSubScene();
  return baseSceneInfo.value.submit();
}
function cancel() {
src/views/fysp/scene/CompSceneMixingPlantInfo.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,338 @@
<!-- æ…拌站专属信息编辑 -->
<template>
  <BaseSceneInfo ref="baseSceneInfo" :scene="scene" :formInfo="formInfo" :scene-type="sceneType">
    <template #form-items>
      <el-form
        v-show="showStyle == 'form'"
        :inline="false"
        :model="formObj"
        ref="formRef"
        :rules="rules"
        label-position="right"
        label-width="150px"
      >
        <!-- <el-form-item label="运营状态" prop="mpStatus">
      <el-select v-model="formObj.mpStatus" 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="mpFloorSpace">
          <el-input
            clearable
            v-model="formObj.mpFloorSpace"
            placeholder="占地面积"
          >
            <template #append>㎡</template>
          </el-input>
        </el-form-item>
        <el-form-item label="规划面积" prop="mpPlanningArea">
          <el-input
            clearable
            v-model="formObj.mpPlanningArea"
            placeholder="规划面积"
          >
            <template #append>㎡</template>
          </el-input>
        </el-form-item>
        <el-form-item label="业主单位" prop="mpEmployerUnit">
          <el-input
            clearable
            v-model="formObj.mpEmployerUnit"
            placeholder="业主单位"
          />
        </el-form-item>
        <el-form-item label="业主单位联系人" prop="mpEmployerContacts">
          <el-input
            clearable
            v-model="formObj.mpEmployerContacts"
            placeholder="业主单位联系人"
          />
        </el-form-item>
        <el-form-item
          label="业主单位联系电话"
          prop="mpEmployerContactsTel"
          class="input-with-select"
        >
          <el-input
            clearable
            type="tel"
            v-model="formObj.mpEmployerContactsTel"
            placeholder="业主单位联系电话"
          >
            <template #prepend>
              <el-icon><Iphone /></el-icon>
            </template>
          </el-input>
        </el-form-item>
        <el-form-item label="是否为绿色环保站厂" prop="mpGreenPlant">
          <el-select
            v-model="formObj.mpGreenPlant"
            placeholder="是否为绿色环保站厂"
          >
            <el-option
              v-for="s in [
                { value: false, label: '否' },
                { value: true, label: '是' }
              ]"
              :key="s.value"
              :label="s.label"
              :value="s.value"
            />
          </el-select>
        </el-form-item>
        <el-form-item label="是否为文明场站" prop="mpCivillyPlant">
          <el-select
            v-model="formObj.mpCivillyPlant"
            placeholder="是否为文明场站"
          >
            <el-option
              v-for="s in [
                { value: false, label: '否' },
                { value: true, label: '是' }
              ]"
              :key="s.value"
              :label="s.label"
              :value="s.value"
            />
          </el-select>
        </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 #title>
          <el-text tag="h1">{{ title }}</el-text>
        </template>
        <template #extra>
          <el-button
            :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.mpFloorSpace"
              placeholder="占地面积"
            >
              <template #append>㎡</template>
            </el-input></el-descriptions-item
          >
          <el-descriptions-item label="规划面积"
            ><el-input
              :size="fontSize"
              clearable
              v-model="formObj.mpPlanningArea"
              placeholder="规划面积"
            >
              <template #append>㎡</template>
            </el-input></el-descriptions-item
          >
          <el-descriptions-item label="业主单位">
            <el-input
              clearable
              v-model="formObj.mpEmployerUnit"
              placeholder="业主单位"
            />
          </el-descriptions-item>
          <el-descriptions-item label="业主单位联系人">
            <el-input
              clearable
              v-model="formObj.mpEmployerContacts"
              placeholder="业主单位联系人"
            />
          </el-descriptions-item>
          <el-descriptions-item
            label="业主单位联系电话"
            prop="mpEmployerContactsTel"
            class="input-with-select"
            :span="2"
          >
            <el-input
              clearable
              type="tel"
              v-model="formObj.mpEmployerContactsTel"
              placeholder="业主单位联系电话"
            >
              <template #prepend>
                <el-icon><Iphone /></el-icon>
              </template>
            </el-input>
          </el-descriptions-item>
          <el-descriptions-item label="是否为绿色环保站厂">
            <el-select
              v-model="formObj.mpGreenPlant"
              placeholder="是否为绿色环保站厂"
            >
              <el-option
                v-for="s in [
                  { value: false, label: '否' },
                  { value: true, label: '是' }
                ]"
                :key="s.value"
                :label="s.label"
                :value="s.value"
              />
            </el-select>
          </el-descriptions-item>
          <el-descriptions-item label="是否为文明场站">
            <el-select
              v-model="formObj.mpCivillyPlant"
              placeholder="是否为文明场站"
            >
              <el-option
                v-for="s in [
                  { value: false, label: '否' },
                  { value: true, label: '是' }
                ]"
                :key="s.value"
                :label="s.label"
                :value="s.value"
              />
            </el-select>
          </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="项目负责人"
            ><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>
    </template>
  </BaseSceneInfo>
</template>
<script setup>
import { reactive, ref, watch, computed } from 'vue';
import { useFormConfirm } from '@/composables/formConfirm';
import BaseSceneInfo from './BaseSceneInfo.vue';
const props = defineProps({
  scene: Object,
  //工地额外信息
  formInfo: Object,
  //场景类型:工地
  sceneType: {
    type: Number,
    default: 1
  },
  // å±•示样式 form:表单;descriptions:描述列表
  showStyle: {
    type: String,
    default: 'descriptions'
    // default:'form'
  },
  title: String
});
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
  },
  cancel: {
    do: cancel
  }
});
const ignoreEdit = computed(() => props.showStyle == 'descriptions');
const loading = ref(false);
const status = reactive([]);
const rules = reactive({});
const baseSceneInfo = ref(null);
function submit() {
  return baseSceneInfo.value.submit()
}
function cancel() {
  emit('onCancel');
}
watch(
  () => props.formInfo,
  (nValue) => {
    if (nValue) {
      formObj.value = nValue;
    }
  },
  { deep: false, immediate: true }
);
watch(
  () => props.scene,
  (nValue) => {
    if (nValue) {
      sceneObj.value = nValue;
    }
  },
  { deep: false, immediate: true }
);
</script>
<style>
/* .input-with-select .el-input-group__prepend {
  background-color: var(--el-fill-color-blank);
} */
.sub-title {
  font-size: var(--el-font-size-large);
  margin-bottom: 20px;
  margin-left: 20px;
}
</style>
src/views/fysp/scene/CompSceneWharfInfo.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,305 @@
<!-- ç å¤´ä¸“属信息编辑 -->
<template>
  <BaseSceneInfo ref="baseSceneInfo" :scene="scene" :formInfo="formInfo" :scene-type="sceneType">
    <template #form-items>
      <el-form
        v-show="showStyle == 'form'"
        :inline="false"
        :model="formObj"
        ref="formRef"
        :rules="rules"
        label-position="right"
        label-width="150px"
      >
        <el-form-item label="类型" prop="wProjectType">
          <el-input
            clearable
            v-model="formObj.wProjectType"
            placeholder="类型"
          />
        </el-form-item>
        <!-- <el-form-item label="运营状态" prop="wStatus">
      <el-select v-model="formObj.wStatus" 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="wEmployerUnit">
          <el-input
            clearable
            v-model="formObj.wEmployerUnit"
            placeholder="业主单位"
          />
        </el-form-item>
        <el-form-item label="业主单位联系人" prop="wEmployerContacts">
          <el-input
            clearable
            v-model="formObj.wEmployerContacts"
            placeholder="业主单位联系人"
          />
        </el-form-item>
        <el-form-item
          label="业主单位联系电话"
          prop="wEmployerContactsTel"
          class="input-with-select"
        >
          <el-input
            clearable
            type="tel"
            v-model="formObj.wEmployerContactsTel"
            placeholder="业主单位联系电话"
          >
            <template #prepend>
              <el-icon><Iphone /></el-icon>
            </template>
          </el-input>
        </el-form-item>
        <el-form-item label="租赁单位" prop="wRentUnit">
          <el-input
            clearable
            v-model="formObj.wRentUnit"
            placeholder="租赁单位"
          />
        </el-form-item>
        <el-form-item label="租赁单位联系人" prop="wRentContacts">
          <el-input
            clearable
            v-model="formObj.wRentContacts"
            placeholder="租赁单位联系人"
          />
        </el-form-item>
        <el-form-item label="租赁单位联系人电话" prop="wRentContactsTel">
          <el-input
            clearable
            type="tel"
            v-model="formObj.wRentContactsTel"
            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 #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="类型" :span="2"
          ><el-input
            :size="fontSize"
            clearable
            v-model="formObj.wProjectType"
            placeholder="类型"
        /></el-descriptions-item>
        <el-descriptions-item label="占地面积"
          ><el-input
            :size="fontSize"
            clearable
            v-model="formObj.wFloorSpace"
            placeholder="占地面积"
          >
            <template #append>㎡</template>
          </el-input></el-descriptions-item
        >
        <el-descriptions-item label="规划面积"
          ><el-input
            :size="fontSize"
            clearable
            v-model="formObj.wPlanningArea"
            placeholder="规划面积"
          >
            <template #append>㎡</template>
          </el-input></el-descriptions-item
        >
        <el-descriptions-item label="业主单位">
          <el-input
            clearable
            v-model="formObj.wEmployerUnit"
            placeholder="业主单位"
          />
        </el-descriptions-item>
        <el-descriptions-item label="业主单位联系人">
          <el-input
            clearable
            v-model="formObj.wEmployerContacts"
            placeholder="业主单位联系人"
          />
        </el-descriptions-item>
        <el-descriptions-item
          label="业主单位联系电话"
          prop="mpEmployerContactsTel"
          class="input-with-select"
          :span="2"
        >
          <el-input
            clearable
            type="tel"
            v-model="formObj.wEmployerContactsTel"
            placeholder="业主单位联系电话"
          >
            <template #prepend>
              <el-icon><Iphone /></el-icon>
            </template>
          </el-input>
        </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="项目负责人"
          ><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.wRentUnit"
            placeholder="租赁单位"
        /></el-descriptions-item>
      </el-descriptions>
    </template>
  </BaseSceneInfo>
</template>
<script setup>
import { reactive, ref, watch, computed } from 'vue';
import { useFormConfirm } from '@/composables/formConfirm';
import BaseSceneInfo from './BaseSceneInfo.vue';
const props = defineProps({
  scene: Object,
  //工地额外信息
  formInfo: Object,
  //场景类型:工地
  sceneType: {
    type: Number,
    default: 1
  },
  // å±•示样式 form:表单;descriptions:描述列表
  showStyle: {
    type: String,
    default: 'descriptions'
    // default:'form'
  },
  title: String
});
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
  },
  cancel: {
    do: cancel
  }
});
const ignoreEdit = computed(() => props.showStyle == 'descriptions');
const loading = ref(false);
const status = reactive([]);
const rules = reactive({});
const baseSceneInfo = ref(null);
function submit() {
  return baseSceneInfo.value.submit()
}
function cancel() {
  emit('onCancel');
}
watch(
  () => props.formInfo,
  (nValue) => {
    if (nValue) {
      formObj.value = nValue;
    }
  },
  { deep: false, immediate: true }
);
watch(
  () => props.scene,
  (nValue) => {
    if (nValue) {
      sceneObj.value = nValue;
    }
  },
  { deep: false, immediate: true }
);
</script>
<style>
/* .input-with-select .el-input-group__prepend {
  background-color: var(--el-fill-color-blank);
} */
.sub-title {
  font-size: var(--el-font-size-large);
  margin-bottom: 20px;
  margin-left: 20px;
}
</style>