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:
commit
a3ed213dca
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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'},
|
||||
]
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -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>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
@ -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 || "获取失败");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue