This commit is contained in:
zmj 2024-02-27 18:18:14 +08:00
parent 037fc2bf3a
commit 97a3bd2a8a
26 changed files with 2064 additions and 1376 deletions

View File

@ -1,4 +1,4 @@
NODE_ENV = 'development' NODE_ENV = 'development'
VITE_APP_BASE_URL = 'https://ceshi-engineering.lihaink.cn/' VITE_APP_BASE_URL = 'https://ceshi-engineering.lihaink.cn/'
# VITE_APP_BASE_URL = 'http://192.168.1.7:9090/' # VITE_APP_BASE_URL = 'http://192.168.1.11:9090/'

View File

@ -64,12 +64,14 @@ import { defineEmits } from "vue"
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
const props = defineProps({ const props = defineProps({
project_id: Number project_id: Number,
task_allocation: Number
}) })
// //
const queryParams = reactive({ const queryParams = reactive({
project_name: '', project_name: '',
project_num: '', project_num: '',
task_allocation: props.task_allocation || ''
}); });
const { dictData } = useDictData('consultation_type,cost_consultation_industry_nature') const { dictData } = useDictData('consultation_type,cost_consultation_industry_nature')

View File

@ -0,0 +1,74 @@
<template>
<div>
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="资质名称" prop="qualification_name">
<el-input class="w-[280px]" v-model="queryParams.qualification_name" clearable placeholder="请输入资质名称" />
</el-form-item>
<el-form-item label="资质编号" prop="qualification_number">
<el-input class="w-[280px]" v-model="queryParams.qualification_number" clearable
placeholder="请输入资质编号" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
<el-button @click="resetParams">重置</el-button>
</el-form-item>
</el-form>
<div class="mt-4">
<el-table :data="pager.lists" @cell-click="handleCurrentChange">
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="所属单位" prop="company_id" show-overflow-tooltip />
<el-table-column label="资质名称" prop="qualification_name" show-overflow-tooltip />
<el-table-column label="资质编号" prop="qualification_number" show-overflow-tooltip />
<el-table-column label="发证日期" prop="get_date" show-overflow-tooltip />
<el-table-column label="有效日期" prop="effective_date" show-overflow-tooltip />
<el-table-column label="资质状态" prop="qualification_status_text" show-overflow-tooltip />
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
</el-table>
</div>
<div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
</div>
</template>
<script lang="ts" setup>
import { usePaging } from "@/hooks/usePaging"
// import { apiSupervisionParticipatingUnitsLists, } from '@/api/supervision_participating_units'
import { apiSupervisionParticipatingUnitsQualificationsLists } from '@/api/supervision_participating_units_qualifications'
import { defineEmits } from "vue"
const props = defineProps({
project_id: Number
})
//
const queryParams = reactive({
qualification_name: '',
qualification_number: "",
project_id: props.project_id || ''
});
//
const emits = defineEmits(["customEvent"]);
//
const handleCurrentChange = (value: any) => {
emits("customEvent", value);
};
//
const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: apiSupervisionParticipatingUnitsQualificationsLists,
params: queryParams,
});
getLists();
</script>

View File

