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 }) 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"> class="mr-5">
{{ items.name }} {{ items.name }}
</el-link> </el-link>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="item.label" label-align="left" align="left" v-else> <el-descriptions-item :label="item.label" label-align="left" align="left" v-else>

View File

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

View File

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

View File

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

View File

@ -68,7 +68,7 @@
<template #empty> <template #empty>
<span class="cursor-pointer">暂无数据点击添加 <el-button @click="handleAdd">+</el-button></span> <span class="cursor-pointer">暂无数据点击添加 <el-button @click="handleAdd">+</el-button></span>
</template> </template>
<el-table-column label="序号" v-if="mode == 'add'" width="150px"> <el-table-column label="序号" width="150px">
<template #default="{ row }"> <template #default="{ row }">
<el-button @click="handleAdd">+</el-button> <el-button @click="handleAdd">+</el-button>
<el-button @click="handleDelete(row)">-</el-button> <el-button @click="handleDelete(row)">-</el-button>
@ -77,57 +77,57 @@
<el-table-column label="所在目录" prop="level" width="200px"> <el-table-column label="所在目录" prop="level" width="200px">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.directory" :disabled="mode != 'add'" /> <el-input v-model="scope.row.directory" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="单位工程名称" prop="unit_project_name" width="200px"> <el-table-column label="单位工程名称" prop="unit_project_name" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.unit_project_name" :disabled="mode != 'add'" /> <el-input v-model="row.unit_project_name" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="合同工程款总额" prop="contract_total_amount" width="200px"> <el-table-column label="合同工程款总额" prop="contract_total_amount" width="200px">
<template #default="{ row }"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column label="合同付款比例(%)" prop="dcntract_payment_rate" width="200px"> <el-table-column label="合同付款比例(%)" prop="dcntract_payment_rate" width="200px">
<template #default="{ row }"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column label="时间" prop="time" width="200px"> <el-table-column label="时间" prop="time" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-date-picker class="flex-1 !flex" v-model="row.time" clearable type="date" <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> </el-date-picker>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="形象进度" prop="image_progress" width="200px"> <el-table-column label="形象进度" prop="image_progress" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.image_progress" :disabled="mode != 'add'" /> <el-input v-model="row.image_progress" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="申报造价(土建)" prop="declared_cost_tj" width="200px"> <el-table-column label="申报造价(土建)" prop="declared_cost_tj" width="200px">
<template #default="scope"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column label="申报造价(安装)" prop="declared_cost_az" width="200px"> <el-table-column label="申报造价(安装)" prop="declared_cost_az" width="200px">
<template #default="scope"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column label="申报造价(其他)" prop="declared_cost_other" width="200px"> <el-table-column label="申报造价(其他)" prop="declared_cost_other" width="200px">
<template #default="scope"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column label="进度申报造价小计" prop="jdsbzj_xiaoji" width="200px"> <el-table-column label="进度申报造价小计" prop="jdsbzj_xiaoji" width="200px">
@ -139,25 +139,25 @@
<el-table-column label="审核造价(土建)" prop="audit_cost_tj" width="200px"> <el-table-column label="审核造价(土建)" prop="audit_cost_tj" width="200px">
<template #default="{ row }"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column label="审核造价(安装)" prop="audit_cost_az" width="200px"> <el-table-column label="审核造价(安装)" prop="audit_cost_az" width="200px">
<template #default="{ row }"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column label="审核造价(其他)" prop="audit_cost_other" width="200px"> <el-table-column label="审核造价(其他)" prop="audit_cost_other" width="200px">
<template #default="{ row }"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column label="进度审核造价小计" prop="jdshzj_xiaoji" width="200px"> <el-table-column label="进度审核造价小计" prop="jdshzj_xiaoji" width="200px">
<template #default="{ row }"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column label="审减额(元)" prop="deduction_amount" width="200px"> <el-table-column label="审减额(元)" prop="deduction_amount" width="200px">
@ -169,7 +169,7 @@
<el-table-column label="完成产值比例(%)" prop="completed_rate" width="200px"> <el-table-column label="完成产值比例(%)" prop="completed_rate" width="200px">
<template #default="{ row }"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column label="累计完成工程款" prop="ljwc_funds" width="200px"> <el-table-column label="累计完成工程款" prop="ljwc_funds" width="200px">
@ -194,7 +194,7 @@
<el-table-column label="备注" prop="remark" width="200px"> <el-table-column label="备注" prop="remark" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.remark" :disabled="mode != 'add'" /> <el-input v-model="row.remark" />
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -207,15 +207,14 @@
import type { FormInstance } from 'element-plus' import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue' import Popup from '@/components/popup/index.vue'
import { apiProjectProgressPaymentAdd, apiProjectProgressPaymentEdit, apiProjectProgressPaymentDetail } from '@/api/project_progress_payment' import { apiProjectProgressPaymentAdd, apiProjectProgressPaymentEdit, apiProjectProgressPaymentDetail } from '@/api/project_progress_payment'
import { apiProjectProgressPaymentDetailDelete } from '@/api/project_progress_payment_detail'
import type { PropType } from 'vue' import type { PropType } from 'vue'
import { cost_project } from "@/components/dialogTable/dialogTableConfig" import { cost_project } from "@/components/dialogTable/dialogTableConfig"
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
import useUserStore from "@/stores/modules/user"; import useUserStore from "@/stores/modules/user";
const userStore = useUserStore().userInfo; const userStore = useUserStore().userInfo;
defineProps({ defineProps({
dictData: { dictData: {
type: Object as PropType<Record<string, any[]>>, type: Object as PropType<Record<string, any[]>>,
@ -233,14 +232,7 @@ const showDialog = ref(false)
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目进度款' : '新增项目进度款' 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({ const formData = reactive({
id: '', id: '',
@ -326,8 +318,10 @@ const handleAdd = () => {
} }
const handleDelete = (row: any) => { const handleDelete = async (row: any) => {
if (formData.project_progress_payment_detail.length == 1) return if (row.id) {
await apiProjectProgressPaymentDetailDelete({ id: row.id })
}
const index = formData.project_progress_payment_detail.indexOf(row); const index = formData.project_progress_payment_detail.indexOf(row);
formData.project_progress_payment_detail.splice(index, 1); 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)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </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 <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"> @click="dialogTableVisible = true, formData.id = row.id" v-if="row.accept_result == 1">
验收 验收
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -65,6 +70,7 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <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"> <el-dialog v-model="dialogTableVisible" title="再验收" width="800" @confirm="handleAccept">
<!-- <div v-html="htmlContent"></div> --> <!-- <div v-html="htmlContent"></div> -->
<el-form ref="formRef" :model="formData" label-width="90px"> <el-form ref="formRef" :model="formData" label-width="90px">
@ -103,14 +109,18 @@
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionAcceptLists, apiSupervisionAcceptDelete, apiSupervisionAcceptDetail, apisupervision_accept } from '@/api/supervision_accept' import { apiSupervisionAcceptLists, apiSupervisionAcceptDelete, apiSupervisionAcceptDetail, apisupervision_accept } from '@/api/supervision_accept'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
const dialogTableVisible = ref(false) const dialogTableVisible = ref(false)
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
const formData = reactive({ const formData = reactive({
"id": 1, "id": 1,
@ -120,14 +130,6 @@ const formData = reactive({
"annex": [] "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({ 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() getLists()
</script> </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="project_name" show-overflow-tooltip />
<el-table-column label="文档名称" prop="doc_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="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="操作人" prop="create_user" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
@ -54,7 +42,7 @@
删除 删除
</el-button> </el-button>
<el-button v-perms="['supervision_const_prepare.supervision_commencement_report/detail']" <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> </el-button>
</template> </template>
@ -66,20 +54,25 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <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> </div>
</template> </template>
<script lang="ts" setup name="supervisionCommencementReportLists"> <script lang="ts" setup name="supervisionCommencementReportLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionCommencementReportLists, apiSupervisionCommencementReportDelete } from '@/api/supervision_commencement_report' import { apiSupervisionCommencementReportLists, apiSupervisionCommencementReportDelete, apiSupervisionCommencementReportDetail } from '@/api/supervision_commencement_report'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
@ -127,5 +120,13 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionCommencementReportDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </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> <template>
<div class="edit-popup"> <div class="edit-popup">
<popup <popup ref="popupRef" :title="popupTitle" :async="true" width="60vw" @confirm="handleSubmit"
ref="popupRef" @close="handleClose">
:title="popupTitle" <el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
:async="true" <el-row>
width="60vw" <el-col :span="8">
@confirm="handleSubmit" <el-form-item label="所属单位" prop="unit_qualification_id">
@close="handleClose" <el-input v-model="formData.company_name" clearable placeholder="请输入所属单位"
> @click="showDialog1 = true" readonly />
<el-form </el-form-item>
ref="formRef" </el-col>
:model="formData" <el-col :span="8">
label-width="90px" <el-form-item label="姓名" prop="name">
:rules="formRules" <el-input v-model="formData.name" clearable placeholder="请输入姓名" />
> </el-form-item>
<el-row> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="所属单位" prop="unit_qualification_id"> <el-form-item label="身份证">
<el-input <el-input v-model="formData.id_card" clearable placeholder="请输入身份证" />
v-model="formData.company_name" </el-form-item>
clearable </el-col>
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>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="技术职称" prop="technical_title"> <el-form-item label="技术职称" prop="technical_title">
<el-input <el-input v-model="formData.technical_title" clearable placeholder="请输入技术职称" />
v-model="formData.technical_title" </el-form-item>
clearable </el-col>
placeholder="请输入技术职称" <el-col :span="8">
/> <el-form-item label="岗位">
</el-form-item> <el-input v-model="formData.job" clearable placeholder="请输入岗位" />
</el-col> </el-form-item>
<el-col :span="8"> </el-col>
<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>
<div v-if="showDialog1"> <el-col :span="8">
<el-dialog v-model="showDialog1" title="选择单位" width="70%"> <el-form-item label="资质名称1">
<dialogTable <el-input v-model="formData.qualification_name_one" clearable placeholder="请输入资质名称1" />
:config="supervision_participating_units_qualifications" </el-form-item>
@customEvent="customEvent1" </el-col>
> <el-col :span="8">
</dialogTable> <el-form-item label="认证机构1">
</el-dialog> <el-input v-model="formData.certification_body_one" clearable placeholder="请输入认证机构1" />
</div> </el-form-item>
</el-form> </el-col>
</popup> <el-col :span="8">
</div> <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> </template>
<script lang="ts" setup name="supervisionConstructionManagementPersonnelEdit"> <script lang="ts" setup name="supervisionConstructionManagementPersonnelEdit">
import type { FormInstance } from "element-plus"; import type { FormInstance } from "element-plus";
import Popup from "@/components/popup/index.vue"; import Popup from "@/components/popup/index.vue";
import { import {
apiSupervisionConstructionManagementPersonnelAdd, apiSupervisionConstructionManagementPersonnelAdd,
apiSupervisionConstructionManagementPersonnelEdit, apiSupervisionConstructionManagementPersonnelEdit,
} from "@/api/supervision_construction_management_personnel"; } from "@/api/supervision_construction_management_personnel";
import type { PropType } from "vue"; import type { PropType } from "vue";
import { supervision_participating_units_qualifications } from "@/components/dialogTable/dialogTableConfig"; import { supervision_participating_units_qualifications } from "@/components/dialogTable/dialogTableConfig";
defineProps({ defineProps({
dictData: { dictData: {
type: Object as PropType<Record<string, any[]>>, type: Object as PropType<Record<string, any[]>>,
default: () => ({}), default: () => ({}),
}, },
}); });
const emit = defineEmits(["success", "close"]); const emit = defineEmits(["success", "close"]);
const formRef = shallowRef<FormInstance>(); const formRef = shallowRef<FormInstance>();
const popupRef = shallowRef<InstanceType<typeof Popup>>(); const popupRef = shallowRef<InstanceType<typeof Popup>>();
const mode = ref("add"); const mode = ref("add");
const showDialog = ref(false);
const showDialog1 = 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(() => { const popupTitle = computed(() => {
return mode.value == "edit" return mode.value == "edit"
? "编辑工程监理--施工管理人员" ? "编辑工程监理--施工管理人员"
: "新增工程监理--施工管理人员"; : "新增工程监理--施工管理人员";
}); });
// //
const formData = reactive({ const formData = reactive({
id: "", id: "",
project_id: "", project_id: "",
project_name: "", project_name: "",
name: "", name: "",
unit_qualification_id: "", unit_qualification_id: "",
company_name: "", company_name: "",
id_card: "", id_card: "",
technical_title: "", technical_title: "",
job: "", job: "",
qualification_name_one: "", qualification_name_one: "",
certification_body_one: "", certification_body_one: "",
qualification_number_one: "", qualification_number_one: "",
get_date_one: "", get_date_one: "",
effective_date_one: "", effective_date_one: "",
qualification_one_status: "", qualification_one_status: "",
qualification_name_two: "", qualification_name_two: "",
certification_body_two: "", certification_body_two: "",
qualification_number_two: "", qualification_number_two: "",
get_date_two: "", get_date_two: "",
effective_date_two: "", effective_date_two: "",
qualification_two_status: "", qualification_two_status: "",
remark: "", remark: "",
annex: [], annex: [],
create_user: "", create_user: "",
create_time: "", create_time: "",
}); });
const customEvent1 = (e) => { const customEvent1 = (e) => {
formData.unit_qualification_id = e.id; formData.unit_qualification_id = e.id;
formData.company_name = e.company_name; formData.company_name = e.company_name;
showDialog1.value = false; showDialog1.value = false;
}; };
// //
const formRules = reactive<any>({ const formRules = reactive<any>({
project_id: [ project_id: [
{ {
required: true, required: true,
message: "请选择项目", message: "请选择项目",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
name: [ name: [
{ {
required: true, required: true,
message: "请输入姓名", message: "请输入姓名",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
unit_qualification_id: [ unit_qualification_id: [
{ {
required: true, required: true,
message: "请输入所属单位", message: "请输入所属单位",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
id_card: [ id_card: [
{ {
required: true, required: true,
message: "请输入身份证", message: "请输入身份证",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
technical_title: [ technical_title: [
{ {
required: true, required: true,
message: "请输入技术职称", message: "请输入技术职称",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
job: [ job: [
{ {
required: true, required: true,
message: "请输入岗位", message: "请输入岗位",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
qualification_name_one: [ qualification_name_one: [
{ {
required: true, required: true,
message: "请输入资质名称1", message: "请输入资质名称1",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
certification_body_one: [ certification_body_one: [
{ {
required: true, required: true,
message: "请输入认证机构1", message: "请输入认证机构1",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
qualification_number_one: [ qualification_number_one: [
{ {
required: true, required: true,
message: "请输入资质编号1", message: "请输入资质编号1",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
get_date_one: [ get_date_one: [
{ {
required: true, required: true,
message: "请输入发证日期1", message: "请输入发证日期1",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
effective_date_one: [ effective_date_one: [
{ {
required: true, required: true,
message: "请输入有效日期1", message: "请输入有效日期1",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
qualification_one_status: [ qualification_one_status: [
{ {
required: true, required: true,
message: "请输入资质1状态 0-有效 1-无效", message: "请输入资质1状态 0-有效 1-无效",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
qualification_name_two: [ qualification_name_two: [
{ {
required: true, required: true,
message: "请输入资质名称2", message: "请输入资质名称2",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
certification_body_two: [ certification_body_two: [
{ {
required: true, required: true,
message: "请输入认证机构2", message: "请输入认证机构2",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
qualification_number_two: [ qualification_number_two: [
{ {
required: true, required: true,
message: "请输入资质编号2", message: "请输入资质编号2",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
get_date_two: [ get_date_two: [
{ {
required: true, required: true,
message: "请输入发证日期2", message: "请输入发证日期2",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
effective_date_two: [ effective_date_two: [
{ {
required: true, required: true,
message: "请输入有效日期2", message: "请输入有效日期2",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
qualification_two_status: [ qualification_two_status: [
{ {
required: true, required: true,
message: "请输入资质2状态 0-有效 1-无效", message: "请输入资质2状态 0-有效 1-无效",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
remark: [ remark: [
{ {
required: true, required: true,
message: "请输入备注", message: "请输入备注",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
create_user: [ create_user: [
{ {
required: true, required: true,
message: "请输入创建人", message: "请输入创建人",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
}); });
// //
const setFormData = async (data: Record<any, any>) => { const setFormData = async (data: Record<any, any>) => {
for (const key in formData) { for (const key in formData) {
if (data[key] != null && data[key] != undefined) { if (data[key] != null && data[key] != undefined) {
//@ts-ignore //@ts-ignore
formData[key] = data[key]; formData[key] = data[key];
}
} }
}
}; };
const getDetail = async (row: Record<string, any>) => { const getDetail = async (row: Record<string, any>) => {
const data = await apiSupervisionConstructionManagementPersonnelDetail({ const data = await apiSupervisionConstructionManagementPersonnelDetail({
id: row.id, id: row.id,
}); });
setFormData(data); setFormData(data);
}; };
// //
const handleSubmit = async () => { const handleSubmit = async () => {
await formRef.value?.validate(); await formRef.value?.validate();
const data = { ...formData }; const data = { ...formData };
mode.value == "edit" mode.value == "edit"
? await apiSupervisionConstructionManagementPersonnelEdit(data) ? await apiSupervisionConstructionManagementPersonnelEdit(data)
: await apiSupervisionConstructionManagementPersonnelAdd(data); : await apiSupervisionConstructionManagementPersonnelAdd(data);
popupRef.value?.close(); popupRef.value?.close();
emit("success"); emit("success");
}; };
// //
const open = (type = "add") => { const open = (type = "add") => {
mode.value = type; mode.value = type;
popupRef.value?.open(); popupRef.value?.open();
}; };
// //
const handleClose = () => { const handleClose = () => {
emit("close"); emit("close");
}; };
defineExpose({ defineExpose({
open, open,
setFormData, setFormData,
getDetail, getDetail,
}); });
</script> </script>

View File

@ -66,6 +66,11 @@
type="danger" link @click="handleDelete(row.id)"> type="danger" link @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button
v-perms="['supervision_qualification_review.supervision_construction_management_personnel/detail']"
link @click="handleDetail(row.id)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -75,6 +80,8 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <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> </div>
</template> </template>
@ -82,14 +89,16 @@
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionConstructionManagementPersonnelLists, apiSupervisionConstructionManagementPersonnelDelete, apiSupervisionConstructionManagementPersonnelDetail } from '@/api/supervision_construction_management_personnel' import { apiSupervisionConstructionManagementPersonnelLists, apiSupervisionConstructionManagementPersonnelDelete, apiSupervisionConstructionManagementPersonnelDetail } from '@/api/supervision_construction_management_personnel'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
const queryParams = reactive({ const queryParams = reactive({
@ -139,6 +148,15 @@ const handleDelete = async (id: number | any[]) => {
await apiSupervisionConstructionManagementPersonnelDelete({ id }) await apiSupervisionConstructionManagementPersonnelDelete({ id })
getLists() getLists()
} }
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionConstructionManagementPersonnelDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </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="project_name" show-overflow-tooltip />
<el-table-column label="文档名称" prop="doc_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="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="操作人" prop="create_user" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
@ -52,6 +40,10 @@
type="danger" link @click="handleDelete(row.id)"> type="danger" link @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['supervision_prepare.supervision_construction_planning/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -61,6 +53,8 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <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> </div>
</template> </template>
@ -68,13 +62,16 @@
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionConstructionPlanningLists, apiSupervisionConstructionPlanningDelete, apiSupervisionConstructionPlanningDetail } from '@/api/supervision_construction_planning' import { apiSupervisionConstructionPlanningLists, apiSupervisionConstructionPlanningDelete, apiSupervisionConstructionPlanningDetail } from '@/api/supervision_construction_planning'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
@ -113,7 +110,7 @@ const handleEdit = async (data: any) => {
showEdit.value = true showEdit.value = true
await nextTick() await nextTick()
editRef.value?.open('edit') editRef.value?.open('edit')
editRef.value?.setFormData(data) editRef.value?.setFormData(res)
} }
// //
@ -123,5 +120,15 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionConstructionPlanningDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </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)"> type="danger" link @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['supervision_prepare.supervision_contract_disclosure/detail']" <el-button v-perms="['supervision_prepare.supervision_contract_disclosure/detail']" link
type="primary" link @click="handleEdit(row, 'detail')"> @click="handleDetail(row.id)">
详情 详情
</el-button> </el-button>
</template> </template>
@ -53,6 +53,9 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <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> </div>
</template> </template>
@ -60,13 +63,15 @@
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionContractDisclosureLists, apiSupervisionContractDisclosureDelete, apiSupervisionContractDisclosureDetail } from '@/api/supervision_contract_disclosure' import { apiSupervisionContractDisclosureLists, apiSupervisionContractDisclosureDelete, apiSupervisionContractDisclosureDetail } from '@/api/supervision_contract_disclosure'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import detailConfig from './detail'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
@ -115,7 +120,14 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionContractDisclosureDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() 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="project_name" show-overflow-tooltip />
<el-table-column label="文档名称" prop="doc_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="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="操作人" prop="create_user" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
@ -52,6 +40,10 @@
type="danger" link @click="handleDelete(row.id)"> type="danger" link @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['supervision_const_prepare.supervision_design_disclosure/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -61,6 +53,8 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <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> </div>
</template> </template>
@ -68,14 +62,15 @@
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionDesignDisclosureLists, apiSupervisionDesignDisclosureDelete, apiSupervisionDesignDisclosureDetail } from '@/api/supervision_design_disclosure' import { apiSupervisionDesignDisclosureLists, apiSupervisionDesignDisclosureDelete, apiSupervisionDesignDisclosureDetail } from '@/api/supervision_design_disclosure'
import { timeFormat } from '@/utils/util' import detailConfig from './detail'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
const queryParams = reactive({ const queryParams = reactive({
@ -122,6 +117,15 @@ const handleDelete = async (id: number | any[]) => {
await apiSupervisionDesignDisclosureDelete({ id }) await apiSupervisionDesignDisclosureDelete({ id })
getLists() getLists()
} }
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionDesignDisclosureDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </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)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['supervision_work.supervision_device_entry/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -57,6 +61,8 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <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> </div>
</template> </template>
@ -67,11 +73,14 @@ import { apiSupervisionDeviceEntryLists, apiSupervisionDeviceEntryDelete, apiSup
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
const queryParams = reactive({ const queryParams = reactive({
@ -120,5 +129,15 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionDeviceEntryDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </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="project_name" show-overflow-tooltip />
<el-table-column label="文档名称" prop="doc_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="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="操作人" prop="create_user" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
@ -52,6 +40,10 @@
type="danger" link @click="handleDelete(row.id)"> type="danger" link @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['supervision_const_prepare.supervision_first_meeting/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -61,6 +53,8 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <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> </div>
</template> </template>
@ -68,14 +62,16 @@
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionFirstMeetingLists, apiSupervisionFirstMeetingDelete, apiSupervisionFirstMeetingDetail } from '@/api/supervision_first_meeting' import { apiSupervisionFirstMeetingLists, apiSupervisionFirstMeetingDelete, apiSupervisionFirstMeetingDetail } from '@/api/supervision_first_meeting'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
const queryParams = reactive({ const queryParams = reactive({
@ -123,5 +119,15 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionFirstMeetingDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </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-col :span="8">
<el-form-item label="设置重点关注" prop="is_importent"> <el-form-item label="设置重点关注" prop="is_importent">
<el-select v-model="formData.is_important" clearable placeholder="请选择" class="flex-1"> <el-select v-model="formData.is_important" clearable placeholder="请选择" class="flex-1">
<el-option label="" :value="0" /> <el-option label="有效" :value="0" />
<el-option label="" :value="1" /> <el-option label="无效" :value="1" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@ -57,6 +57,10 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['supervision_work.supervision_inspection/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -66,6 +70,7 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <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> </div>
</template> </template>
@ -73,14 +78,16 @@
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionInspectionLists, apiSupervisionInspectionDelete, apiSupervisionInspectionDetail } from '@/api/supervision_inspection' import { apiSupervisionInspectionLists, apiSupervisionInspectionDelete, apiSupervisionInspectionDetail } from '@/api/supervision_inspection'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
const queryParams = reactive({ const queryParams = reactive({
@ -129,5 +136,14 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionInspectionDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </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> <template>
<div class="edit-popup"> <div class="edit-popup">
<popup <popup ref="popupRef" :title="popupTitle" :async="true" width="60vw" @confirm="handleSubmit"
ref="popupRef" @close="handleClose">
:title="popupTitle" <el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
:async="true" <el-row>
width="60vw" <el-col :span="8">
@confirm="handleSubmit" <el-form-item label="所属单位" prop="company_name">
@close="handleClose" <el-input v-model="formData.company_name" clearable placeholder="请输入所属单位"
> @click="showDialog1 = true" readonly />
<el-form </el-form-item>
ref="formRef" </el-col>
:model="formData" <el-col :span="8">
label-width="90px" <el-form-item label="设备名称" prop="name">
:rules="formRules" <el-input v-model="formData.name" clearable placeholder="请输入设备名称" />
> </el-form-item>
<el-row> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="所属单位" prop="unit_qualification_id"> <el-form-item label="资质名称1" prop="qualification_name_one">
<el-input <el-input v-model="formData.qualification_name_one" clearable placeholder="请输入资质名称1" />
v-model="formData.company_name" </el-form-item>
clearable </el-col>
placeholder="请输入所属单位"
@click="showDialog1 = true" <el-col :span="8">
readonly <el-form-item label="认证机构1" prop="certification_body_one">
/> <el-input v-model="formData.certification_body_one" clearable placeholder="请输入认证机构1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="设备名称" prop="name"> <el-form-item label="资质编号1" prop="qualification_number_one">
<el-input <el-input v-model="formData.qualification_number_one" clearable placeholder="请输入资质编号1" />
v-model="formData.name" </el-form-item>
clearable </el-col>
placeholder="请输入设备名称" <el-col :span="8">
/> <el-form-item label="发证日期1" prop="get_date_one">
</el-form-item> <el-date-picker class="flex-1 !flex" v-model="formData.get_date_one" clearable
</el-col> value-format="YYYY-MM-DD " placeholder="选择日期">
<el-col :span="8"> </el-date-picker>
<el-form-item label="资质名称1" prop="qualification_name_one"> </el-form-item>
<el-input </el-col>
v-model="formData.qualification_name_one"
clearable <el-col :span="8">
placeholder="请输入资质名称1" <el-form-item label="有效日期1" prop="effective_date_one">
/> <el-date-picker class="flex-1 !flex" v-model="formData.effective_date_one" clearable
</el-form-item> value-format="YYYY-MM-DD " placeholder="选择日期">
</el-col> </el-date-picker>
</el-row> </el-form-item>
<el-row> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="认证机构1" prop="certification_body_one"> <el-form-item label="资质1状态 " prop="qualification_one_status">
<el-input <el-select class="flex-1" v-model="formData.qualification_one_status" clearable
v-model="formData.certification_body_one" placeholder="请选择">
clearable <el-option label="有效" :value="0" />
placeholder="请输入认证机构1" <el-option label="无效" :value="1" />
/> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="资质编号1" prop="qualification_number_one"> <el-form-item label="资质名称2" prop="qualification_name_two">
<el-input <el-input v-model="formData.qualification_name_two" clearable placeholder="请输入资质名称2" />
v-model="formData.qualification_number_one" </el-form-item>
clearable </el-col>
placeholder="请输入资质编号1"
/> <el-col :span="8">
</el-form-item> <el-form-item label="认证机构2" prop="certification_body_two">
</el-col> <el-input v-model="formData.certification_body_two" clearable placeholder="请输入认证机构2" />
<el-col :span="8"> </el-form-item>
<el-form-item label="发证日期1" prop="get_date_one"> </el-col>
<el-date-picker <el-col :span="8">
class="flex-1 !flex" <el-form-item label="资质编号2" prop="qualification_number_two">
v-model="formData.get_date_one" <el-input v-model="formData.qualification_number_two" clearable placeholder="请输入资质编号2" />
clearable </el-form-item>
value-format="YYYY-MM-DD " </el-col>
placeholder="选择日期" <el-col :span="8">
> <el-form-item label="发证日期2" prop="get_date_two">
</el-date-picker> <el-date-picker class="flex-1 !flex" v-model="formData.get_date_two" clearable
</el-form-item> value-format="YYYY-MM-DD " placeholder="选择日期">
</el-col> </el-date-picker>
</el-row> </el-form-item>
<el-row> </el-col>
<el-col :span="8">
<el-form-item label="有效日期1" prop="effective_date_one"> <el-col :span="8">
<el-date-picker <el-form-item label="有效日期2" prop="effective_date_two">
class="flex-1 !flex" <el-date-picker class="flex-1 !flex" v-model="formData.effective_date_two" clearable
v-model="formData.effective_date_one" value-format="YYYY-MM-DD " placeholder="选择日期">
clearable </el-date-picker>
value-format="YYYY-MM-DD " </el-form-item>
placeholder="选择日期" </el-col>
> <el-col :span="8">
</el-date-picker> <el-form-item label="资质2状态" prop="qualification_two_status">
</el-form-item> <el-select class="flex-1" v-model="formData.qualification_two_status" clearable
</el-col> placeholder="请选择">
<el-col :span="8"> <el-option label="有效" :value="0" />
<el-form-item label="资质1状态 " prop="qualification_one_status"> <el-option label="无效" :value="1" />
<el-select </el-select>
class="flex-1" </el-form-item>
v-model="formData.qualification_one_status" </el-col>
clearable <createUserLable :formData="formData" flag></createUserLable>
placeholder="请选择" <el-col :span="8">
> <el-form-item label="备注" prop="remark">
<el-option label="有效" :value="0" /> <el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
<el-option label="无效" :value="1" /> </el-form-item>
</el-select> </el-col>
</el-form-item> <el-col :span="8">
</el-col> <el-form-item label="附件" prop="annex">
<el-col :span="8"> <uploadAnnex :formData="formData"></uploadAnnex>
<el-form-item label="资质名称2" prop="qualification_name_two"> </el-form-item>
<el-input </el-col>
v-model="formData.qualification_name_two" </el-row>
clearable <el-dialog v-model="showDialog1" title="选择单位" width="70%">
placeholder="请输入资质名称2" <dialogTable :config="supervision_participating_units_qualifications" @customEvent="customEvent1">
/> </dialogTable>
</el-form-item> </el-dialog>
</el-col> </el-form>
</el-row> </popup>
<el-row> </div>
<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>
</template> </template>
<script lang="ts" setup name="supervisionLargeEquipmentEdit"> <script lang="ts" setup name="supervisionLargeEquipmentEdit">
import type { FormInstance } from "element-plus"; import type { FormInstance } from "element-plus";
import Popup from "@/components/popup/index.vue"; import Popup from "@/components/popup/index.vue";
import { import {
apiSupervisionLargeEquipmentAdd, apiSupervisionLargeEquipmentAdd,
apiSupervisionLargeEquipmentEdit, apiSupervisionLargeEquipmentEdit,
} from "@/api/supervision_large_equipment"; } from "@/api/supervision_large_equipment";
import { supervision_participating_units_qualifications } from "@/components/dialogTable/dialogTableConfig"; import { supervision_participating_units_qualifications } from "@/components/dialogTable/dialogTableConfig";
import type { PropType } from "vue"; import type { PropType } from "vue";
defineProps({ defineProps({
dictData: { dictData: {
type: Object as PropType<Record<string, any[]>>, type: Object as PropType<Record<string, any[]>>,
default: () => ({}), default: () => ({}),
}, },
}); });
const emit = defineEmits(["success", "close"]); const emit = defineEmits(["success", "close"]);
const formRef = shallowRef<FormInstance>(); const formRef = shallowRef<FormInstance>();
@ -226,198 +140,198 @@ const showDialog1 = ref(false);
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == "edit" return mode.value == "edit"
? "编辑工程监理--大型设备及仪器具" ? "编辑工程监理--大型设备及仪器具"
: "新增工程监理--大型设备及仪器具"; : "新增工程监理--大型设备及仪器具";
}); });
// //
const formData = reactive({ const formData = reactive({
id: "", id: "",
unit_qualification_id: "", unit_qualification_id: "",
company_name: "", company_name: "",
name: "", name: "",
qualification_name_one: "", qualification_name_one: "",
certification_body_one: "", certification_body_one: "",
qualification_number_one: "", qualification_number_one: "",
get_date_one: "", get_date_one: "",
effective_date_one: "", effective_date_one: "",
qualification_one_status: "", qualification_one_status: "",
qualification_name_two: "", qualification_name_two: "",
certification_body_two: "", certification_body_two: "",
qualification_number_two: "", qualification_number_two: "",
get_date_two: "", get_date_two: "",
effective_date_two: "", effective_date_two: "",
qualification_two_status: "", qualification_two_status: "",
remark: "", remark: "",
annex: [], annex: [],
create_user: "", create_user: "",
create_time: "", create_time: "",
}); });
const customEvent1 = (e) => { const customEvent1 = (e) => {
formData.unit_qualification_id = e.id; formData.unit_qualification_id = e.id;
formData.company_name = e.company_name; formData.company_name = e.company_name;
showDialog1.value = false; showDialog1.value = false;
}; };
// //
const formRules = reactive<any>({ const formRules = reactive<any>({
unit_qualification_id: [ unit_qualification_id: [
{ {
required: true, required: true,
message: "请选择项目", message: "请选择项目",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
name: [ name: [
{ {
required: true, required: true,
message: "请输入设备名称", message: "请输入设备名称",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
qualification_name_one: [ qualification_name_one: [
{ {
required: true, required: true,
message: "请输入资质名称1", message: "请输入资质名称1",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
certification_body_one: [ certification_body_one: [
{ {
required: true, required: true,
message: "请输入认证机构1", message: "请输入认证机构1",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
qualification_number_one: [ qualification_number_one: [
{ {
required: true, required: true,
message: "请输入资质编号1", message: "请输入资质编号1",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
get_date_one: [ get_date_one: [
{ {
required: true, required: true,
message: "请输入发证日期1", message: "请输入发证日期1",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
effective_date_one: [ effective_date_one: [
{ {
required: true, required: true,
message: "请输入有效日期1", message: "请输入有效日期1",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
qualification_one_status: [ qualification_one_status: [
{ {
required: true, required: true,
message: "请输入资质1状态 0-有效 1-无效", message: "请输入资质1状态 0-有效 1-无效",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
qualification_name_two: [ qualification_name_two: [
{ {
required: true, required: true,
message: "请输入资质名称2", message: "请输入资质名称2",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
certification_body_two: [ certification_body_two: [
{ {
required: true, required: true,
message: "请输入认证机构2", message: "请输入认证机构2",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
qualification_number_two: [ qualification_number_two: [
{ {
required: true, required: true,
message: "请输入资质编号2", message: "请输入资质编号2",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
get_date_two: [ get_date_two: [
{ {
required: true, required: true,
message: "请输入发证日期2", message: "请输入发证日期2",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
effective_date_two: [ effective_date_two: [
{ {
required: true, required: true,
message: "请输入有效日期2", message: "请输入有效日期2",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
qualification_two_status: [ qualification_two_status: [
{ {
required: true, required: true,
message: "请输入资质2状态 0-有效 1-无效", message: "请输入资质2状态 0-有效 1-无效",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
remark: [ remark: [
{ {
required: true, required: true,
message: "请输入备注", message: "请输入备注",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
create_user: [ create_user: [
{ {
required: true, required: true,
message: "请输入创建人", message: "请输入创建人",
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
}); });
// //
const setFormData = async (data: Record<any, any>) => { const setFormData = async (data: Record<any, any>) => {
for (const key in formData) { for (const key in formData) {
if (data[key] != null && data[key] != undefined) { if (data[key] != null && data[key] != undefined) {
//@ts-ignore //@ts-ignore
formData[key] = data[key]; formData[key] = data[key];
}
} }
}
}; };
const getDetail = async (row: Record<string, any>) => { const getDetail = async (row: Record<string, any>) => {
const data = await apiSupervisionLargeEquipmentDetail({ const data = await apiSupervisionLargeEquipmentDetail({
id: row.id, id: row.id,
}); });
setFormData(data); setFormData(data);
}; };
// //
const handleSubmit = async () => { const handleSubmit = async () => {
await formRef.value?.validate(); await formRef.value?.validate();
const data = { ...formData }; const data = { ...formData };
mode.value == "edit" mode.value == "edit"
? await apiSupervisionLargeEquipmentEdit(data) ? await apiSupervisionLargeEquipmentEdit(data)
: await apiSupervisionLargeEquipmentAdd(data); : await apiSupervisionLargeEquipmentAdd(data);
popupRef.value?.close(); popupRef.value?.close();
emit("success"); emit("success");
}; };
// //
const open = (type = "add") => { const open = (type = "add") => {
mode.value = type; mode.value = type;
popupRef.value?.open(); popupRef.value?.open();
}; };
// //
const handleClose = () => { const handleClose = () => {
emit("close"); emit("close");
}; };
defineExpose({ defineExpose({
open, open,
setFormData, setFormData,
getDetail, getDetail,
}); });
</script> </script>

View File

@ -61,6 +61,10 @@
type="danger" link @click="handleDelete(row.id)"> type="danger" link @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['supervision_qualification_review.supervision_large_equipment/detail']"
link @click="handleDetail(row.id)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -70,6 +74,7 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <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> </div>
</template> </template>
@ -80,10 +85,14 @@ import { apiSupervisionLargeEquipmentLists, apiSupervisionLargeEquipmentDelete,
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
@ -135,5 +144,15 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionLargeEquipmentDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </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="是否平行检验" prop="parallel_test_text" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['supervision_work.supervision_material_entry/edit']" type="primary" link <el-button v-perms="['supervision_work.supervision_material_entry/edit']" type="primary"
@click="handleEdit(row)"> link @click="handleEdit(row)">
编辑 编辑
</el-button> </el-button>
<el-button v-perms="['supervision_work.supervision_material_entry/delete']" type="danger" link <el-button v-perms="['supervision_work.supervision_material_entry/delete']" type="danger"
@click="handleDelete(row.id)"> link @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['supervision_work.supervision_material_entry/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -60,6 +64,7 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <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> </div>
</template> </template>
@ -70,11 +75,14 @@ import { apiSupervisionMaterialEntryLists, apiSupervisionMaterialEntryDelete, ap
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
const queryParams = reactive({ const queryParams = reactive({
@ -123,6 +131,14 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionMaterialEntryDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </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)"> type="danger" link @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['supervision_work.supervision_material_equipment_info/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -87,20 +91,25 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <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> </div>
</template> </template>
<script lang="ts" setup name="supervisionMaterialEquipmentInfoLists"> <script lang="ts" setup name="supervisionMaterialEquipmentInfoLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionMaterialEquipmentInfoLists, apiSupervisionMaterialEquipmentInfoDelete } from '@/api/supervision_material_equipment_info' import { apiSupervisionMaterialEquipmentInfoLists, apiSupervisionMaterialEquipmentInfoDelete, apiSupervisionMaterialEquipmentInfoDetail } from '@/api/supervision_material_equipment_info'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
@ -151,5 +160,14 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionMaterialEquipmentInfoDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </script>

View File

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

View File

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

View File

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

View File

@ -52,8 +52,8 @@
type="danger" link @click="handleDelete(row.id)"> type="danger" link @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['supervision_project.supervision_participating_units/detail']" <el-button v-perms="['supervision_project.supervision_participating_units/detail']" link
type="danger" link @click="handleDetail(row.id)"> @click="handleDetail(row.id)">
详情 详情
</el-button> </el-button>
</template> </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"> <div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" <popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
@close="handleClose"> @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-form-item label="项目名称" prop="project_name">
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly <el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
@click="showDialog = true" /> @click="showDialog = true" />
@ -38,7 +38,6 @@
</el-form-item> </el-form-item>
<el-form-item label="附件"> <el-form-item label="附件">
<uploadAnnex :formData="formData"></uploadAnnex> <uploadAnnex :formData="formData"></uploadAnnex>
</el-form-item> </el-form-item>
<el-dialog v-model="showDialog" title="选择项目" width="70%"> <el-dialog v-model="showDialog" title="选择项目" width="70%">
<dialogTable @customEvent="customEvent" :config="supervision_project" /> <dialogTable @customEvent="customEvent" :config="supervision_project" />
@ -76,18 +75,10 @@ const mode = ref('add')
const showDialog = ref(false) const showDialog = ref(false)
const showDialog1 = 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(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑工程监理--参建单位资质' : '新增工程监理--参建单位资质' return mode.value == 'edit' ? '编辑工程监理--参建单位资质' : '工程监理--参建单位资质'
}) })
// //

View File

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

View File

@ -71,7 +71,7 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </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)"> @click="handleDetail(row.id)">
详情 详情
</el-button> </el-button>

View File

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

View File

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

View File

@ -112,7 +112,7 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </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)"> @click="handleDetail(row)">
详情 详情
</el-button> </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="project_name" show-overflow-tooltip />
<el-table-column label="文档名称" prop="doc_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="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="操作人" prop="create_user" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
@ -51,8 +39,8 @@
link @click="handleDelete(row.id)"> link @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['supervision_const_prepare.supervision_rules/detail']" type="primary" <el-button v-perms="['supervision_const_prepare.supervision_rules/detail']" link
link @click="handleEdit(row, 'detail')"> @click="handleDetail(row.id)">
详情 详情
</el-button> </el-button>
</template> </template>
@ -64,20 +52,25 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <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> </div>
</template> </template>
<script lang="ts" setup name="supervisionRulesLists"> <script lang="ts" setup name="supervisionRulesLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' 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 { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
@ -125,5 +118,15 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionRulesDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </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="project_name" show-overflow-tooltip />
<el-table-column label="文档名称" prop="doc_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="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="操作人" prop="create_user" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
@ -53,8 +41,8 @@
type="danger" link @click="handleDelete(row.id)"> type="danger" link @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['supervision_const_prepare.supervision_rules_disclosure/detail']" <el-button v-perms="['supervision_const_prepare.supervision_rules_disclosure/detail']" link
type="primary" link @click="handleEdit(row, 'detail')"> @click="handleDetail(row.id)">
详情 详情
</el-button> </el-button>
</template> </template>
@ -66,21 +54,25 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <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> </div>
</template> </template>
<script lang="ts" setup name="supervisionRulesDisclosureLists"> <script lang="ts" setup name="supervisionRulesDisclosureLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' 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 { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
const queryParams = reactive({ 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 showEdit.value = true
await nextTick() await nextTick()
editRef.value?.open(mode) editRef.value?.open(mode)
@ -127,5 +119,15 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionRulesDisclosureDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </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-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-row> <el-row>
<el-col :span="8"> <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="请输入所属单位" <el-input v-model="formData.company_name" clearable placeholder="请输入所属单位"
@click="showDialog1 = true" readonly /> @click="showDialog1 = true" readonly />
</el-form-item> </el-form-item>
@ -20,8 +20,7 @@
<el-input v-model="formData.id_card" clearable placeholder="请输入身份证" /> <el-input v-model="formData.id_card" clearable placeholder="请输入身份证" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-row>
<createUserLable :formData="formData" flag></createUserLable> <createUserLable :formData="formData" flag></createUserLable>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="技术职称"> <el-form-item label="技术职称">
@ -33,8 +32,7 @@
<el-input v-model="formData.job" clearable placeholder="请输入岗位" /> <el-input v-model="formData.job" clearable placeholder="请输入岗位" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="资质名称1" prop="qualification_name_one"> <el-form-item label="资质名称1" prop="qualification_name_one">
<el-input v-model="formData.qualification_name_one" clearable placeholder="请输入资质名称1" /> <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-input v-model="formData.qualification_number_one" clearable placeholder="请输入资质编号1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="发证日期1"> <el-form-item label="发证日期1">
<el-date-picker class="flex-1 !flex" v-model="formData.get_date_one" clearable <el-date-picker class="flex-1 !flex" v-model="formData.get_date_one" clearable
@ -75,8 +72,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="资质名称2" prop="qualification_name_two"> <el-form-item label="资质名称2" prop="qualification_name_two">
<el-input v-model="formData.qualification_name_two" clearable placeholder="请输入资质名称2" /> <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-input v-model="formData.qualification_number_two" clearable placeholder="请输入资质编号2" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="发证日期2" prop="get_date_two"> <el-form-item label="发证日期2" prop="get_date_two">
<el-date-picker class="flex-1 !flex" v-model="formData.get_date_two" clearable <el-date-picker class="flex-1 !flex" v-model="formData.get_date_two" clearable
@ -117,8 +112,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="备注"> <el-form-item label="备注">
@ -128,7 +122,6 @@
<el-col :span="8"> <el-col :span="8">
<el-form-item label="附件"> <el-form-item label="附件">
<uploadAnnex :formData="formData"></uploadAnnex> <uploadAnnex :formData="formData"></uploadAnnex>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>

View File

@ -65,6 +65,11 @@
type="danger" link @click="handleDelete(row.id)"> type="danger" link @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button
v-perms="['supervision_qualification_review.supervision_safety_management_personnel/edit']"
link @click="handleDetail(row.id)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -74,6 +79,8 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <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> </div>
</template> </template>
@ -81,13 +88,16 @@
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionSafetyManagementPersonnelLists, apiSupervisionSafetyManagementPersonnelDelete, apiSupervisionSafetyManagementPersonnelDetail } from '@/api/supervision_safety_management_personnel' import { apiSupervisionSafetyManagementPersonnelLists, apiSupervisionSafetyManagementPersonnelDelete, apiSupervisionSafetyManagementPersonnelDetail } from '@/api/supervision_safety_management_personnel'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
@ -139,5 +149,14 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionSafetyManagementPersonnelDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </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)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['supervision_work.supervision_side_station/detail']" link
@click="handleDetail(row.id)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -65,6 +69,7 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <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> </div>
</template> </template>
@ -72,13 +77,17 @@
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionSideStationLists, apiSupervisionSideStationDelete, apiSupervisionSideStationDetail } from '@/api/supervision_side_station' import { apiSupervisionSideStationLists, apiSupervisionSideStationDelete, apiSupervisionSideStationDetail } from '@/api/supervision_side_station'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
@ -128,5 +137,15 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (id: any) => {
let res = await apiSupervisionSideStationDetail({ id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </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"> <div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" <popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
@close="handleClose"> @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-form-item label="所属单位" prop="unit_qualification_id">
<el-input v-model="formData.company_name" clearable placeholder="请输入所属单位" readonly <el-input v-model="formData.company_name" clearable placeholder="请输入所属单位" readonly
@ -75,7 +75,7 @@ const showDialog1 = ref(false)
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑工程监理--特种作业人员资质' : '新增工程监理--特种作业人员资质' return mode.value == 'edit' ? '编辑工程监理--特种作业人员资质' : '工程监理--特种作业人员资质'
}) })
// //
@ -96,14 +96,7 @@ const formData = reactive({
create_user: "", create_user: "",
create_time: "", 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) => { const customEvent1 = (e) => {
formData.unit_qualification_id = e.id formData.unit_qualification_id = e.id

View File

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

View File

@ -67,7 +67,10 @@ import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue' import Popup from '@/components/popup/index.vue'
import { apiSupervisionWitnessSamplingAdd, apiSupervisionWitnessSamplingEdit, apiSupervisionWitnessSamplingDetail } from '@/api/supervision_witness_sampling' import { apiSupervisionWitnessSamplingAdd, apiSupervisionWitnessSamplingEdit, apiSupervisionWitnessSamplingDetail } from '@/api/supervision_witness_sampling'
import { supervision_project, supervision_material_entry } from "@/components/dialogTable/dialogTableConfig" 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 { apisupervision_material_entry_detail, } from '@/api/supervision_material_entry'
import { apiSupervisionWitnessSamplingListsDetail, } from '@/api/supervision_witness_sampling'
import type { PropType } from 'vue' import type { PropType } from 'vue'
defineProps({ 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 formData.sampling_detail = res.lists
} }

View File

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