From d042bb3c5679375956c7616e6b1afe681fb82d9b Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期三, 24 十二月 2025 16:12:02 +0800
Subject: [PATCH] fix: 甲方小程序

---
 packages/components/src/Sku/Sku.vue |   58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 58 insertions(+), 0 deletions(-)

diff --git a/packages/components/src/Sku/Sku.vue b/packages/components/src/Sku/Sku.vue
new file mode 100644
index 0000000..51d1786
--- /dev/null
+++ b/packages/components/src/Sku/Sku.vue
@@ -0,0 +1,58 @@
+<template>
+  <nut-sku
+    v-model:visible="visible"
+    :sku="sku"
+    :goods="goods"
+    @selectSku="selectSku"
+    class="pro-sku"
+  >
+    <template #sku-header-price>
+      <div class="pro-sku-header">
+        <div class="pro-sku-header-title">{{ goods.name }}</div>
+        <nut-price :price="goods.price" />
+      </div>
+    </template>
+  </nut-sku>
+</template>
+
+<script setup lang="ts">
+import { toThousand } from '@12333/utils';
+import { Goods, SkuItem } from './sku';
+
+defineOptions({
+  name: 'Sku',
+});
+
+type Props = {
+  sku: SkuItem[];
+};
+
+const props = withDefaults(defineProps<Props>(), {});
+
+const visible = defineModel<boolean>('visible');
+const goods = defineModel<Goods>('goods');
+
+const selectSku = (ss) => {
+  const { sku, skuIndex, parentSku, parentIndex } = ss;
+  if (sku.disable) return false;
+  props.sku[parentIndex].list.forEach((s) => {
+    s.active = s.id == sku.id;
+  });
+  goods.value = {
+    ...goods.value,
+    skuId: sku.id,
+    price: toThousand(sku.price),
+  };
+};
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.pro-sku {
+  .pro-sku-header {
+    flex: 1;
+    min-height: 0;
+  }
+}
+</style>

--
Gitblit v1.10.0