薪资账套页面重构

This commit is contained in:
黎永顺 2022-12-12 16:10:11 +08:00
parent 2de636febc
commit 6d9787d924
4 changed files with 394 additions and 7 deletions

View File

@ -76,3 +76,37 @@
}
}
}
//调薪计薪规则弹框
.adjustRuleModalWrapper {
.titleTipWrapper {
display: flex;
align-items: center;
.title {
margin-right: 4px;
}
}
.adjustRuleDetailWrapper{
display: flex;
flex-direction: column;
.adjustSalaryFlex{
display: flex;
}
}
.wea-select, .ant-select-selection, .ant-select {
width: 100%;
}
.wea-select {
display: inline-block;
position: relative;
}
.ant-select-selection {
height: 30px;
border-radius: 0;
}
}

View File

@ -0,0 +1,149 @@
/*
* Author: 黎永顺
* name: 新增调薪计薪规
* Description:
* Date: 2022/12/12
*/
import React, { Component } from "react";
import { WeaDialog, WeaFormItem, WeaHelpfulTip, WeaSearchGroup, WeaSelect } from "ecCom";
import { Button, Radio } from "antd";
import { monthDays } from "../config";
import { listSalarySobItem } from "../../../apis/ledger";
import "./index.less";
class LedgerAdjustRuleAddModal extends Component {
constructor(props) {
super(props);
this.state = {
beforeAdjustmentType: "",
afterAdjustmentType: "",
salaryItemId: "",
salaryItemName: "",
dayOfMonth: "",
salaryItemOptions: []
};
}
componentWillReceiveProps(nextProps, nextContext) {
if (nextProps.visible !== this.props.visible && !nextProps.salarySobId) this.listSalarySobItem();
}
listSalarySobItem = () => {
const { salarySobId } = this.props;
const payload = {
excludeSalaryItemIds: [],
salarySobId
};
listSalarySobItem(payload).then(({ status, data }) => {
if (status) {
this.setState({
salaryItemOptions: _.map(data, it => ({ key: it.id, showname: it.content }))
});
}
});
};
render() {
const {
salaryItemId,
salaryItemOptions,
dayOfMonth,
beforeAdjustmentType,
afterAdjustmentType
} = this.state;
const { onCancel, title, visible } = this.props;
const buttons = [<Button type="primary">保存</Button>];
return (
<WeaDialog
initLoadCss
className="adjustRuleModalWrapper"
title={title}
visible={visible}
style={{ width: 680 }}
buttons={buttons}
onCancel={onCancel}
>
<WeaSearchGroup col={1} needTigger title="" showGroup center>
<WeaFormItem label="薪资项目" labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
<WeaSelect
viewAttr={3}
value={salaryItemId}
options={salaryItemOptions}
onChange={(salaryItemId, salaryItemName) => this.setState({ salaryItemId, salaryItemName })}
/>
</WeaFormItem>
<WeaFormItem label={<AdjustTitle/>} labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
<div className="adjustRuleDetailWrapper">
<div className="adjustSalaryFlex">
<span>如果调薪生效日期在</span>
<WeaSelect
viewAttr={3}
value={dayOfMonth}
options={monthDays}
onChange={(dayOfMonth) => this.setState({ dayOfMonth })}
/>
<span>之前</span>
</div>
<div className="adjustSalaryFlex">
<span>计薪规则为</span>
<Radio.Group onChange={(value) => {
console.log(value);
}} value={beforeAdjustmentType}>
<Radio value={2}>取调整后薪资</Radio>
<Radio value={4}>分段计薪<WeaHelpfulTip
style={{ marginLeft: "10px" }}
width={200}
title="=调整前薪资/当月自然日天数*调整前自然日天数+调整后薪资/当月自然日天数*调整后自然日天数"
placement="topLeft"
/></Radio>
<Radio value={3}>取平均<WeaHelpfulTip
style={{ marginLeft: "10px" }}
width={200}
title="=(调整前薪资+调整后薪资)/2"
placement="topLeft"
/>
</Radio>
</Radio.Group>
</div>
<div>否则调薪生效日期在{dayOfMonth}号之后</div>
<div className="adjustSalaryFlex">
<span>计薪规则为</span>
<Radio.Group onChange={(value) => {
console.log(value);
}} value={afterAdjustmentType}>
<Radio value={1}>取调整前薪资</Radio>
<Radio value={4}>分段计薪<WeaHelpfulTip
style={{ marginLeft: "10px" }}
width={200}
title="=调整前薪资/当月自然日天数*调整前自然日天数+调整后薪资/当月自然日天数*调整后自然日天数"
placement="topLeft"
/></Radio>
<Radio value={3}>取平均<WeaHelpfulTip
style={{ marginLeft: "10px" }}
width={200}
title="=(调整前薪资+调整后薪资)/2"
placement="topLeft"
/>
</Radio>
</Radio.Group>
</div>
</div>
</WeaFormItem>
</WeaSearchGroup>
</WeaDialog>
);
}
}
export default LedgerAdjustRuleAddModal;
const AdjustTitle = () => {
return <div className="titleTipWrapper">
<span className="title">计薪规则</span>
<WeaHelpfulTip
width={200}
title="该规则适用于一个薪资核算周期内只调整一次薪资或个税扣缴义务人的情况,其他情况默认按照分段计薪规则核算"
placement="topLeft"
/>
</div>;
};

