Browse Source

Merge branch 'http_mock' into Qz_daily_0.1.1

qinzhipeng_v@didiglobal.com 4 năm trước cách đây
mục cha
commit
57f53aec0c

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

@@ -7,6 +7,7 @@ export function getMonthlyReport(reportId) {
   return request({
     url: projectManagementUrl + '/monthlyReport/get',
     method: 'get',
+    timeout: '10000',
     params: {
       reportId
     }
@@ -29,6 +30,7 @@ export function updateMonthlyReport(data) {
   return request({
     url: projectManagementUrl + '/monthlyReport/update',
     method: 'post',
+    timeout: '10000',
     data
   })
 }
@@ -38,6 +40,7 @@ export function updateSubReport(data) {
   return request({
     url: projectManagementUrl + '/monthlyReport/subReport/update',
     method: 'post',
+    timeout: '10000',
     data
   })
 }
@@ -107,6 +110,7 @@ export function getSubReport(params) {
   return request({
     url: projectManagementUrl + '/monthlyReport/subReport/get',
     method: 'get',
+    timeout: '10000',
     params
   })
 }

+ 1 - 0
src/api/qualityMonthlyReport/index.js

@@ -143,6 +143,7 @@ export function createMonthlyReport(data) {
   return request({
     url: TeamManagement + `/monthlyReport/create`,
     method: 'post',
+    timeout: '10000',
     data
   })
 }

+ 2 - 0
src/store/modules/monthlyReport/edit/index.js

@@ -297,10 +297,12 @@ export default {
               if (arr[i].domKey === key) {
                 // 添加子项
                 if (isSub) {
+                  // params.domIndexKey = arr[i].children
                   arr[i].children = [...arr[i].children, { ...params }]
                 }
                 // 添加同级
                 if (!isSub) {
+                  // params.domIndexKey = i + 1
                   arr.splice(i + 1, 0, params)
                 }
                 return

+ 196 - 181
src/views/monthlyReport/childrenPage/editReport/components/MrTable.vue

@@ -1,211 +1,224 @@
 <template>
-  <div @click.stop>
+  <div>
     <div
       v-if="isExpand && analyticFeedback"
       style="padding-top: 10px;"
       v-html="analyticFeedback"
     />
-    <el-table
-      :data="tableData"
-      border
-      style="width: 100%; margin-top: 10px"
-      highlight-current-row
-      row-key="rowKey"
-      :expand-row-keys="expandRowKeys"
-      :header-cell-style="{
-        background: '#F7F7F7',
-        color: '#4a4a4a',
-        'font-size': '14px',
-        'font-weight': '500'
-      }"
-      :cell-style="{ 'font-size': '14px', color: 'rgb(102,102,102)' }"
-      size="small"
-      show-overflow-tooltip="true"
-    >
-      <!-- <el-table-column v-if="index === 0 && tabsActive.indexOf('本月重点问题') > -1
-        && pageType !== 'edit' ? 'expand' : ''" label="展开" type="expand"> -->
-      <el-table-column
-        v-for="(item, index) in setColumns(columns)"
-        :key="item.headerKey"
-        :data-index="index"
-        :prop="item.headerKey"
-        :align="item.align"
-        :label="item.name"
-        :type="item.type"
-        :min-width="setMinWidth(item)"
-        :fixed="isFixed(item, index, columns)"
+    <span @click.stop>
+      <el-table
+        :data="tableData"
+        border
+        style="width: 100%; margin-top: 10px"
+        highlight-current-row
+        row-key="rowKey"
+        :expand-row-keys="expandRowKeys"
+        :header-cell-style="{
+          background: '#F7F7F7',
+          color: '#4a4a4a',
+          'font-size': '14px',
+          'font-weight': '500'
+        }"
+        :cell-style="{ 'font-size': '14px', color: 'rgb(102,102,102)' }"
+        size="small"
+        show-overflow-tooltip="true"
       >
-        <template slot-scope="scope">
-          <!--    展开    -->
-          <div v-if="item.type === 'expand'">
-            <TableExpandRow
-              :analytic-feedback="scope.row.analyticFeedback"
-              @upAnalyticFeedback="setAnalyticFeedback"
-            />
-          </div>
-          <!--    操作列    -->
-          <div v-else-if="item.name === '操作'">
-            <div v-if="isExpand">
-              <el-button
-                v-if="isShowButton(scope.row, item)"
-                type="text"
-                @click.stop="btnFun({ value: '分析反馈' }, scope)"
-                >分析反馈
-              </el-button>
+        <!-- <el-table-column v-if="index === 0 && tabsActive.indexOf('本月重点问题') > -1
+        && pageType !== 'edit' ? 'expand' : ''" label="展开" type="expand"> -->
+        <el-table-column
+          v-for="(item, index) in setColumns(columns)"
+          :key="item.headerKey"
+          :data-index="index"
+          :prop="item.headerKey"
+          :align="item.align"
+          :label="item.name"
+          :type="item.type"
+          :min-width="setMinWidth(item)"
+          :fixed="isFixed(item, index, columns)"
+        >
+          <template slot-scope="scope">
+            <!--    展开    -->
+            <div v-if="item.type === 'expand'">
+              <TableExpandRow
+                :analytic-feedback="scope.row.analyticFeedback"
+                @upAnalyticFeedback="setAnalyticFeedback"
+              />
             </div>
-            <span v-else>
-              <span
-                v-for="(btnItem, btnIndex) in item.defaultValue"
-                :key="btnIndex"
-              >
+            <!--    操作列    -->
+            <div v-else-if="item.name === '操作'">
+              <div v-if="isExpand">
                 <el-button
                   v-if="isShowButton(scope.row, item)"
-                  style="margin-right: 10px"
                   type="text"
-                  @click.stop="btnFun(btnItem, scope)"
-                  >{{ btnItem.value }}</el-button
+                  @click.stop="btnFun({ value: '分析反馈' }, scope)"
+                  >分析反馈
+                </el-button>
+              </div>
+              <span v-else>
+                <span
+                  v-for="(btnItem, btnIndex) in item.defaultValue"
+                  :key="btnIndex"
                 >
+                  <el-button
+                    v-if="isShowButton(scope.row, item)"
+                    style="margin-right: 10px"
+                    type="text"
+                    @click.stop="btnFun(btnItem, scope)"
+                    >{{ btnItem.value }}</el-button
+                  >
+                </span>
               </span>
-            </span>
-          </div>
-          <div
-            v-else
-            class="edit-wrapper"
-            :style="{
-              cursor: pageDate.status < 20 ? 'pointer' : 'auto'
-            }"
-          >
-            <!--  <div v-if="editKeys.indexOf(`${scope.row.rowKey}_${index}`) > -1">  -->
-            <div v-if="editKeys.indexOf(domKey) > -1 && !item.defaultValue">
-              <div v-if="item.displayType === 'Select'">
-                <div v-if="item.selectType && item.selectType === 'Time'">
-                  <el-date-picker
+            </div>
+            <div
+              v-else
+              class="edit-wrapper"
+              :style="{
+                cursor: pageDate.status < 20 ? 'pointer' : 'auto'
+              }"
+            >
+              <!--  <div v-if="editKeys.indexOf(`${scope.row.rowKey}_${index}`) > -1">  -->
+              <div v-if="editKeys.indexOf(domKey) > -1 && !item.defaultValue">
+                <div v-if="item.displayType === 'Select'">
+                  <div v-if="item.selectType && item.selectType === 'Time'">
+                    <el-date-picker
+                      v-model="scope.row[item.headerKey]"
+                      type="date"
+                      style="width: 90%"
+                      value-format="yyyy-MM-dd"
+                      size="mini"
+                      placeholder="选择日期"
+                    />
+                  </div>
+                  <div
+                    v-else-if="
+                      item.selectType && item.selectType === 'SinglePeople'
+                    "
+                  >
+                    <searchPeople :value.sync="scope.row[item.headerKey]" />
+                  </div>
+                  <div
+                    v-else-if="
+                      item.selectType && item.selectType === 'MultiplePeople'
+                    "
+                  >
+                    <searchPeople
+                      :value.sync="scope.row[item.headerKey]"
+                      :multiple="true"
+                    />
+                  </div>
+                  <div
+                    v-else-if="item.selectType && item.selectType === 'people'"
+                  >
+                    <searchPeople
+                      :value.sync="scope.row[item.headerKey]"
+                      :multiple="true"
+                    />
+                  </div>
+                  <el-select
+                    v-else
                     v-model="scope.row[item.headerKey]"
-                    type="date"
-                    style="width: 90%"
-                    value-format="yyyy-MM-dd"
                     size="mini"
-                    placeholder="选择日期"
-                  />
-                </div>
-                <div
-                  v-else-if="
-                    item.selectType && item.selectType === 'SinglePeople'
-                  "
-                >
-                  <searchPeople :value.sync="scope.row[item.headerKey]" />
-                </div>
-                <div
-                  v-else-if="
-                    item.selectType && item.selectType === 'MultiplePeople'
-                  "
-                >
-                  <searchPeople
-                    :value.sync="scope.row[item.headerKey]"
-                    :multiple="true"
-                  />
+                    placeholder="请选择"
+                    style="width: 80%"
+                  >
+                    <el-option
+                      v-for="optionItem in item.selectEnum"
+                      :key="optionItem"
+                      :label="optionItem"
+                      :value="optionItem"
+                      >{{ optionItem }}
+                    </el-option>
+                  </el-select>
                 </div>
-                <div
-                  v-else-if="item.selectType && item.selectType === 'people'"
-                >
-                  <searchPeople
-                    :value.sync="scope.row[item.headerKey]"
-                    :multiple="true"
-                  />
+
+                <el-input
+                  v-else-if="item.displayType === 'Texterea'"
+                  v-model="scope.row[item.headerKey]"
+                  type="textarea"
+                  placeholder="请输入"
+                  :maxlength="item.name.search(/天数/) > -1 ? 10 : ''"
+                  :autosize="{
+                    minRows: item.name.search(/天数/) > -1 ? 1 : 2,
+                    maxRows: 30
+                  }"
+                  show-word-limit
+                />
+                <div v-else-if="item.displayType === 'Cascader'">
+                  <Cascader v-model="scope.row[item.headerKey]" />
                 </div>
