Browse Source

优化

master
陈裕财 4 years ago
parent
commit
7dcd7f3810
  1. 127
      src/views/xm/core/components/XmItSelect.vue
  2. 51
      src/views/xm/core/xmMenu/XmMenuAdd.vue
  3. 46
      src/views/xm/core/xmMenu/XmMenuEdit.vue
  4. 118
      src/views/xm/core/xmMenu/XmMenuMng.vue

127
src/views/xm/core/components/XmItSelect.vue

@ -0,0 +1,127 @@
<template>
<el-select v-model="iterationId" placeholder="迭代" @focus="focus" :clearable="clearable">
<el-option v-for="(item,index) in xmIterations" :label="item.iterationName" :value="item.id" :key="index" ></el-option>
</el-select>
</template>
<script>
import util from '@/common/js/util';//
import config from '@/common/config';//
import { initSimpleDicts } from '@/api/mdp/meta/item';//
import { listXmIteration,listXmIterationWithState, delXmIteration, batchDelXmIteration,loadTasksToXmIterationState } from '@/api/xm/core/xmIteration';
const map={};
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters([
'userInfo','roles'
]),
},
props:[ 'clearable', 'value', 'productId','linkProjectId','autoSelect'],
watch:{
productId:function(){
this.initData();
},
linkProjectId:function(){
this.initData();
},
value(){
this.iterationId=value;
},
iterationId(){
this.$emit("input",this.iterationId)
if(!this.iterationId){
this.$emit("change",null)
return;
}
var iteration=this.xmIterations.find(i=>i.id==this.iterationId)
this.$emit("change",iteration)
}
},
data() {
return {
load:{list:false,},
iterationId:null,
xmIterations:null,
/**end 自定义属性请在上面加 请加备注**/
}
},//end data
methods: {
focus(){
if(!this.xmIterations){
this.initData()
}
},
searchXmIterations(){
this.getXmIterations();
},
// XmIteration
getXmIterations() {
var params={};
if(this.productId){
params.productId=this.productId
}
if(this.linkProjectId){
params.linkProjectId=this.linkProjectId
}
this.load.list = true;
listXmIterationWithState(params).then((res) => {
var tips=res.data.tips;
if(tips.isOk){
this.xmIterations = res.data.data;
if(this.productId){
map['pd'+this.productId]=res.data.data
}else{
map['pj'+this.linkProjectId]=res.data.data
}
if(this.autoSelect===true&&this.xmIterations.length>0){
var row=this.xmIterations[0];
this.iterationId=row.id
}
}else{
this.$notify({showClose: true, message: tips.msg, type: 'error' });
}
this.load.list = false;
}).catch( err => this.load.list = false );
},
initData(){
if(this.productId){
var xmIterations=map['pd'+this.productId]
if(!xmIterations){
this.getXmIterations();
}else{
this.xmIterations=xmIterations;
}
}else{
if(this.linkProjectId){
var xmIterations=map['pj'+this.linkProjectId]
if(!xmIterations){
this.getXmIterations();
}else{
this.xmIterations=xmIterations;
}
}
}
}
},//end methods
components: {
//
},
mounted() {
this.$nextTick(() => {
//this.initData();
});
}
}
</script>
<style lang="scss" scoped>
</style>

51
src/views/xm/core/xmMenu/XmMenuAdd.vue

