This commit is contained in:
2025-09-02 19:14:34 +08:00
16 changed files with 243 additions and 152 deletions

View File

@ -75,3 +75,11 @@ export const inventoryList = (id: any) => {
method: 'get'
});
};
//获取材料表信息
export const getMaterialInfo = (id: any) => {
return request({
url: '/materials/materials/listByFormCode/' + id,
method: 'get'
});
};

View File

@ -26,11 +26,11 @@
<el-tooltip effect="dark" placement="bottom">
<ProjectSelector />
</el-tooltip>
<!-- <el-tooltip content="搜索" effect="dark" placement="bottom">
<el-tooltip content="搜索" effect="dark" placement="bottom">
<div class="right-menu-item hover-effect" @click="openSearchMenu">
<svg-icon class-name="search-icon" icon-class="search" />
</div>
</el-tooltip> -->
</el-tooltip>
<!-- 消息 -->
<el-tooltip :content="proxy.$t('navbar.message')" effect="dark" placement="bottom">
<div>

View File

@ -5,7 +5,7 @@
<el-form :model="queryForm" :inline="true">
<el-form-item label="版本号" prop="versions">
<el-select v-model="queryForm.versions" placeholder="选择版本号" @change="changeVersions">
<el-option v-for="item in options" :key="item.id" :label="item.versions" :value="item.id" />
<el-option v-for="item in options" :key="item.id" :label="item.versions" :value="item.versions" />
</el-select>
</el-form-item>
<el-form-item label="表名" prop="sheet">

View File

@ -138,9 +138,14 @@
<el-table-column prop="useQuantity" label="剩余量" align="center">
<template #default="scope">
{{
(scope.row.quantity ? Number(scope.row.quantity) : 0) - (scope.row.useQuantity ? Number(scope.row.useQuantity) : 0) == 0
(scope.row.quantity ? Number(scope.row.quantity) : 0) -
(scope.row.useQuantity ? Number(scope.row.useQuantity) : 0) -
(scope.row.selectNum ? Number(scope.row.selectNum) : 0) ==
0
? ''
: (scope.row.quantity ? Number(scope.row.quantity) : 0) - (scope.row.useQuantity ? Number(scope.row.useQuantity) : 0)
: (scope.row.quantity ? Number(scope.row.quantity) : 0) -
(scope.row.selectNum ? Number(scope.row.selectNum) : 0) -
(scope.row.useQuantity ? Number(scope.row.useQuantity) : 0)
}}
</template>
</el-table-column>
@ -149,12 +154,16 @@
<el-table-column prop="price" label="总价" align="center">
<template #default="scope">
{{
((scope.row.quantity ? Number(scope.row.quantity) : 0) - (scope.row.useQuantity ? Number(scope.row.useQuantity) : 0)) *
((scope.row.quantity ? Number(scope.row.quantity) : 0) -
(scope.row.useQuantity ? Number(scope.row.useQuantity) : 0) -
(scope.row.selectNum ? Number(scope.row.selectNum) : 0)) *
Number(scope.row.unitPrice) ==
0
? ''
: (
((scope.row.quantity ? Number(scope.row.quantity) : 0) - (scope.row.useQuantity ? Number(scope.row.useQuantity) : 0)) *
((scope.row.quantity ? Number(scope.row.quantity) : 0) -
(scope.row.useQuantity ? Number(scope.row.useQuantity) : 0) -
(scope.row.selectNum ? Number(scope.row.selectNum) : 0)) *
Number(scope.row.unitPrice)
).toFixed(2)
}}

View File

@ -124,7 +124,7 @@ const loading = ref(false);
const options = ref<any[]>([]);
const sheets = ref<any[]>([]);
const tableData = ref<any[]>([]);
const isExpandAll = ref(false);
const isExpandAll = ref(true);
const reviewStatus = ref('');
const versionObj: any = ref({});
const versionMap = new Map();

View File

