This commit is contained in:
zmj 2024-03-18 18:08:31 +08:00
parent 64c8269476
commit 99f7f48ccf
60 changed files with 2561 additions and 1198 deletions

View File

@ -21,3 +21,12 @@ export function apidistribution_project_departments(params?: any) {
return request.get({ url: '/cost_consultation_report/distribution_project_departments', params })
}
export function apiproject_schedule_statistics(params?: any) {
return request.get({ url: '/cost_consultation_report/project_schedule_statistics', params })
}
export function apiproject_commission_statistics(params?: any) {
return request.get({ url: '/cost_consultation_report/project_commission_statistics', params })
}

View File

@ -16,6 +16,7 @@
class="mr-5">
{{ items.name }}
</el-link>
</el-descriptions-item>
<el-descriptions-item :label="item.label" label-align="left" align="left" v-else>

View File

@ -2,21 +2,16 @@
<div>
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="单据编号" prop="num">
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
<el-form-item label="项目名称">
<el-input class="w-[280px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="项目名称" prop="project">
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
<el-form-item label="日期">
<el-date-picker v-model="date" type="daterange" range-separator="-" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="YYYY-MM-DD" />
</el-form-item>
<el-form-item label="项目编号" prop="project_num">
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
<el-button type="primary" @click="a">查询</el-button>
<el-button @click="resetParams">重置</el-button>
<export-data class="ml-2.5" :fetch-fun="apiJianliProjectProgressReportLists" :params="queryParams"
:page-size="pager.size" />
</el-form-item>
</el-form>
</el-card>
@ -24,19 +19,26 @@
<div class="mt-4">
<el-table :data="pager.lists">
<el-table-column type="selection" width="55" />
<el-table-column label="项目编号" prop="num" show-overflow-tooltip />
<el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
<el-table-column label="所属合同" prop="projectInfo.project_num" show-overflow-tooltip />
<el-table-column label="任务名称" prop="bm_master" show-overflow-tooltip />
<el-table-column label="任务类型" prop="wt_unit" show-overflow-tooltip />
<el-table-column label="专业" prop="xm_master" show-overflow-tooltip />
<el-table-column label="工程师" prop="start_date" show-overflow-tooltip />
<el-table-column label="造价金额" prop="end_date" show-overflow-tooltip />
<el-table-column label="收款金额" prop="duration" show-overflow-tooltip />
<el-table-column label="提成比例" prop="working_hours" show-overflow-tooltip />
<el-table-column label="其他加减项" prop="done_progress" show-overflow-tooltip />
<el-table-column label="应提成金额" prop="bjd_progress" show-overflow-tooltip />
<el-table-column label="累计支付金额" prop="djr" show-overflow-tooltip />
<el-table-column label="项目编号" prop="project_num" show-overflow-tooltip width="120" />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip width="120" />
<el-table-column label="合同名称" prop="contract_name" show-overflow-tooltip width="120" />
<el-table-column prop="contract_name" show-overflow-tooltip align="center">
<template #default="{ row }">
<el-table :data="row.children">
<el-table-column label="专业" prop="professional_type" show-overflow-tooltip />
<el-table-column label="任务名称" prop="task_name" show-overflow-tooltip />
<el-table-column label="任务类型" prop="task_type" show-overflow-tooltip />
<el-table-column label="工程师" prop="engineer" show-overflow-tooltip />
<el-table-column label="造价金额" prop="zj_amount" show-overflow-tooltip />
<el-table-column label="收款金额" prop="sk_amount" show-overflow-tooltip />
<el-table-column label="提成比例" prop="tc_rate" show-overflow-tooltip />
<el-table-column label="其他加减项" prop="other_fee" show-overflow-tooltip />
<el-table-column label="应提成金额" prop="tc_amount" show-overflow-tooltip />
<el-table-column label="累计支付金额" prop="pay_amount" show-overflow-tooltip />
</el-table>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex justify-end mt-4">
@ -48,34 +50,26 @@
<script lang="ts" setup name="jianliProjectProgressReportLists">
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiJianliProjectProgressReportLists, apiJianliProjectProgressReportDelete, apiJianliProjectProgressReportDetail } from '@/api/jianli_project_progress_report'
//
import { apiproject_commission_statistics } from '@/api/data_report'
//
const queryParams = reactive({
num: '',
project: '',
project_num: '',
datas: '',
project_name: '',
date: '',
})
//
let date = ref('')
//
const { dictData } = useDictData('')
const a = () => {
queryParams.date = date.value.join(',')
resetPage()
}
//
const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: apiJianliProjectProgressReportLists,
fetchFun: apiproject_commission_statistics,
params: queryParams
})
getLists()
</script>

View File

@ -2,21 +2,17 @@
<div>
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="单据编号" prop="num">
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
<el-form-item label="合同名称" prop="num">
<el-input class="w-[280px]" v-model="queryParams.contract_name" clearable placeholder="请输入单据编号" />
</el-form-item>
<el-form-item label="项目名称" prop="project">
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
<el-input class="w-[280px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="项目编号" prop="project_num">
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
<el-button @click="resetParams">重置</el-button>
<export-data class="ml-2.5" :fetch-fun="apiJianliProjectProgressReportLists" :params="queryParams"
:page-size="pager.size" />
<!-- <export-data class="ml-2.5" :fetch-fun="apiJianliProjectProgressReportLists" :params="queryParams"
:page-size="pager.size" /> -->
</el-form-item>
</el-form>
</el-card>
@ -24,26 +20,26 @@
<div class="mt-4">
<el-table :data="pager.lists">
<el-table-column type="selection" width="55" />
<el-table-column label="项目编号" prop="num" show-overflow-tooltip />
<el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
<el-table-column label="关联合同" prop="projectInfo.project_num" show-overflow-tooltip />
<el-table-column label="咨询类型" prop="bm_master" show-overflow-tooltip />
<el-table-column label="行业" prop="wt_unit" show-overflow-tooltip />
<el-table-column label="项目负责人" prop="xm_master" show-overflow-tooltip />
<el-table-column label="委托单位" prop="start_date" show-overflow-tooltip />
<el-table-column label="所在省份" prop="end_date" show-overflow-tooltip />
<el-table-column label="所在市区" prop="duration" show-overflow-tooltip />
<el-table-column label="进度状态" prop="working_hours" show-overflow-tooltip />
<el-table-column label="计划进度" prop="working_hours" show-overflow-tooltip>
<el-table-column label="计划开始日期" prop="done_progress" show-overflow-tooltip />
<el-table-column label="计划结束日期" prop="bjd_progress" show-overflow-tooltip />
<el-table-column label="计划工期(天)" prop="djr" show-overflow-tooltip />
<el-table-column label="项目编号" prop="project_num" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="关联合同" prop="contract_name" show-overflow-tooltip />
<el-table-column label="咨询类型" prop="types" show-overflow-tooltip />
<el-table-column label="行业" prop="industry_nature" show-overflow-tooltip />
<el-table-column label="项目负责人" prop="project_director" show-overflow-tooltip />
<el-table-column label="委托单位" prop="aunit" show-overflow-tooltip />
<el-table-column label="所在省份" prop="province" show-overflow-tooltip />
<el-table-column label="所在市区" prop="city" show-overflow-tooltip />
<!-- <el-table-column label="进度状态" prop="working_hours" show-overflow-tooltip /> -->
<el-table-column label="计划进度" prop="working_hours" show-overflow-tooltip align='center'>
<el-table-column label="计划开始日期" prop="starting" show-overflow-tooltip />
<el-table-column label="计划结束日期" prop="endtime" show-overflow-tooltip />
<el-table-column label="计划工期(天)" prop="jhgq" show-overflow-tooltip />
</el-table-column>
<el-table-column label="实际进度" prop="working_hours" show-overflow-tooltip>
<el-table-column label="实际开始日期" prop="done_progress" show-overflow-tooltip />
<el-table-column label="实际结束日期" prop="bjd_progress" show-overflow-tooltip />
<el-table-column label="实际工期(天)" prop="djr" show-overflow-tooltip />
<el-table-column label="已完成进度(%" prop="djr" show-overflow-tooltip />
<el-table-column label="实际进度" prop="working_hours" show-overflow-tooltip align='center'>
<el-table-column label="实际开始日期" prop="actual_starting" show-overflow-tooltip />
<el-table-column label="实际结束日期" prop="actual_endtime" show-overflow-tooltip />
<el-table-column label="实际工期(天)" prop="duration" show-overflow-tooltip />
<el-table-column label="已完成进度(%" prop="done_progress" show-overflow-tooltip />
</el-table-column>
</el-table>
</div>
@ -56,29 +52,18 @@
<script lang="ts" setup name="jianliProjectProgressReportLists">
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiJianliProjectProgressReportLists, apiJianliProjectProgressReportDelete, apiJianliProjectProgressReportDetail } from '@/api/jianli_project_progress_report'
//
import { apiproject_schedule_statistics } from '@/api/data_report'
//
const queryParams = reactive({
num: '',
project: '',
project_num: '',
datas: '',
contract_name: '',
project_name: '',
})
//
//
const { dictData } = useDictData('')
//
const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: apiJianliProjectProgressReportLists,
fetchFun: apiproject_schedule_statistics,
params: queryParams
})

View File

@ -23,18 +23,19 @@
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="项目负责人" prop="head">
<el-input v-model="formData.head" clearable placeholder="请输入项目负责人" readonly />
<el-form-item label="项目负责人" prop="project_director">
<el-input v-model="formData.project_director" clearable placeholder="请输入项目负责人" readonly />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="关联合同" prop="affcontract">
<el-input v-model="formData.affcontract_name" clearable placeholder="请输入关联合同" readonly />
<el-form-item label="关联合同" prop="contract_name">
<el-input v-model="formData.contract_name" clearable placeholder="请输入关联合同" readonly />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="行业" prop="industry">
<el-select class="flex-1" v-model="formData.industry" clearable placeholder="请选择行业类型">
<el-select class="flex-1" v-model="formData.industry_nature" clearable
placeholder="请选择行业类型">
<el-option v-for="(item, index) in dictData.supervision_project_industry" :key="index"
:label="item.name" :value="item.value" />
</el-select>
@ -44,7 +45,8 @@
<el-row>
<el-col :span="8">
<el-form-item label="项目回款总额" prop="hk">
<el-input v-model="formData.hk" clearable placeholder="请输入项目回款总额" type="number" />
<el-input v-model="formData.total_refund_amount" clearable placeholder="请输入项目回款总额"
type="number" />
</el-form-item>
</el-col>
<el-col :span="8">
@ -60,8 +62,9 @@
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="已支付总额" prop="paid_amount">
<el-input v-model="formData.paid_amount" clearable placeholder="请输入已支付总额" type="number" />
<el-form-item label="已支付总额" prop="total_pay_amount">
<el-input v-model="formData.total_pay_amount" clearable placeholder="请输入已支付总额"
type="number" />
</el-form-item>
</el-col>
<el-col :span="8">
@ -85,7 +88,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
</el-form-item>
</el-col>
</el-row>
@ -104,7 +107,7 @@
<template #empty>
<span class="cursor-pointer">暂无数据点击添加 <el-button @click="handleAdd">+</el-button></span>
</template>
<el-table-column label="序号" v-if="mode == 'add'" width="150px">
<el-table-column label="序号" width="150px">
<template #default="{ row }">
<el-button @click="handleAdd">+</el-button>
<el-button @click="handleDelete(row)">-</el-button>
@ -113,31 +116,30 @@
<el-table-column label="工程师" prop="level" width="200px">
<template #default="scope">
<el-input v-model="scope.row.engineer" :disabled="mode != 'add'"
@click="userclick(scope.$index, 'engineer')" placeholder="点击选择" />
<el-input v-model="scope.row.engineer" @click="userclick(scope.$index, 'engineer')"
placeholder="点击选择" />
</template>
</el-table-column>
<el-table-column label="任务名称" prop="task_name" width="200px">
<template #default="{ row }">
<el-input v-model="row.task_name" :disabled="mode != 'add'" />
<el-input v-model="row.task_name" />
</template>
</el-table-column>
<el-table-column label="任务类型" prop="task_type" width="200px">
<template #default="{ row }">
<el-select class="flex-1" v-model="row.task_type" clearable placeholder="请选择任务类型"
:disabled="mode != 'add'">
<!-- {{ typeof (row.task_type) }} -->
<el-select class="flex-1" v-model="row.task_type" clearable placeholder="请选择任务类型">
<el-option v-for="(item, index) in dictData.task_type" :key="index" :label="item.name"
:value="parseInt(item.value)" />
:value="(item.value)" />
</el-select>
</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="请选择专业类型"
:disabled="mode != 'add'">
<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>
@ -146,25 +148,25 @@
<el-table-column label="造价金额" prop="zj_amount" width="200px">
<template #default="scope">
<el-input v-model="scope.row.zj_amount" :disabled="mode != 'add'" type="number" />
<el-input v-model="scope.row.zj_amount" type="number" />
</template>
</el-table-column>
<el-table-column label="收款金额" prop="sk_amount" width="200px">
<template #default="scope">
<el-input v-model="scope.row.sk_amount" :disabled="mode != 'add'" type="number" />
<el-input v-model="scope.row.sk_amount" type="number" @blur="calcMoney" />
</template>
</el-table-column>
<el-table-column label="其他增减费用" prop="other_fee" width="200px">
<template #default="scope">
<el-input v-model="scope.row.other_fee" :disabled="mode != 'add'" type="number" />
<el-input v-model="scope.row.other_fee" type="number" @blur="calcMoney" />
</template>
</el-table-column>
<el-table-column label="提成比例(%)" prop="tc_rate" width="200px">
<template #default="scope">
<el-input v-model="scope.row.tc_rate" :disabled="mode != 'add'" type="number" />
<el-input v-model="scope.row.tc_rate" type="number" @blur="calcMoney" />
</template>
</el-table-column>
<el-table-column label="应提成金额" prop="tc_amount" width="200px">
@ -175,14 +177,13 @@
</el-table-column>
<el-table-column label="本次支付金额" prop="pay_amount" width="200px">
<template #default="{ row }">
<el-input v-model="row.pay_amount" @change="getBczfze" :disabled="mode != 'add'"
type="number" />
<el-input v-model="row.pay_amount" @change="getBczfze" type="number" />
</template>
</el-table-column>
<el-table-column label="备注" prop="remark" width="200px">
<template #default="{ row }">
<el-input v-model="row.remark" :disabled="mode != 'add'" type="number" />
<el-input v-model="row.remark" type="number" />
</template>
</el-table-column>
</el-table>
@ -194,10 +195,11 @@
<script lang="ts" setup name="projectCommissionEdit">
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiProjectCommissionAdd, apiProjectCommissionEdit, } from '@/api/project_commission'
import { apiProjectCommissionAdd, apiProjectCommissionEdit, apiProjectCommissionDelete } from '@/api/project_commission'
import { apiProjectCommissionDetailDelete } from '@/api/project_commission_detail'
import type { PropType } from 'vue'
import { cost_project } from "@/components/dialogTable/dialogTableConfig"
import { watch } from "vue"
defineProps({
dictData: {
@ -227,18 +229,19 @@ const formData = reactive({
project_id: '',
project_name: '',
project_num: '',
head: '',
affcontract: '',
project_director: '',
contract_name: '',
affcontract_name: "",
contract: {},
industry: '',
hk: '',
industry_nature: '',
total_refund_amount: '',
rate: '',
ticheng: '',
paid_amount: '',
total_pay_amount: '',
bczfze: '',
djr: '',
apptime: '',
total_invoice_amount: "",
remark: '',
projectInfo: {},
project_commission_detail: []
@ -248,12 +251,11 @@ const customEvent = (e) => {
formData.project_id = e.id
formData.project_name = e.project_name
formData.project_num = e.project_num
formData.head = e.principal
formData.affcontract = e.contract.id
formData.affcontract_name = e.contract.contract_name
formData.industry = e.industry
// formData.hk=e.
// formData.hk=e.
formData.project_director = e.contract.project_director
formData.contract_name = e.contract.contract_name
formData.industry_nature = String(e.industry)
formData.total_refund_amount = e.total_refund_amount
formData.total_pay_amount = e.total_pay_amount
showDialog.value = false
}
@ -276,19 +278,22 @@ const handleAdd = () => {
}
const handleDelete = (row: any) => {
const handleDelete = async (row: any) => {
if (row.id) {
await apiProjectCommissionDetailDelete({ id: row.id })
}
const index = formData.project_commission_detail.indexOf(row);
formData.project_commission_detail.splice(index, 1);
getBczfze()
}
//
watch(formData.project_commission_detail, (newVal, oldVal) => {
const calcMoney = () => {
formData.project_commission_detail.forEach(item => {
item.tc_amount = (Number(item.sk_amount || 0) + Number(item.other_fee || 0)) * (item.tc_rate / 100)
item.tc_amount = item.tc_amount.toFixed(2)
})
})
}
//
@ -301,7 +306,7 @@ const getBczfze = () => {
formData.ticheng ||= computed(() => {
return Number(formData.hk) * (Number(formData.rate) / 100) || 0
return (Number(formData.total_refund_amount) * (Number(formData.rate) / 100) || 0).toFixed(2)
})
@ -339,13 +344,7 @@ const setFormData = async (data: Record<any, any>) => {
formData[key] = data[key]
}
}
formData.project_id = formData.projectInfo.id
formData.project_name = formData.projectInfo.project_name
formData.project_num = formData.projectInfo.project_num
formData.head = formData.projectInfo.principal
formData.affcontract = formData.contract.id
formData.affcontract_name = formData.contract.contract_name
calcMoney()
}

View File

@ -68,7 +68,7 @@
<template #empty>
<span class="cursor-pointer">暂无数据点击添加 <el-button @click="handleAdd">+</el-button></span>
</template>
<el-table-column label="序号" v-if="mode == 'add'" width="150px">
<el-table-column label="序号" width="150px">
<template #default="{ row }">
<el-button @click="handleAdd">+</el-button>
<el-button @click="handleDelete(row)">-</el-button>
@ -77,57 +77,57 @@
<el-table-column label="所在目录" prop="level" width="200px">
<template #default="scope">
<el-input v-model="scope.row.directory" :disabled="mode != 'add'" />
<el-input v-model="scope.row.directory" />
</template>
</el-table-column>
<el-table-column label="单位工程名称" prop="unit_project_name" width="200px">
<template #default="{ row }">
<el-input v-model="row.unit_project_name" :disabled="mode != 'add'" />
<el-input v-model="row.unit_project_name" />
</template>
</el-table-column>
<el-table-column label="合同工程款总额" prop="contract_total_amount" width="200px">
<template #default="{ row }">
<el-input v-model="row.contract_total_amount" :disabled="mode != 'add'" type="number" />
<el-input v-model="row.contract_total_amount" type="number" />
</template>
</el-table-column>
<el-table-column label="合同付款比例(%)" prop="dcntract_payment_rate" width="200px">
<template #default="{ row }">
<el-input v-model="row.dcntract_payment_rate" :disabled="mode != 'add'" type="number" />
<el-input v-model="row.dcntract_payment_rate" type="number" />
</template>
</el-table-column>
<el-table-column label="时间" prop="time" width="200px">
<template #default="{ row }">
<el-date-picker class="flex-1 !flex" v-model="row.time" clearable type="date"
value-format="YYYY-MM-DD" placeholder="请选择日期" :disabled="mode != 'add'">
value-format="YYYY-MM-DD" placeholder="请选择日期">
</el-date-picker>
</template>
</el-table-column>
<el-table-column label="形象进度" prop="image_progress" width="200px">
<template #default="{ row }">
<el-input v-model="row.image_progress" :disabled="mode != 'add'" />
<el-input v-model="row.image_progress" />
</template>
</el-table-column>
<el-table-column label="申报造价(土建)" prop="declared_cost_tj" width="200px">
<template #default="scope">
<el-input v-model="scope.row.declared_cost_tj" :disabled="mode != 'add'" type="number" />
<el-input v-model="scope.row.declared_cost_tj" type="number" />
</template>
</el-table-column>
<el-table-column label="申报造价(安装)" prop="declared_cost_az" width="200px">
<template #default="scope">
<el-input v-model="scope.row.declared_cost_az" :disabled="mode != 'add'" type="number" />
<el-input v-model="scope.row.declared_cost_az" type="number" />
</template>
</el-table-column>
<el-table-column label="申报造价(其他)" prop="declared_cost_other" width="200px">
<template #default="scope">
<el-input v-model="scope.row.declared_cost_other" :disabled="mode != 'add'" type="number" />
<el-input v-model="scope.row.declared_cost_other" type="number" />
</template>
</el-table-column>
<el-table-column label="进度申报造价小计" prop="jdsbzj_xiaoji" width="200px">
@ -139,25 +139,25 @@
<el-table-column label="审核造价(土建)" prop="audit_cost_tj" width="200px">
<template #default="{ row }">
<el-input v-model="row.audit_cost_tj" :disabled="mode != 'add'" type="number" />
<el-input v-model="row.audit_cost_tj" type="number" />
</template>
</el-table-column>
<el-table-column label="审核造价(安装)" prop="audit_cost_az" width="200px">
<template #default="{ row }">
<el-input v-model="row.audit_cost_az" :disabled="mode != 'add'" type="number" />
<el-input v-model="row.audit_cost_az" type="number" />
</template>
</el-table-column>
<el-table-column label="审核造价(其他)" prop="audit_cost_other" width="200px">
<template #default="{ row }">
<el-input v-model="row.audit_cost_other" :disabled="mode != 'add'" type="number" />
<el-input v-model="row.audit_cost_other" type="number" />
</template>
</el-table-column>
<el-table-column label="进度审核造价小计" prop="jdshzj_xiaoji" width="200px">
<template #default="{ row }">
<el-input v-model="row.jdshzj_xiaoji" :disabled="mode != 'add'" type="number" />
<el-input v-model="row.jdshzj_xiaoji" type="number" />
</template>
</el-table-column>
<el-table-column label="审减额(元)" prop="deduction_amount" width="200px">
@ -169,7 +169,7 @@
<el-table-column label="完成产值比例(%)" prop="completed_rate" width="200px">
<template #default="{ row }">
<el-input v-model="row.completed_rate" :disabled="mode != 'add'" type="number" />
<el-input v-model="row.completed_rate" type="number" />
</template>
</el-table-column>
<el-table-column label="累计完成工程款" prop="ljwc_funds" width="200px">
@ -194,7 +194,7 @@
<el-table-column label="备注" prop="remark" width="200px">
<template #default="{ row }">
<el-input v-model="row.remark" :disabled="mode != 'add'" />
<el-input v-model="row.remark" />
</template>
</el-table-column>
</el-table>
@ -207,15 +207,14 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiProjectProgressPaymentAdd, apiProjectProgressPaymentEdit, apiProjectProgressPaymentDetail } from '@/api/project_progress_payment'
import { apiProjectProgressPaymentDetailDelete } from '@/api/project_progress_payment_detail'
import type { PropType } from 'vue'
import { cost_project } from "@/components/dialogTable/dialogTableConfig"
import { timeFormat } from '@/utils/util'
import useUserStore from "@/stores/modules/user";
const userStore = useUserStore().userInfo;
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
@ -233,14 +232,7 @@ const showDialog = ref(false)
const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目进度款' : '新增项目进度款'
})
const handleAvatarSuccess_four = (response: any) => {
Array.isArray(formData.annex) ? '' : formData.annex = []
// @ts-ignore
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
//
const formData = reactive({
id: '',
@ -326,8 +318,10 @@ const handleAdd = () => {
}
const handleDelete = (row: any) => {
if (formData.project_progress_payment_detail.length == 1) return
const handleDelete = async (row: any) => {
if (row.id) {
await apiProjectProgressPaymentDetailDelete({ id: row.id })
}
const index = formData.project_progress_payment_detail.indexOf(row);
formData.project_progress_payment_detail.splice(index, 1);
}

View File

@ -0,0 +1,147 @@
<template>
<div class="edit-popup">
<popup ref="popupRef" :async="true" width="80vw" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="100px">
<el-descriptions column="3" title="工程监理--巡视登记详情" border>
<el-descriptions-item label="项目名称" label-align="left" align="left">
{{ formData.project_name }}
</el-descriptions-item>
<el-descriptions-item label="编号" label-align="left" align="left">
{{ formData.accept_code }}
</el-descriptions-item>
<el-descriptions-item label="验收类型" label-align="left" align="left">
{{ formData.accept_type_text }}
</el-descriptions-item>
<el-descriptions-item label="单位工程" label-align="left" align="left">
{{ formData.check_item_name }}
</el-descriptions-item>
<el-descriptions-item label="验收内容" label-align="left" align="left">
{{ formData.accept_content }}
</el-descriptions-item>
<el-descriptions-item label="验收位置" label-align="left" align="left">
{{ formData.accept_position }}
</el-descriptions-item>
<el-descriptions-item label="验收时间" label-align="left" align="left">
{{ formData.accept_time }}
</el-descriptions-item>
<el-descriptions-item label="施工单位" label-align="left" align="left">
{{ formData.company_name }}
</el-descriptions-item>
<el-descriptions-item label="检查表单选择" label-align="left" align="left">
{{ formData.check_item_detail_name }}
</el-descriptions-item>
<el-descriptions-item label="备注" label-align="left" align="left">
{{ formData.remark }}
</el-descriptions-item>
<el-descriptions-item label="创建人" label-align="left" align="left">
{{ formData.create_user }}
</el-descriptions-item>
<el-descriptions-item label="创建时间" label-align="left" align="left">
{{ formData.create_time }}
</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left">
<el-link class="mr-5" type="primary" v-for="item in formData.annex" :href="item.uri">
{{ item.name }}
</el-link>
</el-descriptions-item>
</el-descriptions>
</el-form>
<el-card class="mt-5">
<template #header>
巡视结果列表
</template>
<el-table :data="formData.accept_check_result">
<el-table-column label="检查类别" prop="check_type" show-overflow-tooltip />
<el-table-column label="检查类容" prop="check_content" show-overflow-tooltip />
<el-table-column label="是否必检" prop="must_check_text" show-overflow-tooltip />
<el-table-column label="是否检查结果必检" prop="check_result_text" show-overflow-tooltip />
</el-table>
</el-card>
<el-card>
<template #header>
巡视问题列表
</template>
<el-table :data="formData.accept_check_problem">
<el-table-column label="问题分类" prop="problem_cate_text" show-overflow-tooltip />
<el-table-column label="问题说明" prop="problem_description" show-overflow-tooltip />
<el-table-column label="问题名称" prop="problem_name" show-overflow-tooltip />
</el-table>
</el-card>
</popup>
</div>
</template>
<script lang="ts" setup name="supervisionInspectionEdit">
import Popup from '@/components/popup/index.vue'
import { apisupervision_accept_result } from '@/api/supervision_accept'
import { apisupervision_problem } from '@/api/supervision_inspection'
const emit = defineEmits(['success', 'close'])
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const mode = ref('add')
//
const formData = reactive({
project_id: '',
accept_code: '',
accept_type: '',
check_item_id: '',
accept_content: '',
accept_position: '',
accept_time: '',
company_id: '',
accept_result: '',
check_item_detail_ids: [],
remark: '',
create_user: "",
create_time: "",
check_item_name: "",
company_name: '',
check_item_detail_name: '',
id: '',
project_name: '',
annex: [],
accept_check_result: [],
accept_check_problem: [],
accept_type_text: ""
})
//
const setFormData = async (data: Record<any, any>) => {
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key]
}
}
apisupervision_accept_result({ accept_id: formData.id }).then(res => {
formData.accept_check_result = res.lists
})
apisupervision_problem({ data_id: formData.id, data_type: 3 }).then(res => {
formData.accept_check_problem = res.lists
})
}
//
const open = (type = 'add') => {
mode.value = type
popupRef.value?.open()
}
//
const handleClose = () => {
emit('close')
}
defineExpose({
open,
setFormData,
})
</script>

View File

@ -52,10 +52,15 @@
@click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_work.supervision_accept/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
<el-button v-perms="['supervision_work.supervision_accept/accept']" type="primary" link
@click="dialogTableVisible = true, formData.id = row.id" v-if="row.accept_result == 1">
验收
</el-button>
</template>
</el-table-column>
</el-table>
@ -65,6 +70,7 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detail-popup v-if="showDetail" ref="detailRef" @success="getLists" @close="showDetail = false" />
<el-dialog v-model="dialogTableVisible" title="再验收" width="800" @confirm="handleAccept">
<!-- <div v-html="htmlContent"></div> -->
<el-form ref="formRef" :model="formData" label-width="90px">
@ -103,14 +109,18 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionAcceptLists, apiSupervisionAcceptDelete, apiSupervisionAcceptDetail, apisupervision_accept } from '@/api/supervision_accept'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
const dialogTableVisible = ref(false)
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
const formData = reactive({
"id": 1,
@ -120,14 +130,6 @@ const formData = reactive({
"annex": []
})
const handleAvatarSuccess_four = (response: any) => {
Array.isArray(formData.annex) ? '' : formData.annex = []
// @ts-ignore
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
//
const queryParams = reactive({
@ -184,5 +186,14 @@ const handleAccept = async (row: Object | any[]) => {
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionAcceptDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -0,0 +1,34 @@
const detailConfig = {
title: "工程监理--第一次工地会议",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "doc_name"
},
{
label: "文档简介",
value: "doc_desc"
},
{
label: "创建人",
value: "create_user"
},
{
label: "创建时间",
value: "create_time"
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -30,18 +30,6 @@
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="文档名称" prop="doc_name" show-overflow-tooltip />
<el-table-column label="文档简介" prop="doc_desc" show-overflow-tooltip />
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'>
<el-link :href="item.uri" target="_blank">文件{{ i + 1 }}查看</el-link>
</div>
</div>
<div v-else>
暂无文件
</div>
</template>
</el-table-column>
<el-table-column label="操作人" prop="create_user" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
@ -54,7 +42,7 @@
删除
</el-button>
<el-button v-perms="['supervision_const_prepare.supervision_commencement_report/detail']"
type="primary" link @click="handleEdit(row, 'detail')">
link @click="handleDetail(row.id)">
详情
</el-button>
</template>
@ -66,20 +54,25 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showEdit = false" :detailConfig="detailConfig"
width="30vw" :column="1" />
</div>
</template>
<script lang="ts" setup name="supervisionCommencementReportLists">
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionCommencementReportLists, apiSupervisionCommencementReportDelete } from '@/api/supervision_commencement_report'
import { timeFormat } from '@/utils/util'
import { apiSupervisionCommencementReportLists, apiSupervisionCommencementReportDelete, apiSupervisionCommencementReportDetail } from '@/api/supervision_commencement_report'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
@ -127,5 +120,13 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionCommencementReportDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -0,0 +1,81 @@
const detailConfig = {
title: "工程监理--施工管理人员",
config: [
{
label: "所属单位",
value: "company_name"
},
{
label: "姓名",
value: "name"
},
{
label: "身份证",
value: "id_card"
},
{
label: "技术职称",
value: "technical_title"
},
{
label: "岗位",
value: "job"
},
{
label: "资质名称1",
value: "qualification_name_one"
},
{
label: "认证机构1",
value: "qualification_number_one"
},
{
label: "资质编号1",
value: "qualification_number_one"
},
{
label: "发证日期1",
value: "effective_date_one"
},
{
label: "有效日期1",
value: "effective_date_one"
},
{
label: "资质1状态",
value: "qualification_one_status_text"
},
{
label: "资质名称2",
value: "qualification_name_two"
},
{
label: "认证机构2",
value: "certification_body_two"
},
{
label: "资质编号2",
value: "qualification_number_two"
}, {
label: "发证日期2",
value: "get_date_two"
}, {
label: "有效日期2",
value: "effective_date_two"
}, {
label: "资质2状态",
value: "qualification_two_status_text"
},
{
label: "创建人",
value: "create_user"
},
{
label: "创建时间",
value: "create_time"
},
]
}
export default detailConfig;

View File

@ -1,508 +1,388 @@
<template>
<div class="edit-popup">
<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">
<el-form-item label="所属单位" prop="unit_qualification_id">
<el-input
v-model="formData.company_name"
clearable
placeholder="请输入所属单位"
@click="showDialog1 = true"
readonly
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="姓名" prop="name">
<el-input
v-model="formData.name"
clearable
placeholder="请输入姓名"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="身份证">
<el-input
v-model="formData.id_card"
clearable
placeholder="请输入身份证"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="创建人">
<el-input
v-model="formData.create_user_name"
clearable
placeholder="请输入创建人"
/>
</el-form-item>
</el-col>
<div class="edit-popup">
<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">
<el-form-item label="所属单位" prop="unit_qualification_id">
<el-input v-model="formData.company_name" clearable placeholder="请输入所属单位"
@click="showDialog1 = true" readonly />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="姓名" prop="name">
<el-input v-model="formData.name" clearable placeholder="请输入姓名" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="身份证">
<el-input v-model="formData.id_card" clearable placeholder="请输入身份证" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="技术职称" prop="technical_title">
<el-input
v-model="formData.technical_title"
clearable
placeholder="请输入技术职称"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="岗位">
<el-input
v-model="formData.job"
clearable
placeholder="请输入岗位"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="资质名称1">
<el-input
v-model="formData.qualification_name_one"
clearable
placeholder="请输入资质名称1"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="认证机构1">
<el-input
v-model="formData.certification_body_one"
clearable
placeholder="请输入认证机构1"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质编号1">
<el-input
v-model="formData.qualification_number_one"
clearable
placeholder="请输入资质编号1"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="发证日期1">
<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-date-picker
class="flex-1 !flex"
v-model="formData.effective_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-select
class="flex-1"
v-model="formData.qualification_one_status"
clearable
placeholder="请选择"
>
<el-option label="有效" :value="0" />
<el-option label="无效" :value="1" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="资质名称2">
<el-input
v-model="formData.qualification_name_two"
clearable
placeholder="请输入资质名称2"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="认证机构2">
<el-input
v-model="formData.certification_body_two"
clearable
placeholder="请输入认证机构2"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质编号2">
<el-input
v-model="formData.qualification_number_two"
clearable
placeholder="请输入资质编号2"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="发证日期2">
<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-date-picker
class="flex-1 !flex"
v-model="formData.effective_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-select
class="flex-1"
v-model="formData.qualification_two_status"
clearable
placeholder="请选择"
>
<el-option label="有效" :value="0" />
<el-option label="无效" :value="1" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="备注" prop="remark">
<el-input
v-model="formData.remark"
clearable
placeholder="请输入备注"
type="textarea"
/>
</el-form-item>
</el-col>
<createUserLable :formData="formData" flag></createUserLable>
</el-row>
<el-col :span="8">
<el-form-item label="技术职称" prop="technical_title">
<el-input v-model="formData.technical_title" clearable placeholder="请输入技术职称" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="岗位">
<el-input v-model="formData.job" clearable placeholder="请输入岗位" />
</el-form-item>
</el-col>
<div v-if="showDialog1">
<el-dialog v-model="showDialog1" title="选择单位" width="70%">
<dialogTable
:config="supervision_participating_units_qualifications"
@customEvent="customEvent1"
>
</dialogTable>
</el-dialog>
</div>
</el-form>
</popup>
</div>
<el-col :span="8">
<el-form-item label="资质名称1">
<el-input v-model="formData.qualification_name_one" clearable placeholder="请输入资质名称1" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="认证机构1">
<el-input v-model="formData.certification_body_one" clearable placeholder="请输入认证机构1" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质编号1">
<el-input v-model="formData.qualification_number_one" clearable placeholder="请输入资质编号1" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="发证日期1">
<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-date-picker class="flex-1 !flex" v-model="formData.effective_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-select class="flex-1" v-model="formData.qualification_one_status" clearable
placeholder="请选择">
<el-option label="有效" :value="0" />
<el-option label="无效" :value="1" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质名称2">
<el-input v-model="formData.qualification_name_two" clearable placeholder="请输入资质名称2" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="认证机构2">
<el-input v-model="formData.certification_body_two" clearable placeholder="请输入认证机构2" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质编号2">
<el-input v-model="formData.qualification_number_two" clearable placeholder="请输入资质编号2" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="发证日期2">
<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-date-picker class="flex-1 !flex" v-model="formData.effective_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-select class="flex-1" v-model="formData.qualification_two_status" clearable
placeholder="请选择">
<el-option label="有效" :value="0" />
<el-option label="无效" :value="1" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
</el-form-item>
</el-col>
<createUserLable :formData="formData" flag></createUserLable>
</el-row>
<div v-if="showDialog1">
<el-dialog v-model="showDialog1" title="选择单位" width="70%">
<dialogTable :config="supervision_participating_units_qualifications"
@customEvent="customEvent1">
</dialogTable>
</el-dialog>
</div>
</el-form>
</popup>
</div>
</template>
<script lang="ts" setup name="supervisionConstructionManagementPersonnelEdit">
import type { FormInstance } from "element-plus";
import Popup from "@/components/popup/index.vue";
import {
apiSupervisionConstructionManagementPersonnelAdd,
apiSupervisionConstructionManagementPersonnelEdit,
apiSupervisionConstructionManagementPersonnelAdd,
apiSupervisionConstructionManagementPersonnelEdit,
} from "@/api/supervision_construction_management_personnel";
import type { PropType } from "vue";
import { supervision_participating_units_qualifications } from "@/components/dialogTable/dialogTableConfig";
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
default: () => ({}),
},
dictData: {
type: Object as PropType<Record<string, any[]>>,
default: () => ({}),
},
});
const emit = defineEmits(["success", "close"]);
const formRef = shallowRef<FormInstance>();
const popupRef = shallowRef<InstanceType<typeof Popup>>();
const mode = ref("add");
const showDialog = ref(false);
const showDialog1 = ref(false);
const handleAvatarSuccess_four = (response: any) => {
if (!Array.isArray(formData.annex)) formData.annex = [];
// @ts-ignore
response.code != 0
? formData.annex.push({ uri: response.data.uri, name: response.data.name })
: ElMessage.error(response.msg);
};
//
const delFileFn = (index: number) => {
formData.annex.splice(index, 1);
};
//
const popupTitle = computed(() => {
return mode.value == "edit"
? "编辑工程监理--施工管理人员"
: "新增工程监理--施工管理人员";
return mode.value == "edit"
? "编辑工程监理--施工管理人员"
: "新增工程监理--施工管理人员";
});
//
const formData = reactive({
id: "",
project_id: "",
project_name: "",
name: "",
unit_qualification_id: "",
company_name: "",
id_card: "",
technical_title: "",
job: "",
qualification_name_one: "",
certification_body_one: "",
qualification_number_one: "",
get_date_one: "",
effective_date_one: "",
qualification_one_status: "",
qualification_name_two: "",
certification_body_two: "",
qualification_number_two: "",
get_date_two: "",
effective_date_two: "",
qualification_two_status: "",
remark: "",
annex: [],
create_user: "",
create_time: "",
id: "",
project_id: "",
project_name: "",
name: "",
unit_qualification_id: "",
company_name: "",
id_card: "",
technical_title: "",
job: "",
qualification_name_one: "",
certification_body_one: "",
qualification_number_one: "",
get_date_one: "",
effective_date_one: "",
qualification_one_status: "",
qualification_name_two: "",
certification_body_two: "",
qualification_number_two: "",
get_date_two: "",
effective_date_two: "",
qualification_two_status: "",
remark: "",
annex: [],
create_user: "",
create_time: "",
});
const customEvent1 = (e) => {
formData.unit_qualification_id = e.id;
formData.company_name = e.company_name;
showDialog1.value = false;
formData.unit_qualification_id = e.id;
formData.company_name = e.company_name;
showDialog1.value = false;
};
//
const formRules = reactive<any>({
project_id: [
{
required: true,
message: "请选择项目",
trigger: ["blur"],
},
],
name: [
{
required: true,
message: "请输入姓名",
trigger: ["blur"],
},
],
unit_qualification_id: [
{
required: true,
message: "请输入所属单位",
trigger: ["blur"],
},
],
id_card: [
{
required: true,
message: "请输入身份证",
trigger: ["blur"],
},
],
technical_title: [
{
required: true,
message: "请输入技术职称",
trigger: ["blur"],
},
],
job: [
{
required: true,
message: "请输入岗位",
trigger: ["blur"],
},
],
qualification_name_one: [
{
required: true,
message: "请输入资质名称1",
trigger: ["blur"],
},
],
certification_body_one: [
{
required: true,
message: "请输入认证机构1",
trigger: ["blur"],
},
],
qualification_number_one: [
{
required: true,
message: "请输入资质编号1",
trigger: ["blur"],
},
],
get_date_one: [
{
required: true,
message: "请输入发证日期1",
trigger: ["blur"],
},
],
effective_date_one: [
{
required: true,
message: "请输入有效日期1",
trigger: ["blur"],
},
],
qualification_one_status: [
{
required: true,
message: "请输入资质1状态 0-有效 1-无效",
trigger: ["blur"],
},
],
qualification_name_two: [
{
required: true,
message: "请输入资质名称2",
trigger: ["blur"],
},
],
certification_body_two: [
{
required: true,
message: "请输入认证机构2",
trigger: ["blur"],
},
],
qualification_number_two: [
{
required: true,
message: "请输入资质编号2",
trigger: ["blur"],
},
],
get_date_two: [
{
required: true,
message: "请输入发证日期2",
trigger: ["blur"],
},
],
effective_date_two: [
{
required: true,
message: "请输入有效日期2",
trigger: ["blur"],
},
],
qualification_two_status: [
{
required: true,
message: "请输入资质2状态 0-有效 1-无效",
trigger: ["blur"],
},
],
remark: [
{
required: true,
message: "请输入备注",
trigger: ["blur"],
},
],
create_user: [
{
required: true,
message: "请输入创建人",
trigger: ["blur"],
},
],
project_id: [
{
required: true,
message: "请选择项目",
trigger: ["blur"],
},
],
name: [
{
required: true,
message: "请输入姓名",
trigger: ["blur"],
},
],
unit_qualification_id: [
{
required: true,
message: "请输入所属单位",
trigger: ["blur"],
},
],
id_card: [
{
required: true,
message: "请输入身份证",
trigger: ["blur"],
},
],
technical_title: [
{
required: true,
message: "请输入技术职称",
trigger: ["blur"],
},
],
job: [
{
required: true,
message: "请输入岗位",
trigger: ["blur"],
},
],
qualification_name_one: [
{
required: true,
message: "请输入资质名称1",
trigger: ["blur"],
},
],
certification_body_one: [
{
required: true,
message: "请输入认证机构1",
trigger: ["blur"],
},
],
qualification_number_one: [
{
required: true,
message: "请输入资质编号1",
trigger: ["blur"],
},
],
get_date_one: [
{
required: true,
message: "请输入发证日期1",
trigger: ["blur"],
},
],
effective_date_one: [
{
required: true,
message: "请输入有效日期1",
trigger: ["blur"],
},
],
qualification_one_status: [
{
required: true,
message: "请输入资质1状态 0-有效 1-无效",
trigger: ["blur"],
},
],
qualification_name_two: [
{
required: true,
message: "请输入资质名称2",
trigger: ["blur"],
},
],
certification_body_two: [
{
required: true,
message: "请输入认证机构2",
trigger: ["blur"],
},
],
qualification_number_two: [
{
required: true,
message: "请输入资质编号2",
trigger: ["blur"],
},
],
get_date_two: [
{
required: true,
message: "请输入发证日期2",
trigger: ["blur"],
},
],
effective_date_two: [
{
required: true,
message: "请输入有效日期2",
trigger: ["blur"],
},
],
qualification_two_status: [
{
required: true,
message: "请输入资质2状态 0-有效 1-无效",
trigger: ["blur"],
},
],
remark: [
{
required: true,
message: "请输入备注",
trigger: ["blur"],
},
],
create_user: [
{
required: true,
message: "请输入创建人",
trigger: ["blur"],
},
],
});
//
const setFormData = async (data: Record<any, any>) => {
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key];
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key];
}
}
}
};
const getDetail = async (row: Record<string, any>) => {
const data = await apiSupervisionConstructionManagementPersonnelDetail({
id: row.id,
});
setFormData(data);
const data = await apiSupervisionConstructionManagementPersonnelDetail({
id: row.id,
});
setFormData(data);
};
//
const handleSubmit = async () => {
await formRef.value?.validate();
const data = { ...formData };
mode.value == "edit"
? await apiSupervisionConstructionManagementPersonnelEdit(data)
: await apiSupervisionConstructionManagementPersonnelAdd(data);
popupRef.value?.close();
emit("success");
await formRef.value?.validate();
const data = { ...formData };
mode.value == "edit"
? await apiSupervisionConstructionManagementPersonnelEdit(data)
: await apiSupervisionConstructionManagementPersonnelAdd(data);
popupRef.value?.close();
emit("success");
};
//
const open = (type = "add") => {
mode.value = type;
popupRef.value?.open();
mode.value = type;
popupRef.value?.open();
};
//
const handleClose = () => {
emit("close");
emit("close");
};
defineExpose({
open,
setFormData,
getDetail,
open,
setFormData,
getDetail,
});
</script>

