diff --git a/pc4mobx/hrmSalary/apis/statistics.js b/pc4mobx/hrmSalary/apis/statistics.js index 71166256..a4d16bbc 100644 --- a/pc4mobx/hrmSalary/apis/statistics.js +++ b/pc4mobx/hrmSalary/apis/statistics.js @@ -150,7 +150,7 @@ export const getPageListTemplatelist = (params) => { export const changePageListTemplate = (params) => { return postFetch("/api/bs/hrmsalary/common/pageList/template/change", params); }; -//薪酬统计报表-重置自定义列 -export const resetPageListSetting = (params) => { - return postFetch("/api/bs/hrmsalary/common/pageList/reset/setting", params); +//薪酬统计报表-删除模板 +export const deleteTemplatePageList = (params) => { + return postFetch("/api/bs/hrmsalary/common/pageList/template/delete", params); }; diff --git a/pc4mobx/hrmSalary/components/CustomBrowser/components/customTransferDialog.js b/pc4mobx/hrmSalary/components/CustomBrowser/components/customTransferDialog.js index 6d2a8f6f..5714241e 100644 --- a/pc4mobx/hrmSalary/components/CustomBrowser/components/customTransferDialog.js +++ b/pc4mobx/hrmSalary/components/CustomBrowser/components/customTransferDialog.js @@ -42,8 +42,9 @@ class CustomTransferDialog extends Component { } } else if (nextProps.visible !== this.props.visible && !nextProps.visible) { this.setState({ - query: { [this.props.searchParamsKey]: "" }, - rightDatas: [], rightCheckedKeys: [], leftListSelectedData: [], leftListSelectedKeys: [] + query: { [this.props.searchParamsKey]: "" }, selectedRowKeys: [], + rightDatas: [], rightCheckedKeys: [], leftListSelectedData: [], leftListSelectedKeys: [], + pageInfo: { current: 1, pageSize: 10, total: 0 } }); this.selectedData = {}; } @@ -145,7 +146,7 @@ class CustomTransferDialog extends Component { columns } = this.state; const { - searchParamsKey, saveLoading, dialogType = "", rowKey, buttons = [ + searchParamsKey, saveLoading, dialogType = "", rowKey, tableOpts = {}, buttons = [ , @@ -203,7 +204,7 @@ class CustomTransferDialog extends Component { ; if (dialogType === "table") { - const sheight = this.dialog ? this.dialog.state.height - 116 : 260; + const sheight = this.dialog ? this.dialog.state.height - 156 : 260; const pagination = { ...pageInfo, showTotal: total => `${getLabel(18609, "共")} ${total} ${getLabel(18256, "条")}`, @@ -221,17 +222,19 @@ class CustomTransferDialog extends Component { }; const rowSelection = { selectedRowKeys, - onChange: selectedRowKeys => this.setState({ selectedRowKeys }) + onChange: selectedRowKeys => this.setState({ selectedRowKeys }, () => this.props.onSelect(selectedRowKeys)) }; dom =
+ {this.props.children} + rowSelection={rowSelection} rowKey={rowKey || "id"} + columns={!_.isEmpty(tableOpts) ? [...columns, tableOpts] : columns}/>
; } return ( this.dialog = dom} title={this.renderTitle()} - className="custom_browser_dialog" draggable={false} style={{ + className="custom_browser_dialog" draggable={true} style={{ width: 784, height: 460, minHeight: 200, minWidth: 380, maxHeight: "90%", maxWidth: "90%", overflow: "hidden", transform: "translate(0px, 0px)" }} buttons={buttons}>{dom} diff --git a/pc4mobx/hrmSalary/components/CustomBrowser/index.less b/pc4mobx/hrmSalary/components/CustomBrowser/index.less index a4818c60..e49d982a 100644 --- a/pc4mobx/hrmSalary/components/CustomBrowser/index.less +++ b/pc4mobx/hrmSalary/components/CustomBrowser/index.less @@ -24,6 +24,19 @@ padding: 8px 16px; height: 100%; + .table_opts { + display: flex; + align-items: center; + justify-content: flex-end; + width: 100%; + height: 40px; + background: #FFF; + + .wea-button-icon { + margin-right: 10px; + } + } + .wea-new-table { background: #FFF; } diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryDetails.js b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryDetails.js index 0c7f9b7d..352d2571 100644 --- a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryDetails.js +++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryDetails.js @@ -8,7 +8,7 @@ import React, { Component } from "react"; import { inject, observer } from "mobx-react"; import { WeaTableNew } from "comsMobx"; import { WeaLoadingGlobal, WeaLocaleProvider, WeaSelect } from "ecCom"; -import { Button, message, Spin } from "antd"; +import { Button, message, Modal, Spin } from "antd"; import { getIframeParentHeight } from "../../../util"; import { sysConfCodeRule } from "../../../apis/ruleconfig"; import CustomTransferDialog from "../../../components/CustomBrowser/components/customTransferDialog"; @@ -31,7 +31,7 @@ class SalaryDetails extends Component { super(props); this.state = { loading: false, dataSource: [], columns: [], selectedRowKeys: [], tempPageList: [], sumRow: {}, - pageInfo: { current: 1, pageSize: 10, total: 0 }, payload: {}, templateId: "", + pageInfo: { current: 1, pageSize: 10, total: 0 }, payload: {}, templateId: "", tempManageQuery: false, showTotalCell: false, updateSum: true, tempDialog: { visible: false, setting: [], id: "", template: {} }, transferDialog: { visible: false, searchParamsKey: "name", saveLoading: false, @@ -39,14 +39,13 @@ class SalaryDetails extends Component { completeURL: "", convertDatasource: datas => { return { listDatas: _.map(datas.setting, o => ({ id: o.id || o.column, name: o.name || o.text })), - checked: this.converCheckedCol(datas) + checked: converCheckedCol(datas) }; }, dialogType: "temp" }, tempManageDialog: { //模板管理 - visible: false, completeURL: "", dialogType: "table", - dataParams: { page: "salary_details_report" } + visible: false, completeURL: "", dialogType: "table", dataParams: { page: "salary_details_report" } } }; } @@ -180,13 +179,6 @@ class SalaryDetails extends Component { completeURL: "/api/bs/hrmsalary/common/pageList/template/get", dialogType: "temp" } }, () => this.getPageListTemplatelist()); - converCheckedCol = (data) => { - return _.reduce(data.checked || [], (pre, cur) => { - const item = _.find(data.setting, k => k.column === cur.column); - if (!_.isEmpty(item)) return [...pre, { ...item, id: item.id || item.column, name: item.name || item.text }]; - return pre; - }, []); - }; savePageListSetting = (values) => { const { transferDialog } = this.state; @@ -217,27 +209,46 @@ class SalaryDetails extends Component { }; changePageListTemplate = (templateId) => { this.setState({ templateId }, () => { - API.changePageListTemplate({ page: "salary_details_report", templateId }).then(({ status, errormsg }) => { - if (status) { - message.success(getLabel(111, "操作成功!")); - this.setState({ - transferDialog: { - ...this.state.transferDialog, - dataParams: { ...this.state.transferDialog.dataParams, id: templateId } - } - }, () => { - this.transferRef.getData(true); - this.getSalaryList(); - }); - } else { - message.error(errormsg); - } - }); + API.changePageListTemplate({ page: "salary_details_report", templateId }) + .then(({ status, errormsg }) => { + if (status) { + message.success(getLabel(111, "操作成功!")); + this.setState({ + transferDialog: { + ...this.state.transferDialog, + dataParams: { ...this.state.transferDialog.dataParams, id: templateId } + } + }, () => { + this.transferRef.getData(true); + this.getSalaryList(); + }); + } else { + message.error(errormsg); + } + }); + }); + }; + handleDelTemp = (ids) => { + Modal.confirm({ + title: getLabel(131329, "信息确认"), + content: getLabel(111, "确认删除吗?"), + onOk: () => { + API.deleteTemplatePageList({ ids }).then(({ status, errormsg }) => { + if (status) { + message.success(getLabel(111, "操作成功!")); + this.setState({ tempManageQuery: !this.state.tempManageQuery }, () => this.getPageListTemplatelist()); + } else { + message.error(errormsg); + } + }); + } }); }; render() { - const { loading, dataSource, transferDialog, tempDialog, tempPageList, templateId, tempManageDialog } = this.state; + const { + loading, dataSource, transferDialog, tempDialog, tempPageList, templateId, tempManageDialog, tempManageQuery + } = this.state; const { dateRange, showSearchAd } = this.props; const { dialogType } = transferDialog; return ( @@ -295,7 +306,9 @@ class SalaryDetails extends Component { tempDialog: { ...tempDialog, visible: false, setting: [] } }, () => callback && callback())} onSuccess={this.getPageListTemplatelist}/> - this.setState({ + {/*薪资明细自定义列模板管理*/} + this.setState({ tempManageDialog: { ...tempManageDialog, completeURL: "", visible: false } })}/> @@ -305,3 +318,11 @@ class SalaryDetails extends Component { } export default SalaryDetails; + +export const converCheckedCol = (data) => { + return _.reduce(data.checked || [], (pre, cur) => { + const item = _.find(data.setting, k => k.column === cur.column); + if (!_.isEmpty(item)) return [...pre, { ...item, id: item.id || item.column, name: item.name || item.text }]; + return pre; + }, []); +}; diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryTempAdminDialog.js b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryTempAdminDialog.js new file mode 100644 index 00000000..0006cac0 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryTempAdminDialog.js @@ -0,0 +1,59 @@ +/* + * 薪酬报表-薪酬明细 + * 模板管理新增编辑弹框 + * @Author: 黎永顺 + * @Date: 2024/12/4 + * @Wechat: + * @Email: 971387674@qq.com + * @description: +*/ +import React, { Component } from "react"; +import { WeaDialog, WeaLocaleProvider, WeaTransfer } from "ecCom"; +import { postFetch } from "../../../util/request"; +import { Button } from "antd"; + +const getLabel = WeaLocaleProvider.getLabel; + +class SalaryTempAdminDialog extends Component { + constructor(props) { + super(props); + this.state = { + loading: false, selectedKeys: [], dataSource: [] + }; + } + + componentWillReceiveProps(nextProps, nextContext) { + if (nextProps.visible !== this.props.visible && nextProps.visible) { + const { dataParams = {} } = nextProps; + this.setState({ loading: true }); + postFetch("/api/bs/hrmsalary/common/pageList/template/get", { ...dataParams }) + .then(({ status, data }) => { + if (status) { + this.setState({ + dataSource: _.map(data.setting, o => ({ id: o.column, name: o.text })), + selectedKeys: _.map(data.checked, o => o.column) + }); + } + }); + } + } + + render() { + const { dataSource, selectedKeys } = this.state, { dataParams } = this.props; + return ( this.dialog = dom} title={getLabel(111, "模板管理")} + className="temp_admin_dialog" style={{ + width: 784, height: 460, minHeight: 200, minWidth: 380, + maxHeight: "90%", maxWidth: "90%", overflow: "hidden", transform: "translate(0px, 0px)" + }} buttons={[ + , + + ]}> + this.setState({ selectedKeys: v })} + height={this.dialog ? this.dialog.state.height - 10 : 260}/> + ); + } +} + +export default SalaryTempAdminDialog; diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryTempMangerDialog.js b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryTempMangerDialog.js index cf9ea23b..5995a9c5 100644 --- a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryTempMangerDialog.js +++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryTempMangerDialog.js @@ -8,14 +8,80 @@ * @description: */ import React, { Component } from "react"; -import { WeaLocaleProvider } from "ecCom"; +import { WeaButtonIcon, WeaLocaleProvider } from "ecCom"; import CustomTransferDialog from "../../../components/CustomBrowser/components/customTransferDialog"; +import SalaryTempAdminDialog from "./salaryTempAdminDialog"; +import SalaryDetailsTempDialog from "./salaryDetailsTempDialog"; const getLabel = WeaLocaleProvider.getLabel; class SalaryTempMangerDialog extends Component { + constructor(props) { + super(props); + this.state = { + selectedRowKeys: [], tempAdminDialog: { visible: false, dataParams: { page: "salary_details_report" } }, + tempDialog: { visible: false, setting: [], id: "", template: {} } + }; + } + + componentWillReceiveProps(nextProps, nextContext) { + if (nextProps.isQuery !== this.props.isQuery) this.setState({ selectedRowKeys: [] }, () => this.tempManageRef.getData()); + } + + handleTempAdminCols = (params = {}) => this.setState({ + tempAdminDialog: { visible: true, dataParams: { ...this.state.tempAdminDialog.dataParams, ...params } } + }); + handelAddTemp = (id = "", setting = []) => { + this.setState({ + tempDialog: { + visible: true, setting, id, template: _.find(this.tempManageRef.state.listDatas, o => o.id === id) + } + }); + }; + render() { - return (); + const { selectedRowKeys, tempAdminDialog, tempDialog } = this.state; + return ( this.tempManageRef = dom} {...this.props} buttons={[]} + title={getLabel(111, "模板管理")} + onSelect={v => this.setState({ selectedRowKeys: v })} + tableOpts={{ + title: getLabel(111, "操作"), + dataIndex: "options", + width: 120, + render: (text, record) => ( + { + record.canEdit && + this.handleTempAdminCols({ id: record.id })} + style={{ marginRight: 10 }}>{getLabel(111, "编辑")} + } + { + record.canEdit && + this.props.onDelete([record.id])}>{getLabel(111, "删除")} + } + + ) + }}> +
+ this.handleTempAdminCols()}/> + this.props.onDelete(selectedRowKeys)} disabled={_.isEmpty(selectedRowKeys)}/> +
+ {/*模板管理*/} + this.setState({ + tempAdminDialog: { visible: false, dataParams: { page: "salary_details_report" } } + })}/> + {/*薪资明细模板设置*/} + this.setState({ + tempDialog: { ...tempDialog, visible: false, setting: [] } + }, () => callback && callback())} + onSuccess={() => this.setState({ + tempAdminDialog: { visible: false, dataParams: { page: "salary_details_report" } } + }, () => this.tempManageRef.getData())}/> +
); } }