薪资项目管理页面重构

This commit is contained in:
黎永顺 2023-02-09 19:34:40 +08:00
parent f61c4bfbb0
commit 7578c4b09e
5 changed files with 69 additions and 30 deletions

View File

@ -1,7 +1,4 @@
import React from "react"; import React from "react";
import { Col, Row, Switch } from "antd";
import { WeaHelpfulTip, WeaInput, WeaSelect, WeaTextarea } from "ecCom";
import { dataTypeOptions, patternOptions, roundingModeOptions } from "./options";
import FormalFormModal from "./formalFormModal"; import FormalFormModal from "./formalFormModal";
import SalaryItemForm from "./salaryItemForm"; import SalaryItemForm from "./salaryItemForm";
import "./index.less"; import "./index.less";
@ -15,21 +12,21 @@ export default class CustomSalaryItemSlide extends React.Component {
}; };
} }
handleChange(params) { handleChange = (params) => {
let request = { ...this.props.request, ...params }; let request = { ...this.props.request, ...params };
this.props.onChange(request); this.props.onChange(request);
} };
handleShowFormal() { handleShowFormal = () => {
this.setState({ this.setState({
formalModalVisible: true formalModalVisible: true
}); });
} };
// 保存公式成功回调 // 保存公式成功回调
handleSaveFormal(data) { handleSaveFormal = (data) => {
this.handleChange({ formulaId: data.id, formulaContent: data.formula }); this.handleChange({ formulaId: data.id, formulaContent: data.formula });
} };
render() { render() {
const { editable, request, isAdd, userStatusList, taxAgentAdminOption } = this.props; const { editable, request, isAdd, userStatusList, taxAgentAdminOption } = this.props;
@ -51,7 +48,7 @@ export default class CustomSalaryItemSlide extends React.Component {
const { formalModalVisible } = this.state; const { formalModalVisible } = this.state;
return ( return (
<div className="customSalaryItemSlide"> <div className="customSalaryItemSlide">
<SalaryItemForm {...this.props}/> <SalaryItemForm {...this.props} onChangeFieldsItem={this.handleChange}/>
{/*<div>*/} {/*<div>*/}
{/* <Row className="formItem">*/} {/* <Row className="formItem">*/}
{/* <Col span={4}>名称</Col>*/} {/* <Col span={4}>名称</Col>*/}

View File

@ -291,6 +291,14 @@ export default class SalaryItem extends React.Component {
// 新建和修改保存的回调 // 新建和修改保存的回调
const handleSlideSave = (continueFlag) => { const handleSlideSave = (continueFlag) => {
const { salaryItemStore: { saveItem, request, getTableDatas } } = this.props; const { salaryItemStore: { saveItem, request, getTableDatas } } = this.props;
const { name, sharedType, taxAgentIds } = request;
if (!name || (sharedType === "1" && !taxAgentIds)) {
Modal.warning({
title: "信息确认",
content: "必要信息不完整,红色*为必填项!"
});
return;
}
saveItem(request, continueFlag).then(() => { saveItem(request, continueFlag).then(() => {
getTableDatas({ ...this.state.searchParams }).then(res => { getTableDatas({ ...this.state.searchParams }).then(res => {
this.setState({ this.setState({

View File

@ -18,27 +18,60 @@ class SalaryItemForm extends Component {
componentDidMount() { componentDidMount() {
const { salaryItemFieldsList } = this.state; const { salaryItemFieldsList } = this.state;
const { request, isAdd } = this.props; const { request, editable, record, isAdd, taxAgentAdminOption } = this.props;
const { systemType, sharedType, valueType } = request; const { systemType, sharedType, valueType } = request;
console.log(this.state.salaryItemFieldsList, this.props);
this.setState({ this.setState({
salaryItemFieldsList: _.map(salaryItemFieldsList, item => { salaryItemFieldsList: _.map(salaryItemFieldsList, item => {
const { key } = item; const { key } = item;
switch (key) { switch (key) {
case "sharedType": case "sharedType":
return { ...item, display: systemType.toString() === "0" || isAdd }; return {
...item,
viewAttr: (editable && record.canEdit) || isAdd ? 2 : 1,
display: systemType.toString() === "0" || isAdd
};
case "taxAgentIds": case "taxAgentIds":
return { ...item, display: sharedType === "1" }; console.log('123',sharedType, !_.isNil(sharedType) && sharedType.toString() === "1");
return {
...item,
viewAttr: (editable && record.canEdit) || isAdd ? 3 : 1,
display: !_.isNil(sharedType) && sharedType.toString() === "1",
options: [{ key: "", showname: "" }, ...taxAgentAdminOption]
};
case "formulaContent": case "formulaContent":
return { ...item, display: valueType === "2" || valueType === "3" }; return {
...item,
display: valueType === "2" || valueType === "3",
viewAttr: (editable && record.canEdit) || isAdd ? 2 : 1
};
default: default:
break; break;
} }
return { ...item }; return {
...item,
viewAttr: (key === "name" && ((editable && record.canEdit) || isAdd)) ? 3 : (key !== "name" && ((editable && record.canEdit) || isAdd)) ? 2 : 1
};
}) })
}); });
} }
handleChangeSalaryFiledItems = (key, v) => {
const { onChangeFieldsItem } = this.props;
const { salaryItemFieldsList } = this.state;
this.setState({
salaryItemFieldsList: _.map(salaryItemFieldsList, item => {
if (key === "sharedType" && item.key === "taxAgentIds") {
return { ...item, display: v === "1", viewAttr: 3 };
} else if (key === "valueType" && item.key === "formulaContent") {
return { ...item, display: v === "2" || v === "3" };
}
return { ...item };
})
}, () => {
onChangeFieldsItem({ [key]: (key === "useDefault" || key === "useInEmployeeSalary") ? Number(v) : v });
});
};
render() { render() {
const { userStatusList, request } = this.props; const { userStatusList, request } = this.props;
const { salaryItemFieldsList } = this.state; const { salaryItemFieldsList } = this.state;
@ -47,28 +80,32 @@ class SalaryItemForm extends Component {
{ {
_.map(salaryItemFieldsList, item => { _.map(salaryItemFieldsList, item => {
const { key, label, type, viewAttr, tip, options, display = true } = item; const { key, label, type, viewAttr, tip, options, display = true } = item;
const value = request[key] ? request[key].toString() : ""; const value = !_.isNil(request[key]) ? request[key].toString() : "";
return <React.Fragment> return <React.Fragment>
{ {
(type === "INPUT" && display) ? (type === "INPUT" && display) ?
<WeaFormItem label={label} labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}> <WeaFormItem label={label} labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
<WeaInput viewAttr={viewAttr} value={value}/></WeaFormItem> : <WeaInput viewAttr={viewAttr} value={value}
onChange={v => this.handleChangeSalaryFiledItems(key, v)}/></WeaFormItem> :
(type === "SWITCH" && display) ? (type === "SWITCH" && display) ?
<WeaFormItem label={label} labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}> <WeaFormItem label={label} labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
<WeaCheckbox value={value} helpfulTip={tip} display="switch" viewAttr={viewAttr}/> <WeaCheckbox value={value} helpfulTip={tip} display="switch" viewAttr={viewAttr}
onChange={v => this.handleChangeSalaryFiledItems(key, v)}/>
</WeaFormItem> : </WeaFormItem> :
(type === "SELECT" && display) ? (type === "SELECT" && display) ?
<WeaFormItem label={label} labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}> <WeaFormItem label={label} labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
<WeaSelect value={value} options={key !== "sharedType" ? options : userStatusList} <WeaSelect value={value} options={key !== "sharedType" ? options : userStatusList}
viewAttr={viewAttr}/> viewAttr={viewAttr} onChange={v => this.handleChangeSalaryFiledItems(key, v)}/>
</WeaFormItem> : </WeaFormItem> :
(type === "RADIO" && display) ? (type === "RADIO" && display) ?
<WeaFormItem label={label} labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}> <WeaFormItem label={label} labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
<WeaSelect value={value} options={valTakeOptions} detailtype={3} viewAttr={viewAttr}/> <WeaSelect value={value} options={valTakeOptions} detailtype={3} viewAttr={viewAttr}
onChange={v => this.handleChangeSalaryFiledItems(key, v)}/>
</WeaFormItem> : </WeaFormItem> :
(type === "TEXTAREA" && display) ? (type === "TEXTAREA" && display) ?
<WeaFormItem label={label} labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}><WeaTextarea <WeaFormItem label={label} labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
value={value} viewAttr={viewAttr} minRows={3}/> <WeaTextarea value={value} viewAttr={viewAttr} minRows={3}
onChange={v => this.handleChangeSalaryFiledItems(key, v)}/>
</WeaFormItem> : null </WeaFormItem> : null
} }
</React.Fragment>; </React.Fragment>;

View File

@ -90,10 +90,7 @@ export class salaryFileStore {
type === "archive" ? this.archiveStatusList = [{ type === "archive" ? this.archiveStatusList = [{
key: "", key: "",
showname: "" showname: ""
}, ...data] : this.userStatusList = [{ }, ...data] : this.userStatusList = [...data];
key: "",
showname: ""
}, ...data];
} else { } else {
message.error(res.errormsg || "获取失败"); message.error(res.errormsg || "获取失败");
} }

View File

@ -30,7 +30,7 @@ export class SalaryItemStore {
valueType: 1, valueType: 1,
dataType: "number", dataType: "number",
description: "", description: "",
sharedType: "", sharedType: "0",
taxAgentIds: "" taxAgentIds: ""
}; };
@ -70,7 +70,7 @@ export class SalaryItemStore {
valueType: "1", valueType: "1",
dataType: "number", dataType: "number",
description: "", description: "",
sharedType: "", sharedType: "0",
taxAgentIds: "" taxAgentIds: ""
}; };
@ -167,7 +167,7 @@ export class SalaryItemStore {
if (res.status) { if (res.status) {
let data = res.data; let data = res.data;
Object.keys(data).map(key => { Object.keys(data).map(key => {
if (data[key]) { if (!_.isNil(data[key])) {
data[key] = data[key].toString(); data[key] = data[key].toString();
} }
}); });