weaver_trunk_cli/pc4mobx/hrm/stores/newOutSide.js

369 lines
10 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
}
}