Browse Source

中文研报-审批接口对接

cxmo 1 year ago
parent
commit
6e572112fb

+ 61 - 6
src/api/modules/approve.js

@@ -14,7 +14,7 @@ export const approveInterence = {
      * @returns 
      */
     getApproveFlowList(params){
-        return http.get("/report_approve/list",params)
+        return http.get("/report_approve/flow/list",params)
     },
     /**
      * 获取报告分类树
@@ -32,7 +32,7 @@ export const approveInterence = {
      * @returns 
      */
     deleteApproveFlow(params){
-        return http.post("/report_approve/remove",params)
+        return http.post("/report_approve/flow/remove",params)
     },
     /**
      * 获取审批流详情
@@ -41,7 +41,7 @@ export const approveInterence = {
      * @returns 
      */
     getApproveFlowDetail(params){
-        return http.get("/report_approve/detail",params)
+        return http.get("/report_approve/flow/detail",params)
     },
     /**
      * 新增审批流
@@ -60,7 +60,7 @@ export const approveInterence = {
      * @returns 
      */
     addNewApproveFlow(params){
-        return http.post("/report_approve/add",params)
+        return http.post("/report_approve/flow/add",params)
     },
     /**
      * 编辑审批流
@@ -70,7 +70,62 @@ export const approveInterence = {
      * @returns 
      */
     editApproveFlow(params){
-        return http.post("/report_approve/edit",params)
-    }
+        return http.post("/report_approve/flow/edit",params)
+    },
+
+
+    /**
+     * 获取审批列表
+     * @param {Object} params 
+     * @param {Number} params.PageSize
+     * @param {Number} params.CurrentIndex
+     * @param {Number} params.ReportType 报告类型:1-中文研报;2-英文研报;3-智能研报
+     * @param {Number} params.ClassifyFirstId 报告的倒数第二级id
+     * @param {Number} params.ClassifySecondId 报告的倒数第一级id
+     * @param {String} params.Keyword
+     * @param {Number} params.SortRule 排序方式: 1-正序; 2-倒序(默认)
+     * @param {Number} params.SortField 排序字段:1-提交时间;2-处理时间;3-审批时间
+     * @param {Number} params.ListType 列表类型:1-待处理;2-已处理;3-我发起的
+     * @param {Number} params.ApproveState 审批状态:1-待审批;2-已审批;3-已驳回;4-已撤回
+     * @param {Number} params.TimeType 时间类型:1-提交时间;2-处理时间;3-审批时间
+     * @param {String} params.StartTime 开始时间
+     * @param {String} params.EndTime 结束时间
+     * @returns 
+     */
+    getApproveList(params){
+        return http.get("/report_approve/list",params)
+    },
+    /**
+     * 获取审批详情
+     * @param {Object} params
+     * @param {Number} params.ReportApproveId
+     * @returns 
+     */
+    getApproveDetail(params){
+        return http.post("/report_approve/detail",params)
+    },
+
+
+
+
+    /*------------研报审批接口----------- */
+    /**
+     * 中文研报提交审批
+     * @param {Object} params 
+     * @param {Number} params.ReportId
+     * @returns 
+     */
+    reportCnSubmit(params){
+        return http.post("/report/approve/submit",params)
+    },
+    /**
+     * 中文研报撤销审批
+     * @param {Object} params 
+     * @param {Number} params.ReportId
+     * @returns 
+     */
+    reportCnCancel(params){
+        return http.post("/report/approve/cancel",params)
+    },
 
 }

+ 43 - 0
src/mixins/reportApproveConfig.js

@@ -0,0 +1,43 @@
+/*
+    研报及审批配置,涉及到:
+    智能研报
+    中文研报(除晨周报)
+    英文研报
+    审批流配置
+    审批管理
+ */
+import {etaBaseConfigInterence} from '@/api/modules/etaBaseConfigApi.js';
+export default{
+    data(){
+        return{
+            ReportApproveType:'',
+            IsReportApprove:false,
+            pageLoading:false,
+        }
+    },
+    computed:{
+        //是否开启审批流
+        isApprove(){
+            return this.IsReportApprove
+        },
+        //是否开启了ETA审批流
+        isETAApprove(){
+            return this.IsReportApprove&&this.ReportApproveType==='eta'
+        }
+    },
+    methods:{
+        async getBaseConfig(){
+            //从基本配置中获取是否开启审批流的数据
+            this.pageLoading = true
+            const res = await etaBaseConfigInterence.getBaseConfig()
+            this.pageLoading = false
+            if(res.Ret!==200) return
+            const {IsReportApprove='',ReportApproveType=''} = res.Data
+            this.IsReportApprove = IsReportApprove==='true'?true:false,
+            this.ReportApproveType = ReportApproveType
+        },
+    },
+    mounted(){
+        this.getBaseConfig()
+    }
+}

