瀏覽代碼

eslint&根据团队带出负责人

洪海涛 4 年之前
父節點
當前提交
88aadbfa38

+ 9 - 5
src/components/select/searchPeople.vue

@@ -28,7 +28,9 @@
   </el-select>
 </template>
 <script>
-import { memberQueryMemberInfoByIDAPorName } from '@/api/projectIndex'
+// import { memberQueryMemberInfoByIDAPorName } from '@/api/projectIndex'
+import { getListPerson } from '@/api/onlineproblem'
+
 export default {
   props: {
     value: {
@@ -103,15 +105,17 @@ export default {
     },
     initMore(arr) { // 当多人时候,对数组每一个人员进行搜索
       if (this.multiple) {
-        for (const item of arr) {
-          this.getMember(item, true)
-        }
+        // for (const item of arr) {
+        //   this.getMember(item, true)
+        // }
+        this.getMember(arr, true)
       } else {
         this.getMember(arr, true)
       }
     },
     async getMember(query, initMore = false) {
-      const res = await memberQueryMemberInfoByIDAPorName({ memberIDAP: query })
+      // const res = await memberQueryMemberInfoByIDAPorName({ memberIDAP: query })
+      const res = await getListPerson({ memberIDAPs: typeof query === 'string' ? [query] : query })
       if (res.data === null) {
         return
       }

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

@@ -8,7 +8,6 @@
     clearable
     collapse-tags
     style="width: 100%"
-    reserve-keyword
     placeholder="请选择"
     :remote-method="remoteMethod"
     @change="changeCascader">
@@ -107,6 +106,7 @@ export default {
     },
     changeCascader(value) {
       this.$emit('input', value)
+      this.$emit('change', value)
     }
   }
 }

+ 233 - 153
src/views/monthlyReport/childrenPage/editReport/components/MrTable/index.vue

@@ -19,8 +19,6 @@
         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"
@@ -42,19 +40,18 @@
             </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>
               </div>
               <span v-else>
-                <span
-                  v-for="(btnItem, btnIndex) in item.defaultValue"
-                  :key="btnIndex"
-                >
+                <span v-for="(btnItem, btnIndex) in item.defaultValue" :key="btnIndex">
                   <!--另存为-->
                   <span v-if="btnItem.value === '另存为' && isShowButton(scope.row, item)" style="margin-right: 10px">
                     <el-dropdown @command="(command) => saveAsRow(command, scope.row, item)">
@@ -63,107 +60,174 @@
                         effect="dark"
                         content="将线上问题另存到其他业务线"
                         placement="top"
-                        >
-                        <el-button type="text">
-                        另存
-                      </el-button>
+                      >
+                        <el-button type="text">另存</el-button>
                       </el-tooltip>
                       <el-dropdown-menu v-if="subReportInfo" slot="dropdown">
-                        <el-dropdown-item v-for="subItem in subReportInfo.filter(subElm => subReportInfoFilter(subElm) )" :key="subItem.id" :command="subItem">
+                        <el-dropdown-item
+                          v-for="subItem in subReportInfo.filter(subElm => subReportInfoFilter(subElm) )"
+                          :key="subItem.id"
+                          :command="subItem">
                           {{ subItem.reportName }}
                         </el-dropdown-item>
                       </el-dropdown-menu>
                     </el-dropdown>
                   </span>
-    <!--链接-->
-        <span v-else-if="btnItem.value === '链接' && isShowButton(scope.row, item)" @click.stop>
-                    <el-popover
-                      v-if="scope.row.operationTarget"
-                      placement="bottom-start"
-                      trigger="hover"
-                    >
+                  <!--链接-->
+                  <span v-else-if="btnItem.value === '链接' && isShowButton(scope.row, item)" @click.stop>
+                    <el-popover v-if="scope.row.operationTarget" placement="bottom-start" trigger="hover">
                       <el-button-group>
-                        <el-button size="small" type="info" plain @click="goto(scope.row.operationTarget)">访问链接</el-button>
+                        <el-button
+                          size="small"
+                          type="info"
+                          plain
+                          @click="goto(scope.row.operationTarget)"
+                        >
+                          访问链接
+                        </el-button>
                         <el-button size="small" type="info" plain @click="btnFun(btnItem, scope)">编辑</el-button>
-                        <el-button size="small" type="info" plain @click="scope.row.operationTarget = ''">取消链接</el-button>
+                        <el-button
+                          size="small"
+                          type="info"
+                          plain
+                          @click="scope.row.operationTarget = ''"
+                        >
+                          取消链接
+                        </el-button>
                       </el-button-group>
-                    <el-button slot="reference" style="margin-right: 10px" type="text">链接</el-button>
+                      <el-button slot="reference" style="margin-right: 10px" type="text">链接</el-button>
                     </el-popover>
                     <el-button
                       v-else
                       style="margin-right: 10px"
                       type="text"
                       @click.stop="btnFun(btnItem, scope)"
-                      >链接</el-button>
+                    >
+                      链接
+                    </el-button>
                   </span>
-    <el-button v-else-if="isShowButton(scope.row, item)" style="margin-right: 10px" type="text" @click.stop="btnFun(btnItem, scope)">{{ btnItem.value }}</el-button>
-    </span>
-    </span>
-  </div>
-  <div v-else class="edit-wrapper" :style="{ cursor: pageDate && 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]" 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>
-      </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 === 'CascaderSingle'">
-        <CascaderSingle v-model="scope.row[item.headerKey]" />
-      </div>
-      <div v-else-if="item.displayType === 'Cascader'">
-        <Cascader v-model="scope.row[item.headerKey]" />
-      </div>
-      <div v-else-if="item.defaultValue === 'Select'" />
-      <el-input 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 === 'CascaderSingle'">
-        <CascaderSingleInfo :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]" />
-        </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]" />
-        </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.displayType === 'Texterea'" :style="{cursor: item.name === '问题' && scope.row.operationTarget ? 'pointer' : 'auto'}" @click.stop="item.name === '问题' && pageType.search(/edit/) < 0 && goto(scope.row.operationTarget) || editLine(scope.row, index)">
-        <TextInfo :text-align="item.name" :text="scope.row[item.headerKey]" />
-      </div>
-      <div v-else>
-        <span v-html="scope.row[item.headerKey]" />
+                  <el-button
+                    v-else-if="isShowButton(scope.row, item)"
+                    style="margin-right: 10px"
+                    type="text"
+                    @click.stop="btnFun(btnItem, scope)"
+                  >
+                    {{ btnItem.value }}
+                  </el-button>
+                </span>
+              </span>
+            </div>
+            <!-- 其他操作区域 -->
+            <div v-else class="edit-wrapper" :style="{ cursor: pageDate && pageDate.status < 20 ? 'pointer' : 'auto' }">
+              <!-- 编辑区域 -->
+              <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 :ref="`${scope.row.rowKey}_9867`" :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]"
+                    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>
+                </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 === 'CascaderSingle'">
+                  <CascaderSingle v-model="scope.row[item.headerKey]" />
+                </div>
+                <!-- 团队多选 -->
+                <div v-else-if="item.displayType === 'Cascader'">
+                  <Cascader v-model="scope.row[item.headerKey]" @change="(value) => cascaderChange(value, scope)" />
+                </div>
+                <!-- 下拉选择 -->
+                <div v-else-if="item.defaultValue === 'Select'" />
+                <!-- 默认输入框 -->
+                <el-input
+                  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 === 'CascaderSingle'">
+                  <CascaderSingleInfo :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]" />
+                  </div>
+                  <!-- 多个人员选择 -->
+                  <div v-else-if=" item.selectType && item.selectType === 'MultiplePeople'">
+                    <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.displayType === 'Texterea'"
+                  :style="{cursor: item.name === '问题' && scope.row.operationTarget ? 'pointer' : 'auto'}"
+                  @click.stop="item.name === '问题' && pageType.search(/edit/) < 0 && goto(scope.row.operationTarget) || editLine(scope.row, index)"
+                >
+                  <TextInfo :text-align="item.name" :text="scope.row[item.headerKey]" />
+                </div>
+                <div v-else>
+                 <span v-html="scope.row[item.headerKey]" />
                 </div>
               </div>
             </div>