@ -93,23 +93,48 @@
</el-col> </el-col>
</el-row> </el-row>
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="需求概述" name="4">
<el-collapse-item title="概述" name="4">
<el-form-item label="需求概述" prop="remark"> <el-form-item label="需求概述" prop="remark">
<el-input type="textarea" :autosize="{ minRows: 6, maxRows: 20}" v-model="addForm.remark" placeholder="什么人?做什么事?,为什么?如: 作为招聘专员,我需要统计员工半年在职/离职人数,以便我能够制定招聘计划" ></el-input> <el-input type="textarea" :autosize="{ minRows: 6, maxRows: 20}" v-model="addForm.remark" placeholder="什么人?做什么事?,为什么?如: 作为招聘专员,我需要统计员工半年在职/离职人数,以便我能够制定招聘计划" ></el-input>
</el-form-item> </el-form-item>
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="成本进度预估" name="2">
<el-form-item label="预估工期" prop="budgetHours">
<el-input-number style="width:200px;" v-model="addForm.budgetHours" :precision="2" :step="8" :min="0" placeholder="预计工期(小时)"></el-input-number>&nbsp;小时
</el-form-item>
<el-form-item label="预估工作量" prop="budgetWorkload">
<el-input-number style="width:200px;" v-model="addForm.budgetWorkload" :precision="2" :step="8" :min="0" placeholder="预计总工作量(人时,不包括下一级)"></el-input-number> <el-tag>人时{{this.toFixed(addForm.budgetWorkload/8/20)}}人月</el-tag>
</el-form-item>
<el-form-item label="预估金额" prop="budgetAmount">
<el-input-number style="width:200px;" v-model="addForm.budgetAmount" :precision="2" :step="100" :min="0" placeholder="预算金额"></el-input-number>
</el-form-item>
</el-collapse-item>
<el-collapse-item title="相关链接" name="3">
<el-collapse-item title="工时" name="2">
<el-form-item label="数据收集方式" prop="calcType">
<el-radio v-model="addForm.calcType" label="3" placeholder="下级往上级汇总" :disabled="addForm.ntype==='0'">下级往上级汇总</el-radio>
<el-radio v-model="addForm.calcType" label="1" placeholder="由任务汇总" :disabled="addForm.ntype==='1'">由任务汇总</el-radio>
<el-radio v-model="addForm.calcType" label="2" placeholder="手工填报" :disabled="addForm.ntype==='1'">手工填报</el-radio>
</el-form-item>
<el-form-item label="当前进度" prop="mactRate" >
<el-progress style="width:80%;" :stroke-width="26" :percentage="addForm.mactRate?addForm.mactRate:0"></el-progress>
</el-form-item>
<el-form-item label="预估工期" prop="budgetHours">
<el-input-number :disabled="addForm.calcType!=='2' && addForm.ntype==='1'" style="width:200px;" v-model="addForm.budgetHours" :precision="2" :step="8" :min="0" placeholder="预计工期(小时)"></el-input-number> &nbsp;h
</el-form-item>
<el-form-item label="预估工时" prop="budgetWorkload">
<el-input-number :disabled="addForm.calcType!=='2' && addForm.ntype==='1'" style="width:200px;" v-model="addForm.budgetWorkload" :precision="2" :step="8" :min="0" placeholder="预计工时(小时)"></el-input-number> &nbsp;h
</el-form-item>
<el-form-item label="实际工时" prop="mactWorkload">
<el-input-number :disabled="addForm.calcType!=='2' && addForm.ntype==='1'" style="width:200px;" v-model="addForm.mactWorkload" :precision="2" :step="8" :min="0" placeholder="实际工时(小时)"></el-input-number> &nbsp;h
</el-form-item>
<font color="blue" style="font-size:10px;">控制规则:
<br>下级往上汇总指需求池的数据来自直接下级的需求池(需求)的数据之和逐级往上汇总
<br>由任务汇总 指需求(不包括需求池)的数据来自与该需求关联的任务的数据之和
<br>手工填报 指需求(不包括需求池)的数据来自手工填报无论是否关联了任务都不从任务汇总
</font>
</el-collapse-item>
<el-collapse-item title="成本" name="3">
<el-form-item label="预估金额" prop="budgetAmount">
<el-input-number :disabled="addForm.calcType!=='2' && addForm.ntype==='1'" style="width:200px;" v-model="addForm.budgetAmount" :precision="2" :step="100" :min="0" placeholder="预算金额"></el-input-number>
</el-form-item>
<el-form-item label="实际金额" prop="mactAmount">
<el-input-number :disabled="addForm.calcType!=='2' && addForm.ntype==='1'" style="width:200px;" v-model="addForm.mactAmount" :precision="2" :step="100" :min="0" placeholder="实际金额"></el-input-number>
</el-form-item>
</el-collapse-item>
<el-collapse-item title="链接" name="5">
<el-form-item label="需求链接" prop="demandUrl"> <el-form-item label="需求链接" prop="demandUrl">
<el-input v-model="addForm.demandUrl" placeholder="需求链接" ></el-input> <el-input v-model="addForm.demandUrl" placeholder="需求链接" ></el-input>
</el-form-item> </el-form-item>