View File

@ -5,18 +5,65 @@
* Date: 2022/12/12
*/
import React, { Component } from "react";
import { WeaButtonIcon, WeaInputSearch, WeaTab } from "ecCom";
import { inject, observer } from "mobx-react";
import { WeaButtonIcon, WeaTab, WeaTable } from "ecCom";
import LedgerAdjustRuleAddModal from "./ledgerAdjustRuleAddModal";
@inject("taxAgentStore")
@observer
class LedgerSalaryAdjustmentRules extends Component {
constructor(props) {
super(props);
this.state = {
dataSource: [],
columns: [],
adjustRuleAddModal: {
visible: false,
title: "调薪计薪规则项",
salarySobId: ""
}
};
}
handleAddAdjustRule = () => {
const { adjustRuleAddModal } = this.state;
const { editId } = this.props;
this.setState({
adjustRuleAddModal: {
...adjustRuleAddModal,
visible: true,
salarySobId: editId
}
});
};
handleCloseModal = () => {
const { adjustRuleAddModal } = this.state;
this.setState({
adjustRuleAddModal: {
...adjustRuleAddModal,
visible: false,
salarySobId: ""
}
});
};
render() {
const { taxAgentStore: { showOperateBtn }, editId, adjustRuleAddModal } = this.props;
const btns = showOperateBtn ? [
<WeaButtonIcon buttonType="add" type="primary" onClick={this.handleAddAdjustRule}/>
] : [];
return (
<div>
<WeaTab
datas={[]}
keyParam="viewcondition" //主键
selectedKey={selectedKey}
buttons={btns}
onChange={selectedKey => this.setState({ selectedKey })}
<WeaTab datas={[]} keyParam="viewcondition" buttons={btns}/>
<WeaTable
rowKey="id"
dataSource={dataSource}
columns={columns}
pagination={false}
/>
<LedgerAdjustRuleAddModal
{...adjustRuleAddModal}
onCancel={this.handleCloseModal}
/>
</div>
);

View File

@ -509,3 +509,160 @@ export const baseSettingFormItem = [
type: "TEXTAREA"
}
];
export const monthDays = [
{
key: "1",
selected: true,
showname: "1号"
},
{
key: "2",
selected: false,
showname: "2号"
},
{
key: "3",
selected: false,
showname: "3号"
},
{
key: "4",
selected: false,
showname: "4号"
},
{
key: "5",
selected: false,
showname: "5号"
},
{
key: "6",
selected: false,
showname: "6号"
},
{
key: "7",
selected: false,
showname: "7号"
},
{
key: "8",
selected: false,
showname: "8号"
},
{
key: "9",
selected: false,
showname: "9号"
},
{
key: "10",
selected: false,
showname: "10号"
},
{
key: "11",
selected: false,
showname: "11号"
},
{
key: "12",
selected: false,
showname: "12号"
},
{
key: "13",
selected: false,
showname: "13号"
},
{
key: "14",
selected: false,
showname: "14号"
},
{
key: "15",
selected: false,
showname: "15号"
},
{
key: "16",
selected: false,
showname: "16号"
},
{
key: "17",
selected: false,
showname: "17号"
},
{
key: "18",
selected: false,
showname: "18号"
},
{
key: "19",
selected: false,
showname: "19号"
},
{
key: "20",
selected: false,
showname: "20号"
},
{
key: "21",
selected: false,
showname: "21号"
},
{
key: "22",
selected: false,
showname: "22号"
},
{
key: "23",
selected: false,
showname: "23号"
},
{
key: "24",
selected: false,
showname: "24号"
},
{
key: "25",
selected: false,
showname: "25号"
},
{
key: "26",
selected: false,
showname: "26号"
},
{
key: "27",
selected: false,
showname: "27号"
},
{
key: "28",
selected: false,
showname: "28号"
},
{
key: "29",
selected: false,
showname: "29号"
},
{
key: "30",
selected: false,
showname: "30号"
},
{
key: "31",
selected: false,
showname: "31号"
}
];