@@ -172,19 +236,19 @@
       </el-table>
     </span>
 
-        <div class="plus-table-data" :style="{ marginBottom: plusTableDataBottom }" @click.stop>
-          <el-button v-if="pageDate && pageDate.status < 20" type="text" @click.stop="addTableData">
-            <svg-icon icon-class="data-plus" class="icon" />
-            新增
-          </el-button>
-        </div>
-        <span @click.stop>
+    <div class="plus-table-data" :style="{ marginBottom: plusTableDataBottom }" @click.stop>
+      <el-button v-if="pageDate && pageDate.status < 20" type="text" @click.stop="addTableData">
+        <svg-icon icon-class="data-plus" class="icon" />
+        新增
+      </el-button>
+    </div>
+    <span @click.stop>
       <slot name="fixedText" />
       <markingIssues ref="markingIssues" />
       <Analysis ref="Analysis" @upData="upDataAnalysis" />
       <LinkEdit ref="LinkEdit" @change="linkEditChange" />
     </span>
-      </div>
+  </div>
 </template>
 
 <script>
@@ -201,7 +265,7 @@ import markingIssues from '../markingIssues'
 import CascaderSingle from '../CascaderSingle'
 import CascaderSingleInfo from '../CascaderSingleInfo'
 import searchPeople from '@/components/select/searchPeople' // 人员select
