weaver_trunk_cli/pc4mobx/hrmAttendance/stores/baseStore.js

369 lines
10 KiB
JavaScript
Raw Normal View History

2023-03-14 09:11:54 +08:00
import {
observable,
action
} from 'mobx';
import {
Button,
message,
Modal
} from 'antd';
import {
WeaForm,
WeaLogView
} from 'comsMobx';
import {
WeaLocaleProvider
} from 'ecCom';
import classnames from 'classnames';
import * as mobx from 'mobx';
import {
authorized,
detachable,
checkAuthAndDetach,
getPinYin
} from '../apis/common';
import {
i18n
} from '../public/i18n';
import {
logTypeDef
} from '../public/logType';
import {findIndex} from 'lodash';
import moment from 'moment';
const getLabel = WeaLocaleProvider.getLabel;
const confirm = Modal.confirm;
const info = Modal.confirm;
const {
LogStore
} = WeaLogView;
export default class HrmBaseStore {
constructor(){
}
/********************* unobservable list *********************/
logTypeDef = logTypeDef;
getPinYin = getPinYin;
toJS = mobx.toJS;
moment = moment;
basicDialogParams = {
moduleName: 'hrm',
style: {
width: 520,
height: 300
},
visible: false,
title: '',
}
menuIconCollection = {
save: 'icon-coms-Preservation',
create: 'icon-coms-New-Flow',
modify: 'icon-coms-edit',
remove: 'icon-coms-Batch-delete',
copy: 'icon-coms-form-copy',
entry: 'icon-coms-edit',
setting: 'icon-coms-Flow-setting',
log: 'icon-coms-Print-log',
multiModify: 'icon-coms-BatchEditing',
import: ' icon-coms-leading-in',
export: 'icon-coms-export',
search: 'icon-coms-search',
sync: 'icon-coms-Update-synchronization',
done: 'icon-coms-Upload-successfully',
selectAll: 'icon-coms-batch'
}
getBasicMenus = (logTypeKey, targetId = null) => {
let arr = [];
if(logTypeKey){
arr.push({
key: '99',
content: i18n.label.log(),
icon: <i className={this.menuIconCollection.log}/>,
onClick: () => this.showLog({logSmallType: this.logTypeDef[logTypeKey], targetId})
});
}
return arr;
}
dialogPropsDef = {
moduleName: 'hrm',
visible: false,
title: '',
moreBtn: {
datas: []
},
// hasScroll: true
}
refsDialogPropsDef = {
moduleName: 'hrm',
visible: false,
title: '',
}
dateSwitchTypeList = ['year', 'month', 'week', 'day'];
formTarget = {}; //form collection
opId = null; //数据操作对象主键ID
authorizationInfo = {};
/**
* 权限验证
* @param {String} moduleName [模块名]
* @param {Object} params [restful request url params]
* @param {Function} callback [验证通过后的callback function]
* @return {null}
*/
checkAuthorized = (moduleName, params, callback, apiMethod, needCheckDetachable = false) => {
if (needCheckDetachable) {
checkAuthAndDetach(moduleName, params, apiMethod).then(rs => {
rs.map((result, index) => {
if (result.status === '1') {
switch (index) {
case 0:
const init = !result.hasRight;
this.authorizationInfo = result;
this.containerInitFinished = {
...this.containerInitFinished,
init,
authorized: result.hasRight,
userId: result.userId
}
this.containerInitFinished.authorized && callback && callback();
break;
case 1:
this.containerInitFinished.detachable = result.detachable === '0' ? false : true
break;
}
}
})
})
} else {
authorized(moduleName, params, apiMethod).then((data) => {
if (data.status === '1') {
const init = !data.hasRight;
this.authorizationInfo = data;
this.containerInitFinished = {
init,
authorized: data.hasRight
}
this.containerInitFinished.authorized && callback && callback();
}
}, error => {
this.containerInitFinished = {
init: true,
authorized: false
}
});
}
}
/**
* 获取激活的tab页下标
* @param {Array} tabs [tabData数组]
* @param {String} key [tabKey]
* @return {Integer} [tab下标]
*/
getTabIndex(tabs, key) {
if (tabs != null && tabs.length > 0) {
return findIndex(tabs, {
viewCondition: key
})
}
return -1;
}
convertToMenus = (buttons) => {
let menus = [];
buttons.map((btn, index) => {
const {
props
} = btn;
menus.push({
key: index.toString(),
content: props.children,
icon: <i className={this.menuIconCollection[props.op]}/>,
onClick: props.onClick,
disabled: props.disabled || false
});
})
return menus;
}
/**
* 获取WeaTop按钮WeaTab按钮以及右键菜单列表
* @param {Object} tabConfig [description]
* @return {Object} [description]
*/
btnsAndMenus = (tabConfig) => {
let topBtnDef = [], //WeaTop按钮
menuDef = [], //右键菜单
tabBtnDef = []; //WeaTab按钮
const activeTabIndex = this.getTabIndex(tabConfig.tabs, tabConfig.activeTabKey);
if (tabConfig.activeTabKey === '' || activeTabIndex < 0) {
return {
btns: topBtnDef,
menus: menuDef,
tabBtnDef: tabBtnDef
}
}
const tab = tabConfig.tabs[activeTabIndex];
const {
topButtonDef,
tabButtonDef
} = tab;
topButtonDef && topButtonDef.map((def, idx) => { //组织WeaTop按钮
const lbl = (typeof(def.label) == 'function' ? def.label() : def.label);
switch (def.comType) {
case 'button':
let disabled = false;
if (def.checkAction)
disabled = this[def.checkAction];
2024-12-11 15:32:14 +08:00
topBtnDef.push(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@l5ux5e@${idx}`} type={def.type} onClick={def.onClickHandle} disabled={disabled || def.disabled}>{lbl}</Button>);
2023-03-14 09:11:54 +08:00
menuDef.push({ //组织右键菜单
key: `$top-btn-${idx}`,
content: lbl,
icon: <i className={def.rightMenuIcon || def.icon}/>,
onClick: def.onClickHandle,
disabled: disabled || def.disabled || false
})
break;
default:
break;
}
});
tabButtonDef && tabButtonDef.map((def, idx) => { //组织WeaTab按钮
const lab = (typeof(def.label) == 'function' ? def.label() : def.label);
switch (def.comType) {
case 'button':
let disabled = false;
if (def.checkAction)
disabled = this[def.checkAction];
const classes = classnames({
[def.icon]: true,
'tabBtn': true,
'tabBtn-active': !disabled,
'tabBtn-disable': disabled
});
tabBtnDef.push(
<i
className={classes}
title={lab}
onClick={!disabled ? def.onClickHandle : null}
/>
);
break;
default:
break;
}
});
return {
btns: topBtnDef,
menus: menuDef,
tabBtnDef: tabBtnDef
}
}
confirmInfo = (props) => {
confirm({ ...props,
title: props.title || i18n.confirm.defaultTitle(),
okText: i18n.label.ok(),
cancelText: i18n.label.cancel()
});
}
hint = (props) => {
info({ ...props,
title: i18n.confirm.defaultTitle(),
okText: i18n.label.ok(),
});
}
/**
* 初始化formStore
* @param {String} formName [form's name]
* @param {Array} fields [form field definition]
* @return {null}
*/
setFormData = (formName, fields) => {
this.formTarget[`${formName}Fields`] = fields;
this.formTarget[formName] = new WeaForm();
this.formTarget[formName].initFormFields(fields);
}
/**
* 获取表格数据的通用方法
* @param {String} tableStore [tableStore's name]
* @param {Function} api [restful api function]
* @param {Object} params [restful request url params]
* @return {null}
*/
requestTableData = (tableStore, api, params = {}, callback) => {
api(params).then(data => {
if (data.status === '1') {
tableStore.getDatas(data.sessionkey, 1);
callback && callback();
} else
message.error(data.message);
}, error => {
message.error(i18n.message.actionError());
});
}
showLog = (logTypeParams) => {
window.setLogViewProps({
...logTypeParams
});
}
/********************* unobservable list *********************/
/********************* observable list *********************/
@observable containerInitFinished = { //模块初始化状态
init: false,
authorized: false,
detachable: false
}
@observable showError = new Date().getTime(); //状态刷新组件引用该值监听变化重新render
@observable dialogParams = {}; //模态框参数
// monitorI18n = () => {
// this.i18nLoaded;
// }
// monitor = autorun(this.monitorI18n)
/********************* observable list *********************/
/********************* action list *********************/
@action definedColumn = (table) => {//显示列定义
table.setColSetVisible(true);
table.tableColSet(true);
}
/********************* action list *********************/
getLocale() {
return {
firstDayOfWeek: 0,
lang: {
format: {
eras: [getLabel(383357, "公元前"), getLabel(383358, "公元")],
months: [getLabel(1492, "一月"), getLabel(1493, "二月"), getLabel(383385, "三月"), getLabel(383387, "四月"), getLabel(1496, "五月"), getLabel(383392, "六月"),
getLabel(383393, "七月"), getLabel(383394, "八月"), getLabel(383395, "九月"), getLabel(383396, "十月"), getLabel(383397, "十一月"), getLabel(383398, "十二月")
],
shortMonths: [getLabel(1492, "一月"), getLabel(1493, "二月"), getLabel(383385, "三月"), getLabel(383387, "四月"), getLabel(1496, "五月"), getLabel(383392, "六月"),
getLabel(383393, "七月"), getLabel(383394, "八月"), getLabel(383395, "九月"), getLabel(383396, "十月"), getLabel(383397, "十一月"), getLabel(383398, "十二月")
],
2024-12-11 15:32:14 +08:00
weekdays: [getLabel(398, "星期天"), getLabel(392, "星期一"), getLabel(393, "星期二"), getLabel(394, "星期三"), getLabel(395, "星期四"),
getLabel(396, "星期五"), getLabel(397, "星期六")
2023-03-14 09:11:54 +08:00
],
shortWeekdays: [getLabel(16106, "周日"), getLabel(16100, "周一"), getLabel(16101, "周二"), getLabel(16102, "周三"), getLabel(16103, "周四"), getLabel(16104, "周五"),
getLabel(16105, "周六")
],
veryShortWeekdays: [getLabel(82920, "日"), getLabel(82914, "一"), getLabel(82915, "二"), getLabel(82916, "三"), getLabel(82917, "四"), getLabel(82918, "五"), getLabel(82919, "六")],
ampms: [getLabel(383408, "上午"), getLabel(383409, "下午")],
datePatterns: [`yyyy'${getLabel(383372,"年")}'M'${getLabel(383373,"月")}'d'${getLabel(383374,"日")}' EEEE`, `yyyy'${getLabel(383372,"年")}'M'${getLabel(383373,"月")}'d'${getLabel(383374,"日")}'`, "yyyy-M-d", "yy-M-d"],
timePatterns: [`ahh'${getLabel(383411,"时")}'mm'${getLabel(383412,"分")}'ss'${getLabel(383414,"秒")}' 'GMT'Z`, `ahh'${getLabel(383411,"时")}'mm'${getLabel(383412,"分")}'ss'${getLabel(383414,"秒")}'`, "H:mm:ss", "ah:mm"],
dateTimePattern: '{date} {time}'
}
},
}
}
/********************* tableEdit props & functions *********************/
}