From d44b5d279ddd86f7ed13973594e2ec80bf764213 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com>
Date: Wed, 14 Dec 2022 19:40:05 +0800
Subject: [PATCH] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97=E9=A1=B5?=
=?UTF-8?q?=E9=9D=A2=E9=87=8D=E6=9E=84,=E8=96=AA=E8=B5=84=E6=A0=B8?=
=?UTF-8?q?=E7=AE=97=E9=A1=B5=E9=9D=A2=E6=B7=BB=E5=8A=A0=E5=9B=9E=E7=AE=97?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BB=A5=E5=8F=8A=E6=A0=B8=E7=AE=97=E8=AF=A6?=
=?UTF-8?q?=E6=83=85=E9=A1=B5=E9=9D=A2=E6=B7=BB=E5=8A=A0=E8=A1=A5=E5=8F=91?=
=?UTF-8?q?=E5=B7=B2=E5=8F=91tab?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pc4mobx/hrmSalary/apis/calculate.js | 11 ++
pc4mobx/hrmSalary/pages/calculate/index.js | 10 ++
.../pages/calculateDetail/editSalaryDetail.js | 143 +++++++++++-------
.../calculateDetail/issuedAndReissueTable.js | 70 +++++++++
.../LedgerBackCalculatedSalaryItemTable.js | 18 ++-
.../components/ledgerBackCalcEditSlide.js | 10 +-
.../ledgerBackCalculatedSalaryItem.js | 2 +-
.../components/ledgerBaseSetting.js | 1 +
.../ledgerPage/components/ledgerSalaryItem.js | 23 ++-
.../components/ledgerSalaryItemAddModal.js | 3 +-
.../components/ledgerSalaryItemBaseInfo.js | 9 +-
.../ledgerSalaryItemPreviewModal.js | 63 ++++++++
.../ledgerPage/components/ledgerSlide.js | 1 -
.../pages/salaryItem/formalFormModal.js | 14 +-
pc4mobx/hrmSalary/stores/calculate.js | 17 ++-
15 files changed, 314 insertions(+), 81 deletions(-)
create mode 100644 pc4mobx/hrmSalary/pages/calculateDetail/issuedAndReissueTable.js
create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemPreviewModal.js
diff --git a/pc4mobx/hrmSalary/apis/calculate.js b/pc4mobx/hrmSalary/apis/calculate.js
index c03ac28a..371a8763 100644
--- a/pc4mobx/hrmSalary/apis/calculate.js
+++ b/pc4mobx/hrmSalary/apis/calculate.js
@@ -333,6 +333,17 @@ export const fileSalaryAcct = (params) => {
}
}).then(res => res.json());
};
+// 薪资记录-回算
+export const backCalculate = (params) => {
+ return fetch("/api/bs/hrmsalary/salaryacct/backCalculate", {
+ method: "POST",
+ mode: "cors",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json());
+};
// 薪资记录-重新核算
export const reAccounting = (params) => {
diff --git a/pc4mobx/hrmSalary/pages/calculate/index.js b/pc4mobx/hrmSalary/pages/calculate/index.js
index ff83ab84..34bf91b0 100644
--- a/pc4mobx/hrmSalary/pages/calculate/index.js
+++ b/pc4mobx/hrmSalary/pages/calculate/index.js
@@ -152,6 +152,14 @@ export default class Calculate extends React.Component {
});
}
+ // 回算
+ handleBackCalculate = (record) => {
+ const { calculateStore: { backCalculate } } = this.props;
+ backCalculate(record.id).then(() => {
+ this.handleSearch(this.state.searchValue);
+ });
+ };
+
// 查看详情回调
handleDetail(record) {
window.open(
@@ -222,6 +230,8 @@ export default class Calculate extends React.Component {
this.handleReaccount(record);
} else if (cz.text == "查看") {
this.handleDetail(record);
+ } else if (cz.text == "回算") {
+ this.handleBackCalculate(record);
}
}}>
{cz.text}
diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/editSalaryDetail.js b/pc4mobx/hrmSalary/pages/calculateDetail/editSalaryDetail.js
index 385fa87b..e268ac5f 100644
--- a/pc4mobx/hrmSalary/pages/calculateDetail/editSalaryDetail.js
+++ b/pc4mobx/hrmSalary/pages/calculateDetail/editSalaryDetail.js
@@ -1,13 +1,22 @@
import React from "react";
-import { WeaHelpfulTip, WeaInput } from "ecCom";
+import { WeaHelpfulTip, WeaInput, WeaTab } from "ecCom";
+import IssuedAndReissueTable from "./issuedAndReissueTable";
import { Col, Row } from "antd";
import { inject, observer } from "mobx-react";
+import { toJS } from "mobx";
import cs from "classnames";
import "./index.less";
@inject("calculateStore")
@observer
export default class EditSalaryDetail extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ selectedKey: "0"
+ };
+ }
+
componentWillMount() {
const { calculateStore: { acctresultDetail } } = this.props;
acctresultDetail(this.props.id);
@@ -62,6 +71,17 @@ export default class EditSalaryDetail extends React.Component {
render() {
const { calculateStore: { acctresultDetailForm } } = this.props;
+ const { selectedKey } = this.state;
+ const topTab = [
+ {
+ title: "正常工资薪金所得",
+ viewcondition: "0"
+ },
+ {
+ title: "已发补发",
+ viewcondition: "1"
+ }
+ ];
return (
@@ -84,39 +104,45 @@ export default class EditSalaryDetail extends React.Component {
}
-
-
-
-
输入项
-
-
- {
- acctresultDetailForm.inputItems && acctresultDetailForm.inputItems.map((item, index) => {
- const len = acctresultDetailForm.inputItems.length;
- return (
-
-
- {item.salaryItemName}
- {
- this.handleItemValueChange(item.salaryItemName, value, true);
- }}/>
-
-
- );
- })
- }
-
+ {
+ !_.isEmpty(toJS(acctresultDetailForm.issuedAndReissueItems)) &&
+
this.setState({ selectedKey: v })}
+ />
+ }
+ {
+ selectedKey === "0" &&
+
+
+
输入项
+
+
+ {
+ acctresultDetailForm.inputItems && acctresultDetailForm.inputItems.map((item, index) => {
+ const len = acctresultDetailForm.inputItems.length;
+ return (
+
+
+ {item.salaryItemName}
+ {
+ this.handleItemValueChange(item.salaryItemName, value, true);
+ }}/>
+
+
+ );
+ })
+ }
+
+
-
-
-
-
-
-
+
公式项
-
-
- {
- acctresultDetailForm.formulaItems && acctresultDetailForm.formulaItems.map((item, index) => {
- const len = acctresultDetailForm.formulaItems.length;
- return (
-
-
- {item.salaryItemName}
- {
- this.handleItemValueChange(item.salaryItemName, value, false);
- }}/>
-
-
- );
- })
- }
-
+
+
+ {
+ acctresultDetailForm.formulaItems && acctresultDetailForm.formulaItems.map((item, index) => {
+ const len = acctresultDetailForm.formulaItems.length;
+ return (
+
+
+ {item.salaryItemName}
+ {
+ this.handleItemValueChange(item.salaryItemName, value, false);
+ }}/>
+
+
+ );
+ })
+ }
+
+
-
+ }
+ {
+ selectedKey === "1" &&
+
+ }
);
}
diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/issuedAndReissueTable.js b/pc4mobx/hrmSalary/pages/calculateDetail/issuedAndReissueTable.js
new file mode 100644
index 00000000..ddeea850
--- /dev/null
+++ b/pc4mobx/hrmSalary/pages/calculateDetail/issuedAndReissueTable.js
@@ -0,0 +1,70 @@
+/*
+ * Author: 黎永顺
+ * name: 已发补发列表
+ * Description:
+ * Date: 2022/12/14
+ */
+import React, { Component } from "react";
+import { WeaHelpfulTip, WeaInputNumber, WeaTable } from "ecCom";
+
+class IssuedAndReissueTable extends Component {
+ render() {
+ const { dataSource } = this.props;
+ const columns = [
+ {
+ dataIndex: "salaryItemName",
+ title: "薪资项目",
+ render: (text) => {
+ return
{text};
+ }
+ },
+ {
+ dataIndex: "resultValue",
+ title:
+ 项目值
+
+ ,
+ render: (text, record) => {
+ const { canEdit } = record;
+ return
{
+ console.log(value);
+ }}
+ />;
+ }
+ },
+ {
+ dataIndex: "salaryBackItemFormula",
+ title:
+ 核算公式
+
+ ,
+ render: (text, record) => {
+ return {_.isNil(text) ? "输入" : text};
+ }
+ }
+ ];
+ return (
+
+ );
+ }
+}
+
+export default IssuedAndReissueTable;
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/LedgerBackCalculatedSalaryItemTable.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/LedgerBackCalculatedSalaryItemTable.js
index 5fa8bfdd..3788b5f9 100644
--- a/pc4mobx/hrmSalary/pages/ledgerPage/components/LedgerBackCalculatedSalaryItemTable.js
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/LedgerBackCalculatedSalaryItemTable.js
@@ -19,20 +19,22 @@ class LedgerBackCalculatedSalaryItemTable extends Component {
visible: false,
title: "编辑薪资项目",
id: "",
- salaryItemId: ""
+ salaryItemId: "",
+ backCalcType: ""
}
};
}
handleEditBackCalc = (record) => {
- const { id, salaryItemId } = record;
+ const { id, salaryItemId, backCalcType } = record;
const { backCalcEditSlide } = this.state;
this.setState({
backCalcEditSlide: {
...backCalcEditSlide,
visible: true,
id,
- salaryItemId
+ salaryItemId,
+ backCalcType
}
});
};
@@ -44,7 +46,8 @@ class LedgerBackCalculatedSalaryItemTable extends Component {
...backCalcEditSlide,
visible: false,
id: "",
- salaryItemId: ""
+ salaryItemId: "",
+ backCalcType: ""
}
}, () => {
isRefresh && onRefresh();
@@ -53,7 +56,7 @@ class LedgerBackCalculatedSalaryItemTable extends Component {
render() {
const { backCalcEditSlide } = this.state;
- const { taxAgentStore: { showOperateBtn }, dataSource, editId } = this.props;
+ const { taxAgentStore: { showOperateBtn }, dataSource, editId, saveSalarySobId, key } = this.props;
const columns = [
{
dataIndex: "name",
@@ -76,7 +79,8 @@ class LedgerBackCalculatedSalaryItemTable extends Component {
render: (text, record, index) => {
const { canEdit } = record;
return (showOperateBtn && canEdit) ?
- this.handleEditBackCalc(record)}>编辑 : ;
+ this.handleEditBackCalc(record)}>编辑 :
+ ;
}
}
];
@@ -90,7 +94,7 @@ class LedgerBackCalculatedSalaryItemTable extends Component {
/>
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalcEditSlide.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalcEditSlide.js
index f6f13e6b..6386dbff 100644
--- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalcEditSlide.js
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalcEditSlide.js
@@ -27,7 +27,8 @@ class LedgerBackCalcEditSlide extends Component {
backCalcEditFormulModal: {
visible: false,
valueType: "",
- dataType: ""
+ dataType: "",
+ backCalcType: ""
}
};
}
@@ -72,13 +73,15 @@ class LedgerBackCalcEditSlide extends Component {
}).catch(() => this.setState({ loading: false }));
};
handleEditFormnul = () => {
+ const { backCalcType } = this.props;
const { backCalcEditFormulModal, valueType, dataType } = this.state;
this.setState({
backCalcEditFormulModal: {
...backCalcEditFormulModal,
visible: true,
valueType,
- dataType: _.lowerCase(dataType)
+ dataType: _.lowerCase(dataType),
+ backCalcType
}
});
};
@@ -89,7 +92,8 @@ class LedgerBackCalcEditSlide extends Component {
...backCalcEditFormulModal,
visible: false,
valueType: "",
- dataType: ""
+ dataType: "",
+ backCalcType: ""
}
});
};
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js
index 6d39fd12..80764a70 100644
--- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js
@@ -77,7 +77,7 @@ class LedgerBackCalculatedSalaryItem extends Component {
>
);
})
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js
index 29f4af17..538a1b92 100644
--- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js
@@ -11,6 +11,7 @@ import { inject, observer } from "mobx-react";
import { baseSettingFormItem } from "../config";
import { getLedgerBasicForm } from "../../../apis/ledger";
import { getAddMonthYearMonth, getCurrentYearMonth, getSubtractMonthYearMonth } from "../../../util/date";
+import moment from "moment";
import "./index.less";
@inject("taxAgentStore")
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js
index 45bd3000..6af6af3a 100644
--- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js
@@ -7,6 +7,7 @@
import React, { Component } from "react";
import LedgerSalaryItemBaseInfo from "./ledgerSalaryItemBaseInfo";
import LedgerSalaryItemNormal from "./ledgerSalaryItemNormal";
+import LedgerSalaryItemPreviewModal from "./ledgerSalaryItemPreviewModal";
import { getLedgerItemForm } from "../../../apis/ledger";
import "./index.less";
@@ -14,6 +15,7 @@ class LedgerSalaryItem extends Component {
constructor(props) {
super(props);
this.state = {
+ previewVisible: false, //预览标识
empFields: [], //员工基本信息
itemGroups: [] //正常工资薪金所得项
};
@@ -125,7 +127,8 @@ class LedgerSalaryItem extends Component {
if (item.id === id) {
return {
...item,
- items: _.filter(item.items, it => !selectedRowKeys.includes(it.id))
+ items: _.filter(item.items, it => !selectedRowKeys.includes(it.id)),
+ selectedRowKeys: []
};
}
return { ...item };
@@ -271,13 +274,29 @@ class LedgerSalaryItem extends Component {
});
};
+ /*
+ * Author: 黎永顺
+ * Description: 员工基本信息-预览
+ * Params:
+ * Date: 2022/12/14
+ */
+ handlePreview = () => {
+ this.setState({ previewVisible: true });
+ };
+
render() {
- const { empFields, itemGroups } = this.state;
+ const { empFields, itemGroups, previewVisible } = this.state;
return (
+
this.setState({ previewVisible: false })}
/>
this.ledgerSalaryItemNormalRef = dom}
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemAddModal.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemAddModal.js
index 0df63310..d669d295 100644
--- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemAddModal.js
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemAddModal.js
@@ -83,12 +83,13 @@ export default class LedgerSalaryItemAddModal extends React.Component {
const { dataSource, selectedRowKeys } = this.state;
const { onAddSalaryItems, id, onCancel } = this.props;
let selectItems = [];
- dataSource.map(item => {
+ dataSource.map((item, index) => {
item = { ...item };
selectedRowKeys.map(key => {
if (item.id === key) {
item.salaryItemId = item.id;
item.key = item.id;
+ item.sortedIndex = index;
selectItems.push(item);
}
});
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemBaseInfo.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemBaseInfo.js
index 7d399054..6961ded8 100644
--- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemBaseInfo.js
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemBaseInfo.js
@@ -50,10 +50,10 @@ class LedgerSalaryItemBaseInfo extends Component {
};
render() {
- const { dataSource, onChangeSortableList } = this.props;
+ const { dataSource, onChangeSortableList, onPreview } = this.props;
const { empFieldListOptions } = this.state;
return (
- }>
+ }>
{
+const TitleComp = (props) => {
+ const { onPreview } = props;
return
员工基本信息
@@ -98,6 +99,6 @@ const TitleComp = () => {
placement="topLeft"
/>
-
+
;
};
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemPreviewModal.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemPreviewModal.js
new file mode 100644
index 00000000..281d2257
--- /dev/null
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemPreviewModal.js
@@ -0,0 +1,63 @@
+import React from "react";
+import { WeaDialog, WeaTable } from "ecCom";
+
+export default class LedgerSalaryItemPreviewModal extends React.Component {
+ getColumns = () => {
+ const { empFields, itemGroups } = this.props;
+ let columns = [];
+ let length = 0;
+ empFields.map(item => {
+ columns.push({
+ title: item.fieldName,
+ key: item.fieldId,
+ width: 150
+ });
+ length++;
+ });
+
+ itemGroups.map(item => {
+ if (item.id !== "default") {
+ let columnItem = {
+ title: item.name,
+ children: item.items.map(i => {
+ return {
+ title: i.name,
+ key: i.id,
+ width: 150
+ };
+ length++;
+ })
+ };
+ columns.push(columnItem);
+ }
+ });
+
+ itemGroups.map(item => {
+ if (item.id === "default") {
+ item.items.map(i => {
+ columns.push({
+ title: i.name,
+ key: i.id,
+ width: 150
+ });
+ length++;
+ });
+ }
+ });
+ return { columns, length };
+ };
+
+ render() {
+ const { onCancel, visible } = this.props;
+ return (
+
+
+
+ );
+ }
+}
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js
index cf486f21..09b1f1cc 100644
--- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js
@@ -42,7 +42,6 @@ class LedgerSlide extends Component {
}
componentWillUnmount() {
- alert(1111);
this.setState({
saveSalarySobId: ""
});
diff --git a/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js b/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js
index 92de743a..5d1d327c 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 = {
+ returnType: "",
+ validateType: "",
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,
+ returnType: data.returnType,
+ validateType: data.validateType
});
this.parameters = data.parameters;
this.referenceType = data.referenceType;
@@ -68,8 +72,8 @@ export default class FormalFormModal extends React.Component {
if (this.props.valueType == "3") {
groupParams = { "referenceType": "sql" };
} else if (this.props.valueType === "FORMULA") {
- groupParams = { "referenceType": "backCalc" };
- this.referenceType = "backCalc";
+ groupParams = this.props.backCalcType === "issuedItems" ? { "referenceType": "backCalc" } : {};
+ this.referenceType = "formula";
this.setState({
value: this.props.formulaContent
});
@@ -191,8 +195,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.returnType,
extendParam: JSON.stringify(this.state.extendParam),
formula: this.state.value,
parameters: this.parameters,
diff --git a/pc4mobx/hrmSalary/stores/calculate.js b/pc4mobx/hrmSalary/stores/calculate.js
index c1f420ff..63b5b235 100644
--- a/pc4mobx/hrmSalary/stores/calculate.js
+++ b/pc4mobx/hrmSalary/stores/calculate.js
@@ -3,6 +3,7 @@ import { message } from "antd";
import { WeaForm, WeaTableNew } from "comsMobx";
import * as API from "../apis/calculate";
+import { backCalculate } from "../apis/calculate";
const { TableStore } = WeaTableNew;
@@ -466,7 +467,21 @@ export class calculateStore {
}
});
});
-
+ };
+ // 薪资记录-回算
+ @action
+ backCalculate = (salaryAcctRecordId) => {
+ return new Promise((resolve, reject) => {
+ API.backCalculate({ salaryAcctRecordId }).then(res => {
+ if (res.status) {
+ message.success("回算成功");
+ resolve();
+ } else {
+ message.error(res.errormsg || "回算失败");
+ reject();
+ }
+ });
+ });
};
// 薪资结果-编辑表单保存