|
@@ -1,13 +1,13 @@
|
|
|
<template>
|
|
|
<!-- 审批详情:查看、进行审批操作 -->
|
|
|
- <div class="approve-detail-wrap" v-if="isETAApprove">
|
|
|
+ <div class="approve-detail-wrap" v-if="isETAApprove || IsBIApprove">
|
|
|
<div class="approve-detail">
|
|
|
<div class="approve-info">
|
|
|
- <span>{{$t('AprrovalDetailPage.report_name_info')}}:{{reportInfo.title||''}}</span>
|
|
|
- <span>{{$t('AprrovalDetailPage.classification_info')}}:{{reportInfo.classify||''}}</span>
|
|
|
- <span style="min-width: 100px;">{{$t('AprrovalDetailPage.initiator_info')}}:{{reportInfo.approver||''}}</span>
|
|
|
+ <span>{{ mainType == 'report'?$t('AprrovalDetailPage.report_name_info'):$t('AprrovalPage.kanban_name')}}:{{reportInfo.title||''}}</span>
|
|
|
+ <span v-if="mainType == 'report'">{{$t('AprrovalDetailPage.classification_info')}}:{{reportInfo.classify||''}}</span>
|
|
|
+ <span style="min-width: 100px;">{{$t('AprrovalPage.submitter_lable')}}:{{reportInfo.approver||''}}</span>
|
|
|
</div>
|
|
|
- <div class="approve-content"
|
|
|
+ <div v-if="mainType == 'report'" class="approve-content"
|
|
|
v-loading="isLoading"
|
|
|
element-loading-text="研报加载中...">
|
|
|
<component v-if="reportInfo.reportId&&!isError"
|
|
@@ -21,6 +21,11 @@
|
|
|
></component>
|
|
|
<tableNoData v-if="isError" text="无法获取到报告内容,该报告可能已被删除!"></tableNoData>
|
|
|
</div>
|
|
|
+ <div v-else class="approve-content"
|
|
|
+ v-loading="isLoading"
|
|
|
+ element-loading-text="看板加载中...">
|
|
|
+ <BIBoardContent :value="boardDataList" renderHeight="calc(100vh - 250px)" />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class="approve-tool">
|
|
|
<div class="tool-btn">
|
|
@@ -31,7 +36,7 @@
|
|
|
v-if="formType==='approve'&&approveInfo.isCurrentApprover&&permissionBtn.isShowBtn('approvePermission','reportApprove_agree')">{{$t('AprrovalDetailPage.agree_btn')}}</el-button>
|
|
|
<el-button type="primary" @click="changeApprove('return')"
|
|
|
v-if="formType==='myself'&&approveInfo.state!==4&&permissionBtn.isShowBtn('approvePermission','reportApprove_repeal')">{{$t('AprrovalDetailPage.cancel_btn')}}</el-button>
|
|
|
- <el-button type="primary" plain @click="$router.replace(`/approveList?formType=${formType}`)">{{$t('AprrovalDetailPage.back_btn')}}</el-button>
|
|
|
+ <el-button type="primary" plain @click="$router.replace(`/approveList?formType=${formType}&mainType=${mainType}`)">{{$t('AprrovalDetailPage.back_btn')}}</el-button>
|
|
|
</div>
|
|
|
<div class="approve-timeline-wrap">
|
|
|
<p>{{$t('AprrovalDetailPage.approval_process')}}</p>
|
|
@@ -65,12 +70,13 @@ import RejectDialog from './components/rejectDialog.vue';
|
|
|
import {approveInterence} from '@/api/modules/approve.js';
|
|
|
import {departInterence} from '@/api/api.js'
|
|
|
import reportApproveConfig from "@/mixins/reportApproveConfig.js"
|
|
|
+import apiBiBoard from '@/api/modules/BIBoard.js'
|
|
|
+import BIBoardContent from '@/views/BI_manage/components/BoardContent.vue';
|
|
|
|
|
|
const ApproveType = ['','依次审批','会签','或签']
|
|
|
const ApproveState = ['','待审批','已同意','已驳回']
|
|
|
export default {
|
|
|
mixins:[reportApproveConfig],
|
|
|
- components: { RejectDialog },
|
|
|
data() {
|
|
|
return {
|
|
|
isError:false,
|
|
@@ -78,6 +84,7 @@ export default {
|
|
|
isDetailDialogShow:false,
|
|
|
TimeLineData:[],
|
|
|
formType:'detail',//进入审批详情的方式:approve(待处理)/detail(已处理)/myself(我发起的)
|
|
|
+ mainType:'report', //report(研报) bi(bi看板)
|
|
|
reportInfo:{ //报告相关信息
|
|
|
reportId:0,//研报or智能研报的报告id
|
|
|
title:'',
|
|
@@ -92,12 +99,13 @@ export default {
|
|
|
isCurrentApprover:false,//审批进行中的节点审批人是否是当前用户,控制通过&驳回按钮显示
|
|
|
},
|
|
|
waterMarkStr:'',//水印
|
|
|
+ boardDataList:[],
|
|
|
};
|
|
|
},
|
|
|
computed:{
|
|
|
UserId(){
|
|
|
return Number(localStorage.getItem("AdminId"));
|
|
|
- }
|
|
|
+ },
|
|
|
},
|
|
|
methods: {
|
|
|
getApproveDetail(){
|
|
@@ -124,12 +132,42 @@ export default {
|
|
|
this.approveInfo.stateText=['','pending','passed','reject','return'][Approve.State]
|
|
|
})
|
|
|
},
|
|
|
+ getBiApproveDetail(){
|
|
|
+ const {type,approveId} = this.$route.query
|
|
|
+ if(!approveId) return
|
|
|
+ approveInterence.getBiApproveDetail({
|
|
|
+ BiApproveId:+approveId
|
|
|
+ }).then(res=>{
|
|
|
+ if(res.Ret!==200) return
|
|
|
+ //格式化时间线数据
|
|
|
+ this.formatTimeLineData(res.Data)
|
|
|
+ const {Bi={},Approve={}} = res.Data||{}
|
|
|
+ this.reportInfo = {
|
|
|
+ BiId:Bi.BiId||0,
|
|
|
+ title:Bi.BiTitle||'',
|
|
|
+ classify:Bi.BiClassify||'',
|
|
|
+ approver:Approve.ApplyUserName||'',
|
|
|
+ }
|
|
|
+ this.formType = type||'detail'
|
|
|
+ this.approveInfo.state=Approve.State
|
|
|
+ this.approveInfo.stateText=['','pending','passed','reject','return'][Approve.State]
|
|
|
+ this.getBoardDetail();
|
|
|
+ })
|
|
|
+ },
|
|
|
+ async getBoardDetail() {
|
|
|
+ this.isLoading = true;
|
|
|
+ const res = await apiBiBoard.boardDetail({ DashboardId: +this.reportInfo.BiId })
|
|
|
+ this.isLoading = false;
|
|
|
+ if (res.Ret === 200) {
|
|
|
+ this.boardDataList = res.Data.List || []
|
|
|
+ }
|
|
|
+ },
|
|
|
//转换接口数据
|
|
|
formatTimeLineData({Approve={},ApproveFlowNodes=[]}){
|
|
|
//发起人节点
|
|
|
const startNode = {
|
|
|
nodeType:1,
|
|
|
- nodeText:`${this.$t('AprrovalDetailPage.initiator_info')}:`,
|
|
|
+ nodeText:`${this.$t('AprrovalPage.submitter_lable')}:`,
|
|
|
nodeStatus:'passed',
|
|
|
approveList:[{
|
|
|
approverName:Approve.ApplyUserName||'',
|
|
@@ -140,7 +178,7 @@ export default {
|
|
|
let currentIndex = 0
|
|
|
let Nodes = ApproveFlowNodes.map((i,index)=>{
|
|
|
//找到当前节点的index
|
|
|
- if(i.ReportApproveNodeId===Approve.CurrNodeId){
|
|
|
+ if((i.ReportApproveNodeId===Approve.CurrNodeId && this.mainType == 'report') || (i.BiApproveNodeId===Approve.CurrNodeId && this.mainType == 'bi')){
|
|
|
currentIndex = index
|
|
|
}
|
|
|
//审批节点只有一个人时不显示是什么审批流
|
|
@@ -148,7 +186,7 @@ export default {
|
|
|
const node = {
|
|
|
nodeType:2,
|
|
|
nodeText:`${this.$t('AprrovalDetailPage.approval_by',{num:i.Users.length}) }`+(i.Users.length>1?strApproveType:''),
|
|
|
- nodeStatus:i.ReportApproveNodeId===Approve.CurrNodeId?'process':'future',
|
|
|
+ nodeStatus:(i.ReportApproveNodeId===Approve.CurrNodeId && this.mainType == 'report') || (i.BiApproveNodeId===Approve.CurrNodeId && this.mainType == 'bi')?'process':'future',
|
|
|
approveType:ApproveType[i.ApproveType]
|
|
|
}
|
|
|
const approveList = i.Users.map(u=>{
|
|
@@ -161,7 +199,7 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
//检测当前节点的User与当前用户是否匹配 且审批需要是待审批状态
|
|
|
- if(i.ReportApproveNodeId===Approve.CurrNodeId&&Approve.State===1){
|
|
|
+ if((i.ReportApproveNodeId===Approve.CurrNodeId&&Approve.State===1&&this.mainType == 'report') || (i.BiApproveNodeId===Approve.CurrNodeId&&this.mainType=='bi'&&Approve.State===1)){
|
|
|
//当前节点的User中,有没有当前用户
|
|
|
const hasUser = i.Users.findIndex(u=>u.UserId===this.UserId)
|
|
|
if(hasUser!==-1){
|
|
@@ -229,7 +267,7 @@ export default {
|
|
|
//在最后加上撤销节点
|
|
|
Nodes.push({
|
|
|
nodeType:3,
|
|
|
- nodeText:`${this.$t('AprrovalDetailPage.initiator_info')}:`,
|
|
|
+ nodeText:`${this.$t('AprrovalPage.submitter_lable')}:`,
|
|
|
nodeStatus:'return',
|
|
|
approveList:[{
|
|
|
approverName:(Approve.ApplyUserName||'')+'(已撤销)',
|
|
@@ -266,20 +304,22 @@ export default {
|
|
|
return
|
|
|
}
|
|
|
let res = null
|
|
|
- if(type==='return'){
|
|
|
- res = await approveInterence.cancelApprove({
|
|
|
- ReportApproveId:Number(approveId)
|
|
|
- })
|
|
|
+ if(type==='return'){
|
|
|
+ res = this.mainType == 'report' ? await approveInterence.cancelApprove({ReportApproveId:Number(approveId)})
|
|
|
+ : await approveInterence.cancelBiApprove({BiApproveId:Number(approveId)});
|
|
|
}
|
|
|
- if(type==='pass'){
|
|
|
- res = await approveInterence.passApprove({
|
|
|
- ReportApproveId:Number(approveId),
|
|
|
- ReportUrl:this.generatePdfLinks(this.reportInfo.reportCode,this.reportInfo.type)
|
|
|
- })
|
|
|
+ if(type==='pass'){
|
|
|
+ res = this.mainType == 'report' ? await approveInterence.passApprove({
|
|
|
+ ReportApproveId:Number(approveId),
|
|
|
+ ReportUrl:this.generatePdfLinks(this.reportInfo.reportCode,this.reportInfo.type)
|
|
|
+ })
|
|
|
+ : await approveInterence.passBiApprove({
|
|
|
+ BiApproveId:Number(approveId),
|
|
|
+ })
|
|
|
}
|
|
|
if(res.Ret!==200) return
|
|
|
this.$message.success( type==='return'?this.$t('AprrovalPage.revoke_success') :this.$t('AprrovalDetailPage.passed_success'));
|
|
|
- type!=='reject'&&(this.$router.replace("/approveList"))
|
|
|
+ type!=='reject'&&(this.$router.replace(`/approveList?mainType=${this.mainType}`))
|
|
|
},
|
|
|
generatePdfLinks(code,type){
|
|
|
if(type == 1){
|
|
@@ -295,14 +335,20 @@ export default {
|
|
|
},
|
|
|
rejectApprove(reason){
|
|
|
this.isDetailDialogShow = false
|
|
|
- approveInterence.rejectApprove({
|
|
|
- ReportApproveId:Number(this.$route.query.approveId),
|
|
|
- ApproveRemark:reason||''
|
|
|
- }).then(res=>{
|
|
|
+ let req = this.mainType == 'report' ? approveInterence.rejectApprove({
|
|
|
+ ReportApproveId:Number(this.$route.query.approveId),
|
|
|
+ ApproveRemark:reason||''
|
|
|
+ })
|
|
|
+ : approveInterence.rejectBiApprove({
|
|
|
+ BiApproveId:Number(this.$route.query.approveId),
|
|
|
+ ApproveRemark:reason||''
|
|
|
+ });
|
|
|
+ req.then(res=>{
|
|
|
if(res.Ret!==200) return
|
|
|
this.$message.success(this.$t('AprrovalDetailPage.rejected_success') )
|
|
|
- this.$router.replace("/approveList")
|
|
|
+ this.$router.replace(`/approveList?mainType=${this.mainType}`)
|
|
|
})
|
|
|
+
|
|
|
},
|
|
|
getSystemUserInfo(){
|
|
|
departInterence.systemUserInfo().then(res=>{
|
|
@@ -320,10 +366,14 @@ export default {
|
|
|
},
|
|
|
},
|
|
|
mounted(){
|
|
|
- this.getApproveDetail()
|
|
|
- this.getSystemUserInfo()
|
|
|
+ this.mainType = this.$route.query.mainType || 'report';
|
|
|
+ if(this.mainType == 'report') {
|
|
|
+ this.getApproveDetail();
|
|
|
+ this.getSystemUserInfo();
|
|
|
+ }
|
|
|
+ if(this.mainType == 'bi') this.getBiApproveDetail();
|
|
|
},
|
|
|
- components: { TimeLine, ReportDetail, Reportdtl, RejectDialog }
|
|
|
+ components: { TimeLine, ReportDetail, Reportdtl, RejectDialog, BIBoardContent }
|
|
|
};
|
|
|
</script>
|
|
|
|