369 lines
10 KiB
JavaScript
369 lines
10 KiB
JavaScript
import React, {
|
||
Component,
|
||
} from 'react';
|
||
import {
|
||
observable,
|
||
action,
|
||
computed,
|
||
toJS,
|
||
} from 'mobx';
|
||
import { Button } from 'antd';
|
||
import TimeView from '../components/newOutside/TimeView';
|
||
import MapView from '../components/newOutside/MapView';
|
||
import Detailed from '../components/newOutside/Detailed';
|
||
import Table from '../components/newOutside/Table';
|
||
|
||
import * as API from '../apis/outside';
|
||
import moment from 'moment';
|
||
import {
|
||
fetch,
|
||
getTopButtons,
|
||
getDropMenuDatas,
|
||
getMenusCreationConfig,
|
||
componentReset,
|
||
exportExcel,
|
||
} from '../../hrmAttendance/util/save-time-util.js';
|
||
import {
|
||
WeaTools,
|
||
WeaLocaleProvider,
|
||
} from 'ecCom';
|
||
import {
|
||
WeaTableNew,
|
||
} from 'comsMobx';
|
||
import {
|
||
i18n,
|
||
} from '../public/i18n';
|
||
|
||
const {
|
||
TableStore,
|
||
} = WeaTableNew;
|
||
const getLabel = WeaLocaleProvider.getLabel;
|
||
|
||
export class newHrmOutSide {
|
||
signTitle = () => getLabel('516948', '显示移动端考勤记录');
|
||
@observable _selectedTabIndex = '0';
|
||
@observable temp = true;
|
||
@observable userRoot = undefined;
|
||
@observable orgTreeIsMult = '0';
|
||
@observable orgTreeCheckedDatas = [];
|
||
@observable loading = false;
|
||
@observable radioGroupParams = {};
|
||
@observable showSignInfo = '0';
|
||
@observable hrmId = '';
|
||
@observable hasRight = true;
|
||
@observable mapData = [];
|
||
@observable timeData = [];
|
||
@observable visible = false;
|
||
@observable positionObj = {};
|
||
@observable dateTabkey = '1';
|
||
@observable pDate = new moment().format('YYYY-MM-DD');
|
||
@observable table = new TableStore();
|
||
@observable config = [];
|
||
@observable dataKey = '';
|
||
@observable hrmName = WeaTools.ls.getJSONObj('theme-account') && WeaTools.ls.getJSONObj('theme-account').username || undefined;
|
||
|
||
|
||
// tab标签
|
||
@computed get selectedTabIndex() {
|
||
return this._selectedTabIndex;
|
||
}
|
||
// 顶部按钮
|
||
@computed get topButton() {
|
||
return this.selectedTabIndex == '2' ? [
|
||
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@p7rja4@1`} type="primary" onClick={() => { this.exportexcel(this.dataKey); }}>{i18n.button.export()}</Button>),
|
||
]
|
||
:
|
||
[];
|
||
}
|
||
// 顶部菜单下拉按钮显示导出功能
|
||
@computed get dropMenuDatas() {
|
||
return this.selectedTabIndex == '2' ? [
|
||
{
|
||
key: '1',
|
||
icon: <i className="icon-coms-export" />,
|
||
content: i18n.button.export(),
|
||
onClick: () => {
|
||
this.exportexcel(this.dataKey);
|
||
},
|
||
},
|
||
]
|
||
:
|
||
[];
|
||
}
|
||
// 右键菜单显示导出功能
|
||
@computed get rightMenu() {
|
||
return this.selectedTabIndex == '2' ? [
|
||
{
|
||
key: '1',
|
||
icon: <i className="icon-coms-export" />,
|
||
content: i18n.button.export(),
|
||
onClick: () => {
|
||
this.exportexcel(this.dataKey);
|
||
},
|
||
},
|
||
]
|
||
:
|
||
[];
|
||
}
|
||
// 初始化数据
|
||
@action
|
||
init = () => {
|
||
this.hrmId = undefined;
|
||
this.showSignInfo = '0';
|
||
this.tabkey = '1';
|
||
this.dateTabkey = '1';
|
||
this.visible = false;
|
||
this.pDate = new moment().format('YYYY-MM-DD');
|
||
this.hrmName = WeaTools.ls.getJSONObj('theme-account') && WeaTools.ls.getJSONObj('theme-account').username || undefined;
|
||
this.userRoot = [];
|
||
this.orgTreeIsMult = '0';
|
||
this.orgTreeCheckedDatas = [];
|
||
this._selectedTabIndex = '0';
|
||
// this.getOsInfo();
|
||
}
|
||
|
||
redraw = () => {}
|
||
|
||
getOsInfo = async () => {
|
||
let data = await WeaTools.callApi('/api/system/info/getOSinfo', 'GET', {});
|
||
if(data.status){
|
||
data.mapParams.ableToSwitchMap = "true";
|
||
localStorage.setItem('getOsInfo', JSON.stringify(data));
|
||
}
|
||
}
|
||
|
||
@action tabName = (newOutSide) => {
|
||
if (this.selectedTabIndex == '0') {
|
||
return (<TimeView ecId={`${this && this.props && this.props.ecId || ''}_TimeView@1vn7g7`} newOutSide={newOutSide} />);
|
||
}
|
||
if (this.selectedTabIndex == '1') {
|
||
return (<MapView ecId={`${this && this.props && this.props.ecId || ''}_MapView@p5ghjk`} newOutSide={newOutSide} />);
|
||
}
|
||
if (this.selectedTabIndex == '2') {
|
||
return (<Detailed ecId={`${this && this.props && this.props.ecId || ''}_Detailed@9vnro9`} newOutSide={newOutSide} />);
|
||
}
|
||
}
|
||
|
||
// --------------------------左侧树-----------------------
|
||
@action
|
||
updateOrgTreeIsMult = (v) => {
|
||
this.orgTreeIsMult = v;
|
||
}
|
||
@action
|
||
updateOrgTreeCheckedDatas = (v = []) => {
|
||
this.orgTreeCheckedDatas = v;
|
||
}
|
||
@action
|
||
updateUserRoot = (data) => {
|
||
this.userRoot = data;
|
||
if (data.length > 0) {
|
||
this.hrmId = data[0].id;
|
||
}
|
||
if (this.hrmId) {
|
||
this.getData();
|
||
}
|
||
}
|
||
@action
|
||
updateHrmId = (v) => {
|
||
this.hrmId = v;
|
||
}
|
||
@action
|
||
updateHrmName = (v) => {
|
||
this.hrmName = v || WeaTools.ls.getJSONObj('theme-account') && WeaTools.ls.getJSONObj('theme-account').username || undefined;
|
||
}
|
||
|
||
// 请求数据
|
||
@observable lastParams = {};
|
||
|
||
@action refreshData = async () => {
|
||
const datas = await this.getData();
|
||
this.selectedTabIndex == '1' && this.redraw();
|
||
}
|
||
|
||
@action
|
||
getData = async (param) => {
|
||
let params = param || {};
|
||
if (this.loading) { return; }
|
||
this.loading = true;
|
||
if (params == null) {
|
||
params = toJS(this.lastParams);
|
||
} else {
|
||
this.lastParams = params;
|
||
}
|
||
|
||
if (this.hrmId) {
|
||
params.resourceId = this.hrmId;
|
||
}
|
||
params.loaddata = '1';
|
||
if (this.selectedTabIndex == '2') {
|
||
if (!params.typeselect || params.typeselect == '') params.typeselect = 1;
|
||
if (!params.signtype || params.signtype == '') params.signtype = 2;
|
||
params.cmd = 'detialData';
|
||
} else {
|
||
params.fromDate = this.pDate;
|
||
params.toDate = this.pDate;
|
||
params.signtype = this.showSignInfo;
|
||
if (this.selectedTabIndex == '0') {
|
||
params.cmd = 'timeData';
|
||
} else if (this.selectedTabIndex == '1') {
|
||
params.cmd = 'mapData';
|
||
}
|
||
}
|
||
|
||
|
||
const datas = await API.getHrmMobileSignInInfo(params);
|
||
// 测试要求明细页面权限放开
|
||
if (this.selectedTabIndex == '0') {
|
||
if (datas.status == '1') {
|
||
this.hasRight = true;
|
||
this.timeData = datas.result || [];
|
||
} else {
|
||
this.hasRight = false;
|
||
}
|
||
} else if (this.selectedTabIndex == '1') {
|
||
if (datas.status == '1') {
|
||
this.hasRight = true;
|
||
this.mapData = datas.result || [];
|
||
// this.redraw();
|
||
} else {
|
||
this.hasRight = false;
|
||
}
|
||
} else if (this.selectedTabIndex == '2') {
|
||
this.hasRight = true;
|
||
this.table = new TableStore();
|
||
this.table.getDatas(datas.sessionkey, 1);
|
||
this.dataKey = datas.sessionkey;
|
||
}
|
||
|
||
this.loading = false;
|
||
return datas;
|
||
}
|
||
|
||
// -------------------------------------------------------地图-------------------------------------
|
||
@action
|
||
updatePosition = (obj) => {
|
||
this.positionObj = obj;
|
||
}
|
||
@action
|
||
updateVisible = (v) => {
|
||
this.visible = v;
|
||
}
|
||
// ---------------------------------------日期------------------------------------------
|
||
|
||
@action
|
||
changeDateTab = (key) => {
|
||
this.dateTabkey = key;
|
||
const current = new moment();
|
||
if (key == 1) {
|
||
this.pDate = current.format('YYYY-MM-DD');
|
||
} else if (key == 2) {
|
||
this.pDate = current.subtract(1, 'days').format('YYYY-MM-DD');
|
||
} else {
|
||
this.pDate = current.format('YYYY-MM');
|
||
}
|
||
}
|
||
|
||
@action
|
||
changeDate = (value) => {
|
||
this.pDate = value;
|
||
}
|
||
|
||
@action clearConfig = () => this.config = [];
|
||
|
||
@action getRadioGroupConfig = () => {
|
||
API.getSearchCondition().then((resp) => {
|
||
const {
|
||
condition,
|
||
} = resp;
|
||
const configfirstrow = {
|
||
label: i18n.label.date(),
|
||
options: [{
|
||
key: '0',
|
||
showname: i18n.label.all(),
|
||
}, {
|
||
key: '1',
|
||
showname: i18n.label.today(),
|
||
selected: true,
|
||
}, {
|
||
key: '2',
|
||
showname: i18n.label.tswk(),
|
||
}, {
|
||
key: '3',
|
||
showname: i18n.label.tsmth(),
|
||
}, {
|
||
key: '4',
|
||
showname: i18n.label.tssn(),
|
||
}, {
|
||
key: '5',
|
||
showname: i18n.label.tsyr(),
|
||
}, {
|
||
key: '7',
|
||
showname: i18n.label.preMonth(),
|
||
}, {
|
||
key: '8',
|
||
showname: i18n.label.preYear(),
|
||
}, {
|
||
key: '6',
|
||
showname: i18n.label.dateRange(),
|
||
}],
|
||
domkey: ['typeselect'],
|
||
selectLinkageDatas: {
|
||
6: {
|
||
conditionType: 'RANGEPICKER',
|
||
domkey: ['fromDate', 'toDate'],
|
||
},
|
||
},
|
||
labelcol: 4,
|
||
fieldcol: 20,
|
||
};
|
||
|
||
condition[0].items.unshift(configfirstrow);
|
||
|
||
this.config = condition[0].items;
|
||
});
|
||
this.temp = false;
|
||
|
||
// 清空左侧树选择的人员id,明细页只能看到当前账户人员
|
||
this.hrmId = undefined;
|
||
|
||
// this.getData()
|
||
}
|
||
|
||
@action
|
||
handleCheckbox = (v) => {
|
||
this.showSignInfo = v;
|
||
this.refreshData();
|
||
}
|
||
|
||
// Table的查看
|
||
handleViewClick = (id) => {
|
||
API.getShowSignImg({
|
||
id,
|
||
}).then((datas) => {
|
||
const {
|
||
signImgIds,
|
||
} = datas;
|
||
|
||
if (signImgIds) {
|
||
const imgPool = signImgIds.split(',').map(id => `/weaver/weaver.file.FileDownload?fileid=${id}`);
|
||
const indexNum = 0;
|
||
|
||
if (window.IMCarousel) {
|
||
window.IMCarousel.showImgScanner4Pool(true, imgPool, indexNum, null, window.top);
|
||
} else {
|
||
loadjs(['/social/js/drageasy/drageasy.js', '/social/js/bootstrap/js/bootstrap.js?v=20171218', '/social/im/js/IMUtil_wev8.js', '/social/js/imcarousel/imcarousel.js'], () => {
|
||
window.IMCarousel.showImgScanner4Pool(true, imgPool, indexNum, null, window.top);
|
||
});
|
||
}
|
||
}
|
||
});
|
||
}
|
||
|
||
// 导出
|
||
@action
|
||
exportexcel(dataKey) {
|
||
// this.table.exportAll('',this.title);
|
||
this.table.exportAll();
|
||
}
|
||
}
|