You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

41 lines
1.3 KiB

import { ref } from 'vue'
import { useAsyncState, watchOnce } from '@vueuse/core'
import { deleteModelService, getAllModelServices } from '@/api/product/model'
import { useMessage } from '@/hooks/web/useMessage'
import { useModal } from '@/components/Modal'
import type { ModelService } from '@/api/product/types'
export function useModelService(productId: string, defaultModelId?: string) {
const selectedModelId = ref<string>()
const { state, execute } = useAsyncState(() => getAllModelServices(productId), [], {
resetOnExecute: false,
})
// 默认选择的 ModelId, 如果没有 defaultModelId 则是第一个元素的 Id
watchOnce(state, () => {
if (state.value.length > 0)
selectedModelId.value = defaultModelId || state.value[0].id
})
const [registerModelServiceModal, { openModal }] = useModal<ModelService>()
async function handleDeleteModelService(id: string) {
try {
await deleteModelService(id)
useMessage().createMessage.success('删除成功')
execute()
}
catch {}
}
return {
selectedModelId,
setSelectedModelId: (id: string) => selectedModelId.value = id,
reloadModelService: execute,
modelServiceList: state,
handleDeleteModelService,
registerModelServiceModal,
openModelServiceModal: openModal,
}
}