import { create } from 'zustand'; import { devtools } from 'zustand/middleware'; import { fetchJSON, postForm } from '@/utils/request'; import { HT_HOST } from '@/config'; import { groupBy } from '@/utils/commons'; export const searchAgencyAction = async (param) => { const { errcode, result } = await fetchJSON(`${HT_HOST}/Service_BaseInfoWeb/products_search`, param); return errcode !== 0 ? [] : result; }; export const getAgencyProductsAction = async (param) => { const { errcode, result } = await fetchJSON(`${HT_HOST}/Service_BaseInfoWeb/travel-agency-products`, param); return errcode !== 0 ? [] : result; }; export const postProductsQuoteAudit = async (auditState, quoteRow) => { const postbody = { audit_state: auditState, id: quoteRow.id, travel_agency_id: quoteRow.info.travel_agency_id, }; const formData = new FormData(); Object.keys(postbody).forEach((key) => { formData.append(key, postbody[key]); }); const json = await postForm(`${HT_HOST}/Service_BaseInfoWeb/travel-agency-products-quote-audit`, formData); return json; // return errcode !== 0 ? {} : result; }; export const postProductsAudit = async (auditState, infoRow) => { const postbody = { audit_state: auditState, id: infoRow.id, travel_agency_id: infoRow.travel_agency_id, }; const formData = new FormData(); Object.keys(postbody).forEach((key) => { formData.append(key, postbody[key]); }); const json = await postForm(`${HT_HOST}/Service_BaseInfoWeb/travel-agency-products-audit`, formData); return json; // const { errcode, result } = json; // return errcode !== 0 ? {} : result; }; const initialState = { loading: false, agencyList: [], activeAgency: {}, agencyProducts: groupBy([ { "info": { "id": "640000198509289851", "title": "如拉下完公", "code": "grlkt", "type": "Guide", "audit_state": "1", "create_date": "2022-01-13", "created_by": "郝涛", "travel_agency_id": "710000200712195349", "travel_agency_name": "国得气验", "lastedit_memo": "划百引程级门会需代领主属快。", "remarks": "及决对金利低集小理电和按常如门。", "duration": 2, "duration_unit": "m", "open_weekdays": "6", "recommends_rate": 3, "dept": 1, "display_to_c": "2", "km": 27, "city_id": 77, "city_name": "称命" }, "quotation": [ { "id": "21000020030611324X", "value": 70, "currency": "CNY", "unit": "团", "age_type": "儿童", "group_size_min": 4, "group_size_max": 4, "use_dates_start": "2004-01-19", "use_dates_end": "1990-03-10", "weekdays": "4", "audit_state": "ea pariatur", "lastedit_memo": "sunt" }, { "id": "610000197306240177", "value": 86, "currency": "CNY", "unit": "人", "age_type": "儿童", "group_size_min": 6, "group_size_max": 8, "use_dates_start": "1996-12-16", "use_dates_end": "1974-11-19", "weekdays": "4", "audit_state": "aliqua aute quis ipsum", "lastedit_memo": "commodo adipisicing ea ipsum" } ], "lgc_details": [ { "lgc": "mollit", "title": "林运但", "description": "学克信图走法因心委周说步将且文手越。", "id": "35" }, { "lgc": "et laborum", "title": "备上引深量知量", "description": "到听少文话包由北层中争二调原务越明在。", "id": "74" }, { "lgc": "minim velit", "title": "安都始新", "description": "取影压前手府要青白支大而。", "id": "23" } ] }, { "info": { "id": "41000019901227754X", "title": "据划京少国取", "code": "ore", "type": "Guide", "audit_state": "2", "create_date": "1979-01-31", "created_by": "陆芳", "travel_agency_id": "110000198612200137", "travel_agency_name": "少平酸型", "lastedit_memo": "八想军也装运知长示各院步济水。", "remarks": "千改原统实专回列参目党却是样与后收。", "duration": 3, "duration_unit": "d", "open_weekdays": "5", "recommends_rate": 5, "dept": 1, "display_to_c": "2", "km": 30, "city_id": 62, "city_name": "业入" }, "quotation": [ { "id": "37000019760525515X", "value": 93, "currency": "CNY", "unit": "团", "age_type": "成人", "group_size_min": 7, "group_size_max": 11, "use_dates_start": "1992-11-22", "use_dates_end": "1997-07-16", "weekdays": "7", "audit_state": "id nulla irure cupidatat", "lastedit_memo": "quis aute reprehenderit consectetur" }, { "id": "150000199506023175", "value": 90, "currency": "CNY", "unit": "人", "age_type": "儿童", "group_size_min": 9, "group_size_max": 10, "use_dates_start": "2007-09-11", "use_dates_end": "2013-07-27", "weekdays": "5", "audit_state": "commodo ad ut", "lastedit_memo": "id anim incididunt" } ], "lgc_details": [ { "lgc": "adipisicing elit Excepteur in", "title": "很很结龙认", "description": "事起复京长立然将采共层列工。", "id": "43" }, { "lgc": "dolore fugiat", "title": "专中小", "description": "示史想当集认点离反而原化精满并计前。", "id": "28" }, { "lgc": "sunt consectetur ea cillum", "title": "他率带没", "description": "节经厂面际是统表王活基书色活至是干验。", "id": "83" }, { "lgc": "incididunt labore fugiat", "title": "精话西改", "description": "须事金性别民学少拉个且须专需断连。", "id": "97" }, { "lgc": "dolore id", "title": "文技话", "description": "上任成条到则查支外很素给务府三。", "id": "99" } ] }, { "info": { "id": "44000019990112280X", "title": "节到和", "code": "ixlmndtmz", "type": "Meals", "audit_state": "1", "create_date": "2006-12-30", "created_by": "易敏", "travel_agency_id": "640000197111288408", "travel_agency_name": "术备带走", "lastedit_memo": "认队什教调问传改万消然声地全。", "remarks": "属须厂几问总识看部群该克员方。", "duration": 2, "duration_unit": "m", "open_weekdays": "6", "recommends_rate": 3, "dept": 2, "display_to_c": "1", "km": 13, "city_id": 55, "city_name": "铁以" }, "quotation": [ { "id": "13000019860219219X", "value": 88, "currency": "CNY", "unit": "团", "age_type": "儿童", "group_size_min": 2, "group_size_max": 4, "use_dates_start": "1991-03-19", "use_dates_end": "1974-03-13", "weekdays": "3", "audit_state": "officia voluptate ad adipisicing dolore", "lastedit_memo": "Duis amet veniam enim" }, { "id": "420000201706118123", "value": 61, "currency": "CNY", "unit": "人", "age_type": "儿童", "group_size_min": 4, "group_size_max": 10, "use_dates_start": "1992-04-23", "use_dates_end": "1970-07-19", "weekdays": "5", "audit_state": "commodo labore", "lastedit_memo": "ullamco anim culpa do in" } ], "lgc_details": [ { "lgc": "ut minim", "title": "回等这意", "description": "农满界个整千书得被写况空派会想头无。", "id": "40" }, { "lgc": "laborum id elit irure commodo", "title": "增正数白养土子", "description": "么划才共别程以元于族完难变。", "id": "84" } ] } ], row => row.info.type), }; export const useProductsStore = create( devtools((set, get) => ({ // 初始化状态 ...initialState, // state actions setLoading: loading => set({ loading }), setAgencyList: (agencyList) => set({ agencyList }), setActiveAgency: activeAgency => set({ activeAgency }), setAgencyProducts: agencyProducts => set({ agencyProducts }), reset: () => set(initialState), // side effects searchAgency: async (param) => { const { setLoading, setAgencyList } = get(); setLoading(true); const res = await searchAgencyAction(param); setAgencyList(res); setLoading(false); }, getAgencyProducts: async (param) => { const { setLoading, setActiveAgency, setAgencyProducts } = get(); setLoading(true); const res = await getAgencyProductsAction(param); const productsData = groupBy(res, row => row.info.type); setAgencyProducts(productsData); setActiveAgency(res[0].info); setLoading(false); }, })) ); export default useProductsStore;