Переглянути джерело

业务线改造 项目管理

qinzhipeng_v 5 роки тому
батько
коміт
95e4b8bae2

+ 11 - 3
src/api/defectManage.js

@@ -89,10 +89,10 @@ export function projectListOnlyInfo(data) {
   })
 }
 
-// 业务线
-export function queryBizTypeList(data) {
+// 获取业务线
+export function settingGetBizList(data) {
   return request({
-    url: TeamManagement + `/setting/queryBizTypeList`,
+    url: TeamManagement + `/setting/getBizList`,
     method: 'post',
     data
   })
@@ -105,3 +105,11 @@ export function releaseList() {
     method: 'get'
   })
 }
+
+// 模块
+export function settingQueryBizModuleList(bizId) {
+  return request({
+    url: TeamManagement + '/setting/queryBizModuleList?bizId=' + bizId,
+    method: 'get'
+  })
+}

+ 25 - 8
src/api/projectIndex.js

@@ -18,14 +18,6 @@ export function projectCreate(data) {
     data
   })
 }
-// 业务线(下拉菜单)
-export function projectBizList(data) {
-  return request({
-    url: TeamManagement + `/project/bizList`,
-    method: 'post',
-    data
-  })
-}
 // 搜索员工信息
 export function memberQueryMemberInfoByIDAPorName(data) {
   return request({
@@ -107,3 +99,28 @@ export function requirementQueryRequirementInfoList(data) {
     data
   })
 }
+// 获取业务线
+export function settingGetBizList(data) {
+  return request({
+    url: TeamManagement + `/setting/getBizList`,
+    method: 'post',
+    data
+  })
+}
+
+// 设置业务线
+export function settingUserSetBiz(data) {
+  return request({
+    url: TeamManagement + `/setting/userSetBiz`,
+    method: 'post',
+    data
+  })
+}
+
+// 获取业务线
+export function settingUserGetBiz() {
+  return request({
+    url: TeamManagement + `/setting/userGetBiz`,
+    method: 'get'
+  })
+}

+ 9 - 0
src/api/requirement.js

@@ -106,3 +106,12 @@ export function addComment(data) {
   })
 }
 
+// 获取业务线
+export function settingGetBizList(data) {
+  return request({
+    url: requestIp + `/setting/getBizList`,
+    method: 'post',
+    data
+  })
+}
+

+ 0 - 8
src/api/taskIndex.js

@@ -10,14 +10,6 @@ export function taskList(data) {
     data
   })
 }
