import { create } from 'zustand' import { fetchJSON, postForm } from '@/utils/request' import { isEmpty } from '@/utils/commons' 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 postAccountPassword = async (formData) => { const { errcode, result } = await postForm( `${HT_HOST}/service-CooperateSOA/reset_account_password`, 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 postRoleForm = async (formData) => { const { errcode, result } = await postForm( `${HT_HOST}/service-CooperateSOA/new_or_update_role`, 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 } export const fetchPermissionList = async () => { const { errcode, result } = await fetchJSON( `${HT_HOST}/service-CooperateSOA/get_all_permission_list`) return errcode !== 0 ? {} : result } export const fetchPermissionListByRoleId = async (params) => { const { errcode, result } = await fetchJSON( `${HT_HOST}/service-CooperateSOA/get_role_permission_list`, params) return errcode !== 0 ? {} : result } export const fetchTravelAgencyByName = async (name) => { const { errcode, result } = await fetchJSON( `${HT_HOST}/Service_BaseInfoWeb/VendorList`, {q: name}) return errcode !== 0 ? {} : result } const useAccountStore = create((set, get) => ({ accountList: [], toggleAccountStatus: async (userId, status) => { const statusValue = status ? 'enable' : 'disable' const formData = new FormData() formData.append('lmi_sn', userId) formData.append('account_status', statusValue) return postAccountStatus(formData) }, resetAccountPassword: async (userId, password) => { const formData = new FormData() formData.append('lmi_sn', userId) formData.append('newPassword', password) return postAccountPassword(formData) }, newEmptyRole: () => { return { role_id: null, role_name: '', role_ids: '' } }, newEmptyAccount: () => { return { accountId: null, userId: null, lmi2_sn: null, username: '', realname: '', email: '', travelAgencyId: null, roleId: '' } }, saveOrUpdateRole: async (formValues) => { const formData = new FormData() formData.append('role_id', formValues.role_id) formData.append('role_name', formValues.role_name) formData.append('res_ids', formValues.res_array.join(',')) return postRoleForm(formData) }, saveOrUpdateAccount: async (formValues) => { const { userId } = usingStorage() const formData = new FormData() formData.append('wu_id', formValues.accountId) formData.append('lmi_sn', formValues.userId) formData.append('lmi2_sn', formValues.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) console.info(resultArray) const mapAccoutList = resultArray.map((r) => { return { accountId: r.wu_id, userId: r.lmi_sn, lmi2_sn: r.lmi2_sn, username: r.user_name, realname: r.real_name, email: r.email, lastLogin: r.wu_lastlogindate, travelAgencyName: r.travel_agency_name, travelAgencyId: r.travel_agency_id, disabled: r.wu_limitsign, // 数据库支持逗号分隔多角色(5,6,7),目前界面只需单个。 roleId: isEmpty(r.roles) ? 0 : parseInt(r.roles), role: r.roles_name, } }) set(() => ({ accountList: mapAccoutList })) }, })) export default useAccountStore