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.
292 lines
9.4 KiB
292 lines
9.4 KiB
<script setup> |
|
import {timeFormat} from "@/utils/util"; |
|
import {getWorkList, getWorkTab, getMessageWorkList,upMessageWork} from '@/api/work/index' |
|
import {useRoute} from "vue-router"; |
|
import useUserStore from "@/stores/modules/user"; |
|
import useCatchStore from "@/stores/modules/catch"; |
|
|
|
const catchSotre = useCatchStore(); |
|
const workLoading = ref(false) |
|
const messageLoading =ref(false) |
|
const tableData = ref([]) |
|
const messageTable = ref([]) |
|
const tabNumber = ref({}) |
|
const activeName = ref("first") |
|
const router = useRouter() |
|
const route = useRoute(); |
|
const messageActive = ref("0") |
|
const messageData = ref() |
|
const messageDialog = ref(false) |
|
const userStore = useUserStore(); |
|
//初始化部门数据 |
|
const departsAll = catchSotre.getDepartsAll(); |
|
const departs = catchSotre.getDeparts(); |
|
|
|
//点击tab切换 |
|
const handleClick = (row) => { |
|
|
|
activeName.value = row.props.name; |
|
getWorkListFun(); |
|
} |
|
const handleMessageClick = (row) => { |
|
messageActive.value = row.props.name |
|
getMessageWorkListFun() |
|
} |
|
//获取我的工作事项 |
|
const getWorkListFun = async () => { |
|
workLoading.value=true; |
|
tableData.value =await getWorkList(activeName.value); |
|
workLoading.value=false; |
|
} |
|
//回显我的消息内容 |
|
const getMessageWorkListFun = async () => { |
|
messageLoading.value=true |
|
messageTable.value = await getMessageWorkList(messageActive.value); |
|
messageLoading.value=false |
|
} |
|
//修改为已阅 |
|
const upMessageWorkFun = async (id)=>{ |
|
const res = await upMessageWork(id) |
|
} |
|
//获取tab数字 |
|
const getWorkTabFun = async () => { |
|
tabNumber.value = await getWorkTab(); |
|
} |
|
//我的待办点击 |
|
const rowWorkClick = (row) => { |
|
console.log('当前待办项目节点',row.flowCode) |
|
let isEnd = row.reportType === "结算项目"; |
|
if(row.isWarning){ |
|
|
|
//跳转值审计预警审核 |
|
let query ={ |
|
isEnd:row.reportType === "项目控制价", |
|
reportId:row.reportId, |
|
warningId:row.warningId, |
|
isAudit:true, |
|
backPath:'/work', |
|
warningCode:row.flowCode |
|
} |
|
router.push({ |
|
path:`/warning/edit`, |
|
query: query |
|
}); |
|
} |
|
else if(row.flowCode == 'initial'){ |
|
console.log('row',row) |
|
router.push({ |
|
path:`/report/edit/controlPrice`, |
|
query: { |
|
isEnd:isEnd, |
|
id:row.reportId, |
|
node:row.flowCod, |
|
backPath:"/work", |
|
isAudit: true |
|
} |
|
}); |
|
} |
|
else if (activeName.value === 'first') { |
|
|
|
router.push({ |
|
path:'/report/edit/controlPrice', |
|
query:{ |
|
isEnd:isEnd, |
|
id:row.reportId, |
|
isAudit:true |
|
} |
|
}) |
|
} else { |
|
router.push({ |
|
path:'/report/edit/controlPrice', |
|
query:{ |
|
isEnd:isEnd, |
|
id:row.reportId, |
|
node:row.flowCode |
|
} |
|
}) |
|
} |
|
} |
|
//我的信息点击 |
|
const rowMessageClick = (row) => { |
|
messageDialog.value = true |
|
messageData.value = row |
|
upMessageWorkFun(messageData.value.id) |
|
} |
|
|
|
const closeMessage =()=>{ |
|
messageDialog.value=false; |
|
getWorkListFun() |
|
getWorkTabFun() |
|
getMessageWorkListFun() |
|
} |
|
const loading = ref(false); |
|
|
|
function getData(){ |
|
loading.value=true |
|
getWorkListFun() |
|
getWorkTabFun() |
|
getMessageWorkListFun() |
|
//获取所有的二级单位(预加载) |
|
catchSotre.getDepartNotPolice() |
|
|
|
loading.value=false |
|
} |
|
|
|
onMounted(()=>{ |
|
getData() |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
watch(()=>route.query.load,(val)=>{ |
|
if(val){ |
|
getData() |
|
} |
|
}) |
|
</script> |
|
|
|
<template> |
|
<div class="container"> |
|
<el-row :gutter="20" style="height:50%"> |
|
<el-col :span="15"> |
|
<div class="flex v-center" style="height:30px;margin-bottom: 10px"> |
|
<h3>待办事项</h3> |
|
</div> |
|
<el-tabs v-model="activeName" class="tab_font" @tab-click="handleClick"> |
|
<el-tab-pane name="first"> |
|
<template #label> |
|
<el-badge :value="tabNumber.first" v-if="tabNumber.first && tabNumber.first > 0"> |
|
<span class="tab-nav-title">我的待办</span> |
|
</el-badge> |
|
<span class="tab-nav-title" v-else>我的待办</span> |
|
</template> |
|
</el-tab-pane> |
|
<el-tab-pane name="second"> |
|
<template #label> |
|
<!-- <el-badge :value="tabNumber.second" v-if="tabNumber.second && tabNumber.second > 0">--> |
|
<!-- <span class="tab-nav-title">我的已办</span>--> |
|
<!-- </el-badge>--> |
|
<span class="tab-nav-title">我的已办</span> |
|
</template> |
|
</el-tab-pane> |
|
</el-tabs> |
|
<el-table v-loading="workLoading" :data="tableData" max-height="350" @row-click="rowWorkClick"> |
|
<el-table-column width="70" type="index" label="序号" :index="(index)=> index+1"></el-table-column> |
|
<el-table-column width="130" label="审批类型"> |
|
<template #default="{row}"> |
|
<el-tag>{{row.isWarning?'审计预警审核':'项目报审'}}</el-tag> |
|
</template> |
|
</el-table-column> |
|
<el-table-column label="项目名称" prop="reportName"></el-table-column> |
|
<el-table-column label="操作" prop="work"></el-table-column> |
|
<el-table-column label="时间"> |
|
<template #default="{row}"> |
|
{{ row.time ? timeFormat(row.time) : '/' }} |
|
</template> |
|
</el-table-column> |
|
</el-table> |
|
</el-col> |
|
<el-col :span="9"> |
|
<div class="flex v-center" style="height:30px;margin-bottom: 10px"> |
|
<h3>我的消息</h3> |
|
</div> |
|
<el-tabs v-model="messageActive" class="tab_font" @tab-click="handleMessageClick"> |
|
<el-tab-pane name="0"> |
|
<template #label> |
|
<el-badge :value="tabNumber.unread" v-if="tabNumber.unread && tabNumber.unread > 0"> |
|
<span class="tab-nav-title">未读</span> |
|
</el-badge> |
|
<span class="tab-nav-title" v-else>未读</span> |
|
</template> |
|
</el-tab-pane> |
|
<el-tab-pane name="1"> |
|
<template #label> |
|
<!-- <el-badge :value="tabNumber.read" v-if="tabNumber.read && tabNumber.read > 0">--> |
|
<!-- <span class="tab-nav-title">已读</span>--> |
|
<!-- </el-badge>--> |
|
<span class="tab-nav-title" >已读</span> |
|
</template> |
|
</el-tab-pane> |
|
</el-tabs> |
|
<el-table :data="messageTable" max-height="350" @row-click="rowMessageClick" v-loading="messageLoading"> |
|
<el-table-column label="报审项目" prop="reportName" ></el-table-column> |
|
<el-table-column label="发送人" prop="crtUser" width="80"></el-table-column> |
|
<el-table-column label="环节" prop="node" show-overflow-tooltip></el-table-column> |
|
<el-table-column label="发送时间" prop="crtTime"> |
|
<template #default="{row}"> |
|
{{ row.crtTime ? timeFormat(row.crtTime) : '/' }} |
|
</template> |
|
</el-table-column> |
|
</el-table> |
|
</el-col> |
|
</el-row> |
|
<el-row :gutter="20" style="height:50%"> |
|
<el-col :span="15"> |
|
<div class="flex v-center" style="height:30px;margin-bottom: 10px"> |
|
<h3>单位整改情况</h3> |
|
</div> |
|
<el-table max-height="350"> |
|
<el-table-column label="审计单位"></el-table-column> |
|
<el-table-column label="项目总数"></el-table-column> |
|
<el-table-column label="问题数"></el-table-column> |
|
<el-table-column label="已整改数"></el-table-column> |
|
<el-table-column label="未整改数"></el-table-column> |
|
<el-table-column label="已整改率"></el-table-column> |
|
<el-table-column label="整改项目数"></el-table-column> |
|
<el-table-column label="未整改率"></el-table-column> |
|
</el-table> |
|
</el-col> |
|
<el-col :span="9"> |
|
<div class="flex v-center" style="height:30px;margin-bottom: 10px"> |
|
<h3>审计成果</h3> |
|
</div> |
|
</el-col> |
|
</el-row> |
|
|
|
<el-dialog v-model="messageDialog" title="消息" width="50vw" @close="closeMessage"> |
|
<el-form label-width="100"> |
|
<el-row> |
|
<el-col :span="12"> |
|
<el-form-item label="报审项目:">{{ messageData.reportName }}</el-form-item> |
|
</el-col> |
|
<el-col :span="12"> |
|
<el-form-item label="环节:">{{ messageData.node }}</el-form-item> |
|
</el-col> |
|
</el-row> |
|
<el-row> |
|
<el-col :span="12"> |
|
<el-form-item label="发送人:">{{ messageData.crtUser }}</el-form-item> |
|
</el-col> |
|
<el-col :span="12"> |
|
<el-form-item label="发送时间:">{{ timeFormat(messageData.crtTime) }}</el-form-item> |
|
</el-col> |
|
</el-row> |
|
<el-row> |
|
<el-col :span="12"> |
|
<el-form-item label="操作:"> |
|
<el-tag type="success" v-if="messageData.node== '重新进窗'" >进窗</el-tag> |
|
<el-tag type="danger" v-else-if="messageData.node == '退窗'" >退窗</el-tag> |
|
<el-tag type="success" v-else-if="messageData.flowState === 'end'"> 通过</el-tag> |
|
<el-tag type="success" v-else-if="messageData.node == '审计预警项目反馈'">项目预警提交反馈</el-tag> |
|
<el-tag type="danger" v-else>驳回</el-tag> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
<el-row> |
|
<el-col :span="24"> |
|
<el-form-item label="信息">{{ messageData.message }}</el-form-item> |
|
</el-col> |
|
</el-row> |
|
</el-form> |
|
</el-dialog> |
|
</div> |
|
</template> |
|
|
|
<style scoped lang="scss"> |
|
.tab_font > .el-tabs_item { |
|
font-size: 20px !important; |
|
} |
|
</style>
|
|
|