feat(componentDeployment): 添加组件分类筛选功能

master
钟良源 2 days ago
parent 2f9453b227
commit 1b1d4e620b

@ -24,9 +24,10 @@ const CollapseItem = Collapse.Item;
interface CollapseListProps { interface CollapseListProps {
searchKeyword?: string; searchKeyword?: string;
runStatus?: string; runStatus?: string;
componentClassify?: string;
} }
const CollapseList: React.FC<CollapseListProps> = ({ searchKeyword, runStatus }) => { const CollapseList: React.FC<CollapseListProps> = ({ searchKeyword, runStatus, componentClassify }) => {
const [collapses, setCollapses] = useState([]); const [collapses, setCollapses] = useState([]);
const [visible, setVisible] = useState(false); const [visible, setVisible] = useState(false);
const [showOffSaleModal, setShowOffSaleModal] = useState(false); const [showOffSaleModal, setShowOffSaleModal] = useState(false);
@ -56,6 +57,11 @@ const CollapseList: React.FC<CollapseListProps> = ({ searchKeyword, runStatus })
params.runStatus = runStatus; params.runStatus = runStatus;
} }
// 添加组件分类筛选
if (componentClassify) {
params.componentClassify = componentClassify;
}
const res: any = await getDeployList(params); const res: any = await getDeployList(params);
if (res.code === 200) { if (res.code === 200) {
setCollapses(res.data.list.reverse()); setCollapses(res.data.list.reverse());
@ -128,7 +134,7 @@ const CollapseList: React.FC<CollapseListProps> = ({ searchKeyword, runStatus })
useEffect(() => { useEffect(() => {
setCurrent(1); // 搜索条件变化时重置到第一页 setCurrent(1); // 搜索条件变化时重置到第一页
getList(1, pageSize); getList(1, pageSize);
}, [searchKeyword, runStatus]); }, [searchKeyword, runStatus, componentClassify]);
// 折叠面板头部 // 折叠面板头部
const headerNode = (item) => { const headerNode = (item) => {

@ -1,21 +1,32 @@
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import styles from './style/index.module.less'; import styles from './style/index.module.less';
import { Button, Input, Modal, Radio, Space } from '@arco-design/web-react'; import { Button, Input, Modal, Radio, Space, Select } from '@arco-design/web-react';
import { IconSearch } from '@arco-design/web-react/icon'; import { IconSearch } from '@arco-design/web-react/icon';
import CollapseList from './collapseList'; import CollapseList from './collapseList';
import { startStatusConstant } from '@/const/isdp/componentDeploy'; import { startStatusConstant } from '@/const/isdp/componentDeploy';
import ConfigTutorial from '@/pages/componentDevelopment/componentEnv/configTutorial'; import ConfigTutorial from '@/pages/componentDevelopment/componentEnv/configTutorial';
import { getComponentClassify } from '@/api/componentClassify';
const ComponentDeployment = () => { const ComponentDeployment = () => {
const [searchKeyword, setSearchKeyword] = useState(''); const [searchKeyword, setSearchKeyword] = useState('');
const [debouncedKeyword, setDebouncedKeyword] = useState(''); const [debouncedKeyword, setDebouncedKeyword] = useState('');
const [selectedClassify, setSelectedClassify] = useState<string | undefined>(undefined);
const [classifyOptions, setClassifyOptions] = useState<{ label: string; value: string }[]>([]);
const [selectedStatus, setSelectedStatus] = useState<string | undefined>(undefined);
const [tutorialVisible, setTutorialVisible] = useState(false);
useEffect(() => { useEffect(() => {
const timer = setTimeout(() => setDebouncedKeyword(searchKeyword), 500); const timer = setTimeout(() => setDebouncedKeyword(searchKeyword), 500);
return () => clearTimeout(timer); return () => clearTimeout(timer);
}, [searchKeyword]); }, [searchKeyword]);
const [selectedStatus, setSelectedStatus] = useState<string | undefined>(undefined);
const [tutorialVisible, setTutorialVisible] = useState(false); useEffect(() => {
getComponentClassify('component').then((res: any) => {
if (res.code === 200) {
setClassifyOptions(res.data.map((item) => ({ label: item.classifyName, value: item.classifyName })));
}
});
}, []);
// 状态选项配置 // 状态选项配置
const statusOptions = [ const statusOptions = [
@ -49,6 +60,14 @@ const ComponentDeployment = () => {
</Radio.Group> </Radio.Group>
<Space> <Space>
<Select
placeholder="组件分类"
allowClear
style={{ width: 160 }}
value={selectedClassify}
onChange={(value) => setSelectedClassify(value)}
options={classifyOptions}
/>
<Input <Input
prefix={<IconSearch />} prefix={<IconSearch />}
placeholder={'搜索'} placeholder={'搜索'}
@ -69,7 +88,8 @@ const ComponentDeployment = () => {
</Space> </Space>
</div> </div>
<div className={styles['content']}> <div className={styles['content']}>
<CollapseList searchKeyword={debouncedKeyword} runStatus={selectedStatus} /> <CollapseList searchKeyword={debouncedKeyword} runStatus={selectedStatus}
componentClassify={selectedClassify} />
</div> </div>
</div> </div>

Loading…
Cancel
Save