From f0f35f75d05a4d2eb7cbbcd50370a4d6e55f4b5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Sun, 24 Apr 2022 02:36:29 +0800 Subject: [PATCH] =?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/api/xm/core/xmTaskWorkload.js | 11 +- src/router/routes_xm.js | 1 + ...oadMonthMng.vue => XmTaskWorkloadInfo.vue} | 70 +++++------ .../XmTaskWorkloadSimpleList.vue | 116 ++++++++++++------ 4 files changed, 116 insertions(+), 82 deletions(-) rename src/views/xm/core/xmTaskWorkload/{XmTaskWorkloadMonthMng.vue => XmTaskWorkloadInfo.vue} (89%) diff --git a/src/api/xm/core/xmTaskWorkload.js b/src/api/xm/core/xmTaskWorkload.js index 0270ab1e..0de0a4ef 100644 --- a/src/api/xm/core/xmTaskWorkload.js +++ b/src/api/xm/core/xmTaskWorkload.js @@ -1,5 +1,7 @@ import axios from '@/utils/request' +import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//字典表 + import config from '@/common/config' let base = config.getCoreBasePath(); @@ -42,12 +44,19 @@ export const listProjectWorkloadSetMonth = params => { return axios.get(`${base} export const batchSetSbillIdNull = params => { return axios.post(`${base}/xm/core/xmTaskWorkload/batchSetSbillIdNull`, params); }; +export const listXmTaskWorkloadGroupByTaskIdAndUserid = params => { return axios.get(`${base}/xm/core/xmTaskWorkload/ListGroupByTaskIdAndUserid`, { params: params }); }; + /**-------------------------前端mng|add|edit界面公共函数---------------请写在下面----------------------------------------------- */ //初始化页面上的字典 export const initDicts = (that) => { - var itemCodes=[];//在此添加要加载的字典 如['sex','grade','lvl'] + var itemCodes=['taskState','taskType'];//在此添加要加载的字典 如['sex','grade','lvl'] + + var wstatus=[{id:'0',name:'待确认'},{id:'1',name: '已确认'}] + var sstatus=[{id:'0',name:'无需结算'},{id:'1',name: '待结算'},{id:'2',name:'已提交'},{id:'3',name:'已通过'},{id:'4',name:'已结算'}] + that.dicts.wstatus=wstatus + that.dicts.sstatus=sstatus if(itemCodes.length>0){ initSimpleDicts('all',itemCodes).then(res=>{ Object.assign(that.dicts,res.data.data) diff --git a/src/router/routes_xm.js b/src/router/routes_xm.js index e359f6e4..7d3a7087 100644 --- a/src/router/routes_xm.js +++ b/src/router/routes_xm.js @@ -186,6 +186,7 @@ export default { { path: 'xmTaskWorkload/WorkloadSetDayListMy', component: _import('xm/core/xmTaskWorkload/WorkloadSetDayListMy'), name: 'WorkloadSetDayListMy', meta: { title: '工时日报表(我)'}}, { path: 'xmTaskWorkload/WorkloadSetMonthListMy', component: _import('xm/core/xmTaskWorkload/WorkloadSetMonthListMy'), name: 'WorkloadSetMonthListMy', meta: { title: '工时月报表(我)'}}, + { path: 'xmTaskWorkload/XmTaskWorkloadInfo', component: _import('xm/core/xmTaskWorkload/XmTaskWorkloadInfo'), name: 'XmTaskWorkloadInfo', meta: { title: '工时管理'}}, { path: 'xmTaskWorkload/ToComfirmWorkloadAll', component: _import('xm/core/xmTaskWorkload/ToComfirmWorkloadAll'), name: 'ToComfirmWorkloadAll', meta: { title: '待确认工时'}}, { path: 'xmTaskWorkload/HadComfirmWorkloadAll', component: _import('xm/core/xmTaskWorkload/HadComfirmWorkloadAll'), name: 'HadComfirmWorkloadAll', meta: { title: '已确认工时'}}, { path: 'xmTaskWorkload/WaitWorkloadToSbillAll', component: _import('xm/core/xmTaskWorkload/WaitWorkloadToSbillAll'), name: 'WaitWorkloadToSbillAll', meta: { title: '待结算工时'}}, diff --git a/src/views/xm/core/xmTaskWorkload/XmTaskWorkloadMonthMng.vue b/src/views/xm/core/xmTaskWorkload/XmTaskWorkloadInfo.vue similarity index 89% rename from src/views/xm/core/xmTaskWorkload/XmTaskWorkloadMonthMng.vue rename to src/views/xm/core/xmTaskWorkload/XmTaskWorkloadInfo.vue index 7440438f..3ddf1d4f 100644 --- a/src/views/xm/core/xmTaskWorkload/XmTaskWorkloadMonthMng.vue +++ b/src/views/xm/core/xmTaskWorkload/XmTaskWorkloadInfo.vue @@ -2,16 +2,17 @@
- + + - + - - + + @@ -58,7 +59,10 @@ {{scope.row.username}} - {{scope.row.userid}}-{{scope.row.username}} + + + 所有工时记录 + @@ -69,9 +73,9 @@ {{scope.row.taskName}} - - - 工时记录 + + + 所有工时记录 @@ -93,33 +97,25 @@ - + + + + - + - + - - - + @@ -217,7 +203,7 @@ import util from '@/common/js/util';//全局公共库 import config from '@/common/config';//全局公共库 import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//字典表 - import { listXmTaskWorkload, delXmTaskWorkload, batchDelXmTaskWorkload,batchSetSbillIdNull } from '@/api/xm/core/xmTaskWorkload'; + import { listXmTaskWorkloadGroupByTaskIdAndUserid, delXmTaskWorkload, batchDelXmTaskWorkload,batchSetSbillIdNull,initDicts } from '@/api/xm/core/xmTaskWorkload'; import XmTaskWorkloadEdit from './XmTaskWorkloadEdit';//新增修改界面 import { mapGetters } from 'vuex' import XmProjectSelect from "../components/XmProjectSelect"; @@ -394,7 +380,7 @@ } this.load.list = true; - listXmTaskWorkload(params).then((res) => { + listXmTaskWorkloadGroupByTaskIdAndUserid(params).then((res) => { var tips=res.data.tips; if(tips.isOk){ this.pageInfo.total = res.data.total; @@ -567,6 +553,7 @@ mounted() { this.$nextTick(() => { //initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data); + initDicts(this); this.initData() this.searchXmTaskWorkloads(); this.maxTableHeight = util.calcTableMaxHeight(this.$refs.xmTaskWorkloadTable.$el) @@ -574,6 +561,7 @@ }); }, activated(){ + this.initData(); this.searchXmTaskWorkloads(); } diff --git a/src/views/xm/core/xmTaskWorkload/XmTaskWorkloadSimpleList.vue b/src/views/xm/core/xmTaskWorkload/XmTaskWorkloadSimpleList.vue index 2c5939a0..6705b6f1 100644 --- a/src/views/xm/core/xmTaskWorkload/XmTaskWorkloadSimpleList.vue +++ b/src/views/xm/core/xmTaskWorkload/XmTaskWorkloadSimpleList.vue @@ -2,25 +2,38 @@
- - - 项目  {{xmTask.projectName}}   任务  {{xmTask.id}} {{xmTask.name}} - - - 预估工时  {{xmTask.budgetWorkload}}  h   已登记工时  {{xmTask.actWorkload}} h   工时进度  {{xmTask.budgetWorkload>0?Math.round(xmTask.actWorkload/xmTask.budgetWorkload*100):0}}%  - - + + {{xmTask.projectName}} + {{xmTask.id}} {{xmTask.name}} + {{xmTask.budgetWorkload}}  h + + {{xmTask.actWorkload}} h   工时进度  {{xmTask.budgetWorkload>0?Math.round(xmTask.actWorkload/xmTask.budgetWorkload*100):0}}%  + + + - - - - + + + + - - + + + + + @@ -39,7 +52,7 @@ import util from '@/common/js/util';//全局公共库 import config from '@/common/config';//全局公共库 import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//字典表 - import { listXmTaskWorkload, delXmTaskWorkload, batchDelXmTaskWorkload } from '@/api/xm/core/xmTaskWorkload'; + import { listXmTaskWorkload, delXmTaskWorkload, batchDelXmTaskWorkload,editXmTaskWorkloadSomeFields,initDicts } from '@/api/xm/core/xmTaskWorkload'; import XmTaskWorkloadEdit from './XmTaskWorkloadEdit';//新增修改界面 import { mapGetters } from 'vuex' @@ -48,7 +61,7 @@ components: { XmTaskWorkloadEdit, }, - props:['xmTask','visible'], + props:['xmTask','visible','userid','wstatus','sstatus'], computed: { ...mapGetters(['userInfo']), @@ -83,6 +96,9 @@ sels: [],//列表选中数据 dicts:{ taskType:[], + taskState:[], + wstatus:[], + sstatus:[], //sex: [{id:'1',name:'男'},{id:'2',name:'女'}] },//下拉选择框的所有静态数据 params={categoryId:'all',itemCodes:['sex']} 返回结果 {sex: [{id:'1',name:'男'},{id:'2',name:'女'}]} addFormVisible: false,//新增xmTaskWorkload界面是否显示 @@ -98,27 +114,38 @@ } },//end data methods: { - - formatterOption: function (row, column, cellValue, index) { - var columnName = column.property; - var key = columnName; - if(columnName==='ttype'){ - key="taskType" + ...util, + editXmTaskWorkloadSomeFields(row,fieldName,$event){ + let params={ + ids:[row.id], + }; + if(this.sels.length>0){ + if(this.sels.some(k=>k.projectId!=row.projectId)){ + this.$notify({position:'bottom-left',showClose:true,message:'存在不同项目的工时单,请重新选择',type:'warning'}) + return; } - if ( - this.dicts[key] == undefined || - this.dicts[key] == null || - this.dicts[key].length == 0 - ) { - return cellValue; + params.ids=this.sels.map(i=>i.id); + }else{ + params.ids = [row.id]; + params[fieldName]=$event } - var list = this.dicts[key].filter((i) => i.id == cellValue); - if (list.length > 0) { - return list[0].name; - } else { - return cellValue; + var func = editXmTaskWorkloadSomeFields + if(fieldName==='sbillId'){ + func = editWorkloadToSbill + params.sbillId=$event.id + }else{ + params[fieldName]=$event } - }, + func(params).then(res=>{ + let tips = res.data.tips; + this.getXmTaskWorkloads(); + if(tips.isOk){ + this.$emit("edit-some-fields",params) + }else{ + this.$notify({position:'bottom-left',showClose:true,message:tips.msg,type:tips.isOk?'success':'error'}) + } + }) + }, handleSizeChange(pageSize) { this.pageInfo.pageSize=pageSize; this.getXmTaskWorkloads(); @@ -172,7 +199,16 @@ } params.taskId=this.xmTask.id + if(this.userid){ + params.userid=this.userid + } + if(this.wstatus){ + params.wstatus=this.wstatus + } + if(this.sstatus){ + params.sstatus=this.sstatus + } this.load.list = true; listXmTaskWorkload(params).then((res) => { var tips=res.data.tips; @@ -264,11 +300,8 @@ },//end methods mounted() { - this.$nextTick(() => { - - initSimpleDicts('all',[ 'taskType' ]).then(res=>{ - this.dicts=res.data.data; - }) + this.$nextTick(() => { + initDicts(this); if(this.visible==true){ this.initData() this.searchXmTaskWorkloads(); @@ -282,4 +315,7 @@