Ver Fonte

业务线通知

wangziqian há 5 anos atrás
pai
commit
17e4295347
2 ficheiros alterados com 126 adições e 23 exclusões
  1. 8 0
      src/api/configure.js
  2. 118 23
      src/views/ToConfigure/components/modifyNotice.vue

+ 8 - 0
src/api/configure.js

@@ -193,3 +193,11 @@ export function showTaskStatusEnum(id) {
     method: 'get'
   })
 }
+
+// 任务需求阶段列表
+export function getBizNoticeSettingEnum(id) {
+  return request({
+    url: TeamManagement + `/setting/getBizNoticeSettingEnum?bizId=` + id,
+    method: 'get'
+  })
+}

+ 118 - 23
src/views/ToConfigure/components/modifyNotice.vue

@@ -11,21 +11,37 @@
       <h2 v-show="type==='require'" class="form-title">需求范围</h2>
       <h2 v-show="type==='task'" class="form-title">任务范围</h2>
       <el-form ref="form" :model="formData" label-width="100px" label-position="left">
-        <el-form-item :label="type === 'require'?'需求方向':'任务方向'">
-          <el-select v-model="formData.direction" placeholder="请选择" size="small">
-            <el-option label="区域一" value="shanghai" />
-            <el-option label="区域二" value="beijing" />
-          </el-select>
+        <el-form-item v-if="type === 'require'" label="需求方向">
+          <el-cascader
+            v-model="formData.requireOrientId"
+            size="small"
+            collapse-tags
+            :props="requireProps"
+            :options="directionList"
+            placeholder="请选择"
+            clearable
+          />
+        </el-form-item>
+        <el-form-item v-if="type === 'task'" label="技术模块">
+          <el-cascader
+            v-model="formData.techModuleId"
+            size="small"
+            collapse-tags
+            :props="requireProps"
+            :options="directionList"
+            placeholder="请选择"
+            clearable
+          />
         </el-form-item>
       </el-form>
       <el-form ref="form" :model="formData" label-width="100px" label-position="left" :inline="true">
         <el-form-item label="跟版客户端">
-          <el-select v-model="formData.app" placeholder="请选择" size="small">
+          <el-select v-model="formData.clientId" placeholder="请选择" size="small">
             <el-option v-for="item in appClientList" :key="'app'+item.code" :label="item.msg" :value="item.code" />
           </el-select>
         </el-form-item>
         <el-form-item>
-          <el-select v-model="formData.client" placeholder="请选择" size="small">
+          <el-select v-model="formData.clientVersionId" placeholder="请选择" size="small">
             <el-option v-for="item in clientList" :key="'client'+item.code" :label="item.msg" :value="item.code" />
           </el-select>
         </el-form-item>
@@ -33,17 +49,20 @@
       <h2 class="form-title">通知条件</h2>
       <el-form ref="form" :model="formData" label-width="100px" label-position="left">
         <el-form-item v-for="(item,index) in formData.conditionList" :key="'condition'+index" label="条件">
-          <el-select v-model="item.type" placeholder="请选择类型" size="small" class="condition-select">
+          <el-select v-model="item.type" placeholder="请选择类型" size="small" class="condition-select" @change="changeNoticeItem(item)">
             <el-option v-for="key in typeList" :key="key.label" :label="key.label" :value="key.value" />
           </el-select>
-          <el-select v-model="item.status" placeholder="请选择状态" size="small" class="condition-select">
+          <el-select v-show="item.type === 0" v-model="item.status" placeholder="请选择状态" size="small" class="condition-select">
             <el-option v-for="key in statusList" :key="'status'+key.code" :label="key.msg" :value="key.code" />
           </el-select>
-          <el-select v-model="item.delay" placeholder="请选择" size="small" class="condition-select">
-            <el-option v-for="key in typeList" :key="key.label" :label="key.label" :value="key.value" />
+          <el-select v-show="item.type === 0" v-model="item.triggerEvent" placeholder="请选择" size="small" class="condition-select">
+            <el-option v-for="key in triggerList" :key="'trigger'+key.code" :label="key.name" :value="key.code" />
           </el-select>
-          <el-select v-model="item.more" placeholder="请选择" size="small" class="condition-select">
-            <el-option v-for="key in typeList" :key="key.label" :label="key.label" :value="key.value" />
+          <el-select v-show="item.type === 1" v-model="item.triggerEvent" placeholder="请选择" size="small" class="condition-select">
+            <el-option v-for="key in noticeEventList" :key="'event'+key.code" :label="key.name" :value="key.code" />
+          </el-select>
+          <el-select v-show="item.type === 0" v-model="item.greaterTime" placeholder="请选择" size="small" class="condition-select">
+            <el-option v-for="key in rangDaysList" :key="key.label" :label="key.label" :value="key.value" />
           </el-select>
           <i class="el-icon-remove-outline" @click="removeItem(index)" />
         </el-form-item>
@@ -122,8 +141,11 @@
 <script>
 import {
   showRequireStatusEnum,
-  showTaskStatusEnum
+  showTaskStatusEnum,
+  getBizNoticeSettingEnum
 } from '@/api/configure'
+import { settingQueryBizRqmtOrntList } from '@/api/requirement.js'
+import { settingQueryBizModuleList } from '@/api/defectManage'
 import { queryTeamInfoList } from '@/api/workSchedule'
 import { showAppClientEnum } from '@/api/version.js'
 import normalDialog from '@/components/dialog/normalDialog'