-                <el-select
+                <div v-else-if="item.defaultValue === 'Select'" />
+                <el-input
                   v-else
                   v-model="scope.row[item.headerKey]"
                   size="mini"
-                  placeholder="请选择"
-                  style="width: 80%"
-                >
-                  <el-option
-                    v-for="optionItem in item.selectEnum"
-                    :key="optionItem"
-                    :label="optionItem"
-                    :value="optionItem"
-                    >{{ optionItem }}
-                  </el-option>
-                </el-select>
+                  maxlength="100"
+                  show-word-limit
+                  placeholder="请输入"
+                />
               </div>
-
-              <el-input
-                v-else-if="item.displayType === 'Texterea'"
-                v-model="scope.row[item.headerKey]"
-                type="textarea"
-                placeholder="请输入"
-                :maxlength="item.name.search(/天数/) > -1 ? 10 : ''"
-                :autosize="{
-                  minRows: item.name.search(/天数/) > -1 ? 1 : 2,
-                  maxRows: 30
-                }"
-                show-word-limit
-              />
-              <div v-else-if="item.displayType === 'Cascader'">
-                <Cascader v-model="scope.row[item.headerKey]" />
-              </div>
-              <div v-else-if="item.defaultValue === 'Select'" />
-              <el-input
+              <span v-else-if="item.displayType === 'Text'">{{
+                item.defaultValue[0].value
+              }}</span>
+              <!--  <div v-else class="edit-cell" @click.stop="editLine(scope.row, index)">  -->
+              <div
                 v-else
