Commit 0f273a7c by zhaochengxiang

资产自定义主题加搜索

parent 98254a97
...@@ -289,22 +289,24 @@ const AssetTable = (props) =>{ ...@@ -289,22 +289,24 @@ const AssetTable = (props) =>{
onChange={ onCheckAll } onChange={ onCheckAll }
/> />
<div> <div>
{ <Space>
!readOnly && <Space> <span>资产要素:</span>
<span>资产要素:</span> {
<Button type="primary" onClick={onImportElementBtnClick}>导入</Button> !readOnly && <>
<Button type="primary" onClick={onExportElementBtnClick}>导出</Button> <Button type="primary" onClick={onImportElementBtnClick}>导入</Button>
<Popover <Button type="primary" onClick={onExportElementBtnClick}>导出</Button>
placement="bottom" </>
content={<FilterElement onCancel={onFilterElementVisibleChange} />} }
title='资产要素过滤' <Popover
visible={filterElementVisible} placement="bottom"
onVisibleChange={onFilterElementVisibleChange} content={<FilterElement onCancel={onFilterElementVisibleChange} />}
trigger="hover"> title='资产要素过滤'
<Button type="primary">过滤</Button> visible={filterElementVisible}
</Popover> onVisibleChange={onFilterElementVisibleChange}
</Space> trigger="hover">
} <Button type="primary">过滤</Button>
</Popover>
</Space>
<Space className='ml-5'> <Space className='ml-5'>
<span>资产:</span> <span>资产:</span>
{ {
...@@ -339,15 +341,19 @@ const AssetTable = (props) =>{ ...@@ -339,15 +341,19 @@ const AssetTable = (props) =>{
<span title={assetNames[index]||''} style={{ marginLeft:8 }}>{assetNames[index]||''}</span> <span title={assetNames[index]||''} style={{ marginLeft:8 }}>{assetNames[index]||''}</span>
</div> </div>
<Space className='m-3' style={{ marginLeft: 'auto' }} size='small'> <Space className='m-3' style={{ marginLeft: 'auto' }} size='small'>
<Tooltip placement='bottom' title={'修改'}> {
!readOnly && <Tooltip placement='bottom' title={'修改'}>
<Button icon={<EditOutlined />} size='small' onClick={() => { editAsset(item); }} /> <Button icon={<EditOutlined />} size='small' onClick={() => { editAsset(item); }} />
</Tooltip> </Tooltip>
}
<Tooltip placement='bottom' title={'详情'}> <Tooltip placement='bottom' title={'详情'}>
<Button icon={<ReconciliationOutlined />} size='small' onClick={() => { detailAsset(item); }} /> <Button icon={<ReconciliationOutlined />} size='small' onClick={() => { detailAsset(item); }} />
</Tooltip> </Tooltip>
<Tooltip placement='bottom' title={'删除'}> {
!readOnly && <Tooltip placement='bottom' title={'删除'}>
<Button icon={<DeleteOutlined />} size='small' onClick={() => { deleteAsset(item); }} /> <Button icon={<DeleteOutlined />} size='small' onClick={() => { deleteAsset(item); }} />
</Tooltip> </Tooltip>
}
</Space> </Space>
</div> </div>
<Divider /> <Divider />
......
...@@ -13,7 +13,9 @@ import { showMessage } from '../../../../util'; ...@@ -13,7 +13,9 @@ import { showMessage } from '../../../../util';
const CustomDirectoryModal = (props) => { const CustomDirectoryModal = (props) => {
const { visible, onCancel, action, dirId } = props; const { visible, onCancel, action, dirId } = props;
const [ keyword, setKeyword ] = useState('');
const [ data, setData ] = useState([]); const [ data, setData ] = useState([]);
const [ filterData, setFilterData ] = useState([]);
const [ previewTreeData, setPreviewTreeData ] = useState({}); const [ previewTreeData, setPreviewTreeData ] = useState({});
const [ checkedValues, setCheckedValues ] = useState([]); const [ checkedValues, setCheckedValues ] = useState([]);
const [ checkedData, setCheckedData ] = useState([]); const [ checkedData, setCheckedData ] = useState([]);
...@@ -43,6 +45,7 @@ const CustomDirectoryModal = (props) => { ...@@ -43,6 +45,7 @@ const CustomDirectoryModal = (props) => {
type: 'assetmanage.listCustomElements', type: 'assetmanage.listCustomElements',
callback: elements => { callback: elements => {
setData(elements||[]); setData(elements||[]);
setFilterData((elements||[]).filter(item => (item.name||'').indexOf(keyword)!==-1));
if (action === 'edit') { if (action === 'edit') {
getCurrentDirectory(elements||[]); getCurrentDirectory(elements||[]);
} }
...@@ -59,7 +62,7 @@ const CustomDirectoryModal = (props) => { ...@@ -59,7 +62,7 @@ const CustomDirectoryModal = (props) => {
callback: data => { callback: data => {
setCheckedValues(data.elementIds||[]); setCheckedValues(data.elementIds||[]);
form.setFieldsValue({ name: data.name||'', desc: data.desc||'' }); form.setFieldsValue({ name: data.name||'', desc: data.desc||'' });
onChange(data.elementIds||[], elements); onCheckboxChange(data.elementIds||[], elements);
} }
}) })
} }
...@@ -76,7 +79,12 @@ const CustomDirectoryModal = (props) => { ...@@ -76,7 +79,12 @@ const CustomDirectoryModal = (props) => {
}) })
} }
const onChange = (checkedValues, elements = data) => { const onSearchChange = (e) => {
setKeyword(e.target.value);
setFilterData((data||[]).filter(item => (item.name||'').indexOf(e.target.value)!==-1));
}
const onCheckboxChange = (checkedValues, elements = data) => {
setCheckedValues(checkedValues); setCheckedValues(checkedValues);
const _checkedData = []; const _checkedData = [];
...@@ -93,6 +101,7 @@ const CustomDirectoryModal = (props) => { ...@@ -93,6 +101,7 @@ const CustomDirectoryModal = (props) => {
const reset = () => { const reset = () => {
setConfirmLoading(false); setConfirmLoading(false);
setKeyword('');
setCheckedValues([]); setCheckedValues([]);
setCheckedData([]); setCheckedData([]);
setPreviewTreeData({}); setPreviewTreeData({});
...@@ -160,7 +169,7 @@ const CustomDirectoryModal = (props) => { ...@@ -160,7 +169,7 @@ const CustomDirectoryModal = (props) => {
const index = newCheckedValues.indexOf(id); const index = newCheckedValues.indexOf(id);
if (index !== -1) { if (index !== -1) {
newCheckedValues.splice(index, 1); newCheckedValues.splice(index, 1);
onChange(newCheckedValues); onCheckboxChange(newCheckedValues);
} }
} }
...@@ -192,10 +201,16 @@ const CustomDirectoryModal = (props) => { ...@@ -192,10 +201,16 @@ const CustomDirectoryModal = (props) => {
<Row gutter={30}> <Row gutter={30}>
<Col span={8} style={{ borderRight: '1px solid #EFEFEF' }}> <Col span={8} style={{ borderRight: '1px solid #EFEFEF' }}>
<div className='mb-3'>资产要素</div> <div className='mb-3'>资产要素</div>
<Input
value={keyword}
placeholder='请输入资产要素'
style={{ marginBottom:10 }}
onChange={(e) => { onSearchChange(e) }}
/>
<div style={{ maxHeight: 500, overflow: 'auto' }}> <div style={{ maxHeight: 500, overflow: 'auto' }}>
<Checkbox.Group value={checkedValues} onChange={onChange}> <Checkbox.Group value={checkedValues} onChange={onCheckboxChange}>
{ {
(data||[]).map((item, index) => { (filterData||[]).map((item, index) => {
return ( return (
<Row key={index}> <Row key={index}>
<Checkbox value={item.id||''}>{item.name||''}</Checkbox> <Checkbox value={item.id||''}>{item.name||''}</Checkbox>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment