Browse Source

优化

master
陈裕财 4 years ago
parent
commit
ec7d223952
  1. 295
      src/views/xm/core/xmMenu/XmMenuMngBatch.vue
  2. 64
      src/views/xm/core/xmTask/XmTaskEdit.vue

295
src/views/xm/core/xmMenu/XmMenuMngBatch.vue

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

64
src/views/xm/core/xmTask/XmTaskEdit.vue

@ -63,53 +63,33 @@
<el-steps :active="calcTaskStep" align-center finish-status="success" process-status="process" direction="vertical">
<el-step v-for="(item,index) in dicts.taskState" :title="item.name" :description="item.name" :key="index">
<span slot="description">
<span v-if="item.id=='0'"><!--草稿-->
<span>修改任务信息</span>
<span v-if="item.id=='0'"><!--待领取-->
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" @click="activateTabPaneName='6'" plain>预算管理</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.ntype=='0' && !editForm.executorUserid" @click="activateTabPaneName='42'" plain>去指派执行人</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.ntype=='0' && editForm.executorUserid" @click="activateTabPaneName='42'" plain>执行人管理</el-button>
</span>
<span v-else-if="item.id=='1'"> <!--需求-->
<el-button type="primary" size="mini" v-if="editForm.bidStep=='0'" @click="editXmTaskSomeFields(editForm,'bidStep','1')" plain>去发布</el-button>
<span v-else-if="editForm.bidStep>='1'">
<el-button style="margin-left:0px;" type="primary" size="mini" v-if="editForm.bidStep=='1'" @click="editXmTaskSomeFields(editForm,'bidStep','0')" plain>去取消发布</el-button>
<el-button style="margin-left:0px;" type="warning" size="mini" v-if="editForm.bidStep>='1'" @click="activateTabPaneName='82'" plain>参加推广活动</el-button>
</span>
<span v-else>发布取消发布</span>
<span v-else-if="item.id=='1'"> <!--已领取执行中-->
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.ntype=='1'" @click="activateTabPaneName='4'" plain>子工作项管理</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.ntype=='0'" @click="activateTabPaneName='41'" plain>缺陷跟踪</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.ntype=='0'" @click="activateTabPaneName='5'" plain>报工报进度</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.taskState=='1'&& editForm.ntype=='0'" @click="editXmTaskSomeFields(editForm,'taskState','2')" plain>提交任务</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.taskState=='1'&& editForm.ntype=='1'" @click="editXmTaskSomeFields(editForm,'taskState','2')" plain>提交计划</el-button>
</span>
<span v-else-if="item.id=='2'"> <!--投标中-->
<el-button type="primary" size="mini" v-if="editForm.bidStep=='1'" @click="activateTabPaneName='42'" plain>去投标</el-button>
<el-button type="primary" size="mini" v-else-if="editForm.bidStep>'1'" @click="activateTabPaneName='42'" plain>投标人管理</el-button>
<span v-else>投标投标人管理</span>
</span>
<span v-else-if="item.id=='3'"> <!--选标-->
<el-button type="primary" size="mini" v-if="editForm.bidStep=='2'" @click="activateTabPaneName='42'" plain>去选标</el-button>
<el-button type="primary" size="mini" v-else-if="editForm.bidStep>'2'" @click="activateTabPaneName='42'" plain>中标人管理</el-button>
<span v-else>雇主选标中标人管理</span>
</span>
<span v-else-if="item.id=='4'"> <!--拓管资金-->
<el-button style="margin-left:0px;" type="primary" size="mini" v-if="(editForm.bidStep=='4'||editForm.bidStep=='3') && (editForm.estate=='0'||editForm.estate==''||editForm.estate=='1')" @click="activateTabPaneName='8'" plain>去托管佣金{{needPayEfundsAt}}</el-button>
<el-button style="margin-left:0px;" type="primary" size="mini" v-if=" (editForm.estate>'1')" @click="activateTabPaneName='8'" plain>已托管佣金{{editForm.efunds}}</el-button>
<span v-else>付款给平台</span>
</span>
<span v-else-if="item.id=='5'"> <!--工作中-->
<span v-else-if="item.id=='2'"> <!--已完工-->
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if=" editForm.taskState=='2'" @click="editXmTaskSomeFields(editForm,'taskState','3')" plain>设为已验收</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if=" editForm.taskState=='2'" @click="editXmTaskSomeFields(editForm,'taskState','1')" plain>设为验收不过待执行</el-button>
</span>
<span v-else-if="item.id=='3'"> <!--已验收-->
<el-button style="margin-left:0px;" type="primary" size="mini" v-if="editForm.bidStep>'1'" @click="activateTabPaneName='5'" plain>报工报进度</el-button>
<el-button style="margin-left:0px;" type="primary" size="mini" v-if="(editForm.bidStep=='4'||editForm.bidStep=='3') && (editForm.estate>='2')" @click="editXmTaskSomeFields(editForm,'bidStep','5')" plain>开始工作</el-button>
<el-button style="margin-left:0px;" type="primary" size="mini" v-else-if="editForm.bidStep=='5' && (editForm.taskState=='1'||editForm.taskState=='0')" @click="editXmTaskSomeFields(editForm,'taskState','2')" plain>去提交任务</el-button>
<span v-else><br/>服务商提交任务</span>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if=" editForm.taskState=='3'" @click="editXmTaskSomeFields(editForm,'taskState','4')" plain>设为已结算</el-button>
</span>
<span v-else-if="item.id=='4'"> <!--已结算-->
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if=" editForm.taskState=='4'" @click="editXmTaskSomeFields(editForm,'taskState','9')" plain>设为已关闭</el-button>
</span>
<span v-else-if="item.id=='6'"> <!--付款完成-->
<span v-if="editForm.bidStep=='5' && editForm.taskState=='2'">
<el-button style="margin-left:0px;" type="primary" size="mini" @click="editXmTaskSomeFields(editForm,'taskState','3')" plain>设置为验收成功</el-button>
<el-button style="margin-left:0px;" type="primary" size="mini" @click="editXmTaskSomeFields(editForm,'taskState','1')" plain>设置为验收不成功</el-button>
</span>
<span v-if="editForm.bidStep=='6'">
<el-tag v-for="(item,index) in formatDictsWithClass(dicts,'taskState',editForm.taskState)" :key="index" :type="item.className">{{item.name}}</el-tag>
</span>
<el-button style="margin-left:0px;" type="primary" size="mini" v-if="editForm.bidStep=='6'&&editForm.taskState=='4'" plain @click="editXmTaskSomeFields(editForm,'taskState','9')">去关闭</el-button>
<span v-else>雇主付款关闭任务</span>
<span v-else-if="item.id=='9'"> <!--已关闭-->
</span>
</span>
</el-step>

Loading…
Cancel
Save