This commit is contained in:
zmj 2024-02-28 18:13:23 +08:00
parent 97a3bd2a8a
commit e8d26abd09
23 changed files with 2656 additions and 1876 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.11:9090/' # VITE_APP_BASE_URL = 'http://192.168.1.12:9090/'

View File

@ -1,146 +1,185 @@
<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="120px" :rules="formRules">
:title="popupTitle" <el-row>
:async="true" <el-col :span="8">
width="550px"
@confirm="handleSubmit"
@close="handleClose"
>
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-form-item label="" prop="dataid">
<el-input v-model="formData.dataid" clearable placeholder="请输入" />
</el-form-item>
<el-form-item label="申请编号" prop="num"> <el-form-item label="申请编号" prop="num">
<el-input v-model="formData.num" clearable placeholder="请输入申请编号" /> <el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="盖章申请类型" prop="types"> <el-form-item label="盖章申请类型" prop="types">
<el-select class="flex-1" v-model="formData.types" clearable placeholder="请选择盖章申请类型"> <el-select class="flex-1" v-model="formData.types" clearable placeholder="请选择盖章申请类型">
<el-option <el-option v-for="(item, index) in dictData.apply_with_seal_type" :key="index"
v-for="(item, index) in dictData.apply_with_seal_type" :label="item.name" :value="item.value" />
:key="index"
:label="item.name"
:value="item.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="文件类型" prop="filetype"> <el-form-item label="文件类型" prop="filetype">
<el-select class="flex-1" v-model="formData.filetype" clearable placeholder="请选择文件类型"> <el-select class="flex-1" v-model="formData.filetype" clearable placeholder="请选择文件类型">
<el-option <el-option v-for="(item, index) in dictData.apply_with_seal_file_type" :key="index"
v-for="(item, index) in dictData.apply_with_seal_file_type" :label="item.name" :value="item.value" />
:key="index"
:label="item.name"
:value="item.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="骑缝盖章" prop="ridingseam"> <el-form-item label="骑缝盖章" prop="ridingseam">
<el-radio-group v-model="formData.ridingseam" placeholder="请选择骑缝盖章"> <el-radio-group v-model="formData.ridingseam" placeholder="请选择骑缝盖章">
<el-radio <el-radio v-for="(item, index) in dictData.isqfgz" :key="index" :label="item.value">
v-for="(item, index) in dictData.isqfgz"
:key="index"
:label="item.value"
>
{{ item.name }} {{ item.name }}
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<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-col>
<el-col :span="8">
<el-form-item label="盖章次数" prop="frequency"> <el-form-item label="盖章次数" prop="frequency">
<el-input v-model="formData.frequency" clearable placeholder="请输入盖章次数" /> <el-input v-model="formData.frequency" clearable placeholder="请输入盖章次数" />
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="限制次数" prop="limit"> <el-form-item label="限制次数" prop="limit">
<el-input v-model="formData.limit" clearable placeholder="请输入限制次数" /> <el-input v-model="formData.limit" clearable placeholder="请输入限制次数" type="number" />
</el-form-item> </el-form-item>
<el-form-item label="用印部门" prop="depar"> </el-col>
<el-input v-model="formData.depar" clearable placeholder="请输入用印部门" /> <el-col :span="8">
<el-form-item label="组织" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-select class="flex-1" v-model="formData.org_id" clearable placeholder="请选择组织"
@change="deptrmt">
<el-option v-for="(item, index) in list1" :key="index" :label="item.name"
:value="item.id" />
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="盖章人" prop="stampman"> </el-col>
<el-input v-model="formData.stampman" clearable placeholder="请输入盖章人" /> <el-col :span="8">
<el-form-item label="用印部门" prop="depar"
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" label-width="100px">
<el-select class="flex-1" v-model="formData.depar" clearable placeholder="用印部门">
<el-option v-for="(item, index) in list2" :key="index" :label="item.name"
:value="item.id" />
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="关联项目" prop="project"> </el-col>
<el-input v-model="formData.project" clearable placeholder="请输入关联项目" /> </el-row>
<el-row>
<el-col :span="8">
<el-form-item label="关联项目" prop="project_name">
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
@click="showDialog = true" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目负责人" prop="principal"> <el-form-item label="项目负责人" prop="principal">
<el-input v-model="formData.principal" clearable placeholder="请输入项目负责人" /> <el-input v-model="formData.principal" clearable placeholder="请输入项目负责人" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="盖章内容" prop="content"> <el-form-item label="盖章内容" prop="content">
<el-input v-model="formData.content" clearable placeholder="请输入盖章内容" /> <el-input v-model="formData.content" clearable placeholder="请输入盖章内容" />
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="印章是否外借" prop="loan"> <el-form-item label="印章是否外借" prop="loan">
<el-input v-model="formData.loan" clearable placeholder="请输入印章是否外借" /> <el-radio-group v-model="formData.loan" placeholder="请选择骑缝盖章">
<el-radio :label="1">
</el-radio>
<el-radio :label="0">
</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="印章借用日期" prop="borrow"> <el-form-item label="印章借用日期" prop="borrow">
<el-date-picker <el-date-picker class="flex-1 !flex" v-model="formData.borrow" clearable type="datetime"
class="flex-1 !flex" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择印章借用日期">
v-model="formData.borrow"
clearable
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="选择印章借用日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="结束借用日期" prop="returndate"> <el-form-item label="结束借用日期" prop="returndate">
<el-date-picker <el-date-picker class="flex-1 !flex" v-model="formData.returndate" clearable type="datetime"
class="flex-1 !flex" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择结束借用日期">
v-model="formData.returndate"
clearable
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="选择结束借用日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="申请人" prop="applicant"> <el-form-item label="申请人" prop="applicant">
<el-input v-model="formData.applicant" clearable placeholder="请输入申请人" /> <el-input v-model="formData.applicant" clearable placeholder="请输入申请人" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="申请日期" prop="date"> <el-form-item label="申请日期" prop="date">
<el-date-picker <el-date-picker class="flex-1 !flex" v-model="formData.date" clearable type="datetime"
class="flex-1 !flex" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择申请日期">
v-model="formData.date"
clearable
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="选择申请日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="盖章人" prop="stampman">
<el-input v-model="formData.stampman" clearable placeholder="请输入盖章人"
@click="userclick('stampman')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="实际借章日期" prop="sjborrow"> <el-form-item label="实际借章日期" prop="sjborrow">
<el-date-picker <el-date-picker class="flex-1 !flex" v-model="formData.sjborrow" clearable type="datetime"
class="flex-1 !flex" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择实际借章日期">
v-model="formData.sjborrow"
clearable
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="选择实际借章日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="实际借章人" prop="sjborrower"> <el-form-item label="实际借章人" prop="sjborrower">
<el-input v-model="formData.sjborrower" clearable placeholder="请输入实际借章人" /> <el-input v-model="formData.sjborrower" clearable placeholder="请输入实际借章人" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="实际归还日期" prop="sjreturn"> <el-form-item label="实际归还日期" prop="sjreturn">
<el-date-picker <el-date-picker class="flex-1 !flex" v-model="formData.sjreturn" clearable type="datetime"
class="flex-1 !flex" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择实际归还日期">
v-model="formData.sjreturn"
clearable
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="选择实际归还日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="实际归还人" prop="returnee"> <el-form-item label="实际归还人" prop="returnee">
<el-input v-model="formData.returnee" clearable placeholder="请输入实际归还人" /> <el-input v-model="formData.returnee" clearable placeholder="请输入实际归还人" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="附件" prop="annex"> <el-form-item label="附件" prop="annex">
<material-picker v-model="formData.annex" /> <annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
@delFile="delFileFn" />
</el-form-item> </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> </el-form>
</popup> </popup>
</div> </div>
@ -150,7 +189,8 @@
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 { apiApplyWithSealAdd, apiApplyWithSealEdit, apiApplyWithSealDetail } from '@/api/apply_with_seal' import { apiApplyWithSealAdd, apiApplyWithSealEdit, apiApplyWithSealDetail } from '@/api/apply_with_seal'
import { timeFormat } from '@/utils/util' import { deptAll } from '@/api/org/department'
import { getAll } from '@/api/org/organization'
import type { PropType } from 'vue' import type { PropType } from 'vue'
defineProps({ defineProps({
dictData: { dictData: {
@ -162,7 +202,11 @@ 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 list1 = reactive([])
const list2 = reactive([])
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
@ -180,9 +224,11 @@ const formData = reactive({
name: '', name: '',
frequency: '', frequency: '',
limit: '', limit: '',
org_id: "",
depar: '', depar: '',
stampman: '', stampman: '',
project: '', project: '',
project_name: '',
principal: '', principal: '',
content: '', content: '',
loan: '', loan: '',
@ -194,16 +240,45 @@ const formData = reactive({
sjborrower: '', sjborrower: '',
sjreturn: '', sjreturn: '',
returnee: '', returnee: '',
annex: '', annex: [],
}) })
const customEvent = (e: any) => {
formData.project = e.id
formData.project_name = e.project_name
formData.principal = e.principal
showDialog.value = false
}
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.project_change_visa_content[tableIndex.value][tableKey.value + '_id'] = e.id
showDialog3.value = false
}
// //
const formRules = reactive<any>({ const formRules = reactive<any>({
}) })
const handleAvatarSuccess_four = (response: any) => {
Array.isArray(formData.annex) ? '' : formData.annex = []
// @ts-ignore
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
// //
const setFormData = async (data: Record<any, any>) => { const setFormData = async (data: Record<any, any>) => {
@ -216,7 +291,25 @@ const setFormData = async (data: Record<any, any>) => {
} }
//
const getlist = () => {
getAll().then((res) => {
Object.assign(list1, res)
})
}
//
const deptrmt = (e: any) => {
formData.depar = ''
getlist1(e)
}
//
const getlist1 = (id: any) => {
deptAll({ 'org_id': id }).then((res) => {
list2.splice(0, list2.length, ...res)
})
}
const getDetail = async (row: Record<string, any>) => { const getDetail = async (row: Record<string, any>) => {
const data = await apiApplyWithSealDetail({ const data = await apiApplyWithSealDetail({
id: row.id id: row.id
@ -240,6 +333,8 @@ const handleSubmit = async () => {
const open = (type = 'add') => { const open = (type = 'add') => {
mode.value = type mode.value = type
popupRef.value?.open() popupRef.value?.open()
getlist()
} }
// //

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>
@ -23,17 +19,13 @@
</template> </template>
新增 新增
</el-button> </el-button>
<el-button <el-button v-perms="['project_process_management.apply_with_seal/delete']" :disabled="!selectData.length"
v-perms="['project_process_management.apply_with_seal/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="types"> <el-table-column label="盖章申请类型" prop="types">
<template #default="{ row }"> <template #default="{ row }">
@ -67,35 +59,21 @@
<el-table-column label="实际借章人" prop="sjborrower" show-overflow-tooltip /> <el-table-column label="实际借章人" prop="sjborrower" show-overflow-tooltip />
<el-table-column label="实际归还日期" prop="sjreturn" show-overflow-tooltip /> <el-table-column label="实际归还日期" prop="sjreturn" show-overflow-tooltip />
<el-table-column label="实际归还人" prop="returnee" show-overflow-tooltip /> <el-table-column label="实际归还人" prop="returnee" show-overflow-tooltip />
<el-table-column label="附件" prop="annex">
<template #default="{ row }">
<el-image style="width:50px;height:50px;" :src="row.annex" />
</template>
</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 }">
<el-button <el-button v-perms="['project_process_management.apply_with_seal/edit']" type="primary" link
v-perms="['project_process_management.apply_with_seal/edit']" @click="handleEdit(row)">
type="primary"
link
@click="handleEdit(row)"
>
编辑 编辑
</el-button> </el-button>
<el-button <el-button v-perms="['project_process_management.apply_with_seal/delete']" type="danger" link
v-perms="['project_process_management.apply_with_seal/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>
@ -106,7 +84,7 @@
<script lang="ts" setup name="applyWithSealLists"> <script lang="ts" setup name="applyWithSealLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiApplyWithSealLists, apiApplyWithSealDelete } from '@/api/apply_with_seal' import { apiApplyWithSealLists, apiApplyWithSealDelete, apiApplyWithSealDetail } from '@/api/apply_with_seal'
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'
@ -147,10 +125,11 @@ const handleAdd = async () => {
// //
const handleEdit = async (data: any) => { const handleEdit = async (data: any) => {
let res = await apiApplyWithSealDetail({ 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

@ -83,8 +83,6 @@ import customDialog from '@/components/build_division/index.vue'
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 { buildprocesssettingsAdd, buildprocesssettingsEdit, buildprocesssettingsDetail } from '@/api/build/build_process_settings' import { buildprocesssettingsAdd, buildprocesssettingsEdit, buildprocesssettingsDetail } from '@/api/build/build_process_settings'
import { timeFormat } from '@/utils/util'
import { isEmail, isIdCard, isPhone } from '@/utils/validate'
import type { PropType } from 'vue' import type { PropType } from 'vue'
// //
import annexUpload from "@/components/annexUpload/index.vue" import annexUpload from "@/components/annexUpload/index.vue"

View File

@ -1,69 +1,118 @@
<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="140px" :rules="formRules">
:title="popupTitle" <el-row>
:async="true" <el-col :span="8">
width="550px"
@confirm="handleSubmit"
@close="handleClose"
>
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-form-item label="" prop="dataid">
<el-input v-model="formData.dataid" clearable placeholder="请输入" />
</el-form-item>
<el-form-item label="单据编号" prop="num"> <el-form-item label="单据编号" prop="num">
<el-input v-model="formData.num" clearable placeholder="请输入单据编号" /> <el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目名称" prop="project"> <el-form-item label="项目名称" prop="project">
<el-input v-model="formData.project" clearable placeholder="请输入项目名称" /> <el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
@click="showDialog = true" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目编号" prop="project_num"> <el-form-item label="项目编号" prop="project_num">
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" /> <el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="部门负责人" prop="bm_master"> <el-form-item label="部门负责人" prop="bm_master">
<el-input v-model="formData.bm_master" clearable placeholder="请输入部门负责人" /> <el-input v-model="formData.bm_master" clearable placeholder="请选择部门负责人" @click="userclick()" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="委托单位" prop="wt_unit"> <el-form-item label="委托单位" prop="wt_unit">
<el-input v-model="formData.wt_unit" clearable placeholder="请输入委托单位" /> <el-input v-model="formData.wt_unit" clearable placeholder="请输入委托单位" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目负责人" prop="xm_master"> <el-form-item label="项目负责人" prop="xm_master">
<el-input v-model="formData.xm_master" clearable placeholder="请输入项目负责人" /> <el-input v-model="formData.xm_master" clearable placeholder="请输入项目负责人" />
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="实际开始日期" prop="start_date"> <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-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="实际结束日期" prop="end_date"> <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-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="工期(天)" prop="duration"> <el-form-item label="工期(天)" prop="duration">
<el-input v-model="formData.duration" clearable placeholder="请输入工期(天)" /> <el-input v-model="formData.duration" clearable placeholder="请输入工期(天)" type="number" />
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="工时" prop="working_hours"> <el-form-item label="工时" prop="working_hours">
<el-input v-model="formData.working_hours" clearable placeholder="请输入工时" /> <el-input v-model="formData.working_hours" clearable placeholder="请输入工时" type="number" />
</el-form-item> </el-form-item>
<el-form-item label="累计已完成进度(%" prop="done_progress"> </el-col>
<el-input v-model="formData.done_progress" clearable placeholder="请输入累计已完成进度(%" /> <el-col :span="8">
<el-form-item label="累计已完成进度" prop="done_progress">
<el-input v-model="formData.done_progress" clearable placeholder="请输入累计已完成进度(%"
type="number" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="本阶段完成进度(%)" prop="bjd_progress"> <el-form-item label="本阶段完成进度(%)" prop="bjd_progress">
<el-input v-model="formData.bjd_progress" clearable placeholder="请输入本阶段完成进度(%)" /> <el-input v-model="formData.bjd_progress" clearable placeholder="请输入本阶段完成进度(%)" type="number" />
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="登记人" prop="djr"> <el-form-item label="登记人" prop="djr">
<el-input v-model="formData.djr" clearable placeholder="请输入登记人" /> <el-input v-model="formData.djr" clearable placeholder="请输入登记人" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="登记时间" prop="apptime"> <el-form-item label="登记时间" prop="apptime">
<el-input v-model="formData.apptime" clearable placeholder="请输入登记时间" /> <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-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="形象进度描述" prop="jdms"> <el-form-item label="形象进度描述" prop="jdms">
<el-input v-model="formData.jdms" clearable placeholder="请输入形象进度描述" /> <el-input v-model="formData.jdms" clearable placeholder="请输入形象进度描述" />
</el-form-item> </el-form-item>
<el-form-item label="现场照片、视频、资料" prop="datas"> </el-col>
<material-picker v-model="formData.datas" /> </el-row>
<el-col :span="8">
<el-form-item label="附件" prop="datas">
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
@delFile="delFileFn" />
</el-form-item> </el-form-item>
</el-col>
<el-form-item label="文本输入框" prop="fd_23"> <el-form-item label="文本输入框" prop="fd_23">
<el-input v-model="formData.fd_23" clearable placeholder="请输入文本输入框" /> <el-input v-model="formData.fd_23" clearable placeholder="请输入文本输入框" />
</el-form-item> </el-form-item>
<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> </el-form>
</popup> </popup>
</div> </div>
@ -72,7 +121,7 @@
<script lang="ts" setup name="jianliProjectProgressReportEdit"> <script lang="ts" setup name="jianliProjectProgressReportEdit">
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 { apiJianliProjectProgressReportAdd, apiJianliProjectProgressReportEdit, apiJianliProjectProgressReportDetail } from '@/api/jianli_project_progress_report' import { apiJianliProjectProgressReportAdd, apiJianliProjectProgressReportEdit, } from '@/api/jianli_project_progress_report'
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue' import type { PropType } from 'vue'
defineProps({ defineProps({
@ -85,8 +134,18 @@ 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 handleAvatarSuccess_four = (response: any) => {
Array.isArray(formData.annex) ? '' : formData.annex = []
// @ts-ignore
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目进度汇报' : '新增项目进度汇报' return mode.value == 'edit' ? '编辑项目进度汇报' : '新增项目进度汇报'
@ -97,7 +156,8 @@ const formData = reactive({
id: '', id: '',
dataid: '', dataid: '',
num: '', num: '',
project: '', project_id: '',
project_name: '',
project_num: '', project_num: '',
bm_master: '', bm_master: '',
wt_unit: '', wt_unit: '',
@ -113,9 +173,33 @@ const formData = reactive({
jdms: '', jdms: '',
datas: '', datas: '',
fd_23: '', fd_23: '',
annex: [],
projectInfo: {}
}) })
const customEvent = (e: any) => {
formData.project_id = e.id
formData.project_name = e.project_name
formData.project_num = e.project_num
showDialog.value = false
}
//
const userclick = async () => {
showDialog3.value = true
await nextTick()
personnel.value.open()
}
//
const submituser = (e: any) => {
formData['bm_master'] = e.name
// formData.project_change_visa_content[tableIndex.value][tableKey.value + '_id'] = e.id
showDialog3.value = false
}
// //
const formRules = reactive<any>({ const formRules = reactive<any>({
@ -131,6 +215,9 @@ const setFormData = async (data: Record<any, any>) => {
formData[key] = data[key] formData[key] = data[key]
} }
} }
formData.project_id = formData.projectInfo.id
formData.project_name = formData.projectInfo.project_name
formData.project_num = formData.projectInfo.project_num
} }

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>
@ -23,26 +19,23 @@
</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="['project_process_management.jianli_project_progress_report/add']" type="primary" @click="handleAdd"> <el-button v-perms="['project_process_management.jianli_project_progress_report/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="['project_process_management.jianli_project_progress_report/delete']"
v-perms="['project_process_management.jianli_project_progress_report/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="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="bm_master" show-overflow-tooltip /> <el-table-column label="部门负责人" prop="bm_master" show-overflow-tooltip />
<el-table-column label="委托单位" prop="wt_unit" show-overflow-tooltip /> <el-table-column label="委托单位" prop="wt_unit" show-overflow-tooltip />
<el-table-column label="项目负责人" prop="xm_master" show-overflow-tooltip /> <el-table-column label="项目负责人" prop="xm_master" show-overflow-tooltip />
@ -55,30 +48,21 @@
<el-table-column label="登记人" prop="djr" show-overflow-tooltip /> <el-table-column label="登记人" prop="djr" 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="jdms" show-overflow-tooltip /> <el-table-column label="形象进度描述" prop="jdms" 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="['project_process_management.jianli_project_progress_report/edit']"
v-perms="['project_process_management.jianli_project_progress_report/edit']" type="primary" link @click="handleEdit(row)">
type="primary"
link
@click="handleEdit(row)"
>
编辑 编辑
</el-button> </el-button>
<el-button <el-button v-perms="['project_process_management.jianli_project_progress_report/delete']"
v-perms="['project_process_management.jianli_project_progress_report/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>
@ -89,7 +73,7 @@
<script lang="ts" setup name="jianliProjectProgressReportLists"> <script lang="ts" setup name="jianliProjectProgressReportLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiJianliProjectProgressReportLists, apiJianliProjectProgressReportDelete } from '@/api/jianli_project_progress_report' import { apiJianliProjectProgressReportLists, apiJianliProjectProgressReportDelete, apiJianliProjectProgressReportDetail } from '@/api/jianli_project_progress_report'
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'
@ -133,10 +117,11 @@ const handleAdd = async () => {
// //
const handleEdit = async (data: any) => { const handleEdit = async (data: any) => {
let res = await apiJianliProjectProgressReportDetail({ 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,22 +1,14 @@
<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"
: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="dataid">
<el-input v-model="formData.dataid" clearable placeholder="请输入标识" />
</el-form-item>
<el-form-item label="单据编号" prop="num"> <el-form-item label="单据编号" prop="num">
<el-input v-model="formData.num" clearable placeholder="请输入单据编号" /> <el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
</el-form-item> </el-form-item>
<el-form-item label="项目名称" prop="project"> <el-form-item label="项目名称" prop="project">
<el-input v-model="formData.project" clearable placeholder="请输入项目名称" /> <el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
@click="showDialog = true" />
</el-form-item> </el-form-item>
<el-form-item label="项目编号" prop="project_num"> <el-form-item label="项目编号" prop="project_num">
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" /> <el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
@ -25,9 +17,86 @@
<el-input v-model="formData.djr" clearable placeholder="请输入登记人" /> <el-input v-model="formData.djr" clearable placeholder="请输入登记人" />
</el-form-item> </el-form-item>
<el-form-item label="登记日期" prop="djrq"> <el-form-item label="登记日期" prop="djrq">
<el-input v-model="formData.djrq" clearable placeholder="请输入登记日期" /> <el-date-picker class="flex-1 !flex" v-model="formData.djrq" clearable type="date"
value-format="YYYY-MM-DD" placeholder="请选择日期">
</el-date-picker>
</el-form-item> </el-form-item>
<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>
<div style="margin-bottom: 30px;">任务明细</div>
<div style="margin-bottom: 30px;">
<el-table :data="formData.project_change_visa_content">
<el-table-column label="序号" v-if="mode == 'add'" width="150px">
<template #default="{ row }">
<el-button @click="handleAdd(row)">+</el-button>
<el-button @click="handleDelete(row)">-</el-button>
</template>
</el-table-column>
<el-table-column label="所在目录" prop="level" width="200px">
<template #default="scope">
<el-input v-model="scope.row.directory" :disabled="mode != 'add'" />
</template>
</el-table-column>
<el-table-column label="单位名称" prop="unit_name" width="200px">
<template #default="{ row }">
<el-input v-model="row.unit_name" :disabled="mode != 'add'" />
</template>
</el-table-column>
<el-table-column label="时间" prop="time" width="200px">
<template #default="{ row }">
<el-date-picker class="flex-1 !flex" v-model="row.time" clearable type="date"
value-format="YYYY-MM-DD" placeholder="请选择日期" :disabled="mode != 'add'">
</el-date-picker>
</template>
</el-table-column>
<el-table-column label="所属专业" prop="major" width="200px">
<template #default="{ row }">
<el-input v-model="row.major" :disabled="mode != 'add'" />
</template>
</el-table-column>
<el-table-column label="类别" prop="category" width="200px">
<template #default="scope">
<el-input v-model="scope.row.category" :disabled="mode != 'add'" />
</template>
</el-table-column>
<el-table-column label="审核内容" prop="review_content" width="200px">
<template #default="scope">
<el-input v-model="scope.row.review_content" :disabled="mode != 'add'" />
</template>
</el-table-column>
<el-table-column label="审核意见" prop="review_comments" width="200px">
<template #default="scope">
<el-input v-model="scope.row.review_comments" :disabled="mode != 'add'" />
</template>
</el-table-column>
<el-table-column label="审核人" prop="reviewer" width="200px">
<template #default="scope">
<el-input v-model="scope.row.reviewer" @click="userclick(scope.$index, 'reviewer')"
:disabled="mode != 'add'" placeholder="点击选择" readonly />
</template>
</el-table-column>
<el-table-column label="施工单位申报值" prop="tc_amount" width="200px">
<template #default="{ row }">
<el-input v-model="row.declared_value" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="咨询单位测算值" prop="calculated_value" width="200px">
<template #default="{ row }">
<el-input v-model="row.calculated_value" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="备注" prop="remark" width="200px">
<template #default="{ row }">
<el-input v-model="row.remark" :disabled="mode != 'add'" />
</template>
</el-table-column>
</el-table>
</div>
</el-form> </el-form>
</popup> </popup>
</div> </div>
@ -36,7 +105,7 @@
<script lang="ts" setup name="projectChangeVisaEdit"> <script lang="ts" setup name="projectChangeVisaEdit">
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 { apiProjectChangeVisaAdd, apiProjectChangeVisaEdit, apiProjectChangeVisaDetail } from '@/api/project_change_visa' import { apiProjectChangeVisaAdd, apiProjectChangeVisaEdit, } from '@/api/project_change_visa'
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue' import type { PropType } from 'vue'
defineProps({ defineProps({
@ -49,7 +118,9 @@ 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(() => {
@ -61,19 +132,86 @@ const formData = reactive({
id: '', id: '',
dataid: '', dataid: '',
num: '', num: '',
project: '', project_id: '',
project_name: "",
project_num: '', project_num: '',
projectInfo: {},
djr: '', djr: '',
djrq: '', djrq: '',
project_change_visa_content: [
{
directory: '',
unit_name: '',
time: '',
major: '',
category: '',
review_content: '',
review_comments: '',
reviewer: '',
reviewer_id: '',
declared_value: '',
calculated_value: '',
remark: '',
}
]
}) })
const customEvent = (e: any) => {
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>({
}) })
const tableIndex = ref(0)
const tableKey = ref('')
//
const userclick = async (e: any, key) => {
tableIndex.value = e
tableKey.value = key
showDialog3.value = true
await nextTick()
personnel.value.open()
console.log(tableIndex.value, tableKey.value)
}
//
const submituser = (e: any) => {
formData.project_change_visa_content[tableIndex.value][tableKey.value] = e.name
formData.project_change_visa_content[tableIndex.value][tableKey.value + '_id'] = e.id
showDialog3.value = false
}
const handleAdd = () => {
formData.project_change_visa_content.push({
directory: '',
unit_name: '',
time: '',
major: '',
category: '',
review_content: '',
review_comments: '',
reviewer: '',
reviewer_id: '',
declared_value: '',
calculated_value: '',
remark: '',
})
}
const handleDelete = (row: any) => {
if (formData.project_change_visa_content.length == 1) return
const index = formData.project_change_visa_content.indexOf(row);
formData.project_change_visa_content.splice(index, 1);
}
// //
const setFormData = async (data: Record<any, any>) => { const setFormData = async (data: Record<any, any>) => {
@ -83,7 +221,9 @@ const setFormData = async (data: Record<any, any>) => {
formData[key] = data[key] formData[key] = data[key]
} }
} }
formData.project_id = formData.projectInfo.id
formData.project_name = formData.projectInfo.project_name
formData.project_num = formData.projectInfo.project_num
} }

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,46 +25,53 @@
</template> </template>
新增 新增
</el-button> </el-button>
<el-button <el-button v-perms="['project_process_management.project_change_visa/delete']" :disabled="!selectData.length"
v-perms="['project_process_management.project_change_visa/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 type="expand">
<template #default="props">
<div m="4">
<el-table :data="props.row.taskTypeInfo">
<el-table-column label="所在目录" prop="directory" show-overflow-tooltip />
<el-table-column label="单位名称" prop="unit_name" show-overflow-tooltip />
<el-table-column label="时间" prop="time" show-overflow-tooltip />
<el-table-column label="所属专业" prop="major" show-overflow-tooltip />
<el-table-column label="类别" prop="category" show-overflow-tooltip />
<el-table-column label="审核内容" prop="review_content" show-overflow-tooltip />
<el-table-column label="审核意见" prop="review_comments" show-overflow-tooltip />
<el-table-column label="审核人" prop="reviewer" show-overflow-tooltip />
<el-table-column label="施工单位申报值" prop="declared_value" show-overflow-tooltip />
<el-table-column label="咨询单位测算值" prop="calculated_value" show-overflow-tooltip />
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
</el-table>
</div>
</template>
</el-table-column>
<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="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="djr" show-overflow-tooltip /> <el-table-column label="登记人" prop="djr" show-overflow-tooltip />
<el-table-column label="登记日期" prop="djrq" show-overflow-tooltip /> <el-table-column label="登记日期" prop="djrq" 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="['project_process_management.project_change_visa/edit']" type="primary" link
v-perms="['project_process_management.project_change_visa/edit']" @click="handleEdit(row)">
type="primary"
link
@click="handleEdit(row)"
>
编辑 编辑
</el-button> </el-button>
<el-button <el-button v-perms="['project_process_management.project_change_visa/delete']" type="danger"
v-perms="['project_process_management.project_change_visa/delete']" 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>
@ -79,7 +82,7 @@
<script lang="ts" setup name="projectChangeVisaLists"> <script lang="ts" setup name="projectChangeVisaLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiProjectChangeVisaLists, apiProjectChangeVisaDelete } from '@/api/project_change_visa' import { apiProjectChangeVisaLists, apiProjectChangeVisaDelete, apiProjectChangeVisaDetail } from '@/api/project_change_visa'
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'
@ -122,10 +125,11 @@ const handleAdd = async () => {
// //
const handleEdit = async (data: any) => { const handleEdit = async (data: any) => {
let res = await apiProjectChangeVisaDetail({ 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,17 +1,7 @@
<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="140px" :rules="formRules">
:title="popupTitle"
:async="true"
width="550px"
@confirm="handleSubmit"
@close="handleClose"
>
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-form-item label="主表标识" prop="project_change_visa_dataid">
<el-input v-model="formData.project_change_visa_dataid" clearable placeholder="请输入主表标识" />
</el-form-item>
<el-form-item label="所在目录" prop="directory"> <el-form-item label="所在目录" prop="directory">
<el-input v-model="formData.directory" clearable placeholder="请输入所在目录" /> <el-input v-model="formData.directory" clearable placeholder="请输入所在目录" />
</el-form-item> </el-form-item>
@ -19,7 +9,9 @@
<el-input v-model="formData.unit_name" clearable placeholder="请输入单位名称" /> <el-input v-model="formData.unit_name" clearable placeholder="请输入单位名称" />
</el-form-item> </el-form-item>
<el-form-item label="时间" prop="time"> <el-form-item label="时间" prop="time">
<el-input v-model="formData.time" clearable placeholder="请输入时间" /> <el-date-picker class="flex-1 !flex" v-model="formData.time" clearable type="date"
value-format="YYYY-MM-DD" placeholder="请选择日期">
</el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="所属专业" prop="major"> <el-form-item label="所属专业" prop="major">
<el-input v-model="formData.major" clearable placeholder="请输入所属专业" /> <el-input v-model="formData.major" clearable placeholder="请输入所属专业" />
@ -34,21 +26,21 @@
<el-input v-model="formData.review_comments" clearable placeholder="请输入审核意见" /> <el-input v-model="formData.review_comments" clearable placeholder="请输入审核意见" />
</el-form-item> </el-form-item>
<el-form-item label="审核人" prop="reviewer"> <el-form-item label="审核人" prop="reviewer">
<el-input v-model="formData.reviewer" clearable placeholder="请输入审核人" /> <el-input v-model="formData.reviewer" clearable placeholder="点击选择" readonly @click="userclick" />
</el-form-item>
<el-form-item label="审核人id" prop="reviewer_id">
<el-input v-model="formData.reviewer_id" clearable placeholder="请输入审核人id" />
</el-form-item> </el-form-item>
<el-form-item label="施工单位申报值" prop="declared_value"> <el-form-item label="施工单位申报值" prop="declared_value">
<el-input v-model="formData.declared_value" clearable placeholder="请输入施工单位申报值" /> <el-input v-model="formData.declared_value" clearable placeholder="请输入施工单位申报值" type="number" />
</el-form-item> </el-form-item>
<el-form-item label="咨询单位测算值" prop="calculated_value"> <el-form-item label="咨询单位测算值" prop="calculated_value">
<el-input v-model="formData.calculated_value" clearable placeholder="请输入咨询单位测算值" /> <el-input v-model="formData.calculated_value" clearable placeholder="请输入咨询单位测算值" type="number" />
</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="请输入备注" type="textarea" />
</el-form-item> </el-form-item>
<div v-if="showDialog3">
<personnelselector ref="personnel" @confirm="submituser" type="1">
</personnelselector>
</div>
</el-form> </el-form>
</popup> </popup>
</div> </div>
@ -70,7 +62,8 @@ 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(() => {
@ -97,6 +90,19 @@ const formData = reactive({
}) })
const userclick = async (e: any) => {
showDialog3.value = true
await nextTick()
personnel.value.open()
}
//
const submituser = (e: any) => {
formData.reviewer = e.name
formData.reviewer_id = e.id
showDialog3.value = false
}
// //
const formRules = reactive<any>({ const formRules = reactive<any>({

View File

@ -1,14 +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="project_change_visa_dataid">
<el-input class="w-[280px]" v-model="queryParams.project_change_visa_dataid" clearable placeholder="请输入主表标识" />
</el-form-item>
<el-form-item label="所在目录" prop="directory"> <el-form-item label="所在目录" prop="directory">
<el-input class="w-[280px]" v-model="queryParams.directory" clearable placeholder="请输入所在目录" /> <el-input class="w-[280px]" v-model="queryParams.directory" clearable placeholder="请输入所在目录" />
</el-form-item> </el-form-item>
@ -33,9 +26,6 @@
<el-form-item label="审核人" prop="reviewer"> <el-form-item label="审核人" prop="reviewer">
<el-input class="w-[280px]" v-model="queryParams.reviewer" clearable placeholder="请输入审核人" /> <el-input class="w-[280px]" v-model="queryParams.reviewer" clearable placeholder="请输入审核人" />
</el-form-item> </el-form-item>
<el-form-item label="审核人id" prop="reviewer_id">
<el-input class="w-[280px]" v-model="queryParams.reviewer_id" clearable placeholder="请输入审核人id" />
</el-form-item>
<el-form-item label="施工单位申报值" prop="declared_value"> <el-form-item label="施工单位申报值" prop="declared_value">
<el-input class="w-[280px]" v-model="queryParams.declared_value" clearable placeholder="请输入施工单位申报值" /> <el-input class="w-[280px]" v-model="queryParams.declared_value" clearable placeholder="请输入施工单位申报值" />
</el-form-item> </el-form-item>
@ -53,23 +43,20 @@
</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="['project_process_management.project_change_visa_content/add']" type="primary" @click="handleAdd"> <el-button v-perms="['project_process_management.project_change_visa_content/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="['project_process_management.project_change_visa_content/delete']"
v-perms="['project_process_management.project_change_visa_content/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_change_visa_dataid" show-overflow-tooltip />
<el-table-column label="所在目录" prop="directory" show-overflow-tooltip /> <el-table-column label="所在目录" prop="directory" show-overflow-tooltip />
<el-table-column label="单位名称" prop="unit_name" show-overflow-tooltip /> <el-table-column label="单位名称" prop="unit_name" show-overflow-tooltip />
<el-table-column label="时间" prop="time" show-overflow-tooltip /> <el-table-column label="时间" prop="time" show-overflow-tooltip />
@ -78,34 +65,24 @@
<el-table-column label="审核内容" prop="review_content" show-overflow-tooltip /> <el-table-column label="审核内容" prop="review_content" show-overflow-tooltip />
<el-table-column label="审核意见" prop="review_comments" show-overflow-tooltip /> <el-table-column label="审核意见" prop="review_comments" show-overflow-tooltip />
<el-table-column label="审核人" prop="reviewer" show-overflow-tooltip /> <el-table-column label="审核人" prop="reviewer" show-overflow-tooltip />
<el-table-column label="审核人id" prop="reviewer_id" show-overflow-tooltip />
<el-table-column label="施工单位申报值" prop="declared_value" show-overflow-tooltip /> <el-table-column label="施工单位申报值" prop="declared_value" show-overflow-tooltip />
<el-table-column label="咨询单位测算值" prop="calculated_value" show-overflow-tooltip /> <el-table-column label="咨询单位测算值" prop="calculated_value" 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="操作" 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_process_management.project_change_visa_content/edit']"
v-perms="['project_process_management.project_change_visa_content/edit']" type="primary" link @click="handleEdit(row)">
type="primary"
link
@click="handleEdit(row)"
>
编辑 编辑
</el-button> </el-button>
<el-button <el-button v-perms="['project_process_management.project_change_visa_content/delete']"
v-perms="['project_process_management.project_change_visa_content/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>

View File

@ -28,7 +28,7 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="关联合同" prop="affcontract"> <el-form-item label="关联合同" prop="affcontract">
<el-input v-model="formData.affcontract" clearable placeholder="请输入关联合同" /> <el-input v-model="formData.affcontract_name" clearable placeholder="请输入关联合同" readonly />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
@ -91,7 +91,88 @@
<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"></cost_project>
</el-dialog> </el-dialog>
<div v-if="showDialog3">
<personnelselector ref="personnel" @confirm="submituser" type="1">
</personnelselector>
</div>
</el-form> </el-form>
<div style="margin-bottom: 30px;">任务明细</div>
<div style="margin-bottom: 30px;">
<el-table :data="formData.project_commission_detail">
<el-table-column label="序号" v-if="mode == 'add'" width="150px">
<template #default="{ row }">
<el-button @click="handleAdd(row)">+</el-button>
<el-button @click="handleDelete(row)">-</el-button>
</template>
</el-table-column>
<el-table-column label="工程师" prop="level" width="200px">
<template #default="scope">
<el-input v-model="scope.row.engineer" :disabled="mode != 'add'"
@click="userclick(scope.$index, 'engineer')" placeholder="点击选择" />
</template>
</el-table-column>
<el-table-column label="任务名称" prop="task_name" width="200px">
<template #default="{ row }">
<el-input v-model="row.task_name" :disabled="mode != 'add'" />
</template>
</el-table-column>
<el-table-column label="任务类型" prop="task_type" width="200px">
<template #default="{ row }">
<el-select class="flex-1" v-model="row.task_type" clearable placeholder="请选择任务类型"
:disabled="mode != 'add'">
<el-option v-for="(item, index) in dictData.task_type" :key="index" :label="item.name"
:value="parseInt(item.value)" />
</el-select>
<!-- {{ dictData.task_type }} -->
</template>
</el-table-column>
<el-table-column label="专业类型" prop="professional_type" width="200px">
<template #default="{ row }">
<el-select class="flex-1" v-model="row.professional_type" clearable placeholder="请选择专业类型"
:disabled="mode != 'add'">
<el-option v-for="(item, index) in dictData.major_type" :key="index" :label="item.name"
:value="item.value" />
</el-select>
</template>
<!-- {{ dictData.major_type }} -->
</el-table-column>
<el-table-column label="造价金额" prop="zj_amount" width="200px">
<template #default="scope">
<el-input v-model="scope.row.zj_amount" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="收款金额" prop="sk_amount" width="200px">
<template #default="scope">
<el-input v-model="scope.row.sk_amount" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="其他增减费用" prop="other_fee" width="200px">
<template #default="scope">
<el-input v-model="scope.row.other_fee" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="提成比例(%)" prop="tc_rate" width="200px">
<template #default="scope">
<el-input v-model="scope.row.tc_rate" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="应提成金额" prop="tc_amount" width="200px">
<template #default="{ row }">
<el-input v-model="row.tc_amount" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="本次支付金额" prop="pay_amount" width="200px">
<template #default="{ row }">
<el-input v-model="row.pay_amount" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="备注" prop="remark" width="200px">
<template #default="{ row }">
<el-input v-model="row.remark" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
</el-table>
</div>
</popup> </popup>
</div> </div>
</template> </template>
@ -99,8 +180,7 @@
<script lang="ts" setup name="projectCommissionEdit"> <script lang="ts" setup name="projectCommissionEdit">
import type { FormInstance } from 'element-plus' import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue' import Popup from '@/components/popup/index.vue'
import { apiProjectCommissionAdd, apiProjectCommissionEdit, apiProjectCommissionDetail } from '@/api/project_commission' import { apiProjectCommissionAdd, apiProjectCommissionEdit, } from '@/api/project_commission'
import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue' import type { PropType } from 'vue'
defineProps({ defineProps({
dictData: { dictData: {
@ -113,7 +193,8 @@ 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 showDialog = ref(false)
const showDialog3 = ref(false)
const personnel = ref<any>()
// //
@ -131,6 +212,8 @@ const formData = reactive({
project_num: '', project_num: '',
head: '', head: '',
affcontract: '', affcontract: '',
affcontract_name: "",
contract: {},
industry: '', industry: '',
hk: '', hk: '',
rate: '', rate: '',
@ -140,7 +223,21 @@ const formData = reactive({
djr: '', djr: '',
apptime: '', apptime: '',
remark: '', remark: '',
project_commission_detail: {} projectInfo: {},
project_commission_detail: [{
engineer: '',
engineer_id: '',
task_name: '',
task_type: '',
professional_type: '',
zj_amount: '',
sk_amount: '',
tc_rate: '',
tc_amount: '',
pay_amount: '',
remark: '',
other_fee: '',
}]
}) })
const customEvent = (e) => { const customEvent = (e) => {
@ -149,10 +246,56 @@ const customEvent = (e) => {
formData.project_name = e.project_name formData.project_name = e.project_name
formData.project_num = e.project_num formData.project_num = e.project_num
formData.head = e.principal formData.head = e.principal
formData.affcontract = e.contract.id
formData.affcontract_name = e.contract.contract_name
showDialog.value = false showDialog.value = false
} }
const handleAdd = () => {
formData.project_commission_detail.push({
engineer: '',
engineer_id: '',
task_name: '',
task_type: '',
professional_type: '',
zj_amount: '',
sk_amount: '',
tc_rate: '',
tc_amount: '',
pay_amount: '',
remark: '',
other_fee: '',
})
}
const handleDelete = (row: any) => {
if (formData.project_commission_detail.length == 1) return
const index = formData.project_commission_detail.indexOf(row);
formData.project_commission_detail.splice(index, 1);
}
const tableIndex = ref(0)
const tableKey = ref('')
//
const userclick = async (e: any, key) => {
tableIndex.value = e
tableKey.value = key
showDialog3.value = true
await nextTick()
personnel.value.open()
console.log(tableIndex.value, tableKey.value)
}
//
const submituser = (e: any) => {
formData.project_commission_detail[tableIndex.value][tableKey.value] = e.name
formData.project_commission_detail[tableIndex.value][tableKey.value + '_id'] = e.id
showDialog3.value = false
}
// //
const formRules = reactive<any>({ const formRules = reactive<any>({
@ -167,7 +310,12 @@ const setFormData = async (data: Record<any, any>) => {
formData[key] = data[key] formData[key] = data[key]
} }
} }
formData.project_id = formData.projectInfo.id
formData.project_name = formData.projectInfo.project_name
formData.project_num = formData.projectInfo.project_num
formData.head = formData.projectInfo.principal
formData.affcontract = formData.contract.id
formData.affcontract_name = formData.contract.contract_name
} }

View File

@ -25,19 +25,49 @@
</template> </template>
新增 新增
</el-button> </el-button>
<el-button v-perms="['project_commission/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)"> <el-button 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" row-key="id">
<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 type="expand">
<template #default="props">
<div m="4">
<el-table :data="props.row.children">
<el-table-column label="工程师" prop="engineer" show-overflow-tooltip />
<el-table-column label="任务名称" prop="task_name" show-overflow-tooltip />
<el-table-column label="任务类型" prop="task_type">
<template #default="{ row }">
<dict-value :options="dictData.task_type" :value="row.task_type" />
</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="zj_amount" show-overflow-tooltip />
<el-table-column label="收款金额" prop="sk_amount" show-overflow-tooltip />
<el-table-column label="提成比例(%" prop="tc_rate" show-overflow-tooltip />
<el-table-column label="应提成金额" prop="tc_amount" show-overflow-tooltip />
<el-table-column label="本次支付金额" prop="pay_amount" show-overflow-tooltip />
</el-table>
</div>
</template>
</el-table-column>
<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="head" show-overflow-tooltip /> <el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
<el-table-column label="关联合同" prop="affcontract" show-overflow-tooltip /> <el-table-column label="项目负责人" prop="projectInfo.principal" show-overflow-tooltip />
<el-table-column label="行业" prop="industry" show-overflow-tooltip /> <el-table-column label="关联合同" prop="contract.contract_name" show-overflow-tooltip />
<el-table-column label="行业" prop="industry" show-overflow-tooltip>
<template #default="{ row }">
<dict-value :options="dictData.supervision_project_industry" :value="row.industry" />
</template>
</el-table-column>
<el-table-column label="项目回款总额" prop="hk" show-overflow-tooltip /> <el-table-column label="项目回款总额" prop="hk" show-overflow-tooltip />
<el-table-column label="提成比例(%" prop="rate" show-overflow-tooltip /> <el-table-column label="提成比例(%" prop="rate" show-overflow-tooltip />
<el-table-column label="应提成总金额" prop="ticheng" show-overflow-tooltip /> <el-table-column label="应提成总金额" prop="ticheng" show-overflow-tooltip />
@ -46,13 +76,13 @@
<el-table-column label="登记人" prop="djr" show-overflow-tooltip /> <el-table-column label="登记人" prop="djr" 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="remark" show-overflow-tooltip /> <el-table-column label="备注" prop="remark" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['project_commission/edit']" type="primary" link @click="handleEdit(row)"> <el-button v-perms="['project_commission/edit']" type="primary" link @click="handleEdit(row)">
编辑 编辑
</el-button> </el-button>
<el-button v-perms="['project_commission/delete']" type="danger" link @click="handleDelete(row.id)"> <el-button v-perms="['project_commission/delete']" type="danger" link
@click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
</template> </template>
@ -70,7 +100,7 @@
<script lang="ts" setup name="projectCommissionLists"> <script lang="ts" setup name="projectCommissionLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiProjectCommissionLists, apiProjectCommissionDelete } from '@/api/project_commission' import { apiProjectCommissionLists, apiProjectCommissionDelete, apiProjectCommissionDetail } from '@/api/project_commission'
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'
@ -96,7 +126,7 @@ const handleSelectionChange = (val: any[]) => {
} }
// //
const { dictData } = useDictData('supervision_project_industry') const { dictData } = useDictData('supervision_project_industry,task_type,major_type')
// //
const { pager, getLists, resetParams, resetPage } = usePaging({ const { pager, getLists, resetParams, resetPage } = usePaging({
@ -113,10 +143,11 @@ const handleAdd = async () => {
// //
const handleEdit = async (data: any) => { const handleEdit = async (data: any) => {
let res = await apiProjectCommissionDetail({ 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,44 +1,27 @@
<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="120px" :rules="formRules">
:title="popupTitle" <!-- <el-form-item label="主表标识" prop="project_commission_dataid">
:async="true"
width="550px"
@confirm="handleSubmit"
@close="handleClose"
>
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-form-item label="主表标识" prop="project_commission_dataid">
<el-input v-model="formData.project_commission_dataid" clearable placeholder="请输入主表标识" /> <el-input v-model="formData.project_commission_dataid" clearable placeholder="请输入主表标识" />
</el-form-item> </el-form-item> -->
<el-form-item label="工程师" prop="engineer"> <el-form-item label="工程师" prop="engineer">
<el-input v-model="formData.engineer" clearable placeholder="请输入工程师" /> <el-input v-model="formData.engineer" clearable placeholder="请输入工程师" @click="userclick" />
</el-form-item> </el-form-item>
<el-form-item label="工程师id" prop="engineer_id"> <!-- <el-form-item label="工程师id" prop="engineer_id">
<el-input v-model="formData.engineer_id" clearable placeholder="请输入工程师id" /> <el-input v-model="formData.engineer_id" clearable placeholder="请输入工程师id" />
</el-form-item> </el-form-item> -->
<el-form-item label="任务名称" prop="task_name"> <el-form-item label="任务名称" prop="task_name">
<el-input v-model="formData.task_name" clearable placeholder="请输入任务名称" /> <el-input v-model="formData.task_name" clearable placeholder="请输入任务名称" />
</el-form-item> </el-form-item>
<el-form-item label="任务类型" prop="task_type"> <el-form-item label="任务类型" prop="task_type">
<el-select class="flex-1" v-model="formData.task_type" clearable placeholder="请选择任务类型"> <el-select class="flex-1" v-model="formData.task_type" clearable placeholder="请选择任务类型">
<el-option <el-option v-for="(item, index) in dictData.task_type" :key="index" :label="item.name" :value="item.value" />
v-for="(item, index) in dictData.task_type"
:key="index"
:label="item.name"
:value="item.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="专业类型" prop="professional_type"> <el-form-item label="专业类型" prop="professional_type">
<el-select class="flex-1" v-model="formData.professional_type" clearable placeholder="请选择专业类型"> <el-select class="flex-1" v-model="formData.professional_type" clearable placeholder="请选择专业类型">
<el-option <el-option v-for="(item, index) in dictData.major_type" :key="index" :label="item.name" :value="item.value" />
v-for="(item, index) in dictData.major_type"
:key="index"
:label="item.name"
:value="item.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="造价金额" prop="zj_amount"> <el-form-item label="造价金额" prop="zj_amount">
@ -62,7 +45,10 @@
<el-form-item label="其他增减费用" prop="other_fee"> <el-form-item label="其他增减费用" prop="other_fee">
<el-input v-model="formData.other_fee" clearable placeholder="请输入其他增减费用" /> <el-input v-model="formData.other_fee" clearable placeholder="请输入其他增减费用" />
</el-form-item> </el-form-item>
<div v-if="showDialog3">
<personnelselector ref="personnel" @confirm="submituser" type="1">
</personnelselector>
</div>
</el-form> </el-form>
</popup> </popup>
</div> </div>
@ -71,7 +57,7 @@
<script lang="ts" setup name="projectCommissionDetailEdit"> <script lang="ts" setup name="projectCommissionDetailEdit">
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 { apiProjectCommissionDetailAdd, apiProjectCommissionDetailEdit, apiProjectCommissionDetailDetail } from '@/api/project_commission_detail' import { apiProjectCommissionDetailAdd, apiProjectCommissionDetailEdit, } from '@/api/project_commission_detail'
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue' import type { PropType } from 'vue'
defineProps({ defineProps({
@ -84,6 +70,8 @@ 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>()
// //
@ -110,6 +98,19 @@ const formData = reactive({
}) })
//
const userclick = async (e: any) => {
showDialog3.value = true
await nextTick()
personnel.value.open()
}
//
const submituser = (e: any) => {
formData.engineer = e.name
formData.engineer_id = e.id
showDialog3.value = false
}
// //
const formRules = reactive<any>({ const formRules = reactive<any>({

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="engineer"> <el-form-item label="工程师" prop="engineer">
<el-input class="w-[280px]" v-model="queryParams.engineer" clearable placeholder="请输入工程师" /> <el-input class="w-[280px]" v-model="queryParams.engineer" clearable placeholder="请输入工程师" />
</el-form-item> </el-form-item>
@ -20,24 +16,14 @@
</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="['project_commission_detail/add']" type="primary" @click="handleAdd"> <el-button v-perms="['project_commission_detail/delete']" :disabled="!selectData.length"
<template #icon> @click="handleDelete(selectData)">
<icon name="el-icon-Plus" />
</template>
新增
</el-button>
<el-button
v-perms="['project_commission_detail/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="engineer" show-overflow-tooltip /> <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="task_name" show-overflow-tooltip /> <el-table-column label="任务名称" prop="task_name" show-overflow-tooltip />
<el-table-column label="任务类型" prop="task_type"> <el-table-column label="任务类型" prop="task_type">
<template #default="{ row }"> <template #default="{ row }">
@ -57,27 +43,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_detail/edit']" type="primary" link @click="handleEdit(row)">
v-perms="['project_commission_detail/edit']"
type="primary"
link
@click="handleEdit(row)"
>
编辑 编辑
</el-button> </el-button>
<el-button <el-button v-perms="['project_commission_detail/delete']" type="danger" link @click="handleDelete(row.id)">
v-perms="['project_commission_detail/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>
@ -88,7 +64,7 @@
<script lang="ts" setup name="projectCommissionDetailLists"> <script lang="ts" setup name="projectCommissionDetailLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiProjectCommissionDetailLists, apiProjectCommissionDetailDelete } from '@/api/project_commission_detail' import { apiProjectCommissionDetailLists, apiProjectCommissionDetailDelete, apiProjectCommissionDetailDetail } from '@/api/project_commission_detail'
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 +106,11 @@ const handleAdd = async () => {
// //
const handleEdit = async (data: any) => { const handleEdit = async (data: any) => {
let res = await apiProjectCommissionDetailDetail({ 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,46 +1,178 @@
<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"
: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="dataid"> <el-row>
<el-input v-model="formData.dataid" clearable placeholder="请输入" /> <el-col :span="8">
</el-form-item>
<el-form-item label="单据编号" prop="num"> <el-form-item label="单据编号" prop="num">
<el-input v-model="formData.num" clearable placeholder="请输入单据编号" /> <el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目名称" prop="project"> <el-form-item label="项目名称" prop="project">
<el-input v-model="formData.project" clearable placeholder="请输入项目名称" /> <el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
@click="showDialog = true" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目编号" prop="project_num"> <el-form-item label="项目编号" prop="project_num">
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" /> <el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="登记人" prop="djr"> <el-form-item label="登记人" prop="djr">
<el-input v-model="formData.djr" clearable placeholder="请输入登记人" /> <el-input v-model="formData.djr" clearable placeholder="请输入登记人" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="登记日期" prop="djrq"> <el-form-item label="登记日期" prop="djrq">
<el-input v-model="formData.djrq" clearable placeholder="请输入登记日期" /> <el-date-picker class="flex-1 !flex" v-model="formData.djrq" clearable type="date"
value-format="YYYY-MM-DD" placeholder="请选择日期">
</el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="进度申报造价合计" prop="sbhj"> </el-col>
<el-input v-model="formData.sbhj" clearable placeholder="请输入进度申报造价合计" /> </el-row>
<el-row>
<el-col :span="8">
<el-form-item label="进度申报造价合计" prop="sbhj" label-width="160px">
<el-input v-model="formData.sbhj" clearable placeholder="系统自动计算" disabled type='number' />
</el-form-item> </el-form-item>
<el-form-item label="进度审核造价合计" prop="shhj"> </el-col>
<el-input v-model="formData.shhj" clearable placeholder="请输入进度审核造价合计" /> <el-col :span="8">
<el-form-item label="进度审核造价合计" prop="shhj" label-width="160px">
<el-input v-model="formData.shhj" clearable placeholder="系统自动计算" disabled type='number' />
</el-form-item> </el-form-item>
<el-form-item label="累计应付工程款合计" prop="ljhj"> </el-col>
<el-input v-model="formData.ljhj" clearable placeholder="请输入累计应付工程款合计" /> <el-col :span="8">
<el-form-item label="累计应付工程款合计" prop="ljhj" label-width="160px">
<el-input v-model="formData.ljhj" clearable placeholder="系统自动计算" disabled type='number' />
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-form-item label="附件" prop="annex"> <el-form-item label="附件" prop="annex">
<material-picker v-model="formData.annex" /> <annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
@delFile="delFileFn" />
</el-form-item> </el-form-item>
<el-dialog v-model="showDialog" title="选择项目" width="70%">
<cost_project @customEvent="customEvent"></cost_project>
</el-dialog>
</el-form> </el-form>
<div style="margin-bottom: 30px;">进度明细</div>
<div style="margin-bottom: 30px;">
<el-table :data="formData.project_progress_payment_detail">
<el-table-column label="序号" v-if="mode == 'add'" width="150px">
<template #default="{ row }">
<el-button @click="handleAdd">+</el-button>
<el-button @click="handleDelete(row)">-</el-button>
</template>
</el-table-column>
<el-table-column label="所在目录" prop="level" width="200px">
<template #default="scope">
<el-input v-model="scope.row.directory" :disabled="mode != 'add'" />
</template>
</el-table-column>
<el-table-column label="单位工程名称" prop="unit_project_name" width="200px">
<template #default="{ row }">
<el-input v-model="row.unit_project_name" :disabled="mode != 'add'" />
</template>
</el-table-column>
<el-table-column label="合同工程款总额" prop="contract_total_amount" width="200px">
<template #default="{ row }">
<el-input v-model="row.contract_total_amount" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="合同付款比例(%)" prop="dcntract_payment_rate" width="200px">
<template #default="{ row }">
<el-input v-model="row.dcntract_payment_rate" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="时间" prop="time" width="200px">
<template #default="{ row }">
<el-date-picker class="flex-1 !flex" v-model="row.time" clearable type="date"
value-format="YYYY-MM-DD" placeholder="请选择日期" :disabled="mode != 'add'">
</el-date-picker>
</template>
</el-table-column>
<el-table-column label="形象进度" prop="image_progress" width="200px">
<template #default="{ row }">
<el-input v-model="row.image_progress" :disabled="mode != 'add'" />
</template>
</el-table-column>
<el-table-column label="申报造价(土建)" prop="declared_cost_tj" width="200px">
<template #default="scope">
<el-input v-model="scope.row.declared_cost_tj" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="申报造价(安装)" prop="declared_cost_az" width="200px">
<template #default="scope">
<el-input v-model="scope.row.declared_cost_az" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="申报造价(其他)" prop="declared_cost_other" width="200px">
<template #default="scope">
<el-input v-model="scope.row.declared_cost_other" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="进度申报造价小计" prop="jdsbzj_xiaoji" width="200px">
<template #default="scope">
<el-input v-model="scope.row.jdsbzj_xiaoji" placeholder="系统自动计算" disabled />
</template>
</el-table-column>
<el-table-column label="审核造价(土建)" prop="audit_cost_tj" width="200px">
<template #default="{ row }">
<el-input v-model="row.audit_cost_tj" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="审核造价(安装)" prop="audit_cost_az" width="200px">
<template #default="{ row }">
<el-input v-model="row.audit_cost_az" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="审核造价(其他)" prop="audit_cost_other" width="200px">
<template #default="{ row }">
<el-input v-model="row.audit_cost_other" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="进度审核造价小计" prop="jdshzj_xiaoji" width="200px">
<template #default="{ row }">
<el-input v-model="row.jdshzj_xiaoji" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="审减额(元)" prop="deduction_amount" width="200px">
<template #default="{ row }">
<el-input v-model="row.deduction_amount" type="number" placeholder="系统自动计算" disabled />
</template>
</el-table-column>
<el-table-column label="完成产值比例(%)" prop="completed_rate" width="200px">
<template #default="{ row }">
<el-input v-model="row.completed_rate" :disabled="mode != 'add'" type="number" />
</template>
</el-table-column>
<el-table-column label="累计完成工程款" prop="ljwc_funds" width="200px">
<template #default="{ row }">
<el-input v-model="row.ljwc_funds" type="number" placeholder="系统自动计算" disabled />
</template>
</el-table-column>
<el-table-column label="当期应付工程款(元)" prop="current_payable_funds" width="200px">
<template #default="{ row }">
<el-input v-model="row.current_payable_funds" type="number" placeholder="系统自动计算" disabled />
</template>
</el-table-column>
<el-table-column label="付款比例(%)" prop="payment_rate" width="200px">
<template #default="{ row }">
<el-input v-model="row.payment_rate" type="number" placeholder="系统自动计算" disabled />
</template>
</el-table-column>
<el-table-column label="备注" prop="remark" width="200px">
<template #default="{ row }">
<el-input v-model="row.remark" :disabled="mode != 'add'" />
</template>
</el-table-column>
</el-table>
</div>
</popup> </popup>
</div> </div>
</template> </template>
@ -49,8 +181,8 @@
import type { FormInstance } from 'element-plus' import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue' import Popup from '@/components/popup/index.vue'
import { apiProjectProgressPaymentAdd, apiProjectProgressPaymentEdit, apiProjectProgressPaymentDetail } from '@/api/project_progress_payment' import { apiProjectProgressPaymentAdd, apiProjectProgressPaymentEdit, apiProjectProgressPaymentDetail } from '@/api/project_progress_payment'
import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue' import type { PropType } from 'vue'
import { number } from 'echarts/core'
defineProps({ defineProps({
dictData: { dictData: {
type: Object as PropType<Record<string, any[]>>, type: Object as PropType<Record<string, any[]>>,
@ -61,34 +193,127 @@ 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 handleAvatarSuccess_four = (response: any) => {
Array.isArray(formData.annex) ? '' : formData.annex = []
// @ts-ignore
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
// //
const formData = reactive({ const formData = reactive({
id: '', id: '',
dataid: '', dataid: '',
num: '', num: '',
project: '', project_id: '',
project_name: "",
project_num: '', project_num: '',
djr: '', djr: '',
djrq: '', djrq: '',
sbhj: '', sbhj: '',
shhj: '', shhj: '',
ljhj: '', ljhj: '',
annex: '', annex: [],
projectInfo: {},
project_progress_payment_detail: [{
project_progress_payment_id: '',
directory: '',
unit_project_name: '',
time: '',
image_progress: '',
declared_cost_tj: '',
declared_cost_az: '',
declared_cost_other: '',
jdsbzj_xiaoji: '',
audit_cost_tj: '',
audit_cost_az: '',
audit_cost_other: '',
jdshzj_xiaoji: '',
deduction_amount: '',
completed_rate: '',
contract_total_amount: '',
ljwc_funds: '',
current_payable_funds: '',
payment_rate: '',
dcntract_payment_rate: '',
remark: '',
}]
}) })
//
watch(
() => formData.project_progress_payment_detail,
(value) => {
value.forEach(item => {
item.jdsbzj_xiaoji = Number(item.declared_cost_tj) + Number(item.declared_cost_az) + Number(item.declared_cost_other)
item.jdshzj_xiaoji = Number(item.audit_cost_tj) + Number(item.audit_cost_az) + Number(item.audit_cost_other)
item.payment_rate = item.dcntract_payment_rate
item.deduction_amount = jdsbzj_xiaoji - jdshzj_xiaoji
})
},
{
deep: true
}
)
const customEvent = (e: any) => {
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>({
}) })
const handleAdd = () => {
formData.project_progress_payment_detail.push({
project_progress_payment_id: '',
directory: '',
unit_project_name: '',
time: '',
image_progress: '',
declared_cost_tj: '',
declared_cost_az: '',
declared_cost_other: '',
jdsbzj_xiaoji: '',
audit_cost_tj: '',
audit_cost_az: '',
audit_cost_other: '',
jdshzj_xiaoji: '',
deduction_amount: '',
completed_rate: '',
contract_total_amount: '',
ljwc_funds: '',
current_payable_funds: '',
payment_rate: '',
dcntract_payment_rate: '',
remark: '',
})
}
const handleDelete = (row: any) => {
if (formData.project_progress_payment_detail.length == 1) return
const index = formData.project_progress_payment_detail.indexOf(row);
formData.project_progress_payment_detail.splice(index, 1);
}
// //
@ -99,6 +324,9 @@ const setFormData = async (data: Record<any, any>) => {
formData[key] = data[key] formData[key] = data[key]
} }
} }
formData.project_id = formData.projectInfo.id
formData.project_name = formData.projectInfo.project_name
formData.project_num = formData.projectInfo.project_num
} }
@ -113,6 +341,8 @@ const getDetail = async (row: Record<string, any>) => {
// //
const handleSubmit = async () => { const handleSubmit = async () => {
console.log(formData, 'formdata')
// return
await formRef.value?.validate() await formRef.value?.validate()
const data = { ...formData, } const data = { ...formData, }
mode.value == 'edit' mode.value == 'edit'

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>
@ -23,60 +19,72 @@
</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="['project_process_management.project_progress_payment/add']" type="primary" @click="handleAdd"> <el-button v-perms="['project_process_management.project_progress_payment/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="['project_process_management.project_progress_payment/delete']"
v-perms="['project_process_management.project_progress_payment/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="dataid" show-overflow-tooltip /> <el-table-column type="expand">
<template #default="props">
<div m="4">
<el-table :data="props.row.taskTypeInfo">
<el-table-column label="所在目录" prop="directory" show-overflow-tooltip />
<el-table-column label="单位工程名称" prop="unit_project_name" show-overflow-tooltip />
<el-table-column label="时间" prop="time" show-overflow-tooltip />
<el-table-column label="形象进度" prop="image_progress" show-overflow-tooltip />
<el-table-column label="申报造价(土建)" prop="declared_cost_tj" show-overflow-tooltip />
<el-table-column label="申报造价(安装)" prop="declared_cost_az" show-overflow-tooltip />
<el-table-column label="申报造价(其他)" prop="declared_cost_other" show-overflow-tooltip />
<el-table-column label="进度申报造价小计" prop="jdsbzj_xiaoji" show-overflow-tooltip />
<el-table-column label="审核造价(土建)" prop="audit_cost_tj" show-overflow-tooltip />
<el-table-column label="审核造价(安装)" prop="audit_cost_az" show-overflow-tooltip />
<el-table-column label="审核造价(其他)" prop="audit_cost_other" show-overflow-tooltip />
<el-table-column label="进度审核造价小计" prop="jdshzj_xiaoji" show-overflow-tooltip />
<el-table-column label="审减额(元)" prop="deduction_amount" show-overflow-tooltip />
<el-table-column label="完成产值比例(%)" prop="completed_rate" show-overflow-tooltip />
<el-table-column label="合同工程款总额" prop="contract_total_amount" show-overflow-tooltip />
<el-table-column label="累计完成工程款" prop="ljwc_funds" show-overflow-tooltip />
<el-table-column label="当期应付工程款(元)" prop="current_payable_funds"
show-overflow-tooltip />
<el-table-column label="付款比例(%)" prop="payment_rate" show-overflow-tooltip />
<el-table-column label="合同付款比例(%)" prop="dcntract_payment_rate" show-overflow-tooltip />
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
</el-table>
</div>
</template>
</el-table-column>
<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="djr" show-overflow-tooltip /> <el-table-column label="登记人" prop="djr" show-overflow-tooltip />
<el-table-column label="登记日期" prop="djrq" show-overflow-tooltip /> <el-table-column label="登记日期" prop="djrq" show-overflow-tooltip />
<el-table-column label="进度申报造价合计" prop="sbhj" show-overflow-tooltip /> <el-table-column label="进度申报造价合计" prop="sbhj" show-overflow-tooltip />
<el-table-column label="进度审核造价合计" prop="shhj" show-overflow-tooltip /> <el-table-column label="进度审核造价合计" prop="shhj" show-overflow-tooltip />
<el-table-column label="累计应付工程款合计" prop="ljhj" show-overflow-tooltip /> <el-table-column label="累计应付工程款合计" prop="ljhj" show-overflow-tooltip />
<el-table-column label="附件" prop="annex">
<template #default="{ row }">
<el-image style="width:50px;height:50px;" :src="row.annex" />
</template>
</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 }">
<el-button <el-button v-perms="['project_process_management.project_progress_payment/edit']" type="primary"
v-perms="['project_process_management.project_progress_payment/edit']" link @click="handleEdit(row)">
type="primary"
link
@click="handleEdit(row)"
>
编辑 编辑
</el-button> </el-button>
<el-button <el-button v-perms="['project_process_management.project_progress_payment/delete']"
v-perms="['project_process_management.project_progress_payment/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>
@ -87,7 +95,7 @@
<script lang="ts" setup name="projectProgressPaymentLists"> <script lang="ts" setup name="projectProgressPaymentLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiProjectProgressPaymentLists, apiProjectProgressPaymentDelete } from '@/api/project_progress_payment' import { apiProjectProgressPaymentLists, apiProjectProgressPaymentDelete, apiProjectProgressPaymentDetail } from '@/api/project_progress_payment'
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 +138,11 @@ const handleAdd = async () => {
// //
const handleEdit = async (data: any) => { const handleEdit = async (data: any) => {
let res = await apiProjectProgressPaymentDetail({ 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,78 +1,134 @@
<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="140px" :rules="formRules">
:title="popupTitle" <el-row>
:async="true" <el-col :span="8">
width="550px"
@confirm="handleSubmit"
@close="handleClose"
>
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-form-item label="" prop="project_progress_payment_id">
<el-input v-model="formData.project_progress_payment_id" clearable placeholder="请输入" />
</el-form-item>
<el-form-item label="所在目录" prop="directory"> <el-form-item label="所在目录" prop="directory">
<el-input v-model="formData.directory" clearable placeholder="请输入所在目录" /> <el-input v-model="formData.directory" clearable placeholder="请输入所在目录" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="单位工程名称" prop="unit_project_name"> <el-form-item label="单位工程名称" prop="unit_project_name">
<el-input v-model="formData.unit_project_name" clearable placeholder="请输入单位工程名称" /> <el-input v-model="formData.unit_project_name" clearable placeholder="请输入单位工程名称" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="时间" prop="time"> <el-form-item label="时间" prop="time">
<el-input v-model="formData.time" clearable placeholder="请输入时间" /> <el-date-picker class="flex-1 !flex" v-model="formData.time" clearable type="date"
value-format="YYYY-MM-DD" placeholder="请选择日期" :disabled="mode != 'add'">
</el-date-picker>
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="形象进度" prop="image_progress"> <el-form-item label="形象进度" prop="image_progress">
<el-input v-model="formData.image_progress" clearable placeholder="请输入形象进度" /> <el-input v-model="formData.image_progress" clearable placeholder="请输入形象进度" type="number" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="申报造价(土建)" prop="declared_cost_tj"> <el-form-item label="申报造价(土建)" prop="declared_cost_tj">
<el-input v-model="formData.declared_cost_tj" clearable placeholder="请输入申报造价(土建)" /> <el-input v-model="formData.declared_cost_tj" clearable placeholder="请输入申报造价(土建)"
type="number" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="申报造价(安装)" prop="declared_cost_az"> <el-form-item label="申报造价(安装)" prop="declared_cost_az">
<el-input v-model="formData.declared_cost_az" clearable placeholder="请输入申报造价(安装)" /> <el-input v-model="formData.declared_cost_az" clearable placeholder="请输入申报造价(安装)"
type="number" />
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="申报造价(其他)" prop="declared_cost_other"> <el-form-item label="申报造价(其他)" prop="declared_cost_other">
<el-input v-model="formData.declared_cost_other" clearable placeholder="请输入申报造价(其他)" /> <el-input v-model="formData.declared_cost_other" clearable placeholder="请输入申报造价(其他)"
type="number" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="进度申报造价小计" prop="jdsbzj_xiaoji"> <el-form-item label="进度申报造价小计" prop="jdsbzj_xiaoji">
<el-input v-model="formData.jdsbzj_xiaoji" clearable placeholder="请输入进度申报造价小计" /> <el-input v-model="formData.jdsbzj_xiaoji" clearable placeholder="系统自动计算" disabled
type="number" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="审核造价(土建)" prop="audit_cost_tj"> <el-form-item label="审核造价(土建)" prop="audit_cost_tj">
<el-input v-model="formData.audit_cost_tj" clearable placeholder="请输入审核造价(土建)" /> <el-input v-model="formData.audit_cost_tj" clearable placeholder="请输入审核造价(土建)" type="number" />
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="审核造价(安装)" prop="audit_cost_az"> <el-form-item label="审核造价(安装)" prop="audit_cost_az">
<el-input v-model="formData.audit_cost_az" clearable placeholder="请输入审核造价(安装)" /> <el-input v-model="formData.audit_cost_az" clearable placeholder="请输入审核造价(安装)" type="number" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="审核造价(其他)" prop="audit_cost_other"> <el-form-item label="审核造价(其他)" prop="audit_cost_other">
<el-input v-model="formData.audit_cost_other" clearable placeholder="请输入审核造价(其他)" /> <el-input v-model="formData.audit_cost_other" clearable placeholder="请输入审核造价(其他)"
type="number" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="进度审核造价小计" prop="jdshzj_xiaoji"> <el-form-item label="进度审核造价小计" prop="jdshzj_xiaoji">
<el-input v-model="formData.jdshzj_xiaoji" clearable placeholder="请输入进度审核造价小计" /> <el-input v-model="formData.jdshzj_xiaoji" clearable placeholder="请输入进度审核造价小计" type="number" />
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="审减额(元)" prop="deduction_amount"> <el-form-item label="审减额(元)" prop="deduction_amount">
<el-input v-model="formData.deduction_amount" clearable placeholder="请输入审减额(元)" /> <el-input v-model="formData.deduction_amount" clearable placeholder="系统自动计算" disabled
type="number" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="完成产值比例(%)" prop="completed_rate"> <el-form-item label="完成产值比例(%)" prop="completed_rate">
<el-input v-model="formData.completed_rate" clearable placeholder="请输入完成产值比例(%)" /> <el-input v-model="formData.completed_rate" clearable placeholder="请输入完成产值比例(%)"
type="number" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="合同工程款总额" prop="contract_total_amount"> <el-form-item label="合同工程款总额" prop="contract_total_amount">
<el-input v-model="formData.contract_total_amount" clearable placeholder="请输入合同工程款总额" /> <el-input v-model="formData.contract_total_amount" clearable placeholder="请输入合同工程款总额"
type="number" />
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="累计完成工程款" prop="ljwc_funds"> <el-form-item label="累计完成工程款" prop="ljwc_funds">
<el-input v-model="formData.ljwc_funds" clearable placeholder="请输入累计完成工程款" /> <el-input v-model="formData.ljwc_funds" clearable placeholder="系统自动计算" disabled type="number" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="当期应付工程款(元)" prop="current_payable_funds"> <el-form-item label="当期应付工程款(元)" prop="current_payable_funds">
<el-input v-model="formData.current_payable_funds" clearable placeholder="请输入当期应付工程款(元)" /> <el-input v-model="formData.current_payable_funds" clearable placeholder="系统自动计算" disabled
type="number" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="付款比例(%)" prop="payment_rate"> <el-form-item label="付款比例(%)" prop="payment_rate">
<el-input v-model="formData.payment_rate" clearable placeholder="请输入付款比例(%)" /> <el-input v-model="formData.payment_rate" clearable placeholder="系统自动计算" disabled
type="number" />
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="合同付款比例(%)" prop="dcntract_payment_rate"> <el-form-item label="合同付款比例(%)" prop="dcntract_payment_rate">
<el-input v-model="formData.dcntract_payment_rate" clearable placeholder="请输入合同付款比例(%)" /> <el-input v-model="formData.dcntract_payment_rate" clearable placeholder="请输入合同付款比例(%)"
type="number" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" /> <el-input v-model="formData.remark" clearable placeholder="请输入备注" />
</el-form-item> </el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
</popup> </popup>
</div> </div>

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> <el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button> <el-button type="primary" @click="resetPage">查询</el-button>
@ -14,23 +10,20 @@
</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="['project_process_management.project_progress_payment_detail/add']" type="primary" @click="handleAdd"> <el-button v-perms="['project_process_management.project_progress_payment_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="['project_process_management.project_progress_payment_detail/delete']"
v-perms="['project_process_management.project_progress_payment_detail/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_progress_payment_id" show-overflow-tooltip />
<el-table-column label="所在目录" prop="directory" show-overflow-tooltip /> <el-table-column label="所在目录" prop="directory" show-overflow-tooltip />
<el-table-column label="单位工程名称" prop="unit_project_name" show-overflow-tooltip /> <el-table-column label="单位工程名称" prop="unit_project_name" show-overflow-tooltip />
<el-table-column label="时间" prop="time" show-overflow-tooltip /> <el-table-column label="时间" prop="time" show-overflow-tooltip />
@ -54,27 +47,19 @@
<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_process_management.project_progress_payment_detail/edit']"
v-perms="['project_process_management.project_progress_payment_detail/edit']" type="primary" link @click="handleEdit(row)">
type="primary"
link
@click="handleEdit(row)"
>
编辑 编辑
</el-button> </el-button>
<el-button <el-button v-perms="['project_process_management.project_progress_payment_detail/delete']"
v-perms="['project_process_management.project_progress_payment_detail/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>

View File

@ -1,22 +1,14 @@
<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="dataid">
<el-input v-model="formData.dataid" clearable placeholder="请输入" />
</el-form-item>
<el-form-item label="单据编号" prop="num"> <el-form-item label="单据编号" prop="num">
<el-input v-model="formData.num" clearable placeholder="请输入单据编号" /> <el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
</el-form-item> </el-form-item>
<el-form-item label="项目名称" prop="project"> <el-form-item label="项目名称" prop="project">
<el-input v-model="formData.project" clearable placeholder="请输入项目名称" /> <el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
@click="showDialog = true" />
</el-form-item> </el-form-item>
<el-form-item label="项目编号" prop="project_num"> <el-form-item label="项目编号" prop="project_num">
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" /> <el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
@ -31,13 +23,15 @@
<el-input v-model="formData.zx_type" clearable placeholder="请输入咨询类型" /> <el-input v-model="formData.zx_type" clearable placeholder="请输入咨询类型" />
</el-form-item> </el-form-item>
<el-form-item label="项目整改人" prop="zg_master"> <el-form-item label="项目整改人" prop="zg_master">
<el-input v-model="formData.zg_master" clearable placeholder="请输入项目整改人" /> <el-input v-model="formData.zg_master" clearable placeholder="点击选择" @click="userclick('zg_master')" />
</el-form-item> </el-form-item>
<el-form-item label="登记人" prop="dj_person"> <el-form-item label="登记人" prop="dj_person">
<el-input v-model="formData.dj_person" clearable placeholder="请输入登记人" /> <el-input v-model="formData.dj_person" clearable placeholder="请输入登记人" />
</el-form-item> </el-form-item>
<el-form-item label="登记日期" prop="apptime"> <el-form-item label="登记日期" prop="apptime">
<el-input v-model="formData.apptime" clearable placeholder="请输入登记日期" /> <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-form-item>
<el-form-item label="存在问题" prop="problem"> <el-form-item label="存在问题" prop="problem">
<el-input v-model="formData.problem" clearable placeholder="请输入存在问题" /> <el-input v-model="formData.problem" clearable placeholder="请输入存在问题" />
@ -45,13 +39,20 @@
<el-form-item label="修改情况" prop="deal_desc"> <el-form-item label="修改情况" prop="deal_desc">
<el-input v-model="formData.deal_desc" clearable placeholder="请输入修改情况" /> <el-input v-model="formData.deal_desc" clearable placeholder="请输入修改情况" />
</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="附件">
<material-picker v-model="formData.annex" /> <annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
@delFile="delFileFn" />
</el-form-item> </el-form-item>
<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> </el-form>
</popup> </popup>
</div> </div>
@ -60,7 +61,7 @@
<script lang="ts" setup name="projectRectificationEdit"> <script lang="ts" setup name="projectRectificationEdit">
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 { apiProjectRectificationAdd, apiProjectRectificationEdit, apiProjectRectificationDetail } from '@/api/project_rectification' import { apiProjectRectificationAdd, apiProjectRectificationEdit, } from '@/api/project_rectification'
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue' import type { PropType } from 'vue'
defineProps({ defineProps({
@ -73,8 +74,17 @@ 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 handleAvatarSuccess_four = (response: any) => {
Array.isArray(formData.annex) ? '' : formData.annex = []
// @ts-ignore
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目整改' : '新增项目整改' return mode.value == 'edit' ? '编辑项目整改' : '新增项目整改'
@ -85,7 +95,8 @@ const formData = reactive({
id: '', id: '',
dataid: '', dataid: '',
num: '', num: '',
project: '', project_id: '',
project_name: '',
project_num: '', project_num: '',
wt_unit: '', wt_unit: '',
xm_master: '', xm_master: '',
@ -96,7 +107,8 @@ const formData = reactive({
problem: '', problem: '',
deal_desc: '', deal_desc: '',
remark: '', remark: '',
annex: '', annex: [],
projectInfo: {}
}) })
@ -105,6 +117,30 @@ const formData = reactive({
const formRules = reactive<any>({ const formRules = reactive<any>({
}) })
const customEvent = (e: any) => {
formData.project_id = e.id
formData.project_name = e.project_name
formData.project_num = e.project_num
showDialog.value = false
}
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.project_change_visa_content[tableIndex.value][tableKey.value + '_id'] = e.id
showDialog3.value = false
}
// //
@ -115,7 +151,9 @@ const setFormData = async (data: Record<any, any>) => {
formData[key] = data[key] formData[key] = data[key]
} }
} }
formData.project_id = formData.projectInfo.id
formData.project_name = formData.projectInfo.project_name
formData.project_num = formData.projectInfo.project_num
} }

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>
@ -15,7 +11,6 @@
<el-form-item label="项目编号" prop="project_num"> <el-form-item label="项目编号" prop="project_num">
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" /> <el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
</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>
<el-button @click="resetParams">重置</el-button> <el-button @click="resetParams">重置</el-button>
@ -29,20 +24,16 @@
</template> </template>
新增 新增
</el-button> </el-button>
<el-button <el-button v-perms="['project_process_management.project_rectification/delete']" :disabled="!selectData.length"
v-perms="['project_process_management.project_rectification/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="wt_unit" show-overflow-tooltip /> <el-table-column label="委托单位" prop="wt_unit" show-overflow-tooltip />
<el-table-column label="项目负责人" prop="xm_master" show-overflow-tooltip /> <el-table-column label="项目负责人" prop="xm_master" show-overflow-tooltip />
<el-table-column label="咨询类型" prop="zx_type" show-overflow-tooltip /> <el-table-column label="咨询类型" prop="zx_type" show-overflow-tooltip />
@ -54,27 +45,19 @@
<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_process_management.project_rectification/edit']" type="primary"
v-perms="['project_process_management.project_rectification/edit']" link @click="handleEdit(row)">
type="primary"
link
@click="handleEdit(row)"
>
编辑 编辑
</el-button> </el-button>
<el-button <el-button v-perms="['project_process_management.project_rectification/delete']" type="danger"
v-perms="['project_process_management.project_rectification/delete']" 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>
@ -85,7 +68,7 @@
<script lang="ts" setup name="projectRectificationLists"> <script lang="ts" setup name="projectRectificationLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiProjectRectificationLists, apiProjectRectificationDelete } from '@/api/project_rectification' import { apiProjectRectificationLists, apiProjectRectificationDelete, apiProjectRectificationDetail } from '@/api/project_rectification'
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'
@ -128,10 +111,11 @@ const handleAdd = async () => {
// //
const handleEdit = async (data: any) => { const handleEdit = async (data: any) => {
let res = await apiProjectRectificationDetail({ 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,22 +1,13 @@
<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="dataid">
<el-input v-model="formData.dataid" clearable placeholder="请输入" />
</el-form-item>
<el-form-item label="单据编号" prop="num"> <el-form-item label="单据编号" prop="num">
<el-input v-model="formData.num" clearable placeholder="请输入单据编号" /> <el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
</el-form-item> </el-form-item>
<el-form-item label="项目名称" prop="project"> <el-form-item label="项目名称" prop="project">
<el-input v-model="formData.project" clearable placeholder="请输入项目名称" /> <el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
@click="showDialog = true" />
</el-form-item> </el-form-item>
<el-form-item label="项目编号" prop="project_num"> <el-form-item label="项目编号" prop="project_num">
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" /> <el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
@ -28,22 +19,26 @@
<el-input v-model="formData.jsdw" clearable placeholder="请输入建设单位" /> <el-input v-model="formData.jsdw" clearable placeholder="请输入建设单位" />
</el-form-item> </el-form-item>
<el-form-item label="部门负责人" prop="bmfz"> <el-form-item label="部门负责人" prop="bmfz">
<el-input v-model="formData.bmfz" clearable placeholder="请输入部门负责人" /> <el-input v-model="formData.bmfz" clearable placeholder="点击选择" @click="userclick('bmfz')" />
</el-form-item> </el-form-item>
<el-form-item label="项目负责人" prop="xmfz"> <el-form-item label="项目负责人" prop="xmfz">
<el-input v-model="formData.xmfz" clearable placeholder="请输入项目负责人" /> <el-input v-model="formData.xmfz" clearable placeholder="请输入项目负责人" />
</el-form-item> </el-form-item>
<el-form-item label="踏勘日期" prop="riqi"> <el-form-item label="踏勘日期" prop="riqi">
<el-input v-model="formData.riqi" clearable placeholder="请输入踏勘日期" /> <el-date-picker class="flex-1 !flex" v-model="formData.riqi" clearable type="date"
value-format="YYYY-MM-DD" placeholder="请选择日期">
</el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="踏勘人员" prop="people"> <el-form-item label="踏勘人员" prop="people">
<el-input v-model="formData.people" clearable placeholder="请输入踏勘人员" /> <el-input v-model="formData.people" clearable placeholder="点击选择" @click="userclick('people')" />
</el-form-item> </el-form-item>
<el-form-item label="登记人" prop="djr"> <el-form-item label="登记人" prop="djr">
<el-input v-model="formData.djr" clearable placeholder="请输入登记人" /> <el-input v-model="formData.djr" clearable placeholder="请输入登记人" />
</el-form-item> </el-form-item>
<el-form-item label="登记日期" prop="apptime"> <el-form-item label="登记日期" prop="apptime">
<el-input v-model="formData.apptime" clearable placeholder="请输入登记日期" /> <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-form-item>
<el-form-item label="踏勘内容" prop="content"> <el-form-item label="踏勘内容" prop="content">
<el-input v-model="formData.content" clearable placeholder="请输入踏勘内容" /> <el-input v-model="formData.content" clearable placeholder="请输入踏勘内容" />
@ -51,10 +46,21 @@
<el-form-item label="核实结果" prop="result"> <el-form-item label="核实结果" prop="result">
<el-input v-model="formData.result" clearable placeholder="请输入核实结果" /> <el-input v-model="formData.result" clearable placeholder="请输入核实结果" />
</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="附件">
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
@delFile="delFileFn" />
</el-form-item>
<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> </el-form>
</popup> </popup>
</div> </div>
@ -63,7 +69,7 @@
<script lang="ts" setup name="projectSurveySignatureEdit"> <script lang="ts" setup name="projectSurveySignatureEdit">
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 { apiProjectSurveySignatureAdd, apiProjectSurveySignatureEdit, apiProjectSurveySignatureDetail } from '@/api/project_survey_signature' import { apiProjectSurveySignatureAdd, apiProjectSurveySignatureEdit, } from '@/api/project_survey_signature'
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue' import type { PropType } from 'vue'
defineProps({ defineProps({
@ -76,7 +82,17 @@ 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 handleAvatarSuccess_four = (response: any) => {
Array.isArray(formData.annex) ? '' : formData.annex = []
// @ts-ignore
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
@ -88,7 +104,8 @@ const formData = reactive({
id: '', id: '',
dataid: '', dataid: '',
num: '', num: '',
project: '', project_id: '',
project_name: '',
project_num: '', project_num: '',
wt_unit: '', wt_unit: '',
jsdw: '', jsdw: '',
@ -98,12 +115,36 @@ const formData = reactive({
people: '', people: '',
djr: '', djr: '',
apptime: '', apptime: '',
projectInfo: {},
content: '', content: '',
result: '', result: '',
remark: '', remark: '',
annex: [],
}) })
const customEvent = (e: any) => {
formData.project_id = e.id
formData.project_name = e.project_name
formData.project_num = e.project_num
showDialog.value = false
}
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.project_change_visa_content[tableIndex.value][tableKey.value + '_id'] = e.id
showDialog3.value = false
}
// //
const formRules = reactive<any>({ const formRules = reactive<any>({
@ -119,7 +160,9 @@ const setFormData = async (data: Record<any, any>) => {
formData[key] = data[key] formData[key] = data[key]
} }
} }
formData.project_id = formData.projectInfo.id
formData.project_name = formData.projectInfo.project_name
formData.project_num = formData.projectInfo.project_num
} }

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,16 @@
</template> </template>
新增 新增
</el-button> </el-button>
<el-button <el-button v-perms="['project_process_management.project_survey_signature/delete']" :disabled="!selectData.length"
v-perms="['project_process_management.project_survey_signature/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="wt_unit" show-overflow-tooltip /> <el-table-column label="委托单位" prop="wt_unit" show-overflow-tooltip />
<el-table-column label="建设单位" prop="jsdw" show-overflow-tooltip /> <el-table-column label="建设单位" prop="jsdw" show-overflow-tooltip />
<el-table-column label="部门负责人" prop="bmfz" show-overflow-tooltip /> <el-table-column label="部门负责人" prop="bmfz" show-overflow-tooltip />
@ -53,31 +45,22 @@
<el-table-column label="登记日期" prop="apptime" show-overflow-tooltip /> <el-table-column label="登记日期" prop="apptime" show-overflow-tooltip />
<el-table-column label="踏勘内容" prop="content" show-overflow-tooltip /> <el-table-column label="踏勘内容" prop="content" show-overflow-tooltip />
<el-table-column label="核实结果" prop="result" show-overflow-tooltip /> <el-table-column label="核实结果" prop="result" 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="操作" 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_process_management.project_survey_signature/edit']" type="primary" link
v-perms="['project_process_management.project_survey_signature/edit']" @click="handleEdit(row)">
type="primary"
link
@click="handleEdit(row)"
>
编辑 编辑
</el-button> </el-button>
<el-button <el-button v-perms="['project_process_management.project_survey_signature/delete']" type="danger" link
v-perms="['project_process_management.project_survey_signature/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>
@ -88,7 +71,7 @@
<script lang="ts" setup name="projectSurveySignatureLists"> <script lang="ts" setup name="projectSurveySignatureLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiProjectSurveySignatureLists, apiProjectSurveySignatureDelete } from '@/api/project_survey_signature' import { apiProjectSurveySignatureLists, apiProjectSurveySignatureDelete, apiProjectSurveySignatureDetail } from '@/api/project_survey_signature'
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'
@ -131,10 +114,11 @@ const handleAdd = async () => {
// //
const handleEdit = async (data: any) => { const handleEdit = async (data: any) => {
let res = await apiProjectSurveySignatureDetail({ 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

@ -26,31 +26,54 @@
<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 type="expand">
<template #default="props">
<div m="4">
<el-table :data="props.row.taskTypeInfo">
<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="任务级次" 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>
</div>
</template>
</el-table-column>
<el-table-column label="单据编号" prop="num" show-overflow-tooltip /> <el-table-column label="单据编号" prop="num" show-overflow-tooltip />
<el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip /> <el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
<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>
<template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'>
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
</div>
</div>
<div v-else>
暂无文件
</div>
</template>
</el-table-column> -->
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['task.task_allocation/edit']" type="primary" link @click="handleEdit(row)"> <el-button v-perms="['task.task_allocation/edit']" type="primary" link @click="handleEdit(row)">
编辑 编辑
</el-button> </el-button>
<el-button v-perms="['task.task_allocation/delete']" type="danger" link @click="handleDelete(row.id)"> <el-button v-perms="['task.task_allocation/delete']" type="danger" link
@click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
</template> </template>