Browse Source

选择任务优化

master
陈裕财 5 years ago
parent
commit
4b912cac8f
  1. 14
      src/views/xm/core/xmTask/XmTaskCenterForProduct.vue
  2. 59
      src/views/xm/core/xmTask/XmTaskList.vue
  3. 458
      src/views/xm/core/xmTask/XmTaskListForProduct.vue
  4. 20
      src/views/xm/core/xmTask/XmTaskMng.vue

14
src/views/xm/core/xmTask/XmTaskCenterForProduct.vue

@ -20,7 +20,17 @@
}, },
watch: { watch: {
"$route":function(to,from){
if(this.$route.params.productId){
this.filters.xmProduct={
id:this.$route.params.productId,
productName:this.$route.params.productName
}
}else{
return null;
}
}
}, },
data() { data() {
return { return {
@ -40,10 +50,14 @@
}, },
mounted() { mounted() {
if(this.$route.params){ if(this.$route.params){
if(this.$route.params.productId){
this.filters.xmProduct={ this.filters.xmProduct={
id:this.$route.params.productId, id:this.$route.params.productId,
productName:this.$route.params.productName productName:this.$route.params.productName
} }
}else{
return null;
}
} }
} }
} }

59
src/views/xm/core/xmTask/XmTaskList.vue

