import React from "react"; import { Button, Spin } from "antd"; import { WeaCheckbox, WeaDialog, WeaInputSearch, WeaLocaleProvider, WeaTable } from "ecCom"; import { listSalaryItem } from "../../../apis/ledger"; const getLabel = WeaLocaleProvider.getLabel; export default class LedgerSalaryItemAddModal extends React.Component { constructor(props) { super(props); this.state = { loading: { query: false }, name: "", selectedRowKeys: [], dataSource: [], dataSourceCopy: [], columns: [], pageInfo: { current: 1, pageSize: 10, total: 0 } }; } componentWillReceiveProps(nextProps, nextContext) { if (nextProps.visible !== this.props.visivle && nextProps.visible) { this.setState({ selectedRowKeys: [], dataSourceCopy: [] }, () => { this.listSalaryItem(); }); } else { this.setState({ pageInfo: { current: 1, pageSize: 10, total: 0 } }); } } listSalaryItem = (extra = {}) => { const { itemGroups } = this.props; const { name, pageInfo, loading, dataSourceCopy } = this.state; let excludeIds = []; itemGroups.map(item => { item.items && item.items.map(i => { excludeIds.push(i.salaryItemId); }); }); const payload = { excludeIds, name, ...pageInfo, ...extra }; this.setState({ loading: { ...loading, query: true } }); listSalaryItem(payload).then(({ status, data }) => { this.setState({ loading: { ...loading, query: false } }); if (status) { const { pageNum: current, pageSize, total, columns, list: dataSource } = data; const tmpV = !_.isEmpty(dataSource) ? dataSource : []; this.setState({ dataSourceCopy: [...dataSourceCopy, ...tmpV], pageInfo: { ...pageInfo, current, pageSize, total }, dataSource: tmpV, columns }); } }).catch(() => { this.setState({ loading: { ...loading, query: false } }); }); }; getSalaryItemAddColumns = () => { const { columns } = this.state; let newColumns = []; newColumns = columns.map(column => { let newColumn = column; newColumn.render = (text, record, index) => { //前端元素转义 let valueSpan = record[newColumn.dataIndex + "span"] !== undefined ? record[newColumn.dataIndex + "span"] : record[newColumn.dataIndex]; switch (newColumn.dataIndex) { case "useDefault": case "hideDefault": case "useInEmployeeSalary": return ; default: return
; } }; return newColumn; }); return newColumns; }; handleAdd = () => { const { dataSourceCopy, selectedRowKeys } = this.state; const { onAddSalaryItems, id, onCancel, itemGroups, record } = this.props; const arrItems = _.find(itemGroups, it => it.uuid === id).items || []; let selectItems = []; _.uniqWith(dataSourceCopy, _.isEqual).map((item) => { item = { ...item }; selectedRowKeys.map((key, keyIdx) => { if (item.id === key) { item.salaryItemId = item.id; item.key = item.id; item.itemHide = item.hideDefault; item.sortedIndex = (!_.isEmpty(_.maxBy(arrItems, it => it.sortedIndex)) ? _.maxBy(arrItems, it => it.sortedIndex).sortedIndex : 0) + keyIdx + 1; selectItems.push(item); } }); }); onCancel(); onAddSalaryItems(id, selectItems, record.id || record.key); }; renderTitle = () => { const { name, pageInfo } = this.state; return
{getLabel(111, "添加薪资项目")} this.setState({ name: val })} style={{ width: 200 }} placeholder={getLabel(111, "请输入薪资项目名称")} onSearch={() => this.setState({ pageInfo: { ...pageInfo, current: 1 } }, () => this.listSalaryItem())}/>
; }; render() { const { selectedRowKeys, pageInfo, dataSource, loading } = this.state; const pagination = { ...pageInfo, showTotal: total => `共 ${total} 条`, showQuickJumper: true, showSizeChanger: true, pageSizeOptions: ["10", "20", "50", "100"], onShowSizeChange: (current, pageSize) => { this.setState({ pageInfo: { ...pageInfo, current: 1, pageSize } }, () => this.listSalaryItem()); }, onChange: current => { this.setState({ pageInfo: { ...pageInfo, current } }, () => this.listSalaryItem()); } }; const rowSelection = { selectedRowKeys, onChange: (selectedRowKeys) => this.setState({ selectedRowKeys }) }; return ( this.sysItemRef = dom} title={this.renderTitle()} buttons={[]} style={{ width: "60vw", height: 600, minHeight: 200, minWidth: 380, maxHeight: "90%", maxWidth: "90%", overflow: "hidden", transform: "translate(0px, 0px)" }}>
record.id || record.key} rowSelection={rowSelection}/>
); } }