46
src/views/xm/core/xmMenu/XmMenuEdit.vue

@ -98,37 +98,29 @@
</el-col> </el-col>
</el-row> </el-row>
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="需求概述" name="4">
<el-collapse-item title="概述" name="4">
<el-form-item label="需求概述" prop="remark"> <el-form-item label="需求概述" prop="remark">
<el-input type="textarea" :autosize="{ minRows: 6, maxRows: 20}" v-model="editForm.remark" placeholder="什么人?做什么事?,为什么?如: 作为招聘专员,我需要统计员工半年在职/离职人数,以便我能够制定招聘计划" ></el-input> <el-input type="textarea" :autosize="{ minRows: 6, maxRows: 20}" v-model="editForm.remark" placeholder="什么人?做什么事?,为什么?如: 作为招聘专员,我需要统计员工半年在职/离职人数,以便我能够制定招聘计划" ></el-input>
</el-form-item> </el-form-item>
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="工期与工作量预估" name="2">
<el-form-item label="预估工期" prop="budgetHours">
<el-input-number style="width:200px;" v-model="editForm.budgetHours" :precision="2" :step="8" :min="0" placeholder="预计工期(小时)"></el-input-number>&nbsp;小时
</el-form-item>
<el-form-item label="预估工作量" prop="budgetWorkload">
<el-input-number style="width:200px;" v-model="editForm.budgetWorkload" :precision="2" :step="8" :min="0" placeholder="预计总工作量(人时,不包括下一级)"></el-input-number> <el-tag>人时{{this.toFixed(editForm.budgetWorkload/8/20)}}人月</el-tag>
</el-form-item>
<el-form-item label="预估金额" prop="budgetAmount">
<el-input-number style="width:200px;" v-model="editForm.budgetAmount" :precision="2" :step="100" :min="0" placeholder="预算金额"></el-input-number>
</el-form-item>
<font color="blue" style="font-size:10px;">控制规则下级预估工作量总和不能大于上级预估工作量</font>
</el-collapse-item>
<el-collapse-item title="进度与实际工作量填报" name="3">
<el-collapse-item title="工时" name="2">
<el-form-item label="数据收集方式" prop="calcType"> <el-form-item label="数据收集方式" prop="calcType">
<el-radio v-model="editForm.calcType" label="3" placeholder="下级往上级汇总" :disabled="editForm.ntype==='0'">下级往上级汇总</el-radio> <el-radio v-model="editForm.calcType" label="3" placeholder="下级往上级汇总" :disabled="editForm.ntype==='0'">下级往上级汇总</el-radio>
<el-radio v-model="editForm.calcType" label="1" placeholder="由任务汇总" :disabled="editForm.ntype==='1'">由任务汇总</el-radio> <el-radio v-model="editForm.calcType" label="1" placeholder="由任务汇总" :disabled="editForm.ntype==='1'">由任务汇总</el-radio>
<el-radio v-model="editForm.calcType" label="2" placeholder="手工填报" :disabled="editForm.ntype==='1'">手工填报</el-radio> <el-radio v-model="editForm.calcType" label="2" placeholder="手工填报" :disabled="editForm.ntype==='1'">手工填报</el-radio>
</el-form-item> </el-form-item>
<el-form-item label="当前进度" prop="mactRate" v-if="editForm.calcType==='2'">
<el-input-number style="width:200px;" v-model="editForm.mactRate" :precision="2" :step="5" :min="0" :max="100" placeholder="进度"></el-input-number> &nbsp;%
<el-form-item label="当前进度" prop="mactRate" >
<el-progress style="width:80%;" :stroke-width="26" :percentage="editForm.mactRate?addForm.mactRate:0"></el-progress>
</el-form-item>
<el-form-item label="预估工期" prop="budgetHours">
<el-input-number :disabled="editForm.calcType!=='2' && editForm.ntype==='1'" style="width:200px;" v-model="editForm.budgetHours" :precision="2" :step="8" :min="0" placeholder="预计工期(小时)"></el-input-number>&nbsp;h
</el-form-item> </el-form-item>
<el-form-item label="实际工作量" prop="mactWorkload" v-if="editForm.calcType==='2'">
<el-input-number style="width:200px;" v-model="editForm.mactWorkload" :precision="2" :step="8" :min="0" placeholder="实际总工作量(人时)"></el-input-number> <el-tag>人时{{this.toFixed(editForm.budgetWorkload/8/20)}}人月</el-tag>
<el-form-item label="预估工时" prop="budgetWorkload">
<el-input-number :disabled="editForm.calcType!=='2' && editForm.ntype==='1'" style="width:200px;" v-model="editForm.budgetWorkload" :precision="2" :step="8" :min="0" placeholder="预计工时(人时)"></el-input-number> &nbsp;h
</el-form-item> </el-form-item>
<el-form-item label="实际金额" prop="mactAmount" v-if="editForm.calcType==='2'">
<el-input-number style="width:200px;" v-model="editForm.mactAmount" :precision="2" :step="100" :min="0" placeholder="实际金额"></el-input-number>
<el-form-item label="实际工时" prop="mactWorkload">
<el-input-number :disabled="editForm.calcType!=='2' && editForm.ntype==='1'" style="width:200px;" v-model="editForm.mactWorkload" :precision="2" :step="8" :min="0" placeholder="实际工时(人时)"></el-input-number> &nbsp;h
</el-form-item> </el-form-item>
<font color="blue" style="font-size:10px;">控制规则: <font color="blue" style="font-size:10px;">控制规则:
<br>下级往上汇总指需求池的数据来自直接下级的需求池(需求)的数据之和逐级往上汇总 <br>下级往上汇总指需求池的数据来自直接下级的需求池(需求)的数据之和逐级往上汇总
@ -136,7 +128,19 @@
<br>手工填报 指需求(不包括需求池)的数据来自手工填报无论是否关联了任务都不从任务汇总 <br>手工填报 指需求(不包括需求池)的数据来自手工填报无论是否关联了任务都不从任务汇总
</font> </font>
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="相关链接" name="5">
<el-collapse-item title="成本" name="3">
<el-form-item label="预估金额" prop="budgetAmount">
<el-input-number :disabled="editForm.calcType!=='2' && editForm.ntype==='1'" style="width:200px;" v-model="editForm.budgetAmount" :precision="2" :step="100" :min="0" placeholder="预算金额"></el-input-number>
</el-form-item>
<el-form-item label="实际金额" prop="mactAmount">
<el-input-number :disabled="editForm.calcType!=='2' && editForm.ntype==='1'" style="width:200px;" v-model="editForm.mactAmount" :precision="2" :step="100" :min="0" placeholder="实际金额"></el-input-number>
</el-form-item>
</el-collapse-item>
<el-collapse-item title="链接" name="5">
<el-form-item label="需求链接" prop="demandUrl"> <el-form-item label="需求链接" prop="demandUrl">
<el-input v-model="editForm.demandUrl" placeholder="需求链接" ></el-input> <el-input v-model="editForm.demandUrl" placeholder="需求链接" ></el-input>
</el-form-item> </el-form-item>

