字段设置

This commit is contained in:
MustangDeng 2022-03-22 20:06:36 +08:00
parent 9c57f58212
commit 79ac8960af
4 changed files with 180 additions and 20 deletions

View File

@ -82,17 +82,38 @@ export const saveAttendanceField = params => {
//数据采集-考勤引用-修改考勤字段
export const updateAttendanceField = params => {
return WeaTools.callApi('/api/bs/hrmsalary/attendQuote/updateField', 'POST', params);
return fetch('/api/bs/hrmsalary/attendQuote/updateField', {
method: 'POST',
mode: 'cors',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(params)
}).then(res => res.json())
}
//数据采集-考勤引用-启用/停用自定义字段
export const updateAttendanceFieldStatus = params => {
return WeaTools.callApi('/api/bs/hrmsalary/attendQuote/updateEnableStatus', 'POST', params);
return fetch('/api/bs/hrmsalary/attendQuote/updateEnableStatus', {
method: 'POST',
mode: 'cors',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(params)
}).then(res => res.json())
}
//数据采集-考勤引用-删除考勤字段
export const deleteAttendanceField = params => {
return WeaTools.callApi('/api/bs/hrmsalary/attendQuote/deleteField', 'POST', params);
return fetch('/api/bs/hrmsalary/attendQuote/deleteField', {
method: 'POST',
mode: 'cors',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(params)
}).then(res => res.json())
}

View File

@ -53,7 +53,8 @@ export default class Attendance extends React.Component {
selectItemVisible: false,
refereAttendFormVisible: false,
tabSelectedKey: "0",
itemMangeVisible: false
itemMangeVisible: false,
itemMangeValue: {}
}
}
@ -62,19 +63,39 @@ export default class Attendance extends React.Component {
setSlideVisiable(true)
}
onItemOperatesClick(record, index, operate, flag) {
switch(operate.index.toString()){
case '0': // 查看明细
this.onItemEdit(record);
break;
}
};
onDelete() {
onItemEdit(record) {
this.setState({
itemMangeVisible: true
})
const { attendanceStore: { setCurrentItemOperate, setCurrentItem }} = this.props;
setCurrentItemOperate("update")
setCurrentItem(record)
}
render() {
const { attendanceStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = attendanceStore;
const { step, setStep, setSlideVisiable, slideVisiable } = attendanceStore;
const { step, setStep, setSlideVisiable, slideVisiable, doBatchDelete } = attendanceStore;
const selectedRowKeys = toJS(tableStore.selectedRowKeys) || []; // tableStore 右侧选中数组
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const batchDelete = () => {
doBatchDelete()
getAttendanceFieldList({})
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
@ -82,6 +103,13 @@ export default class Attendance extends React.Component {
content: '显示列定制',
onClick: this.showColumn
},
{
key: 'BTN_DEL',
icon: <i className='icon-coms-delete'/>,
content : '批量删除',
disable: selectedRowKeys.length === 0, // 没有选中禁用
onClick : batchDelete,
}
];
const collectParams = { // 收藏功能配置
favname: '考勤引用',
@ -169,10 +197,16 @@ export default class Attendance extends React.Component {
)
}
const handleNewClick = () => {
const { attendanceStore: {setCurrentItemOperate}} = this.props;
this.setState({itemMangeVisible: true})
setCurrentItemOperate("add")
}
const renderRightOperation = () => {
return (
<div style={{display: "inline-block"}}>
<Button type="primary" style={{marginRight: "10px"}} onClick={() => this.setState({itemMangeVisible: true})}>新建</Button>
<Button type="primary" style={{marginRight: "10px"}} onClick={() => handleNewClick()}>新建</Button>
<WeaInputSearch />
</div>
)
@ -195,6 +229,18 @@ export default class Attendance extends React.Component {
}
}
const handleSwitchItemChange = (record, value) => {
const { attendanceStore : {updateAttendanceFieldStatus, getAttendanceFieldList}} = this.props;
let request = {
id: record.id,
enableStatus: value
}
updateAttendanceFieldStatus(request).then(result => {
getAttendanceFieldList({})
})
}
// 字段Columns
const getFieldColumns = (columns) => {
let newColumns = '';
@ -207,7 +253,7 @@ export default class Attendance extends React.Component {
return <a onClick={() => {this.onEdit(record)}}
dangerouslySetInnerHTML={{ __html: valueSpan }} />
case "enableStatus":
return <Switch checked={text == '1'}/>
return <Switch checked={text == '1'} onChange={(value) => {handleSwitchItemChange(record, value)}}/>
case "operate":
return <a onClick={() => {this.onEdit(record)}}>查看明细</a>
default:
@ -225,8 +271,17 @@ export default class Attendance extends React.Component {
value.fieldType = value.fieldType == "1" ? "NUMBER" : "TEXT"
saveAttendanceField(value)
getAttendanceFieldList({})
this.setState({itemMangeVisible: false})
}
const handleItemMangeUpdate = (value) => {
const { attendanceStore: {updateAttendanceField, getAttendanceFieldList }} = this.props;
// alert(JSON.stringify(value));
value.fieldType = value.fieldType == "1" ? "NUMBER" : "TEXT"
updateAttendanceField(value)
getAttendanceFieldList({})
this.setState({itemMangeVisible: false})
}
return (
<div className="mySalaryBenefitsWrapper">
@ -291,7 +346,7 @@ export default class Attendance extends React.Component {
needScroll={true} // 是否启用table内部列表滚动将自适应到父级高度
getColumns={getFieldColumns}
// onOperatesClick={this.onOperatesClick.bind(this)}
onOperatesClick={this.onItemOperatesClick.bind(this)}
/>
}
rightContent={
@ -334,7 +389,9 @@ export default class Attendance extends React.Component {
</SelectItemModal>
<RefereAttendFormModal visible={this.state.refereAttendFormVisible} onCancel={() => this.setState({refereAttendFormVisible: false})}/>
<ItemMangeFormModal visible={this.state.itemMangeVisible} onSave={(value) => handleItemMangeSave(value)} onCancel={() => {this.setState({itemMangeVisible: false})}}/>
{
this.state.itemMangeVisible && <ItemMangeFormModal visible={this.state.itemMangeVisible} onUpdate={(value) => {handleItemMangeUpdate(value)}} onSave={(value) => handleItemMangeSave(value)} onCancel={() => {this.setState({itemMangeVisible: false})}}/>
}
{
slideVisiable && <WeaSlideModal visible={slideVisiable}
top={0}

View File

@ -1,17 +1,26 @@
import React from 'react'
import { Modal, Row, Col, Button,Switch, Select } from 'antd'
import { inject, observer } from 'mobx-react';
import { WeaInput, WeaSelect } from 'ecCom'
import SelectItemModal, { items } from '../../../components/selectItemsModal/selectItemsWrapper';
@inject('attendanceStore')
@observer
export default class ItemMangeFormModal extends React.Component {
constructor(props) {
super(props)
this.state = {
request: {
fieldName: "",
fieldType: "1",
enableStatus: 0,
description: ''
componentWillMount() {
const { attendanceStore: {currentItem, currentItemOperate}} = this.props;
if(currentItemOperate == "add") {
this.state = {
request: {
fieldName: "",
fieldType: "1",
enableStatus: 0,
description: ''
}
}
} else {
this.state = {
request: currentItem
}
}
}
@ -37,11 +46,18 @@ export default class ItemMangeFormModal extends React.Component {
]
const { request } = this.state;
const {fieldName, fieldType, enableStatus, description} = request
const { attendanceStore : {currentItemOperate}} = this.props;
return (
<Modal width={600} visible={this.props.visible} onCancel={this.props.onCancel}
title={"新建自定义字段"}
footer={
<Button type="primary" onClick={() => this.props.onSave(this.state.request)}>保存</Button>
<Button type="primary" onClick={() =>
{
currentItemOperate == "add" ? this.props.onSave(this.state.request) :
this.props.onUpdate(this.state.request)
}
}>保存</Button>
}>
<div style={{padding: "20px"}}>
<Row gutter={[10, 10]} style={{marginBottom: "10px"}}>

View File

@ -16,6 +16,15 @@ export class AttendanceStore {
@observable step = 0 ;
@observable modalVisiable = false;
@observable slideVisiable = false;
@observable currentItem = {};
@observable currentItemOperate = "add";
@action
setCurrentItem = currentItem => this.currentItem = currentItem;
@action
setCurrentItemOperate = currentItemOperate => this.currentItemOperate = currentItemOperate;
@action
setSlideVisiable = slideVisiable => this.slideVisiable = slideVisiable;
@ -95,4 +104,61 @@ export class AttendanceStore {
})
}
@action deleteAttendanceField = (params) => {
API.deleteAttendanceField(params).then(res => {
if(res.status) {
message.success("删除成功")
} else {
message.error("删除失败")
}
})
}
// 批量删除
@action
doBatchDelete = () => {
let ids = toJS(this.tableStore.selectedRowKeys)
if(ids.length == 0) {
message.warning("未选择任何条目");
return
}
API.deleteAttendanceField(this.tableStore.selectedRowKeys).then(res => {
if(res.status) {
message.success("删除成功")
} else {
message.error("删除失败")
}
})
}
// 更新
@action
updateAttendanceField = (params) => {
API.updateAttendanceField(params).then(res => {
if(res.status) {
message.success("修改成功")
} else {
message.error("修改失败")
}
})
}
// 更新状态
@action
updateAttendanceFieldStatus = (params) => {
return API.updateAttendanceFieldStatus(params).then(res => {
if(res.status) {
message.success("修改成功");
return new Promise((resolve, reject) => {
resolve(true);
})
} else {
message.error("修改失败")
return new Promise((resolve, reject) => {
resolve(false);
})
}
})
}
}