|
@@ -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)
|