/* * Author: 黎永顺 * name: 新增/编辑个税扣缴义务人 * Description: * Date: 2022/11/29 */ import React, { Component } from "react"; import { inject, observer } from "mobx-react"; import { Button, message, Modal } from "antd"; import { WeaLocaleProvider, WeaSlideModal, WeaSteps } from "ecCom"; import SlideModalTitle from "../../../components/slideModalTitle"; import { decentralizationConditions, editConditions } from "../../taxAgent/editConditions"; import BaseSettings, { convertConditon } from "./baseSettings"; import PersonalScope from "./personalScope"; import TaxDeclarationInfo from "./taxDeclarationInfo"; import TaxFilingInfoDialofg from "./taxFillingInfoDialog"; import WeaTopTitle from "../../../components/custom-title/weaTopTitle"; import WeaReqTitle from "../../../components/custom-title/weaReqTitle"; import * as API from "../../../apis/taxAgent"; import { registrationCheck } from "../../../apis/taxAgent"; import "./index.less"; const { getLabel } = WeaLocaleProvider; const Step = WeaSteps.Step; @inject("taxAgentStore") @observer class TaxAgentSlide extends Component { constructor(props) { super(props); this.state = { current: 0, loading: false, verifyLoading: false, taxAgentId: "", taxFilingInfoDialofg: { visible: false, title: "", checkPayload: {}, isEdit: false, jumpAll: false, loading: false, taxAgentTaxReturnCheckFormDTO: null } }; this.taxInfoRef = null; } componentWillReceiveProps(nextProps, nextContext) { if (nextProps.visible !== this.props.visible || nextProps.decentralization !== this.props.decentralization) { const { taxAgentStore: { salarytaxAgentForm }, decentralization, isChief } = nextProps; decentralization === "0" ? salarytaxAgentForm.setCondition(convertConditon(decentralizationConditions, !isChief), true) : salarytaxAgentForm.setCondition(convertConditon(editConditions, !isChief), true); this.setState({ current: nextProps.current, taxAgentId: nextProps.taxAgentId }, () => { if (this.state.taxAgentId) this.getTaxAgentForm(); }); } if (nextProps.visible !== this.props.visible && !nextProps.visible) this.props.taxAgentStore.setSalarytaxAgentForm(); } getTaxAgentForm = () => { const { taxAgentId } = this.state; const { taxAgentStore: { salarytaxAgentForm } } = this.props; API.getTaxAgentForm({ id: taxAgentId }).then(({ status, data }) => { if (status) { const { name, description, roleId, sortedIndex } = data; salarytaxAgentForm.updateFields({ name: { value: name }, roleId: { value: _.map(roleId, it => it.id.toString()).join(","), valueSpan: _.map(roleId, it => it.content).join(",") }, sortedIndex: { value: sortedIndex }, description: { value: description } }); } }); }; /* * Author: 黎永顺 * Description: 保存个税扣缴义务人 * Params: * Date: 2022/12/1 */ saveTaxAgent = (payload) => { const { onOk, salaryOn } = this.props; const { current } = this.state; this.setState({ loading: true }); API.saveTaxAgent(payload).then(({ status, data, errormsg }) => { this.setState({ loading: false }); if (status) { message.success(getLabel(22619, "保存成功")); this.setState({ current: !salaryOn ? current + 2 : current + 1, taxAgentId: data }, () => onOk()); } else { message.error(errormsg || getLabel(22620, "保存失败")); } }).catch(() => this.setState({ loading: false })); }; /* * Author: 黎永顺 * Description: 编辑个税扣缴义务人 * Params: * Date: 2022/12/1 */ updateTaxAgent = (payload) => { const { onCancel } = this.props; this.setState({ loading: true }); API.updateTaxAgent(payload).then(({ status, data, errormsg }) => { this.setState({ loading: false }); if (status) { message.success(getLabel(31439, "更新成功")); onCancel(true); } else { message.error(errormsg || getLabel(31825, "更新失败")); } }).catch(() => this.setState({ loading: false })); }; handleSave = () => { const { taxAgentStore: { salarytaxAgentForm } } = this.props; const { taxAgentId } = this.state; salarytaxAgentForm.validateForm().then((f) => { if (f.isValid) { const formData = salarytaxAgentForm.getFormParams(); const payload = { ...formData, // adminUserIds: formData.adminUserIds ? formData.adminUserIds.split(",") : [] }; taxAgentId ? this.updateTaxAgent({ ...payload, id: taxAgentId }) : this.saveTaxAgent(payload); } else { f.showErrors(); } }); }; handleSaveAndVerify = (jumpAll = false) => { const { isEdit } = this.props, { taxAgentId, taxFilingInfoDialofg } = this.state; const { fieldForm, fieldItem } = this.taxInfoRef.state; const { city: cityStr, cityVal = [], netPassword, realNamePassword, ...extra } = fieldForm; const boolean = _.every(_.filter(fieldItem, item => item.viewAttr === 3), it => fieldForm[it.key]); if (!boolean) { Modal.warning({ title: getLabel(131329, "信息确认"), content: getLabel(518702, "必要信息不完整,红色*为必填项!") }); return; } const [nation, province, city] = cityStr ? cityStr.split("-") : []; const proBool = _.every(cityStr ? cityStr.split("-") : [], it => it !== "undefined"); if (!proBool) { Modal.warning({ title: getLabel(131329, "信息确认"), content: getLabel(111, "请展开选择报税所属区域!") }); return; } // requestType: 1:保存并验证 2:保存 const payload = { ...extra, nation, province, city, taxAgentId, requestType: 1, password: netPassword || realNamePassword, cityname: !_.isEmpty(cityVal) ? _.head(cityVal).name : "" }; this.setState({ verifyLoading: true }); API.saveAndCheck(_.omitBy(payload, val => _.isNil(val))).then(({ status, data, errormsg }) => { this.setState({ verifyLoading: false }); if (status) { message.success(getLabel(22619, "保存成功!")); this.setState({ taxFilingInfoDialofg: { ...taxFilingInfoDialofg, visible: true, isEdit, jumpAll, title: fieldForm.name, checkPayload: payload, taxAgentTaxReturnCheckFormDTO: data.TaxAgentTaxReturnCheckFormDTO || data.table.list } }); } else { message.error(errormsg || getLabel(22620, "保存失败!")); } }).catch(() => this.setState({ verifyLoading: false })); }; renderChildren = () => { const { current, taxAgentId } = this.state; const { decentralization, isChief } = this.props; let CurrentDom = null; switch (current) { case 0: CurrentDom = ; break; case 1: CurrentDom = this.taxInfoRef = dom} taxAgentId={taxAgentId} isChief={isChief}/>; break; case 2: CurrentDom = ; break; default: CurrentDom = null; break; } return CurrentDom; }; renderCustomOperate = () => { const { isChief, isEdit, salaryOn } = this.props; const { current, loading, verifyLoading } = this.state; let CurrentDom = []; //总管理员权限 if (isChief) { switch (current) { case 0: CurrentDom = [ ]; break; case 1: const tmpV = []; const tmpJ = [ , ]; CurrentDom = isEdit ? tmpV : [...tmpV, ...tmpJ]; break; case 2: CurrentDom = (!isEdit && salaryOn) ? [] : []; break; default: break; } } return CurrentDom; }; handleChangeSlideTab = (current) => { this.setState({ current: Number(current) }); }; handleSubmit = (selectKey) => { const { taxFilingInfoDialofg, taxAgentId } = this.state; const { fieldForm } = this.taxInfoRef.state; const { city: cityStr, cityVal = [], netPassword, realNamePassword, ...extra } = fieldForm; const [nation, province, city] = cityStr ? cityStr.split("-") : []; const { taxAgentTaxReturnCheckFormDTO } = taxFilingInfoDialofg; this.setState({ taxFilingInfoDialofg: { ...taxFilingInfoDialofg, loading: true } }); registrationCheck({ ...extra, nation, province, city, taxAgentId, password: netPassword || realNamePassword, cityname: !_.isEmpty(cityVal) ? _.head(cityVal).name : "", ..._.find(taxAgentTaxReturnCheckFormDTO, it => it.index === selectKey) }).then(({ status, data, errormsg }) => { this.setState({ taxFilingInfoDialofg: { ...taxFilingInfoDialofg, loading: false } }); if (status) { message.success(getLabel(22619, "保存成功!")); this.setState({ taxFilingInfoDialofg: { ...taxFilingInfoDialofg, taxAgentTaxReturnCheckFormDTO: data.TaxAgentTaxReturnCheckFormDTO } }); } else { message.error(errormsg || getLabel(22620, "保存失败!")); } }).catch(() => { this.setState({ taxFilingInfoDialofg: { ...taxFilingInfoDialofg, loading: false } }); }); }; render() { const { isEdit, title, visible, onCancel, salaryOn, decentralization, isChief, taxAgentStore: { PageAndOptAuth } } = this.props; const { current, taxAgentId, taxFilingInfoDialofg, loading, verifyLoading } = this.state; let tabs = [ { key: 0, title: getLabel(82751, "基础设置"), createBtns: [ ], editBtns: [ ], children: }, { key: 1, title: getLabel(544342, "报税信息"), createBtns: [ , ], editBtns: [ ], children: this.taxInfoRef = dom} taxAgentId={taxAgentId} isChief={isChief}/> }, { key: 2, title: getLabel(124810, "人员范围"), createBtns: [ ], editBtns: [], children: } ]; tabs = !salaryOn ? _.filter(tabs, it => it.key !== 1) : tabs; const showOperateBtn = PageAndOptAuth.opts.includes("admin"); return ( current === o.key).createBtns}/> : current === o.key).editBtns : []} tabDatas={tabs} selectedKey={String(current)} title={title} onChange={cur => this.setState({ current: parseInt(cur) })}/> } content={
{ !isEdit && { _.map(tabs, item => { const { key, title } = item; return ; }) } } {_.find(tabs, o => current === o.key).children} { const { jumpAll } = taxFilingInfoDialofg; this.setState({ current: jumpAll ? this.state.current + 1 : this.state.current, taxFilingInfoDialofg: { ...taxFilingInfoDialofg, visible: false, taxAgentTaxReturnCheckFormDTO: null } }, () => { isRefresh && this.taxInfoRef.taxReturnGetForm(); jumpAll && this.props.onCancel(true); }); }} />
} onClose={() => onCancel()} /> ); } } export default TaxAgentSlide;