Merge branch 'feature/V2-社保福利档案、薪资档案、薪资核算列表添加工号查询功能' into develop

This commit is contained in:
黎永顺 2023-06-01 11:17:41 +08:00
commit 4ea31bcdd5
7 changed files with 178 additions and 170 deletions

View File

@ -20,6 +20,7 @@ export default class CalculateDetail extends React.Component {
showSearchAd: false,
searchItemsValue: {
employeeName: "",
workcode: "",
departmentIds: "",
positionIds: "",
subcompanyIds: "",
@ -50,19 +51,20 @@ export default class CalculateDetail extends React.Component {
}
Input = (value, key) => {
const { employeeName } = this.state.searchItemsValue;
const { employeeName, workcode } = this.state.searchItemsValue;
return (
<WeaFormItem
label={value}
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
>
<WeaInput value={employeeName} onChange={(val) => this.setState({
searchItemsValue: {
...this.state.searchItemsValue,
[key]: val
}
})}/>
<WeaInput value={key === "employeeName" ? employeeName : workcode}
onChange={(val) => this.setState({
searchItemsValue: {
...this.state.searchItemsValue,
[key]: val
}
})}/>
</WeaFormItem>
);
};
@ -315,6 +317,7 @@ export default class CalculateDetail extends React.Component {
<Button type="ghost" onClick={() => this.setState({
searchItemsValue: {
employeeName: "",
workcode: "",
departmentIds: "",
positionIds: "",
status: "",
@ -331,6 +334,7 @@ export default class CalculateDetail extends React.Component {
const renderSearch = () => {
const searchItems = [
{ com: this.Input("姓名", "employeeName") },
{ com: this.Input("工号", "workcode") },
{ com: this.Browser("分部", "subcompanyIds") },
{ com: this.Browser("部门", "departmentIds") },
{ com: this.Browser("岗位", "positionIds") },

View File

@ -14,6 +14,7 @@ export default class UserSure extends React.Component {
showSearchAd: false,
searchItemsValue: {
employeeName: "",
workcode: "",
departmentIds: "",
positionIds: "",
status: ""
@ -41,19 +42,20 @@ export default class UserSure extends React.Component {
}
Input = (value, key) => {
const { employeeName } = this.state.searchItemsValue;
const { employeeName, workcode } = this.state.searchItemsValue;
return (
<WeaFormItem
label={value}
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
>
<WeaInput value={employeeName} onChange={(val) => this.setState({
searchItemsValue: {
...this.state.searchItemsValue,
[key]: val
}
})}/>
<WeaInput value={key === "employeeName" ? employeeName : workcode}
onChange={(val) => this.setState({
searchItemsValue: {
...this.state.searchItemsValue,
[key]: val
}
})}/>
</WeaFormItem>
);
};
@ -353,6 +355,7 @@ export default class UserSure extends React.Component {
const renderSearch = () => {
const searchItems = [
{ com: this.Input("姓名", "employeeName") },
{ com: this.Input("工号", "workcode") },
{ com: this.Browser("部门", "departmentIds") },
{ com: this.Browser("岗位", "positionIds") },
{ com: this.Select("状态", "status") }

View File

@ -65,6 +65,7 @@ class Index extends Component {
},
searchItemsValue: {
username: "",
workcode: "",
departmentIds: "",
positionIds: "",
userstatus: "",
@ -87,19 +88,20 @@ class Index extends Component {
}
Input = (value, key) => {
const { username } = this.state.searchItemsValue;
const { username, workcode } = this.state.searchItemsValue;
return (
<WeaFormItem
label={value}
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
>
<WeaInput value={username} onChange={(val) => this.setState({
searchItemsValue: {
...this.state.searchItemsValue,
[key]: val
}
})}/>
<WeaInput value={key === "username" ? username : workcode}
onChange={(val) => this.setState({
searchItemsValue: {
...this.state.searchItemsValue,
[key]: val
}
})}/>
</WeaFormItem>
);
};
@ -666,7 +668,8 @@ class Index extends Component {
{ com: this.Browser("岗位", "positionIds") },
{ com: this.Select("人员状态", "userstatus") },
// { com: this.Select("档案状态", "archiveStatus") },
{ com: this.Select("个税扣缴义务人", "taxAgentId") }
{ com: this.Select("个税扣缴义务人", "taxAgentId") },
{ com: this.Input("工号", "workcode") }
];
return <WeaSearchGroup title={"基本信息"} items={searchItems} showGroup/>;
};
@ -685,6 +688,7 @@ class Index extends Component {
<Button type="ghost" onClick={() => this.setState({
searchItemsValue: {
username: "",
workcode: "",
departmentIds: "",
positionIds: "",
userstatus: "",

View File

@ -56,6 +56,7 @@ class MakeupDifference extends Component {
handleChangeOpt = (key) => {
const { importDiffModal } = this.state;
const name = this.regTopRef.state.name;
const workcode = this.regTopRef.state.workcode;
const billMonth = getQueryString("billMonth");
const paymentOrganization = getQueryString("paymentOrganization");
switch (key) {
@ -74,7 +75,7 @@ class MakeupDifference extends Component {
window.open(url, "_self");
break;
case "search":
this.diffListRef.recessionList({ userName: name, current: 1 });
this.diffListRef.recessionList({ userName: name, workcode, current: 1 });
break;
default:
break;

View File

@ -7,7 +7,7 @@
import React, { Component } from "react";
import { Button, Icon, message, Modal, Spin, Tooltip } from "antd";
import { inject, observer } from "mobx-react";
import { WeaInputSearch } from "ecCom";
import { WeaFormItem, WeaInput, WeaSearchGroup, WeaTab } from "ecCom";
import { calcPageNo } from "../../../../util";
import { getQueryString } from "../../../../util/url";
import ProgressModal from "../../../../components/progressModal";
@ -43,6 +43,7 @@ export default class NormalIndex extends Component {
total: 0
},
searchValue: "",
workcode: "",
progressVisible: false,
progress: 0,
fieldData: {}, //选中的表单头信息
@ -55,7 +56,8 @@ export default class NormalIndex extends Component {
visible: false
},
showSum: false,
siaccountSum: {}
siaccountSum: {},
showSearchAd: false
};
this.timer = null;
this.timerDelete = null;
@ -138,22 +140,24 @@ export default class NormalIndex extends Component {
}), "*");
};
handleSearch(value) {
handleSearch = () => {
const { billMonth, selectedKey, paymentOrganization } = this.props;
selectedKey === "1"
? this.getNormalList({
billMonth,
current: 1,
paymentOrganization,
userName: value
userName: this.state.searchValue,
workcode: this.state.workcode
})
: this.getSupplementaryList({
billMonth,
current: 1,
paymentOrganization,
userName: value
userName: this.state.searchValue,
workcode: this.state.workcode
});
}
};
handleSave = () => {
const {
@ -339,7 +343,7 @@ export default class NormalIndex extends Component {
});
};
handleCommonAccountClick() {
handleCommonAccountClick = () => {
const { billMonth, selectedKey, paymentOrganization } = this.props;
const { commonAccount } = this.props.standingBookStore;
commonAccount({ billMonth, paymentOrganization, includes: [] });
@ -397,7 +401,7 @@ export default class NormalIndex extends Component {
});
}, 600);
});
}
};
handleExport = () => {
const { billMonth, selectedKey, paymentOrganization } = this.props;
@ -438,11 +442,48 @@ export default class NormalIndex extends Component {
}
});
};
getSearchs = () => {
return <WeaSearchGroup needTigger showGroup title="其他条件">
<WeaFormItem label="工号" labelCol={{ span: 4 }} wrapperCol={{ span: 8 }}>
<WeaInput
value={this.state.workcode}
onChange={v => this.setState({ workcode: v })}
/>
</WeaFormItem>
</WeaSearchGroup>;
};
render() {
const { remarks, billMonth, selectedKey, paymentOrganization, standingBookStore } = this.props;
const { addProps, adjustSlide, importParams, returnEditPersonSlide } = this.state;
const { addProps, adjustSlide, importParams, returnEditPersonSlide, showSearchAd } = this.state;
const { loading } = standingBookStore;
const btn1 = [
<Button type="primary" onClick={this.handleBatchDelete}>批量删除</Button>,
<Button type="primary" onClick={this.handleAdd}>添加该月正常缴纳人员</Button>
];
const btn2 = [
<Button type="primary" onClick={this.handleCommonAccountClick}>核算</Button>,
<Button type="primary"
onClick={() => this.setState({ adjustSlide: { ...adjustSlide, visible: true } })}>调差</Button>
];
const btn3 = [
<Button type="primary" onClick={() => {
window.open(`/spa/hrmSalary/static/index.html#/main/hrmSalary/socialSecurityBenefits/sbofflineComparison?billMonth=${billMonth}&paymentOrganization=${paymentOrganization}`);
}}>线下对比</Button>
];
const btn4 = [
<Button type="primary"
onClick={() => this.setState({ importParams: { ...importParams, visible: true } })}>导入数据</Button>
];
const btn5 = [
<Button type="primary" onClick={this.handleExport}>导出全部</Button>
];
let btn = [];
(this.props.type !== "detail" && this.props.selectedKey == "3") && (btn = [...btn, ...btn1]);
(selectedKey === "1" && this.props.type !== "detail") && (btn = [...btn, ...btn2]);
selectedKey === "1" && (btn = [...btn, ...btn3]);
this.props.type !== "detail" && (btn = [...btn, ...btn4]);
btn = [...btn, ...btn5];
return (
<div className="normalWapper">
{
@ -467,125 +508,65 @@ export default class NormalIndex extends Component {
</div>
</div>
}
<div className="tabOption">
{this.props.type !== "detail" && this.props.selectedKey == "3"
? <span style={{ display: "flex", alignItems: "center" }}>
<Tooltip title="批量删除">
<i
style={{ color: "#2db7f5", fontSize: 18 }}
className="icon-coms-Batch-delete"
onClick={this.handleBatchDelete}
/>
</Tooltip>
<Tooltip title="添加该月正常缴纳人员">
<i className="icon-coms-Add-to" onClick={this.handleAdd} style={{ color: "#2db7f5", fontSize: 18 }}/>
</Tooltip>
</span>
: <span/>}
<SupplementarySlide
{...addProps}
billMonth={billMonth} paymentOrganization={paymentOrganization}
onCancel={(isRefresh) => {
<WeaTab
datas={[]} selectedKey="" advanceHeight={200} searchsAd={this.getSearchs()}
searchType={["base", "advanced"]} showSearchAd={showSearchAd}
setShowSearchAd={bool => this.setState({ showSearchAd: bool })}
onSearchChange={searchValue => this.setState({ searchValue })}
buttons={btn} onSearch={this.handleSearch} onAdSearch={this.handleSearch}
onAdReset={() => this.setState({ workcode: "" })} searchsBasePlaceHolder="请输入员工姓名"
/>
<SupplementarySlide
{...addProps}
billMonth={billMonth} paymentOrganization={paymentOrganization}
onCancel={(isRefresh) => {
this.setState({
addProps: {
...addProps,
visible: false
}
}, () => {
isRefresh && this.getSupplementaryList({
billMonth,
current: this.state.current,
paymentOrganization
});
});
}}
/>
{/*核算进度条*/}
<ProgressModal
title={selectedKey === "3" ? "正在删除请稍后" : "正在核算请稍后"}
visible={this.state.progressVisible}
onCancel={() => {
this.setState({ progressVisible: false, progress: 0 });
}}
progress={this.state.progress}
/>
{/*导入弹框*/}
{
importParams.visible &&
<AcctResultImportModal
visiable={importParams.visible}
fieldData={this.state.fieldData}
onAdd={fieldData => {
this.setState({
addProps: {
...addProps,
visible: false
}
}, () => {
isRefresh && this.getSupplementaryList({
billMonth,
current: this.state.current,
paymentOrganization
});
fieldData
});
}}
/>
{
selectedKey === "1" && this.props.type !== "detail" &&
<React.Fragment>
<Button type="primary" onClick={() => {
this.handleCommonAccountClick();
}}>核算</Button>
<Button type="ghost" onClick={() => {
this.setState({
adjustSlide: {
...adjustSlide,
visible: true
}
});
}}>调差</Button>
</React.Fragment>
}
{
selectedKey === "1" &&
<React.Fragment>
<Button type="primary" onClick={() => {
window.open(`/spa/hrmSalary/static/index.html#/main/hrmSalary/socialSecurityBenefits/sbofflineComparison?billMonth=${billMonth}&paymentOrganization=${paymentOrganization}`);
}}>线下对比</Button>
</React.Fragment>
}
{/*核算进度条*/}
<ProgressModal
title={selectedKey === "3" ? "正在删除请稍后" : "正在核算请稍后"}
visible={this.state.progressVisible}
onCancel={() => {
this.setState({ progressVisible: false, progress: 0 });
this.setState({ importParams: { ...importParams, visible: false }, fieldData: {} }, () => {
const { billMonth, selectedKey, paymentOrganization } = this.props;
const { current } = this.state;
selectedKey === "1"
? this.getNormalList({ billMonth, current, paymentOrganization })
: this.getSupplementaryList({ billMonth, current, paymentOrganization });
});
}}
progress={this.state.progress}
isStandingBook
standingBookTabKey={selectedKey}
/>
{
this.props.type !== "detail" &&
<Tooltip title="导入数据">
<i
className="icon-coms02-Import"
style={{ color: "#2db7f5", fontSize: 18, marginRight: 10, cursor: "pointer" }}
onClick={() => this.setState({ importParams: { ...importParams, visible: true } })}
/>
</Tooltip>
}
{/*导入弹框*/}
{
importParams.visible &&
<AcctResultImportModal
visiable={importParams.visible}
fieldData={this.state.fieldData}
onAdd={fieldData => {
this.setState({
fieldData
});
}}
onCancel={() => {
this.setState({ importParams: { ...importParams, visible: false }, fieldData: {} }, () => {
const { billMonth, selectedKey, paymentOrganization } = this.props;
const { current } = this.state;
selectedKey === "1"
? this.getNormalList({ billMonth, current, paymentOrganization })
: this.getSupplementaryList({ billMonth, current, paymentOrganization });
});
}}
isStandingBook
standingBookTabKey={selectedKey}
/>
}
<Tooltip title="导出全部">
<i
className="icon-coms02-coms2-export"
style={{ color: "#2db7f5", fontSize: 18, marginRight: 10, cursor: "pointer" }}
onClick={this.handleExport}
/>
</Tooltip>
<WeaInputSearch
value={this.state.searchValue}
onChange={value => {
this.setState({ searchValue: value });
}}
placeholder={"请输入姓名"}
onSearch={value => {
this.handleSearch(value);
}}
/>
</div>
}
{/* table */}
<div className="tableWrapper">
<Spin spinning={loading}>

View File

@ -1,13 +1,15 @@
import React, { Component } from "react";
import { Button } from "antd";
import { WeaHelpfulTip, WeaInputSearch, WeaTop } from "ecCom";
import { WeaFormItem, WeaHelpfulTip, WeaInput, WeaSearchGroup, WeaTab } from "ecCom";
import { getQueryString } from "../../../../util/url";
class RegTop extends Component {
constructor(props) {
super(props);
this.state = {
name: ""
name: "",
workcode: "",
showSearchAd: false
};
}
@ -31,43 +33,55 @@ class RegTop extends Component {
placement="bottomRight"
width={250}
/>,
<Button type="primary" size="small" onClick={() => onChange("export")}>
<span className="icon-coms02-coms2-export" title="导出全部"></span>
</Button>,
<WeaInputSearch
value={name}
style={{ width: 250 }}
placeholder="请输入员工姓名"
onChange={name => this.setState({ name })}
onSearch={() => onChange("search")}
/>
<Button type="primary" onClick={() => onChange("export")}>导出全部</Button>
];
if (!type) {
const [dom1, ...extra] = dom;
const domBtn = regtopType === "regression" ?
<Button type="primary" size="small" onClick={() => onChange("add")}>
<span className="icon-coms-Add-to-hot" title="添加"></span>
</Button> :
<Button type="primary" size="small" onClick={() => onChange("import")}>
<span className="icon-coms02-Import" title="导入"></span>
</Button>;
<Button type="primary" onClick={() => onChange("add")}>添加</Button> :
<Button type="primary" onClick={() => onChange("import")}>导入</Button>;
dom = [
dom1,
<Button type="primary" size="small" disabled={_.isEmpty(selectKey)} onClick={() => onChange("delete")}>
<span className="icon-coms-form-delete-hot" title="删除"></span>
<Button type="primary" disabled={_.isEmpty(selectKey)} onClick={() => onChange("delete")}>
删除
</Button>, domBtn, ...extra
];
}
return dom;
};
getSearchs = () => {
return <WeaSearchGroup needTigger showGroup title="其他条件">
<WeaFormItem label="工号" labelCol={{ span: 4 }} wrapperCol={{ span: 8 }}>
<WeaInput
value={this.state.workcode}
onChange={v => this.setState({ workcode: v })}
/>
</WeaFormItem>
</WeaSearchGroup>;
};
render() {
const { billMonth } = this.props;
const { showSearchAd } = this.state;
const { billMonth, onChange } = this.props;
return (
<WeaTop
title={<span><span style={{ paddingRight: 10 }}>账单月份</span><span>{billMonth}</span></span>}
buttons={this.renderTopBtns()}
<WeaTab
datas={[
{
title: `账单月份: ${billMonth}`,
viewcondition: "1"
},
]}
keyParam="viewcondition" selectedKey="" advanceHeight={200} searchsAd={this.getSearchs()}
searchType={["base", "advanced"]} showSearchAd={showSearchAd}
setShowSearchAd={bool => this.setState({ showSearchAd: bool })}
onSearchChange={name => this.setState({ name })}
buttons={this.renderTopBtns()} onSearch={() => onChange("search")} onAdSearch={() => onChange("search")}
onAdReset={() => this.setState({ workcode: "" })} searchsBasePlaceHolder="请输入员工姓名"
/>
// <WeaTop
// title={<span><span style={{ paddingRight: 10 }}>账单月份</span><span>{billMonth}</span></span>}
// buttons={this.renderTopBtns()}
// />
);
}
}

View File

@ -74,6 +74,7 @@ class Regression extends Component {
handleChangeOpt = (key) => {
const { returnPersonModal } = this.state;
const name = this.regTopRef.state.name;
const workcode = this.regTopRef.state.workcode;
const billMonth = getQueryString("billMonth");
const creator = Number(getQueryString("creator"));
const paymentOrganization = getQueryString("paymentOrganization");
@ -97,7 +98,7 @@ class Regression extends Component {
window.open(url, "_self");
break;
case "search":
this.regListRef.recessionList({ userName: name, current: 1 });
this.regListRef.recessionList({ userName: name, workcode, current: 1 });
break;
default:
break;