|
|
|
import { create } from 'zustand'
|
|
|
|
import { devtools } from 'zustand/middleware'
|
|
|
|
import { fetchJSON, postForm } from '@/utils/request'
|
|
|
|
import { isEmpty, isNotEmpty } 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
|
|
|
|
}
|
|
|
|
|
|
|
|
export const genRandomPassword = () => {
|
|
|
|
let result = ''
|
|
|
|
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
|
|
|
|
const charactersLength = characters.length
|
|
|
|
|
|
|
|
for (let i = 0; i < 6; i++) {
|
|
|
|
result += characters.charAt(Math.floor(Math.random() * charactersLength))
|
|
|
|
}
|
|
|
|
|
|
|
|
result += '@' + (Math.floor(Math.random() * 900) + 100)
|
|
|
|
|
|
|
|
return result
|
|
|
|
}
|
|
|
|
|
|
|
|
const useAccountStore = create(devtools((set) => ({
|
|
|
|
|
|
|
|
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: () => ({
|
|
|
|
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) => {
|
|
|
|
let travel_agency_ids = null
|
|
|
|
if (isNotEmpty(formValues.agency)) {
|
|
|
|
travel_agency_ids = formValues.agency.map((ele) => ele.key).join(',')
|
|
|
|
}
|
|
|
|
const searchParams = {
|
|
|
|
username: formValues.username,
|
|
|
|
travel_agency_ids: travel_agency_ids,
|
|
|
|
lgc: 2
|
|
|
|
}
|
|
|
|
|
|
|
|
const resultArray = await fetchAccountList(searchParams)
|
|
|
|
|
|
|
|
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
|
|
|
|
}))
|
|
|
|
},
|
|
|
|
}), { name: 'accountStore' }))
|
|
|
|
|
|
|
|
export default useAccountStore
|