浏览代码

性能优化

洪海涛 4 年之前
父节点
当前提交
58f4e96279

+ 8 - 0
src/api/qualityMonthlyReport/edit.js

@@ -117,3 +117,11 @@ export function publishReport(data) {
     data
   })
 }
+
+// 获取子月报列表
+export function getSubReportInfo(id) {
+  return request({
+    url: projectManagementUrl + '/monthlyReport/getSubReportInfo?id=' + id,
+    method: 'get'
+  })
+}

+ 183 - 183
src/api/qualityMonthlyReport/index.js

@@ -1,183 +1,183 @@
-// 质量月报
-import request from '@/utils/request'
-import { TeamManagement } from '@/apiConfig/api'
-
-// ----------------- 主页 --------------
-
-// 获取月报主页下拉选择
-export function getAvaliableInfo() {
-  return request({
-    url: TeamManagement + `/monthlyReport/getAvaliableInfo`,
-    method: 'get'
-  })
-}
-
-// 获取月报主页data
-export function monthlyReportIndex(id) {
-  return request({
-    url: TeamManagement + `/monthlyReport/monthlyReportIndex?id=${id}`,
-    method: 'get'
-  })
-}
-
-// ---------------- 通用设置 -------------------
-
-// 获取月报发起人列表
-export function getSponsorList() {
-  return request({
-    url: TeamManagement + `/monthlyReport/sponsorList`,
-    method: 'get'
-  })
-}
-
-// 添加月报发起人
-export function createSponsor(data) {
-  return request({
-    url: TeamManagement + `/monthlyReport/createSponsor`,
-    method: 'post',
-    data
-  })
-}
-
-// 删除月报发起人
-export function deleteSponsor(data) {
-  return request({
-    url: TeamManagement + `/monthlyReport/deleteSponsor`,
-    method: 'post',
-    data
-  })
-}
-
-// 获取业务线设置list
-export function monthlyReportSettingList() {
-  return request({
-    url: TeamManagement + `/monthlyReport/settingList`,
-    method: 'get'
-  })
-}
-
-// 更新业务线设置
-export function monthlyReportUpdatSetting(data) {
-  return request({
-    url: TeamManagement + `/monthlyReport/updatSetting`,
-    method: 'post',
-    data
-  })
-}
-
-// -------------------- 团队设置 ----------------------
-
-// 获取部门信息列表
-export function getDeptSetting() {
-  return request({
-    url: TeamManagement + `/monthlyReport/getDeptSetting`,
-    method: 'get'
-  })
-}
-
-// 删除部门关联业务线
-export function deleteDeptBizRel(data) {
-  return request({
-    url: TeamManagement + `/monthlyReport/deleteDeptBizRel`,
-    method: 'post',
-    data
-  })
-}
-
-// 部门添加关联业务线
-export function createDeptBizRel(data) {
-  return request({
-    url: TeamManagement + `/monthlyReport/createDeptBizRel`,
-    method: 'post',
-    data
-  })
-}
-
-// 点击部门获取部门人员信息
-export function getDeptMember(id) {
-  return request({
-    url: TeamManagement + `/monthlyReport/getDeptMember?deptCode=${id}`,
-    method: 'get'
-  })
-}
-
-// 获取月报业务线
-export function getReportBizInfo(id) {
-  return request({
-    url: TeamManagement + `/monthlyReport/getReportBizInfo`,
-    method: 'get'
-  })
-}
-
-// 获取部门下odin节点
-export function getOdinNode(id) {
-  return request({
-    url: TeamManagement + `/monthlyReport/getOdinNode?deptId=${id}`,
-    method: 'get'
-  })
-}
-
-// --------------  节点树  ---------------
-
-// 获取月报节点树 待定
-export function getOdinTree(data) {
-  return request({
-    url: data !== null ? TeamManagement + `/monthlyReport/getOdinTree?keyWord=${data}` : TeamManagement + `/monthlyReport/getOdinTree`,
-    timeout: '10000',
-    method: 'get'
-  })
-}
-
-// 添加根节点
-export function addShowOdinNode(data) {
-  return request({
-    url: TeamManagement + `/monthlyReport/addShowOdinNode`,
-    method: 'post',
-    data
-  })
-}
-
-// 创建月报
-export function createMonthlyReport(data) {
-  return request({
-    url: TeamManagement + `/monthlyReport/create`,
-    method: 'post',
-    data
-  })
-}
-
-// 根据父odin节点加载odin子节点
-export function getOdinNodeByParentId(id) {
-  return request({
-    url: TeamManagement + `/monthlyReport/getOdinNodeByParentId?odinId=${id}`,
-    timeout: '10000',
-    method: 'get'
-  })
-}
-
-// 部门模糊搜索
-export function getDeptByKeyWord(id) {
-  return request({
-    url: TeamManagement + `/monthlyReport/getDeptByKeyWord?keyWord=${id}`,
-    timeout: '10000',
-    method: 'get'
-  })
-}
-
-// 节点树 增加团队
-export function createOdinDeptRel(data) {
-  return request({
-    url: TeamManagement + `/monthlyReport/createOdinDeptRelV2`,
-    method: 'post',
-    data
-  })
-}
-
-// 节点树 删除团队
-export function deleteOdinBizRel(data) {
-  return request({
-    url: TeamManagement + `/monthlyReport/deleteOdinDeptRelV2`,
-    method: 'post',
-    data
-  })
-}
+// 质量月报
+import request from '@/utils/request'
+import { TeamManagement } from '@/apiConfig/api'
+
+// ----------------- 主页 --------------
+
+// 获取月报主页下拉选择
+export function getAvaliableInfo() {
+  return request({
+    url: TeamManagement + `/monthlyReport/getAvaliableInfo`,
+    method: 'get'
+  })
+}
+
+// 获取月报主页data
+export function monthlyReportIndex(id) {
+  return request({
+    url: TeamManagement + `/monthlyReport/monthlyReportIndex?id=${id}`,
+    method: 'get'
+  })
+}
+
+// ---------------- 通用设置 -------------------
+
+// 获取月报发起人列表
+export function getSponsorList() {
+  return request({
+    url: TeamManagement + `/monthlyReport/sponsorList`,
+    method: 'get'
+  })
+}
+
+// 添加月报发起人
+export function createSponsor(data) {
+  return request({
+    url: TeamManagement + `/monthlyReport/createSponsor`,
+    method: 'post',
+    data
+  })
+}
+
+// 删除月报发起人
+export function deleteSponsor(data) {
+  return request({
+    url: TeamManagement + `/monthlyReport/deleteSponsor`,
+    method: 'post',
+    data
+  })
+}
+
+// 获取业务线设置list
+export function monthlyReportSettingList() {
+  return request({
+    url: TeamManagement + `/monthlyReport/settingList`,
+    method: 'get'
+  })
+}
+
+// 更新业务线设置
+export function monthlyReportUpdatSetting(data) {
+  return request({
+    url: TeamManagement + `/monthlyReport/updatSetting`,
+    method: 'post',
+    data
+  })
+}
+
+// -------------------- 团队设置 ----------------------
+
+// 获取部门信息列表
+export function getDeptSetting() {
+  return request({
+    url: TeamManagement + `/monthlyReport/getDeptSetting`,
+    method: 'get'
+  })
+}
+
+// 删除部门关联业务线
+export function deleteDeptBizRel(data) {
+  return request({
+    url: TeamManagement + `/monthlyReport/deleteDeptBizRel`,
+    method: 'post',
+    data
+  })
+}
+
+// 部门添加关联业务线
+export function createDeptBizRel(data) {
+  return request({
+    url: TeamManagement + `/monthlyReport/createDeptBizRel`,
+    method: 'post',
+    data
+  })
+}
+
+// 点击部门获取部门人员信息
+export function getDeptMember(id) {
+  return request({
+    url: TeamManagement + `/monthlyReport/getDeptMember?deptCode=${id}`,
+    method: 'get'
+  })
+}
+
+// 获取月报业务线
+export function getReportBizInfo(id) {
+  return request({
+    url: TeamManagement + `/monthlyReport/getReportBizInfo`,
+    method: 'get'
+  })
+}
+
+// 获取部门下odin节点
+export function getOdinNode(id) {
+  return request({
+    url: TeamManagement + `/monthlyReport/getOdinNode?deptId=${id}`,
+    method: 'get'
+  })
+}
+
+// --------------  节点树  ---------------
+
+// 获取月报节点树 待定
+export function getOdinTree(data) {
+  return request({
+    url: data !== null ? TeamManagement + `/monthlyReport/getOdinTree?keyWord=${data}` : TeamManagement + `/monthlyReport/getOdinTree`,
+    timeout: '10000',
+    method: 'get'
+  })
+}
+
+// 添加根节点
+export function addShowOdinNode(data) {
+  return request({
+    url: TeamManagement + `/monthlyReport/addShowOdinNode`,
+    method: 'post',
+    data
+  })
+}
+
+// 创建月报
+export function createMonthlyReport(data) {
+  return request({
+    url: TeamManagement + `/monthlyReport/create`,
+    method: 'post',
+    data
+  })
+}
+
+// 根据父odin节点加载odin子节点
+export function getOdinNodeByParentId(id) {
+  return request({
+    url: TeamManagement + `/monthlyReport/getOdinNodeByParentId?odinId=${id}`,
+    timeout: '10000',
+    method: 'get'
+  })
+}
+
+// 部门模糊搜索
+export function getDeptByKeyWord(id) {
+  return request({
+    url: TeamManagement + `/monthlyReport/getDeptByKeyWord?keyWord=${id}`,
+    timeout: '10000',
+    method: 'get'
+  })
+}
+
+// 节点树 增加团队
+export function createOdinDeptRel(data) {
+  return request({
+    url: TeamManagement + `/monthlyReport/createOdinDeptRelV2`,
+    method: 'post',
+    data
+  })
+}
+
+// 节点树 删除团队
+export function deleteOdinBizRel(data) {
+  return request({
+    url: TeamManagement + `/monthlyReport/deleteOdinDeptRelV2`,
+    method: 'post',
+    data
+  })
+}

