From 79ac8960af0f9af67163d008fd31d45a8bbabeb7 Mon Sep 17 00:00:00 2001 From: MustangDeng <670124965@qq.com> Date: Tue, 22 Mar 2022 20:06:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=97=E6=AE=B5=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/apis/attendance.js | 27 ++++++- .../pages/dataAcquisition/attendance/index.js | 73 +++++++++++++++++-- .../attendance/itemMangeFormModal.js | 34 ++++++--- pc4mobx/hrmSalary/stores/attendanceStore.js | 66 +++++++++++++++++ 4 files changed, 180 insertions(+), 20 deletions(-) diff --git a/pc4mobx/hrmSalary/apis/attendance.js b/pc4mobx/hrmSalary/apis/attendance.js index 85a8f932..7f2f37dd 100644 --- a/pc4mobx/hrmSalary/apis/attendance.js +++ b/pc4mobx/hrmSalary/apis/attendance.js @@ -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()) } diff --git a/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/index.js b/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/index.js index eb1686d2..7c861b16 100644 --- a/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/index.js +++ b/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/index.js @@ -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: , + 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 (
- +
) @@ -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 {this.onEdit(record)}} dangerouslySetInnerHTML={{ __html: valueSpan }} /> case "enableStatus": - return + return {handleSwitchItemChange(record, value)}}/> case "operate": return {this.onEdit(record)}}>查看明细 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 (
@@ -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 { this.setState({refereAttendFormVisible: false})}/> - handleItemMangeSave(value)} onCancel={() => {this.setState({itemMangeVisible: false})}}/> + { + this.state.itemMangeVisible && {handleItemMangeUpdate(value)}} onSave={(value) => handleItemMangeSave(value)} onCancel={() => {this.setState({itemMangeVisible: false})}}/> + } { slideVisiable && this.props.onSave(this.state.request)}>保存 + }>
diff --git a/pc4mobx/hrmSalary/stores/attendanceStore.js b/pc4mobx/hrmSalary/stores/attendanceStore.js index 46a22503..c5f0239f 100644 --- a/pc4mobx/hrmSalary/stores/attendanceStore.js +++ b/pc4mobx/hrmSalary/stores/attendanceStore.js @@ -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); + }) + } + }) + } + } \ No newline at end of file