Browse Source

优化

master
陈裕财 4 years ago
parent
commit
746f6086cc
  1. 4
      config/index.js
  2. 12
      src/views/xm/core/xmProduct/XmProductInfo.vue
  3. 12
      src/views/xm/core/xmProject/XmProjectInfo.vue
  4. 2067
      src/views/xm/core/xmTask/XmPhase.vue
  5. 65
      src/views/xm/core/xmTask/XmPlan.vue
  6. 72
      src/views/xm/core/xmTask/XmTaskMng.vue

4
config/index.js

@ -10,7 +10,7 @@ module.exports = {
assetsSubDirectory: '', assetsSubDirectory: '',
assetsPublicPath: '/', assetsPublicPath: '/',
proxyTable: { proxyTable: {
/**
'/api/m1/xm': { '/api/m1/xm': {
target: 'http://localhost:7067', target: 'http://localhost:7067',
changeOrigin: true, changeOrigin: true,
@ -18,7 +18,7 @@ module.exports = {
'^/api/m1/xm': '/xm' '^/api/m1/xm': '/xm'
} }
}, },
/**
'/api/m1/sys': { '/api/m1/sys': {
target: 'http://localhost:7015', target: 'http://localhost:7015',
changeOrigin: true, changeOrigin: true,

12
src/views/xm/core/xmProduct/XmProductInfo.vue

@ -25,10 +25,11 @@
<el-menu-item label="需求" index="需求"> <el-menu-item label="需求" index="需求">
<span slot="title"><i class="el-icon-document" ></i>需求</span> <span slot="title"><i class="el-icon-document" ></i>需求</span>
</el-menu-item> </el-menu-item>
<!--
<el-menu-item index="项目任务"> <el-menu-item index="项目任务">
<span slot="title"><i class="el-icon-s-operation"></i>任务</span> <span slot="title"><i class="el-icon-s-operation"></i>任务</span>
</el-menu-item> </el-menu-item>
-->
<!-- <!--
<el-submenu index="任务"> <el-submenu index="任务">
<template slot="title"><i class="el-icon-s-operation"></i>任务</template> <template slot="title"><i class="el-icon-s-operation"></i>任务</template>
@ -69,10 +70,11 @@
<span slot="title"><i class="el-icon-video-camera"></i>项目计划</span> <span slot="title"><i class="el-icon-video-camera"></i>项目计划</span>
</el-menu-item> </el-menu-item>
</el-submenu > </el-submenu >
-->
<el-menu-item index="项目计划"> <el-menu-item index="项目计划">
<span slot="title"><i class="el-icon-odometer"></i>计划</span> <span slot="title"><i class="el-icon-odometer"></i>计划</span>
</el-menu-item> </el-menu-item>
-->
<el-submenu index="财务" class="hidden-sm-and-down"> <el-submenu index="财务" class="hidden-sm-and-down">
<template slot="title"><i class="el-icon-coin"></i>财务</template> <template slot="title"><i class="el-icon-coin"></i>财务</template>
<el-menu-item index="合同管理"> <el-menu-item index="合同管理">
@ -164,9 +166,9 @@
<xm-group-mng v-if="infotype=='项目团队'" pgClass="0" :xm-product="xmProduct" key="projectGroup"></xm-group-mng> <xm-group-mng v-if="infotype=='项目团队'" pgClass="0" :xm-product="xmProduct" key="projectGroup"></xm-group-mng>
<xm-group-mng v-if="infotype=='产品团队'" pgClass="1" :xm-product="xmProduct" key="productGroup"></xm-group-mng> <xm-group-mng v-if="infotype=='产品团队'" pgClass="1" :xm-product="xmProduct" key="productGroup"></xm-group-mng>
<xm-file-mng v-if="infotype=='文档'" :xm-product="xmProduct"></xm-file-mng> <xm-file-mng v-if="infotype=='文档'" :xm-product="xmProduct"></xm-file-mng>
<xm-task-mng v-if="infotype=='产品计划'" ref="productPlan" ptype="1" queryScope="planTask" :xm-product="xmProduct" key="productPlan"></xm-task-mng>
<xm-plan v-if="infotype=='产品计划'" ref="productPlan" ptype="1" queryScope="planTask" :xm-product="xmProduct" key="productPlan"></xm-plan>
<xm-task-mng v-if="infotype=='项目计划'" ref="projectPlan" ptype="0" queryScope="planTask" :xm-product="xmProduct" key="projectPlan"></xm-task-mng>
<xm-plan v-if="infotype=='项目计划'" ref="projectPlan" ptype="0" queryScope="planTask" :xm-product="xmProduct" key="projectPlan"></xm-plan>
<!--<xm-phase-for-product v-if="infotype=='计划'" ref="xmPhaseMng" :xm-product="xmProduct" ></xm-phase-for-product> --> <!--<xm-phase-for-product v-if="infotype=='计划'" ref="xmPhaseMng" :xm-product="xmProduct" ></xm-phase-for-product> -->
<xm-test-case-exec-mng v-if="infotype=='测试计划'" :visible="infotype=='测试计划'" :xm-product='xmProduct' ref="xmQuestion"></xm-test-case-exec-mng> <xm-test-case-exec-mng v-if="infotype=='测试计划'" :visible="infotype=='测试计划'" :xm-product='xmProduct' ref="xmQuestion"></xm-test-case-exec-mng>
<xm-menu-with-plan v-if="infotype=='需求监控'" ref="xmMenuWithPlan" :xm-product="xmProduct"></xm-menu-with-plan> <xm-menu-with-plan v-if="infotype=='需求监控'" ref="xmMenuWithPlan" :xm-product="xmProduct"></xm-menu-with-plan>
@ -195,6 +197,7 @@
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import xmTaskMng from '../xmTask/XmTaskMng'; import xmTaskMng from '../xmTask/XmTaskMng';
import xmPlan from '../xmTask/XmPlan';
import xmGroupMng from '../xmGroup/XmGroupMng'; import xmGroupMng from '../xmGroup/XmGroupMng';
import xmGroupSelect from '../xmGroup/XmGroupSelect'; import xmGroupSelect from '../xmGroup/XmGroupSelect';
@ -450,6 +453,7 @@
XmProjectForLinkComplex, XmProjectForLinkComplex,
XmProjectForLink, XmProjectForLink,
XmReport, XmReport,
xmPlan,
// //
}, },
mounted() { mounted() {

12
src/views/xm/core/xmProject/XmProjectInfo.vue

@ -24,9 +24,11 @@
<el-menu-item index="产品" class="hidden-sm-and-down"> <el-menu-item index="产品" class="hidden-sm-and-down">
<span slot="title"><i class="el-icon-s-flag" ></i>产品</span> <span slot="title"><i class="el-icon-s-flag" ></i>产品</span>
</el-menu-item> </el-menu-item>
<!--
<el-menu-item label="需求" index="需求"> <el-menu-item label="需求" index="需求">
<span slot="title"><i class="el-icon-document"></i>需求</span> <span slot="title"><i class="el-icon-document"></i>需求</span>
</el-menu-item> </el-menu-item>
-->
<el-menu-item index="任务"> <el-menu-item index="任务">
<span slot="title"><i class="el-icon-s-operation"></i>任务</span> <span slot="title"><i class="el-icon-s-operation"></i>任务</span>
</el-menu-item> </el-menu-item>
@ -127,7 +129,7 @@
<xm-question v-if="infotype=='缺陷'" :qtype="'1'" :sel-project='selProject' ref="xmQuestion"></xm-question> <xm-question v-if="infotype=='缺陷'" :qtype="'1'" :sel-project='selProject' ref="xmQuestion"></xm-question>
<xm-group-mng v-if="infotype=='团队'" :sel-project="selProject"></xm-group-mng> <xm-group-mng v-if="infotype=='团队'" :sel-project="selProject"></xm-group-mng>
<xm-file-mng v-if="infotype=='文档'" :sel-project="selProject"></xm-file-mng> <xm-file-mng v-if="infotype=='文档'" :sel-project="selProject"></xm-file-mng>
<xm-task-mng v-if="infotype=='计划'" ref="projectPlan" ptype="0" queryScope="planTask" :sel-project="selProject" key="projectPlan"></xm-task-mng>
<xm-plan v-if="infotype=='计划'" ref="projectPlan" ptype="0" queryScope="planTask" :sel-project="selProject" key="projectPlan"></xm-plan>
<!-- <xm-phase-mng v-if="infotype=='计划'" ref="xmPhaseMng" :sel-project="selProject" ></xm-phase-mng> --> <!-- <xm-phase-mng v-if="infotype=='计划'" ref="xmPhaseMng" :sel-project="selProject" ></xm-phase-mng> -->
<xm-test-case-exec-mng v-if="infotype=='测试计划'" :visible="infotype=='测试计划'" :sel-project='selProject' ref="xmQuestion"></xm-test-case-exec-mng> <xm-test-case-exec-mng v-if="infotype=='测试计划'" :visible="infotype=='测试计划'" :sel-project='selProject' ref="xmQuestion"></xm-test-case-exec-mng>
<xm-menu-with-plan v-if="infotype=='需求监控'" ref="xmMenuWithPlan" :sel-project="selProject"></xm-menu-with-plan> <xm-menu-with-plan v-if="infotype=='需求监控'" ref="xmMenuWithPlan" :sel-project="selProject"></xm-menu-with-plan>
@ -166,8 +168,7 @@
import xmCost from './XmProjectCost'; import xmCost from './XmProjectCost';
import xmBudget from './XmProjectBudgetCost'; import xmBudget from './XmProjectBudgetCost';
import xmContract from '../xmContract/XmContractMng'; import xmContract from '../xmContract/XmContractMng';
import xmEnvList from '../xmProjectEnvList/XmProjectEnvListMng';
import xmPhaseMng from '../xmPhase/XmPhaseMng';
import xmEnvList from '../xmProjectEnvList/XmProjectEnvListMng';
import xmMenuMng from '../xmMenu/XmMenuMng'; import xmMenuMng from '../xmMenu/XmMenuMng';
import xmMenuWithPlan from '../xmMenu/XmMenuWithPlan'; import xmMenuWithPlan from '../xmMenu/XmMenuWithPlan';
import xmProjectStateMng from '../xmProjectState/XmProjectStateMng'; import xmProjectStateMng from '../xmProjectState/XmProjectStateMng';
@ -177,6 +178,7 @@
import XmProductForLinkComplex from '../xmProduct/XmProductForLinkComplex.vue'; import XmProductForLinkComplex from '../xmProduct/XmProductForLinkComplex.vue';
import XmReport from '@/views/xm/rpt/reportIndex'; import XmReport from '@/views/xm/rpt/reportIndex';
import XmPlan from '../xmTask/XmPlan.vue';
export default { export default {
props: ["selProject","visible"], props: ["selProject","visible"],
@ -374,8 +376,7 @@
},//end methods },//end methods
components: { components: {
xmTaskMng,
xmPhaseMng,
xmTaskMng,
xmGroupMng, xmGroupMng,
xmExchange, xmExchange,
xmQuestion, xmQuestion,
@ -396,6 +397,7 @@
XmProjectOverviewComplex, XmProjectOverviewComplex,
XmProductForLinkComplex, XmProductForLinkComplex,
XmReport, XmReport,
XmPlan,
// //
}, },
mounted() { mounted() {

2067
src/views/xm/core/xmTask/XmPhase.vue
File diff suppressed because it is too large
View File

65
src/views/xm/core/xmTask/XmPlan.vue

@ -0,0 +1,65 @@
<template>
<section>
<el-row>
<el-col :span="8">
<xm-phase :xm-product="xmProduct" :sel-project="selProject" queryScope="plan" @row-click="onPhaseRowClick"></xm-phase>
</el-col>
<el-col :span="16">
<xm-task-mng :xm-product="xmProduct" :sel-project="selProject" queryScope="task" :parent-task="parentTask"></xm-task-mng>
</el-col>
</el-row>
</section>
</template>
<script>
import util from '@/common/js/util';//
import { initSimpleDicts } from '@/api/mdp/meta/item';//
import { mapGetters } from 'vuex'
import XmProjectSelect from '@/views/xm/core/components/XmProjectSelect';//
import XmPhase from '@/views/xm/core/xmTask/XmPhase';//
import XmTaskMng from '@/views/xm/core/xmTask/XmTaskMng';//
export default {
components: {
XmProjectSelect,XmPhase,XmTaskMng
},
props:['xmProduct','selProject'],
computed: {
...mapGetters([
'userInfo','roles'
]),
},
watch: {
},
data() {
return {
parentTask:null,
xmProject:null,
dicts:{},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
load:{ list: false, edit: false, del: false, add: false },//...
dateRanger:[],
maxTableHeight:300,
visible:false,
}//end return
},//end data
methods: {
onPhaseRowClick(task){
this.parentTask=task
}
},//end method
mounted() {
}//end mounted
}
</script>
<style scoped>
</style>

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

@ -112,48 +112,11 @@
<span style="float:right;"> <span style="float:right;">
<el-popover <el-popover
placement="top-start" placement="top-start"
title="选择创建计划/任务的方式"
title="选择任务的方式"
width="300" width="300"
trigger="hover" trigger="hover"
> >
<el-row>
<el-col :span="24" style="padding-top: 5px">
<div class="icon" :style="{backgroundColor: '#E6A23C'}">
<i :class=" 'el-icon-odometer' " ></i>
</div>
<el-button
v-if="isTaskCenter != '1' && isMy != '1'"
@click="showMenu"
type="primary"
icon="el-icon-plus"
>由用户故事快速创建计划 (推荐)</el-button
>
</el-col>
<el-col :span="24" style="padding-top: 5px">
<div class="icon" :style="{backgroundColor: '#E6A23C'}">
<i :class=" 'el-icon-odometer' " ></i>
</div>
<el-button
v-if="isTaskCenter != '1' && isMy != '1'"
@click="showTaskTemplate"
icon="el-icon-plus"
>从模板快速导入计划 </el-button
>
</el-col>
<el-col :span="24" style="padding-top: 5px">
<div class="icon" :style="{backgroundColor: '#E6A23C'}">
<i :class=" 'el-icon-odometer' " ></i>
</div>
<el-button
v-if="isTaskCenter != '1' && isMy != '1'"
@click="showAdd('1')"
icon="el-icon-plus"
>直接创建计划</el-button
>
</el-col>
<el-row>
<el-col :span="24" style="padding-top: 5px"> <el-col :span="24" style="padding-top: 5px">
<div class="icon" :style="{backgroundColor: '#409EFF'}"> <div class="icon" :style="{backgroundColor: '#409EFF'}">
<i :class=" 'el-icon-s-operation' " ></i> <i :class=" 'el-icon-s-operation' " ></i>
@ -192,10 +155,7 @@
</el-col> </el-col>
</el-row> </el-row>
<el-button <el-button
slot="reference"
v-if="
queryScope=='plan'||queryScope=='planTask'
"
slot="reference"
type="primary" type="primary"
round round
icon="el-icon-plus" icon="el-icon-plus"
@ -408,7 +368,7 @@
prop="name" prop="name"
class-name="title" class-name="title"
fixed="left" fixed="left"
label="名称(点击详情)"
label="任务名称"
min-width="300" show-overflow-tooltip min-width="300" show-overflow-tooltip
> >
<template slot-scope="scope"> <template slot-scope="scope">
@ -421,10 +381,7 @@
<div class="tool-bar"> <div class="tool-bar">
<span class="u-btn"> <span class="u-btn">
<el-button v-if="scope.row.ntype==='1'" @click="showSubAdd( scope.row,scope.$index,'0')" icon="el-icon-plus" title="新建任务" circle plain size="mini"> </el-button>
<el-button v-if="scope.row.ntype==='1'" :style="{backgroundColor: '#E6A23C'}" @click="showSubAdd( scope.row,scope.$index,'1')" icon="el-icon-plus" title="新建计划" circle plain size="mini"> </el-button>
<el-button v-if="scope.row.ntype==='0'" @click="showEdit( scope.row,scope.$index)" icon="el-icon-edit" title="编辑任务" circle plain size="mini"> </el-button>
<el-button @click="showEdit( scope.row,scope.$index)" icon="el-icon-edit" title="编辑任务" circle plain size="mini"> </el-button>
</span> </span>
</div> </div>
</template> </template>
@ -948,8 +905,7 @@ import { mapGetters } from "vuex";
import xmExecuserMng from "../xmTaskExecuser/XmTaskExecuserForTask"; import xmExecuserMng from "../xmTaskExecuser/XmTaskExecuserForTask";
import xmSkillMng from "../xmTaskSkill/XmTaskSkillMng"; import xmSkillMng from "../xmTaskSkill/XmTaskSkillMng";
import skillMng from "@/views/xm/core/skill/skillMng"; import skillMng from "@/views/xm/core/skill/skillMng";
import { batchAddSkill } from "@/api/xm/core/xmTaskSkill";
import xmPhaseMng from "../xmPhase/XmPhaseSelect";
import { batchAddSkill } from "@/api/xm/core/xmTaskSkill";
import { sn } from "@/common/js/sequence"; import { sn } from "@/common/js/sequence";
import xmTaskTemplateMng from "../xmTaskTemplate/XmTaskTemplateMng"; import xmTaskTemplateMng from "../xmTaskTemplate/XmTaskTemplateMng";
import xmExchangeMng from "../xmExchange/XmExchangeMng"; import xmExchangeMng from "../xmExchange/XmExchangeMng";
@ -1009,6 +965,7 @@ export default {
}, },
props: [ props: [
"parentTask",
"selProject", "selProject",
"isTaskCenter", "isTaskCenter",
"isMy", "isMy",
@ -1040,6 +997,9 @@ export default {
xmIteration: function () { xmIteration: function () {
this.getXmTasks(); this.getXmTasks();
}, },
"parentTask.id":function(){
this.searchXmTasks();
}
}, },
data() { data() {
const beginDate = new Date(); const beginDate = new Date();
@ -1171,8 +1131,7 @@ export default {
skillVisible: false, skillVisible: false,
skillIds: [], skillIds: [],
taskSkills: [], taskSkills: [],
taskTemplateVisible: false,
parentTask: null,
taskTemplateVisible: false,
projectInfoVisible: false, projectInfoVisible: false,
menuVisible: false, menuVisible: false,
menuDetailVisible: false, menuDetailVisible: false,
@ -1546,8 +1505,7 @@ export default {
showAdd: function (ntype) { showAdd: function (ntype) {
if(!this.checkCanAdd()){ if(!this.checkCanAdd()){
return; return;
}
this.parentTask = null;
}
this.addForm.ntype=ntype; this.addForm.ntype=ntype;
this.addFormVisible = true; this.addFormVisible = true;
}, },
@ -2307,6 +2265,9 @@ export default {
if(this.queryScope=="planTask"||this.queryScope=='plan'){ if(this.queryScope=="planTask"||this.queryScope=='plan'){
params.lvls=this.filters.lvls params.lvls=this.filters.lvls
} }
if(this.parentTask && this.parentTask.id){
params.parentTaskid=this.parentTask.id
}
return params; return params;
}, },
loadXmTaskLazy(tree, treeNode, resolve) { loadXmTaskLazy(tree, treeNode, resolve) {
@ -2525,8 +2486,7 @@ export default {
XmTaskAgileKanban, XmTaskAgileKanban,
xmExecuserMng, xmExecuserMng,
xmSkillMng, xmSkillMng,
skillMng,
xmPhaseMng,
skillMng,
xmTaskTemplateMng, xmTaskTemplateMng,
XmProjectSelect, XmProjectSelect,
xmExchangeMng, xmExchangeMng,

Loading…
Cancel
Save