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.
 
 
 
 
 
 

78 lines
2.0 KiB

import { unref } from 'vue'
import type { MaybeRef, Ref } from 'vue'
import { useTable } from '@/components/Table'
import { deleteModelAttribute, getModelAttributeList } from '@/api/product/model'
import { useModal } from '@/components/Modal'
import type { ModelAttribute } from '@/api/product/types'
import { useMessage } from '@/hooks/web/useMessage'
export function useModelAttribute(productId: MaybeRef<string>, modelId: Ref<string | undefined>) {
const [registerModelAttributeTable, { reload, setPagination }] = useTable({
async api(params) {
if (!unref(modelId))
return []
return getModelAttributeList({
...params,
productId: unref(productId),
modelId: unref(modelId),
})
},
columns: [
{
title: '功能类型',
dataIndex: 'itemType',
customRender: ({ value }) => ({ 1: '属性', 2: '命令' }[value]),
},
{
title: '功能名称',
dataIndex: 'name',
},
{
title: '标识符',
dataIndex: 'identifier',
},
{
title: '数据类型',
dataIndex: 'dataType',
},
],
bordered: true,
inset: true,
canResize: false,
actionColumn: {
width: 150,
title: '操作',
dataIndex: 'action',
fixed: 'right',
auth: ['product_model_attr_delete', 'product_model_attr_edit'],
},
})
const [registerModelAttributeModal, { openModal: openModelAttributeModal }] = useModal<ModelAttribute>()
async function handleDeleteModelAttribute(id: string) {
try {
await deleteModelAttribute(id)
useMessage().createMessage.success('删除成功')
reload()
}
catch {}
}
return {
registerModelAttributeTable,
registerModelAttributeModal,
openModelAttributeModal,
/**
* @param resetPageCurrent 是否重置分页
*/
reloadModalAttribute(resetPageCurrent = false) {
if (resetPageCurrent)
setPagination({ current: 1 })
reload()
},
handleDeleteModelAttribute,
}
}