联系单模板

This commit is contained in:
Teo
2025-07-03 20:52:22 +08:00
parent d698245da5
commit f9d1f4144f
10 changed files with 839 additions and 143 deletions

View File

@ -53,150 +53,190 @@
v-if="queryParams.projectType == '1'"
@selection-change="handleSelectionChange"
></EngineeringChangeApplicationForm>
<Notice v-if="queryParams.projectType == '2'" @selection-change="handleSelectionChange"></Notice>
</el-card>
<el-dialog title="新增模板" v-model="dialogVisible" width="800">
<el-form :model="form" :rules="rules" ref="formRef" label-width="110px">
<!-- <el-form-item label="模板类型" prop="projectType">
<el-select v-model="form.projectType" value-key="" placeholder="请选择模板类型" clearable filterable @change="">
<el-option v-for="item in projectTypeOptions" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</el-form-item> -->
<div class="flex">
<img
src="http://58.17.134.85:9000/xinnengyuan-dev/contactNotice/2025/07/03/2e735c2fda06492bb31342656fde1004.png"
alt=""
style="width: 150px"
/>
<div v-if="queryParams.projectType == '0'">
<el-form-item label="工程名称" prop="projectName">
<el-input v-model="form.projectName" placeholder="请输入工程名称" />
</el-form-item>
<el-form-item label="编号" prop="serialNumber">
<el-input v-model="form.serialNumber" placeholder="请输入编号" />
</el-form-item>
<el-form-item label="致" prop="to">
<el-input v-model="form.to" placeholder="致:" />
</el-form-item>
<el-form-item label="主题" prop="subject">
<el-input v-model="form.subject" placeholder="请输入主题" />
</el-form-item>
<el-form-item label="内容" prop="content">
<el-input v-model="form.content" type="textarea" :rows="6" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="附件" prop="attachments">
<file-upload v-model="form.attachments" :limit="1" :file-type="['pdf', 'png', 'jpg', 'jpeg', 'gif', 'bmp']"></file-upload>
</el-form-item>
<el-divider class="mb-10! mt-10!">施工项目部</el-divider>
<el-form-item label="项目负责人" prop="contractorLeader">
<el-input v-model="form.contractorLeader" placeholder="请输入负责人姓名" />
</el-form-item>
<el-form-item label="日期" prop="contractorDate">
<el-date-picker v-model="form.contractorDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
<el-divider class="mb-10! mt-10!">项目监理机构</el-divider>
<div v-if="queryParams.projectType == '0'">
<el-form-item label="工程名称" prop="projectName">
<el-input v-model="form.projectName" placeholder="请输入工程名称" />
</el-form-item>
<el-form-item label="编号" prop="serialNumber">
<el-input v-model="form.serialNumber" placeholder="请输入编号" />
</el-form-item>
<el-form-item label="" prop="to">
<el-input v-model="form.to" placeholder="致:" />
</el-form-item>
<el-form-item label="主题" prop="subject">
<el-input v-model="form.subject" placeholder="请输入主题" />
</el-form-item>
<el-form-item label="内容" prop="content">
<el-input v-model="form.content" type="textarea" :rows="6" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="附件" prop="attachments">
<file-upload v-model="form.attachments" :limit="1" :file-type="['pdf', 'png', 'jpg', 'jpeg', 'gif', 'bmp']"></file-upload>
</el-form-item>
<el-divider class="mb-10! mt-10!">施工项目部</el-divider>
<el-form-item label="项目负责人" prop="contractorLeader">
<el-input v-model="form.contractorLeader" placeholder="请输入负责人姓名" />
</el-form-item>
<el-form-item label="日期" prop="contractorDate">
<el-date-picker v-model="form.contractorDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
<el-divider class="mb-10! mt-10!">项目监理机构</el-divider>
<el-form-item label="总监理工程师" prop="supervisorLeader">
<el-input v-model="form.supervisorLeader" placeholder="请输入总监理工程师姓名" />
</el-form-item>
<el-form-item label="日期" prop="supervisorDate">
<el-date-picker v-model="form.supervisorDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
<el-divider class="mb-10! mt-10!">建设单位</el-divider>
<el-form-item label="业主代表" prop="ownerRep">
<el-input v-model="form.ownerRep" placeholder="请输入业主代表" />
</el-form-item>
<el-form-item label="日期" prop="ownerDate">
<el-date-picker v-model="form.ownerDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
</div>
<div v-if="queryParams.projectType === '1'">
<el-form-item label="工程名称">
<el-input v-model="form.projectName" />
</el-form-item>
<el-form-item label="总监理工程师" prop="supervisorLeader">
<el-input v-model="form.supervisorLeader" placeholder="请输入总监理工程师姓名" />
</el-form-item>
<el-form-item label="日期" prop="supervisorDate">
<el-date-picker v-model="form.supervisorDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
<el-divider class="mb-10! mt-10!">建设单位</el-divider>
<el-form-item label="业主代表" prop="ownerRep">
<el-input v-model="form.ownerRep" placeholder="请输入业主代表" />
</el-form-item>
<el-form-item label="日期" prop="ownerDate">
<el-date-picker v-model="form.ownerDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
</div>
<el-form-item label="提出单位">
<el-input v-model="form.unitName" />
</el-form-item>
<!-- <el-form-item>
<el-button type="primary" @click="submitForm">提交</el-button>
<el-button @click="resetForm">重置</el-button>
</el-form-item> -->
<div v-if="queryParams.projectType === '1'">
<el-form-item label="工程名称">
<el-input v-model="form.projectName" />
</el-form-item>
<el-form-item label="专业">
<el-input v-model="form.profession" />
</el-form-item>
<el-form-item label="提出单位">
<el-input v-model="form.unitName" />
</el-form-item>
<el-form-item label="提出日期">
<el-date-picker v-model="form.applyDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
<el-form-item label="专业">
<el-input v-model="form.profession" />
</el-form-item>
<el-form-item label="卷册名称">
<el-input v-model="form.bookName" />
</el-form-item>
<el-form-item label="提出日期">
<el-date-picker v-model="form.applyDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
<el-form-item label="卷册号">
<el-input v-model="form.bookNo" />
</el-form-item>
<el-form-item label="卷册名称">
<el-input v-model="form.bookName" />
</el-form-item>
<el-form-item label="附图">
<image-upload v-model="form.hasAttachment"></image-upload>
</el-form-item>
<el-form-item label="卷册号">
<el-input v-model="form.bookNo" />
</el-form-item>
<el-form-item label="变更原因">
<el-checkbox-group v-model="form.changeReasons">
<el-checkbox label="设计漏项" class="w45%" />
<el-checkbox label="设计改进" />
<el-checkbox label="设计差错" class="w45%" />
<el-checkbox label="接口差错" />
<el-checkbox label="业主要求" class="w45%" />
<el-checkbox label="施工承包商要求" />
<el-checkbox label="外部资料不符" class="w45%" />
<el-checkbox label="材料代用或其他" />
</el-checkbox-group>
</el-form-item>
<el-form-item label="附图">
<image-upload v-model="form.hasAttachment"></image-upload>
</el-form-item>
<el-form-item label="变更内容">
<el-input v-model="form.changeContent" />
</el-form-item>
<el-form-item label="变更原因">
<el-checkbox-group v-model="form.changeReasons">
<el-checkbox label="设计漏项" class="w45%" />
<el-checkbox label="设计改进" />
<el-checkbox label="设计差错" class="w45%" />
<el-checkbox label="接口差错" />
<el-checkbox label="业主要求" class="w45%" />
<el-checkbox label="施工承包商要求" />
<el-checkbox label="外部资料不符" class="w45%" />
<el-checkbox label="材料代用或其他" />
</el-checkbox-group>
</el-form-item>
<el-form-item label="变更内容">
<el-input v-model="form.changeContent" />
</el-form-item>
<el-form-item label="变更费用估算">
<el-input v-model="form.costEstimate" />
</el-form-item>
<el-divider class="mb-10! mt-10!">施工承包单位</el-divider>
<el-form-item label="项目经理" prop="supervisorLeader">
<el-input v-model="form.supervisorLeader" placeholder="请输入项目经理姓名" />
</el-form-item>
<el-form-item label="日期" prop="supervisorDate">
<el-date-picker v-model="form.supervisorDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
<el-divider class="mb-10! mt-10!">总承包单位</el-divider>
<el-form-item label="项目技术负责人" prop="supervisorLeader">
<el-input v-model="form.supervisorLeader" placeholder="请输入项目技术负责人姓名" />
</el-form-item>
<el-form-item label="日期" prop="supervisorDate">
<el-date-picker v-model="form.supervisorDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
<el-divider class="mb-10! mt-10!">单位</el-divider>
<el-form-item label="设计代表" prop="supervisorLeader">
<el-input v-model="form.supervisorLeader" placeholder="请输入设计代表姓名" />
</el-form-item>
<el-form-item label="日期" prop="supervisorDate">
<el-date-picker v-model="form.supervisorDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
<el-divider class="mb-10! mt-10!">项目监理单位</el-divider>
<el-form-item label="监理工程师" prop="supervisorLeader">
<el-input v-model="form.supervisorLeader" placeholder="请输入监理工程师姓名" />
</el-form-item>
<el-form-item label="总监理工程师" prop="supervisorLeader">
<el-input v-model="form.supervisorLeader" placeholder="请输入总监理工程师姓名" />
</el-form-item>
<el-form-item label="日期" prop="supervisorDate">
<el-date-picker v-model="form.supervisorDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
<el-divider class="mb-10! mt-10!">建设单位</el-divider>
<el-form-item label="负责人" prop="supervisorLeader">
<el-input v-model="form.supervisorLeader" placeholder="请输入负责人姓名" />
</el-form-item>
<el-form-item label="日期" prop="supervisorDate">
<el-date-picker v-model="form.supervisorDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
<el-form-item label="变更费用估算">
<el-input v-model="form.costEstimate" />
</el-form-item>
<el-divider class="mb-10! mt-10!">施工承包单位</el-divider>
<el-form-item label="项目经理" prop="supervisorLeader">
<el-input v-model="form.supervisorLeader" placeholder="请输入项目经理姓名" />
</el-form-item>
<el-form-item label="日期" prop="supervisorDate">
<el-date-picker v-model="form.supervisorDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
<el-divider class="mb-10! mt-10!">总承包单位</el-divider>
<el-form-item label="项目技术负责人" prop="supervisorLeader">
<el-input v-model="form.supervisorLeader" placeholder="请输入项目技术负责人姓名" />
</el-form-item>
<el-form-item label="日期" prop="supervisorDate">
<el-date-picker v-model="form.supervisorDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
<el-divider class="mb-10! mt-10!">设计单位</el-divider>
<el-form-item label="设计代表" prop="supervisorLeader">
<el-input v-model="form.supervisorLeader" placeholder="请输入设计代表姓名" />
</el-form-item>
<el-form-item label="日期" prop="supervisorDate">
<el-date-picker v-model="form.supervisorDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
<el-divider class="mb-10! mt-10!">项目监理单位</el-divider>
<el-form-item label="监理工程师" prop="supervisorLeader">
<el-input v-model="form.supervisorLeader" placeholder="请输入监理工程师姓名" />
</el-form-item>
<el-form-item label="总监理工程师" prop="supervisorLeader">
<el-input v-model="form.supervisorLeader" placeholder="请输入总监理工程师姓名" />
</el-form-item>
<el-form-item label="日期" prop="supervisorDate">
<el-date-picker v-model="form.supervisorDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
<el-divider class="mb-10! mt-10!">设单位</el-divider>
<el-form-item label="负责人" prop="supervisorLeader">
<el-input v-model="form.supervisorLeader" placeholder="请输入负责人姓名" />
</el-form-item>
<el-form-item label="日期" prop="supervisorDate">
<el-date-picker v-model="form.supervisorDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
</div>
<div v-if="queryParams.projectType === '2'">
<el-form-item label="检查类型" prop="checkType">
<el-select v-model="form.checkType" placeholder="请选择检查类型">
<el-option v-for="dict in safety_inspection_check_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="违章类型" prop="violationType">
<el-select v-model="form.violationType" placeholder="选择违章类型">
<el-option v-for="dict in safety_inspection_violation_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="巡检结果" prop="inspectionResult">
<el-input v-model="form.inspectionResult" placeholder="请输入巡检结果" />
</el-form-item>
<el-form-item label="整改班组" prop="teamId">
<el-select v-model="form.teamId" placeholder="请选择整改班组">
<el-option v-for="item in teamOpt" :key="item.value" :label="item.label" :value="item.value" @click="changeForeman(item.value)" />
</el-select>
</el-form-item>
<el-form-item label="整改人" prop="correctorId">
<el-select v-model="form.correctorId" placeholder="请选择整改人" :disabled="!form.teamId">
<el-option v-for="item in foremanOpt" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="问题隐患" prop="hiddenDanger">
<el-input v-model="form.hiddenDanger" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="整改措施" prop="measure">
<el-input v-model="form.measure" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="要求整改期限" prop="checkTime">
<el-date-picker clearable v-model="form.rectificationDeadline" type="date" value-format="YYYY-MM-DD" placeholder="选择要求整改期限" />
</el-form-item>
<el-form-item label="检查附件" prop="checkFile">
<file-upload v-model="form.checkFile" :file-size="20" :file-type="['doc', 'docx', 'pdf', 'png', 'jpg', 'jpeg']" />
</el-form-item>
<el-form-item label="整改附件" prop="rectificationFile">
<file-upload v-model="form.rectificationFile" :file-size="20" :file-type="['doc', 'docx', 'pdf', 'png', 'jpg', 'jpeg']" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</div>
</div>
</el-form>
<template #footer>
@ -214,12 +254,18 @@ import { useUserStoreHook } from '@/store/modules/user';
import type { FormInstance, FormRules } from 'element-plus';
import Contactform from './components/contactform.vue';
import EngineeringChangeApplicationForm from './components/engineeringChangeApplicationForm.vue';
import Notice from './components/notice.vue';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
// 获取用户 store
const userStore = useUserStoreHook();
// 从 store 中获取项目列表和当前选中的项目
const currentProject = computed(() => userStore.selectedProject);
const { safety_inspection_violation_type, safety_inspection_check_type } = toRefs<any>(
proxy?.useDict('safety_inspection_violation_type', 'safety_inspection_check_type')
);
const teamOpt = ref([]);
const foremanOpt = ref([]);
const formRef = ref<FormInstance>();
const dialogVisible = ref<boolean>(false);
@ -244,7 +290,7 @@ const projectTypeOptions = [
},
{
value: '3',
label: '变更单'
label: '回复单'
},
{
value: '4',
@ -314,6 +360,15 @@ const handleAdd = () => {
dialogVisible.value = true;
};
const changeForeman = (value: string | number) => {
// const team = teamList.value.filter((team) => team.id === value)[0];
// foremanOpt.value = team.foremanList?.map((foreman: foremanQuery) => ({
// label: foreman.foremanName,
// value: foreman.foremanId
// }));
// form.value.correctorId = '';
};
const handleQuery = () => {};
const resetQuery = () => {};
const getList = () => {};