2022-12-14 15:37:55 +08:00
|
|
|
|
/*
|
|
|
|
|
|
* Author: 黎永顺
|
|
|
|
|
|
* name: 薪资项目-列表数据
|
|
|
|
|
|
* Description:
|
|
|
|
|
|
* Date: 2022/12/13
|
|
|
|
|
|
*/
|
|
|
|
|
|
import React, { Component } from "react";
|
2023-07-19 15:02:44 +08:00
|
|
|
|
import { WeaCheckbox, WeaHelpfulTip, WeaLocaleProvider, WeaTable } from "ecCom";
|
|
|
|
|
|
import LedgerSalaryItemEditSlide from "./ledgerSalaryItemEditSlide";
|
2023-07-24 18:22:24 +08:00
|
|
|
|
import { getSalaryItemForm } from "../../../apis/ledger";
|
2023-07-19 15:02:44 +08:00
|
|
|
|
import { commonEnumList } from "../../../apis/ruleconfig";
|
2023-07-25 16:16:39 +08:00
|
|
|
|
import FormalFormModal from "../../salaryItem/formalFormModal";
|
2023-07-19 15:02:44 +08:00
|
|
|
|
|
|
|
|
|
|
const getLabel = WeaLocaleProvider.getLabel;
|
2022-12-14 15:37:55 +08:00
|
|
|
|
|
|
|
|
|
|
class LedgerSalaryItemTable extends Component {
|
|
|
|
|
|
constructor(props) {
|
|
|
|
|
|
super(props);
|
|
|
|
|
|
this.state = {
|
2023-07-19 15:02:44 +08:00
|
|
|
|
selectedRowKeys: [],
|
2023-07-31 10:51:10 +08:00
|
|
|
|
originRecord: {},
|
2023-07-19 15:02:44 +08:00
|
|
|
|
salaryItemPayload: {
|
|
|
|
|
|
visible: false, record: {},
|
|
|
|
|
|
request: {}, isLedger: true,
|
2023-07-21 15:37:57 +08:00
|
|
|
|
userStatusList: [], loading: false
|
2023-07-25 16:16:39 +08:00
|
|
|
|
},
|
|
|
|
|
|
editFormulModal: {
|
|
|
|
|
|
visible: false,
|
|
|
|
|
|
formulaId: "",
|
|
|
|
|
|
valueType: "",
|
2023-08-31 15:02:56 +08:00
|
|
|
|
dataType: "",
|
|
|
|
|
|
name: ""
|
2023-07-19 15:02:44 +08:00
|
|
|
|
}
|
2022-12-14 15:37:55 +08:00
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
* Author: 黎永顺
|
|
|
|
|
|
* Description: 列表操作隐藏复选框
|
|
|
|
|
|
* Params:
|
|
|
|
|
|
* Date: 2022/12/14
|
|
|
|
|
|
*/
|
|
|
|
|
|
handleChangeItem = (value, id) => {
|
|
|
|
|
|
const { dataSource, onHandleItemhide } = this.props;
|
|
|
|
|
|
onHandleItemhide(
|
|
|
|
|
|
_.map([...dataSource], item => {
|
2023-04-07 13:51:06 +08:00
|
|
|
|
if (id === item.id || id === item.key) {
|
2022-12-14 15:37:55 +08:00
|
|
|
|
return {
|
|
|
|
|
|
...item,
|
|
|
|
|
|
itemHide: String(value)
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
return { ...item };
|
|
|
|
|
|
})
|
|
|
|
|
|
);
|
|
|
|
|
|
};
|
|
|
|
|
|
handleChangeAllItem = (value) => {
|
|
|
|
|
|
const { dataSource, onHandleItemhide } = this.props;
|
|
|
|
|
|
onHandleItemhide(
|
|
|
|
|
|
_.map([...dataSource], item => {
|
|
|
|
|
|
return {
|
|
|
|
|
|
...item,
|
|
|
|
|
|
itemHide: String(value)
|
|
|
|
|
|
};
|
|
|
|
|
|
})
|
|
|
|
|
|
);
|
|
|
|
|
|
};
|
2023-07-24 18:22:24 +08:00
|
|
|
|
handleChangeSalaryItem = (data, id) => {
|
|
|
|
|
|
const { dataSource, onHandleItemhide } = this.props;
|
|
|
|
|
|
onHandleItemhide(
|
|
|
|
|
|
_.map([...dataSource], item => {
|
2023-07-25 18:22:43 +08:00
|
|
|
|
if (id === item.salaryItemId) {
|
2023-07-24 18:22:24 +08:00
|
|
|
|
return {
|
|
|
|
|
|
...item,
|
|
|
|
|
|
...data
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
return { ...item };
|
|
|
|
|
|
})
|
|
|
|
|
|
);
|
|
|
|
|
|
};
|
2023-07-19 15:02:44 +08:00
|
|
|
|
/*
|
|
|
|
|
|
* Author: 黎永顺
|
|
|
|
|
|
* Description: 编辑薪资项目
|
|
|
|
|
|
* Params:
|
|
|
|
|
|
* Date: 2023/7/19
|
|
|
|
|
|
*/
|
|
|
|
|
|
handleEditSalaryItem = async (record) => {
|
2023-07-25 18:22:43 +08:00
|
|
|
|
const { salarySobId, dataSource } = this.props, { salaryItemId, id } = record;
|
2023-07-24 18:22:24 +08:00
|
|
|
|
const {
|
|
|
|
|
|
itemHide: hideDefault,
|
2023-07-25 18:22:43 +08:00
|
|
|
|
valueType, name, description,
|
2023-07-26 14:10:55 +08:00
|
|
|
|
roundingMode, formulaId, dataType, useInEmployeeSalary,
|
|
|
|
|
|
pattern, canEdit, formulaContent, originFormulaContent, originSqlContent
|
2023-07-24 18:22:24 +08:00
|
|
|
|
} = _.find(dataSource, it => it.salaryItemId === salaryItemId);
|
2023-07-19 15:02:44 +08:00
|
|
|
|
const { data: userStatusList } = await commonEnumList({ enumClass: "com.engine.salary.enums.sicategory.SharedTypeEnum" });
|
2023-07-25 18:22:43 +08:00
|
|
|
|
if (id) {
|
|
|
|
|
|
getSalaryItemForm({ salarySobId, salaryItemId }).then(({ status, data }) => {
|
|
|
|
|
|
if (status) {
|
|
|
|
|
|
this.setState({
|
2023-07-31 10:51:10 +08:00
|
|
|
|
originRecord: _.find(dataSource, it => it.salaryItemId === salaryItemId),
|
2023-07-25 18:22:43 +08:00
|
|
|
|
salaryItemPayload: {
|
|
|
|
|
|
...this.state.salaryItemPayload,
|
|
|
|
|
|
visible: true,
|
|
|
|
|
|
request: {
|
|
|
|
|
|
...data,
|
2023-07-26 14:10:55 +08:00
|
|
|
|
useInEmployeeSalary: !_.isNil(data.useInEmployeeSalary) ? data.useInEmployeeSalary : "0",
|
2023-07-31 10:51:10 +08:00
|
|
|
|
hideDefault: _.isNil(hideDefault) ? "0" : hideDefault, valueType, roundingMode, pattern,
|
|
|
|
|
|
formulaContent: formulaContent ? formulaContent : data.formulaContent,
|
|
|
|
|
|
originFormulaContent: originFormulaContent ? originFormulaContent : data.originFormulaContent,
|
|
|
|
|
|
originSqlContent: originSqlContent ? originSqlContent : data.originSqlContent,
|
|
|
|
|
|
formulaId: formulaId ? formulaId : data.formulaId
|
2023-07-25 18:22:43 +08:00
|
|
|
|
},
|
|
|
|
|
|
record,
|
|
|
|
|
|
userStatusList: _.map(userStatusList, it => ({ key: it.value.toString(), showname: it.defaultLabel }))
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
} else {
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
salaryItemPayload: {
|
|
|
|
|
|
...this.state.salaryItemPayload,
|
|
|
|
|
|
visible: true,
|
|
|
|
|
|
request: {
|
|
|
|
|
|
canEdit, dataType, description,
|
|
|
|
|
|
formulaContent, formulaId, name,
|
|
|
|
|
|
hideDefault: _.isNil(hideDefault) ? "0" : hideDefault,
|
2023-07-26 14:10:55 +08:00
|
|
|
|
valueType, roundingMode, pattern,
|
|
|
|
|
|
originFormulaContent, originSqlContent,
|
|
|
|
|
|
useInEmployeeSalary: !_.isNil(useInEmployeeSalary) ? useInEmployeeSalary : "0"
|
2023-07-25 18:22:43 +08:00
|
|
|
|
},
|
|
|
|
|
|
record,
|
|
|
|
|
|
userStatusList: _.map(userStatusList, it => ({ key: it.value.toString(), showname: it.defaultLabel }))
|
2023-07-31 10:51:10 +08:00
|
|
|
|
},
|
|
|
|
|
|
originRecord: _.find(dataSource, it => it.salaryItemId === salaryItemId)
|
2023-07-25 18:22:43 +08:00
|
|
|
|
});
|
|
|
|
|
|
}
|
2023-07-19 15:02:44 +08:00
|
|
|
|
};
|
|
|
|
|
|
/*
|
|
|
|
|
|
* Author: 黎永顺
|
|
|
|
|
|
* Description: 保存薪资项目
|
|
|
|
|
|
* Params:
|
|
|
|
|
|
* Date: 2023/7/19
|
|
|
|
|
|
*/
|
|
|
|
|
|
handleSaveItem = () => {
|
|
|
|
|
|
const { salaryItemPayload } = this.state;
|
2023-07-21 15:37:57 +08:00
|
|
|
|
const { request, record } = salaryItemPayload;
|
|
|
|
|
|
this.setState({
|
2023-07-24 18:22:24 +08:00
|
|
|
|
salaryItemPayload: { ...salaryItemPayload, visible: false }
|
2023-07-21 15:37:57 +08:00
|
|
|
|
});
|
2023-07-25 18:22:43 +08:00
|
|
|
|
const { salaryItemId } = record;
|
2023-07-25 16:16:39 +08:00
|
|
|
|
const {
|
2023-07-28 16:28:27 +08:00
|
|
|
|
hideDefault, roundingMode, pattern, valueType,
|
|
|
|
|
|
originFormulaContent, originSqlContent, formulaId
|
2023-07-25 16:16:39 +08:00
|
|
|
|
} = request;
|
|
|
|
|
|
this.handleChangeSalaryItem({
|
|
|
|
|
|
itemHide: hideDefault.toString(),
|
2023-07-31 10:51:10 +08:00
|
|
|
|
roundingMode, pattern, valueType,
|
2023-07-25 16:16:39 +08:00
|
|
|
|
formulaContent: valueType.toString() === "2" ? originFormulaContent : originSqlContent,
|
2023-07-31 11:50:30 +08:00
|
|
|
|
formulaId: ((valueType.toString() === "3" && (!originSqlContent || originSqlContent === " ")) || (valueType.toString() === "2" && (!originFormulaContent || originFormulaContent === " ")) || valueType.toString() === "1") ? "" : formulaId,
|
2023-07-31 10:51:10 +08:00
|
|
|
|
//不能改成其他空值
|
|
|
|
|
|
originFormulaContent: ((valueType.toString() === "3" && (!originSqlContent) || originSqlContent === " ") || (valueType.toString() === "1") || (valueType.toString() === "3" && originSqlContent)) ? " " : originFormulaContent,
|
|
|
|
|
|
originSqlContent: ((valueType.toString() === "2" && (!originFormulaContent || originFormulaContent === " ")) || (valueType.toString() === "1") || (valueType.toString() === "2" && originFormulaContent)) ? " " : originSqlContent
|
2023-07-25 18:22:43 +08:00
|
|
|
|
}, salaryItemId);
|
2023-07-25 16:16:39 +08:00
|
|
|
|
};
|
2023-08-31 15:02:56 +08:00
|
|
|
|
handleEditFormnul = (salaryItemName) => {
|
2023-07-25 16:16:39 +08:00
|
|
|
|
const { salaryItemPayload, editFormulModal } = this.state;
|
|
|
|
|
|
const { record } = salaryItemPayload;
|
2023-08-04 09:34:04 +08:00
|
|
|
|
const { valueType, formulaId, dataType, originFormulaContent, originSqlContent } = record;
|
2023-07-25 16:16:39 +08:00
|
|
|
|
this.setState({
|
|
|
|
|
|
editFormulModal: {
|
2023-08-31 15:02:56 +08:00
|
|
|
|
...editFormulModal, visible: true, valueType, dataType, name: salaryItemName,
|
2023-07-31 10:51:10 +08:00
|
|
|
|
formulaId: ((valueType.toString() === "2" && (originFormulaContent || originFormulaContent !== " ")) || valueType.toString() === "3" && (originSqlContent || originSqlContent === " ")) ? formulaId : ""
|
2023-07-25 16:16:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
handleCloseFormnul = () => {
|
|
|
|
|
|
const { editFormulModal } = this.state;
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
editFormulModal: {
|
|
|
|
|
|
...editFormulModal,
|
|
|
|
|
|
visible: false,
|
2023-08-31 15:02:56 +08:00
|
|
|
|
formulaId: "", name: "",
|
2023-07-25 16:16:39 +08:00
|
|
|
|
valueType: "", dataType: ""
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
handleSaveFormnul = (data) => {
|
|
|
|
|
|
const { salaryItemPayload } = this.state;
|
|
|
|
|
|
const { record } = salaryItemPayload;
|
|
|
|
|
|
const { salaryItemId } = record;
|
|
|
|
|
|
const { dataSource, onHandleItemhide } = this.props;
|
|
|
|
|
|
const tmpV = _.cloneDeep(dataSource);
|
|
|
|
|
|
const formnulData = _.map(tmpV, it => {
|
|
|
|
|
|
if (it.salaryItemId === salaryItemId) {
|
|
|
|
|
|
return {
|
|
|
|
|
|
...it,
|
|
|
|
|
|
formulaId: data.id, formulaContent: data.formula,
|
|
|
|
|
|
originFormulaContent: data.referenceType === "formula" ? data.formula : "",
|
|
|
|
|
|
originSqlContent: data.referenceType === "sql" ? data.formula : ""
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
return { ...it };
|
|
|
|
|
|
});
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
salaryItemPayload: {
|
|
|
|
|
|
...salaryItemPayload,
|
|
|
|
|
|
request: {
|
|
|
|
|
|
...salaryItemPayload.request,
|
|
|
|
|
|
formulaId: data.id,
|
|
|
|
|
|
originFormulaContent: data.referenceType === "formula" ? data.formula : "",
|
|
|
|
|
|
originSqlContent: data.referenceType === "sql" ? data.formula : ""
|
2023-07-31 10:51:10 +08:00
|
|
|
|
},
|
|
|
|
|
|
record: {
|
|
|
|
|
|
...salaryItemPayload.record,
|
|
|
|
|
|
formulaId: data.id,
|
|
|
|
|
|
originFormulaContent: data.referenceType === "formula" ? data.formula : "",
|
|
|
|
|
|
originSqlContent: data.referenceType === "sql" ? data.formula : ""
|
2023-07-25 16:16:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}, () => {
|
|
|
|
|
|
this.handleCloseFormnul();
|
|
|
|
|
|
onHandleItemhide(formnulData);
|
|
|
|
|
|
});
|
2023-07-19 15:02:44 +08:00
|
|
|
|
};
|
2022-12-14 15:37:55 +08:00
|
|
|
|
|
|
|
|
|
|
render() {
|
2023-07-31 10:51:10 +08:00
|
|
|
|
const { salaryItemPayload, editFormulModal, originRecord } = this.state;
|
|
|
|
|
|
const { onHandleItemhide } = this.props;
|
2023-04-07 13:51:06 +08:00
|
|
|
|
const {
|
2023-07-31 10:51:10 +08:00
|
|
|
|
tableData, dataSource, onDropCategoryItem,
|
|
|
|
|
|
onChangeSelectedRowKeys, selectedRowKeys, onMoveTo
|
2023-04-07 13:51:06 +08:00
|
|
|
|
} = this.props;
|
2022-12-14 15:37:55 +08:00
|
|
|
|
const rowSelection = {
|
|
|
|
|
|
selectedRowKeys,
|
|
|
|
|
|
onChange: (selectedRowKeys) => this.setState({ selectedRowKeys }, () => {
|
|
|
|
|
|
onChangeSelectedRowKeys(this.state.selectedRowKeys);
|
|
|
|
|
|
}),
|
|
|
|
|
|
getCheckboxProps: record => ({
|
|
|
|
|
|
disabled: !record.canDelete
|
|
|
|
|
|
})
|
|
|
|
|
|
};
|
2023-07-26 14:10:55 +08:00
|
|
|
|
const checkValue = (!_.isEmpty(tableData) && _.every(tableData, it => it.itemHide && it.itemHide === "1")) ? "1" : "0";
|
2022-12-14 15:37:55 +08:00
|
|
|
|
const columns = [
|
|
|
|
|
|
{
|
|
|
|
|
|
title: "名称",
|
|
|
|
|
|
dataIndex: "name",
|
|
|
|
|
|
key: "name"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: <span>
|
|
|
|
|
|
<span style={{ marginRight: 8 }}>核算公式</span>
|
|
|
|
|
|
<WeaHelpfulTip title={<HelpContent/>} placement="bottom" width={200}/>
|
|
|
|
|
|
</span>,
|
2023-07-19 15:02:44 +08:00
|
|
|
|
dataIndex: "valueType",
|
|
|
|
|
|
key: "valueType",
|
2023-07-25 16:16:39 +08:00
|
|
|
|
render: (e, record) => {
|
2023-08-25 16:12:05 +08:00
|
|
|
|
const { valueType, formulaContent } = record;
|
2023-07-25 16:16:39 +08:00
|
|
|
|
const key = !_.isNil(valueType) ? valueType : "";
|
2023-08-25 16:12:05 +08:00
|
|
|
|
return <span> {key.toString() === "1" ? "输入" : key.toString() === "2" ? formulaContent : key.toString() === "3" ? formulaContent : ""} </span>;
|
2022-12-14 15:37:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: "个税申请表对应字段",
|
|
|
|
|
|
dataIndex: "taxDeclarationColumn",
|
|
|
|
|
|
key: "taxDeclarationColumn"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: <span>
|
|
|
|
|
|
<WeaCheckbox
|
|
|
|
|
|
value={checkValue}
|
|
|
|
|
|
onChange={value => this.handleChangeAllItem(value)}
|
|
|
|
|
|
/>
|
|
|
|
|
|
<span style={{ marginLeft: 8 }}>隐藏</span>
|
|
|
|
|
|
</span>,
|
|
|
|
|
|
dataIndex: "itemHide",
|
|
|
|
|
|
key: "itemHide",
|
2023-03-08 15:42:10 +08:00
|
|
|
|
width: 80,
|
2022-12-14 15:37:55 +08:00
|
|
|
|
render: (text, record) => <WeaCheckbox
|
|
|
|
|
|
value={text ? String(text) : !text ? "0" : "1"}
|
2023-04-07 13:51:06 +08:00
|
|
|
|
onChange={value => this.handleChangeItem(value, record.id || record.key)}
|
2022-12-14 15:37:55 +08:00
|
|
|
|
/>
|
2023-03-08 15:42:10 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: "操作",
|
|
|
|
|
|
dataIndex: "operate",
|
|
|
|
|
|
key: "operate",
|
2023-07-19 15:02:44 +08:00
|
|
|
|
width: 120,
|
2023-03-08 16:15:04 +08:00
|
|
|
|
render: (_, record) => (
|
2023-07-19 15:02:44 +08:00
|
|
|
|
<React.Fragment>
|
|
|
|
|
|
<a href="javascript:void(0);" onClick={() => this.handleEditSalaryItem(record)}
|
|
|
|
|
|
style={{ marginRight: 10 }}>编辑</a>
|
|
|
|
|
|
<a href="javascript:void(0);" onClick={() => onMoveTo(record)}>移动到</a>
|
|
|
|
|
|
</React.Fragment>
|
2023-03-08 15:42:10 +08:00
|
|
|
|
)
|
2022-12-14 15:37:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
];
|
|
|
|
|
|
return (
|
2023-07-19 15:02:44 +08:00
|
|
|
|
<React.Fragment>
|
|
|
|
|
|
<WeaTable
|
|
|
|
|
|
rowKey={record => record.id || record.key}
|
|
|
|
|
|
rowSelection={rowSelection}
|
2023-07-26 14:10:55 +08:00
|
|
|
|
dataSource={tableData}
|
2023-07-19 15:02:44 +08:00
|
|
|
|
columns={columns}
|
|
|
|
|
|
onRow={(record, index) => ({
|
|
|
|
|
|
index,
|
|
|
|
|
|
moveRow: record
|
|
|
|
|
|
})}
|
|
|
|
|
|
pagination={false}
|
|
|
|
|
|
onDrop={onDropCategoryItem}
|
2023-07-26 14:10:55 +08:00
|
|
|
|
draggable={dataSource.length === tableData.length}
|
2023-07-19 15:02:44 +08:00
|
|
|
|
/>
|
|
|
|
|
|
<LedgerSalaryItemEditSlide
|
|
|
|
|
|
{...salaryItemPayload}
|
2023-07-25 16:16:39 +08:00
|
|
|
|
onUpdateRequest={(request, key) => {
|
2023-07-19 15:02:44 +08:00
|
|
|
|
this.setState({
|
|
|
|
|
|
salaryItemPayload: {
|
2023-07-31 10:51:10 +08:00
|
|
|
|
...salaryItemPayload,
|
|
|
|
|
|
request,
|
2023-07-25 16:16:39 +08:00
|
|
|
|
record: key === "valueType" ? {
|
|
|
|
|
|
...salaryItemPayload.record,
|
|
|
|
|
|
[key]: request[key]
|
|
|
|
|
|
} : { ...salaryItemPayload.record }
|
2023-07-19 15:02:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}}
|
2023-07-25 16:16:39 +08:00
|
|
|
|
onEditFormnul={this.handleEditFormnul}
|
2023-07-19 15:02:44 +08:00
|
|
|
|
onSave={this.handleSaveItem}
|
|
|
|
|
|
onClose={() => this.setState({
|
|
|
|
|
|
salaryItemPayload: {
|
|
|
|
|
|
...salaryItemPayload, visible: false
|
|
|
|
|
|
}
|
2023-07-31 10:51:10 +08:00
|
|
|
|
}, () => {
|
|
|
|
|
|
const result = _.map(_.cloneDeep(dataSource), it => {
|
|
|
|
|
|
if (it.salaryItemId === originRecord.salaryItemId) {
|
|
|
|
|
|
return { ...originRecord };
|
|
|
|
|
|
}
|
|
|
|
|
|
return { ...it };
|
|
|
|
|
|
});
|
|
|
|
|
|
onHandleItemhide(result);
|
2023-07-19 15:02:44 +08:00
|
|
|
|
})}
|
|
|
|
|
|
/>
|
2023-07-25 16:16:39 +08:00
|
|
|
|
{/*公式编辑*/}
|
|
|
|
|
|
{
|
|
|
|
|
|
editFormulModal.visible &&
|
|
|
|
|
|
<FormalFormModal
|
|
|
|
|
|
{...editFormulModal}
|
|
|
|
|
|
onSaveFormal={this.handleSaveFormnul}
|
|
|
|
|
|
onCancel={this.handleCloseFormnul}
|
|
|
|
|
|
/>
|
|
|
|
|
|
}
|
2023-07-19 15:02:44 +08:00
|
|
|
|
</React.Fragment>
|
2022-12-14 15:37:55 +08:00
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export default LedgerSalaryItemTable;
|
|
|
|
|
|
|
|
|
|
|
|
const HelpContent = () => {
|
|
|
|
|
|
return <span>
|
|
|
|
|
|
<span>1、新建薪资账套时,核算公式与【薪资项目管理】菜单一致;</span><br/>
|
|
|
|
|
|
<span>2、取值方式为公式的薪资项目,核算公式显示为具体公式;点击公式可编辑公式,核算时,按照当前薪资项目的公式进行核算;</span><br/>
|
|
|
|
|
|
<span>3、薪资账套内的薪资项目的公式或SQL的修改或公式的修改,都不影响【薪资项目管理】菜单的薪资项目取值方式或公式,只对当前账套生效;</span><br/>
|
|
|
|
|
|
</span>;
|
|
|
|
|
|
};
|