@ -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 > < / e l - b u t t o n >
< / span >
< / e l - r o w >
< / e l - r o w >
< el -row >
< el -row >
< el -table :data ="xmTasks" :show-header ="false" :max-height ="400" >
< el -table -column type = "index " label = "序号 " > < / e l - t a b l e - c o l u m n >
< el -table :data ="xmTasks" :max-height ="400" v-loading ="load.list" @selection-change="selsChange" @row-click="rowClick" >
< el -table -column type = "select io n" label = "全选 " > < / e l - t a b l e - c o l u m n >
< el -table -column prop = "name" label = "名称" > < / e l - t a b l e - c o l u m n >
< el -table -column prop = "name" label = "名称" > < / e l - t a b l e - c o l u m n >
< 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 >
< / e l - s e l e c t >
< / span >
< / template >
< / e l - t a b l e - c o l u m n >
< 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 >
< / e l - s e l e c t >
< / span >
< / template >
< / e l - t a b l e - c o l u m n >
< 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 >
< / e l - t a b l e - c o l u m n >
< / e l - t a b l e >
< / e l - t a b l e >
< / e l - r o w >
< / e l - r o w >
< xm -group -dialog ref = "xmGroupDialog" :isSelectSingleUser ="true" :sel-project ="linkProjectId?{id:linkProjectId}:null" :xm-product ="parentXmMenu?{id:parentXmMenu.productId}:null" @user-confirm ="selectCreateUserConfirm" >
< / x m - g r o u p - d i a l o g >
< / e l - r o w >
< / e l - r o w >
< / 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 ( "bug s-change" , this . xmTasks )
this . $emit ( "task s-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 : [ ] ,
} , / / 下 拉 选 择 框 的 所 有 静 态 数 据 p a r a m s = [ { c a t e g o r y I d : ' 0 0 0 1 ' , i t e m C o d e : ' s e x ' } ] 返 回 结 果 { ' s e x ' : [ { o p t i o n V a l u e : ' 1 ' , o p t i o n N a m e : ' 男 ' , s e q O r d e r : ' 1 ' , f p : ' ' , i s D e f a u l t : ' 0 ' } , { o p t i o n V a l u e : ' 2 ' , o p t i o n N a m e : ' 女 ' , s e q O r d e r : ' 2 ' , f p : ' ' , i s D e f a u l t : ' 0 ' } ] }
}
}
} , / / e n d d a t a
} , / / e n d d a t a
methods : {
methods : {
/ / 选 择 行 x m T a s k
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' } )
}
} )
} ,
/ / 批 量 删 除 x m T a s k
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 ;
/ / t h i s . $ e m i t ( ' r o w - c l i c k ' , r o w , ) ; / / @ r o w - c l i c k = " r o w C l i c k "
} ,
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' } ]
}
} ,
} , / / e n d m e t h o d s
} , / / e n d m e t h o d s
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 >