Commit a3b4a681c73a65ac0244f3f819370266bf84af28
1 parent
50d3e44c
优惠券配置售后作业项加筛选条件
Showing
2 changed files
with
70 additions
and
43 deletions
src/pages/coupon/CouponConfig/components/UsesceneItems/PreDecoration/Components/WorkItemLimit.tsx
... | ... | @@ -6,9 +6,9 @@ import * as API from '../api'; |
6 | 6 | import * as IF from '../interface'; |
7 | 7 | import usePagination from '@/hooks/usePagination'; |
8 | 8 | import { deRepetition } from '@/components/Condition/SeriesSelector/components/utils'; |
9 | -import useDebounce from '@/hooks/useDebounce'; | |
10 | 9 | import useInitial from '@/hooks/useInitail'; |
11 | -import { getBrandFilterApi } from '@/common/api'; | |
10 | +import { getBrandFilterApi, getSeriesApi } from '@/common/api'; | |
11 | +import { debounce } from 'lodash'; | |
12 | 12 | |
13 | 13 | const st = require('@/pages/coupon/CouponConfig/style.less'); |
14 | 14 | |
... | ... | @@ -30,19 +30,23 @@ function PartItem(props: Props, ref?: Ref<any>) { |
30 | 30 | const params = useScene === 1 ? { workTypes: "1,2,5,9" } : { workType: useScene }; |
31 | 31 | const { loading, setLoading, list, setParams, paginationConfig, innerParams } = usePagination(API.fetchListApi, params); |
32 | 32 | const { data: brandList } = useInitial(getBrandFilterApi, [], {}); |
33 | + const [seriesList, setSeriesList] = useState<CommonApi.OptionVO[]>([]); | |
33 | 34 | const [visible, setVisible] = useState(false); |
34 | 35 | const [listData, setListData] = useState<IF.ListVO[]>([]); |
35 | - const [keyWords, setKeyWords] = useState<string>(''); | |
36 | - const keyWordsTerm = useDebounce<string>(keyWords, 800); | |
37 | 36 | |
38 | 37 | useEffect(() => { |
39 | 38 | value && setListData(value.map((v: any) => ({ itemCode: v.applyValue, itemName: v.applyName }))); |
40 | 39 | }, []); |
41 | 40 | |
42 | - useEffect(() => { | |
43 | - setParams({ keywords: keyWordsTerm || undefined, current: 1 }, true); | |
44 | - }, [keyWordsTerm]); | |
41 | + function getSeries(brandId: number) { | |
42 | + getSeriesApi(brandId).then((res) => { | |
43 | + setSeriesList(res.data || []); | |
44 | + }).catch((err) => { | |
45 | + message.error(err.message); | |
46 | + }); | |
47 | + } | |
45 | 48 | |
49 | + const onFilter = debounce((params) => setParams({ ...innerParams, ...params }, true), 600); | |
46 | 50 | function selectedItems(value: any[]) { |
47 | 51 | const partIds = value.length && value.map((i: any) => i.applyValue).toString(); |
48 | 52 | API.fetItemsApi({ partIds }).then(res => { |
... | ... | @@ -93,7 +97,7 @@ function PartItem(props: Props, ref?: Ref<any>) { |
93 | 97 | width="20%" |
94 | 98 | render={(text, record: IF.ListVO) => { |
95 | 99 | return ( |
96 | - <a onClick={() => remove(record.itemCode)}>删除</a> | |
100 | + <a onClick={() => remove(record.itemCode!)}>删除</a> | |
97 | 101 | ); |
98 | 102 | }} |
99 | 103 | /> |
... | ... | @@ -120,16 +124,38 @@ function PartItem(props: Props, ref?: Ref<any>) { |
120 | 124 | showSearch |
121 | 125 | allowClear |
122 | 126 | placeholder="搜索品牌" |
123 | - style={{ width: 200, marginRight: 15 }} | |
124 | - onChange={(value) => setParams({ ...innerParams, brandId: value }, true)} | |
127 | + style={{ width: 200, margin: 5 }} | |
128 | + onChange={(value) => { | |
129 | + setParams({ ...innerParams, brandId: value }, true); | |
130 | + getSeries(value); | |
131 | + }} | |
125 | 132 | > |
126 | 133 | {brandList.map((item) => <Select.Option key={item.id} value={item.id}>{item.name}</Select.Option>)} |
127 | 134 | </Select>, |
135 | + <Select | |
136 | + optionFilterProp="children" | |
137 | + mode="multiple" | |
138 | + showSearch | |
139 | + allowClear | |
140 | + placeholder="搜索车系" | |
141 | + style={{ width: 200, margin: 5 }} | |
142 | + onChange={(v) => { console.log(v); setParams({ ...innerParams, seriesIds: v.join(',') }, true); }} | |
143 | + > | |
144 | + {seriesList.map((item) => <Select.Option key={item.id} value={item.id}>{item.name}</Select.Option>)} | |
145 | + </Select>, | |
128 | 146 | <Search |
129 | 147 | allowClear |
130 | - value={keyWords} | |
148 | + value={innerParams.keywords} | |
149 | + style={{ margin: 5 }} | |
131 | 150 | placeholder="搜索作业名称/代码" |
132 | - onChange={(e) => setKeyWords(e.target.value)} | |
151 | + onChange={(e) => onFilter({ keywords: e.target.value })} | |
152 | + />, | |
153 | + <Search | |
154 | + allowClear | |
155 | + value={innerParams.specCode} | |
156 | + style={{ margin: 5 }} | |
157 | + placeholder="搜索整车代码" | |
158 | + onChange={(e) => onFilter({ specCode: e.target.value })} | |
133 | 159 | /> |
134 | 160 | ]} |
135 | 161 | /> | ... | ... |
src/pages/coupon/CouponConfig/components/UsesceneItems/PreDecoration/interface.d.ts
... | ... | @@ -3,7 +3,8 @@ export interface QueryList { |
3 | 3 | workType?: number, //作业项类型 1:机修 2:电器 3:钣喷 4:装潢 5:基础保养 6:贴膜 |
4 | 4 | workTypes?: string, //多个作业项组合参数 |
5 | 5 | keywords?: string, //关键词 |
6 | - specGroupCode?: string, //车型分组代码 | |
6 | + seriesIds?:string, //车系id集合,查询多个车系 | |
7 | + specCode?: string, //整车代码 | |
7 | 8 | current?: number, |
8 | 9 | pageSize?: number, |
9 | 10 | seriesId?: number, |
... | ... | @@ -48,51 +49,51 @@ export interface PartListVO { |
48 | 49 | |
49 | 50 | /**查询保养套餐卡列表通用接口 */ |
50 | 51 | export interface MpList { |
51 | - id: number, //null | |
52 | - maintainId: number, //套餐卡配置ID | |
53 | - name: string, //套餐卡名称 | |
54 | - remark: string, // 备注 | |
55 | - times: number, // 套餐次数 | |
56 | - validity: number, // 有效期(年) | |
57 | - mainItemCode: string, //机油项编码 | |
58 | - mainItemName: string, // 机油项名称 | |
59 | - groupId: number, //集团id | |
60 | - brandName: string, //品牌名称 | |
61 | - seriesName: string, //车系名称 | |
62 | - status: number, //状态 1待发布 2已发布 3已下架 | |
52 | + id: number, //null | |
53 | + maintainId: number, //套餐卡配置ID | |
54 | + name: string, //套餐卡名称 | |
55 | + remark: string, // 备注 | |
56 | + times: number, // 套餐次数 | |
57 | + validity: number, // 有效期(年) | |
58 | + mainItemCode: string, //机油项编码 | |
59 | + mainItemName: string, // 机油项名称 | |
60 | + groupId: number, //集团id | |
61 | + brandName: string, //品牌名称 | |
62 | + seriesName: string, //车系名称 | |
63 | + status: number, //状态 1待发布 2已发布 3已下架 | |
63 | 64 | } |
64 | 65 | |
65 | 66 | /**保养套餐卡查询条件 */ |
66 | 67 | export interface Params { |
67 | - mpName?: string, // 套餐名称 | |
68 | - startDate?: number, // 创建日期开始 | |
69 | - endDate?: number, // 创建日期结束 | |
68 | + mpName?: string, // 套餐名称 | |
69 | + startDate?: number, // 创建日期开始 | |
70 | + endDate?: number, // 创建日期结束 | |
70 | 71 | brandId?: string, //品牌ID |
71 | - status?: number, // 状态 1:待发布 4:已发 | |
72 | + status?: number, // 状态 1:待发布 4:已发 | |
72 | 73 | current?: number, |
73 | 74 | pageSize?: number, |
74 | 75 | } |
75 | 76 | |
76 | 77 | /**查询集团VIP卡列表 */ |
77 | 78 | export interface VipList { |
78 | - id: number, //null | |
79 | - warrantyId: number, // 质保卡id | |
80 | - name: string, // 质保卡名称 | |
81 | - price: number, // 价格 | |
82 | - remark: string, //备注 | |
83 | - groupId: number, //集团id | |
84 | - brandId: number, //品牌id | |
85 | - brandName: string, //品牌名称 | |
86 | - seriesId: number, //车系id | |
87 | - seriesName: string, // 车系名称 | |
88 | - status: number, //状态 1 待上架 2 已上架 2 已下架 | |
79 | + id: number, //null | |
80 | + warrantyId: number, // 质保卡id | |
81 | + name: string, // 质保卡名称 | |
82 | + price: number, // 价格 | |
83 | + remark: string, //备注 | |
84 | + groupId: number, //集团id | |
85 | + brandId: number, //品牌id | |
86 | + brandName: string, //品牌名称 | |
87 | + seriesId: number, //车系id | |
88 | + seriesName: string, // 车系名称 | |
89 | + status: number, //状态 1 待上架 2 已上架 2 已下架 | |
89 | 90 | } |
90 | 91 | |
91 | 92 | /**vip卡查询条件 */ |
92 | 93 | export interface VipParams { |
93 | - brandId?: number, // 品牌ID | |
94 | - status?: number, // 状态 1:待发布 4:已发 | |
94 | + brandId?: number, // 品牌ID | |
95 | + status?: number, // 状态 1:待发布 4:已发 | |
95 | 96 | current?: number, |
96 | 97 | pageSize?: number, |
97 | - name?: number, //质保卡名称 | |
98 | + name?: number, //质保卡名称 | |
98 | 99 | } | ... | ... |