From 5be9679fb4288936b576cf3d1f1548af1c4151b8 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期一, 21 七月 2025 15:31:21 +0800
Subject: [PATCH] 2025.7.21 任务管理-监管地图功能(待完成)
---
src/views/fysp/scene/CompSceneConstructionInfo.vue | 274 +++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 255 insertions(+), 19 deletions(-)
diff --git a/src/views/fysp/scene/CompSceneConstructionInfo.vue b/src/views/fysp/scene/CompSceneConstructionInfo.vue
index 2eae0ba..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,10 +477,21 @@
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>
--
Gitblit v1.9.3