Merge branch 'release/2.9.42310.01-个税' into custom-昂立/薪资账套配置流程审批地址
This commit is contained in:
commit
75aa87eef5
|
|
@ -7,6 +7,7 @@
|
|||
import React, { Component } from "react";
|
||||
import { WeaInputSearch, WeaLocaleProvider } from "ecCom";
|
||||
import { Tree } from "antd";
|
||||
import cs from "classnames";
|
||||
import { formualSearchField, formualSearchGroup, getFormulaDes } from "../../../apis/item";
|
||||
import "../index.less";
|
||||
|
||||
|
|
@ -139,7 +140,7 @@ class CodeAction extends Component {
|
|||
return <TreeNode title={value} key={key}>
|
||||
{
|
||||
_.map([...children.slice(0, 1), ...itemChildren], (child, childIndex) => {
|
||||
const { name, fieldId } = child;
|
||||
const { name, fieldId, fieldType } = child;
|
||||
return (
|
||||
fieldId === "searchInput" ?
|
||||
<TreeNode
|
||||
|
|
@ -151,7 +152,17 @@ class CodeAction extends Component {
|
|||
/>
|
||||
}
|
||||
key={fieldId + "_" + childIndex}/> :
|
||||
<TreeNode title={name} key={fieldId}/>
|
||||
<TreeNode title={
|
||||
<div className="weapp-excel-code-action-list-variable">
|
||||
<span className="weapp-excel-code-action-list-variable-name">{name}</span>
|
||||
{
|
||||
fieldType ?
|
||||
<span
|
||||
className={cs("weapp-excel-code-action-list-variable-tip", { "danger": fieldType === "string" })}>{fieldType === "number" ? "数字" : "文本"}</span> :
|
||||
<span></span>
|
||||
}
|
||||
</div>
|
||||
} key={fieldId}/>
|
||||
);
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -186,14 +186,53 @@
|
|||
|
||||
.code-action-list {
|
||||
padding: 10px 0;
|
||||
.code-action-tips-title{
|
||||
|
||||
.code-action-tips-title {
|
||||
height: 22px;
|
||||
line-height: 22px;
|
||||
}
|
||||
.code-action-tips-info{
|
||||
|
||||
.code-action-tips-info {
|
||||
color: #999
|
||||
}
|
||||
}
|
||||
|
||||
.weapp-excel-code-action-list-variable {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
.weapp-excel-code-action-list-variable-name {
|
||||
height: 20px;
|
||||
line-height: 18px;
|
||||
-webkit-flex: 1 1;
|
||||
flex: 1 1;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
word-break: keep-all;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.danger {
|
||||
color: rgb(255, 102, 106)!important;
|
||||
border: 1px solid rgb(255, 193, 195)!important;
|
||||
background-color: rgb(255, 223, 224)!important;
|
||||
}
|
||||
|
||||
.weapp-excel-code-action-list-variable-tip {
|
||||
width: 40px;
|
||||
height: 20px;
|
||||
line-height: 18px;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
color: rgb(255, 205, 80);
|
||||
border: 1px solid rgb(255, 222, 138);
|
||||
background-color: rgb(255, 245, 219);
|
||||
border-radius: 2px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,12 +20,14 @@ import Calculate from "./pages/calculate/calculate"; //重构的薪资核算页
|
|||
import Payroll from "./pages/payroll";
|
||||
import PayrollGrant from "./pages/payroll/payrollGrant";
|
||||
import PayrollDetail from "./pages/payroll/payrollDetail";
|
||||
import Declare from "./pages/declare";
|
||||
// import Declare from "./pages/declare";
|
||||
import DeclareDetail from "./pages/declareDetail";
|
||||
import Employeedeclare from "./pages/employeedeclare";
|
||||
import EnterprisePayCertificationDetail from "./pages/enterprisePayCertificationDetail";
|
||||
import BankVoucherDetail from "./pages/bankVoucherDetail";
|
||||
import EmployeedeclareDetail from "./pages/employeedeclareDetail";
|
||||
// import Declare from "./pages/declare";
|
||||
import Declare from "./pages/declare/declare"; //重构的个税申报表
|
||||
import TaxRate from "./pages/taxRate";
|
||||
import TaxAgents from "./pages/taxAgent";
|
||||
import TaxAgent from "./pages/salary/taxAgent";
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ class EditSalaryCalcSlide extends Component {
|
|||
<div className="title">{getLabel(543559, "编辑薪资")}</div>
|
||||
</div>
|
||||
<div className="titleCol titleRightBox">
|
||||
<Button type="primary" onClick={this.save} loading={loading}>{getLabel(111, "保存并核算")}</Button>
|
||||
<Button type="primary" onClick={this.save} loading={loading}>{getLabel(537558, "保存")}</Button>
|
||||
</div>
|
||||
</div>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@
|
|||
*/
|
||||
import React, { Component } from "react";
|
||||
import { WeaHelpfulTip, WeaLocaleProvider } from "ecCom";
|
||||
import { Alert } from "antd";
|
||||
import { getColumnDesc, getSalarySobCycle } from "../../../../../apis/calculate";
|
||||
import { sysConfCodeRule } from "../../../../../apis/ruleconfig";
|
||||
import EditCalcAdvanceSearchPannel from "./editCalcAdvanceSearchPannel";
|
||||
|
|
@ -52,14 +51,10 @@ class Index extends Component {
|
|||
|
||||
render() {
|
||||
const { salarySobCycle, showSearchAd, formulaTd, columnDesc, showTotalCell } = this.state;
|
||||
const { accountExceptInfo, routeParams: { salaryAcctRecordId } } = this.props;
|
||||
const { routeParams: { salaryAcctRecordId } } = this.props;
|
||||
const formulaObj = _.get(columnDesc, [formulaTd]) || {};
|
||||
return (
|
||||
<div className="salary-edit-calc-content">
|
||||
{
|
||||
accountExceptInfo &&
|
||||
<Alert message="" description={accountExceptInfo} type="error" closable/>
|
||||
}
|
||||
<div className="salary-flex-between weapp-salary-tb-tip">
|
||||
<div>
|
||||
<span>{getLabel(542604, "薪资所属月")}:</span>
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ class Index extends Component {
|
|||
}
|
||||
};
|
||||
renderReqBtns = () => {
|
||||
const { selectedKey } = this.state;
|
||||
const { selectedKey, accountExceptInfo } = this.state;
|
||||
let reqBtns = [];
|
||||
switch (selectedKey) {
|
||||
case "calc":
|
||||
|
|
@ -155,21 +155,32 @@ class Index extends Component {
|
|||
<AdvanceInputBtn onOpenAdvanceSearch={() => this.calc.openAdvanceSearch()}
|
||||
onAdvanceSearch={() => this.calc.onAdSearch(false)}/>
|
||||
];
|
||||
accountExceptInfo && reqBtns.unshift(<i className="iconfont icon-jinggao"
|
||||
title={getLabel(111, "存在异常信息,点击下载!")}
|
||||
onClick={() => this.downloadTxtfile(accountExceptInfo)}/>);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return reqBtns;
|
||||
};
|
||||
downloadTxtfile = (value) => {
|
||||
const element = document.createElement("a");
|
||||
const file = new Blob([value], { type: "text/plain" });
|
||||
element.href = URL.createObjectURL(file);
|
||||
element.download = "核算异常信息.txt";
|
||||
document.body.appendChild(element);
|
||||
element.click();
|
||||
};
|
||||
renderContent = () => {
|
||||
const { selectedKey, accountExceptInfo } = this.state;
|
||||
const { selectedKey } = this.state;
|
||||
let dom = null;
|
||||
switch (selectedKey) {
|
||||
case "person":
|
||||
dom = <SalaryCalcPersonConfirm {...this.props}/>;
|
||||
break;
|
||||
case "calc":
|
||||
dom = <SalaryEditCalc {...this.props} accountExceptInfo={accountExceptInfo} ref={dom => this.calc = dom}/>;
|
||||
dom = <SalaryEditCalc {...this.props} ref={dom => this.calc = dom}/>;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -5,6 +5,13 @@
|
|||
height: 100%;
|
||||
background: #f6f6f6;
|
||||
|
||||
.icon-jinggao {
|
||||
color: red;
|
||||
font-size: 20px;
|
||||
margin-right: 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.wea-new-top-req {
|
||||
z-index: 0 !important;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,37 +0,0 @@
|
|||
export const columns = [
|
||||
{
|
||||
title: "姓名",
|
||||
dataIndex: 'title',
|
||||
key: 'title',
|
||||
},
|
||||
{
|
||||
title: "个税扣缴义务人",
|
||||
dataIndex: 'title',
|
||||
key: 'title',
|
||||
},
|
||||
{
|
||||
title: "部门",
|
||||
dataIndex: 'title',
|
||||
key: 'title',
|
||||
},
|
||||
{
|
||||
title: "手机号",
|
||||
dataIndex: 'title',
|
||||
key: 'title',
|
||||
},
|
||||
{
|
||||
title: "员工状态",
|
||||
dataIndex: 'title',
|
||||
key: 'title',
|
||||
},
|
||||
{
|
||||
title: "基本工资",
|
||||
dataIndex: 'title',
|
||||
key: 'title',
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
dataIndex: 'cz',
|
||||
key: 'cz',
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
export const declareConditions = [
|
||||
{
|
||||
items: [
|
||||
{
|
||||
colSpan: 1,
|
||||
conditionType: "MONTHPICKER",
|
||||
domkey: ["salaryMonthStr"],
|
||||
fieldcol: 14,
|
||||
label: "薪资所属月",
|
||||
lanId: 542604,
|
||||
labelcol: 6,
|
||||
value: "",
|
||||
rules: "required|string",
|
||||
viewAttr: 3
|
||||
},
|
||||
{
|
||||
colSpan: 1,
|
||||
conditionType: "SELECT",
|
||||
domkey: ["taxAgentId"],
|
||||
fieldcol: 14,
|
||||
label: "个税扣缴义务人",
|
||||
lanId: 537996,
|
||||
labelcol: 6,
|
||||
options: [],
|
||||
rules: "required|string",
|
||||
viewAttr: 3,
|
||||
},
|
||||
{
|
||||
colSpan: 1,
|
||||
conditionType: "INPUT",
|
||||
domkey: ["description"],
|
||||
fieldcol: 14,
|
||||
label: "备注",
|
||||
lanId: 536726,
|
||||
labelcol: 6,
|
||||
value: "",
|
||||
viewAttr: 2
|
||||
}
|
||||
],
|
||||
defaultshow: true,
|
||||
title: ""
|
||||
}
|
||||
];
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
/*
|
||||
* Author: 黎永顺
|
||||
* name: 个税申报重构- 申报
|
||||
* Description:
|
||||
* Date: 2023/10/12
|
||||
*/
|
||||
import React, { Component } from "react";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import { WeaDialog, WeaLocaleProvider, WeaTools } from "ecCom";
|
||||
import { Button, message } from "antd";
|
||||
import { getSearchs } from "../../../../util";
|
||||
import { getTaxAgentSelectListAsAdmin } from "../../../../apis/taxAgent";
|
||||
import { saveDeclare } from "../../../../apis/declare";
|
||||
import { declareConditions } from "./condition";
|
||||
|
||||
const getKey = WeaTools.getKey;
|
||||
const getLabel = WeaLocaleProvider.getLabel;
|
||||
|
||||
@inject("declareStore")
|
||||
@observer
|
||||
class Index extends Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
conditions: [], loading: false
|
||||
};
|
||||
}
|
||||
|
||||
componentWillReceiveProps(nextProps, nextContext) {
|
||||
if (nextProps.visible !== this.props.visible && nextProps.visible) this.getTaxAgentSelectListAsAdmin(nextProps);
|
||||
if (nextProps.visible !== this.props.visible && !nextProps.visible) this.props.declareStore.initDeclareForm();
|
||||
}
|
||||
|
||||
getTaxAgentSelectListAsAdmin = (props) => {
|
||||
const { declareStore: { declareForm } } = props;
|
||||
getTaxAgentSelectListAsAdmin().then(({ status, data }) => {
|
||||
if (status) {
|
||||
this.setState({
|
||||
conditions: _.map(declareConditions, item => ({
|
||||
...item,
|
||||
items: _.map(item.items, o => {
|
||||
if (getKey(o) === "taxAgentId") {
|
||||
return {
|
||||
...o, options: _.map(data, g => ({ key: g.id, showname: g.content }))
|
||||
// helpfulTitle: getLabel(563420, "提示:可选择单个个税扣缴义务人进行申报,若不选择,则批量对管理下的所有个税扣缴义务人进行申报;")
|
||||
};
|
||||
}
|
||||
return { ...o };
|
||||
})
|
||||
}))
|
||||
}, () => declareForm.initFormFields(this.state.conditions));
|
||||
}
|
||||
});
|
||||
};
|
||||
save = () => {
|
||||
const { declareStore: { declareForm } } = this.props;
|
||||
declareForm.validateForm().then(f => {
|
||||
if (f.isValid) {
|
||||
const payload = declareForm.getFormParams();
|
||||
this.setState({ loading: true });
|
||||
saveDeclare({ ...payload }).then(({ status, errormsg }) => {
|
||||
this.setState({ loading: false });
|
||||
if (status) {
|
||||
message.success(getLabel(30700, "操作成功"));
|
||||
this.props.onCancel("refresh");
|
||||
} else {
|
||||
message.error(errormsg);
|
||||
}
|
||||
}).catch(() => this.setState({ loading: false }));
|
||||
} else {
|
||||
f.showErrors();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
render() {
|
||||
const { conditions, loading } = this.state;
|
||||
const { declareStore: { declareForm } } = this.props;
|
||||
return (
|
||||
<WeaDialog
|
||||
{...this.props} style={{ width: 500 }} initLoadCss
|
||||
buttons={[
|
||||
<Button type="primary" onClick={this.save} loading={loading}>{getLabel(543618, "生成申报表")}</Button>
|
||||
]}
|
||||
>
|
||||
<div className="declare-dialog-layout">{getSearchs(declareForm, conditions, 1, false)}</div>
|
||||
</WeaDialog>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default Index;
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
/*
|
||||
* Author: 黎永顺
|
||||
* name: 个税申报表重构-查询
|
||||
* Description:
|
||||
* Date: 2023/10/12
|
||||
*/
|
||||
import React, { Component } from "react";
|
||||
import { WeaInputSearch, WeaLocaleProvider } from "ecCom";
|
||||
import { MonthRangePicker } from "../../../reportView/components/statisticalMicroSettingsSlide";
|
||||
|
||||
const getLabel = WeaLocaleProvider.getLabel;
|
||||
|
||||
class Index extends Component {
|
||||
render() {
|
||||
const { queryParams } = this.props;
|
||||
const { dateRange, name } = queryParams;
|
||||
return (
|
||||
<div className="salary-btn-flex">
|
||||
<div className="mounth-range">
|
||||
<span className="label">{getLabel(543549, "薪资所属月:")}</span>
|
||||
<MonthRangePicker dateRange={dateRange} viewAttr={2}
|
||||
onChange={v => this.props.onChange({ dateRange: v })}/>
|
||||
</div>
|
||||
<WeaInputSearch value={name}
|
||||
placeholder={getLabel(111, "请输入个税扣缴义务人")}
|
||||
onChange={v => this.props.onChange({ taxAgentName: v })}
|
||||
onSearch={this.props.onSearch}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default Index;
|
||||
|
|
@ -0,0 +1,144 @@
|
|||
/*
|
||||
* Author: 黎永顺
|
||||
* name: 个税申报重构-列表
|
||||
* Description:
|
||||
* Date: 2023/10/12
|
||||
*/
|
||||
import React, { Component } from "react";
|
||||
import { WeaLocaleProvider, WeaTable } from "ecCom";
|
||||
import { message, Modal } from "antd";
|
||||
import { getDeclareList, withDrawTaxDeclaration } from "../../../../apis/declare";
|
||||
import { sysConfCodeRule } from "../../../../apis/ruleconfig";
|
||||
|
||||
const getLabel = WeaLocaleProvider.getLabel;
|
||||
|
||||
class Index extends Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
loading: false, columns: [], dataSource: [], showWithDrawBtn: false,
|
||||
pageInfo: { current: 1, pageSize: 10, total: 0 }
|
||||
};
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
this.getDeclareList(this.props);
|
||||
this.sysConfCodeRule();
|
||||
}
|
||||
|
||||
componentWillReceiveProps(nextProps, nextContext) {
|
||||
if (nextProps.isRefresh !== this.props.isRefresh) this.getDeclareList(nextProps);
|
||||
}
|
||||
|
||||
sysConfCodeRule = () => {
|
||||
sysConfCodeRule({ code: "WITHDRAW_TAX_DECLARATION" }).then(({ status, data }) => {
|
||||
if (status && data === "1") this.setState({ showWithDrawBtn: data === "1" });
|
||||
});
|
||||
};
|
||||
getDeclareList = (props) => {
|
||||
const { pageInfo } = this.state;
|
||||
const { queryParams } = props;
|
||||
const { dateRange, ...extra } = queryParams;
|
||||
const [fromSalaryMonthStr, endSalaryMonthStr] = dateRange || [];
|
||||
const params = { fromSalaryMonthStr, endSalaryMonthStr, ...extra };
|
||||
const payload = { ...pageInfo, ...params };
|
||||
this.setState({ loading: true });
|
||||
getDeclareList(payload).then(({ status, data }) => {
|
||||
this.setState({ loading: false });
|
||||
if (status) {
|
||||
const { columns, list: dataSource, pageNum, pageSize, total } = data;
|
||||
this.setState({
|
||||
dataSource, pageInfo: { ...pageInfo, pageNum, pageSize, total },
|
||||
columns: _.map(columns, o => {
|
||||
const { dataIndex } = o;
|
||||
let width = "";
|
||||
switch (dataIndex) {
|
||||
case "taxAgentName":
|
||||
case "operateTime":
|
||||
width = "15%";
|
||||
break;
|
||||
case "description":
|
||||
width = "20%";
|
||||
break;
|
||||
default:
|
||||
width = "10%";
|
||||
break;
|
||||
}
|
||||
return { ...o, width };
|
||||
})
|
||||
});
|
||||
}
|
||||
}).catch(() => this.setState({ loading: false }));
|
||||
};
|
||||
taxdeclarationDelete = (taxDeclarationId) => {
|
||||
withDrawTaxDeclaration({ taxDeclarationId }).then(({ status, errormsg }) => {
|
||||
if (status) {
|
||||
message.success(getLabel(505793, "撤回成功"));
|
||||
this.getDeclareList(this.props);
|
||||
} else {
|
||||
message.error(errormsg);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
render() {
|
||||
const { loading, dataSource, columns, pageInfo, showWithDrawBtn } = 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.getDeclareList(this.props));
|
||||
},
|
||||
onChange: current => {
|
||||
this.setState({
|
||||
pageInfo: { ...pageInfo, current }
|
||||
}, () => this.getDeclareList(this.props));
|
||||
}
|
||||
};
|
||||
return (
|
||||
<WeaTable
|
||||
rowKey="id"
|
||||
dataSource={dataSource} loading={loading}
|
||||
pagination={pagination} columns={[
|
||||
...columns,
|
||||
{
|
||||
dataIndex: "operate", title: getLabel(30585, "操作"),
|
||||
width: 170, render: (__, record) => {
|
||||
const { id } = record;
|
||||
return <React.Fragment>
|
||||
<a
|
||||
href={`${window.ecologyContentPath || ""}/spa/hrmSalary/static/index.html#/main/hrmSalary/declareDetail?id=${id}`}
|
||||
target="_blank"
|
||||
>
|
||||
{getLabel(83110, "查看详情")}
|
||||
</a>
|
||||
{
|
||||
showWithDrawBtn &&
|
||||
<a
|
||||
href="javascript:void(0);" style={{ marginLeft: 10 }}
|
||||
onClick={() => {
|
||||
Modal.confirm({
|
||||
title: getLabel(131329, "信息确认"),
|
||||
content: getLabel(543848, "确认撤回该条数据吗?"),
|
||||
onOk: () => this.taxdeclarationDelete(id)
|
||||
});
|
||||
}}
|
||||
>
|
||||
{getLabel(32025, "撤回")}
|
||||
</a>
|
||||
}
|
||||
</React.Fragment>;
|
||||
}
|
||||
}
|
||||
]}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default Index;
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* Author: 黎永顺
|
||||
* name: 个税申报表-重构页面
|
||||
* Description:
|
||||
* Date: 2023/10/12
|
||||
*/
|
||||
import React, { Component } from "react";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import { WeaHelpfulTip, WeaLocaleProvider, WeaTop } from "ecCom";
|
||||
import { Button } from "antd";
|
||||
import moment from "moment";
|
||||
import DeclareQuery from "./components/declareQuery";
|
||||
import DeclareTablelist from "./components/declareTablelist";
|
||||
import DeclareDialog from "./components/declareDialog";
|
||||
import "./index.less";
|
||||
|
||||
const getLabel = WeaLocaleProvider.getLabel;
|
||||
|
||||
@inject("taxAgentStore")
|
||||
@observer
|
||||
class Calculate extends Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
queryParams: {
|
||||
taxAgentName: "",
|
||||
dateRange: [
|
||||
moment(new Date()).startOf("year").format("YYYY-MM"),
|
||||
moment(new Date()).startOf("month").format("YYYY-MM")
|
||||
]
|
||||
}, isRefresh: false,
|
||||
declareDaialog: { visible: false, title: "" }
|
||||
};
|
||||
this.handleDebounce = null;
|
||||
}
|
||||
|
||||
renderCalculateOpts = () => {
|
||||
const { taxAgentStore: { showOperateBtn } } = this.props;
|
||||
const { queryParams, isRefresh } = this.state;
|
||||
let calculateOpts = [
|
||||
<Button type="primary" onClick={() => this.setState({
|
||||
declareDaialog: {
|
||||
visible: true,
|
||||
title: <div style={{ display: "flex", alignItems: "center" }}>
|
||||
<span style={{ marginRight: 10 }}>{getLabel(15366, "申报")}</span>
|
||||
<WeaHelpfulTip
|
||||
width={200} placement="topLeft"
|
||||
title={getLabel(543617, "提示:一个薪资所属月下一个个税扣缴义务人的所有核算数据都归档后才可以申报")}
|
||||
/>
|
||||
</div>
|
||||
}
|
||||
})}>{getLabel(543618, "生成申报表")}</Button>,
|
||||
<DeclareQuery queryParams={queryParams} onChange={v => this.setState({
|
||||
isRefresh: _.keys(v)[0] === "taxAgentName" ? isRefresh : !isRefresh,
|
||||
queryParams: { ...queryParams, ...v }
|
||||
})} onSearch={() => this.setState({ isRefresh: !isRefresh })}/>
|
||||
];
|
||||
return !showOperateBtn ? calculateOpts.slice(1) : calculateOpts;
|
||||
};
|
||||
|
||||
render() {
|
||||
const { queryParams, isRefresh, declareDaialog } = this.state;
|
||||
return (
|
||||
<WeaTop title={getLabel(543353, "个税申报")} icon={<i className="icon-coms-fa"/>} iconBgcolor="#F14A2D"
|
||||
buttons={this.renderCalculateOpts()} className="declare-main-layout"
|
||||
>
|
||||
<div className="declare-body">
|
||||
<DeclareTablelist queryParams={queryParams} isRefresh={isRefresh}/>
|
||||
<DeclareDialog {...declareDaialog}
|
||||
onCancel={(bool) => this.setState({
|
||||
declareDaialog: { ...declareDaialog, visible: false },
|
||||
isRefresh: bool === "refresh" ? !isRefresh : isRefresh
|
||||
})}
|
||||
/>
|
||||
</div>
|
||||
</WeaTop>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default Calculate;
|
||||
|
|
@ -26,6 +26,70 @@
|
|||
}
|
||||
}
|
||||
|
||||
//个税申报表页面-重构
|
||||
.declare-main-layout {
|
||||
.wea-new-top-content {
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.declare-body {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
padding: 16px;
|
||||
overflow-y: auto;
|
||||
|
||||
.wea-new-table {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.ant-table-tbody {
|
||||
td {
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.declare-dialog-layout {
|
||||
background: #f6f6f6;
|
||||
|
||||
.wea-search-group {
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.wea-select, .ant-select-selection, .ant-select {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.wea-select {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.ant-select-selection {
|
||||
height: 30px;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.wea-content {
|
||||
padding: 0;
|
||||
|
||||
.wea-form-cell-wrapper {
|
||||
background: #FFF;
|
||||
border: 1px solid #e5e5e5;
|
||||
border-bottom: none;
|
||||
|
||||
.wea-form-cell {
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.declare-status-box {
|
||||
.icon-span {
|
||||
cursor: pointer;
|
||||
|
|
|
|||
|
|
@ -306,20 +306,25 @@ class FieldSlide extends Component {
|
|||
onChange={value => this.handleChangeFields("dataType", value)}
|
||||
/>
|
||||
</WeaFormItem>
|
||||
<WeaFormItem label="舍入规则" labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
|
||||
<WeaSelect
|
||||
value={roundingMode}
|
||||
options={roundingModeOptions}
|
||||
onChange={value => this.handleChangeFields("roundingMode", value)}
|
||||
/>
|
||||
</WeaFormItem>
|
||||
<WeaFormItem label="保留小数位" labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
|
||||
<WeaSelect
|
||||
value={pattern}
|
||||
options={patternOptions}
|
||||
onChange={value => this.handleChangeFields("pattern", value)}
|
||||
/>
|
||||
</WeaFormItem>
|
||||
{
|
||||
dataType === "number" &&
|
||||
<React.Fragment>
|
||||
<WeaFormItem label="舍入规则" labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
|
||||
<WeaSelect
|
||||
value={roundingMode}
|
||||
options={roundingModeOptions}
|
||||
onChange={value => this.handleChangeFields("roundingMode", value)}
|
||||
/>
|
||||
</WeaFormItem>
|
||||
<WeaFormItem label="保留小数位" labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
|
||||
<WeaSelect
|
||||
value={pattern}
|
||||
options={patternOptions}
|
||||
onChange={value => this.handleChangeFields("pattern", value)}
|
||||
/>
|
||||
</WeaFormItem>
|
||||
</React.Fragment>
|
||||
}
|
||||
<WeaFormItem label="显示顺序" labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
|
||||
<WeaInputNumber value={sortedIndex} precision={0}
|
||||
onChange={value => this.handleChangeFields("sortedIndex", value)}/>
|
||||
|
|
|
|||
|
|
@ -287,11 +287,11 @@ class LedgerSalaryItemTable extends Component {
|
|||
return <span> {key.toString() === "1" ? "输入" : key.toString() === "2" ? formulaContent : key.toString() === "3" ? formulaContent : ""} </span>;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: "个税申请表对应字段",
|
||||
dataIndex: "taxDeclarationColumn",
|
||||
key: "taxDeclarationColumn"
|
||||
},
|
||||
// {
|
||||
// title: "个税申请表对应字段",
|
||||
// dataIndex: "taxDeclarationColumn",
|
||||
// key: "taxDeclarationColumn"
|
||||
// },
|
||||
{
|
||||
title: <span>
|
||||
<WeaCheckbox
|
||||
|
|
|
|||
|
|
@ -163,7 +163,7 @@ export const salarySetConditions = [
|
|||
checkboxValue: false,
|
||||
conditionType: "SELECT",
|
||||
domkey: ["salarySobIds"],
|
||||
fieldcol: 18,
|
||||
fieldcol: 14,
|
||||
label: "薪资账套",
|
||||
lanId: 538010,
|
||||
labelcol: 6,
|
||||
|
|
|
|||
|
|
@ -323,7 +323,7 @@ export default class SalaryItem extends React.Component {
|
|||
})}
|
||||
>{getLabel(111, "同步到薪资账套")}</Button>,
|
||||
<Button type="primary" onClick={() => {
|
||||
handleSlideSave(false);
|
||||
handleSlideSave(true);
|
||||
}}>保存</Button>
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,6 +105,26 @@
|
|||
|
||||
.salarySetDialog {
|
||||
.salarySetDialogContent {
|
||||
background: #f6f6f6;
|
||||
|
||||
.wea-search-group {
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.wea-content {
|
||||
padding: 0;
|
||||
|
||||
.wea-form-cell-wrapper {
|
||||
background: #FFF;
|
||||
border: 1px solid #e5e5e5;
|
||||
border-bottom: none;
|
||||
|
||||
.wea-form-cell {
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.wea-select, .ant-select, .ant-select-selection {
|
||||
width: 100%;
|
||||
}
|
||||
|
|
@ -125,7 +145,7 @@
|
|||
height: 30px;
|
||||
white-space: nowrap;
|
||||
min-width: 100px;
|
||||
max-width: 345px;
|
||||
max-width: 237px;
|
||||
width: 100%;
|
||||
display: inline-block;
|
||||
padding: 4px 17px 4px 4px;
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ class SalaryItemForm extends Component {
|
|||
componentDidMount() {
|
||||
const { salaryItemFieldsList } = this.state;
|
||||
const { request, editable, record, isAdd = false, taxAgentAdminOption, isLedger = false } = this.props;
|
||||
const { systemType = "", sharedType, valueType, useInEmployeeSalary } = request;
|
||||
const { systemType = "", sharedType, valueType, useInEmployeeSalary, dataType } = request;
|
||||
this.setState({
|
||||
salaryItemFieldsList: _.map(salaryItemFieldsList, item => {
|
||||
const { key } = item;
|
||||
|
|
@ -43,6 +43,9 @@ class SalaryItemForm extends Component {
|
|||
viewAttr: (!isLedger && ((editable && record.canEdit) || isAdd)) ? 2 : 1,
|
||||
display: !isLedger
|
||||
};
|
||||
case "pattern":
|
||||
case "roundingMode":
|
||||
return { ...item, display: dataType === "number" };
|
||||
case "sortedIndex":
|
||||
return { ...item };
|
||||
case "useInEmployeeSalary":
|
||||
|
|
@ -101,6 +104,8 @@ class SalaryItemForm extends Component {
|
|||
salaryItemFieldsList: _.map(salaryItemFieldsList, item => {
|
||||
if (key === "sharedType" && item.key === "taxAgentIds") {
|
||||
return { ...item, display: v === "1", viewAttr: 3 };
|
||||
} else if (key === "dataType" && (item.key === "roundingMode" || item.key === "pattern")) {
|
||||
return { ...item, display: v === "number" };
|
||||
} else if (key === "valueType" && (item.key === "originSqlContent" || item.key === "originFormulaContent")) {
|
||||
return {
|
||||
...item,
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ class SyncToSalaryAccountSetDialog extends Component {
|
|||
return (
|
||||
<WeaDialog
|
||||
{...this.props} className="salarySetDialog" initLoadCss
|
||||
style={{ width: 550 }}
|
||||
style={{ width: 480 }}
|
||||
buttons={[<Button type="primary" onClick={this.save}
|
||||
loading={this.state.loading}>{getLabel(537558, "确定")}</Button>]}
|
||||
>
|
||||
|
|
|
|||
|
|
@ -8,6 +8,10 @@ const { TableStore } = WeaTableNew;
|
|||
|
||||
export class DeclareStore {
|
||||
@observable paymentForm = new WeaForm(); // declareDetail----在线申报-缴款Form
|
||||
@observable declareForm = new WeaForm(); //薪资核算重构-核算form
|
||||
// ** 薪资核算重构-初始化核算form **
|
||||
@action
|
||||
initDeclareForm = () => this.declareForm = new WeaForm();
|
||||
|
||||
|
||||
@observable tableStore = new TableStore(); // new table
|
||||
|
|
@ -16,7 +20,6 @@ export class DeclareStore {
|
|||
@observable hasRight = true; // 判断用户是有权限查看当前页面: 没有权限渲染无权限页面,有权限渲染数据
|
||||
@observable showSearchAd = false; // 高级搜索面板显示
|
||||
@observable loading = true; // 数据加载状态
|
||||
|
||||
// 列表
|
||||
@observable listDataSource = [];
|
||||
@observable listColumns = [];
|
||||
|
|
|
|||
|
|
@ -309,7 +309,7 @@ export class SalaryItemStore {
|
|||
if (!continueFlag) {
|
||||
this.editSlideVisible = false;
|
||||
}
|
||||
this.initRequest();
|
||||
((!params.id && continueFlag) || !continueFlag) && this.initRequest();
|
||||
message.success("保存成功");
|
||||
resolve();
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Reference in New Issue