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 ? [ - , - , - - ] : [] + , + + ] : currentStep === 2 ? [ + , + + ] : + [] } title="新建工资单模板" content={
{ - currentStep === 0 && - + currentStep === 0 && this.handleBaseInfoChange(request)}/> } { currentStep === 1 && } + { + currentStep === 2 && + }
} /> @@ -397,42 +463,61 @@ export default class Payroll extends React.Component { top={0} width={50} height={100} - direction={"right"} - measure={"%"} + direction="right" + measure="%" title={ 保存 - ] : selectedTab === "1" ? [ - , + selectedTab === 0 ? [ + + ] : selectedTab === 1 ? [ + , - ] : [] - } - subItemChange={ - (selectedTab) => { - this.setState({ selectedTab }); - } + ] : [ + + ] } + 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("保存成功");