@@ -151,10 +173,19 @@ export default {
     return {
       bizId: localStorage.getItem('bizId'),
       title: this.type === 'require' ? '新建需求定时通知' : '新建任务定时通知',
+      requireProps: {
+        value: 'id',
+        label: 'rqmtOrntName',
+        children: 'childRqmtOrnts',
+        multiple: true
+      },
+      directionList: [], // 需求方面列表
+      modulesList: [], // 任务模块列表
       formData: {
-        direction: null, // 方向
-        app: null, // 客户端
-        client: null, // 版本
+        requireOrientId: [], // 需求方向
+        techModuleId: [], // 技术模块
+        clientId: null, // 客户端
+        clientVersionId: null, // 版本
         conditionList: [], // 条件列表
         noticeType: [] // 通知方式
       },
@@ -177,14 +208,23 @@ export default {
       show: this.visible, // 显示弹框
       appClientList: [], // 客户端选择列表
       typeList: [], // 条件类型选择列表
-      statusList: []// 状态选择列表
+      statusList: [], // 状态选择列表
+      noticeEventList: [], // 事件列表
+      triggerList: [], // 触发事件: 0 停留 1 交付 2 提测
+      aheadDaysList: [
+        { label: '3天前开始提醒', value: 3 },
+        { label: '2天前开始提醒', value: 2 },
+        { label: '1天前开始提醒', value: 1 },
+        { label: '过期提醒', value: 0 }
+      ], // 提前几天提醒
+      rangDaysList: [] // 条件中大于天数列表
     }
   },
   computed: {
     clientList: { // 版本列表
       get() {
-        if (this.formData.app !== null) {
-          const obj = this.appClientList.find(item => item.code === this.formData.app)
+        if (this.formData.clientId !== null) {
+          const obj = this.appClientList.find(item => item.code === this.formData.clientId)
           return obj.childEnumInfos || []
         } else {
           return []
@@ -209,9 +249,9 @@ export default {
       deep: true,
       immediate: true
     },
-    'formData.app': { // 客户端改变,版本默认取第一个版本
+    'formData.clientId': { // 客户端改变,版本默认取第一个版本
       handler(newV) {
-        this.formData.client = this.clientList[0] || null
+        this.formData.clientVersionId = this.clientList[0] || null
       }
     },
     'noticeList.Email': {
@@ -234,11 +274,48 @@ export default {
     }
   },
   created() {
+    this.getBizNoticeSettingEnum()
+    this.getRequireDirection()
+    this.settingQueryBizModuleList()
     this.showAppClientEnum()
     this.queryTeamInfoList()
     this.init()
   },
   methods: {
+    async getBizNoticeSettingEnum() { // 任务需求事件列表
+      const res = await getBizNoticeSettingEnum(this.bizId)
+      if (res.code === 200) {
+        this.triggerList = res.data.noticeConditionOpList
+        console.log(this.triggerList)
+        this.type === 'require'
+          ? this.noticeEventList = res.data.noticeEventRequireOpList
+          : this.noticeEventList = res.data.noticeEventTaskOpList
+      }
+    },
+    async getRequireDirection() { // 需求方向列表
+      const res = await settingQueryBizRqmtOrntList(this.bizId)
+      if (res.code === 200) {
+        this.directionList = this.getRequireData(res.data)
+      }
+    },
+    async settingQueryBizModuleList() { // 任务模块列表
+      const res = await settingQueryBizModuleList(this.bizId)
+      if (res.code === 200) {
+        this.modulesList = this.getTaskData(res.data)
+      }
+    },
+    getRequireData(data) {
+      for (var i = 0; i < data.length; i++) {
+        data[i].childRqmtOrnts.length < 1 ? delete data[i].childRqmtOrnts : this.getRequireData(data[i].childRqmtOrnts)
+      }
+      return data
+    },
+    getTaskData(data) {
+      for (var i = 0; i < data.length; i++) {
+        data[i].childModules.length < 1 ? delete data[i].childModules : this.getTaskData(data[i].childModules)
+      }
+      return data
+    },
     async showAppClientEnum() { // 获取客户端列表
       const res = await showAppClientEnum()
       if (res.code === 200) {
@@ -273,9 +350,27 @@ export default {
         this.noticeGroupList = [{ label: '任务成员', value: 0 }, { label: '团队', value: 1 }, { label: '自定义人员', value: 2 }]
         this.showTaskStatusEnum()
       }
+      let i = 1
+      while (i <= 100) {
+        this.rangDaysList.push({ label: `大于${i}天`, value: i })
+        i++
+      }
+    },
+    changeNoticeItem(item) { // 修改条件
+      if (item.type === 0) {
+        item.triggerEvent = this.triggerList[0].code
+      } else if (item.type === 1) {
+        item.triggerEvent = this.noticeEventList[0].code
+      }
     },
     addCondition() { // 添加条件
-      this.formData.conditionList.push({ type: 0, status: 0, delay: 0, more: 1 })
+      this.formData.conditionList.push({
+        type: 0, // 1 需求状态 2 需求事件 3 任务状态 4 任务事件
+        status: 0,
+        triggerEvent: 0, // 触发事件: 0 停留 1 交付 2 提测
+        greaterTime: 1, // 大于的时间
+        lessTime: 3 // 提前提醒的时间
+      })
     },
     removeItem(index) { // 移除条件
       this.formData.conditionList.splice(index, 1)