-                v-model="scope.row[item.headerKey]"
-                size="mini"
-                maxlength="100"
-                show-word-limit
-                placeholder="请输入"
-              />
-            </div>
-            <span v-else-if="item.displayType === 'Text'">{{
-              item.defaultValue[0].value
-            }}</span>
-            <!--  <div v-else class="edit-cell" @click.stop="editLine(scope.row, index)">  -->
-            <div
-              v-else
-              class="edit-cell"
-              @click.stop="editLine(scope.row, index)"
-            >
-              <div v-if="item.displayType === 'Cascader'">
-                <CascaderInfo :team-data="scope.row[item.headerKey]" />
-              </div>
-              <div v-else-if="item.displayType === 'Select'">
-                <!-- 单个人员选择 -->
-                <div
-                  v-if="item.selectType && item.selectType === 'SinglePeople'"
-                >
-                  <MultiplePeopleInfo :team-data="scope.row[item.headerKey]" />
+                class="edit-cell"
+                @click.stop="editLine(scope.row, index)"
+              >
+                <div v-if="item.displayType === 'Cascader'">
+                  <CascaderInfo :team-data="scope.row[item.headerKey]" />
                 </div>
-                <!-- 多个人员选择 -->
-                <div
-                  v-else-if="
-                    item.selectType && item.selectType === 'MultiplePeople'
-                  "
-                >
-                  <!-- <searchPeople :value.sync="scope.row[item.headerKey]"
+                <div v-else-if="item.displayType === 'Select'">
+                  <!-- 单个人员选择 -->
+                  <div
+                    v-if="item.selectType && item.selectType === 'SinglePeople'"
+                  >
+                    <MultiplePeopleInfo
+                      :team-data="scope.row[item.headerKey]"
+                    />
+                  </div>
+                  <!-- 多个人员选择 -->
+                  <div
+                    v-else-if="
+                      item.selectType && item.selectType === 'MultiplePeople'
+                    "
+                  >
+                    <!-- <searchPeople :value.sync="scope.row[item.headerKey]"
                   :multiple="true" disabled />-->
