Browse Source

工时登记

master
陈裕财 4 years ago
parent
commit
1aa122c2d8
  1. 124
      src/views/xm/core/xmTaskWorkload/XmTaskWorkloadEdit.vue
  2. 272
      src/views/xm/core/xmTaskWorkload/XmTaskWorkloadList.vue
  3. 144
      src/views/xm/core/xmTaskWorkload/XmTaskWorkloadRecord.vue
  4. 69
      src/views/xm/core/xmTaskWorkload/XmTaskWorkloadRecordDialog.vue
  5. 12
      src/views/xm/core/xmWorkItem/XmSubBugList.vue
  6. 25
      src/views/xm/core/xmWorkItem/XmSubTaskList.vue

124
src/views/xm/core/xmTaskWorkload/XmTaskWorkloadEdit.vue

@ -2,60 +2,60 @@
<section class="page-container padding"> <section class="page-container padding">
<el-row class="page-header"> <el-row class="page-header">
</el-row> </el-row>
<el-row class="page-main" :style="{overflowX:'auto',height:maxTableHeight+'px'}" ref="table">
<el-row class="page-main" ref="table">
<!--编辑界面 XmTaskWorkload 工时登记表--> <!--编辑界面 XmTaskWorkload 工时登记表-->
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editFormRef">
<el-form-item label="员工编号" prop="userid">
<el-input v-model="editForm.userid" placeholder="员工编号"></el-input>
</el-form-item>
<el-form-item label="姓名" prop="username">
<el-input v-model="editForm.username" placeholder="姓名"></el-input>
</el-form-item>
<el-form-item label="创建日期" prop="ctime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.ctime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="业务对象主键任务编号" prop="taskId">
<el-input v-model="editForm.taskId" placeholder="业务对象主键任务编号"></el-input>
</el-form-item>
<el-form-item label="创建人编号" prop="cuserid">
<el-input v-model="editForm.cuserid" placeholder="创建人编号"></el-input>
</el-form-item>
<el-form-item label="业务日期yyyy-MM-dd" prop="bizDate">
<el-input v-model="editForm.bizDate" placeholder="业务日期yyyy-MM-dd"></el-input>
</el-form-item>
<el-form-item label="状态0-待确认,1-已确认,2-无效" prop="wstatus">
<el-input v-model="editForm.wstatus" placeholder="状态0-待确认,1-已确认,2-无效"></el-input>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="editForm.remark" placeholder="备注"></el-input>
</el-form-item>
<el-form-item label="任务类型-关联字典taskType" prop="ttype">
<el-input v-model="editForm.ttype" placeholder="任务类型-关联字典taskType"></el-input>
</el-form-item>
<el-form-item label="主键" prop="id">
<el-input-number v-model="editForm.id" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="结算单据编号" prop="sbillId">
<el-input v-model="editForm.sbillId" placeholder="结算单据编号"></el-input>
</el-form-item>
<el-form-item label="结算提交时间" prop="stime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.stime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="结算状态0-无需结算,1-待结算2-已提交3-已通过4-已结算" prop="sstatus">
<el-input v-model="editForm.sstatus" placeholder="结算状态0-无需结算,1-待结算2-已提交3-已通过4-已结算"></el-input>
</el-form-item>
<el-form-item label="工时对应金额" prop="amt">
<el-input v-model="editForm.amt" placeholder="工时对应金额"></el-input>
</el-form-item>
<el-form-item label="结算金额" prop="samt">
<el-input v-model="editForm.samt" placeholder="结算金额"></el-input>
</el-form-item>
<el-form-item label="工时,一个task_id可多次提交,小时" prop="workload">
<el-input v-model="editForm.workload" placeholder="工时,一个task_id可多次提交,小时"></el-input>
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editFormRef">
<el-row>
<el-col :span="8">
<el-form-item label="预估工时" prop="budgetWorkload">
{{xmTask.budgetWorkload}}&nbsp;&nbsp;h
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="已登工时" prop="actWorkload">
{{xmTask.actWorkload}}&nbsp;&nbsp;h
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="工时进度" prop="rate">
{{xmTask.rate}} %
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="工作时长" prop="workload">
<el-input style="width:80%;" v-model="editForm.workload" placeholder="工作时长"></el-input> &nbsp;&nbsp;h
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="剩余工时" prop="rworkload">
<el-input style="width:80%;" v-model="editForm.rworkload" placeholder="剩余工时"></el-input>&nbsp;&nbsp;h
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="业务日期" prop="bizDate">
<el-date-picker style="width:80%;" v-model="editForm.bizDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" placeholder="业务日期"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="任务类型" prop="ttype">
<el-select v-model="editForm.ttype">
<el-option v-for="i in this.dicts.taskType" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="工作说明" prop="remark">
<el-input type="textarea" :autosize="{ minRows: 6, maxRows: 20}" v-model="editForm.remark" placeholder="工作说明,如果报工大于8小时,请填写说明" ></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-row>
</el-row>
<el-row class="page-bottom bottom-fixed"> <el-row class="page-bottom bottom-fixed">
<el-button @click.native="handleCancel">取消</el-button> <el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.edit" type="primary" @click.native="saveSubmit" :disabled="load.edit==true">提交</el-button> <el-button v-loading="load.edit" type="primary" @click.native="saveSubmit" :disabled="load.edit==true">提交</el-button>
@ -79,7 +79,7 @@
...mapGetters([ 'userInfo' ]), ...mapGetters([ 'userInfo' ]),
}, },
props:['xmTaskWorkload','visible','opType'],
props:['xmTask','xmTaskWorkload','visible','opType'],
watch: { watch: {
'xmTaskWorkload':function( xmTaskWorkload ) { 'xmTaskWorkload':function( xmTaskWorkload ) {
@ -108,6 +108,9 @@
userid:'',username:'',ctime:'',taskId:'',cuserid:'',bizDate:'',wstatus:'',remark:'',ttype:'',id:'',sbillId:'',stime:'',sstatus:'',amt:'',samt:'',workload:'' userid:'',username:'',ctime:'',taskId:'',cuserid:'',bizDate:'',wstatus:'',remark:'',ttype:'',id:'',sbillId:'',stime:'',sstatus:'',amt:'',samt:'',workload:''
}, },
maxTableHeight:300, maxTableHeight:300,
dicts:{
taskType:[],
}
}//end return }//end return
},//end data },//end data
methods: { methods: {
@ -127,6 +130,7 @@
if(this.currOpType=='edit'){ if(this.currOpType=='edit'){
func=editXmTaskWorkload func=editXmTaskWorkload
} }
func(params).then((res) => { func(params).then((res) => {
this.load.edit=false this.load.edit=false
var tips=res.data.tips; var tips=res.data.tips;
@ -151,18 +155,22 @@
} }
if(this.opType=='edit'){ if(this.opType=='edit'){
}else{ }else{
if(this.xmTask){
this.editForm.taskId=this.xmTask.id
this.editForm.ttype=this.xmTask.taskType
}
} }
}, },
},//end method },//end method
mounted() { mounted() {
this.$nextTick(() => {
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.table.$el)
this.$nextTick(() => {
initSimpleDicts('all',[ 'taskType' ]).then(res=>{
this.dicts=res.data.data;
})
this.initData()
}); });
} }
} }