View File

@ -66,6 +66,11 @@
type="danger" link @click="handleDelete(row.id)">
删除
</el-button>
<el-button
v-perms="['supervision_qualification_review.supervision_construction_management_personnel/detail']"
link @click="handleDetail(row.id)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -75,6 +80,8 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showEdit = false" :detailConfig="detailConfig" />
</div>
</template>
@ -82,14 +89,16 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionConstructionManagementPersonnelLists, apiSupervisionConstructionManagementPersonnelDelete, apiSupervisionConstructionManagementPersonnelDetail } from '@/api/supervision_construction_management_personnel'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
const queryParams = reactive({
@ -139,6 +148,15 @@ const handleDelete = async (id: number | any[]) => {
await apiSupervisionConstructionManagementPersonnelDelete({ id })
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionConstructionManagementPersonnelDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -0,0 +1,34 @@
const detailConfig = {
title: "工程监理--监理合同交底",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "doc_name"
},
{
label: "文档简介",
value: "doc_desc"
},
{
label: "创建人",
value: "create_user"
},
{
label: "创建时间",
value: "create_time"
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -29,18 +29,6 @@
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="文档名称" prop="doc_name" show-overflow-tooltip />
<el-table-column label="文档简介" prop="doc_desc" show-overflow-tooltip />
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'>
<el-link :href="item.uri" target="_blank">文件{{ i + 1 }}查看</el-link>
</div>
</div>
<div v-else>
暂无文件
</div>
</template>
</el-table-column>
<el-table-column label="操作人" prop="create_user" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
@ -52,6 +40,10 @@
type="danger" link @click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_prepare.supervision_construction_planning/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -61,6 +53,8 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showEdit = false" :detailConfig="detailConfig"
width="30vw" :column="1" />
</div>
</template>
@ -68,13 +62,16 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionConstructionPlanningLists, apiSupervisionConstructionPlanningDelete, apiSupervisionConstructionPlanningDetail } from '@/api/supervision_construction_planning'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
@ -113,7 +110,7 @@ const handleEdit = async (data: any) => {
showEdit.value = true
await nextTick()
editRef.value?.open('edit')
editRef.value?.setFormData(data)
editRef.value?.setFormData(res)
}
//
@ -123,5 +120,15 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionConstructionPlanningDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -0,0 +1,34 @@
const detailConfig = {
title: "工程监理--监理合同交底",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "doc_name"
},
{
label: "文档简介",
value: "doc_desc"
},
{
label: "创建人",
value: "create_user"
},
{
label: "创建时间",
value: "create_time"
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -40,8 +40,8 @@
type="danger" link @click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_prepare.supervision_contract_disclosure/detail']"
type="primary" link @click="handleEdit(row, 'detail')">
<el-button v-perms="['supervision_prepare.supervision_contract_disclosure/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template>
@ -53,6 +53,9 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showEdit = false" :detailConfig="detailConfig"
width="30vw" :column="1" />
</div>
</template>
@ -60,13 +63,15 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionContractDisclosureLists, apiSupervisionContractDisclosureDelete, apiSupervisionContractDisclosureDetail } from '@/api/supervision_contract_disclosure'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import detailConfig from './detail'
import EditPopup from './edit.vue'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
@ -115,7 +120,14 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionContractDisclosureDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()

View File

@ -0,0 +1,34 @@
const detailConfig = {
title: "工程监理--第一次工地会议",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "doc_name"
},
{
label: "文档简介",
value: "doc_desc"
},
{
label: "创建人",
value: "create_user"
},
{
label: "创建时间",
value: "create_time"
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -29,18 +29,6 @@
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="文档名称" prop="doc_name" show-overflow-tooltip />
<el-table-column label="文档简介" prop="doc_desc" show-overflow-tooltip />
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'>
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
</div>
</div>
<div v-else>
暂无文件
</div>
</template>
</el-table-column>
<el-table-column label="操作人" prop="create_user" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
@ -52,6 +40,10 @@
type="danger" link @click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_const_prepare.supervision_design_disclosure/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -61,6 +53,8 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showEdit = false" :detailConfig="detailConfig"
width="30vw" :column="1" />
</div>
</template>
@ -68,14 +62,15 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionDesignDisclosureLists, apiSupervisionDesignDisclosureDelete, apiSupervisionDesignDisclosureDetail } from '@/api/supervision_design_disclosure'
import { timeFormat } from '@/utils/util'
import detailConfig from './detail'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
const queryParams = reactive({
@ -122,6 +117,15 @@ const handleDelete = async (id: number | any[]) => {
await apiSupervisionDesignDisclosureDelete({ id })
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionDesignDisclosureDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -0,0 +1,80 @@
import { apisupervision_material_entry_detail, } from '@/api/supervision_material_entry'
const detailConfig = {
title: "工程监理--设备进场",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "进场时间",
value: "enter_time"
},
{
label: "施工单位",
value: "company_name"
},
{
label: "进场结果",
value: "enter_result_text"
},
{
label: "共同参与人",
value: "co_participant"
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "创建人",
value: "create_user"
},
{
label: "创建时间",
value: "create_time"
},
],
table: {
title: "材料信息",
tableConfig: [
{
label: "材料名称",
value: 'name'
},
{
label: "材料品牌",
value: 'brand'
},
{
label: "单位",
value: 'unit'
},
{
label: "是否合同约定品牌",
value: 'contract_brand_text',
},
{
label: "型号",
value: 'model',
},
{
label: "进场数量",
value: 'entry_number'
},
],
fetchFun: apisupervision_material_entry_detail,
query: 'material_entry_id'
}
}
export default detailConfig;

View File

@ -48,6 +48,10 @@
@click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_work.supervision_device_entry/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -57,6 +61,8 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showEdit = false" :detailConfig="detailConfig" />
</div>
</template>
@ -67,11 +73,14 @@ import { apiSupervisionDeviceEntryLists, apiSupervisionDeviceEntryDelete, apiSup
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
const queryParams = reactive({
@ -120,5 +129,15 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionDeviceEntryDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -0,0 +1,34 @@
const detailConfig = {
title: "工程监理--第一次工地会议",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "doc_name"
},
{
label: "文档简介",
value: "doc_desc"
},
{
label: "创建人",
value: "create_user"
},
{
label: "创建时间",
value: "create_time"
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -29,18 +29,6 @@
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="文档名称" prop="doc_name" show-overflow-tooltip />
<el-table-column label="文档简介" prop="doc_desc" show-overflow-tooltip />
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'>
<el-link :href="item" target="_blank" type="primary">文件{{ i + 1 }}查看</el-link>
</div>
</div>
<div v-else>
暂无文件
</div>
</template>
</el-table-column>
<el-table-column label="操作人" prop="create_user" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
@ -52,6 +40,10 @@
type="danger" link @click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_const_prepare.supervision_first_meeting/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -61,6 +53,8 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showEdit = false" :detailConfig="detailConfig"
width="30vw" :column="1" />
</div>
</template>
@ -68,14 +62,16 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionFirstMeetingLists, apiSupervisionFirstMeetingDelete, apiSupervisionFirstMeetingDetail } from '@/api/supervision_first_meeting'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
const queryParams = reactive({
@ -123,5 +119,15 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionFirstMeetingDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -0,0 +1,161 @@
<template>
<div class="edit-popup">
<popup ref="popupRef" :async="true" width="80vw" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="100px">
<el-descriptions column="3" title="工程监理--巡视登记详情" border>
<el-descriptions-item label="项目名称" label-align="left" align="left">
{{ formData.project_name }}
</el-descriptions-item>
<el-descriptions-item label="编号" label-align="left" align="left">
{{ formData.inspection_code }}
</el-descriptions-item>
<el-descriptions-item label="巡视类型" label-align="left" align="left">
{{ formData.inspection_type_text }}
</el-descriptions-item>
<el-descriptions-item label="单位工程" label-align="left" align="left">
{{ formData.check_item_name }}
</el-descriptions-item>
<el-descriptions-item label="巡视部位" label-align="left" align="left">
{{ formData.inspection_position }}
</el-descriptions-item>
<el-descriptions-item label="施工人数" label-align="left" align="left">
{{ formData.workers }}
</el-descriptions-item>
<el-descriptions-item label="管理人数" label-align="left" align="left">
{{ formData.managers }}
</el-descriptions-item>
<el-descriptions-item label="巡视开始时间" label-align="left" align="left">
{{ formData.start_time }}
</el-descriptions-item>
<el-descriptions-item label="巡视结束时间" label-align="left" align="left">
{{ formData.end_time }}
</el-descriptions-item>
<el-descriptions-item label="巡视人员" label-align="left" align="left">
{{ formData.inspection_user }}
</el-descriptions-item>
<el-descriptions-item label="施工单位" label-align="left" align="left">
{{ formData.company_name }}
</el-descriptions-item>
<el-descriptions-item label="巡视内容" label-align="left" align="left">
{{ formData.inspection_content }}
</el-descriptions-item>
<el-descriptions-item label="设置重点关注" label-align="left" align="left">
{{ formData.is_important_text }}
</el-descriptions-item>
<el-descriptions-item label="关注人" label-align="left" align="left">
{{ formData.follow_user }}
</el-descriptions-item>
<el-descriptions-item label="检查表单选择" label-align="left" align="left">
{{ formData.check_item_detail_name }}
</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left">
<el-link class="mr-5" type="primary" v-for="item in formData.annex" :href="item.uri">
{{ item.name }}
</el-link>
</el-descriptions-item>
</el-descriptions>
</el-form>
<el-card class="mt-5">
<template #header>
巡视结果列表
</template>
<el-table :data="formData.inspection_result">
<el-table-column label="检查类别" prop="check_type" show-overflow-tooltip />
<el-table-column label="检查类容" prop="check_content" show-overflow-tooltip />
<el-table-column label="是否必检" prop="must_check_text" show-overflow-tooltip />
<el-table-column label="是否检查结果必检" prop="check_result_text" show-overflow-tooltip />
</el-table>
</el-card>
<el-card>
<template #header>
巡视问题列表
</template>
<el-table :data="formData.inspection_problem">
<el-table-column label="问题分类" prop="problem_cate_text" show-overflow-tooltip />
<el-table-column label="问题说明" prop="problem_description" show-overflow-tooltip />
<el-table-column label="问题名称" prop="problem_name" show-overflow-tooltip />
</el-table>
</el-card>
</popup>
</div>
</template>
<script lang="ts" setup name="supervisionInspectionEdit">
import Popup from '@/components/popup/index.vue'
import { apisupervision_inspection_result, apisupervision_problem } from '@/api/supervision_inspection'
import { timeFormat } from '@/utils/util'
const emit = defineEmits(['success', 'close'])
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const mode = ref('add')
//
const formData = reactive({
id: '',
project_id: '',
project_name: '',
inspection_code: '',
is_important: "",
inspection_type: '',
check_item_id: '',
check_item_name: "",
inspection_type_text: "",
check_item_name_text: "",
inspection_position: '',
workers: '',
managers: '',
start_time: timeFormat('', 'yyyy-mm-dd hh:MM:ss'),
end_time: '',
inspection_user: '',
company_id: 0,
company_name: '',
inspection_content: '',
create_time: "",
follow_user: '',
check_item_detail_ids: [],
check_item_detail_name: '',
annex: [],
create_user: '',
inspection_result: [],
is_important_text: "",
check_item_detail_name_text: "",
inspection_problem: []
})
//
const setFormData = async (data: Record<any, any>) => {
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key]
}
}
apisupervision_inspection_result({ inspection_id: formData.id }).then(res => {
formData.inspection_result = res.lists
})
apisupervision_problem({ data_id: formData.id, data_type: 1 }).then(res => {
formData.inspection_problem = res.lists
})
}
//
const open = (type = 'add') => {
mode.value = type
popupRef.value?.open()
}
//
const handleClose = () => {
emit('close')
}
defineExpose({
open,
setFormData,
})
</script>

View File

@ -86,8 +86,8 @@
<el-col :span="8">
<el-form-item label="设置重点关注" prop="is_importent">
<el-select v-model="formData.is_important" clearable placeholder="请选择" class="flex-1">
<el-option label="" :value="0" />
<el-option label="" :value="1" />
<el-option label="有效" :value="0" />
<el-option label="无效" :value="1" />
</el-select>
</el-form-item>
</el-col>

View File

@ -57,6 +57,10 @@
@click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_work.supervision_inspection/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -66,6 +70,7 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detail-popup v-if="showDetail" ref="detailRef" @success="getLists" @close="showEdit = false" />
</div>
</template>
@ -73,14 +78,16 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionInspectionLists, apiSupervisionInspectionDelete, apiSupervisionInspectionDetail } from '@/api/supervision_inspection'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
const queryParams = reactive({
@ -129,5 +136,14 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionInspectionDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -0,0 +1,79 @@
const detailConfig = {
title: "工程监理--第一次工地会议",
config: [
{
label: "所属单位",
value: "company_name"
},
{
label: "设备名称",
value: "name"
},
{
label: "资质名称1",
value: "qualification_name_one"
},
{
label: "认证机构1",
value: "certification_body_one"
},
{
label: "资质编号1",
value: "qualification_number_one"
},
{
label: "发证日期1",
value: "qualification_number_one"
}, {
label: "资质编号1",
value: "get_date_one"
}, {
label: "发证日期1",
value: "get_date_one"
}, {
label: "有效日期1",
value: "effective_date_one"
}, {
label: "资质1状态",
value: "qualification_one_status_text"
}, {
label: "资质名称2",
value: "qualification_name_two"
},
{
label: "认证机构2",
value: "certification_body_two"
},
{
label: "资质编号2",
value: "qualification_number_two"
}, {
label: "发证日期2",
value: "get_date_two"
}, {
label: "有效日期2",
value: "effective_date_two"
},
{
label: "资质2状态",
value: "qualification_two_status_text"
},
{
label: "创建人",
value: "create_user"
},
{
label: "创建时间",
value: "create_time"
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -1,222 +1,136 @@
<template>
<div class="edit-popup">
<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">
<el-form-item label="所属单位" prop="unit_qualification_id">
<el-input
v-model="formData.company_name"
clearable
placeholder="请输入所属单位"
@click="showDialog1 = true"
readonly
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="设备名称" prop="name">
<el-input
v-model="formData.name"
clearable
placeholder="请输入设备名称"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质名称1" prop="qualification_name_one">
<el-input
v-model="formData.qualification_name_one"
clearable
placeholder="请输入资质名称1"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="认证机构1" prop="certification_body_one">
<el-input
v-model="formData.certification_body_one"
clearable
placeholder="请输入认证机构1"
/>
</el-form-item>
</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-form-item>
</el-col>
<el-col :span="8">
<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-row>
<el-row>
<el-col :span="8">
<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>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质1状态 " prop="qualification_one_status">
<el-select
class="flex-1"
v-model="formData.qualification_one_status"
clearable
placeholder="请选择"
>
<el-option label="有效" :value="0" />
<el-option label="无效" :value="1" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质名称2" prop="qualification_name_two">
<el-input
v-model="formData.qualification_name_two"
clearable
placeholder="请输入资质名称2"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="认证机构2" prop="certification_body_two">
<el-input
v-model="formData.certification_body_two"
clearable
placeholder="请输入认证机构2"
/>
</el-form-item>
</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-form-item>
</el-col>
<el-col :span="8">
<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-row>
<el-row>
<el-col :span="8">
<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>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质2状态" prop="qualification_two_status">
<el-select
class="flex-1"
v-model="formData.qualification_two_status"
clearable
placeholder="请选择"
>
<el-option label="有效" :value="0" />
<el-option label="无效" :value="1" />
</el-select>
</el-form-item>
</el-col>
<createUserLable :formData="formData" flag></createUserLable>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="备注" prop="remark">
<el-input
v-model="formData.remark"
clearable
placeholder="请输入备注"
type="textarea"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="附件" prop="annex">
<uploadAnnex :formData="formData"></uploadAnnex>
</el-form-item>
</el-col>
</el-row>
<el-dialog v-model="showDialog1" title="选择单位" width="70%">
<dialogTable
:config="supervision_participating_units_qualifications"
@customEvent="customEvent1"
>
</dialogTable>
</el-dialog>
</el-form>
</popup>
</div>
<div class="edit-popup">
<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">
<el-form-item label="所属单位" prop="company_name">
<el-input v-model="formData.company_name" clearable placeholder="请输入所属单位"
@click="showDialog1 = true" readonly />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="设备名称" prop="name">
<el-input v-model="formData.name" clearable placeholder="请输入设备名称" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质名称1" prop="qualification_name_one">
<el-input v-model="formData.qualification_name_one" clearable placeholder="请输入资质名称1" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="认证机构1" prop="certification_body_one">
<el-input v-model="formData.certification_body_one" clearable placeholder="请输入认证机构1" />
</el-form-item>
</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-form-item>
</el-col>
<el-col :span="8">
<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" 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>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质1状态 " prop="qualification_one_status">
<el-select class="flex-1" v-model="formData.qualification_one_status" clearable
placeholder="请选择">
<el-option label="有效" :value="0" />
<el-option label="无效" :value="1" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质名称2" prop="qualification_name_two">
<el-input v-model="formData.qualification_name_two" clearable placeholder="请输入资质名称2" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="认证机构2" prop="certification_body_two">
<el-input v-model="formData.certification_body_two" clearable placeholder="请输入认证机构2" />
</el-form-item>
</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-form-item>
</el-col>
<el-col :span="8">
<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" 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>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质2状态" prop="qualification_two_status">
<el-select class="flex-1" v-model="formData.qualification_two_status" clearable
placeholder="请选择">
<el-option label="有效" :value="0" />
<el-option label="无效" :value="1" />
</el-select>
</el-form-item>
</el-col>
<createUserLable :formData="formData" flag></createUserLable>
<el-col :span="8">
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="附件" prop="annex">
<uploadAnnex :formData="formData"></uploadAnnex>
</el-form-item>
</el-col>
</el-row>
<el-dialog v-model="showDialog1" title="选择单位" width="70%">
<dialogTable :config="supervision_participating_units_qualifications" @customEvent="customEvent1">
</dialogTable>
</el-dialog>
</el-form>
</popup>
</div>
</template>
<script lang="ts" setup name="supervisionLargeEquipmentEdit">
import type { FormInstance } from "element-plus";
import Popup from "@/components/popup/index.vue";
import {
apiSupervisionLargeEquipmentAdd,
apiSupervisionLargeEquipmentEdit,
apiSupervisionLargeEquipmentAdd,
apiSupervisionLargeEquipmentEdit,
} from "@/api/supervision_large_equipment";
import { supervision_participating_units_qualifications } from "@/components/dialogTable/dialogTableConfig";
import type { PropType } from "vue";
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
default: () => ({}),
},
dictData: {
type: Object as PropType<Record<string, any[]>>,
default: () => ({}),
},
});
const emit = defineEmits(["success", "close"]);
const formRef = shallowRef<FormInstance>();
@ -226,198 +140,198 @@ const showDialog1 = ref(false);
//
const popupTitle = computed(() => {
return mode.value == "edit"
? "编辑工程监理--大型设备及仪器具"
: "新增工程监理--大型设备及仪器具";
return mode.value == "edit"
? "编辑工程监理--大型设备及仪器具"
: "新增工程监理--大型设备及仪器具";
});
//
const formData = reactive({
id: "",
unit_qualification_id: "",
company_name: "",
name: "",
qualification_name_one: "",
certification_body_one: "",
qualification_number_one: "",
get_date_one: "",
effective_date_one: "",
qualification_one_status: "",
qualification_name_two: "",
certification_body_two: "",
qualification_number_two: "",
get_date_two: "",
effective_date_two: "",
qualification_two_status: "",
remark: "",
annex: [],
create_user: "",
create_time: "",
id: "",
unit_qualification_id: "",
company_name: "",
name: "",
qualification_name_one: "",
certification_body_one: "",
qualification_number_one: "",
get_date_one: "",
effective_date_one: "",
qualification_one_status: "",
qualification_name_two: "",
certification_body_two: "",
qualification_number_two: "",
get_date_two: "",
effective_date_two: "",
qualification_two_status: "",
remark: "",
annex: [],
create_user: "",
create_time: "",
});
const customEvent1 = (e) => {
formData.unit_qualification_id = e.id;
formData.company_name = e.company_name;
showDialog1.value = false;
formData.unit_qualification_id = e.id;
formData.company_name = e.company_name;
showDialog1.value = false;
};
//
const formRules = reactive<any>({
unit_qualification_id: [
{
required: true,
message: "请选择项目",
trigger: ["blur"],
},
],
name: [
{
required: true,
message: "请输入设备名称",
trigger: ["blur"],
},
],
qualification_name_one: [
{
required: true,
message: "请输入资质名称1",
trigger: ["blur"],
},
],
certification_body_one: [
{
required: true,
message: "请输入认证机构1",
trigger: ["blur"],
},
],
qualification_number_one: [
{
required: true,
message: "请输入资质编号1",
trigger: ["blur"],
},
],
get_date_one: [
{
required: true,
message: "请输入发证日期1",
trigger: ["blur"],
},
],
effective_date_one: [
{
required: true,
message: "请输入有效日期1",
trigger: ["blur"],
},
],
qualification_one_status: [
{
required: true,
message: "请输入资质1状态 0-有效 1-无效",
trigger: ["blur"],
},
],
qualification_name_two: [
{
required: true,
message: "请输入资质名称2",
trigger: ["blur"],
},
],
certification_body_two: [
{
required: true,
message: "请输入认证机构2",
trigger: ["blur"],
},
],
qualification_number_two: [
{
required: true,
message: "请输入资质编号2",
trigger: ["blur"],
},
],
get_date_two: [
{
required: true,
message: "请输入发证日期2",
trigger: ["blur"],
},
],
effective_date_two: [
{
required: true,
message: "请输入有效日期2",
trigger: ["blur"],
},
],
qualification_two_status: [
{
required: true,
message: "请输入资质2状态 0-有效 1-无效",
trigger: ["blur"],
},
],
remark: [
{
required: true,
message: "请输入备注",
trigger: ["blur"],
},
],
create_user: [
{
required: true,
message: "请输入创建人",
trigger: ["blur"],
},
],
unit_qualification_id: [
{
required: true,
message: "请选择项目",
trigger: ["blur"],
},
],
name: [
{
required: true,
message: "请输入设备名称",
trigger: ["blur"],
},
],
qualification_name_one: [
{
required: true,
message: "请输入资质名称1",
trigger: ["blur"],
},
],
certification_body_one: [
{
required: true,
message: "请输入认证机构1",
trigger: ["blur"],
},
],
qualification_number_one: [
{
required: true,
message: "请输入资质编号1",
trigger: ["blur"],
},
],
get_date_one: [
{
required: true,
message: "请输入发证日期1",
trigger: ["blur"],
},
],
effective_date_one: [
{
required: true,
message: "请输入有效日期1",
trigger: ["blur"],
},
],
qualification_one_status: [
{
required: true,
message: "请输入资质1状态 0-有效 1-无效",
trigger: ["blur"],
},
],
qualification_name_two: [
{
required: true,
message: "请输入资质名称2",
trigger: ["blur"],
},
],
certification_body_two: [
{
required: true,
message: "请输入认证机构2",
trigger: ["blur"],
},
],
qualification_number_two: [
{
required: true,
message: "请输入资质编号2",
trigger: ["blur"],
},
],
get_date_two: [
{
required: true,
message: "请输入发证日期2",
trigger: ["blur"],
},
],
effective_date_two: [
{
required: true,
message: "请输入有效日期2",
trigger: ["blur"],
},
],
qualification_two_status: [
{
required: true,
message: "请输入资质2状态 0-有效 1-无效",
trigger: ["blur"],
},
],
remark: [
{
required: true,
message: "请输入备注",
trigger: ["blur"],
},
],
create_user: [
{
required: true,
message: "请输入创建人",
trigger: ["blur"],
},
],
});
//
const setFormData = async (data: Record<any, any>) => {
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key];
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key];
}
}
}
};
const getDetail = async (row: Record<string, any>) => {
const data = await apiSupervisionLargeEquipmentDetail({
id: row.id,
});
setFormData(data);
const data = await apiSupervisionLargeEquipmentDetail({
id: row.id,
});
setFormData(data);
};
//
const handleSubmit = async () => {
await formRef.value?.validate();
const data = { ...formData };
mode.value == "edit"
? await apiSupervisionLargeEquipmentEdit(data)
: await apiSupervisionLargeEquipmentAdd(data);
popupRef.value?.close();
emit("success");
await formRef.value?.validate();
const data = { ...formData };
mode.value == "edit"
? await apiSupervisionLargeEquipmentEdit(data)
: await apiSupervisionLargeEquipmentAdd(data);
popupRef.value?.close();
emit("success");
};
//
const open = (type = "add") => {
mode.value = type;
popupRef.value?.open();
mode.value = type;
popupRef.value?.open();
};
//
const handleClose = () => {
emit("close");
emit("close");
};
defineExpose({
open,
setFormData,
getDetail,
open,
setFormData,
getDetail,
});
</script>

View File

@ -61,6 +61,10 @@
type="danger" link @click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_qualification_review.supervision_large_equipment/detail']"
link @click="handleDetail(row.id)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -70,6 +74,7 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showEdit = false" :detailConfig="detailConfig" />
</div>
</template>
@ -80,10 +85,14 @@ import { apiSupervisionLargeEquipmentLists, apiSupervisionLargeEquipmentDelete,
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
@ -135,5 +144,15 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionLargeEquipmentDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -0,0 +1,88 @@
import { apisupervision_material_entry_detail, } from '@/api/supervision_material_entry'
const detailConfig = {
title: "工程监理--材料进场",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "采购单位",
value: "company_name"
},
{
label: "进场主题",
value: "theme"
},
{
label: "进场时间",
value: "enter_time"
},
{
label: "共同参与人",
value: "co_participant"
},
{
label: "进场结果",
value: "enter_result_text"
},
{
label: "是否平行检验",
value: "parallel_test_text"
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "创建人",
value: "create_user"
},
{
label: "创建时间",
value: "create_time"
},
],
table: {
title: "材料信息",
tableConfig: [
{
label: "材料名称",
value: 'name'
},
{
label: "材料品牌",
value: 'brand'
},
{
label: "单位",
value: 'unit'
},
{
label: "是否合同约定品牌",
value: 'contract_brand_text',
},
{
label: "型号",
value: 'model',
},
{
label: "进场数量",
value: 'entry_number'
},
],
fetchFun: apisupervision_material_entry_detail,
query: 'material_entry_id'
}
}
export default detailConfig;

View File

@ -43,14 +43,18 @@
<el-table-column label="是否平行检验" prop="parallel_test_text" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
<el-button v-perms="['supervision_work.supervision_material_entry/edit']" type="primary" link
@click="handleEdit(row)">
<el-button v-perms="['supervision_work.supervision_material_entry/edit']" type="primary"
link @click="handleEdit(row)">
编辑
</el-button>
<el-button v-perms="['supervision_work.supervision_material_entry/delete']" type="danger" link
@click="handleDelete(row.id)">
<el-button v-perms="['supervision_work.supervision_material_entry/delete']" type="danger"
link @click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_work.supervision_material_entry/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -60,6 +64,7 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showEdit = false" :detailConfig="detailConfig" />
</div>
</template>
@ -70,11 +75,14 @@ import { apiSupervisionMaterialEntryLists, apiSupervisionMaterialEntryDelete, ap
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
const queryParams = reactive({
@ -123,6 +131,14 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionMaterialEntryDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -0,0 +1,43 @@
const detailConfig = {
title: "工程监理--材料设备信息",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "材料/设备名称",
value: "name"
},
{
label: "材料/设备品牌",
value: "brand"
},
{
label: "型号",
value: "model"
},
{
label: "计数单位",
value: "unit"
},
{
label: "合同约定品牌",
value: "contract_brand_text"
},
{
label: "类型",
value: "type_text"
},
{
label: "备注",
value: "remark",
column: 1
},
],
}
export default detailConfig;

View File

@ -78,6 +78,10 @@
type="danger" link @click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_work.supervision_material_equipment_info/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -87,20 +91,25 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showEdit = false" :detailConfig="detailConfig"
width="30vw" :column="1" />
</div>
</template>
<script lang="ts" setup name="supervisionMaterialEquipmentInfoLists">
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionMaterialEquipmentInfoLists, apiSupervisionMaterialEquipmentInfoDelete } from '@/api/supervision_material_equipment_info'
import { timeFormat } from '@/utils/util'
import { apiSupervisionMaterialEquipmentInfoLists, apiSupervisionMaterialEquipmentInfoDelete, apiSupervisionMaterialEquipmentInfoDetail } from '@/api/supervision_material_equipment_info'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
@ -151,5 +160,14 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionMaterialEquipmentInfoDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -15,7 +15,7 @@ const detailConfig = {
},
{
label: "设备类型",
value: "device_type"
value: "device_type_text"
},
{
label: "设备序列号",
@ -41,7 +41,7 @@ const detailConfig = {
},
{
label: "是否显示",
value: 'is_show'
value: 'is_show_text'
},
],

View File

@ -72,8 +72,8 @@
type="danger" link @click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_project.supervision_monitoring_equipment/detail']"
type="danger" link @click="handleDetail(row.id)">
<el-button v-perms="['supervision_project.supervision_monitoring_equipment/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template>

View File

@ -16,7 +16,7 @@ const detailConfig = {
},
{
label: "单位类别",
value: "unit_type"
value: "unit_type_text"
},
{
label: "资质等级",

View File

@ -52,8 +52,8 @@
type="danger" link @click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_project.supervision_participating_units/detail']"
type="danger" link @click="handleDetail(row.id)">
<el-button v-perms="['supervision_project.supervision_participating_units/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template>

View File

@ -0,0 +1,48 @@
const detailConfig = {
title: "工程监理--第一次工地会议",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "所属单位",
value: "company_name"
},
{
label: "资质名称",
value: "qualification_name"
},
{
label: "资质编号",
value: "qualification_number"
},
{
label: "发证日期",
value: "get_date"
},
{
label: "有效日期",
value: "effective_date"
},
{
label: "资质状态",
value: "qualification_status_text"
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -2,7 +2,7 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
@close="handleClose">
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules" :disabled="mode == 'detail'">
<el-form-item label="项目名称" prop="project_name">
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
@click="showDialog = true" />
@ -38,7 +38,6 @@
</el-form-item>
<el-form-item label="附件">
<uploadAnnex :formData="formData"></uploadAnnex>
</el-form-item>
<el-dialog v-model="showDialog" title="选择项目" width="70%">
<dialogTable @customEvent="customEvent" :config="supervision_project" />
@ -76,18 +75,10 @@ const mode = ref('add')
const showDialog = ref(false)
const showDialog1 = ref(false)
const handleAvatarSuccess_four = (response: any) => {
if (!Array.isArray(formData.annex)) formData.annex = []
// @ts-ignore
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
//
const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑工程监理--参建单位资质' : '新增工程监理--参建单位资质'
return mode.value == 'edit' ? '编辑工程监理--参建单位资质' : '工程监理--参建单位资质'
})
//

View File

@ -52,6 +52,11 @@
type="danger" link @click="handleDelete(row.id)">
删除
</el-button>
<el-button
v-perms="['supervision_qualification_review.supervision_participating_units_qualifications/detail']"
link @click="handleDetail(row.id)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -61,6 +66,8 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showEdit = false" :detailConfig="detailConfig"
width="30vw" :column="1" />
</div>
</template>
@ -71,10 +78,15 @@ import { apiSupervisionParticipatingUnitsQualificationsLists, apiSupervisionPart
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
@ -110,11 +122,11 @@ const handleAdd = async () => {
}
//
const handleEdit = async (data: any) => {
const handleEdit = async (data: any, mode = 'add') => {
let res = await apiSupervisionParticipatingUnitsQualificationsDetail({ id: data.id })
showEdit.value = true
await nextTick()
editRef.value?.open('edit')
editRef.value?.open(mode)
editRef.value?.setFormData(res)
}
@ -125,5 +137,13 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionParticipatingUnitsQualificationsDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -71,7 +71,7 @@
@click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_prepare.supervision_planning/detail']" type="primary" link
<el-button v-perms="['supervision_prepare.supervision_planning/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>

View File

@ -7,11 +7,11 @@ const detailConfig = {
},
{
label: "行业",
value: "industry"
value: "industry_text"
},
{
label: "性质",
value: "nature"
value: "nature_text"
},
{
label: "建设单位",
@ -19,7 +19,7 @@ const detailConfig = {
},
{
label: "建设区域",
value: "build_area"
value: "build_area_text"
},
{
label: "项目地址",
@ -27,7 +27,7 @@ const detailConfig = {
},
{
label: "项目等级",
value: "project_level"
value: "project_level_text"
},
{
label: "总投资(万元)",
@ -88,7 +88,7 @@ const detailConfig = {
},
{
label: "工程状态",
value: "engineering_status"
value: "engineering_status_text"
},
{
label: "项目负责人员",

View File

@ -26,8 +26,7 @@
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="建设单位">
<el-input v-model="formData.build_unit" clearable placeholder="请输入建设单位" />
@ -65,14 +64,12 @@
</el-col>
<el-col :span="8">
<el-form-item label="立项日期">
<!-- <el-input v-model="formData.initiation_date" clearable placeholder="请输入立项日期" /> -->
<el-date-picker class="flex-1 !flex" v-model="formData.initiation_date" clearable
type="date" value-format="YYYY-MM-DD" placeholder="请选择日期">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="关联合同">
<el-input v-model="formData.contract" clearable placeholder="请输入关联合同" />
@ -91,8 +88,7 @@
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="实际竣工日期" label-width="120px">
<el-date-picker class="flex-1 !flex" v-model="formData.actual_end_date" clearable
@ -114,33 +110,8 @@
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="合同服务内容" label-width="120px">
<el-input v-model="formData.contract_content" clearable placeholder="请输入合同服务内容"
type="textarea" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目概况">
<el-input v-model="formData.project_overview" clearable placeholder="请输入项目概况"
type="textarea" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目要求">
<el-input v-model="formData.project_requirements" clearable placeholder="请输入项目要求"
type="textarea" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="备注">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="监管部门">
<el-input v-model="formData.supervision_department" clearable placeholder="请输入监管部门" />
@ -151,8 +122,7 @@
<el-input v-model="formData.implementation_department" clearable placeholder="请输入实施部门" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="项目部">
<el-input v-model="formData.project_department" clearable placeholder="请输入项目部" />
@ -172,21 +142,12 @@
<el-input v-model="formData.project_manager" clearable placeholder="请输入项目负责人员" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="甲方单位">
<el-input v-model="formData.part_a_unit" clearable placeholder="请输入甲方单位" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="附件">
<uploadAnnex :formData="formData"></uploadAnnex>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="创建人" prop="create_user">
<el-input v-model="formData.create_user" clearable placeholder="请输入创建人" />
@ -199,6 +160,35 @@
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="合同服务内容" label-width="120px">
<el-input v-model="formData.contract_content" clearable placeholder="请输入合同服务内容"
type="textarea" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目概况">
<el-input v-model="formData.project_overview" clearable placeholder="请输入项目概况"
type="textarea" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目要求">
<el-input v-model="formData.project_requirements" clearable placeholder="请输入项目要求"
type="textarea" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="备注">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="附件">
<uploadAnnex :formData="formData"></uploadAnnex>
</el-form-item>
</el-col>
</el-row>
</el-form>
</popup>

View File

@ -112,7 +112,7 @@
@click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_project.supervision_project/detail']" type="danger" link
<el-button v-perms="['supervision_project.supervision_project/detail']" link
@click="handleDetail(row)">
详情
</el-button>

View File

@ -0,0 +1,34 @@
const detailConfig = {
title: "工程监理--第一次工地会议",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "doc_name"
},
{
label: "文档简介",
value: "doc_desc"
},
{
label: "创建人",
value: "create_user"
},
{
label: "创建时间",
value: "create_time"
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -28,18 +28,6 @@
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="文档名称" prop="doc_name" show-overflow-tooltip />
<el-table-column label="文档简介" prop="doc_desc" show-overflow-tooltip />
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'>
<el-link :href="item" target="_blank" type="primary">文件{{ i + 1 }}查看</el-link>
</div>
</div>
<div v-else>
暂无文件
</div>
</template>
</el-table-column>
<el-table-column label="操作人" prop="create_user" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
@ -51,8 +39,8 @@
link @click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_const_prepare.supervision_rules/detail']" type="primary"
link @click="handleEdit(row, 'detail')">
<el-button v-perms="['supervision_const_prepare.supervision_rules/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template>
@ -64,20 +52,25 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showEdit = false" :detailConfig="detailConfig"
width="30vw" :column="1" />
</div>
</template>
<script lang="ts" setup name="supervisionRulesLists">
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionRulesLists, apiSupervisionRulesDelete } from '@/api/supervision_rules'
import { apiSupervisionRulesLists, apiSupervisionRulesDelete, apiSupervisionRulesDetail } from '@/api/supervision_rules'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
@ -125,5 +118,15 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionRulesDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -0,0 +1,34 @@
const detailConfig = {
title: "工程监理--第一次工地会议",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "doc_name"
},
{
label: "文档简介",
value: "doc_desc"
},
{
label: "创建人",
value: "create_user"
},
{
label: "创建时间",
value: "create_time"
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -30,18 +30,6 @@
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="文档名称" prop="doc_name" show-overflow-tooltip />
<el-table-column label="文档简介" prop="doc_desc" show-overflow-tooltip />
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'>
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
</div>
</div>
<div v-else>
暂无文件
</div>
</template>
</el-table-column>
<el-table-column label="操作人" prop="create_user" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
@ -53,8 +41,8 @@
type="danger" link @click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_const_prepare.supervision_rules_disclosure/detail']"
type="primary" link @click="handleEdit(row, 'detail')">
<el-button v-perms="['supervision_const_prepare.supervision_rules_disclosure/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template>
@ -66,21 +54,25 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showEdit = false" :detailConfig="detailConfig"
width="30vw" :column="1" />
</div>
</template>
<script lang="ts" setup name="supervisionRulesDisclosureLists">
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionRulesDisclosureLists, apiSupervisionRulesDisclosureDelete } from '@/api/supervision_rules_disclosure'
import { apiSupervisionRulesDisclosureLists, apiSupervisionRulesDisclosureDelete, apiSupervisionRulesDisclosureDetail } from '@/api/supervision_rules_disclosure'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
const queryParams = reactive({
@ -113,7 +105,7 @@ const handleAdd = async () => {
}
//
const handleEdit = async (data: any, mode = 'detail') => {
const handleEdit = async (data: any, mode = 'edit') => {
showEdit.value = true
await nextTick()
editRef.value?.open(mode)
@ -127,5 +119,15 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionRulesDisclosureDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -0,0 +1,86 @@
const detailConfig = {
title: "工程监理--施工管理人员",
config: [
{
label: "所属单位",
value: "company_name"
},
{
label: "姓名",
value: "name"
},
{
label: "身份证",
value: "id_card"
},
{
label: "技术职称",
value: "technical_title"
},
{
label: "岗位",
value: "job"
},
{
label: "资质名称1",
value: "qualification_name_one"
},
{
label: "认证机构1",
value: "certification_body_one"
},
{
label: "资质编号1",
value: "qualification_number_one"
},
{
label: "发证日期1",
value: "get_date_one"
},
{
label: "有效日期1",
value: "effective_date_one"
},
{
label: "资质1状态",
value: "qualification_one_status_text"
},
{
label: "资质名称2",
value: "qualification_name_two"
},
{
label: "认证机构2",
value: "certification_body_two"
},
{
label: "资质编号2",
value: "qualification_number_two"
}, {
label: "发证日期2",
value: "get_date_two"
}, {
label: "有效日期2",
value: "effective_date_two"
}, {
label: "资质2状态",
value: "qualification_two_status_text"
},
{
label: "创建人",
value: "create_user"
},
{
label: "创建时间",
value: "create_time"
},
{
label: "附件",
value: "annex",
column: 1
},
]
}
export default detailConfig;

View File

@ -5,7 +5,7 @@
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-row>
<el-col :span="8">
<el-form-item label="所属单位" prop="unit_qualification_id">
<el-form-item label="所属单位" prop="company_name">
<el-input v-model="formData.company_name" clearable placeholder="请输入所属单位"
@click="showDialog1 = true" readonly />
</el-form-item>
@ -20,8 +20,7 @@
<el-input v-model="formData.id_card" clearable placeholder="请输入身份证" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<createUserLable :formData="formData" flag></createUserLable>
<el-col :span="8">
<el-form-item label="技术职称">
@ -33,8 +32,7 @@
<el-input v-model="formData.job" clearable placeholder="请输入岗位" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="资质名称1" prop="qualification_name_one">
<el-input v-model="formData.qualification_name_one" clearable placeholder="请输入资质名称1" />
@ -50,8 +48,7 @@
<el-input v-model="formData.qualification_number_one" clearable placeholder="请输入资质编号1" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="发证日期1">
<el-date-picker class="flex-1 !flex" v-model="formData.get_date_one" clearable
@ -75,8 +72,7 @@
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="资质名称2" prop="qualification_name_two">
<el-input v-model="formData.qualification_name_two" clearable placeholder="请输入资质名称2" />
@ -92,8 +88,7 @@
<el-input v-model="formData.qualification_number_two" clearable placeholder="请输入资质编号2" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="发证日期2" prop="get_date_two">
<el-date-picker class="flex-1 !flex" v-model="formData.get_date_two" clearable
@ -117,8 +112,7 @@
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="备注">
@ -128,7 +122,6 @@
<el-col :span="8">
<el-form-item label="附件">
<uploadAnnex :formData="formData"></uploadAnnex>
</el-form-item>
</el-col>
</el-row>

View File

@ -65,6 +65,11 @@
type="danger" link @click="handleDelete(row.id)">
删除
</el-button>
<el-button
v-perms="['supervision_qualification_review.supervision_safety_management_personnel/edit']"
link @click="handleDetail(row.id)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -74,6 +79,8 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showEdit = false" :detailConfig="detailConfig" />
</div>
</template>
@ -81,13 +88,16 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionSafetyManagementPersonnelLists, apiSupervisionSafetyManagementPersonnelDelete, apiSupervisionSafetyManagementPersonnelDetail } from '@/api/supervision_safety_management_personnel'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
@ -139,5 +149,14 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionSafetyManagementPersonnelDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -0,0 +1,170 @@
<template>
<div class="edit-popup">
<popup ref="popupRef" :async="true" width="80vw" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="100px">
<el-descriptions column="3" title="工程监理--巡视登记详情" border>
<el-descriptions-item label="项目名称" label-align="left" align="left">
{{ formData.project_name }}
</el-descriptions-item>
<el-descriptions-item label="编号" label-align="left" align="left">
{{ formData.side_station_code }}
</el-descriptions-item>
<el-descriptions-item label="旁站类型" label-align="left" align="left">
{{ formData.side_station_type_text }}
</el-descriptions-item>
<el-descriptions-item label="单位工程" label-align="left" align="left">
{{ formData.check_item_name }}
</el-descriptions-item>
<el-descriptions-item label="部位" label-align="left" align="left">
{{ formData.position }}
</el-descriptions-item>
<el-descriptions-item label="施工人数" label-align="left" align="left">
{{ formData.workers }}
</el-descriptions-item>
<el-descriptions-item label="管理人数" label-align="left" align="left">
{{ formData.managers }}
</el-descriptions-item>
<el-descriptions-item label="旁站开始时间" label-align="left" align="left">
{{ formData.start_time }}
</el-descriptions-item>
<el-descriptions-item label="旁站结束时间" label-align="left" align="left">
{{ formData.end_time }}
</el-descriptions-item>
<el-descriptions-item label="施工单位" label-align="left" align="left">
{{ formData.company_name }}
</el-descriptions-item>
<el-descriptions-item label="现场施工情况" label-align="left" align="left">
{{ formData.situation }}
</el-descriptions-item>
<el-descriptions-item label="旁站" label-align="left" align="left">
{{ formData.side_station_result_text }}
</el-descriptions-item>
<el-descriptions-item label="旁站人员" label-align="left" align="left">
{{ formData.side_station_user }}
</el-descriptions-item>
<el-descriptions-item label="检查项选择" label-align="left" align="left">
{{ formData.check_item_detail_name }}
</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left">
<el-link class="mr-5" type="primary" v-for="item in formData.annex" :href="item.uri">
{{ item.name }}
</el-link>
</el-descriptions-item>
</el-descriptions>
</el-form>
<el-card class="mt-5">
<template #header>
巡视结果列表
</template>
<el-table :data="formData.side_result">
<el-table-column label="检查类别" prop="check_type" show-overflow-tooltip />
<el-table-column label="检查类容" prop="check_content" show-overflow-tooltip />
<el-table-column label="是否必检" prop="must_check_text" show-overflow-tooltip />
<el-table-column label="是否检查结果必检" prop="check_result_text" show-overflow-tooltip />
</el-table>
</el-card>
<el-card>
<template #header>
巡视问题列表
</template>
<el-table :data="formData.side_problem">
<el-table-column label="问题分类" prop="problem_cate_text" show-overflow-tooltip />
<el-table-column label="问题说明" prop="problem_description" show-overflow-tooltip />
<el-table-column label="问题名称" prop="problem_name" show-overflow-tooltip />
</el-table>
</el-card>
</popup>
</div>
</template>
<script lang="ts" setup name="supervisionInspectionEdit">
import Popup from '@/components/popup/index.vue'
import { apisupervision_side_station_result } from '@/api/supervision_side_station'
import { timeFormat } from '@/utils/util'
import { apisupervision_problem } from '@/api/supervision_inspection'
const emit = defineEmits(['success', 'close'])
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const mode = ref('add')
//
const formData = reactive({
id: '',
project_id: '',
side_station_code: '',
side_station_type: '',
check_item_id: '',
position: '',
company_id: '',
start_time: '',
end_time: '',
workers: '',
managers: '',
side_station_type_text: "",
situation: '',
side_station_result: '',
side_station_user: '',
check_item_detail_ids: [],
side_station_result_text: "",
annex: [],
create_user: "",
create_time: "",
project_name: '',
inspection_code: '',
is_important: "",
inspection_type: '',
check_item_name: "",
inspection_user: '',
company_name: '',
inspection_content: '',
is_importent: '',
follow_user: '',
check_item_detail_name: '',
side_result: [],
side_problem: []
})
//
const setFormData = async (data: Record<any, any>) => {
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key]
}
}
// apisupervision_inspection_result({ inspection_id: formData.id }).then(res => {
// formData.inspection_result = res.lists
// })
// apisupervision_problem({ data_id: formData.id, data_type: 1 }).then(res => {
// formData.inspection_problem = res.lists
// })
apisupervision_side_station_result({ side_station_id: formData.id }).then(res => {
formData.side_result = res.lists
})
apisupervision_problem({ data_id: formData.id, data_type: 2 }).then(res => {
formData.side_problem = res.lists
})
}
//
const open = (type = 'add') => {
mode.value = type
popupRef.value?.open()
}
//
const handleClose = () => {
emit('close')
}
defineExpose({
open,
setFormData,
})
</script>

View File

@ -56,6 +56,10 @@
@click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_work.supervision_side_station/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -65,6 +69,7 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detail-popup v-if="showDetail" ref="detailRef" @success="getLists" @close="showEdit = false" />
</div>
</template>
@ -72,13 +77,17 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionSideStationLists, apiSupervisionSideStationDelete, apiSupervisionSideStationDetail } from '@/api/supervision_side_station'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
@ -128,5 +137,15 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionSideStationDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -0,0 +1,61 @@
const detailConfig = {
title: "工程监理--特种作业人员资质",
config: [
{
label: "所属单位",
value: "company_name"
},
{
label: "姓名",
value: "name"
},
{
label: "工种",
value: "work_type"
},
{
label: "身份证",
value: "id_card"
},
{
label: "资格有效期",
value: "validity_period"
},
{
label: "进场时间",
value: "enter_time"
},
{
label: "离场时间",
value: "leave_time"
},
{
label: "状态",
value: "status_text"
},
{
label: "创建人",
value: "create_user"
},
{
label: "创建时间",
value: "create_time"
},
{
label: "备注",
value: "remark",
column: 1,
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -2,7 +2,7 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
@close="handleClose">
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules" :disabled="mode == 'detail'">
<el-form-item label="所属单位" prop="unit_qualification_id">
<el-input v-model="formData.company_name" clearable placeholder="请输入所属单位" readonly
@ -75,7 +75,7 @@ const showDialog1 = ref(false)
//
const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑工程监理--特种作业人员资质' : '新增工程监理--特种作业人员资质'
return mode.value == 'edit' ? '编辑工程监理--特种作业人员资质' : '工程监理--特种作业人员资质'
})
//
@ -96,14 +96,7 @@ const formData = reactive({
create_user: "",
create_time: "",
})
const handleAvatarSuccess_four = (response: any) => {
if (!Array.isArray(formData.annex)) formData.annex = []
// @ts-ignore
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
const customEvent1 = (e) => {
formData.unit_qualification_id = e.id

View File

@ -54,6 +54,11 @@
type="danger" link @click="handleDelete(row.id)">
删除
</el-button>
<el-button
v-perms="['supervision_qualification_review.supervision_special_operation_personnel/detail']"
link @click="handleDetail(row.id)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -63,6 +68,8 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showEdit = false" :detailConfig="detailConfig"
width="30vw" :column="1" />
</div>
</template>
@ -70,13 +77,16 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionSpecialOperationPersonnelLists, apiSupervisionSpecialOperationPersonnelDelete, apiSupervisionSpecialOperationPersonnelDetail } from '@/api/supervision_special_operation_personnel'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
@ -112,11 +122,11 @@ const handleAdd = async () => {
}
//
const handleEdit = async (data: any) => {
const handleEdit = async (data: any, mode = 'edit') => {
let res = await apiSupervisionSpecialOperationPersonnelDetail({ id: data.id })
showEdit.value = true
await nextTick()
editRef.value?.open('edit')
editRef.value?.open(mode)
editRef.value?.setFormData(res)
}
@ -127,5 +137,15 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionSpecialOperationPersonnelDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -0,0 +1,87 @@
import { apisupervision_problem } from '@/api/supervision_inspection'
const detailConfig = {
title: "工程监理--设备进场",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "试验类型",
value: "test_type"
},
{
label: "编号",
value: "code"
},
{
label: "见证人",
value: "witness"
},
{
label: "试验部位",
value: "test_site"
},
{
label: "单位名称",
value: "company_name",
},
{
label: "开始日期",
value: "start_date",
},
{
label: "结束日期",
value: "end_date",
},
{
label: "试验结果",
value: "test_result_text",
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "创建人",
value: "create_user"
},
{
label: "创建时间",
value: "create_time"
},
{
label: "附件",
value: "annex",
column: 1
},
],
table: {
title: "问题",
tableConfig: [
{
label: "问题分类",
value: 'problem_cate_text',
},
{
label: "问题说明",
value: 'problem_description'
},
{
label: "问题名称",
value: 'problem_name',
},
],
fetchFun: apisupervision_problem,
query: 'data_id'
}
}
export default detailConfig;

View File

@ -76,6 +76,10 @@
type="danger" link @click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['supervision_work.supervision_test_blocks_specimens/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -85,20 +89,25 @@
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showEdit = false" :detailConfig="detailConfig" />
</div>
</template>
<script lang="ts" setup name="supervisionTestBlocksSpecimensLists">
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionTestBlocksSpecimensLists, apiSupervisionTestBlocksSpecimensDelete } from '@/api/supervision_test_blocks_specimens'
import { apiSupervisionTestBlocksSpecimensLists, apiSupervisionTestBlocksSpecimensDelete, apiSupervisionTestBlocksSpecimensDetail } from '@/api/supervision_test_blocks_specimens'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
//
const showEdit = ref(false)
const showDetail = ref(false)
//
@ -150,5 +159,15 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionTestBlocksSpecimensDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -67,7 +67,10 @@ import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiSupervisionWitnessSamplingAdd, apiSupervisionWitnessSamplingEdit, apiSupervisionWitnessSamplingDetail } from '@/api/supervision_witness_sampling'
import { supervision_project, supervision_material_entry } from "@/components/dialogTable/dialogTableConfig"
// import { apisupervision_material_entry_detail, } from '@/api/supervision_material_entry'
import { apisupervision_material_entry_detail, } from '@/api/supervision_material_entry'
import { apiSupervisionWitnessSamplingListsDetail, } from '@/api/supervision_witness_sampling'
import type { PropType } from 'vue'
defineProps({
@ -210,7 +213,7 @@ const setFormData = async (data: Record<any, any>) => {
}
}
let res = await apisupervision_material_entry_detail({ material_entry_id: formData.material_entry_id })
let res = await apiSupervisionWitnessSamplingListsDetail({ witness_sampling_id: formData.id })
formData.sampling_detail = res.lists
}

View File

@ -93,7 +93,6 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionWitnessSamplingLists, apiSupervisionWitnessSamplingDelete, apiSupervisionWitnessSamplingDetail } from '@/api/supervision_witness_sampling'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import { useRouter } from 'vue-router'