-                  <MultiplePeopleInfo :team-data="scope.row[item.headerKey]" />
+                    <MultiplePeopleInfo
+                      :team-data="scope.row[item.headerKey]"
+                    />
+                  </div>
+                  <!-- 多个人员选择 -->
+                  <div
+                    v-else-if="item.selectType && item.selectType === 'people'"
+                  >
+                    <MultiplePeopleInfo
+                      :team-data="scope.row[item.headerKey]"
+                    />
+                  </div>
+                  <div v-else>
+                    {{ scope.row[item.headerKey] }}
+                  </div>
                 </div>
-                <!-- 多个人员选择 -->
-                <div
-                  v-else-if="item.selectType && item.selectType === 'people'"
-                >
-                  <MultiplePeopleInfo :team-data="scope.row[item.headerKey]" />
+                <div v-else-if="item.displayType === 'Texterea'">
+                  <TextInfo :text="scope.row[item.headerKey]" />
                 </div>
                 <div v-else>
-                  {{ scope.row[item.headerKey] }}
+                  <span v-html="scope.row[item.headerKey]" />
                 </div>
               </div>
-              <div v-else-if="item.displayType === 'Texterea'">
-                <TextInfo :text="scope.row[item.headerKey]" />
-              </div>
-              <div v-else>
-                <span v-html="scope.row[item.headerKey]" />
-              </div>
             </div>