@ -65,7 +65,7 @@
>
<el-row :gutter="8" class="items-top">
<!-- 1. 专业选择核心统一所有角色的专业来源 -->
<el-col :span="3" class="mb-4 sm:mb-0 pl-4" style="margin-top:8px;">
<el-col :span="3" class="mb-4 sm:mb-0 pl-4" style="margin-top: 8px">
<el-form-item
:prop="`designers.${configIndex}.userMajor`"
:rules="[
@ -76,7 +76,8 @@
label-width="60px"
label="专业"
>
<el-select filterable
<el-select
filterable
v-model="form.designers[configIndex].userMajor"
placeholder="请选择专业"
class="w-full transition-all duration-300 border-gray-300"
@ -109,7 +110,8 @@
label="设计"
label-width="50px"
>
<el-select filterable
<el-select
filterable
v-model="person.userId"
placeholder="选择人员"
class="w-full transition-all duration-300 border-gray-300"
@ -165,7 +167,8 @@
label="校审"
label-width="50px"
>
<el-select filterable
<el-select
filterable
v-model="person.userId"
placeholder="选择人员"
class="w-full transition-all duration-300 border-gray-300"
@ -221,7 +224,8 @@
label="审定"
label-width="50px"
>
<el-select filterable
<el-select
filterable
v-model="person.userId"
placeholder="选择人员"
class="w-full transition-all duration-300 border-gray-300"
@ -277,7 +281,8 @@
label="审核"
label-width="50px"
>
<el-select filterable
<el-select
filterable
v-model="person.userId"
placeholder="选择人员"
class="w-full transition-all duration-300 border-gray-300"
@ -318,7 +323,7 @@
</el-col>
<!-- 操作列 -->
<el-col :span="2" class="text-right pr-4">
<el-col :span="2" class="pr-4 mt-2 text-right">
<el-button
type="text"
class="text-red-500 hover:text-red-700 transition-colors"

View File

@ -81,7 +81,7 @@
<el-table v-loading="loading" :data="formalitiesAreConsolidatedList" @selection-change="handleSelectionChange" row-key="id" default-expand-all>
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="手续办理清单模板父级" align="center" prop="formalitiesPname" /> -->
<el-table-column label="手续办理清单" align="center" prop="formalitiesName" />
<el-table-column label="手续办理清单" align="left" prop="formalitiesName" />
<el-table-column label="计划开始时间" align="center" prop="planTheStartTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.planTheStartTime, '{y}-{m}-{d}') }}</span>

View File

@ -1,13 +1,11 @@
<template>
<div class="p-2">
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
:leave-active-class="proxy?.animate.searchAnimate.leave">
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="auto">
<el-form-item label="材料名称" prop="materialsName">
<el-input v-model="queryParams.materialsName" placeholder="请输入材料名称" clearable
@keyup.enter="handleQuery" />
<el-input v-model="queryParams.materialsName" placeholder="请输入材料名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="材料提供商" prop="companyId">
<el-select v-model="queryParams.companyId" clearable placeholder="全部">
@ -27,22 +25,20 @@
<template #header>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['materials:materials:add']"> 新增
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['materials:materials:add']"> 新增 </el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['materials:materials:edit']"
>修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
v-hasPermi="['materials:materials:edit']">修改
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['materials:materials:remove']"
>删除
</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
v-hasPermi="['materials:materials:remove']">删除
</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport"
v-hasPermi="['materials:materials:export']">导出 </el-button>
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['materials:materials:export']">导出 </el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -72,25 +68,28 @@
<el-table-column fixed="right" label="操作" align="center" class-name="small-padding fixed-width" width="320">
<template #default="scope">
<el-space>
<el-button link type="primary" icon="View" @click="handleShowDrawer(scope.row)"
v-hasPermi="['materials:materials:query']">
<el-button link type="primary" icon="View" @click="handleShowDrawer(scope.row)" v-hasPermi="['materials:materials:query']">
详情
</el-button>
<el-button link type="success" icon="Edit" @click="handleUpdate(scope.row)"
v-hasPermi="['materials:materials:edit']"> 修改 </el-button>
<el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)"
v-hasPermi="['materials:materials:remove']">
<el-button link type="success" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['materials:materials:edit']"> 修改 </el-button>
<el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['materials:materials:remove']">
删除
</el-button>
<el-button v-hasPermi="['materials:materialsInventory:edit']" link type="primary" icon="Plus"
@click="handleAddMaterialsInventory(scope.row)"> 出入库 </el-button>
<el-button
v-hasPermi="['materials:materialsInventory:edit']"
link
type="primary"
icon="Plus"
@click="handleAddMaterialsInventory(scope.row)"
>
出入库
</el-button>
</el-space>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="getList" />
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
</el-card>
<!-- 添加或修改材料名称对话框 -->
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
@ -121,12 +120,17 @@
<el-form-item label="材料文件" prop="fileOssIdMap">
<div :key="item.value" v-for="item in materials_file_type">
<h3>{{ item.label }}</h3>
<file-upload v-model="ossIdMap[item.value]" :limit="1" :file-size="50" :file-type="['pdf']"
<file-upload
v-model="ossIdMap[item.value]"
:limit="1"
:file-size="50"
:file-type="['pdf']"
@update:model-value="
(args) => {
handleOssUpdate(args, item.value);
}
" />
"
/>
</div>
</el-form-item>
</el-form>
@ -137,8 +141,7 @@
</div>
</template>
</el-dialog>
<materials-inventory-add-dialog :materials-id="currentMaterialsId" :project-id="currentProject.id" ref="dialogRef"
@submit="getList" />
<materials-inventory-add-dialog :materials-id="currentMaterialsId" :project-id="currentProject.id" ref="dialogRef" @submit="getList" />
<el-dialog title="材料详情" v-model="showDetailDrawer" width="700px">
<materials-detail-drawer :materials-id="currentMaterialsId" />
</el-dialog>

