import { create } from 'zustand' import { fetchJSON, postForm } from '@/utils/request' import { HT_HOST } from "@/config" import { usingStorage } from '@/hooks/usingStorage' export const postAccountStatus = async (formData) => { const { errcode, result } = await postForm( `${HT_HOST}/service-CooperateSOA/set_account_status`, formData) return errcode !== 0 ? {} : result } export const fetchAccountList = async (params) => { const { errcode, result } = await fetchJSON( `${HT_HOST}/service-CooperateSOA/search_account`, params) return errcode !== 0 ? {} : result } export const postAccountForm = async (formData) => { const { errcode, result } = await postForm( `${HT_HOST}/service-CooperateSOA/new_or_update_account`, formData) return errcode !== 0 ? {} : result } export const fetchRoleList = async () => { const { errcode, result } = await fetchJSON( `${HT_HOST}/service-CooperateSOA/get_role_list`) return errcode !== 0 ? {} : result } const useAccountStore = create((set, get) => ({ accountList: [], selectedAccount: null, selectAccount: (account) => { set(() => ({ selectedAccount: account })) }, disableAccount: async (accountId) => { const formData = new FormData() formData.append('wu_id', accountId) formData.append('account_status', 'enable') const result = await postAccountStatus(formData) console.info(result) }, saveOrUpdateAccount: async (formValues) => { const { selectedAccount } = get() const { userId } = usingStorage() const formData = new FormData() formData.append('wu_id', selectedAccount.userId) formData.append('lmi_sn', selectedAccount.lmi_sn) formData.append('lmi2_sn', selectedAccount.lmi2_sn) formData.append('user_name', formValues.username) formData.append('real_name', formValues.realname) formData.append('email', formValues.email) formData.append('travel_agency_id', formValues.travelAgencyId) formData.append('roles', formValues.roleId) formData.append('opi_sn', userId) return postAccountForm(formData) }, searchAccountByCriteria: async (formValues) => { const searchParams = { username: formValues.username, realname: formValues.realname, lgc: 2 } const resultArray = await fetchAccountList(searchParams) const mapAccoutList = resultArray.map((r) => { return { userId: r.wu_id, lmi_sn: r.lmi_sn, lmi2_sn: r.lmi2_sn, username: r.user_name, realname: r.real_name, email: r.email, lastLogin: r.wu_lastlogindate, travelAgency: r.travel_agency_name, travelAgencyId: r.travel_agency_id, roleId: r.roles, role: r.roles_name, } }) set(() => ({ accountList: mapAccoutList })) }, })) export default useAccountStore