From b431086c5ec3472a91e5022727810865dfac37f5 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 16 二月 2024 13:31:31 +0800
Subject: [PATCH] #

---
 zy-asrs-flow/src/components/TableSearch/index.jsx                            |   79 ++++++++++++++++++++++++++++++++++++++-
 zy-asrs-flow/src/pages/system/role/index.jsx                                 |   10 ++++-
 zy-asrs-flow/src/pages/system/role/components/edit.jsx                       |    2 
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/HostController.java |    2 
 4 files changed, 87 insertions(+), 6 deletions(-)

diff --git a/zy-asrs-flow/src/components/TableSearch/index.jsx b/zy-asrs-flow/src/components/TableSearch/index.jsx
index f91197d..110e027 100644
--- a/zy-asrs-flow/src/components/TableSearch/index.jsx
+++ b/zy-asrs-flow/src/components/TableSearch/index.jsx
@@ -1,6 +1,6 @@
 import React from 'react';
 import { Input, Button, Space, Select, DatePicker } from 'antd';
-import moment from 'moment';
+import Http from '@/utils/http';
 
 const NONE_OPTION = -9999;
 
@@ -170,5 +170,80 @@
     );
 }
 
+const LinkFilter = (props) => {
+    const [currentOption, setCurrentOption] = React.useState();
+    const [options, setOptions] = React.useState([]);
 
-export { TextFilter, SelectFilter, DatetimeRangeFilter };
\ No newline at end of file
+    const handleSearch = async (value) => {
+        if (value) {
+            const resp = await Http.doPostForm(`api/${props.name}/query`, { condition: value });
+            setOptions(resp.data);
+        } else {
+            setOptions([]);
+        }
+    }
+
+    return (
+        <div style={{ padding: 8 }}>
+            <div>
+                <Select
+                    style={{ width: 188, marginBottom: 8, display: 'block' }}
+                    placeholder="璇烽�夋嫨"
+                    value={currentOption === NONE_OPTION ? undefined : currentOption}
+                    onChange={value => {
+                        setCurrentOption(value)
+                        props.setSelectedKeys(value !== undefined && value !== null ? [value] : []);
+                    }}
+                    onSearch={handleSearch}
+                    showSearch={true}
+                    debounceTime={300}
+                >
+                    {options.map(item => (
+                        <Select.Option key={item.value} value={item.value}>
+                            {item.label}
+                        </Select.Option>
+                    ))}
+                </Select>
+            </div>
+            <Space>
+                <Button
+                    type="primary"
+                    onClick={() => {
+                        props.confirm();
+                        if (currentOption === NONE_OPTION) {
+                            props.setSearchParam(prevState => {
+                                const state = { ...prevState };
+                                delete state[props.name];
+                                return state;
+                            })
+                        } else {
+                            props.setSearchParam(prevState => ({
+                                ...prevState,
+                                [props.name]: currentOption
+                            }));
+                        }
+                        props.actionRef.current?.reload();
+                    }}
+                    size="small"
+                    style={{ width: 90 }}
+                >
+                    纭畾
+                </Button>
+                <Button
+                    onClick={() => {
+                        setCurrentOption(NONE_OPTION)
+                        props.setSelectedKeys([]);
+                        props.clearFilters();
+                    }}
+                    size="small"
+                    style={{ width: 90 }}
+                >
+                    閲嶇疆
+                </Button>
+            </Space>
+        </div>
+    );
+}
+
+
+export { TextFilter, SelectFilter, DatetimeRangeFilter, LinkFilter };
\ No newline at end of file
diff --git a/zy-asrs-flow/src/pages/system/role/components/edit.jsx b/zy-asrs-flow/src/pages/system/role/components/edit.jsx
index 58405f7..5e28880 100644
--- a/zy-asrs-flow/src/pages/system/role/components/edit.jsx
+++ b/zy-asrs-flow/src/pages/system/role/components/edit.jsx
@@ -101,7 +101,7 @@
                         showSearch
                         debounceTime={300}
                         request={async ({ keyWords }) => {
-                            const resp = await Http.doPostForm('api/host/query', { condition: keyWords });
+                            const resp = await Http.doPostForm('api/hostId/query', { condition: keyWords });
                             return resp.data;
                         }}
                     />
diff --git a/zy-asrs-flow/src/pages/system/role/index.jsx b/zy-asrs-flow/src/pages/system/role/index.jsx
index b63bca8..a34f947 100644
--- a/zy-asrs-flow/src/pages/system/role/index.jsx
+++ b/zy-asrs-flow/src/pages/system/role/index.jsx
@@ -11,7 +11,7 @@
 import { PlusOutlined, ExportOutlined } from '@ant-design/icons';
 import Http from '@/utils/http';
 import Edit from './components/edit'
-import { TextFilter, SelectFilter, DatetimeRangeFilter } from '@/components/TableSearch'
+import { TextFilter, SelectFilter, DatetimeRangeFilter, LinkFilter } from '@/components/TableSearch'
 
 const handleSave = async (val) => {
     const hide = message.loading('姝e湪娣诲姞');
@@ -131,9 +131,15 @@
             />,
         },
         {
-            title: '鍏徃',
+            title: '鏈烘瀯',
             dataIndex: 'hostId$',
             valueType: 'text',
+            filterDropdown: (props) => <LinkFilter
+                name='hostId'
+                {...props}
+                actionRef={actionRef}
+                setSearchParam={setSearchParam}
+            />,
         },
         {
             title: '鐘舵��',
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/HostController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/HostController.java
index dc4e2f9..99b251d 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/HostController.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/HostController.java
@@ -28,7 +28,7 @@
     private HostService hostService;
 
     @PreAuthorize("hasAuthority('sys:host:list')")
-    @PostMapping("/host/query")
+    @PostMapping("/hostId/query")
     public R query(@RequestParam(required = false) String condition) {
         List<KeyValVo> vos = new ArrayList<>();
         LambdaQueryWrapper<Host> wrapper = new LambdaQueryWrapper<>();

--
Gitblit v1.9.1