dom转word

This commit is contained in:
Teo
2025-07-04 19:57:23 +08:00
parent 7f5300b4f4
commit d1cf9a1a74
10 changed files with 13842 additions and 189 deletions

View File

@ -5,14 +5,14 @@
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="模板类型" prop="projectType">
<el-select v-model="queryParams.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 v-model="queryParams.projectType" placeholder="请选择模板类型" clearable filterable @change="selectType">
<el-option v-for="item in projectTypeOptions" :key="item.name" :label="item.name" :value="item.name"> </el-option>
</el-select>
</el-form-item>
<el-form-item>
<!-- <el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form-item> -->
</el-form>
</el-card>
</div>
@ -25,11 +25,11 @@
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['quality:qualityInspection:edit']"
>修改</el-button
>
</el-col>
</el-col> -->
<el-col :span="1.5">
<el-button
type="danger"
@ -48,23 +48,29 @@
</el-row>
</template>
<!-- card body -->
<Contactform v-if="queryParams.projectType == '0'" @selection-change="handleSelectionChange"></Contactform>
<EngineeringChangeApplicationForm
v-if="queryParams.projectType == '1'"
<Contactform
v-if="queryParams.projectType == '联系单'"
@selection-change="handleSelectionChange"
:data="tableData"
@delete="handleDelete"
></Contactform>
<EngineeringChangeApplicationForm
v-if="queryParams.projectType == '工程变更申请单'"
@selection-change="handleSelectionChange"
:data="tableData"
@delete="handleDelete"
></EngineeringChangeApplicationForm>
<Notice v-if="queryParams.projectType == '2'" @selection-change="handleSelectionChange"></Notice>
<Notice v-if="queryParams.projectType == '2'" @selection-change="handleSelectionChange" :data="tableData"></Notice>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
</el-card>
<el-dialog title="新增模板" v-model="dialogVisible" width="800">
<el-form :model="form" :rules="rules" ref="formRef" label-width="110px">
<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'">
<!-- <img :src="thumbnailUrl" alt="" style="width: 150px;" /> -->
<div><image-preview :src="thumbnailUrl" width="150px"></image-preview></div>
<div v-if="queryParams.projectType == '联系单'">
<el-form-item label="工程名称" prop="projectName">
<el-input v-model="form.projectName" placeholder="请输入工程名称" />
</el-form-item>
@ -106,7 +112,7 @@
<el-date-picker v-model="form.ownerDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
</div>
<div v-if="queryParams.projectType === '1'">
<div v-if="queryParams.projectType === '工程变更申请单'">
<el-form-item label="工程名称">
<el-input v-model="form.projectName" />
</el-form-item>
@ -156,42 +162,42 @@
<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 label="项目经理" prop="asupervisorLeader">
<el-input v-model="form.asupervisorLeader" 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 label="日期" prop="asupervisorDate">
<el-date-picker v-model="form.asupervisorDate" 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 label="项目技术负责人" prop="bsupervisorLeader">
<el-input v-model="form.bsupervisorLeader" 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 label="日期" prop="bsupervisorDate">
<el-date-picker v-model="form.bsupervisorDate" 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 label="设计代表" prop="csupervisorLeader">
<el-input v-model="form.csupervisorLeader" 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 label="日期" prop="csupervisorDate">
<el-date-picker v-model="form.csupervisorDate" 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 label="监理工程师" prop="dsupervisorLeader">
<el-input v-model="form.dsupervisorLeader" placeholder="请输入监理工程师姓名" />
</el-form-item>
<el-form-item label="总监理工程师" prop="supervisorLeader">
<el-input v-model="form.supervisorLeader" placeholder="请输入总监理工程师姓名" />
<el-form-item label="总监理工程师" prop="dasupervisorLeader">
<el-input v-model="form.dasupervisorLeader" 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 label="日期" prop="dsupervisorDate">
<el-date-picker v-model="form.dsupervisorDate" 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 label="负责人" prop="esupervisorLeader">
<el-input v-model="form.esupervisorLeader" 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 label="日期" prop="esupervisorDate">
<el-date-picker v-model="form.esupervisorDate" type="date" placeholder="选择日期" style="width: 100%" />
</el-form-item>
</div>
<div v-if="queryParams.projectType === '2'">
@ -255,6 +261,8 @@ 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';
import { listContactTypeformtemplate } from '@/api/cory/contactformtemplate';
import { addContactnotice, delContactnotice, listContactnotice } from '@/api/cory/contactnotice';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
// 获取用户 store
@ -266,6 +274,9 @@ const { safety_inspection_violation_type, safety_inspection_check_type } = toRef
);
const teamOpt = ref([]);
const foremanOpt = ref([]);
const thumbnailUrl = ref('');
const tableData = ref([]);
const total = ref(0);
const formRef = ref<FormInstance>();
const dialogVisible = ref<boolean>(false);
@ -275,7 +286,7 @@ const addSingle = ref<boolean>(false);
const single = ref<boolean>(true);
const ids = ref<Array<string | number>>([]);
const projectTypeOptions = [
const projectTypeOptions = ref<any>([
{
value: '0',
label: '联系单'
@ -296,11 +307,9 @@ const projectTypeOptions = [
value: '4',
label: '签证单'
}
];
]);
const initFormData = {
id: undefined,
projectId: currentProject.value?.id,
projectType: '',
projectName: '',
serialNumber: '',
@ -333,8 +342,9 @@ const data = reactive<PageData<any, any>>({
inspectionType: undefined,
inspectionStatus: undefined,
teamId: undefined,
type: undefined,
params: {},
projectType: '0'
projectType: undefined
},
rules: {
projectName: [{ required: true, message: '请输入工程名称', trigger: 'blur' }],
@ -349,9 +359,21 @@ const data = reactive<PageData<any, any>>({
const { queryParams, form, rules } = toRefs(data);
const submitForm = () => {
formRef.value?.validate((valid) => {
formRef.value?.validate(async (valid) => {
if (valid) {
let data = {
type: queryParams.value.type,
projectId: currentProject.value?.id,
detail: JSON.stringify(form.value)
};
console.log('提交表单:', form);
const res = await addContactnotice(data);
if (res.code == 200) {
proxy.$modal.msgSuccess('添加成功');
dialogVisible.value = false;
formRef.value.resetFields();
getList();
}
}
});
};
@ -371,8 +393,35 @@ const changeForeman = (value: string | number) => {
const handleQuery = () => {};
const resetQuery = () => {};
const getList = () => {};
const handleDelete = () => {};
const getList = async () => {
console.log(queryParams.value.projectType);
if (!queryParams.value.projectType) {
const res = await listContactTypeformtemplate(queryParams.value);
projectTypeOptions.value = res.data;
queryParams.value.projectType = res.data[0].name;
thumbnailUrl.value = res.data[0].thumbnail;
queryParams.value.type = res.data[0].id as string;
}
const res = await listContactnotice(queryParams.value);
res.rows = res.rows.map((item) => {
return {
...item,
...JSON.parse(item.detail)
};
});
tableData.value = res.rows;
total.value = res.total || 0;
};
const handleDelete = async (id?: string) => {
const _ids = id || ids.value;
await proxy?.$modal.confirm('是否确认删除识别记录编号为"' + _ids + '"的数据项?').finally();
const res = await delContactnotice(_ids);
if (res.code == 200) {
proxy.$modal.msgSuccess('删除成功');
getList();
}
};
const handleUpdate = () => {};
/** 多选框选中数据 */
@ -382,7 +431,18 @@ const handleSelectionChange = (selection: any) => {
multiple.value = !selection.length;
};
const selectType = (value: string) => {
queryParams.value.projectType = value;
thumbnailUrl.value = projectTypeOptions.value.filter((item) => item.name == value)[0].thumbnail;
queryParams.value.type = projectTypeOptions.value.filter((item) => item.name == value)[0].id;
getList();
};
const resetForm = () => {
formRef.value?.resetFields();
};
onMounted(() => {
getList();
});
</script>