272
src/views/xm/core/xmTaskWorkload/XmTaskWorkloadList.vue

@ -0,0 +1,272 @@
<template>
<section>
<el-row>
<el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询"></el-input>
<el-button v-loading="load.list" :disabled="load.list==true" @click="searchXmTaskWorkloads" icon="el-icon-search">查询</el-button>
<span style="float:right;">
<el-button type="primary" @click="showAdd" icon="el-icon-plus"> </el-button>
<el-button type="danger" v-loading="load.del" @click="batchDel" :disabled="this.sels.length===0 || load.del==true" icon="el-icon-delete"></el-button>
</span>
</el-row>
<el-row class="padding-top">
<!--列表 XmTaskWorkload 工时登记表-->
<el-table ref="xmTaskWorkloadTable" :data="xmTaskWorkloads" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column type="selection" width="55" show-overflow-tooltip></el-table-column>
<el-table-column prop="username" label="姓名" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="bizDate" label="业务日期" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="wstatus" label="状态" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="remark" label="备注" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="ttype" label="任务类型" min-width="80" show-overflow-tooltip :formatter="formatterOption"></el-table-column>
<el-table-column prop="workload" label="实际工时" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="rworkload" label="剩余工时" min-width="80" show-overflow-tooltip></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>
<el-row>
<!--新增 XmTaskWorkload 工时登记表界面-->
<el-dialog :title="'任务【'+xmTask.name+'】新增工时'" :visible.sync="addFormVisible" width="60%" top="20px" append-to-body :close-on-click-modal="false">
<xm-task-workload-edit op-type="add" :xm-task="xmTask" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-task-workload-edit>
</el-dialog>
</el-row>
</section>
</template>
<script>
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 XmTaskWorkloadEdit from './XmTaskWorkloadEdit';//
import { mapGetters } from 'vuex'
export default {
name:'xmTaskWorkloadMng',
components: {
XmTaskWorkloadEdit,
},
props:['xmTask','visible'],
computed: {
...mapGetters(['userInfo']),
},
watch:{
visible(val){
if(val==true){
this.initData();
this.searchXmTaskWorkloads()
}
}
},
data() {
return {
filters: {
key: ''
},
xmTaskWorkloads: [],//
pageInfo:{//
total:0,//0>0
pageSize:10,//
count:false,//
pageNum:1,//1
orderFields:[],// ['sex','student_id']
orderDirs:[]// asc,desc ['asc','desc']
},
load:{ list: false, edit: false, del: false, add: false },//...
sels: [],//
dicts:{
taskType:[],
//sex: [{id:'1',name:''},{id:'2',name:''}]
},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
addFormVisible: false,//xmTaskWorkload
addForm: {
userid:'',username:'',ctime:'',taskId:'',cuserid:'',bizDate:'',wstatus:'',remark:'',ttype:'',id:'',sbillId:'',stime:'',sstatus:'',amt:'',samt:'',workload:''
},
editFormVisible: false,//
editForm: {
userid:'',username:'',ctime:'',taskId:'',cuserid:'',bizDate:'',wstatus:'',remark:'',ttype:'',id:'',sbillId:'',stime:'',sstatus:'',amt:'',samt:'',workload:''
},
maxTableHeight:300,
}
},//end data
methods: {
formatterOption: function (row, column, cellValue, index) {
var columnName = column.property;
var key = columnName;
if(columnName==='ttype'){
key="taskType"
}
if (
this.dicts[key] == undefined ||
this.dicts[key] == null ||
this.dicts[key].length == 0
) {
return cellValue;
}
var list = this.dicts[key].filter((i) => i.id == cellValue);
if (list.length > 0) {
return list[0].name;
} else {
return cellValue;
}
},
handleSizeChange(pageSize) {
this.pageInfo.pageSize=pageSize;
this.getXmTaskWorkloads();
},
handleCurrentChange(pageNum) {
this.pageInfo.pageNum = pageNum;
this.getXmTaskWorkloads();
},
// obj.order=ascending/descending, asc/desc ; obj.prop=,
sortChange( obj ){
if(obj.order==null){
this.pageInfo.orderFields=[];
this.pageInfo.orderDirs=[];
}else{
var dir='asc';
if(obj.order=='ascending'){
dir='asc'
}else{
dir='desc';
}
this.pageInfo.orderFields=[util.toLine(obj.prop)];
this.pageInfo.orderDirs=[dir];
}
this.getXmTaskWorkloads();
},
searchXmTaskWorkloads(){
this.pageInfo.count=true;
this.getXmTaskWorkloads();
},
// XmTaskWorkload
getXmTaskWorkloads() {
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.xmTask || !this.xmTask.id){
return;
}
params.taskId=this.xmTask.id
this.load.list = true;
listXmTaskWorkload(params).then((res) => {
var tips=res.data.tips;
if(tips.isOk){
this.pageInfo.total = res.data.total;
this.pageInfo.count=false;
this.xmTaskWorkloads = res.data.data;
}else{
this.$notify({ showClose:true, message: tips.msg, type: 'error' });
}
this.load.list = false;
}).catch( err => this.load.list = false );
},
// XmTaskWorkload
showEdit: function ( row,index ) {
this.editFormVisible = true;
this.editForm = Object.assign({}, row);
},
// XmTaskWorkload
showAdd: function () {
this.addFormVisible = true;
//this.addForm=Object.assign({}, this.editForm);
},
afterAddSubmit(){
this.addFormVisible=false;
this.pageInfo.count=true;
this.getXmTaskWorkloads();
},
afterEditSubmit(){
this.editFormVisible=false;
},
//xmTaskWorkload
selsChange: function (sels) {
this.sels = sels;
},
//xmTaskWorkload
handleDel: function (row,index) {
this.$confirm('确认删除该记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.load.del=true;
let params = { id:row.id };
delXmTaskWorkload(params).then((res) => {
this.load.del=false;
var tips=res.data.tips;
if(tips.isOk){
this.pageInfo.count=true;
this.getXmTaskWorkloads();
}
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err => this.load.del=false );
});
},
//xmTaskWorkload
batchDel: function () {
if(this.sels.length<=0){
return;
}
var params=this.sels.map(i=>{
return { id:i.id}
})
this.$confirm('确认删除选中记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.load.del=true;
batchDelXmTaskWorkload(params).then((res) => {
this.load.del=false;
var tips=res.data.tips;
if( tips.isOk ){
this.pageInfo.count=true;
this.getXmTaskWorkloads();
}
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error'});
}).catch( err => this.load.del=false );
});
},
rowClick: function(row, event, column){
this.editForm=row
this.$emit('row-click',row, event, column);// @row-click="rowClick"
},
initData: function(){
},
},//end methods
mounted() {
this.$nextTick(() => {
initSimpleDicts('all',[ 'taskType' ]).then(res=>{
this.dicts=res.data.data;
})
this.initData()
this.searchXmTaskWorkloads();
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.xmTaskWorkloadTable.$el)
});
}
}
</script>
<style scoped>
</style>

