this.personalScopeTableRef = dom}
- searchKeyVal={{ key: "salarySobId", value: editId }}
+ searchKeyVal={{ key: "salarySobId", value: editId || saveSalarySobId }}
APIFox={APIFox}
tabActive={selectedKey}
searchValue={searchValue}
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js
index e7382646..6d39fd12 100644
--- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js
@@ -42,9 +42,9 @@ class LedgerBackCalculatedSalaryItem extends Component {
}
getAggregate = () => {
- const { editId: salarySobId } = this.props;
+ const { editId: salarySobId, saveSalarySobId } = this.props;
const { backCalcItems } = this.state;
- getAggregate({ salarySobId }).then(({ status, data }) => {
+ getAggregate({ salarySobId: salarySobId || saveSalarySobId }).then(({ status, data }) => {
if (status) {
this.setState({
backCalcItems: _.map(backCalcItems, item => {
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js
index 706b0ff5..a1aad64c 100644
--- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js
@@ -31,8 +31,8 @@ class LedgerSalaryAdjustmentRules extends Component {
}
listAdjustmentRule = () => {
- const { editId: salarySobId } = this.props;
- listAdjustmentRule({ salarySobId }).then(({ status, data }) => {
+ const { editId: salarySobId, saveSalarySobId } = this.props;
+ listAdjustmentRule({ salarySobId: salarySobId || saveSalarySobId }).then(({ status, data }) => {
if (status) {
this.setState({
dataSource: data
@@ -46,12 +46,12 @@ class LedgerSalaryAdjustmentRules extends Component {
};
handleAddAdjustRule = () => {
const { adjustRuleAddModal } = this.state;
- const { editId } = this.props;
+ const { editId, saveSalarySobId } = this.props;
this.setState({
adjustRuleAddModal: {
...adjustRuleAddModal,
visible: true,
- salarySobId: editId
+ salarySobId: editId || saveSalarySobId
}
});
};
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js
new file mode 100644
index 00000000..45bd3000
--- /dev/null
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js
@@ -0,0 +1,301 @@
+/*
+ * Author: 黎永顺
+ * name: 薪资项目
+ * Description:
+ * Date: 2022/12/13
+ */
+import React, { Component } from "react";
+import LedgerSalaryItemBaseInfo from "./ledgerSalaryItemBaseInfo";
+import LedgerSalaryItemNormal from "./ledgerSalaryItemNormal";
+import { getLedgerItemForm } from "../../../apis/ledger";
+import "./index.less";
+
+class LedgerSalaryItem extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ empFields: [], //员工基本信息
+ itemGroups: [] //正常工资薪金所得项
+ };
+ }
+
+ componentDidMount() {
+ this.getLedgerItemForm();
+ }
+
+ /*
+ * Author: 黎永顺
+ * Description: 薪资项目以及员工基本信息查询
+ * Params:
+ * Date: 2022/12/14
+ */
+ getLedgerItemForm = () => {
+ const { editId: salarySobId, saveSalarySobId } = this.props;
+ getLedgerItemForm({ salarySobId: salarySobId || saveSalarySobId }).then(({ status, data }) => {
+ if (status) {
+ const { empFields, itemGroups, items } = data;
+ const obj = {
+ id: itemGroups.length,
+ itemHide: null,
+ items,
+ name: "未分类",
+ salarySobId,
+ sortedIndex: itemGroups.length
+ };
+ this.setState({ empFields, itemGroups: [...itemGroups, obj] }, () => {
+ const { empFields, itemGroups } = this.state;
+ const { onSaveSalaryItem } = this.props;
+ onSaveSalaryItem(empFields, itemGroups);
+ });
+ }
+ });
+ };
+ /*
+ * Author: 黎永顺
+ * Description: 员工基本信息排序
+ * Params:
+ * Date: 2022/12/14
+ */
+ handleChangeSortableList = (empFields) => {
+ this.setState({ empFields }, () => {
+ const { empFields, itemGroups } = this.state;
+ const { onSaveSalaryItem } = this.props;
+ onSaveSalaryItem(empFields, itemGroups);
+ });
+ };
+ /*
+ * Author: 黎永顺
+ * Description:编辑保存性子项目分类
+ * Params:
+ * Date: 2022/12/13
+ */
+ handleSaveCateGory = (payload) => {
+ const { itemGroups } = this.state;
+ if (payload.id) {
+ this.setState({
+ itemGroups: _.map(itemGroups, it => {
+ if (it.id === payload.id) {
+ return { ...it, name: payload.name };
+ }
+ return { ...it };
+ })
+ });
+ } else {
+ const obj = {
+ id: itemGroups.length,
+ itemHide: null,
+ items: [],
+ name: payload.name
+ };
+ this.setState({
+ itemGroups: _.map([obj, ...itemGroups], (it, idx) => ({ ...it, sortedIndex: idx }))
+ }, () => {
+ const { empFields, itemGroups } = this.state;
+ const { onSaveSalaryItem } = this.props;
+ onSaveSalaryItem(empFields, itemGroups);
+ });
+ }
+ };
+ /*
+ * Author: 黎永顺
+ * Description: 删除分类
+ * Params:
+ * Date: 2022/12/14
+ */
+ handleDeleteCategroy = (id) => {
+ const { itemGroups } = this.state;
+ this.setState({
+ itemGroups: _.filter(itemGroups, it => it.id !== id)
+ }, () => {
+ const { empFields, itemGroups } = this.state;
+ const { onSaveSalaryItem } = this.props;
+ onSaveSalaryItem(empFields, itemGroups);
+ });
+ };
+ /*
+ * Author: 黎永顺
+ * Description: 删除分类项下的列表数据
+ * Params:
+ * Date: 2022/12/14
+ */
+ handleDeleteCategroyItems = (id, selectedRowKeys) => {
+ const { itemGroups } = this.state;
+ this.setState({
+ itemGroups: _.map(itemGroups, item => {
+ if (item.id === id) {
+ return {
+ ...item,
+ items: _.filter(item.items, it => !selectedRowKeys.includes(it.id))
+ };
+ }
+ return { ...item };
+ })
+ }, () => {
+ const { empFields, itemGroups } = this.state;
+ const { onSaveSalaryItem } = this.props;
+ onSaveSalaryItem(empFields, itemGroups);
+ });
+ };
+ /*
+ * Author: 黎永顺
+ * Description: 修改信息项目分类的顺序-向上移动
+ * Params:
+ * Date: 2022/12/14
+ */
+ handleUpgo = (index) => {
+ const { itemGroups } = this.state;
+ let newItemGroups = [...itemGroups];
+ if (index !== 0) {
+ newItemGroups[index] = newItemGroups.splice(index - 1, 1, newItemGroups[index])[0];
+ } else {
+ newItemGroups.push(newItemGroups.shift());
+ }
+ this.setState({
+ itemGroups: _.map(newItemGroups, (it, idx) => ({
+ ...it,
+ sortedIndex: idx
+ }))
+ }, () => {
+ const { empFields, itemGroups } = this.state;
+ const { onSaveSalaryItem } = this.props;
+ onSaveSalaryItem(empFields, itemGroups);
+ });
+ };
+ /*
+ * Author: 黎永顺
+ * Description: 修改信息项目分类的顺序-向下移动
+ * Params:
+ * Date: 2022/12/14
+ */
+ handleDowngo = (index) => {
+ const { itemGroups } = this.state;
+ let newItemGroups = [...itemGroups];
+ if (index !== newItemGroups.length - 1) {
+ newItemGroups[index] = newItemGroups.splice(index + 1, 1, newItemGroups[index])[0];
+ } else {
+ newItemGroups.unshift(newItemGroups.splice(index, 1)[0]);
+ }
+ this.setState({
+ itemGroups: _.map(newItemGroups, (it, idx) => ({
+ ...it,
+ sortedIndex: idx
+ }))
+ }, () => {
+ const { empFields, itemGroups } = this.state;
+ const { onSaveSalaryItem } = this.props;
+ onSaveSalaryItem(empFields, itemGroups);
+ });
+ };
+ /*
+ * Author: 黎永顺
+ * Description: 移動分类下的列表数据\切换薪资分类-隐藏复选框
+ * Params:
+ * Date: 2022/12/14
+ */
+ handleDropCategroyItem = (filed, data) => {
+ const { itemGroups } = this.state;
+ this.setState({
+ itemGroups: _.map(itemGroups, it => {
+ if (filed.id === it.id) {
+ return { ...it, items: data };
+ }
+ return { ...it };
+ })
+ }, () => {
+ const { empFields, itemGroups } = this.state;
+ const { onSaveSalaryItem } = this.props;
+ onSaveSalaryItem(empFields, itemGroups);
+ });
+ };
+ /*
+ * Author: 黎永顺
+ * Description: 薪资分类选中复选框
+ * Params:
+ * Date: 2022/12/14
+ */
+ handleChangeSelectedRowKeys = (filed, data) => {
+ const { itemGroups } = this.state;
+ this.setState({
+ itemGroups: _.map(itemGroups, it => {
+ if (filed.id === it.id) {
+ return { ...it, selectedRowKeys: data };
+ }
+ return { ...it };
+ })
+ }, () => {
+ const { empFields, itemGroups } = this.state;
+ const { onSaveSalaryItem } = this.props;
+ onSaveSalaryItem(empFields, itemGroups);
+ });
+ };
+ /*
+ * Author: 黎永顺
+ * Description: 薪资项目-新增项
+ * Params:
+ * Date: 2022/12/14
+ */
+ handleAddSalaryItems = (id, items) => {
+ const { itemGroups } = this.state;
+ this.setState({
+ itemGroups: _.map(itemGroups, it => {
+ if (id === it.id) {
+ return { ...it, items: [...it.items, ...items] };
+ }
+ return { ...it };
+ })
+ }, () => {
+ const { empFields, itemGroups } = this.state;
+ const { onSaveSalaryItem } = this.props;
+ onSaveSalaryItem(empFields, itemGroups);
+ });
+ };
+ /*
+ * Author: 黎永顺
+ * Description: 保存薪资项目公式
+ * Params:
+ * Date: 2022/12/14
+ */
+ handleSaveFormnul = (id, items) => {
+ const { itemGroups } = this.state;
+ this.setState({
+ itemGroups: _.map(itemGroups, it => {
+ if (id === it.id) {
+ return { ...it, items };
+ }
+ return { ...it };
+ })
+ }, () => {
+ const { empFields, itemGroups } = this.state;
+ const { onSaveSalaryItem } = this.props;
+ onSaveSalaryItem(empFields, itemGroups);
+ });
+ };
+
+ render() {
+ const { empFields, itemGroups } = this.state;
+ return (
+
+
+ this.ledgerSalaryItemNormalRef = dom}
+ {...this.props} dataSource={itemGroups}
+ onSaveCategory={this.handleSaveCateGory}
+ onDeleteCategroy={this.handleDeleteCategroy}
+ onDeleteCategroyItems={this.handleDeleteCategroyItems}
+ onUpgo={this.handleUpgo}
+ onDowngo={this.handleDowngo}
+ onDropCategoryItem={this.handleDropCategroyItem}
+ onHandleItemhide={this.handleDropCategroyItem}
+ onChangeSelectedRowKeys={this.handleChangeSelectedRowKeys}
+ onAddSalaryItems={this.handleAddSalaryItems}
+ onSaveFormnul={this.handleSaveFormnul}
+ />
+
+ );
+ }
+}
+
+export default LedgerSalaryItem;
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemAddModal.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemAddModal.js
new file mode 100644
index 00000000..0df63310
--- /dev/null
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemAddModal.js
@@ -0,0 +1,150 @@
+import React from "react";
+import { Button, Switch } from "antd";
+import { WeaDialog, WeaInputSearch, WeaTable } from "ecCom";
+import { listSalaryItem } from "../../../apis/ledger";
+
+export default class LedgerSalaryItemAddModal extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ loading: {
+ query: false
+ },
+ name: "",
+ selectedRowKeys: [],
+ dataSource: [],
+ columns: [],
+ pageInfo: {
+ current: 1,
+ pageSize: 10,
+ total: 0
+ }
+ };
+ }
+
+ componentWillReceiveProps(nextProps, nextContext) {
+ if (nextProps.visible !== this.props.visivle && nextProps.visible) {
+ this.setState({ selectedRowKeys: [] }, () => {
+ this.listSalaryItem();
+ });
+ }
+ }
+
+ listSalaryItem = () => {
+ const { itemGroups } = this.props;
+ const { name, pageInfo, loading } = this.state;
+ let excludeIds = [];
+ itemGroups.map(item => {
+ item.items && item.items.map(i => {
+ excludeIds.push(i.salaryItemId);
+ });
+ });
+ const payload = {
+ excludeIds,
+ name,
+ ...pageInfo
+ };
+ this.setState({ loading: { ...loading, query: true } });
+ listSalaryItem(payload).then(({ status, data }) => {
+ this.setState({ loading: { ...loading, query: false } });
+ if (status) {
+ const { pageNum: current, pageSize, total, columns, list: dataSource } = data;
+ this.setState({
+ pageInfo: { ...pageInfo, current, pageSize, total },
+ dataSource,
+ columns
+ });
+ }
+ }).catch(() => {
+ this.setState({ loading: { ...loading, query: false } });
+ });
+ };
+ getSalaryItemAddColumns = () => {
+ const { columns } = this.state;
+ let newColumns = [];
+ newColumns = columns.map(column => {
+ let newColumn = column;
+ newColumn.render = (text, record, index) => { //前端元素转义
+ let valueSpan = record[newColumn.dataIndex + "span"] !== undefined ? record[newColumn.dataIndex + "span"] : record[newColumn.dataIndex];
+ switch (newColumn.dataIndex) {
+ case "useDefault":
+ case "useInEmployeeSalary":
+ return ;
+ default:
+ return ;
+ }
+ };
+ return newColumn;
+ });
+ return newColumns;
+ };
+
+ handleAdd = () => {
+ const { dataSource, selectedRowKeys } = this.state;
+ const { onAddSalaryItems, id, onCancel } = this.props;
+ let selectItems = [];
+ dataSource.map(item => {
+ item = { ...item };
+ selectedRowKeys.map(key => {
+ if (item.id === key) {
+ item.salaryItemId = item.id;
+ item.key = item.id;
+ selectItems.push(item);
+ }
+ });
+ });
+ onCancel();
+ onAddSalaryItems(id, selectItems);
+ };
+
+ render() {
+ const { onCancel, visible } = this.props;
+ const { name, selectedRowKeys, pageInfo, dataSource, loading } = this.state;
+ const pagination = {
+ ...pageInfo,
+ showTotal: total => `共 ${total} 条`,
+ showQuickJumper: true,
+ pageSizeOptions: ["10", "20", "50", "100"],
+ onChange: current => {
+ this.setState({
+ pageInfo: { ...pageInfo, current }
+ }, () => {
+ this.listSalaryItem();
+ });
+ }
+ };
+ const rowSelection = {
+ selectedRowKeys,
+ onChange: (selectedRowKeys) => {
+ this.setState({ selectedRowKeys }, () => {
+ });
+ }
+ };
+ return (
+ 添加]}
+ >
+
+ this.setState({ name })}
+ onSearch={() => this.listSalaryItem()}
+ />
+
+
+
+ );
+ }
+}
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemBaseInfo.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemBaseInfo.js
new file mode 100644
index 00000000..7d399054
--- /dev/null
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemBaseInfo.js
@@ -0,0 +1,103 @@
+/*
+ * Author: 黎永顺
+ * name: 薪资项目-员工基本信息
+ * Description:
+ * Date: 2022/12/13
+ */
+import React, { Component } from "react";
+import { WeaHelpfulTip, WeaSearchGroup, WeaSelect, WeaSortable } from "ecCom";
+import { Button, Icon } from "antd";
+import { empFieldList } from "../../../apis/ledger";
+
+class LedgerSalaryItemBaseInfo extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ empFieldListOptions: []
+ };
+ }
+
+ componentDidMount() {
+ this.empFieldList();
+ }
+
+ empFieldList = () => {
+ empFieldList().then(({ status, data }) => {
+ if (status) {
+ const dataFilter = _.filter(data, it => !["taxAgentName", "username", "departmentName"].includes(it.id));
+ this.setState({
+ empFieldListOptions: _.map(dataFilter, it => ({ key: it.id, showname: it.name }))
+ });
+ }
+ });
+ };
+
+ handleAddEmpList = (key, showname) => {
+ const { dataSource, onChangeSortableList } = this.props;
+ const obj = {
+ canDelete: true,
+ fieldId: key,
+ fieldName: showname,
+ id: dataSource.length,
+ salarySobId: "",
+ sortedIndex: dataSource.length
+ };
+ onChangeSortableList([...dataSource, obj]);
+ };
+ handleDeleteEmplist = (item) => {
+ const { dataSource, onChangeSortableList } = this.props;
+ onChangeSortableList(_.xorWith(dataSource, [item], _.isEqual));
+ };
+
+ render() {
+ const { dataSource, onChangeSortableList } = this.props;
+ const { empFieldListOptions } = this.state;
+ return (
+ }>
+
+
{
+ const { fieldName, canDelete } = item;
+ return
+ {fieldName}
+ {
+ canDelete &&
+ this.handleDeleteEmplist(item)}
+ />
+ }
+
;
+ }}
+ className="wea-sortable-grid-item"
+ />
+
+
+
+ );
+ }
+}
+
+export default LedgerSalaryItemBaseInfo;
+const TitleComp = () => {
+ return ;
+};
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemNormal.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemNormal.js
new file mode 100644
index 00000000..26f9a98d
--- /dev/null
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemNormal.js
@@ -0,0 +1,252 @@
+/*
+ * Author: 黎永顺
+ * name: 薪资项目-正常薪资所得
+ * Description:
+ * Date: 2022/12/13
+ */
+import React, { Component } from "react";
+import { inject, observer } from "mobx-react";
+import { WeaButtonIcon, WeaSearchGroup } from "ecCom";
+import { Button, Modal } from "antd";
+import CategoryAddModal from "./categoryAddModal";
+import LedgerSalaryItemAddModal from "./ledgerSalaryItemAddModal";
+import LedgerSalaryItemTable from "./ledgerSalaryItemTable";
+import "./index.less";
+import FormalFormModal from "../../salaryItem/formalFormModal";
+
+@inject("ledgerStore")
+@observer
+class LedgerSalaryItemNormal extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ addCategoryItemsVisible: false,
+ categoryModal: {
+ visible: false,
+ title: "新增分类",
+ name: "",
+ id: ""
+ },
+ editFormulModal: {
+ visible: false,
+ formulaId: "",
+ valueType: "",
+ dataType: ""
+ },
+ //公式保存数据
+ formnulField: {},
+ formnulId: ""
+ };
+ }
+
+ componentWillUnmount() {
+ this.handleResetFormnul();
+ }
+
+ handleEditFormnul = (field, record) => {
+ const { valueType, formulaId, dateType: dataType, id } = record;
+ const { editFormulModal } = this.state;
+ this.setState({
+ editFormulModal: {
+ ...editFormulModal,
+ visible: true,
+ valueType, formulaId, dataType
+ },
+ formnulField: field,
+ formnulId: id
+ });
+ };
+ handleSaveFormnul = (data) => {
+ const { onSaveFormnul } = this.props;
+ const { formnulField, formnulId } = this.state;
+ const tmpV = _.cloneDeep(formnulField.items);
+ const formnulData = _.map(tmpV, it => {
+ if (it.id === formnulId) {
+ return { ...it, formulaId: data.id, formulaContent: data.formula };
+ }
+ return { ...it };
+ });
+ onSaveFormnul(formnulField.id, formnulData);
+ };
+ handleAddCategory = (name = "", id = "") => {
+ const { categoryModal } = this.state;
+ this.setState({
+ categoryModal: {
+ ...categoryModal,
+ visible: true,
+ name,
+ title: name ? "编辑分类" : "新增分类",
+ id
+ }
+ });
+ };
+ handleDeleteCategory = (id) => {
+ const { onDeleteCategroy } = this.props;
+ Modal.confirm({
+ title: "信息确认",
+ content: "确认要删除吗?",
+ onOk: () => {
+ onDeleteCategroy(id);
+ }
+ });
+ };
+ handleDeleteCategoryItems = (id, selectedRowKeys) => {
+ const { onDeleteCategroyItems } = this.props;
+ Modal.confirm({
+ title: "信息确认",
+ content: "确认删除所选薪资项目吗?删除后此项目下的进位规则/保留小数位/公式内容会一起被清除!",
+ onOk: () => {
+ onDeleteCategroyItems(id, selectedRowKeys);
+ }
+ });
+ };
+ handleUpgo = (sortedIndex) => {
+ const { onUpgo } = this.props;
+ onUpgo(sortedIndex);
+ };
+ handleDowngo = (sortedIndex) => {
+ const { onDowngo } = this.props;
+ onDowngo(sortedIndex);
+ };
+ handleClose = () => {
+ const { ledgerStore } = this.props;
+ const { categoryForm: form } = ledgerStore;
+ const { categoryModal } = this.state;
+ this.setState({
+ categoryModal: {
+ ...categoryModal,
+ visible: false,
+ title: "新增分类",
+ name: "",
+ id: ""
+ }
+ }, () => form.resetForm());
+ };
+ handleCloseFormnul = () => {
+ const { editFormulModal } = this.state;
+ this.setState({
+ editFormulModal: {
+ ...editFormulModal,
+ visible: false,
+ formulaId: "",
+ valueType: "", dataType: ""
+ }
+ });
+ };
+ handleResetFormnul = () => {
+ this.setState({
+ formnulField: {},
+ formnulId: ""
+ });
+ };
+
+ render() {
+ const {
+ dataSource,
+ onSaveCategory,
+ onDropCategoryItem,
+ onHandleItemhide,
+ onChangeSelectedRowKeys,
+ onAddSalaryItems
+ } = this.props;
+ const { categoryModal, addCategoryItemsVisible, editFormulModal } = this.state;
+ return (
+ }>
+
+ {
+ _.map(dataSource, field => {
+ const { items } = field;
+ return this.setState({ addCategoryItemsVisible: { visible: true, id } })}
+ onUpgo={this.handleUpgo}
+ onDowngo={this.handleDowngo}
+ />
+ }
+ >
+ onDropCategoryItem(field, data)}
+ onHandleItemhide={(data) => onHandleItemhide(field, data)}
+ onChangeSelectedRowKeys={(data) => onChangeSelectedRowKeys(field, data)}
+ onEditFormnul={(data) => this.handleEditFormnul(field, data)}
+ />
+ ;
+ })
+ }
+ this.setState({ addCategoryItemsVisible: { visible: false, id: "" } })}
+ onAddSalaryItems={onAddSalaryItems}
+ />
+
+ {/*公式编辑*/}
+ {
+ editFormulModal.visible &&
+
+ }
+
+
+ );
+ }
+}
+
+export default LedgerSalaryItemNormal;
+const TitleNormalComp = (props) => {
+ const {
+ name, onEditCategory, onDeleteCategory,
+ sortedIndex, dataSourceLen, id, onUpgo,
+ onDowngo, selectedRowKeys = [], onDeleteCategoryItems,
+ onAddCategoryItems
+ } = props;
+ return
+
+ {name}
+ {
+ name !== "未分类" &&
+ onEditCategory(name, id)}/>
+ }
+ {
+ name !== "未分类" &&
+ onDeleteCategory(id)}/>
+ }
+ {
+ sortedIndex !== 0 &&
+ onUpgo(sortedIndex)}/>
+ }
+ {
+ sortedIndex !== dataSourceLen - 1 &&
+ onDowngo(sortedIndex)}/>
+ }
+
+
+ onDeleteCategoryItems(id, selectedRowKeys)}/>
+ onAddCategoryItems(id)}/>
+
+
;
+};
+
+const TitleComp = (props) => {
+ const { onAddCategory } = props;
+ return
+ 正常工资薪金所得
+
+
;
+};
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemTable.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemTable.js
new file mode 100644
index 00000000..4498a36d
--- /dev/null
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemTable.js
@@ -0,0 +1,135 @@
+/*
+ * Author: 黎永顺
+ * name: 薪资项目-列表数据
+ * Description:
+ * Date: 2022/12/13
+ */
+import React, { Component } from "react";
+import { WeaCheckbox, WeaHelpfulTip, WeaTable } from "ecCom";
+
+class LedgerSalaryItemTable extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ selectedRowKeys: []
+ };
+ }
+
+ /*
+ * Author: 黎永顺
+ * Description: 列表操作隐藏复选框
+ * Params:
+ * Date: 2022/12/14
+ */
+ handleChangeItem = (value, id) => {
+ const { dataSource, onHandleItemhide } = this.props;
+ onHandleItemhide(
+ _.map([...dataSource], item => {
+ if (id === item.id) {
+ return {
+ ...item,
+ itemHide: String(value)
+ };
+ }
+ return { ...item };
+ })
+ );
+ };
+ handleChangeAllItem = (value) => {
+ const { dataSource, onHandleItemhide } = this.props;
+ onHandleItemhide(
+ _.map([...dataSource], item => {
+ return {
+ ...item,
+ itemHide: String(value)
+ };
+ })
+ );
+ };
+
+ render() {
+ const { dataSource, onDropCategoryItem, onChangeSelectedRowKeys, onEditFormnul } = this.props;
+ const { selectedRowKeys } = this.state;
+ const rowSelection = {
+ selectedRowKeys,
+ onChange: (selectedRowKeys) => this.setState({ selectedRowKeys }, () => {
+ onChangeSelectedRowKeys(this.state.selectedRowKeys);
+ }),
+ getCheckboxProps: record => ({
+ disabled: !record.canDelete
+ })
+ };
+ const checkValue = _.every(dataSource, it => it.itemHide && it.itemHide === "1") ? "1" : "0";
+ const columns = [
+ {
+ title: "名称",
+ dataIndex: "name",
+ key: "name"
+ },
+ {
+ title:
+ 核算公式
+ } placement="bottom" width={200}/>
+ ,
+ dataIndex: "formulaContent",
+ key: "formulaContent",
+ render: (text, record) => {
+ if (record.canEdit) {
+ return (
+
+ onEditFormnul(record)}> {text}
+
+ );
+ } else {
+ return {text} ;
+ }
+ }
+ },
+ {
+ title: "个税申请表对应字段",
+ dataIndex: "taxDeclarationColumn",
+ key: "taxDeclarationColumn"
+ },
+ {
+ title:
+ this.handleChangeAllItem(value)}
+ />
+ 隐藏
+ ,
+ dataIndex: "itemHide",
+ key: "itemHide",
+ render: (text, record) => this.handleChangeItem(value, record.id)}
+ />
+ }
+ ];
+ return (
+ ({
+ index,
+ moveRow: record
+ })}
+ pagination={false}
+ onDrop={onDropCategoryItem}
+ draggable={true}
+ />
+ );
+ }
+}
+
+export default LedgerSalaryItemTable;
+
+const HelpContent = () => {
+ return
+ 1、新建薪资账套时,核算公式与【薪资项目管理】菜单一致;
+ 2、取值方式为公式的薪资项目,核算公式显示为具体公式;点击公式可编辑公式,核算时,按照当前薪资项目的公式进行核算;
+ 3、薪资账套内的薪资项目的公式或SQL的修改或公式的修改,都不影响【薪资项目管理】菜单的薪资项目取值方式或公式,只对当前账套生效;
+ ;
+};
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js
index 02402512..cf486f21 100644
--- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js
@@ -13,7 +13,8 @@ import LedgerBaseSetting from "./ledgerBaseSetting";
import LedgerAssociatedPersonnel from "./ledgerAssociatedPersonnel";
import LedgerSalaryAdjustmentRules from "./ledgerSalaryAdjustmentRules";
import LedgerBackCalculatedSalaryItem from "./ledgerBackCalculatedSalaryItem";
-import { saveAdjustmentRule, saveLedgerBasic } from "../../../apis/ledger";
+import LedgerSalaryItem from "./ledgerSalaryItem";
+import { saveAdjustmentRule, saveLedgerBasic, saveLedgerItem } from "../../../apis/ledger";
import "./index.less";
const Step = WeaSteps.Step;
@@ -34,10 +35,19 @@ class LedgerSlide extends Component {
current: 0,
loading: false,
baseSettingInfo: {},
- adjustRules: []
+ adjustRules: [],
+ empFields: [], itemGroups: [],
+ saveSalarySobId: ""
};
}
+ componentWillUnmount() {
+ alert(1111);
+ this.setState({
+ saveSalarySobId: ""
+ });
+ }
+
/*
* Author: 黎永顺
* Description: 保存基本信息
@@ -57,13 +67,13 @@ class LedgerSlide extends Component {
return false;
}
this.setState({ loading: true });
- saveLedgerBasic({ ...extra, description, id: editId }).then(({ status, errormsg }) => {
+ saveLedgerBasic({ ...extra, description, id: editId }).then(({ status, data, errormsg }) => {
this.setState({ loading: false });
if (status) {
const { onRefreshList } = this.props;
message.success("保存成功");
onRefreshList();
- !editId && this.setState({ current: current + 1 });
+ !editId && this.setState({ current: current + 1, saveSalarySobId: data });
} else {
message.error(errormsg || "保存失败");
}
@@ -76,9 +86,9 @@ class LedgerSlide extends Component {
* Date: 2022/12/12
*/
saveLedgerAdjustRule = () => {
- const { adjustRules } = this.state;
+ const { adjustRules, saveSalarySobId } = this.state;
const payload = {
- salarySobId: this.props.editId,
+ salarySobId: this.props.editId || saveSalarySobId,
ruleParams: adjustRules
};
this.setState({ loading: true });
@@ -86,12 +96,37 @@ class LedgerSlide extends Component {
this.setState({ loading: false });
if (status) {
message.success("保存成功");
+ this.handleClose();
} else {
message.success(errormsg || "保存失败");
}
}).catch(() => this.setState({ loading: false }));
- }
- ;
+ };
+ /*
+ * Author: 黎永顺
+ * Description: 薪资项目保存
+ * Params:
+ * Date: 2022/12/14
+ */
+ saveLedgerItem = () => {
+ const { empFields, itemGroups, saveSalarySobId } = this.state;
+ const { editId: salarySobId } = this.props;
+ const payload = {
+ empFields,
+ itemGroups: _.filter(itemGroups, it => it.name !== "未分类"),
+ items: _.find(itemGroups, it => it.name === "未分类").items || [],
+ salarySobId: salarySobId || saveSalarySobId
+ };
+ this.setState({ loading: true });
+ saveLedgerItem(payload).then(({ status, errormsg }) => {
+ this.setState({ loading: false });
+ if (status) {
+ message.success("保存成功");
+ } else {
+ message.error(errormsg || "保存失败");
+ }
+ }).catch(() => this.setState({ loading: false }));
+ };
handleChangeSlideTab = (current) => {
this.setState({ current: Number(current) });
};
@@ -107,22 +142,36 @@ class LedgerSlide extends Component {
handleChangeSaveParams = (baseSettingInfo) => {
this.setState({ baseSettingInfo });
};
+ /*
+ * Author: 黎永顺
+ * Description: 薪资项目保存数据
+ * Params:
+ * Date: 2022/12/14
+ */
+ handleSaveSalaryItemParams = (empFields, itemGroups) => {
+ this.setState({ empFields, itemGroups });
+ };
renderChildren = () => {
- const { current } = this.state;
+ const { current, saveSalarySobId } = this.state;
let CurrentDom = null;
switch (current) {
case 0:
CurrentDom = ;
break;
case 1:
- CurrentDom = ;
+ CurrentDom = ;
+ break;
+ case 2:
+ CurrentDom = ;
break;
case 3:
- CurrentDom = ;
+ CurrentDom = ;
break;
case 4:
CurrentDom =
- this.setState({ adjustRules })}/>;
+ this.setState({ adjustRules })}/>;
break;
default:
CurrentDom = null;
@@ -148,23 +197,34 @@ class LedgerSlide extends Component {
break;
case 1:
CurrentDom = !editId ? [
- ,
+ ,
] : [];
break;
case 2:
CurrentDom = !editId ?
[
- ,
+ ,
,
-
- ] : [];
+
+ ] : [
+
+ ];
break;
case 3:
CurrentDom = !editId ?
[
+ ,
,
-
+
] : [];
break;
case 4:
diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/config.js b/pc4mobx/hrmSalary/pages/ledgerPage/config.js
index 6bd81428..b130f4f6 100644
--- a/pc4mobx/hrmSalary/pages/ledgerPage/config.js
+++ b/pc4mobx/hrmSalary/pages/ledgerPage/config.js
@@ -27,6 +27,24 @@ export const copyConditions = [
defaultshow: true
}
];
+export const categoryConditions = [
+ {
+ items: [
+ {
+ colSpan: 1,
+ conditionType: "INPUT",
+ domkey: ["name"],
+ fieldcol: 14,
+ rules: "required|string",
+ label: "名称",
+ labelcol: 6,
+ value: "",
+ viewAttr: 3
+ }
+ ],
+ defaultshow: true
+ }
+];
export const baseSettingFormItem = [
{
key: "name",
@@ -720,7 +738,7 @@ export const roundingRules = [
key: "UP_EVEN",
selected: false,
showname: "向上求偶"
- },
+ }
];
export const keepDecimalPlaces = [
{
diff --git a/pc4mobx/hrmSalary/stores/ledger.js b/pc4mobx/hrmSalary/stores/ledger.js
index 618cae74..848c22fb 100644
--- a/pc4mobx/hrmSalary/stores/ledger.js
+++ b/pc4mobx/hrmSalary/stores/ledger.js
@@ -4,12 +4,14 @@ import { WeaForm, WeaTableNew } from "comsMobx";
import * as API from "../apis/ledger"; // 引入API接口文件
import { notNull } from "../util/validate";
+import { categoryConditions } from "../pages/ledgerPage/config";
const { TableStore } = WeaTableNew;
export class LedgerStore {
//重构薪资账套
- @observable copyForm = new WeaForm(); // nrew 一个form
+ @observable copyForm = new WeaForm(); // 复制form
+ @observable categoryForm = new WeaForm(); // 新增分类form
/*******************************************************/