+ 43 - 1
src/views/approve_manage/approveList.vue

@@ -102,6 +102,7 @@
 <script>
 import RejectDialog from './components/rejectDialog.vue';
 import approveMixins from './mixins/approveMixins';
+import {approveInterence} from '@/api/modules/approve.js';
 import {
         approve_pending_columns,
         approve_processed_columns,
@@ -112,6 +113,11 @@ const columnsMap = {
     'processed':approve_processed_columns,
     'originate':approve_originate_columns
 }
+const tabMap = {
+    'pending':1,
+    'processed':2,
+    'originate':3
+}
 export default {
     mixins:[approveMixins],
     data() {
@@ -123,7 +129,10 @@ export default {
             statusType:'',
             keyword:'',
             classify:'',
-
+            /* 排序项 */
+            sortRule:0,
+            sortField:0,
+            
             tableData: [{ name: 1 }],
             tableColumns: approve_pending_columns,
             page: 1,
@@ -135,8 +144,39 @@ export default {
         };
     },
     methods: {
+        getTableData(){
+            const baseParams = {
+                ListType:tabMap[this.activeTab]||0,
+                PageSize:this.pageSize,
+                CurrentIndex:this.page,
+                Keyword:this.keyword,
+            }
+            const selectParams = {
+                //关联报告
+                ReportType:this.classify[0]||0,
+                ClassifyFirstId:this.classify[this.classify.length-2]||0,
+                ClassifySecondId:this.classify[this.classify.length-1]||0,
+                //时间
+                TimeType:0,
+                StartTime:'',
+                EndTime:'',
+                //排序
+                SortRule:0,
+                SortField:0,
+                //处理状态
+                ApproveState:0,
+            }
+            approveInterence.getApproveList({
+                ...baseParams,
+                ...selectParams
+            }).then(res=>{
+                if(res.Ret!==200) return 
+                console.log('resssss',res)
+            })
+        },
         handleCurrentChange(page) {
             this.page = page;
+            this.getTableData()
         },
         sortChange({ prop, order }) {
         },
@@ -144,6 +184,7 @@ export default {
             this.timeType = 1
             this.timeDate=''
             this.tableColumns = columnsMap[this.activeTab];
+            this.handleCurrentChange(1)
         },
         handleShowDetail(data) {
             this.currentData = data;
@@ -162,6 +203,7 @@ export default {
     },
     mounted(){
         this.getClassifyTree()
+        this.getTableData()
     },
     components: { RejectDialog }
 };

+ 16 - 16
src/views/approve_manage/config/tableConfig.js

@@ -1,20 +1,20 @@
 //审批管理-待处理
 export const approve_pending_columns = [
     {
-        key:'title',
+        key:'ReportTitle',
         label:'报告标题'
     },{
-        key:'classify',
+        key:'ReportClassify',
         label:'关联报告'
     },{
-        key:'approver',
+        key:'ApplyUserName',
         label:'提交人'
     },{
-        key:'time',
+        key:'CreateTime',
         label:'提交时间',
         sortable:'custom'
     },{
-        key:'status',
+        key:'State',
         label:'审批状态',
     }
 ]
@@ -27,24 +27,24 @@ export const appreve_pending_status = [
 //审批管理-已处理
 export const approve_processed_columns=[
     {
-        key:'title',
+        key:'ReportTitle',
         label:'报告标题'
     },{
-        key:'classify',
+        key:'ReportClassify',
         label:'关联报告'
     },{
-        key:'approver',
+        key:'ApplyUserName',
         label:'提交人'
     },{
-        key:'time',
+        key:'CreateTime',
         label:'提交时间',
         sortable:'custom'
     },{
-        key:'time2',
+        key:'HandleTime',
         label:'处理时间',
         sortable:'custom'
     },{
-        key:'result',
+        key:'State',
         label:'处理结果',
     }
 ]
@@ -60,21 +60,21 @@ export const approve_processed_status = [
 //审批管理-我发起的
 export const approve_originate_columns=[
     {
-        key:'title',
+        key:'ReportType',
         label:'报告标题'
     },{
-        key:'classify',
+        key:'ReportClassify',
         label:'关联报告'
     },{
-        key:'time',
+        key:'CreateTime',
         label:'提交时间',
         sortable:'custom'
     },{
-        key:'time2',
+        key:'ApproveTime',
         label:'审批时间',
         sortable:'custom'
     },{
-        key:'result',
+        key:'State',
         label:'审批状态',
     }
 ]

+ 8 - 5
src/views/report_manage/addreportNew.vue

@@ -17,7 +17,8 @@
 			></froala>
 		</div>
 		<div id="rightitems" v-show="isRightFormShow">
-			<div
+			<!-- 通过接口判断是否走审批流,按钮显示的不一致,干脆判断完成再显示所有按钮-->
+			<div v-if="!pageLoading"
 				style="
 					text-align: right;
 					padding: 0px 0 15px 0;
@@ -57,7 +58,7 @@
 						@click.native="clickreportadd('dsfb')"
 						>定时发布</el-button
 					>
-					<el-button
+					<el-button v-permission="permissionBtn.reportManageBtn.reportManage_publish"
 						type="primary"
 						size="medium"
 						@click.native="clickreportadd('fb')"
@@ -66,7 +67,8 @@
 					>
 				</template>
 				<template v-if="isApprove">
-					<el-button type="primary" size="medium" @click="clickreportadd('fb')">提交</el-button>
+					<el-button v-permission="permissionBtn.reportManageBtn.reportManage_publish"
+						type="primary" size="medium" @click="clickreportadd('submit')">提交</el-button>
 				</template>
 			</div>
 			<div
@@ -367,10 +369,11 @@ import VueFroala from 'vue-froala-wysiwyg';
 import urlSlug from 'url-slug';
 import mixinMsg from './mixins/messagePush'
 import reportMixin from './mixins/reportMixin';
+import reportApproveConfig from "@/mixins/reportApproveConfig.js"
 import importMyChart from './components/importMyChart.vue'
 import importSemantics from './components/importSemantics.vue';
 export default {
-	mixins:[mixinMsg,reportMixin],
+	mixins:[mixinMsg,reportMixin,reportApproveConfig],
 	data() {
 		var that = this;
 		return {
@@ -611,7 +614,7 @@ export default {
 				window.open(href, '_blank');
 				return false;
 			}
-			if (tp == 'fb') {
+			if (tp == 'fb'||tb == 'submit') {
 				this.isPublishloading = true;
 			}
 			const isPost = this.permissionBtn.checkPermissionBtn(this.permissionBtn.reportManageBtn.reportManage_sendMsg)&&(!this.isApprove)

+ 45 - 0
src/views/report_manage/components/submitReportDialog.vue

@@ -0,0 +1,45 @@
+<template>
+    <!-- 研报提交弹窗 -->
+    <el-dialog title="提示" :visible.sync="showSubmit" :modal-append-to-body="false" :close-on-click-modal="false"
+        :center="true" v-dialogDrag custom-class="dialogclass" width="510px" @close="$emit('close')">
+        <div>
+            <div style="height: 100px; padding-top: 40px">
+                <i class="el-icon-warning" style="font-size: 24px; color: #e6a23c; vertical-align: middle"></i>
+                是否提交报告,且 审批通过后,是否推送模板消息?
+            </div>
+            <div style="margin-bottom: 20px; text-align: center">
+                <el-button type="primary" plain style="width: 100px" @click="$emit('close')">取消</el-button>
+                <el-button type="primary" style="width: 100px; margin: 0 20px" @click="$emit('submit')">仅提交</el-button>
+                <el-button type="primary" style="width: 100px" :disabled="!canPushMsg" @click="$emit('both')">提交&推送
+                </el-button>
+            </div>
+        </div>
+    </el-dialog>
+</template>
+
+<script>
+    export default {
+        props:{
+            showSubmit:{
+                type:Boolean,
+                default:false
+            },
+            canPushMsg:{
+                type:Boolean,
+                default:false
+            }
+        },
+        data() {
+            return {
+
+            };
+        },
+        methods: {
+
+        },
+    };
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 10 - 5
src/views/report_manage/editreportNew.vue

@@ -17,7 +17,8 @@
 			></froala>
 		</div>
 		<div id="rightitems" v-show="isRightFormShow">
-			<div
+			<!-- 通过接口判断是否走审批流,按钮显示的不一致,干脆判断完成再显示所有按钮-->
+			<div v-if="!pageLoading"
 				style="
 					text-align: right;
 					padding: 0px 0 15px 0;
@@ -57,7 +58,7 @@
 						@click.native="clickreportadd('dsfb')"
 						>定时发布</el-button
 					>
-					<el-button
+					<el-button v-permission="permissionBtn.reportManageBtn.reportManage_publish"
 						type="primary"
 						size="medium"
 						@click.native="clickreportadd('fb')"
@@ -66,7 +67,8 @@
 					>
 				</template>
 				<template v-if="isApprove">
-					<el-button type="primary" size="medium" @click="clickreportadd('fb')">提交</el-button>
+					<el-button v-permission="permissionBtn.reportManageBtn.reportManage_publish"
+						type="primary" size="medium" @click="clickreportadd('submit')">提交</el-button>
 				</template>
 			</div>
 			<div
@@ -363,10 +365,11 @@ import urlSlug from 'url-slug';
 import http from '@/api/http.js';
 import mixinMsg from './mixins/messagePush'
 import reportMixin from './mixins/reportMixin';
+import reportApproveConfig from "@/mixins/reportApproveConfig.js"
 import importMyChart from './components/importMyChart.vue'
 import importSemantics from './components/importSemantics.vue';
 export default {
-	mixins:[mixinMsg,reportMixin],
+	mixins:[mixinMsg,reportMixin,reportApproveConfig],
 	data() {
 		var that = this;
 		return {
@@ -638,9 +641,11 @@ export default {
 				window.open(href, '_blank');
 				return false;
 			}
+			if(tp=='fb'||tp=='submit'){
+				this.isPublishloading = true;
+			}
 			const isPost = this.permissionBtn.checkPermissionBtn(this.permissionBtn.reportManageBtn.reportManage_sendMsg)&&(!this.isApprove)
 			if (tp == 'fb') {
-				this.isPublishloading = true;
 				// 判断是否要推送客群
 				let hasTel=0
 				if(this.aeForm.classifynameArr.length == 2){

+ 46 - 10
src/views/report_manage/mixins/messagePush.js

@@ -1,22 +1,14 @@
 import { reportadd, reportedit, messagePushPost,dataBaseInterface,reportMessageSend } from "@/api/api.js";
+import {approveInterence} from '@/api/modules/approve.js';
 import { getUrlParams } from '@/utils/common'
 export default {
   data() {
     return {
       isMessagePost: false,
       //isApprove:false,//是否走审批流
-      isRightFormShow:true
+      isRightFormShow:true,
     };
   },
-  computed:{
-    //是否开启审批流,若开启,发布相关按钮,筛选项改变
-    isApprove(){
-        const type = this.$setting.dynamicOutLinks.ApprovalFlow ||
-                     this.$store.state.dynamicOutLinks.ApprovalFlow ||
-                     JSON.parse(localStorage.getItem('dynamicOutLinks')).ApprovalFlow||''
-        return ['1','3'].includes(type)
-    }
-  },
   methods: {
     reporteditMsg(params2, tp) {
       reportedit(params2).then(async (res) => {
@@ -45,6 +37,8 @@ export default {
           } else if(tp=='dsfb'){
             this.showDSFB=true
             // this.$router.push({path:'/reportlist'});
+          }else if(tp=='submit'){
+            this.handleSubmitReport(res.Data.ReportId)
           }
         }
       });
@@ -77,6 +71,8 @@ export default {
           } else if(tp=='dsfb'){
             this.showDSFB=true
             // this.$router.push({path:'/reportlist'});
+          }else if(to=='submit'){
+            this.handleSubmitReport(res.Data.ReportId)
           }
           //已经添加过报告
           this.isAddEnter = true;
@@ -129,5 +125,45 @@ export default {
       }
 
     },1000),
+    //展示提交审批弹窗
+    handleSubmitReport(id){
+        this.submitId = id
+        const canPost = this.permissionBtn.checkPermissionBtn(this.permissionBtn.reportManageBtn.reportManage_sendMsg)
+        if(canPost){
+            this.$confirm("报告通过审批后,是否推送消息?","提示",{
+                confirmButtonText: '推送',
+                cancelButtonText: '不推送',
+                type: 'warning',
+                distinguishCancelAndClose:true,
+                beforeClose:(action, instance,done)=>{
+                    if(action=='close') {
+                        //右上角
+                        this.isPublishloading = false;
+                    } else if(action=='cancel') {
+                        this.submitReport("submit")
+                    }else {
+                        this.submitReport("both")
+                    }
+                    done()
+                }
+            })
+        }else{
+            this.submitReport("submit")
+        }
+        
+    },
+    //提交审批
+    submitReport(type){
+        if(type==='submit'){
+            approveInterence.reportCnSubmit({
+                ReportId:Number(this.submitId)
+            }).then(res=>{
+                if(res.Ret!==200) return
+                this.$message.success("提交成功")
+                this.isPublishloading = false;
+                this.$router.push({ path: '/reportlist' });
+            })
+        }
+    }
   },
 };

+ 118 - 121
src/views/report_manage/reportlist.vue

@@ -82,20 +82,7 @@
                             style="width:100%;"
                         ></el-cascader>
                     </div>
-                    <div class="select-item" v-if="!isApprove">
-                        <el-select 
-                            v-model.number="searchform.publishState"
-                            placeholder="发布筛选"
-                            size="medium"
-                            clearable
-                            style="width:100%;"
-                            @change="search"
-                        >
-                            <el-option label="已发布" :value="2"></el-option>
-                            <el-option label="未发布" :value="1"></el-option>
-                        </el-select>
-                    </div>
-                    <div class="select-item" v-if="isApprove">
+                    <div class="select-item">
                         <el-select
                             v-model.number="searchform.publishState"
                             placeholder="状态筛选"
@@ -104,10 +91,12 @@
                             style="width:100%;"
                             @change="search"
                         >
-                            <el-option label="待提交" :value="1"></el-option>
-                            <el-option label="待审批" :value="2"></el-option>
-                            <el-option label="已审批" :value="4"></el-option>
-                            <el-option label="已驳回" :value="3"></el-option>
+                            <el-option label="未发布" :value="1"></el-option>
+                            <el-option label="已发布" :value="2"></el-option>
+                            <el-option label="待提交" :value="3"></el-option>
+                            <el-option label="待审批" :value="4"></el-option>
+                            <el-option label="已驳回" :value="5"></el-option>
+                            <el-option label="已通过" :value="6"></el-option>
                         </el-select>
                     </div>
                     <div class="select-item">
@@ -237,10 +226,12 @@
           </el-table-column>
           <el-table-column label="状态" align="center" v-if="isApprove">
             <template slot-scope="scope">
-                <span v-if="scope.row.State == '1'">待提交</span>
-                <span v-if="scope.row.State == '2'">待审批</span>
-                <span v-if="scope.row.State == '4'">已审批</span>
-                <span v-if="scope.row.State == '3'">已驳回</span>
+                <span v-if="scope.row.State == '1'">未发布</span>
+                <span v-if="scope.row.State == '2'">已发布</span>
+                <span v-if="scope.row.State == '3'">待提交</span>
+                <span v-if="scope.row.State == '4'">待审批</span>
+                <span v-if="scope.row.State == '5'">已驳回</span>
+                <span v-if="scope.row.State == '6'">已通过</span>
             </template>
           </el-table-column>
 
@@ -261,14 +252,14 @@
           </el-table-column>
           <el-table-column
             v-if="isApprove"
-            prop="PublishTime"
+            prop="ApproveTime"
             label="审批时间"
             min-width="124"
             align="center"
             :formatter="formatterColumn"
           >
             <template slot-scope="scope">
-                <span>{{scope.row.PrePublishTime?scope.row.PrePublishTime:scope.row.PublishTime|formatTime}}</span>
+                <span>{{scope.row.ApproveTime|formatTime}}</span>
             </template>
           </el-table-column>
 
@@ -314,96 +305,62 @@
           <el-table-column label="操作" align="center" min-width="130" fixed="right">
             <template slot-scope="scope">
               <div class="opt-btns">
-                <!--不走审批流的按钮-->
-                <template v-if="!isApprove">
-                    <template v-if="scope.row.State == 1">
-                        <span v-permission="permissionBtn.reportManageBtn.reportManage_publish" class="editsty"
-                            @click="publishreport(scope.row)" v-if="scope.row.CanEdit">发布</span>
-                        <span v-permission="permissionBtn.reportManageBtn.reportManage_reportEdit" class="editsty"
-                            @click="editreport(scope.row, 'edit')" v-if="scope.row.CanEdit">编辑</span>
-                        <span v-permission="permissionBtn.reportManageBtn.reportManage_reportEdit" class="editsty"
-                            @click="editreport(scope.row, 'editing')" v-else>{{ scope.row.Editor || "" }}编辑中...</span>
-                        <span v-permission="permissionBtn.reportManageBtn.reportManage_reportDel" class="deletesty"
-                            @click="deleteitem(scope.row)" v-if="scope.row.CanEdit">删除</span>
-                    </template>
-                    <template v-if="scope.row.State == 2">
-                        <span
-                            v-if="permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_cancelPublish)"
-                            @click="canclepublish(scope.row)" style="color: red; cursor: pointer">取消发布</span>
-                        <span
-                            v-if="scope.row.MsgIsSend == 0 && permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_sendMsg)"
-                            style="color: #4099ef; cursor: pointer" @click="messageSend(scope.row)">推送消息</span>
-                        <span
-                            v-else-if="scope.row.MsgIsSend != 0&&permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_sendMsg)"
-                            style="color: red">已推送消息</span>
-                    </template>
-                    <span style="color: #46c371; cursor: pointer"
-                        v-if="!['晨报', '周报'].includes(scope.row.ClassifyNameFirst)&&permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_audioUpload)"
-                        @click="openupload(scope.row.Id)">音频上传</span>
-                    <a v-permission="permissionBtn.reportManageBtn.reportManage_audioDownload"
-                        :href="hostapi + '?ReportId=' + parseInt(scope.row.Id)" v-if="
-                        scope.row.VideoUrl &&
-                        !['晨报', '周报'].includes(scope.row.ClassifyNameFirst)
-                    " :download="scope.row.VideoName" style="cursor: pointer; color: #4099ef">音频下载</a>
-                    <span v-permission="permissionBtn.reportManageBtn.reportManage_audioDownload"
-                        style="cursor: pointer; color: #4099ef" v-if="
-                        ['晨报', '周报'].includes(scope.row.ClassifyNameFirst) &&
-                        scope.row.ChapterVideoList.length > 0
-                    " @click="handleShowDownloadAudio(scope.row)">音频下载</span>
+                <!-- 操作:未发布——发布、编辑、删除
+                    已发布——取消发布、推送消息/已推送消息
+                    待提交——提交、编辑、删除
+                    待审批——撤销
+                    已通过——撤销、推送消息/已推送消息
+                    已驳回——撤销 
+                -->
+                <!-- 未发布,待提交 -->
+                <template v-if="[1,3].includes(scope.row.State)">
+                    <span class="editsty" @click="publishreport(scope.row)"
+                        v-if="scope.row.CanEdit&&scope.row.State===1
+                            &&permissionBtn.isShowBtn('reportManageBtn','reportManage_publish')"
+                    >发布</span>
+                    <span class="editsty" @click="handleSubmitReport(scope.row)"
+                        v-if="scope.row.CanEdit&&scope.row.State===3
+                            &&permissionBtn.isShowBtn('reportManageBtn','reportManage_publish')"
+                    >提交</span>
+                    <span v-permission="permissionBtn.reportManageBtn.reportManage_reportEdit" class="editsty"
+                        @click="editreport(scope.row, 'edit')" v-if="scope.row.CanEdit">编辑</span>
+                    <span v-permission="permissionBtn.reportManageBtn.reportManage_reportEdit" class="editsty"
+                        @click="editreport(scope.row, 'editing')" v-else>{{ scope.row.Editor || "" }}编辑中...</span>
+                    <span v-permission="permissionBtn.reportManageBtn.reportManage_reportDel" class="deletesty"
+                        @click="deleteitem(scope.row)" v-if="scope.row.CanEdit">删除</span>
                 </template>
-                <!--走审批流的按钮,权限与原先按钮对应-->
-                <template v-if="isApprove">
-                    <!--待提交-->
-                    <template v-if="scope.row.State===1">
-                        <span v-permission="permissionBtn.reportManageBtn.reportManage_publish"
-                            @click="publishreport(scope.row)"
-                            class="editsty">提交</span>
-                        <span v-permission="permissionBtn.reportManageBtn.reportManage_reportEdit" class="editsty"
-                            @click="editreport(scope.row, 'edit')" v-if="scope.row.CanEdit">编辑</span>
-                        <span v-permission="permissionBtn.reportManageBtn.reportManage_reportEdit" class="editsty"
-                            @click="editreport(scope.row, 'editing')" v-else>{{ scope.row.Editor || "" }}编辑中...</span>
-                        <span v-permission="permissionBtn.reportManageBtn.reportManage_reportDel" class="deletesty"
-                            @click="deleteitem(scope.row)" v-if="scope.row.CanEdit">删除</span>
-                    </template>
-                    <!--已提交(待审批,已审批)-->
-                    <template v-if="[2,4].includes(scope.row.State)">
-                        <span
-                            v-if="permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_cancelPublish)"
-                            @click="canclepublish(scope.row)"
-                            class="editsty">撤销</span>
-                        <template v-if="scope.row.State!==2">
-                            <span
-                                v-if="scope.row.MsgIsSend == 0 && permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_sendMsg)"
-                                style="color: #4099ef; cursor: pointer" @click="messageSend(scope.row)">推送消息</span>
-                            <span
-                                v-else-if="scope.row.MsgIsSend != 0&&permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_sendMsg)"
-                                style="color: red">已推送消息</span>
-                        </template>
-                    </template>
-
-                    <!--已驳回则只显示撤销按钮-->
-                    <template v-if="scope.row.State===3">
-                        <span v-permission="permissionBtn.reportManageBtn.reportManage_publish"
-                            @click="canclepublish(scope.row)"
-                            class="editsty">撤销</span>
-                    </template>
-                    <!--音频上传/下载 按原先逻辑-->
-                    <template v-if="scope.row.State!==3">
-                        <span style="color: #46c371; cursor: pointer"
-                            v-if="!['晨报', '周报'].includes(scope.row.ClassifyNameFirst)&&permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_audioUpload)"
-                            @click="openupload(scope.row.Id)">音频上传</span>
-                        <a v-permission="permissionBtn.reportManageBtn.reportManage_audioDownload"
-                            :href="hostapi + '?ReportId=' + parseInt(scope.row.Id)" v-if="
-                            scope.row.VideoUrl &&
-                            !['晨报', '周报'].includes(scope.row.ClassifyNameFirst)
-                        " :download="scope.row.VideoName" style="cursor: pointer; color: #4099ef">音频下载</a>
-                        <span v-permission="permissionBtn.reportManageBtn.reportManage_audioDownload"
-                            style="cursor: pointer; color: #4099ef" v-if="
-                            ['晨报', '周报'].includes(scope.row.ClassifyNameFirst) &&
-                            scope.row.ChapterVideoList.length > 0
-                        " @click="handleShowDownloadAudio(scope.row)">音频下载</span>
-                    </template>
+                <!-- 已发布,已通过 -->
+                <template v-if="[2,6].includes(scope.row.State)">
+                    <span v-if="scope.row.State===2&&permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_cancelPublish)"
+                        @click="canclepublish(scope.row)" style="color: red; cursor: pointer">取消发布</span>
+                    <span v-if="scope.row.State===4&&permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_cancelPublish)"
+                        @click="cancelReport(scope.row)" style="color: red; cursor: pointer">撤销</span>
+                    <span
+                        v-if="scope.row.MsgIsSend == 0 && permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_sendMsg)"
+                        style="color: #4099ef; cursor: pointer" @click="messageSend(scope.row)">推送消息</span>
+                    <span
+                        v-else-if="scope.row.MsgIsSend != 0&&permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_sendMsg)"
+                        style="color: red">已推送消息</span>
+                </template>
+                <!-- 待审批,已驳回 -->
+                <template v-if="[4,5].includes(scope.row.State)">
+                    <span v-if="permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_cancelPublish)"
+                        @click="cancelReport(scope.row)" style="color: red; cursor: pointer">撤销</span>
                 </template>
+                <!-- 音频上传和下载,跟State无关 -->
+                <span style="color: #46c371; cursor: pointer"
+                    v-if="!['晨报', '周报'].includes(scope.row.ClassifyNameFirst)&&permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_audioUpload)"
+                    @click="openupload(scope.row.Id)">音频上传</span>
+                <a v-permission="permissionBtn.reportManageBtn.reportManage_audioDownload"
+                    :href="hostapi + '?ReportId=' + parseInt(scope.row.Id)" v-if="
+                    scope.row.VideoUrl &&
+                    !['晨报', '周报'].includes(scope.row.ClassifyNameFirst)
+                " :download="scope.row.VideoName" style="cursor: pointer; color: #4099ef">音频下载</a>
+                <span v-permission="permissionBtn.reportManageBtn.reportManage_audioDownload"
+                    style="cursor: pointer; color: #4099ef" v-if="
+                    ['晨报', '周报'].includes(scope.row.ClassifyNameFirst) &&
+                    scope.row.ChapterVideoList.length > 0
+                " @click="handleShowDownloadAudio(scope.row)">音频下载</span>
               </div>
             </template>
           </el-table-column>
@@ -621,6 +578,13 @@
         </div>
       </div>
     </el-dialog>
+    <SubmitReportDialog 
+        :showSubmit="showSubmit"
+        :canPushMsg="canPushMsgInApprove"
+        @close="showSubmit=false"
+        @submit="submitReport('submit')"
+        @both="submitReport('both')"
+    />
   </div>
 </template>
 
@@ -638,7 +602,12 @@ import {
   reportMessageSend,
   weekReportValidAudio,
 } from "api/api.js";
+import {approveInterence} from '@/api/modules/approve.js';
+import reportApproveConfig from "@/mixins/reportApproveConfig.js"
+import SubmitReportDialog from "./components/submitReportDialog.vue";
 export default {
+  mixins:[reportApproveConfig],
+  components:{SubmitReportDialog},
   computed: {
     exportUrlDl() {
       let url = this.exportUrl;
@@ -672,13 +641,6 @@ export default {
     hasUV(){
       return this.permissionBtn.checkPermissionBtn(this.permissionBtn.reportManageBtn.reportManage_reportList_uv)
     },
-    //是否开启审批流,若开启,发布相关按钮,筛选项改变
-    isApprove(){
-        const type = this.$setting.dynamicOutLinks.ApprovalFlow ||
-                     this.$store.state.dynamicOutLinks.ApprovalFlow ||
-                     JSON.parse(localStorage.getItem('dynamicOutLinks')).ApprovalFlow||''
-        return ['1','3'].includes(type)
-    }
   },
   data() {
     return {
@@ -725,9 +687,11 @@ export default {
       showPublish: false,
       isDSFB:false,//是否为定时发布
       tableKey:0,
-      selectNum:1
+      selectNum:1,
 
-      //isApprove:false,//是否开启审批流,若开启,发布相关按钮,筛选项改变
+      showSubmit:false, //提交询问弹窗是否展示
+      submitId:0,//当前选择的报告id
+      canPushMsgInApprove:false,//是否能够推送
     };
   },
   mounted() {
@@ -1065,6 +1029,39 @@ export default {
       this.batches = [];
       this.showPublish = false;
     },
+    //提交报告
+    handleSubmitReport(item){
+        this.submitId = item.Id
+        this.showSubmit=true
+        this.canPushMsgInApprove = item.MsgIsSend===0
+    },
+    submitReport(type){
+        //both:提交&推送
+        if(type==='submit'){
+            approveInterence.reportCnSubmit({
+                ReportId:Number(this.submitId)
+            }).then(res=>{
+                if(res.Ret!==200) return
+                this.$message.success("提交成功")
+                this.getlist()
+            })
+        }
+    },
+    //撤销提交报告
+    cancelReport(item){
+        this.$confirm("你确定要撤销申请吗?","提示",{
+            confirmButtonText:'确定',
+            cancelButtonText:'取消'
+        }).then(()=>{
+            approveInterence.reportCnCancel({
+                ReportId:Number(item.Id)
+            }).then(res=>{
+                if(res.Ret!==200) return 
+                this.$message.success("撤销成功")
+                this.getlist()
+            })
+        })
+    },
 
     selectchange(val) {
       //多选操作

+ 10 - 13
src/views/system_manage/etaBaseConfig.vue

@@ -268,10 +268,10 @@
                     <el-switch v-model="approve"></el-switch>
                 </div>
                 <div class="side" v-if="approve">
-                    <el-form-item label="" prop="approve">
-                        <el-radio-group v-model="formData.approve">
-                            <el-radio :label="1">ETA内部审批</el-radio>
-                            <el-radio :label="2">
+                    <el-form-item label="" prop="ReportApproveType">
+                        <el-radio-group v-model="formData.ReportApproveType">
+                            <el-radio label="eta">ETA内部审批</el-radio>
+                            <el-radio label="other">
                                 <span>第三方审批</span>
                                 <el-tooltip effect="dark" placement="top" content="中文研报(智能研报/研报列表)通过API接口对接第三方审批系统" >
                                     <span class="hint-text">
@@ -351,7 +351,8 @@ export default {
 
                 WatermarkReport:false,//研报分享水印
 
-                approve:1,//研报审批选项
+                IsReportApprove:false,//是否开启研报审批
+                ReportApproveType:'eta',//研报审批选项
 
             },//表单预设值
             rules: {
@@ -465,13 +466,6 @@ export default {
             )
         }
     },
-    watch:{
-        approve(val){
-            if(val){
-                this.formData.approve = 1
-            }
-        }
-    },
     methods: {
         handleUploadImage(file,key){
             /* console.log('type',key)
@@ -538,11 +532,13 @@ export default {
             });
             //获取WatermarkChart的值,赋值checkList
             //获取UseXf的值,赋值Iflytek
+            //获取IsReportApprove的值,赋值approve
             etaBaseConfigInterence.getBaseConfig().then(res=>{
                 if(res.Ret!==200) return 
-                const {WatermarkChart='',UseXf='',CnPptCoverImgs='',EnPptCoverImgs=''} = res.Data
+                const {WatermarkChart='',UseXf='',IsReportApprove='',CnPptCoverImgs='',EnPptCoverImgs=''} = res.Data
                 this.checkList = WatermarkChart==='true'?['研报图表']:[]
                 this.Iflytek = UseXf==='true'?true:false
+                this.approve = IsReportApprove==='true'?true:false
                 if(res.Data){
                     // this.$set(this,'formData',res.Data)
                     this.formData = {...this.formData,...res.Data}
@@ -591,6 +587,7 @@ export default {
                     this.formData.LoginEmailTemplateContent = this.formData.LoginEmailTemplateContent.replace(/<p data-f-id=\"pbf\".*?<\/p>/g, "");
                     this.formData.WatermarkChart = ''+(this.checkList.includes('研报图表')?true:false)
                     this.formData.UseXf = ''+(this.Iflytek?true:false)
+                    this.formData.IsReportApprove = ''+(this.approve?true:false)
                     const CnPptCoverImgs = this.formData.CnPptCoverImgs.join(',')
                     const EnPptCoverImgs = this.formData.EnPptCoverImgs.join(',')
                     //通过验证后,提交数据前