完成添加商品和查看商品

This commit is contained in:
2026-03-13 16:49:33 +08:00
parent b180aeabd8
commit 91c27ecf61

View File

@@ -192,7 +192,7 @@ const formData = ref({
onMounted(async () => { onMounted(async () => {
await ensureSupabaseReady() await ensureSupabaseReady()
const mId = supa.getSession().user?.id as string | null const mId = supa.getSession().user?.getString('id') ?? null
if (!mId) { if (!mId) {
uni.showToast({ title: '商家未获取到信息,请重新登录', icon: 'none' }) uni.showToast({ title: '商家未获取到信息,请重新登录', icon: 'none' })
return return
@@ -376,7 +376,7 @@ async function doSaveProduct(targetStatus: number) {
// 必须获取正确的 merchant_id并且存在 // 必须获取正确的 merchant_id并且存在
if (!formData.value.merchant_id || formData.value.merchant_id.startsWith('merchant_123')) { if (!formData.value.merchant_id || formData.value.merchant_id.startsWith('merchant_123')) {
const mId = supa.getSession().user?.id as string | null const mId = supa.getSession().user?.getString('id') ?? null
if (!mId) { if (!mId) {
uni.showToast({ title: '未获取到商家信息,请重新登录', icon: 'none' }) uni.showToast({ title: '未获取到商家信息,请重新登录', icon: 'none' })
return return
@@ -399,10 +399,10 @@ async function doSaveProduct(targetStatus: number) {
formData.value.published_at = null formData.value.published_at = null
} }
const payload = { const payload : UTSJSONObject = {
merchant_id: formData.value.merchant_id, merchant_id: formData.value.merchant_id,
name: formData.value.name, name: formData.value.name,
category_id: formData.value.category_id || null, category_id: formData.value.category_id,
base_price: Number(formData.value.base_price), base_price: Number(formData.value.base_price),
main_image_url: formData.value.image_urls.length > 0 ? formData.value.image_urls[0] : '', // 首图同步 main_image_url: formData.value.image_urls.length > 0 ? formData.value.image_urls[0] : '', // 首图同步
image_urls: formData.value.image_urls, image_urls: formData.value.image_urls,
@@ -414,6 +414,11 @@ async function doSaveProduct(targetStatus: number) {
attributes: formData.value.attributes, attributes: formData.value.attributes,
published_at: formData.value.published_at published_at: formData.value.published_at
} }
// 新建商品时自动生成唯一的 product_code
if (!formData.value.id) {
const uid = Math.random().toString(36).substring(2, 10).toUpperCase()
payload['product_code'] = `P${Date.now()}${uid}`
}
let result; let result;
if (formData.value.id) { if (formData.value.id) {
@@ -422,8 +427,9 @@ async function doSaveProduct(targetStatus: number) {
.update(payload) .update(payload)
.eq('id', formData.value.id) .eq('id', formData.value.id)
.eq('merchant_id', formData.value.merchant_id) .eq('merchant_id', formData.value.merchant_id)
.execute()
} else { } else {
result = await supa.from('ml_products').insert([payload]) result = await supa.from('ml_products').insert([payload]).execute()
} }
uni.hideLoading() uni.hideLoading()