-import { updateAnalyticFeedback } from '@/api/qualityMonthlyReport/edit'
+import { updateAnalyticFeedback, getDeptCharge } from '@/api/qualityMonthlyReport/edit'
 import { reportDataBack } from '@/store/modules/monthlyReport/edit/utils.js'
 // import { getDeptByKeyWord } from '@/api/qualityMonthlyReport'
 
@@ -312,7 +376,8 @@ export default {
     }, 3000)
   },
   methods: {
-    isEdit() {},
+    isEdit() {
+    },
     setMinWidth(item) {
       let width = 80
       if (item.name === '操作') {
@@ -410,8 +475,23 @@ export default {
       })
       this.editLine()
     },
-    cascaderChange(value, headerKey, row) {
-      console.log(value, headerKey, row)
+    // 监听团队数据变化,动态改变问题负责人名称
+    async cascaderChange(value, scope) {
+      if (this.title === '本月重点问题') {
+        // console.log({ value, scope, columns: this.columns, title: this.title })
+        const peopleHeaderKey = this.columns.filter(elm => elm.name === '责任人')[0].headerKey
+        const resKey = `${scope.row.rowKey}_9867`
+        // console.log(this.$refs[resKey][0], resKey)
+        if (value.length) {
+          this.$refs[resKey][0].firstGetArr = true
+          const res = await getDeptCharge({
+            deptCode: value
+          })
+          scope.row[peopleHeaderKey] = Array.from(new Set(res.data.map(elm => elm.manageName)))
+        } else {
+          scope.row[peopleHeaderKey] = []
+        }
+      }
     },
     // 添加插入
     setColumns(columns) {
@@ -591,73 +671,73 @@ export default {
 }
 </script>
 
-<style scoped lang="less">
-  .edit-wrapper {
-    .edit-cell {
-      min-height: 23px;
-      width: 100%;
-    }
+<style scoped lang='less'>
+.edit-wrapper {
+  .edit-cell {
+    min-height: 23px;
+    width: 100%;
   }
+}
 
-  .plus-table-data {
-    margin-top: 2px;
-  }
+.plus-table-data {
+  margin-top: 2px;
+}
+
+/deep/ .el-table__expand-column {
+  border-right: 0;
 
-  /deep/ .el-table__expand-column {
-    border-right: 0;
+  .el-icon-arrow-right:before {
+    // 这是展开图标
+    border: 1px solid rgba(0, 0, 0, 0.14901960784313725);
+  }
+}
 
+/deep/ .el-table__expand-column .cell {
+  .el-table__expand-icon {
     .el-icon-arrow-right:before {
       // 这是展开图标
-      border: 1px solid rgba(0, 0, 0, 0.14901960784313725);
+      content: '\e6d9';
+      //content: "\e6d8";
     }
   }
 
-  /deep/ .el-table__expand-column .cell {
-    .el-table__expand-icon {
-      .el-icon-arrow-right:before {
-        // 这是展开图标
-        content: '\e6d9';
-        //content: "\e6d8";
-      }
-    }
-
-    .el-table__expand-icon--expanded {
-      // 这是点击后的旋转角度
-      //transform: rotate(180deg);
-      transform: rotate(0deg);
+  .el-table__expand-icon--expanded {
+    // 这是点击后的旋转角度
+    //transform: rotate(180deg);
+    transform: rotate(0deg);
 
-      .el-icon-arrow-right:before {
-        // 这是展开图标
-        //content: "\e6d9";
-        content: '\e6d8' !important;
-      }
+    .el-icon-arrow-right:before {
+      // 这是展开图标
+      //content: "\e6d9";
+      content: '\e6d8' !important;
     }
   }
+}
 
-  /deep/ .svg-icon {
-    width: 1em;
-    height: 1em;
-  }
+/deep/ .svg-icon {
+  width: 1em;
+  height: 1em;
+}
 
-  /deep/ .el-table__expanded-cell {
-    padding-bottom: 0;
-    padding-left: 60px;
-  }
+/deep/ .el-table__expanded-cell {
+  padding-bottom: 0;
+  padding-left: 60px;
+}
 
-  /deep/ .el-button {
-    font-weight: 400;
-  }
+/deep/ .el-button {
+  font-weight: 400;
+}
 
-  /deep/ .red {
-    color: red;
-  }
+/deep/ .red {
+  color: red;
+}
 
-  /deep/ .green {
-    color: green;
-  }
+/deep/ .green {
+  color: green;
+}
 
-  /deep/ .yellow {
-    color: yellow;
-  }
+/deep/ .yellow {
+  color: yellow;
+}
 
 </style>

+ 19 - 7
src/views/monthlyReport/childrenPage/editReport/components/markingIssues.vue

@@ -27,6 +27,7 @@
         </el-form-item>
         <el-form-item label="责任人">
           <searchPeople
+            ref="searchPeople"
             style="width: 100%"
             :value.sync="multiplePeople"
             :multiple="true"
@@ -77,6 +78,21 @@ export default {
       return this.$store.state.monthlyReportEdit.selectEnum
     }
   },
+  watch: {
+    cascaderValue: {
+      handler(newV, old) {
+        if (newV.length) {
+          if (this.$refs.searchPeople) {
+            this.$refs.searchPeople.firstGetArr = true
+          }
+          this.setDeptCharge()
+        } else {
+          this.multiplePeople = ''
+        }
+      },
+      deep: true
+    }
+  },
   methods: {
     uuid10,
     openModal(params) {
@@ -166,20 +182,16 @@ export default {
       this.modalShow = false
       this.$refs.normalDialog.visible = false
     },
-    // 设置部门数据
+    // 根据部门数据,设置团队负责人
     async setDeptCharge() {
       const res = await getDeptCharge({ deptCode: this.cascaderValue })
       if (res.code === 200) {
         if (!this.multiplePeople) {
           this.multiplePeople = []
         }
-        console.log(this.multiplePeople)
-        console.log(res.data.map(elm => elm.manageName))
-        this.multiplePeople = [...this.multiplePeople, ...res.data.map(elm => elm.manageName)]
-        // console.log(this.multiplePeople)
-        // this.multiplePeople = Array.from(new Set([...this.multiplePeople, ...this.cascaderValue.map(elm => elm.manageName)]))
+        // this.multiplePeople = [...this.multiplePeople, ...res.data.map(elm => elm.manageName)]
+        this.multiplePeople = res.data.map(elm => elm.manageName)
         this.multiplePeople = Array.from(new Set(this.multiplePeople))
-        // console.log(this.multiplePeople)
       }
     }
   }