diff --git a/pc4mobx/hrmSalary/apis/ledger.js b/pc4mobx/hrmSalary/apis/ledger.js index fc2e5f43..32103505 100644 --- a/pc4mobx/hrmSalary/apis/ledger.js +++ b/pc4mobx/hrmSalary/apis/ledger.js @@ -330,10 +330,14 @@ export const getAggregate = params => { export const getBackitemForm = params => { return WeaTools.callApi("/api/bs/hrmsalary/salarysob/backitem/getForm", "GET", params); }; -//薪资账套下的个税申报表规则的详情 +//薪资账套下的个税申报表-申报字段对应 export const taxreportruleGetForm = params => { return WeaTools.callApi("/api/bs/hrmsalary/salarysob/taxreportrule/getForm", "GET", params); }; +//薪资账套下的个税申报-累计字段对应 +export const addupruleGetForm = params => { + return WeaTools.callApi("/api/bs/hrmsalary/salarysob/adduprule/getForm", "GET", params); +}; //保存薪资账套下的个税申报表规则 export const taxreportruleSave = params => { return postFetch("/api/bs/hrmsalary/salarysob/taxreportrule/save", params); diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/cumulativeFields.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/cumulativeFields.js new file mode 100644 index 00000000..ef151183 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/cumulativeFields.js @@ -0,0 +1,120 @@ +/* + * Author: 黎永顺 + * name: 个税对接-累计字段对应 + * Description: + * Date: 2023/8/17 + */ +import React, { Component } from "react"; +import { WeaLocaleProvider, WeaSearchGroup, WeaTab } from "ecCom"; +import LedgerFieldsItemPopver from "./ledgerFieldsItemPopver"; +import { addupruleGetForm } from "../../../apis/ledger"; +import LedgerFieldsTable from "./ledgerFieldsTable"; + +const { getLabel } = WeaLocaleProvider; + +class CumulativeFields extends Component { + constructor(props) { + super(props); + this.state = { + selectedKey: "", tabs: [], + addupruleFields: [] + }; + } + + componentDidMount() { + this.taxreportruleGetForm(); + } + + taxreportruleGetForm = () => { + const { editId, saveSalarySobId } = this.props; + addupruleGetForm({ id: saveSalarySobId || editId }).then(({ status, data }) => { + if (status && !_.isEmpty(data)) { + this.setState({ + tabs: _.map(data, it => ({ viewcondition: it.incomeCategoryId, title: it.incomeCategoryName })), + selectedKey: _.take(data)[0].incomeCategoryId, + addupruleFields: data + }); + } + }); + }; + handleChangeSwitch = (visible, id) => { + const { addupruleFields, selectedKey } = this.state; + this.setState({ + addupruleFields: _.map(addupruleFields, it => { + if (it.incomeCategoryId === selectedKey) { + return { + ...it, + taxReportRules: _.map(it.taxReportRules, child => { + if (child.id === id) { + return { ...child, visible }; + } + return { ...child, visible: false }; + }) + }; + } + return { ...it }; + }) + }); + }; + handleChangeAddupruleFieldsItem = (salaryItem, recordRuleId) => { + const { addupruleFields, selectedKey } = this.state; + this.setState({ + addupruleFields: _.map(addupruleFields, it => { + if (it.incomeCategoryId === selectedKey) { + return { + ...it, + taxReportRules: _.map(it.taxReportRules, child => { + if (child.id === recordRuleId) { + return { ...child, visible: false, salaryItem }; + } + return { ...child, visible: false }; + }) + }; + } + return { ...it }; + }) + }); + }; + + render() { + const { editId, saveSalarySobId } = this.props; + const { selectedKey, tabs, addupruleFields } = this.state; + const dataSource = _.takeWhile(addupruleFields, it => it.incomeCategoryId === selectedKey); + return ( + + + + } + > + ( + + ) + } + ]} + dataSource={dataSource} + /> + + ); + } +} + +export default CumulativeFields; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/incomeTaxFields.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/incomeTaxFields.js index 4d41561a..bfdeeba6 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/incomeTaxFields.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/incomeTaxFields.js @@ -17,7 +17,7 @@ class IncomeTaxFields extends Component { super(props); this.state = { selectedKey: "", tabs: [], - incomeTaxFields: [] + incomeTaxFields: [], keywords: "" }; } @@ -78,8 +78,17 @@ class IncomeTaxFields extends Component { render() { const { editId, saveSalarySobId } = this.props; - const { selectedKey, tabs, incomeTaxFields, visible } = this.state; - const dataSource = _.takeWhile(incomeTaxFields, it => it.incomeCategoryId === selectedKey); + const { selectedKey, tabs, incomeTaxFields, keywords } = this.state; + const list = _.map(incomeTaxFields, it => { + if (it.incomeCategoryId === selectedKey) { + return { + ...it, + taxReportRules: _.filter(it.taxReportRules, item => item.reportColumnName.indexOf(keywords) !== -1) + }; + } + return { ...it }; + }); + const dataSource = _.takeWhile(list, it => it.incomeCategoryId === selectedKey); return ( this.setState({ keywords: val })} /> } diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less b/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less index 3d1d5d05..269bc4fd 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less @@ -299,3 +299,28 @@ line-height: 28px; } } + +.incomeDialog { + .incomeDialogTitle { + display: flex; + align-items: center; + + .incomeDialogTitle-left { + text-align: left; + + .title { + color: #111; + font-weight: 700; + } + } + + .incomeDialogTitle-right { + text-align: right; + } + } + + .incomeDialogContent { + height: 100%; + padding: 16px; + } +} diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerFieldsItemPopver.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerFieldsItemPopver.js index 74c28141..022c1b3b 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerFieldsItemPopver.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerFieldsItemPopver.js @@ -8,6 +8,7 @@ import React, { Component } from "react"; import { Icon, Popover } from "antd"; import { WeaInputSearch, WeaLocaleProvider } from "ecCom"; import { commonBrowserData } from "../../../apis"; +import LedgerSalaryItemSelectDialog from "./ledgerSalaryItemSelectDialog"; const { getLabel } = WeaLocaleProvider; @@ -16,7 +17,10 @@ class LedgerFieldsItemPopver extends Component { super(props); this.state = { dataList: [], - keywords: "" + keywords: "", + salaryItemSelectDialog: { + visible: false, salarySobId: "" + } }; this.handleDebounce = null; } @@ -73,31 +77,59 @@ class LedgerFieldsItemPopver extends Component { }; render() { - const { keywords, dataList } = this.state; - const { record, onChangeSwitch } = this.props; + const { keywords, dataList, salaryItemSelectDialog } = this.state; + const { record, onChangeSwitch, salarySobId } = this.props; return ( - - { - !_.isEmpty(dataList) ? - _.map(dataList, it => (
  • this.handleClickItem(it)}>{it.name}
  • )) : -
  • - -

    {getLabel(83553, "暂无数据")}

    -
  • - } - - } trigger="click" placement="right" overlayClassName="income_pop_wrapper" - visible={record.visible} - onVisibleChange={(visible) => onChangeSwitch(visible, record.id)} - > - alert(1)} + + + { + !_.isEmpty(dataList) ? + _.map(dataList, it => (
  • this.handleClickItem(it)}>{it.name}
  • )) : +
  • + +

    {getLabel(83553, "暂无数据")}

    +
  • + } + + } trigger="click" placement="right" overlayClassName="income_pop_wrapper" + visible={record.visible} + onVisibleChange={(visible) => onChangeSwitch(visible, record.id)} + > + this.setState({ + salaryItemSelectDialog: { + ...salaryItemSelectDialog, + visible: true, + salarySobId + } + })} + /> +
    + { + this.setState({ + salaryItemSelectDialog: { + ...salaryItemSelectDialog, + visible: false, + salarySobId: "" + } + }, () => this.props.onChange([], this.props.record.id)); + }} + onCancel={() => this.setState({ + salaryItemSelectDialog: { + ...salaryItemSelectDialog, + visible: false, + salarySobId: "" + } + })} /> -
    + ); } } diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemSelectDialog.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemSelectDialog.js new file mode 100644 index 00000000..137b8067 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemSelectDialog.js @@ -0,0 +1,119 @@ +/* + * Author: 黎永顺 + * name: 个税对应字段-薪资项目选择弹框 + * Description: + * Date: 2023/8/17 + */ +import React, { Component } from "react"; +import { WeaDialog, WeaInputSearch, WeaLocaleProvider } from "ecCom"; +import { Button, Col, Row, Table } from "antd"; +import { commonBrowserData } from "../../../apis"; + +const { getLabel } = WeaLocaleProvider; + +class LedgerSalaryItemSelectDialog extends Component { + constructor(props) { + super(props); + this.state = { + pageInfo: { current: 1, pageSize: 10, total: 0 }, + loading: false, columns: [], dataSource: [], + keywords: "" + }; + } + + componentWillReceiveProps(nextProps, nextContext) { + if (nextProps.visible !== this.props.visible && nextProps.visible) this.commonBrowserData(nextProps); + } + + commonBrowserData = (props) => { + const { salarySobId } = props; + const { keywords, pageInfo } = this.state; + const payload = { + type: "salaryItemBrowser", + jsonParam: JSON.stringify({ salarySobId, key: keywords }), + ...pageInfo + }; + this.setState({ loading: true }); + commonBrowserData(payload).then(({ status, data }) => { + this.setState({ loading: false }); + if (status) { + const { list: dataSource, columns, pageNum: current, pageSize, total } = data; + this.setState({ + dataSource, columns, + pageInfo: { ...pageInfo, current, pageSize, total } + }); + } + }).catch(() => this.setState({ loading: false })); + }; + handleRowClick = (record) => { + this.props.onCancel(); + this.props.handleClickItem(record); + }; + + render() { + const { loading, columns, dataSource, pageInfo, keywords } = this.state; + const pagination = { + ...pageInfo, + showTotal: total => `${getLabel(18609, "共")} ${total} ${getLabel(18256, "条")}`, + showQuickJumper: true, + showSizeChanger: true, + pageSizeOptions: ["10", "20", "50", "100"], + onShowSizeChange: (current, pageSize) => { + this.setState({ + pageInfo: { ...pageInfo, current, pageSize } + }, () => this.commonBrowserData(this.props)); + }, + onChange: current => { + this.setState({ + pageInfo: { ...pageInfo, current } + }, () => this.commonBrowserData(this.props)); + } + }; + return ( + {getLabel(111, "清除")} + ]} + title={( + + {getLabel(543598, "请选择薪资项目")} + + +