This commit is contained in:
zmj 2024-03-29 18:06:52 +08:00
parent d15cb6e327
commit ad76547862
23 changed files with 311 additions and 105 deletions
src
components/formTable
layout/default/components/header
views
financial_department_income_settlement
financial_expense_reimbursement
financial_fee_application
financial_using_funds
supervision_construction_management_personnel
supervision_inspection
supervision_large_equipment
supervision_monitoring_equipment
supervision_participating_units
supervision_participating_units_qualifications
supervision_safety_management_personnel
supervision_side_station
supervision_special_operation_personnel
task_allocation
task_type

@ -6,27 +6,41 @@
<el-table :data="formData">
<el-table-column label="操作" v-if="config?.deleteApi">
<template #default="{ row }">
<el-button @click="handleAdd">+</el-button>
<el-button @click="handleDelete(row)">-</el-button>
<el-form-item label-width="0">
<el-button @click="handleAdd">+</el-button>
<el-button @click="handleDelete(row)">-</el-button>
</el-form-item>
</template>
</el-table-column>
<slot></slot>
<el-table-column :label="item.label" v-for="(item, index) in config.tableConfig" :key="index"
:prop="item[value]">
<template #default="{ row }">
<el-select v-model="row[item.value]" v-if="item.select">
<el-option v-for="items in (Array.isArray(item.select) ? item.select : dictData[item.select])"
:label="items.name" :value="items.value"></el-option>
</el-select>
<!-- 下拉框 -->
<el-form-item v-if="item.select" label-width="0">
<el-select v-model="row[item.value]">
<el-option v-for="items in (Array.isArray(item.select) ? item.select : dictData[item.select])"
:label="items.name" :value="items.value"></el-option>
</el-select>
</el-form-item>
<el-date-picker class="flex-1 !flex" v-model="row[item.value]" clearable value-format="YYYY-MM-DD"
placeholder="请选择日期" v-else-if="item.date">
</el-date-picker>
<!-- 时间框 -->
<el-form-item v-else-if="item.date" :prop="item.check ? item.value : ''" label-width="0">
<el-date-picker class="flex-1 !flex" v-model="row[item.value]" clearable value-format="YYYY-MM-DD"
placeholder="请选择日期">
</el-date-picker>
</el-form-item>
<el-input v-model="row[item.value]" v-else-if="item.label.includes('单位')"
@input="row[item.value] = row[item.value].replace(/\d+/g, '')" />
<el-input v-model="row[item.value]" v-else :type="item.type == 'number' ? 'number' : 'text'" />
<el-form-item v-else-if="item.label.includes('单位')" :prop="item.check ? item.value : ''"
label-width="0">
<el-input v-model="row[item.value]"
@input="row[item.value] = row[item.value].replace(/\d+/g, '')" />
</el-form-item>
<el-form-item :prop="item.check ? item.value : ''" v-else label-width="0">
<el-input v-model="row[item.value]" :type="item.type == 'number' ? 'number' : 'text'" />
</el-form-item>
</template>
</el-table-column>
<template #empty>