+ 46 - 33
src/components/affix/affix.vue

@@ -85,19 +85,25 @@ export default {
   },
   methods: {
     init() {
-      const { entity } = this
-      const targetNode = this.target()
-      TRIGGER_EVENTS.forEach((eventName) => {
-        // targetNode.addEventListener(eventName, () => {
-        //   this.lazyUpdatePosition()
-        // })
-        entity.eventHandlers[eventName] = addDOMEventListener(
-          targetNode,
-          eventName,
-          this.lazyUpdatePosition
-        )
-      })
-      this.lazyUpdatePosition()
+      try {
+        const { entity } = this
+        const targetNode = this.target()
+        if (targetNode) {
+          TRIGGER_EVENTS.forEach((eventName) => {
+            // targetNode.addEventListener(eventName, () => {
+            //   this.lazyUpdatePosition()
+            // })
+            entity.eventHandlers[eventName] = addDOMEventListener(
+              targetNode,
+              eventName,
+              this.lazyUpdatePosition
+            )
+          })
+          this.lazyUpdatePosition()
+        }
+      } catch (e) {
+        console.log(e)
+      }
     },
     // @ts-ignore TS6133
     prepareMeasure() {
@@ -118,26 +124,33 @@ export default {
       return offsetTop
     },
     lazyUpdatePosition() {
-      const targetNode = this.target()
-      const offsetTop = this.getOffsetTop()
-      this.$emit('change', { scrollTop: targetNode.scrollTop })
-      // console.log(102, this.$refs, targetNode.scrollTop)
-      if (targetNode.scrollTop < offsetTop) {
-        this.prepareMeasure()
-        return
-      }
-
-      const placeholderReact = this.$refs.placeholderNode
-      this.fixedNodeStyle = {
-        position: 'fixed',
-        top: `${offsetTop}px`,
-        zIndex: 999,
-        width: placeholderReact.offsetWidth + 'px',
-        height: placeholderReact.offsetHeight + 'px'
-      }
-      this.placeholderNodeStyle = {
-        width: placeholderReact.offsetWidth + 'px',
-        height: placeholderReact.offsetHeight + 'px'
+      try {
+        const targetNode = this.target()
+        if (targetNode) {
+          const offsetTop = this.getOffsetTop()
+          this.$emit('change', { scrollTop: targetNode.scrollTop })
+          // console.log(102, this.$refs, targetNode.scrollTop)
+          if (targetNode.scrollTop < offsetTop) {
+            this.prepareMeasure()
+            return
+          }
+          const placeholderReact = this.$refs.placeholderNode
+          if (placeholderReact && placeholderReact.offsetWidth) {
+            this.fixedNodeStyle = {
+              position: 'fixed',
+              top: `${offsetTop}px`,
+              zIndex: 999,
+              width: placeholderReact.offsetWidth + 'px',
+              height: placeholderReact.offsetHeight + 'px'
+            }
+            this.placeholderNodeStyle = {
+              width: placeholderReact.offsetWidth + 'px',
+              height: placeholderReact.offsetHeight + 'px'
+            }
+          }
+        }
+      } catch (e) {
+        console.log(e)
       }
     },
     unInit() {

+ 43 - 13
src/store/modules/monthlyReport/edit/index.js

@@ -9,7 +9,8 @@ import {
   sendConfirm,
   returnReport,
   sendSubConfirm,
-  publishReport
+  publishReport,
+  getSubReportInfo
 } from '@/api/qualityMonthlyReport/edit'
 import { getAvaliableInfo } from '@/api/qualityMonthlyReport'
 
@@ -45,6 +46,8 @@ export default {
     selectEnum: [], // 部门数据
     userNames: [], // 人员数据
     subTitle: '新建月报',
+    subReportName: '',
+    subReportInfo: null, // 为回退时,当前页面为查看完整时,无法获取子月报数据情况设置
     offsetList: [],
     /**
      * 用户身份权限编号
@@ -147,6 +150,7 @@ export default {
       const newTabsActive = setTabActive('tab_', tabsActive)
       // tabPageData => 后台源数据结构
       const oldTabPageData = reportDataBack({ ...state.tabPageData })
+      console.log(oldTabPageData)
       let newTabPageData = {}
       const reportData = state.reportData.map((elm) => {
         // 找出新页面的数据    && newTabsActive !== oldTabPageData.id
@@ -154,7 +158,7 @@ export default {
           newTabPageData = { ...elm }
         }
         // 将上一个被选中的页签数据赋值给源数据(reportData)
-        if (elm.id === oldTabPageData.id) {
+        if (`${elm.reportName}` === `${oldTabPageData.title}`) {
           return {
             ...elm,
             reportCatalog: { ...oldTabPageData }
@@ -163,6 +167,7 @@ export default {
         return elm
       })
       state.reportData = [...reportData]
+      console.log(state.reportData)
       // 对新数据进行转换
       const { newObj, domKeys } = setReportData(
         newTabPageData.reportCatalog,
@@ -312,7 +317,7 @@ export default {
     },
     // 数据初始化
     INIT_STATE_DATA(state) {
-      state.pageDate = null
+      state.pageDate = null // 页面的完整数据
       state.tabsList = [
         '上月问题跟进',
         '本月重点问题',
@@ -321,17 +326,28 @@ export default {
         '硬件详情',
         '本月优秀&持续改进'
       ]
-      state.tabsActive = ''
+      state.tabsActive = '' // 最上层tabs焦点
       state.tabPageData = null // 单个标签页数据
-      state.treeActive = ''
-      state.treeData = []
       state.reportData = [] // 所有标签页数据
-      state.editKeys = []
+      state.editKeys = [] // 存放需要编辑的区域的  domKey(唯一)
       state.subTabsActive = [] // 当前页签中所有已切换的数据
       state.domKeys = [] // 记录所有元素区域的唯一标识
       state.selectEnum = [] // 部门数据
-      state.userNames = {} // 人员数据
-      state.pageType = 'edit'
+      state.userNames = [] // 人员数据
+      state.subTitle = '新建月报'
+      state.subReportName = ''
+      state.subReportInfo = null // 为回退时,当前页面为查看完整时,无法获取子月报数据情况设置
+      state.offsetList = []
+      /**
+         * 用户身份权限编号
+         * 100        月报发起人
+         * 50         确认人
+         * 30         用户
+         * 0          管理员
+         */
+      state.roleCode = 50 // 默认为用户
+      state.reportList = [] // 默认为用户
+      state.pageType = 'edit' // edit:(月报编辑和新建); readAll:(查看月报详情)
     },
     // tabPageData
     SET_TAB_PAGE_DATA(state, { data, id, tabsActive }) {
@@ -439,12 +455,13 @@ export default {
       //   name: res.data.reportName
       // })
       state.reportList && state.reportList.forEach(elm => {
-        if (`${elm.id}` === id) {
+        if (`${elm.id}` === `${id}`) {
           if (!name) {
             state.pageDate = {
               status: elm.status
             }
           }
+          console.log(elm.reportName)
           // 如果是
           if (elm.status === 30) {
             state.subTitle = `查看|${elm.reportName}`
@@ -455,6 +472,7 @@ export default {
       })
       // 如果是单业务线查看
       if (name) {
+        state.subReportName = `${name}`
         state.subTitle += `|${name}`
       }
     },
@@ -463,6 +481,10 @@ export default {
       state.pageDate = _.cloneDeep(params)
       delete state.pageDate.reportCatalog
       delete state.pageDate.reportContent
+    },
+    // 设置子月报数据
+    SET_REPORT_INFO(state, params) {
+      state.subReportInfo = params
     }
   },
   actions: {
@@ -483,6 +505,7 @@ export default {
           subReportId,
           tabsActive: `tab_${subActive || '上月问题跟进'}`
         })
+        dispatch('setSubReportInfo', id)
       } else {
         const res = await getMonthlyReport(id)
         // 设置月报子标题
@@ -517,9 +540,9 @@ export default {
         }
       }
       if (pageType === 'readAll') {
-        state.pageDate = {
-          status: 10
-        }
+        // state.pageDate = {
+        //   status: 10
+        // }
         params = {
           reportId: id,
           catalogTitle: setTabActive('tab_', tabsActive)
@@ -629,6 +652,13 @@ export default {
       if (res.code === 200) {
         commit('GET_USER_PERMISSION', res.data)
       }
+    },
+    // 获取子月报列表数据
+    async setSubReportInfo({ commit }, id) {
+      const res = await getSubReportInfo(id)
+      if (res.code === 200) {
+        commit('SET_REPORT_INFO', res.data)
+      }
     }
   }
 }

+ 1 - 0
src/store/modules/monthlyReport/edit/utils.js

@@ -66,6 +66,7 @@ export function reportDataBack(obj) {
     //     }
     //   })
     // })
+    console.log(newObj)
     return newObj
   }
   return []

+ 1 - 1
src/views/monthlyReport/childrenPage/editReport/components/CascaderInfo.vue

@@ -42,7 +42,7 @@ export default {
   },
   methods: {
     init() {
-      console.log(this.teamData, 45)
+      // console.log(this.teamData, 45)
       if (this.teamData && this.teamData.length) {
         // const [first, second] = this.teamData
         // // console.log(first, second)

+ 16 - 8
src/views/monthlyReport/childrenPage/editReport/components/MrTable.vue

@@ -131,8 +131,8 @@
                 v-model="scope.row[item.headerKey]"
                 type="textarea"
                 placeholder="请输入"
-                maxlength="100"
-                :autosize="{ minRows: 1, maxRows: 4 }"
+                maxlength="300"
+                :autosize="{ minRows: 2, maxRows: 30 }"
                 show-word-limit
               />
               <div v-else-if="item.displayType === 'Cascader'">
@@ -273,6 +273,9 @@ export default {
     pageDate() {
       return this.$store.state.monthlyReportEdit.pageDate
     },
+    subReportName() {
+      return this.$store.state.monthlyReportEdit.subReportName
+    },
     editKeys() {
       return this.$store.state.monthlyReportEdit.editKeys
     }
@@ -425,15 +428,20 @@ export default {
           })
         }
         run(tabPageData.children)
+        const params = {
+          reportId: this.$route.query.reportId,
+          subReportName: this.subReportName,
+          reportCatalog: obj
+        }
+        if (this.$route.query.pageType === 'readAll') {
+          params.subReportName = `${obj.title}`
+        }
+        // console.log(params)
         // 提交数据
-        if (obj) {
-          updateAnalyticFeedback({
-            reportId: this.$route.query.reportId,
-            reportCatalog: obj
-          }).then((res) => {
+        if (obj && obj.content[0].tableRows.length) {
+          updateAnalyticFeedback(params).then((res) => {
             if (res.code === 200) {
               this.analyticFeedback = res.data
-              // console.log(res.data)
             }
           })
         }

+ 17 - 2
src/views/monthlyReport/childrenPage/editReport/components/anchor.vue

@@ -36,7 +36,7 @@
             center: list.length === 1
           }"
         />
-        <el-tooltip
+<!--        <el-tooltip
           class="item"
           effect="dark"
           :enterable="true"
@@ -61,7 +61,22 @@
               {{ setTitle(item.title) }}</span
             >
           </div>
-        </el-tooltip>
+        </el-tooltip>-->
+        <div
+          :ref="`anchor_${index}`"
+          class="mi"
+          :class="{ hide: !item.isVisible }"
+          @contextmenu.prevent="openMenu($event, item)"
+          @click.stop="change(item)"
+          @mousemove="mouseMoveItem({ event: $event, item })"
+        >
+            <span
+              class="title"
+              :class="{ active: active === item.domKey, hide: !item.isVisible }"
+            >
+              {{ setTitle(item.title) }}</span
+            >
+        </div>
 
         <span v-if="item.children && item.children.length">
           <Anchor

+ 3 - 1
src/views/monthlyReport/childrenPage/editReport/components/core.vue

@@ -11,7 +11,8 @@
       :id="baseData.domKey"
       :style="{
         marginTop: baseData.type === 'head3' ? '0' : '10.3px',
-        marginBottom: '10px'
+        marginBottom: '10px',
+        paddingTop: baseData.type === 'head3' ? '17.9px' : '18.1px',
       }"
     >
       <!-- 不是业务线 -->
@@ -226,6 +227,7 @@ export default {
        * 当页面处于全部查看时,并且页面数据状态 大于 10 ,并且 是业务线标题,并且 tab页签是·本月优秀·时,才进行判断当前数据是否显示*/
 
       if (
+        this.pageDate &&
         this.pageDate.status > 10 &&
         this.tabsActive.search(/本月优秀/ > -1) &&
         this.baseData &&

+ 59 - 64
src/views/monthlyReport/childrenPage/editReport/index.vue

@@ -1,105 +1,79 @@
 <template>
   <div
+    v-if="indexShow"
     ref="pageWrapper"
     class="page-wrapper"
     @click.stop="$store.commit('monthlyReportEdit/INIT_EDIT_KEYS')"
   >
     <headerCom
+      :key="subTitle"
       title="月报"
       :sub-title="subTitle"
       address="/monthlyReport/index"
     >
-      <template slot="content">
+      <template v-if="pageDate" slot="content">
         <el-button
-          v-if="
-            pageDate &&
-              pageDate.status < 20 &&
-              (roleCode === 100 || roleCode === 50 || roleCode === 0)
-          "
+          v-if="pageDate && pageDate.status < 20 && (roleCode === 100 || roleCode === 50 || roleCode === 0)"
           type="primary"
           size="small"
           @click="upDateReport"
           >保存
         </el-button>
         <el-button
-          v-if="
-            pageDate &&
-              pageDate.status === 10 &&
-              (roleCode === 100 || roleCode === 50 || roleCode === 0)
-          "
+          v-if="pageDate && pageDate.status === 10 && (roleCode === 100 || roleCode === 50 || roleCode === 0)"
           type="primary"
           size="small"
           @click="confirmReport"
           >确认
         </el-button>
         <el-button
-          v-if="
-            pageDate &&
-              pageDate.status < 10 &&
-              (roleCode === 100 || roleCode === 0)
-          "
+          v-if="pageDate && pageDate.status < 10 && (roleCode === 100 || roleCode === 0)"
           plain
           size="small"
           @click="dialogOpen('dialogSend')"
           >发送确认
         </el-button>
         <el-button
-          v-if="
-            $route.query.type === 'create' &&
-              pageDate &&
-              pageDate.status < 20 &&
-              (roleCode === 100 || roleCode === 0)
-          "
+          v-if="$route.query.type === 'create' && pageDate && pageDate.status < 20 && (roleCode === 100 || roleCode === 0)"
           slot="reference"
           plain
           size="small"
-          @click="$router.push({ path: '/monthlyReport/index' })"
+          @click="deleteReport('删除')"
           >取消
         </el-button>
         <el-button
-          v-if="
-            pageType.search(/All/) > -1 &&
-              pageDate &&
-              pageDate.status === 20 &&
-              (roleCode === 100 || roleCode === 0)
-          "
+          v-if="pageType.search(/All/) > -1 && pageDate && pageDate.status === 20 && (roleCode === 100 || roleCode === 0)"
           slot="reference"
           plain
           size="small"
           @click="publishAllReport"
           >发布
         </el-button>
-        <el-dropdown
-          v-if="
-            pageType.search(/All/) > -1 &&
-              pageDate &&
-              pageDate.status === 30 &&
-              (roleCode === 100 || roleCode === 0)
-          "
-          trigger="click"
-          @command="returnReport"
-        >
-          <span class="el-dropdown-link">
-            回退<i class="el-icon-arrow-down el-icon--right" />
+        <span v-if="pageDate.status === 30 && (roleCode === 100 || roleCode === 0)">
+          <span v-if="$route.query.pageType === 'read'" class="el-dropdown-link" style="cursor: pointer" @click="returnReport('only')">
+            回退
           </span>
-          <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item command="all">全部</el-dropdown-item>
-            <el-dropdown-item
-              v-for="item in tabsList"
-              :key="item.name"
-              :command="item.name"
-              >{{ item.label }}
-            </el-dropdown-item>
-          </el-dropdown-menu>
-        </el-dropdown>
+          <el-dropdown
+            v-else
+            trigger="click"
+            @command="returnReport"
+          >
+            <span class="el-dropdown-link" style="cursor: pointer">
+              回退<i class="el-icon-arrow-down el-icon--right" />
+            </span>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item command="all">全部</el-dropdown-item>
+              <el-dropdown-item
+                v-for="item in subReportInfo"
+                :key="item.id"
+                :command="item.id"
+              >{{ item.reportName }}
+              </el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+        </span>
         <el-button
-          v-if="
-            pageType.search(/All/) > -1 &&
-              (!$route.query.type || $route.query.type !== 'create') &&
-              pageDate &&
-              pageDate.status < 20 &&
-              (roleCode === 100 || roleCode === 0)
-          "
+          v-if=" pageType.search(/All/) > -1 && (!$route.query.type || $route.query.type !== 'create') && pageDate && pageDate.status < 20 && (roleCode === 100 || roleCode === 0)"
           slot="reference"
           type="danger"
           size="small"
@@ -143,10 +117,10 @@
             v-clickoutside="$refs.menu && $refs.menu.closeMenu"
             :listen-time="100"
             :offset-top="178"
-            :target="() => $refs.pageWrapper.parentNode"
+            :target="() => $refs && $refs.pageWrapper && $refs.pageWrapper.parentNode"
             @change="userFun"
           >
-            <div style="max-height: 500px;overflow-y: scroll;">
+            <div class="set_scroll" style="max-height: 500px;overflow-y: scroll;">
               <Anchor
                 :list="tabPageData && tabPageData.children"
                 :active="anchorActive"
@@ -256,6 +230,9 @@ export default {
     pageType() {
       return this.$store.state.monthlyReportEdit.pageType
     },
+    subReportInfo() {
+      return this.$store.state.monthlyReportEdit.subReportInfo
+    },
     roleCode() {
       return this.$store.state.monthlyReportEdit.roleCode
     }
@@ -266,6 +243,7 @@ export default {
     }
   },
   created() {
+    this.indexShow = true
     // 默认获取用户权限
     this.$store.dispatch('monthlyReportEdit/getUserPermission')
   },
@@ -304,6 +282,7 @@ export default {
     }
   },
   destroyed() {
+    this.indexShow = false
     this.$store.commit('monthlyReportEdit/INIT_STATE_DATA')
   },
   methods: {
@@ -445,11 +424,14 @@ export default {
     returnReport(command) {
       let list = []
       if (command === 'all') {
-        list = this.tabsList.map((elm) => {
-          return Number.parseInt(elm.name.replace('tab_', ''))
+        list = this.subReportInfo.map((elm) => {
+          return Number.parseInt(elm.id)
         })
       } else {
-        list.push(Number.parseInt(command.replace('tab_', '')))
+        list.push(Number.parseInt(command))
+      }
+      if (command === 'only' && this.$route.query.subReportId) {
+        list = [Number.parseInt(this.$route.query.subReportId)]
       }
       this.$store.dispatch('monthlyReportEdit/returnReport', {
         data: {
@@ -466,7 +448,20 @@ export default {
 </script>
 <style scoped lang="less">
 @import '../../style';
-
+// setscroll
+.set_scroll {
+  &::-webkit-scrollbar {
+    width: 6px;
+    //height: 8px;
+  }
+  &::-webkit-scrollbar-thumb {
+    background-color: #c8cbcc;
+    border-radius: 8px;
+  }
+  &::-webkit-scrollbar-track-piece {
+    background: #d3d3d3;
+  }
+}
 .content-wrapper {
   /deep/ .el-tabs__nav-wrap::after {
     height: 1px;