Browse Source

Merge branch 'ppt-edit-lock'

cxmo 11 months ago
parent
commit
3db684cd46

+ 10 - 0
src/api/modules/pptApi.js

@@ -256,6 +256,16 @@ export default{
      */
     transCatalogtoEn:params=>{
       return http.post('pptv2/batchToEn',params)
+    },
+    /**
+     * PPT编辑加锁
+     * @param {*} params 
+     * @param {Number} params.PptId 
+     * @param {Number} params.Status :0仅查看,1编辑中,2编辑完成
+     * @returns 
+     */
+    pptEditLock:params=>{
+        return http.post('pptv2/editing',params)
     }
 
 }

+ 10 - 0
src/api/modules/pptEnApi.js

@@ -217,6 +217,16 @@ export const pptEnInterface = {
      */
     transPPTtoReport:params => {
       return http.post('/ppt_english/toReport',params)
+    },
+    /**
+     * PPT编辑加锁
+     * @param {*} params 
+     * @param {Number} params.PptId 
+     * @param {Number} params.Status :0仅查看,1编辑中,2编辑完成
+     * @returns 
+     */
+    pptEditLock:params=>{
+        return http.post('ppt_english/editing',params)
     }
 
 }

+ 3 - 2
src/views/ppt_manage/mixins/pptMixins.js

@@ -98,7 +98,8 @@ export default {
 			TemplateType,
       ReportId,
       ModifyTime,
-      PublishTime
+      PublishTime,
+      Editor
 		} = res.Data
       const pptDate = formatPPTDate(this.currentLang,PptDate)
       let legalContent = JSON.parse(Content)
@@ -118,7 +119,7 @@ export default {
 			},
       ReportId,
       ModifyTime,
-      PublishTime
+      PublishTime,Editor
 		}
       }else{
         this.result = {status:'',content:'获取ppt数据失败!'}

+ 1 - 0
src/views/ppt_manage/newVersion/components/catalog/pptContent.vue

@@ -173,6 +173,7 @@ export default {
           this.firstPage.BackIndex = FirstPage.TemplateType-1
           this.firstPage.imgLocalUrl = this.bgList[FirstPage.TemplateType-1]
           this.pptTime = this.pptItem.PptxUrl?PublishTime:ModifyTime
+          this.$emit('resetToolList',this.result)
         }else{
           this.$message.error('获取ppt数据失败!')
           this.dataLoading.close();

+ 1 - 0
src/views/ppt_manage/newVersion/components/catalog/pptContentEn.vue

@@ -168,6 +168,7 @@ export default {
           this.firstPage.BackIndex = FirstPage.TemplateType-1
           this.firstPage.imgLocalUrl = pptCoverEn[FirstPage.TemplateType-1]
           this.pptTime = this.pptItem.PptxUrl?PublishTime:ModifyTime
+          this.$emit('resetToolList',this.result)
         }else{
           this.$message.error('获取ppt数据失败!')
           this.dataLoading.close();

+ 22 - 2
src/views/ppt_manage/newVersion/pptCatalog.vue

@@ -240,6 +240,7 @@
             :pptItem="pptItem"
             :key="pptItem.PptId"
             @isLegal="handleIsLegal"
+            @resetToolList="setToolList"
           ></ppt-content>
           <ppt-content-old 
             v-else
@@ -545,7 +546,7 @@ export default {
       }
     },
     //设置操作按钮
-    setToolList(){
+    setToolList(pptDetail={}){
       //公共目录:显示除 删除, 编辑 外的全部按钮
       if(this.treeName==='public'){
         this.pptToolList = toolList.filter((i)=>{
@@ -592,6 +593,16 @@ export default {
       this.pptToolList = this.pptToolList.filter((i)=>{
           return authArr.includes(i.key)
         })
+      //若有人在编辑,则显示编辑中
+      if(this.pptToolList.find(i=>i.key==='edit')){
+        const {Editor={}} = pptDetail
+        const labelName = Editor.IsEditing?`${Editor.Editor}编辑中...`:'编辑'
+        this.pptToolList.map(i=>{
+            if(i.key==='edit'){
+                i.label = labelName
+            }
+        })
+      }
     },
     //判断公共目录按钮是否显示
     checkNode(data){
@@ -722,7 +733,7 @@ export default {
       })
     },
     //点击操作栏事件处理
-    handleToolClick(item){
+    async handleToolClick(item){
       const urlMap = {
         edit:`/ppteditor?id=${this.pptItem.PptId}`,
         publish:`/pptpublish?id=${this.pptItem.PptId}`,
@@ -732,6 +743,15 @@ export default {
       if(urlMap[item.key]){
         if(this.pptItem.PptVersion===2){
           if(!this.pptItem.overLimit||item.key!=='publish'){
+            if(item.key==='edit'){
+                if(item.label.length>2){
+                    this.$message.warning("他人正在编辑中,不可重复编辑")
+                    return
+                }
+                //调接口加锁然后跳转
+                const res = await pptInterface.pptEditLock({PptId:Number(this.pptItem.PptId),Status:1})
+                if(res.Ret!==200) return
+            }
             window.open(urlMap[item.key],'_blank');
           }else if(item.key==='publish'){
             //this.$message.warning('该PPT页数超过60页或图表数量超过100张,无法发布,请修改后重试')

+ 22 - 2
src/views/ppt_manage/newVersion/pptEnCatalog.vue

@@ -234,6 +234,7 @@
             :pptItem="pptItem"
             :key="pptItem.PptId"
             @isLegal="handleIsLegal"
+            @resetToolList="setToolList"
           ></ppt-content>
         </div>
         <div class="tool-side ppt-page-wrap">
@@ -518,7 +519,7 @@ export default {
       }
     },
     //设置操作按钮
-    setToolList(){
+    setToolList(pptDetail={}){
       //公共目录:显示除 删除, 编辑 外的全部按钮
       if(this.treeName==='public'){
         this.pptToolList = toolList.filter((i)=>{
@@ -560,6 +561,16 @@ export default {
       this.pptToolList = this.pptToolList.filter((i)=>{
           return authArr.includes(i.key)
         })
+      //若有人在编辑,则显示编辑中
+      if(this.pptToolList.find(i=>i.key==='edit')){
+        const {Editor={}} = pptDetail
+        const labelName = Editor.IsEditing?`${Editor.Editor}编辑中...`:'编辑'
+        this.pptToolList.map(i=>{
+            if(i.key==='edit'){
+                i.label = labelName
+            }
+        })
+      }  
 
     },
     //判断公共目录按钮是否显示
@@ -688,7 +699,7 @@ export default {
       })
     },
     //点击操作栏事件处理
-    handleToolClick(item){
+    async handleToolClick(item){
       const urlMap = {
         edit:`/ppteneditor?id=${this.pptItem.PptId}`,
         publish:`/pptenpublish?id=${this.pptItem.PptId}`,
@@ -697,6 +708,15 @@ export default {
       //要跳转页面的:预览发布,编辑,演示
       if(urlMap[item.key]){
         if(!this.pptItem.overLimit||item.key!=='publish'){
+            if(item.key==='edit'){
+                if(item.label.length>2){
+                    this.$message.warning("他人正在编辑中,不可重复编辑")
+                    return
+                }
+                //调接口加锁然后跳转
+                const res = await pptEnInterface.pptEditLock({PptId:Number(this.pptItem.PptId),Status:1})
+                if(res.Ret!==200) return
+            }
           window.open(urlMap[item.key],'_blank');
         }else if(item.key==='publish'){
           if(!this.pptItem.overLimitHint.chartNum){