Browse Source

优化

master
陈裕财 4 years ago
parent
commit
3acf4808b3
  1. 6
      src/router/routes_xm.js
  2. 275
      src/views/xm/core/xmTaskWorkload/WorkloadSetDayList.vue
  3. 47
      src/views/xm/core/xmTaskWorkload/WorkloadSetDayListMy.vue
  4. 277
      src/views/xm/core/xmTaskWorkload/WorkloadSetMonthList.vue
  5. 47
      src/views/xm/core/xmTaskWorkload/WorkloadSetMonthListMy.vue

6
src/router/routes_xm.js

@ -185,9 +185,15 @@ export default {
{ path: 'xmTaskWorkload/FinWorkloadToSbill', component: _import('xm/core/xmTaskWorkload/FinWorkloadToSbill'), name: 'FinWorkloadToSbill', meta: { title: '已结算工时(我)'}},
{ path: 'xmTaskWorkload/ToComfirmWorkload', component: _import('xm/core/xmTaskWorkload/ToComfirmWorkload'), name: 'ToComfirmWorkload', meta: { title: '待确认工时(我)'}},
{ 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/WaitWorkloadToSbillAll', component: _import('xm/core/xmTaskWorkload/WaitWorkloadToSbillAll'), name: 'WaitWorkloadToSbillAll', meta: { title: '待结算工时'}},
{ path: 'xmTaskWorkload/FinWorkloadToSbillAll', component: _import('xm/core/xmTaskWorkload/FinWorkloadToSbillAll'), name: 'FinWorkloadToSbillAll', meta: { title: '已结算工时'}},
{ path: 'xmTaskWorkload/ToComfirmWorkloadAll', component: _import('xm/core/xmTaskWorkload/ToComfirmWorkloadAll'), name: 'ToComfirmWorkloadAll', meta: { title: '待确认工时'}},
{ path: 'xmTaskWorkload/WorkloadSetDayList', component: _import('xm/core/xmTaskWorkload/WorkloadSetDayList'), name: 'WorkloadSetDayList', meta: { title: '工时日报表'}},
{ path: 'xmTaskWorkload/WorkloadSetMonthList', component: _import('xm/core/xmTaskWorkload/WorkloadSetMonthList'), name: 'WorkloadSetMonthList', meta: { title: '工时月报表'}},
]
}
]

275
src/views/xm/core/xmTaskWorkload/WorkloadSetDayList.vue