View File

@ -73,7 +73,10 @@
<el-row>
<el-col :span="12">
<el-form-item label="表单编号" prop="formCode">
<el-input v-model="form.formCode" placeholder="请输入表单编号" />
<!-- <el-input v-model="form.formCode" placeholder="请输入表单编号" /> -->
<el-select v-model="form.formCode" placeholder="请选择表单编号" @change="(value) => formCodeChange(value)">
<el-option v-for="item in options" :key="item.formCode" :label="item.formCode" :value="item.formCode" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
@ -247,7 +250,8 @@ import {
addMaterialIssue,
updateMaterialIssue,
inventoryList,
getMaterialName
getMaterialName,
getMaterialInfo
} from '@/api/materials/materialIssue';
import { MaterialIssueVO, MaterialIssueQuery, MaterialIssueForm } from '@/api/materials/materialIssue/types';
@ -529,8 +533,27 @@ const handleAdd = () => {
dialog.title = '添加物料领料单';
// 新增时初始计算材料名称
computeMaterialName();
getFormData();
};
const options = ref([]);
//新增获取表单数据
const getFormData = async () => {
const res = await getMaterialInfo(currentProject.value.id);
if (res.code == 200) {
options.value = res.data;
}
};
const formCodeChange = (value) => {
console.log(value);
const selected = options.value.find((opt) => opt.formCode === value);
if (selected) {
form.value.materialName = selected.materialName;
form.value.orderingUnit = selected.orderingUnit;
form.value.supplierUnit = selected.supplierUnit;
optionsName.value = selected.materials;
}
};
/** 修改按钮操作 */
const handleUpdate = async (row?: MaterialIssueVO) => {
reset();
@ -682,7 +705,7 @@ watch(
onMounted(() => {
getList();
getName();
// getName();
});
// 监听项目id刷新数据
@ -692,7 +715,7 @@ const listeningProject = watch(
queryParams.value.projectId = nid;
form.value.projectId = nid;
getList();
getName();
// getName();
}
);

View File

@ -30,6 +30,9 @@
>一键全部保存</el-button
>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="toggleExpandAll">{{ isExpandAll ? '一键收起' : '一键展开' }}</el-button>
</el-form-item>
</el-form>
<right-toolbar @queryTable="getMasterDataList"></right-toolbar>
</el-row>
@ -38,6 +41,7 @@
<el-table
:data="state.tableData"
v-loading="state.loading.list"
ref="tableRef"
stripe
style="width: 100%; margin-bottom: 20px; height: calc(100vh - 230px)"
row-key="id"
@ -264,6 +268,17 @@ const formRules = reactive({
],
compileDate: [{ required: true, message: '请选择编制日期', trigger: 'change' }]
});
// 展开状态
const isExpandAll = ref(false);
const tableRef = ref(null);
// 切换展开状态
const toggleExpandAll = () => {
isExpandAll.value = !isExpandAll.value;
console.log(isExpandAll.value);
state.tableData.forEach((row) => {
tableRef.value.toggleRowExpansion(row, isExpandAll.value);
});
};
// 获取主表数据
async function getMasterDataList() {
try {

View File

@ -81,7 +81,7 @@
<el-form-item label="计划产值(元)" prop="planValue">
<el-input v-model="form.planValue" placeholder="请输入计划产值" type="number" />
</el-form-item>
<el-form-item label="计划月份(元)" prop="planMonth">
<el-form-item label="计划月份" prop="planMonth">
<el-date-picker v-model="form.planMonth" type="month" value-format="YYYY-MM" placeholder="请选择计划月份" />
</el-form-item>
<el-form-item label="产值类型" prop="valueType">

View File

@ -431,6 +431,7 @@ const handleView = async (row: LandBlockVO) => {
formM.landId = row.id;
// 打开弹窗
dialogMatrix.visible = true;
dialogMatrix.title = `关联方阵(地块:${row.landName || row.landCode}`;
};

View File

@ -10,7 +10,7 @@
<el-option v-for="item in options" :key="item.versions" :label="item.versions" :value="item.versions" />
</el-select>
</el-form-item>
<el-form-item label="表名" prop="sheet">
<el-form-item label="表名" prop="sheet" v-if="activeTab != '3'">
<el-select v-model="queryForm.sheet" placeholder="选择表名" @change="changeSheet">
<el-option v-for="item in sheets" :key="item" :label="item" :value="item" />
</el-select>

View File

@ -191,9 +191,14 @@
<el-table-column prop="useQuantity" label="剩余量" align="center">
<template #default="scope">
{{
(scope.row.quantity ? Number(scope.row.quantity) : 0) - (scope.row.useQuantity ? Number(scope.row.useQuantity) : 0) == 0
(scope.row.quantity ? Number(scope.row.quantity) : 0) -
(scope.row.useQuantity ? Number(scope.row.useQuantity) : 0) -
(scope.row.selectNum ? Number(scope.row.selectNum) : 0) ==
0
? ''
: (scope.row.quantity ? Number(scope.row.quantity) : 0) - (scope.row.useQuantity ? Number(scope.row.useQuantity) : 0)
: (scope.row.quantity ? Number(scope.row.quantity) : 0) -
(scope.row.selectNum ? Number(scope.row.selectNum) : 0) -
(scope.row.useQuantity ? Number(scope.row.useQuantity) : 0)
}}
</template>
</el-table-column>
@ -219,12 +224,16 @@
<el-table-column prop="price" label="总价" align="center">
<template #default="scope">
{{
((scope.row.quantity ? Number(scope.row.quantity) : 0) - (scope.row.useQuantity ? Number(scope.row.useQuantity) : 0)) *
((scope.row.quantity ? Number(scope.row.quantity) : 0) -
(scope.row.useQuantity ? Number(scope.row.useQuantity) : 0) -
(scope.row.selectNum ? Number(scope.row.selectNum) : 0)) *
Number(scope.row.unitPrice) ==
0
? ''
: (
((scope.row.quantity ? Number(scope.row.quantity) : 0) - (scope.row.useQuantity ? Number(scope.row.useQuantity) : 0)) *
((scope.row.quantity ? Number(scope.row.quantity) : 0) -
(scope.row.useQuantity ? Number(scope.row.useQuantity) : 0) -
(scope.row.selectNum ? Number(scope.row.selectNum) : 0)) *
Number(scope.row.unitPrice)
).toFixed(2)
}}

View File

@ -234,17 +234,17 @@
<!-- 第十一行注册人员数量仅劳务类型显示 -->
<el-row :gutter="20" class="mb-4" v-if="form.supplierType === '劳务'">
<el-col :span="12">
<el-form-item label="一建建造师" prop="build1">
<el-input v-model="form.build1" placeholder="请输入一建建造师数量" clearable />
<el-form-item label="一建建造师" prop="firstBuildingNumber">
<el-input v-model="form.firstBuildingNumber" placeholder="请输入一建建造师数量" clearable />
</el-form-item>
<el-form-item label="二建建造师" prop="build2">
<el-input v-model="form.build2" placeholder="请输入二建建造师数量" clearable />
<el-form-item label="二建建造师" prop="secondBuildingNumber">
<el-input v-model="form.secondBuildingNumber" placeholder="请输入二建建造师数量" clearable />
</el-form-item>
<el-form-item label="注册造价工程师" prop="build3">
<el-input v-model="form.build3" placeholder="请输入注册造价工程师数量" clearable />
<el-form-item label="注册造价工程师" prop="registeredEngineerNumber">
<el-input v-model="form.registeredEngineerNumber" placeholder="请输入注册造价工程师数量" clearable />
</el-form-item>
<el-form-item label="其他(分别写)" prop="build4">
<el-input v-model="form.build4" placeholder="请输入其他人员数量" clearable />
<el-form-item label="其他(分别写)" prop="otherBuildingNumber">
<el-input v-model="form.otherBuildingNumber" placeholder="请输入其他人员数量" clearable />
</el-form-item>
</el-col>
<el-col :span="12">
@ -254,17 +254,17 @@
<!-- 第十二行职称人员数量仅劳务类型显示 -->
<el-row :gutter="20" class="mb-4" v-if="form.supplierType === '劳务'">
<el-col :span="12">
<el-form-item label="高级工程师人数" prop="personnelNumber1">
<el-input v-model="form.personnelNumber1" placeholder="请输高级工程师数量" clearable />
<el-form-item label="高级工程师人数" prop="seniorEngineerNumber">
<el-input v-model="form.seniorEngineerNumber" placeholder="请输高级工程师数量" clearable />
</el-form-item>
<el-form-item label="工程师数量" prop="personnelNumber2">
<el-input v-model="form.personnelNumber2" placeholder="请输入工程师数量" clearable />
<el-form-item label="工程师数量" prop="engineerNumber">
<el-input v-model="form.engineerNumber" placeholder="请输入工程师数量" clearable />
</el-form-item>
<el-form-item label="助理工程师数量" prop="personnelNumber3">
<el-input v-model="form.personnelNumber3" placeholder="请输入助理工程师数量" clearable />
<el-form-item label="助理工程师数量" prop="assistantEngineerNumber">
<el-input v-model="form.assistantEngineerNumber" placeholder="请输入助理工程师数量" clearable />
</el-form-item>
<el-form-item label="其他人员数量" prop="personnelNumber4">
<el-input v-model="form.personnelNumber4" placeholder="请输入其他人员数量" clearable />
<el-form-item label="其他人员数量" prop="otherPersonnelNumber">
<el-input v-model="form.otherPersonnelNumber" placeholder="请输入其他人员数量" clearable />
</el-form-item>
</el-col>
<el-col :span="12">
@ -369,14 +369,14 @@ const initFormData: any = {
inputFile: undefined,
// state: '0', // 新增默认待审核
// 新增:用于表单输入的单独字段
build1: undefined, // 一建建造师
build2: undefined, // 二建建造师
build3: undefined, // 注册造价工程师
build4: undefined, // 其他注册人员
personnelNumber1: undefined, // 高级工程师
personnelNumber2: undefined, // 工程师
personnelNumber3: undefined, // 助理工程师
personnelNumber4: undefined // 其他职称人员
firstBuildingNumber: undefined, // 一建建造师
secondBuildingNumber: undefined, // 二建建造师
registeredEngineerNumber: undefined, // 注册造价工程师
otherBuildingNumber: undefined, // 其他注册人员
seniorEngineerNumber: undefined, // 高级工程师
engineerNumber: undefined, // 工程师
assistantEngineerNumber: undefined, // 助理工程师
otherPersonnelNumber: undefined // 其他职称人员
};
// 核心数据(表单+查询参数)
const data = reactive<PageData<SupplierInputForm, SupplierInputQuery>>({
@ -411,14 +411,14 @@ const rules = computed(() => {
{ pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号格式', trigger: 'blur' }
],
id: [{ required: true, message: 'ID不能为空', trigger: 'blur' }],
build1: [{ required: true, message: '请输入一建建造师数量', trigger: 'change' }],
build2: [{ required: true, message: '请输入二建建造师数量', trigger: 'change' }],
build3: [{ required: true, message: '请输入注册造价工程师数量', trigger: 'change' }],
build4: [{ required: true, message: '请输入其他数量', trigger: 'change' }],
personnelNumber1: [{ required: true, message: '请输入高级工程师数量', trigger: 'change' }],
personnelNumber2: [{ required: true, message: '请输入工程师数量', trigger: 'change' }],
personnelNumber3: [{ required: true, message: '请输入助理工程师数量', trigger: 'change' }],
personnelNumber4: [{ required: true, message: '请输入其他数量', trigger: 'change' }]
firstBuildingNumber: [{ required: true, message: '请输入一建建造师数量', trigger: 'change' }],
secondBuildingNumber: [{ required: true, message: '请输入二建建造师数量', trigger: 'change' }],
registeredEngineerNumber: [{ required: true, message: '请输入注册造价工程师数量', trigger: 'change' }],
otherBuildingNumber: [{ required: true, message: '请输入其他数量', trigger: 'change' }],
seniorEngineerNumber: [{ required: true, message: '请输入高级工程师数量', trigger: 'change' }],
engineerNumber: [{ required: true, message: '请输入工程师数量', trigger: 'change' }],
assistantEngineerNumber: [{ required: true, message: '请输入助理工程师数量', trigger: 'change' }],
otherPersonnelNumber: [{ required: true, message: '请输入其他数量', trigger: 'change' }]
};
// 仅当类型为"劳务"时,添加安全生产许可证+人员数量校验
@ -430,15 +430,15 @@ const rules = computed(() => {
safeCodeData: [{ required: true, message: '请选择安全生产许可证发证日期', trigger: 'change' }],
safeCertificateValidity: [{ required: true, message: '请选择安全生产许可证有效期', trigger: 'change' }],
// 注册人员数量校验
build1: [{ required: true, message: '请输入一建建造师数量', trigger: 'blur' }],
build2: [{ required: true, message: '请输入二建建造师数量', trigger: 'blur' }],
build3: [{ required: true, message: '请输入注册造价工程师数量', trigger: 'blur' }],
build4: [{ required: true, message: '请输入其他注册人员数量', trigger: 'blur' }],
firstBuildingNumber: [{ required: true, message: '请输入一建建造师数量', trigger: 'blur' }],
secondBuildingNumber: [{ required: true, message: '请输入二建建造师数量', trigger: 'blur' }],
registeredEngineerNumber: [{ required: true, message: '请输入注册造价工程师数量', trigger: 'blur' }],
otherBuildingNumber: [{ required: true, message: '请输入其他注册人员数量', trigger: 'blur' }],
// 职称人员数量校验
personnelNumber1: [{ required: true, message: '请输入高级工程师数量', trigger: 'blur' }],
personnelNumber2: [{ required: true, message: '请输入工程师数量', trigger: 'blur' }],
personnelNumber3: [{ required: true, message: '请输入助理工程师数量', trigger: 'blur' }],
personnelNumber4: [{ required: true, message: '请输入其他职称人员数量', trigger: 'blur' }]
seniorEngineerNumber: [{ required: true, message: '请输入高级工程师数量', trigger: 'blur' }],
engineerNumber: [{ required: true, message: '请输入工程师数量', trigger: 'blur' }],
assistantEngineerNumber: [{ required: true, message: '请输入助理工程师数量', trigger: 'blur' }],
otherPersonnelNumber: [{ required: true, message: '请输入其他职称人员数量', trigger: 'blur' }]
};
}
@ -455,22 +455,26 @@ const handleTypeChange = () => {
form.value.registeredNumber = undefined;
form.value.personnelNumber = undefined;
// 清空表单单独字段
form.value.build1 = form.value.build2 = form.value.build3 = form.value.build4 = undefined;
form.value.personnelNumber1 = form.value.personnelNumber2 = form.value.personnelNumber3 = form.value.personnelNumber4 = undefined;
form.value.firstBuildingNumber =
form.value.secondBuildingNumber =
form.value.registeredEngineerNumber =
form.value.otherBuildingNumber =
undefined;
form.value.seniorEngineerNumber = form.value.engineerNumber = form.value.assistantEngineerNumber = form.value.otherPersonnelNumber = undefined;
}
// 重置隐藏字段的校验状态,避免错误提示残留
supplierInputFormRef.value?.clearValidate([
'safeCode',
'safeCodeData',
'safeCertificateValidity',
'build1',
'build2',
'build3',
'build4',
'personnelNumber1',
'personnelNumber2',
'personnelNumber3',
'personnelNumber4'
'firstBuildingNumber',
'secondBuildingNumber',
'registeredEngineerNumber',
'otherBuildingNumber',
'seniorEngineerNumber',
'engineerNumber',
'assistantEngineerNumber',
'otherPersonnelNumber'
]);
};
@ -517,18 +521,18 @@ const resetQuery = () => {
const splitBackEndStrToForm = (resData: any) => {
if (resData.registeredNumber) {
const registeredArr = resData.registeredNumber.split(',');
form.value.build1 = registeredArr[0] || undefined; // 一建建造师
form.value.build2 = registeredArr[1] || undefined; // 二建建造师
form.value.build3 = registeredArr[2] || undefined; // 注册造价工程师
form.value.build4 = registeredArr[3] || undefined; // 其他注册人员
form.value.firstBuildingNumber = registeredArr[0] || undefined; // 一建建造师
form.value.secondBuildingNumber = registeredArr[1] || undefined; // 二建建造师
form.value.registeredEngineerNumber = registeredArr[2] || undefined; // 注册造价工程师
form.value.otherBuildingNumber = registeredArr[3] || undefined; // 其他注册人员
}
if (resData.personnelNumber) {
const personnelArr = resData.personnelNumber.split(',');
form.value.personnelNumber1 = personnelArr[0] || undefined; // 高级工程师
form.value.personnelNumber2 = personnelArr[1] || undefined; // 工程师
form.value.personnelNumber3 = personnelArr[2] || undefined; // 助理工程师
form.value.personnelNumber4 = personnelArr[3] || undefined; // 其他职称人员
form.value.seniorEngineerNumber = personnelArr[0] || undefined; // 高级工程师
form.value.engineerNumber = personnelArr[1] || undefined; // 工程师
form.value.assistantEngineerNumber = personnelArr[2] || undefined; // 助理工程师
form.value.otherPersonnelNumber = personnelArr[3] || undefined; // 其他职称人员
}
};
/** 审核过程按钮操作 */
@ -599,19 +603,23 @@ const submitForm = () => {
supplierInputFormRef.value?.validate(async (valid: boolean) => {
if (!valid) return;
if (form.value.supplierType === '劳务') {
form.value.registeredNumber = [form.value.build1, form.value.build2, form.value.build3, form.value.build4].join(',');
form.value.registeredNumber = [
form.value.firstBuildingNumber,
form.value.secondBuildingNumber,
form.value.registeredEngineerNumber,
form.value.otherBuildingNumber
].join(',');
form.value.personnelNumber = [
form.value.personnelNumber1,
form.value.personnelNumber2,
form.value.personnelNumber3,
form.value.personnelNumber4
form.value.seniorEngineerNumber,
form.value.engineerNumber,
form.value.assistantEngineerNumber,
form.value.otherPersonnelNumber
].join(',');
}
buttonLoading.value = true;
try {
if (fileUploadRef.value) {
await fileUploadRef.value.submitUpload().then((res) => {
console.log(res);
if (res == 'noFile') {
proxy?.$modal.msgError('请上传文件');
return;

View File

@ -122,41 +122,41 @@
</el-row>
<el-row class="mb-4" v-if="form.supplierType === '劳务'">
<el-col :span="12">
<el-form-item label="一建建造师" prop="build1">
<el-input v-model="form.build1" placeholder="请输入一建建造师数量" clearable />
<el-form-item label="一建建造师" prop="firstBuildingNumber">
<el-input v-model="form.firstBuildingNumber" placeholder="请输入一建建造师数量" clearable />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="二建建造师" prop="build2">
<el-input v-model="form.build2" placeholder="请输入二建建造师数量" clearable />
<el-form-item label="二建建造师" prop="secondBuildingNumber">
<el-input v-model="form.secondBuildingNumber" placeholder="请输入二建建造师数量" clearable />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="其他(分别写)" prop="build4">
<el-input v-model="form.build3" placeholder="请输入其他人员数量" clearable />
<el-form-item label="其他(分别写)" prop="otherBuildingNumber">
<el-input v-model="form.otherBuildingNumber" placeholder="请输入其他人员数量" clearable />
</el-form-item> </el-col
><el-col :span="12">
<el-form-item label="注册造价工程师" prop="build3">
<el-input v-model="form.build4" placeholder="请输入注册造价工程师数量" clearable />
<el-form-item label="注册造价工程师" prop="registeredEngineerNumber">
<el-input v-model="form.registeredEngineerNumber" placeholder="请输入注册造价工程师数量" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24" class="mb-4" v-if="form.supplierType === '劳务'">
<el-col :span="12">
<el-form-item label="高级工程师人数" prop="personnelNumber1">
<el-input v-model="form.personnelNumber1" placeholder="请输高级工程师数量" clearable />
<el-form-item label="高级工程师人数" prop="seniorEngineerNumber">
<el-input v-model="form.seniorEngineerNumber" placeholder="请输高级工程师数量" clearable />
</el-form-item> </el-col
><el-col :span="12">
<el-form-item label="工程师数量" prop="personnelNumber2">
<el-input v-model="form.personnelNumber2" placeholder="请输入工程师数量" clearable />
<el-form-item label="工程师数量" prop="engineerNumber">
<el-input v-model="form.engineerNumber" placeholder="请输入工程师数量" clearable />
</el-form-item> </el-col
><el-col :span="12">
<el-form-item label="助理工程师数量" prop="personnelNumber3">
<el-input v-model="form.personnelNumber3" placeholder="请输入助理工程师数量" clearable />
<el-form-item label="助理工程师数量" prop="assistantEngineerNumber">
<el-input v-model="form.assistantEngineerNumber" placeholder="请输入助理工程师数量" clearable />
</el-form-item> </el-col
><el-col :span="12">
<el-form-item label="其他人员数量" prop="personnelNumber4">
<el-input v-model="form.personnelNumber4" placeholder="请输入其他人员数量" clearable />
<el-form-item label="其他人员数量" prop="otherPersonnelNumber">
<el-input v-model="form.otherPersonnelNumber" placeholder="请输入其他人员数量" clearable />
</el-form-item>
</el-col>
</el-row>
@ -270,14 +270,14 @@ const initFormData = {
inputFile: undefined,
state: '0', // 新增默认待审核
// 新增:用于表单输入的单独字段
build1: undefined, // 一建建造师
build2: undefined, // 二建建造师
build3: undefined, // 注册造价工程师
build4: undefined, // 其他注册人员
personnelNumber1: undefined, // 高级工程师
personnelNumber2: undefined, // 工程师
personnelNumber3: undefined, // 助理工程师
personnelNumber4: undefined // 其他职称人员
firstBuildingNumber: undefined, // 一建建造师
secondBuildingNumber: undefined, // 二建建造师
registeredEngineerNumber: undefined, // 注册造价工程师
otherBuildingNumber: undefined, // 其他注册人员
seniorEngineerNumber: undefined, // 高级工程师
engineerNumber: undefined, // 工程师
assistantEngineerNumber: undefined, // 助理工程师
otherPersonnelNumber: undefined
};
const data = reactive<PageData<LeaveForm, LeaveQuery>>({
form: { ...initFormData },
@ -332,17 +332,27 @@ const getInfo = () => {
buttonLoading.value = false;
nextTick(async () => {
const res = await getSupplierInput(routeParams.value.id);
console.log(res, '------------------res');
Object.assign(form.value, res.data);
form.value.registeredNumber = form.value.registeredNumber?.split(',');
form.value.build1 = form.value.registeredNumber[0] || '';
form.value.build2 = form.value.registeredNumber[1] || '';
form.value.build3 = form.value.registeredNumber[2] || '';
form.value.build4 = form.value.registeredNumber[3] || '';
form.value.personnelNumber = form.value.personnelNumber?.split(',');
form.value.personnelNumber1 = form.value.personnelNumber[0] || '';
form.value.personnelNumber2 = form.value.personnelNumber[1] || '';
form.value.personnelNumber3 = form.value.personnelNumber[2] || '';
form.value.personnelNumber4 = form.value.personnelNumber[3] || '';
// form.value.firstBuildingNumber=res.data.firstBuildingNumber, // 一建建造师
// secondBuildingNumber: undefined, // 二建建造师
// registeredEngineerNumber: undefined, // 注册造价工程师
// otherBuildingNumber: undefined, // 其他注册人员
// seniorEngineerNumber: undefined, // 高级工程师
// engineerNumber: undefined, // 工程师
// assistantEngineerNumber: undefined, // 助理工程师
// otherPersonnelNumber: undefined
// form.value.registeredNumber = form.value.registeredNumber?.split(',');
// form.value.build1 = form.value.registeredNumber[0] || '';
// form.value.build2 = form.value.registeredNumber[1] || '';
// form.value.build3 = form.value.registeredNumber[2] || '';
// form.value.build4 = form.value.registeredNumber[3] || '';
// form.value.personnelNumber = form.value.personnelNumber?.split(',');
// form.value.personnelNumber1 = form.value.personnelNumber[0] || '';
// form.value.personnelNumber2 = form.value.personnelNumber[1] || '';
// form.value.personnelNumber3 = form.value.personnelNumber[2] || '';
// form.value.personnelNumber4 = form.value.personnelNumber[3] || '';
loading.value = false;
buttonLoading.value = false;