custom-艾志工业-合并个税

This commit is contained in:
lys 2025-03-14 17:24:27 +08:00
parent fcde0d5e8c
commit 58f213bfe5
10 changed files with 104 additions and 32 deletions

View File

@ -1,6 +1,8 @@
import { WeaTools } from "ecCom";
import { postFetch } from "../util/request";
import * as AZ from "./custom-apis/azInterface";
export { AZ };
// 薪资记录--薪资核算列表
export const getSalaryAcctList = params => {
return postFetch("/api/bs/hrmsalary/salaryacct/list", params);
@ -219,7 +221,7 @@ export const exportComparisonResult = (salaryAcctRecordId) => {
// 核算进度条
export const getCalculateProgress = (id = "", paymentOrganization = "") => {
const extra= paymentOrganization ? `_${paymentOrganization}` : paymentOrganization
const extra = paymentOrganization ? `_${paymentOrganization}` : paymentOrganization;
return WeaTools.callApi(`/api/bs/hrmsalary/progress/getRate?cacheKey=ACCT_PROGRESS_${id}${extra}`, "get", {});
};

View File

@ -8,3 +8,19 @@ export const getAZAdjustList = params => {
export const exportAzAdjustList = params => {
return postExportFetch("/api/bs/hrmsalary/salaryArchive/exportAzAdjustList", params);
};
// 艾志-提交
export const azSubmit = params => {
return postFetch("/api/bs/hrmsalary/salaryacct/acctresult/azSubmit", params);
};
// 艾志-退回
export const azReturn = params => {
return postFetch("/api/bs/hrmsalary/salaryacct/acctresult/azReturn", params);
};
// 艾志-审核
export const azApprove = params => {
return postFetch("/api/bs/hrmsalary/salaryacct/acctresult/azApprove", params);
};
// 艾志-弃审
export const azReApprove = params => {
return postFetch("/api/bs/hrmsalary/salaryacct/acctresult/azReApprove", params);
};

View File

@ -46,7 +46,8 @@ class EditSalaryBaseInfo extends Component {
default:
break;
}
return <WeaBrowser {...browserType} viewAttr={3} value={value} valueSpan={valueSpan} inputStyle={{ width: 200 }}
return <WeaBrowser {...browserType} viewAttr={this.props.viewAttr === 1 ? 1 : 3}
value={value} valueSpan={valueSpan} inputStyle={{ width: 200 }}
onChange={(value, valueSpan) => this.props.onChange(_.map(this.props.baseInfo, it => {
if (fieldCode === it.fieldCode) {
return { ...it, fieldValue: value, fieldValueObj: { id: value, name: valueSpan } };

View File

@ -6,6 +6,7 @@
*/
import React, { Component } from "react";
import { WeaLocaleProvider, WeaTools } from "ecCom";
import { toJS } from "mobx";
import { message, Modal, Spin } from "antd";
import { inject, observer } from "mobx-react";
import {
@ -30,7 +31,7 @@ class EditCalcTable extends Component {
this.state = {
loading: false, pageInfo: { current: 1, pageSize: 10, total: 0 },
selectedRowKeys: [], progressVisible: false, progress: 0,
salaryCalcSlide: { visible: false, id: "" }, originPayloadData: {},
salaryCalcSlide: { visible: false, id: "", viewAttr: 2 }, originPayloadData: {},
batchUpdateDialog: {
visible: false, salaryAcctRecordId: "", idList: [], salaryItemId: "",
conditions: [], pattern: 0, dataType: ""
@ -73,9 +74,9 @@ class EditCalcTable extends Component {
this.updateEmpLockStatus({ ...params });
break;
case "EDIT":
const { id: salaryCalcId } = params;
const { id: salaryCalcId, showSee } = params;
this.setState({
salaryCalcSlide: { visible: true, id: salaryCalcId }
salaryCalcSlide: { visible: true, id: salaryCalcId, viewAttr: showSee ? 1 : 2 }
});
break;
case "DIAGRAM":
@ -248,8 +249,9 @@ class EditCalcTable extends Component {
const { pageInfo } = this.state;
const {
calculateStore: { ECSearchForm, otherConditions }, routeParams: { salaryAcctRecordId },
taxAgentStore: { showOperateBtn }, calcDetail = false
taxAgentStore: { showOperateBtn, PageAndOptAuth }, calcDetail = false
} = this.props;
const { confirmAuth, submitAuth } = toJS(PageAndOptAuth);
const { subcompanyIds, departmentIds, positionIds, statuses, ...extra } = ECSearchForm.getFormParams();
const payload = {
salaryAcctRecordId, ...pageInfo, ...extra, otherConditions,
@ -269,7 +271,8 @@ class EditCalcTable extends Component {
const sumRowlistUrl = this.props.showTotalCell ? "/api/bs/hrmsalary/salaryacct/acctresult/sum" : "";
this.postMessageToChild({
dataSource, pageInfo, selectedRowKeys, showTotalCell: this.props.showTotalCell, sumRowlistUrl, payload,
calcDetail: (calcDetail || !showOperateBtn), showSee: !showOperateBtn,
calcDetail: (calcDetail || !showOperateBtn) && !confirmAuth && !submitAuth,
showSee: (calcDetail || !showOperateBtn),
columns: _.every(traverse(columns, (calcDetail || !showOperateBtn)), (it, idx) => !it.fixed) ? _.map(traverse(columns, (calcDetail || !showOperateBtn)), (it, idx) => ({
...it,
fixed: idx < 2 ? "left" : false

View File

@ -43,14 +43,17 @@ class EditSalaryCalcSlide extends Component {
});
};
renderTitle = () => {
const { loading } = this.state;
const { loading } = this.state, { viewAttr } = this.props;
return <div className="titleDialog">
<div className="titleCol titleLeftBox">
<div className="titleIcon"><i className="icon-coms-fa"/></div>
<div className="title">{getLabel(543559, "编辑薪资")}</div>
<div className="title">{viewAttr === 2 ? getLabel(543559, "编辑薪资") : getLabel(111, "查看薪资")}</div>
</div>
<div className="titleCol titleRightBox">
<Button type="primary" onClick={this.save} loading={loading}>{getLabel(537558, "保存")}</Button>
{
viewAttr === 2 &&
<Button type="primary" onClick={this.save} loading={loading}>{getLabel(537558, "保存")}</Button>
}
</div>
</div>;
};
@ -88,7 +91,7 @@ class EditSalaryCalcSlide extends Component {
save = () => {
const { id: salaryAcctEmpId } = this.props;
const { issuedAndReissueItems, itemsByGroup, baseInfo } = this.state;
if (_.every(baseInfo, it => !it.canEdit || (it.canEdit && !it.fieldValue))) {
if (!_.every(baseInfo, (item) => (!item.canEdit || !!item.fieldValue))) {
Modal.warning({
title: getLabel(131329, "信息确认"),
content: getLabel(518702, "必要信息不完整,红色*为必填项!")
@ -148,12 +151,14 @@ class EditSalaryCalcSlide extends Component {
/>
{
selectedKey === "0" && _.map(itemsByGroup, item => {
return <PayrollItemsTable {...item} onChangeIssueReissueValue={this.handleItemValueChange}/>;
return <PayrollItemsTable {...this.props} {...item}
onChangeIssueReissueValue={this.handleItemValueChange}/>;
})
}
{
selectedKey === "1" &&
<IssuedAndReissueTable
{...this.props}
dataSource={issuedAndReissueItems}
onChangeIssueReissueValue={this.handleItemValueChange}
/>

View File

@ -8,6 +8,7 @@ import React, { Component } from "react";
import { WeaLocaleProvider, WeaReqTop } from "ecCom";
import { Button, Dropdown, Menu, message, Modal } from "antd";
import { inject, observer } from "mobx-react";
import { toJS } from "mobx";
import Layout from "./layout";
import * as API from "../../../apis/calculate";
import AdvanceInputBtn from "./components/advanceInputBtn";
@ -27,9 +28,10 @@ class Index extends Component {
constructor(props) {
super(props);
this.state = {
selectedKey: "person", progressVisible: false, progress: 0, loading: { calcTax: false, feedback: false },
selectedKey: "person", progressVisible: false, progress: 0,
customExpDialog: { visible: false, salaryAcctRecordId: "", checkItems: [], itemsByGroup: [] },
salaryImpDialog: { visible: false, title: "", salaryAcctRecordId: "" },
loading: { calcTax: false, feedback: false, az: false },
approvalInfo: {},//审批信息,
accountExceptInfo: "" //核算报错信息,
@ -208,13 +210,35 @@ class Index extends Component {
}, 1000);
});
};
handleAZCalcOperate = (type) => {
const { selectedRowKeys } = this.calc.calcTableRef.wrappedInstance.state;
if (_.isEmpty(selectedRowKeys)) {
message.warning(getLabel(543303, "请选择表格数据!"));
return;
}
const { routeParams: { salaryAcctRecordId } } = this.props;
const payload = { salaryAcctRecordId, acctEmpIds: selectedRowKeys };
this.setState({ loading: { ...this.state.loading, az: true } });
API.AZ[type](payload).then(({ status, errormsg }) => {
this.setState({ loading: { ...this.state.loading, az: false } });
if (status) {
message.success(getLabel(111, "操作成功!"));
this.calc.onAdSearch(false);
} else {
message.error(errormsg);
}
});
};
renderReqBtns = () => {
const { routeParams: { salaryAcctRecordId }, taxAgentStore: { showOperateBtn } } = this.props;
const { routeParams: { salaryAcctRecordId }, taxAgentStore: { showOperateBtn, PageAndOptAuth } } = this.props;
const { selectedKey, accountExceptInfo, approvalInfo, loading } = this.state;
const { isOpenApproval, approvalWorkflowUrl, canEdit } = approvalInfo;
const { confirmAuth, submitAuth } = toJS(PageAndOptAuth);
let reqBtns = [];
switch (selectedKey) {
case "calc":
const selectedRowKeys = [];
// const { selectedRowKeys } = this.calc.calcTableRef.wrappedInstance.state;
const menu = (
<Menu onClick={this.handleMenuClick}>
<Menu.Item key="calc_selected">{getLabel(543546, "核算所选人员")}</Menu.Item>
@ -247,6 +271,14 @@ class Index extends Component {
window.open(`${approvalWorkflowUrl}&salaryAcctRecordId=${salaryAcctRecordId}`, "_blank");
}}>{getLabel(111, "发起审批")}</Button>);
!showOperateBtn && (reqBtns = reqBtns.slice(-1));
confirmAuth && reqBtns.unshift(<Button type="primary" loading={loading.az}
onClick={() => this.handleAZCalcOperate("azReturn")}>{getLabel(111, "退回")}</Button>);
confirmAuth && reqBtns.unshift(<Button type="primary" loading={loading.az}
onClick={() => this.handleAZCalcOperate("azApprove")}>{getLabel(111, "审核")}</Button>);
confirmAuth && reqBtns.unshift(<Button type="primary" loading={loading.az}
onClick={() => this.handleAZCalcOperate("azReApprove")}>{getLabel(111, "弃审")}</Button>);
submitAuth && reqBtns.unshift(<Button type="primary" loading={loading.az}
onClick={() => this.handleAZCalcOperate("azSubmit")}>{getLabel(111, "提交")}</Button>);
accountExceptInfo && reqBtns.unshift(<i className="iconfont icon-jinggao"
title={getLabel(111, "存在异常信息,点击下载!")}
onClick={() => this.downloadTxtfile(accountExceptInfo)}/>);

View File

@ -29,10 +29,11 @@ class IssuedAndReissueTable extends Component {
/>
</span>,
render: (text, record) => {
const { canEdit, pattern } = record;
const { canEdit, pattern } = record, { viewAttr } = this.props;
return <WeaInputNumber
disabled={!canEdit}
min={0}
viewAttr={viewAttr}
precision={pattern || 2}
value={text || 0}
onChange={(value) => onChangeIssueReissueValue(record.salaryItemName, value, "issuedAndReissueItems")}

View File

@ -37,8 +37,9 @@ class PayrollItemsTable extends Component {
</span>,
width: "20%",
render: (text, record) => {
const { canEdit, dataType, pattern } = record;
const { canEdit, dataType, pattern } = record, { viewAttr } = this.props;
return dataType === "number" ? <WeaInputNumber
viewAttr={viewAttr}
disabled={!canEdit}
precision={!_.isNil(pattern) ? pattern : 0}
value={text || 0}
@ -46,6 +47,7 @@ class PayrollItemsTable extends Component {
/> : <WeaInput
disabled={!canEdit}
value={text}
viewAttr={viewAttr}
onChange={(value) => onChangeIssueReissueValue(record.salaryItemId, value, "itemsByGroup", salarySobItemGroupId)}
/>;
}

View File

@ -2,14 +2,34 @@ export const conditions = [
{
items: [
{
browserConditionParam: {
completeParams: {},
conditionDataParams: {},
dataParams: {},
destDataParams: {},
hasAddBtn: false,
hasAdvanceSerach: false,
idSeparator: ",",
isAutoComplete: 1,
isDetail: 0,
isMultCheckbox: false,
isSingle: false,
icon: "icon-coms-hrm",
linkUrl: "",
pageSize: 10,
quickSearchName: "",
replaceDatas: [],
title: "",
type: "17",
viewAttr: 2
},
colSpan: 2,
conditionType: "INPUT",
domkey: ["username"],
conditionType: "BROWSER",
domkey: ["employeeIds"],
fieldcol: 12,
label: "姓名",
lanId: 25034,
lanId: 111,
labelcol: 6,
value: "",
viewAttr: 2
},
{
@ -74,17 +94,6 @@ export const conditions = [
labelcol: 6,
viewAttr: 2
},
{
colSpan: 2,
conditionType: "INPUT",
domkey: ["adjustItem"],
fieldcol: 12,
label: "项目名称",
lanId: 111,
labelcol: 6,
value: "",
viewAttr: 2
},
{
colSpan: 2,
conditionType: "RANGEPICKER",

View File

@ -40,9 +40,10 @@ class Index extends Component {
}
getAZAdjustList = () => {
const { departmentIds, positionIds, operatorIds, operateTime1, operateTime2 } = form.getFormParams();
const { departmentIds, employeeIds, positionIds, operatorIds, operateTime1, operateTime2 } = form.getFormParams();
const payload = {
...form.getFormParams(), ...this.state.pageInfo, effectiveTime: this.state.effectiveTime,
employeeIds: employeeIds ? employeeIds.split(",") : [],
departmentIds: departmentIds ? departmentIds.split(",") : [],
positionIds: positionIds ? positionIds.split(",") : [],
operatorIds: operatorIds ? operatorIds.split(",") : [],