@ -1,20 +1,36 @@
<template> <template>
<section> <section>
<el-row class="xm-task">
<el-row> <el-row>
<el-col :span="4" v-if=" filters.selProject"> <el-col :span="4" v-if=" filters.selProject">
<xm-project-phase-mng :sel-project="filters.selProject" :simple="true" @row-click="projectPhaseRowClick"></xm-project-phase-mng>
<xm-project-phase-mng :sel-project="filters.selProject" :simple="true" @row-click="projectPhaseRowClick" @clear-select="clearSelectPhase"></xm-project-phase-mng>
</el-col> </el-col>
<el-col :span=" filters.selProject?20:24"> <el-col :span=" filters.selProject?20:24">
<el-row>
<el-menu active-text-color="#00abfc" :default-active="filters.taskType" @select="changeTaskType" class="el-menu-demo" mode="horizontal">
<el-menu-item index="all">全部任务类型</el-menu-item>
<el-menu-item v-for="(i,index) in options.taskType" :index="i.optionValue" :key="index">{{i.optionName}}</el-menu-item>
<el-row class="app-container">
<el-tag>{{filters.selProject?filters.selProject.name:'未选择项目'}}</el-tag><el-button type="success" v-if="!selProject" @click="selectProjectVisible=true"></el-button> <el-tag>{{filters.selProject?filters.selProject.name:'未选择项目'}}</el-tag><el-button type="success" v-if="!selProject" @click="selectProjectVisible=true"></el-button>
<el-select v-model="filters.taskType" placeholder="请选择任务类型" clearable @change="changeTaskType">
<el-option class="showall" value="all" label="全部类型">全部类型</el-option>
<el-option v-for="(i,index) in options.taskType" :value="i.optionValue" :label="i.optionName" :key="index">{{i.optionName}}</el-option>
</el-select>
<el-date-picker
v-model="dateRanger"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="完成日期"
value-format="yyyy-MM-dd"
:default-time="['00:00:00','23:59:59']"
:picker-options="pickerOptions"
></el-date-picker>
<el-input v-model="filters.key" style="width:20%;">
<template slot="append">
<el-button @click="searchXmTasks" icon="el-icon-search">查询</el-button>
</template>
</el-input>
<el-button v-if="isMultiSelect" @click="selectedTasks" type="primary">确认选择</el-button> <el-button v-if="isMultiSelect" @click="selectedTasks" type="primary">确认选择</el-button>
</el-menu>
</el-row> </el-row>
<el-row>
<el-row class="app-container">
<el-table <el-table
ref="taskTable" ref="taskTable"
show-summary show-summary
@ -26,12 +42,13 @@
highlight-current-row highlight-current-row
stripe stripe
fit fit
border
default-expand-all default-expand-all
:tree-props="{children: 'children', hasChildren: 'hasChildren'}" :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
row-key="id" row-key="id"
:max-height="tableHeight" :max-height="tableHeight"
> >
<el-table-column v-show="isMultiSelect" reserve-selection sortable width="50" type="selection"></el-table-column>
<el-table-column v-show="isMultiSelect" reserve-selection sortable width="70" type="selection"></el-table-column>
<el-table-column prop="name" label="任务名称" min-width="260" > <el-table-column prop="name" label="任务名称" min-width="260" >
<template slot-scope="scope"> <template slot-scope="scope">
{{scope.row.sortLevel}}&nbsp;{{scope.row.name}} {{scope.row.sortLevel}}&nbsp;{{scope.row.name}}
@ -64,7 +81,6 @@
</el-row> </el-row>
</el-col> </el-col>
</el-row> </el-row>
</el-row>
<el-dialog title="选中项目" :visible.sync="selectProjectVisible" width="80%" append-to-body :close-on-click-modal="false"> <el-dialog title="选中项目" :visible.sync="selectProjectVisible" width="80%" append-to-body :close-on-click-modal="false">
<xm-project-list @project-confirm="onPorjectConfirm"></xm-project-list> <xm-project-list @project-confirm="onPorjectConfirm"></xm-project-list>
@ -103,16 +119,20 @@
}, },
}, },
data() { data() {
const beginDate = new Date();
const endDate = new Date();
beginDate.setTime(beginDate.getTime() - 3600 * 1000 * 24 * 7 * 4 * 3 );
return { return {
filters: { filters: {
key: '', key: '',
taskType:'all',
isMyTask: '0',//01 isMyTask: '0',//01
selProject:null, selProject:null,
}, },
xmTasks: [],// xmTasks: [],//
pageInfo:{// pageInfo:{//
total:0,//0>0 total:0,//0>0
pageSize:10,//
pageSize:20,//
count:false,// count:false,//
pageNum:1,//1 pageNum:1,//1
orderFields:['create_time'],// ['sex','student_id'] orderFields:['create_time'],// ['sex','student_id']
@ -145,9 +165,13 @@
selkey: "all", selkey: "all",
projectPhase: null, projectPhase: null,
pickerOptions: util.pickerOptions(),
selectProjectVisible:false, selectProjectVisible:false,
tableHeight:300, tableHeight:300,
dateRanger: [
util.formatDate.format(beginDate, "yyyy-MM-dd"),
util.formatDate.format(endDate, "yyyy-MM-dd")
],
pickerOptions: util.pickerOptions('datarange'),
/**end 自定义属性请在上面加 请加备注**/ /**end 自定义属性请在上面加 请加备注**/
} }
},//end data },//end data
@ -210,6 +234,10 @@
params.orderBy= orderBys.join(",") params.orderBy= orderBys.join(",")
} }
if(!this.dateRanger || this.dateRanger.length==0){
this.$message({ message: "创建日期范围不能为空", type: 'error' });
return;
}
if(this.filters.key){ if(this.filters.key){
params.key='%'+this.filters.key+'%' params.key='%'+this.filters.key+'%'
} }
@ -238,6 +266,8 @@
params.userid=this.userInfo.userid params.userid=this.userInfo.userid
params.isMy="1" params.isMy="1"
} }
params.createTimeStart=this.dateRanger[0]+" 00:00:00"
params.createTimeEnd=this.dateRanger[1]+" 23:59:59"
getTask(params).then((res) => { getTask(params).then((res) => {
var tips=res.data.tips; var tips=res.data.tips;
if(tips.isOk){ if(tips.isOk){
@ -429,7 +459,10 @@
this.getXmTasks(); this.getXmTasks();
}, },
/**end 自定义函数请在上面加**/ /**end 自定义函数请在上面加**/
clearSelectPhase(){
this.projectPhase=null;
this.searchXmTasks();
}
},//end methods },//end methods
components: { components: {

458
src/views/xm/core/xmTask/XmTaskListForProduct.vue

@ -1,122 +1,20 @@
<template> <template>
<section> <section>
<el-row class="app-container">
<el-menu active-text-color="#00abfc" :default-active="filters.taskType" @select="changeTaskType" mode="horizontal">
<el-menu-item index="all">全部任务类型</el-menu-item>
<el-menu-item v-for="(i,index) in options.taskType" :index="i.optionValue" :key="index">{{i.optionName}}</el-menu-item>
<div style="padding: 15px 0;"><el-tag closable @close="clearSelectProject" @click="selectProjectVisible=true">{{filters.selProject?filters.selProject.name:'未选择项目,点我'}}</el-tag>
</div>
<el-button v-if="isMultiSelect" @click="selectedTasks" type="primary">确认选择</el-button>
</el-menu>
<el-row>
<el-col :span="4" v-if=" filters.selProject">
<xm-project-phase-mng :sel-project="filters.selProject" :simple="true" @row-click="projectPhaseRowClick"></xm-project-phase-mng>
</el-col>
<el-col :span=" filters.selProject?20:24">
<el-table :max-height="tableHeight"
ref="taskTable"
show-summary
:data="tasksTreeData"
@sort-change="sortChange"
v-loading="load.list"
@row-click="rowClick"
@selection-change="selsChange"
highlight-current-row
stripe
fit
default-expand-all
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
row-key="id"
>
<el-table-column v-show="isMultiSelect" reserve-selection sortable width="60" type="selection"></el-table-column>
<el-table-column prop="name" label="任务名称" min-width="260" >
<template slot-scope="scope">
{{scope.row.sortLevel}}&nbsp;{{scope.row.name}}
</template>
</el-table-column>
<el-table-column v-if="!filters.selProject" prop="projectName" label="项目名称" min-width="260" >
</el-table-column>
<el-table-column prop="menuName" label="故事名" min-width="160" > </el-table-column>
<el-table-column label="预算" prop="budgetCost" width="120" >
<template slot-scope="scope">
<el-tag type= 'info' >{{parseFloat(scope.row.budgetCost/10000).toFixed(2)}},{{scope.row.budgetWorkload}}人时</el-tag>
</template>
</el-table-column>
<el-table-column label="执行人" prop="exeUsernames" min-width="120" >
<template slot-scope="scope">
<el-link v-if="scope.row.exeUsernames!=null && scope.row.exeUsernames !='' " @click.stop="showExecusers(scope.row)">{{scope.row.exeUsernames}}</el-link>
<el-link v-if="scope.row.exeUsernames==null || scope.row.exeUsernames ==''" >无人参与</el-link>
</template>
</el-table-column>
<el-table-column prop="rate" label="进度" width="100">
<template slot-scope="scope">
<div>
<el-tag style="border-radius:30px;"> {{ (scope.row.rate!=null?scope.row.rate:0)+'%'}} </el-tag>
</div>
</template>
</el-table-column>
<el-table-column prop="startTime" label="任务起止时间" width="300">
<template slot-scope="scope">
<div style="display:flex;align-items:center;">
<div>
<div>{{getDateString(scope.row.startTime)}}~{{getDateString(scope.row.endTime)}}</div>
</div>
<div v-for="(item,index) in [calcTaskStateByTime(scope.row.startTime,scope.row.endTime,scope.row)]" :key="index ">
<el-tag :type="item.type">{{item.desc}}</el-tag>
</div>
</div>
</template>
</el-table-column>
<!--
<el-table-column label="外购" prop="taskOut" width="80">
<template slot-scope="scope">
<el-checkbox :disabled="true" v-model="scope.row.taskOut" :false-label="0" :true-label="1" ></el-checkbox>
</template>
</el-table-column>
<el-table-column label="结算方案" prop="settleSchemel" width="120" :formatter="formatterOption">
</el-table-column>
-->
<el-table-column label="任务技能需求" prop="taskSkillNames" min-width="120" >
<template slot-scope="scope">
<el-link v-if="scope.row.taskSkillNames!=null && scope.row.taskSkillNames !='' " @click.stop="showSkill(scope.row)">{{scope.row.taskSkillNames}}</el-link>
<el-link v-else @click.stop="showSkill(scope.row)" type="success" >去补充</el-link>
</template>
</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-col>
</el-row>
</el-row>
<el-dialog title="选中项目" :visible.sync="selectProjectVisible" width="80%" append-to-body :close-on-click-modal="false">
<xm-project-list @project-confirm="onPorjectConfirm"></xm-project-list>
</el-dialog>
<xm-task-mng :xm-product="xmProduct"></xm-task-mng>
</section> </section>
</template> </template>
<script> <script>
import Vue from 'vue' import Vue from 'vue'
import util from '@/common/js/util';// import util from '@/common/js/util';//
//import Sticky from '@/components/Sticky' // header
import { listOption } from '@/api/mdp/meta/itemOption';//
import { getTask ,listXmTask,editXmTask,editRate, delXmTask, batchDelXmTask,batchImportTaskFromTemplate,batchSaveBudget } from '@/api/xm/core/xmTask';
import { mapGetters } from 'vuex';
import xmProjectPhaseMng from '../xmProjectPhase/XmProjectPhaseSelect';
import XmProjectList from '../xmProject/XmProjectList';
import { mapGetters } from 'vuex'
import XmTaskMng from './XmTaskMng.vue';
export default { export default {
computed: { computed: {
...mapGetters([ ...mapGetters([
'userInfo','roles' 'userInfo','roles'
]), ]),
tasksTreeData() {
return this.translateDataToTree(this.xmTasks);
},
}, },
props: ["xmProduct",'isMultiSelect'], props: ["xmProduct",'isMultiSelect'],
watch: { watch: {
@ -124,376 +22,32 @@
// console.log(""); // console.log("");
}, },
"xmProduct": function(xmProduct) { "xmProduct": function(xmProduct) {
this.changeSelKey("all");
}, },
}, },
data() { data() {
return { return {
filters: {
key: '',
isMyTask: '0',//01
selProject:null,
},
xmTasks: [],//
pageInfo:{//
total:0,//0>0
pageSize:10,//
count:false,//
pageNum:1,//1
orderFields:['create_time'],// ['sex','student_id']
orderDirs:['desc']// asc,desc ['asc','desc']
},
load:{ list: false, edit: false, del: false, add: false },//...
sels: [],//
options:{
urgencyLevel:[],
taskType:[],
planType:[],
priority:[],
},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
addFormVisible: false,//xmTask
//xmTask
addForm: {
id:'',name:'',parentTaskid:'',parentTaskname:'',projectId:'',projectName:'',level:'',sortLevel:'',executorUserid:'',executorUsername:'',
preTaskid:'',preTaskname:'',startTime:'',endTime:'',milestone:'',description:'',remarks:'',createUserid:'',createUsername:'',createTime:'',
rate:'',budgetCost:'',budgetWorkload:'',actCost:'',actWorkload:'',taskState:'',taskType:'',taskClass:'',toTaskCenter:'',actStartTime:'',actEndTime:'',
},
editFormVisible: false,//
//xmTask
editForm: {
id:'',name:'',parentTaskid:'',parentTaskname:'',projectId:'',projectName:'',level:'',sortLevel:'',executorUserid:'',executorUsername:'',
preTaskid:'',preTaskname:'',startTime:'',endTime:'',milestone:'',description:'',remarks:'',createUserid:'',createUsername:'',createTime:'',
rate:'',budgetCost:'',budgetWorkload:'',actCost:'',actWorkload:'',taskState:'',taskType:'',taskClass:'',toTaskCenter:'',actStartTime:'',actEndTime:'',
},
selkey: "all",
projectPhase: null,
pickerOptions: util.pickerOptions(),
selectProjectVisible:false,
tableHeight:300,
/**end 自定义属性请在上面加 请加备注**/ /**end 自定义属性请在上面加 请加备注**/
} }
},//end data },//end data
methods: { methods: {
changeSelKey(index){
this.selkey = index;
this.getXmTasks();
},
changeTaskType(index){
this.filters.taskType = index;
this.getXmTasks();
},
handleSizeChange(pageSize) {
this.pageInfo.pageSize=pageSize;
this.getXmTasks();
},
handleCurrentChange(pageNum) {
this.pageInfo.pageNum = pageNum;
this.getXmTasks();
},
showProjectInfo(row){
this.editForm=row
this.projectInfoVisible=true;
},
changeShowInfo(){
this.projectInfoVisible=false;
},
// 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.getXmTasks();
},
searchXmTasks(){
this.pageInfo.count=true;
this.getXmTasks();
},
// XmTask xm_task
getXmTasks() {
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+'%'
}
if(this.filters.taskType!="all" && this.filters.taskType!="" && this.filters.taskType!=null){
params.taskType=this.filters.taskType
}
this.load.list = true;
if(this.filters.selProject){
params.projectId=this.filters.selProject.id
}
params.workexec="true";
if(this.projectPhase){{
params.projectPhaseId=this.projectPhase.id
}}
if(this.isMy=='1'){
params.userid=this.userInfo.userid
params.isMy="1"
}
if(this.xmProduct){
params.productId=this.xmProduct.id
}
getTask(params).then((res) => {
var tips=res.data.tips;
if(tips.isOk){
this.pageInfo.total = res.data.total;
this.pageInfo.count=false;
var xmTasks=res.data.data;
this.xmTasks=xmTasks;
}else{
this.$message({ message: tips.msg, type: 'error' });
}
this.load.list = false;
}).catch( err => this.load.list = false );
},
calcTaskStateByTime(startTime,endTime,row){
var obj={
type:'',
desc:''
}
if(startTime==null || startTime=="" || endTime==null || endTime ==""){
obj={
type:'info',
desc:"未配置日期"
}
return obj;
}
var curDate=new Date();
var start=new Date(startTime);
var end=new Date(endTime);
var rate=row.rate;
var isOver=row.rate>=100;
var days=this.getDaysBetween(curDate, start);
if(days<=0){
obj={
type:'info',
desc:this.toFixed(this.getDaysBetween(start,curDate))+"天后开始"
}
return obj;
}else if( this.getDaysBetween(curDate, start) > 0 && this.getDaysBetween(curDate, end) <= 0 ){
obj={
type:'primary',
desc:this.toFixed(this.getDaysBetween(end, curDate))+"天后结束"
}
return obj;
}else if( this.getDaysBetween(curDate, end) > 0 ){
if(!isOver){
obj={
type:'danger',
desc:"逾期"+( this.toFixed(this.getDaysBetween(curDate, end)) )+"天"
}
}else{
obj={
type:'success',
desc:"完工"+( this.toFixed(this.getDaysBetween(curDate, end)) )+"天"
}
}
return obj;
}
},
/**
* 计算两个日期之间的天数
* @param dateString1 开始日期 yyyy-MM-dd
* @param dateString2 结束日期 yyyy-MM-dd
*/
getDaysBetween(startDate,endDate){
if (startDate==endDate){
return 0;
}
var days=(startDate - endDate )/(1*24*60*60*1000);
return days;
},
//xmTask
selsChange: function (sels) {
this.sels = sels;
},
rowClick: function(row){
this.editForm=row;
// this.$emit('row-click',row,);// @row-click="rowClick"
},
isEmpty(str) {
return str == null || "" == str;
},
selectedTask:function(row){
this.$emit("task-selected", row,);
},
selectedTasks:function(){
this.$emit("tasks-selected", this.sels);
},
translateDataToTree(data2) {
var data=JSON.parse(JSON.stringify(data2));
let parents = data.filter(value =>{
value.taskBudgetCostAt=this.getRowSum(value);
//
if(value.parentTaskid == 'undefined' || value.parentTaskid == null || value.parentTaskid == ''){
return true;
//
}else if(data.some(i=>value.parentTaskid==i.id)){
return false;
}else {
return true
}
})
let children = data.filter(value =>{
if(data.some(i=>value.parentTaskid==i.id)){
return true;
}else{
return false;
}
})
let translator = (parents, children) => {
parents.forEach((parent) => {
children.forEach((current, index) => {
if (current.parentTaskid === parent.id) {
let temp = JSON.parse(JSON.stringify(children))
temp.splice(index, 1)
translator([current], temp)
typeof parent.children !== 'undefined' ? parent.children.push(current) : parent.children = [current]
}
}
)
}
)
}
translator(parents, children)
return parents
},
projectPhaseRowClick:function(projectPhase){
this.projectPhase=projectPhase
this.getXmTasks();
},
getDateString(dateStr){
if(dateStr==null || dateStr=="" || dateStr==undefined){
return ""
}else{
return dateStr.substr(0,10);
}
},
toFixed(floatValue,xsd){
if(floatValue ==null || floatValue=='' || floatValue == undefined){
return 0;
}else{
if(xsd){
return parseFloat(floatValue).toFixed(xsd);
}else{
return parseFloat(floatValue).toFixed(0);
}
}
},
getRowSum(row){
var budgetCost=this.getFloatValue(row.budgetCost);
if(row.taskOut=='1'){
row.taskBudgetOutUserAt=budgetCost
row.taskBudgetInnerUserAt=0
row.taskBudgetNouserAt=0;
}else{
row.taskBudgetOutUserAt=0
row.taskBudgetInnerUserAt=budgetCost
row.taskBudgetNouserAt=0;
}
return budgetCost;
},
getFloatValue(value,digit){
if(isNaN(value)){
return 0;
}
if(value==null || value=='' || value==undefined ){
return 0;
}
return parseFloat(value);
},
clearSelectTask(task){
this.$refs.taskTable.toggleRowSelection(task)
},
onPorjectConfirm:function(project){
this.filters.selProject=project
this.selectProjectVisible=false;
this.getXmTasks();
},
clearSelectProject(){
this.filters.selProject=null;
this.getXmTasks()
}
/**end 自定义函数请在上面加**/ /**end 自定义函数请在上面加**/
},//end methods },//end methods
components: { components: {
XmTaskMng
xmProjectPhaseMng, XmProjectList
// //
}, },
mounted() { mounted() {
this.$nextTick(()=>{
var clientRect=this.$refs.taskTable.$el.getBoundingClientRect();
var subHeight=140/1000 * window.innerHeight;
if(this.isTaskCenter){
subHeight=50/1000 * window.innerHeight;
}
this.tableHeight = window.innerHeight -clientRect.y - this.$refs.taskTable.$el.offsetTop-subHeight;
this.getXmTasks();
});
listOption([{categoryId:'all',itemCode:'planType'},{categoryId:'all',itemCode:'taskType'},{categoryId:'all',itemCode:'urgencyLevel'},{categoryId:'all',itemCode:'priority'}]).then(res=>{
this.options=res.data.data;
})
} }
} }
</script> </script>
<style scoped> <style scoped>
.xm-task{
width: 100%;
}
.xm-task>.el-menu-demo{
height: 50px;
padding-left: 10px;
background: #fafbfc;
}
.xm-task>.el-menu-demo>li{
height: 100%;
line-height: 50px;
color: #303133;
}
.xm-task>.el-menu-demo>li:hover{
background: transparent;
}
.xm-task>.el-menu-demo>.is-active{
background: transparent;
}
</style> </style>

20
src/views/xm/core/xmTask/XmTaskMng.vue

@ -57,7 +57,7 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24" style="padding-top:5px;"> <el-col :span="24" style="padding-top:5px;">
<font class="more-label-font">产品:</font><el-tag v-if=" filters.product " closable @close="clearProduct">{{this.filters.product.productName}}</el-tag>
<font class="more-label-font">产品:</font><el-tag v-if=" filters.product " :closable="!xmProduct" @close="clearProduct">{{this.filters.product.productName}}</el-tag>
<el-button size="mini" v-else @click="showProductVisible" type="plian">选产品</el-button> <el-button size="mini" v-else @click="showProductVisible" type="plian">选产品</el-button>
</el-col> </el-col>
<el-col :span="24" style="padding-top:5px;" v-if="!selProject" > <el-col :span="24" style="padding-top:5px;" v-if="!selProject" >
@ -469,16 +469,9 @@ import XmProjectGroupSelect from '../xmProjectGroup/XmProjectGroupSelect.vue';
currentProject(){ currentProject(){
if(this.filters.selProject){ if(this.filters.selProject){
return this.filters.selProject; return this.filters.selProject;
}else{
var currentProject={};
if(this.editForm && this.editForm.id){
currentProject.id=this.editForm.projectId
currentProject.taskType=this.editForm.taskType
currentProject.name=this.editForm.projectName
return currentProject
}else{ }else{
return null; return null;
}
} }
}, },
currentProjectPhase(){ currentProjectPhase(){
@ -597,7 +590,7 @@ import XmProjectGroupSelect from '../xmProjectGroup/XmProjectGroupSelect.vue';
} }
}, },
props: ["selProject","isTaskCenter","isMy",'menuId','menuName'],
props: ["selProject","isTaskCenter","isMy",'menuId','menuName','xmProduct'],
watch: { watch: {
"selProject": function(oval,val) { "selProject": function(oval,val) {
this.filters.selProject=this.selProject; this.filters.selProject=this.selProject;
@ -610,6 +603,9 @@ import XmProjectGroupSelect from '../xmProjectGroup/XmProjectGroupSelect.vue';
if(drawerVisible==false){ if(drawerVisible==false){
this.drawerkey="" this.drawerkey=""
} }
},
'xmProduct':function(){
this.filters.product=this.xmProduct;
} }
}, },
data() { data() {
@ -1767,7 +1763,9 @@ XmProjectGroupSelect,XmProductSelect
if(this.selProject){ if(this.selProject){
this.filters.selProject=this.selProject this.filters.selProject=this.selProject
} }
if(this.xmProduct){
this.filters.product=this.xmProduct;
}
this.$nextTick(()=>{ this.$nextTick(()=>{
this.getXmTasks(); this.getXmTasks();
var clientRect=this.$refs.table.$el.getBoundingClientRect(); var clientRect=this.$refs.table.$el.getBoundingClientRect();

Loading…
Cancel
Save