-// 任务名称(id)
-export function taskIdAndName(data) {
-  return request({
-    url: TeamManagement + `/task/idAndName`,
-    method: 'post',
-    data
-  })
-}
 
 // 下拉菜单
 export function configShowTaskEnum() {

+ 74 - 9
src/layout/components/Navbar.vue

@@ -2,7 +2,31 @@
   <div class="navbar">
     <div>
       <!-- <hamburger :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" /> -->
-      <breadcrumb class="breadcrumb-container" />
+      <!-- <breadcrumb class="breadcrumb-container" /> -->
+      <el-dropdown v-show="status" placement="bottom" trigger="click" @command="sumTypeCkeck">
+        <el-button type="primary">
+          {{ sumType }}<i class="el-icon-arrow-down el-icon--right" />
+        </el-button>
+        <el-dropdown-menu slot="dropdown">
+          <div style="margin: 0 10% 10px;">
+            <el-select v-model="value" filterable remote reserve-keyword :remote-method="remoteMethod" size="small" style="width: 100%" placeholder="请搜索业务线">
+              <el-option v-for="item in arr_data" :key="item.code" :label="item.name" :value="item.code" @click.native="sumTypeCkeck(item)">
+                {{ item.name }}
+              </el-option>
+            </el-select>
+          </div>
+          <div style="height: 200px; overflow:scroll; overflow-x: hidden">
+            <el-dropdown-item
+              v-for="(item,index) in sumTypeArray"
+              :key="index"
+              :label="item.name"
+              :value="item.code"
+              :command="item"
+              v-text="item.name"
+            />
+          </div>
+        </el-dropdown-menu>
+      </el-dropdown>
     </div>
     <div>
       <div class="right-menu" style="display: fiex; align-items: center; justify-content: space-between;">
@@ -23,23 +47,29 @@
 
 <script>
 import { mapGetters } from 'vuex'
-import Breadcrumb from '@/components/Breadcrumb'
-// import Hamburger from '@/components/Hamburger'
+// import Breadcrumb from '@/components/Breadcrumb' // 面包屑
+// import Hamburger from '@/components/Hamburger'  // 导航开关
 import { settingQueryBizTypeList } from '@/api/settingQueryBizTypeList.js'
 import Utils from '../../util.js'
 import { logoutUrl } from '@/apiConfig/requestIP.js'
-import { memberQueryMemberInfoByIDAPorName } from '@/api/projectIndex'
+import { memberQueryMemberInfoByIDAPorName, settingGetBizList, settingUserSetBiz, settingUserGetBiz } from '@/api/projectIndex'
 
 export default {
-  components: {
-    Breadcrumb
-    // Hamburger
-  },
+  // components: {
+  //   Breadcrumb
+  //   Hamburger
+  // },
   data() {
     return {
       bizOptions: [],
       show2: false,
       options: [],
+      value: '',
+      arr_data: [],
+      sumTypeArray: [],
+      sumType: '',
+      formulaArea: '', // 公式的文本框
+      bizID: localStorage.getItem('bizId'),
       bizShow: {
         id: ''
       }
@@ -48,7 +78,8 @@ export default {
   computed: {
     ...mapGetters([
       'sidebar',
-      'avatar'
+      'avatar',
+      'status'
     ]),
     username() {
       return localStorage.getItem('realname')
@@ -58,6 +89,17 @@ export default {
     this.get_bizArr()
   },
   methods: {
+    remoteMethod(query) {
+      if (query !== '') {
+        setTimeout(() => {
+          settingGetBizList({ bizName: query }).then(res => {
+            this.arr_data = res.data
+          })
+        }, 200)
+      } else {
+        this.arr_data = []
+      }
+    },
     // toggleSideBar() {
     //   this.$store.dispatch('app/toggleSideBar')
     // },
@@ -66,6 +108,13 @@ export default {
     //   // this.$router.push(`/login?redirect=${this.$route.fullPath}`)
     //   location.href = logoutUrl
     // },
+    sumTypeCkeck(type) { // 下拉列表的点击事件
+      this.sumType = type.name
+      settingUserSetBiz({ bizId: type.code }).then(res => {
+        localStorage.setItem('bizId', type.code)
+        window.location.reload()
+      })
+    },
     get_bizArr() {
       settingQueryBizTypeList({}).then(res => {
         this.bizOptions = res.data.list
@@ -76,6 +125,22 @@ export default {
           this.options = res.data[0]
         })
       })
+      settingGetBizList({}).then(res => {
+        this.sumTypeArray = res.data
+        settingUserGetBiz().then(res => {
+          if (res.data.bizId) {
+            this.sumTypeArray.map(item => {
+              if (res.data.bizId === item.code) {
+                this.sumType = item.name
+                localStorage.setItem('bizId', item.code)
+              }
+            })
+          } else {
+            this.sumType = this.sumTypeArray[0].name
+            localStorage.setItem('bizId', this.sumTypeArray[0].code)
+          }
+        })
+      })
     },
     bizchnage(ele) {
       Utils.$emit('demo', ele)

+ 0 - 1
src/main.js

@@ -33,7 +33,6 @@ if (process.env.NODE_ENV === 'production') {
 }
 
 import axios from 'axios'
-
 Vue.prototype.$http = axios
 
 // set ElementUI lang to EN

+ 2 - 1
src/store/getters.js

@@ -7,6 +7,7 @@ const getters = {
   name: state => state.user.name,
   menu: state => state.data.menu,
   subMenu: state => state.data.subMenu,
-  project: state => state.project.project
+  project: state => state.project.project,
+  status: state => state.data.status
 }
 export default getters

+ 8 - 1
src/store/modules/data.js

@@ -1,6 +1,7 @@
 const state = {
   menu: '',
-  subMenu: ''
+  subMenu: '',
+  status: false
 }
 
 const mutations = {
@@ -9,6 +10,9 @@ const mutations = {
   },
   SETSUBMENU(state, value) {
     state.subMenu = value
+  },
+  SETSTATUS: (state, value) => {
+    state.status = value
   }
 }
 
@@ -18,6 +22,9 @@ const actions = {
   },
   setSubMenu({ commit }, value) {
     commit('SETSUBMENU', value)
+  },
+  setStatus({ commit }, value) {
+    commit('SETSTATUS', value)
   }
 }
 

+ 1 - 1
src/views/newWeb/index.vue

@@ -15,7 +15,7 @@ export default {
   },
   computed: {
     envUrl() {
-      return 'http://cp-stable.intra.xiaojukeji.com/list/'
+      return ' http://cp-stable.intra.xiaojukeji.com/project/'
     }
   },
   mounted() {

+ 39 - 17
src/views/projectManage/bugList/bugindex.vue

@@ -15,10 +15,8 @@
           <el-col :span="24" class="Layout" style="padding: 0% 0.5% 1% 1.5%;">
             <el-form :model="formInline" class="flex_start" style="width: 100%;">
               <div class="Layout">
-                <div class="queryName">业务线</div>
-                <el-select v-model="formInline.bizId" size="small" clearable filterable placeholder="请选择" @change="getBugList()">
-                  <el-option v-for="item in bizIdEnumList" :key="item.id" :label="item.bizName" :value="item.id" />
-                </el-select>
+                <div class="queryName">缺陷ID</div>
+                <el-input v-model="formInline.bugId" size="small" style="width:72% !important;" clearable filterable placeholder="请输入" @change="getBugList()" />
               </div>
               <div class="Layout marginLeft">
                 <div class="queryName">状态</div>
@@ -46,17 +44,18 @@
                         <el-option v-for="item in priorityEnumList" :key="item.code" :label="item.name" :value="item.code" />
                       </el-select>
                     </div>
-                    <div class="Layout marginLeft">
-                      <div class="queryName">缺陷ID</div>
-                      <el-input v-model="formInline.bugId" size="small" style="width:72% !important;" clearable filterable placeholder="请输入" />
-                    </div>
                     <div class="Layout marginLeft">
                       <div class="queryName">所属任务</div>
                       <el-select v-model="formInline.taskId" size="small" clearable filterable placeholder="请选择">
                         <el-option v-for="item in taskEnumList" :key="item.id" :label="item.name" :value="item.id" />
                       </el-select>
                     </div>
+                    <div class="Layout marginLeft">
+                      <div class="queryName">所属模块</div>
+                      <el-cascader v-model="formInline.moduleIds" size="small" clearable collapse-tags :props="props" :options="business_platform_Modular" placeholder="请选择" style="width:72% !important;" @click.native="bugDataGet" />
+                    </div>
                   </div>
+
                   <div style="margin: 1.5% 0;" class="flex_start">
                     <div class="Layout">
                       <div class="queryName">提报人</div>
@@ -160,7 +159,6 @@
                   <span class="bugNameSty" @click="click_bugName(scope.row.id)">{{ scope.row.bugName }}</span>
                 </template>
               </el-table-column>
-              <el-table-column prop="bizName" label="业务线" align="center" />
               <el-table-column prop="priorityName" label="缺陷等级" align="center" />
               <el-table-column prop="bugStatusName" label="状态" align="center">
                 <template slot-scope="scope">
@@ -211,7 +209,7 @@
 <script>
 import BugDetails from './details/index'
 import createdBug from '@/views/projectManage/bugList/file/createdBug'
-import { bugList, bugGetEnum, queryBizTypeList, taskListCreate, releaseList } from '@/api/defectManage'
+import { bugList, bugGetEnum, settingGetBizList, taskListCreate, releaseList, settingQueryBizModuleList } from '@/api/defectManage'
 import { memberQueryMemberInfoByIDAPorName } from '@/api/projectIndex'
 import '@/views/projectManage/bugList/css/index.css'
 export default {
@@ -234,6 +232,7 @@ export default {
   data() {
     return {
       initCount: 0,
+      props: { multiple: true },
       priorityColors: ['#F56C6C', '#FF8952', '#7ED321'],
       statusColors: ['#6AB4FF', '#6AB4FF', '#FFCC66', '#7ED321', '#F56C6C'],
       DetailedScreening: false, // 高级筛选
@@ -251,6 +250,7 @@ export default {
       bugStageEnumList: [], // 发现阶段
       sysTypeEnumList: [], // 端类型
       bugQuery: '', // bug详情
+      business_platform_Modular: [], // 所属模块
       bugQueryModel: '',
       commentShow: true, // 评论为空默认显示
       content: '', // 评论
@@ -290,6 +290,10 @@ export default {
   created() {
     this.getBugList()
     this.bugListSelect()
+    this.$store.state.data.status = true
+  },
+  destroyed() {
+    this.$store.state.data.status = false
   },
   methods: {
     listenClick() {
@@ -299,11 +303,13 @@ export default {
           this.drawerShow = true
         } else {
           this.drawerShow = false
+          this.$store.state.data.status = true
         }
       }, 200)
     },
     getBugList() {
       this.indexPage = this.formInline
+      this.indexPage.bizId = Number(localStorage.getItem('bizId'))
       this.indexPage.pageSize = this.pageSize
       this.indexPage.curIndex = this.curIndex
       bugList(this.indexPage).then(res => {
@@ -315,7 +321,6 @@ export default {
               item1.priorityLevel !== null ? item1.priorityLevel === item.name ? item1.priorityCode = item.code : '' : ''
             })
           })
-          console.log(this.tableData, '成都市开车')
         }
       })
     },
@@ -323,7 +328,7 @@ export default {
       var combination = {}
       combination = this.formInline
       this.formInline = {}
-      this.$set(this.formInline, 'bizId', combination.bizId)
+      this.$set(this.formInline, 'bugId', combination.bugId)
       this.$set(this.formInline, 'status', combination.status)
       this.$set(this.formInline, 'priorityLevel', combination.priorityLevel)
       this.getBugList()
@@ -385,9 +390,6 @@ export default {
         this.isBugNameClick = true
       }, 200)
     },
-    onSubmit() {
-      console.log('submit!')
-    },
     createdDefect() {
       this.modalShow = true
       this.$nextTick(() => {
@@ -395,6 +397,7 @@ export default {
       })
     },
     showSelect() {
+      this.bugDataGet()
       this.DetailedScreening === false ? this.DetailedScreening = true : this.DetailedScreening = false
       this.goodName === '更多筛选' ? this.goodName = '收起筛选' : this.goodName = '更多筛选'
     },
@@ -407,8 +410,8 @@ export default {
       this.getBugList()
     },
     bugListSelect() {
-      queryBizTypeList({}).then(res => {
-        this.bizIdEnumList = res.data.list // biz
+      settingGetBizList({}).then(res => {
+        this.bizIdEnumList = res.data // biz
       })
       taskListCreate({}).then(res => {
         this.taskEnumList = res.data // 所属任务
@@ -428,6 +431,25 @@ export default {
       releaseList().then(res => {
         this.appClient = res.data.appClient // 客户端
       })
+    },
+    bugDataGet() { // 所属模块
+      settingQueryBizModuleList(Number(localStorage.getItem('bizId'))).then(res => {
+        this.business_platform_Modular = res.data.map(item => ({
+          ...item,
+          value: item.id,
+          label: item.moduleName,
+          children: item.childModules.length === 0 ? null : item.childModules.map(item1 => ({
+            ...item1,
+            value: item1.id,
+            label: item1.moduleName,
+            children: item1.childModules.length === 0 ? null : item1.childModules.map(item2 => ({
+              ...item2,
+              value: item2.id,
+              label: item2.moduleName
+            }))
+          }))
+        }))
+      })
     }
   }
 }

+ 51 - 63
src/views/projectManage/bugList/details/index.vue

@@ -134,29 +134,37 @@
                       />
                     </el-select>
                   </el-form-item>
-                  <el-form-item label="所属模块">
-                    <el-cascader
-                      v-model="belongModule"
-                      :options="business_platform_Modular"
-                      @change="belongModuleHandleChange()"
-                    />
+                  <el-form-item label="业务线">
+                    <div style="padding-left: 15px">{{ bug.bizName }}</div>
                   </el-form-item>
-                  <el-form-item label="发现方式">
-                    <el-select v-model="bug.discoveryMeth" @change="bugUpdate(bug,'details')">
+                  <el-form-item label="发现阶段">
+                    <el-select v-model="bug.discoveryStage" @change="bugUpdate(bug,'details')">
                       <el-option
-                        v-for="item in enums.discoveryMethEnumList"
+                        v-for="item in enums.bugStageEnumList"
                         :key="item.code"
                         :label="item.name"
                         :value="item.code"
                       />
                     </el-select>
                   </el-form-item>
-                  <el-form-item label="缺陷原因">
-                    <div v-if="map.bugReasonEnumList && bug" style="padding-left: 15px" class="bug_manage_div">{{ map.bugReasonEnumList[bug.bugReason]?map.bugReasonEnumList[bug.bugReason]:'尚未知' }}</div>
+                  <el-form-item label="缺陷类型">
+                    <el-select v-model="bug.theBugType" @change="bugUpdate(bug,'details')">
+                      <el-option
+                        v-for="item in enums.theBugTypeEnumList"
+                        :key="item.code"
+                        :label="item.name"
+                        :value="item.code"
+                      />
+                    </el-select>
                   </el-form-item>
-                  <el-form-item label="Reopen次数">
-                    <div style="padding-left: 15px" class="bug_manage_div">{{ bug.reopenTimes }}</div>
+                  <el-form-item label="修复结果">
+                    <div
+                      v-if="map.repairResultEnumList && bug"
+                      style="padding-left: 15px"
+                      class="bug_manage_div"
+                    >{{ map.repairResultEnumList[bug.repairResult]?map.repairResultEnumList[bug.repairResult]:'未修复' }}</div>
                   </el-form-item>
+
                 </el-form>
               </el-aside>
               <el-aside width="49%">
@@ -181,33 +189,26 @@
                       />
                     </el-select>
                   </el-form-item>
-                  <el-form-item label="发现阶段">
-                    <el-select v-model="bug.discoveryStage" @change="bugUpdate(bug,'details')">
-                      <el-option
-                        v-for="item in enums.bugStageEnumList"
-                        :key="item.code"
-                        :label="item.name"
-                        :value="item.code"
-                      />
-                    </el-select>
+                  <el-form-item label="所属模块">
+                    <el-cascader v-model="bug.moduleIds" collapse-tags :props="props" :options="business_platform_Modular" placeholder="请选择" @change="bugUpdate(bug,'details')" @click.native="getBusinessLinePlatformModule" />
                   </el-form-item>
-                  <el-form-item label="缺陷类型">
-                    <el-select v-model="bug.theBugType" @change="bugUpdate(bug,'details')">
+                  <el-form-item label="发现方式">
+                    <el-select v-model="bug.discoveryMeth" @change="bugUpdate(bug,'details')">
                       <el-option
-                        v-for="item in enums.theBugTypeEnumList"
+                        v-for="item in enums.discoveryMethEnumList"
                         :key="item.code"
                         :label="item.name"
                         :value="item.code"
                       />
                     </el-select>
                   </el-form-item>
-                  <el-form-item label="修复结果">
-                    <div
-                      v-if="map.repairResultEnumList && bug"
-                      style="padding-left: 15px"
-                      class="bug_manage_div"
-                    >{{ map.repairResultEnumList[bug.repairResult]?map.repairResultEnumList[bug.repairResult]:'未修复' }}</div>
+                  <el-form-item label="缺陷原因">
+                    <div v-if="map.bugReasonEnumList && bug" style="padding-left: 15px" class="bug_manage_div">{{ map.bugReasonEnumList[bug.bugReason]?map.bugReasonEnumList[bug.bugReason]:'尚未知' }}</div>
                   </el-form-item>
+                  <el-form-item label="Reopen次数">
+                    <div style="padding-left: 15px" class="bug_manage_div">{{ bug.reopenTimes }}</div>
+                  </el-form-item>
+
                 </el-form>
               </el-aside>
             </el-container>
@@ -562,7 +563,7 @@
 <script>
 import fackClickOutSide from './fackClickOutSide.js'
 import E from 'wangeditor'
-import { settingGetTypeMap } from '@/api/taskIndex'
+// import { settingGetTypeMap } from '@/api/taskIndex'
 import { getCommentList, addComment } from '@/api/requirement.js'
 import {
   bugDetails,
@@ -570,7 +571,8 @@ import {
   bugDelete,
   bugUpdate,
   taskListCreate,
-  releaseList
+  releaseList,
+  settingQueryBizModuleList
 } from '@/api/defectManage.js'
 import { getMemberInfo } from '@/api/requirement.js'
 import Dropdown from './dropdown.vue'
@@ -599,6 +601,7 @@ export default {
     return {
       iconName: 'float_反馈_icon_close',
       bugNameIsFocus: false,
+      props: { multiple: true },
       height: '700px',
       bugDescribeNoHtml: '',
       bugDescribe: '',
@@ -647,7 +650,6 @@ export default {
       appClientList: [],
       versionList: [],
       map: {},
-      belongModule: [],
       business_platform_Modular: [], // 业务/平台/模块
       bugNameTextareaStyle: {
         width: '1000px',
@@ -683,6 +685,7 @@ export default {
     }
   },
   created() {
+    this.$store.state.data.status = false
     if (this.type !== 'page') {
       var height = window.innerHeight > document.body.clientHeight ? window.innerHeight : document.body.clientHeight
       height -= 130
@@ -892,10 +895,7 @@ export default {
           this.bugNameForm.bugName = this.bug.bugName
           this.bug.networkType = this.bug.networkType
           this.bug.appVersion = this.bug.appVersion
-          this.belongModule = []
-          this.belongModule[0] = this.bug.bizId
-          this.belongModule[1] = this.bug.platformType
-          this.belongModule[2] = this.bug.clientType
+          this.bug.moduleIds = this.bug.moduleIds
           this.fileList = []
           this.fileDbList = []
           var str = res.data.accessory
@@ -978,27 +978,21 @@ export default {
       })
     },
     getBusinessLinePlatformModule() {
-      settingGetTypeMap().then(res => {
+      settingQueryBizModuleList(Number(localStorage.getItem('bizId'))).then(res => {
         this.business_platform_Modular = res.data.map(item => ({
           ...item,
-          value: item.code,
-          label: item.name,
-          children:
-            item.child === null
-              ? ''
-              : item.child.map(item1 => ({
-                ...item1,
-                value: item1.code,
-                label: item1.name,
-                children:
-                    item1.child === null
-                      ? ''
-                      : item1.child.map(item2 => ({
-                        ...item2,
-                        value: item2.code,
-                        label: item2.name
-                      }))
-              }))
+          value: item.id,
+          label: item.moduleName,
+          children: item.childModules.length === 0 ? null : item.childModules.map(item1 => ({
+            ...item1,
+            value: item1.id,
+            label: item1.moduleName,
+            children: item1.childModules.length === 0 ? null : item1.childModules.map(item2 => ({
+              ...item2,
+              value: item2.id,
+              label: item2.moduleName
+            }))
+          }))
         }))
       })
     },
@@ -1099,12 +1093,6 @@ export default {
         this.bugGet(this.bug.id)
         return res
       })
-    },
-    belongModuleHandleChange() {
-      this.bug.bizId = this.belongModule[0]
-      this.bug.platformType = this.belongModule[1]
-      this.bug.clientType = this.belongModule[2]
-      this.bugUpdate(this.bug, 'details')
     }
   }
 }

+ 46 - 33
src/views/projectManage/bugList/file/createdBug.vue

@@ -39,14 +39,22 @@
                     <el-option v-for="item in priorityLevelEnumList" :key="item.code" :label="item.name" :value="item.name" />
                   </el-select>
                 </el-form-item>
-                <el-form-item label="所属模块" prop="cliType">
-                  <el-cascader v-model="formInline.cliType" size="small" :options="business_platform_Modular" placeholder="请选择" style="width: 100%" />
+                <el-form-item label="业务线" prop="bizId">
+                  <el-select v-model="formInline.bizId" :disabled="true" size="small" filterable placeholder="请选择" style="width:100%;">
+                    <el-option v-for="item in bizIdEnumList" :key="item.code" :label="item.name" :value="item.code" />
+                  </el-select>
                 </el-form-item>
-                <el-form-item label="发现方式" prop="discoveryMeth">
-                  <el-select v-model="formInline.discoveryMeth" size="small" filterable placeholder="请选择" style="width:100%;">
-                    <el-option v-for="item in discoveryMethEnumList" :key="item.code" :label="item.name" :value="item.code" />
+                <el-form-item label="发现阶段" prop="discoveryStage">
+                  <el-select v-model="formInline.discoveryStage" size="small" filterable placeholder="请选择" style="width:100%;">
+                    <el-option v-for="item in bugStageEnumList" :key="item.code" :label="item.name" :value="item.code" />
                   </el-select>
                 </el-form-item>
+                <el-form-item label="缺陷类型" prop="theBugType">
+                  <el-select v-model="formInline.theBugType" size="small" filterable placeholder="请选择" style="width:100%;">
+                    <el-option v-for="item in theBugTypeEnumList" :key="item.code" :label="item.name" :value="item.code" />
+                  </el-select>
+                </el-form-item>
+
                 <el-form-item label="责任人" style="width:100%;" prop="assigner">
                   <el-select v-model="formInline.assigner" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" size="small" style="width: 100%" placeholder="请输入姓名或邮箱前缀" @change="getcurrentHandler(formInline.assigner)">
                     <el-option v-for="item in options" :key="item.idap" :label="item.name" :value="test2(item, 0)">
@@ -79,14 +87,23 @@
                     <el-option v-for="item in priorityEnumList" :key="item.code" :label="item.name" :value="item.code" />
                   </el-select>
                 </el-form-item>
-                <el-form-item label="发现阶段" prop="discoveryStage">
-                  <el-select v-model="formInline.discoveryStage" size="small" filterable placeholder="请选择" style="width:100%;">
-                    <el-option v-for="item in bugStageEnumList" :key="item.code" :label="item.name" :value="item.code" />
+                <el-form-item label="所属模块" prop="moduleIds">
+                  <el-cascader v-model="formInline.moduleIds" size="small" collapse-tags :props="props" :options="business_platform_Modular" placeholder="请选择" style="width: 100%" />
+                </el-form-item>
+                <el-form-item label="发现方式" prop="discoveryMeth">
+                  <el-select v-model="formInline.discoveryMeth" size="small" filterable placeholder="请选择" style="width:100%;">
+                    <el-option v-for="item in discoveryMethEnumList" :key="item.code" :label="item.name" :value="item.code" />
                   </el-select>
                 </el-form-item>
-                <el-form-item label="缺陷类型" prop="theBugType">
-                  <el-select v-model="formInline.theBugType" size="small" filterable placeholder="请选择" style="width:100%;">
-                    <el-option v-for="item in theBugTypeEnumList" :key="item.code" :label="item.name" :value="item.code" />
+                <el-form-item label="提报人" style="width:100%;" prop="currentHandler">
+                  <el-select v-model="formInline.creatorList" :disabled="true" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" size="small" style="width: 100%" placeholder="请输入姓名或邮箱前缀">
+                    <el-option v-for="item in options" :key="item.idap" :label="item.name" :value="test2(item, 0)">
+                      <div style="display: flex;justify-content: start;">
+                        <div style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden">{{ item.deptName }}</div>
+                        <div style="min-width:80px">{{ item.name }}</div>
+                        <div style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden">{{ item.idap }}</div>
+                      </div>
+                    </el-option>
                   </el-select>
                 </el-form-item>
                 <el-form-item label="修复人" style="width:100%;" prop="currentHandler">
@@ -169,9 +186,8 @@
 
 <script>
 import E from 'wangeditor'
-import { bugGetEnum, queryBizTypeList, taskListCreate, releaseList, bugCreate } from '@/api/defectManage'
+import { bugGetEnum, settingGetBizList, taskListCreate, releaseList, bugCreate, settingQueryBizModuleList } from '@/api/defectManage'
 import { memberQueryMemberInfoByIDAPorName } from '@/api/projectIndex'
-import { settingGetTypeMap } from '@/api/taskIndex' // 所属模块
 import '@/views/projectManage/bugList/css/index.css'
 export default {
   name: 'Createdbug',
@@ -191,8 +207,9 @@ export default {
       modalShow: false, // 缺陷新建弹窗
       dialogVisible: false,
       show2: false,
+      props: { multiple: true },
       dis: false, // 附件上传成功才可以提交
-      business_platform_Modular: [], // 业务/平台/模块
+      business_platform_Modular: [], // 模块
       fileDbList: [], // 附件展示
       editorRemark: '',
       fileList: [],
@@ -206,10 +223,11 @@ export default {
       userInformation: localStorage.getItem('username'),
       userNames: localStorage.getItem('realname'),
       rules: {
+        bizId: [{ required: true, message: '业务线不能为空', trigger: 'change' }],
         bugName: [{ required: true, message: '标题不能为空', trigger: 'change' }],
         taskId: [{ required: true, message: '所属任务不能为空', trigger: 'change' }],
         priorityLevel: [{ required: true, message: '优先级不能为空', trigger: 'change' }],
-        cliType: [{ required: true, message: '所属模块不能为空', trigger: 'change' }],
+        moduleIds: [{ required: true, message: '所属模块不能为空', trigger: 'change' }],
         discoveryMeth: [{ required: true, message: '发现方式不能为空', trigger: 'change' }],
         assigner: [{ required: true, message: '责任人不能为空', trigger: 'change' }],
         sysType: [{ required: true, message: '端类型不能为空', trigger: 'change' }],
@@ -252,11 +270,11 @@ export default {
       this.$nextTick(() => {
         this.$refs['formInline'].clearValidate()
       })
+      this.$set(this.formInline, 'bizId', Number(localStorage.getItem('bizId')))
       if (e === 1) {
         this.titleName = '新建缺陷'
         if (ele !== undefined) {
           this.$set(this.formInline, 'taskId', ele.id)
-          this.$set(this.formInline, 'cliType', [ele.bizId, ele.type, ele.clientType])
         }
       }
     },
@@ -301,11 +319,6 @@ export default {
     bug_created(e) { // 创建(提交)
       this.$refs['formInline'].validate((valid) => {
         if (valid) {
-          if (e.cliType) {
-            e.bizId = e.cliType[0]
-            e.platformType = e.cliType[1]
-            e.clientType = e.cliType[2]
-          }
           var user = { name: this.userNames, ename: this.userInformation, id: '' }
           bugCreate({ bugBaseInfo: e, user }).then(res => {
             this.bugListSelect()
@@ -345,8 +358,8 @@ export default {
       }
     },
     bugListSelect() {
-      queryBizTypeList({}).then(res => {
-        this.bizIdEnumList = res.data.list // biz
+      settingGetBizList({}).then(res => {
+        this.bizIdEnumList = res.data // biz
       })
       taskListCreate({}).then(res => {
         this.taskEnumList = res.data // 所属任务
@@ -370,20 +383,20 @@ export default {
       })
     },
 
-    bugDataGet() {
-      settingGetTypeMap().then(res => {
+    bugDataGet() { // 所属模块
+      settingQueryBizModuleList(Number(localStorage.getItem('bizId'))).then(res => {
         this.business_platform_Modular = res.data.map(item => ({
           ...item,
-          value: item.code,
-          label: item.name,
-          children: item.child === null ? '' : item.child.map(item1 => ({
+          value: item.id,
+          label: item.moduleName,
+          children: item.childModules.length === 0 ? null : item.childModules.map(item1 => ({
             ...item1,
-            value: item1.code,
-            label: item1.name,
-            children: item1.child === null ? '' : item1.child.map(item2 => ({
+            value: item1.id,
+            label: item1.moduleName,
+            children: item1.childModules.length === 0 ? null : item1.childModules.map(item2 => ({
               ...item2,
-              value: item2.code,
-              label: item2.name
+              value: item2.id,
+              label: item2.moduleName
             }))
           }))
         }))

+ 42 - 30
src/views/projectManage/dialog_vue.vue

@@ -30,8 +30,15 @@
         </div>
         <div style="display:flex;align-items: center;justify-content: space-between;">
           <div>
-            <el-form-item label="业务/平台/模块" prop="clientType">
-              <el-cascader v-model="task_form.cliType" :options="business_platform_Modular" style="width: 20vw" />
+            <el-form-item label="优先级" prop="priority">
+              <el-select v-model="task_form.priority" filterable placeholder="请选择" style="width:20vw">
+                <el-option v-for="item in arr_priority" :key="item.value" :label="item.name" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="业务线" prop="bizId">
+              <el-select v-model="task_form.bizId" :disabled="true" filterable placeholder="请选择" style="width:20vw">
+                <el-option v-for="item in all_bizId" :key="item.code" :label="item.name" :value="item.code" />
+              </el-select>
             </el-form-item>
             <el-form-item label="开发负责人">
               <el-select v-model="task_form.rdOwner" filterable remote reserve-keyword placeholder="请输入姓名或邮箱前缀" :remote-method="remoteMethod" :loading="loading" style="width: 100%">
@@ -52,6 +59,9 @@
                 <el-radio :label="0">否</el-radio>
               </el-radio-group>
             </el-form-item>
+            <el-form-item label="模块" prop="moduleIds">
+              <el-cascader v-model="task_form.moduleIds" clearable collapse-tags :props="props" :options="business_platform_Modular" placeholder="请选择" style="width: 20vw" @click.native="bugDataGet" />
+            </el-form-item>
             <el-form-item label="测试负责人">
               <el-select v-model="task_form.qaOwner" filterable remote reserve-keyword placeholder="请输入姓名或邮箱前缀" :remote-method="remoteMethod" :loading="loading" style="width: 20vw">
                 <el-option v-for="item in options" :key="item.idap" :label="item.name" :value="test2(item, 0)">
@@ -91,13 +101,16 @@
 </template>
 
 <script>
-import { taskCreate, memberQueryMemberInfoByIDAPorName, configShowTaskEnum, settingGetTypeMap, configShowRequirementVersionEnum, taskGet, taskUpdate } from '@/api/taskIndex' // ajax
-import { projectList } from '@/api/projectIndex'
+import { taskCreate, memberQueryMemberInfoByIDAPorName, configShowTaskEnum, configShowRequirementVersionEnum, taskGet, taskUpdate } from '@/api/taskIndex' // ajax
+import { projectList, settingGetBizList } from '@/api/projectIndex'
+import { settingQueryBizModuleList } from '@/api/defectManage'
 export default {
   data() {
     return {
+      arr_priority: [{ value: 0, name: 'p0' }, { value: 1, name: 'p1' }, { value: 2, name: 'p2' }, { value: 3, name: 'p3' }, { value: 4, name: 'p4' }, { value: 5, name: 'p5' }, { value: 6, name: 'p6' }],
       dialogFormVisible: false,
       task_form: {},
+      props: { multiple: true },
       ascription_project: false, // 归属项目(隐藏)
       ascription_demand: false, // 归属需求(隐藏)
       test: {},
@@ -108,11 +121,10 @@ export default {
       requireId: '', // 需求id
       options: [], // 员工信息
       noTest: [], // 是否免测
-      BusinessLine: [], // 业务线
+      all_bizId: [], // 业务线
       appClient: [], // 涉及业务线
-      arr_platform: [], // 平台数据
       arr_Modular: [], // 模块数据‘
-      business_platform_Modular: [], // 业务/平台/模块
+      business_platform_Modular: [], // 模块
       show_Client: false, // 涉及的客户端(显示)
       projectList: [], // 归属项目数据
       demandList: [], // 需求list
@@ -120,6 +132,9 @@ export default {
       userNames: localStorage.getItem('realname'),
       task_rulesForm: {
         name: [{ required: true, message: '请输入任务名称', trigger: 'blur' }],
+        moduleIds: [{ required: true, message: '请选择模块', trigger: 'blur' }],
+        priority: [{ required: true, message: '请选择优先级', trigger: 'blur' }],
+        bizId: [{ required: true, message: '请选择业务线', trigger: 'blur' }],
         source: [{ required: true, message: '请输入直接归属', trigger: 'blur' }],
         requireId: [{ required: true, message: '请选择归属需求', trigger: 'blur' }],
         projectId: [{ required: true, message: '请选择归属项目', trigger: 'blur' }],
@@ -147,6 +162,7 @@ export default {
           this.$set(this.task_form, 'notest', 0)
           this.$set(this.task_form, 'followVersion', 2)
           this.$set(this.task_form, 'source', 1)
+          this.$set(this.task_form, 'bizId', Number(localStorage.getItem('bizId')))
           this.show_Client = false
           this.$nextTick(() => {
             this.$refs['task_form'].clearValidate()
@@ -338,37 +354,33 @@ export default {
         this.taskSource = res.data.taskSource // 归属需求
         this.appClient = res.data.appClient // 涉及客户端
       })
-      settingGetTypeMap().then(res => {
+      settingGetBizList({}).then(res => {
+        this.all_bizId = res.data
+      })
+    },
+    get_followVersion(e) { // 涉及的客户端(显示/隐藏)
+      this.$set(this.task_form, 'involveApp', '')
+      e === 1 ? this.show_Client = true : ''
+      e === 2 ? this.show_Client = false : ''
+    },
+    bugDataGet() { // 所属模块
+      settingQueryBizModuleList(Number(localStorage.getItem('bizId'))).then(res => {
         this.business_platform_Modular = res.data.map(item => ({
           ...item,
-          value: item.code,
-          label: item.name,
-          children: item.child === null ? '' : item.child.map(item1 => ({
+          value: item.id,
+          label: item.moduleName,
+          children: item.childModules.length === 0 ? null : item.childModules.map(item1 => ({
             ...item1,
-            value: item1.code,
-            label: item1.name,
-            children: item1.child === null ? '' : item1.child.map(item2 => ({
+            value: item1.id,
+            label: item1.moduleName,
+            children: item1.childModules.length === 0 ? null : item1.childModules.map(item2 => ({
               ...item2,
-              value: item2.code,
-              label: item2.name
+              value: item2.id,
+              label: item2.moduleName
             }))
           }))
         }))
-        this.BusinessLine = res.data // 业务线
-        this.BusinessLine.map(item => {
-          item.child !== null ? item.child.map(value => {
-            this.arr_platform.push(value) // 平台数据
-            value.child.map(num => {
-              this.arr_Modular.push(num) // 模块数据
-            })
-          }) : ''
-        })
       })
-    },
-    get_followVersion(e) { // 涉及的客户端(显示/隐藏)
-      this.$set(this.task_form, 'involveApp', '')
-      e === 1 ? this.show_Client = true : ''
-      e === 2 ? this.show_Client = false : ''
     }
   }
 }

+ 16 - 22
src/views/projectManage/projectList/projectIndex.vue

@@ -12,10 +12,8 @@
         <div style="margin-left:1%;margin-bottom: -10px;">
           <el-form :model="form_all" class="Layout">
             <div class="Layout">
-              <div class="queryName">业务线</div>
-              <el-select v-model="form_all.bizId" size="small" clearable filterable placeholder="请选择" @change="query_project(form_all)">
-                <el-option v-for="item in all_bizId" :key="item.id" :label="item.bizName" :value="item.id" />
-              </el-select>
+              <div class="queryName">项目ID</div>
+              <el-input v-model="form_all.id" size="small" clearable style="width:72% !important;" @change="query_project(form_all)" />
             </div>
             <div class="Layout">
               <div class="queryName marginLeft">负责人</div>
@@ -43,11 +41,7 @@
         <div>
           <el-form :model="form_all" class="flex_start">
             <div class="Layout">
-              <div class="queryName">项目ID</div>
-              <el-input v-model="form_all.id" size="small" clearable style="width:72% !important;" />
-            </div>
-            <div class="Layout">
-              <div class="queryName marginLeft">项目类型</div>
+              <div class="queryName">项目类型</div>
               <el-select v-model="form_all.bizType" size="small" clearable filterable placeholder="请选择">
                 <el-option v-for="item in arr_prjectType" :key="item.value" :label="item.name" :value="item.value" />
               </el-select>
@@ -109,9 +103,6 @@
             <span class="stylus-hover" @click="link_project(scope.row.id)">{{ scope.row.name }}</span>
           </template>
         </el-table-column>
-        <el-table-column label="业务线" min-width="100" align="center">
-          <template slot-scope="scope">{{ scope.row.bizStr }}</template>
-        </el-table-column>
         <el-table-column label="项目类型" min-width="130" align="center" show-overflow-tooltip>
           <template slot-scope="scope">{{ scope.row.projectTypeStr }}</template>
         </el-table-column>
@@ -182,12 +173,12 @@
               </el-select>
             </el-form-item>
             <el-form-item label="业务线" prop="bizId">
-              <el-select v-model="form.bizId" clearable placeholder="请选择" style="width:20vw">
+              <el-select v-model="form.bizId" :disabled="true" clearable placeholder="请选择" style="width:20vw">
                 <el-option
                   v-for="item in all_bizId"
-                  :key="item.id"
-                  :label="item.bizName"
-                  :value="item.id"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
                 />
               </el-select>
             </el-form-item>
@@ -324,7 +315,7 @@
 import {
   projectList,
   memberQueryMemberInfoByIDAPorName,
-  projectBizList,
+  settingGetBizList,
   projectCreate
 } from '@/api/projectIndex'
 import '@/views/projectManage/publicCss/index.css'
@@ -368,7 +359,6 @@ export default {
       query_object: {},
       all_bizId: [], // 业务线
       test: [], // 人员查询
-      // prject_type: '', // 获取项目类型
       arr_priority: [
         { value: 0, name: 'p0' },
         { value: 1, name: 'p1' },
@@ -387,6 +377,10 @@ export default {
   },
   created() {
     this.get_projectList()
+    this.$store.state.data.status = true
+  },
+  destroyed() {
+    this.$store.state.data.status = false
   },
   methods: {
     test2(item, e) {
@@ -400,12 +394,12 @@ export default {
     get_projectList() {
       // 获取list
       this.table_loading = true
-      projectList({ curIndex: 1, pageSize: 15 }).then(res => {
+      projectList({ bizId: Number(localStorage.getItem('bizId')), curIndex: 1, pageSize: 15 }).then(res => {
         this.table_project = res.data
         this.total = res.total
         this.table_loading = false
       })
-      projectBizList({}).then(res => {
+      settingGetBizList({}).then(res => {
         this.all_bizId = res.data
       })
     },
@@ -436,6 +430,7 @@ export default {
       this.$nextTick(() => {
         this.$refs['form'].clearValidate()
       })
+      this.$set(this.form, 'bizId', Number(localStorage.getItem('bizId')))
     },
     created_project(e) {
       // 创建(提交)
@@ -476,10 +471,9 @@ export default {
     query_Reset() {
       // 重置
       this.$set(this.form_all, 'priority', this.query_object.priority)
-      this.$set(this.form_all, 'bizId', this.query_object.bizId)
+      this.$set(this.form_all, 'id', this.query_object.id)
       this.$set(this.form_all, 'projectOwner', this.query_object.projectOwner)
       this.$set(this.form_all, 'bizType', '')
-      this.$set(this.form_all, 'id', '')
       this.$set(this.form_all, 'creater', '')
       this.$message({
         message: '已重置',

+ 6 - 5
src/views/projectManage/projectList/projectViewDetails.vue

@@ -380,15 +380,16 @@
             <el-form-item label="业务线" prop="bizId">
               <el-select
                 v-model="project_from.bizId"
+                disabled="true"
                 clearable
                 placeholder="请选择"
                 style="width:20vw"
               >
                 <el-option
                   v-for="item in all_bizId"
-                  :key="item.id"
-                  :label="item.bizName"
-                  :value="item.id"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
                 />
               </el-select>
             </el-form-item>
@@ -563,7 +564,7 @@ import {
   memberQueryMemberInfoByIDAPorName,
   projectUpdate,
   mileStoneList,
-  projectBizList,
+  settingGetBizList,
   mileStoneCreate,
   mileStoneUpdate,
   mileStoneDelete,
@@ -785,7 +786,7 @@ export default {
           : ''
         this.get_allTask()
       })
-      projectBizList({}).then(res => {
+      settingGetBizList({}).then(res => {
         this.all_bizId = res.data
       })
       mileStoneList({ projectId: this.projectId[1] }).then(res => { // 里程碑时间排序

+ 15 - 4
src/views/projectManage/requirement/list/create.vue

@@ -29,8 +29,8 @@
             </el-select>
           </el-form-item>
           <el-form-item label="业务线" prop="bizId">
-            <el-select v-model="form.bizId" placeholder="请选择" style="width:20vw">
-              <el-option v-for="(item,index) in formBackgroungInfo.bizType" :key="index" :label="item.msg" :value="item.code" />
+            <el-select v-model="form.bizId" :disabled="true" placeholder="请选择" style="width:20vw">
+              <el-option v-for="(item,index) in all_bizId" :key="index" :label="item.name" :value="item.code" />
             </el-select>
           </el-form-item>
         </div>
@@ -91,7 +91,7 @@
 </template>
 
 <script>
-import { getMemberInfo, createRequirement, updateRequirement, showRequirementEnum } from '@/api/requirement.js'
+import { getMemberInfo, createRequirement, updateRequirement, showRequirementEnum, settingGetBizList } from '@/api/requirement.js'
 
 export default {
   props: {
@@ -112,6 +112,7 @@ export default {
   },
   data() {
     return {
+      all_bizId: '', // 业务线
       formBackgroungInfo: {
         belongingProject: [],
         sourceType: [],
@@ -163,6 +164,7 @@ export default {
       if (newVisible) {
         if (this.title === '编辑需求') {
           this.form = JSON.parse(JSON.stringify(this.data))
+          console.log(this.form, 'dddd')
           this.form.pm = this.form.pm[0].idap
           this.init()
           this.form.modifier = localStorage.getItem('username')
@@ -173,7 +175,8 @@ export default {
             this.belProject = false
             this.form.source = 1
           }
-        } else if (this.title === '新建需求' && this.data) {
+        }
+        if (this.title === '新建需求' && this.data) {
           this.form = JSON.parse(JSON.stringify(this.data))
           this.belProject = true
           this.form.source = 2
@@ -181,6 +184,7 @@ export default {
       }
     },
     isVisible: function(newIsVisible, oldIsVisible) {
+      this.form.bizId = Number(localStorage.getItem('bizId'))
       if (!newIsVisible) {
         if (this.title === '新建需求') {
           for (const i in this.form) {
@@ -195,9 +199,16 @@ export default {
     }
   },
   mounted() {
+    this.getBizId()
     this.showRequirementEnum()
   },
   methods: {
+    getBizId() {
+      settingGetBizList({}).then(res => {
+        this.all_bizId = res.data
+        this.$set(this.form, 'bizId', Number(localStorage.getItem('bizId')))
+      })
+    },
     showRequirementEnum() {
       return showRequirementEnum().then(res => {
         this.formBackgroungInfo = res.data

+ 30 - 37
src/views/projectManage/requirement/list/index.vue

@@ -10,10 +10,8 @@
         <div style="margin: 0px 1% -10px 1%; width: 100%;">
           <el-form :model="searchForm" class="flex_start">
             <div class="Layout">
-              <div class="queryName">业务线</div>
-              <el-select v-model="searchForm.bizId" size="small" clearable filterable placeholder="请选择" @change="getTableData()">
-                <el-option v-for="item in searchInfo.bizType" :key="item.code" :label="item.msg" :value="item.code" />
-              </el-select>
+              <div class="queryName">需求ID</div>
+              <el-input v-model="pauId" size="small" clearable style="width: 72%" @change="getTableData()" />
             </div>
             <div class="Layout marginLeft">
               <div class="queryName">PM</div>
@@ -41,10 +39,6 @@
         <div>
           <el-form :model="searchForm" class="flex_start">
             <div class="Layout">
-              <div class="queryName">需求ID</div>
-              <el-input v-model="pauId" size="small" clearable style="width: 72%" />
-            </div>
-            <div class="Layout marginLeft">
               <div class="queryName">归属项目</div>
               <el-select v-model="searchForm.belongingProject" size="small" clearable filterable placeholder="请选择">
                 <el-option v-for="item in searchInfo.belongingProject" :key="item.code" :label="item.msg" :value="item.code" />
@@ -56,26 +50,22 @@
                 <el-option v-for="item in searchInfo.sourceType" :key="item.code" :label="item.msg" :value="item.code" />
               </el-select>
             </div>
-          </el-form>
-          <div class="Layout" style="margin-top: 15px;">
-            <el-form :model="searchForm">
-              <div class="Layout">
-                <div class="queryName">创建人</div>
-                <el-select v-model="searchForm.creator" clearable filterable remote reserve-keyword placeholder="请输入姓名或邮箱前缀" :remote-method="searchUser" :loading="userLoading" size="small">
-                  <el-option v-for="item in options" :key="item.idap" :label="item.name" :value="item.idap">
-                    <div class="flex_start">
-                      <div class="deptName">{{ item.deptName }}</div>
-                      <div style="min-width:80px">{{ item.name }}</div>
-                      <div class="deptName">{{ item.idap }}</div>
-                    </div>
-                  </el-option>
-                </el-select>
-              </div>
-            </el-form>
-            <div>
-              <el-button type="primary" size="mini" @click="getTableData">筛 选</el-button>
-              <el-button size="mini" @click="reset">重 置</el-button>
+            <div class="Layout marginLeft">
+              <div class="queryName">创建人</div>
+              <el-select v-model="searchForm.creator" clearable filterable remote reserve-keyword placeholder="请输入姓名或邮箱前缀" :remote-method="searchUser" :loading="userLoading" size="small">
+                <el-option v-for="item in options" :key="item.idap" :label="item.name" :value="item.idap">
+                  <div class="flex_start">
+                    <div class="deptName">{{ item.deptName }}</div>
+                    <div style="min-width:80px">{{ item.name }}</div>
+                    <div class="deptName">{{ item.idap }}</div>
+                  </div>
+                </el-option>
+              </el-select>
             </div>
+          </el-form>
+          <div align="right" style="margin-top: 15px;">
+            <el-button type="primary" size="mini" @click="getTableData">筛 选</el-button>
+            <el-button size="mini" @click="reset">重 置</el-button>
           </div>
         </div>
       </div>
@@ -102,11 +92,6 @@
             <span class="stylus-hover" @click="getToRequirementDetails(scope.row.id)">{{ scope.row.name }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="bizId" label="业务线" min-width="100" show-overflow-tooltip align="center">
-          <template v-slot="scope">
-            {{ getBizName(scope.row.bizId) }}
-          </template>
-        </el-table-column>
         <el-table-column prop="sourceType" label="需求来源" min-width="100" show-overflow-tooltip align="center">
           <template v-slot="scope">
             {{ sourceTypeOb[scope.row.sourceType] }}
@@ -207,11 +192,17 @@ export default {
       ]
     }
   },
+  created() {
+    this.$store.state.data.status = true
+  },
   mounted() {
     this.showRequirementEnum().then(res => {
       this.getTableData()
     })
   },
+  destroyed() {
+    this.$store.state.data.status = false
+  },
   methods: {
     specialCoIdJudge(id) {
       let result
@@ -233,7 +224,9 @@ export default {
       if (this.pauId) {
         this.searchForm.id = parseInt(this.specialCoIdJudge(this.pauId))
       }
+      this.searchForm.bizId = Number(localStorage.getItem('bizId'))
       this.loading = true
+
       getRequirement(this.searchForm).then(res => {
         this.tableData = res.data.list
         this.total = res.data.total
@@ -247,9 +240,9 @@ export default {
         for (const i in this.searchInfo.belongingProject) {
           this.projectOb[this.searchInfo.belongingProject[i].code] = this.searchInfo.belongingProject[i].msg
         }
-        for (const i in this.searchInfo.bizType) {
-          this.bizTypeOb[this.searchInfo.bizType[i].code] = this.searchInfo.bizType[i].msg
-        }
+        // for (const i in this.searchInfo.bizType) {
+        //   this.bizTypeOb[this.searchInfo.bizType[i].code] = this.searchInfo.bizType[i].msg
+        // }
         for (const i in this.searchInfo.sourceType) {
           this.sourceTypeOb[this.searchInfo.sourceType[i].code] = this.searchInfo.sourceType[i].msg
         }
@@ -283,7 +276,6 @@ export default {
     },
     reset() {
       this.$set(this.searchForm, 'id', '')
-      this.$set(this.searchForm, 'bizId', '')
       this.$set(this.searchForm, 'pm', '')
       this.$set(this.searchForm, 'priority', '')
       this.$set(this.searchForm, 'belongingProject', '')
@@ -295,6 +287,7 @@ export default {
         duration: 1000,
         offset: 150
       })
+      this.getTableData()
     },
     getProjectName(id) {
       const ret = this.projectOb[id]
@@ -407,7 +400,7 @@ export default {
       background rgba(252,252,252,1)
       border-radius 4px
       padding 2% 1%
-      min-height 140px
+      min-height 110px
       margin-top 22px
       border 1px solid rgba(238,238,238,1)
       width 100%

+ 66 - 79
src/views/projectManage/taskList/taskIndex.vue

@@ -16,21 +16,36 @@
         <div style="margin:0 1% -10px 1%;">
           <el-form :model="form_task" class="flex_start">
             <div class="Layout">
-              <div class="queryName">业务线</div>
-              <el-select v-model="form_task.bizId" size="small" clearable filterable placeholder="请选择" @change="get_taskList()">
-                <el-option v-for="item in BusinessLine" :key="item.code" :label="item.name" :value="item.code" />
-              </el-select>
+              <div class="queryName">任务ID</div>
+              <el-input v-model="form_task.id" size="small" clearable style="width:77% !important;" @change="get_taskList()" />
             </div>
             <div class="Layout marginLeft">
-              <div class="queryName">状态</div>
-              <el-select v-model="form_task.status" size="small" clearable filterable placeholder="请选择" @change="get_taskList()">
-                <el-option v-for="item in daStatus" :key="item.code" :label="item.msg" :value="item.code" />
+              <div class="queryName">负责人</div>
+              <el-select
+                v-model="form_task.PersonInCharge"
+                clearable
+                filterable
+                remote
+                reserve-keyword
+                placeholder="请输入姓名或邮箱前缀"
+                :remote-method="remoteMethod"
+                :loading="loading"
+                size="small"
+                @change="get_taskList()"
+              >
+                <el-option v-for="item in options" :key="item.idap" :label="item.name" :value="test2(item, 0)">
+                  <div class="flex_start">
+                    <div class="deptName">{{ item.deptName }}</div>
+                    <div style="min-width:80px">{{ item.name }}</div>
+                    <div class="deptName">{{ item.idap }}</div>
+                  </div>
+                </el-option>
               </el-select>
             </div>
             <div class="Layout marginLeft">
-              <div class="queryName">健康状态</div>
-              <el-select v-model="form_task.stage" size="small" clearable filterable placeholder="请选择" @change="get_taskList()">
-                <el-option v-for="item in healthStage" :key="item.code" :label="item.msg" :value="item.code" />
+              <div class="queryName">优先级</div>
+              <el-select v-model="form_task.priority" size="small" clearable filterable placeholder="请选择" @change="get_taskList()">
+                <el-option v-for="item in arr_priority" :key="item.value" :label="item.name" :value="item.value" />
               </el-select>
             </div>
           </el-form>
@@ -41,11 +56,8 @@
         <div>
           <div class="Layout">
             <el-form :model="form_task" class="flex_start">
+
               <div class="Layout">
-                <div class="queryName">任务ID</div>
-                <el-input v-model="form_task.id" size="small" clearable style="width:77% !important;" />
-              </div>
-              <div class="Layout marginLeft">
                 <div class="queryName">归属项目</div>
                 <el-select v-model="form_task.projectId" size="small" clearable filterable placeholder="请选择">
                   <el-option v-for="item in projectList" :key="item.code" :label="item.msg" :value="item.code" />
@@ -57,52 +69,24 @@
                   <el-option v-for="item in demandList" :key="item.code" :label="item.msg" :value="item.code" />
                 </el-select>
               </div>
+              <div class="Layout marginLeft">
+                <div class="queryName">模块</div>
+                <el-cascader v-model="form_task.moduleIds" size="small" clearable collapse-tags :props="props" :options="business_platform_Modular" placeholder="请选择" style="width:77% !important;" @click.native="bugDataGet" />
+              </div>
             </el-form>
           </div>
           <div class="Layout" style="margin: 15px 0;">
             <el-form :model="form_task" class="flex_start">
               <div class="Layout">
-                <div class="queryName">负责人</div>
-                <el-select
-                  v-model="form_task.PersonInCharge"
-                  clearable
-                  filterable
-                  remote
-                  reserve-keyword
-                  placeholder="请输入姓名或邮箱前缀"
-                  :remote-method="remoteMethod"
-                  :loading="loading"
-                  size="small"
-                >
-                  <el-option v-for="item in options" :key="item.idap" :label="item.name" :value="test2(item, 0)">
-                    <div class="flex_start">
-                      <div class="deptName">{{ item.deptName }}</div>
-                      <div style="min-width:80px">{{ item.name }}</div>
-                      <div class="deptName">{{ item.idap }}</div>
-                    </div>
-                  </el-option>
+                <div class="queryName">状态</div>
+                <el-select v-model="form_task.status" size="small" clearable filterable placeholder="请选择">
+                  <el-option v-for="item in daStatus" :key="item.code" :label="item.msg" :value="item.code" />
                 </el-select>
               </div>
               <div class="Layout marginLeft">
-                <div class="queryName">参与人</div>
-                <el-select
-                  v-model="form_task.Participant"
-                  clearable
-                  filterable
-                  remote
-                  reserve-keyword
-                  placeholder="请输入姓名或邮箱前缀"
-                  :remote-method="remoteMethod"
-                  :loading="loading"
-                  size="small"
-                >
-                  <el-option v-for="item in options" :key="item.idap" :label="item.name" :value="test2(item, 0)">
-                    <div class="flex_start">
-                      <div class="deptName">{{ item.deptName }}</div>
-                      <div style="min-width:80px">{{ item.name }}</div>
-                      <div class="deptName">{{ item.idap }}</div>
-                    </div>
-                  </el-option>
+                <div class="queryName">健康状态</div>
+                <el-select v-model="form_task.stage" size="small" clearable filterable placeholder="请选择">
+                  <el-option v-for="item in healthStage" :key="item.code" :label="item.msg" :value="item.code" />
                 </el-select>
               </div>
               <div class="Layout marginLeft">
@@ -160,12 +144,9 @@
         <el-table-column label="归属需求" min-width="150" align="center" show-overflow-tooltip>
           <template slot-scope="scope">{{ scope.row.requireName }}</template>
         </el-table-column>
-        <el-table-column label="业务线" min-width="100" align="center">
-          <template slot-scope="scope">{{ scope.row.bizIdString }}</template>
-        </el-table-column>
-        <el-table-column label="平台" min-width="100" align="center">
+        <!-- <el-table-column label="平台" min-width="100" align="center">
           <template slot-scope="scope">{{ scope.row.typeString }}</template>
-        </el-table-column>
+        </el-table-column> -->
         <el-table-column label="模块" min-width="100" align="center" show-overflow-tooltip>
           <template slot-scope="scope">{{ scope.row.clientTypeString }}</template>
         </el-table-column>
@@ -218,11 +199,10 @@
 import {
   taskList,
   configShowTaskEnum,
-  settingGetTypeMap,
   memberQueryMemberInfoByIDAPorName,
-  configShowRequirementVersionEnum,
-  taskIdAndName
+  configShowRequirementVersionEnum
 } from '@/api/taskIndex' // ajax
+import { settingQueryBizModuleList } from '@/api/defectManage'
 import openDialog from '@/views/projectManage/dialog_vue'
 import '@/views/projectManage/publicCss/index.css'
 export default {
@@ -231,6 +211,9 @@ export default {
   },
   data() {
     return {
+      header_show: true,
+      props: { multiple: true },
+      arr_priority: [{ value: 0, name: 'p0' }, { value: 1, name: 'p1' }, { value: 2, name: 'p2' }, { value: 3, name: 'p3' }, { value: 4, name: 'p4' }, { value: 5, name: 'p5' }, { value: 6, name: 'p6' }],
       dialog_open: false,
       curIndex: 1,
       pageSize: 15,
@@ -246,7 +229,7 @@ export default {
       BusinessLine: [], // 业务线
       appClient: [], // 涉及业务线
       arr_platform: [], // 平台数据
-      arr_Modular: [], // 模块数据‘
+      business_platform_Modular: [], // 模块数据
       arr_taskName: [], // 任务名称数据
       projectList: [], // 归属项目数据
       demandList: [], // 需求list
@@ -266,6 +249,10 @@ export default {
   created() {
     this.get_taskList()
     this.get_taskSelect()
+    this.$store.state.data.status = true
+  },
+  destroyed() {
+    this.$store.state.data.status = false
   },
   methods: {
     test2(item, e) {
@@ -283,6 +270,7 @@ export default {
         this.currentPage = 1
       }
       this.table_loading = true
+      this.form_task.bizId = Number(localStorage.getItem('bizId'))
       this.form_task.pageSize = this.pageSize
       this.form_task.curIndex = this.curIndex
       for (const key in this.form_task) { // 接口不接受空值的处理
@@ -384,24 +372,23 @@ export default {
         this.taskSource = res.data.taskSource // 归属需求
         this.appClient = res.data.appClient // 涉及客户端
       })
-      settingGetTypeMap().then(res => {
-        this.BusinessLine = res.data // 业务线
-        this.BusinessLine.map(item => {
-          item.child !== null
-            ? item.child.map(value => {
-              this.arr_platform.push(value) // 平台数据
-              value.child.map(num => {
-                this.arr_Modular.push(num) // 模块数据
-              })
-            })
-            : ''
-        })
-      })
-      taskIdAndName({}).then(res => {
-        // 任务名称
-        this.arr_taskName = Object.keys(res.data).map(eachData => ({
-          id: eachData,
-          name: res.data[eachData]
+    },
+    bugDataGet() { // 所属模块
+      settingQueryBizModuleList(Number(localStorage.getItem('bizId'))).then(res => {
+        this.business_platform_Modular = res.data.map(item => ({
+          ...item,
+          value: item.id,
+          label: item.moduleName,
+          children: item.childModules.length === 0 ? null : item.childModules.map(item1 => ({
+            ...item1,
+            value: item1.id,
+            label: item1.moduleName,
+            children: item1.childModules.length === 0 ? null : item1.childModules.map(item2 => ({
+              ...item2,
+              value: item2.id,
+              label: item2.moduleName
+            }))
+          }))
         }))
       })
     }