@ -1,57 +1,55 @@
<template> <template>
<div class="edit-popup"> <div class="edit-popup">
<popup <popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
ref="popupRef" <el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
:title="popupTitle" <el-form-item label="单据编号" prop="num">
:async="true" <el-input v-model="formData.num" clearable placeholder="系统自动填写" disabled />
width="550px" </el-form-item>
@confirm="handleSubmit" <el-form-item label="项目名称" prop="project">
@close="handleClose" <el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
> @click="showDialog = true" />
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules"> </el-form-item>
<el-form-item label="" prop="dataid"> <el-form-item label="项目编号" prop="project_num">
<el-input v-model="formData.dataid" clearable placeholder="请输入" /> <el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
</el-form-item> </el-form-item>
<el-form-item label="单据编号" prop="num"> <el-form-item label="任务名称" prop="task">
<el-input v-model="formData.num" clearable placeholder="请输入单据编号" /> <el-input v-model="formData.task" clearable placeholder="请输入任务名称" />
</el-form-item> </el-form-item>
<el-form-item label="项目名称" prop="project"> <el-form-item label="工序" prop="processes">
<el-input v-model="formData.project" clearable placeholder="请输入项目名称" /> <el-input v-model="formData.processes" clearable placeholder="请输入工序" />
</el-form-item> </el-form-item>
<el-form-item label="项目编号" prop="project_num"> <el-form-item label="资料份数" prop="number">
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" /> <el-input v-model="formData.number" clearable placeholder="请输入资料份数" />
</el-form-item> </el-form-item>
<el-form-item label="任务名称" prop="task"> <el-form-item label="登记日期" prop="apptime">
<el-input v-model="formData.task" clearable placeholder="请输入任务名称" /> <el-date-picker class="flex-1 !flex" v-model="formData.apptime" clearable type="date"
</el-form-item> value-format="YYYY-MM-DD" placeholder="请选择日期">
<el-form-item label="工序" prop="processes"> </el-date-picker>
<el-input v-model="formData.processes" clearable placeholder="请输入工序" /> </el-form-item>
</el-form-item> <el-form-item label="登记人" prop="person">
<el-form-item label="资料份数" prop="number"> <el-input v-model="formData.person" clearable placeholder="请输入登记人" />
<el-input v-model="formData.number" clearable placeholder="请输入资料份数" /> </el-form-item>
</el-form-item> <el-form-item label="备注" prop="tips">
<el-form-item label="登记日期" prop="apptime"> <el-input v-model="formData.tips" clearable placeholder="请输入备注" />
<el-input v-model="formData.apptime" clearable placeholder="请输入登记日期" /> </el-form-item>
</el-form-item> <el-form-item label="多行文本框1" prop="fd_1">
<el-form-item label="登记人" prop="person"> <el-input class="flex-1" v-model="formData.fd_1" type="textarea" rows="4" clearable
<el-input v-model="formData.person" clearable placeholder="请输入登记人" /> placeholder="请输入多行文本框1" />
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="tips"> <el-form-item label="多行文本框2" prop="fd_2">
<el-input v-model="formData.tips" clearable placeholder="请输入备注" /> <el-input class="flex-1" v-model="formData.fd_2" type="textarea" rows="4" clearable
</el-form-item> placeholder="请输入多行文本框2" />
<el-form-item label="多行文本框1" prop="fd_1"> </el-form-item>
<el-input class="flex-1" v-model="formData.fd_1" type="textarea" rows="4" clearable placeholder="请输入多行文本框1" /> <el-form-item label="多行文本框3" prop="fd_3">
</el-form-item> <el-input class="flex-1" v-model="formData.fd_3" type="textarea" rows="4" clearable
<el-form-item label="多行文本框2" prop="fd_2"> placeholder="请输入多行文本框3" />
<el-input class="flex-1" v-model="formData.fd_2" type="textarea" rows="4" clearable placeholder="请输入多行文本框2" /> </el-form-item>
</el-form-item> <el-dialog v-model="showDialog" title="选择项目" width="70%">
<el-form-item label="多行文本框3" prop="fd_3"> <cost_project @customEvent="customEvent" :task_allocation="1"></cost_project>
<el-input class="flex-1" v-model="formData.fd_3" type="textarea" rows="4" clearable placeholder="请输入多行文本框3" /> </el-dialog>
</el-form-item> </el-form>
</popup>
</el-form> </div>
</popup>
</div>
</template> </template>
<script lang="ts" setup name="approvalIssuanceAchievementDocumentsEdit"> <script lang="ts" setup name="approvalIssuanceAchievementDocumentsEdit">
@ -61,41 +59,49 @@ import { apiApprovalIssuanceAchievementDocumentsAdd, apiApprovalIssuanceAchievem
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
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>()
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 popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑成果文件审定、签发' : '新增成果文件审定、签发' return mode.value == 'edit' ? '编辑成果文件审定、签发' : '新增成果文件审定、签发'
}) })
// //
const formData = reactive({ const formData = reactive({
id: '', id: '',
dataid: '', dataid: '',
num: '', num: '',
project: '', project_id: '',
project_num: '', project_name: "",
task: '', project_num: '',
processes: '', task: '',
number: '', processes: '',
apptime: '', number: '',
person: '', apptime: '',
tips: '', person: '',
fd_1: '', tips: '',
fd_2: '', fd_1: '',
fd_3: '', fd_2: '',
fd_3: '',
projectInfo: {}
}) })
const customEvent = (e) => {
formData.project_id = e.id
formData.project_name = e.project_name
formData.project_num = e.project_num
showDialog.value = false
}
// //
const formRules = reactive<any>({ const formRules = reactive<any>({
@ -105,51 +111,54 @@ const formRules = reactive<any>({
// //
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]
}
} }
} formData.project_name = formData.projectInfo?.project_name
formData.project_num = formData.projectInfo?.project_num
formData.project = formData.projectInfo?.id
} }
const getDetail = async (row: Record<string, any>) => { const getDetail = async (row: Record<string, any>) => {
const data = await apiApprovalIssuanceAchievementDocumentsDetail({ const data = await apiApprovalIssuanceAchievementDocumentsDetail({
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 apiApprovalIssuanceAchievementDocumentsEdit(data) ? await apiApprovalIssuanceAchievementDocumentsEdit(data)
: await apiApprovalIssuanceAchievementDocumentsAdd(data) : await apiApprovalIssuanceAchievementDocumentsAdd(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

@ -1,83 +1,68 @@
<template> <template>
<div> <div>
<el-card class="!border-none mb-4" shadow="never"> <el-card class="!border-none mb-4" shadow="never">
<el-form <el-form class="mb-[-16px]" :model="queryParams" inline>
class="mb-[-16px]" <el-form-item label="项目名称" prop="project">
:model="queryParams" <el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
inline </el-form-item>
> <el-form-item label="项目编号" prop="project_num">
<el-form-item label="项目名称" prop="project"> <el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
<el-input class="w-[280px]" v-model="queryParams.project" 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>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-card> </el-card>
<el-card class="!border-none" v-loading="pager.loading" shadow="never"> <el-card class="!border-none" v-loading="pager.loading" shadow="never">
<el-button v-perms="['approval_issuance_achievement_documents/add']" type="primary" @click="handleAdd"> <el-button v-perms="['approval_issuance_achievement_documents/add']" type="primary" @click="handleAdd">
<template #icon> <template #icon>
<icon name="el-icon-Plus" /> <icon name="el-icon-Plus" />
</template> </template>
新增 新增
</el-button> </el-button>
<el-button <el-button v-perms="['approval_issuance_achievement_documents/delete']" :disabled="!selectData.length"
v-perms="['approval_issuance_achievement_documents/delete']" @click="handleDelete(selectData)">
:disabled="!selectData.length"
@click="handleDelete(selectData)"
>
删除
</el-button>
<div class="mt-4">
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column label="" prop="dataid" show-overflow-tooltip />
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project" show-overflow-tooltip />
<el-table-column label="项目编号" prop="project_num" show-overflow-tooltip />
<el-table-column label="任务名称" prop="task" show-overflow-tooltip />
<el-table-column label="工序" prop="processes" show-overflow-tooltip />
<el-table-column label="资料份数" prop="number" show-overflow-tooltip />
<el-table-column label="登记日期" prop="apptime" show-overflow-tooltip />
<el-table-column label="登记人" prop="person" show-overflow-tooltip />
<el-table-column label="备注" prop="tips" show-overflow-tooltip />
<el-table-column label="多行文本框1" prop="fd_1" show-overflow-tooltip />
<el-table-column label="多行文本框2" prop="fd_2" show-overflow-tooltip />
<el-table-column label="多行文本框3" prop="fd_3" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
<el-button
v-perms="['approval_issuance_achievement_documents/edit']"
type="primary"
link
@click="handleEdit(row)"
>
编辑
</el-button>
<el-button
v-perms="['approval_issuance_achievement_documents/delete']"
type="danger"
link
@click="handleDelete(row.id)"
>
删除 删除
</el-button> </el-button>
</template> <div class="mt-4">
</el-table-column> <el-table :data="pager.lists" @selection-change="handleSelectionChange">
</el-table> <el-table-column type="selection" width="55" />
</div> <!-- <el-table-column label="" prop="dataid" show-overflow-tooltip /> -->
<div class="flex mt-4 justify-end"> <el-table-column label="单据编号" prop="num" show-overflow-tooltip />
<pagination v-model="pager" @change="getLists" /> <el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
</div> <el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
</el-card> <el-table-column label="任务名称" prop="task" show-overflow-tooltip />
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <el-table-column label="工序" prop="processes" show-overflow-tooltip />
</div> <el-table-column label="资料份数" prop="number" show-overflow-tooltip />
<el-table-column label="登记日期" prop="apptime" show-overflow-tooltip />
<el-table-column label="登记人" prop="person" show-overflow-tooltip />
<el-table-column label="备注" prop="tips" show-overflow-tooltip />
<el-table-column label="多行文本框1" prop="fd_1" show-overflow-tooltip />
<el-table-column label="多行文本框2" prop="fd_2" show-overflow-tooltip />
<el-table-column label="多行文本框3" prop="fd_3" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
<el-button v-perms="['approval_issuance_achievement_documents/edit']" type="primary" link
@click="handleEdit(row)">
编辑
</el-button>
<el-button v-perms="['approval_issuance_achievement_documents/delete']" type="danger" link
@click="handleDelete(row.id)">
删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
</div>
</template> </template>
<script lang="ts" setup name="approvalIssuanceAchievementDocumentsLists"> <script lang="ts" setup name="approvalIssuanceAchievementDocumentsLists">
@ -95,8 +80,8 @@ const showEdit = ref(false)
// //
const queryParams = reactive({ const queryParams = reactive({
project: '', project: '',
project_num: '', project_num: '',
}) })
// //
@ -104,7 +89,7 @@ const selectData = ref<any[]>([])
// //
const handleSelectionChange = (val: any[]) => { const handleSelectionChange = (val: any[]) => {
selectData.value = val.map(({ id }) => id) selectData.value = val.map(({ id }) => id)
} }
// //
@ -112,30 +97,30 @@ const { dictData } = useDictData('')
// //
const { pager, getLists, resetParams, resetPage } = usePaging({ const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: apiApprovalIssuanceAchievementDocumentsLists, fetchFun: apiApprovalIssuanceAchievementDocumentsLists,
params: queryParams params: queryParams
}) })
// //
const handleAdd = async () => { const handleAdd = async () => {
showEdit.value = true showEdit.value = true
await nextTick() await nextTick()
editRef.value?.open('add') editRef.value?.open('add')
} }
// //
const handleEdit = async (data: any) => { 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(data)
} }
// //
const handleDelete = async (id: number | any[]) => { const handleDelete = async (id: number | any[]) => {
await feedback.confirm('确定要删除?') await feedback.confirm('确定要删除?')
await apiApprovalIssuanceAchievementDocumentsDelete({ id }) await apiApprovalIssuanceAchievementDocumentsDelete({ id })
getLists() getLists()
} }
getLists() getLists()

View File

@ -53,8 +53,8 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="所在省份" prop="province" show-overflow-tooltip /> <el-table-column label="所在省份" prop="province" show-overflow-tooltip />
<el-table-column label="所在市区" prop="city" show-overflow-tooltip /> <!-- <el-table-column label="所在市区" prop="city" show-overflow-tooltip />
<el-table-column label="具体地址" prop="address" show-overflow-tooltip /> <el-table-column label="具体地址" prop="address" show-overflow-tooltip /> -->
<el-table-column label="计划开始日期" prop="starting" show-overflow-tooltip /> <el-table-column label="计划开始日期" prop="starting" show-overflow-tooltip />
<el-table-column label="计划结束日期" prop="endtime" show-overflow-tooltip /> <el-table-column label="计划结束日期" prop="endtime" show-overflow-tooltip />
<el-table-column label="计划工期(天)" prop="jhgq" show-overflow-tooltip /> <el-table-column label="计划工期(天)" prop="jhgq" show-overflow-tooltip />

View File

@ -1,113 +1,228 @@
<template> <template>
<div class="edit-popup"> <div class="edit-popup">
<popup <popup ref="popupRef" :title="popupTitle" :async="true" width="60vw" @confirm="handleSubmit" @close="handleClose">
ref="popupRef" <el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
:title="popupTitle" <el-row>
:async="true" <el-col :span="8">
width="550px" <el-form-item label="单据编号" prop="num">
@confirm="handleSubmit" <el-input v-model="formData.num" clearable placeholder="系统自动填写" disabled />
@close="handleClose" </el-form-item>
> </el-col>
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules"> <el-col :span="8">
<el-form-item label="" prop="dataid"> <el-form-item label="项目名称" prop="project">
<el-input v-model="formData.dataid" clearable placeholder="请输入" /> <el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
</el-form-item> @click="showDialog = true" />
<el-form-item label="单据编号" prop="num"> </el-form-item>
<el-input v-model="formData.num" clearable placeholder="请输入单据编号" /> </el-col>
</el-form-item> <el-col :span="8">
<el-form-item label="项目名称" prop="project"> <el-form-item label="项目编号" prop="project_num">
<el-input v-model="formData.project" clearable placeholder="请输入项目名称" /> <el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
</el-form-item> </el-form-item>
<el-form-item label="项目编号" prop="project_num"> </el-col>
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" /> </el-row>
</el-form-item> <el-row>
<el-form-item label="登记日期" prop="apptime"> <el-col :span="8">
<el-input v-model="formData.apptime" clearable placeholder="请输入登记日期" /> <el-form-item label="登记日期" prop="apptime">
</el-form-item> <el-date-picker class="flex-1 !flex" v-model="formData.apptime" clearable type="date"
<el-form-item label="登记人" prop="person"> value-format="YYYY-MM-DD" placeholder="请选择日期">
<el-input v-model="formData.person" clearable placeholder="请输入登记人" /> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="资料份数" prop="number"> </el-col>
<el-input v-model="formData.number" clearable placeholder="请输入资料份数" /> <el-col :span="8">
</el-form-item> <el-form-item label="登记人" prop="person">
<el-form-item label="存放位置" prop="position"> <el-input v-model="formData.person" clearable placeholder="请输入登记人" />
<el-input v-model="formData.position" clearable placeholder="请输入存放位置" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="说明" prop="tips"> <el-col :span="8">
<el-input v-model="formData.tips" clearable placeholder="请输入说明" /> <el-form-item label="资料份数" prop="number">
</el-form-item> <el-input v-model="formData.number" clearable placeholder="请输入资料份数" />
<el-form-item label="投标文件" prop="bidding_file"> </el-form-item>
<material-picker v-model="formData.bidding_file" /> </el-col>
</el-form-item> </el-row>
<el-form-item label="招标控制价文件" prop="zbkzj_file"> <el-row>
<material-picker v-model="formData.zbkzj_file" /> <el-col :span="8">
</el-form-item> <el-form-item label="存放位置" prop="position">
<el-form-item label="工程造价合同" prop="gczjht_file"> <el-input v-model="formData.position" clearable placeholder="请输入存放位置" />
<material-picker v-model="formData.gczjht_file" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="项目变更、签证资料" prop="xmbgqzzl_file"> <el-col :span="8">
<material-picker v-model="formData.xmbgqzzl_file" /> <el-form-item label="说明" prop="tips">
</el-form-item> <el-input v-model="formData.tips" clearable placeholder="请输入说明" />
<el-form-item label="送审概算、预算、结算资料" prop="ssgsysjs_file"> </el-form-item>
<material-picker v-model="formData.ssgsysjs_file" /> </el-col>
</el-form-item> <el-col :span="8">
<el-form-item label="往来函件" prop="wlhj_file"> <el-form-item label="投标文件" prop="bidding_file">
<material-picker v-model="formData.wlhj_file" /> <annexUpload :annex="formData.bidding_file" @handleAvatarSuccess="handleAvatarSuccess_four"
</el-form-item> @delFile="delFileFn" />
<el-form-item label="其他资料" prop="other_file"> </el-form-item>
<material-picker v-model="formData.other_file" /> </el-col>
</el-form-item> </el-row>
<el-row>
</el-form> <el-col :span="8">
</popup> <el-form-item label="招标控制价文件" prop="zbkzj_file" label-width="140px">
</div> <annexUpload :annex="formData.zbkzj_file" @handleAvatarSuccess="handleAvatarSuccess_four1"
@delFile="delFileFn1" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="工程造价合同" prop="gczjht_file" label-width="120px">
<annexUpload :annex="formData.gczjht_file" @handleAvatarSuccess="handleAvatarSuccess_four2"
@delFile="delFileFn2" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目变更、签证资料" prop="xmbgqzzl_file" label-width="170px">
<annexUpload :annex="formData.xmbgqzzl_file" @handleAvatarSuccess="handleAvatarSuccess_four3"
@delFile="delFileFn3" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="送审概算、预算、结算资料" prop="ssgsysjs_file" label-width="200px">
<!-- <material-picker v-model="formData.ssgsysjs_file" /> -->
<annexUpload :annex="formData.ssgsysjs_file" @handleAvatarSuccess="handleAvatarSuccess_four4"
@delFile="delFileFn4" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="往来函件" prop="wlhj_file">
<annexUpload :annex="formData.wlhj_file" @handleAvatarSuccess="handleAvatarSuccess_four5"
@delFile="delFileFn5" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="其他资料" prop="other_file">
<!-- <material-picker v-model="formData.other_file" /> -->
<annexUpload :annex="formData.other_file" @handleAvatarSuccess="handleAvatarSuccess_four6"
@delFile="delFileFn6" />
</el-form-item>
</el-col>
</el-row>
<el-dialog v-model="showDialog" title="选择项目" width="70%">
<cost_project @customEvent="customEvent" :task_allocation="1"></cost_project>
</el-dialog>
</el-form>
</popup>
</div>
</template> </template>
<script lang="ts" setup name="dataReceptionEdit"> <script lang="ts" setup name="dataReceptionEdit">
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 { apiDataReceptionAdd, apiDataReceptionEdit, apiDataReceptionDetail } from '@/api/data_reception' import { apiDataReceptionAdd, apiDataReceptionEdit, } from '@/api/data_reception'
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
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>()
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 popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑资料接收' : '新增资料接收' return mode.value == 'edit' ? '编辑资料接收' : '新增资料接收'
}) })
// //
const formData = reactive({ const formData = reactive({
id: '', id: '',
dataid: '', dataid: '',
num: '', num: '',
project: '', project_id: '',
project_num: '', project_name: "",
apptime: '', project_num: "",
person: '', apptime: '',
number: '', person: '',
position: '', number: '',
tips: '', position: '',
bidding_file: '', tips: '',
zbkzj_file: '', bidding_file: [],
gczjht_file: '', zbkzj_file: [],
xmbgqzzl_file: '', gczjht_file: [],
ssgsysjs_file: '', xmbgqzzl_file: [],
wlhj_file: '', ssgsysjs_file: [],
other_file: '', wlhj_file: [],
other_file: [],
projectInfo: {}
}) })
const customEvent = (e) => {
formData.project_id = e.id
formData.project_name = e.project_name
formData.project_num = e.project_num
showDialog.value = false
}
const handleAvatarSuccess_four = (response: any) => {
// @ts-ignore
response.code != 0 ? formData.bidding_file.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn = (index: number) => { formData.bidding_file.splice(index, 1) }
const handleAvatarSuccess_four1 = (response: any) => {
// @ts-ignore
response.code != 0 ? formData.zbkzj_file.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn1 = (index: number) => { formData.zbkzj_file.splice(index, 1) }
const handleAvatarSuccess_four2 = (response: any) => {
// @ts-ignore
response.code != 0 ? formData.gczjht_file.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn2 = (index: number) => { formData.gczjht_file.splice(index, 1) }
const handleAvatarSuccess_four3 = (response: any) => {
// @ts-ignore
response.code != 0 ? formData.xmbgqzzl_file.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn3 = (index: number) => { formData.xmbgqzzl_file.splice(index, 1) }
const handleAvatarSuccess_four4 = (response: any) => {
// @ts-ignore
response.code != 0 ? formData.ssgsysjs_file.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn4 = (index: number) => { formData.ssgsysjs_file.splice(index, 1) }
const handleAvatarSuccess_four5 = (response: any) => {
// @ts-ignore
response.code != 0 ? formData.wlhj_file.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn5 = (index: number) => { formData.wlhj_file.splice(index, 1) }
const handleAvatarSuccess_four6 = (response: any) => {
// @ts-ignore
response.code != 0 ? formData.other_file.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn6 = (index: number) => { formData.other_file.splice(index, 1) }
// //
const formRules = reactive<any>({ const formRules = reactive<any>({
@ -117,51 +232,53 @@ const formRules = reactive<any>({
// //
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]
}
} }
} formData.project_name = formData.projectInfo?.project_name
formData.project_id = formData.projectInfo?.id
formData.project_num = formData.projectInfo?.project_num
} }
const getDetail = async (row: Record<string, any>) => { const getDetail = async (row: Record<string, any>) => {
const data = await apiDataReceptionDetail({ const data = await apiDataReceptionDetail({
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 apiDataReceptionEdit(data) ? await apiDataReceptionEdit(data)
: await apiDataReceptionAdd(data) : await apiDataReceptionAdd(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

@ -1,11 +1,7 @@
<template> <template>
<div> <div>
<el-card class="!border-none mb-4" shadow="never"> <el-card class="!border-none mb-4" shadow="never">
<el-form <el-form class="mb-[-16px]" :model="queryParams" inline>
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.num" clearable placeholder="请输入单据编号" />
</el-form-item> </el-form-item>
@ -29,20 +25,15 @@
</template> </template>
新增 新增
</el-button> </el-button>
<el-button <el-button v-perms="['data_reception/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
v-perms="['data_reception/delete']"
:disabled="!selectData.length"
@click="handleDelete(selectData)"
>
删除 删除
</el-button> </el-button>
<div class="mt-4"> <div class="mt-4">
<el-table :data="pager.lists" @selection-change="handleSelectionChange"> <el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column label="" prop="dataid" show-overflow-tooltip />
<el-table-column label="单据编号" prop="num" show-overflow-tooltip /> <el-table-column label="单据编号" prop="num" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project" show-overflow-tooltip /> <el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
<el-table-column label="项目编号" prop="project_num" show-overflow-tooltip /> <el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
<el-table-column label="登记日期" prop="apptime" show-overflow-tooltip /> <el-table-column label="登记日期" prop="apptime" show-overflow-tooltip />
<el-table-column label="登记人" prop="person" show-overflow-tooltip /> <el-table-column label="登记人" prop="person" show-overflow-tooltip />
<el-table-column label="资料份数" prop="number" show-overflow-tooltip /> <el-table-column label="资料份数" prop="number" show-overflow-tooltip />
@ -51,27 +42,17 @@
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button <el-button v-perms="['data_reception/edit']" type="primary" link @click="handleEdit(row)">
v-perms="['data_reception/edit']"
type="primary"
link
@click="handleEdit(row)"
>
编辑 编辑
</el-button> </el-button>
<el-button <el-button v-perms="['data_reception/delete']" type="danger" link @click="handleDelete(row.id)">
v-perms="['data_reception/delete']"
type="danger"
link
@click="handleDelete(row.id)"
>
删除 删除
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div class="flex mt-4 justify-end"> <div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" /> <pagination v-model="pager" @change="getLists" />
</div> </div>
</el-card> </el-card>
@ -82,7 +63,7 @@
<script lang="ts" setup name="dataReceptionLists"> <script lang="ts" setup name="dataReceptionLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiDataReceptionLists, apiDataReceptionDelete } from '@/api/data_reception' import { apiDataReceptionLists, apiDataReceptionDelete, apiDataReceptionDetail } from '@/api/data_reception'
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'
@ -125,10 +106,11 @@ const handleAdd = async () => {
// //
const handleEdit = async (data: any) => { const handleEdit = async (data: any) => {
let res = await apiDataReceptionDetail({ id: data.id })
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)
} }
// //

View File

@ -35,6 +35,8 @@
<el-table-column label="岗位名称" prop="name" min-width="100" /> <el-table-column label="岗位名称" prop="name" min-width="100" />
<el-table-column label="排序" prop="sort" min-width="100" /> <el-table-column label="排序" prop="sort" min-width="100" />
<el-table-column label="组织" prop="org_name" min-width="100" />
<el-table-column label="所属部门" prop="dept_name" min-width="100" />
<el-table-column label="备注" prop="remark" min-width="100" show-overflow-tooltip /> <el-table-column label="备注" prop="remark" min-width="100" show-overflow-tooltip />
<el-table-column label="添加时间" prop="create_time" min-width="180" /> <el-table-column label="添加时间" prop="create_time" min-width="180" />
<el-table-column label="状态" prop="status" min-width="100"> <el-table-column label="状态" prop="status" min-width="100">

View File

@ -1,63 +1,99 @@
<template> <template>
<div class="edit-popup"> <div class="edit-popup">
<popup <popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
ref="popupRef" <el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
:title="popupTitle" <el-row>
:async="true" <el-col :span="8">
width="550px" <el-form-item label="单据编号" prop="num">
@confirm="handleSubmit" <el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
@close="handleClose" </el-form-item>
> </el-col>
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules"> <el-col :span="8">
<el-form-item label="" prop="dataid"> <el-form-item label="项目名称" prop="project">
<el-input v-model="formData.dataid" clearable placeholder="请输入" /> <el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
</el-form-item> @click="showDialog = true" />
<el-form-item label="单据编号" prop="num"> </el-form-item>
<el-input v-model="formData.num" clearable placeholder="请输入单据编号" /> </el-col>
</el-form-item> <el-col :span="8">
<el-form-item label="项目名称" prop="project"> <el-form-item label="项目编号" prop="project_num">
<el-input v-model="formData.project" clearable placeholder="请输入项目名称" /> <el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" readonly />
</el-form-item> </el-form-item>
<el-form-item label="项目编号" prop="project_num"> </el-col>
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" /> </el-row>
</el-form-item> <el-row>
<el-form-item label="项目负责人" prop="head"> <el-col :span="8">
<el-input v-model="formData.head" clearable placeholder="请输入项目负责人" /> <el-form-item label="项目负责人" prop="head">
</el-form-item> <el-input v-model="formData.head" clearable placeholder="请输入项目负责人" readonly />
<el-form-item label="关联合同" prop="affcontract"> </el-form-item>
<el-input v-model="formData.affcontract" clearable placeholder="请输入关联合同" /> </el-col>
</el-form-item> <el-col :span="8">
<el-form-item label="行业" prop="industry"> <el-form-item label="关联合同" prop="affcontract">
<el-input v-model="formData.industry" clearable placeholder="请输入行业" /> <el-input v-model="formData.affcontract" clearable placeholder="请输入关联合同" />
</el-form-item> </el-form-item>
<el-form-item label="项目回款总额" prop="hk"> </el-col>
<el-input v-model="formData.hk" clearable placeholder="请输入项目回款总额" /> <el-col :span="8">
</el-form-item> <el-form-item label="行业" prop="industry">
<el-form-item label="提成比例(%" prop="rate"> <el-select class="flex-1" v-model="formData.industry" clearable placeholder="请选择行业类型">
<el-input v-model="formData.rate" clearable placeholder="请输入提成比例(%" /> <el-option v-for="(item, index) in dictData.supervision_project_industry" :key="index"
</el-form-item> :label="item.name" :value="item.value" />
<el-form-item label="应提成总金额" prop="ticheng"> </el-select>
<el-input v-model="formData.ticheng" clearable placeholder="请输入应提成总金额" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="已支付总额" prop="paid_amount"> </el-row>
<el-input v-model="formData.paid_amount" clearable placeholder="请输入已支付总额" /> <el-row>
</el-form-item> <el-col :span="8">
<el-form-item label="本次支付总额" prop="bczfze"> <el-form-item label="项目回款总额" prop="hk" label-width="120px">
<el-input v-model="formData.bczfze" clearable placeholder="请输入本次支付总额" /> <el-input v-model="formData.hk" clearable placeholder="请输入项目回款总额" type="number" />
</el-form-item> </el-form-item>
<el-form-item label="登记人" prop="djr"> </el-col>
<el-input v-model="formData.djr" clearable placeholder="请输入登记人" /> <el-col :span="8">
</el-form-item> <el-form-item label="提成比例(%" prop="rate" label-width="120px">
<el-form-item label="登记日期" prop="apptime"> <el-input v-model="formData.rate" clearable placeholder="请输入提成比例(%" />
<el-input v-model="formData.apptime" clearable placeholder="请输入登记日期" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="备注" prop="remark"> <el-col :span="8">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" /> <el-form-item label="应提成总金额" prop="ticheng" label-width="120px">
</el-form-item> <el-input v-model="formData.ticheng" clearable placeholder="请输入应提成总金额" type="number" />
</el-form-item>
</el-form> </el-col>
</popup> </el-row>
</div> <el-row>
<el-col :span="8">
<el-form-item label="已支付总额" prop="paid_amount">
<el-input v-model="formData.paid_amount" clearable placeholder="请输入已支付总额" type="number" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="本次支付总额" prop="bczfze" label-width="120px">
<el-input v-model="formData.bczfze" clearable placeholder="请输入本次支付总额" type="number" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="登记人" prop="djr">
<el-input v-model="formData.djr" clearable placeholder="请输入登记人" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="登记日期" prop="apptime">
<el-date-picker class="flex-1 !flex" v-model="formData.apptime" clearable type="date"
value-format="YYYY-MM-DD" placeholder="请选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
</el-form-item>
</el-col>
</el-row>
<el-dialog v-model="showDialog" title="选择项目" width="70%">
<cost_project @customEvent="customEvent"></cost_project>
</el-dialog>
</el-form>
</popup>
</div>
</template> </template>
<script lang="ts" setup name="projectCommissionEdit"> <script lang="ts" setup name="projectCommissionEdit">
@ -67,42 +103,54 @@ import { apiProjectCommissionAdd, apiProjectCommissionEdit, apiProjectCommission
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
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>()
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 popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目提成' : '新增项目提成' return mode.value == 'edit' ? '编辑项目提成' : '新增项目提成'
}) })
// //
const formData = reactive({ const formData = reactive({
id: '', id: '',
dataid: '', dataid: '',
num: '', num: '',
project: '', project_id: '',
project_num: '', project_name: '',
head: '', project_num: '',
affcontract: '', head: '',
industry: '', affcontract: '',
hk: '', industry: '',
rate: '', hk: '',
ticheng: '', rate: '',
paid_amount: '', ticheng: '',
bczfze: '', paid_amount: '',
djr: '', bczfze: '',
apptime: '', djr: '',
remark: '', apptime: '',
remark: '',
project_commission_detail: {}
}) })
const customEvent = (e) => {
console.log(e)
formData.project_id = e.id
formData.project_name = e.project_name
formData.project_num = e.project_num
formData.head = e.principal
showDialog.value = false
}
// //
@ -113,51 +161,51 @@ const formRules = reactive<any>({
// //
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 apiProjectCommissionDetail({ const data = await apiProjectCommissionDetail({
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 apiProjectCommissionEdit(data) ? await apiProjectCommissionEdit(data)
: await apiProjectCommissionAdd(data) : await apiProjectCommissionAdd(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

@ -1,11 +1,7 @@
<template> <template>
<div> <div>
<el-card class="!border-none mb-4" shadow="never"> <el-card class="!border-none mb-4" shadow="never">
<el-form <el-form class="mb-[-16px]" :model="queryParams" inline>
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.num" clearable placeholder="请输入单据编号" />
</el-form-item> </el-form-item>
@ -29,17 +25,13 @@
</template> </template>
新增 新增
</el-button> </el-button>
<el-button <el-button v-perms="['project_commission/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
v-perms="['project_commission/delete']"
:disabled="!selectData.length"
@click="handleDelete(selectData)"
>
删除 删除
</el-button> </el-button>
<div class="mt-4"> <div class="mt-4">
<el-table :data="pager.lists" @selection-change="handleSelectionChange"> <el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column label="" prop="dataid" show-overflow-tooltip /> <!-- <el-table-column label="" prop="dataid" show-overflow-tooltip /> -->
<el-table-column label="单据编号" prop="num" show-overflow-tooltip /> <el-table-column label="单据编号" prop="num" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project" show-overflow-tooltip /> <el-table-column label="项目名称" prop="project" show-overflow-tooltip />
<el-table-column label="项目编号" prop="project_num" show-overflow-tooltip /> <el-table-column label="项目编号" prop="project_num" show-overflow-tooltip />
@ -57,27 +49,17 @@
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button <el-button v-perms="['project_commission/edit']" type="primary" link @click="handleEdit(row)">
v-perms="['project_commission/edit']"
type="primary"
link
@click="handleEdit(row)"
>
编辑 编辑
</el-button> </el-button>
<el-button <el-button v-perms="['project_commission/delete']" type="danger" link @click="handleDelete(row.id)">
v-perms="['project_commission/delete']"
type="danger"
link
@click="handleDelete(row.id)"
>
删除 删除
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div class="flex mt-4 justify-end"> <div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" /> <pagination v-model="pager" @change="getLists" />
</div> </div>
</el-card> </el-card>
@ -114,7 +96,7 @@ const handleSelectionChange = (val: any[]) => {
} }
// //
const { dictData } = useDictData('') const { dictData } = useDictData('supervision_project_industry')
// //
const { pager, getLists, resetParams, resetPage } = usePaging({ const { pager, getLists, resetParams, resetPage } = usePaging({

View File

@ -1,77 +1,150 @@
<template> <template>
<div class="edit-popup"> <div class="edit-popup">
<popup <popup ref="popupRef" :title="popupTitle" :async="true" width="60vw" @confirm="handleSubmit" @close="handleClose">
ref="popupRef"
:title="popupTitle"
:async="true"
width="550px"
@confirm="handleSubmit"
@close="handleClose"
>
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules"> <el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-form-item label="项目id" prop="project_id"> <el-row>
<el-input v-model="formData.project_id" clearable placeholder="请输入项目id" /> <el-col :span="8">
</el-form-item> <el-form-item label="所属单位" prop="unit_qualification_id">
<el-form-item label="姓名" prop="name"> <el-input v-model="formData.company_name" clearable placeholder="请输入所属单位"
<el-input v-model="formData.name" clearable placeholder="请输入姓名" /> @click="showDialog1 = true" />
</el-form-item> </el-form-item>
<el-form-item label="所属单位" prop="company_id"> </el-col>
<el-input v-model="formData.company_id" clearable placeholder="请输入所属单位" /> <el-col :span="8">
</el-form-item> <el-form-item label="姓名" prop="name">
<el-form-item label="身份证" prop="id_card"> <el-input v-model="formData.name" clearable placeholder="请输入姓名" />
<el-input v-model="formData.id_card" clearable placeholder="请输入身份证" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="技术职称" prop="technical_title"> <el-col :span="8">
<el-input v-model="formData.technical_title" clearable placeholder="请输入技术职称" /> <el-form-item label="身份证" prop="id_card">
</el-form-item> <el-input v-model="formData.id_card" clearable placeholder="请输入身份证" />
<el-form-item label="岗位" prop="job"> </el-form-item>
<el-input v-model="formData.job" clearable placeholder="请输入岗位" /> </el-col>
</el-form-item> </el-row>
<el-form-item label="资质名称1" prop="qualification_name_one"> <el-row>
<el-input v-model="formData.qualification_name_one" clearable placeholder="请输入资质名称1" /> <el-col :span="8">
</el-form-item> <el-form-item label="创建人" prop="create_user">
<el-form-item label="认证机构1" prop="certification_body_one"> <el-input v-model="formData.create_user" clearable placeholder="请输入创建人" />
<el-input v-model="formData.certification_body_one" clearable placeholder="请输入认证机构1" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="资质编号1" prop="qualification_number_one">
<el-input v-model="formData.qualification_number_one" clearable placeholder="请输入资质编号1" /> <el-col :span="8">
</el-form-item> <el-form-item label="技术职称" prop="technical_title">
<el-form-item label="发证日期1" prop="get_date_one"> <el-input v-model="formData.technical_title" clearable placeholder="请输入技术职称" />
<el-input v-model="formData.get_date_one" clearable placeholder="请输入发证日期1" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="有效日期1" prop="effective_date_one"> <el-col :span="8">
<el-input v-model="formData.effective_date_one" clearable placeholder="请输入有效日期1" /> <el-form-item label="岗位" prop="job">
</el-form-item> <el-input v-model="formData.job" clearable placeholder="请输入岗位" />
<el-form-item label="资质1状态 0-有效 1-无效" prop="qualification_one_status"> </el-form-item>
<el-input v-model="formData.qualification_one_status" clearable placeholder="请输入资质1状态 0-有效 1-无效" /> </el-col>
</el-form-item> </el-row>
<el-form-item label="资质名称2" prop="qualification_name_two"> <el-row>
<el-input v-model="formData.qualification_name_two" clearable placeholder="请输入资质名称2" /> <el-col :span="8">
</el-form-item> <el-form-item label="资质名称1" prop="qualification_name_one">
<el-form-item label="认证机构2" prop="certification_body_two"> <el-input v-model="formData.qualification_name_one" clearable placeholder="请输入资质名称1" />
<el-input v-model="formData.certification_body_two" clearable placeholder="请输入认证机构2" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="资质编号2" prop="qualification_number_two"> <el-col :span="8">
<el-input v-model="formData.qualification_number_two" clearable placeholder="请输入资质编号2" /> <el-form-item label="认证机构1" prop="certification_body_one">
</el-form-item> <el-input v-model="formData.certification_body_one" clearable placeholder="请输入认证机构1" />
<el-form-item label="发证日期2" prop="get_date_two"> </el-form-item>
<el-input v-model="formData.get_date_two" clearable placeholder="请输入发证日期2" /> </el-col>
</el-form-item> <el-col :span="8">
<el-form-item label="有效日期2" prop="effective_date_two"> <el-form-item label="资质编号1" prop="qualification_number_one">
<el-input v-model="formData.effective_date_two" clearable placeholder="请输入有效日期2" /> <el-input v-model="formData.qualification_number_one" clearable placeholder="请输入资质编号1" />
</el-form-item> </el-form-item>
<el-form-item label="资质2状态 0-有效 1-无效" prop="qualification_two_status"> </el-col>
<el-input v-model="formData.qualification_two_status" clearable placeholder="请输入资质2状态 0-有效 1-无效" /> </el-row>
</el-form-item> <el-row>
<el-form-item label="备注" prop="remark"> <el-col :span="8">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" /> <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-form-item label="附件" prop="annex"> value-format="YYYY-MM-DD " placeholder="选择日期">
<el-input v-model="formData.annex" clearable placeholder="请输入附件" /> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="创建人" prop="create_user"> </el-col>
<el-input v-model="formData.create_user" clearable placeholder="请输入创建人" /> <el-col :span="8">
</el-form-item> <el-form-item label="有效日期1" prop="effective_date_one">
<el-date-picker class="flex-1 !flex" v-model="formData.effective_date_one" clearable
value-format="YYYY-MM-DD " placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质1状态" prop="qualification_one_status">
<el-select class="flex-1" v-model="formData.qualification_one_status" clearable
placeholder="请选择">
<el-option label="有效" :value="0" />
<el-option label="无效" :value="1" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="资质名称2" prop="qualification_name_two">
<el-input v-model="formData.qualification_name_two" clearable placeholder="请输入资质名称2" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="认证机构2" prop="certification_body_two">
<el-input v-model="formData.certification_body_two" clearable placeholder="请输入认证机构2" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质编号2" prop="qualification_number_two">
<el-input v-model="formData.qualification_number_two" clearable placeholder="请输入资质编号2" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="发证日期2" prop="get_date_two">
<el-date-picker class="flex-1 !flex" v-model="formData.get_date_two" clearable
value-format="YYYY-MM-DD " placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="有效日期2" prop="effective_date_two">
<el-date-picker class="flex-1 !flex" v-model="formData.effective_date_two" clearable
value-format="YYYY-MM-DD " placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质2状态" prop="qualification_two_status">
<el-select class="flex-1" v-model="formData.qualification_two_status" clearable
placeholder="请选择">
<el-option label="有效" :value="0" />
<el-option label="无效" :value="1" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="附件" prop="annex">
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
@delFile="delFileFn" />
</el-form-item>
</el-col>
</el-row>
<el-dialog v-model="showDialog" title="选择项目" width="70%">
<supervision_project @customEvent="customEvent"></supervision_project>
</el-dialog>
<div v-if="showDialog1">
<el-dialog v-model="showDialog1" title="选择单位" width="70%">
<supervision_participating_units_qualifications @customEvent="customEvent1">
</supervision_participating_units_qualifications>
</el-dialog>
</div>
</el-form> </el-form>
</popup> </popup>
</div> </div>
@ -80,7 +153,7 @@
<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 { apiSupervisionConstructionManagementPersonnelAdd, apiSupervisionConstructionManagementPersonnelEdit, apiSupervisionConstructionManagementPersonnelDetail } from '@/api/supervision_construction_management_personnel' import { apiSupervisionConstructionManagementPersonnelAdd, apiSupervisionConstructionManagementPersonnelEdit, } from '@/api/supervision_construction_management_personnel'
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue' import type { PropType } from 'vue'
defineProps({ defineProps({
@ -93,8 +166,20 @@ 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 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' ? '编辑工程监理--施工管理人员' : '新增工程监理--施工管理人员'
@ -104,8 +189,10 @@ const popupTitle = computed(() => {
const formData = reactive({ const formData = reactive({
id: '', id: '',
project_id: '', project_id: '',
project_name: "",
name: '', name: '',
company_id: '', unit_qualification_id: '',
company_name: '',
id_card: '', id_card: '',
technical_title: '', technical_title: '',
job: '', job: '',
@ -125,7 +212,16 @@ const formData = reactive({
annex: '', annex: '',
create_user: '', create_user: '',
}) })
const customEvent = (e) => {
formData.project_id = e.id
formData.project_name = e.project_name
showDialog.value = false
}
const customEvent1 = (e) => {
formData.unit_qualification_id = e.id
formData.company_name = e.project_name
showDialog1.value = false
}
// //
const formRules = reactive<any>({ const formRules = reactive<any>({
@ -139,7 +235,7 @@ const formRules = reactive<any>({
message: '请输入姓名', message: '请输入姓名',
trigger: ['blur'] trigger: ['blur']
}], }],
company_id: [{ unit_qualification_id: [{
required: true, required: true,
message: '请输入所属单位', message: '请输入所属单位',
trigger: ['blur'] trigger: ['blur']
@ -240,8 +336,8 @@ const setFormData = async (data: Record<any, any>) => {
formData[key] = data[key] formData[key] = data[key]
} }
} }
} }
const getDetail = async (row: Record<string, any>) => { const getDetail = async (row: Record<string, any>) => {
@ -255,9 +351,9 @@ const getDetail = async (row: Record<string, any>) => {
// //
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')

View File

@ -1,25 +1,17 @@
<template> <template>
<div> <div>
<el-card class="!border-none mb-4" shadow="never"> <el-card class="!border-none mb-4" shadow="never">
<el-form <el-form class="mb-[-16px]" :model="queryParams" inline>
class="mb-[-16px]"
:model="queryParams"
inline
>
<el-form-item label="项目id" prop="project_id">
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请输入项目id" />
</el-form-item>
<el-form-item label="姓名" prop="name"> <el-form-item label="姓名" prop="name">
<el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入姓名" /> <el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入姓名" />
</el-form-item> </el-form-item>
<el-form-item label="所属单位" prop="company_id">
<el-input class="w-[280px]" v-model="queryParams.company_id" clearable placeholder="请输入所属单位" />
</el-form-item>
<el-form-item label="资质名称1" prop="qualification_name_one"> <el-form-item label="资质名称1" prop="qualification_name_one">
<el-input class="w-[280px]" v-model="queryParams.qualification_name_one" clearable placeholder="请输入资质名称1" /> <el-input class="w-[280px]" v-model="queryParams.qualification_name_one" clearable
placeholder="请输入资质名称1" />
</el-form-item> </el-form-item>
<el-form-item label="资质名称2" prop="qualification_name_two"> <el-form-item label="资质名称2" prop="qualification_name_two">
<el-input class="w-[280px]" v-model="queryParams.qualification_name_two" clearable placeholder="请输入资质名称2" /> <el-input class="w-[280px]" v-model="queryParams.qualification_name_two" clearable
placeholder="请输入资质名称2" />
</el-form-item> </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>
@ -28,25 +20,22 @@
</el-form> </el-form>
</el-card> </el-card>
<el-card class="!border-none" v-loading="pager.loading" shadow="never"> <el-card class="!border-none" v-loading="pager.loading" shadow="never">
<el-button v-perms="['supervision_qualification_review.supervision_construction_management_personnel/add']" type="primary" @click="handleAdd"> <el-button v-perms="['supervision_qualification_review.supervision_construction_management_personnel/add']"
type="primary" @click="handleAdd">
<template #icon> <template #icon>
<icon name="el-icon-Plus" /> <icon name="el-icon-Plus" />
</template> </template>
新增 新增
</el-button> </el-button>
<el-button <el-button v-perms="['supervision_qualification_review.supervision_construction_management_personnel/delete']"
v-perms="['supervision_qualification_review.supervision_construction_management_personnel/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
:disabled="!selectData.length"
@click="handleDelete(selectData)"
>
删除 删除
</el-button> </el-button>
<div class="mt-4"> <div class="mt-4">
<el-table :data="pager.lists" @selection-change="handleSelectionChange"> <el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column label="项目id" prop="project_id" show-overflow-tooltip />
<el-table-column label="姓名" prop="name" show-overflow-tooltip /> <el-table-column label="姓名" prop="name" show-overflow-tooltip />
<el-table-column label="所属单位" prop="company_id" show-overflow-tooltip /> <el-table-column label="所属单位" prop="company_name" show-overflow-tooltip />
<el-table-column label="身份证" prop="id_card" show-overflow-tooltip /> <el-table-column label="身份证" prop="id_card" show-overflow-tooltip />
<el-table-column label="技术职称" prop="technical_title" show-overflow-tooltip /> <el-table-column label="技术职称" prop="technical_title" show-overflow-tooltip />
<el-table-column label="岗位" prop="job" show-overflow-tooltip /> <el-table-column label="岗位" prop="job" show-overflow-tooltip />
@ -55,39 +44,32 @@
<el-table-column label="资质编号1" prop="qualification_number_one" show-overflow-tooltip /> <el-table-column label="资质编号1" prop="qualification_number_one" show-overflow-tooltip />
<el-table-column label="发证日期1" prop="get_date_one" show-overflow-tooltip /> <el-table-column label="发证日期1" prop="get_date_one" show-overflow-tooltip />
<el-table-column label="有效日期1" prop="effective_date_one" show-overflow-tooltip /> <el-table-column label="有效日期1" prop="effective_date_one" show-overflow-tooltip />
<el-table-column label="资质1状态 0-有效 1-无效" prop="qualification_one_status" show-overflow-tooltip /> <el-table-column label="资质1状态" prop="qualification_one_status_text" show-overflow-tooltip />
<el-table-column label="资质名称2" prop="qualification_name_two" show-overflow-tooltip /> <el-table-column label="资质名称2" prop="qualification_name_two" show-overflow-tooltip />
<el-table-column label="认证机构2" prop="certification_body_two" show-overflow-tooltip /> <el-table-column label="认证机构2" prop="certification_body_two" show-overflow-tooltip />
<el-table-column label="资质编号2" prop="qualification_number_two" show-overflow-tooltip /> <el-table-column label="资质编号2" prop="qualification_number_two" show-overflow-tooltip />
<el-table-column label="发证日期2" prop="get_date_two" show-overflow-tooltip /> <el-table-column label="发证日期2" prop="get_date_two" show-overflow-tooltip />
<el-table-column label="有效日期2" prop="effective_date_two" show-overflow-tooltip /> <el-table-column label="有效日期2" prop="effective_date_two" show-overflow-tooltip />
<el-table-column label="资质2状态 0-有效 1-无效" prop="qualification_two_status" show-overflow-tooltip /> <el-table-column label="资质2状态 " prop="qualification_two_status_text" show-overflow-tooltip />
<el-table-column label="备注" prop="remark" show-overflow-tooltip /> <el-table-column label="备注" prop="remark" show-overflow-tooltip />
<el-table-column label="附件" prop="annex" show-overflow-tooltip /> <el-table-column label="创建人" prop="create_user_name" 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 }">
<el-button <el-button
v-perms="['supervision_qualification_review.supervision_construction_management_personnel/edit']" v-perms="['supervision_qualification_review.supervision_construction_management_personnel/edit']"
type="primary" type="primary" link @click="handleEdit(row)">
link
@click="handleEdit(row)"
>
编辑 编辑
</el-button> </el-button>
<el-button <el-button
v-perms="['supervision_qualification_review.supervision_construction_management_personnel/delete']" v-perms="['supervision_qualification_review.supervision_construction_management_personnel/delete']"
type="danger" type="danger" link @click="handleDelete(row.id)">
link
@click="handleDelete(row.id)"
>
删除 删除
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div class="flex mt-4 justify-end"> <div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" /> <pagination v-model="pager" @change="getLists" />
</div> </div>
</el-card> </el-card>
@ -98,7 +80,7 @@
<script lang="ts" setup name="supervisionConstructionManagementPersonnelLists"> <script lang="ts" setup name="supervisionConstructionManagementPersonnelLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionConstructionManagementPersonnelLists, apiSupervisionConstructionManagementPersonnelDelete } from '@/api/supervision_construction_management_personnel' import { apiSupervisionConstructionManagementPersonnelLists, apiSupervisionConstructionManagementPersonnelDelete, apiSupervisionConstructionManagementPersonnelDetail } from '@/api/supervision_construction_management_personnel'
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'
@ -143,10 +125,11 @@ const handleAdd = async () => {
// //
const handleEdit = async (data: any) => { const handleEdit = async (data: any) => {
let res = await apiSupervisionConstructionManagementPersonnelDetail({ id: data.id })
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)
} }
// //

View File

@ -56,7 +56,7 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div class="flex mt-4 justify-end"> <div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" /> <pagination v-model="pager" @change="getLists" />
</div> </div>
</el-card> </el-card>

View File

@ -1,68 +1,132 @@
<template> <template>
<div class="edit-popup"> <div class="edit-popup">
<popup <popup ref="popupRef" :title="popupTitle" :async="true" width="60vw" @confirm="handleSubmit" @close="handleClose">
ref="popupRef"
:title="popupTitle"
:async="true"
width="550px"
@confirm="handleSubmit"
@close="handleClose"
>
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules"> <el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-form-item label="项目id" prop="project_id"> <el-row>
<el-input v-model="formData.project_id" clearable placeholder="请输入项目id" /> <el-col :span="8">
</el-form-item> <el-form-item label="所属单位" prop="unit_qualification_id">
<el-form-item label="所属单位" prop="company_id"> <el-input v-model="formData.company_name" clearable placeholder="请输入所属单位"
<el-input v-model="formData.company_id" clearable placeholder="请输入所属单位" /> @click="showDialog1 = true" />
</el-form-item> </el-form-item>
<el-form-item label="设备名称" prop="name"> </el-col>
<el-input v-model="formData.name" clearable placeholder="请输入设备名称" /> <el-col :span="8">
</el-form-item> <el-form-item label="设备名称" prop="name">
<el-form-item label="资质名称1" prop="qualification_name_one"> <el-input v-model="formData.name" clearable placeholder="请输入设备名称" />
<el-input v-model="formData.qualification_name_one" clearable placeholder="请输入资质名称1" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="认证机构1" prop="certification_body_one"> <el-col :span="8">
<el-input v-model="formData.certification_body_one" clearable placeholder="请输入认证机构1" /> <el-form-item label="资质名称1" prop="qualification_name_one">
</el-form-item> <el-input v-model="formData.qualification_name_one" clearable placeholder="请输入资质名称1" />
<el-form-item label="资质编号1" prop="qualification_number_one"> </el-form-item>
<el-input v-model="formData.qualification_number_one" clearable placeholder="请输入资质编号1" /> </el-col>
</el-form-item> </el-row>
<el-form-item label="发证日期1" prop="get_date_one"> <el-row>
<el-input v-model="formData.get_date_one" clearable placeholder="请输入发证日期1" /> <el-col :span="8">
</el-form-item> <el-form-item label="认证机构1" prop="certification_body_one">
<el-form-item label="有效日期1" prop="effective_date_one"> <el-input v-model="formData.certification_body_one" clearable placeholder="请输入认证机构1" />
<el-input v-model="formData.effective_date_one" clearable placeholder="请输入有效日期1" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="资质1状态 0-有效 1-无效" prop="qualification_one_status"> <el-col :span="8">
<el-input v-model="formData.qualification_one_status" clearable placeholder="请输入资质1状态 0-有效 1-无效" /> <el-form-item label="资质编号1" prop="qualification_number_one">
</el-form-item> <el-input v-model="formData.qualification_number_one" clearable placeholder="请输入资质编号1" />
<el-form-item label="资质名称2" prop="qualification_name_two"> </el-form-item>
<el-input v-model="formData.qualification_name_two" clearable placeholder="请输入资质名称2" /> </el-col>
</el-form-item> <el-col :span="8">
<el-form-item label="认证机构2" prop="certification_body_two"> <el-form-item label="发证日期1" prop="get_date_one">
<el-input v-model="formData.certification_body_two" clearable placeholder="请输入认证机构2" /> <!-- <el-input v-model="formData.get_date_one" clearable placeholder="请输入发证日期1" /> -->
</el-form-item> <el-date-picker class="flex-1 !flex" v-model="formData.get_date_one" clearable
<el-form-item label="资质编号2" prop="qualification_number_two"> value-format="YYYY-MM-DD " placeholder="选择日期">
<el-input v-model="formData.qualification_number_two" clearable placeholder="请输入资质编号2" /> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="发证日期2" prop="get_date_two"> </el-col>
<el-input v-model="formData.get_date_two" clearable placeholder="请输入发证日期2" /> </el-row>
</el-form-item> <el-row>
<el-form-item label="有效日期2" prop="effective_date_two"> <el-col :span="8">
<el-input v-model="formData.effective_date_two" clearable placeholder="请输入有效日期2" /> <el-form-item label="有效日期1" prop="effective_date_one">
</el-form-item> <!-- <el-input v-model="formData.effective_date_one" clearable placeholder="请输入有效日期1" /> -->
<el-form-item label="资质2状态 0-有效 1-无效" prop="qualification_two_status"> <el-date-picker class="flex-1 !flex" v-model="formData.effective_date_one" clearable
<el-input v-model="formData.qualification_two_status" clearable placeholder="请输入资质2状态 0-有效 1-无效" /> value-format="YYYY-MM-DD " placeholder="选择日期">
</el-form-item> </el-date-picker>
<el-form-item label="备注" prop="remark"> </el-form-item>
<el-input v-model="formData.remark" clearable placeholder="请输入备注" /> </el-col>
</el-form-item> <el-col :span="8">
<el-form-item label="附件" prop="annex"> <el-form-item label="资质1状态 " prop="qualification_one_status">
<el-input v-model="formData.annex" clearable placeholder="请输入附件" /> <el-select class="flex-1" v-model="formData.qualification_one_status" clearable
</el-form-item> placeholder="请选择">
<el-form-item label="创建人" prop="create_user"> <el-option label="有效" :value="0" />
<el-input v-model="formData.create_user" clearable placeholder="请输入创建人" /> <el-option label="无效" :value="1" />
</el-form-item> </el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质名称2" prop="qualification_name_two">
<el-input v-model="formData.qualification_name_two" clearable placeholder="请输入资质名称2" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="认证机构2" prop="certification_body_two">
<el-input v-model="formData.certification_body_two" clearable placeholder="请输入认证机构2" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质编号2" prop="qualification_number_two">
<el-input v-model="formData.qualification_number_two" clearable placeholder="请输入资质编号2" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="发证日期2" prop="get_date_two">
<!-- <el-input v-model="formData.get_date_two" clearable placeholder="请输入发证日期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-row>
<el-row>
<el-col :span="8">
<el-form-item label="有效日期2" prop="effective_date_two">
<!-- <el-input v-model="formData.effective_date_two" clearable placeholder="请输入有效日期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状态" 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>
<el-col :span="8">
<el-form-item label="创建人" prop="create_user">
<el-input v-model="formData.create_user" clearable placeholder="请输入创建人" />
</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>
<el-col :span="8">
<el-form-item label="附件" prop="annex">
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
@delFile="delFileFn" />
</el-form-item>
</el-col>
</el-row>
<el-dialog v-model="showDialog1" title="选择单位" width="70%">
<supervision_participating_units_qualifications @customEvent="customEvent1">
</supervision_participating_units_qualifications>
</el-dialog>
</el-form> </el-form>
</popup> </popup>
</div> </div>
@ -71,7 +135,7 @@
<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 { apiSupervisionLargeEquipmentAdd, apiSupervisionLargeEquipmentEdit, apiSupervisionLargeEquipmentDetail } from '@/api/supervision_large_equipment' import { apiSupervisionLargeEquipmentAdd, apiSupervisionLargeEquipmentEdit } from '@/api/supervision_large_equipment'
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue' import type { PropType } from 'vue'
defineProps({ defineProps({
@ -84,6 +148,7 @@ 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 showDialog1 = ref(false)
// //
@ -91,11 +156,19 @@ const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑工程监理--大型设备及仪器具' : '新增工程监理--大型设备及仪器具' return mode.value == 'edit' ? '编辑工程监理--大型设备及仪器具' : '新增工程监理--大型设备及仪器具'
}) })
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 formData = reactive({ const formData = reactive({
id: '', id: '',
project_id: '', unit_qualification_id: '',
company_id: '', company_name: "",
name: '', name: '',
qualification_name_one: '', qualification_name_one: '',
certification_body_one: '', certification_body_one: '',
@ -113,20 +186,19 @@ const formData = reactive({
annex: '', annex: '',
create_user: '', create_user: '',
}) })
const customEvent1 = (e) => {
formData.unit_qualification_id = e.id
formData.company_name = e.project_name
showDialog1.value = false
}
// //
const formRules = reactive<any>({ const formRules = reactive<any>({
project_id: [{ unit_qualification_id: [{
required: true, required: true,
message: '请输入项目id', message: '请输入项目id',
trigger: ['blur'] trigger: ['blur']
}], }],
company_id: [{
required: true,
message: '请输入所属单位',
trigger: ['blur']
}],
name: [{ name: [{
required: true, required: true,
message: '请输入设备名称', message: '请输入设备名称',
@ -213,8 +285,8 @@ const setFormData = async (data: Record<any, any>) => {
formData[key] = data[key] formData[key] = data[key]
} }
} }
} }
const getDetail = async (row: Record<string, any>) => { const getDetail = async (row: Record<string, any>) => {
@ -228,9 +300,9 @@ const getDetail = async (row: Record<string, any>) => {
// //
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')

View File

@ -1,25 +1,18 @@
<template> <template>
<div> <div>
<el-card class="!border-none mb-4" shadow="never"> <el-card class="!border-none mb-4" shadow="never">
<el-form <el-form class="mb-[-16px]" :model="queryParams" inline>
class="mb-[-16px]"
:model="queryParams"
inline
>
<el-form-item label="项目id" prop="project_id">
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请输入项目id" />
</el-form-item>
<el-form-item label="所属单位" prop="company_id">
<el-input class="w-[280px]" v-model="queryParams.company_id" clearable placeholder="请输入所属单位" />
</el-form-item>
<el-form-item label="设备名称" prop="name"> <el-form-item label="设备名称" prop="name">
<el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入设备名称" /> <el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入设备名称" />
</el-form-item> </el-form-item>
<el-form-item label="资质名称1" prop="qualification_name_one"> <el-form-item label="资质名称1" prop="qualification_name_one">
<el-input class="w-[280px]" v-model="queryParams.qualification_name_one" clearable placeholder="请输入资质名称1" /> <el-input class="w-[280px]" v-model="queryParams.qualification_name_one" clearable
placeholder="请输入资质名称1" />
</el-form-item> </el-form-item>
<el-form-item label="资质名称2" prop="qualification_name_two"> <el-form-item label="资质名称2" prop="qualification_name_two">
<el-input class="w-[280px]" v-model="queryParams.qualification_name_two" clearable placeholder="请输入资质名称2" /> <el-input class="w-[280px]" v-model="queryParams.qualification_name_two" clearable
placeholder="请输入资质名称2" />
</el-form-item> </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>
@ -28,63 +21,51 @@
</el-form> </el-form>
</el-card> </el-card>
<el-card class="!border-none" v-loading="pager.loading" shadow="never"> <el-card class="!border-none" v-loading="pager.loading" shadow="never">
<el-button v-perms="['supervision_qualification_review.supervision_large_equipment/add']" type="primary" @click="handleAdd"> <el-button v-perms="['supervision_qualification_review.supervision_large_equipment/add']" type="primary"
@click="handleAdd">
<template #icon> <template #icon>
<icon name="el-icon-Plus" /> <icon name="el-icon-Plus" />
</template> </template>
新增 新增
</el-button> </el-button>
<el-button <el-button v-perms="['supervision_qualification_review.supervision_large_equipment/delete']"
v-perms="['supervision_qualification_review.supervision_large_equipment/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
:disabled="!selectData.length"
@click="handleDelete(selectData)"
>
删除 删除
</el-button> </el-button>
<div class="mt-4"> <div class="mt-4">
<el-table :data="pager.lists" @selection-change="handleSelectionChange"> <el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column label="项目id" prop="project_id" show-overflow-tooltip /> <el-table-column label="所属单位" prop="company_name" show-overflow-tooltip />
<el-table-column label="所属单位" prop="company_id" show-overflow-tooltip />
<el-table-column label="设备名称" prop="name" show-overflow-tooltip /> <el-table-column label="设备名称" prop="name" show-overflow-tooltip />
<el-table-column label="资质名称1" prop="qualification_name_one" show-overflow-tooltip /> <el-table-column label="资质名称1" prop="qualification_name_one" show-overflow-tooltip />
<el-table-column label="认证机构1" prop="certification_body_one" show-overflow-tooltip /> <el-table-column label="认证机构1" prop="certification_body_one" show-overflow-tooltip />
<el-table-column label="资质编号1" prop="qualification_number_one" show-overflow-tooltip /> <el-table-column label="资质编号1" prop="qualification_number_one" show-overflow-tooltip />
<el-table-column label="发证日期1" prop="get_date_one" show-overflow-tooltip /> <el-table-column label="发证日期1" prop="get_date_one" show-overflow-tooltip />
<el-table-column label="有效日期1" prop="effective_date_one" show-overflow-tooltip /> <el-table-column label="有效日期1" prop="effective_date_one" show-overflow-tooltip />
<el-table-column label="资质1状态 0-有效 1-无效" prop="qualification_one_status" show-overflow-tooltip /> <el-table-column label="资质1状态" prop="qualification_one_status_text" show-overflow-tooltip />
<el-table-column label="资质名称2" prop="qualification_name_two" show-overflow-tooltip /> <el-table-column label="资质名称2" prop="qualification_name_two" show-overflow-tooltip />
<el-table-column label="认证机构2" prop="certification_body_two" show-overflow-tooltip /> <el-table-column label="认证机构2" prop="certification_body_two" show-overflow-tooltip />
<el-table-column label="资质编号2" prop="qualification_number_two" show-overflow-tooltip /> <el-table-column label="资质编号2" prop="qualification_number_two" show-overflow-tooltip />
<el-table-column label="发证日期2" prop="get_date_two" show-overflow-tooltip /> <el-table-column label="发证日期2" prop="get_date_two" show-overflow-tooltip />
<el-table-column label="有效日期2" prop="effective_date_two" show-overflow-tooltip /> <el-table-column label="有效日期2" prop="effective_date_two" show-overflow-tooltip />
<el-table-column label="资质2状态 0-有效 1-无效" prop="qualification_two_status" show-overflow-tooltip /> <el-table-column label="资质2状态" prop="qualification_two_status_text" show-overflow-tooltip />
<el-table-column label="备注" prop="remark" show-overflow-tooltip /> <el-table-column label="备注" prop="remark" show-overflow-tooltip />
<el-table-column label="附件" prop="annex" show-overflow-tooltip /> <el-table-column label="创建人" prop="create_user_name" 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 }">
<el-button <el-button v-perms="['supervision_qualification_review.supervision_large_equipment/edit']"
v-perms="['supervision_qualification_review.supervision_large_equipment/edit']" type="primary" link @click="handleEdit(row)">
type="primary"
link
@click="handleEdit(row)"
>
编辑 编辑
</el-button> </el-button>
<el-button <el-button v-perms="['supervision_qualification_review.supervision_large_equipment/delete']"
v-perms="['supervision_qualification_review.supervision_large_equipment/delete']" type="danger" link @click="handleDelete(row.id)">
type="danger"
link
@click="handleDelete(row.id)"
>
删除 删除
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div class="flex mt-4 justify-end"> <div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" /> <pagination v-model="pager" @change="getLists" />
</div> </div>
</el-card> </el-card>
@ -95,7 +76,7 @@
<script lang="ts" setup name="supervisionLargeEquipmentLists"> <script lang="ts" setup name="supervisionLargeEquipmentLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionLargeEquipmentLists, apiSupervisionLargeEquipmentDelete } from '@/api/supervision_large_equipment' import { apiSupervisionLargeEquipmentLists, apiSupervisionLargeEquipmentDelete, apiSupervisionLargeEquipmentDetail } from '@/api/supervision_large_equipment'
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'
@ -140,10 +121,11 @@ const handleAdd = async () => {
// //
const handleEdit = async (data: any) => { const handleEdit = async (data: any) => {
let res = await apiSupervisionLargeEquipmentDetail({ id: data.id })
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)
} }
// //

View File

@ -1,86 +1,161 @@
<template> <template>
<div class="edit-popup"> <div class="edit-popup">
<popup <popup ref="popupRef" :title="popupTitle" :async="true" width="60vw" @confirm="handleSubmit" @close="handleClose">
ref="popupRef"
:title="popupTitle"
:async="true"
width="550px"
@confirm="handleSubmit"
@close="handleClose"
>
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules"> <el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-form-item label="项目id" prop="project_id"> <el-row>
<el-input v-model="formData.project_id" clearable placeholder="请输入项目id" /> <el-col :span="8">
</el-form-item> <el-form-item label="所属单位" prop="unit_qualification_id">
<el-form-item label="姓名" prop="name"> <el-input v-model="formData.company_name" clearable placeholder="请输入所属单位"
<el-input v-model="formData.name" clearable placeholder="请输入姓名" /> @click="showDialog1 = true" />
</el-form-item> </el-form-item>
<el-form-item label="所属单位" prop="company_id"> </el-col>
<el-input v-model="formData.company_id" clearable placeholder="请输入所属单位" /> <el-col :span="8">
</el-form-item> <el-form-item label="姓名" prop="name">
<el-form-item label="身份证" prop="id_card"> <el-input v-model="formData.name" clearable placeholder="请输入姓名" />
<el-input v-model="formData.id_card" clearable placeholder="请输入身份证" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="技术职称" prop="technical_title"> <el-col :span="8">
<el-input v-model="formData.technical_title" clearable placeholder="请输入技术职称" /> <el-form-item label="身份证" prop="id_card">
</el-form-item> <el-input v-model="formData.id_card" clearable placeholder="请输入身份证" />
<el-form-item label="岗位" prop="job"> </el-form-item>
<el-input v-model="formData.job" clearable placeholder="请输入岗位" /> </el-col>
</el-form-item> </el-row>
<el-form-item label="资质名称1" prop="qualification_name_one"> <el-row>
<el-input v-model="formData.qualification_name_one" clearable placeholder="请输入资质名称1" /> <el-col :span="8">
</el-form-item> <el-form-item label="创建人" prop="create_user">
<el-form-item label="认证机构1" prop="certification_body_one"> <el-input v-model="formData.create_user" clearable placeholder="请输入创建人" />
<el-input v-model="formData.certification_body_one" clearable placeholder="请输入认证机构1" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="资质编号1" prop="qualification_number_one">
<el-input v-model="formData.qualification_number_one" clearable placeholder="请输入资质编号1" /> <el-col :span="8">
</el-form-item> <el-form-item label="技术职称" prop="technical_title">
<el-form-item label="发证日期1" prop="get_date_one"> <el-input v-model="formData.technical_title" clearable placeholder="请输入技术职称" />
<el-input v-model="formData.get_date_one" clearable placeholder="请输入发证日期1" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="有效日期1" prop="effective_date_one"> <el-col :span="8">
<el-input v-model="formData.effective_date_one" clearable placeholder="请输入有效日期1" /> <el-form-item label="岗位" prop="job">
</el-form-item> <el-input v-model="formData.job" clearable placeholder="请输入岗位" />
<el-form-item label="资质1状态 0-有效 1-无效" prop="qualification_one_status"> </el-form-item>
<el-input v-model="formData.qualification_one_status" clearable placeholder="请输入资质1状态 0-有效 1-无效" /> </el-col>
</el-form-item> </el-row>
<el-form-item label="资质名称2" prop="qualification_name_two"> <el-row>
<el-input v-model="formData.qualification_name_two" clearable placeholder="请输入资质名称2" /> <el-col :span="8">
</el-form-item> <el-form-item label="资质名称1" prop="qualification_name_one">
<el-form-item label="认证机构2" prop="certification_body_two"> <el-input v-model="formData.qualification_name_one" clearable placeholder="请输入资质名称1" />
<el-input v-model="formData.certification_body_two" clearable placeholder="请输入认证机构2" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="资质编号2" prop="qualification_number_two"> <el-col :span="8">
<el-input v-model="formData.qualification_number_two" clearable placeholder="请输入资质编号2" /> <el-form-item label="认证机构1" prop="certification_body_one">
</el-form-item> <el-input v-model="formData.certification_body_one" clearable placeholder="请输入认证机构1" />
<el-form-item label="发证日期2" prop="get_date_two"> </el-form-item>
<el-input v-model="formData.get_date_two" clearable placeholder="请输入发证日期2" /> </el-col>
</el-form-item> <el-col :span="8">
<el-form-item label="有效日期2" prop="effective_date_two"> <el-form-item label="资质编号1" prop="qualification_number_one">
<el-input v-model="formData.effective_date_two" clearable placeholder="请输入有效日期2" /> <el-input v-model="formData.qualification_number_one" clearable placeholder="请输入资质编号1" />
</el-form-item> </el-form-item>
<el-form-item label="资质2状态 0-有效 1-无效" prop="qualification_two_status"> </el-col>
<el-input v-model="formData.qualification_two_status" clearable placeholder="请输入资质2状态 0-有效 1-无效" /> </el-row>
</el-form-item> <el-row>
<el-form-item label="备注" prop="remark"> <el-col :span="8">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" /> <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-form-item label="附件" prop="annex"> value-format="YYYY-MM-DD " placeholder="选择日期">
<el-input v-model="formData.annex" clearable placeholder="请输入附件" /> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="创建人" prop="create_user"> </el-col>
<el-input v-model="formData.create_user" clearable placeholder="请输入创建人" /> <el-col :span="8">
</el-form-item> <el-form-item label="有效日期1" prop="effective_date_one">
<el-date-picker class="flex-1 !flex" v-model="formData.effective_date_one" clearable
value-format="YYYY-MM-DD " placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质1状态" prop="qualification_one_status">
<el-select class="flex-1" v-model="formData.qualification_one_status" clearable
placeholder="请选择">
<el-option label="有效" :value="0" />
<el-option label="无效" :value="1" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="资质名称2" prop="qualification_name_two">
<el-input v-model="formData.qualification_name_two" clearable placeholder="请输入资质名称2" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="认证机构2" prop="certification_body_two">
<el-input v-model="formData.certification_body_two" clearable placeholder="请输入认证机构2" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质编号2" prop="qualification_number_two">
<el-input v-model="formData.qualification_number_two" clearable placeholder="请输入资质编号2" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="发证日期2" prop="get_date_two">
<el-date-picker class="flex-1 !flex" v-model="formData.get_date_two" clearable
value-format="YYYY-MM-DD " placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="有效日期2" prop="effective_date_two">
<el-date-picker class="flex-1 !flex" v-model="formData.effective_date_two" clearable
value-format="YYYY-MM-DD " placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资质2状态" prop="qualification_two_status">
<el-select class="flex-1" v-model="formData.qualification_two_status" clearable
placeholder="请选择">
<el-option label="有效" :value="0" />
<el-option label="无效" :value="1" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="附件" prop="annex">
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
@delFile="delFileFn" />
</el-form-item>
</el-col>
</el-row>
<el-dialog v-model="showDialog" title="选择项目" width="70%">
<supervision_project @customEvent="customEvent"></supervision_project>
</el-dialog>
<div v-if="showDialog1">
<el-dialog v-model="showDialog1" title="选择单位" width="70%">
<supervision_participating_units_qualifications @customEvent="customEvent1">
</supervision_participating_units_qualifications>
</el-dialog>
</div>
</el-form> </el-form>
</popup> </popup>
</div> </div>
</template> </template>
<script lang="ts" setup name="supervisionSafetyManagementPersonnelEdit"> <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 { apiSupervisionSafetyManagementPersonnelAdd, apiSupervisionSafetyManagementPersonnelEdit, apiSupervisionSafetyManagementPersonnelDetail } from '@/api/supervision_safety_management_personnel' import { apiSupervisionSafetyManagementPersonnelAdd, apiSupervisionSafetyManagementPersonnelEdit, } from '@/api/supervision_safety_management_personnel'
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue' import type { PropType } from 'vue'
defineProps({ defineProps({
@ -93,19 +168,33 @@ 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 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: "",
name: '', name: '',
company_id: '', unit_qualification_id: '',
company_name: '',
id_card: '', id_card: '',
technical_title: '', technical_title: '',
job: '', job: '',
@ -125,7 +214,16 @@ const formData = reactive({
annex: '', annex: '',
create_user: '', create_user: '',
}) })
const customEvent = (e) => {
formData.project_id = e.id
formData.project_name = e.project_name
showDialog.value = false
}
const customEvent1 = (e) => {
formData.unit_qualification_id = e.id
formData.company_name = e.project_name
showDialog1.value = false
}
// //
const formRules = reactive<any>({ const formRules = reactive<any>({
@ -139,7 +237,7 @@ const formRules = reactive<any>({
message: '请输入姓名', message: '请输入姓名',
trigger: ['blur'] trigger: ['blur']
}], }],
company_id: [{ unit_qualification_id: [{
required: true, required: true,
message: '请输入所属单位', message: '请输入所属单位',
trigger: ['blur'] trigger: ['blur']
@ -240,12 +338,12 @@ const setFormData = async (data: Record<any, any>) => {
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 apiSupervisionSafetyManagementPersonnelDetail({ const data = await apiSupervisionConstructionManagementPersonnelDetail({
id: row.id id: row.id
}) })
setFormData(data) setFormData(data)
@ -255,9 +353,9 @@ const getDetail = async (row: Record<string, any>) => {
// //
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 apiSupervisionSafetyManagementPersonnelEdit(data) ? await apiSupervisionSafetyManagementPersonnelEdit(data)
: await apiSupervisionSafetyManagementPersonnelAdd(data) : await apiSupervisionSafetyManagementPersonnelAdd(data)
popupRef.value?.close() popupRef.value?.close()
emit('success') emit('success')

View File

@ -1,25 +1,21 @@
<template> <template>
<div> <div>
<el-card class="!border-none mb-4" shadow="never"> <el-card class="!border-none mb-4" shadow="never">
<el-form <el-form class="mb-[-16px]" :model="queryParams" inline>
class="mb-[-16px]"
:model="queryParams"
inline
>
<el-form-item label="项目id" prop="project_id">
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请输入项目id" />
</el-form-item>
<el-form-item label="姓名" prop="name"> <el-form-item label="姓名" prop="name">
<el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入姓名" /> <el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入姓名" />
</el-form-item> </el-form-item>
<el-form-item label="所属单位" prop="company_id">
<el-input class="w-[280px]" v-model="queryParams.company_id" clearable placeholder="请输入所属单位" />
</el-form-item>
<el-form-item label="资质名称1" prop="qualification_name_one"> <el-form-item label="资质名称1" prop="qualification_name_one">
<el-input class="w-[280px]" v-model="queryParams.qualification_name_one" clearable placeholder="请输入资质名称1" /> <el-input class="w-[280px]" v-model="queryParams.qualification_name_one" clearable
placeholder="请输入资质名称1" />
</el-form-item> </el-form-item>
<el-form-item label="资质名称2" prop="qualification_name_two"> <el-form-item label="资质名称2" prop="qualification_name_two">
<el-input class="w-[280px]" v-model="queryParams.qualification_name_two" clearable placeholder="请输入资质名称2" /> <el-input class="w-[280px]" v-model="queryParams.qualification_name_two" clearable
placeholder="请输入资质名称2" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
<el-button @click="resetParams">重置</el-button>
</el-form-item> </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>
@ -28,25 +24,22 @@
</el-form> </el-form>
</el-card> </el-card>
<el-card class="!border-none" v-loading="pager.loading" shadow="never"> <el-card class="!border-none" v-loading="pager.loading" shadow="never">
<el-button v-perms="['supervision_qualification_review.supervision_safety_management_personnel/add']" type="primary" @click="handleAdd"> <el-button v-perms="['supervision_qualification_review.supervision_safety_management_personnel/add']"
type="primary" @click="handleAdd">
<template #icon> <template #icon>
<icon name="el-icon-Plus" /> <icon name="el-icon-Plus" />
</template> </template>
新增 新增
</el-button> </el-button>
<el-button <el-button v-perms="['supervision_qualification_review.supervision_safety_management_personnel/delete']"
v-perms="['supervision_qualification_review.supervision_safety_management_personnel/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
:disabled="!selectData.length"
@click="handleDelete(selectData)"
>
删除 删除
</el-button> </el-button>
<div class="mt-4"> <div class="mt-4">
<el-table :data="pager.lists" @selection-change="handleSelectionChange"> <el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column label="项目id" prop="project_id" show-overflow-tooltip />
<el-table-column label="姓名" prop="name" show-overflow-tooltip /> <el-table-column label="姓名" prop="name" show-overflow-tooltip />
<el-table-column label="所属单位" prop="company_id" show-overflow-tooltip /> <el-table-column label="所属单位" prop="company_name" show-overflow-tooltip />
<el-table-column label="身份证" prop="id_card" show-overflow-tooltip /> <el-table-column label="身份证" prop="id_card" show-overflow-tooltip />
<el-table-column label="技术职称" prop="technical_title" show-overflow-tooltip /> <el-table-column label="技术职称" prop="technical_title" show-overflow-tooltip />
<el-table-column label="岗位" prop="job" show-overflow-tooltip /> <el-table-column label="岗位" prop="job" show-overflow-tooltip />
@ -55,39 +48,32 @@
<el-table-column label="资质编号1" prop="qualification_number_one" show-overflow-tooltip /> <el-table-column label="资质编号1" prop="qualification_number_one" show-overflow-tooltip />
<el-table-column label="发证日期1" prop="get_date_one" show-overflow-tooltip /> <el-table-column label="发证日期1" prop="get_date_one" show-overflow-tooltip />
<el-table-column label="有效日期1" prop="effective_date_one" show-overflow-tooltip /> <el-table-column label="有效日期1" prop="effective_date_one" show-overflow-tooltip />
<el-table-column label="资质1状态 0-有效 1-无效" prop="qualification_one_status" show-overflow-tooltip /> <el-table-column label="资质1状态" prop="qualification_one_status_text" show-overflow-tooltip />
<el-table-column label="资质名称2" prop="qualification_name_two" show-overflow-tooltip /> <el-table-column label="资质名称2" prop="qualification_name_two" show-overflow-tooltip />
<el-table-column label="认证机构2" prop="certification_body_two" show-overflow-tooltip /> <el-table-column label="认证机构2" prop="certification_body_two" show-overflow-tooltip />
<el-table-column label="资质编号2" prop="qualification_number_two" show-overflow-tooltip /> <el-table-column label="资质编号2" prop="qualification_number_two" show-overflow-tooltip />
<el-table-column label="发证日期2" prop="get_date_two" show-overflow-tooltip /> <el-table-column label="发证日期2" prop="get_date_two" show-overflow-tooltip />
<el-table-column label="有效日期2" prop="effective_date_two" show-overflow-tooltip /> <el-table-column label="有效日期2" prop="effective_date_two" show-overflow-tooltip />
<el-table-column label="资质2状态 0-有效 1-无效" prop="qualification_two_status" show-overflow-tooltip /> <el-table-column label="资质2状态 " prop="qualification_two_status_text" show-overflow-tooltip />
<el-table-column label="备注" prop="remark" show-overflow-tooltip /> <el-table-column label="备注" prop="remark" show-overflow-tooltip />
<el-table-column label="附件" prop="annex" show-overflow-tooltip /> <el-table-column label="创建人" prop="create_user_name" 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 }">
<el-button <el-button
v-perms="['supervision_qualification_review.supervision_safety_management_personnel/edit']" v-perms="['supervision_qualification_review.supervision_safety_management_personnel/edit']"
type="primary" type="primary" link @click="handleEdit(row)">
link
@click="handleEdit(row)"
>
编辑 编辑
</el-button> </el-button>
<el-button <el-button
v-perms="['supervision_qualification_review.supervision_safety_management_personnel/delete']" v-perms="['supervision_qualification_review.supervision_safety_management_personnel/delete']"
type="danger" type="danger" link @click="handleDelete(row.id)">
link
@click="handleDelete(row.id)"
>
删除 删除
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div class="flex mt-4 justify-end"> <div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" /> <pagination v-model="pager" @change="getLists" />
</div> </div>
</el-card> </el-card>
@ -98,7 +84,7 @@
<script lang="ts" setup name="supervisionSafetyManagementPersonnelLists"> <script lang="ts" setup name="supervisionSafetyManagementPersonnelLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionSafetyManagementPersonnelLists, apiSupervisionSafetyManagementPersonnelDelete } from '@/api/supervision_safety_management_personnel' import { apiSupervisionSafetyManagementPersonnelLists, apiSupervisionSafetyManagementPersonnelDelete, apiSupervisionSafetyManagementPersonnelDetail } from '@/api/supervision_safety_management_personnel'
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'
@ -143,10 +129,11 @@ const handleAdd = async () => {
// //
const handleEdit = async (data: any) => { const handleEdit = async (data: any) => {
let res = await apiSupervisionSafetyManagementPersonnelDetail({ id: data.id })
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)
} }
// //

View File

@ -1,50 +1,57 @@
<template> <template>
<div class="edit-popup"> <div class="edit-popup">
<popup <popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
ref="popupRef"
:title="popupTitle"
:async="true"
width="550px"
@confirm="handleSubmit"
@close="handleClose"
>
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules"> <el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-form-item label="项目名称" prop="project_id">
<el-input v-model="formData.project_id" clearable placeholder="请输入项目名称" /> <el-form-item label="所属单位" prop="unit_qualification_id">
<el-input v-model="formData.company_name" clearable placeholder="请输入所属单位" @click="showDialog1 = true" />
</el-form-item> </el-form-item>
<el-form-item label="姓名" prop="name"> <el-form-item label="姓名" prop="name">
<el-input v-model="formData.name" clearable placeholder="请输入姓名" /> <el-input v-model="formData.name" clearable placeholder="请输入姓名" />
</el-form-item> </el-form-item>
<el-form-item label="所属单位" prop="company_id">
<el-input v-model="formData.company_id" clearable placeholder="请输入所属单位" />
</el-form-item>
<el-form-item label="工种" prop="work_type"> <el-form-item label="工种" prop="work_type">
<el-input v-model="formData.work_type" clearable placeholder="请输入工种" /> <el-input v-model="formData.work_type" clearable placeholder="请输入工种" />
</el-form-item> </el-form-item>
<el-form-item label="身份证" prop="id_card"> <el-form-item label="身份证" prop="id_card">
<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-form-item label="资格有效期" prop="validity_period"> <el-form-item label="资格有效期" prop="validity_period" label-width="100px">
<el-input v-model="formData.validity_period" clearable placeholder="请输入资格有效期" /> <el-date-picker class="flex-1 !flex" v-model="formData.validity_period" clearable
value-format="YYYY-MM-DD " placeholder="选择日期">
</el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="进场时间" prop="enter_time"> <el-form-item label="进场时间" prop="enter_time">
<el-input v-model="formData.enter_time" clearable placeholder="请输入进场时间" /> <el-date-picker class="flex-1 !flex" v-model="formData.enter_time" clearable type="datetime"
value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择时间" />
</el-form-item> </el-form-item>
<el-form-item label="离场时间" prop="leave_time"> <el-form-item label="离场时间" prop="leave_time">
<el-input v-model="formData.leave_time" clearable placeholder="请输入离场时间" /> <!-- <el-date-picker class="flex-1 !flex" v-model="formData.leave_time" clearable type="date"
value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择日期">
</el-date-picker> -->
<el-date-picker class="flex-1 !flex" v-model="formData.leave_time" clearable type="datetime"
value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择时间" />
</el-form-item> </el-form-item>
<el-form-item label="状态 0-有效 1-无效" prop="status"> <el-form-item label="状态" prop="status">
<el-input v-model="formData.status" clearable placeholder="请输入状态 0-有效 1-无效" /> <el-select class="flex-1" v-model="formData.status" clearable placeholder="请选择">
<el-option label="有效" :value="0" />
<el-option label="无效" :value="1" />
</el-select>
</el-form-item> </el-form-item>
<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="请输入备注" />
</el-form-item> </el-form-item>
<el-form-item label="附件" prop="annex"> <el-form-item label="附件" prop="annex">
<el-input v-model="formData.annex" clearable placeholder="请输入附件" /> <annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
@delFile="delFileFn" />
</el-form-item> </el-form-item>
<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="请输入创建人" />
</el-form-item> </el-form-item>
<el-dialog v-model="showDialog1" title="选择单位" width="70%">
<supervision_participating_units_qualifications @customEvent="customEvent1">
</supervision_participating_units_qualifications>
</el-dialog>
</el-form> </el-form>
</popup> </popup>
</div> </div>
@ -53,7 +60,7 @@
<script lang="ts" setup name="supervisionSpecialOperationPersonnelEdit"> <script lang="ts" setup name="supervisionSpecialOperationPersonnelEdit">
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 { apiSupervisionSpecialOperationPersonnelAdd, apiSupervisionSpecialOperationPersonnelEdit, apiSupervisionSpecialOperationPersonnelDetail } from '@/api/supervision_special_operation_personnel' import { apiSupervisionSpecialOperationPersonnelAdd, apiSupervisionSpecialOperationPersonnelEdit, } from '@/api/supervision_special_operation_personnel'
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue' import type { PropType } from 'vue'
defineProps({ defineProps({
@ -66,6 +73,7 @@ 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 showDialog1 = ref(false)
// //
@ -78,7 +86,8 @@ const formData = reactive({
id: '', id: '',
project_id: '', project_id: '',
name: '', name: '',
company_id: '', unit_qualification_id: '',
company_name: "",
work_type: '', work_type: '',
id_card: '', id_card: '',
validity_period: '', validity_period: '',
@ -89,21 +98,31 @@ const formData = reactive({
annex: '', annex: '',
create_user: '', create_user: '',
}) })
const handleAvatarSuccess_four = (response: any) => {
if (!Array.isArray(formData.annex)) formData.annex = []
// @ts-ignore
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
const customEvent1 = (e) => {
formData.unit_qualification_id = e.id
formData.company_name = e.project_name
showDialog1.value = false
}
// //
const formRules = reactive<any>({ const formRules = reactive<any>({
project_id: [{
required: true,
message: '请输入项目名称',
trigger: ['blur']
}],
name: [{ name: [{
required: true, required: true,
message: '请输入姓名', message: '请输入姓名',
trigger: ['blur'] trigger: ['blur']
}], }],
company_id: [{ unit_qualification_id: [{
required: true, required: true,
message: '请输入所属单位', message: '请输入所属单位',
trigger: ['blur'] trigger: ['blur']
@ -159,8 +178,8 @@ const setFormData = async (data: Record<any, any>) => {
formData[key] = data[key] formData[key] = data[key]
} }
} }
} }
const getDetail = async (row: Record<string, any>) => { const getDetail = async (row: Record<string, any>) => {
@ -174,9 +193,9 @@ const getDetail = async (row: Record<string, any>) => {
// //
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 apiSupervisionSpecialOperationPersonnelEdit(data) ? await apiSupervisionSpecialOperationPersonnelEdit(data)
: await apiSupervisionSpecialOperationPersonnelAdd(data) : await apiSupervisionSpecialOperationPersonnelAdd(data)
popupRef.value?.close() popupRef.value?.close()
emit('success') emit('success')

View File

@ -1,20 +1,13 @@
<template> <template>
<div> <div>
<el-card class="!border-none mb-4" shadow="never"> <el-card class="!border-none mb-4" shadow="never">
<el-form <el-form class="mb-[-16px]" :model="queryParams" inline>
class="mb-[-16px]"
:model="queryParams"
inline
>
<el-form-item label="项目名称" prop="project_id"> <el-form-item label="项目名称" prop="project_id">
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请输入项目名称" /> <el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请输入项目名称" />
</el-form-item> </el-form-item>
<el-form-item label="姓名" prop="name"> <el-form-item label="姓名" prop="name">
<el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入姓名" /> <el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入姓名" />
</el-form-item> </el-form-item>
<el-form-item label="所属单位" prop="company_id">
<el-input class="w-[280px]" v-model="queryParams.company_id" clearable placeholder="请输入所属单位" />
</el-form-item>
<el-form-item label="创建人" prop="create_user"> <el-form-item label="创建人" prop="create_user">
<el-input class="w-[280px]" v-model="queryParams.create_user" clearable placeholder="请输入创建人" /> <el-input class="w-[280px]" v-model="queryParams.create_user" clearable placeholder="请输入创建人" />
</el-form-item> </el-form-item>
@ -25,57 +18,47 @@
</el-form> </el-form>
</el-card> </el-card>
<el-card class="!border-none" v-loading="pager.loading" shadow="never"> <el-card class="!border-none" v-loading="pager.loading" shadow="never">
<el-button v-perms="['supervision_qualification_review.supervision_special_operation_personnel/add']" type="primary" @click="handleAdd"> <el-button v-perms="['supervision_qualification_review.supervision_special_operation_personnel/add']"
type="primary" @click="handleAdd">
<template #icon> <template #icon>
<icon name="el-icon-Plus" /> <icon name="el-icon-Plus" />
</template> </template>
新增 新增
</el-button> </el-button>
<el-button <el-button v-perms="['supervision_qualification_review.supervision_special_operation_personnel/delete']"
v-perms="['supervision_qualification_review.supervision_special_operation_personnel/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
:disabled="!selectData.length"
@click="handleDelete(selectData)"
>
删除 删除
</el-button> </el-button>
<div class="mt-4"> <div class="mt-4">
<el-table :data="pager.lists" @selection-change="handleSelectionChange"> <el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column label="项目名称" prop="project_id" show-overflow-tooltip />
<el-table-column label="姓名" prop="name" show-overflow-tooltip /> <el-table-column label="姓名" prop="name" show-overflow-tooltip />
<el-table-column label="所属单位" prop="company_id" show-overflow-tooltip /> <el-table-column label="所属单位" prop="company_name" show-overflow-tooltip />
<el-table-column label="工种" prop="work_type" show-overflow-tooltip /> <el-table-column label="工种" prop="work_type" show-overflow-tooltip />
<el-table-column label="身份证" prop="id_card" show-overflow-tooltip /> <el-table-column label="身份证" prop="id_card" show-overflow-tooltip />
<el-table-column label="资格有效期" prop="validity_period" show-overflow-tooltip /> <el-table-column label="资格有效期" prop="validity_period" show-overflow-tooltip />
<el-table-column label="进场时间" prop="enter_time" show-overflow-tooltip /> <el-table-column label="进场时间" prop="enter_time" show-overflow-tooltip />
<el-table-column label="离场时间" prop="leave_time" show-overflow-tooltip /> <el-table-column label="离场时间" prop="leave_time" show-overflow-tooltip />
<el-table-column label="状态 0-有效 1-无效" prop="status" show-overflow-tooltip /> <el-table-column label="状态" prop="status_text" show-overflow-tooltip />
<el-table-column label="备注" prop="remark" show-overflow-tooltip /> <el-table-column label="备注" prop="remark" show-overflow-tooltip />
<el-table-column label="附件" prop="annex" show-overflow-tooltip /> <el-table-column label="创建人" prop="create_user_name" 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 }">
<el-button <el-button
v-perms="['supervision_qualification_review.supervision_special_operation_personnel/edit']" v-perms="['supervision_qualification_review.supervision_special_operation_personnel/edit']"
type="primary" type="primary" link @click="handleEdit(row)">
link
@click="handleEdit(row)"
>
编辑 编辑
</el-button> </el-button>
<el-button <el-button
v-perms="['supervision_qualification_review.supervision_special_operation_personnel/delete']" v-perms="['supervision_qualification_review.supervision_special_operation_personnel/delete']"
type="danger" type="danger" link @click="handleDelete(row.id)">
link
@click="handleDelete(row.id)"
>
删除 删除
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div class="flex mt-4 justify-end"> <div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" /> <pagination v-model="pager" @change="getLists" />
</div> </div>
</el-card> </el-card>
@ -86,7 +69,7 @@
<script lang="ts" setup name="supervisionSpecialOperationPersonnelLists"> <script lang="ts" setup name="supervisionSpecialOperationPersonnelLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiSupervisionSpecialOperationPersonnelLists, apiSupervisionSpecialOperationPersonnelDelete } from '@/api/supervision_special_operation_personnel' import { apiSupervisionSpecialOperationPersonnelLists, apiSupervisionSpecialOperationPersonnelDelete, apiSupervisionSpecialOperationPersonnelDetail } from '@/api/supervision_special_operation_personnel'
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'
@ -130,10 +113,11 @@ const handleAdd = async () => {
// //
const handleEdit = async (data: any) => { const handleEdit = async (data: any) => {
let res = await apiSupervisionSpecialOperationPersonnelDetail({ id: data.id })
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)
} }
// //

View File

@ -23,12 +23,11 @@
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four" @delFile="delFileFn" /> <annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four" @delFile="delFileFn" />
</el-form-item> </el-form-item>
<el-dialog v-model="showDialog" title="选择项目" width="70%"> <el-dialog v-model="showDialog" title="选择项目" width="70%">
<cost_project @customEvent="customEvent"></cost_project> <cost_project @customEvent="customEvent" :task_allocation="1"></cost_project>
</el-dialog> </el-dialog>
<el-dialog v-model="showDialog1" title="选择任务" width="70%"> <el-dialog v-model="showDialog1" title="选择任务" width="70%">
<task_type @customEvent="customEvent1"></task_type> <task_type @customEvent="customEvent1"></task_type>
</el-dialog> </el-dialog>
<div v-if="showDialog3"> <div v-if="showDialog3">
<personnelselector ref="personnel" @confirm="submituser" type="1"> <personnelselector ref="personnel" @confirm="submituser" type="1">
</personnelselector> </personnelselector>
@ -47,22 +46,23 @@
<el-table-column label="任务名称" prop="task_name" width="200px"> <el-table-column label="任务名称" prop="task_name" width="200px">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.task_name" readonly @click="showDialog1 = true, tableIndex = scope.$index" <el-input v-model="scope.row.task_name" readonly @click="showDialog1 = true, tableIndex = scope.$index"
placeholder="点击选择" /> placeholder="点击选择" :disabled="mode != 'add'" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="任务次级" prop="level" width="200px"> <el-table-column label="任务次级" prop="level" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.level" :readonly="mode == 'edit'" /> <el-input v-model="row.level" :disabled="mode != 'add'" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="工序" prop="process" width="200px"> <el-table-column label="工序" prop="process" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.process" :readonly="mode == 'edit'" /> <el-input v-model="row.process" :disabled="mode != 'add'" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="任务类型" prop="task_type_id" width="200px"> <el-table-column label="任务类型" prop="task_type_id" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-select class="flex-1" v-model="row.task_type_id" clearable placeholder="请选择任务类型"> <el-select class="flex-1" v-model="row.task_type_id" clearable placeholder="请选择任务类型"
:disabled="mode != 'add'">
<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="parseInt(item.value)" />
</el-select> </el-select>
@ -70,7 +70,8 @@
</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>
@ -78,80 +79,80 @@
</el-table-column> </el-table-column>
<el-table-column label="工程师" prop="engineer" width="200px"> <el-table-column label="工程师" prop="engineer" width="200px">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.engineer" :readonly="mode == 'edit'" <el-input v-model="scope.row.engineer" :disabled="mode != 'add'"
@click="userclick(scope.$index, 'engineer')" /> @click="userclick(scope.$index, 'engineer')" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="一级审核人" prop="first_reviewer" width="200px"> <el-table-column label="一级审核人" prop="first_reviewer" width="200px">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.first_reviewer" :readonly="mode == 'edit'" <el-input v-model="scope.row.first_reviewer" :disabled="mode != 'add'"
@click="userclick(scope.$index, 'first_reviewer')" /> @click="userclick(scope.$index, 'first_reviewer')" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="二级审核人" prop="secondary_reviewer" width="200px"> <el-table-column label="二级审核人" prop="secondary_reviewer" width="200px">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.secondary_reviewer" :readonly="mode == 'edit'" <el-input v-model="scope.row.secondary_reviewer" :disabled="mode != 'add'"
@click="userclick(scope.$index, 'secondary_reviewer')" /> @click="userclick(scope.$index, 'secondary_reviewer')" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="三级审核人" prop="third_level_reviewer" width="200px"> <el-table-column label="三级审核人" prop="third_level_reviewer" width="200px">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.third_level_reviewer" :readonly="mode == 'edit'" <el-input v-model="scope.row.third_level_reviewer" :disabled="mode != 'add'"
@click="userclick(scope.$index, 'third_level_reviewer')" /> @click="userclick(scope.$index, 'third_level_reviewer')" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="天数" prop="days" width="200px"> <el-table-column label="天数" prop="days" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.days" :readonly="mode == 'edit'" /> <el-input v-model="row.days" :disabled="mode != 'add'" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="开始日期" prop="start_date" width="220px"> <el-table-column label="开始日期" prop="start_date" width="220px">
<template #default="{ row }"> <template #default="{ row }">
<el-date-picker v-model="row.start_date" clearable type="date" value-format="YYYY-MM-DD" <el-date-picker v-model="row.start_date" clearable type="date" value-format="YYYY-MM-DD"
placeholder="请选择日期"> :disabled="mode != 'add'" placeholder="请选择日期">
</el-date-picker> </el-date-picker>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="结束日期" prop="end_date" width="220px"> <el-table-column label="结束日期" prop="end_date" width="220px">
<template #default="{ row }"> <template #default="{ row }">
<el-date-picker v-model="row.end_date" clearable type="date" value-format="YYYY-MM-DD" <el-date-picker v-model="row.end_date" clearable type="date" value-format="YYYY-MM-DD"
placeholder="请选择日期"> :disabled="mode != 'add'" placeholder="请选择日期">
</el-date-picker> </el-date-picker>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="中标金额(元)" prop="bid_winning_amount" width="200px"> <el-table-column label="中标金额(元)" prop="bid_winning_amount" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.bid_winning_amount" :readonly="mode == 'edit'" /> <el-input v-model="row.bid_winning_amount" :disabled="mode != 'add'" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="送审造价(元)" prop="cost" width="200px"> <el-table-column label="送审造价(元)" prop="cost" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.cost" :readonly="mode == 'edit'" /> <el-input v-model="row.cost" :disabled="mode != 'add'" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="第三方核定金额(元)" prop="approved_amount" width="200px"> <el-table-column label="第三方核定金额(元)" prop="approved_amount" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.approved_amount" :readonly="mode == 'edit'" /> <el-input v-model="row.approved_amount" :disabled="mode != 'add'" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="施工单位" prop="construction_unit" width="200px"> <el-table-column label="施工单位" prop="construction_unit" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.construction_unit" :readonly="mode == 'edit'" /> <el-input v-model="row.construction_unit" :disabled="mode != 'add'" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="联系人" prop="contact" width="200px"> <el-table-column label="联系人" prop="contact" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.contact" :readonly="mode == 'edit'" /> <el-input v-model="row.contact" :disabled="mode != 'add'" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="联系电话" prop="contact_phone" width="200px"> <el-table-column label="联系电话" prop="contact_phone" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.contact_phone" :readonly="mode == 'edit'" /> <el-input v-model="row.contact_phone" :disabled="mode != 'add'" />
</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" :readonly="mode == 'edit'" /> <el-input v-model="row.remark" :disabled="mode != 'add'" />
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -164,7 +165,7 @@
<script lang="ts" setup name="taskAllocationEdit"> <script lang="ts" setup name="taskAllocationEdit">
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 { apiTaskAllocationAdd, apiTaskAllocationEdit, apiTaskAllocationDetail } from '@/api/task_allocation' import { apiTaskAllocationAdd, apiTaskAllocationEdit, } from '@/api/task_allocation'
import type { PropType } from 'vue' import type { PropType } from 'vue'
defineProps({ defineProps({
dictData: { dictData: {
@ -172,9 +173,7 @@ defineProps({
default: () => ({}) default: () => ({})
} }
}) })
const a = (e) => {
console.log(e.$index)
}
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>>()
@ -202,7 +201,7 @@ const formData = reactive({
id: '', id: '',
dataid: '', dataid: '',
num: '', num: '',
project: '', project_id: '',
project_name: "", project_name: "",
project_num: '', project_num: '',
head: '', head: '',
@ -234,7 +233,8 @@ const formData = reactive({
start_date: '', start_date: '',
end_date: '', end_date: '',
remark: '', remark: '',
}] }],
projectInfo: {}
}) })
const handleAdd = () => { const handleAdd = () => {
@ -277,10 +277,9 @@ const handleDelete = (row: any) => {
const tableIndex = ref(0) const tableIndex = ref(0)
const customEvent = (e) => { const customEvent = (e) => {
formData.project = 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
showDialog.value = false showDialog.value = false
} }
@ -324,8 +323,10 @@ const setFormData = async (data: Record<any, any>) => {
formData[key] = data[key] formData[key] = data[key]
} }
} }
formData.project_name = formData.projectInfo?.project_name || ""
formData.project_num = formData.projectInfo?.project_num || ""
formData.project_id = formData.projectInfo?.project_id || ""
formData.head = formData.projectInfo?.principal || ""
} }
const getDetail = async (row: Record<string, any>) => { const getDetail = async (row: Record<string, any>) => {

View File

@ -32,7 +32,7 @@
<el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip /> <el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
<el-table-column label="项目负责人" prop="projectInfo.principal" show-overflow-tooltip /> <el-table-column label="项目负责人" prop="projectInfo.principal" show-overflow-tooltip />
<el-table-column label="登记日期" prop="apptime" show-overflow-tooltip /> <el-table-column label="登记日期" prop="apptime" show-overflow-tooltip />
<el-table-column label="附件" prop="annex" show-overflow-tooltip> <!-- <el-table-column label="附件" prop="annex" show-overflow-tooltip>
<template #default="{ row }"> <template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0"> <div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'> <div v-for="(item, i) in row.annex " :key='i'>
@ -43,7 +43,7 @@
暂无文件 暂无文件
</div> </div>
</template> </template>
</el-table-column> </el-table-column> -->
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
@ -68,7 +68,7 @@
<script lang="ts" setup name="taskAllocationLists"> <script lang="ts" setup name="taskAllocationLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiTaskAllocationLists, apiTaskAllocationDelete } from '@/api/task_allocation' import { apiTaskAllocationLists, apiTaskAllocationDelete, apiTaskAllocationDetail } from '@/api/task_allocation'
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'
@ -109,10 +109,11 @@ const handleAdd = async () => {
// //
const handleEdit = async (data: any) => { const handleEdit = async (data: any) => {
let res = await apiTaskAllocationDetail({ id: data.id })
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)
} }
// //

View File

@ -1,84 +1,145 @@
<template> <template>
<div class="edit-popup"> <div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="60%" @confirm="handleSubmit" @close="handleClose"> <popup ref="popupRef" :title="popupTitle" :async="true" width="60%" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :inline="true" :model="formData" label-width="120px" :rules="formRules"> <el-form ref="formRef" :model="formData" label-width="100px" :rules="formRules">
<el-form-item label="工序" prop="process">
<el-input v-model="formData.process" clearable placeholder="请输入工序" /> <el-row>
</el-form-item> <el-col :span="8">
<el-form-item label="任务类型" prop="task_type_id"> <el-form-item label="工序" prop="process">
<el-select class="flex-1" v-model="formData.task_type_id" clearable placeholder="请选择任务类型"> <el-input v-model="formData.process" clearable placeholder="请输入工序" />
<el-option v-for="(item, index) in dictData.task_type" :key="index" :label="item.name" </el-form-item>
:value="parseInt(item.value)" /> </el-col>
</el-select> <el-col :span="8">
</el-form-item> <el-form-item label="任务类型" prop="task_type_id">
<el-form-item label="专业类型" prop="professional_type"> <el-select class="flex-1" v-model="formData.task_type_id" clearable placeholder="请选择任务类型">
<el-select class="flex-1" v-model="formData.professional_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.major_type" :key="index" :label="item.name" :value="item.value" /> :value="parseInt(item.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="工程师" prop="engineer"> </el-col>
<el-input v-model="formData.engineer" clearable placeholder="请输入工程师" /> <el-col :span="8">
</el-form-item> <el-form-item label="专业类型" prop="professional_type">
<el-form-item label="工程师id" prop="engineer_id"> <el-select class="flex-1" v-model="formData.professional_type" clearable placeholder="请选择专业类型">
<el-input v-model="formData.engineer_id" clearable placeholder="请输入工程师id" /> <el-option v-for="(item, index) in dictData.major_type" :key="index" :label="item.name"
</el-form-item> :value="item.value" />
<el-form-item label="任务级次" prop="level"> </el-select>
<el-input v-model="formData.level" clearable placeholder="请输入任务级次" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="一级审核人" prop="first_reviewer"> </el-row>
<el-input v-model="formData.first_reviewer" clearable placeholder="请输入一级审核人" /> <el-row>
</el-form-item> <el-col :span="8">
<el-form-item label="一级审核人id" prop="first_reviewer_id"> <el-form-item label="工程师" prop="engineer">
<el-input v-model="formData.first_reviewer_id" clearable placeholder="请输入一级审核人id" /> <el-input v-model="formData.engineer" clearable placeholder="请输入工程师"
</el-form-item> @click="userclick('engineer')" />
<el-form-item label="二级审核人" prop="secondary_reviewer"> </el-form-item>
<el-input v-model="formData.secondary_reviewer" clearable placeholder="请输入二级审核人" /> </el-col>
</el-form-item> <el-col :span="8">
<el-form-item label="二级审核人id" prop="secondary_reviewer_id"> <el-form-item label="任务级次" prop="level">
<el-input v-model="formData.secondary_reviewer_id" clearable placeholder="请输入二级审核人id" /> <el-input v-model="formData.level" clearable placeholder="请输入任务级次" />
</el-form-item> </el-form-item>
<el-form-item label="三级审核人" prop="third_level_reviewer"> </el-col>
<el-input v-model="formData.third_level_reviewer" clearable placeholder="请输入三级审核人" /> <el-col :span="8">
</el-form-item> <el-form-item label="一级审核人" prop="first_reviewer">
<el-form-item label="三级审核人id" prop="third_level_reviewer_id"> <el-input v-model="formData.first_reviewer" clearable placeholder="请输入一级审核人"
<el-input v-model="formData.third_level_reviewer_id" clearable placeholder="请输入三级审核人id" /> @click="userclick('first_reviewer')" />
</el-form-item> </el-form-item>
<el-form-item label="中标金额" prop="bid_winning_amount"> </el-col>
<el-input v-model="formData.bid_winning_amount" clearable placeholder="请输入中标金额(元)" /> </el-row>
</el-form-item> <!-- <el-form-item label="一级审核人id" prop="first_reviewer_id">
<el-form-item label="送审造价" prop="cost"> <el-input v-model="formData.first_reviewer_id" clearable placeholder="请输入一级审核人id" />
<el-input v-model="formData.cost" clearable placeholder="请输入送审造价(元)" /> </el-form-item> -->
</el-form-item> <el-row>
<el-form-item label="第三方核定金额" prop="approved_amount"> <el-col :span="8">
<el-input v-model="formData.approved_amount" clearable placeholder="请输入第三方核定金额(元)" /> <el-form-item label="二级审核人" prop="secondary_reviewer">
</el-form-item> <el-input v-model="formData.secondary_reviewer" clearable placeholder="请输入二级审核人"
<el-form-item label="施工单位" prop="construction_unit"> @click="userclick('secondary_reviewer')" />
<el-input v-model="formData.construction_unit" clearable placeholder="请输入施工单位" /> </el-form-item>
</el-form-item> <!-- <el-form-item label="二级审核人id" prop="secondary_reviewer_id">
<el-form-item label="施工单位id" prop="construction_unit_id"> <el-input v-model="formData.secondary_reviewer_id" clearable placeholder="请输入二级审核人id" />
<el-input v-model="formData.construction_unit_id" clearable placeholder="请输入施工单位id" /> </el-form-item> -->
</el-form-item> </el-col>
<el-form-item label="联系人" prop="contact"> <el-col :span="8">
<el-input v-model="formData.contact" clearable placeholder="请输入联系人" /> <el-form-item label="三级审核人" prop="third_level_reviewer">
</el-form-item> <el-input v-model="formData.third_level_reviewer" clearable placeholder="请输入三级审核人"
<el-form-item label="联系电话" prop="contact_phone"> @click="userclick('third_level_reviewer')" />
<el-input v-model="formData.contact_phone" clearable placeholder="请输入联系电话" /> </el-form-item>
</el-form-item> <!-- <el-form-item label="三级审核人id" prop="third_level_reviewer_id">
<el-form-item label="天数" prop="days"> <el-input v-model="formData.third_level_reviewer_id" clearable placeholder="请输入三级审核人id" />
<el-input v-model="formData.days" clearable placeholder="请输入天数" /> </el-form-item> -->
</el-form-item> </el-col>
<el-form-item label="开始日期" prop="start_date"> <el-col :span="8">
<el-input v-model="formData.start_date" clearable placeholder="请输入开始日期" /> <el-form-item label="中标金额" prop="bid_winning_amount">
</el-form-item> <el-input v-model="formData.bid_winning_amount" clearable placeholder="请输入中标金额(元)" />
<el-form-item label="结束日期" prop="end_date"> </el-form-item>
<el-input v-model="formData.end_date" clearable placeholder="请输入结束日期" /> </el-col>
</el-form-item> </el-row>
<el-form-item label="备注" prop="remark"> <el-row>
<el-input v-model="formData.remark" clearable placeholder="请输入备注" /> <el-col :span="8">
</el-form-item> <el-form-item label="送审造价" prop="cost">
</el-form> <el-input v-model="formData.cost" clearable placeholder="请输入送审造价(元)" />
</popup> </el-form-item>
</div> </el-col>
<el-col :span="8">
<el-form-item label="第三方核定金额" prop="approved_amount" label-width="140px">
<el-input v-model="formData.approved_amount" clearable placeholder="请输入第三方核定金额(元)" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="施工单位" prop="construction_unit">
<el-input v-model="formData.construction_unit" clearable placeholder="请输入施工单位" />
</el-form-item>
</el-col>
</el-row>
<!-- <el-form-item label="施工单位id" prop="construction_unit_id">
<el-input v-model="formData.construction_unit_id" clearable placeholder="请输入施工单位id" />
</el-form-item> -->
<el-row>
<el-col :span="8">
<el-form-item label="联系人" prop="contact">
<el-input v-model="formData.contact" clearable placeholder="请输入联系人" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="联系电话" prop="contact_phone">
<el-input v-model="formData.contact_phone" clearable placeholder="请输入联系电话" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="天数" prop="days">
<el-input v-model="formData.days" clearable placeholder="请输入天数" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="开始日期" prop="start_date">
<!-- <el-input v-model="formData.start_date" clearable placeholder="请输入开始日期" /> -->
<el-date-picker class="flex-1 !flex" v-model="formData.start_date" clearable type="date"
value-format="YYYY-MM-DD" placeholder="请选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="结束日期" prop="end_date">
<!-- <el-input v-model="formData.end_date" clearable placeholder="请输入结束日期" /> -->
<el-date-picker class="flex-1 !flex" v-model="formData.end_date" clearable type="date"
value-format="YYYY-MM-DD" placeholder="请选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
</el-form-item>
</el-col>
</el-row>
<div v-if="showDialog3">
<personnelselector ref="personnel" @confirm="submituser" type="1">
</personnelselector>
</div>
</el-form>
</popup>
</div>
</template> </template>
<script lang="ts" setup name="taskDetailEdit"> <script lang="ts" setup name="taskDetailEdit">
@ -88,51 +149,67 @@ import { apiTaskDetailAdd, apiTaskDetailEdit, apiTaskDetailDetail } from '@/api/
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
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>()
const popupRef = shallowRef<InstanceType<typeof Popup>>() const popupRef = shallowRef<InstanceType<typeof Popup>>()
const mode = ref('add') const mode = ref('add')
const showDialog3 = ref(false)
const personnel = ref<any>()
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑任务明细' : '新增任务明细' return mode.value == 'edit' ? '编辑任务明细' : '新增任务明细'
}) })
const tableKey = ref('')
//
const userclick = async (key) => {
tableKey.value = key
showDialog3.value = true
await nextTick()
personnel.value.open()
}
//
const submituser = (e: any) => {
formData[tableKey.value] = e.name
formData[tableKey.value + '_id'] = e.id
showDialog3.value = false
}
// //
const formData = reactive({ const formData = reactive({
id: '', id: '',
task_allocation_dataid: '', task_allocation_dataid: '',
task_name: '', task_name: '',
task_name_id: '', task_name_id: '',
process: '', process: '',
task_type_id: '', task_type_id: '',
professional_type: '', professional_type: '',
engineer: '', engineer: '',
engineer_id: '', engineer_id: '',
level: '', level: '',
first_reviewer: '', first_reviewer: '',
first_reviewer_id: '', first_reviewer_id: '',
secondary_reviewer: '', secondary_reviewer: '',
secondary_reviewer_id: '', secondary_reviewer_id: '',
third_level_reviewer: '', third_level_reviewer: '',
third_level_reviewer_id: '', third_level_reviewer_id: '',
bid_winning_amount: '', bid_winning_amount: '',
cost: '', cost: '',
approved_amount: '', approved_amount: '',
construction_unit: '', construction_unit: '',
construction_unit_id: '', construction_unit_id: '',
contact: '', contact: '',
contact_phone: '', contact_phone: '',
days: '', days: '',
start_date: '', start_date: '',
end_date: '', end_date: '',
remark: '', remark: '',
}) })
@ -145,51 +222,51 @@ const formRules = reactive<any>({
// //
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 apiTaskDetailDetail({ const data = await apiTaskDetailDetail({
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 apiTaskDetailEdit(data) ? await apiTaskDetailEdit(data)
: await apiTaskDetailAdd(data) : await apiTaskDetailAdd(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

@ -1,97 +1,75 @@
<template> <template>
<div> <div>
<el-card class="!border-none mb-4" shadow="never"> <el-card class="!border-none mb-4" shadow="never">
<el-form <el-form class="mb-[-16px]" :model="queryParams" inline>
class="mb-[-16px]"
:model="queryParams"
inline
>
<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>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-card> </el-card>
<el-card class="!border-none" v-loading="pager.loading" shadow="never"> <el-card class="!border-none" v-loading="pager.loading" shadow="never">
<el-button v-perms="['task_detail/add']" type="primary" @click="handleAdd"> <!-- <el-button v-perms="['task_detail/add']" type="primary" @click="handleAdd">
<template #icon> <template #icon>
<icon name="el-icon-Plus" /> <icon name="el-icon-Plus" />
</template> </template>
新增 新增
</el-button> </el-button>
<el-button <el-button v-perms="['task_detail/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
v-perms="['task_detail/delete']"
:disabled="!selectData.length"
@click="handleDelete(selectData)"
>
删除
</el-button>
<div class="mt-4">
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column label="主表标识" prop="taskAllocation.dataid" show-overflow-tooltip />
<el-table-column label="任务名称" prop="taskTypeInfo.name" show-overflow-tooltip />
<el-table-column label="工序" prop="process" show-overflow-tooltip />
<el-table-column label="任务类型" prop="task_type_id">
<template #default="{ row }">
<dict-value :options="dictData.task_type" :value="row.task_type_id" />
</template>
</el-table-column>
<el-table-column label="专业类型" prop="professional_type">
<template #default="{ row }">
<dict-value :options="dictData.major_type" :value="row.professional_type" />
</template>
</el-table-column>
<el-table-column label="工程师" prop="engineer" show-overflow-tooltip />
<el-table-column label="工程师id" prop="engineer_id" show-overflow-tooltip />
<el-table-column label="任务级次" prop="level" show-overflow-tooltip />
<el-table-column label="一级审核人" prop="first_reviewer" show-overflow-tooltip />
<el-table-column label="一级审核人id" prop="first_reviewer_id" show-overflow-tooltip />
<el-table-column label="二级审核人" prop="secondary_reviewer" show-overflow-tooltip />
<el-table-column label="二级审核人id" prop="secondary_reviewer_id" show-overflow-tooltip />
<el-table-column label="三级审核人" prop="third_level_reviewer" show-overflow-tooltip />
<el-table-column label="三级审核人id" prop="third_level_reviewer_id" show-overflow-tooltip />
<el-table-column label="中标金额(元)" prop="bid_winning_amount" show-overflow-tooltip />
<el-table-column label="送审造价(元)" prop="cost" show-overflow-tooltip />
<el-table-column label="第三方核定金额(元)" prop="approved_amount" show-overflow-tooltip />
<el-table-column label="施工单位" prop="construction_unit" show-overflow-tooltip />
<el-table-column label="施工单位id" prop="construction_unit_id" show-overflow-tooltip />
<el-table-column label="联系人" prop="contact" show-overflow-tooltip />
<el-table-column label="联系电话" prop="contact_phone" show-overflow-tooltip />
<el-table-column label="天数" prop="days" show-overflow-tooltip />
<el-table-column label="开始日期" prop="start_date" show-overflow-tooltip />
<el-table-column label="结束日期" prop="end_date" show-overflow-tooltip />
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
<el-button
v-perms="['task_detail/edit']"
type="primary"
link
@click="handleEdit(row)"
>
编辑
</el-button>
<el-button
v-perms="['task_detail/delete']"
type="danger"
link
@click="handleDelete(row.id)"
>
删除 删除
</el-button> </el-button> -->
</template> <div class="mt-4">
</el-table-column> <el-table :data="pager.lists" @selection-change="handleSelectionChange">
</el-table> <el-table-column type="selection" width="55" />
</div> <el-table-column label="主表标识" prop="taskAllocation.dataid" show-overflow-tooltip />
<div class="flex mt-4 justify-end"> <el-table-column label="任务名称" prop="taskTypeInfo.name" show-overflow-tooltip />
<pagination v-model="pager" @change="getLists" /> <el-table-column label="工序" prop="process" show-overflow-tooltip />
</div> <el-table-column label="任务类型" prop="task_type_id">
</el-card> <template #default="{ row }">
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <dict-value :options="dictData.task_type" :value="row.task_type_id" />
</div> </template>
</el-table-column>
<el-table-column label="专业类型" prop="professional_type">
<template #default="{ row }">
<dict-value :options="dictData.major_type" :value="row.professional_type" />
</template>
</el-table-column>
<el-table-column label="工程师" prop="engineer" show-overflow-tooltip />
<el-table-column label="任务级次" prop="level" show-overflow-tooltip />
<el-table-column label="一级审核人" prop="first_reviewer" show-overflow-tooltip />
<el-table-column label="二级审核人" prop="secondary_reviewer" show-overflow-tooltip />
<el-table-column label="三级审核人" prop="third_level_reviewer" show-overflow-tooltip />
<el-table-column label="中标金额(元)" prop="bid_winning_amount" show-overflow-tooltip />
<el-table-column label="送审造价(元)" prop="cost" show-overflow-tooltip />
<el-table-column label="第三方核定金额(元)" prop="approved_amount" show-overflow-tooltip />
<el-table-column label="施工单位" prop="construction_unit" show-overflow-tooltip />
<el-table-column label="施工单位id" prop="construction_unit_id" show-overflow-tooltip />
<el-table-column label="联系人" prop="contact" show-overflow-tooltip />
<el-table-column label="联系电话" prop="contact_phone" show-overflow-tooltip />
<el-table-column label="天数" prop="days" show-overflow-tooltip />
<el-table-column label="开始日期" prop="start_date" show-overflow-tooltip />
<el-table-column label="结束日期" prop="end_date" show-overflow-tooltip />
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
<el-button v-perms="['task_detail/edit']" type="primary" link @click="handleEdit(row)">
编辑
</el-button>
<el-button v-perms="['task_detail/delete']" type="danger" link @click="handleDelete(row.id)">
删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
</div>
</template> </template>
<script lang="ts" setup name="taskDetailLists"> <script lang="ts" setup name="taskDetailLists">
@ -117,7 +95,7 @@ const selectData = ref<any[]>([])
// //
const handleSelectionChange = (val: any[]) => { const handleSelectionChange = (val: any[]) => {
selectData.value = val.map(({ id }) => id) selectData.value = val.map(({ id }) => id)
} }
// //
@ -125,30 +103,30 @@ const { dictData } = useDictData('task_type,major_type')
// //
const { pager, getLists, resetParams, resetPage } = usePaging({ const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: apiTaskDetailLists, fetchFun: apiTaskDetailLists,
params: queryParams params: queryParams
}) })
// //
const handleAdd = async () => { const handleAdd = async () => {
showEdit.value = true showEdit.value = true
await nextTick() await nextTick()
editRef.value?.open('add') editRef.value?.open('add')
} }
// //
const handleEdit = async (data: any) => { 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(data)
} }
// //
const handleDelete = async (id: number | any[]) => { const handleDelete = async (id: number | any[]) => {
await feedback.confirm('确定要删除?') await feedback.confirm('确定要删除?')
await apiTaskDetailDelete({ id }) await apiTaskDetailDelete({ id })
getLists() getLists()
} }
getLists() getLists()

View File

@ -1,198 +1,400 @@
<template> <template>
<div class="edit-popup"> <div class="edit-popup">
<popup <popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
ref="popupRef" <el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
:title="popupTitle" <el-row>
:async="true" <el-col :span="8">
width="60%" <el-form-item label="标识" prop="dataid">
@confirm="handleSubmit" <el-input v-model="formData.dataid" clearable placeholder="系统自动生成" disabled />
@close="handleClose" </el-form-item>
> </el-col>
<el-form ref="formRef" :inline="true" :model="formData" label-width="130px" :rules="formRules"> <el-col :span="8">
<el-form-item label="标识" prop="dataid"> <el-form-item label="单据编号" prop="num">
<el-input v-model="formData.dataid" clearable placeholder="请输入" /> <el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
</el-form-item> </el-form-item>
<el-form-item label="单据编号" prop="num"> </el-col>
<el-input v-model="formData.num" clearable placeholder="请输入单据编号" /> <el-col :span="8">
</el-form-item> <el-form-item label="项目名称" prop="project_id">
<el-form-item label="项目名称" prop="project"> <el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
<el-input v-model="formData.project" clearable placeholder="请输入项目名称" /> @click="showDialog = true" />
</el-form-item> </el-form-item>
<el-form-item label="项目编号" prop="project_num"> </el-col>
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" /> </el-row>
</el-form-item> <el-row>
<el-form-item label="任务名称" prop="task"> <el-col :span="8">
<el-input v-model="formData.task" clearable placeholder="请输入任务名称" /> <el-form-item label="项目编号" prop="project_num">
</el-form-item> <el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
<el-form-item label="工序" prop="processes"> </el-form-item>
<el-input v-model="formData.processes" clearable placeholder="请输入工序" /> </el-col>
</el-form-item> <el-col :span="8">
<el-form-item label="任务类型" prop="rtype"> <el-form-item label="任务名称" prop="task">
<el-input v-model="formData.rtype" clearable placeholder="请输入任务类型" /> <el-input v-model="formData.task" clearable placeholder="请输入任务名称" />
</el-form-item> </el-form-item>
<el-form-item label="专业类型" prop="zType"> </el-col>
<el-input v-model="formData.zType" clearable placeholder="请输入专业类型" /> <el-col :span="8">
</el-form-item> <el-form-item label="工序" prop="processes">
<el-form-item label="工程师" prop="engineer"> <el-input v-model="formData.processes" clearable placeholder="请输入工序" />
<el-input v-model="formData.engineer" clearable placeholder="请输入工程师" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="项目负责人" prop="head"> </el-row>
<el-input v-model="formData.head" clearable placeholder="请输入项目负责人" /> <el-row>
</el-form-item> <el-col :span="8">
<el-form-item label="审核流程" prop="examine"> <el-form-item label="任务类型" prop="rtype">
<el-input v-model="formData.examine" clearable placeholder="请输入审核流程" /> <el-select class="flex-1" v-model="formData.rtype" clearable placeholder="请选择任务类型">
</el-form-item> <el-option v-for="(item, index) in dictData.task_type" :key="index" :label="item.name"
<el-form-item label="一级审核人" prop="one"> :value="parseInt(item.value)" />
<el-input v-model="formData.one" clearable placeholder="请输入一级审核人" /> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="二级审核人" prop="two"> </el-col>
<el-input v-model="formData.two" clearable placeholder="请输入二级审核人" /> <el-col :span="8">
</el-form-item> <el-form-item label="专业类型" prop="zType">
<el-form-item label="三级审核人" prop="three"> <!-- <el-input v-model="formData.zType" clearable placeholder="请输入专业类型" /> -->
<el-input v-model="formData.three" clearable placeholder="请输入三级审核人" /> <el-select class="flex-1" v-model="formData.zType" clearable placeholder="请选择专业类型">
</el-form-item> <el-option v-for="(item, index) in dictData.major_type" :key="index" :label="item.name"
<el-form-item label="登记日期" prop="apptime"> :value="parseInt(item.value)" />
<el-input v-model="formData.apptime" clearable placeholder="请输入登记日期" /> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="任务级次" prop="level"> </el-col>
<el-input v-model="formData.level" clearable placeholder="请输入任务级次" /> <el-col :span="8">
</el-form-item> <el-form-item label="工程师" prop="engineer">
<el-form-item label="建筑面积" prop="area"> <el-input v-model="formData.engineer" clearable placeholder="请输入工程师"
<el-input v-model="formData.area" clearable placeholder="请输入建筑面积" /> @click="userclick('engineer')" />
</el-form-item> </el-form-item>
<el-form-item label="建筑结构类型" prop="type"> </el-col>
<el-input v-model="formData.type" clearable placeholder="请输入建筑结构类型" /> </el-row>
</el-form-item> <el-row>
<el-form-item label="建筑用途" prop="use"> <el-col :span="8">
<el-input v-model="formData.use" clearable placeholder="请输入建筑用途" /> <el-form-item label="项目负责人" prop="head">
</el-form-item> <el-input v-model="formData.head" clearable placeholder="请输入项目负责人" />
<el-form-item label="施工单位" prop="construction"> </el-form-item>
<el-input v-model="formData.construction" clearable placeholder="请输入施工单位" /> </el-col>
</el-form-item> <el-col :span="8">
<el-form-item label="编制要求" prop="ask"> <el-form-item label="审核流程" prop="examine">
<el-input v-model="formData.ask" clearable placeholder="请输入编制要求" /> <el-select class="flex-1" v-model="formData.examine" clearable placeholder="请选择审核流程">
</el-form-item> <el-option v-for="(item, index) in dictData.review_process " :key="index" :label="item.name"
<el-form-item label="造价依据" prop="according"> :value="parseInt(item.value)" />
<el-input v-model="formData.according" clearable placeholder="请输入造价依据" /> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="材料补差" prop="clbc"> </el-col>
<el-input v-model="formData.clbc" clearable placeholder="请输入材料补差" /> <el-col :span="8">
</el-form-item> <el-form-item label="一级审核人" prop="one">
<el-form-item label="送审金额" prop="ssje"> <el-input v-model="formData.one" clearable placeholder="请输入一级审核人" @click="userclick('one')" />
<el-input v-model="formData.ssje" clearable placeholder="请输入送审金额" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="工程师核定价" prop="gcshd"> </el-row>
<el-input v-model="formData.gcshd" clearable placeholder="请输入工程师核定价" /> <el-row>
</el-form-item> <el-col :span="8">
<el-form-item label="核增/核减金额" prop="hzhj"> <el-form-item label="二级审核人" prop="two">
<el-input v-model="formData.hzhj" clearable placeholder="请输入核增/核减金额" /> <el-input v-model="formData.two" clearable placeholder="请输入二级审核人" @click="userclick('two')" />
</el-form-item> </el-form-item>
<el-form-item label="人工单价" prop="rg"> </el-col>
<el-input v-model="formData.rg" clearable placeholder="请输入人工单价" /> <el-col :span="8">
</el-form-item> <el-form-item label="三级审核人" prop="three">
<el-form-item label="项目负责人核定价" prop="xmhd"> <el-input v-model="formData.three" clearable placeholder="请输入三级审核人"
<el-input v-model="formData.xmhd" clearable placeholder="请输入项目负责人核定价" /> @click="userclick('three')" />
</el-form-item> </el-form-item>
<el-form-item label="部门负责人核定价" prop="bmhd"> </el-col>
<el-input v-model="formData.bmhd" clearable placeholder="请输入部门负责人核定价" /> <el-col :span="8">
</el-form-item> <el-form-item label="登记日期" prop="apptime">
<el-form-item label="审核部核定价" prop="shbhd"> <!-- <el-input v-model="formData.apptime" clearable placeholder="请输入登记日期" /> -->
<el-input v-model="formData.shbhd" clearable placeholder="请输入审核部核定价" /> <el-date-picker v-model="formData.apptime" clearable type="date" value-format="YYYY-MM-DD"
</el-form-item> class="!flex flex-1" placeholder="请选择日期">
<el-form-item label="开工日期" prop="kaigong"> </el-date-picker>
<el-input v-model="formData.kaigong" clearable placeholder="请输入开工日期" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="竣工日期" prop="jungong"> </el-row>
<el-input v-model="formData.jungong" clearable placeholder="请输入竣工日期" /> <el-row>
</el-form-item> <el-col :span="8">
<el-form-item label="备注" prop="bz"> <el-form-item label="任务级次" prop="level">
<el-input v-model="formData.bz" clearable placeholder="请输入备注" /> <el-input v-model="formData.level" clearable placeholder="请输入任务级次" />
</el-form-item> </el-form-item>
<el-form-item label="结果文件" prop="result_file"> </el-col>
<material-picker :type="'file'" v-model="formData.result_file" /> <el-col :span="8">
</el-form-item> <el-form-item label="建筑面积" prop="area">
<el-form-item label="项目负责人附件" prop="master_annex"> <el-input v-model="formData.area" clearable placeholder="请输入建筑面积" />
<material-picker :type="'file'" v-model="formData.master_annex" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="部门负责人附件" prop="bm_annex"> <el-col :span="8">
<material-picker :type="'file'" v-model="formData.bm_annex" /> <el-form-item label="建筑结构类型" prop="type" label-width="120px">
</el-form-item> <el-select class="flex-1" v-model="formData.type" clearable placeholder="请选择建筑结构类型">
<el-form-item label="审核部附件" prop="shb_annex"> <el-option v-for="(item, index) in dictData.building_structure_type " :key="index"
<material-picker :type="'file'" v-model="formData.shb_annex" /> :label="item.name" :value="parseInt(item.value)" />
</el-form-item> </el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="建筑用途" prop="use">
<el-input v-model="formData.use" clearable placeholder="请输入建筑用途" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="施工单位" prop="construction">
<el-input v-model="formData.construction" clearable placeholder="请输入施工单位" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="编制要求" prop="ask">
<!-- <el-input v-model="formData.ask" clearable placeholder="请输入编制要求" /> -->
<el-select class="flex-1" v-model="formData.ask" clearable placeholder="请选择建筑结构类型">
<el-option v-for="(item, index) in dictData.preparation_requirements " :key="index"
:label="item.name" :value="parseInt(item.value)" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="造价依据" prop="according">
<!-- <el-input v-model="formData.according" clearable placeholder="请输入造价依据" /> -->
<el-select class="flex-1" v-model="formData.according" clearable placeholder="请选择造价依据">
<el-option v-for="(item, index) in dictData.cost_sentence " :key="index" :label="item.name"
:value="parseInt(item.value)" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="材料补差" prop="clbc">
<!-- <el-input v-model="formData.clbc" clearable placeholder="请输入材料补差" /> -->
<el-select class="flex-1" v-model="formData.clbc" clearable placeholder="请选择材料补差">
<el-option v-for="(item, index) in dictData.material_compensation " :key="index"
:label="item.name" :value="parseInt(item.value)" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="送审金额" prop="ssje">
<el-input v-model="formData.ssje" clearable placeholder="请输入送审金额" type="number" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="工程师核定价" prop="gcshd" label-width="120px">
<el-input v-model="formData.gcshd" clearable placeholder="请输入工程师核定价" type="number" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="核增/核减金额" prop="hzhj" label-width="130px">
<el-input v-model="formData.hzhj" clearable placeholder="请输入核增/核减金额" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="人工单价" prop="rg">
<el-input v-model="formData.rg" clearable placeholder="请输入人工单价" type="number" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="项目负责人核定价" prop="xmhd" label-width="160px">
<el-input v-model="formData.xmhd" clearable placeholder="请输入项目负责人核定价" type="number" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="部门负责人核定价" prop="bmhd" label-width="140px">
<el-input v-model="formData.bmhd" clearable placeholder="请输入部门负责人核定价" type="number" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="审核部核定价" prop="shbhd" label-width="120px">
<el-input v-model="formData.shbhd" clearable placeholder="请输入审核部核定价" type="number" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="开工日期" prop="kaigong">
<!-- <el-input v-model="formData.kaigong" clearable placeholder="请输入开工日期" /> -->
<el-date-picker v-model="formData.kaigong" clearable type="date" class="!flex flex-1"
value-format="YYYY-MM-DD" placeholder="请选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="竣工日期" prop="jungong">
<!-- <el-input v-model="formData.jungong" clearable placeholder="请输入竣工日期" /> -->
<el-date-picker v-model="formData.jungong" clearable type="date" value-format="YYYY-MM-DD"
class="!flex flex-1" placeholder="请选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="备注" prop="bz">
<el-input v-model="formData.bz" clearable placeholder="请输入备注" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="结果文件" prop="result_file">
<annexUpload :annex="formData.result_file" @handleAvatarSuccess="handleAvatarSuccess_four"
@delFile="delFileFn" />
</el-form> </el-form-item>
</popup> </el-col>
</div> <el-col :span="6">
<el-form-item label="项目负责人附件" prop="master_annex" label-width="140px">
<annexUpload :annex="formData.master_annex" @handleAvatarSuccess="handleAvatarSuccess"
@delFile="delFileFn1" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="部门负责人附件" prop="bm_annex" label-width="140px">
<annexUpload :annex="formData.bm_annex" @handleAvatarSuccess="handleAvatarSuccess2"
@delFile="delFileFn2" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="审核部附件" prop="shb_annex">
<annexUpload :annex="formData.shb_annex" @handleAvatarSuccess="handleAvatarSuccess3"
@delFile="delFileFn3" />
</el-form-item>
</el-col>
</el-row>
<el-dialog v-model="showDialog" title="选择项目" width="70%">
<cost_project @customEvent="customEvent"></cost_project>
</el-dialog>
<div v-if="showDialog3">
<personnelselector ref="personnel" @confirm="submituser" type="1">
</personnelselector>
</div>
</el-form>
</popup>
</div>
</template> </template>
<script lang="ts" setup name="taskHandlingThreeLevelReviewEdit"> <script lang="ts" setup name="taskHandlingThreeLevelReviewEdit">
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 { apiTaskHandlingThreeLevelReviewAdd, apiTaskHandlingThreeLevelReviewEdit, apiTaskHandlingThreeLevelReviewDetail } from '@/api/task_handling_three_level_review' import { apiTaskHandlingThreeLevelReviewAdd, apiTaskHandlingThreeLevelReviewEdit, } from '@/api/task_handling_three_level_review'
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue' import type { PropType } from 'vue'
import file from "@/components/material/file.vue"; import file from "@/components/material/file.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>()
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 showDialog3 = ref(false)
const personnel = ref<any>()
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑任务办理与三级审核' : '新增任务办理与三级审核' return mode.value == 'edit' ? '编辑任务办理与三级审核' : '新增任务办理与三级审核'
}) })
// //
const formData = reactive({ const formData = reactive({
id: '', id: '',
dataid: '', dataid: '',
num: '', num: '',
project: '', project_id: '',
project_num: '', project_name: '',
task: '', project_num: '',
processes: '', task: '',
rtype: '', processes: '',
zType: '', rtype: '',
engineer: '', zType: '',
head: '', engineer: '',
examine: '', head: '',
one: '', examine: '',
two: '', one: '',
three: '', two: '',
apptime: '', three: '',
level: '', apptime: '',
area: '', level: '',
type: '', area: '',
use: '', type: '',
construction: '', use: '',
ask: '', construction: '',
according: '', ask: '',
clbc: '', according: '',
ssje: '', clbc: '',
gcshd: '', ssje: '',
hzhj: '', gcshd: '',
rg: '', hzhj: '',
xmhd: '', rg: '',
bmhd: '', xmhd: '',
shbhd: '', bmhd: '',
kaigong: '', shbhd: '',
jungong: '', kaigong: '',
bz: '', jungong: '',
result_file: [], bz: '',
master_annex: [], result_file: [],
bm_annex: [], master_annex: [],
shb_annex: [], bm_annex: [],
shb_annex: [],
projectInfo: {}
}) })
const handleAvatarSuccess_four = (response: any) => {
// @ts-ignore
response.code != 0 ? formData.result_file.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn = (index: number) => { formData.result_file.splice(index, 1) }
const handleAvatarSuccess = (response: any) => {
// @ts-ignore
response.code != 0 ? formData.master_annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn1 = (index: number) => { formData.master_annex.splice(index, 1) }
const handleAvatarSuccess2 = (response: any) => {
// @ts-ignore
response.code != 0 ? formData.bm_annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn2 = (index: number) => { formData.bm_annex.splice(index, 1) }
const handleAvatarSuccess3 = (response: any) => {
// @ts-ignore
response.code != 0 ? formData.shb_annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn3 = (index: number) => { formData.shb_annex.splice(index, 1) }
//
const submituser = (e: any) => {
formData[tableKey.value] = e.name
showDialog3.value = false
}
const tableKey = ref('')
//
const userclick = async (key) => {
tableKey.value = key
showDialog3.value = true
await nextTick()
personnel.value.open()
}
const customEvent = (e) => {
formData.project_id = e.id
formData.project_name = e.project_name
formData.project_num = e.project_num
showDialog.value = false
}
// //
const formRules = reactive<any>({ const formRules = reactive<any>({
@ -202,51 +404,52 @@ const formRules = reactive<any>({
// //
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]
}
} }
} formData.project_name = formData.projectInfo?.project_name
formData.project_num = formData.projectInfo.project_num
} }
const getDetail = async (row: Record<string, any>) => { const getDetail = async (row: Record<string, any>) => {
const data = await apiTaskHandlingThreeLevelReviewDetail({ const data = await apiTaskHandlingThreeLevelReviewDetail({
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 apiTaskHandlingThreeLevelReviewEdit(data) ? await apiTaskHandlingThreeLevelReviewEdit(data)
: await apiTaskHandlingThreeLevelReviewAdd(data) : await apiTaskHandlingThreeLevelReviewAdd(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

@ -1,12 +1,11 @@
<template> <template>
<div> <div>
<el-card class="!border-none mb-4" shadow="never"> <el-card class="!border-none mb-4" shadow="never">
<el-form <el-form class="mb-[-16px]" :model="queryParams" inline>
class="mb-[-16px]" <el-form-item label="时间段">
:model="queryParams" <el-date-picker v-model="queryTime" type="daterange" unlink-panels range-separator="-" start-placeholder="开始时间"
inline end-placeholder="结束时间" @change="changeTime" value-format="YYYY-MM-DD" />
> </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>
@ -20,39 +19,47 @@
</template> </template>
新增 新增
</el-button> </el-button>
<el-button <el-button v-perms="['task_handling_three_level_review/delete']" :disabled="!selectData.length"
v-perms="['task_handling_three_level_review/delete']" @click="handleDelete(selectData)">
:disabled="!selectData.length"
@click="handleDelete(selectData)"
>
删除 删除
</el-button> </el-button>
<div class="mt-4"> <div class="mt-4">
<el-table :data="pager.lists" @selection-change="handleSelectionChange"> <el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column label="" prop="dataid" show-overflow-tooltip />
<el-table-column label="单据编号" prop="num" show-overflow-tooltip /> <el-table-column label="单据编号" prop="num" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project" show-overflow-tooltip /> <el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
<el-table-column label="项目编号" prop="project_num" show-overflow-tooltip /> <el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
<el-table-column label="任务名称" prop="task" show-overflow-tooltip /> <el-table-column label="任务名称" prop="task" show-overflow-tooltip />
<el-table-column label="工序" prop="processes" show-overflow-tooltip /> <el-table-column label="工序" prop="processes" show-overflow-tooltip />
<el-table-column label="任务类型" prop="rtype" show-overflow-tooltip /> <el-table-column label="任务类型" prop="rtype" show-overflow-tooltip>
<el-table-column label="专业类型" prop="zType" show-overflow-tooltip /> <template #default="{ row }">
<dict-value :options="dictData.task_type" :value="row.rtype" />
</template>
</el-table-column>
<el-table-column label="专业类型" prop="zType" show-overflow-tooltip>
<template #default="{ row }">
<dict-value :options="dictData.major_type" :value="row.zType" />
</template>
</el-table-column>
<el-table-column label="工程师" prop="engineer" show-overflow-tooltip /> <el-table-column label="工程师" prop="engineer" show-overflow-tooltip />
<el-table-column label="项目负责人" prop="head" show-overflow-tooltip /> <el-table-column label="项目负责人" prop="head" show-overflow-tooltip />
<el-table-column label="审核流程" prop="examine" show-overflow-tooltip /> <el-table-column label="审核流程" prop="examine" show-overflow-tooltip>
<template #default="{ row }">
<dict-value :options="dictData.review_process" :value="row.examine" />
</template>
</el-table-column>
<el-table-column label="一级审核人" prop="one" show-overflow-tooltip /> <el-table-column label="一级审核人" prop="one" show-overflow-tooltip />
<el-table-column label="二级审核人" prop="two" show-overflow-tooltip /> <el-table-column label="二级审核人" prop="two" show-overflow-tooltip />
<el-table-column label="三级审核人" prop="three" show-overflow-tooltip /> <el-table-column label="三级审核人" prop="three" show-overflow-tooltip />
<el-table-column label="登记日期" prop="apptime" show-overflow-tooltip /> <el-table-column label="登记日期" prop="apptime" show-overflow-tooltip />
<el-table-column label="任务级次" prop="level" show-overflow-tooltip /> <el-table-column label="任务级次" prop="level" show-overflow-tooltip />
<el-table-column label="建筑面积" prop="area" show-overflow-tooltip /> <el-table-column label="建筑面积" prop="area" show-overflow-tooltip />
<el-table-column label="建筑结构类型" prop="type" show-overflow-tooltip /> <!-- <el-table-column label="建筑结构类型" prop="type" show-overflow-tooltip /> -->
<el-table-column label="建筑用途" prop="use" show-overflow-tooltip /> <el-table-column label="建筑用途" prop="use" show-overflow-tooltip />
<el-table-column label="施工单位" prop="construction" show-overflow-tooltip /> <el-table-column label="施工单位" prop="construction" show-overflow-tooltip />
<el-table-column label="编制要求" prop="ask" show-overflow-tooltip /> <!-- <el-table-column label="编制要求" prop="ask" show-overflow-tooltip /> -->
<el-table-column label="造价依据" prop="according" show-overflow-tooltip /> <!-- <el-table-column label="造价依据" prop="according" show-overflow-tooltip /> -->
<el-table-column label="材料补差" prop="clbc" show-overflow-tooltip /> <!-- <el-table-column label="材料补差" prop="clbc" show-overflow-tooltip /> -->
<el-table-column label="送审金额" prop="ssje" show-overflow-tooltip /> <el-table-column label="送审金额" prop="ssje" show-overflow-tooltip />
<el-table-column label="工程师核定价" prop="gcshd" show-overflow-tooltip /> <el-table-column label="工程师核定价" prop="gcshd" show-overflow-tooltip />
<el-table-column label="核增/核减金额" prop="hzhj" show-overflow-tooltip /> <el-table-column label="核增/核减金额" prop="hzhj" show-overflow-tooltip />
@ -66,27 +73,18 @@
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button <el-button v-perms="['task_handling_three_level_review/edit']" type="primary" link @click="handleEdit(row)">
v-perms="['task_handling_three_level_review/edit']"
type="primary"
link
@click="handleEdit(row)"
>
编辑 编辑
</el-button> </el-button>
<el-button <el-button v-perms="['task_handling_three_level_review/delete']" type="danger" link
v-perms="['task_handling_three_level_review/delete']" @click="handleDelete(row.id)">
type="danger"
link
@click="handleDelete(row.id)"
>
删除 删除
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div class="flex mt-4 justify-end"> <div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" /> <pagination v-model="pager" @change="getLists" />
</div> </div>
</el-card> </el-card>
@ -97,7 +95,7 @@
<script lang="ts" setup name="taskHandlingThreeLevelReviewLists"> <script lang="ts" setup name="taskHandlingThreeLevelReviewLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiTaskHandlingThreeLevelReviewLists, apiTaskHandlingThreeLevelReviewDelete } from '@/api/task_handling_three_level_review' import { apiTaskHandlingThreeLevelReviewLists, apiTaskHandlingThreeLevelReviewDelete, apiTaskHandlingThreeLevelReviewDetail } from '@/api/task_handling_three_level_review'
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'
@ -109,9 +107,16 @@ const showEdit = ref(false)
// //
const queryParams = reactive({ const queryParams = reactive({
start_time: "",
end_time: ""
}) })
const queryTime = ref('')
const changeTime = () => {
queryParams.start_time = queryTime.value[0]
queryParams.end_time = queryTime.value[1]
}
// //
const selectData = ref<any[]>([]) const selectData = ref<any[]>([])
@ -121,7 +126,7 @@ const handleSelectionChange = (val: any[]) => {
} }
// //
const { dictData } = useDictData('') const { dictData } = useDictData('review_process,task_type,building_structure_type,preparation_requirements,cost_sentence,material_compensation,major_type')
// //
const { pager, getLists, resetParams, resetPage } = usePaging({ const { pager, getLists, resetParams, resetPage } = usePaging({
@ -138,10 +143,11 @@ const handleAdd = async () => {
// //
const handleEdit = async (data: any) => { const handleEdit = async (data: any) => {
let res = await apiTaskHandlingThreeLevelReviewDetail({ id: data.id })
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)
} }
// //