diff --git a/pc4mobx/hrmSalary/apis/calculate.js b/pc4mobx/hrmSalary/apis/calculate.js index 0abda464..f2bd582a 100644 --- a/pc4mobx/hrmSalary/apis/calculate.js +++ b/pc4mobx/hrmSalary/apis/calculate.js @@ -266,4 +266,13 @@ export const deleteExportTemplate = (params) => { export const getExportTemplateForm = (params) => { return postFetch("/api/bs/hrmsalary/salaryacct/acctresult/getExportTemplateForm", params); }; +//薪资核算-薪资项目改变否 +export const getCompareSobConfig = params => { + return WeaTools.callApi("/api/bs/hrmsalary/salaryacct/compareSobConfig", "GET", params); +}; +//薪资核算-更新薪资账套 +export const updateSobConfig = params => { + return WeaTools.callApi("/api/bs/hrmsalary/salaryacct/updateSobConfig", "GET", params); +}; + diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryDetails.js b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryDetails.js index 280a0f46..84882ff0 100644 --- a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryDetails.js +++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryDetails.js @@ -26,7 +26,7 @@ class SalaryDetails extends Component { this.state = { loading: false, dataSource: [], columns: [], selectedRowKeys: [], pageInfo: { current: 1, pageSize: 10, total: 0 }, payload: {}, - showTotalCell: false + showTotalCell: false, updateSum: true }; } @@ -54,10 +54,13 @@ class SalaryDetails extends Component { } else if (type === "turn") { if (id === "PAGEINFO") { const { pageNum: current, size: pageSize } = params; - this.setState({ pageInfo: { ...pageInfo, current, pageSize } }, () => this.getSalaryList(this.props)); + this.setState({ + pageInfo: { ...pageInfo, current, pageSize }, + updateSum: true + }, () => this.getSalaryList(this.props)); } else if (id === "CHECKBOX") { const { selectedRowKeys: checkBox } = params; - this.setState({ selectedRowKeys: checkBox }); + this.setState({ selectedRowKeys: checkBox, updateSum: false }); } } }; @@ -106,13 +109,13 @@ class SalaryDetails extends Component { }; getColumns = () => { const { attendanceStore: { tableStore } } = this.props; - const { dataSource, pageInfo, selectedRowKeys, showTotalCell, payload } = this.state; + const { dataSource, pageInfo, selectedRowKeys, showTotalCell, payload, updateSum } = this.state; const columns = _.filter(toJS(tableStore.columns), (item) => item.display === "true" && item.dataIndex !== "acctTimes"); const sumRowlistUrl = showTotalCell ? "/api/bs/hrmsalary/report/statistics/employee/salaryListSum" : ""; if (!_.isEmpty(columns)) { this.postMessageToChild({ - dataSource, pageInfo, selectedRowKeys, showTotalCell, calcDetail: true, tableScrollHeight: 154, payload, - sumRowlistUrl, + dataSource, pageInfo, selectedRowKeys, showTotalCell, calcDetail: true, tableScrollHeight: 154, + sumRowlistUrl, payload: { ...payload, updateSum }, columns: _.map(columns, (it, idx) => ({ ...it, width: (it.dataIndex === "taxAgent" || it.dataIndex === "salarySob") ? 176 : it.oldWidth, diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/index.js b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/index.js index d4681ac2..121e334a 100644 --- a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/index.js +++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/index.js @@ -42,8 +42,8 @@ class Index extends Component { keyword: "", year: moment().format("YYYY"), dateRange: [ - moment(new Date()).subtract(1, "year").startOf("year").format("YYYY-MM"), - moment(new Date()).endOf("year").format("YYYY-MM") + moment(new Date()).subtract(6, "months").format("YYYY-MM"), + moment(new Date()).format("YYYY-MM") ], showSearchAd: false, isQuery: false, diff --git a/pc4mobx/hrmSalary/pages/calculate/calcOc/components/salaryCalcOcImport.js b/pc4mobx/hrmSalary/pages/calculate/calcOc/components/salaryCalcOcImport.js index 11a784ca..95de0805 100644 --- a/pc4mobx/hrmSalary/pages/calculate/calcOc/components/salaryCalcOcImport.js +++ b/pc4mobx/hrmSalary/pages/calculate/calcOc/components/salaryCalcOcImport.js @@ -16,8 +16,7 @@ class SalaryCalcOcImport extends Component { super(props); this.state = { importDialog: { - visible: false, title: "", nextloading: false, importResult: {}, imageId: "", - link: "/api/bs/hrmsalary/salaryacct/comparisonresult/importtemplate/export?salaryAcctRecordId=", + visible: false, title: "", nextloading: false, importResult: {}, imageId: "", link: "", previewUrl: "/api/bs/hrmsalary/salaryacct/comparisonresult/preview", extraPreview: { salaryAcctRecordId: "" } } @@ -30,7 +29,7 @@ class SalaryCalcOcImport extends Component { this.setState({ importDialog: { ...this.state.importDialog, - link: `${importDialog.link}${nextProps.salaryAcctRecordId}`, + link: `/api/bs/hrmsalary/salaryacct/comparisonresult/importtemplate/export?salaryAcctRecordId=${nextProps.salaryAcctRecordId}`, visible: nextProps.visible, importResult: {}, title: nextProps.title, imageId: "", extraPreview: { salaryAcctRecordId: nextProps.salaryAcctRecordId } diff --git a/pc4mobx/hrmSalary/pages/calculate/doCalc/components/salaryEditCalc/index.js b/pc4mobx/hrmSalary/pages/calculate/doCalc/components/salaryEditCalc/index.js index e3ed75a1..54081da1 100644 --- a/pc4mobx/hrmSalary/pages/calculate/doCalc/components/salaryEditCalc/index.js +++ b/pc4mobx/hrmSalary/pages/calculate/doCalc/components/salaryEditCalc/index.js @@ -6,12 +6,12 @@ */ import React, { Component } from "react"; import { WeaHelpfulTip, WeaLocaleProvider } from "ecCom"; -import { Button } from "antd"; import { getColumnDesc, getSalarySobCycle } from "../../../../../apis/calculate"; import { sysConfCodeRule } from "../../../../../apis/ruleconfig"; import EditCalcAdvanceSearchPannel from "./editCalcAdvanceSearchPannel"; import EditCalcTable from "./editCalcTable"; import SalaryMonthTip from "../salaryMonthTip"; +import SalaryCalcLayout from "./salaryCalcLayout"; import cs from "classnames"; import "./index.less"; @@ -26,10 +26,6 @@ class Index extends Component { }; } - componentDidMount() { - const promise = this.init(); - } - openAdvanceSearch = () => this.setState({ showSearchAd: !this.state.showSearchAd }); onAdSearch = (bool = true) => { this.calcTableRef.wrappedInstance.queryCalcResultList(); @@ -57,7 +53,7 @@ class Index extends Component { const { salarySobCycle, showSearchAd, formulaTd, columnDesc, showTotalCell } = this.state; const { routeParams: { salaryAcctRecordId } } = this.props; const formulaObj = _.get(columnDesc, [formulaTd]) || {}; - return ( + return ( this.onAdSearch(false)}>
@@ -92,7 +88,7 @@ class Index extends Component { {...this.props} showTotalCell={showTotalCell} onShowFormulaTd={this.handleShowFormulaTa}/>
- ); + ); } } diff --git a/pc4mobx/hrmSalary/pages/calculate/doCalc/components/salaryEditCalc/index.less b/pc4mobx/hrmSalary/pages/calculate/doCalc/components/salaryEditCalc/index.less index 77f3e425..3d23810b 100644 --- a/pc4mobx/hrmSalary/pages/calculate/doCalc/components/salaryEditCalc/index.less +++ b/pc4mobx/hrmSalary/pages/calculate/doCalc/components/salaryEditCalc/index.less @@ -207,3 +207,39 @@ } } } + +.infoConfirmDialog { + .confirm-content { + width: 100%; + height: 100%; + padding: 16px; + overflow: auto; + position: relative; + display: flex; + flex-direction: column; + justify-content: space-between; + + .contract { + text-align: center; + flex-grow: 1; + flex-shrink: 1; + } + + .confirm-container { + flex-grow: 0; + flex-shrink: 0; + margin-top: 8px; + width: 100%; + + } + } +} + +.loadingLayout { + width: 100%; + height: 100%; + text-align: center; + border-radius: 4px; + padding: 30px 50px; + margin: 20px 0; +} diff --git a/pc4mobx/hrmSalary/pages/calculate/doCalc/components/salaryEditCalc/salaryCalcLayout.js b/pc4mobx/hrmSalary/pages/calculate/doCalc/components/salaryEditCalc/salaryCalcLayout.js new file mode 100644 index 00000000..c95f07b0 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/calculate/doCalc/components/salaryEditCalc/salaryCalcLayout.js @@ -0,0 +1,96 @@ +/* + * Author: 黎永顺 + * name: 薪资核算-layout + * Description: + * Date: 2024/4/26 + */ +import React, { Component } from "react"; +import { WeaCheckbox, WeaDialog, WeaLocaleProvider } from "ecCom"; +import { Button, message, Spin } from "antd"; +import * as API from "../../../../../apis/calculate"; +import "./index.less"; + +const getLabel = WeaLocaleProvider.getLabel; + +class SalaryCalcLayout extends Component { + constructor(props) { + super(props); + this.state = { + fieldInformationConfirm: { visible: false, data: {} }, userConfirmed: "0", show: false + }; + } + + componentDidMount() { + this.getCompareSobConfig(); + } + + getCompareSobConfig = () => { + const { fieldInformationConfirm } = this.state; + const { routeParams: { salaryAcctRecordId: id } } = this.props; + API.getCompareSobConfig({ id }).then(({ status, data }) => { + if (status && data) { + this.setState({ + fieldInformationConfirm: { ...fieldInformationConfirm, visible: data } + }); + } else { + this.setState({ show: true }, () => this.props.init()); + } + }).catch(() => this.setState({ show: true }, () => this.props.init())); + }; + onOk = () => { + const { fieldInformationConfirm } = this.state; + const { routeParams: { salaryAcctRecordId: id } } = this.props; + API.updateSobConfig({ id }).then(({ status, errormsg }) => { + if (status) { + message.success(getLabel(30700, "操作成功!")); + this.setState({ + show: true, + fieldInformationConfirm: { ...fieldInformationConfirm, visible: false } + }, () => { + this.props.init(); + this.props.onConfirm(); + }); + } else { + message.error(errormsg); + } + }); + }; + + render() { + const { fieldInformationConfirm, userConfirmed, show } = this.state; + const buttons = [ + , + + ]; + return ( + + { + show ? this.props.children :
+ } + + this.setState({ + show: true, + fieldInformationConfirm: { ...fieldInformationConfirm, visible: false } + }, () => this.props.init())}> +
+
+ {getLabel("111", "账套发生变更,是否需要更新账套设置?更新后核算将按照最新的账套进行核算,请谨慎操作。")} +
+
+ this.setState({ userConfirmed: v })}/> +
+
+
+
+ ); + } +} + +export default SalaryCalcLayout; diff --git a/pc4mobx/hrmSalary/pages/calculate/doCalc/index.js b/pc4mobx/hrmSalary/pages/calculate/doCalc/index.js index d8a8d78e..0d1c87fc 100644 --- a/pc4mobx/hrmSalary/pages/calculate/doCalc/index.js +++ b/pc4mobx/hrmSalary/pages/calculate/doCalc/index.js @@ -216,23 +216,17 @@ class Index extends Component { /> } {/* 薪资核算-自定义导出*/} - { - this.setState({ - customExpDialog: { ...customExpDialog, visible: false } - }); - }} - /> + { + this.setState({ + customExpDialog: { ...customExpDialog, visible: false } + }); + }}/> {/* 薪资核算-导入*/} - { - this.setState({ - salaryImpDialog: { ...salaryImpDialog, visible: false } - }, () => isFresh && this.calc.onAdSearch(false)); - }} - /> + { + this.setState({ + salaryImpDialog: { ...salaryImpDialog, visible: false } + }, () => isFresh && this.calc.onAdSearch(false)); + }}/>
diff --git a/pc4mobx/hrmSalary/pages/salaryItem/columns.js b/pc4mobx/hrmSalary/pages/salaryItem/columns.js index d03e1dfc..e34b5431 100644 --- a/pc4mobx/hrmSalary/pages/salaryItem/columns.js +++ b/pc4mobx/hrmSalary/pages/salaryItem/columns.js @@ -128,6 +128,13 @@ export const salaryItemFields = [ viewAttr: 2, tip: "" }, + // { + // key: "defaultValue", + // label: "默认值", + // type: "INPUT", + // viewAttr: 2, + // tip: "" + // }, { key: "formulaContent", label: "公式", diff --git a/pc4mobx/hrmSalary/pages/salaryItem/salaryItemForm.js b/pc4mobx/hrmSalary/pages/salaryItem/salaryItemForm.js index 564c2ef8..47d48a73 100644 --- a/pc4mobx/hrmSalary/pages/salaryItem/salaryItemForm.js +++ b/pc4mobx/hrmSalary/pages/salaryItem/salaryItemForm.js @@ -84,6 +84,13 @@ class SalaryItemForm extends Component { ...item, viewAttr: (useInEmployeeSalary.toString() === "0" && ((isLedger && record.canEdit) || (editable && record.canEdit) || isAdd)) ? 2 : 1 }; + case "defaultValue": + return { + ...item, + type: dataType === "number" ? "INPUTNUMBER" : "INPUT", + display: valueType && valueType.toString() === "1", + viewAttr: (isLedger && record.canEdit) || (editable && record.canEdit) || isAdd ? 2 : 1 + }; case "formulaContent": return { ...item, @@ -111,6 +118,10 @@ class SalaryItemForm extends Component { return { ...item, display: v === "1", viewAttr: 3 }; } else if (key === "dataType" && (item.key === "roundingMode" || item.key === "pattern")) { return { ...item, display: v === "number" }; + } else if (key === "dataType" && (item.key === "defaultValue")) { + return { ...item, type: v === "number" ? "INPUTNUMBER" : "INPUT" }; + } else if (key === "valueType" && item.key === "defaultValue") { + return { ...item, display: v === "1" }; } else if (key === "valueType" && (item.key === "originSqlContent" || item.key === "originFormulaContent")) { return { ...item, diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/welfareArchive/components/welfareEditArchiveSlide/index.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/welfareArchive/components/welfareEditArchiveSlide/index.js index 03a89212..e2342e93 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/welfareArchive/components/welfareEditArchiveSlide/index.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/welfareArchive/components/welfareEditArchiveSlide/index.js @@ -6,7 +6,7 @@ */ import React, { Component } from "react"; import { inject, observer } from "mobx-react"; -import { WeaLocaleProvider, WeaSlideModal, WeaTools } from "ecCom"; +import { WeaDialog, WeaLocaleProvider, WeaSlideModal, WeaTools } from "ecCom"; import * as API from "../../../../../apis/welfareArchive"; import { getTaxAgentSelectList } from "../../../../../apis/taxAgent"; import { sysinfo } from "../../../../../apis/ruleconfig"; @@ -23,7 +23,7 @@ class Index extends Component { constructor(props) { super(props); this.state = { - loading: false, conditions: [], formData: {} + loading: false, conditions: [], formData: {}, errorDialog: { visible: false, errorMsg: "" } }; } @@ -180,7 +180,7 @@ class Index extends Component { welfareType, validate: welfareData[`${underTakeType}SchemeId`] ? !!welfareData[`${underTakeType}StartTime`] : true }; }; - save = async () => { + save = async (changeData = false) => { const socailPayload = this.covertPayload("SOCIAL_SECURITY", "social", getConditionDomkeys(this.props.socialBase.items), getConditionDomkeys(this.props.socialBase.comItems || [])), fundPayload = this.covertPayload("ACCUMULATION_FUND", "fund", getConditionDomkeys(this.props.fundBase.items), getConditionDomkeys(this.props.fundBase.comItems || [])), otherPayload = this.covertPayload("OTHER", "other", getConditionDomkeys(this.props.otherBase.items), getConditionDomkeys(this.props.otherBase.comItems || [])); @@ -198,13 +198,18 @@ class Index extends Component { }, { status: otherStatus, errormsg: otherErrorMsg = "!" - }] = await Promise.all([API.save(socailPayload), API.save(fundPayload), API.save(otherPayload)]); + }] = await Promise.all([ + API.save({ ...socailPayload, changeData }), + API.save({ ...fundPayload, changeData }), + API.save({ ...otherPayload, changeData })]); this.setState({ loading: false }); if (socialStatus && fundStatus && otherStatus) { message.success(getLabel(30700, "操作成功!")); this.props.onClose(true); } else { - message.error(socialErrorMsg + fundErrorMsg + otherErrorMsg); + !changeData && this.setState({ + errorDialog: { visible: true, errorMsg: socialErrorMsg + fundErrorMsg + otherErrorMsg } + }); } }; updateFormData = (baseData) => this.setState({ formData: { ...this.state.formData, ...baseData } }); @@ -246,18 +251,19 @@ class Index extends Component { }; handleExtraChange = (key, value) => this.setState({ formData: { ...this.state.formData, [key]: value } }); handleSameChange = (baseItems, value) => { + if (!value) return; let newFormDatas = {}, hasCompromise = false; baseItems.forEach((formLabel) => { - const { min, max } = formLabel; + // const { min, max } = formLabel; newFormDatas[getKey(formLabel)] = toDecimal_n(value, 2) || ""; - if (min !== "0.000" && value !== "" && Number(value) < Number(min)) { - hasCompromise = true; - newFormDatas[getKey(formLabel)] = toDecimal_n(Number(min), 2); - } - if (max !== "0.000" && value !== "" && Number(value) > Number(max)) { - hasCompromise = true; - newFormDatas[getKey(formLabel)] = toDecimal_n(Number(max), 2); - } + // if (min !== "0.000" && value !== "" && Number(value) < Number(min)) { + // hasCompromise = true; + // newFormDatas[getKey(formLabel)] = toDecimal_n(Number(min), 2); + // } + // if (max !== "0.000" && value !== "" && Number(value) > Number(max)) { + // hasCompromise = true; + // newFormDatas[getKey(formLabel)] = toDecimal_n(Number(max), 2); + // } }); if (hasCompromise) { message.warning(getLabel("111", "超出所选缴纳方案设置的基数上下限范围,将自动按基数上下限填充。")); @@ -278,7 +284,7 @@ class Index extends Component {
{ runStatuses !== "4,5" && showOperateBtn && - + }
; @@ -300,7 +306,7 @@ class Index extends Component { render() { const { archivesStore: { welfareProfileForm }, showOperateBtn } = this.props; - const { conditions, formData } = this.state; + const { conditions, formData, errorDialog } = this.state; return ( { + this.setState({ errorDialog: { ...errorDialog, visible: false } }, () => { + const promise = this.save(true); + message.success(getLabel(30700, "操作成功!")); + this.props.onClose(true); + }); + }}>{getLabel(111, "确认")} + ]} + onCancel={() => this.setState({ errorDialog: { ...errorDialog, visible: false } })} + bottomLeft={getLabel(111, "点击【确认】自动将不满足条件的基数值设置为对应的上限或下限值")} + > +
+
") }}/> +
+
} /> ); diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/welfareArchive/config.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/welfareArchive/config.js index 7431c2d7..cbec934f 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/welfareArchive/config.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/welfareArchive/config.js @@ -815,8 +815,8 @@ const BenefitBaseComponent = (props) => { com: onChange(getKey(child), v)} viewAttr={(runStatuses === "4,5" || !showOperateBtn) ? 1 : 2} /> diff --git a/pc4mobx/hrmSalary/stores/salaryItem.js b/pc4mobx/hrmSalary/stores/salaryItem.js index 54a84562..cc3a0214 100644 --- a/pc4mobx/hrmSalary/stores/salaryItem.js +++ b/pc4mobx/hrmSalary/stores/salaryItem.js @@ -34,7 +34,8 @@ export class SalaryItemStore { dataType: "number", description: "", sharedType: "0", - taxAgentIds: "" + taxAgentIds: "", + defaultValue: "" }; @observable tableDataSource = []; // 主列表 @@ -75,7 +76,8 @@ export class SalaryItemStore { dataType: "number", description: "", sharedType: "0", - taxAgentIds: "" + taxAgentIds: "", + defaultValue: "" }; @action