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.
 
 
 
 
 

526 lines
17 KiB

<script setup>
import {reportPage,recessedData} from '@/api/entryWindow/index'
import useCatchStore from "@/stores/modules/catch";
import {listPolice} from "@/api/system/police";
import {timeFormat} from "@/utils/util";
import useUserStore from "@/stores/modules/user";
import {FlowNodeEnum} from "@/enums/flowEnums";
import feedback from "@/utils/feedback";
import {getEntryWindowRecord} from '@/api/report/flow';
const catchStore = useCatchStore();
const userStore = useUserStore();
const uid = userStore.user.userName;
const dict = catchStore.getDicts(["procurementMethod"]);
const tableData = ref([])
const ressDialog =ref(false)
let query = ref({
current: 1,
size: 10,
code:'all'
})
let showRecord =ref(false)
let total = ref(10)
let loading =ref(false)
let polices = ref([])
//审核人
const policeQuery = ref({
current: 1,
departBranch: true
});
const recessedForm =ref({
id:null,
message:null
})
//退窗进窗方法
const recessedShowFun = async (row,val)=>{
recessedForm.value.id = row.id;
//判断退窗进窗
if(val== 1){
//进窗
await feedback.confirm("确定要重新进窗吗?");
await recessedDataFun()
}else{
//退窗
await feedback.confirm("确定要退窗吗?");
ressDialog.value=true;
}
}
const ressDialogClose = ()=>{
ressDialog.value=false;
recessedForm.value={
id:null,
message:null
}
}
//打开弹窗
const recordTable =ref();
const recordLoading =ref(false);
const recordFun = async (row)=>{
recordLoading.value=true;
try{
showRecord.value=true;
recordTable.value = await getEntryWindowRecord({id:row.id});
}catch (e){
console.log('e',e)
}finally {
recordLoading.value=false;
}
}
//关闭弹窗
const showRecordClose = ()=>{
showRecord.value=false
}
const handleClick =(val)=>{
query.value.code=val.props.name;
getList()
}
const recessedDataFun = async()=>{
//打开弹窗
const res = await recessedData(recessedForm.value)
getList()
ressDialog.value=false
}
function getPoliceList() {
listPolice(policeQuery.value).then((data) => {
polices.value = data.records;
});
}
getPoliceList()
//根据输入值获取信息
const inputGetList = (val) => {
query.value.name = val;
getPoliceList()
}
//查询数据
const getList =async ()=>{
loading.value=true
const res = await reportPage(query.value)
tableData.value=res.records
total.value=res.total
loading.value=false
}
//重置
const reset =()=>{
query.value = {
current: 1,
size: 10,
};
getList();
}
getList()
//查看详情
const router = useRouter();
const getDetail =(row,code)=>{
debugger
//判断是否为报审人
let query ={
isEnd:row.reportType == "结算项目",
id:row.id,
backPath:'/entryWindow'
}
if(code){
if(code === 'audit'){
query.isAudit = true
}
else if(code === 'edit' ){
query.isEdit = true
query.node = row.node
}
}
else{
query.node = row.node
query.disabledVal=true;
}
if (row.node=='initial'){
delete query.disabledVal;
}
router.push({
path:`/report/edit/controlPrice`,
query: query
});
}
const isAdminShow = ()=>{
debugger
if(userStore.user && userStore.user.roleCodes){
return userStore.user.roleCodes.indexOf('admin_1') >= 0
}else{
return true;
}
}
</script>
<template>
<div class="container">
<header class="mb-20">
<el-form :label-width="150">
<el-row>
<el-col :span="6">
<el-form-item label="报审类型" prop="reportType">
<el-select v-model="query.reportType" clearable>
<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 v-model="query.reportName"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="项目类别" prop="projectType">
<el-select v-model="query.projectType" clearable>
<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 v-model="query.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 v-model="query.projectUnitId" :size="'default'" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="项目负责人" prop="projectPrincipal">
<el-input v-model="query.projectPrincipal"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" >
<el-form-item label="负责人联系方式" prop="projectPhone">
<el-input v-model="query.projectPhone"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" >
<el-form-item label="报审金额(元)" prop="reportMoney">
<el-input type="number" v-model="query.reportMoney"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="采购方式" prop="purchaseMethod">
<el-select v-model="query.purchaseMethod" clearable>
<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">
<el-form-item label="立项日期" prop="projectApprovalTime">
<el-date-picker
v-model="query.projectApprovalTime"
style="width: 100%"
type="daterange"
range-separator="-"
start-placeholder="开始服务日期"
end-placeholder="结束服务日期"
placeholder="选择立项日期"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="6" >
<el-form-item label="报审金额(元)" prop="reportMoney">
<el-input type="number" v-model="query.reportMoney"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" >
<el-form-item label="立项金额(元)" prop="projectApprovalMoney">
<el-input type="number" v-model="query.projectApprovalMoney" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="报审日期" prop="applicantTime">
<el-date-picker
v-model="query.applicantTime"
style="width: 100%"
type="daterange"
range-separator="-"
start-placeholder="开始服务日期"
end-placeholder="结束服务日期"
placeholder="选择报审日期"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="报审人" prop="applicant">
<!-- <el-input v-model="query.applicant"></el-input>-->
<el-select v-model="query.applicantId" remote filterable :remote-method="inputGetList" clearable >
<el-option v-for="(item,index) in polices" :key="index" :value="item.id" :label="item.name"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6" >
<el-form-item label="申报政府采购日期" prop="applyGovernmentTime">
<el-date-picker
v-model="query.applyGovernmentTime"
style="width: 100%"
type="daterange"
range-separator="-"
start-placeholder="开始服务日期"
end-placeholder="结束服务日期"
placeholder="选择申报政府采购日期"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="采购日期" prop="purchaseTime">
<el-date-picker
v-model="query.purchaseTime"
style="width: 100%"
type="daterange"
range-separator="-"
start-placeholder="开始服务日期"
end-placeholder="结束服务日期"
placeholder="选择采购日期"
clearable
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="合同签订日期" prop="contractTime">
<el-date-picker
v-model="query.contractTime"
style="width: 100%"
type="daterange"
range-separator="-"
start-placeholder="开始服务日期"
end-placeholder="结束服务日期"
placeholder="选择报合同签订日期"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="合同金额" prop="contractMount">
<el-input type="number" v-model="query.contractMount"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="服务单位" prop="serviceUnit">
<el-input v-model="query.serviceUnit"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="服务日期" prop="serviceTime">
<el-date-picker
ref="datePicker"
clearable
v-model="query.serviceTime"
type="daterange"
range-separator="-"
start-placeholder="开始服务日期"
end-placeholder="结束服务日期"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="flex end">
<div>
<el-button type="primary" @click="getList">
<template #icon>
<icon name="el-icon-Search"/>
</template>
查询
</el-button
>
<el-button @click="reset">重置</el-button>
</div>
</div>
</header>
<div class="table-container">
<el-tabs v-model="query.code" @tab-click="handleClick">
<el-tab-pane label="全部" name="all"></el-tab-pane>
<el-tab-pane label="进窗" name="0"></el-tab-pane>
<el-tab-pane label="退窗" name="1"></el-tab-pane>
</el-tabs>
<el-table :data="tableData" v-loading="loading">
<el-table-column label="项目名称" prop="reportName" width="200" />
<el-table-column
label="报审类型"
prop="reportType"
show-overflow-tooltip
width="100"
/>
<el-table-column
label="项目类别"
prop="projectType"
align="center"
width="100"
/>
<el-table-column label="状态" align="center"
width="90">
<template #default="{row}">
<el-tag :type="row.isRecessed == 0? 'primary':'danger'">{{row.isRecessed== 0 ?'进窗':'退窗' }}</el-tag>
</template>
</el-table-column>
<el-table-column
label="当前环节"
prop="node"
align="center"
width="120"
>
<template #default="{row}">
<el-tag>{{FlowNodeEnum[row.node]}}</el-tag>
</template>
</el-table-column>
<el-table-column
label="审计单位"
prop="auditUnitStr"
show-overflow-tooltip
min-width="100"
/>
<el-table-column
label="项目单位"
prop="projectUnitStr"
show-overflow-tooltip
min-width="100"
/>
<el-table-column
label="项目负责人"
prop="projectPrincipal"
width="130"
/>
<el-table-column
label="项目负责人联系方式"
prop="projectPhone"
width="190"
>
</el-table-column>
<el-table-column
label="采购方式"
prop="purchaseMethod"
align="center"
width="110"
/>
<el-table-column
label="报审金额"
prop="reportMoney"
width="120"
/>
<el-table-column
label="报审日期"
prop="applicantTime"
width="120"
>
<template #default="{row}">
{{timeFormat(row.applicantTime)}}
</template>
</el-table-column>
<el-table-column
label="立项金额"
prop="projectApprovalMoney"
width="120"
/>
<el-table-column
label="立项日期"
prop="projectApprovalTime"
width="120"
>
<template #default="{row}">
{{timeFormat(row.projectApprovalTime)}}
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" min-width="260px">
<template #default="{ row }">
<el-button
link
type="primary"
v-if="row.deleteFlag == 1"
@click="getDetail(row)"
>详情</el-button>
<!-- 未删除:显示正常操作 -->
<template v-else>
<el-button link type="primary" v-if="row.applicantId === uid && row.isRecessed == 1" @click="getDetail(row,'edit')">编辑</el-button>
<!-- <el-button link type="primary" v-else-if="row.flowUserId === uid" @click="getDetail(row,'audit')">审批</el-button>-->
<el-button link type="primary" v-else @click="getDetail(row)">详情</el-button>
<el-button link type="danger" v-if="isAdminShow() && row.isRecessed == 0" @click="recessedShowFun(row,0)"> 退窗</el-button>
<el-button link type="primary" v-if="(isAdminShow() || row.applicantId === uid) && row.isRecessed == 1" @click="recessedShowFun(row,1)">重新进窗</el-button>
<el-button link type="primary" @click="recordFun(row)">进退窗记录</el-button>
</template>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex end mt-8">
<el-pagination
@size-change="getList"
@current-change="getList"
:page-sizes="[10, 20, 50]"
v-model:page-size="query.size"
v-model:current-page="query.current"
layout="total, sizes, prev, pager, next"
:total="total"
>
</el-pagination>
</div>
<p>
列表根据权限范围,展示涉及的进退窗项目,可在此列表退窗、重新进窗、查看项目进退窗记录。
</p>
<el-dialog v-model="ressDialog" title="退窗意见" destroy-on-close @close="ressDialogClose">
<el-form>
<row>
<el-col :span="24">
<el-form-item label="退窗意见">
<el-input :rows="10" type="textarea" v-model="recessedForm.message"></el-input>
</el-form-item>
</el-col>
</row>
</el-form>
<footer class="flex end">
<el-button @click="recessedDataFun" type="primary">确认</el-button>
<el-button @click="ressDialog = false" >关闭</el-button>
</footer>
</el-dialog>
<el-dialog v-model="showRecord" title="进退窗记录" destroy-on-close @close="showRecordClose">
<el-table :data="recordTable" v-loading="recordLoading">
<el-table-column prop="node" label="环节"></el-table-column>
<el-table-column prop="message" label="内容" show-overflow-tooltip></el-table-column>
<el-table-column prop="recipient" label="操作人"></el-table-column>
<el-table-column prop="crtTime" label="操作时间">
<template #default="{row}">
{{timeFormat(row.crtTime)}}
</template>
</el-table-column>
</el-table>
</el-dialog>
</div>
</template>
<style scoped lang="scss">
</style>