Merge branch 'feature/V2-薪资项目管理新增编辑页面重构' into develop

# Conflicts:
#	pc4mobx/hrmSalary/pages/fieldManagement/components/fieldSlide.js
#	pc4mobx/hrmSalary/pages/fieldManagement/index.less
#	pc4mobx/hrmSalary/pages/salaryItem/customSalaryItemSlide.js
This commit is contained in:
黎永顺 2023-02-10 10:52:47 +08:00
commit a3ed213dca
10 changed files with 356 additions and 551 deletions

View File

@ -209,9 +209,8 @@ class FieldSlide extends Component {
}
content={
<div className="wea-form-item-group">
<WeaFormItem label="名称" labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
<WeaFormItem label="名称" labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
<WeaInput viewAttr={3} value={name}
style={{ width: "80%" }}
onChange={value => this.handleChangeFields("name", value)}/>
</WeaFormItem>
<WeaFormItem label="薪资档案引用" labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
@ -225,66 +224,60 @@ class FieldSlide extends Component {
placement="topLeft"
/>
</WeaFormItem>
<WeaFormItem label="默认使用" labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
<WeaFormItem label="默认使用" labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
<WeaCheckbox
value={useDefault}
display="switch"
onChange={value => this.handleChangeFields("useDefault", value)}
/>
<WeaHelpfulTip style={{ marginLeft: "10px" }} width={200}
<WeaHelpfulTip style={{ marginLeft: "10px" }}
title="提示:开启后,每个薪资方案都有该薪资项目,可在具体薪资方案中删除"
placement="topLeft"
/>
</WeaFormItem>
<WeaFormItem label="可见性" labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
<WeaFormItem label="可见性" labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
<WeaSelect
value={sharedType}
options={shareTypeList}
onChange={value => this.handleChangeFields("sharedType", value)}
style={{ width: 200 }}
/>
</WeaFormItem>
{
sharedType === "1" &&
<WeaFormItem label="可见性范围" labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
<WeaFormItem label="可见性范围" labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
<WeaSelect
multiple
viewAttr={3}
style={{ width: 200 }}
value={taxAgentIds}
options={taxAgentAdminOption}
onChange={value => this.handleChangeFields("taxAgentIds", value)}
/>
</WeaFormItem>
}
<WeaFormItem label="字段类型" labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
<WeaFormItem label="字段类型" labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
<WeaSelect
value={dataType}
options={dataTypeOptions}
onChange={value => this.handleChangeFields("dataType", value)}
style={{ width: 200 }}
/>
</WeaFormItem>
<WeaFormItem label="舍入规则" labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
<WeaFormItem label="舍入规则" labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
<WeaSelect
value={roundingMode}
options={roundingModeOptions}
style={{ width: 200 }}
onChange={value => this.handleChangeFields("roundingMode", value)}
/>
</WeaFormItem>
<WeaFormItem label="保留小数位" labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
<WeaFormItem label="保留小数位" labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
<WeaSelect
value={pattern}
options={patternOptions}
style={{ width: 200 }}
onChange={value => this.handleChangeFields("pattern", value)}
/>
</WeaFormItem>
<WeaFormItem label="备注" labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
<WeaFormItem label="备注" labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
<WeaTextarea
value={description}
style={{ width: "80%" }}
onChange={value => this.handleChangeFields("description", value)}
/>
</WeaFormItem>

View File

@ -4,10 +4,10 @@
border: 1px solid #e5e5e5;
border-bottom: none;
& > div {
border-bottom: 1px solid #e5e5e5;
.wea-form-item {
padding: 4px 16px;
margin-bottom: 0;
padding: 5px 16px
border-bottom: 1px solid #e5e5e5;
}
}

View File

@ -1,95 +1,144 @@
import { dataTypeOptions, patternOptions, roundingModeOptions } from "./options";
export const columns = [
{
title: "名称",
dataIndex: 'title',
key: 'title',
},
{
title: "属性",
dataIndex: 'title',
key: 'title',
},
{
title: "类型",
dataIndex: 'title',
key: 'title',
},
{
title: "薪资档案引用",
dataIndex: 'refere',
key: 'refere',
},
{
title: "默认使用",
dataIndex: 'refere',
key: 'refere',
},
{
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',
}
]
export const systemItemColumns = [
{
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'
}
]
export const dataSource = [
{
title: "测试"
}
{
title: "名称",
dataIndex: "title",
key: "title"
},
{
title: "属性",
dataIndex: "title",
key: "title"
},
{
title: "类型",
dataIndex: "title",
key: "title"
},
{
title: "薪资档案引用",
dataIndex: "refere",
key: "refere"
},
{
title: "默认使用",
dataIndex: "refere",
key: "refere"
},
{
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"
}
];
export const salaryItemFields = [
{
key: 'name',
label: '名称',
type: 'INPUT',
viewAttr: 3,
tip: ''
},
{
key: 'useInEmployeeSalary',
label: '薪资档案引用',
type: 'SWITCH',
viewAttr: 2,
tip: '提示:开启后,该薪资项目不可删除或设为无效,取值方式会默认置为输入'
},
{
key: 'useDefault',
label: '默认使用',
type: 'SWITCH',
viewAttr: 2,
tip: '提示:开启后,每个薪资方案都有该薪资项目,可在具体薪资方案中删除'
},
{
key: 'sharedType',
label: '可见性',
type: 'SELECT',
viewAttr: 2,
tip: ''
},
{
key: 'taxAgentIds',
label: '可见性范围',
type: 'SELECT',
viewAttr: 3,
tip: ''
},
{
key: 'dataType',
label: '字段类型',
type: 'SELECT',
viewAttr: 3,
options: dataTypeOptions,
tip: ''
},
{
key: 'roundingMode',
label: '舍入规则',
type: 'SELECT',
viewAttr: 2,
options: roundingModeOptions,
tip: ''
},
{
key: 'pattern',
label: '保留小数位',
type: 'SELECT',
viewAttr: 2,
options: patternOptions,
tip: ''
},
{
key: 'valueType',
label: '取值方式',
type: 'RADIO',
viewAttr: 2,
tip: ''
},
{
key: 'formulaContent',
label: '公式',
type: 'INPUT',
viewAttr: 2,
tip: ''
},
{
key: 'description',
label: '备注',
type: 'TEXTAREA',
viewAttr: 2,
tip: ''
},
];
export const valTakeOptions=[
{key: "1", showname: '输入'},
{key: "2", showname: '公式'},
{key: "3", showname: 'SQL'},
]

View File

@ -1,8 +1,6 @@
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 SalaryItemForm from "./salaryItemForm";
import "./index.less";
export default class CustomSalaryItemSlide extends React.Component {
@ -14,266 +12,29 @@ export default class CustomSalaryItemSlide extends React.Component {
};
}
handleChange(params) {
handleChange = (params) => {
let request = { ...this.props.request, ...params };
this.props.onChange(request);
}
};
handleShowFormal() {
handleShowFormal = () => {
this.setState({
formalModalVisible: true
});
}
};
// 保存公式成功回调
handleSaveFormal(data) {
handleSaveFormal = (data) => {
this.handleChange({ formulaId: data.id, formulaContent: data.formula });
}
};
render() {
const { editable, request, isAdd, userStatusList, taxAgentAdminOption } = this.props;
const {
name,
systemType,
useDefault,
useInEmployeeSalary,
roundingMode,
pattern,
valueType,
description,
dataType,
formulaContent,
formulaId,
sharedType,
taxAgentIds
} = request;
const { request } = this.props;
const { valueType, dataType, formulaId } = request;
const { formalModalVisible } = this.state;
return (
<div className="customSalaryItemSlide">
<div>
<Row className="formItem">
<Col span={4}>名称</Col>
<Col span={20}>
<WeaInput
viewAttr={
(editable && this.props.record.canEdit) || isAdd ? 3 : 1
}
value={name}
onChange={value => {
this.handleChange({ name: value });
}}
/>
</Col>
</Row>
{
!isAdd &&
<Row className="formItem">
<Col span={4}>薪资档案引用</Col>
<Col span={20}>
<Switch
disabled={
!((editable && this.props.record.canEdit) || isAdd)
}
checked={useInEmployeeSalary == 1}
onChange={value => {
this.handleChange({ useInEmployeeSalary: value ? 1 : 0 });
}}
/>
<WeaHelpfulTip
style={{ marginLeft: "10px" }}
width={200}
title="提示:开启后,该薪资项目不可删除或设为无效,取值方式会默认置为输入"
placement="topLeft"
/>
</Col>
</Row>
}
<Row className="formItem">
<Col span={4}>默认使用</Col>
<Col span={20}>
<Switch
disabled={
!((editable && this.props.record.canEdit) || isAdd)
}
checked={useDefault == 1}
onChange={value => {
this.handleChange({ useDefault: value ? 1 : 0 });
}}
/>
<WeaHelpfulTip
style={{ marginLeft: "10px" }}
width={200}
title="提示:开启后,每个薪资方案都有该薪资项目,可在具体薪资方案中删除"
placement="topLeft"
/>
</Col>
</Row>
{
(systemType == 0 || isAdd) &&
<Row className="formItem">
<Col span={12}>
<Row>
<Col span={8}>可见性</Col>
<Col span={16}>
<WeaSelect
disabled={!((editable && this.props.record.canEdit) || isAdd)}
value={String(sharedType)}
options={userStatusList}
onChange={value => {
let payload = {};
(value === "0" || value === "") && (payload.taxAgentIds = "");
payload.sharedType = value;
this.handleChange(payload);
}}
style={{ width: "200px" }}
/>
</Col>
</Row>
</Col>
</Row>
}
{
sharedType === "1" &&
<Row className="formItem">
<Col span={12}>
<Row>
<Col span={8}>可见性范围</Col>
<Col span={16}>
<WeaSelect
disabled={!((editable && this.props.record.canEdit) || isAdd)}
multiple
viewAttr={3}
style={{ width: "200px" }}
value={taxAgentIds}
options={taxAgentAdminOption}
onChange={(value) => {
this.handleChange({ taxAgentIds: value });
}}
/>
</Col>
</Row>
</Col>
</Row>
}
<Row className="formItem">
<Col span={12}>
<Row>
<Col span={8}>字段类型</Col>
<Col span={16}>
<WeaSelect
disabled={!((editable && this.props.record.canEdit) || isAdd)}
value={dataType}
viewAttr={3}
options={dataTypeOptions}
onChange={value => {
this.handleChange({ dataType: value });
}}
style={{ width: "200px" }}
/>
</Col>
</Row>
</Col>
</Row>
<Row className="formItem">
<Col span={12}>
<Row>
<Col span={8}>舍入规则</Col>
<Col span={16}>
<WeaSelect
viewAttr={
(editable && this.props.record.canEdit) || isAdd ? 3 : 1
}
options={roundingModeOptions}
style={{ width: "200px" }}
value={roundingMode}
onChange={value => {
this.handleChange({ roundingMode: value });
}}
/>
</Col>
</Row>
</Col>
<Col span={12}>
<Row>
<Col span={8}>保留小数位</Col>
<Col span={16}>
<WeaSelect
viewAttr={
(editable && this.props.record.canEdit) || isAdd ? 3 : 1
}
options={patternOptions}
onChange={value => {
this.handleChange({ pattern: value });
}}
value={pattern}
style={{ width: "200px" }}
/>
</Col>
</Row>
</Col>
</Row>
<Row className="formItem">
<Col span={4}>取值方式</Col>
<Col span={20}>
<WeaSelect
disabled={isAdd ? false : true}
value={valueType}
viewAttr={3}
detailtype={3}
options={[
{ key: "1", showname: "输入" },
{ key: "2", showname: "公式" },
{ key: "3", showname: "SQL" }
]}
onChange={value => {
this.handleChange({
valueType: value,
formulaId: null,
formulaContent: ""
});
}}/>
</Col>
</Row>
{(valueType == 2 || valueType == 3) &&
<Row className="formItem">
<Col span={4}>
{valueType == 2 ? "公式" : "SQL"}
</Col>
<Col span={20}>
<div
style={{
width: "100%",
lineHeight: "30px",
minHeight: "30px",
border: "1px solid rgb(217, 217, 217)"
}}
onClick={() => {
if (this.props.record.canEdit || isAdd) {
editable && this.handleShowFormal();
}
}}>
{formulaContent}
</div>
</Col>
</Row>}
<Row className="formItem">
<Col span={4}>备注</Col>
<Col span={20}>
<WeaTextarea
viewAttr={
(editable && this.props.record.canEdit) || isAdd ? 2 : 1
}
value={description}
onChange={value => {
this.handleChange({ description: value });
}}
/>
</Col>
</Row>
</div>
<SalaryItemForm {...this.props} onChangeFieldsItem={this.handleChange} onShowFormal={this.handleShowFormal}/>
{formalModalVisible &&
<FormalFormModal
formulaId={formulaId}

View File

@ -1,112 +0,0 @@
import React from "react";
import { WeaDialog, WeaInputSearch } from "ecCom";
import { Button } from "antd";
import { inject, observer } from "mobx-react";
import CustomTable from "../../components/customTable";
@inject("salaryItemStore")
@observer
export default class DeleteSalaryItemModal extends React.Component {
constructor(props) {
super(props);
this.state = {
selectedRowKeys: [],
searchValue: ""
};
this.page = 1;
}
componentWillMount() {
const { salaryItemStore: { listCanDelete } } = this.props;
listCanDelete();
}
getColumns() {
const { salaryItemStore } = this.props;
const { canDeleteList } = salaryItemStore;
let columns = canDeleteList.columns ? canDeleteList.columns : [];
columns = [...columns];
return columns;
}
// 分页
handleDataPageChange(value) {
const { salaryItemStore: { listCanDelete } } = this.props;
this.page = value;
listCanDelete({ name: this.state.searchValue, current: value });
}
// 选择框选中事件
onSelectChange(selectedRowKeys) {
this.setState({ selectedRowKeys });
}
handleSearchChange(value) {
this.setState({ searchValue: value });
}
// 搜索
handleSearch(value) {
const { salaryItemStore: { listCanDelete } } = this.props;
listCanDelete({ name: value, current: this.page });
}
render() {
const { selectedRowKeys, searchValue } = this.state;
const { salaryItemStore } = this.props;
const { canDeleteList, modalLoading } = salaryItemStore;
const rowSelection = {
selectedRowKeys,
onChange: this.onSelectChange.bind(this)
};
const handleDelete = () => {
const { salaryItemStore: { deleteItem } } = this.props;
deleteItem(this.state.selectedRowKeys);
};
return (
<WeaDialog
title="批量删除"
visible={this.props.visible}
onCancel={() => {
this.props.onCancel();
}}
buttons={[
<Button
type="primary"
onClick={() => {
handleDelete();
}}>批量删除</Button>
]}
style={{ width: "80vw" }}
>
<div style={{ display: "flex", justifyContent: "flex-end", alignItems: "center", margin: 10 }}>
<WeaInputSearch value={searchValue} onChange={(value) => {
this.handleSearchChange(value);
}} onSearch={(value) => {
this.handleSearch(value);
}}/>
</div>
<div style={{ maxHeight: "500px", overflowY: "scroll" }}>
<CustomTable
loadding={modalLoading}
rowSelection={rowSelection}
columns={this.getColumns()}
dataSource={canDeleteList.list ? canDeleteList.list : []}
pagination={{
onChange: (value) => {
this.handleDataPageChange(value);
},
total: canDeleteList.total,
showTotal: (total) => `${total}`,
current: canDeleteList.pageNum
}}
/>
</div>
</WeaDialog>
);
}
}

View File

@ -8,7 +8,6 @@ import SystemSalaryItemModal from "./systemSalaryItemModal";
import { columns } from "./columns";
import SlideModalTitle from "../../components/slideModalTitle";
import CustomSalaryItemSlide from "./customSalaryItemSlide";
import DeleteSalaryItemModal from "./deleteSalaryItemModal";
import CustomPaginationTable from "../../components/customPaginationTable";
import "../socialSecurityBenefits/programme/index.less";
@ -66,13 +65,14 @@ export default class SalaryItem extends React.Component {
});
}
onEditItem(record, isedit) {
onEditItem = (record, isedit) => {
this.record = record;
const { salaryItemStore: { getItemForm, setEditSlideVisible } } = this.props;
this.setState({ editable: isedit, isAdd: false });
getItemForm(record.id);
setEditSlideVisible(true);
}
getItemForm(record.id).then(() => {
setEditSlideVisible(true);
});
};
// 删除列表项
handleDeleteItem(record) {
@ -210,20 +210,12 @@ export default class SalaryItem extends React.Component {
} = this.props;
const { userStatusList } = salaryFileStore;
const { selectedRowKeys } = this.state;
const {
loading,
form,
doSearch,
setShowSearchAd,
deleteItemRequest, getTableDatas
} = salaryItemStore;
const { loading, deleteItemRequest, getTableDatas, initRequest } = salaryItemStore;
const {
tableDataSource,
tableColumns,
systemItemVisible,
setSystemItemVisible,
deleteItemVisible,
setDeleteItemVisible,
editSlideVisible,
setEditSlideVisible,
request
@ -231,43 +223,13 @@ export default class SalaryItem extends React.Component {
if (this.getColumns().length === 2) { // 无权限处理
return renderLoading();
}
const batchDelete = () => {
setDeleteItemVisible(true);
};
const rightMenu = [// 右键菜单
// {
// key: "BTN_COLUMN",
// icon: <i className="icon-coms-Custom"/>,
// content: "显示列定制",
// onClick: this.showColumn
// },
// {
// key: "BTN_DEL",
// icon: <i className="icon-coms-delete"/>,
// content: "批量删除",
// onClick: batchDelete
// }
];
const collectParams = { // 收藏功能配置
favname: "薪资项目管理",
favouritetype: 1,
objid: 0,
link: "wui/index.html#/ns_demo03/index",
importantlevel: 1
};
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={doSearch}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>
];
const handleMenuClick = (e) => {
const { salaryItemStore: { getSysItemList, setEditSlideVisible, initRequest } } = this.props;
if (e.key == "1") {
if (e.key === "1") {
getSysItemList({});
setSystemItemVisible(true);
} else if (e.key == "2") {
} else if (e.key === "2") {
this.setState({ editable: true, isAdd: true });
initRequest();
setEditSlideVisible(true);
@ -330,6 +292,14 @@ export default class SalaryItem extends React.Component {
// 新建和修改保存的回调
const handleSlideSave = (continueFlag) => {
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(() => {
getTableDatas({ ...this.state.searchParams }).then(res => {
this.setState({
@ -381,8 +351,6 @@ export default class SalaryItem extends React.Component {
icon={<i className="icon-coms-fa"/>} // 左侧图标
iconBgcolor="#F14A2D" // 左侧图标背景色
showDropIcon={false} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<CustomTab
searchOperationItem={
@ -421,23 +389,18 @@ export default class SalaryItem extends React.Component {
setSystemItemVisible(false);
}}/>
}
{
deleteItemVisible && <DeleteSalaryItemModal visible={deleteItemVisible} onCancel={() => {
setDeleteItemVisible(false);
}}/>
}
{
editSlideVisible &&
<WeaSlideModal
className="slideOuterWrapper"
visible={editSlideVisible}
top={0}
width={40}
measureT="%"
width={800}
measureX="px"
height={100}
measureY="%"
direction={"right"}
measure={"%"}
title={
<SlideModalTitle
subtitle={(this.state.isAdd ? "新建" : "修改") + "自定义薪资项目"}
@ -457,8 +420,7 @@ export default class SalaryItem extends React.Component {
}}/>
}
onClose={() => setEditSlideVisible(false)}
showMask={true}
closeMaskOnClick={() => setEditSlideVisible(false)}/>
/>
}
</div>
);

View File

@ -1,8 +1,19 @@
.customSalaryItemSlide {
padding: 20px;
padding: 16px;
.formItem {
margin-bottom: 20px;
.wea-search-group {
padding: 0;
border: 1px solid #e5e5e5;
border-bottom: none;
.wea-content {
padding: 0;
.wea-form-item {
padding: 4px 16px;
border-bottom: 1px solid #e5e5e5;
}
}
}
}
@ -82,7 +93,7 @@
.wea-textarea-normal {
border: 1px solid #e5e5e5 !important;
padding: 4px 8px !important;
min-height: 70px!important;
min-height: 70px !important;
}
}
}

View File

@ -0,0 +1,140 @@
/*
* Author: 黎永顺
* name: 薪资项目管理-新增自定义项表单
* Description:
* Date: 2023/2/9
*/
import React, { Component } from "react";
import { WeaCheckbox, WeaFormItem, WeaInput, WeaSearchGroup, WeaSelect, WeaTextarea } from "ecCom";
import { salaryItemFields, valTakeOptions } from "./columns";
class SalaryItemForm extends Component {
constructor(props) {
super(props);
this.state = {
salaryItemFieldsList: salaryItemFields
};
}
componentDidMount() {
const { salaryItemFieldsList } = this.state;
const { request, editable, record, isAdd, taxAgentAdminOption } = this.props;
const { systemType, sharedType, valueType } = request;
this.setState({
salaryItemFieldsList: _.map(salaryItemFieldsList, item => {
const { key } = item;
switch (key) {
case "useInEmployeeSalary":
return {
...item,
viewAttr: (editable && record.canEdit) || isAdd ? 2 : 1,
display: !isAdd
};
case "sharedType":
return {
...item,
viewAttr: (editable && record.canEdit) || isAdd ? 2 : 1,
display: systemType.toString() === "0" || isAdd
};
case "taxAgentIds":
return {
...item,
multiple: true,
viewAttr: (editable && record.canEdit) || isAdd ? 3 : 1,
display: (!_.isNil(sharedType) && sharedType.toString() === "1") && (!_.isNil(systemType) && systemType.toString() === "0"),
options: taxAgentAdminOption
};
case "valueType":
return {
...item,
viewAttr: isAdd ? 2 : 1
};
case "formulaContent":
return {
...item,
display: valueType === "2" || valueType === "3",
viewAttr: (editable && record.canEdit) || isAdd ? 2 : 1
};
default:
break;
}
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,
label: v === "2" ? "公式" : v === "3" ? "SQL" : "",
display: v === "2" || v === "3"
};
}
return { ...item };
})
}, () => {
if (key === "valueType") {
onChangeFieldsItem({ formulaContent: "", formulaId: 0, valueType: v });
} else {
onChangeFieldsItem({ [key]: (key === "useDefault" || key === "useInEmployeeSalary") ? Number(v) : v });
}
});
};
render() {
const { userStatusList, request, onShowFormal } = this.props;
const { salaryItemFieldsList } = this.state;
return (
<WeaSearchGroup showGroup needTigger={false}>
{
_.map(salaryItemFieldsList, item => {
const { key, label, type, viewAttr, tip, options, display = true, multiple = false } = item;
const value = !_.isNil(request[key]) ? request[key].toString() : "";
return <React.Fragment>
{
(type === "INPUT" && display) ?
<WeaFormItem label={label} labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
<WeaInput viewAttr={viewAttr} value={value}
onClick={() => key === "formulaContent" && onShowFormal()}
onChange={v => this.handleChangeSalaryFiledItems(key, v)}/></WeaFormItem> :
(type === "SWITCH" && display) ?
<WeaFormItem label={label} labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
<WeaCheckbox value={value} helpfulTip={tip} display="switch" viewAttr={viewAttr}
onChange={v => this.handleChangeSalaryFiledItems(key, v)}/>
</WeaFormItem> :
(type === "SELECT" && display) ?
<WeaFormItem label={label} labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
<WeaSelect value={value} options={key !== "sharedType" ? options : userStatusList}
multiple={multiple} viewAttr={viewAttr}
onChange={v => this.handleChangeSalaryFiledItems(key, v)}/>
</WeaFormItem> :
(type === "RADIO" && display) ?
<WeaFormItem label={label} labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
<WeaSelect value={value} options={valTakeOptions} detailtype={3} viewAttr={viewAttr}
onChange={v => this.handleChangeSalaryFiledItems(key, v)}/>
</WeaFormItem> :
(type === "TEXTAREA" && display) ?
<WeaFormItem label={label} labelCol={{ span: 6 }} wrapperCol={{ span: 12 }}>
<WeaTextarea value={value} viewAttr={viewAttr} minRows={3}
onChange={v => this.handleChangeSalaryFiledItems(key, v)}/>
</WeaFormItem> : null
}
</React.Fragment>;
})
}
</WeaSearchGroup>
);
}
}
export default SalaryItemForm;

View File

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

View File

@ -30,7 +30,7 @@ export class SalaryItemStore {
valueType: 1,
dataType: "number",
description: "",
sharedType: "",
sharedType: "0",
taxAgentIds: ""
};
@ -70,7 +70,7 @@ export class SalaryItemStore {
valueType: "1",
dataType: "number",
description: "",
sharedType: "",
sharedType: "0",
taxAgentIds: ""
};
@ -163,18 +163,22 @@ export class SalaryItemStore {
//薪资项目-薪资项目详情
@action
getItemForm = (id) => {
API.getItemForm({ id }).then(res => {
if (res.status) {
let data = res.data;
Object.keys(data).map(key => {
if (data[key]) {
data[key] = data[key].toString();
}
});
this.request = data;
} else {
message.error(res.errormsg || "获取失败");
}
return new Promise((resolve, reject) => {
API.getItemForm({ id }).then(res => {
if (res.status) {
let data = res.data;
Object.keys(data).map(key => {
if (!_.isNil(data[key])) {
data[key] = data[key].toString();
}
});
this.setRequest(data);
resolve();
} else {
message.error(res.errormsg || "获取失败");
reject();
}
});
});
};