118
src/views/xm/core/xmMenu/XmMenuMng.vue

@ -13,14 +13,8 @@
<el-link title="产品,点击选择、清除选择" @click="productVisible=true" type="warning" slot="reference" v-if="!xmProduct" icon="el-icon-search"><font style="font-size:14px;">{{filters.product?filters.product.productName:'选择产品'}}</font></el-link> <el-link title="产品,点击选择、清除选择" @click="productVisible=true" type="warning" slot="reference" v-if="!xmProduct" icon="el-icon-search"><font style="font-size:14px;">{{filters.product?filters.product.productName:'选择产品'}}</font></el-link>
</el-popover> </el-popover>
<el-popover
placement="bottom"
width="400"
trigger="manual"
v-model="iterationVisible">
<xm-iteration-select v-if="!xmIteration" :auto-select="false" :sel-project="selProject" @row-click="onIterationSelected" ref="xmProductMng" :product-id="filters.product?filters.product.id:null" :simple="true" @clear-select="onIterationClearSelect" @close="iterationVisible=false"></xm-iteration-select>
<el-link title="迭代,点击选择、清除选择" @click="iterationVisible=true" type="warning" slot="reference" v-if="!xmIteration" icon="el-icon-search"><font style="font-size:14px;">{{filters.iteration?filters.iteration.iterationName:'选择迭代'}}</font></el-link>
</el-popover>
<xm-it-select style="width: 120px;" clearable :product-id="filters.product?filters.product.id:null" :link-project-id="selProject?selProject.id:null" placeholder="迭代" @change="onIterationSelected" @clear="onIterationClearSelect">
</xm-it-select>
<el-select v-model="filters.taskFilterType" placeholder="已分配任务的需求?" clearable style="width: 160px;"> <el-select v-model="filters.taskFilterType" placeholder="已分配任务的需求?" clearable style="width: 160px;">
<el-option value="not-join-any-project" label="未分配过任务的需求"></el-option> <el-option value="not-join-any-project" label="未分配过任务的需求"></el-option>
<el-option value="join-any-project" label="已分配过任务的需求"></el-option> <el-option value="join-any-project" label="已分配过任务的需求"></el-option>
@ -232,9 +226,9 @@
</el-table-column> </el-table-column>
<el-table-column prop="productId" label="产品" width="100" show-overflow-tooltip>
<el-table-column prop="productId" label="产品" width="100" show-overflow-tooltip sortable>
</el-table-column> </el-table-column>
<el-table-column prop="status" label="状态" min-width="80" >
<el-table-column prop="status" label="状态" min-width="80" sortable>
<template slot-scope="scope"> <template slot-scope="scope">
<div class="cell-text"> <div class="cell-text">
{{dicts.menuStatus.some(i=>i.id==scope.row.status)?dicts.menuStatus.find(i=>scope.row.status==i.id).name:''}} {{dicts.menuStatus.some(i=>i.id==scope.row.status)?dicts.menuStatus.find(i=>scope.row.status==i.id).name:''}}
@ -246,7 +240,7 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="dtype" label="类型" width="100" >
<el-table-column prop="dtype" label="类型" width="100" sortable>
<template slot-scope="scope"> <template slot-scope="scope">
<div class="cell-text"> <div class="cell-text">
{{formaterByDicts(scope.row,'dtype',scope.row.dtype)}} {{formaterByDicts(scope.row,'dtype',scope.row.dtype)}}
@ -258,7 +252,7 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="source" label="来源" width="100" :formatter="formaterByDicts" show-overflow-tooltip>
<el-table-column prop="source" label="来源" width="100" :formatter="formaterByDicts" show-overflow-tooltip sortable>
<template slot-scope="scope"> <template slot-scope="scope">
<div class="cell-text"> <div class="cell-text">
{{formaterByDicts(scope.row,'source',scope.row.source)}} {{formaterByDicts(scope.row,'source',scope.row.source)}}
@ -270,7 +264,7 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="dlvl" label="层次" width="100">
<el-table-column prop="dlvl" label="层次" width="100" sortable>
<template slot-scope="scope"> <template slot-scope="scope">
<div class="cell-text"> <div class="cell-text">
{{formaterByDicts(scope.row,'dlvl',scope.row.dlvl)}} {{formaterByDicts(scope.row,'dlvl',scope.row.dlvl)}}
@ -282,7 +276,7 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="priority" label="优先级" width="100">
<el-table-column prop="priority" label="优先级" width="100" sortable>
<template slot-scope="scope"> <template slot-scope="scope">
<div class="cell-text"> <div class="cell-text">
@ -295,7 +289,7 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="iterationName" label="迭代" min-width="120" show-overflow-tooltip>
<el-table-column prop="iterationName" label="迭代" min-width="120" show-overflow-tooltip sortable>
<template slot="header"> <template slot="header">
迭代 迭代
<el-popover <el-popover
@ -310,38 +304,58 @@
<el-button type="text" slot="reference" icon="el-icon-edit" title="点击设置需求与迭代的关联关系" @click="linkIterationPopoverVisible=true">关联</el-button> <el-button type="text" slot="reference" icon="el-icon-edit" title="点击设置需求与迭代的关联关系" @click="linkIterationPopoverVisible=true">关联</el-button>
</el-popover> </el-popover>
</template> </template>
<template slot-scope="scope">
<div class="cell-text">
{{scope.row.iterationName}}
</div>
<span class="cell-bar">
<xm-it-select :product-id="filters.product?filters.product.id:null" :link-project-id="selProject?selProject.id:null" v-model="scope.row.iterationId" placeholder="迭代" style="display:block;" @change="editXmMenuSomeFields(scope.row,'iterationId',$event)">
</xm-it-select>
</span>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="taskCnt" label="任务数" min-width="80" show-overflow-tooltip>
<el-table-column prop="taskCnt" label="任务数" min-width="100" show-overflow-tooltip sortable>
<template slot="header"> <template slot="header">
<el-tooltip content="已完成 / 总数 注意:统计包括下级数据"><div>任务数<i class="el-icon-bangzhu"></i></div></el-tooltip>
<el-tooltip content="已完成 / 总数 注意:统计包括下级数据"><span>任务数</span></el-tooltip>
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<div>{{scope.row.finishTaskCnt}}/{{scope.row.taskCnt}}</div> <div>{{scope.row.finishTaskCnt}}/{{scope.row.taskCnt}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="finishRate" label="进度" min-width="80" show-overflow-tooltip>
<el-table-column prop="finishRate" label="进度" min-width="80" show-overflow-tooltip sortable>
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.finishRate"><el-tag :type="scope.row.finishRate>=100?'success':'warning'">{{scope.row.finishRate}}%</el-tag></span> <span v-if="scope.row.finishRate"><el-tag :type="scope.row.finishRate>=100?'success':'warning'">{{scope.row.finishRate}}%</el-tag></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="bugs" label="缺陷" min-width="100" show-overflow-tooltip>
<el-table-column prop="bugs" label="缺陷" min-width="100" show-overflow-tooltip sortable>
<template slot="header"> <template slot="header">
<el-tooltip content="已关闭缺陷数 / 总缺陷数 注意:统计包括下级数据"><div>缺陷<i class="el-icon-bangzhu"></i></div></el-tooltip>
<el-tooltip content="已关闭缺陷数 / 总缺陷数 注意:统计包括下级数据"><span> 缺陷 </span></el-tooltip>
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
{{scope.row.closedBugs}}/{{scope.row.bugCnt}} {{scope.row.closedBugs}}/{{scope.row.bugCnt}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="tagNames" label="标签" min-width="100" show-overflow-tooltip>
<el-table-column prop="tagNames" label="标签" min-width="100" show-overflow-tooltip sortable>
<template slot-scope="scope">
<div class="cell-text">
{{scope.row.tagNames}}
</div>
<span class="cell-bar">
<el-button @click="showFieldTag(scope.row)">选标签</el-button>
</span>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="ctime" label="创建日期" min-width="100" show-overflow-tooltip>
<el-table-column prop="ctime" label="创建日期" min-width="100" show-overflow-tooltip sortable>
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.ctime}} </span> <span>{{scope.row.ctime}} </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="mmUsername" label="跟进人" min-width="100" show-overflow-tooltip>
<el-table-column prop="mmUsername" label="跟进人" min-width="100" show-overflow-tooltip sortable>
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.mmUsername}} </span> <span>{{scope.row.mmUsername}} </span>
</template> </template>
@ -397,6 +411,10 @@
</tag-mng> </tag-mng>
</el-drawer> </el-drawer>
<el-drawer append-to-body title="标签" :visible.sync="fieldTagVisible" size="60%">
<tag-mng :jump="true" @select-confirm="editXmMenuSomeFields(editForm,'tagIds',$event)">
</tag-mng>
</el-drawer>
<el-drawer <el-drawer
append-to-body append-to-body
@ -437,6 +455,7 @@
import XmTaskMng from '../xmTask/XmTaskMng'; import XmTaskMng from '../xmTask/XmTaskMng';
import XmTaskListForMenu from '../xmTask/XmTaskListForMenu'; import XmTaskListForMenu from '../xmTask/XmTaskListForMenu';
import XmIterationSelect from '../xmIteration/XmIterationSelect';// import XmIterationSelect from '../xmIteration/XmIterationSelect';//
import XmItSelect from '@/views/xm/core/components/XmItSelect';//
import UsersSelect from "@/views/mdp/sys/user/UsersSelect"; import UsersSelect from "@/views/mdp/sys/user/UsersSelect";
import XmMenuSelect from "../xmMenu/XmMenuSelect"; import XmMenuSelect from "../xmMenu/XmMenuSelect";
@ -547,6 +566,7 @@
pickerOptions: util.pickerOptions('datarange'), pickerOptions: util.pickerOptions('datarange'),
productVisible:false, productVisible:false,
tagSelectVisible:false, tagSelectVisible:false,
fieldTagVisible:false,
parentMenuVisible:false, parentMenuVisible:false,
maps:new Map(), maps:new Map(),
linkIterationPopoverVisible:false, linkIterationPopoverVisible:false,
@ -1180,12 +1200,59 @@
} }
return params; return params;
}, },
showFieldTag(row){
this.editForm=row;
this.fieldTagVisible=true;
},
editXmMenuSomeFields(row,fieldName,$event){ editXmMenuSomeFields(row,fieldName,$event){
var params={menuId:row.menuId};
params[fieldName]=$event;
var params={menuIds:[row.menuId]};
if(this.sels.length>0){
if(!this.sels.some(k=>k.menuId==row.menuId)){
this.$notify({showClose:true,message:'请操作选中的行或者取消选中的行再操作其它行',type:'warning'})
return;
}
params.menuIds=this.sels.map(i=>i.menuId)
}
if(fieldName==='iterationId'){
if($event){
params[fieldName]=$event.id;
params.iterationName=$event.iterationName
}else{
return;
}
}else if(fieldName==='tagIds'){
if($event){
params[fieldName]=$event.map(i=>i.tagId).join(",");
params.tagNames=$event.map(i=>i.tagName).join(",");
}else{
return;
}
}else {
params[fieldName]=$event;
}
editXmMenuSomeFields(params).then(res=>{ editXmMenuSomeFields(params).then(res=>{
var tips = res.data.tips; var tips = res.data.tips;
if(tips.isOk){ if(tips.isOk){
if(this.sels.length>0){
this.sels.forEach(i=>{
i[fieldName]=params[fieldName]
if(fieldName==='iterationId'){
i['iterationName']=params['iterationName']
}
if(fieldName==='tagIds'){
i['tagNames']=params['tagNames']
i['tagIds']=params['tagIds']
this.fieldTagVisible=false;
}
})
}else{
if(fieldName==='tagIds'){
row['tagNames']=params['tagNames']
row['tagIds']=params['tagIds']
this.fieldTagVisible=false;
}
}
}else{ }else{
this.$notify({showClose:true,message:tips.msg,type:tips.isOk?'success':'error'}) this.$notify({showClose:true,message:tips.msg,type:tips.isOk?'success':'error'})
} }
@ -1206,6 +1273,7 @@
XmMenuMngBatch, XmMenuMngBatch,
TagMng, TagMng,
XmMenuSelect, XmMenuSelect,
XmItSelect,
// //
}, },
mounted() { mounted() {

Loading…
Cancel
Save