@ -6,7 +6,7 @@
{{ item.name }}
</div> -->
<div class="mr-5 cursor-pointer flex items-center flex-col transition-all duration-300 h-28 "
@click="menuClick(item.id)" v-for="(item, index) in menuList" v-show="item.paths != 'workbench'">
@click="menuClick(item)" v-for="(item, index) in menuList" v-show="item.paths != 'workbench'">
<el-image class="w-[35px] h-[35px] mb-[5px]"
:src="menuName == item.name ? getImgById(item.id)?.actImg : getImgById(item.id)?.img" />
{{ item.name }}
@ -22,9 +22,12 @@ const userStore = useUserStore()
const menuList = reactive([])
const menuName = ref('')
const menuClick = (id) => {
userStore.getUserInfoByID(id)
localStorage.setItem('menuId', id);
const menuClick = async (item) => {
userStore.getUserInfoByID(item.id)
localStorage.setItem('menuId', item.id);
await nextTick()
menuName.value = item.name
}
getUserInfo().then(res => {

@ -99,14 +99,20 @@ const tableConfig = reactive(
{
label: "预算分成金额",
value: 'amount',
type: 'number'
},
{
label: "结算金额",
value: 'settlement_amount',
type: 'number'
},
{
label: "结算单号",
value: 'settlement_code',
type: 'number'
},
{
label: "备注",

@ -168,6 +168,8 @@ const tableConfig = reactive(
{
label: "金额",
value: 'amount',
type: 'number'
},
{
label: "摘要",

@ -119,9 +119,11 @@ const tableConfig = reactive(
{
label: "票据张数",
value: 'bill_num',
type: 'number'
},
{
label: "申请金额",
type: 'number',
value: 'amount',
},
{

@ -96,6 +96,7 @@ import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import detailConfig from './detail'
import { deptLists } from "@/api/org/department"
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')

@ -49,14 +49,14 @@
</el-col>
<el-col :span="8">
<el-form-item label="发证日期1">
<el-form-item label="发证日期1" prop="get_date_one">
<el-date-picker class="flex-1 !flex" v-model="formData.get_date_one" clearable
value-format="YYYY-MM-DD " placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="有效日期1">
<el-form-item label="有效日期1" prop="effective_date_one">
<el-date-picker class="flex-1 !flex" v-model="formData.effective_date_one" clearable
value-format="YYYY-MM-DD " placeholder="选择日期">
</el-date-picker>
@ -90,14 +90,14 @@
</el-col>
<el-col :span="8">
<el-form-item label="发证日期2">
<el-form-item label="发证日期2" prop="get_date_two">
<el-date-picker class="flex-1 !flex" v-model="formData.get_date_two" clearable
value-format="YYYY-MM-DD " placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="有效日期2">
<el-form-item label="有效日期2" prop="effective_date_two">
<el-date-picker class="flex-1 !flex" v-model="formData.effective_date_two" clearable
value-format="YYYY-MM-DD " placeholder="选择日期">
</el-date-picker>
@ -191,6 +191,26 @@ const formData = reactive({
create_time: "",
});
const chekcDate = (rule: any, value: any, callback: any) => {
if (new Date(formData.effective_date_one) < new Date(formData.get_date_one)) {
callback(new Error('有效日期不能早于发证日期'))
} else {
callback()
}
}
const chekcDate1 = (rule: any, value: any, callback: any) => {
if (new Date(formData.effective_date_two) < new Date(formData.get_date_two)) {
callback(new Error('有效日期不能早于发证日期'))
} else {
callback()
}
}
const customEvent1 = (e) => {
formData.unit_qualification_id = e.id;
formData.company_name = e.company_name;
@ -275,6 +295,10 @@ const formRules = reactive<any>({
message: "请输入有效日期1",
trigger: ["blur"],
},
{
validator: chekcDate,
trigger: ['blur']
}
],
qualification_one_status: [
{
@ -317,6 +341,10 @@ const formRules = reactive<any>({
message: "请输入有效日期2",
trigger: ["blur"],
},
{
validator: chekcDate1,
trigger: ['blur']
}
],
qualification_two_status: [
{

@ -1,7 +1,6 @@
<template>
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit"
@close="handleClose">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
<el-row>
<el-col :span="8">
@ -17,10 +16,9 @@
</el-col>
<el-col :span="8">
<el-form-item label="巡视类型" prop="inspection_type">
<el-select class="flex-1" v-model="formData.inspection_type" clearable
placeholder="请选择巡视类型">
<el-option v-for="(item, index) in dictData.inspection_type" :key="index"
:label="item.name" :value="item.value" />
<el-select class="flex-1" v-model="formData.inspection_type" clearable placeholder="请选择巡视类型">
<el-option v-for="(item, index) in dictData.inspection_type" :key="index" :label="item.name"
:value="item.value" />
</el-select>
</el-form-item>
</el-col>
@ -117,8 +115,8 @@
<div v-if="showDialog1">
<el-dialog v-model="showDialog1" width="70%" :title="flag ? '检查表单' : '选择施工单位'">
<dialogTable :config="supervision_check_item" @customEvent="customEvents"
:query="{ project_id: formData.project_id, node_type: flag ? '' : 2 }"
:multipleChoice="flag"></dialogTable>
:query="{ project_id: formData.project_id, node_type: flag ? '' : 2 }" :multipleChoice="flag">
</dialogTable>
</el-dialog>
</div>
<div v-if="showDialog2">
@ -308,6 +306,15 @@ const customEvent1 = (e) => {
showDialog2.value = false
}
const chekcDate = (rule: any, value: any, callback: any) => {
if (new Date(formData.end_time) < new Date(formData.start_time)) {
callback(new Error('巡视结束时间早于巡视开始时间'))
} else {
callback()
}
}
//
const formRules = reactive<any>({
@ -355,6 +362,10 @@ const formRules = reactive<any>({
required: true,
message: '请输入巡视结束时间',
trigger: ['blur']
},
{
validator: chekcDate,
trigger: ['blur']
}],
inspection_user: [{
required: true,

@ -175,6 +175,23 @@ const customEvent1 = (e) => {
showDialog1.value = false;
};
const chekcDate = (rule: any, value: any, callback: any) => {
if (new Date(formData.effective_date_one) < new Date(formData.get_date_one)) {
callback(new Error('有效日期不能早于发证日期'))
} else {
callback()
}
}
const chekcDate1 = (rule: any, value: any, callback: any) => {
if (new Date(formData.qualification_two_status) < new Date(formData.get_date_two)) {
callback(new Error('有效日期不能早于发证日期'))
} else {
callback()
}
}
//
const formRules = reactive<any>({
unit_qualification_id: [
@ -225,6 +242,10 @@ const formRules = reactive<any>({
message: "请输入有效日期1",
trigger: ["blur"],
},
{
validator: chekcDate,
trigger: ['blur']
}
],
qualification_one_status: [
{
@ -267,6 +288,10 @@ const formRules = reactive<any>({
message: "请输入有效日期2",
trigger: ["blur"],
},
{
validator: chekcDate1,
trigger: ['blur']
}
],
qualification_two_status: [
{

@ -1,7 +1,6 @@
<template>
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
@close="handleClose">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
<el-form-item label="项目名称" prop="project_name">
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
@ -20,9 +19,9 @@
<el-input v-model="formData.device_sn" clearable placeholder="请输入设备序列号" />
</el-form-item>
<el-form-item label="编号" prop="number">
<el-input v-model="formData.number" clearable placeholder="请输入编号" />
<el-input v-model="formData.number" clearable placeholder="请输入编号" v-type="'code'" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-form-item label="备注">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
</el-form-item>
<el-dialog v-model="showDialog" title="选择项目" width="70%">

@ -64,7 +64,7 @@
<el-table-column label="设备序列号" prop="device_sn" show-overflow-tooltip />
<el-table-column label="编号" prop="number" show-overflow-tooltip />
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<el-table-column label="操作" width="170" fixed="right">
<template #default="{ row }">
<el-button v-perms="['supervision_project.supervision_monitoring_equipment/edit']"
type="primary" link @click="handleEdit(row)">

@ -1,7 +1,6 @@
<template>
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit"
@close="handleClose">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-row>
<el-col :span="8">
@ -64,6 +63,10 @@ import {
} from "@/api/supervision_participating_units_contacts";
import { supervision_project } from "@/components/dialogTable/dialogTableConfig";
import type { PropType } from "vue";
import { checkPhone, checkEmail } from "@/utils/validate"
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
@ -111,15 +114,19 @@ const tableConfig = reactive(
},
{
label: "办公电话",
value: 'telephone'
value: 'telephone',
type: 'number'
},
{
label: "手机号码",
value: 'mobile'
value: 'mobile',
check: true
},
{
label: "电子邮箱",
value: 'email'
value: 'email',
check: true
},
{
label: "传真",
@ -172,6 +179,25 @@ const formRules = reactive<any>({
message: "请输入联系电话",
trigger: ["blur"],
},
{
validator: checkPhone,
trigger: ["blur"],
},
],
mobile: [
{
validator: checkPhone,
trigger: ["blur"],
},
],
email: [
{
validator: checkEmail,
trigger: ["blur"],
},
],
duty: [
{

@ -44,7 +44,7 @@
<el-table-column label="资质等级" prop="qualification_grade" show-overflow-tooltip />
<el-table-column label="联系电话" prop="telephone" show-overflow-tooltip />
<el-table-column label="责任范围" prop="duty" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<el-table-column label="操作" width="170" fixed="right">
<template #default="{ row }">
<el-button v-perms="['supervision_project.supervision_participating_units/edit']" type="primary"
link @click="handleEdit(row)">

@ -1,5 +1,5 @@
const detailConfig = {
title: "工程监理--第一次工地会议",
title: "工程监理--参建单位资质",
config: [
{
label: "项目名称",

@ -21,7 +21,7 @@
placeholder="选择签订日期">
</el-date-picker>
</el-form-item>
<el-form-item label="有效日期">
<el-form-item label="有效日期" prop="effective_date">
<el-date-picker class="flex-1 !flex" v-model="formData.effective_date" clearable
value-format="YYYY-MM-DD " placeholder="选择签订日期">
</el-date-picker>
@ -95,6 +95,17 @@ const formData = reactive({
remark: '',
annex: [],
})
const chekcDate = (rule: any, value: any, callback: any) => {
if (new Date(formData.effective_date) < new Date(formData.get_date)) {
callback(new Error('有效日期不能早于发证日期'))
} else {
callback()
}
}
const customEvent = (e) => {
formData.project_id = e.id
formData.project_name = e.project_name
@ -135,7 +146,10 @@ const formRules = reactive<any>({
}],
effective_date: [{
required: true,
message: '请输入有效日期',
trigger: ['blur']
},
{
validator: chekcDate,
trigger: ['blur']
}],
qualification_status: [{

@ -45,7 +45,7 @@
<el-table-column label="有效日期" prop="effective_date" show-overflow-tooltip />
<el-table-column label="资质状态" prop="qualification_status_text" show-overflow-tooltip />
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<el-table-column label="操作" width="170" fixed="right">
<template #default="{ row }">
<el-button
v-perms="['supervision_qualification_review.supervision_participating_units_qualifications/edit']"

@ -1,5 +1,5 @@
const detailConfig = {
title: "工程监理--施工管理人员",
title: "工程监理--安全管理人员",
config: [
{
label: "所属单位",

@ -1,7 +1,6 @@
<template>
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="60vw" @confirm="handleSubmit"
@close="handleClose">
<popup ref="popupRef" :title="popupTitle" :async="true" width="60vw" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-row>
<el-col :span="8">
@ -45,7 +44,8 @@
</el-col>
<el-col :span="8">
<el-form-item label="资质编号1" prop="qualification_number_one">
<el-input v-model="formData.qualification_number_one" clearable placeholder="请输入资质编号1" />
<el-input v-model="formData.qualification_number_one" clearable placeholder="请输入资质编号1"
v-type="'code'" />
</el-form-item>
</el-col>
@ -85,7 +85,8 @@
</el-col>
<el-col :span="8">
<el-form-item label="资质编号2" prop="qualification_number_two">
<el-input v-model="formData.qualification_number_two" clearable placeholder="请输入资质编号2" />
<el-input v-model="formData.qualification_number_two" clearable placeholder="请输入资质编号2"
v-type="'code'" />
</el-form-item>
</el-col>
@ -128,8 +129,7 @@
<div v-if="showDialog1">
<el-dialog v-model="showDialog1" title="选择单位" width="70%">
<dialogTable :config="supervision_participating_units_qualifications"
@customEvent="customEvent1">
<dialogTable :config="supervision_participating_units_qualifications" @customEvent="customEvent1">
</dialogTable>
</el-dialog>
</div>
@ -144,6 +144,7 @@ import Popup from '@/components/popup/index.vue'
import { apiSupervisionSafetyManagementPersonnelAdd, apiSupervisionSafetyManagementPersonnelEdit, } from '@/api/supervision_safety_management_personnel'
import { supervision_participating_units_qualifications } from "@/components/dialogTable/dialogTableConfig"
import type { PropType } from 'vue'
import { checkIdcard } from "@/utils/validate"
defineProps({
@ -171,7 +172,7 @@ const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
//
const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑工程监理--施工管理人员' : '新增工程监理--施工管理人员'
return mode.value == 'edit' ? '编辑工程监理--安全管理人员' : '新增工程监理--安全管理人员'
})
//
@ -227,11 +228,17 @@ const formRules = reactive<any>({
message: '请输入所属单位',
trigger: ['blur']
}],
id_card: [{
required: true,
message: '请输入身份证',
trigger: ['blur']
}],
id_card: [
{
required: true,
message: '请输入身份证',
trigger: ['blur']
},
{
validator: checkIdcard,
trigger: ['blur']
}
],
technical_title: [{
required: true,
message: '请输入技术职称',

@ -57,7 +57,7 @@
<el-table-column label="资质2状态 " prop="qualification_two_status_text" show-overflow-tooltip />
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
<el-table-column label="创建人" prop="create_user" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<el-table-column label="操作" width="170" fixed="right">
<template #default="{ row }">
<el-button
v-perms="['supervision_qualification_review.supervision_safety_management_personnel/edit']"

@ -1,7 +1,6 @@
<template>
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit"
@close="handleClose">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
<el-row>
<el-col :span="8">
@ -17,8 +16,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="旁站类型" prop="side_station_type">
<el-select class="flex-1" v-model="formData.side_station_type" clearable
placeholder="请选择巡视类型">
<el-select class="flex-1" v-model="formData.side_station_type" clearable placeholder="请选择巡视类型">
<el-option v-for="(item, index) in dictData.side_station_type" :key="index"
:label="item.name" :value="item.value" />
</el-select>
@ -80,8 +78,7 @@
<el-row>
<el-col :span="8">
<el-form-item label="旁站" prop="side_station_result">
<el-select v-model="formData.side_station_result" clearable placeholder="请选择"
class="flex-1">
<el-select v-model="formData.side_station_result" clearable placeholder="请选择" class="flex-1">
<el-option label="完成" value="0" />
<el-option label="交班" value="1" />
</el-select>
@ -116,8 +113,8 @@
<div v-if="showDialog1">
<el-dialog v-model="showDialog1" width="70%" :title="flag ? '检查表单' : '选择施工单位'">
<dialogTable :config="supervision_check_item" @customEvent="customEvents"
:query="{ project_id: formData.project_id, node_type: flag ? '' : 2 }"
:multipleChoice="flag"></dialogTable>
:query="{ project_id: formData.project_id, node_type: flag ? '' : 2 }" :multipleChoice="flag">
</dialogTable>
</el-dialog>
</div>
<div v-if="showDialog2">
@ -319,6 +316,15 @@ const customEvent1 = (e) => {
}
const chekcDate = (rule: any, value: any, callback: any) => {
if (new Date(formData.end_time) < new Date(formData.start_time)) {
callback(new Error('旁站结束时间不能早于旁站开始时间'))
} else {
callback()
}
}
//
const formRules = reactive<any>({
project_id: [{
@ -360,6 +366,10 @@ const formRules = reactive<any>({
required: true,
message: '请输入旁站结束时间',
trigger: ['blur']
},
{
validator: chekcDate,
trigger: ['blur']
}],
workers: [{
required: true,

@ -1,7 +1,6 @@
<template>
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
@close="handleClose">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules" :disabled="mode == 'detail'">
<el-form-item label="所属单位" prop="unit_qualification_id">
@ -98,6 +97,14 @@ const formData = reactive({
})
const chekcDate = (rule: any, value: any, callback: any) => {
if (new Date(formData.leave_time) < new Date(formData.enter_time)) {
callback(new Error('离场时间不能早于进场时间'))
} else {
callback()
}
}
const customEvent1 = (e) => {
formData.unit_qualification_id = e.id
formData.company_name = e.company_name
@ -142,6 +149,10 @@ const formRules = reactive<any>({
required: true,
message: '请输入离场时间',
trigger: ['blur']
},
{
validator: chekcDate,
trigger: ['blur']
}],
status: [{
required: true,

@ -57,134 +57,175 @@
</template>
<el-table-column label="序号" width="150px">
<template #default="{ row }">
<el-button @click="handleAdd()">+</el-button>
<el-button @click="handleDelete(row)">-</el-button>
<el-form-item label-width="0">
<el-button @click="handleAdd()">+</el-button>
<el-button @click="handleDelete(row)">-</el-button>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="任务名称" prop="task_name" width="200px">
<template #default="scope">
<el-input v-model="scope.row.task_name" readonly
@click="showDialog1 = true, tableIndex = scope.$index" placeholder="点击选择" />
<el-form-item label-width="0">
<el-input v-model="scope.row.task_name" readonly
@click="showDialog1 = true, tableIndex = scope.$index" placeholder="点击选择" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="任务次级" prop="level" width="200px">
<template #default="{ row }">
<el-input v-model="row.level" />
<el-form-item label-width="0">
<el-input v-model="row.level" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="工序" prop="process" width="200px">
<template #default="{ row }">
<el-input v-model="row.process" />
<el-form-item label-width="0">
<el-input v-model="row.process" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="任务类型" prop="task_type_id" width="200px">
<template #default="{ row }">
<el-select class="flex-1" v-model="row.task_type_id" clearable placeholder="请选择任务类型">
<el-option v-for="(item, index) in dictData.task_type" :key="index" :label="item.name"
:value="parseInt(item.value)" />
</el-select>
<el-form-item label-width="0">
<el-select class="flex-1" v-model="row.task_type_id" clearable placeholder="请选择任务类型">
<el-option v-for="(item, index) in dictData.task_type" :key="index"
:label="item.name" :value="parseInt(item.value)" />
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="专业类型" prop="professional_type" width="200px">
<template #default="{ row }">
<el-select class="flex-1" v-model="row.professional_type" clearable placeholder="请选择专业类型">
<el-option v-for="(item, index) in dictData.major_type" :key="index" :label="item.name"
:value="item.value" />
</el-select>
<el-form-item label-width="0">
<el-select class="flex-1" v-model="row.professional_type" clearable
placeholder="请选择专业类型">
<el-option v-for="(item, index) in dictData.major_type" :key="index"
:label="item.name" :value="item.value" />
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="工程师" prop="engineer" width="200px">
<template #default="scope">
<el-input v-model="scope.row.engineer" @click="userclick(scope.$index, 'engineer')" />
<el-form-item label-width="0">
<el-input v-model="scope.row.engineer" @click="userclick(scope.$index, 'engineer')" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="一级审核人" prop="first_reviewer" width="200px">
<template #default="scope">
<el-input v-model="scope.row.first_reviewer"
@click="userclick(scope.$index, 'first_reviewer')" />
<el-form-item label-width="0">
<el-input v-model="scope.row.first_reviewer"
@click="userclick(scope.$index, 'first_reviewer')" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="二级审核人" prop="secondary_reviewer" width="200px">
<template #default="scope">
<el-input v-model="scope.row.secondary_reviewer"
@click="userclick(scope.$index, 'secondary_reviewer')" />
<el-form-item label-width="0">
<el-input v-model="scope.row.secondary_reviewer"
@click="userclick(scope.$index, 'secondary_reviewer')" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="三级审核人" prop="third_level_reviewer" width="200px">
<template #default="scope">
<el-input v-model="scope.row.third_level_reviewer"
@click="userclick(scope.$index, 'third_level_reviewer')" />
<el-form-item label-width="0">
<el-input v-model="scope.row.third_level_reviewer"
@click="userclick(scope.$index, 'third_level_reviewer')" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="天数" prop="days" width="200px">
<template #default="{ row }">
<el-input v-model="row.days" type="number" />
<el-form-item label-width="0">
<el-input v-model="row.days" type="number" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="开始日期" prop="start_date" width="220px">
<template #default="{ row }">
<el-date-picker v-model="row.start_date" clearable type="date" value-format="YYYY-MM-DD"
placeholder="请选择日期">
</el-date-picker>
<el-form-item label-width="0">
<el-date-picker v-model="row.start_date" clearable type="date" value-format="YYYY-MM-DD"
placeholder="请选择日期">
</el-date-picker>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="结束日期" prop="end_date" width="220px">
<template #default="{ row }">
<el-date-picker v-model="row.end_date" clearable type="date" value-format="YYYY-MM-DD"
placeholder="请选择日期">
</el-date-picker>
<el-form-item label-width="0">
<el-date-picker v-model="row.end_date" clearable type="date" value-format="YYYY-MM-DD"
placeholder="请选择日期">
</el-date-picker>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="中标金额(元)" prop="bid_winning_amount" width="200px">
<template #default="{ row }">
<el-input v-model="row.bid_winning_amount" type="number" />
<el-form-item label-width="0">
<el-input v-model="row.bid_winning_amount" type="number" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="送审造价(元)" prop="cost" width="200px">
<template #default="{ row }">
<el-input v-model="row.cost" type="number" />
<el-form-item label-width="0">
<el-input v-model="row.cost" type="number" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="第三方核定金额(元)" prop="approved_amount" width="200px">
<template #default="{ row }">
<el-input v-model="row.approved_amount" type="number" />
<el-form-item label-width="0">
<el-input v-model="row.approved_amount" type="number" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="施工单位" prop="construction_unit" width="200px">
<template #default="{ row }">
<el-input v-model="row.construction_unit" />
<el-form-item label-width="0">
<el-input v-model="row.construction_unit" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="联系人" prop="contact" width="200px">
<template #default="{ row }">
<el-input v-model="row.contact" />
<el-form-item label-width="0">
<el-input v-model="row.contact" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="联系电话" prop="contact_phone" width="200px">
<template #default="{ row }">
<el-input v-model="row.contact_phone" v-type="'phone'" />
<el-form-item label-width="0" prop="contact_phone">
<el-input v-model="row.contact_phone" v-type="'phone'" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="备注" prop="remark" width="200px">
<template #default="{ row }">
<el-input v-model="row.remark" />
<el-form-item label-width="0">
<el-input v-model="row.remark" />
</el-form-item>
</template>
</el-table-column>
</el-table>
@ -200,10 +241,10 @@ import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiTaskAllocationAdd, apiTaskAllocationEdit, } from '@/api/task_allocation'
import { apiTaskDetailDelete } from '@/api/task_detail'
import { cost_project, task_type } from "@/components/dialogTable/dialogTableConfig"
import type { PropType } from 'vue'
import { timeFormat } from '@/utils/util'
import { checkPhone } from '@/utils/validate'
defineProps({
dictData: {
@ -315,7 +356,13 @@ const submituser = (e: any) => {
//
const formRules = reactive<any>({
contact_phone: [
{
validator: checkPhone,
trigger: ["blur"],
},
],
})

@ -54,7 +54,7 @@
</el-table-column>
<el-table-column label="任务级次" prop="level" show-overflow-tooltip />
<el-table-column label="备注" prop="remarks" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<el-table-column label="操作" width="170" fixed="right">
<template #default="{ row }">
<el-button v-perms="['task.task_type/edit']" type="primary" link @click="handleEdit(row)">
编辑