You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
4.9 KiB
96 lines
4.9 KiB
var __rest = (this && this.__rest) || function (s, e) { |
|
var t = {}; |
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) |
|
t[p] = s[p]; |
|
if (s != null && typeof Object.getOwnPropertySymbols === "function") |
|
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { |
|
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) |
|
t[p[i]] = s[p[i]]; |
|
} |
|
return t; |
|
}; |
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime"; |
|
import { Modal, Button, Form } from 'antd'; |
|
import { EditableProTable, ProForm, ProTable, } from '@ant-design/pro-components'; |
|
import { useState } from 'react'; |
|
import { isEmpty, map, initial, find, omit, pick } from 'lodash'; |
|
const column = [ |
|
{ |
|
title: '姓名', |
|
dataIndex: 'userName', |
|
readonly: true, |
|
formItemProps: { |
|
label: '关键字', |
|
name: 'keyword', |
|
}, |
|
}, |
|
{ |
|
title: '用户工号', |
|
dataIndex: 'userNo', |
|
readonly: true, |
|
search: false, |
|
}, |
|
{ |
|
title: '所在机构', |
|
dataIndex: 'organName', |
|
readonly: true, |
|
search: false, |
|
}, |
|
{ |
|
title: '操作', |
|
valueType: 'option', |
|
}, |
|
]; |
|
export default function SelectedPolicy(_a) { |
|
var { selectionType = 'radio', title, label, name, required, service, params, columns = column, search = false, ruleMessage, filterName } = _a, props = __rest(_a, ["selectionType", "title", "label", "name", "required", "service", "params", "columns", "search", "ruleMessage", "filterName"]); |
|
const form = Form.useFormInstance(); |
|
const filterUser = Form.useWatch(filterName, form); |
|
const [visible, setVisible] = useState(false); |
|
const [selectedRowOptions, setSelectedRowOptions] = useState([]); |
|
const rowSelection = { |
|
onChange: (selectedRowKeys, selectedRowOptions) => { |
|
setSelectedRowOptions(selectedRowOptions); |
|
}, |
|
selectedRowKeys: map(selectedRowOptions, 'userId'), |
|
}; |
|
function onCancel(form) { |
|
setSelectedRowOptions(form.getFieldValue(name)); |
|
setVisible(false); |
|
} |
|
function onOk(form) { |
|
form.setFieldsValue({ |
|
[name]: selectedRowOptions, |
|
}); |
|
setVisible(false); |
|
} |
|
return (_jsx(ProForm.Item, Object.assign({ label: label, shouldUpdate: true, required: required }, props, { children: (form) => { |
|
return (_jsxs(_Fragment, { children: [_jsx(Button, Object.assign({ type: "primary", onClick: () => setVisible(true) }, { children: title })), _jsx(Modal, Object.assign({ onCancel: () => onCancel(form), onOk: () => onOk(form), width: "60%", title: title, open: visible, destroyOnClose: true }, { children: _jsx(ProTable, { rowKey: "userId", options: false, search: search, pagination: { |
|
pageSize: 5, |
|
showSizeChanger: false, |
|
}, columns: map(initial(columns), (item) => omit(item, ['readonly'])), params: params, request: filterUser |
|
? (params) => { |
|
return service(params).then((result) => { |
|
return Object.assign(Object.assign({}, result), { data: result.data.filter((item) => !find(filterUser, (sub) => sub.userId === item.userId)) }); |
|
}); |
|
} |
|
: service, rowSelection: Object.assign({ type: selectionType }, rowSelection) }) })), _jsx(ProForm.Item, Object.assign({ hidden: isEmpty(selectedRowOptions), noStyle: isEmpty(selectedRowOptions), name: name, trigger: "onValuesChange", rules: [{ required: required, message: ruleMessage }] }, { children: _jsx(EditableProTable, { style: { |
|
marginTop: 20, |
|
}, size: "small", rowKey: "userId", toolBarRender: false, columns: columns.map((item) => pick(item, ['title', 'dataIndex', 'readonly', 'valueType'])), recordCreatorProps: { |
|
style: { |
|
display: 'none', |
|
}, |
|
}, editable: { |
|
type: 'multiple', |
|
editableKeys: map(selectedRowOptions, 'userId'), |
|
actionRender: (row, config, defaultDoms) => { |
|
return [defaultDoms.delete]; |
|
}, |
|
onChange: (editableKeys, editableOptions) => { |
|
form.setFieldsValue({ |
|
serviceObject: editableOptions, |
|
}); |
|
setSelectedRowOptions(editableOptions); |
|
}, |
|
} }) }))] })); |
|
} }))); |
|
}
|
|
|