weaver_trunk_cli/pc4public/stores/hrm/importCommon.js

423 lines
8.5 KiB
JavaScript

import * as asyncFetch from '../../apis/importresource';
import {
observable,
action,
extendObservable,
} from 'mobx';
import {
WeaForm,
WeaTableNew,
} from 'comsMobx';
import {
WeaLocaleProvider,
} from 'ecCom';
import {
message,
} from 'antd';
const getLabel = WeaLocaleProvider.getLabel;
const {
TableStore,
} = WeaTableNew;
export default class HrmImportCommon {
@observable importType = '';
@observable importDialog = {
visible: false,
condition: [],
form: new WeaForm(),
title: '',
loading: true,
templetName: '',
selectedValue: 'workcode',
}
@observable resultDialog = {
title: observable.ref(getLabel(82341, '导入结果')),
errorTip: observable.ref(getLabel(384059, '导入文件存在以下错误,请解决后重新上传!')),
visible: false,
index: 1,
datas: [],
importStatus: '',
pId: '',
interval: '',
tableStore: new TableStore(),
errorInfo: [],
succnum: 0,
failnum: 0,
loading: true,
component: '',
}
@observable recordDialog = {
title: observable.ref(getLabel(24644, '历史导入记录')),
visible: false,
tableStore: new TableStore(),
}
@observable logDialog = {
title: observable.ref(getLabel(24835, '导入日志')),
visible: false,
tableStore: new TableStore(),
isPanelShow: false,
form: new WeaForm(),
condition: [],
loading: true,
}
@action
getImportForm = () => {
this.importDialog.loading = true;
let params = {
importType: this.importType,
};
asyncFetch.getImportForm(params).then((rs) => {
const {
status,
condition = [],
} = rs;
if (status == '1') {
this.importDialog.condition = condition;
const copy = [...condition];
copy.splice(1);
copy[0].items.splice(2);
this.importDialog.form.initFormFields(copy);
this.importDialog.loading = false;
} else {
message.error(rs.message);
}
}).catch((error) => {
message.error(error);
});
}
@action
getImportProcessInfo = () => {
let params = {
importType: this.importType,
index: this.resultDialog.index,
};
asyncFetch.getImportProcessLog(params).then((rs) => {
const {
datas,
index,
pId = '',
status,
} = rs;
this.resultDialog.loading = false;
if (status == '1') {
const {
importStatus,
interval,
errorInfo,
component,
} = this.resultDialog;
component.scrollToLast();
if (importStatus == 'over' || importStatus == 'error') {
clearInterval(interval);
if (!this.hasErrorInfo(errorInfo)) this.getResultInfo();
// 导入完成后,刷新节假日设置页面的年视图或清单列表
this.sourceStore && this.sourceStore.refreshTable();
return;
}
if (rs.importStatus == 'over' || rs.importStatus == 'error') {
this.resultDialog.loading = true;
}
this.resultDialog.importStatus = rs.importStatus;
if (pId) this.resultDialog.pId = pId;
if (this.resultDialog.datas.length == 0) {
this.resultDialog.datas = datas;
} else {
this.resultDialog.datas = [...this.resultDialog.datas, ...datas];
}
this.resultDialog.index = index;
}
});
}
@action
getResultInfo = () => {
let params = {
pId: this.resultDialog.pId,
};
this.resultDialog.loading = true;
asyncFetch.getImportResult(params).then((rs) => {
const {
datas,
status,
} = rs,
{
succnum,
failnum,
sessionkey = '',
} = datas;
if (status == '1') {
this.resultDialog.succnum = succnum;
this.resultDialog.failnum = failnum;
sessionkey && this.resultDialog.tableStore.getDatas(sessionkey, 1);
}
this.resultDialog.loading = false;
});
}
@action
getRecordTable = () => {
let params = {
importType: this.importType,
};
asyncFetch.getImportHistory(params).then((rs) => {
const {
status,
sessionkey,
} = rs;
if (status == '1') {
this.recordDialog.tableStore.getDatas(sessionkey, 1);
} else {
message.error(rs.message);
}
}).catch((error) => {
message.error(error);
});
}
@action
getLogTable = () => {
let params = {
importType: this.importType,
...this.logDialog.form.getFormParams(),
};
if (this.resultDialog.pId) {
params = { ...params,
pId: this.resultDialog.pId,
};
}
asyncFetch.getImportLogDetail(params).then((rs) => {
const {
status,
sessionkey,
} = rs;
if (status == '1') {
this.logDialog.tableStore.getDatas(sessionkey, 1);
} else {
message.error(rs.message);
}
}).catch((error) => {
message.error(error);
});
}
@action
submitImportInfo = () => {
let params = {
importType: this.importType,
excelfile: this.importDialog.excelFileId,
operateType: 'add',
};
if (['group', 'groupMember'].includes(this.importType)) {
params = {
...params,
...this.importDialog.form.getFormParams(),
};
}
if (this.otherParams) {
Object.assign(params, this.otherParams);
}
this.setResultInfoDialogVisible(true);
asyncFetch.saveImport(params).then((rs) => {
const {
status,
errorInfo,
} = rs;
if (status == '1') {
if (this.hasErrorInfo(errorInfo)) {
this.resultDialog.errorInfo = errorInfo;
this.resultDialog.importStatus = 'error';
}
} else {
message.error(rs.message);
}
}).catch((error) => {
message.error(error);
});
this.resultDialog.interval = setInterval(() => this.getImportProcessInfo(), 2000);
}
@action
getLogSearchPanelCondition = () => {
this.logDialog.loading = true;
let params = {
importType: this.importType,
};
asyncFetch.getImportLogSearchCondition(params).then((rs) => {
const {
status,
searchCondition,
} = rs;
if (status == '1') {
this.logDialog.condition = searchCondition;
this.logDialog.form.initFormFields(searchCondition);
} else {
message.error(rs.message);
}
this.logDialog.loading = false;
}).catch((error) => {
message.error(error);
});
}
@action
setExcelFileNo = (id) => {
extendObservable(this.importDialog, {
excelFileId: id,
});
}
@action
submitExcel = () => {
if (!this.importDialog.excelFileId) {
message.warning(getLabel(385362, '请选择导入模板!'));
return;
}
this.submitImportInfo();
}
@action
queryRecord = () => {
this.setRecordDialogVisible(true);
}
@action
queryLog = () => {
this.setLogDialogVisible(true);
}
@action
jumpToImportResult = (id) => {
this.resultDialog.pId = id;
this.resultDialog.importStatus = 'over';
this.setResultInfoDialogVisible(true);
this.getResultInfo();
}
@action
setImportDialogVisible = (bool) => {
this.importDialog.visible = bool;
if (bool) {
this.getImportForm();
} else {
this.importDialogReset();
}
}
@action
setResultInfoDialogVisible = (bool) => {
this.resultDialog.visible = bool;
if (!bool) {
clearInterval(this.resultDialog.interval);
this.resetResultDialogStatus();
}
}
@action
importDialogReset = () => {
this.importDialog.condition = [];
this.importDialog.form = new WeaForm();
this.importDialog.selectedValue = 'workcode';
this.importDialog.excelFileId = '';
}
@action
resetResultDialogStatus = () => {
this.resultDialog.index = 1;
this.resultDialog.datas = [];
this.resultDialog.importStatus = '';
this.resultDialog.pId = '';
this.resultDialog.interval = '';
this.resultDialog.errorInfo = '';
this.resultDialog.loading = true;
}
@action
setRecordDialogVisible = (bool) => {
this.recordDialog.visible = bool;
bool && this.getRecordTable();
}
@action
setLogDialogVisible = (bool) => {
this.logDialog.visible = bool;
bool && this.getLogTable();
if (!bool) {
this.logDialog.isPanelShow = false;
this.logDialog.form = new WeaForm();
this.logDialog.condition = [];
}
}
@action
setLogPanelStatus = (bool) => {
this.logDialog.isPanelShow = bool;
bool && this.logDialog.condition.length == 0 && this.getLogSearchPanelCondition();
}
@action
searchLogInfo = () => {
this.getLogTable();
}
hasErrorInfo = (errorInfo) => {
if (errorInfo.length == 0) return false;
return true;
}
@action
setTempletName = (templetName) => {
this.importDialog.templetName = templetName;
}
@action
setImportDialogTitle = (title) => {
this.importDialog.title = title;
}
@action
setImportType = (type) => {
this.importType = type;
}
@action
setSelectedValue = (value) => {
this.importDialog.selectedValue = value;
}
@action
setScoll = (component) => {
this.resultDialog.component = component;
}
@action
setSourceStore = (store) => {
this.sourceStore = store;
}
setOtherParams=(params) => {
this.otherParams = params;
}
}