You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1156 lines
41 KiB
1156 lines
41 KiB
<script setup> |
|
import feedback from "@/utils/feedback"; |
|
import useUserStore from "@/stores/modules/user"; |
|
import {timeFormat} from "@/utils/util"; |
|
import reportFile from '@/components/reportFile/index.vue'; |
|
import useCatchStore from '@/stores/modules/catch' |
|
import {getDetail} from "@/api/report/index"; |
|
import {useRoute, useRouter} from "vue-router"; |
|
import {getReportFlow} from "@/api/report/flow"; |
|
import useTabsStore from "@/stores/modules/multipleTabs"; |
|
import {listPolice} from "@/api/system/police"; |
|
|
|
const {addTab, removeTab, tabList} = |
|
useTabsStore(); |
|
const filesData = ref([]) |
|
const props = defineProps(["node","isEnd","id","backPath"]); |
|
const router = useRouter(); |
|
const preview = ref(false); |
|
const dialog = ref(false) |
|
const actionRow = ref({}) |
|
const userStore = useUserStore(); |
|
const catchStore = useCatchStore(); |
|
const dict = catchStore.getDicts(["procurementMethod"]); |
|
let formDataRef = ref() |
|
let formReviewRef = ref() |
|
const loading = ref(false) |
|
const route = useRoute(); |
|
|
|
const endDialog =ref(false) |
|
const isAudit = ref(false) |
|
const isEndData = ref(false) |
|
let activeName = ref("initial") |
|
|
|
let formData = ref({ |
|
project: { |
|
projectType: null, |
|
node: 'initial' |
|
}, |
|
files: { |
|
initial: [], |
|
exploration: [], |
|
cross: [] |
|
}, |
|
review: {} |
|
}) |
|
const fileDict = ref( |
|
[ |
|
{ |
|
type: ['服务类', '货物类'], |
|
fileData: [ |
|
{ |
|
request: true, |
|
type: "必传附件", |
|
fileName: "承诺书", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: true, |
|
type: "必传附件", |
|
fileName: "立项批示", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: "普通附件", |
|
fileName: "政府采购计划", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: '普通附件', |
|
fileName: "", |
|
fileNode: 'initial' |
|
} |
|
] |
|
}, |
|
{ |
|
type: ['工程类'], |
|
fileData: [ |
|
{ |
|
request: true, |
|
type: "必传附件", |
|
fileName: "承诺书", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: true, |
|
type: "必传附件", |
|
fileName: "立项批示", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: "普通附件", |
|
fileName: "政府采购计划", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: '普通附件', |
|
fileName: "经建设单位签字并盖章后的施工图纸", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: '普通附件', |
|
fileName: "", |
|
fileNode: 'initial' |
|
} |
|
] |
|
}, |
|
{ |
|
type: ['信息化类'], |
|
fileData: [ |
|
{ |
|
request: true, |
|
type: "必传附件", |
|
fileName: "承诺书", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: true, |
|
type: "必传附件", |
|
fileName: "立项批示", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: "普通附件", |
|
fileName: "政府采购计划", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: "普通附件", |
|
fileName: "建设方案或功能需求", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: "普通附件", |
|
fileName: "科信部门审计意见", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: "普通附件", |
|
fileName: "", |
|
fileNode: 'initial' |
|
} |
|
] |
|
} |
|
] |
|
) |
|
const fileEndDict = ref( |
|
[ |
|
{ |
|
type: ['服务类', '货物类'], |
|
fileData: [ |
|
{ |
|
request: true, |
|
type: "必传附件", |
|
fileName: "承诺书", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: true, |
|
type: "必传附件", |
|
fileName: "立项批示", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: "普通附件", |
|
fileName: "政府采购计划", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: '普通附件', |
|
fileName: "", |
|
fileNode: 'initial' |
|
} |
|
] |
|
}, |
|
{ |
|
type: ['工程类'], |
|
fileData: [ |
|
{ |
|
request: true, |
|
type: "必传附件", |
|
fileName: "承诺书", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: true, |
|
type: "必传附件", |
|
fileName: "立项批示", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: "普通附件", |
|
fileName: "政府采购计划", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: true, |
|
type: "必传附件", |
|
fileName: "合同或协议", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: true, |
|
type: '必传附件', |
|
fileName: "验收书", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: true, |
|
type: '必传附件', |
|
fileName: "工程结算清单", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: "普通附件", |
|
fileName: "采购手续", |
|
fileNode: 'initial' |
|
}, |
|
|
|
{ |
|
request: false, |
|
type: "普通附件", |
|
fileName: "经济技术签证单", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: '普通附件', |
|
fileName: "经建设单位签字并盖章后的施工图纸", |
|
fileNode: 'initial' |
|
}, |
|
|
|
{ |
|
request: false, |
|
type: '普通附件', |
|
fileName: "", |
|
fileNode: 'initial' |
|
} |
|
] |
|
}, |
|
{ |
|
type: ['信息化类'], |
|
fileData: [ |
|
{ |
|
request: true, |
|
type: "必传附件", |
|
fileName: "承诺书", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: true, |
|
type: "必传附件", |
|
fileName: "立项批示", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: "普通附件", |
|
fileName: "政府采购计划", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: "普通附件", |
|
fileName: "建设方案或功能需求", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: "普通附件", |
|
fileName: "科信部门审计意见", |
|
fileNode: 'initial' |
|
}, |
|
{ |
|
request: false, |
|
type: "普通附件", |
|
fileName: "", |
|
fileNode: 'initial' |
|
} |
|
] |
|
} |
|
] |
|
) |
|
|
|
|
|
|
|
const catchSotre = useCatchStore(); |
|
const departs = catchSotre.getDeparts(); |
|
|
|
const isDisabled = ref(true) |
|
const isAuditButton = ref(false) |
|
const datePicker = ref() |
|
const serviceTime = ref([]) |
|
//获取详情 |
|
const getDetailFun = async (val) => { |
|
|
|
loading.value = true; |
|
|
|
formData.value = await getDetail({"id": val}); |
|
|
|
if (props.isAudit) { |
|
isAuditButton.value = true |
|
} |
|
|
|
//编辑 |
|
if (props.isAudit && userStore.user) { |
|
//一审审计员 |
|
if (formData.value.project.node === 'first') { |
|
formData.value.review.firstAuditor = userStore.user.nickName; |
|
rulesDataTwo.value.firstMoney = [ |
|
{required: true, message: '请选择一审金额', trigger: 'blur'}, |
|
|
|
]; |
|
rulesDataTwo.value.firstReduceMoney = [ |
|
{required: true, message: '请选择一审审减金额', trigger: 'blur'}, |
|
]; |
|
rulesDataTwo.value.firstTime = [ |
|
{required: true, message: '请选择一审日期', trigger: 'blur'}, |
|
]; |
|
rulesDataTwo.value.firstAuditor = [ |
|
{required: true, message: '请输入一审审计人', trigger: 'blur'} |
|
]; |
|
|
|
} |
|
//二审审计员 |
|
if (formData.value.project.node === 'second') { |
|
formData.value.review.secondAuditor = userStore.user.nickName; |
|
rulesDataTwo.value.secondMoney = [ |
|
{required: true, message: '请选择二审金额', trigger: 'blur'}, |
|
]; |
|
rulesDataTwo.value.secondReduceMoney = [ |
|
{required: true, message: '请选择二审审减金额', trigger: 'blur'}, |
|
]; |
|
rulesDataTwo.value.secondTime = [ |
|
{required: true, message: '请选择二审日期', trigger: 'blur'}, |
|
]; |
|
rulesDataTwo.value.secondAuditor = [ |
|
{required: true, message: '请输入二审审计人', trigger: 'blur'} |
|
]; |
|
} |
|
// 三审审计员 |
|
if (formData.value.project.node === 'third') { |
|
formData.value.review.thirdlyAuditor = userStore.user.nickName; |
|
rulesDataTwo.value.thirdlyMoney = [ |
|
{required: true, message: '请选择三审金额', trigger: 'blur'}, |
|
|
|
]; |
|
rulesDataTwo.value.thirdlyReduceMoney = [ |
|
{required: true, message: '请选择三审审减金额', trigger: 'blur'}, |
|
]; |
|
rulesDataTwo.value.thirdlyTime = [ |
|
{required: true, message: '请选择三审日期', trigger: 'blur'}, |
|
]; |
|
rulesDataTwo.value.thirdlyAuditor = [ |
|
{required: true, message: '请输入三审审计人', trigger: 'blur'} |
|
]; |
|
} |
|
} |
|
await nextTick(() => { |
|
if (datePicker.value) { |
|
datePicker.value.handleClose() |
|
} |
|
}) |
|
loading.value = false; |
|
|
|
} |
|
|
|
//审查内容是否允许编辑 |
|
const isAuditEdit = (val,label=null) => { |
|
return false |
|
} |
|
//删除附件 |
|
const delFileData = async (row,index) => { |
|
await feedback.confirm(`确认删除附件数据(必传附件清除附件,普通附件删除) ?`) |
|
if(row.request){ |
|
row.fileData =[] |
|
}else{ |
|
formData.value.files[activeName.value].splice(index,1) |
|
} |
|
row.fileData=[] |
|
} |
|
const rulesData = ref({ |
|
reportType: [{required: true, message: '请选择报审类型', trigger: 'blur'}], |
|
reportName: [{required: true, message: '请输入项目名称', trigger: 'blur'}], |
|
projectType: [{required: true, message: '请选择项目类别', trigger: 'blur'}], |
|
auditUnitId: [{required: true, message: '请选择审计单位', trigger: 'blur'}], |
|
projectUnitId: [{required: true, message: '请选择项目单位', trigger: 'blur'}], |
|
projectPrincipal: [{required: true, message: '请选择报审类型', trigger: 'blur'}], |
|
projectPhone: [{required: true, message: '请选择负责人联系方式', trigger: 'blur'}], |
|
purchaseMethod: [{required: true, message: '请选择采购方式', trigger: 'blur'}], |
|
reportMoney: [{required: true, message: '请选择报审金额', trigger: 'blur'}], |
|
projectApprovalMoney: [{required: true, message: '请选择立项金额', trigger: 'blur'}], |
|
projectApprovalLead: [{required: true, message: '请选择报审领导', trigger: 'blur'}], |
|
applicant: [{required: true, message: '请输入报审人', trigger: 'blur'}], |
|
applicantTime: [{required: true, message: '请输入报审日期', trigger: 'blur'}], |
|
contractTime: [{required: true, message: '请输入合同签订日期', trigger: 'blur'}], |
|
contractMount: [{required: true, message: '请输入合同金额', trigger: 'blur'}], |
|
serviceUnit: [{required: true, message: '请输入服务单位', trigger: 'blur'}], |
|
serviceUnitManager: [{required: true, message: '请输入服务单位负责人', trigger: 'blur'}], |
|
serviceTime: [{required: true, message: '请输入报审日期', trigger: 'blur'}], |
|
serviceUnitPhone: [{required: true, message: '请输入服务单位联系电话', trigger: 'blur'}], |
|
projectApprovalTime: [{required: true, message: '请输入立项日期', trigger: 'blur'}], |
|
applyGovernmentTime: [{required: true, message: '请选择申报政府采购日期', trigger: 'blur'}], |
|
purchaseTime: [{required: true, message: '请选择采购日期', trigger: 'blur'}], |
|
}) |
|
const rulesDataTwo = ref({ |
|
reviewStatus: [ |
|
{required: true, message: '请输入审计情况', trigger: 'blur'} |
|
], |
|
reviewGist: [ |
|
{required: true, message: '请输入审计依据', trigger: 'blur'} |
|
], |
|
reviewContent: [ |
|
{required: true, message: '请输入审计内容', trigger: 'blur'} |
|
], |
|
isExploration: [ |
|
{required: true, message: '请选择是否勘察', trigger: 'blur'} |
|
], |
|
isCross: [ |
|
{required: true, message: '请选择是否对审', trigger: 'blur'} |
|
] |
|
}) |
|
const files = ref([]) |
|
//关闭弹窗 |
|
const closeFile = () => { |
|
preview.value = false; |
|
} |
|
|
|
//获取流程 |
|
const reportFlowDialog = ref(false) |
|
const reportFlowTable = ref([]) |
|
const reportFlowLoading = ref(false) |
|
const getReportFlowFun = async () => { |
|
reportFlowDialog.value = true |
|
reportFlowLoading.value=true |
|
const res = await getReportFlow({id:formData.value.project.id,code:'report'}); |
|
reportFlowLoading.value=false |
|
reportFlowTable.value = res; |
|
} |
|
|
|
|
|
|
|
|
|
//获取单位为简称 |
|
function getDepartShortName(departData, id, rowName) { |
|
if (departData) { |
|
for (let i = 0; i < departData.length; i++) { |
|
let s = departData[i]; |
|
if (s.id === id) { |
|
formData.value.project[rowName] = s.shortName; |
|
break; |
|
} |
|
if (s.children) { |
|
getDepartShortName(s.children, id, rowName) |
|
} |
|
} |
|
} |
|
} |
|
//获取tab名 |
|
const handleClick = (tab, event) => { |
|
activeName.value = tab.props.name |
|
filesData.value = [] |
|
} |
|
|
|
|
|
//关闭 |
|
const closeFun = () => { |
|
if (props.node) { |
|
router.push({path:props.backPath}) |
|
} else { |
|
router.push({path:"/work", query:{"load": true}}) |
|
} |
|
} |
|
|
|
|
|
//根据输入值获取信息 |
|
const inputGetList = (val) => { |
|
query.value.name = val; |
|
getPoliceList() |
|
} |
|
//审核人 |
|
const query = ref({ |
|
current: 1, |
|
departBranch: false |
|
}); |
|
let polices = ref([]) |
|
|
|
function getPoliceList() { |
|
listPolice(query.value).then((data) => { |
|
polices.value = data.records; |
|
}); |
|
} |
|
|
|
getPoliceList() |
|
let date = ref() |
|
|
|
|
|
|
|
|
|
//一审、二审、三审是否显示 |
|
const isShowFun = (list = []) => { |
|
if (props.node) { |
|
if (['Lead', 'original', 'audit'].includes(props.node)) { |
|
return true |
|
} else { |
|
return list.includes(props.node) |
|
} |
|
} else { |
|
if (['Lead', 'original', 'audit'].includes(formData.value.project.node)) { |
|
return true |
|
} else { |
|
return list.includes(formData.value.project.node) |
|
} |
|
} |
|
} |
|
//tab是否显示 |
|
function FileTabShowFun (){ |
|
let show = true; |
|
if(!formData.value.project.node){ |
|
return false; |
|
} |
|
let data = formData.value.project.node; |
|
switch (data){ |
|
case "initial": |
|
case "review": |
|
show=false; |
|
break |
|
default: |
|
show=true; |
|
break |
|
} |
|
|
|
return show; |
|
} |
|
|
|
|
|
const emits = defineEmits(["closePageFun"]) |
|
//关闭窗口 |
|
const closePage =()=>{ |
|
emits("closePageFun",null); |
|
} |
|
|
|
|
|
|
|
|
|
//添加附件按钮是否显示 |
|
function addFileFun(val) { |
|
|
|
return false; |
|
} |
|
/** |
|
* 附件上传或删除 |
|
* @param node 按钮所属tab |
|
* */ |
|
function disableFileBtn(node){ |
|
return true |
|
|
|
} |
|
|
|
|
|
|
|
// 监控是否为创建 |
|
watch(() => props.id, (val) => { |
|
if(val){ |
|
getDetailFun(val) |
|
}else{ |
|
useTabsStore().removeTab('/warning/reportDetail', router); |
|
} |
|
}, {deep: true, immediate: true}) |
|
//报审人姓名 |
|
watch(()=>formData.value.project.applicantId,(val)=>{ |
|
if(val && polices.value.length > 0 && polices.value.filter(s=>s.idCode === val) > 0){ |
|
formData.value.project.applicant =polices.value.filter(s=>s.idCode === val)[0].name; |
|
} |
|
},{deep:true,immediate:true}) |
|
//监测是否是结算项目报审 |
|
watch(() => props.isEnd, (val) => { |
|
isEndData.value = val === true || val === 'true'; |
|
if (isEndData.value) { |
|
formData.value.project.reportType = '结算项目' |
|
} else { |
|
formData.value.project.reportType = '项目控制价' |
|
} |
|
}, {deep: true, immediate: true}) |
|
//附件列表 |
|
watch(() => formData.value.project.projectType, (val) => { |
|
if (!(props.node || props.isAudit)) { |
|
let fileDataList = isEndData ? fileEndDict.value : fileDict.value; |
|
if (val) { |
|
let data = fileDataList.filter(s => s.type.includes(val)) |
|
formData.value.files.initial = data ? data[0].fileData : fileDataList[0].fileData |
|
} else { |
|
formData.value.files.initial = fileDataList[0].fileData |
|
} |
|
} |
|
}, {immediate: true, deep: true}) |
|
//监测单位,获取单位简称 |
|
watch(() => formData.value.project.projectUnitId, (val) => { |
|
if (val) { |
|
getDepartShortName(departs, val, 'projectUnit') |
|
} |
|
}, {immediate: true, deep: true}) |
|
//监测审计单位,获取审计单位简称 |
|
watch(() => formData.value.project.auditUnitId, (val) => { |
|
if (val) { |
|
getDepartShortName(departs, val, 'auditUnit') |
|
} |
|
}, {immediate: true, deep: true}) |
|
</script> |
|
|
|
<template> |
|
<div class="wrapper control-price-page" v-loading="loading"> |
|
<main> |
|
<el-header> |
|
|
|
<h2 style="text-align: center">{{ isEndData ? '控制价项目报审' : '结算项目报审' }}</h2> |
|
</el-header> |
|
<el-main> |
|
<div class="flex v-center" style="height:30px;margin-bottom: 10px"> |
|
<h5>报审信息</h5> |
|
</div> |
|
<div> |
|
<el-form :loading="loading" :model="formData.project" ref="formDataRef" :rules="rulesData" label-width="140"> |
|
<el-row> |
|
<el-col :span="6"> |
|
<el-form-item label="报审类型" prop="reportType"> |
|
<el-select :disabled="isDisabled" v-model="formData.project.reportType"> |
|
<el-option value="项目控制价" label="项目控制价"></el-option> |
|
<el-option value="结算项目" label="结算项目"></el-option> |
|
</el-select> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="项目名称" prop="reportName"> |
|
<el-input :disabled="isDisabled" v-model="formData.project.reportName"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="项目类别"> |
|
<el-select :disabled="isDisabled" v-model="formData.project.projectType"> |
|
<el-option value="服务类" label="服务类"></el-option> |
|
<el-option value="工程类" label="工程类"></el-option> |
|
<el-option value="货物类" label="货物类"></el-option> |
|
<el-option value="信息化类" label="信息化类"></el-option> |
|
</el-select> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="审计单位" prop="auditUnitId"> |
|
<depart-tree-select :auth="false" :disabled="isDisabled" v-model="formData.project.auditUnitId" |
|
:size="'default'" placeholder="" clearable/> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
<el-row> |
|
<el-col :span="6"> |
|
<el-form-item label="项目单位" prop="projectUnitId"> |
|
<depart-tree-select :auth="false" :disabled="isDisabled" v-model="formData.project.projectUnitId" |
|
:size="'default'" placeholder="" clearable/> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="项目负责人" prop="projectPrincipal"> |
|
<el-input :disabled="isDisabled" v-model="formData.project.projectPrincipal"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="负责人联系方式" prop="projectPhone"> |
|
<el-input :disabled="isDisabled" v-model="formData.project.projectPhone"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item v-if="isEndData" label="报审金额(元)" prop="reportMoney"> |
|
<el-input :disabled="isDisabled" type="number" v-model="formData.project.reportMoney"></el-input> |
|
</el-form-item> |
|
<el-form-item v-else label="采购方式" prop="purchaseMethod"> |
|
<el-select :disabled="isDisabled" v-model="formData.project.purchaseMethod"> |
|
<el-option v-for="(item,index) in dict.procurementMethod" :key="index" |
|
:label="item.dictLabel" |
|
:value="item.dictValue" |
|
></el-option> |
|
</el-select> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
<el-row> |
|
<el-col :span="6"> |
|
<el-form-item v-if="isEndData" label="立项日期" prop="projectApprovalTime"> |
|
<el-date-picker |
|
:disabled="isDisabled" |
|
v-model="formData.project.projectApprovalTime" |
|
style="width: 100%" |
|
type="date" |
|
placeholder="选择立项日期" |
|
/> |
|
</el-form-item> |
|
<el-form-item v-else label="报审金额(元)" prop="reportMoney"> |
|
<el-input :disabled="isDisabled" type="number" v-model="formData.project.reportMoney"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="立项金额(元)" prop="projectApprovalMoney"> |
|
<el-input :disabled="isDisabled" type="number" |
|
v-model="formData.project.projectApprovalMoney"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="立项审批领导" prop="projectApprovalLead"> |
|
<el-input :disabled="isDisabled" v-model="formData.project.projectApprovalLead"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="报审人" prop="applicant"> |
|
<!-- <el-input :disabled="isDisabled" v-model="formData.project.applicant"></el-input>--> |
|
<el-select :disabled="isDisabled" v-model="formData.project.applicantId" :remote-method="inputGetList" |
|
filterable> |
|
<el-option v-for="(item,index) in polices" :key="index" :value="item.idCode" |
|
:label="item.name"></el-option> |
|
</el-select> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
<el-row> |
|
<el-col :span="6" v-if="isEndData"> |
|
<el-form-item label="申报政府采购日期" prop="applyGovernmentTime"> |
|
<el-date-picker |
|
:disabled="isDisabled" |
|
v-model="formData.project.applyGovernmentTime" |
|
style="width: 100%" |
|
type="date" |
|
placeholder="选择申报政府采购日期" |
|
/> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6" v-if="isEndData"> |
|
<el-form-item label="采购方式" prop="purchaseMethod"> |
|
<el-select :disabled="isDisabled" v-model="formData.project.purchaseMethod"> |
|
<el-option v-for="(item,index) in dict.procurementMethod" :key="index" |
|
:label="item.dictLabel" |
|
:value="item.dictValue" |
|
></el-option> |
|
</el-select> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6" v-if="isEndData"> |
|
<el-form-item label="采购日期" prop="purchaseTime"> |
|
<el-date-picker |
|
:disabled="isDisabled" |
|
v-model="formData.project.purchaseTime" |
|
style="width: 100%" |
|
type="date" |
|
placeholder="选择采购日期" |
|
/> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="报审日期" prop="applicantTime"> |
|
<el-date-picker |
|
:disabled="isDisabled" |
|
v-model="formData.project.applicantTime" |
|
style="width: 100%" |
|
type="date" |
|
placeholder="选择报审日期" |
|
/> |
|
</el-form-item> |
|
</el-col> |
|
<el-col v-if="!isEndData && !isAuditEdit(['original','audit'],'文号')" :span="6"> |
|
<el-form-item label="文号" > |
|
<el-input :disabled="isDisabled" v-model="formData.project.referenceNumber" /> |
|
</el-form-item> |
|
</el-col> |
|
<el-col v-if="!isEndData && !isAuditEdit(['original','audit'],'发文日期')" :span="6"> |
|
<el-form-item label="发文日期" > |
|
<el-date-picker |
|
:disabled="isDisabled" |
|
v-model="formData.project.publicationDate" |
|
style="width: 100%" |
|
type="date" |
|
placeholder="选择发文日期" |
|
/> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
<el-row v-if="isEndData"> |
|
<el-col :span="6"> |
|
<el-form-item label="合同签订日期" prop="contractTime"> |
|
<el-date-picker |
|
:disabled="isDisabled" |
|
v-model="formData.project.contractTime" |
|
style="width: 100%" |
|
type="date" |
|
placeholder="选择报合同签订日期" |
|
/> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="合同金额" prop="contractMount"> |
|
<el-input :disabled="isDisabled" type="number" v-model="formData.project.contractMount"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="服务单位" prop="serviceUnit"> |
|
<el-input :disabled="isDisabled" v-model="formData.project.serviceUnit"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="服务单位负责人" prop="serviceUnitManager"> |
|
<el-input :disabled="isDisabled" v-model="formData.project.serviceUnitManager"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
<el-row v-if="isEndData"> |
|
<el-col :span="6"> |
|
<el-form-item label="服务日期" prop="serviceTime"> |
|
<el-date-picker |
|
ref="datePicker" |
|
:disabled="isDisabled" |
|
v-model="formData.project.serviceTime" |
|
type="daterange" |
|
range-separator="-" |
|
start-placeholder="开始服务日期" |
|
end-placeholder="结束服务日期" |
|
/> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="服务单位联系电话" prop="serviceUnitPhone"> |
|
<el-input :disabled="isDisabled" v-model="formData.project.serviceUnitPhone"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6" v-if="!isAuditEdit(['original','audit'])"> |
|
<el-form-item label="文号" > |
|
<el-input :disabled="isDisabled" v-model="formData.project.referenceNumber" /> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6" v-if="!isAuditEdit(['original','audit'])"> |
|
<el-form-item label="发文日期" > |
|
<el-date-picker |
|
:disabled="isDisabled" |
|
v-model="formData.project.publicationDate" |
|
style="width: 100%" |
|
type="date" |
|
placeholder="选择发文日期" |
|
/> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
</el-form> |
|
</div> |
|
<hr style="border-color: rgba(232,232,232,0.67);opacity: 0.2"> |
|
<div class="flex v-center" style="height:30px;margin-bottom: 10px"> |
|
<h5>审计信息</h5> |
|
</div> |
|
<el-form |
|
v-if="!(['initial','review'].includes(formData.project.node) || ['initial','review'].includes(props.node))" |
|
:model="formData.review" ref="formReviewRef" :rules="rulesDataTwo" label-width="160"> |
|
<!-- 一审 --> |
|
<el-row :gutter="20" v-if="isShowFun(['first','second','third', 'end']) "> |
|
<el-col :span="6"> |
|
<el-form-item label="一审金额(元)" prop="firstMoney"> |
|
<el-input :disabled="isDisabled" type="number" v-model="formData.review.firstMoney"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="一审审减金额(元)" prop="firstReduceMoney"> |
|
<el-input :disabled="isDisabled" type="number" |
|
v-model="formData.review.firstReduceMoney"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="一审日期" prop="firstTime"> |
|
<el-date-picker :disabled="isDisabled" |
|
v-model="formData.review.firstTime" |
|
style="width: 100%" |
|
type="date" |
|
placeholder="选择一审日期" |
|
/> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="一审审计员" prop="firstAuditor"> |
|
<el-input :disabled="isDisabled" v-model="formData.review.firstAuditor"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
<!-- 二审--> |
|
<el-row :gutter="20" v-if="isShowFun(['second','third', 'end'])"> |
|
<el-col :span="6 "> |
|
<el-form-item label="二审金额(元)" prop="secondMoney"> |
|
<el-input :disabled="isDisabled" type="number" |
|
v-model="formData.review.secondMoney"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="二审审减金额(元)" prop="secondReduceMoney"> |
|
<el-input :disabled="isDisabled" type="number" |
|
v-model="formData.review.secondReduceMoney"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="二审日期" prop="secondTime"> |
|
<el-date-picker |
|
:disabled="isDisabled" |
|
v-model="formData.review.secondTime" |
|
style="width: 100%" |
|
type="date" |
|
placeholder="选择二审日期" |
|
/> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="二审审计员" prop="secondAuditor"> |
|
<el-input :disabled="isDisabled" v-model="formData.review.secondAuditor"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
<!-- 三审--> |
|
<el-row :gutter="20" v-if="isShowFun(['third', 'end'])"> |
|
<el-col :span="6"> |
|
<el-form-item label="三审金额(元)" prop="thirdlyMoney"> |
|
<el-input :disabled="isDisabled" type="number" |
|
v-model="formData.review.thirdlyMoney"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="三审审减金额(元)" prop="thirdlyReduceMoney"> |
|
<el-input :disabled="isDisabled" type="number" |
|
v-model="formData.review.thirdlyReduceMoney"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="三审日期" prop="thirdlyTime"> |
|
<el-date-picker |
|
:disabled="isDisabled" |
|
v-model="formData.review.thirdlyTime" |
|
style="width: 100%" |
|
type="date" |
|
placeholder="选择三审日期" |
|
/> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="三审审计员" prop="thirdlyAuditor"> |
|
<el-input :disabled="isDisabled" v-model="formData.review.thirdlyAuditor"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
<!--审查依据--> |
|
<el-row :gutter="20"> |
|
<el-col :span="12"> |
|
<el-form-item label="审计情况" prop="reviewStatus"> |
|
<el-input :disabled="isDisabled" type="textarea" :rows="5" |
|
v-model="formData.review.reviewStatus"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="12"> |
|
<el-form-item label="审计依据" prop="reviewGist"> |
|
<el-input :disabled="isDisabled" type="textarea" :rows="5" |
|
v-model="formData.review.reviewGist"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
<!--审查内容--> |
|
<el-row :gutter="20"> |
|
<el-col> |
|
<el-form-item label="审计内容" prop="reviewContent"> |
|
<el-input :disabled="isDisabled" type="textarea" :rows="5" |
|
v-model="formData.review.reviewContent"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
<el-row :gutter="20"> |
|
<el-col :span="12"> |
|
<el-form-item label="勘察情况" prop="isExploration"> |
|
<el-radio-group :disabled="isDisabled" |
|
v-model="formData.review.isExploration"> |
|
<el-radio value="1">已勘察</el-radio> |
|
<el-radio value="2">未勘察</el-radio> |
|
</el-radio-group> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="12"> |
|
<el-form-item label="对审情况" prop="isCross"> |
|
<el-radio-group :disabled="isDisabled" v-model="formData.review.isCross"> |
|
<el-radio value="1">已对审</el-radio> |
|
<el-radio value="2">未对审</el-radio> |
|
</el-radio-group> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
|
|
</el-form> |
|
|
|
<div class="table-container"> |
|
<el-tabs v-model="activeName" @tab-click="handleClick"> |
|
<el-tab-pane label="报审附件" name="initial"></el-tab-pane> |
|
<el-tab-pane v-if="FileTabShowFun()" label="审计附件" name="audit"></el-tab-pane> |
|
<el-tab-pane v-if="formData.review?.isExploration === '1'" label="勘察附件" name="exploration"></el-tab-pane> |
|
<el-tab-pane v-if="formData.review?.isCross === '1'" label="对审附件" name="cross"></el-tab-pane> |
|
</el-tabs> |
|
<el-table :data="formData.files[activeName]" preserve-expanded-content > |
|
<el-table-column type="expand"> |
|
<template #default="props"> |
|
<div v-if="props.row?.fileData"> |
|
<file-list v-model:files="props.row.fileData" :removeEnable="false"></file-list> |
|
</div> |
|
<div v-else> |
|
<p style="color: darkgray;text-align: center">无附件</p> |
|
</div> |
|
</template> |
|
</el-table-column> |
|
<el-table-column width="50" type="index" label="序号" :index="(index)=> index+1"></el-table-column> |
|
<el-table-column label="附件类型" prop="type" width="100"></el-table-column> |
|
<el-table-column label="上传" width="150"> |
|
<template #default="{$index,row}"> |
|
<el-button type="primary" :disabled="disableFileBtn(activeName)" |
|
>上传 |
|
<template #icon> |
|
<icon name="el-icon-upload-filled"/> |
|
</template> |
|
</el-button> |
|
</template> |
|
</el-table-column> |
|
<el-table-column label="删除" width="100"> |
|
<template #default="{row,$index}"> |
|
<el-button type="default" :disabled="disableFileBtn(activeName)" @click="delFileData(row,$index)">删除 |
|
</el-button> |
|
</template> |
|
</el-table-column> |
|
<el-table-column label="资料名称" prop="fileName" width="140"></el-table-column> |
|
<el-table-column label="文件上传情况" prop="name" min-width="180" show-overflow-tooltip> |
|
<template #default="{row}" > |
|
{{row.fileData?(row.fileData.length > 0?'已上传':'未上传'):'未上传'}} |
|
</template> |
|
</el-table-column> |
|
<el-table-column label="上传人" width="120" prop="crtUser"></el-table-column> |
|
<el-table-column label="上传时间" width="170" prop="crtTime"></el-table-column> |
|
|
|
</el-table> |
|
|
|
</div> |
|
<div class="flex end mt-20" > |
|
<el-button type="danger" @click="closePage">关闭</el-button> |
|
</div> |
|
|
|
</el-main> |
|
</main> |
|
</div> |
|
|
|
<el-dialog v-model="reportFlowDialog" title="审批记录" width="80vw"> |
|
<div class="table-container"> |
|
<el-table :data="reportFlowTable" v-loading="reportFlowLoading"> |
|
<el-table-column width="50" type="index" label="序号" :index="(index)=> index+1"></el-table-column> |
|
<el-table-column label="操作" prop="reportCode"></el-table-column> |
|
<el-table-column label="办理人" prop="approver"></el-table-column> |
|
<el-table-column label="提交时间" prop="areportTime"> |
|
<template #default="{row}"> |
|
{{ timeFormat(row.areportTime,'yyyy-mm-dd hh:MM:ss') }} |
|
</template> |
|
</el-table-column> |
|
<el-table-column label="完成时间" prop="approverTime"> |
|
<template #default="{row}"> |
|
{{ timeFormat(row.approverTime,'yyyy-mm-dd hh:MM:ss') }} |
|
</template> |
|
</el-table-column> |
|
<el-table-column label="办理结果" prop="approverState"> |
|
<template #default="{row}"> |
|
<el-tag type="primary" v-if="row.approverState === '开始'">开始</el-tag> |
|
<el-tag type="success" v-if="row.approverState === '结束'">完成</el-tag> |
|
<el-tag type="danger" v-if="row.approverState === '驳回'">驳回</el-tag> |
|
</template> |
|
</el-table-column> |
|
<el-table-column label="办理意见" prop="approverMessage" show-overflow-tooltip></el-table-column> |
|
<el-table-column label="办理状态" prop="approverState"></el-table-column> |
|
</el-table> |
|
</div> |
|
</el-dialog> |
|
|
|
|
|
|
|
|
|
<report-file :preview="preview" :activeFile="actionRow" @closeFile="closeFile"/> |
|
</template> |
|
|
|
<style lang="scss"> |
|
.el-table .el-table__cell{ |
|
position: initial !important; |
|
} |
|
|
|
.control-price-page { |
|
--el-disabled-bg-color: #ffffff; |
|
--el-disabled-text-color: #000000; |
|
--el-border-color-disabled: #dcdfe6; |
|
|
|
.el-input.is-disabled .el-input__wrapper { |
|
background-color: #ffffff !important; |
|
box-shadow: 0 0 0 1px var(--el-border-color) inset; |
|
} |
|
|
|
.el-input.is-disabled .el-input__inner { |
|
color: #000000 !important; |
|
-webkit-text-fill-color: #000000 !important; |
|
} |
|
|
|
.el-select.is-disabled .el-select__wrapper, |
|
.el-select .el-select__wrapper.is-disabled { |
|
background-color: #ffffff !important; |
|
border-color: #dcdfe6 !important; |
|
color: #000000 !important; |
|
cursor: default !important; |
|
} |
|
|
|
.el-select.is-disabled .el-select__selected-item, |
|
.el-select.is-disabled .el-input__inner { |
|
color: #000000 !important; |
|
-webkit-text-fill-color: #000000 !important; |
|
} |
|
|
|
.el-date-editor.is-disabled .el-input__wrapper { |
|
background-color: #ffffff !important; |
|
} |
|
|
|
.el-date-editor.is-disabled .el-input__inner { |
|
color: #000000 !important; |
|
-webkit-text-fill-color: #000000 !important; |
|
} |
|
|
|
.el-textarea.is-disabled .el-textarea__inner { |
|
background-color: #ffffff !important; |
|
color: #000000 !important; |
|
} |
|
|
|
.el-radio.is-disabled .el-radio__label { |
|
color: #000000 !important; |
|
} |
|
|
|
.el-select.is-disabled, |
|
.el-select.is-disabled *, |
|
.el-input.is-disabled, |
|
.el-input.is-disabled * { |
|
cursor: default !important; |
|
} |
|
} |
|
</style>
|
|
|