下班
This commit is contained in:
parent
97a3bd2a8a
commit
e8d26abd09
@ -1,4 +1,4 @@
|
||||
NODE_ENV = 'development'
|
||||
|
||||
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/'
|
@ -1,257 +1,352 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="" prop="dataid">
|
||||
<el-input v-model="formData.dataid" clearable placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="申请编号" prop="num">
|
||||
<el-input v-model="formData.num" clearable placeholder="请输入申请编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="盖章申请类型" prop="types">
|
||||
<el-select class="flex-1" v-model="formData.types" clearable placeholder="请选择盖章申请类型">
|
||||
<el-option
|
||||
v-for="(item, index) in dictData.apply_with_seal_type"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="文件类型" prop="filetype">
|
||||
<el-select class="flex-1" v-model="formData.filetype" clearable placeholder="请选择文件类型">
|
||||
<el-option
|
||||
v-for="(item, index) in dictData.apply_with_seal_file_type"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="骑缝盖章" prop="ridingseam">
|
||||
<el-radio-group v-model="formData.ridingseam" placeholder="请选择骑缝盖章">
|
||||
<el-radio
|
||||
v-for="(item, index) in dictData.isqfgz"
|
||||
:key="index"
|
||||
:label="item.value"
|
||||
>
|
||||
{{ item.name }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="印章名称" prop="name">
|
||||
<el-input v-model="formData.name" clearable placeholder="请输入印章名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="盖章次数" prop="frequency">
|
||||
<el-input v-model="formData.frequency" clearable placeholder="请输入盖章次数" />
|
||||
</el-form-item>
|
||||
<el-form-item label="限制次数" prop="limit">
|
||||
<el-input v-model="formData.limit" clearable placeholder="请输入限制次数" />
|
||||
</el-form-item>
|
||||
<el-form-item label="用印部门" prop="depar">
|
||||
<el-input v-model="formData.depar" clearable placeholder="请输入用印部门" />
|
||||
</el-form-item>
|
||||
<el-form-item label="盖章人" prop="stampman">
|
||||
<el-input v-model="formData.stampman" clearable placeholder="请输入盖章人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="关联项目" prop="project">
|
||||
<el-input v-model="formData.project" clearable placeholder="请输入关联项目" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目负责人" prop="principal">
|
||||
<el-input v-model="formData.principal" clearable placeholder="请输入项目负责人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="盖章内容" prop="content">
|
||||
<el-input v-model="formData.content" clearable placeholder="请输入盖章内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="印章是否外借" prop="loan">
|
||||
<el-input v-model="formData.loan" clearable placeholder="请输入印章是否外借" />
|
||||
</el-form-item>
|
||||
<el-form-item label="印章借用日期" prop="borrow">
|
||||
<el-date-picker
|
||||
class="flex-1 !flex"
|
||||
v-model="formData.borrow"
|
||||
clearable
|
||||
type="datetime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
placeholder="选择印章借用日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="申请编号" prop="num">
|
||||
<el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="盖章申请类型" prop="types">
|
||||
<el-select class="flex-1" v-model="formData.types" clearable placeholder="请选择盖章申请类型">
|
||||
<el-option v-for="(item, index) in dictData.apply_with_seal_type" :key="index"
|
||||
:label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="文件类型" prop="filetype">
|
||||
<el-select class="flex-1" v-model="formData.filetype" clearable placeholder="请选择文件类型">
|
||||
<el-option v-for="(item, index) in dictData.apply_with_seal_file_type" :key="index"
|
||||
:label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="骑缝盖章" prop="ridingseam">
|
||||
<el-radio-group v-model="formData.ridingseam" placeholder="请选择骑缝盖章">
|
||||
<el-radio v-for="(item, index) in dictData.isqfgz" :key="index" :label="item.value">
|
||||
{{ item.name }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="印章名称" prop="name">
|
||||
<el-input v-model="formData.name" clearable placeholder="请输入印章名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="盖章次数" prop="frequency">
|
||||
<el-input v-model="formData.frequency" clearable placeholder="请输入盖章次数" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="限制次数" prop="limit">
|
||||
<el-input v-model="formData.limit" clearable placeholder="请输入限制次数" type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<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-col>
|
||||
<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-col>
|
||||
</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-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目负责人" prop="principal">
|
||||
<el-input v-model="formData.principal" clearable placeholder="请输入项目负责人" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="盖章内容" prop="content">
|
||||
<el-input v-model="formData.content" clearable placeholder="请输入盖章内容" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="结束借用日期" prop="returndate">
|
||||
<el-date-picker
|
||||
class="flex-1 !flex"
|
||||
v-model="formData.returndate"
|
||||
clearable
|
||||
type="datetime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
placeholder="选择结束借用日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="印章是否外借" prop="loan">
|
||||
<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-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="印章借用日期" prop="borrow">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.borrow" clearable type="datetime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择印章借用日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="结束借用日期" prop="returndate">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.returndate" clearable type="datetime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择结束借用日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="申请人" prop="applicant">
|
||||
<el-input v-model="formData.applicant" clearable placeholder="请输入申请人" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="申请日期" prop="date">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.date" clearable type="datetime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择申请日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-form-item label="申请人" prop="applicant">
|
||||
<el-input v-model="formData.applicant" clearable placeholder="请输入申请人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="申请日期" prop="date">
|
||||
<el-date-picker
|
||||
class="flex-1 !flex"
|
||||
v-model="formData.date"
|
||||
clearable
|
||||
type="datetime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
placeholder="选择申请日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="实际借章日期" prop="sjborrow">
|
||||
<el-date-picker
|
||||
class="flex-1 !flex"
|
||||
v-model="formData.sjborrow"
|
||||
clearable
|
||||
type="datetime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
placeholder="选择实际借章日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="实际借章人" prop="sjborrower">
|
||||
<el-input v-model="formData.sjborrower" clearable placeholder="请输入实际借章人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="实际归还日期" prop="sjreturn">
|
||||
<el-date-picker
|
||||
class="flex-1 !flex"
|
||||
v-model="formData.sjreturn"
|
||||
clearable
|
||||
type="datetime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
placeholder="选择实际归还日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="实际归还人" prop="returnee">
|
||||
<el-input v-model="formData.returnee" clearable placeholder="请输入实际归还人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="附件" prop="annex">
|
||||
<material-picker v-model="formData.annex" />
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
<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-date-picker class="flex-1 !flex" v-model="formData.sjborrow" clearable type="datetime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择实际借章日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="实际借章人" prop="sjborrower">
|
||||
<el-input v-model="formData.sjborrower" clearable placeholder="请输入实际借章人" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="实际归还日期" prop="sjreturn">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.sjreturn" clearable type="datetime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择实际归还日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="实际归还人" prop="returnee">
|
||||
<el-input v-model="formData.returnee" clearable placeholder="请输入实际归还人" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="附件" prop="annex">
|
||||
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||
@delFile="delFileFn" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||
<cost_project @customEvent="customEvent"></cost_project>
|
||||
</el-dialog>
|
||||
<div v-if="showDialog3">
|
||||
<personnelselector ref="personnel" @confirm="submituser" type="1">
|
||||
</personnelselector>
|
||||
</div>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="applyWithSealEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
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'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
const showDialog = ref(false)
|
||||
const showDialog3 = ref(false)
|
||||
const personnel = ref<any>()
|
||||
const list1 = reactive([])
|
||||
const list2 = reactive([])
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑用章申请' : '新增用章申请'
|
||||
return mode.value == 'edit' ? '编辑用章申请' : '新增用章申请'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
dataid: '',
|
||||
num: '',
|
||||
types: '',
|
||||
filetype: '',
|
||||
ridingseam: '',
|
||||
name: '',
|
||||
frequency: '',
|
||||
limit: '',
|
||||
depar: '',
|
||||
stampman: '',
|
||||
project: '',
|
||||
principal: '',
|
||||
content: '',
|
||||
loan: '',
|
||||
borrow: '',
|
||||
returndate: '',
|
||||
applicant: '',
|
||||
date: '',
|
||||
sjborrow: '',
|
||||
sjborrower: '',
|
||||
sjreturn: '',
|
||||
returnee: '',
|
||||
annex: '',
|
||||
id: '',
|
||||
dataid: '',
|
||||
num: '',
|
||||
types: '',
|
||||
filetype: '',
|
||||
ridingseam: '',
|
||||
name: '',
|
||||
frequency: '',
|
||||
limit: '',
|
||||
org_id: "",
|
||||
depar: '',
|
||||
stampman: '',
|
||||
project: '',
|
||||
project_name: '',
|
||||
principal: '',
|
||||
content: '',
|
||||
loan: '',
|
||||
borrow: '',
|
||||
returndate: '',
|
||||
applicant: '',
|
||||
date: '',
|
||||
sjborrow: '',
|
||||
sjborrower: '',
|
||||
sjreturn: '',
|
||||
returnee: '',
|
||||
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 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>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
//获取所有组织
|
||||
const 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 data = await apiApplyWithSealDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
const data = await apiApplyWithSealDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiApplyWithSealEdit(data)
|
||||
: await apiApplyWithSealAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiApplyWithSealEdit(data)
|
||||
: await apiApplyWithSealAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
getlist()
|
||||
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
|
@ -1,112 +1,90 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form
|
||||
class="mb-[-16px]"
|
||||
:model="queryParams"
|
||||
inline
|
||||
>
|
||||
<el-form-item label="申请编号" prop="num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入申请编号" />
|
||||
</el-form-item>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="申请编号" prop="num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入申请编号" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['project_process_management.apply_with_seal/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_process_management.apply_with_seal/delete']"
|
||||
:disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="" prop="dataid" show-overflow-tooltip />
|
||||
<el-table-column label="申请编号" prop="num" show-overflow-tooltip />
|
||||
<el-table-column label="盖章申请类型" prop="types">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.apply_with_seal_type" :value="row.types" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="文件类型" prop="filetype">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.apply_with_seal_file_type" :value="row.filetype" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="骑缝盖章" prop="ridingseam">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.isqfgz" :value="row.ridingseam" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="印章名称" prop="name" show-overflow-tooltip />
|
||||
<el-table-column label="盖章次数" prop="frequency" show-overflow-tooltip />
|
||||
<el-table-column label="限制次数" prop="limit" show-overflow-tooltip />
|
||||
<el-table-column label="用印部门" prop="depar" show-overflow-tooltip />
|
||||
<el-table-column label="盖章人" prop="stampman" show-overflow-tooltip />
|
||||
<el-table-column label="关联项目" prop="project" show-overflow-tooltip />
|
||||
<el-table-column label="项目负责人" prop="principal" show-overflow-tooltip />
|
||||
<el-table-column label="盖章内容" prop="content" show-overflow-tooltip />
|
||||
<el-table-column label="印章是否外借" prop="loan" show-overflow-tooltip />
|
||||
<el-table-column label="印章借用日期" prop="borrow" show-overflow-tooltip />
|
||||
<el-table-column label="结束借用日期" prop="returndate" show-overflow-tooltip />
|
||||
<el-table-column label="申请人" prop="applicant" show-overflow-tooltip />
|
||||
<el-table-column label="申请日期" prop="date" show-overflow-tooltip />
|
||||
<el-table-column label="实际借章日期" prop="sjborrow" 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="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">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['project_process_management.apply_with_seal/edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_process_management.apply_with_seal/delete']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['project_process_management.apply_with_seal/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['project_process_management.apply_with_seal/delete']" :disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="申请编号" prop="num" show-overflow-tooltip />
|
||||
<el-table-column label="盖章申请类型" prop="types">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.apply_with_seal_type" :value="row.types" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="文件类型" prop="filetype">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.apply_with_seal_file_type" :value="row.filetype" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="骑缝盖章" prop="ridingseam">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.isqfgz" :value="row.ridingseam" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="印章名称" prop="name" show-overflow-tooltip />
|
||||
<el-table-column label="盖章次数" prop="frequency" show-overflow-tooltip />
|
||||
<el-table-column label="限制次数" prop="limit" show-overflow-tooltip />
|
||||
<el-table-column label="用印部门" prop="depar" show-overflow-tooltip />
|
||||
<el-table-column label="盖章人" prop="stampman" show-overflow-tooltip />
|
||||
<el-table-column label="关联项目" prop="project" show-overflow-tooltip />
|
||||
<el-table-column label="项目负责人" prop="principal" show-overflow-tooltip />
|
||||
<el-table-column label="盖章内容" prop="content" show-overflow-tooltip />
|
||||
<el-table-column label="印章是否外借" prop="loan" show-overflow-tooltip />
|
||||
<el-table-column label="印章借用日期" prop="borrow" show-overflow-tooltip />
|
||||
<el-table-column label="结束借用日期" prop="returndate" show-overflow-tooltip />
|
||||
<el-table-column label="申请人" prop="applicant" show-overflow-tooltip />
|
||||
<el-table-column label="申请日期" prop="date" show-overflow-tooltip />
|
||||
<el-table-column label="实际借章日期" prop="sjborrow" 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="returnee" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project_process_management.apply_with_seal/edit']" type="primary" link
|
||||
@click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['project_process_management.apply_with_seal/delete']" type="danger" link
|
||||
@click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="applyWithSealLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
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 feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
@ -118,7 +96,7 @@ const showEdit = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
num: '',
|
||||
num: '',
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
@ -126,7 +104,7 @@ const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
@ -134,30 +112,31 @@ const { dictData } = useDictData('apply_with_seal_type,apply_with_seal_file_type
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiApplyWithSealLists,
|
||||
params: queryParams
|
||||
fetchFun: apiApplyWithSealLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
let res = await apiApplyWithSealDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiApplyWithSealDelete({ id })
|
||||
getLists()
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiApplyWithSealDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
|
@ -83,8 +83,6 @@ import customDialog from '@/components/build_division/index.vue'
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
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 annexUpload from "@/components/annexUpload/index.vue"
|
||||
|
@ -1,121 +1,205 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="" prop="dataid">
|
||||
<el-input v-model="formData.dataid" clearable placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input v-model="formData.num" clearable placeholder="请输入单据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input v-model="formData.project" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="部门负责人" prop="bm_master">
|
||||
<el-input v-model="formData.bm_master" clearable placeholder="请输入部门负责人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="委托单位" prop="wt_unit">
|
||||
<el-input v-model="formData.wt_unit" clearable placeholder="请输入委托单位" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目负责人" prop="xm_master">
|
||||
<el-input v-model="formData.xm_master" clearable placeholder="请输入项目负责人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="实际开始日期" prop="start_date">
|
||||
<el-input v-model="formData.start_date" clearable placeholder="请输入实际开始日期" />
|
||||
</el-form-item>
|
||||
<el-form-item label="实际结束日期" prop="end_date">
|
||||
<el-input v-model="formData.end_date" clearable placeholder="请输入实际结束日期" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工期(天)" prop="duration">
|
||||
<el-input v-model="formData.duration" clearable placeholder="请输入工期(天)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工时" prop="working_hours">
|
||||
<el-input v-model="formData.working_hours" clearable placeholder="请输入工时" />
|
||||
</el-form-item>
|
||||
<el-form-item label="累计已完成进度(%)" prop="done_progress">
|
||||
<el-input v-model="formData.done_progress" clearable placeholder="请输入累计已完成进度(%)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="本阶段完成进度(%)" prop="bjd_progress">
|
||||
<el-input v-model="formData.bjd_progress" clearable placeholder="请输入本阶段完成进度(%)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="登记人" prop="djr">
|
||||
<el-input v-model="formData.djr" clearable placeholder="请输入登记人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="登记时间" prop="apptime">
|
||||
<el-input v-model="formData.apptime" clearable placeholder="请输入登记时间" />
|
||||
</el-form-item>
|
||||
<el-form-item label="形象进度描述" prop="jdms">
|
||||
<el-input v-model="formData.jdms" clearable placeholder="请输入形象进度描述" />
|
||||
</el-form-item>
|
||||
<el-form-item label="现场照片、视频、资料" prop="datas">
|
||||
<material-picker v-model="formData.datas" />
|
||||
</el-form-item>
|
||||
<el-form-item label="文本输入框" prop="fd_23">
|
||||
<el-input v-model="formData.fd_23" clearable placeholder="请输入文本输入框" />
|
||||
</el-form-item>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="140px" :rules="formRules">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
|
||||
@click="showDialog = true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
<el-form-item label="部门负责人" prop="bm_master">
|
||||
<el-input v-model="formData.bm_master" clearable placeholder="请选择部门负责人" @click="userclick()" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="委托单位" prop="wt_unit">
|
||||
<el-input v-model="formData.wt_unit" clearable placeholder="请输入委托单位" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目负责人" prop="xm_master">
|
||||
<el-input v-model="formData.xm_master" clearable placeholder="请输入项目负责人" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="实际开始日期" prop="start_date">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.start_date" clearable type="date"
|
||||
value-format="YYYY-MM-DD" placeholder="请选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="实际结束日期" prop="end_date">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.end_date" clearable type="date"
|
||||
value-format="YYYY-MM-DD" placeholder="请选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="工期(天)" prop="duration">
|
||||
<el-input v-model="formData.duration" clearable placeholder="请输入工期(天)" type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="工时" prop="working_hours">
|
||||
<el-input v-model="formData.working_hours" clearable placeholder="请输入工时" type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<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-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="本阶段完成进度(%)" prop="bjd_progress">
|
||||
<el-input v-model="formData.bjd_progress" clearable placeholder="请输入本阶段完成进度(%)" type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="登记人" prop="djr">
|
||||
<el-input v-model="formData.djr" clearable placeholder="请输入登记人" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="登记时间" prop="apptime">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.apptime" clearable type="date"
|
||||
value-format="YYYY-MM-DD" placeholder="请选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="形象进度描述" prop="jdms">
|
||||
<el-input v-model="formData.jdms" clearable placeholder="请输入形象进度描述" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</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-col>
|
||||
<el-form-item label="文本输入框" prop="fd_23">
|
||||
<el-input v-model="formData.fd_23" clearable placeholder="请输入文本输入框" />
|
||||
</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>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="jianliProjectProgressReportEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
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 type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
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(() => {
|
||||
return mode.value == 'edit' ? '编辑项目进度汇报' : '新增项目进度汇报'
|
||||
return mode.value == 'edit' ? '编辑项目进度汇报' : '新增项目进度汇报'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
dataid: '',
|
||||
num: '',
|
||||
project: '',
|
||||
project_num: '',
|
||||
bm_master: '',
|
||||
wt_unit: '',
|
||||
xm_master: '',
|
||||
start_date: '',
|
||||
end_date: '',
|
||||
duration: '',
|
||||
working_hours: '',
|
||||
done_progress: '',
|
||||
bjd_progress: '',
|
||||
djr: '',
|
||||
apptime: '',
|
||||
jdms: '',
|
||||
datas: '',
|
||||
fd_23: '',
|
||||
|
||||
id: '',
|
||||
dataid: '',
|
||||
num: '',
|
||||
project_id: '',
|
||||
project_name: '',
|
||||
project_num: '',
|
||||
bm_master: '',
|
||||
wt_unit: '',
|
||||
xm_master: '',
|
||||
start_date: '',
|
||||
end_date: '',
|
||||
duration: '',
|
||||
working_hours: '',
|
||||
done_progress: '',
|
||||
bjd_progress: '',
|
||||
djr: '',
|
||||
apptime: '',
|
||||
jdms: '',
|
||||
datas: '',
|
||||
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>({
|
||||
@ -125,51 +209,54 @@ const formRules = reactive<any>({
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
formData.project_id = formData.projectInfo.id
|
||||
formData.project_name = formData.projectInfo.project_name
|
||||
formData.project_num = formData.projectInfo.project_num
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiJianliProjectProgressReportDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
const data = await apiJianliProjectProgressReportDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiJianliProjectProgressReportEdit(data)
|
||||
: await apiJianliProjectProgressReportAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiJianliProjectProgressReportEdit(data)
|
||||
: await apiJianliProjectProgressReportAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
|
@ -1,95 +1,79 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form
|
||||
class="mb-[-16px]"
|
||||
:model="queryParams"
|
||||
inline
|
||||
>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<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">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_process_management.jianli_project_progress_report/delete']"
|
||||
:disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="" prop="dataid" show-overflow-tooltip />
|
||||
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project" show-overflow-tooltip />
|
||||
<el-table-column label="项目编号" prop="project_num" show-overflow-tooltip />
|
||||
<el-table-column label="部门负责人" prop="bm_master" show-overflow-tooltip />
|
||||
<el-table-column label="委托单位" prop="wt_unit" show-overflow-tooltip />
|
||||
<el-table-column label="项目负责人" prop="xm_master" show-overflow-tooltip />
|
||||
<el-table-column label="实际开始日期" prop="start_date" show-overflow-tooltip />
|
||||
<el-table-column label="实际结束日期" prop="end_date" show-overflow-tooltip />
|
||||
<el-table-column label="工期(天)" prop="duration" show-overflow-tooltip />
|
||||
<el-table-column label="工时" prop="working_hours" show-overflow-tooltip />
|
||||
<el-table-column label="累计已完成进度(%)" prop="done_progress" show-overflow-tooltip />
|
||||
<el-table-column label="本阶段完成进度(%)" prop="bjd_progress" show-overflow-tooltip />
|
||||
<el-table-column label="登记人" prop="djr" show-overflow-tooltip />
|
||||
<el-table-column label="登记时间" prop="apptime" show-overflow-tooltip />
|
||||
<el-table-column label="形象进度描述" prop="jdms" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['project_process_management.jianli_project_progress_report/edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_process_management.jianli_project_progress_report/delete']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<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">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['project_process_management.jianli_project_progress_report/delete']"
|
||||
:disabled="!selectData.length" @click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
|
||||
<el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
|
||||
<el-table-column label="部门负责人" prop="bm_master" show-overflow-tooltip />
|
||||
<el-table-column label="委托单位" prop="wt_unit" show-overflow-tooltip />
|
||||
<el-table-column label="项目负责人" prop="xm_master" show-overflow-tooltip />
|
||||
<el-table-column label="实际开始日期" prop="start_date" show-overflow-tooltip />
|
||||
<el-table-column label="实际结束日期" prop="end_date" show-overflow-tooltip />
|
||||
<el-table-column label="工期(天)" prop="duration" show-overflow-tooltip />
|
||||
<el-table-column label="工时" prop="working_hours" show-overflow-tooltip />
|
||||
<el-table-column label="累计已完成进度(%)" prop="done_progress" show-overflow-tooltip />
|
||||
<el-table-column label="本阶段完成进度(%)" prop="bjd_progress" show-overflow-tooltip />
|
||||
<el-table-column label="登记人" prop="djr" show-overflow-tooltip />
|
||||
<el-table-column label="登记时间" prop="apptime" show-overflow-tooltip />
|
||||
<el-table-column label="形象进度描述" prop="jdms" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project_process_management.jianli_project_progress_report/edit']"
|
||||
type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['project_process_management.jianli_project_progress_report/delete']"
|
||||
type="danger" link @click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="jianliProjectProgressReportLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
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 feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
@ -101,10 +85,10 @@ const showEdit = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
num: '',
|
||||
project: '',
|
||||
project_num: '',
|
||||
datas: '',
|
||||
num: '',
|
||||
project: '',
|
||||
project_num: '',
|
||||
datas: '',
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
@ -112,7 +96,7 @@ const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
@ -120,30 +104,31 @@ const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiJianliProjectProgressReportLists,
|
||||
params: queryParams
|
||||
fetchFun: apiJianliProjectProgressReportLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
let res = await apiJianliProjectProgressReportDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiJianliProjectProgressReportDelete({ id })
|
||||
getLists()
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiJianliProjectProgressReportDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
|
@ -1,127 +1,267 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="标识" prop="dataid">
|
||||
<el-input v-model="formData.dataid" clearable placeholder="请输入标识" />
|
||||
</el-form-item>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input v-model="formData.num" clearable placeholder="请输入单据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input v-model="formData.project" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="登记人" prop="djr">
|
||||
<el-input v-model="formData.djr" clearable placeholder="请输入登记人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="登记日期" prop="djrq">
|
||||
<el-input v-model="formData.djrq" clearable placeholder="请输入登记日期" />
|
||||
</el-form-item>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
|
||||
@click="showDialog = true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="登记人" prop="djr">
|
||||
<el-input v-model="formData.djr" clearable placeholder="请输入登记人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="登记日期" prop="djrq">
|
||||
<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-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>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectChangeVisaEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
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 type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
const showDialog = ref(false)
|
||||
const showDialog3 = ref(false)
|
||||
const personnel = ref<any>()
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑项目变更签证' : '新增项目变更签证'
|
||||
return mode.value == 'edit' ? '编辑项目变更签证' : '新增项目变更签证'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
dataid: '',
|
||||
num: '',
|
||||
project: '',
|
||||
project_num: '',
|
||||
djr: '',
|
||||
djrq: '',
|
||||
id: '',
|
||||
dataid: '',
|
||||
num: '',
|
||||
project_id: '',
|
||||
project_name: "",
|
||||
project_num: '',
|
||||
projectInfo: {},
|
||||
djr: '',
|
||||
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 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>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
formData.project_id = formData.projectInfo.id
|
||||
formData.project_name = formData.projectInfo.project_name
|
||||
formData.project_num = formData.projectInfo.project_num
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiProjectChangeVisaDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
const data = await apiProjectChangeVisaDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiProjectChangeVisaEdit(data)
|
||||
: await apiProjectChangeVisaAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiProjectChangeVisaEdit(data)
|
||||
: await apiProjectChangeVisaAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
|
@ -1,85 +1,88 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form
|
||||
class="mb-[-16px]"
|
||||
:model="queryParams"
|
||||
inline
|
||||
>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['project_process_management.project_change_visa/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_change_visa/delete']"
|
||||
:disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="标识" prop="dataid" show-overflow-tooltip />
|
||||
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project" show-overflow-tooltip />
|
||||
<el-table-column label="项目编号" prop="project_num" show-overflow-tooltip />
|
||||
<el-table-column label="登记人" prop="djr" show-overflow-tooltip />
|
||||
<el-table-column label="登记日期" prop="djrq" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_change_visa/edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_change_visa/delete']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['project_process_management.project_change_visa/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['project_process_management.project_change_visa/delete']" :disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<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="num" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
|
||||
<el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
|
||||
<el-table-column label="登记人" prop="djr" show-overflow-tooltip />
|
||||
<el-table-column label="登记日期" prop="djrq" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project_process_management.project_change_visa/edit']" type="primary" link
|
||||
@click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['project_process_management.project_change_visa/delete']" type="danger"
|
||||
link @click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectChangeVisaLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
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 feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
@ -91,9 +94,9 @@ const showEdit = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
num: '',
|
||||
project: '',
|
||||
project_num: '',
|
||||
num: '',
|
||||
project: '',
|
||||
project_num: '',
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
@ -101,7 +104,7 @@ const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
@ -109,30 +112,31 @@ const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiProjectChangeVisaLists,
|
||||
params: queryParams
|
||||
fetchFun: apiProjectChangeVisaLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
let res = await apiProjectChangeVisaDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiProjectChangeVisaDelete({ id })
|
||||
getLists()
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiProjectChangeVisaDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
|
@ -1,57 +1,49 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-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-input v-model="formData.directory" clearable placeholder="请输入所在目录" />
|
||||
</el-form-item>
|
||||
<el-form-item label="单位名称" prop="unit_name">
|
||||
<el-input v-model="formData.unit_name" clearable placeholder="请输入单位名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="时间" prop="time">
|
||||
<el-input v-model="formData.time" clearable placeholder="请输入时间" />
|
||||
</el-form-item>
|
||||
<el-form-item label="所属专业" prop="major">
|
||||
<el-input v-model="formData.major" clearable placeholder="请输入所属专业" />
|
||||
</el-form-item>
|
||||
<el-form-item label="类别" prop="category">
|
||||
<el-input v-model="formData.category" clearable placeholder="请输入类别" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审核内容" prop="review_content">
|
||||
<el-input v-model="formData.review_content" clearable placeholder="请输入审核内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审核意见" prop="review_comments">
|
||||
<el-input v-model="formData.review_comments" clearable placeholder="请输入审核意见" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审核人" prop="reviewer">
|
||||
<el-input v-model="formData.reviewer" clearable placeholder="请输入审核人" />
|
||||
</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 label="施工单位申报值" prop="declared_value">
|
||||
<el-input v-model="formData.declared_value" clearable placeholder="请输入施工单位申报值" />
|
||||
</el-form-item>
|
||||
<el-form-item label="咨询单位测算值" prop="calculated_value">
|
||||
<el-input v-model="formData.calculated_value" clearable placeholder="请输入咨询单位测算值" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="140px" :rules="formRules">
|
||||
<el-form-item label="所在目录" prop="directory">
|
||||
<el-input v-model="formData.directory" clearable placeholder="请输入所在目录" />
|
||||
</el-form-item>
|
||||
<el-form-item label="单位名称" prop="unit_name">
|
||||
<el-input v-model="formData.unit_name" clearable placeholder="请输入单位名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="时间" prop="time">
|
||||
<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 label="所属专业" prop="major">
|
||||
<el-input v-model="formData.major" clearable placeholder="请输入所属专业" />
|
||||
</el-form-item>
|
||||
<el-form-item label="类别" prop="category">
|
||||
<el-input v-model="formData.category" clearable placeholder="请输入类别" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审核内容" prop="review_content">
|
||||
<el-input v-model="formData.review_content" clearable placeholder="请输入审核内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审核意见" prop="review_comments">
|
||||
<el-input v-model="formData.review_comments" clearable placeholder="请输入审核意见" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审核人" prop="reviewer">
|
||||
<el-input v-model="formData.reviewer" clearable placeholder="点击选择" readonly @click="userclick" />
|
||||
</el-form-item>
|
||||
<el-form-item label="施工单位申报值" prop="declared_value">
|
||||
<el-input v-model="formData.declared_value" clearable placeholder="请输入施工单位申报值" type="number" />
|
||||
</el-form-item>
|
||||
<el-form-item label="咨询单位测算值" prop="calculated_value">
|
||||
<el-input v-model="formData.calculated_value" clearable placeholder="请输入咨询单位测算值" type="number" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||
</el-form-item>
|
||||
<div v-if="showDialog3">
|
||||
<personnelselector ref="personnel" @confirm="submituser" type="1">
|
||||
</personnelselector>
|
||||
</div>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectChangeVisaContentEdit">
|
||||
@ -61,42 +53,56 @@ import { apiProjectChangeVisaContentAdd, apiProjectChangeVisaContentEdit, apiPro
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
const showDialog3 = ref(false)
|
||||
const personnel = ref<any>()
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑项目变更签证内容' : '新增项目变更签证内容'
|
||||
return mode.value == 'edit' ? '编辑项目变更签证内容' : '新增项目变更签证内容'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
project_change_visa_dataid: '',
|
||||
directory: '',
|
||||
unit_name: '',
|
||||
time: '',
|
||||
major: '',
|
||||
category: '',
|
||||
review_content: '',
|
||||
review_comments: '',
|
||||
reviewer: '',
|
||||
reviewer_id: '',
|
||||
declared_value: '',
|
||||
calculated_value: '',
|
||||
remark: '',
|
||||
id: '',
|
||||
project_change_visa_dataid: '',
|
||||
directory: '',
|
||||
unit_name: '',
|
||||
time: '',
|
||||
major: '',
|
||||
category: '',
|
||||
review_content: '',
|
||||
review_comments: '',
|
||||
reviewer: '',
|
||||
reviewer_id: '',
|
||||
declared_value: '',
|
||||
calculated_value: '',
|
||||
remark: '',
|
||||
|
||||
})
|
||||
|
||||
|
||||
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>({
|
||||
|
||||
@ -105,51 +111,51 @@ const formRules = reactive<any>({
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiProjectChangeVisaContentDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
const data = await apiProjectChangeVisaContentDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiProjectChangeVisaContentEdit(data)
|
||||
: await apiProjectChangeVisaContentAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiProjectChangeVisaContentEdit(data)
|
||||
: await apiProjectChangeVisaContentAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
|
@ -1,116 +1,93 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form
|
||||
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-input class="w-[280px]" v-model="queryParams.directory" clearable placeholder="请输入所在目录" />
|
||||
</el-form-item>
|
||||
<el-form-item label="单位名称" prop="unit_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.unit_name" clearable placeholder="请输入单位名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="时间" prop="time">
|
||||
<el-input class="w-[280px]" v-model="queryParams.time" clearable placeholder="请输入时间" />
|
||||
</el-form-item>
|
||||
<el-form-item label="所属专业" prop="major">
|
||||
<el-input class="w-[280px]" v-model="queryParams.major" clearable placeholder="请输入所属专业" />
|
||||
</el-form-item>
|
||||
<el-form-item label="类别" prop="category">
|
||||
<el-input class="w-[280px]" v-model="queryParams.category" clearable placeholder="请输入类别" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审核内容" prop="review_content">
|
||||
<el-input class="w-[280px]" v-model="queryParams.review_content" clearable placeholder="请输入审核内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审核意见" prop="review_comments">
|
||||
<el-input class="w-[280px]" v-model="queryParams.review_comments" clearable placeholder="请输入审核意见" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审核人" prop="reviewer">
|
||||
<el-input class="w-[280px]" v-model="queryParams.reviewer" clearable placeholder="请输入审核人" />
|
||||
</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-input class="w-[280px]" v-model="queryParams.declared_value" clearable placeholder="请输入施工单位申报值" />
|
||||
</el-form-item>
|
||||
<el-form-item label="咨询单位测算值" prop="calculated_value">
|
||||
<el-input class="w-[280px]" v-model="queryParams.calculated_value" clearable placeholder="请输入咨询单位测算值" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input class="w-[280px]" v-model="queryParams.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="所在目录" prop="directory">
|
||||
<el-input class="w-[280px]" v-model="queryParams.directory" clearable placeholder="请输入所在目录" />
|
||||
</el-form-item>
|
||||
<el-form-item label="单位名称" prop="unit_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.unit_name" clearable placeholder="请输入单位名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="时间" prop="time">
|
||||
<el-input class="w-[280px]" v-model="queryParams.time" clearable placeholder="请输入时间" />
|
||||
</el-form-item>
|
||||
<el-form-item label="所属专业" prop="major">
|
||||
<el-input class="w-[280px]" v-model="queryParams.major" clearable placeholder="请输入所属专业" />
|
||||
</el-form-item>
|
||||
<el-form-item label="类别" prop="category">
|
||||
<el-input class="w-[280px]" v-model="queryParams.category" clearable placeholder="请输入类别" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审核内容" prop="review_content">
|
||||
<el-input class="w-[280px]" v-model="queryParams.review_content" clearable placeholder="请输入审核内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审核意见" prop="review_comments">
|
||||
<el-input class="w-[280px]" v-model="queryParams.review_comments" clearable placeholder="请输入审核意见" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审核人" prop="reviewer">
|
||||
<el-input class="w-[280px]" v-model="queryParams.reviewer" clearable placeholder="请输入审核人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="施工单位申报值" prop="declared_value">
|
||||
<el-input class="w-[280px]" v-model="queryParams.declared_value" clearable placeholder="请输入施工单位申报值" />
|
||||
</el-form-item>
|
||||
<el-form-item label="咨询单位测算值" prop="calculated_value">
|
||||
<el-input class="w-[280px]" v-model="queryParams.calculated_value" clearable placeholder="请输入咨询单位测算值" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input class="w-[280px]" v-model="queryParams.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<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">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_change_visa_content/delete']"
|
||||
:disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="主表标识" prop="project_change_visa_dataid" 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="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="审核人id" prop="reviewer_id" 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-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_change_visa_content/edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_change_visa_content/delete']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<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">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['project_process_management.project_change_visa_content/delete']"
|
||||
:disabled="!selectData.length" @click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="所在目录" prop="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-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project_process_management.project_change_visa_content/edit']"
|
||||
type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['project_process_management.project_change_visa_content/delete']"
|
||||
type="danger" link @click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectChangeVisaContentLists">
|
||||
@ -128,19 +105,19 @@ const showEdit = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
project_change_visa_dataid: '',
|
||||
directory: '',
|
||||
unit_name: '',
|
||||
time: '',
|
||||
major: '',
|
||||
category: '',
|
||||
review_content: '',
|
||||
review_comments: '',
|
||||
reviewer: '',
|
||||
reviewer_id: '',
|
||||
declared_value: '',
|
||||
calculated_value: '',
|
||||
remark: '',
|
||||
project_change_visa_dataid: '',
|
||||
directory: '',
|
||||
unit_name: '',
|
||||
time: '',
|
||||
major: '',
|
||||
category: '',
|
||||
review_content: '',
|
||||
review_comments: '',
|
||||
reviewer: '',
|
||||
reviewer_id: '',
|
||||
declared_value: '',
|
||||
calculated_value: '',
|
||||
remark: '',
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
@ -148,7 +125,7 @@ const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
@ -156,30 +133,30 @@ const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiProjectChangeVisaContentLists,
|
||||
params: queryParams
|
||||
fetchFun: apiProjectChangeVisaContentLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiProjectChangeVisaContentDelete({ id })
|
||||
getLists()
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiProjectChangeVisaContentDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
|
@ -28,7 +28,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<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-col>
|
||||
<el-col :span="8">
|
||||
@ -91,7 +91,88 @@
|
||||
<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>
|
||||
<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>
|
||||
</div>
|
||||
</template>
|
||||
@ -99,8 +180,7 @@
|
||||
<script lang="ts" setup name="projectCommissionEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiProjectCommissionAdd, apiProjectCommissionEdit, apiProjectCommissionDetail } from '@/api/project_commission'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import { apiProjectCommissionAdd, apiProjectCommissionEdit, } from '@/api/project_commission'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
@ -113,7 +193,8 @@ const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
const showDialog = ref(false)
|
||||
|
||||
const showDialog3 = ref(false)
|
||||
const personnel = ref<any>()
|
||||
|
||||
|
||||
// 弹窗标题
|
||||
@ -131,6 +212,8 @@ const formData = reactive({
|
||||
project_num: '',
|
||||
head: '',
|
||||
affcontract: '',
|
||||
affcontract_name: "",
|
||||
contract: {},
|
||||
industry: '',
|
||||
hk: '',
|
||||
rate: '',
|
||||
@ -140,7 +223,21 @@ const formData = reactive({
|
||||
djr: '',
|
||||
apptime: '',
|
||||
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) => {
|
||||
@ -149,10 +246,56 @@ const customEvent = (e) => {
|
||||
formData.project_name = e.project_name
|
||||
formData.project_num = e.project_num
|
||||
formData.head = e.principal
|
||||
formData.affcontract = e.contract.id
|
||||
formData.affcontract_name = e.contract.contract_name
|
||||
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>({
|
||||
|
||||
@ -167,7 +310,12 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
formData.project_id = formData.projectInfo.id
|
||||
formData.project_name = formData.projectInfo.project_name
|
||||
formData.project_num = formData.projectInfo.project_num
|
||||
formData.head = formData.projectInfo.principal
|
||||
formData.affcontract = formData.contract.id
|
||||
formData.affcontract_name = formData.contract.contract_name
|
||||
|
||||
}
|
||||
|
||||
|
@ -1,76 +1,106 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['project_commission/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['project_commission/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<!-- <el-table-column label="" prop="dataid" show-overflow-tooltip /> -->
|
||||
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project" show-overflow-tooltip />
|
||||
<el-table-column label="项目编号" prop="project_num" show-overflow-tooltip />
|
||||
<el-table-column label="项目负责人" prop="head" show-overflow-tooltip />
|
||||
<el-table-column label="关联合同" prop="affcontract" show-overflow-tooltip />
|
||||
<el-table-column label="行业" prop="industry" 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="ticheng" show-overflow-tooltip />
|
||||
<el-table-column label="已支付总额" prop="paid_amount" show-overflow-tooltip />
|
||||
<el-table-column label="本次支付总额" prop="bczfze" 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="remark" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project_commission/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['project_commission/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['project_commission/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['project_commission/delete']" :disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange" row-key="id">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<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="projectInfo.project_name" 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="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="rate" show-overflow-tooltip />
|
||||
<el-table-column label="应提成总金额" prop="ticheng" show-overflow-tooltip />
|
||||
<el-table-column label="已支付总额" prop="paid_amount" show-overflow-tooltip />
|
||||
<el-table-column label="本次支付总额" prop="bczfze" 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="remark" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project_commission/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['project_commission/delete']" type="danger" link
|
||||
@click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectCommissionLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
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 feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
@ -82,9 +112,9 @@ const showEdit = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
num: '',
|
||||
project: '',
|
||||
project_num: '',
|
||||
num: '',
|
||||
project: '',
|
||||
project_num: '',
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
@ -92,38 +122,39 @@ const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('supervision_project_industry')
|
||||
const { dictData } = useDictData('supervision_project_industry,task_type,major_type')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiProjectCommissionLists,
|
||||
params: queryParams
|
||||
fetchFun: apiProjectCommissionLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
let res = await apiProjectCommissionDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiProjectCommissionDelete({ id })
|
||||
getLists()
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiProjectCommissionDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
|
@ -1,44 +1,27 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="主表标识" prop="project_commission_dataid">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
|
||||
<!-- <el-form-item label="主表标识" prop="project_commission_dataid">
|
||||
<el-input v-model="formData.project_commission_dataid" clearable placeholder="请输入主表标识" />
|
||||
</el-form-item>
|
||||
</el-form-item> -->
|
||||
<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 label="工程师id" prop="engineer_id">
|
||||
<!-- <el-form-item label="工程师id" prop="engineer_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-input v-model="formData.task_name" clearable placeholder="请输入任务名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="任务类型" prop="task_type">
|
||||
<el-select class="flex-1" v-model="formData.task_type" clearable placeholder="请选择任务类型">
|
||||
<el-option
|
||||
v-for="(item, index) in dictData.task_type"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
/>
|
||||
<el-option v-for="(item, index) in dictData.task_type" :key="index" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="专业类型" prop="professional_type">
|
||||
<el-select class="flex-1" v-model="formData.professional_type" clearable placeholder="请选择专业类型">
|
||||
<el-option
|
||||
v-for="(item, index) in dictData.major_type"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
/>
|
||||
<el-option v-for="(item, index) in dictData.major_type" :key="index" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="造价金额" prop="zj_amount">
|
||||
@ -62,7 +45,10 @@
|
||||
<el-form-item label="其他增减费用" prop="other_fee">
|
||||
<el-input v-model="formData.other_fee" clearable placeholder="请输入其他增减费用" />
|
||||
</el-form-item>
|
||||
|
||||
<div v-if="showDialog3">
|
||||
<personnelselector ref="personnel" @confirm="submituser" type="1">
|
||||
</personnelselector>
|
||||
</div>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
@ -71,7 +57,7 @@
|
||||
<script lang="ts" setup name="projectCommissionDetailEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
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 type { PropType } from 'vue'
|
||||
defineProps({
|
||||
@ -84,6 +70,8 @@ const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
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>({
|
||||
@ -140,10 +141,10 @@ const getDetail = async (row: Record<string, any>) => {
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiProjectCommissionDetailEdit(data)
|
||||
: await apiProjectCommissionDetailAdd(data)
|
||||
? await apiProjectCommissionDetailEdit(data)
|
||||
: await apiProjectCommissionDetailAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
@ -1,11 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form
|
||||
class="mb-[-16px]"
|
||||
:model="queryParams"
|
||||
inline
|
||||
>
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="工程师" prop="engineer">
|
||||
<el-input class="w-[280px]" v-model="queryParams.engineer" clearable placeholder="请输入工程师" />
|
||||
</el-form-item>
|
||||
@ -20,24 +16,14 @@
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['project_commission_detail/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_commission_detail/delete']"
|
||||
:disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)"
|
||||
>
|
||||
<el-button v-perms="['project_commission_detail/delete']" :disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="工程师" prop="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_type">
|
||||
<template #default="{ row }">
|
||||
@ -57,27 +43,17 @@
|
||||
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['project_commission_detail/edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
<el-button v-perms="['project_commission_detail/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_commission_detail/delete']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
<el-button v-perms="['project_commission_detail/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
@ -88,7 +64,7 @@
|
||||
<script lang="ts" setup name="projectCommissionDetailLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
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 feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
@ -130,10 +106,11 @@ const handleAdd = async () => {
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
let res = await apiProjectCommissionDetailDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
editRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
// 删除
|
||||
|
@ -1,143 +1,373 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="" prop="dataid">
|
||||
<el-input v-model="formData.dataid" clearable placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input v-model="formData.num" clearable placeholder="请输入单据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input v-model="formData.project" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="登记人" prop="djr">
|
||||
<el-input v-model="formData.djr" clearable placeholder="请输入登记人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="登记日期" prop="djrq">
|
||||
<el-input v-model="formData.djrq" clearable placeholder="请输入登记日期" />
|
||||
</el-form-item>
|
||||
<el-form-item label="进度申报造价合计" prop="sbhj">
|
||||
<el-input v-model="formData.sbhj" clearable placeholder="请输入进度申报造价合计" />
|
||||
</el-form-item>
|
||||
<el-form-item label="进度审核造价合计" prop="shhj">
|
||||
<el-input v-model="formData.shhj" clearable placeholder="请输入进度审核造价合计" />
|
||||
</el-form-item>
|
||||
<el-form-item label="累计应付工程款合计" prop="ljhj">
|
||||
<el-input v-model="formData.ljhj" clearable placeholder="请输入累计应付工程款合计" />
|
||||
</el-form-item>
|
||||
<el-form-item label="附件" prop="annex">
|
||||
<material-picker v-model="formData.annex" />
|
||||
</el-form-item>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
|
||||
@click="showDialog = true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="登记人" prop="djr">
|
||||
<el-input v-model="formData.djr" clearable placeholder="请输入登记人" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="登记日期" prop="djrq">
|
||||
<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-col>
|
||||
</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-col>
|
||||
<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-col>
|
||||
<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-col>
|
||||
</el-row>
|
||||
<el-form-item label="附件" prop="annex">
|
||||
<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>
|
||||
</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-form>
|
||||
</popup>
|
||||
</div>
|
||||
<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>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectProgressPaymentEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiProjectProgressPaymentAdd, apiProjectProgressPaymentEdit, apiProjectProgressPaymentDetail } from '@/api/project_progress_payment'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
import { number } from 'echarts/core'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
const showDialog = ref(false)
|
||||
|
||||
|
||||
// 弹窗标题
|
||||
const 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({
|
||||
id: '',
|
||||
dataid: '',
|
||||
num: '',
|
||||
project: '',
|
||||
project_num: '',
|
||||
djr: '',
|
||||
djrq: '',
|
||||
sbhj: '',
|
||||
shhj: '',
|
||||
ljhj: '',
|
||||
annex: '',
|
||||
id: '',
|
||||
dataid: '',
|
||||
num: '',
|
||||
project_id: '',
|
||||
project_name: "",
|
||||
project_num: '',
|
||||
djr: '',
|
||||
djrq: '',
|
||||
sbhj: '',
|
||||
shhj: '',
|
||||
ljhj: '',
|
||||
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 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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
formData.project_id = formData.projectInfo.id
|
||||
formData.project_name = formData.projectInfo.project_name
|
||||
formData.project_num = formData.projectInfo.project_num
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiProjectProgressPaymentDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
const data = await apiProjectProgressPaymentDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiProjectProgressPaymentEdit(data)
|
||||
: await apiProjectProgressPaymentAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
console.log(formData, 'formdata')
|
||||
// return
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiProjectProgressPaymentEdit(data)
|
||||
: await apiProjectProgressPaymentAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
|
@ -1,93 +1,101 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form
|
||||
class="mb-[-16px]"
|
||||
:model="queryParams"
|
||||
inline
|
||||
>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<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">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_progress_payment/delete']"
|
||||
:disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="" prop="dataid" show-overflow-tooltip />
|
||||
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project" show-overflow-tooltip />
|
||||
<el-table-column label="项目编号" prop="project_num" show-overflow-tooltip />
|
||||
<el-table-column label="登记人" prop="djr" 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="shhj" 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">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_progress_payment/edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_progress_payment/delete']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<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">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['project_process_management.project_progress_payment/delete']"
|
||||
:disabled="!selectData.length" @click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<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_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="projectInfo.project_name" 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="djrq" 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="ljhj" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project_process_management.project_progress_payment/edit']" type="primary"
|
||||
link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['project_process_management.project_progress_payment/delete']"
|
||||
type="danger" link @click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectProgressPaymentLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
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 feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
@ -99,9 +107,9 @@ const showEdit = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
num: '',
|
||||
project: '',
|
||||
project_num: '',
|
||||
num: '',
|
||||
project: '',
|
||||
project_num: '',
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
@ -109,7 +117,7 @@ const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
@ -117,30 +125,31 @@ const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiProjectProgressPaymentLists,
|
||||
params: queryParams
|
||||
fetchFun: apiProjectProgressPaymentLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
let res = await apiProjectProgressPaymentDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiProjectProgressPaymentDelete({ id })
|
||||
getLists()
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiProjectProgressPaymentDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
|
@ -1,81 +1,137 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-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-input v-model="formData.directory" clearable placeholder="请输入所在目录" />
|
||||
</el-form-item>
|
||||
<el-form-item label="单位工程名称" prop="unit_project_name">
|
||||
<el-input v-model="formData.unit_project_name" clearable placeholder="请输入单位工程名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="时间" prop="time">
|
||||
<el-input v-model="formData.time" clearable placeholder="请输入时间" />
|
||||
</el-form-item>
|
||||
<el-form-item label="形象进度" prop="image_progress">
|
||||
<el-input v-model="formData.image_progress" clearable placeholder="请输入形象进度" />
|
||||
</el-form-item>
|
||||
<el-form-item label="申报造价(土建)" prop="declared_cost_tj">
|
||||
<el-input v-model="formData.declared_cost_tj" clearable placeholder="请输入申报造价(土建)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="申报造价(安装)" prop="declared_cost_az">
|
||||
<el-input v-model="formData.declared_cost_az" clearable placeholder="请输入申报造价(安装)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="申报造价(其他)" prop="declared_cost_other">
|
||||
<el-input v-model="formData.declared_cost_other" clearable placeholder="请输入申报造价(其他)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="进度申报造价小计" prop="jdsbzj_xiaoji">
|
||||
<el-input v-model="formData.jdsbzj_xiaoji" clearable placeholder="请输入进度申报造价小计" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审核造价(土建)" prop="audit_cost_tj">
|
||||
<el-input v-model="formData.audit_cost_tj" clearable placeholder="请输入审核造价(土建)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审核造价(安装)" prop="audit_cost_az">
|
||||
<el-input v-model="formData.audit_cost_az" clearable placeholder="请输入审核造价(安装)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审核造价(其他)" prop="audit_cost_other">
|
||||
<el-input v-model="formData.audit_cost_other" clearable placeholder="请输入审核造价(其他)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="进度审核造价小计" prop="jdshzj_xiaoji">
|
||||
<el-input v-model="formData.jdshzj_xiaoji" clearable placeholder="请输入进度审核造价小计" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审减额(元)" prop="deduction_amount">
|
||||
<el-input v-model="formData.deduction_amount" clearable placeholder="请输入审减额(元)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="完成产值比例(%)" prop="completed_rate">
|
||||
<el-input v-model="formData.completed_rate" clearable placeholder="请输入完成产值比例(%)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="合同工程款总额" prop="contract_total_amount">
|
||||
<el-input v-model="formData.contract_total_amount" clearable placeholder="请输入合同工程款总额" />
|
||||
</el-form-item>
|
||||
<el-form-item label="累计完成工程款" prop="ljwc_funds">
|
||||
<el-input v-model="formData.ljwc_funds" clearable placeholder="请输入累计完成工程款" />
|
||||
</el-form-item>
|
||||
<el-form-item label="当期应付工程款(元)" prop="current_payable_funds">
|
||||
<el-input v-model="formData.current_payable_funds" clearable placeholder="请输入当期应付工程款(元)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="付款比例(%)" prop="payment_rate">
|
||||
<el-input v-model="formData.payment_rate" clearable placeholder="请输入付款比例(%)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="合同付款比例(%)" prop="dcntract_payment_rate">
|
||||
<el-input v-model="formData.dcntract_payment_rate" clearable placeholder="请输入合同付款比例(%)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="140px" :rules="formRules">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="所在目录" prop="directory">
|
||||
<el-input v-model="formData.directory" clearable placeholder="请输入所在目录" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="单位工程名称" prop="unit_project_name">
|
||||
<el-input v-model="formData.unit_project_name" clearable placeholder="请输入单位工程名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="时间" prop="time">
|
||||
<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-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="形象进度" prop="image_progress">
|
||||
<el-input v-model="formData.image_progress" clearable placeholder="请输入形象进度" type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="申报造价(土建)" prop="declared_cost_tj">
|
||||
<el-input v-model="formData.declared_cost_tj" clearable placeholder="请输入申报造价(土建)"
|
||||
type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="申报造价(安装)" prop="declared_cost_az">
|
||||
<el-input v-model="formData.declared_cost_az" clearable placeholder="请输入申报造价(安装)"
|
||||
type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="申报造价(其他)" prop="declared_cost_other">
|
||||
<el-input v-model="formData.declared_cost_other" clearable placeholder="请输入申报造价(其他)"
|
||||
type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="进度申报造价小计" prop="jdsbzj_xiaoji">
|
||||
<el-input v-model="formData.jdsbzj_xiaoji" clearable placeholder="系统自动计算" disabled
|
||||
type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="审核造价(土建)" prop="audit_cost_tj">
|
||||
<el-input v-model="formData.audit_cost_tj" clearable placeholder="请输入审核造价(土建)" type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="审核造价(安装)" prop="audit_cost_az">
|
||||
<el-input v-model="formData.audit_cost_az" clearable placeholder="请输入审核造价(安装)" type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="审核造价(其他)" prop="audit_cost_other">
|
||||
<el-input v-model="formData.audit_cost_other" clearable placeholder="请输入审核造价(其他)"
|
||||
type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="进度审核造价小计" prop="jdshzj_xiaoji">
|
||||
<el-input v-model="formData.jdshzj_xiaoji" clearable placeholder="请输入进度审核造价小计" type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="审减额(元)" prop="deduction_amount">
|
||||
<el-input v-model="formData.deduction_amount" clearable placeholder="系统自动计算" disabled
|
||||
type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="完成产值比例(%)" prop="completed_rate">
|
||||
<el-input v-model="formData.completed_rate" clearable placeholder="请输入完成产值比例(%)"
|
||||
type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同工程款总额" prop="contract_total_amount">
|
||||
<el-input v-model="formData.contract_total_amount" clearable placeholder="请输入合同工程款总额"
|
||||
type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="累计完成工程款" prop="ljwc_funds">
|
||||
<el-input v-model="formData.ljwc_funds" clearable placeholder="系统自动计算" disabled type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="当期应付工程款(元)" prop="current_payable_funds">
|
||||
<el-input v-model="formData.current_payable_funds" clearable placeholder="系统自动计算" disabled
|
||||
type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="付款比例(%)" prop="payment_rate">
|
||||
<el-input v-model="formData.payment_rate" clearable placeholder="系统自动计算" disabled
|
||||
type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同付款比例(%)" prop="dcntract_payment_rate">
|
||||
<el-input v-model="formData.dcntract_payment_rate" clearable placeholder="请输入合同付款比例(%)"
|
||||
type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectProgressPaymentDetailEdit">
|
||||
@ -85,10 +141,10 @@ import { apiProjectProgressPaymentDetailAdd, apiProjectProgressPaymentDetailEdit
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
@ -98,33 +154,33 @@ const mode = ref('add')
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑项目进度款明细' : '新增项目进度款明细'
|
||||
return mode.value == 'edit' ? '编辑项目进度款明细' : '新增项目进度款明细'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
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: '',
|
||||
id: '',
|
||||
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: '',
|
||||
|
||||
})
|
||||
|
||||
@ -137,51 +193,51 @@ const formRules = reactive<any>({
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiProjectProgressPaymentDetailDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
const data = await apiProjectProgressPaymentDetailDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiProjectProgressPaymentDetailEdit(data)
|
||||
: await apiProjectProgressPaymentDetailAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiProjectProgressPaymentDetailEdit(data)
|
||||
: await apiProjectProgressPaymentDetailAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
|
@ -1,85 +1,70 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form
|
||||
class="mb-[-16px]"
|
||||
:model="queryParams"
|
||||
inline
|
||||
>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<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">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_progress_payment_detail/delete']"
|
||||
:disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="" prop="project_progress_payment_id" 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="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-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_progress_payment_detail/edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_progress_payment_detail/delete']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<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">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['project_process_management.project_progress_payment_detail/delete']"
|
||||
:disabled="!selectData.length" @click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="所在目录" prop="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-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project_process_management.project_progress_payment_detail/edit']"
|
||||
type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['project_process_management.project_progress_payment_detail/delete']"
|
||||
type="danger" link @click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectProgressPaymentDetailLists">
|
||||
@ -105,7 +90,7 @@ const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
@ -113,30 +98,30 @@ const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiProjectProgressPaymentDetailLists,
|
||||
params: queryParams
|
||||
fetchFun: apiProjectProgressPaymentDetailLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiProjectProgressPaymentDetailDelete({ id })
|
||||
getLists()
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiProjectProgressPaymentDetailDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
|
@ -1,102 +1,114 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="" prop="dataid">
|
||||
<el-input v-model="formData.dataid" clearable placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input v-model="formData.num" clearable placeholder="请输入单据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input v-model="formData.project" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="委托单位" prop="wt_unit">
|
||||
<el-input v-model="formData.wt_unit" clearable placeholder="请输入委托单位" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目负责人" prop="xm_master">
|
||||
<el-input v-model="formData.xm_master" clearable placeholder="请输入项目负责人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="咨询类型" prop="zx_type">
|
||||
<el-input v-model="formData.zx_type" clearable placeholder="请输入咨询类型" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目整改人" prop="zg_master">
|
||||
<el-input v-model="formData.zg_master" clearable placeholder="请输入项目整改人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="登记人" prop="dj_person">
|
||||
<el-input v-model="formData.dj_person" clearable placeholder="请输入登记人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="登记日期" prop="apptime">
|
||||
<el-input v-model="formData.apptime" clearable placeholder="请输入登记日期" />
|
||||
</el-form-item>
|
||||
<el-form-item label="存在问题" prop="problem">
|
||||
<el-input v-model="formData.problem" clearable placeholder="请输入存在问题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="修改情况" prop="deal_desc">
|
||||
<el-input v-model="formData.deal_desc" clearable placeholder="请输入修改情况" />
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="附件" prop="annex">
|
||||
<material-picker v-model="formData.annex" />
|
||||
</el-form-item>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
|
||||
@click="showDialog = true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="委托单位" prop="wt_unit">
|
||||
<el-input v-model="formData.wt_unit" clearable placeholder="请输入委托单位" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目负责人" prop="xm_master">
|
||||
<el-input v-model="formData.xm_master" clearable placeholder="请输入项目负责人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="咨询类型" prop="zx_type">
|
||||
<el-input v-model="formData.zx_type" clearable placeholder="请输入咨询类型" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目整改人" prop="zg_master">
|
||||
<el-input v-model="formData.zg_master" clearable placeholder="点击选择" @click="userclick('zg_master')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="登记人" prop="dj_person">
|
||||
<el-input v-model="formData.dj_person" clearable placeholder="请输入登记人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="登记日期" prop="apptime">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.apptime" clearable type="date"
|
||||
value-format="YYYY-MM-DD" placeholder="请选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="存在问题" prop="problem">
|
||||
<el-input v-model="formData.problem" clearable placeholder="请输入存在问题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="修改情况" prop="deal_desc">
|
||||
<el-input v-model="formData.deal_desc" clearable placeholder="请输入修改情况" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入" />
|
||||
</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>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectRectificationEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
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 type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
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(() => {
|
||||
return mode.value == 'edit' ? '编辑项目整改' : '新增项目整改'
|
||||
return mode.value == 'edit' ? '编辑项目整改' : '新增项目整改'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
dataid: '',
|
||||
num: '',
|
||||
project: '',
|
||||
project_num: '',
|
||||
wt_unit: '',
|
||||
xm_master: '',
|
||||
zx_type: '',
|
||||
zg_master: '',
|
||||
dj_person: '',
|
||||
apptime: '',
|
||||
problem: '',
|
||||
deal_desc: '',
|
||||
remark: '',
|
||||
annex: '',
|
||||
id: '',
|
||||
dataid: '',
|
||||
num: '',
|
||||
project_id: '',
|
||||
project_name: '',
|
||||
project_num: '',
|
||||
wt_unit: '',
|
||||
xm_master: '',
|
||||
zx_type: '',
|
||||
zg_master: '',
|
||||
dj_person: '',
|
||||
apptime: '',
|
||||
problem: '',
|
||||
deal_desc: '',
|
||||
remark: '',
|
||||
annex: [],
|
||||
projectInfo: {}
|
||||
|
||||
})
|
||||
|
||||
@ -105,55 +117,81 @@ const formData = reactive({
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
formData.project_id = formData.projectInfo.id
|
||||
formData.project_name = formData.projectInfo.project_name
|
||||
formData.project_num = formData.projectInfo.project_num
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiProjectRectificationDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
const data = await apiProjectRectificationDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiProjectRectificationEdit(data)
|
||||
: await apiProjectRectificationAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiProjectRectificationEdit(data)
|
||||
: await apiProjectRectificationAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
|
@ -1,91 +1,74 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form
|
||||
class="mb-[-16px]"
|
||||
:model="queryParams"
|
||||
inline
|
||||
>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['project_process_management.project_rectification/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_rectification/delete']"
|
||||
:disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="" prop="dataid" show-overflow-tooltip />
|
||||
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project" show-overflow-tooltip />
|
||||
<el-table-column label="项目编号" prop="project_num" show-overflow-tooltip />
|
||||
<el-table-column label="委托单位" prop="wt_unit" 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="zg_master" show-overflow-tooltip />
|
||||
<el-table-column label="登记人" prop="dj_person" show-overflow-tooltip />
|
||||
<el-table-column label="登记日期" prop="apptime" show-overflow-tooltip />
|
||||
<el-table-column label="存在问题" prop="problem" show-overflow-tooltip />
|
||||
<el-table-column label="修改情况" prop="deal_desc" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_rectification/edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_rectification/delete']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['project_process_management.project_rectification/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['project_process_management.project_rectification/delete']" :disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
|
||||
<el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
|
||||
<el-table-column label="委托单位" prop="wt_unit" 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="zg_master" show-overflow-tooltip />
|
||||
<el-table-column label="登记人" prop="dj_person" show-overflow-tooltip />
|
||||
<el-table-column label="登记日期" prop="apptime" show-overflow-tooltip />
|
||||
<el-table-column label="存在问题" prop="problem" show-overflow-tooltip />
|
||||
<el-table-column label="修改情况" prop="deal_desc" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project_process_management.project_rectification/edit']" type="primary"
|
||||
link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['project_process_management.project_rectification/delete']" type="danger"
|
||||
link @click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectRectificationLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
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 feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
@ -97,9 +80,9 @@ const showEdit = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
num: '',
|
||||
project: '',
|
||||
project_num: '',
|
||||
num: '',
|
||||
project: '',
|
||||
project_num: '',
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
@ -107,7 +90,7 @@ const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
@ -115,30 +98,31 @@ const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiProjectRectificationLists,
|
||||
params: queryParams
|
||||
fetchFun: apiProjectRectificationLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
let res = await apiProjectRectificationDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiProjectRectificationDelete({ id })
|
||||
getLists()
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiProjectRectificationDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
|
@ -1,109 +1,150 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="" prop="dataid">
|
||||
<el-input v-model="formData.dataid" clearable placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input v-model="formData.num" clearable placeholder="请输入单据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input v-model="formData.project" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="委托单位" prop="wt_unit">
|
||||
<el-input v-model="formData.wt_unit" clearable placeholder="请输入委托单位" />
|
||||
</el-form-item>
|
||||
<el-form-item label="建设单位" prop="jsdw">
|
||||
<el-input v-model="formData.jsdw" clearable placeholder="请输入建设单位" />
|
||||
</el-form-item>
|
||||
<el-form-item label="部门负责人" prop="bmfz">
|
||||
<el-input v-model="formData.bmfz" clearable placeholder="请输入部门负责人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目负责人" prop="xmfz">
|
||||
<el-input v-model="formData.xmfz" clearable placeholder="请输入项目负责人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="踏勘日期" prop="riqi">
|
||||
<el-input v-model="formData.riqi" clearable placeholder="请输入踏勘日期" />
|
||||
</el-form-item>
|
||||
<el-form-item label="踏勘人员" prop="people">
|
||||
<el-input v-model="formData.people" clearable placeholder="请输入踏勘人员" />
|
||||
</el-form-item>
|
||||
<el-form-item label="登记人" prop="djr">
|
||||
<el-input v-model="formData.djr" clearable placeholder="请输入登记人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="登记日期" prop="apptime">
|
||||
<el-input v-model="formData.apptime" clearable placeholder="请输入登记日期" />
|
||||
</el-form-item>
|
||||
<el-form-item label="踏勘内容" prop="content">
|
||||
<el-input v-model="formData.content" clearable placeholder="请输入踏勘内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="核实结果" prop="result">
|
||||
<el-input v-model="formData.result" clearable placeholder="请输入核实结果" />
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
|
||||
@click="showDialog = true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="project_num">
|
||||
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="委托单位" prop="wt_unit">
|
||||
<el-input v-model="formData.wt_unit" clearable placeholder="请输入委托单位" />
|
||||
</el-form-item>
|
||||
<el-form-item label="建设单位" prop="jsdw">
|
||||
<el-input v-model="formData.jsdw" clearable placeholder="请输入建设单位" />
|
||||
</el-form-item>
|
||||
<el-form-item label="部门负责人" prop="bmfz">
|
||||
<el-input v-model="formData.bmfz" clearable placeholder="点击选择" @click="userclick('bmfz')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目负责人" prop="xmfz">
|
||||
<el-input v-model="formData.xmfz" clearable placeholder="请输入项目负责人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="踏勘日期" prop="riqi">
|
||||
<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 label="踏勘人员" prop="people">
|
||||
<el-input v-model="formData.people" clearable placeholder="点击选择" @click="userclick('people')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="登记人" prop="djr">
|
||||
<el-input v-model="formData.djr" clearable placeholder="请输入登记人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="登记日期" prop="apptime">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.apptime" clearable type="date"
|
||||
value-format="YYYY-MM-DD" placeholder="请选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="踏勘内容" prop="content">
|
||||
<el-input v-model="formData.content" clearable placeholder="请输入踏勘内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="核实结果" prop="result">
|
||||
<el-input v-model="formData.result" clearable placeholder="请输入核实结果" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="附件">
|
||||
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||
@delFile="delFileFn" />
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||
<cost_project @customEvent="customEvent"></cost_project>
|
||||
</el-dialog>
|
||||
<div v-if="showDialog3">
|
||||
<personnelselector ref="personnel" @confirm="submituser" type="1">
|
||||
</personnelselector>
|
||||
</div>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectSurveySignatureEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
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 type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
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(() => {
|
||||
return mode.value == 'edit' ? '编辑项目踏勘会签' : '新增项目踏勘会签'
|
||||
return mode.value == 'edit' ? '编辑项目踏勘会签' : '新增项目踏勘会签'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
dataid: '',
|
||||
num: '',
|
||||
project: '',
|
||||
project_num: '',
|
||||
wt_unit: '',
|
||||
jsdw: '',
|
||||
bmfz: '',
|
||||
xmfz: '',
|
||||
riqi: '',
|
||||
people: '',
|
||||
djr: '',
|
||||
apptime: '',
|
||||
content: '',
|
||||
result: '',
|
||||
remark: '',
|
||||
id: '',
|
||||
dataid: '',
|
||||
num: '',
|
||||
project_id: '',
|
||||
project_name: '',
|
||||
project_num: '',
|
||||
wt_unit: '',
|
||||
jsdw: '',
|
||||
bmfz: '',
|
||||
xmfz: '',
|
||||
riqi: '',
|
||||
people: '',
|
||||
djr: '',
|
||||
apptime: '',
|
||||
projectInfo: {},
|
||||
content: '',
|
||||
result: '',
|
||||
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>({
|
||||
@ -113,51 +154,53 @@ const formRules = reactive<any>({
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
formData.project_id = formData.projectInfo.id
|
||||
formData.project_name = formData.projectInfo.project_name
|
||||
formData.project_num = formData.projectInfo.project_num
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiProjectSurveySignatureDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
const data = await apiProjectSurveySignatureDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiProjectSurveySignatureEdit(data)
|
||||
: await apiProjectSurveySignatureAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiProjectSurveySignatureEdit(data)
|
||||
: await apiProjectSurveySignatureAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
|
@ -1,11 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form
|
||||
class="mb-[-16px]"
|
||||
:model="queryParams"
|
||||
inline
|
||||
>
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="单据编号" prop="num">
|
||||
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
||||
</el-form-item>
|
||||
@ -29,20 +25,16 @@
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_survey_signature/delete']"
|
||||
:disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)"
|
||||
>
|
||||
<el-button v-perms="['project_process_management.project_survey_signature/delete']" :disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="" prop="dataid" show-overflow-tooltip />
|
||||
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project" show-overflow-tooltip />
|
||||
<el-table-column label="项目编号" prop="project_num" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="projectInfo.project_name" 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="jsdw" 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="content" 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">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_survey_signature/edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
<el-button v-perms="['project_process_management.project_survey_signature/edit']" type="primary" link
|
||||
@click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['project_process_management.project_survey_signature/delete']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
<el-button v-perms="['project_process_management.project_survey_signature/delete']" type="danger" link
|
||||
@click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
@ -88,7 +71,7 @@
|
||||
<script lang="ts" setup name="projectSurveySignatureLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
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 feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
@ -131,10 +114,11 @@ const handleAdd = async () => {
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
let res = await apiProjectSurveySignatureDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
editRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
// 删除
|
||||
|
@ -1,68 +1,91 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="项目名称" prop="project">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['task.task_allocation/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['task.task_allocation/delete']" :disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<!-- <el-table-column label="" prop="dataid" 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_num" 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="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">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['task.task_allocation/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['task.task_allocation/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['task.task_allocation/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['task.task_allocation/delete']" :disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<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="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="projectInfo.project_name" 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="apptime" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['task.task_allocation/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['task.task_allocation/delete']" type="danger" link
|
||||
@click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="taskAllocationLists">
|
||||
@ -80,7 +103,7 @@ const showEdit = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
project: '',
|
||||
project: '',
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
@ -88,7 +111,7 @@ const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
@ -96,31 +119,31 @@ const { dictData } = useDictData('task_type,major_type')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiTaskAllocationLists,
|
||||
params: queryParams
|
||||
fetchFun: apiTaskAllocationLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
let res = await apiTaskAllocationDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(res)
|
||||
let res = await apiTaskAllocationDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiTaskAllocationDelete({ id })
|
||||
getLists()
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiTaskAllocationDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
|
Loading…
x
Reference in New Issue
Block a user