2 changed files with 317 additions and 42 deletions
@ -0,0 +1,295 @@ |
|||
<template> |
|||
<section class="page-container padding border"> |
|||
<el-row> |
|||
<el-row > |
|||
<el-button type="warning" @click="batchSaveMenu" icon="el-icon-finished">保存</el-button> |
|||
<el-button @click="noBatchEdit" icon="el-icon-back">返回</el-button> |
|||
</el-row> |
|||
<el-row style="padding-top:12px;"> |
|||
<el-table ref="table" :indent="16" lazy :load="loadXmMenusLazy" :height="maxTableHeight" :data="xmMenusTreeData" class="drag-table" row-key="menuId" :tree-props="{children: 'children', hasChildren: 'childrenCnt'}" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;"> |
|||
<el-table-column type="selection" width="45"></el-table-column> |
|||
<el-table-column prop="seqNo" label="序号" width="200" fixed="left"> |
|||
<template slot-scope="scope"> |
|||
<div v-if="scope.row.dclass=='1'" class="icon" style="background-color: rgb(255, 153, 51);"> |
|||
<i class="el-icon-s-promotion"></i> |
|||
</div> |
|||
<div v-if="scope.row.dclass=='2'" class="icon" style="background-color: rgb(0, 153, 51);"> |
|||
<i class="el-icon-s-flag"></i> |
|||
</div> |
|||
<div v-if="scope.row.dclass=='3'" class="icon" style="background-color: rgb(79, 140, 255);"> |
|||
<i class="el-icon-document"></i> |
|||
</div> |
|||
<el-input style="width:70%;" v-model="scope.row.seqNo" @change="fieldChange(scope.row,'seqNo')"></el-input> |
|||
</template> |
|||
|
|||
</el-table-column> |
|||
<el-table-column prop="menuName" label="需求名称" min-width="140" show-overflow-tooltip fixed="left"> |
|||
<template slot-scope="scope"> |
|||
<el-input v-model="scope.row.menuName" @change="fieldChange(scope.row,'menuName')"></el-input> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column prop="mmUsername" label="跟进人" min-width="100" > |
|||
|
|||
<template slot="header"> |
|||
<el-button type="text" icon="el-icon-user" title="批量修改跟进人" @click="showBatchMmUserSelectVisible">批量修改</el-button> |
|||
</template> |
|||
<template slot-scope="scope"> |
|||
<el-tag v-if="scope.row.mmUserid" @click="selectUser(scope.row)" closable @close="clearPmUser(scope.row)">{{scope.row.mmUsername}}</el-tag> |
|||
<el-button v-else type="text" @click="selectUser(scope.row)">选人</el-button> |
|||
</template> |
|||
</el-table-column> |
|||
|
|||
<el-table-column label="需求属性" width="500" > |
|||
<template slot-scope="scope"> |
|||
<el-select v-model="scope.row.dtype" title="需求类型" clearable placeholder="需求类型" @change="fieldChange(scope.row,'dtype')"> |
|||
<el-option v-for="i in dicts.demandType" :label="i.name" :key="i.id" :value="i.id"></el-option> |
|||
</el-select> |
|||
<el-select v-model="scope.row.source" title="需求来源" placeholder="需求来源" clearable @change="fieldChange(scope.row,'dtype')"> |
|||
<el-option v-for="i in dicts.demandSource" :label="i.name" :key="i.id" :value="i.id"></el-option> |
|||
</el-select> |
|||
<el-select v-model="scope.row.dlvl" title="需求层次" placeholder="需求层次" clearable class="hidden-md-and-down" @change="fieldChange(scope.row,'dtype')"> |
|||
<el-option v-for="i in dicts.demandLvl" :label="i.name" :key="i.id" :value="i.id"></el-option> |
|||
</el-select> |
|||
<el-select v-model="scope.row.priority" title="优先级" placeholder="优先级" clearable @change="fieldChange(scope.row,'dtype')"> |
|||
<el-option v-for="i in dicts.priority" :label="i.name" :key="i.id" :value="i.id"></el-option> |
|||
</el-select> |
|||
</template> |
|||
</el-table-column> |
|||
|
|||
|
|||
|
|||
|
|||
<el-table-column prop="remark" label="描述" min-width="140" show-overflow-tooltip> |
|||
<template slot-scope="scope"> |
|||
|
|||
<el-input v-model="scope.row.remark" type="textarea" @change="fieldChange(scope.row,'remark')"></el-input> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
|
|||
</el-row> |
|||
<el-drawer title="选择员工" :visible.sync="userSelectVisible" size="60%" append-to-body> |
|||
<users-select @confirm="onUserSelected" ref="usersSelect"></users-select> |
|||
</el-drawer> |
|||
<el-drawer title="选择员工" :visible.sync="batchMmUserSelectVisible" size="60%" append-to-body> |
|||
<users-select @confirm="onBatchMmUserSelectConfirm" ref="batchMmUserSelect"></users-select> |
|||
</el-drawer> |
|||
|
|||
</el-row> |
|||
</section> |
|||
</template> |
|||
|
|||
<script> |
|||
import util from '@/common/js/util';//全局公共库 |
|||
import treeTool from '@/common/js/treeTool';//全局公共库 |
|||
import { initSimpleDicts } from '@/api/mdp/meta/item';//下拉框数据查询 |
|||
import { batchEditXmMenu,listXmMenuWithState } from '@/api/xm/core/xmMenu'; |
|||
import UsersSelect from "@/views/mdp/sys/user/UsersSelect"; |
|||
|
|||
|
|||
import { mapGetters } from 'vuex' |
|||
|
|||
export default { |
|||
props:['product','xmMenus','dicts'], |
|||
computed: { |
|||
...mapGetters([ |
|||
'userInfo','roles' |
|||
]), |
|||
|
|||
xmMenusTreeData() { |
|||
let xmMenus = JSON.parse(JSON.stringify(this.xmMenus || [])); |
|||
|
|||
const xmMenusTreeData = treeTool.translateDataToTree(xmMenus,"pmenuId","menuId"); |
|||
|
|||
return xmMenusTreeData; |
|||
}, |
|||
}, |
|||
watch:{ |
|||
product(product){ |
|||
this.filters.product=product |
|||
} |
|||
}, |
|||
data() { |
|||
|
|||
return { |
|||
filters: { |
|||
}, |
|||
load:{ list: false, edit: false, del: false, add: false },//查询中... |
|||
sels: [],//列表选中数据 |
|||
options2:{},//下拉选择框的所有静态数据 params=[{categoryId:'0001',itemCode:'sex'}] 返回结果 {'sex':[{optionValue:'1',optionName:'男',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'女',seqOrder:'2',fp:'',isDefault:'0'}]} |
|||
|
|||
//新增xmMenu界面初始化数据 |
|||
addForm: { |
|||
menuId:'',menuName:'',pmenuId:'',productId:'',remark:'',status:'',online:'',demandUrl:'',codeUrl:'',designUrl:'',docUrl:'',helpUrl:'',operDocUrl:'' |
|||
}, |
|||
|
|||
//编辑xmMenu界面初始化数据 |
|||
editForm: { |
|||
menuId:'',menuName:'',pmenuId:'',productId:'',remark:'',status:'',online:'',demandUrl:'',codeUrl:'',designUrl:'',docUrl:'',helpUrl:'',operDocUrl:'' |
|||
}, |
|||
valueChangeRows:[], |
|||
userSelectVisible:false, |
|||
batchMmUserSelectVisible:false, |
|||
maxTableHeight:300, |
|||
pickerOptions: util.getPickerOptions('datarange'), |
|||
|
|||
maps:new Map(), |
|||
} |
|||
},//end data |
|||
methods: { |
|||
|
|||
//选择行xmMenu |
|||
selsChange: function (sels) { |
|||
this.sels = sels; |
|||
}, |
|||
|
|||
rowClick: function(row, event, column){ |
|||
this.$emit('row-click',row, event, column);// @row-click="rowClick" |
|||
}, |
|||
noBatchEdit(){ |
|||
this.batchEditVisible=false; |
|||
this.valueChangeRows=[]; |
|||
this.$emit('no-batch-edit') |
|||
}, |
|||
batchSaveMenu(){ |
|||
|
|||
if(this.valueChangeRows.length==0){ |
|||
this.$notify.success("没有数据被修改"); |
|||
return |
|||
} |
|||
batchEditXmMenu(this.valueChangeRows).then(res=>{ |
|||
var tips=res.data.tips; |
|||
if(tips.isOk){ |
|||
this.valueChangeRows=[] |
|||
} |
|||
this.$notify({position:'bottom-left',showClose:true,message: tips.msg, type: tips.isOk?'success':'error'}); |
|||
}); |
|||
}, |
|||
fieldChange:function(row,fieldName,nextReplace){ |
|||
|
|||
console.log('fieldChange--row==', row); |
|||
if(nextReplace){ |
|||
row.nextReplace=nextReplace |
|||
} |
|||
if(row.opType){ |
|||
var index=this.valueChangeRows.findIndex(i=>i.menuId==row.menuId); |
|||
|
|||
if(index>=0){ |
|||
this.valueChangeRows.splice(index,1); |
|||
this.valueChangeRows.push(row) |
|||
}else{ |
|||
this.valueChangeRows.push(row) |
|||
} |
|||
}else{ |
|||
var oneRow=this.valueChangeRows.find(i=>i.menuId==row.menuId); |
|||
if( oneRow ){ |
|||
if(oneRow.nextReplace){ |
|||
var index=this.valueChangeRows.findIndex(i=>i.menuId==row.menuId); |
|||
this.valueChangeRows.splice(index,1); |
|||
this.valueChangeRows.push(row) |
|||
}else{ |
|||
return; |
|||
} |
|||
}else{ |
|||
this.valueChangeRows.push(row) |
|||
} |
|||
} |
|||
}, |
|||
|
|||
selectUser(row){ |
|||
this.editForm=row |
|||
this.userSelectVisible=true; |
|||
}, |
|||
onUserSelected(users){ |
|||
if(users && users.length>0){ |
|||
this.editForm.mmUserid=users[0].userid |
|||
this.editForm.mmUsername=users[0].username |
|||
this.fieldChange(this.editForm,"mmUsername"); |
|||
|
|||
} |
|||
this.userSelectVisible=false |
|||
}, |
|||
clearPmUser:function(row){ |
|||
this.editForm=row |
|||
row.mmUserid='' |
|||
row.mmUsername='' |
|||
this.fieldChange(row,"mmUsername"); |
|||
}, |
|||
|
|||
loadXmMenusLazy(tree, treeNode, resolve) { |
|||
|
|||
this.maps.set(tree.menuId, { tree, treeNode, resolve }) //储存数据 |
|||
var params={pmenuId:tree.menuId} |
|||
params.isTop="" |
|||
this.load.list = true; |
|||
var func=listXmMenuWithState |
|||
func(params).then(res=>{ |
|||
this.load.list = false |
|||
var tips = res.data.tips; |
|||
if(tips.isOk){ |
|||
resolve(res.data.data) |
|||
}else{ |
|||
resolve([]) |
|||
} |
|||
}).catch( err => this.load.list = false ); |
|||
|
|||
}, |
|||
//查询时选择责任人 |
|||
showBatchMmUserSelectVisible() { |
|||
if(!this.sels||this.sels.length==0){ |
|||
this.$notify({position:'bottom-left',showClose:true,message:'请先选中一条或多条数据',type:'warning'}) |
|||
return; |
|||
}else{ |
|||
this.batchMmUserSelectVisible=true; |
|||
} |
|||
}, |
|||
//查询时选择责任人 |
|||
onBatchMmUserSelectConfirm(users) { |
|||
var user={}; |
|||
if (users && users.length > 0) { |
|||
user=users[0] |
|||
} |
|||
this.batchMmUserSelectVisible=false; |
|||
this.sels.forEach(i=>{ |
|||
i.mmUserid=user.userid; |
|||
i.mmUsername=user.username; |
|||
this.fieldChange(i,"mmUserid") |
|||
}) |
|||
}, |
|||
},//end methods |
|||
components: { |
|||
UsersSelect, |
|||
}, |
|||
mounted() { |
|||
|
|||
this.$nextTick(() => { |
|||
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.table.$el); |
|||
}); |
|||
|
|||
} |
|||
} |
|||
|
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
|
|||
.more-label-font{ |
|||
text-align:center; |
|||
float:left; |
|||
padding-top:5px; |
|||
} |
|||
.el-table { |
|||
box-sizing: border-box; |
|||
/deep/ .cell { |
|||
-webkit-box-sizing: border-box; |
|||
box-sizing: border-box; |
|||
overflow: hidden; |
|||
text-overflow: ellipsis; |
|||
white-space: normal; |
|||
word-break: break-all; |
|||
line-height: 23px; |
|||
padding-right: 10px; |
|||
display: flex; |
|||
} |
|||
} |
|||
</style> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue