Browse Source

Merge branch 'http_test' into Qz_daily_3.0.0

qinzhipeng_v@didiglobal.com 4 years ago
parent
commit
dd9fde66f6

+ 27 - 3
src/api/qualityMonthlyReport/edit.js

@@ -20,6 +20,7 @@ export function delMonthlyReport(reportId) {
   return request({
     url: projectManagementUrl + '/monthlyReport/delete',
     method: 'get',
+    timeout: '100000',
     params: {
       reportId
     }
@@ -67,6 +68,7 @@ export function updateAnalyticFeedback(data) {
   return request({
     url: projectManagementUrl + '/monthlyReport/updateAnalyticFeedback',
     method: 'post',
+    timeout: '100000',
     data
   })
 }
@@ -105,6 +107,7 @@ export function sendSubConfirm(data) {
   return request({
     url: projectManagementUrl + '/monthlyReport/confirm',
     method: 'post',
+    timeout: '100000',
     data
   })
 }
@@ -114,6 +117,7 @@ export function returnReport(data) {
   return request({
     url: projectManagementUrl + '/monthlyReport/returnReport',
     method: 'post',
+    timeout: '100000',
     data
   })
 }
@@ -132,6 +136,7 @@ export function publishReport(data) {
   return request({
     url: projectManagementUrl + '/monthlyReport/publish',
     method: 'post',
+    timeout: '100000',
     data
   })
 }
@@ -150,7 +155,7 @@ export function pullDataAgain(data) {
   return request({
     url: projectManagementUrl + '/monthlyReport/pullDataAgain',
     method: 'post',
-    timeout: '20000',
+    timeout: '100000',
     data
   })
 }
@@ -159,6 +164,7 @@ export function pullDataAgain(data) {
 export function getOverallOverview(reportId) {
   return request({
     url: projectManagementUrl + '/monthlyReport/getOverallOverview?reportId=' + reportId,
+    timeout: '100000',
     method: 'get'
   })
 }
@@ -188,6 +194,14 @@ export function getMonthlyReportPreView(reportId) {
     method: 'get'
   })
 }
+// 月报PDF阅览
+export function getMonthlyReportPrePdfView(reportId) {
+  return request({
+    url: projectManagementUrl + '/monthlyReport/getMonthlReportPdfPreview?id=' + reportId,
+    timeout: '100000',
+    method: 'get'
+  })
+}
 
 // 获取月报负责人
 // /monthlyReport/getDeptCharge
@@ -195,7 +209,7 @@ export function getDeptCharge(data) {
   return request({
     url: projectManagementUrl + '/monthlyReport/getDeptCharge',
     method: 'post',
-    timeout: '20000',
+    timeout: '100000',
     data
   })
 }
@@ -204,7 +218,17 @@ export function getDeptCharge(data) {
 export function downloadMonthlyReport(reportId) {
   return request({
     url: projectManagementUrl + '/monthlyReport/downloadMonthlyReport?id=' + reportId,
-    timeout: '200000',
+    timeout: '100000',
     method: 'get'
   })
 }
+
+// 拉取subtitle /monthlyReport/pullSubTitle
+export function pullSubTitle(data) {
+  return request({
+    url: projectManagementUrl + '/monthlyReport/pullSubTitle',
+    method: 'post',
+    timeout: '100000',
+    data
+  })
+}

+ 70 - 4
src/store/modules/monthlyReport/edit/index.js

@@ -13,7 +13,8 @@ import {
   publishReport,
   getSubReportInfo,
   updateSubReport,
-  pullDataAgain
+  pullDataAgain,
+  pullSubTitle
 } from '@/api/qualityMonthlyReport/edit'
 // import { memberQueryMemberInfoByIDAPorName } from '@/api/projectIndex'
 import { getAvaliableInfo, getMonthlyReportVersion } from '@/api/qualityMonthlyReport'
@@ -882,13 +883,13 @@ export default {
       const params = {
         subReportId: '',
         catalogTitle: title,
-        isServer: false,
+        isServer: true,
         clientType: ''
       }
       if (title !== '上月问题跟进') {
         find(tabPageData.children)
-        if (tabDataObj.tabKey.title === '服务端') {
-          params.isServer = true
+        if (tabDataObj.tabKey.title) {
+          params.isServer = tabDataObj.tabKey.title === '服务端'
         }
         if (!params.isServer) {
           params.clientType = tabDataObj.subTabKey.title
@@ -1003,6 +1004,71 @@ export default {
           state.userNames = userNames
         }
       }, 100)
+    },
+    // 重新拉取线上问题的 SubTitle,只在tableData数据变化时更新
+    async pullOnlineQuestion({ state }, { domKey, route }) {
+      // 获取数据
+      let baseData = {}
+      let { subReportId } = route.query
+      const [tabKey, subTabKey] = state.subTabsActive
+      if (!subReportId) {
+        subReportId = state.tabsActive.replace(/tab_/, '')
+      }
+      //
+      const tabDataObj = {
+        tabKey: '',
+        subTabKey: ''
+      }
+      const setValue = (item, key, value) => {
+        if (item.domKey === value) {
+          tabDataObj[key] = item
+        }
+      }
+      const find = (arr) => {
+        arr &&
+          arr.length &&
+          arr.forEach((elm) => {
+            setValue(elm, 'tabKey', tabKey)
+            setValue(elm, 'subTabKey', subTabKey)
+            if (elm.domKey === domKey) {
+              baseData = _.cloneDeep(elm)
+            }
+            if (elm.content && elm.content.length) {
+              find(elm.content)
+            }
+            if (elm.children && elm.children.length) {
+              find(elm.children)
+            }
+          })
+      }
+      find(state.tabPageData.children)
+      // 转换数据
+      const tableRows = objToArr(baseData.content[1].tableRows, baseData.content[1].tableHeaders)
+      const res = await pullSubTitle({
+        subReportId,
+        catalogTitle: '线上问题',
+        isServer: tabDataObj.tabKey.title ? tabDataObj.tabKey.title === '服务端' : true,
+        tableRows
+      })
+      // 覆盖数据
+      const setSubTitle = (arr) => {
+        arr &&
+          arr.length &&
+          arr.forEach((elm) => {
+            if (elm.domKey === domKey) {
+              elm.subTitles = res.data
+            }
+            if (elm.content && elm.content.length) {
+              setSubTitle(elm.content)
+            }
+            if (elm.children && elm.children.length) {
+              setSubTitle(elm.children)
+            }
+          })
+      }
+      const tabPageData = { ...state.tabPageData }
+      setSubTitle(tabPageData.children)
+      state.tabPageData = { ...tabPageData }
     }
   }
 }

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

@@ -187,7 +187,6 @@ export function readOnlyTableObjToArr(obj, tableHeaders) {
     const elms = {}
     tableHeaders.forEach((item, index) => {
       let param = {}
-      console.log(192)
       param = elm[item.headerKey]
       if (!elms.tableItems) {
         elms.tableItems = []

+ 2 - 2
src/views/dataBigManage/components/drawerModal/index.vue

@@ -811,7 +811,7 @@ export default {
       }
     },
     // 缺陷平均修复时长
-    async setbugRepair2Data() {
+    async setBugRepair2Data() {
       const paging = this.paging
       const params = {
         ...paging,
@@ -830,7 +830,7 @@ export default {
       }
     },
     // 缺陷24小时修复率
-    async setbugRepairData() {
+    async setBugRepairData() {
       const priorityList = [[0, 1, 2, 3], [0, 1], [2, 3]]
       const paging = this.paging
       const params = {

+ 2 - 2
src/views/dataBigManage/components/efficiencyModule/index.vue

@@ -326,7 +326,7 @@ export default {
 .qualityModule {
   // .itemBox {
     box-shadow: 0px 6px 50px rgba(0, 0, 0, 0.05);
-    padding: 5px 20px;
+    padding: 10px 5px 0;
     border-radius: 6px;
     margin-bottom: 10px;
     .itemBox {
@@ -335,7 +335,7 @@ export default {
       margin-bottom: 10px;
       border-radius: 6px;
       padding: 8px 10px;
-      margin: 10px 10px;
+      //margin: 10px 10px;
       .empty {
         text-align: center;
         line-height: 134px;

+ 6 - 6
src/views/monthlyReport/childrenPage/editReport/components/MrTable/Analysis.vue

@@ -110,16 +110,16 @@
         </span>
       </div>
       <el-button
-type="text"
-icon="el-icon-plus"
-@click.stop="addItem"
+        type="text"
+        icon="el-icon-plus"
+        @click.stop="addItem"
         >新增问题
       </el-button>
       <template slot="save">
         <el-button
-type="primary"
-size="small"
-@click.stop="openDialogConfirm"
+          type="primary"
+          size="small"
+          @click.stop="openDialogConfirm"
           >提交<!-- @click.stop="updateModule('Submission')" -->
         </el-button>
       </template>

+ 2 - 0
src/views/monthlyReport/childrenPage/editReport/components/MrTable/TableExpandRow.vue

@@ -141,6 +141,7 @@ export default {
         subIndex
       ].isHold = true
       if (holdReason) {
+        window.log({ c: 'report_view', d: 'report_view_Feeback_hold' })
         this.analyticFeedback.analyticContents[index].improvementItems[
           subIndex
         ].holdReason = holdReason
@@ -162,6 +163,7 @@ export default {
         item.progress = 0
       }
       item.isProgressEdit = !item.isProgressEdit
+      window.log({ c: 'report_view', d: 'report_view_Feedback_upload' })
       this.$forceUpdate()
       this.$emit('upAnalyticFeedback')
     }

+ 25 - 1
src/views/monthlyReport/childrenPage/editReport/components/MrTable/index.vue

@@ -5,7 +5,7 @@
       <!-- :data="[...paging.tableData].splice(0,2)" -->
       <!--  :data="tableData" -->
       <el-table
-        :data="[...paging.tableData].splice(0,2)"
+        :data="tableData"
         border
         style="width: 100%; margin-top: 10px"
         highlight-current-row
@@ -343,10 +343,16 @@ export default {
       type: Array,
       required: false,
       default: () => []
+    },
+    baseDataDomKey: {
+      type: String,
+      required: false,
+      default: () => ''
     }
   },
   data() {
     this.setAnalyticFeedback = _.debounce(this.setAnalyticFeedback, 300)
+    this.pullOnlineQuestion = _.debounce(this.pullOnlineQuestion, 1000)
     return {
       analyticFeedback: '',
       expandRowKeys: [],
@@ -404,6 +410,15 @@ export default {
       return this.$store.state.monthlyReportEdit.isLoading
     }
   },
+  watch: {
+    tableData: {
+      handler(val, oldVal) {
+        this.pullOnlineQuestion()
+      },
+      deep: true,
+      immediate: true
+    }
+  },
   // watch: {
   //   tableData() {
   //     if (this.tableData.length) {
@@ -540,6 +555,7 @@ export default {
     upDataAnalysis({ rowIndex, analyticFeedback }) {
       // console.log({ rowIndex, analyticFeedback })
       if (this.pageType.search(/edit/) < 0) {
+        window.log({ c: 'report_view', d: 'report_view_Feedback' })
         // console.log(rowIndex, analyticFeedback)
         this.feedbackIndex = rowIndex
         this.tableData[rowIndex].analyticFeedback = _.cloneDeep(
@@ -779,6 +795,14 @@ export default {
     goto(url) {
       // console.log(url)
       url && window.open(url, '_blank')
+    },
+    pullOnlineQuestion() {
+      if (this.title === '线上问题') {
+        this.$store.dispatch('monthlyReportEdit/pullOnlineQuestion', {
+          domKey: this.baseDataDomKey,
+          route: this.$route
+        })
+      }
     }
   }
 }

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

@@ -11,6 +11,7 @@
           :columns="item.tableHeaders"
           :table-data="item.tableRows"
           :dom-key="item.domKey"
+          :base-data-dom-key="baseDataDomKey"
           plus-table-data-bottom="0px"
         />
         <div v-else-if="title.search(/线上问题/) > -1" class="no-data">

+ 82 - 1
src/views/monthlyReport/childrenPage/editReport/index.vue

@@ -36,6 +36,15 @@
         >
           取消
         </el-button>
+        <!-- <el-button
+          v-if="pageType.search(/All/) > -1 && pageDate && pageDate.status === 20 && (roleCode === 100 || roleCode === 0)"
+          slot="reference"
+          type="primary"
+          size="small"
+          @click="dialogOpen('dialogViewPdf')"
+        >
+          PDF预览
+        </el-button> -->
         <el-button
           v-if="pageType.search(/All/) > -1 && pageDate && pageDate.status === 20 && (roleCode === 100 || roleCode === 0)"
           slot="reference"
@@ -166,6 +175,7 @@
       is-succes
       :show-dialog="false"
       :title="'邮件预览'"
+      submit-button="发布"
       width="70%"
       @succes="publishAllReport">
       <div class="report-delete" style="text-align: initial;min-height: 30vh;max-height: 70vh;overflow-y: scroll;">
@@ -173,6 +183,22 @@
         <div v-if="monthlyReportPreView" style="" v-html="monthlyReportPreView.content" />
       </div>
     </normal-dialog>
+    <!-- 月报pdf预览 -->
+    <normal-dialog
+      ref="dialogViewPdf"
+      class="view-report"
+      style="margin-top: 5vh"
+      is-succes
+      :show-dialog="false"
+      :title="'PDF预览'"
+      submit-button="下载"
+      width="70%"
+      @succes="downloadReportPdf">
+      <div class="report-delete" style="text-align: initial;min-height: 30vh;max-height: 70vh;overflow-y: scroll;">
+        <!-- 月报数据已检查无误,确认发布?-->
+        <div v-if="monthlyReportPrePdfView" style="" v-html="monthlyReportPrePdfView" />
+      </div>
+    </normal-dialog>
     <!-- 月报确认 -->
     <normal-dialog
       ref="dialogConfirm"
@@ -197,7 +223,8 @@ import Menu from './components/menu'
 import Core from './components/core'
 import Clickoutside from 'element-ui/src/utils/clickoutside'
 import normalDialog from '@/components/dialog/normalDialog'
-import { getMonthlyReportPreView } from '@/api/qualityMonthlyReport/edit'
+import { projectManagementUrl } from '@/apiConfig/api'
+import { getMonthlyReportPreView, getMonthlyReportPrePdfView } from '@/api/qualityMonthlyReport/edit'
 
 export default {
   name: '',
@@ -217,6 +244,7 @@ export default {
       anchorActive: '',
       bodyLoading: false,
       monthlyReportPreView: null,
+      monthlyReportPrePdfView: null,
       scrollTop: 0
     }
   },
@@ -271,6 +299,15 @@ export default {
         subReportId: this.$route.query.subReportId
       })
     }
+    // 数据埋点
+    this.monthlyReportBuriedPoint()
+    // 防止页面后退
+    if (this.$route.query.pageType.search(/edit/) > -1) {
+      history.pushState(null, null, document.URL)
+      window.addEventListener('popstate', function() {
+        history.pushState(null, null, document.URL)
+      })
+    }
   },
   destroyed() {
     this.indexShow = false
@@ -279,6 +316,10 @@ export default {
     if (this.$route.query.type && this.$route.query.type === 'create') {
       this.deleteReport({ isMsg: false })
     }
+    // 销毁组件时,取消浏览器前进后端拦截事件
+    window.removeEventListener('popstate', function() {
+      history.pushState(null, null, document.URL)
+    })
   },
   methods: {
     ...mapMutations('monthlyReportEdit',
@@ -422,6 +463,13 @@ export default {
         }
       })
     },
+    // 下载月报pdf
+    downloadReportPdf(key) {
+      this.$refs['dialogViewPdf'].visible = false
+      const { reportId } = this.$route.query
+      const url = `${projectManagementUrl}/monthlyReport/downloadMonthlyReport?id=${reportId}&refrash=true`
+      window.open(url, '_blank')
+    },
     tabClick(tab, event) {
       this.bodyLoading = true
       this.$store.dispatch('monthlyReportEdit/tabActiveChange', {
@@ -437,6 +485,9 @@ export default {
       if (key === 'dialogPublishAll') {
         this.setMonthlyReportPreView()
       }
+      if (key === 'dialogViewPdf') {
+        this.setMonthlyReportPrePdfView()
+      }
       this.$refs[key].visible = true
     },
     sendReport(key) {
@@ -489,7 +540,37 @@ export default {
       if (res.code === 200) {
         this.monthlyReportPreView = res.data
       }
+    },
+    // 月报Pdf预览
+    async setMonthlyReportPrePdfView() {
+      const res = await getMonthlyReportPrePdfView(this.$route.query.reportId)
+      if (res.code === 200) {
+        this.monthlyReportPrePdfView = res.data
+      }
+    },
+    // 埋点
+    monthlyReportBuriedPoint() {
+      const { pageType, type } = this.$route.query
+      if (type !== 'create') {
+        // 月报编辑
+        if (pageType === 'editAll') {
+          window.log({ c: 'report_view', d: 'report_view_edit' })
+        }
+        // 月报浏览
+        if (pageType === 'readAll') {
+          window.log({ c: 'report_view', d: 'report_view_only' })
+        }
+        // 单业务线编辑
+        if (pageType === 'edit') {
+          window.log({ c: 'report_view', d: 'report_view_only_edit' })
+        }
+        // 单业务线浏览
+        if (pageType === 'read') {
+          window.log({ c: 'report_view', d: 'report_view' })
+        }
+      }
     }
+
   }
 }
 </script>

+ 6 - 0
src/views/monthlyReport/index.vue

@@ -25,6 +25,7 @@
         <el-button v-if="tagData.status === 20" type="text" @click="jump('report_home_Publication', '/monthlyReport/edit', { pageType: 'readAll', reportId: reportStatus.id })"> 月报发布</el-button>
         <el-button v-if="tagData.status === 30" type="text" @click="jump('report_home_viewReport', '/monthlyReport/edit', { pageType: 'readAll', reportId: reportStatus.id })"> 查看完整报告</el-button>
         <!--    @click="downloadMonthlyReportFn"    -->
+        <a v-if="isShowPdfPushDow() && tagData.status === 20" target="blank" :href="`${projectManagementUrl}/monthlyReport/downloadMonthlyReport?id=${reportValue}&refrash=true`" :download="`${reportName}.pdf`" style="margin-left: 10px;display: inline-block"><svg-icon icon-class="monthlyReport下载" class="icon" /></a>
         <a v-if="isShowPdfDow()" target="blank" :href="`${projectManagementUrl}/monthlyReport/downloadMonthlyReport?id=${reportValue}`" :download="`${reportName}.pdf`" style="margin-left: 10px;display: inline-block"><svg-icon icon-class="monthlyReport下载" class="icon" /></a>
         <el-button v-if="tagData.status === 0" type="text" @click="sendConfirm(reportData)"> 发送确认</el-button>
       </div>
@@ -211,6 +212,11 @@ export default {
       // tagData.status === 30 && tagData.version !== 'v1' && tagData.version
       return status === 30 && version !== 'v1' && `${version}`.replace(/v/, '') > 1
     },
+    isShowPdfPushDow() {
+      const { status, version } = this.tagData
+      // tagData.status === 30 && tagData.version !== 'v1' && tagData.version
+      return status === 20 && version !== 'v1' && `${version}`.replace(/v/, '') > 1
+    },
     getReportStatus(e) {
       this.contentLoading = true
       this.monthlyReportIndex(e.id)

+ 3 - 2
src/views/projectManage/projectList/components/scheduledMember.vue

@@ -12,11 +12,12 @@
             <div class="projected-type">
               类型:<span>{{ i.scheduleName }}</span>
               时间:<span style="min-width: 200px;">{{ i.startDateStr }} - {{ i.endDateStr }}</span>
-              任务:<span v-for="(s, num) in i.tasks" :key="s.taskId" style="min-width: 10px;margin-right:0;">
+              任务:<span class="projected-hover" style="min-width: 10px;margin-right:0;" @click="jump({ bizId: i.bizId, taskId: i.taskId })">{{ i.taskName }}</span>
+              <!-- 任务:<span v-for="(s, num) in i.tasks" :key="s.taskId" style="min-width: 10px;margin-right:0;">
                   <span class="projected-hover" style="margin-right:0;" @click="jump(s)">
                     {{ s.name }}<b v-if="num < i.tasks.length - 1">,</b>
                   </span>
-                </span>
+                </span> -->
             </div>
           </span>
         </el-col>

+ 19 - 6
src/views/projectManage/requirement/list/index.vue

@@ -231,9 +231,8 @@
               }"
               :size="size"
               placeholder=""
-              @change="(e) => statusChange(e, scope.row.id)"
             >
-              <el-option v-for="o in scope.row.availableStatusList" :key="o.code" :label="o.name" :value="o.code" />
+              <el-option v-for="o in scope.row.availableStatusList" :key="o.code" :label="o.name" :value="o.code" @click.native="statusChange(scope.row, o)" />
             </el-select>
             <span v-else>{{ scope.row.statusName }}</span>
           </template>
@@ -305,6 +304,7 @@
         />
       </div>
     </filterModal>
+    <rqmtStatus v-if="rqmtStatusShow" :status-obj="statusObj" @update="updateStatus" />
   </div>
 </template>
 
@@ -336,6 +336,7 @@ import chartSearchForm from '@/components/searchHeader/searchForm'
 import filterList from '@/views/projectManage/components/filterList'
 import extraUrgent from '@/assets/extraUrgent.png'
 import normalDialog from '@/components/dialog/normalDialog'
+import rqmtStatus from '@/views/projectManage/components/requirementStatus.vue'
 import '@/views/projectManage/publicCss/index.css'
 
 export default {
@@ -346,10 +347,12 @@ export default {
     mainTitle,
     chartView,
     filterModal,
-    chartSearchForm
+    chartSearchForm,
+    rqmtStatus
   },
   data() {
     return {
+      rqmtStatusShow: false,
       size: 'small',
       pickerOptions: {
         shortcuts: [{
@@ -466,12 +469,22 @@ export default {
   },
   methods: {
     // 修改状态
-    async statusChange(e, id) {
-      const res = await updateStatus({ status: e, id })
+    async statusChange(item, value) {
+      this.statusObj = value
+      this.statusObj.id = item.id
+      if (value.name === 'PRD评审通过' || value.name === 'BRD评审通过' || value.name === '技术准入' || value.name === '已上线') {
+        this.rqmtStatusShow = true
+        return
+      }
+      const res = await updateStatus({ status: value.code, id: item.id })
       if (res.code === 200) {
         this.get_charts()
       }
     },
+    updateStatus() {
+      this.rqmtStatusShow = false
+      this.get_charts()
+    },
     filterModalConfirm() {
       this.showChartModal = false
       this.get_charts()
@@ -545,7 +558,7 @@ export default {
       this.loading = true
       const res = await getChartData(this.searchForm)
       this.chartData = res.data
-      this.get_chartListDetial(res.data.data[0].code)
+      this.get_chartListDetial(this.searchForm.code ? this.searchForm.code : res.data.data[0].code)
     },
     async get_chartListDetial(code) {
       this.showChartModal = false

+ 24 - 7
src/views/projectManage/taskList/taskIndex.vue

@@ -365,7 +365,7 @@
               v-model="scope.row.status"
               :size="size"
               placeholder
-              @change="(e) => statusChange(e, scope.row.id)"
+              @change="(e) => statusChange(e, scope.row)"
             >
               <el-option
                 v-for="o in scope.row.availableStatusList"
@@ -475,6 +475,7 @@
         />
       </div>
     </filterModal>
+    <task-dialog v-if="showTaskDialog" :show.sync="showTaskDialog" :task-id="taskId.id" :status-name="taskId.statusString" @getList="getNew" />
   </div>
 </template>
 
@@ -493,9 +494,9 @@ import {
   createFilter,
   filterGetFilter,
   getChartListData,
-  getChartData,
-  updateStatus
+  getChartData
 } from '@/api/taskIndex' // ajax
+import { taskUpdate } from '@/api/projectViewDetails'
 import filterModal from '@/components/filterModal'
 import { settingQueryBizModuleList } from '@/api/defectManage'
 import openDialog from '@/views/projectManage/dialog_vue'
@@ -506,6 +507,7 @@ import mainTitle from '@/components/mainTitle'
 import chartView from '@/components/chartView'
 import chartSearchFormData from './renderData/chartSearchForm'
 import chartSearchForm from '@/components/searchHeader/searchForm'
+import taskDialog from '@/views/projectManage/taskList/dialog/taskDialog' // 任务状态修改(已上线/已提测/已准出)
 import '@/views/projectManage/publicCss/index.css'
 export default {
   components: {
@@ -515,10 +517,12 @@ export default {
     mainTitle,
     chartView,
     filterModal,
-    chartSearchForm
+    chartSearchForm,
+    taskDialog
   },
   data() {
     return {
+      showTaskDialog: false, // 状态弹窗
       size: 'small',
       pickerOptions: {
         shortcuts: [
@@ -684,12 +688,25 @@ export default {
         this.get_taskList()
       }
     },
-    async statusChange(e, id) {
-      const res = await updateStatus({ status: e, id })
+    async statusChange(e, row) {
+      console.log(e, row)
+      if (row.status === 60 || row.status === 70 || row.status === 90 || row.status === 100) {
+        this.taskId = row
+        this.daStatus.map(item => {
+          item.code === row.status ? this.taskId.statusString = item.msg : ''
+        })
+        this.showTaskDialog = true
+        this.nowChangeTask = row
+        return
+      }
+      const res = await taskUpdate({ taskInfoDO: { status: e, id: row.id }})
       if (res.code === 200) {
         this.get_charts()
       }
     },
+    getNew() { // 状态改变成功回调
+      this.get_charts()
+    },
     get_charts() {
       this.logHandle('get_task_charts')
       this.updateChartSearchFormValue()
@@ -700,7 +717,7 @@ export default {
       this.table_loading = true
       const res = await getChartData(this.form_task)
       this.chartData = res.data
-      this.get_chartListDetial(res.data.data[0].code)
+      this.get_chartListDetial((this.form_task && this.form_task.code) ? this.form_task.code : res.data.data[0].code)
     },
     async get_chartListDetial(code) {
       this.showChartModal = false