-          </div>
-        </template>
-      </el-table-column>
-    </el-table>
-    <div class="plus-table-data" :style="{ marginBottom: plusTableDataBottom }">
+          </template>
+        </el-table-column>
+      </el-table>
+    </span>
+
+    <div
+      class="plus-table-data"
+      :style="{ marginBottom: plusTableDataBottom }"
+      @click.stop
+    >
       <el-button
         v-if="pageDate && pageDate.status < 20"
         type="text"
@@ -215,9 +228,11 @@
         新增
       </el-button>
     </div>
-    <slot name="fixedText" />
-    <markingIssues ref="markingIssues" />
-    <Analysis ref="Analysis" @upData="upDataAnalysis" />
+    <span @click.stop>
+      <slot name="fixedText" />
+      <markingIssues ref="markingIssues" />
+      <Analysis ref="Analysis" @upData="upDataAnalysis" />
+    </span>
   </div>
 </template>
 

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

@@ -8,7 +8,7 @@
           {{ item.label }}
           <div v-if="isShow(item.copywriter)">%</div>
         </div>
-        <div v-if="index < subTitle.length - 1"></div>
+        <div v-if="index < subTitle.length - 1">{{ item.copywriter.search(/发布次数|全量回滚率/) > -1 ? ';' : isComma(item.copywriter) }}</div>
       </div>
     </div>
   </div>
@@ -58,6 +58,24 @@ export default {
       }
       // console.log(label, num)
       return label === '全量回滚率' && num > 1
+    },
+    // 判断是否显示逗号
+    isComma(label) {
+      if (label.search(/裸奔上线次数/) > -1) {
+        if (this.isShowItem('裸奔上线率')) {
+          return ','
+        } else {
+          return ''
+        }
+      }
+      if (label.search(/小流量回滚次数/) > -1) {
+        if (this.isShowItem('全量回滚率')) {
+          return ','
+        } else {
+          return ';'
+        }
+      }
+      return ','
     }
   }
 }

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

@@ -19,7 +19,7 @@
         v-html="item.value || '请点此处击添加数据!'"
       />
     </div>
-    <div v-else style="margin-top: 10px" v-html="item.value || '暂无数据!'" />
+    <div v-else style="margin-top: 10px;padding-left: 20px;" v-html="item.value || '暂无数据!'" />
   </div>
 </template>
 

+ 11 - 7
src/views/monthlyReport/childrenPage/editReport/components/anchor.vue

@@ -76,7 +76,7 @@
             class="title"
             :class="{ active: active === item.domKey, hide: !item.isVisible }"
           >
