Browse Source

优化

master
陈裕财 4 years ago
parent
commit
ad8dceb502
  1. 5
      src/views/xm/core/xmGroup/XmGroupMng.vue
  2. 2
      src/views/xm/core/xmTaskExecuser/XmTaskExecuserForTask.vue
  3. 10
      src/views/xm/core/xmTaskExecuser/XmTaskExecuserMng.vue
  4. 270
      src/views/xm/core/xmTaskExecuser/XmTaskExecuserSelect.vue

5
src/views/xm/core/xmGroup/XmGroupMng.vue

@ -64,6 +64,7 @@
<el-button @click="showAddSub(editForm)" icon="el-icon-plus" v-loading="load.add">新增下一级小组</el-button>
<el-button @click="showEdit(editForm)" icon="el-icon-edit" v-loading="load.edit">修改小组信息</el-button>
<el-button @click="userSelectVisible=true" icon="el-icon-plus" v-loading="load.add">新增组员</el-button>
<el-button @click="candidateVisible=true" icon="el-icon-plus" v-loading="load.add">拉竞标人进组</el-button>
<el-button type="danger" @click="handleDel(editForm)" icon="el-icon-delete" v-loading="load.del">删除小组</el-button>
</el-row>
</el-row>
@ -333,8 +334,8 @@ XmProductSelect,XmProjectSelect,
groupOperSelectVisible:false,
currNodeType:'',//project/product/iteration/group/groupUser
groupUserVisible:false,
selectProjectVisible:false,
selectProductVisible:false,
selectProjectVisible:false,
candidateVisible:false,
}
},//end data
methods: {

2
src/views/xm/core/xmTaskExecuser/XmTaskExecuserForTask.vue

@ -71,7 +71,7 @@
<el-drawer append-to-body title="报价" :visible.sync="quotePriceVisible" size="60%" :close-on-click-modal="false">
<el-form :model="quotePriceForm" label-width="100px" ref="quotePriceForm">
<el-form-item label="候选人名称">
<span>{{ quotePriceForm.username }}</span>
<span>{{ quotePriceForm.username }} </span>
</el-form-item>
<el-form-item label="报价工期" prop="quoteWeekday">
<div>

10
src/views/xm/core/xmTaskExecuser/XmTaskExecuserMng.vue

@ -4,7 +4,8 @@
<el-input v-model="filters.key" style="width: 20%;" placeholder="任务名称、用户姓名模糊查询" clearable></el-input>
<el-input v-model="filters.taskId" style="width:150px;" placeholder="任务编号查询" clearable></el-input>
<el-input v-model="filters.projectId" style="width: 150px;" placeholder="项目编号" clearable></el-input>
<el-input v-model="filters.execUserBranchId" style="width: 150px;" placeholder="归属公司" clearable></el-input>
<el-input v-model="filters.execUserBranchId" style="width: 150px;" placeholder="用户公司编号" clearable></el-input>
<el-input v-model="filters.branchId" style="width: 150px;" placeholder="项目公司编号" clearable></el-input>
<el-select v-model="filters.status" placeholder="候选状态" clearable>
<el-option v-for="(item,index) in dicts.projectTaskExecuserStatus" :value="item.id" :label="item.name" :key="index"></el-option>
</el-select>
@ -19,7 +20,9 @@
<el-table ref="table" :height="tableHeight" :data="xmTaskExecusers" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column label="序号" type="index" width="60" fixed="left">
</el-table-column>
<el-table-column prop="username" label="姓名" width="150" sortable show-overflow-tooltip fixed="left">
<el-table-column prop="username" label="用户姓名" width="150" sortable show-overflow-tooltip fixed="left">
</el-table-column>
<el-table-column prop="execUserBranchId" label="用户归属公司" width="150" sortable show-overflow-tooltip fixed="left">
</el-table-column>
<el-table-column prop="status" label="候选状态" width="100" sortable fixed="left">
<template slot-scope="scope">
@ -74,8 +77,6 @@
</el-table-column>
<el-table-column prop="remarks" label="备注" min-width="150" sortable show-overflow-tooltip>
</el-table-column>
<el-table-column prop="execUserBranchId" label="归属公司" width="150" sortable show-overflow-tooltip>
</el-table-column>
<el-table-column label="报价信息" min-width="150">
<el-table-column prop="createTime" label="报价时间" width="150" sortable>
@ -211,6 +212,7 @@
projectId:'',
status:'',
taskState:'',
branchId:'',
},
xmTaskExecusers: [],//
pageInfo:{//

270
src/views/xm/core/xmTaskExecuser/XmTaskExecuserSelect.vue

@ -0,0 +1,270 @@
<template>
<section class="padding">
<el-row>
<el-input v-model="filters.key" style="width: 20%;" placeholder="任务名称、用户姓名模糊查询" clearable></el-input>
<el-input v-model="filters.taskId" style="width:150px;" placeholder="任务编号查询" clearable></el-input>
<span v-if="selProject && selProject.id">
<el-input v-if="selProject && selProject.id" v-model="filters.projectId" style="width: 150px;" placeholder="项目编号" clearable></el-input>
<el-input v-model="filters.branchId" style="width: 150px;" placeholder="项目公司编号" clearable></el-input>
</span>
<el-input v-model="filters.execUserBranchId" style="width: 150px;" placeholder="用户公司编号" clearable></el-input>
<el-select v-model="filters.status" placeholder="候选状态" clearable>
<el-option v-for="(item,index) in dicts.projectTaskExecuserStatus" :value="item.id" :label="item.name" :key="index"></el-option>
</el-select>
<el-select v-model="filters.taskState" placeholder="任务状态" clearable>
<el-option v-for="(item,index) in dicts.taskState" :value="item.id" :label="item.name" :key="index"></el-option>
</el-select>
<el-button type="primary" v-loading="load.list" :disabled="load.list==true" v-on:click="searchXmTaskExecusers">查询</el-button>
<!-- <el-button type="danger" v-loading="load.del" @click="batchDel" :disabled="this.sels.length===0 || load.del==true">批量删除</el-button> -->
</el-row>
<el-row class="page-main ">
<!--列表 XmTaskExecuser xm_task_execuser-->
<el-table ref="table" :height="tableHeight" :data="xmTaskExecusers" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column label="序号" type="index" width="60" fixed="left">
</el-table-column>
<el-table-column prop="username" label="用户姓名" width="150" sortable show-overflow-tooltip fixed="left">
</el-table-column>
<el-table-column prop="execUserBranchId" label="用户归属公司" width="150" sortable show-overflow-tooltip fixed="left">
</el-table-column>
<el-table-column prop="status" label="候选状态" width="100" sortable fixed="left">
<template slot-scope="scope">
<el-link type="primary" v-if="scope.row.status=='0'">候选中</el-link>
<el-link type="success" v-else-if="scope.row.status=='1'">执行中 </el-link>
<el-link type="info" v-else-if="scope.row.status=='7'">已放弃 </el-link>
<el-link type="danger" v-else-if="scope.row.status=='8'">黑名单 </el-link>
</template>
</el-table-column>
<el-table-column prop="taskName" label="任务名称" width="150" sortable show-overflow-tooltip fixed="left">
</el-table-column>
<el-table-column prop="taskName" label="任务状态" width="100" sortable show-overflow-tooltip >
<template slot-scope="scope">
<el-tag v-for="(item,index) in formatDictsWithClass(dicts,'taskState',scope.row.taskState)" :key="index" :type="item.className">{{item.name}}</el-tag>
</template>
</el-table-column>
<el-table-column prop="projectId" label="项目编号" width="100" sortable show-overflow-tooltip>
</el-table-column>
<el-table-column prop="startTime" label="加入时间" width="150" sortable>
</el-table-column>
<el-table-column prop="endTime" label="离开时间" width="150" sortable>
</el-table-column>
<el-table-column prop="skillRemark" label="技能" min-width="150" sortable show-overflow-tooltip>
</el-table-column>
<el-table-column prop="remarks" label="备注" min-width="150" sortable show-overflow-tooltip>
</el-table-column>
<el-table-column label="报价信息" min-width="150">
<el-table-column prop="createTime" label="报价时间" width="150" sortable>
</el-table-column>
<el-table-column prop="quoteWorkload" label="报价工作量" width="100" sortable>
<template slot-scope="scope">
{{scope.row.quoteWorkload?scope.row.quoteWorkload:'-'}}h
</template>
</el-table-column>
<el-table-column prop="quotePrice" label="报价金额" width="100" sortable>
<template slot-scope="scope">
{{scope.row.quotePrice?scope.row.quotePrice:'-'}}
</template>
</el-table-column>
</el-table-column>
</el-table>
<el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination>
</el-row>
</section>
</template>
<script>
import util from '@/common/js/util';//
import config from "@/common/config"; //
//import Sticky from '@/components/Sticky' // header
import { initSimpleDicts } from '@/api/mdp/meta/item';//
import { listXmTaskExecuserWithTask,editXmTaskExecuser,leaveTask,beExecutor,settleExec, delXmTaskExecuser, batchDelXmTaskExecuser,quotePrice,becomeCandidate,toTest,testSuccess,testFail } from '@/api/xm/core/xmTaskExecuser';
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters([
'userInfo','roles'
]),
xmTask:function(){
var xmTask={...this.editForm}
xmTask.id=this.editForm.taskId;
return xmTask;
}
},
props: ["visible",'selProject'],
watch: {
'visible': function(val) {
if(val == true){
this.searchXmTaskExecusers();
}
},
},
data() {
return {
filters: {
key: '',
execUserBranchId:'',
taskId:'',
projectId:'',
status:'',
taskState:'',
branchId:'',
},
xmTaskExecusers: [],//
pageInfo:{//
total:0,//0>0
pageSize:10,//
count:false,//
pageNum:1,//1
orderFields:['res.create_time'],// ['sex','student_id']
orderDirs:['desc']// asc,desc ['asc','desc']
},
load:{ list: false, edit: false, del: false, add: false },//...
sels: [],//
dicts:{
projectTaskExecuserStatus:[],
projectTaskSettleStatus:[],
},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
addFormVisible: false,//xmTaskExecuser
//xmTaskExecuser
addForm: {
createTime:'',id:'',taskId:'',userid:'',startTime:'',endTime:'',status:'',remarks:'',settleAmount:'',settleWorkload:'',settleStatus:'',settleTime:'',createUserid:'',createUsername:'',username:'',matchScore:'',quoteWeekday:'',quoteAmount:'',quoteTime:'',bizProcInstId:'',bizFlowState:'',projectId:'',phaseId:'',skillRemark:'',quoteWorkload:'',quoteStartTime:'',quoteEndTime:'',branchId:'',projectPhaseName:'',taskName:''
},
editFormVisible: false,//
//xmTaskExecuser
editForm: {
createTime:'',id:'',taskId:'',userid:'',startTime:'',endTime:'',status:'',remarks:'',settleAmount:'',settleWorkload:'',settleStatus:'',settleTime:'',createUserid:'',createUsername:'',username:'',matchScore:'',quoteWeekday:'',quoteAmount:'',quoteTime:'',bizProcInstId:'',bizFlowState:'',projectId:'',phaseId:'',skillRemark:'',quoteWorkload:'',quoteStartTime:'',quoteEndTime:'',branchId:'',projectPhaseName:'',taskName:''
},
/**begin 自定义属性请在下面加 请加备注**/
pickerOptions: util.getPickerOptions('datarange'),
tableHeight:300,
/**end 自定义属性请在上面加 请加备注**/
}
},//end data
methods: {
...util,
handleSizeChange(pageSize) {
this.pageInfo.pageSize=pageSize;
this.getXmTaskExecusers();
},
handleCurrentChange(pageNum) {
this.pageInfo.pageNum = pageNum;
this.getXmTaskExecusers();
},
// obj.order=ascending/descending, asc/desc ; obj.prop=,
sortChange( obj ){
var dir='asc';
if(obj.order=='ascending'){
dir='asc'
}else{
dir='desc';
}
if(obj.prop=='xxx'){
this.pageInfo.orderFields=['xxx'];
this.pageInfo.orderDirs=[dir];
}
this.getXmTaskExecusers();
},
searchXmTaskExecusers(){
this.pageInfo.count=true;
this.getXmTaskExecusers();
},
// XmTaskExecuser xm_task_execuser
getXmTaskExecusers() {
let params = {
pageSize: this.pageInfo.pageSize,
pageNum: this.pageInfo.pageNum,
total: this.pageInfo.total,
count:this.pageInfo.count
};
if(this.pageInfo.orderFields!=null && this.pageInfo.orderFields.length>0){
let orderBys=[];
for(var i=0;i<this.pageInfo.orderFields.length;i++){
orderBys.push(this.pageInfo.orderFields[i]+" "+this.pageInfo.orderDirs[i])
}
params.orderBy= orderBys.join(",")
}
if(this.filters.key!==""){
params.key=this.filters.key
}
this.load.list = true;
if(this.filters.taskId){
params.taskId=this.filters.taskId
}
if(this.filters.projectId){
params.projectId=this.filters.projectId
}
if(this.selProject && this.selProject.id){
params.projectId=this.selProject.id
}
if(this.filters.execUserBranchId){
params.execUserBranchId=this.filters.execUserBranchId
}
if(this.filters.taskState){
params.taskState=this.filters.taskState
}
if(this.filters.status){
params.status=this.filters.status
}
listXmTaskExecuserWithTask(params).then((res) => {
var tips=res.data.tips;
if(tips.isOk){
this.pageInfo.total = res.data.total;
this.pageInfo.count=false;
this.xmTaskExecusers = res.data.data;
this.$emit("loadExecUserList",this.xmTaskExecusers);
}else{
this.$notify({position:'bottom-left',showClose:true,message: tips.msg, type: 'error' });
}
this.load.list = false;
}).catch( err => this.load.list = false );
},
//xmTaskExecuser
selsChange: function (sels) {
this.sels = sels;
},
rowClick: function(row, event, column){
this.editForm=row;
this.$emit('row-click',row, event, column);// @row-click="rowClick"
},
/**end 自定义函数请在上面加**/
},//end methods
components: {
//
},
mounted() {
this.$nextTick(() => {
this.tableHeight = util.calcTableMaxHeight(this.$refs.table.$el);
this.getXmTaskExecusers();
});
initSimpleDicts('all',['projectTaskExecuserStatus','projectTaskSettleStatus','taskState']).then(res=>{
this.dicts=res.data.data;
})
}
}
</script>
<style scoped>
.exec-navbar{
background: #fafbfc;
padding: 0 20px;
height: 50px;
overflow: auto hidden;
line-height: 50px;
}
.badge {
margin-top: 7px;
padding-bottom: 10px;
}
</style>
Loading…
Cancel
Save