diff --git a/pc4mobx/hrmSalary/apis/payroll.js b/pc4mobx/hrmSalary/apis/payroll.js
index c4182a0a..80011331 100644
--- a/pc4mobx/hrmSalary/apis/payroll.js
+++ b/pc4mobx/hrmSalary/apis/payroll.js
@@ -315,6 +315,29 @@ export const grantProxy = params => {
}).then(res => res.json());
};
+// 工资单发放-新建时获取补发工资单模板薪资项目设置
+export const getReplenishForm = params => {
+ return fetch("/api/bs/hrmsalary/salaryBill/template/getReplenishForm", {
+ method: "POST",
+ mode: "cors",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json());
+};
+
+// 工资单发放-获取规则设置下拉框
+export const getReplenishRuleSetOptions = ({ salarySobId }) => {
+ return fetch(`/api/bs/hrmsalary/salaryBill/template/getReplenishRuleSetOptions?salarySobId=${salarySobId}`, {
+ method: "GET",
+ mode: "cors",
+ headers: {
+ "Content-Type": "application/json"
+ }
+ }).then(res => res.json());
+};
+
//添加发送和撤回人员范围列表
export const sendRangeList = (params) => {
return postFetch('/api/bs/hrmsalary/salaryBill/send/range/list', params);
diff --git a/pc4mobx/hrmSalary/components/stepSlide/stepSlideHeader.js b/pc4mobx/hrmSalary/components/stepSlide/stepSlideHeader.js
index 4a4918d9..35d4ac22 100644
--- a/pc4mobx/hrmSalary/components/stepSlide/stepSlideHeader.js
+++ b/pc4mobx/hrmSalary/components/stepSlide/stepSlideHeader.js
@@ -1,28 +1,29 @@
-import React from 'react';
-import { WeaSteps } from 'ecCom'
+import React from "react";
+import { WeaSteps } from "ecCom";
+import "./index.less";
+
const Step = WeaSteps.Step;
-import "./index.less"
export default class StepSlideHeader extends React.Component {
- render() {
- return (
-
-
-
- {
- this.props.steps && this.props.steps.map(item =>
- (
-
- )
- )
- }
-
-
-
- {this.props.children}
-
-
-
- )
- }
-}
\ No newline at end of file
+ render() {
+ return (
+
+
+
+ {
+ this.props.steps && this.props.steps.map(item =>
+ (
+
+ )
+ )
+ }
+
+
+
+ {this.props.children}
+
+
+
+ );
+ }
+}
diff --git a/pc4mobx/hrmSalary/pages/payroll/index.js b/pc4mobx/hrmSalary/pages/payroll/index.js
index f96aacc7..8d32eb51 100644
--- a/pc4mobx/hrmSalary/pages/payroll/index.js
+++ b/pc4mobx/hrmSalary/pages/payroll/index.js
@@ -6,14 +6,17 @@ import moment from "moment";
import { WeaHelpfulTip, WeaInputSearch, WeaSelect, WeaSlideModal, WeaTop } from "ecCom";
import { renderLoading } from "../../util"; // 渲染form数据的方法:因为多个页面都会使用,所以抽的公共方法在util中
import CustomTab from "../../components/customTab";
+
+import { columns, tempateColumns } from "./columns";
import StepSlide from "../../components/stepSlide";
import BaseInformForm from "./stepForm/baseInformForm";
import ShowSettingForm from "./stepForm/showSettingForm";
import SlideModalTitle from "../../components/slideModalTitle";
import TemplateSettingList from "./templateSettingList";
-import { notNull } from "../../util/validate";
+import TemplateSettingForm from "./stepForm/tmplateSettingForm";
import CopyModal from "./copyModal";
import SalarySendList from "./SalarySendList";
+import { getReplenishForm } from "../../apis/payroll";
import "../dataAcquisition/cumDeduct/index.less";
const { MonthPicker } = DatePicker;
@@ -28,7 +31,7 @@ export default class Payroll extends React.Component {
selectedKey: "0",
currentStep: 0,
stepSlideVisible: false,
- selectedTab: "0",
+ selectedTab: 0,
editSlideVisible: false,
initSelected: false,
ledgerOptions: [],
@@ -60,11 +63,37 @@ export default class Payroll extends React.Component {
setTemplateBaseData(request);
};
+ getReplenishForm = (isEdit = false, params = {}) => {
+ const { payrollStore } = this.props;
+ const { templateBaseData, salaryTemplateShowSet, setReplenishSalaryTemplateSalaryItemSet } = payrollStore;
+ if (!salaryTemplateShowSet.theme && !isEdit) {
+ Modal.warning({
+ title: "信息确认",
+ content: "必要信息不完整,红色*为必填项!"
+ });
+ return;
+ }
+ getReplenishForm({ salarySobId: templateBaseData.salarySob, ...params }).then(({ status, data }) => {
+ if (status) {
+ if (!isEdit) {
+ this.setState({ currentStep: this.state.currentStep + 1 }, () => {
+ setReplenishSalaryTemplateSalaryItemSet(data.replenishSalaryTemplateSalaryItemSet);
+ window.localStorage.setItem("salaryTemplateShowSet", JSON.stringify(salaryTemplateShowSet));
+ });
+ } else {
+ setReplenishSalaryTemplateSalaryItemSet(data.replenishSalaryTemplateSalaryItemSet);
+ window.localStorage.setItem("salaryTemplateShowSet", JSON.stringify(salaryTemplateShowSet));
+ }
+ }
+ });
+ };
// 新建保存
handleSave = () => {
const { payrollStore } = this.props;
const { fetchSavePayroll } = payrollStore;
fetchSavePayroll().then(() => {
+ window.localStorage.removeItem("templateBaseData");
+ window.localStorage.removeItem("salaryTemplateShowSet");
this.setState({ currentStep: 0, stepSlideVisible: false });
});
};
@@ -102,7 +131,7 @@ export default class Payroll extends React.Component {
const { getPayrollShowForm } = payrollStore;
this.recordId = record.id;
getPayrollShowForm(record.id);
- this.setState({ templateCurrentId: record.id, selectedTab: "0" }, () => {
+ this.setState({ templateCurrentId: record.id, selectedTab: 0 }, () => {
this.setState({ editSlideVisible: true });
});
}
@@ -137,9 +166,6 @@ export default class Payroll extends React.Component {
content: "确认删除",
onOk: () => {
deletePayroll([record.id]);
- },
- onCancel: () => {
-
}
});
}
@@ -167,8 +193,29 @@ export default class Payroll extends React.Component {
// 更新保存
handleUpdateSave = () => {
+ const { selectedTab } = this.state;
const { payrollStore } = this.props;
const { fetchUpdatePayroll } = payrollStore;
+ if (selectedTab === 0) {
+ if (!this.validateStep1()) {
+ Modal.warning({
+ title: "信息确认",
+ content: "必要信息不完整,红色*为必填项!"
+ });
+ return;
+ }
+ } else if (selectedTab === 1) {
+ const { salaryTemplateShowSet } = payrollStore;
+ if (!salaryTemplateShowSet.theme) {
+ Modal.warning({
+ title: "信息确认",
+ content: "必要信息不完整,红色*为必填项!"
+ });
+ return;
+ }
+ }
+
+
fetchUpdatePayroll(this.recordId).then(() => {
this.setState({
editSlideVisible: false,
@@ -191,6 +238,18 @@ export default class Payroll extends React.Component {
getPayrollList({ salaryYearMonth: this.salaryYearMonth, ...pageInfo });
}
+ validateStep1 = () => {
+ const { payrollStore: { templateBaseData } } = this.props;
+ const { reissueRule = "0" } = templateBaseData;
+ const validList = reissueRule === "0" ? ["name", "replenishName", "salarySob"] : ["name", "replenishName", "salarySob", "replenishRule"];
+ if (_.every(validList, it => !!templateBaseData[it])) {
+ window.localStorage.setItem("templateBaseData", JSON.stringify(templateBaseData));
+ } else {
+ window.localStorage.removeItem("templateBaseData");
+ }
+ return _.every(validList, it => !!templateBaseData[it]);
+ };
+
render() {
const { payrollStore, taxAgentStore: { showOperateBtn } } = this.props;
const { loading, hasRight, templateStore, deletePayroll } = payrollStore;
@@ -285,20 +344,15 @@ export default class Payroll extends React.Component {
);
}
};
- const steps = ["基础设置", "显示设置"];
- const validateStep1 = () => {
- const { payrollStore: { templateBaseData } } = this.props;
- if (!notNull(templateBaseData.name) || !notNull(templateBaseData.salarySob)) {
+ const steps = ["基础设置", "正常核算工资单模板", "补发工资单模版"];
+ const nextStep = () => {
+ if (!this.validateStep1()) {
Modal.warning({
title: "信息确认",
content: "必要信息不完整,红色*为必填项!"
});
- return false;
+ return;
}
- return true;
- };
- const nextStep = () => {
- if (!validateStep1()) return;
this.setState({
currentStep: this.state.currentStep + 1
});
@@ -359,6 +413,8 @@ export default class Payroll extends React.Component {
currentStep={currentStep}
steps={steps}
onCancel={() => {
+ window.localStorage.removeItem("templateBaseData");
+ window.localStorage.removeItem("salaryTemplateShowSet");
this.setState({ stepSlideVisible: false });
}}
customOperate={
@@ -367,23 +423,33 @@ export default class Payroll extends React.Component {
nextStep();
}}>下一步
] : currentStep === 1 ? [
-
- ] : selectedTab === "1" ? [
- 保存,
+ selectedTab === 0 ? [
+ {
+ this.handleUpdateSave();
+ }}>保存
+ ] : selectedTab === 1 ? [
+ {
+ this.handleUpdateSave();
+ }}>保存,
预览
- ] : []
- }
- subItemChange={
- (selectedTab) => {
- this.setState({ selectedTab });
- }
+ ] : [
+ {
+ this.handleUpdateSave();
+ }}>保存
+ ]
}
+ subItemChange={(selectedTab) => {
+ this.setState({ selectedTab: Number(selectedTab) }, () => {
+ if (this.state.selectedTab === 2) this.getReplenishForm(true, { id: this.state.templateCurrentId });
+ });
+ }}
/>
}
content={
{
- selectedTab === "0" &&
-
+ selectedTab === 0 &&
+ this.handleBaseInfoChange(request)}/>
}
{
- selectedTab === "1" &&
+ selectedTab === 1 &&
+ }
+ {
+ selectedTab === 2 &&
}
}
- onClose={() => this.setState({ editSlideVisible: false }, () => this.setState({ selectedTab: 0 }))}
- showMask={true}
- closeMaskOnClick={() => this.setState({ editSlideVisible: false }, () => this.setState({ selectedTab: 0 }))}/>
+ onClose={() => this.setState({ editSlideVisible: false }, () => {
+ window.localStorage.removeItem("templateBaseData");
+ window.localStorage.removeItem("salaryTemplateShowSet");
+ this.setState({ selectedTab: 0 });
+ })}
+ />
}
{
this.state.copyModalVisible &&
diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js b/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js
index ad172aed..6fe0892b 100644
--- a/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js
+++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js
@@ -1,6 +1,7 @@
import React from "react";
import { WeaFormItem, WeaInput, WeaSearchGroup, WeaSelect } from "ecCom";
import { inject, observer } from "mobx-react";
+import { getReplenishRuleSetOptions } from "../../../apis/payroll";
import { toJS } from "mobx";
@inject("payrollStore")
@@ -11,6 +12,7 @@ export default class BaseInformForm extends React.Component {
this.state = {
inited: false,
options: [],
+ replenishRuleOptions: [],
request: {}
};
}
@@ -18,37 +20,60 @@ export default class BaseInformForm extends React.Component {
componentWillMount() {
const { payrollStore } = this.props;
const { getPayrollBaseForm } = payrollStore;
+ const templateBaseData = window.localStorage.getItem("templateBaseData") || "{}";
getPayrollBaseForm(this.props.id).then(data => {
this.setState(
{
+ replenishRuleOptions: _.map(data.replenishRuleSetOption, it => ({ key: it.id, showname: it.content })),
options: _.isEmpty(toJS(data.salarySobOptions)) ? [{ key: "", showname: "" }] : [{
key: "",
showname: ""
}, ...toJS(data.salarySobOptions)],
- request: data.templateBaseData
- },
- () => {
+ request: {
+ ...data.templateBaseData,
+ reissueRule: data.templateBaseData.replenishRule ? "1" : "0",
+ ...JSON.parse(templateBaseData)
+ }
+ }, () => {
+ this.props.onChange && this.props.onChange(this.state.request);
this.setState({
inited: true
});
}
);
});
+ JSON.parse(templateBaseData).salarySob && this.getReplenishRuleSetOptions({ salarySobId: JSON.parse(templateBaseData).salarySob });
}
- hanldeChange(params) {
+ hanldeChange = (params) => {
let request = { ...this.state.request, ...params };
this.setState({
request
+ }, () => {
+ if (this.state.request.reissueRule === "1" && this.state.request.salarySob) {
+ // TODO:获取规则设置枚举项
+ this.getReplenishRuleSetOptions();
+ }
});
this.props.onChange && this.props.onChange(request);
- }
+ };
+ getReplenishRuleSetOptions = (params = {}) => {
+ const { request } = this.state;
+ getReplenishRuleSetOptions({ salarySobId: request.salarySob, ...params }).then(({ status, data }) => {
+ if (status && !_.isEmpty(data)) {
+ this.setState({
+ replenishRuleOptions: _.map(data, it => ({ key: it.id, showname: it.content }))
+ });
+ }
+ });
+ };
render() {
- const { request, options } = this.state;
- const { salarySob, name, description } = request;
+ const { request, options, replenishRuleOptions } = this.state;
+ const { salarySob, name, description, replenishName, replenishRule, reissueRule } = request;
+
return (
-
+
this.hanldeChange({ name: value })}
/>
+
+ this.hanldeChange({ replenishName: value })}
+ />
+
+
+ this.hanldeChange({ reissueRule: value })}
+ />
+
+ {
+ reissueRule !== "0" &&
+
+ this.hanldeChange({ replenishRule: value })}
+ />
+
+ }
{
const { payrollStore: { salaryTemplateShowSet, setSalaryTemplateShowSet } } = this.props;
let request = { ...salaryTemplateShowSet, ...params };
setSalaryTemplateShowSet(request);
- }
+ };
// 工资单主题 插入变量
- handleThemeNameCllck(param) {
+ handleThemeNameCllck = (param) => {
const { payrollStore } = this.props;
const { salaryTemplateShowSet, setSalaryTemplateShowSet } = payrollStore;
let request = { ...salaryTemplateShowSet };
request.theme = (request.theme ? request.theme : "") + param;
setSalaryTemplateShowSet(request);
- }
+ };
- handleDownClick(index) {
+ handleDownClick = (index) => {
const { payrollStore: { salaryItemSet, setSalaryItemSet } } = this.props;
let downItem = salaryItemSet[index + 1];
let thisItem = salaryItemSet[index];
@@ -40,9 +40,9 @@ export default class ShowSettingForm extends React.Component {
resultSet[index] = downItem;
resultSet[index + 1] = thisItem;
setSalaryItemSet(resultSet);
- }
+ };
- handleUpClick(index) {
+ handleUpClick = (index) => {
const { payrollStore: { salaryItemSet, setSalaryItemSet } } = this.props;
let upItem = salaryItemSet[index - 1];
let thisItem = salaryItemSet[index];
@@ -50,11 +50,10 @@ export default class ShowSettingForm extends React.Component {
resultSet[index] = upItem;
resultSet[index - 1] = thisItem;
setSalaryItemSet(resultSet);
- }
+ };
- handleDeleteItem(group, item) {
+ handleDeleteItem = (group, item) => {
const { payrollStore: { salaryItemSet, setSalaryItemSet } } = this.props;
- console.log("item:", item);
let resultSalaryItemSet = [...salaryItemSet];
resultSalaryItemSet.map(sourceGroup => {
if (sourceGroup.id == group.id) {
@@ -66,9 +65,9 @@ export default class ShowSettingForm extends React.Component {
}
});
setSalaryItemSet(resultSalaryItemSet);
- }
+ };
- handleDeleteClick(index) {
+ handleDeleteClick = (index) => {
Modal.confirm({
title: "信息确认",
content: "确认删除",
@@ -77,14 +76,13 @@ export default class ShowSettingForm extends React.Component {
let resultSalaryItemSet = [...salaryItemSet];
resultSalaryItemSet.splice(index, 1);
setSalaryItemSet(resultSalaryItemSet);
- },
- onCancel: () => {
}
});
- }
+ };
render() {
- const { payrollStore } = this.props;
+ const { payrollStore, id } = this.props;
+ const salaryTemplateShowSetStorage = id ? "{}" : window.localStorage.getItem("salaryTemplateShowSet") || "{}";
const { salaryTemplateShowSet } = payrollStore;
const { salaryItemSet } = payrollStore;
const {
@@ -94,7 +92,7 @@ export default class ShowSettingForm extends React.Component {
textContentPosition,
salaryItemNullStatus,
salaryItemZeroStatus
- } = salaryTemplateShowSet;
+ } = { ...salaryTemplateShowSet, ...JSON.parse(salaryTemplateShowSetStorage) };
return (
diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/tmplateSettingForm.js b/pc4mobx/hrmSalary/pages/payroll/stepForm/tmplateSettingForm.js
new file mode 100644
index 00000000..af2ea5de
--- /dev/null
+++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/tmplateSettingForm.js
@@ -0,0 +1,121 @@
+import React from "react";
+import { Icon, Modal } from "antd";
+import { WeaSearchGroup } from "ecCom";
+import { inject, observer } from "mobx-react";
+import { toJS } from "mobx";
+import "./index.less";
+
+
+@inject("payrollStore")
+@observer
+export default class TemplateSettingForm extends React.Component {
+
+ handleDownClick = (index) => {
+ const { payrollStore: { replenishSalaryTemplateSalaryItemSet, setReplenishSalaryTemplateSalaryItemSet } } = this.props;
+ let downItem = replenishSalaryTemplateSalaryItemSet[index + 1];
+ let thisItem = replenishSalaryTemplateSalaryItemSet[index];
+ let resultSet = [...replenishSalaryTemplateSalaryItemSet];
+ resultSet[index] = downItem;
+ resultSet[index + 1] = thisItem;
+ setReplenishSalaryTemplateSalaryItemSet(resultSet);
+ };
+
+ handleUpClick = (index) => {
+ const { payrollStore: { replenishSalaryTemplateSalaryItemSet, setReplenishSalaryTemplateSalaryItemSet } } = this.props;
+ let upItem = replenishSalaryTemplateSalaryItemSet[index - 1];
+ let thisItem = replenishSalaryTemplateSalaryItemSet[index];
+ let resultSet = [...replenishSalaryTemplateSalaryItemSet];
+ resultSet[index] = upItem;
+ resultSet[index - 1] = thisItem;
+ setReplenishSalaryTemplateSalaryItemSet(resultSet);
+ };
+
+ handleDeleteItem = (group, item) => {
+ const { payrollStore: { replenishSalaryTemplateSalaryItemSet, setReplenishSalaryTemplateSalaryItemSet } } = this.props;
+ let resultSalaryItemSet = [...replenishSalaryTemplateSalaryItemSet];
+ resultSalaryItemSet.map(sourceGroup => {
+ if (sourceGroup.id === group.id) {
+ sourceGroup.items.map((sourceItem, index) => {
+ if (sourceItem.id === item.id) {
+ sourceGroup.items.splice(index, 1);
+ }
+ });
+ }
+ });
+ setReplenishSalaryTemplateSalaryItemSet(resultSalaryItemSet);
+ };
+
+ handleDeleteClick = (index) => {
+ Modal.confirm({
+ title: "信息确认",
+ content: "确认删除",
+ onOk: () => {
+ const { payrollStore: { replenishSalaryTemplateSalaryItemSet, setReplenishSalaryTemplateSalaryItemSet } } = this.props;
+ let resultSalaryItemSet = [...replenishSalaryTemplateSalaryItemSet];
+ resultSalaryItemSet.splice(index, 1);
+ setReplenishSalaryTemplateSalaryItemSet(resultSalaryItemSet);
+ },
+ onCancel: () => {
+ }
+ });
+ };
+
+ render() {
+ const { payrollStore } = this.props;
+ const { replenishSalaryTemplateSalaryItemSet } = payrollStore;
+ return (
+
+
+ {
+ !_.isEmpty(toJS(replenishSalaryTemplateSalaryItemSet)) &&
+ replenishSalaryTemplateSalaryItemSet.map((group, index) => (
+
+
{group.groupName}
+ {
+ index < replenishSalaryTemplateSalaryItemSet.length - 1 &&
+ {
+ this.handleDownClick(index);
+ }}
+ />
+ }
+ {
+ index > 0 &&
+ {
+ this.handleUpClick(index);
+ }}
+ />
+ }
+ {
+ this.handleDeleteClick(index);
+ }}
+ />
+
+
+ {group.items.map(item => (
+ {item.name}
+ {
+ this.handleDeleteItem(group, item);
+ }}
+ />
+
+ ))}
+
+
+ ))
+ }
+
+
+ );
+ }
+}
diff --git a/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js b/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js
index 3ddf0cad..aed71b03 100644
--- a/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js
+++ b/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js
@@ -10,6 +10,8 @@ export default class FormalFormModal extends React.Component {
constructor(props) {
super(props);
this.state = {
+ validateType: "",
+ returnType: "",
value: "",
extendParam: {
sqlReturnKey: "",
@@ -35,7 +37,9 @@ export default class FormalFormModal extends React.Component {
if (this.props.formulaId) {
detailFormual(this.props.formulaId).then(data => {
this.setState({
- value: data.formula
+ value: data.formula,
+ validateType: data.validateType,
+ returnType: data.returnType,
});
this.parameters = data.parameters;
this.referenceType = data.referenceType;
@@ -185,8 +189,8 @@ export default class FormalFormModal extends React.Component {
description: "备注",
module: "salary",
useFor: "salaryitem",
- returnType: this.props.dataType,
- validateType: this.props.dataType,
+ returnType: this.props.dataType || this.state.returnType,
+ validateType: this.props.dataType|| this.state.validateType,
extendParam: JSON.stringify(this.state.extendParam),
formula: this.state.value,
parameters: this.parameters,
diff --git a/pc4mobx/hrmSalary/single.js b/pc4mobx/hrmSalary/single.js
index 396ff1e7..6de29eb9 100644
--- a/pc4mobx/hrmSalary/single.js
+++ b/pc4mobx/hrmSalary/single.js
@@ -1,26 +1,26 @@
-import React from 'react';
-import ReactDOM from 'react-dom';
+import React from "react";
+import ReactDOM from "react-dom";
-import { createHashHistory } from 'History';
+import { createHashHistory } from "History";
-import { Router, Route, useRouterHistory, IndexRedirect } from 'react-router';
+import { IndexRedirect, Route, Router, useRouterHistory } from "react-router";
-import { syncHistoryWithStore, RouterStore } from 'mobx-react-router';
+import { RouterStore, syncHistoryWithStore } from "mobx-react-router";
-import { Provider } from 'mobx-react';
+import { Provider } from "mobx-react";
-import Module from 'weaHrmSalary';
+import Module from "weaHrmSalary";
const routing = new RouterStore();
const allStore = {
routing,
- ...Module.store,
+ ...Module.store
};
const browserHistory = useRouterHistory(createHashHistory)({
- queryKey: '_key',
- basename: '/',
+ queryKey: "_key",
+ basename: "/"
});
const history = syncHistoryWithStore(browserHistory, allStore.routing);
@@ -31,21 +31,24 @@ class Root extends React.Component {
componentWillMount() {
top.$(".ant-message").remove();
allStore.taxAgentStore.getPermission();
+ window.localStorage.removeItem("templateBaseData");
+ window.localStorage.removeItem("salaryTemplateShowSet");
}
+
render() {
return (
-
-
-
- { Module.Route }
+
+
+
+ {Module.Route}
- )
+ );
}
}
-ReactDOM.render(, document.getElementById('container'));
+ReactDOM.render(, document.getElementById("container"));
diff --git a/pc4mobx/hrmSalary/stores/payroll.js b/pc4mobx/hrmSalary/stores/payroll.js
index c54f25bb..5f1ee444 100644
--- a/pc4mobx/hrmSalary/stores/payroll.js
+++ b/pc4mobx/hrmSalary/stores/payroll.js
@@ -1,9 +1,8 @@
-import { action, observable } from "mobx";
+import { action, observable, toJS } from "mobx";
import { message } from "antd";
import { WeaForm, WeaTableNew } from "comsMobx";
import * as API from "../apis/payroll"; // 引入API接口文件
-import { notNull } from "../util/validate";
import { removePropertyCondition } from "../util/response";
const { TableStore } = WeaTableNew;
@@ -23,6 +22,7 @@ export class payrollStore {
@observable salarySobOptions = []; // 账套列表
// 显示设置表单
@observable salaryTemplateShowSet = {}; // 显示设置基础表单
+ @observable replenishSalaryTemplateSalaryItemSet = []; // 补发工资单模版基础表单
@observable salaryItemSet = []; // 显示设置薪资项
// **** 工资单页面 ****
@@ -53,6 +53,10 @@ export class payrollStore {
@observable canWidthdrawColumns = []; // 可以撤回的列表列名
@observable canWithdrawPageInfo = {}; // 可以撤回列表分页对象
+ @action
+ setReplenishSalaryTemplateSalaryItemSet = replenishSalaryTemplateSalaryItemSet =>
+ (this.replenishSalaryTemplateSalaryItemSet = replenishSalaryTemplateSalaryItemSet);
+
@action
setGrantListShowSearchAd = grantListShowSearchAd =>
(this.grantListShowSearchAd = grantListShowSearchAd);
@@ -64,8 +68,7 @@ export class payrollStore {
// 基础信息表单数据
@action
- setTemplateBaseData = templateBaseData =>
- (this.templateBaseData = templateBaseData);
+ setTemplateBaseData = templateBaseData => (this.templateBaseData = templateBaseData);
// 显示设置基础表单
@action
@@ -168,6 +171,7 @@ export class payrollStore {
})
: [];
resolve({
+ replenishRuleSetOption: res.data.replenishRuleSetOption,
templateBaseData: this.templateBaseData,
salarySobOptions: this.salarySobOptions
});
@@ -182,15 +186,14 @@ export class payrollStore {
// 工资单模板-获取工资单模板显示设置表单
@action
getPayrollShowForm = (id = "") => {
- let params = {
- id
- };
+ const params = { id };
+ const salaryTemplateShowSetStorage = window.localStorage.getItem("salaryTemplateShowSet") || "{}";
API.getPayrollShowForm(params).then(res => {
if (res.status) {
if (id !== "") {
this.salaryItemSet = res.data.salaryTemplateSalaryItemSet;
}
- this.salaryTemplateShowSet = res.data.salaryTemplateShowSet.data;
+ this.salaryTemplateShowSet = { ...res.data.salaryTemplateShowSet.data, ...JSON.parse(salaryTemplateShowSetStorage) };
} else {
message.error(res.errormsg || "获取失败");
}
@@ -216,23 +219,15 @@ export class payrollStore {
@action
initShowSettingForm = (id = "") => {
this.getPayrollShowForm(id);
- if (id == "") {
+ if (id === "") {
this.getPayrollItemList(this.templateBaseData.salarySob);
}
};
- // 校验显示设置表单
- validateSalaryTemplateShowSet = () => {
- if (!notNull(this.salaryTemplateShowSet.theme)) {
- message.warning("工资单主题不能为空");
- return false;
- }
- return true;
- };
-
// 拼装保存参数
convertParams = () => {
let params = { ...this.templateBaseData, ...this.salaryTemplateShowSet };
+ params.replenishRule = (!params.replenishRule || params.reissueRule === "0") ? "ALL" : params.replenishRule;
params.salarySobId = params.salarySob;
params.emailStatus = params.emailStatus ? params.emailStatus : false;
params.msgStatus = params.msgStatus ? params.msgStatus : false;
@@ -242,19 +237,16 @@ export class payrollStore {
params.salaryItemZeroStatus = params.salaryItemZeroStatus
? params.salaryItemZeroStatus
: false;
- params.salaryItemSetting = this.salaryItemSet;
+ params.salaryItemSetting = toJS(this.salaryItemSet);
+ params.replenishSalaryItemSetting = toJS(this.replenishSalaryTemplateSalaryItemSet);
return params;
};
// 工资单模板-新建工资单模板
@action
fetchSavePayroll = () => {
- let params = this.convertParams();
return new Promise((resolve, reject) => {
- if (!this.validateSalaryTemplateShowSet()) {
- reject();
- return false;
- }
+ const params = this.convertParams();
API.savePayroll(params).then(res => {
if (res.status) {
message.success("保存成功");
@@ -264,20 +256,16 @@ export class payrollStore {
message.error(res.errormsg || "保存失败");
reject();
}
- });
+ }).catch(() => reject());
});
};
// 工资单模板-更新工资单模板
@action
fetchUpdatePayroll = id => {
- let params = this.convertParams();
- params.id = id;
return new Promise((resolve, reject) => {
- if (!this.validateSalaryTemplateShowSet()) {
- reject();
- return false;
- }
+ let params = this.convertParams();
+ params.id = id;
API.updatePayroll(params).then(res => {
if (res.status) {
message.success("保存成功");