-            <span v-if="isShowItem(item.isVisible) && item.isVisible" v-html="headerIndex(item, index)" /><span v-else style="color: transparent">一、</span>{{
+            <span v-html="headerIndex(item, index)" />{{
               setTitle(item.title)
             }}</span
           >
@@ -100,6 +100,7 @@
 <script>
 // import _ from 'lodash'
 import { toChinesNum } from '@/utils'
+import _ from 'lodash'
 
 export default {
   name: 'Anchor',
@@ -141,11 +142,14 @@ export default {
   },
   methods: {
     headerIndex(item, index) {
-      if (item.type === 'Head1') return ''
-      if (item.depth === 3) {
-        return `<span>${toChinesNum(item.domIndexKey + 1)}、</span>`
+      const indexKey = item.domIndexKey + 1
+      if (!_.isNaN(indexKey) && _.isNumber(indexKey)) {
+        if (item.type === 'Head1') return ''
+        if (item.depth === 3) {
+          return `<span>${toChinesNum(indexKey)}、</span>`
+        }
+        return `${indexKey}、`
       }
-      return `${item.domIndexKey + 1}、`
     },
     mouseMoveItem(event, item) {
       // console.log(event, item, 66)
@@ -229,8 +233,8 @@ export default {
             len++
           }
         })
-      console.log(len)
-      console.log(this.list)
+      // console.log(len)
+      // console.log(this.list)
       return len
     }
   }

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

@@ -46,6 +46,7 @@
         }"
         v-html="headerTitle"
       />
+      <span v-if="baseData.title.search(/延期|发布&回滚/) > -1">。</span>
       <el-button
         v-if="headerTitle.indexOf('线下缺陷') > -1 && pageDate.status < 20"
         type="text"

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

@@ -88,6 +88,7 @@ export default {
       }
       this.modalClose()
       this.$refs.normalDialog.visible = false
+      this.$store.commit('monthlyReportEdit/SET_INDEX_TITLE')
     },
     modalClose() {
       this.normalAreaName = ''

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

@@ -130,7 +130,7 @@ export default {
       if (item.children && item.children.length) {
         setHiddenAncestor(item.children)
       }
-      this.$store.commit('monthlyReportEdit/SET_INDEX_TITLE')
+      // this.$store.commit('monthlyReportEdit/SET_INDEX_TITLE')
     },
     // 添加同级子项
     addItem(title) {

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

@@ -191,7 +191,7 @@
       :show-dialog="false"
       :title="'取消月报'"
       width="320px"
-      @succes="$router.push({ path: '/monthlyReport/index' })"
+      @succes="$router.push({ path: '/monthlyReport/index' });window.log({ c: 'report_edit', d: 'report_edit_cancel' })"
       @cancel="$refs.dialogCancel.visible = false"
     >
       <div class="report-delete">
@@ -468,6 +468,7 @@ export default {
             this.$store.commit('monthlyReportEdit/SET_LOADING', false)
           }
           if (key === 'cb') {
+            window.log({ c: 'report_edit', d: 'report_edit_save' })
             this.$message.success('保存成功!')
             // this.$router.push({ path: '/monthlyReport/index' })
           }
@@ -481,18 +482,21 @@ export default {
         this.$store.dispatch('monthlyReportEdit/confirmReport', {
           id: this.$route.query.subReportId,
           callback: () => {
+            window.log({ c: 'report_edit', d: 'report_edit_confirm' })
             this.$store.commit('monthlyReportEdit/SET_LOADING', false)
             this.$router.push({ path: '/monthlyReport/index' })
           }
         })
       })
     },
+    // 删除月报
     deleteReport(key) {
       this.$refs['dialogDelete'].visible = false
       if (key === '删除') {
         this.$store.dispatch('monthlyReportEdit/deleteReport', {
           key,
           callback: () => {
+            window.log({ c: 'report_edit', d: 'report_edit_delete' })
             this.$router.push({ path: '/monthlyReport/index' })
           }
         })
@@ -500,12 +504,14 @@ export default {
         // this.$message('删除操作已取消!')
       }
     },
+    // 月报发布确认
     publishAllReport(key) {
       this.$refs['dialogPublishAll'].visible = false
       this.$store.commit('monthlyReportEdit/SET_LOADING', true)
       this.$store.dispatch('monthlyReportEdit/publishAllReport', {
         id: this.$route.query.reportId,
         callback: () => {
+          window.log({ c: 'report_edit', d: 'report_edit_push' })
           this.$store.commit('monthlyReportEdit/SET_LOADING', false)
           this.$router.push({ path: '/monthlyReport/index' })
         }
@@ -531,6 +537,7 @@ export default {
       this.$store.dispatch('monthlyReportEdit/sendReport', {
         id: this.$route.query.reportId,
         callback: () => {
+          window.log({ c: 'report_edit', d: 'report_edit_send' })
           this.$store.commit('monthlyReportEdit/SET_LOADING', false)
           // this.$store.commit('monthlyReportEdit/SET_LOADING', false)
           this.$router.push({ path: '/monthlyReport/index' })
@@ -567,6 +574,7 @@ export default {
           subReportIds: list
         },
         callback: () => {
+          window.log({ c: 'report_edit', d: 'report_edit_return' })
           this.$store.commit('monthlyReportEdit/SET_LOADING', false)
           this.$message.success('退回成功!')
           this.$router.push({ path: '/monthlyReport/index' })