From 75008876604d10d2adb19a31a1693a4f1aafb7f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Wed, 8 Mar 2023 15:03:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=87=87=E9=9B=86-=E8=80=83?= =?UTF-8?q?=E5=8B=A4=E5=BC=95=E7=94=A8=E9=A1=B5=E9=9D=A2=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/selectItemsModal/index.js | 11 ++-- .../selectItemsModal/selectItemsWrapper.js | 13 +++- .../components/attendanceDataComp.js | 65 ++++++++++++++++++- 3 files changed, 82 insertions(+), 7 deletions(-) diff --git a/pc4mobx/hrmSalary/components/selectItemsModal/index.js b/pc4mobx/hrmSalary/components/selectItemsModal/index.js index 7b8ca17a..b7d01a5d 100644 --- a/pc4mobx/hrmSalary/components/selectItemsModal/index.js +++ b/pc4mobx/hrmSalary/components/selectItemsModal/index.js @@ -27,21 +27,24 @@ export default class SelectItemModal extends React.Component { render() { const { searchValue } = this.state; - const { title, onSearchItemSet, onShowOnlyChecked, children, ...extra } = this.props; - const btns = []; + const { + title, onSearchItemSet, onShowOnlyChecked, children, + onMoreOpts, onSave, ...extra + } = this.props; + const btns = []; const moreBtn = { datas: [ { key: "recovery", content: "恢复默认设置", icon: , - onClick: key => alert(`点击事物处理函数接受的实参为 ${key}`) + onClick: key => onMoreOpts(key) }, { key: "setting", content: "设为默认设置", icon: , - onClick: key => alert(`点击事物处理函数接受的实参为 ${key}`) + onClick: key => onMoreOpts(key) } ] }; diff --git a/pc4mobx/hrmSalary/components/selectItemsModal/selectItemsWrapper.js b/pc4mobx/hrmSalary/components/selectItemsModal/selectItemsWrapper.js index 9984ac9f..1a0d44d0 100644 --- a/pc4mobx/hrmSalary/components/selectItemsModal/selectItemsWrapper.js +++ b/pc4mobx/hrmSalary/components/selectItemsModal/selectItemsWrapper.js @@ -18,6 +18,15 @@ class SelectItemsWrapper extends Component { }; } + componentDidMount() { + const { dataSource } = this.props + this.setState({ + selectItem: _.map(_.filter(_.reduce(dataSource, (pre, cur) => { + return [...pre, ...cur.items]; + }, []), item => !!item.checked), it => it.id) + }); + } + handleSearchItemSet = (searchVal) => this.setState({ searchVal }); handleShowOnlyChecked = (showOnlyChecked) => this.setState({ showOnlyChecked: !!Number(showOnlyChecked) }); handleSelectGroupAll = (groupId, checked) => { @@ -47,8 +56,9 @@ class SelectItemsWrapper extends Component { const { onSelectGroupAll } = this.props; const { groupName, groupId, items } = item; const number = _.filter(items, it => !!it.checked).length; + const value = _.every(items, it => !!it.checked) ? "1" : "0"; return
- onSelectGroupAll(groupId, val)}/> + onSelectGroupAll(groupId, val)}/> 已选择{number}个字段
; }; @@ -75,7 +85,6 @@ class SelectItemsWrapper extends Component { return { ...item, items: _.filter(item.items, it => !!it.checked) }; }); } - console.log(setItemList); return ( { diff --git a/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/components/attendanceDataComp.js b/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/components/attendanceDataComp.js index 8e2dbd78..6f58700a 100644 --- a/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/components/attendanceDataComp.js +++ b/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/components/attendanceDataComp.js @@ -14,7 +14,10 @@ import { getLedgerList, getSalaryCycleAndAttendCycle, importAttendQuoteData, - previewAttendQuote + previewAttendQuote, + returnToAttendanceFieldSettingDefault, + saveAttendanceFieldSetting, + saveAttendanceFieldSettingAsDefault } from "../../../../apis/attendance"; import ImportModal from "../../../../components/importModal"; import HeaderSet from "../../../../components/importModal/headerSet"; @@ -248,6 +251,65 @@ class AttendanceDataComp extends Component { handleShowOnlyChecked = (checked) => this.setItemRef.handleShowOnlyChecked(checked); handleSelectGroupAll = (groupId, checked) => this.setItemRef.handleSelectGroupAll(groupId, checked); handleSelectItem = (id, checked) => this.setItemRef.handleSelectItem(id, checked); + handleMoreOpts = (key) => { + switch (key) { + case "recovery": + returnToAttendanceFieldSettingDefault({ sourceType: "IMPORT" }).then(({ status, errormsg }) => { + if (status) { + message.success("操作成功"); + this.handleHeaderSettings({ sourceType: "IMPORT" }); + } else { + message.error(errormsg || "操作失败"); + } + }); + break; + case "setting": + const { state, props } = this.setItemRef; + let currentSettingFields = []; + const { selectItem } = state, { dataSource } = props; + _.forEach(dataSource, item => { + currentSettingFields = _.map([...currentSettingFields, ...item.items], child => { + return { + id: child.id, + checked: selectItem.includes(child.id) + }; + }); + }); + const payload = { currentSettingFields, sourceType: "IMPORT" }; + saveAttendanceFieldSettingAsDefault(payload).then(({ status, errormsg }) => { + if (status) { + message.success("操作成功"); + } else { + message.error(errormsg || "操作失败"); + } + }); + break; + default: + break; + } + }; + handleSave = () => { + const { state, props } = this.setItemRef; + let currentSettingFields = []; + const { selectItem } = state, { dataSource } = props; + _.forEach(dataSource, item => { + currentSettingFields = _.map([...currentSettingFields, ...item.items], child => { + return { + id: child.id, + checked: selectItem.includes(child.id) + }; + }); + }); + const payload = { currentSettingFields, sourceType: "IMPORT" }; + saveAttendanceFieldSetting(payload).then(({ status, errormsg }) => { + if (status) { + message.success("保存成功"); + this.handleCloseSettings(); + } else { + message.error(errormsg || "保存失败"); + } + }); + }; /* * Author: 黎永顺 * Description: 考勤数据引用 @@ -330,6 +392,7 @@ class AttendanceDataComp extends Component { onCancel={this.handleCloseSettings} onSearchItemSet={this.handleSearchItemSet} onShowOnlyChecked={this.handleShowOnlyChecked} + onMoreOpts={this.handleMoreOpts} onSave={this.handleSave} /> {/* 考勤数据引用 */}