weaver_trunk_cli/pc4mobx/hrm/stores/checking.js

326 lines
7.6 KiB
JavaScript

import {
observable,
action
} from 'mobx';
import {
WeaTools
} from 'ecCom';
import moment from 'moment';
import * as API from '../apis/checking';
import * as Util from '../util/index';
import isEmpty from 'lodash/isEmpty';
import {
WeaTableNew
} from 'comsMobx'
const {
TableStore
} = WeaTableNew;
import {
onNewRequest
} from '../util/pulic-func';
import {
WeaLocaleProvider
} from 'ecCom';
const getLabel = WeaLocaleProvider.getLabel;
export class HrmOldChecking {
tabDatas = [{
title: '考勤统计',
key: "1"
}, {
title: '考勤日历',
key: "2"
}];
leftTitle = '人员组织';
dateTabDatas = [{
title: '年',
key: "1"
}, {
title: '月',
key: "2"
}];
constructor(props) {
this.statusList = [{
name: '全部',
type: 'ALL',
}, {
name: '正常',
type: 'NORMAL',
}, {
name: '迟到',
type: 'BELATE',
}, {
name: '早退',
type: 'LEAVEEARLY',
}, {
name: '旷工',
type: 'ABSENT',
}, {
name: '漏签',
type: 'NOSIGN',
}, {
name: '请假',
type: 'LEAVE',
}, {
name: '出差',
type: 'EVECTION',
}, {
name: '公出',
type: 'OUTDAYS',
}, {
name: '加班',
type: 'OVERTIME',
}, {
name: '异常',
type: 'OTHER',
}, ];
this.statusList.reverse();
// this.statusList.forEach((item)=> {
// const ic = Util.getIconColor(item.type);
// item.icon = ic.icon;
// item.color = ic.color;
// item.name = ic.name;
// if(ic.title){
// item.title = ic.title;
// }
// });
}
stsType = '';
@observable hrmId = undefined;
@observable newWorklist = [];
@observable visible = false;
@observable newVisible = false;
@observable table = new TableStore();
@observable yearData = {};
@observable calendarData = {};
@observable hrmName = WeaTools.ls.getJSONObj('theme-account') && WeaTools.ls.getJSONObj('theme-account').username || undefined;
@observable statusActiveType = 'ALL';
@observable calendarCheckedDay = undefined;
@observable loading = false;
@observable tabkey = '1';
@observable dateTabkey = '2';
@observable userRoot = undefined;
@observable pDate = new moment().format('YYYY-MM');
@observable pDate1 = new moment();
@observable hasRight = true;
@observable chartOptions = {
tooltip: {
trigger: 'item',
formatter: "{a} <br/>{b}: {c} ({d}%)",
position: 'right',
},
series: [{
type: 'pie',
name: getLabel('16732', "出勤统计"),
radius: ['60%', '80%'],
avoidLabelOverlap: false,
label: {
normal: {
show: true,
position: 'center',
formatter: [
`{a|${this.count}}`,
`{b|${this.countTxt}}`
].join('\n'),
rich: {
a: {
color: '#484A4D',
fontSize: 24,
lineHeight: 24
},
b: {
color: '#666',
fontSize: 11,
},
},
}
},
color: ['#FC4B6C', '#1E88E5'],
data: []
}]
};
@observable groupitem2 = [];
@observable groupitem3 = [];
@observable groupitem4 = [];
@action getStatusList = () => {
let arr = [];
this.statusList.forEach((item) => {
const ic = Util.getIconColor(item.type);
arr.push({ ...ic,
type: item.type
});
// item.icon = ic.icon;
// item.color = ic.color;
// item.name = ic.name;
// if(ic.title){
// item.title = ic.title;
// }
});
return arr;
}
@action
handlerNewWorkflow = (item) => {
onNewRequest(item);
this.newVisible = false;
}
@action
updateVisible = (v) => {
this.visible = v;
}
@action
updateNewVisible = (v) => {
this.newVisible = v;
}
@action
updateStsType = (v) => {
this.stsType = v;
}
@action
handlerStatusClick = (type) => {
this.statusActiveType = type;
}
@action
updateCalendarCheckedDay = (v) => {
this.calendarCheckedDay = v;
}
@action
changeTabHandler = (key) => {
this.tabkey = key;
this.calendarCheckedDay = undefined;
this.statusActiveType = 'ALL';
}
@action
changeDateTabHandler = (key) => {
if (this.pDate) {
if (key == '1') {
this.pDate = new moment().format('YYYY');
} else {
this.pDate = new moment().format('YYYY-MM');
}
}
this.pDate1 = new moment();
this.dateTabkey = key;
this.calendarCheckedDay = undefined;
this.statusActiveType = 'ALL';
}
@action
updateDateTabkey = (key) => {
this.dateTabkey = key;
}
@action
changeDateHandler = (v) => {
this.pDate = v;
if (v.length == 4)
this.pDate1 = new moment().year(v);
this.statusActiveType = 'ALL';
this.calendarCheckedDay = undefined;
}
@action
init = () => {
this.tabkey = '1';
this.dateTabkey = '2';
this.pDate = new moment().format('YYYY-MM');
this.hrmId = undefined;
this.hrmName = WeaTools.ls.getJSONObj('theme-account') && WeaTools.ls.getJSONObj('theme-account').username || undefined;
this.userRoot = undefined;
}
@action
updateUserRoot = (data) => {
this.userRoot = data;
}
@action
updateHrmId = (v) => {
this.hrmId = v;
}
@action
updateHrmName = (v) => {
this.hrmName = v || WeaTools.ls.getJSONObj('theme-account') && WeaTools.ls.getJSONObj('theme-account').username || undefined;
}
@action
getTableData = () => {
let params = {};
if (this.hrmId) params.resourceId = this.hrmId;
if (this.pDate) params.typevalue = this.pDate;
params.type = this.dateTabkey;
params.kqtype = this.stsType;
API.getTableData(params).then((datas) => {
this.table.getDatas(datas.sessionkey, 1);
})
}
@action
getData = (cb) => {
let params = {};
if (this.hrmId) params.resourceId = this.hrmId;
if (this.pDate) params.typevalue = this.pDate;
params.loaddata = "1";
params.type = this.dateTabkey;
this.loading = true;
if (this.tabkey == '1') {
API.getKQReport(params).then((datas) => {
if (datas.status == '1') {
this.hasRight = true;
if (datas.groupitem1) {
this.chartOptions.series[0].name = getLabel('16732', "出勤统计");
this.chartOptions.series[0].label.normal.formatter = [
`{a|${parseFloat(datas.groupitem1.value)}}`,
`{b|${datas.groupitem1.name}}`
].join('\n')
datas.groupitem1.items.forEach((i) => {
i.value = parseFloat(i.value);
})
this.chartOptions.series[0].data = datas.groupitem1.items;
}
this.groupitem2 = datas.groupitem2.items;
this.groupitem2.forEach((item) => {
const ic = Util.getIcon(item.type);
item.icon = ic.icon;
item.color = ic.color;
})
this.groupitem3 = datas.groupitem3.items;
this.groupitem4 = datas.groupitem4.items;
cb && cb();
} else {
this.hasRight = false;
}
this.loading = false;
})
} else {
API.getKQCarendarReport(params).then((datas) => {
if (datas.status == '1') {
if (this.dateTabkey == '1') {
this.yearData = datas.result;
} else {
this.calendarData = datas.result;
}
this.hasRight = true;
} else {
this.hasRight = false;
}
this.loading = false;
})
}
}
@action
getHrmNewWorkflwList = (params = {}) => {
API.getHrmNewWorkflwList(params).then((datas) => {
this.newWorklist = datas.result;
})
}
}