release/2.19.1.2501.01-个税

This commit is contained in:
lys 2025-03-27 09:40:20 +08:00
parent 461944eced
commit 1549eab2ee
5 changed files with 125 additions and 15 deletions

View File

@ -296,3 +296,7 @@ export const addDeductionAmount = (params) => {
export const deleteDeductionAmount = (params) => {
return postFetch("/api/bs/hrmsalary/deductionAmount/delete", params);
};
//扣除名单确认-编辑人员
export const editDeductionAmount = (params) => {
return postFetch("/api/bs/hrmsalary/deductionAmount/edit", params);
};

View File

@ -0,0 +1,78 @@
/*
* 扣除名单确认
* 编辑是否扣除
* @Author: 黎永顺
* @Date: 2025/3/27
* @Wechat:
* @Email: 971387674@qq.com
* @description:
*/
import React, { Component } from "react";
import { WeaDialog, WeaLocaleProvider, WeaTools } from "ecCom";
import { Button, message } from "antd";
import { WeaForm } from "comsMobx";
import FormInfo from "../../../components/FormInfo";
import { deductConditions } from "../constants";
import * as API from "../../../apis/declare";
const getKey = WeaTools.getKey;
const getLabel = WeaLocaleProvider.getLabel;
const form = new WeaForm();
class DeductionAmountEditDialog extends Component {
constructor(props) {
super(props);
this.state = {
conditions: [], loading: false
};
}
componentWillReceiveProps(nextProps, nextContext) {
if (nextProps.visible !== this.props.visible && nextProps.visible) this.initForm(nextProps);
if (nextProps.visible !== this.props.visible && !nextProps.visible) form.resetForm();
}
initForm = (props) => {
const { record } = props;
this.setState({
conditions: _.map(deductConditions, item => ({
...item,
items: _.map(item.items, o => ({ ...o, value: record[getKey(o)] + "", label: getLabel(o.lanId, o.label) }))
}))
}, () => form.initFormFields(this.state.conditions));
};
save = () => {
form.validateForm().then(f => {
if (f.isValid) {
const { id } = this.props.record;
const paylaod = { id, deductFlag: form.getFormParams().deductFlag };
this.setState({ loading: true });
API.editDeductionAmount(paylaod).then(({ status, errormsg }) => {
this.setState({ loading: false });
if (status) {
message.success(getLabel(30700, "操作成功!"));
this.props.onCancel(this.props.onSuccess);
} else {
message.error(errormsg);
}
}).catch(() => this.setState({ loading: false }));
} else {
f.showErrors();
}
});
};
render() {
const { conditions, loading } = this.state;
const height = _.reduce(conditions, (pre, cur) => pre + cur.items.length, 0).length * 47;
return (<WeaDialog {...this.props} initLoadCss title={getLabel(111, "编辑")} style={{ height }}
buttons={[<Button type="primary" loading={loading}
onClick={this.save}>{getLabel(111, "确定")}</Button>,
<Button type="ghost" onClick={() => this.props.onCancel()}>{getLabel(111, "取消")}</Button>]}>
<FormInfo className="form-dialog-layout" center={false} form={form} formFields={conditions}/>
</WeaDialog>);
}
}
export default DeductionAmountEditDialog;

View File

@ -8,8 +8,9 @@
*/
import React, { Component } from "react";
import { WeaButtonIcon, WeaDialog, WeaLocaleProvider, WeaTable, WeaTools } from "ecCom";
import { message, Modal } from "antd";
import DeductionListConfirmEmployeeDialog from "./deductionListConfirmEmployeeDialog";
import DeductionAmountEditDialog from "./deductionAmountEditDialog";
import { message, Modal } from "antd";
import * as API from "../../../apis/declare";
const { getLabel } = WeaLocaleProvider, { getUrlParams } = WeaTools;
@ -19,7 +20,7 @@ class DeductionListConfirmDialog extends Component {
super(props);
this.state = {
pageInfo: { current: 1, pageSize: 10, total: 0 }, loading: false, columns: [], dataSource: [], visible: false,
selectedRowKeys: []
selectedRowKeys: [], editDialog: { visible: false, record: {} }
};
}
@ -47,7 +48,9 @@ class DeductionListConfirmDialog extends Component {
return { ...o };
}), {
title: getLabel(111, "操作"), dataIndex: "action",
render: (v, record) => (<a href="javascript:void(0)">{getLabel(111, "编辑")}</a>)
render: (v, record) => (<a href="javascript:void(0)" onClick={() => this.setState({
editDialog: { visible: true, record }
})}>{getLabel(111, "编辑")}</a>)
}]
});
}
@ -61,7 +64,7 @@ class DeductionListConfirmDialog extends Component {
API.deleteDeductionAmount({ ids: this.state.selectedRowKeys }).then(({ status, errormsg }) => {
if (status) {
message.success(getLabel(111, "操作成功"));
this.getDeductionAmountList();
this.setState({ selectedRowKeys: [] }, () => this.getDeductionAmountList());
} else {
message.error(errormsg);
}
@ -71,7 +74,7 @@ class DeductionListConfirmDialog extends Component {
};
render() {
const { loading, columns, dataSource, pageInfo, visible, selectedRowKeys } = this.state;
const { loading, columns, dataSource, pageInfo, visible, selectedRowKeys, editDialog } = this.state;
const pagination = {
...pageInfo,
showTotal: total => `${getLabel(18609, "共")} ${total} ${getLabel(18256, "条")}`,
@ -96,7 +99,7 @@ class DeductionListConfirmDialog extends Component {
return (
<WeaDialog {...this.props} hasScroll initLoadCss title={getLabel(111, "扣除名单确认")} ref="confirmRef"
style={{
width: 1150, height: 606.6, minHeight: 200, minWidth: 380, maxHeight: "90%",
width: 1150, height: 490, minHeight: 200, minWidth: 380, maxHeight: "90%",
maxWidth: "90%", overflow: "hidden", transform: "translate(0px, 0px)"
}}>
<div className="confirmationDialogContent">
@ -108,6 +111,10 @@ class DeductionListConfirmDialog extends Component {
</div>
<WeaTable columns={columns} dataSource={dataSource} loading={loading} pagination={pagination} rowKey="id"
rowSelection={rowSelection} scroll={{ y: `calc(${height}px - 113px)` }}/>
<DeductionAmountEditDialog {...editDialog} onSuccess={this.getDeductionAmountList}
onCancel={(callback) => this.setState({
editDialog: { visible: false, record: {} }
}, () => callback && callback())}/>
<DeductionListConfirmEmployeeDialog visible={visible} onSuccess={this.getDeductionAmountList}
year={this.props.year} payload={this.props.payload}
onCancel={(callback) => this.setState({ visible: false }, () => callback && callback())}/>

View File

@ -92,14 +92,8 @@ class DeductionListConfirmEmployeeDialog extends Component {
onClick={this.save}>{getLabel(111, "确认")}</Button>,
<Button type="ghost" onClick={() => this.props.onCancel()}>{getLabel(111, "取消")}</Button>]}
style={{
width: 1150,
height: 606.6,
minHeight: 200,
minWidth: 380,
maxHeight: "90%",
maxWidth: "90%",
overflow: "hidden",
transform: "translate(0px, 0px)"
width: 1150, height: 490, minHeight: 200, minWidth: 380, maxHeight: "90%", maxWidth: "90%",
overflow: "hidden", transform: "translate(0px, 0px)"
}}>
<div className="confirmationDialogContent">
<WeaTable columns={columns} dataSource={dataSource} loading={loading} pagination={pagination} rowKey="id"

View File

@ -170,7 +170,6 @@ export const advanceConditions = [
defaultshow: true
}
];
export const declareConditions = [
{
items: [
@ -491,3 +490,31 @@ export const declareConditions = [
defaultshow: true
}
];
// 扣除名单确认
export const deductConditions = [
{
items: [
{
conditionType: "INPUT",
domkey: ["employeeName"],
fieldcol: 12,
label: "姓名",
lanId: 111,
labelcol: 6,
value: "",
viewAttr: 1
},
{
conditionType: "SWITCH",
domkey: ["deductFlag"],
fieldcol: 12,
label: "是否扣除",
lanId: 111,
labelcol: 6,
value: "",
viewAttr: 2
},
],
defaultshow: true
}
];