Browse Source

优化

master
陈裕财 4 years ago
parent
commit
fae97f54ab
  1. 243
      src/views/xm/core/xmWorkItem/XmSubTaskList.vue

243
src/views/xm/core/xmWorkItem/XmSubTaskList.vue

@ -1,17 +1,72 @@
<template> <template>
<el-row v-if="parentXmMenu.dclass==='3' && xmTasks.length>0">
<el-row v-show="parentXmMenu.dclass==='3' && xmTasks.length>0">
<el-row> <el-row>
<div class="icon" style="background-color: #1CC7EA;"> <div class="icon" style="background-color: #1CC7EA;">
<i class="el-icon-s-operation"></i> <i class="el-icon-s-operation"></i>
</div> </div>
任务 任务
<span style="float:right;">
<el-button @click="batchDel" type="danger" icon="el-icon-delete" plain></el-button>
</span>
</el-row> </el-row>
<el-row> <el-row>
<el-table :data="xmTasks" :show-header="false" :max-height="400">
<el-table-column type="index" label="序号"></el-table-column>
<el-table :data="xmTasks" :max-height="400" v-loading="load.list" @selection-change="selsChange" @row-click="rowClick">
<el-table-column type="selection" label="全选"></el-table-column>
<el-table-column prop="name" label="名称"></el-table-column> <el-table-column prop="name" label="名称"></el-table-column>
<el-table-column
label="状态"
type="taskState"
width="100"
>
<template slot-scope="scope">
<div class="cell-text">
<el-button style="display:block;" :type="item.className" plain round v-for="(item,index) in formatterTaskStateDicts(scope.row.taskState)" :key="index">{{item.name}}</el-button>
</div>
<span class="cell-bar">
<el-select v-model="scope.row.taskState" placeholder="任务状态" style="display:block;" @change="editXmTaskSomeFields(scope.row,'taskState',$event)">
<el-option :value="item.id" :label="item.name" v-for="(item,index) in dicts.taskState" :key="index"></el-option>
</el-select>
</span>
</template>
</el-table-column>
<el-table-column
label="优先级"
type="level"
width="100"
>
<template slot-scope="scope">
<div class="cell-text">
<el-button style="display:block;" :type="item.className" plain round v-for="(item,index) in formatterPriorityDicts(scope.row.level)" :key="index">{{item.name}}</el-button>
</div>
<span class="cell-bar">
<el-select v-model="scope.row.level" placeholder="优先级" style="display:block;" @change="editXmTaskSomeFields(scope.row,'level',$event)">
<el-option :value="item.id" :label="item.name" v-for="(item,index) in dicts.priority" :key="index"></el-option>
</el-select>
</span>
</template>
</el-table-column>
<el-table-column
sortable
prop="createUsername"
label="负责人"
width="120"
show-overflow-tooltip
>
<template slot-scope="scope">
<div class="cell-text">
{{scope.row.createUsername}}
</div>
<span class="cell-bar">
<el-button @click="$refs.xmGroupDialog.open({data:scope.row,action:'createUserid'})">选负责人</el-button>
</span>
</template>
</el-table-column>
</el-table> </el-table>
</el-row> </el-row>
<xm-group-dialog ref="xmGroupDialog" :isSelectSingleUser="true" :sel-project="linkProjectId?{id:linkProjectId}:null" :xm-product="parentXmMenu?{id:parentXmMenu.productId}:null" @user-confirm="selectCreateUserConfirm">
</xm-group-dialog>
</el-row> </el-row>
</template> </template>
@ -20,8 +75,9 @@ import Vue from "vue";
import util from "@/common/js/util"; // import util from "@/common/js/util"; //
import treeTool from "@/common/js/treeTool"; // import treeTool from "@/common/js/treeTool"; //
import { initSimpleDicts } from '@/api/mdp/meta/item'; // import { initSimpleDicts } from '@/api/mdp/meta/item'; //
import { listXmTask ,addTask } from '@/api/xm/core/xmTask';
import { listXmTask ,addTask,editXmTaskSomeFields,batchDelXmTask } from '@/api/xm/core/xmTask';
import XmGroupDialog from '@/views/xm/core/xmGroup/XmGroupDialog';//
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
export default { export default {
@ -48,18 +104,35 @@ export default {
this.initData(); this.initData();
}, },
'xmTasks':function(){ 'xmTasks':function(){
this.$emit("bugs-change",this.xmTasks)
this.$emit("tasks-change",this.xmTasks)
} }
}, },
data() { data() {
return{ return{
load:{edit:false,list:false,add:false},
load:{edit:false,list:false,add:false,del:false,},
xmTasks:[], xmTasks:[],
editForm:{},
sels:[],
dicts: {
priority: [],
taskType: [],
planType: [],
priority: [],
xmTaskSettleSchemel: [],
taskState:[],
}, // params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
} }
}, //end data }, //end data
methods: { methods: {
//xmTask
selsChange: function (sels) {
this.sels = sels;
},
getXmTasks(){ getXmTasks(){
listXmTask({menuId:this.parentXmMenu.menuId}).then(res=>{ listXmTask({menuId:this.parentXmMenu.menuId}).then(res=>{
var tips = res.data.tips; var tips = res.data.tips;
@ -115,11 +188,169 @@ export default {
}); });
}, },
//
selectCreateUserConfirm(groupUsers,option) {
if(option && option.action==='createUserid'){
if (groupUsers && groupUsers.length > 0) {
var user= groupUsers[0];
this.editXmTaskSomeFields(option.data,option.action,user)
}
}
},
editXmTaskSomeFields(row,fieldName,$event){
var params={ids:[row.id]};
if(this.sels.length>0){
if(!this.sels.some(k=>k.id==row.id)){
this.$notify({showClose:true,message:'请操作选中的行或者取消选中的行再操作其它行',type:'warning'})
return;
}
params.ids=this.sels.map(i=>i.id)
}
if(fieldName==='menuId'){
if($event){
params[fieldName]=$event.menuId;
params.menuName=$event.menuName
params.productId=$event.productId
}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 if(fieldName==='workload'){
params={...params,...$event}
}else if(fieldName==='executorUserid'){
params.executorUserid=$event[0].userid
params.executorUsername=$event[0].username
}else if(fieldName==='createUserid'){
params.createUserid=$event[0].userid
params.createUsername=$event[0].username
}else{
params[fieldName]=$event
}
editXmTaskSomeFields(params).then(res=>{
var tips = res.data.tips;
if(tips.isOk){
if(this.sels.length>0){
this.sels.forEach(i=>{
this.fieldTagVisible=false;
Object.assign(i,params)
})
}else{
Object.assign(row,params)
}
}else{
this.$notify({showClose:true,message:tips.msg,type:tips.isOk?'success':'error'})
}
})
},
//xmTask
batchDel: function () {
if(this.sels.length==0){
this.$notify.warning("请先选中要删除的记录")
return;
}
this.$confirm("确认删除选中记录吗?", "提示", {
type: "warning",
}).then(() => {
this.load.del = true;
batchDelXmTask(this.sels)
.then((res) => {
this.load.del = false;
var tips = res.data.tips;
if (tips.isOk) {
this.getXmTasks()
}
this.$notify({
showClose: true,
message: tips.msg,
type: tips.isOk ? "success" : "error",
});
})
.catch((err) => (this.load.del = false));
});
},
rowClick: function (row) {
this.editForm = row;
// this.$emit('row-click',row,);// @row-click="rowClick"
},
formatterPriorityDicts(cellValue){
if(!cellValue && cellValue!=='0'){
return []
}
var key="priority";
if(this.dicts[key]==undefined || this.dicts[key]==null || this.dicts[key].length==0 ){
return [{id:cellValue,name:cellValue,className:'primary'}];
}
var list=this.dicts[key].filter(i=>i.id==cellValue)
if(list.length>0){
var data= {...list[0],className:'primary'}
if(data.id=='0'){
data.className='danger'
}else if(data.id=='1'){
data.className='warning'
}else if(data.id=='2'){
data.className='success'
}else if(data.id=='3'){
data.className='primary'
}else if(data.id=='4'){
data.className='info'
}else{
data.className='primary'
}
return [data];
}else{
return [{id:cellValue,name:cellValue,className:'primary'}]
}
},
formatterTaskStateDicts: function(cellValue){
if(!cellValue && cellValue!=='0'){
return []
}
var key="taskState";
if(this.dicts[key]==undefined || this.dicts[key]==null || this.dicts[key].length==0 ){
return [{id:cellValue,name:cellValue,className:'primary'}];
}
var list=this.dicts[key].filter(i=>i.id==cellValue)
if(list.length>0){
var data= {...list[0],className:'primary'}
if(data.id=='0'){
data.className='primary'
}else if(data.id=='1'){
data.className='warning'
}else if(data.id=='2'){
data.className='success'
}else if(data.id=='3'){
data.className='info'
} else{
data.className='danger'
}
return [data];
}else{
return [{id:cellValue,name:cellValue,className:'primary'}]
}
},
}, //end methods }, //end methods
components: { components: {
XmGroupDialog,
}, },
mounted() { mounted() {
this.initData(); this.initData();
initSimpleDicts( "all", ["planType","taskType","priority","xmTaskSettleSchemel","priority","taskState" ]).then((res) => {
this.dicts = res.data.data;
});
}, },
}; };
</script> </script>

Loading…
Cancel
Save