salary-management-front/pc4mobx/hrmSalary/stores/attendanceStore.js

485 lines
14 KiB
JavaScript
Raw Normal View History

import { action, observable, toJS } from "mobx";
2022-06-02 17:11:28 +08:00
import { message } from "antd";
import { WeaForm, WeaTableNew } from "comsMobx";
2022-03-14 17:07:26 +08:00
2022-06-02 17:11:28 +08:00
import * as API from "../apis/attendance"; // 引入API接口文件
2022-03-14 17:07:26 +08:00
const { TableStore } = WeaTableNew;
export class AttendanceStore {
@observable tableStore = new TableStore(); // new table
2022-06-02 17:11:28 +08:00
@observable attendTableStore = new TableStore();
2022-03-14 17:07:26 +08:00
@observable form = new WeaForm(); // nrew 一个form
@observable condition = []; // 存储后台得到的form数据
@observable hasRight = true; // 判断用户是有权限查看当前页面: 没有权限渲染无权限页面,有权限渲染数据
@observable showSearchAd = false; // 高级搜索面板显示
@observable loading = true; // 数据加载状态
2022-06-02 17:11:28 +08:00
@observable step = 0;
2022-03-14 17:07:26 +08:00
@observable modalVisiable = false;
2022-03-15 11:06:56 +08:00
@observable slideVisiable = false;
2022-03-22 20:06:36 +08:00
@observable currentItem = {};
@observable currentItemOperate = "add";
2022-03-23 13:11:01 +08:00
@observable fieldSettingAttendList = []; // 表头考勤列表
@observable fieldSettingCustomList = []; // 表头自定义列表
2022-03-22 20:06:36 +08:00
2022-03-23 13:11:01 +08:00
requestFeildAttendList = []; // 请求数据
requestFeildCustomList = []; // 请求数据
2022-04-22 17:00:10 +08:00
// 考勤字段
@observable fieldDataSource = []; // 字段列表
@observable fieldTableStore = new TableStore(); // new Table
@observable fieldPageInfo = {};
2022-03-23 13:11:01 +08:00
2022-04-22 18:12:16 +08:00
// 考勤数据列表
@observable attendanceDataSource = [];
@observable attendancePageInfo = {};
@observable attendanceColumns = [];
2022-04-25 14:32:51 +08:00
// 导入
@observable importLedgerList = []; // 表单-账套列表
@observable previewAttendQuoteList = []; // 导入-预览列表
@observable previewAttendQuoteColumns = []; // 导入预览-列表对应列
@observable previewAttendQuoteDataSource = []; // 导入预览-列表
2022-06-02 17:11:28 +08:00
@observable importResult = {};
2022-04-25 16:17:03 +08:00
// 考勤数据详情
@observable attendQuoteDetailPageInfo = {}; // 详情列表分页数据
@observable attendQuoteDetailTableStore = new TableStore(); // 详情列表表头数据
2022-04-25 14:32:51 +08:00
2022-05-07 14:47:14 +08:00
@observable cycle = {};
2022-06-02 17:11:28 +08:00
// ** 设置导入参数 start **
2022-05-12 17:04:33 +08:00
@action
2022-06-28 18:07:41 +08:00
setPreviewAttendQuoteColumns = previewAttendQuoteColumns => {
2022-05-12 17:04:33 +08:00
this.previewAttendQuoteColumns = previewAttendQuoteColumns;
2022-06-02 17:11:28 +08:00
};
2022-05-12 17:04:33 +08:00
@action
2022-06-28 18:07:41 +08:00
setPreviewAttendQuoteDataSource = previewAttendQuoteDataSource => {
2022-06-02 17:11:28 +08:00
this.previewAttendQuoteDataSource = previewAttendQuoteDataSource;
};
2022-05-12 17:04:33 +08:00
@action
2022-06-28 18:07:41 +08:00
setImportResult = importResult => {
2022-06-02 17:11:28 +08:00
this.importResult = importResult;
};
// ** 设置导入参数 end **
2022-05-12 17:04:33 +08:00
2022-03-23 13:11:01 +08:00
@action
2022-06-28 18:07:41 +08:00
searchFieldSettingList = value => {
2022-06-02 17:11:28 +08:00
if (value != "") {
2022-03-23 13:11:01 +08:00
let requestFeildAttendList = [...this.requestFeildAttendList];
2022-06-02 17:11:28 +08:00
this.fieldSettingAttendList = requestFeildAttendList.filter(
2022-06-28 18:07:41 +08:00
item => item.name.indexOf(value) > -1
2022-06-02 17:11:28 +08:00
);
let requestFeildCustomList = [...this.requestFeildCustomList];
this.fieldSettingCustomList = requestFeildCustomList.filter(
2022-06-28 18:07:41 +08:00
item => item.name.indexOf(value) > -1
2022-06-02 17:11:28 +08:00
);
2022-03-23 13:11:01 +08:00
} else {
this.fieldSettingAttendList = [...this.requestFeildAttendList];
this.fieldSettingCustomList = [...this.requestFeildCustomList];
}
2022-06-02 17:11:28 +08:00
};
2022-03-23 13:11:01 +08:00
@action
2022-06-28 18:07:41 +08:00
setFieldSettingAttendList = fieldSettingAttendList => {
2022-06-02 17:11:28 +08:00
this.fieldSettingAttendList = fieldSettingAttendList;
let requestFeildAttendList = [...this.requestFeildAttendList];
2022-06-28 18:07:41 +08:00
requestFeildAttendList.map(item => {
this.fieldSettingAttendList.map(inner => {
2022-06-02 17:11:28 +08:00
if (inner.id == item.id && inner.checked != item.checked) {
item.checked = inner.checked;
2022-03-23 13:11:01 +08:00
}
2022-06-02 17:11:28 +08:00
});
});
2022-03-23 13:11:01 +08:00
this.requestFeildAttendList = requestFeildAttendList;
2022-06-02 17:11:28 +08:00
};
2022-03-23 13:11:01 +08:00
@action
2022-06-28 18:07:41 +08:00
setFieldSettingCustomList = fieldSettingCustomList => {
2022-06-02 17:11:28 +08:00
this.fieldSettingCustomList = fieldSettingCustomList;
let requestFeildCustomList = [...this.requestFeildCustomList];
2022-06-28 18:07:41 +08:00
requestFeildCustomList.map(item => {
this.fieldSettingCustomList.map(inner => {
2022-06-02 17:11:28 +08:00
if (inner.id == item.id && inner.checked != item.checked) {
item.checked = inner.checked;
2022-03-23 13:11:01 +08:00
}
2022-06-02 17:11:28 +08:00
});
});
};
2022-03-22 20:06:36 +08:00
2022-06-28 18:07:41 +08:00
@action setCurrentItem = currentItem => (this.currentItem = currentItem);
2022-03-22 20:06:36 +08:00
@action
2022-06-28 18:07:41 +08:00
setCurrentItemOperate = currentItemOperate =>
2022-06-02 17:11:28 +08:00
(this.currentItemOperate = currentItemOperate);
2022-03-15 11:06:56 +08:00
@action
2022-06-28 18:07:41 +08:00
setSlideVisiable = slideVisiable => (this.slideVisiable = slideVisiable);
2022-03-14 17:07:26 +08:00
2022-06-28 18:07:41 +08:00
@action setStep = step => (this.step = step);
2022-03-14 17:07:26 +08:00
@action
2022-06-28 18:07:41 +08:00
setModalVisiable = modalVisiable => (this.modalVisiable = modalVisiable);
2022-06-02 17:11:28 +08:00
2022-03-14 17:07:26 +08:00
// 初始化操作
@action
doInit = (params = {}) => {
2022-03-23 13:11:01 +08:00
// this.getCondition();
// this.getTableDatas();
this.getAttendanceList(params);
2022-03-23 13:11:01 +08:00
// this.getAttendanceFieldSettingList({sourceType:'IMPORT'})
2022-06-02 17:11:28 +08:00
};
2022-03-14 17:07:26 +08:00
// 获得高级搜索表单数据
@action
getCondition = () => {
2022-06-02 17:11:28 +08:00
API.getCondition().then(
2022-06-28 18:07:41 +08:00
action(res => {
2022-06-02 17:11:28 +08:00
if (res.api_status) {
// 接口请求成功/失败处理
this.condition = res.condition;
this.form.initFormFields(res.condition); // 渲染高级搜索form表单
} else {
message.error(res.errormsg || "接口调用失败!");
}
})
);
};
2022-03-14 17:07:26 +08:00
// 渲染table数据
@action
2022-06-28 18:07:41 +08:00
getTableDatas = params => {
2022-03-14 17:07:26 +08:00
this.loading = true;
const formParams = this.form.getFormParams() || {};
params = params || formParams;
2022-06-02 17:11:28 +08:00
API.getTableDatas(params).then(
2022-06-28 18:07:41 +08:00
action(res => {
2022-06-02 17:11:28 +08:00
if (res.api_status) {
// 接口请求成功/失败处理
this.tableStore.getDatas(res.datas); // table 请求数据
this.hasRight = res.hasRight;
} else {
message.error(res.errormsg || "接口调用失败!");
}
this.loading = false;
})
);
};
2022-03-14 17:07:26 +08:00
2022-06-28 18:07:41 +08:00
@action setShowSearchAd = bool => (this.showSearchAd = bool);
2022-03-14 17:07:26 +08:00
// 高级搜索 - 搜索
2022-06-28 18:07:41 +08:00
@action
doSearch = () => {
2022-03-14 17:07:26 +08:00
this.getTableDatas();
this.showSearchAd = false;
2022-06-02 17:11:28 +08:00
};
2022-03-14 17:07:26 +08:00
2022-03-22 18:53:05 +08:00
// 字段列表
2022-06-28 18:07:41 +08:00
@action
getAttendanceFieldList = params => {
2022-03-22 18:53:05 +08:00
this.loading = true;
2022-06-28 18:07:41 +08:00
API.getAttendanceFieldList(params).then(res => {
2022-06-02 17:11:28 +08:00
if (res.status) {
// 接口请求成功/失败处理
2022-04-22 17:00:10 +08:00
this.fieldTableStore.getDatas(res.data.dataKey.datas); // table 请求数据
2022-06-02 17:11:28 +08:00
this.fieldDataSource = res.data.pageInfo.list;
this.fieldPageInfo = res.data.pageInfo;
2022-03-22 18:53:05 +08:00
} else {
2022-06-02 17:11:28 +08:00
message.error(res.errormsg || "接口调用失败!");
2022-03-22 18:53:05 +08:00
}
this.loading = false;
2022-06-02 17:11:28 +08:00
});
};
2022-03-22 18:53:05 +08:00
2022-06-28 18:07:41 +08:00
@action
saveAttendanceField = params => {
return new Promise((resolve, reject) => {
2022-09-16 11:30:13 +08:00
API.saveAttendanceField(params).then(res => {
if (res.status) {
message.success("保存成功");
resolve();
} else {
message.error(res.errormsg || "保存失败");
reject();
}
});
});
2022-06-02 17:11:28 +08:00
};
2022-03-22 18:53:05 +08:00
2022-06-28 18:07:41 +08:00
@action
deleteAttendanceField = params => {
API.deleteAttendanceField(params).then(res => {
2022-06-02 17:11:28 +08:00
if (res.status) {
message.success("删除成功");
2022-03-22 20:06:36 +08:00
} else {
2022-06-02 17:11:28 +08:00
message.error(res.errormsg || "删除失败");
2022-03-22 20:06:36 +08:00
}
2022-06-02 17:11:28 +08:00
});
};
2022-03-22 20:06:36 +08:00
// 批量删除
@action
doBatchDelete = () => {
2022-06-02 17:11:28 +08:00
let ids = toJS(this.tableStore.selectedRowKeys);
if (ids.length == 0) {
2022-03-22 20:06:36 +08:00
message.warning("未选择任何条目");
2022-06-02 17:11:28 +08:00
return;
2022-03-22 20:06:36 +08:00
}
2022-06-28 18:07:41 +08:00
API.deleteAttendanceField(this.tableStore.selectedRowKeys).then(res => {
2022-06-02 17:11:28 +08:00
if (res.status) {
message.success("删除成功");
2022-03-22 20:06:36 +08:00
} else {
2022-06-02 17:11:28 +08:00
message.error(res.errormsg || "删除失败");
2022-03-22 20:06:36 +08:00
}
2022-06-02 17:11:28 +08:00
});
};
2022-03-22 20:06:36 +08:00
// 更新
@action
2022-06-28 18:07:41 +08:00
updateAttendanceField = params => {
API.updateAttendanceField(params).then(res => {
2022-06-02 17:11:28 +08:00
if (res.status) {
message.success("修改成功");
2022-03-22 20:06:36 +08:00
} else {
2022-06-02 17:11:28 +08:00
message.error(res.errormsg || "修改失败");
2022-03-22 20:06:36 +08:00
}
2022-06-02 17:11:28 +08:00
});
};
2022-03-22 20:06:36 +08:00
// 更新状态
@action
2022-06-28 18:07:41 +08:00
updateAttendanceFieldStatus = params => {
return API.updateAttendanceFieldStatus(params).then(res => {
2022-06-02 17:11:28 +08:00
if (res.status) {
2022-03-22 20:06:36 +08:00
message.success("修改成功");
return new Promise((resolve, reject) => {
resolve(true);
2022-06-02 17:11:28 +08:00
});
2022-03-22 20:06:36 +08:00
} else {
2022-06-02 17:11:28 +08:00
message.error(res.errormsg || "修改失败");
2022-03-22 20:06:36 +08:00
return new Promise((resolve, reject) => {
resolve(false);
2022-06-02 17:11:28 +08:00
});
2022-03-22 20:06:36 +08:00
}
2022-06-02 17:11:28 +08:00
});
};
2022-03-22 20:06:36 +08:00
2022-03-23 13:11:01 +08:00
// 考勤数据列表
@action
2022-06-28 18:07:41 +08:00
getAttendanceList = params => {
2022-03-23 13:11:01 +08:00
this.loading = true;
2022-06-28 18:07:41 +08:00
API.getAttendanceList(params).then(res => {
2022-06-02 17:11:28 +08:00
if (res.status) {
// 接口请求成功/失败处理
2022-04-22 18:12:16 +08:00
// this.attendTableStore.getDatas(res.data.datas); // table 请求数据
this.attendanceDataSource = res.data.list;
this.attendancePageInfo = res.data;
2022-06-02 17:11:28 +08:00
this.attendanceColumns = res.data.columns;
2022-03-23 13:11:01 +08:00
} else {
2022-06-02 17:11:28 +08:00
message.error(res.errormsg || "接口调用失败!");
2022-03-23 13:11:01 +08:00
}
this.loading = false;
2022-06-02 17:11:28 +08:00
});
};
2022-06-28 18:07:41 +08:00
// 删除考勤列表数据
@action
deleteAttendance = params => {
return API.deleteAttendance(params);
};
2022-03-23 13:11:01 +08:00
//数据采集-考勤引用-考勤引用字段设置-列表
@action
2022-06-28 18:07:41 +08:00
getAttendanceFieldSettingList = params => {
2022-03-23 13:11:01 +08:00
this.loading = true;
2022-06-28 18:07:41 +08:00
API.getAttendanceFieldSettingList(params).then(res => {
2022-06-02 17:11:28 +08:00
if (res.status) {
this.requestFeildAttendList = res.data[0] ? res.data[0].items : [];
this.fieldSettingAttendList = this.requestFeildAttendList;
this.requestFeildCustomList = res.data[1] ? res.data[1].items : [];
2022-03-23 13:11:01 +08:00
this.fieldSettingCustomList = this.requestFeildCustomList;
} else {
2022-06-02 17:11:28 +08:00
message.error(res.errormsg || "接口调用失败!");
2022-03-23 13:11:01 +08:00
}
this.loading = false;
2022-06-02 17:11:28 +08:00
});
};
2022-03-23 13:11:01 +08:00
//数据采集-考勤引用-考勤引用字段设置-保存
2022-06-02 17:11:28 +08:00
@action
2022-03-23 16:01:10 +08:00
saveAttendanceFieldSetting = (sourceType = "IMPORT") => {
2022-06-28 18:07:41 +08:00
let attendList = this.requestFeildAttendList.map(item => ({
2022-06-02 17:11:28 +08:00
id: item.id,
2022-06-28 18:07:41 +08:00
checked: item.checked
2022-06-02 17:11:28 +08:00
}));
2022-06-28 18:07:41 +08:00
let customList = this.requestFeildCustomList.map(item => ({
2022-06-02 17:11:28 +08:00
id: item.id,
2022-06-28 18:07:41 +08:00
checked: item.checked
2022-06-02 17:11:28 +08:00
}));
2022-03-23 13:11:01 +08:00
let request = {
2022-03-23 16:01:10 +08:00
sourceType: sourceType,
2022-06-28 18:07:41 +08:00
currentSettingFields: [...attendList, ...customList]
2022-06-02 17:11:28 +08:00
};
2022-06-28 18:07:41 +08:00
API.saveAttendanceFieldSetting(request).then(res => {
2022-06-02 17:11:28 +08:00
if (res.status) {
message.success("保存成功");
2022-03-23 13:11:01 +08:00
} else {
2022-06-02 17:11:28 +08:00
message.error(res.errormsg || "保存失败");
2022-03-23 13:11:01 +08:00
}
2022-06-02 17:11:28 +08:00
});
};
2022-03-23 13:11:01 +08:00
2022-03-23 14:19:45 +08:00
//数据采集-考勤引用-考勤引用字段设置-恢复默认设置
@action
2022-03-23 16:01:10 +08:00
returnToAttendanceFieldSettingDefault = (sourceType = "IMPORT") => {
2022-06-28 18:07:41 +08:00
API.returnToAttendanceFieldSettingDefault({
sourceType: sourceType
}).then(res => {
if (res.status) {
this.requestFeildAttendList = res.data[0] ? res.data[0].items : [];
this.fieldSettingAttendList = this.requestFeildAttendList;
this.requestFeildCustomList = res.data[1] ? res.data[1].items : [];
this.fieldSettingCustomList = this.requestFeildCustomList;
} else {
message.error(res.errormsg || "获取数据失败");
2022-03-23 14:19:45 +08:00
}
2022-06-28 18:07:41 +08:00
});
2022-06-02 17:11:28 +08:00
};
2022-03-23 14:19:45 +08:00
//数据采集-考勤引用-考勤引用字段设置-设为默认设置
@action
2022-03-23 16:01:10 +08:00
saveAttendanceFieldSettingAsDefault = (sourceType = "IMPORT") => {
2022-06-28 18:07:41 +08:00
let attendList = this.requestFeildAttendList.map(item => ({
2022-06-02 17:11:28 +08:00
id: item.id,
2022-06-28 18:07:41 +08:00
checked: item.checked
2022-06-02 17:11:28 +08:00
}));
2022-06-28 18:07:41 +08:00
let customList = this.requestFeildCustomList.map(item => ({
2022-06-02 17:11:28 +08:00
id: item.id,
2022-06-28 18:07:41 +08:00
checked: item.checked
2022-06-02 17:11:28 +08:00
}));
2022-03-23 14:19:45 +08:00
let request = {
2022-06-02 17:11:28 +08:00
sourceType: sourceType,
2022-06-28 18:07:41 +08:00
currentSettingFields: [...attendList, ...customList]
2022-06-02 17:11:28 +08:00
};
2022-06-28 18:07:41 +08:00
API.saveAttendanceFieldSettingAsDefault(request).then(res => {
2022-06-02 17:11:28 +08:00
if (res.status) {
message.success("设置成功");
2022-03-23 14:19:45 +08:00
} else {
2022-06-02 17:11:28 +08:00
message.error(res.errormsg || "设置失败");
2022-03-23 14:19:45 +08:00
}
2022-06-02 17:11:28 +08:00
});
};
2022-04-25 14:32:51 +08:00
// 导入表单-账套列表
@action
getLedgerList = () => {
return new Promise((resolve, reject) => {
2022-06-28 18:07:41 +08:00
API.getLedgerList({}).then(res => {
2022-06-02 17:11:28 +08:00
if (res.status) {
this.importLedgerList = res.data;
resolve(this.importLedgerList);
2022-04-25 14:32:51 +08:00
} else {
2022-06-02 17:11:28 +08:00
message.error(res.errormsg || "获取失败");
reject();
2022-04-25 14:32:51 +08:00
}
2022-06-02 17:11:28 +08:00
});
});
};
2022-04-25 14:32:51 +08:00
// 下载导入模板
@action
downloadTemplate = (salaryYearMonth, salarySobId) => {
2022-06-02 17:11:28 +08:00
API.downloadTemplate(salaryYearMonth, salarySobId);
};
2022-04-25 14:32:51 +08:00
// 导入预览
@action
2022-06-28 18:07:41 +08:00
previewAttendQuote = params => {
API.previewAttendQuote(params).then(res => {
2022-06-02 17:11:28 +08:00
if (res.status) {
this.previewAttendQuoteList = res.data;
2022-04-25 14:32:51 +08:00
this.previewAttendQuoteColumns = res.data.headers.map((item, index) => {
2022-06-02 17:11:28 +08:00
let column = {};
column.title = item;
2022-04-25 14:32:51 +08:00
column.dataIndex = "" + index;
2022-06-02 17:11:28 +08:00
column.key = index + "";
return column;
});
2022-04-25 14:32:51 +08:00
2022-06-28 18:07:41 +08:00
this.previewAttendQuoteDataSource = res.data.list.map(item => {
2022-06-02 17:11:28 +08:00
let data = {};
2022-04-25 14:32:51 +08:00
item.map((i, index) => {
2022-06-02 17:11:28 +08:00
data[index + ""] = i;
});
return data;
});
2022-04-25 14:32:51 +08:00
} else {
message.error(res.errormsg || "获取失败");
}
2022-06-02 17:11:28 +08:00
});
};
2022-04-25 14:32:51 +08:00
// 考勤导入
@action
2022-06-28 18:07:41 +08:00
importAttendQuoteData = params => {
API.importAttendQuoteData(params).then(res => {
2022-06-02 17:11:28 +08:00
if (res.status) {
this.importResult = res.data;
2022-04-25 14:32:51 +08:00
} else {
2022-06-02 17:11:28 +08:00
message.error(res.errormsg || "导入失败");
2022-04-25 14:32:51 +08:00
}
2022-06-02 17:11:28 +08:00
});
};
2022-04-25 16:17:03 +08:00
// 考勤数据详情
@action
2022-05-30 17:30:53 +08:00
viewAttendQuote = (params = {}) => {
2022-06-28 18:07:41 +08:00
API.viewAttendQuote(params).then(res => {
2022-06-02 17:11:28 +08:00
if (res.status) {
this.attendQuoteDetailPageInfo = res.data.pageInfo;
this.attendQuoteDetailTableStore.getDatas(res.data.dataKey.datas);
2022-04-25 16:17:03 +08:00
} else {
2022-06-02 17:11:28 +08:00
message.error(res.errormsg || "获取失败");
2022-04-25 16:17:03 +08:00
}
2022-06-02 17:11:28 +08:00
});
};
2022-04-26 10:42:08 +08:00
// 考勤引用同步
@action
2022-06-28 18:07:41 +08:00
syncAttendanceRefer = params => {
2022-04-26 10:42:08 +08:00
return new Promise((resolve, reject) => {
2022-06-28 18:07:41 +08:00
API.syncAttendanceRefer(params).then(res => {
2022-06-02 17:11:28 +08:00
if (res.status) {
message.success("同步成功");
resolve();
2022-04-26 10:42:08 +08:00
} else {
2022-06-02 17:11:28 +08:00
message.error(res.errormsg || "同步失败");
2022-04-26 10:42:08 +08:00
reject();
}
2022-06-02 17:11:28 +08:00
});
});
};
// 考勤引用同步
@action
2022-06-28 18:07:41 +08:00
checkOperation = params => {
2022-06-02 17:11:28 +08:00
return API.checkOperation(params);
};
2022-05-07 14:47:14 +08:00
// 根据所属月和账套获取周期
@action
getSalaryCycleAndAttendCycle = (salaryYearMonthStr, salarySobId) => {
2022-06-28 18:07:41 +08:00
API.getSalaryCycleAndAttendCycle({
salaryYearMonthStr,
salarySobId
}).then(res => {
if (res.status) {
this.cycle = res.data;
} else {
message.error(res.errormsg || "获取失败");
2022-05-07 14:47:14 +08:00
}
2022-06-28 18:07:41 +08:00
});
2022-06-02 17:11:28 +08:00
};
}