diff --git a/pc4mobx/hrmSalary/apis/item.js b/pc4mobx/hrmSalary/apis/item.js index ab4ff6c2..180b22d0 100644 --- a/pc4mobx/hrmSalary/apis/item.js +++ b/pc4mobx/hrmSalary/apis/item.js @@ -1,5 +1,5 @@ import { WeaTools } from "ecCom"; -import { postFetch } from "../util/request"; +import { postExportFetch, postFetch } from "../util/request"; // 薪资项目-获取列表 export const getItemList = params => { @@ -84,3 +84,19 @@ export const getSalarySobBySalaryItem = params => { export const syncSalaryItemToSalarySobItem = params => { return postFetch("/api/bs/hrmsalary/salaryitem/syncSalaryItemToSalarySobItem", params); }; + +// 导出薪资项目 +export const exportSalaryitem = (params) => { + return postExportFetch("/api/bs/hrmsalary/salaryitem/export", params); +}; +// 下载模板 +export const downloadTemplate = (params) => { + return postExportFetch("/api/bs/hrmsalary/salaryitem/downloadTemplate", params); +}; + +// 导入薪资项目 +export const importSalaryitem = (params) => { + return postFetch("/api/bs/hrmsalary/salaryitem/import", params); +}; + + diff --git a/pc4mobx/hrmSalary/pages/salaryItem/index.js b/pc4mobx/hrmSalary/pages/salaryItem/index.js index 09875add..f6898090 100644 --- a/pc4mobx/hrmSalary/pages/salaryItem/index.js +++ b/pc4mobx/hrmSalary/pages/salaryItem/index.js @@ -1,9 +1,8 @@ import React from "react"; import { inject, observer } from "mobx-react"; import { Button, Dropdown, Menu, message, Modal, Switch } from "antd"; -import { WeaInputSearch, WeaLocaleProvider, WeaNewScroll, WeaSlideModal, WeaTop } from "ecCom"; +import { WeaInputSearch, WeaLoadingGlobal, WeaLocaleProvider, WeaNewScroll, WeaSlideModal, WeaTop } from "ecCom"; import { renderLoading, toDecimal_n } from "../../util"; -import CustomTab from "../../components/customTab"; import SystemSalaryItemModal from "./systemSalaryItemModal"; import { columns } from "./columns"; import SlideModalTitle from "../../components/slideModalTitle"; @@ -12,6 +11,8 @@ import CustomPaginationTable from "../../components/customPaginationTable"; import SyncToSalaryAccountSetDialog from "./syncToSalaryAccountSetDialog"; import "../socialSecurityBenefits/programme/index.less"; import LogDialog from "../../components/logViewModal"; +import SalaryItemImportDialog from "./salaryItemImport"; +import * as API from "../../apis/item"; const { getLabel } = WeaLocaleProvider; @inject("salaryItemStore", "taxAgentStore", "salaryFileStore") @@ -29,7 +30,8 @@ export default class SalaryItem extends React.Component { searchParams: { current: 1, pageSize: 10, total: 0 }, selectedRowKeys: [], syncSalarySetDialog: { visible: false, title: "", id: "" }, - logDialogVisible: false, filterConditions: "[]" + logDialogVisible: false, filterConditions: "[]", + salaryItemImpDialog: { visible: false, title: getLabel(24023, "数据导入") } }; columns.map(item => { if (item.dataIndex == "refere") { @@ -213,6 +215,19 @@ export default class SalaryItem extends React.Component { filterConditions: targetid ? `[{\"connectCondition\":\"AND\",\"columIndex\":\"targetid\",\"type\":\"=\",\"value\":\"${targetid}\"}]` : "[]" }); break; + case "export": + WeaLoadingGlobal.start(); + const { selectedRowKeys } = this.state; + const promise = API.exportSalaryitem({ ids: selectedRowKeys }); + WeaLoadingGlobal.destroy(); + break; + case "import": + this.setState({ + salaryItemImpDialog: { + ...this.state.salaryItemImpDialog, visible: true + } + }); + break; default: break; } @@ -220,12 +235,10 @@ export default class SalaryItem extends React.Component { render() { const { - salaryItemStore, - salaryFileStore, - taxAgentStore: { showOperateBtn, showSalaryItemBtn, taxAgentOption } + salaryItemStore, salaryFileStore, taxAgentStore: { showOperateBtn, showSalaryItemBtn, taxAgentOption } } = this.props; const { userStatusList } = salaryFileStore; - const { selectedRowKeys, logDialogVisible, filterConditions } = this.state; + const { selectedRowKeys, logDialogVisible, filterConditions, salaryItemImpDialog } = this.state; const { loading, deleteItemRequest, getTableDatas } = salaryItemStore; const { tableDataSource, @@ -257,51 +270,36 @@ export default class SalaryItem extends React.Component { ); - const renderRightOperation = () => { - return (
- { - (showOperateBtn || showSalaryItemBtn) && - handleMenuClick({ key: "1" })} - style={{ marginRight: "10px" }}>{getLabel(111, "新增自定义薪资项")} + const buttons = [ + handleMenuClick({ key: "1" })}>{getLabel(111, "新增自定义薪资项")}, + - } - { - this.setState({ searchValue: value }); - }} onSearch={(value) => { - this.handleSearch(value); - }}/> -
); - - }; - + }); + } + }); + }}>{getLabel(32136, "批量删除")}, + this.setState({ searchValue: value })} + onSearch={value => this.handleSearch(value)}/> + ]; // 新建和修改保存的回调 const handleSlideSave = (continueFlag) => { const { salaryItemStore: { saveItem, request, getTableDatas } } = this.props; @@ -367,23 +365,31 @@ export default class SalaryItem extends React.Component { }; const rowSelection = { selectedRowKeys, - onChange: (selectedRowKeys) => this.setState({ selectedRowKeys }), - getCheckboxProps: record => ({ - disabled: !record.canDelete // Column configuration not to be checked - }) + onChange: (selectedRowKeys) => this.setState({ selectedRowKeys }) + // getCheckboxProps: record => ({ + // disabled: !record.canDelete // Column configuration not to be checked + // }) }; return (
} iconBgcolor="#F14A2D" showDropIcon onDropMenuClick={this.onDropMenuClick} dropMenuDatas={[ + { + key: "import", + icon: , + content: getLabel(111, "导入") + }, + { + key: "export", + icon: , + content: getLabel(111, "导出") + }, { key: "log", icon: , content: getLabel(545781, "操作日志") } - ]} - > - + ]} buttons={(showOperateBtn || showSalaryItemBtn) ? buttons : buttons.slice(-1)}>
this.setState({ logDialogVisible: false })}/> + {/* 导入*/} + { + this.setState({ + salaryItemImpDialog: { ...salaryItemImpDialog, visible: false } + }, () => callback && this.handleSearch(this.state.searchValue)); + }}/> { systemItemVisible && { + const { importDialog } = this.state; + const { hasData } = importDialog; + WeaLoadingGlobal.start(); + const promise = API.downloadTemplate({ hasData }); + WeaLoadingGlobal.destroy(); + }; + handleImport = (payload) => { + const { importDialog } = this.state, { isExtEmp } = this.props; + const { extraPreview } = importDialog; + this.setState({ importDialog: { ...importDialog, nextloading: true } }); + API.importSalaryitem({ ...payload, ...extraPreview, isExtEmp }).then(({ data, status }) => { + this.setState({ importDialog: { ...importDialog, nextloading: false } }); + if (status) { + this.setState({ + importDialog: { ...importDialog, ...payload, importResult: data } + }); + } + }).catch(() => this.setState({ importDialog: { ...importDialog, nextloading: false } })); + }; + + render() { + const { importDialog } = this.state; + return ( + this.setState({ + importDialog: { ...importDialog, importResult: {}, imageId: "", link: null } + })} + exportDataDom={ + { + this.setState({ importDialog: { ...importDialog, hasData: val === "1" } }); + }} + /> + } + nextCallback={imageId => this.setState({ importDialog: { ...importDialog, imageId } })} + nextUplaodCallback={imageId => this.handleImport({ imageId })} + /> + ); + } +} + +export default Index;