From 02ce6f227f65770e423ac0c497ed404196d83d73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Fri, 25 Mar 2022 02:39:36 +0800 Subject: [PATCH 01/23] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/xm/core/components/XmItSelect.vue | 12 +- .../xm/core/components/XmMenuWorkload.vue | 119 ++++++++++++++++++ src/views/xm/core/xmMenu/XmMenuMng.vue | 39 ++++-- 3 files changed, 159 insertions(+), 11 deletions(-) create mode 100644 src/views/xm/core/components/XmMenuWorkload.vue diff --git a/src/views/xm/core/components/XmItSelect.vue b/src/views/xm/core/components/XmItSelect.vue index c9efaf51..04571516 100644 --- a/src/views/xm/core/components/XmItSelect.vue +++ b/src/views/xm/core/components/XmItSelect.vue @@ -30,7 +30,7 @@ this.initData(); }, value(){ - this.iterationId=value; + this.iterationId=this.value; }, iterationId(){ this.$emit("input",this.iterationId) @@ -38,8 +38,14 @@ this.$emit("change",null) return; } - var iteration=this.xmIterations.find(i=>i.id==this.iterationId) - this.$emit("change",iteration) + if(this.xmIterations){ + var iteration=this.xmIterations.find(i=>i.id==this.iterationId) + this.$emit("change",iteration) + }else{ + var iteration={id:this.iterationId} + this.$emit("change",iteration) + } + } }, data() { diff --git a/src/views/xm/core/components/XmMenuWorkload.vue b/src/views/xm/core/components/XmMenuWorkload.vue new file mode 100644 index 00000000..f85ff843 --- /dev/null +++ b/src/views/xm/core/components/XmMenuWorkload.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/src/views/xm/core/xmMenu/XmMenuMng.vue b/src/views/xm/core/xmMenu/XmMenuMng.vue index 975ac58f..e21e9ad2 100644 --- a/src/views/xm/core/xmMenu/XmMenuMng.vue +++ b/src/views/xm/core/xmMenu/XmMenuMng.vue @@ -177,8 +177,7 @@ - - + @@ -310,7 +309,7 @@ {{scope.row.iterationName}} - + @@ -327,8 +326,18 @@ + @@ -456,6 +465,7 @@ import XmTaskListForMenu from '../xmTask/XmTaskListForMenu'; import XmIterationSelect from '../xmIteration/XmIterationSelect';//修改界面 import XmItSelect from '@/views/xm/core/components/XmItSelect';//修改界面 + import XmMenuWorkload from '@/views/xm/core/components/XmMenuWorkload';//修改界面 import UsersSelect from "@/views/mdp/sys/user/UsersSelect"; import XmMenuSelect from "../xmMenu/XmMenuSelect"; @@ -463,7 +473,7 @@ import {sn} from '@/common/js/sequence' - import { mapGetters } from 'vuex' + import { mapGetters } from 'vuex' export default { props:['selProject','xmIteration','xmProduct','disabledMng'], @@ -1227,8 +1237,10 @@ }else{ return; } - }else { - params[fieldName]=$event; + }else if(fieldName==='workload'){ + params={...params,...$event} + }else{ + params[fieldName]=$event } editXmMenuSomeFields(params).then(res=>{ @@ -1245,6 +1257,9 @@ i['tagIds']=params['tagIds'] this.fieldTagVisible=false; } + if(fieldName==='workload'){ + Object.assign(i,params) + } }) }else{ if(fieldName==='tagIds'){ @@ -1252,6 +1267,13 @@ row['tagIds']=params['tagIds'] this.fieldTagVisible=false; } + if(fieldName==='iterationId'){ + row['iterationName']=params['iterationName'] + row['iterationId']=params['iterationId'] + } + if(fieldName==='workload'){ + Object.assign(row,params) + } } }else{ this.$notify({showClose:true,message:tips.msg,type:tips.isOk?'success':'error'}) @@ -1274,8 +1296,9 @@ TagMng, XmMenuSelect, XmItSelect, + XmMenuWorkload, //在下面添加其它组件 - }, + }, mounted() { initSimpleDicts("all",['menuStatus','demandSource','demandLvl','demandType','priority']).then(res=>{ this.dicts=res.data.data; From b3a9f218a1a6d6bcde292e6fb503d429aea83bc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Fri, 25 Mar 2022 14:53:54 +0800 Subject: [PATCH 02/23] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/xm/core/components/XmMenuWorkload.vue | 6 +++--- src/views/xm/core/xmMenu/XmMenuAdd.vue | 6 +++--- src/views/xm/core/xmMenu/XmMenuEdit.vue | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/views/xm/core/components/XmMenuWorkload.vue b/src/views/xm/core/components/XmMenuWorkload.vue index f85ff843..114c4198 100644 --- a/src/views/xm/core/components/XmMenuWorkload.vue +++ b/src/views/xm/core/components/XmMenuWorkload.vue @@ -24,9 +24,9 @@  h 控制规则: -
下级往上汇总:指需求池的数据来自直接下级的需求池(需求)的数据之和。逐级往上汇总。 -
由任务汇总: 指需求(不包括需求池)的数据来自与该需求关联的任务的数据之和。 -
手工填报: 指需求(不包括需求池)的数据来自手工填报,无论是否关联了任务,都不从任务汇总。 +
下级往上汇总:指工时数据按  用户故事->特性->史诗  这样的汇总关系将数据逐级往上汇总。 +
由任务汇总: 指用户故事的工时数据由任务汇总。 +
手工填报: 指用户故事的工时数据来自手工填报,无论是否关联了任务,都不从任务汇总。
diff --git a/src/views/xm/core/xmMenu/XmMenuAdd.vue b/src/views/xm/core/xmMenu/XmMenuAdd.vue index 87ba645f..1c8add06 100644 --- a/src/views/xm/core/xmMenu/XmMenuAdd.vue +++ b/src/views/xm/core/xmMenu/XmMenuAdd.vue @@ -117,9 +117,9 @@  h 控制规则: -
下级往上汇总:指需求池的数据来自直接下级的需求池(需求)的数据之和。逐级往上汇总。 -
由任务汇总: 指需求(不包括需求池)的数据来自与该需求关联的任务的数据之和。 -
手工填报: 指需求(不包括需求池)的数据来自手工填报,无论是否关联了任务,都不从任务汇总。 +
下级往上汇总:指工时数据按  用户故事->特性->史诗  这样的汇总关系将数据逐级往上汇总。 +
由任务汇总: 指用户故事的工时数据由任务汇总。 +
手工填报: 指用户故事的工时数据来自手工填报,无论是否关联了任务,都不从任务汇总。
diff --git a/src/views/xm/core/xmMenu/XmMenuEdit.vue b/src/views/xm/core/xmMenu/XmMenuEdit.vue index ddd87237..9ca15634 100644 --- a/src/views/xm/core/xmMenu/XmMenuEdit.vue +++ b/src/views/xm/core/xmMenu/XmMenuEdit.vue @@ -123,9 +123,9 @@  h 控制规则: -
下级往上汇总:指需求池的数据来自直接下级的需求池(需求)的数据之和。逐级往上汇总。 -
由任务汇总: 指需求(不包括需求池)的数据来自与该需求关联的任务的数据之和。 -
手工填报: 指需求(不包括需求池)的数据来自手工填报,无论是否关联了任务,都不从任务汇总。 +
下级往上汇总:指工时数据按  用户故事->特性->史诗  这样的汇总关系将数据逐级往上汇总。 +
由任务汇总: 指用户故事的工时数据由任务汇总。 +
手工填报: 指用户故事的工时数据来自手工填报,无论是否关联了任务,都不从任务汇总。
From 6a990eb30083a2b8beac6d127c0161ef16d47dc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Sat, 26 Mar 2022 00:10:18 +0800 Subject: [PATCH 03/23] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xm/core/components/XmTableConfig.vue | 98 +++++++++++++++++++ src/views/xm/core/xmMenu/XmMenuEdit.vue | 2 +- src/views/xm/core/xmMenu/XmMenuMng.vue | 57 ++++++----- src/views/xm/core/xmMenu/XmMenuSelect.vue | 17 ++-- 4 files changed, 138 insertions(+), 36 deletions(-) create mode 100644 src/views/xm/core/components/XmTableConfig.vue diff --git a/src/views/xm/core/components/XmTableConfig.vue b/src/views/xm/core/components/XmTableConfig.vue new file mode 100644 index 00000000..efce0149 --- /dev/null +++ b/src/views/xm/core/components/XmTableConfig.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/src/views/xm/core/xmMenu/XmMenuEdit.vue b/src/views/xm/core/xmMenu/XmMenuEdit.vue index 9ca15634..6c44b760 100644 --- a/src/views/xm/core/xmMenu/XmMenuEdit.vue +++ b/src/views/xm/core/xmMenu/XmMenuEdit.vue @@ -111,7 +111,7 @@ - +  h diff --git a/src/views/xm/core/xmMenu/XmMenuMng.vue b/src/views/xm/core/xmMenu/XmMenuMng.vue index e21e9ad2..2065ca52 100644 --- a/src/views/xm/core/xmMenu/XmMenuMng.vue +++ b/src/views/xm/core/xmMenu/XmMenuMng.vue @@ -139,7 +139,8 @@ 导出 - 汇总进度 + 汇总进度 + @@ -179,13 +180,13 @@ - - + + - + @@ -225,6 +226,7 @@ +
- + - + - - + @@ -369,7 +357,7 @@ {{scope.row.mmUsername}} - + @@ -466,6 +454,7 @@ import XmIterationSelect from '../xmIteration/XmIterationSelect';//修改界面 import XmItSelect from '@/views/xm/core/components/XmItSelect';//修改界面 import XmMenuWorkload from '@/views/xm/core/components/XmMenuWorkload';//修改界面 + import XmTableConfig from '@/views/xm/core/components/XmTableConfig';//修改界面 import UsersSelect from "@/views/mdp/sys/user/UsersSelect"; import XmMenuSelect from "../xmMenu/XmMenuSelect"; @@ -473,7 +462,7 @@ import {sn} from '@/common/js/sequence' - import { mapGetters } from 'vuex' + import { mapGetters } from 'vuex' export default { props:['selProject','xmIteration','xmProduct','disabledMng'], @@ -508,6 +497,7 @@ const endDate = new Date(); beginDate.setTime(beginDate.getTime() - 3600 * 1000 * 24 * 7 * 4 * 12 ); return { + columnsConfig:[/**{label:'',property:'',isShow:true} */], filters: { key: '', product:null, @@ -525,7 +515,7 @@ xmMenus: [],//查询结果 pageInfo:{//分页数据 total:0,//服务器端收到0时,会自动计算总记录数,如果上传>0的不自动计算。 - pageSize:50,//每页数据 + pageSize:20,//每页数据 count:false,//是否需要重新计算总记录数 pageNum:1,//当前页码、从1开始计算 orderFields:[],//排序列 如 ['sex','student_id'],必须为数据库字段 @@ -745,8 +735,8 @@ //显示编辑界面 XmMenu xm_project_menu showEdit: function ( row,index ) { + this.editForm = Object.assign({}, row); this.editFormVisible = true; - this.editForm = Object.assign({}, row); }, //显示新增界面 XmMenu xm_project_menu showAdd: function (dclass) { @@ -1279,7 +1269,19 @@ this.$notify({showClose:true,message:tips.msg,type:tips.isOk?'success':'error'}) } }) + }, + cellStyleCalc({row, column, rowIndex, columnIndex}){ + if(this.$refs.tableConfig && this.$refs.tableConfig.columnsConfig.length>0){ + if(this.$refs.tableConfig.columnsConfig.some(i=>i.property==column.property&&i.isShow==false)){ + return "display:none;" + }else{ + return ""; + } + }else{ + return ""; + } } + },//end methods components: { 'xm-menu-add':XmMenuAdd, @@ -1297,6 +1299,7 @@ XmMenuSelect, XmItSelect, XmMenuWorkload, + XmTableConfig, //在下面添加其它组件 }, mounted() { @@ -1318,7 +1321,7 @@ this.$nextTick(() => { this.maxTableHeight = util.calcTableMaxHeight(this.$refs.table.$el); this.getXmMenus(); - }); + }); } } diff --git a/src/views/xm/core/xmMenu/XmMenuSelect.vue b/src/views/xm/core/xmMenu/XmMenuSelect.vue index a77cae3c..c217494d 100644 --- a/src/views/xm/core/xmMenu/XmMenuSelect.vue +++ b/src/views/xm/core/xmMenu/XmMenuSelect.vue @@ -3,13 +3,13 @@ - - {{filters.product?filters.product.productName:'选择产品'}} + {{filters.product?filters.product.productName:'选择产品'}} - {{scope.row.seqNo}}  + {{scope.row.seqNo}}  {{scope.row.menuName}} @@ -385,13 +385,14 @@ if( this.filters.product && this.filters.product.id){ params.productId=this.filters.product.id - }else { - this.$notify({showClose: true, message: "请先选择产品", type: 'warning' }); - return; - //params.xxx=xxxxx - } + } params=this.getParams(params) + + if(!params.productId && !params.iterationId && !params.linkIterationId){ + this.$notify({showClose: true, message: "请先选择产品", type: 'warning' }); + return; + } params.withParents="1" this.load.list = true; listXmMenu(params).then((res) => { From c0a4b2af6c919d4d3525c313d9320c73d869abba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Sat, 26 Mar 2022 01:33:03 +0800 Subject: [PATCH 04/23] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/xm/core/components/XmItSelect.vue | 309 +++++++++++++++----- src/views/xm/core/xmMenu/XmMenuMng.vue | 2 +- 2 files changed, 239 insertions(+), 72 deletions(-) diff --git a/src/views/xm/core/components/XmItSelect.vue b/src/views/xm/core/components/XmItSelect.vue index 04571516..a6c77329 100644 --- a/src/views/xm/core/components/XmItSelect.vue +++ b/src/views/xm/core/components/XmItSelect.vue @@ -1,7 +1,67 @@ - - - - - \ No newline at end of file diff --git a/src/views/xm/core/xmProject/XmProjectEdit.vue b/src/views/xm/core/xmProject/XmProjectEdit.vue index 68daa395..54bd77c2 100644 --- a/src/views/xm/core/xmProject/XmProjectEdit.vue +++ b/src/views/xm/core/xmProject/XmProjectEdit.vue @@ -14,22 +14,59 @@ - + + + + + 项目代号为合同上的项目代号,甲乙方共享;项目内部编号为  代号-四位随机码 + + + + + 项目代号为合同上的项目代号,甲乙方共享;项目内部编号为  代号-四位随机码 - - - - - - - - + + + + + + + + + + + + + + + + + + + + + scrum + 看板 + + + + + + + + + + + + - + @@ -67,7 +104,7 @@ - + 小时   参考工时{{autoParams.weekday*8}}小时,工作日{{autoParams.weekday}}天 - - + + + + + 人员类型 人数 @@ -134,32 +174,35 @@ 合计: {{this.toFixed(autoParams.planTotalCost/10000)}}万元 - - - - 预计收款总额: {{this.toFixed(autoParams.totalReceivables/10000)}}万元 - 合同总金额 : {{this.toFixed(autoParams.contractAmt/10000)}}万元 - - - 税率: - 考核标准毛利率: - 当前毛利率为:{{toFixed(parseFloat2(autoParams.currentBudgetMarginRate)*100,2)}}% - - + + + + + + 税率: % + 考核标准毛利率:% + 当前预估毛利率为:{{toFixed(parseFloat2(autoParams.currentBudgetMarginRate),2)}}% + + + 预计收\付款总额: {{this.toFixed(autoParams.totalReceivables/10000)}}万元 + 合同总金额 : {{this.toFixed(editForm.contractAmt/10000)}}万元 + + 提交 - 基本信息修改申请 - 延期申请 - 立项申请 - 结项申请 - 预算变更申请 - 项目暂停申请 - 项目重新启动申请 - + + 基本信息修改申请 + 延期申请 + 立项申请 + 结项申请 + 预算变更申请 + 项目暂停申请 + 项目重新启动申请 + @@ -175,7 +218,7 @@ import config from "@/common/config"; //全局公共库 import { initSimpleDicts } from '@/api/mdp/meta/item';//下拉框数据查询 - import { editXmProject,getDefOptions } from '@/api/xm/core/xmProject'; + import { addXmProject,editXmProject,getDefOptions,createProjectCode } from '@/api/xm/core/xmProject'; import { uploadBase64 } from '@/api/mdp/arc/image'; import { mapGetters } from 'vuex'; @@ -297,12 +340,11 @@ } }, }, - props:['selProject','visible'], + props:['selProject','visible','xmProject','opType'/**add、edit */], watch: { 'visible':function(visible) { if(visible==true){ - this.editForm=Object.assign({},this.selProject) - this.dateRanger=[this.editForm.startTime,this.editForm.endTime] + this.initData(); } }, 'planTotalAt':{ @@ -324,6 +366,9 @@ editForm:{ handler(newValue, oldValue) { + if(this.opType==='add'){ + return; + } this.$notify.closeAll(); this.changeTips=[]; if(this.selProject.planWorkingHours!=this.editForm.planWorkingHours){ @@ -377,17 +422,20 @@ load:{ list: false, add: false, del: false, edit: false },//查询中... editFormRules: { name: [{ - required: true, message: '项目名称不可为空' , trigger: 'blur' + required: true, message: '项目名称不可为空' , trigger: 'change' }], code: [{ - required: true, message: '项目代号不可为空', trigger: 'blur' + required: true, message: '项目代号不可为空', trigger: 'change' }], xmType: [{ - required: true, message: '项目类型不可为空', trigger: 'blur' + required: true, message: '项目类型不可为空', trigger: 'change' + }], + xmType: [{ + required: true, message: '项目类型不可为空', trigger: 'change' }], priority: [{ - required: true, message: '优先级不可为空', trigger: 'blur' + required: true, message: '优先级不可为空', trigger: 'change' }], admUserid: [{ required: true, message: '项目总控不能为空', trigger: 'change' @@ -435,15 +483,12 @@ this.$emit('cancel'); }, //编辑提交XmProject xm_project父组件监听@submit="afterEditSubmit" - editSubmit: function () { - if(!this.roles.some(i=>i.roleid=='projectAdmin')){ - this.$notify({showClose: true, message: "只有项目经理可以修改项目", type: 'error' }); - return; - } - if("0" != this.selProject.status){ + editSubmit: function () { + if(this.opType!=='add' && "0" != this.selProject.status){ this.$notify({showClose: true, message: "只有初始状态的项目可以修改,如确实需要修改,请进行项目变更审批", type: 'error' }); return; } + var msg=this.xmProduct&&this.xmProduct.id?'将自动关联产品【'+this.xmProduct.productName+'】':''; if ( this.dateRanger != null && this.dateRanger.length == 2 @@ -456,13 +501,17 @@ } this.$refs.editForm.validate((valid) => { if (valid) { - this.$confirm('确认提交吗?', '提示', {}).then(() => { + this.$confirm('确认提交吗?'+msg, '提示', {}).then(() => { this.load.edit=true + var func=editXmProject; + if(this.opType==='add'){ + func=addXmProject; + } let params = Object.assign({}, this.editForm); params.planIuserWorkload=this.autoParams.planIuserWorkload params.planOuserWorkload=this.autoParams.planOuserWorkload params.planWorkload=this.autoParams.planWorkload - editXmProject(params).then((res) => { + func(params).then((res) => { this.load.edit=false; var tips=res.data.tips; if(tips.isOk){ @@ -729,17 +778,50 @@ }, + createProjectCode(){ + createProjectCode({}).then(res=>{ + var tips=res.data.tips; + if(tips.isOk){ + this.editForm.code=res.data.data + } + this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' }); + }) + }, + initData(){ + this.editForm={...this.selProject} + if(this.opType==='add'){ + this.editForm.pmUserid=this.userInfo.userid + this.editForm.pmUsername=this.userInfo.username + this.editForm.admUserid=this.userInfo.userid + this.editForm.admUsername=this.userInfo.username + this.editForm.assUserid=this.userInfo.userid + this.editForm.assUsername=this.userInfo.username + this.editForm.status="0" + this.editForm.wtype=this.editForm.wtype||"2" + this.editForm.workType=this.editForm.workType||"1" + this.editForm.xmType=this.editForm.xmType||"2" + this.editForm.priority=this.editForm.priority||"2" + this.editForm.locked=this.editForm.locked||"0" + this.editForm.showOut=this.editForm.showOut||"2" + this.editForm.isTpl=this.editForm.isTpl||"0" + this.editForm.phaseActCtrl=this.editForm.phaseActCtrl||"1"; + this.editForm.budgetEarly=this.editForm.budgetEarly||"1"; + this.editForm.earlyAmt=this.editForm.earlyAmt||-10000; + this.editForm.budgetCtrl=this.editForm.budgetCtrl||"0"; + this.editForm.taxRate=this.editForm.taxRate||6 + this.editForm.budgetMarginRate=this.editForm.budgetMarginRate||13 + }else{ + this.dateRanger=[this.editForm.startTime,this.editForm.endTime] + } + } /**end 在上面加自定义方法**/ },//end method components: { html2canvas,UsersSelect, //在下面添加其它组件 'xm-project-add':XmProjectEdit }, mounted() { - this.maxTableHeight=util.calcTableMaxHeight(this.$refs.table.$el)-20; - this.editForm=Object.assign({},this.selProject); - this.dateRanger=[this.editForm.startTime,this.editForm.endTime] - - + this.maxTableHeight=util.calcTableMaxHeight(this.$refs.table.$el)-20; + this.initData(); initSimpleDicts('all',['projectType','priority','projectStatus']).then(res=>{ this.dicts=res.data.data; }) diff --git a/src/views/xm/core/xmProject/XmProjectForLinkComplex.vue b/src/views/xm/core/xmProject/XmProjectForLinkComplex.vue index 1e5a6721..89c6e837 100644 --- a/src/views/xm/core/xmProject/XmProjectForLinkComplex.vue +++ b/src/views/xm/core/xmProject/XmProjectForLinkComplex.vue @@ -17,7 +17,7 @@ v-model="projectAddVisible" trigger="manual"> - + 项目 @@ -75,7 +75,7 @@ import XmProductSelect from '@/views/xm/core/components/XmProductSelect.vue' import XmProductProjectForLink from '../xmProduct/XmProductProjectForLink.vue'; import XmProjectOverview from "./XmProjectOverview"; - import XmProjectAdd from './XmProjectAdd';//新增界面 + import XmProjectAdd from './XmProjectEdit';//新增界面 import XmProjectDetail from './XmProjectDetail';//新增界面 import XmProductProjectLinkMng from '../xmProductProjectLink/XmProductProjectLinkMng.vue'; diff --git a/src/views/xm/core/xmProject/XmProjectInfo.vue b/src/views/xm/core/xmProject/XmProjectInfo.vue index 49386094..043822c1 100644 --- a/src/views/xm/core/xmProject/XmProjectInfo.vue +++ b/src/views/xm/core/xmProject/XmProjectInfo.vue @@ -161,10 +161,7 @@ + + diff --git a/src/views/xm/core/xmTaskSbill/XmTaskSbillEdit.vue b/src/views/xm/core/xmTaskSbill/XmTaskSbillEdit.vue new file mode 100644 index 00000000..5706b5ce --- /dev/null +++ b/src/views/xm/core/xmTaskSbill/XmTaskSbillEdit.vue @@ -0,0 +1,217 @@ + + + + + diff --git a/src/views/xm/core/xmTaskSbill/XmTaskSbillMng.vue b/src/views/xm/core/xmTaskSbill/XmTaskSbillMng.vue new file mode 100644 index 00000000..f8a37e16 --- /dev/null +++ b/src/views/xm/core/xmTaskSbill/XmTaskSbillMng.vue @@ -0,0 +1,265 @@ + + + + + diff --git a/src/views/xm/core/xmTaskWorkload/XmTaskWorkloadEdit.vue b/src/views/xm/core/xmTaskWorkload/XmTaskWorkloadEdit.vue new file mode 100644 index 00000000..bd501905 --- /dev/null +++ b/src/views/xm/core/xmTaskWorkload/XmTaskWorkloadEdit.vue @@ -0,0 +1,174 @@ + + + + + diff --git a/src/views/xm/core/xmTaskWorkload/XmTaskWorkloadMng.vue b/src/views/xm/core/xmTaskWorkload/XmTaskWorkloadMng.vue new file mode 100644 index 00000000..0d49d0e6 --- /dev/null +++ b/src/views/xm/core/xmTaskWorkload/XmTaskWorkloadMng.vue @@ -0,0 +1,260 @@ + + + + + From 3e94eff1b170255864e130453ec3cc595ad890c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Sat, 26 Mar 2022 23:04:04 +0800 Subject: [PATCH 20/23] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xm/core/components/XmIterationSelect.vue | 22 +++--- .../xm/core/components/XmMenuWorkload.vue | 18 ++--- .../xm/core/xmIteration/XmIterationMng.vue | 49 +------------ .../xmIterationMenu/XmIterationMenuMng.vue | 68 ++++-------------- src/views/xm/core/xmMenu/XmMenuEdit.vue | 34 +++++++-- src/views/xm/core/xmMenu/XmMenuMng.vue | 70 +++++-------------- src/views/xm/core/xmMenu/XmMenuSelect.vue | 40 +++++++++-- 7 files changed, 118 insertions(+), 183 deletions(-) diff --git a/src/views/xm/core/components/XmIterationSelect.vue b/src/views/xm/core/components/XmIterationSelect.vue index 4ba3d291..5a7d0a00 100644 --- a/src/views/xm/core/components/XmIterationSelect.vue +++ b/src/views/xm/core/components/XmIterationSelect.vue @@ -82,10 +82,10 @@ props:['clearable', 'productId', 'linkProjectId','autoSelect'], watch:{ productId:function(){ - this.getXmIterations(); + this.initData(); }, - iterationId:function(){ - this.getXmIterations(); + linkProjectId:function(){ + this.initData(); } }, data() { @@ -208,8 +208,8 @@ if(this.autoSelect===true&&this.xmIterations.length>0){ if(this.autoSelect!==false&&this.xmIterations.length>0 && this.iterationVisible==false){ var row=this.xmIterations[0]; - this.$refs.table.setCurrentRow(row); - this.rowClick(row); + this.$refs.table.setCurrentRow(row); + this.rowClick(row) } } }else{ @@ -223,7 +223,7 @@ selsChange: function (sels) { this.sels = sels; }, - rowClick: function(row, event, column){ + rowClick: function(row, event, column){ var oldId=this.editForm.id this.editForm=row this.iterationVisible=false; @@ -252,8 +252,8 @@ this.xmIterations=xmIterations; if(this.autoSelect!==false&&this.xmIterations.length>0 && this.iterationVisible==false){ var row=this.xmIterations[0]; - this.$refs.table.setCurrentRow(row); - this.rowClick(row); + this.$refs.table.setCurrentRow(row); + this.rowClick(row) } }else{ this.searchXmIterations(); @@ -264,14 +264,14 @@ this.xmIterations=xmIterations; if(this.autoSelect!==false&&this.xmIterations.length>0 && this.iterationVisible==false){ var row=this.xmIterations[0]; - this.$refs.table.setCurrentRow(row); - this.rowClick(row); + this.$refs.table.setCurrentRow(row); + this.rowClick(row) } }else{ this.searchXmIterations(); } }else{ - this.searchXmIterations(); + //his.searchXmIterations(); } }, diff --git a/src/views/xm/core/components/XmMenuWorkload.vue b/src/views/xm/core/components/XmMenuWorkload.vue index 114c4198..caebd7f3 100644 --- a/src/views/xm/core/components/XmMenuWorkload.vue +++ b/src/views/xm/core/components/XmMenuWorkload.vue @@ -6,22 +6,22 @@ v-model="formVisible" trigger="manual" > - 下往上 - 任务汇总 - 手工填报 + 下往上 + 任务汇总 + 手工填报 - + -  h +  h -  h +  h -  h +  h 控制规则:
下级往上汇总:指工时数据按  用户故事->特性->史诗  这样的汇总关系将数据逐级往上汇总。 @@ -31,10 +31,10 @@ 关闭 - 确认 + 确认
- + diff --git a/src/views/xm/core/xmIteration/XmIterationMng.vue b/src/views/xm/core/xmIteration/XmIterationMng.vue index ca589227..35941730 100644 --- a/src/views/xm/core/xmIteration/XmIterationMng.vue +++ b/src/views/xm/core/xmIteration/XmIterationMng.vue @@ -150,8 +150,8 @@ import XmIterationSelect from '@/views/xm/core/components/XmIterationSelect.vue' ]), xmIterationTreeData(){ - return this.translateDataToTree(this.xmIterations); - }, + return this.xmIterations + }, }, props:['xmProduct','selProject','menuId','visible'], watch:{ @@ -407,50 +407,7 @@ import XmIterationSelect from '@/views/xm/core/components/XmIterationSelect.vue' rowClick: function(row, event, column){ this.editForm=row this.$emit('row-click',row, event, column);// @row-click="rowClick" - }, - /**begin 自定义函数请在下面加**/ - - translateDataToTree(data2) { - var data=JSON.parse(JSON.stringify(data2)); - let parents = data.filter(value =>{ - //如果我的上级为空,则我是最上级 - if(value.pid == 'undefined' || value.pid == null || value.pid == ''){ - return true; - - //如果我的上级不在列表中,我作为最上级 - }else if(data.some(i=>value.pid==i.id)){ - return false; - }else { - return true - } - - }) - let children = data.filter(value =>{ - if(data.some(i=>value.pid==i.id)){ - return true; - }else{ - return false; - } - }) - let translator = (parents, children) => { - parents.forEach((parent) => { - children.forEach((current, index) => { - if (current.pid === 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 - }, + }, clearSelectIteration(){ this.editForm=this.editFormInit diff --git a/src/views/xm/core/xmIterationMenu/XmIterationMenuMng.vue b/src/views/xm/core/xmIterationMenu/XmIterationMenuMng.vue index 4a7423f5..328a0473 100644 --- a/src/views/xm/core/xmIterationMenu/XmIterationMenuMng.vue +++ b/src/views/xm/core/xmIterationMenu/XmIterationMenuMng.vue @@ -15,7 +15,7 @@ - + @@ -45,7 +45,7 @@ - + @@ -53,6 +53,7 @@ - - \ No newline at end of file diff --git a/src/views/xm/core/xmProject/XmProjectMng.vue b/src/views/xm/core/xmProject/XmProjectMng.vue index e1940ae7..809985b7 100644 --- a/src/views/xm/core/xmProject/XmProjectMng.vue +++ b/src/views/xm/core/xmProject/XmProjectMng.vue @@ -8,6 +8,7 @@ + @@ -28,8 +29,8 @@ - - + + 查询 取 消 确 定 - - - - + @@ -329,7 +323,7 @@ import xmTaskMng from '../xmTask/XmTaskMng'; import xmProjectInfo from './XmProjectInfo'; import XmProjectTplMng from './XmProjectTplMng'; - import XmProductMng from '@/views/xm/core/components/XmProductSelect'; + import XmProductSelect from '@/views/xm/core/components/XmProductSelect'; if(!Vue.component("xm-project-info")){ @@ -475,7 +469,7 @@ params = this.menuFilter(params); if(this.filters.productId){ - params.productId = this.filters.productId + params.linkProductId = this.filters.productId } if(this.filters.status){ params.status = this.filters.status @@ -866,7 +860,7 @@ 'xm-project-add':XmProjectAdd, 'xm-project-edit':XmProjectEdit, - XmProductMng, + XmProductSelect, xmTaskMng, XmProjectTplMng, //在下面添加其它组件 diff --git a/src/views/xm/core/xmProject/XmProjectSelect.vue b/src/views/xm/core/xmProject/XmProjectSelect.vue deleted file mode 100644 index a6d23ae6..00000000 --- a/src/views/xm/core/xmProject/XmProjectSelect.vue +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/views/xm/core/xmProjectState/XmProjectStateMng.vue b/src/views/xm/core/xmProjectState/XmProjectStateMng.vue index 2a9d0f2e..a008917e 100644 --- a/src/views/xm/core/xmProjectState/XmProjectStateMng.vue +++ b/src/views/xm/core/xmProjectState/XmProjectStateMng.vue @@ -1,12 +1,14 @@ @@ -119,8 +118,8 @@ import { listXmProjectState,loadProjectToXmProjectState, loadBugsToXmProjectState, loadTasksToXmProjectState , loadTasksSettleToXmProjectState} from '@/api/xm/core/xmProjectState'; import XmProjectStateAdd from './XmProjectStateAdd';//新增界面 import XmProjectStateEdit from './XmProjectStateEdit';//修改界面 - import { mapGetters } from 'vuex' - import XmProjectList from '../xmProject/XmProjectList'; + import { mapGetters } from 'vuex' +import XmProjectSelect from '@/views/xm/core/components/XmProjectSelect.vue'; export default { computed: { @@ -376,10 +375,9 @@ }, /**begin 自定义函数请在下面加**/ - onPorjectConfirm:function(project){ + onPorjectConfirm:function(nextCommand,project){ this.filters.selProject={...project} - this.selectProjectVisible=false; - if(this.nextCommand){ + if(nextCommand){ this.nextCommand(); }else{ this.searchXmProjectStates(); @@ -429,7 +427,7 @@ },//end methods components: { 'xm-project-state-add':XmProjectStateAdd, - 'xm-project-state-edit':XmProjectStateEdit, XmProjectList + 'xm-project-state-edit':XmProjectStateEdit,XmProjectSelect, //在下面添加其它组件 }, mounted() { diff --git a/src/views/xm/core/xmQuestion/XmQuestionAdd.vue b/src/views/xm/core/xmQuestion/XmQuestionAdd.vue index b36105be..1736cbc7 100644 --- a/src/views/xm/core/xmQuestion/XmQuestionAdd.vue +++ b/src/views/xm/core/xmQuestion/XmQuestionAdd.vue @@ -21,7 +21,8 @@ - {{this.filters.selProject?this.filters.selProject.name:'未关联项目'}} + {{this.filters.selProject?this.filters.selProject.name:''}} + @@ -131,11 +132,7 @@ - - - - - +
取消 @@ -155,7 +152,7 @@ import XmGroupMng from '../xmGroup/XmGroupSelect'; import xmMenuSelect from '../xmMenu/XmMenuSelect'; - import XmProjectList from '../xmProject/XmProjectList'; + import XmProjectSelect from '@/views/xm/core/components/XmProjectSelect'; import XmTaskList from '../xmTask/XmTaskList'; @@ -398,10 +395,7 @@ sendToAsk(){ this.addForm.handlerUsername=this.addForm.askUsername this.addForm.handlerUserid=this.addForm.askUserid - }, - showProjectList:function(){ - this.selectProjectVisible=true; - }, + }, onPorjectConfirm:function(project){ this.filters.selProject=project this.addForm.projectId=project.id @@ -433,7 +427,7 @@ },//end method components: { //在下面添加其它组件 'xm-question-edit':XmQuestionEdit - 'upload': AttachmentUpload,XmGroupMng,VueEditor,XmTaskList,xmMenuSelect,XmProjectList + 'upload': AttachmentUpload,XmGroupMng,VueEditor,XmTaskList,xmMenuSelect,XmProjectSelect }, mounted() { console.log("question_add"); diff --git a/src/views/xm/core/xmQuestion/XmQuestionMng.vue b/src/views/xm/core/xmQuestion/XmQuestionMng.vue index f4a46b3d..4ac235e4 100644 --- a/src/views/xm/core/xmQuestion/XmQuestionMng.vue +++ b/src/views/xm/core/xmQuestion/XmQuestionMng.vue @@ -1,7 +1,10 @@