weaver_trunk_cli/pc4mobx/hrm/stores/newOutSide.js

369 lines
10 KiB
JavaScript
Raw Normal View History

2024-12-11 15:32:14 +08:00
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();
}
}