144
src/views/xm/core/xmTaskWorkload/XmTaskWorkloadRecord.vue

@ -0,0 +1,144 @@
<template>
<section>
<el-row class="page-header">
</el-row>
<el-row class="page-main" ref="table">
<!--编辑界面 XmTaskWorkload 工时登记表-->
<el-form :model="editForm" label-width="100px" :rules="editFormRules" ref="editFormRef">
<el-row>
<el-col :span="6">
<el-form-item label="预估工时" prop="budgetWorkload">
<el-input style="width:85%;" v-model="editForm.budgetWorkload" placeholder="预估工时"></el-input> &nbsp;h
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="已登工时" prop="actWorkload">
<el-input style="width:85%;" v-model="editForm.actWorkload" placeholder="已登记工时"></el-input> &nbsp;h
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="剩余工时" prop="rworkload">
<el-input style="width:85%;" v-model="editForm.rworkload" placeholder="剩余工时"></el-input> &nbsp;h
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="工时进度" prop="rate">
<el-input v-model="editForm.rate" placeholder="工时进度"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-row>
<el-row>
<xm-task-workload-list :xm-task="xmTask"></xm-task-workload-list>
</el-row>
</section>
</template>
<script>
import util from '@/common/js/util';//
import config from "@/common/config"; //import
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { addXmTaskWorkload,editXmTaskWorkload } from '@/api/xm/core/xmTaskWorkload';
import { mapGetters } from 'vuex'
import XmTaskWorkloadList from './XmTaskWorkloadList';
export default {
name:'xmTaskWorkloadEdit',
components: {
XmTaskWorkloadList,
},
computed: {
...mapGetters([ 'userInfo' ]),
},
props:['xmTask','visible','opType'],
watch: {
'visible':function(visible) {
if(visible==true){
this.initData()
}
}
},
data() {
return {
currOpType:'add',//add/edit
load:{ list: false, edit: false, del: false, add: false },//...
dicts:{},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
editFormRules: {
id: [
//{ required: true, message: '', trigger: 'blur' }
]
},// xm_task
editForm: {
id:'',name:'',parentTaskid:'',parentTaskname:'',projectId:'',projectName:'',level:'3',sortLevel:'0',executorUserid:'',executorUsername:'',
preTaskid:'',preTaskname:'',startTime:'',endTime:'',milestone:'',description:'',remarks:'',createUserid:'',createUsername:'',createTime:'',taskOut:'0',
rate:0,budgetCost:'',budgetWorkload:'',actCost:'',actWorkload:'',taskState:'0',taskClass:'0',toTaskCenter:'0',actStartTime:'',actEndTime:'',taskType:'4',planType:'w2',settleSchemel:'1',ntype:'0',childrenCnt:0
},
maxTableHeight:300,
}//end return
},//end data
methods: {
// @cancel="editFormVisible=false"
handleCancel:function(){
this.$refs['editFormRef'].resetFields();
this.$emit('cancel');
},
//XmTaskWorkload @submit="afterEditSubmit"
saveSubmit: function () {
this.$refs.editFormRef.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.load.edit=true
let params = Object.assign({}, this.editForm);
var func=addXmTaskWorkload
if(this.currOpType=='edit'){
func=editXmTaskWorkload
}
func(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.editForm=res.data.data
this.initData()
this.currOpType="edit";
this.$emit('submit');// @submit="afterAddSubmit"
}
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
});
}else{
this.$notify({ showClose:true, message: "表单验证不通过,请修改表单数据再提交", type: 'error' });
}
});
},
initData: function(){
this.currOpType=this.opType
if(this.xmTaskWorkload){
this.editForm = Object.assign({},this.xmTask);
}
if(this.opType=='edit'){
}else{
}
},
},//end method
mounted() {
this.$nextTick(() => {
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
});
}
}
</script>
<style scoped>
</style>