@ -0,0 +1,275 @@
<template>
<section class="padding">
<el-row :gutter="5">
<el-col :span="18">
<div>
<div class="main" id="projectWorkloadSetDayList" style="width:100%;height:600px;margin:0 auto;"></div>
</div>
</el-col>
<el-col :span="6" class="border padding">
<el-form :model="filters">
<el-form-item label="归属项目" v-if="!xmProject">
<xm-project-select v-if="!xmProject" ref="xmProjectSelect" style="display:inline;" :auto-select="false" :link-project-id="xmProject?xmProject.id:null" @row-click="onProjectSelected" @clear="onProjectClear"></xm-project-select>
</el-form-item>
<el-form-item label="人员编号" v-if="queryScope!=='my'">
<el-input v-model="filters.userid"></el-input>
</el-form-item>
<el-form-item label="任务编号编号">
<el-input v-model="filters.taskId"></el-input>
</el-form-item>
<el-form-item label="日期区间">
<br>
<date-range v-model="filters" value-format="yyyy-MM-dd" start-key="startBizDate" end-key="endBizDate"></date-range>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="listProjectWorkloadSetDay">查询</el-button>
</el-form-item>
</el-form>
</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 { listProjectWorkloadSetDay } from '@/api/xm/core/xmTaskWorkload';
export default {
components: {
XmProjectSelect,
},
props:['xmProduct','xmProject','queryScope'],
computed: {
...mapGetters([
'userInfo','roles'
]),
dataSetCpd(){
return [
['日期',...this.xmProjectWorkloadSetDays.map(i=>i.bizDate)],
['登记工时',...this.xmProjectWorkloadSetDays.map(i=>i.workload)],
['待确认',...this.xmProjectWorkloadSetDays.map(i=>i.toConfirmWorkload)],
['已确认',...this.xmProjectWorkloadSetDays.map(i=>i.hadConfirmWorkload)],
['待结算',...this.xmProjectWorkloadSetDays.map(i=>i.toSetWorkload)],
['已提交审核',...this.xmProjectWorkloadSetDays.map(i=>i.hadCommitSworkload)],
['已审核',...this.xmProjectWorkloadSetDays.map(i=>i.hadAgreeSworkload)],
['已结算',...this.xmProjectWorkloadSetDays.map(i=>i.hadSetSworkload)]
]
}
},
watch: {
dataSetCpd(){
this.$nextTick(()=>{
this.drawCharts();
})
}
},
data() {
return {
filters:{
category:'',
product:null,
iteration:null,
project:null,
startBizDate:'',
endBizDate:'',
userid:'',
taskId:''
},
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,
xmProjectWorkloadSetDays:[],
}//end return
},//end data
methods: {
listProjectWorkloadSetDay(){
var params={}
if(this.filters.project){
params.projectId=this.filters.project.id
}
if(this.filters.startBizDate && this.filters.endBizDate){
params.startBizDate=this.filters.startBizDate;
params.endBizDate=this.filters.endBizDate;
}
if(this.filters.userid){
params.userid=this.filters.userid
}
if(this.filters.taskId){
params.taskId=this.filters.taskId
}
listProjectWorkloadSetDay(params).then(res=>{
this.xmProjectWorkloadSetDays=res.data.tips.isOk?res.data.data:this.xmProjectWorkloadSetDays;
})
},
initData(){
this.filters.product=this.xmProduct
this.filters.project=this.xmProject
this.filters.iteration=this.xmIteration
this.xmProjectWorkloadSetDays=[]
if(this.queryScope=='my'){
this.filters.userid=this.userInfo.userid
}
this.$nextTick(()=>{
if(this.$refs['xmProjectSelect'])this.$refs['xmProjectSelect'].clearSelect();
this.listProjectWorkloadSetDay();
})
},
drawCharts() {
this.myChart = this.$echarts.init(document.getElementById("projectWorkloadSetDayList"));
var that=this;
this.myChart.on('updateAxisPointer', function (event) {
const xAxisInfo = event.axesInfo[0];
if (xAxisInfo) {
const dimension = xAxisInfo.value + 1;
that.myChart.setOption({
series: {
id: 'pie',
label: {
formatter: '{b}: {@[' + dimension + ']} ({d}%)'
},
encode: {
value: dimension,
tooltip: dimension
}
}
});
}
});
this.myChart.setOption({
title: {
text: '工时日报表',
},
tooltip: {
trigger: 'axis',
showContent: false
},
legend: {
},
dataset: {
source: this.dataSetCpd
},
xAxis: {
type: 'category',
},
yAxis: { gridIndex: 0 },
grid: { top: '55%' },
series: [
{ name:'登记工时',
type: 'line',
seriesLayoutBy: 'row',
smooth:true,
emphasis: { focus: 'series' },
},
{ name:'待确认',
type: 'line',
seriesLayoutBy: 'row',
smooth:true,
emphasis: { focus: 'series' },
},
{
name:'已确认',
type: 'line',
seriesLayoutBy: 'row',
smooth:true,
emphasis: { focus: 'series' },
},
{
name:'无需结算',
type: 'line',
seriesLayoutBy: 'row',
smooth:true,
emphasis: { focus: 'series' },
},
{ name:'待结算',
type: 'line',
seriesLayoutBy: 'row',
smooth:true,
emphasis: { focus: 'series' },
},
{ name:'已提交审核',
type: 'line',
seriesLayoutBy: 'row',
smooth:true,
emphasis: { focus: 'series' },
},
{ name:'已审核',
type: 'line',
seriesLayoutBy: 'row',
smooth:true,
emphasis: { focus: 'series' },
},
{ name:'已结算',
type: 'line',
seriesLayoutBy: 'row',
smooth:true,
emphasis: { focus: 'series' },
},
{
type: 'pie',
id: 'pie',
radius: '30%',
center: ['50%', '25%'],
emphasis: {
focus: 'self'
},
label: {
formatter: '{b}: {@日期} ({d}%)'
},
encode: {
itemName: '日期',
value: '日期',
tooltip: '日期'
}
}
]
});
},
onProjectSelected(project){
this.filters.project=project
this.xmProjectWorkloadSetDays=[];
this.listProjectWorkloadSetDay();
},
onProjectClear(){
this.filters.project=null
this.xmProjectWorkloadSetDays=[];
},
},//end method
mounted() {
/**
initSimpleDicts('all',['planType','xmTaskSettleSchemel','taskType','priority','taskState'] ).then(res=>{
this.dicts=res.data.data;
})
*/
//this.charts();
//this.drawCharts();
this.initData();
}//end mounted
}
</script>
<style scoped>
.image {
width: 100%;
display: block;
}
</style>

47
src/views/xm/core/xmTaskWorkload/WorkloadSetDayListMy.vue

@ -0,0 +1,47 @@
<template>
<section>
<workload-set-day-list queryScope="my"></workload-set-day-list>
</section>
</template>
<script>
import {mapGetters} from "vuex";
import WorkloadSetDayList from "./WorkloadSetDayList";
export default {
computed: {
...mapGetters([
'userInfo','roles'
]),
},
watch: {
},
data() {
return {
visible:true,
/**end 自定义属性请在上面加 请加备注**/
}
},//end data
methods: {
/**end 自定义函数请在上面加**/
},//end methods
components: {
WorkloadSetDayList,
},
mounted() {
this.$nextTick(() => {
});
}
}
</script>
<style scoped>
</style>

277
src/views/xm/core/xmTaskWorkload/WorkloadSetMonthList.vue

@ -0,0 +1,277 @@
<template>
<section class="padding">
<el-row :gutter="5">
<el-col :span="18">
<div>
<div class="main" id="projectWorkloadSetMonthList" style="width:100%;height:600px;margin:0 auto;"></div>
</div>
</el-col>
<el-col :span="6" class="border padding">
<el-form :model="filters">
<el-form-item label="归属项目" v-if="!xmProject">
<xm-project-select v-if="!xmProject" ref="xmProjectSelect" style="display:inline;" :auto-select="false" :link-project-id="xmProject?xmProject.id:null" @row-click="onProjectSelected" @clear="onProjectClear"></xm-project-select>
</el-form-item>
<el-form-item label="人员编号" v-if="queryScope!=='my'">
<el-input v-model="filters.userid"></el-input>
</el-form-item>
<el-form-item label="任务编号编号">
<el-input v-model="filters.taskId"></el-input>
</el-form-item>
<el-form-item label="日期区间">
<br>
<date-range v-model="filters" value-format="yyyy-MM-dd" start-key="startBizDate" end-key="endBizDate"></date-range>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="listProjectWorkloadSetMonth">查询</el-button>
</el-form-item>
</el-form>
</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 { listProjectWorkloadSetMonth } from '@/api/xm/core/xmTaskWorkload';
export default {
components: {
XmProjectSelect,
},
props:['xmProduct','xmProject','queryScope'],
computed: {
...mapGetters([
'userInfo','roles'
]),
dataSetCpd(){
return [
['日期',...this.xmProjectWorkloadSetMonths.map(i=>i.bizMonth)],
['登记工时',...this.xmProjectWorkloadSetMonths.map(i=>i.workload)],
['待确认',...this.xmProjectWorkloadSetMonths.map(i=>i.toConfirmWorkload)],
['已确认',...this.xmProjectWorkloadSetMonths.map(i=>i.hadConfirmWorkload)],
['待结算',...this.xmProjectWorkloadSetMonths.map(i=>i.toSetWorkload)],
['已提交审核',...this.xmProjectWorkloadSetMonths.map(i=>i.hadCommitSworkload)],
['已审核',...this.xmProjectWorkloadSetMonths.map(i=>i.hadAgreeSworkload)],
['已结算',...this.xmProjectWorkloadSetMonths.map(i=>i.hadSetSworkload)]
]
}
},
watch: {
dataSetCpd(){
this.$nextTick(()=>{
this.drawCharts();
})
}
},
data() {
return {
filters:{
category:'',
product:null,
iteration:null,
project:null,
startBizDate:'',
endBizDate:'',
userid:'',
taskId:''
},
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,
xmProjectWorkloadSetMonths:[],
}//end return
},//end data
methods: {
listProjectWorkloadSetMonth(){
var params={}
if(this.filters.project){
params.projectId=this.filters.project.id
}
if(this.filters.startBizDate && this.filters.endBizDate){
params.startBizDate=this.filters.startBizDate;
params.endBizDate=this.filters.endBizDate;
}
if(this.filters.userid){
params.userid=this.filters.userid
}
if(this.filters.taskId){
params.taskId=this.filters.taskId
}
listProjectWorkloadSetMonth(params).then(res=>{
this.xmProjectWorkloadSetMonths=res.data.tips.isOk?res.data.data:this.xmProjectWorkloadSetMonths;
})
},
initData(){
this.visible=true;
this.filters.product=this.xmProduct
this.filters.project=this.xmProject
this.filters.iteration=this.xmIteration
this.xmProjectWorkloadSetMonths=[]
if(this.queryScope=='my'){
this.filters.userid=this.userInfo.userid
}
this.$nextTick(()=>{
if(this.$refs['xmProjectSelect'])this.$refs['xmProjectSelect'].clearSelect();
this.listProjectWorkloadSetMonth();
})
},
drawCharts() {
this.myChart = this.$echarts.init(document.getElementById("projectWorkloadSetMonthList"));
var that=this;
this.myChart.on('updateAxisPointer', function (event) {
const xAxisInfo = event.axesInfo[0];
if (xAxisInfo) {
const dimension = xAxisInfo.value + 1;
that.myChart.setOption({
series: {
id: 'pie',
label: {
formatter: '{b}: {@[' + dimension + ']} ({d}%)'
},
encode: {
value: dimension,
tooltip: dimension
}
}
});
}
});
this.myChart.setOption({
title: {
text: '工时月报表',
},
tooltip: {
trigger: 'axis',
showContent: false
},
legend: {
},
dataset: {
source: this.dataSetCpd
},
xAxis: {
type: 'category',
},
yAxis: { gridIndex: 0 },
grid: { top: '55%' },
series: [
{ name:'登记工时',
type: 'line',
seriesLayoutBy: 'row',
smooth:true,
emphasis: { focus: 'series' },
},
{ name:'待确认',
type: 'line',
seriesLayoutBy: 'row',
smooth:true,
emphasis: { focus: 'series' },
},
{
name:'已确认',
type: 'line',
seriesLayoutBy: 'row',
smooth:true,
emphasis: { focus: 'series' },
},
{
name:'无需结算',
type: 'line',
seriesLayoutBy: 'row',
smooth:true,
emphasis: { focus: 'series' },
},
{ name:'待结算',
type: 'line',
seriesLayoutBy: 'row',
smooth:true,
emphasis: { focus: 'series' },
},
{ name:'已提交审核',
type: 'line',
seriesLayoutBy: 'row',
smooth:true,
emphasis: { focus: 'series' },
},
{ name:'已审核',
type: 'line',
seriesLayoutBy: 'row',
smooth:true,
emphasis: { focus: 'series' },
},
{ name:'已结算',
type: 'line',
seriesLayoutBy: 'row',
smooth:true,
emphasis: { focus: 'series' },
},
{
type: 'pie',
id: 'pie',
radius: '30%',
center: ['50%', '25%'],
emphasis: {
focus: 'self'
},
label: {
formatter: '{b}: {@日期} ({d}%)'
},
encode: {
itemName: '日期',
value: '日期',
tooltip: '日期'
}
}
]
});
},
onProjectSelected(project){
this.filters.project=project
this.xmProjectWorkloadSetMonths=[];
this.listProjectWorkloadSetMonth();
},
onProjectClear(){
this.filters.project=null
this.xmProjectWorkloadSetMonths=[];
},
},//end method
mounted() {
/**
initSimpleDicts('all',['planType','xmTaskSettleSchemel','taskType','priority','taskState'] ).then(res=>{
this.dicts=res.data.data;
})
*/
//this.charts();
//this.drawCharts();
this.initData();
}//end mounted
}
</script>
<style scoped>
.image {
width: 100%;
display: block;
}
</style>

47
src/views/xm/core/xmTaskWorkload/WorkloadSetMonthListMy.vue

@ -0,0 +1,47 @@
<template>
<section>
<workload-set-month-list queryScope="my"></workload-set-month-list>
</section>
</template>
<script>
import {mapGetters} from "vuex";
import WorkloadSetMonthList from "./WorkloadSetMonthList";
export default {
computed: {
...mapGetters([
'userInfo','roles'
]),
},
watch: {
},
data() {
return {
visible:true,
/**end 自定义属性请在上面加 请加备注**/
}
},//end data
methods: {
/**end 自定义函数请在上面加**/
},//end methods
components: {
WorkloadSetMonthList,
},
mounted() {
this.$nextTick(() => {
});
}
}
</script>
<style scoped>
</style>
Loading…
Cancel
Save