薪资项目

This commit is contained in:
MustangDeng 2022-03-25 10:47:01 +08:00
parent 2fa2957129
commit bbbc645400
8 changed files with 203 additions and 111 deletions

View File

@ -63,7 +63,7 @@ export default class CumDeduct extends React.Component {
width={200}
onChange={v => {
this.setState({monthValue: v})
getTableDatas({ declareMonth: [v], taxAgentId })
getTableDatas({declareMonth: [v], taxAgentId})
}}
/>
</div>
@ -85,7 +85,7 @@ export default class CumDeduct extends React.Component {
value={taxAgentId}
onChange={v => {
this.setState({taxAgentId: v})
getTableDatas({ taxAgentId: v, declareMonth: [monthValue]})
getTableDatas({taxAgentId: v, declareMonth: [monthValue]})
}}
/>
</div>

View File

@ -2,89 +2,23 @@ import React from 'react'
import { Row, Col, Switch, Radio } from 'antd'
import { WeaHelpfulTip, WeaSelect, WeaTextarea, WeaInput } from 'ecCom'
import "./index.less"
import { roundingModeOptions, patternOptions, dataTypeOptions } from "./options"
const roundingModeOptions = [
{
key: "1",
selected: false,
showname: "原始数据"
},
{
key: "2",
selected: false,
showname: "四舍五入"
},
{
key: "3",
selected: false,
showname: "向上舍入"
},
{
key: "4",
selected: false,
showname: "向下舍入"
}
];
const patternOptions = [
{
key: "0",
showname: "0",
selected: false
},
{
key: "1",
showname: "1",
selected: false
},
{
key: "2",
showname: "2",
selected: false
},
{
key: "3",
showname: "3",
selected: false
},
{
key: "4",
showname: "4",
selected: false
},
{
key: "5",
showname: "5",
selected: false
},
]
export default class CustomSalaryItemSlide extends React.Component {
constructor(props) {
super(props)
this.state = {
request: {
name: '',
useDefault: 0,
useInEmployeeSalary: 0,
systemType:0,
roundingMode: 0,
pattern: 0,
valueType: 1,
description: ""
}
}
}
handleChange(params) {
let request = {...this.state.request, ...params}
let request = {...this.props.request, ...params}
this.setState({request})
this.props.onChange(request)
}
render() {
const { request } = this.state;
const { name, useDefault, useInEmployeeSalary, roundingMode, pattern, valueType, description } = request;
const { request, editable } = this.props;
const { name, useDefault, useInEmployeeSalary, roundingMode, pattern, valueType, description, dataType } = request;
return (
<div className="customSalaryItemSlide">
@ -92,13 +26,13 @@ export default class CustomSalaryItemSlide extends React.Component {
<Row className="formItem">
<Col span={4}>名称</Col>
<Col span={20}>
<WeaInput value={name} onChange={(value) => {this.handleChange({name: value})}}/>
<WeaInput viewAttr={editable ? 2 : 1} value={name} onChange={(value) => {this.handleChange({name: value})}}/>
</Col>
</Row>
<Row className="formItem">
<Col span={4}>默认使用</Col>
<Col span={20}>
<Switch value = {useDefault == 1} onChange={(value) => {this.handleChange({useDefault: value ? 1 : 0})}}/>
<Switch disabled={editable? false: true} checked = {useDefault == 1} onChange={(value) => {this.handleChange({useDefault: value ? 1 : 0})}}/>
<WeaHelpfulTip
style={{marginLeft: "10px"}}
width={200}
@ -112,7 +46,7 @@ export default class CustomSalaryItemSlide extends React.Component {
<Row className="formItem">
<Col span={4}>薪资档案引用</Col>
<Col span={20}>
<Switch value={useInEmployeeSalary == 1} onChange={(value) => {this.handleChange({useInEmployeeSalary: value})}}/>
<Switch disabled={editable ? false: true} checked={useInEmployeeSalary == 1} onChange={(value) => {this.handleChange({useInEmployeeSalary: value})}}/>
<WeaHelpfulTip
style={{marginLeft: "10px"}}
width={200}
@ -127,8 +61,7 @@ export default class CustomSalaryItemSlide extends React.Component {
<Row>
<Col span={8}>字段类型</Col>
<Col span={16}>
<WeaSelect style={{width: "200px"}}/>
<WeaSelect value={dataType} options={dataTypeOptions} onChange={(value) => {this.handleChange({dataType: value})}} style={{width: "200px"}}/>
</Col>
</Row>
</Col>
@ -157,7 +90,7 @@ export default class CustomSalaryItemSlide extends React.Component {
<Row className="formItem">
<Col span={4}>取值方式</Col>
<Col span={20}>
<Radio.Group value={valueType} onChange={(e) => {this.handleChange({valueType: e.target.value})}}>
<Radio.Group disabled={editable? false: true} value={valueType} onChange={(e) => {this.handleChange({valueType: e.target.value})}}>
<Radio value={1}>输入</Radio>
<Radio value={2}>公式</Radio>
</Radio.Group>
@ -167,14 +100,14 @@ export default class CustomSalaryItemSlide extends React.Component {
<Row className="formItem">
<Col span={4}>公式</Col>
<Col span={20}>
<WeaTextarea />
<WeaTextarea viewAttr={editable ? 2 : 1}/>
</Col>
</Row>
<Row className="formItem">
<Col span={4}>备注</Col>
<Col span={20}>
<WeaTextarea value={description} onChange={(value) => {this.handleChange({description: value})}}/>
<WeaTextarea viewAttr={editable ? 2 : 1} value={description} onChange={(value) => {this.handleChange({description: value})}}/>
</Col>
</Row>

View File

@ -28,8 +28,9 @@ export default class SalaryItem extends React.Component {
this.state = {
value: "",
selectedKey: "0",
editSlideVisible: false,
request: {}
editable: false,
isAdd: false,
searchValue: ""
}
columns.map(item => {
if(item.dataIndex == "refere") {
@ -57,10 +58,11 @@ export default class SalaryItem extends React.Component {
doInit();
}
onEditItem(record) {
const { salaryItemStore: {getItemForm}} = this.props;
onEditItem(record, isedit) {
const { salaryItemStore: {getItemForm, setEditSlideVisible}} = this.props;
this.setState({editable: isedit, isAdd: false})
getItemForm(record.id)
this.setState({editSlideVisible: true})
setEditSlideVisible(true)
}
// 增加编辑功能重写columns绑定事件
@ -72,7 +74,7 @@ export default class SalaryItem extends React.Component {
let valueSpan = record[newColumn.dataIndex + "span"] !== undefined ? record[newColumn.dataIndex + "span"] : record[newColumn.dataIndex];
switch(newColumn.dataIndex) {
case "name":
return <a onClick={() => {this.onEditItem(record)}}>{text}</a>
return <a onClick={() => {this.onEditItem(record, false)}}>{text}</a>
case "useInEmployeeSalary":
return <Switch checked={text == 1}/>
case "useDefault":
@ -86,10 +88,30 @@ export default class SalaryItem extends React.Component {
return newColumns;
}
onOperatesClick = (record, index, operate, flag) => {
switch(operate.index.toString()){
case '0': // 编辑
this.onEditItem(record, true);
break;
case "1": // 删除
const { salaryItemStore: {deleteItemRequest}} = this.props;
deleteItemRequest([record.id])
break;
}
};
handleSearch(value) {
const { salaryItemStore: {getTableDatas}} = this.props;
getTableDatas({name: value})
}
render() {
const { salaryItemStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = salaryItemStore;
const { systemItemVisible, setSystemItemVisible, deleteItemVisible, setDeleteItemVisible, deleteItemList } = salaryItemStore
const { systemItemVisible, setSystemItemVisible, deleteItemVisible, setDeleteItemVisible, deleteItemList, editSlideVisible, setEditSlideVisible, request } = salaryItemStore
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
@ -130,12 +152,14 @@ export default class SalaryItem extends React.Component {
];
const handleMenuClick = (e) => {
const { salaryItemStore: {getSysItemList}} = this.props;
const { salaryItemStore: {getSysItemList, setEditSlideVisible, initRequest}} = this.props;
if(e.key == "1") {
getSysItemList({})
setSystemItemVisible(true)
} else if(e.key == "2") {
this.setState({editSlideVisible: true})
this.setState({editable: true, isAdd: true})
initRequest()
setEditSlideVisible(true)
}
}
@ -149,29 +173,43 @@ export default class SalaryItem extends React.Component {
const renderRightOperation = () => {
return (<div style={{display: "inline-block"}}>
<Dropdown.Button overlay={menu} type="primary" style={{marginRight: "10px"}}>新增</Dropdown.Button>
<WeaInputSearch />
<WeaInputSearch value={this.state.searchValue} onChange={(value) => {this.setState({searchValue: value})}} onSearch={(value) => {this.handleSearch(value)}}/>
</div>)
}
const handleSlideSave = () => {
const { salaryItemStore: {saveItem}} = this.props;
saveItem(this.state.request);
const handleSlideSave = (continueFlag) => {
const { salaryItemStore: {saveItem, request}} = this.props;
saveItem(request, continueFlag);
}
const renderCustomOperate = () => {
return (
<div>
<Button type="primary" style={{marginRight: "10px"}} onClick={() => {handleSlideSave()}}>保存</Button>
<Button type="default">保存并继续创建</Button>
{
this.state.isAdd ? <div>
<Button type="primary" style={{marginRight: "10px"}} onClick={() => {handleSlideSave(false)}}>保存</Button>
<Button type="default" onClick={() => {handleSlideSave(true)}}>保存并继续创建</Button>
</div> :
this.state.editable ? <div>
<Button type="primary" style={{marginRight: "10px"}} onClick={() => {handleSlideSave(false)}}>保存</Button>
</div> :
""
}
</div>
)
}
const handleSaveSlideChange = (value) => {
this.setState({request: value})
const { salaryItemStore:{setRequest}} = this.props;
setRequest(value)
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
@ -196,9 +234,8 @@ export default class SalaryItem extends React.Component {
comsWeaTableStore={tableStore} // table store
hasOrder={true} // 是否启用排序
needScroll={true} // 是否启用table内部列表滚动将自适应到父级高度
getColumns={this.getColumns}
// onOperatesClick={this.onOperatesClick.bind(this)}
onOperatesClick={this.onOperatesClick.bind(this)}
/>
</WeaTop>
</WeaRightMenu>
@ -214,8 +251,8 @@ export default class SalaryItem extends React.Component {
{
this.state.editSlideVisible &&
<WeaSlideModal visible={this.state.editSlideVisible}
editSlideVisible &&
<WeaSlideModal visible={editSlideVisible}
top={0}
width={40}
height={100}
@ -232,10 +269,10 @@ export default class SalaryItem extends React.Component {
}
/>
}
content={<CustomSalaryItemSlide onChange={(value) => {handleSaveSlideChange(value)}}/>}
onClose={() => this.setState({editSlideVisible: false})}
content={<CustomSalaryItemSlide editable={this.state.editable} request={request} onChange={(value) => {handleSaveSlideChange(value)}}/>}
onClose={() => setEditSlideVisible(false)}
showMask={true}
closeMaskOnClick={() => this.setState({editSlideVisible: false})} />
closeMaskOnClick={() => setEditSlideVisible(false)} />
}
</div>

View File

@ -0,0 +1,68 @@
export const roundingModeOptions = [
{
key: 1,
selected: false,
showname: "原始数据"
},
{
key: 2,
selected: false,
showname: "四舍五入"
},
{
key: 3,
selected: false,
showname: "向上舍入"
},
{
key: 4,
selected: false,
showname: "向下舍入"
}
];
export const patternOptions = [
{
key: 0,
showname: "0",
selected: false
},
{
key: 1,
showname: "1",
selected: false
},
{
key: 2,
showname: "2",
selected: false
},
{
key: 3,
showname: "3",
selected: false
},
{
key: 4,
showname: "4",
selected: false
},
{
key: 5,
showname: "5",
selected: false
},
]
export const dataTypeOptions = [
{
key: "string",
showname: "字符",
selected: false
},
{
key: "number",
showname: "数值",
selected: false
}
]

View File

@ -65,7 +65,7 @@ export class CumDeductStore {
this.loading = true;
let requestParams = this.form.getFormParams() || {};
requestParams = {...requestParams, ...params}
API.getCumDeductList(params).then(action(res => {
API.getCumDeductList(requestParams).then(action(res => {
if (res.status) { // 接口请求成功/失败处理
this.tableStore.getDatas(res.data.datas); // table 请求数据
} else {

View File

@ -65,7 +65,7 @@ export class CumSituationStore {
this.loading = true;
let requestParams = this.form.getFormParams() || {};
requestParams = {...requestParams, ...params}
API.getCumSituationList(params).then(action(res => {
API.getCumSituationList(requestParams).then(action(res => {
if (res.status) { // 接口请求成功/失败处理
this.tableStore.getDatas(res.data.datas); // table 请求数据
} else {

View File

@ -65,7 +65,7 @@ export class OtherDeductStore {
this.loading = true;
let requestParams = this.form.getFormParams() || {};
requestParams = {...requestParams, ...params}
API.getOtherDeductList(params).then(action(res => {
API.getOtherDeductList(requestParams).then(action(res => {
if (res.status) { // 接口请求成功/失败处理
this.tableStore.getDatas(res.data.datas); // table 请求数据
} else {

View File

@ -17,6 +17,38 @@ export class SalaryItemStore {
@observable systemItemVisible = false;
@observable deleteTableStore = new TableStore(); // 批量删除
@observable deleteItemVisible = false; // 删除Modal
@observable editSlideVisible = false; // 新建修改设置
@observable request = {
name: '',
useDefault: 0,
useInEmployeeSalary: 0,
systemType:0,
roundingMode: 0,
pattern: 0,
valueType: 1,
dataType: "string",
description: ""
}
@action
initRequest = () => this.request = {
name: '',
useDefault: 0,
useInEmployeeSalary: 0,
systemType:0,
roundingMode: 0,
pattern: 0,
valueType: 1,
dataType: "string",
description: ""
}
@action
setRequest = request => this.request = request;
@action
setEditSlideVisible = editSlideVisible => this.editSlideVisible = editSlideVisible;
@action
setDeleteItemVisible = deleteItemVisible => this.deleteItemVisible = deleteItemVisible;
@ -103,13 +135,25 @@ export class SalaryItemStore {
getItemForm = (id) => {
API.getItemForm(id).then(res => {
if(res.status) {
this.request = res.data
} else {
message.error(res.errormsg || '获取失败')
}
})
}
// 对象值转string
convertToString(data) {
alert("data1:" + JSON.stringify(data))
Object.keys(data).map(k => {
if(typeof(data[k]) == "number") {
data[k] = data[k].toString();
}
})
alert("data2:" + JSON.stringify(data))
return data;
}
//薪资项目-批量删除列表
@action
deleteItemList = (params) => {
@ -130,6 +174,11 @@ export class SalaryItemStore {
message.warning("未选择任何条目");
return
}
this.deleteItemRequest(ids)
}
@action
deleteItemRequest = (ids) => {
API.deleteItem(ids).then(res => {
if(res.status) {
this.deleteItemVisible = false;
@ -139,16 +188,21 @@ export class SalaryItemStore {
message.error(res.errormsg || "删除失败")
}
})
}
}
//薪资项目-新增薪资项目
@action
saveItem = (params) => {
saveItem = (params, continueFlag) => {
API.saveItem(params).then(res => {
if(res.status) {
message.success("新增成功")
if(!continueFlag) {
this.editSlideVisible = false;
}
this.initRequest();
this.getTableDatas({});
message.success("保存成功")
} else {
message.error(res.errormsg || "新增失败")
message.error(res.errormsg || "保存失败")
}
})
}