69
src/views/xm/core/xmTaskWorkload/XmTaskWorkloadRecordDialog.vue

@ -0,0 +1,69 @@
<template>
<section>
<el-dialog append-to-body width="80%" top="20px" :visible.sync="visible" :title="'任务【'+editForm.name+'】工时登记'"><xm-task-workload-record :visible="visible" :xm-task="editForm"></xm-task-workload-record></el-dialog>
</section>
</template>
<script>
import util from '@/common/js/util';//
import config from "@/common/config"; //import
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { mapGetters } from 'vuex'
import XmTaskWorkloadRecord from './XmTaskWorkloadRecord';
export default {
name:'xmTaskWorkloadRecordDialog',
components: {
XmTaskWorkloadRecord,
},
computed: {
...mapGetters([ 'userInfo' ]),
},
watch: {
},
data() {
return {
visible:false,
editForm: {
id:'',name:'',parentTaskid:'',parentTaskname:'',projectId:'',projectName:'',level:'3',sortLevel:'0',executorUserid:'',executorUsername:'',
preTaskid:'',preTaskname:'',startTime:'',endTime:'',milestone:'',description:'',remarks:'',createUserid:'',createUsername:'',createTime:'',taskOut:'0',
rate:0,budgetCost:'',budgetWorkload:'',actCost:'',actWorkload:'',taskState:'0',taskClass:'0',toTaskCenter:'0',actStartTime:'',actEndTime:'',taskType:'4',planType:'w2',settleSchemel:'1',ntype:'0',childrenCnt:0
},
}//end return
},//end data
methods: {
// @cancel="editFormVisible=false"
handleCancel:function(){
this.visible=false;
this.$emit('cancel');
},
//XmTaskWorkload @submit="afterEditSubmit"
saveSubmit: function () {
},
initData: function(){
},
open(xmTask){
this.editForm={...xmTask}
this.visible=true;
},
close(){
this.visible=false;
this.$emit("close");
}
},//end method
mounted() {
}
}
</script>
<style scoped>
</style>

12
src/views/xm/core/xmWorkItem/XmSubBugList.vue

@ -18,6 +18,7 @@
<el-table-column prop="name" label="名称" min-width="150px"> <el-table-column prop="name" label="名称" min-width="150px">
</el-table-column> </el-table-column>
<el-table-column prop="bugStatus" label="状态" width="100"> <el-table-column prop="bugStatus" label="状态" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="cell-text"> <div class="cell-text">
@ -30,6 +31,17 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="budgetWorkload" label="工时" width="100">
<template slot-scope="scope">
<div class="cell-text">
{{scope.row.budgetWorkload}}&nbsp;/&nbsp;{{scope.row.actWorkload}}
</div>
<span class="cell-bar">
<el-button @click="workloadRecord('actWorkload',scope.row)">登记工时</el-button>
</span>
</template>
</el-table-column>
<el-table-column prop="priority" label="优先级" width="100"> <el-table-column prop="priority" label="优先级" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="cell-text"> <div class="cell-text">

25
src/views/xm/core/xmWorkItem/XmSubTaskList.vue

@ -29,6 +29,17 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="budgetWorkload" label="工时" width="100">
<template slot-scope="scope">
<div class="cell-text">
<span v-if="scope.row.actWorkload>0">{{scope.row.actWorkload}}&nbsp;/&nbsp;{{scope.row.budgetWorkload}}</span>
</div>
<span class="cell-bar">
<el-button @click="workloadRecord(scope.row)">登记工时</el-button>
</span>
</template>
</el-table-column>
<el-table-column <el-table-column
label="优先级" label="优先级"
@ -67,6 +78,7 @@
<xm-group-dialog ref="xmGroupDialog" :isSelectSingleUser="true" :sel-project="linkProjectId?{id:linkProjectId}:null" :xm-product="parentXmMenu?{id:parentXmMenu.productId}:null" @user-confirm="selectCreateUserConfirm"> <xm-group-dialog ref="xmGroupDialog" :isSelectSingleUser="true" :sel-project="linkProjectId?{id:linkProjectId}:null" :xm-product="parentXmMenu?{id:parentXmMenu.productId}:null" @user-confirm="selectCreateUserConfirm">
</xm-group-dialog> </xm-group-dialog>
<xm-task-workload-record-dialog ref="workloadRecordDialog" @submi="afterWorkloadSubmit"></xm-task-workload-record-dialog>
</el-row> </el-row>
</template> </template>
@ -79,6 +91,7 @@ import treeTool from "@/common/js/treeTool"; //全局公共库
import XmGroupDialog from '@/views/xm/core/xmGroup/XmGroupDialog';// import XmGroupDialog from '@/views/xm/core/xmGroup/XmGroupDialog';//
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import XmTaskWorkloadRecordDialog from '../xmTaskWorkload/XmTaskWorkloadRecordDialog.vue';
export default { export default {
computed: { computed: {
@ -143,7 +156,9 @@ export default {
} }
}) })
}, },
workloadRecord(row){
this.$refs.workloadRecordDialog.open(row)
},
initData(){ initData(){
this.xmTasks=[] this.xmTasks=[]
if(!this.parentXmMenu || !this.parentXmMenu.menuId){ if(!this.parentXmMenu || !this.parentXmMenu.menuId){
@ -340,10 +355,12 @@ export default {
} }
}, },
afterWorkloadSubmit(xmTask){
}
}, //end methods }, //end methods
components: {
XmGroupDialog,
components: {
XmTaskWorkloadRecordDialog,
}, },
mounted() { mounted() {
this.initData(); this.initData();

Loading…
Cancel
Save