薪资项目
This commit is contained in:
parent
2fa2957129
commit
bbbc645400
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
]
|
||||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 || "保存失败")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue