From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目

---
 src/views/mall/product/category/components/ProductCategorySelect.vue |   51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 51 insertions(+), 0 deletions(-)

diff --git a/src/views/mall/product/category/components/ProductCategorySelect.vue b/src/views/mall/product/category/components/ProductCategorySelect.vue
new file mode 100644
index 0000000..c1810f5
--- /dev/null
+++ b/src/views/mall/product/category/components/ProductCategorySelect.vue
@@ -0,0 +1,51 @@
+<template>
+  <el-tree-select
+    v-model="selectCategoryId"
+    :data="categoryList"
+    :props="defaultProps"
+    :multiple="multiple"
+    :show-checkbox="multiple"
+    class="w-1/1"
+    node-key="id"
+    placeholder="璇烽�夋嫨鍟嗗搧鍒嗙被"
+  />
+</template>
+<script lang="ts" setup>
+import { defaultProps, handleTree } from '@/utils/tree'
+import * as ProductCategoryApi from '@/api/mall/product/category'
+import { oneOfType } from 'vue-types'
+import { propTypes } from '@/utils/propTypes'
+
+/** 鍟嗗搧鍒嗙被閫夋嫨缁勪欢 */
+defineOptions({ name: 'ProductCategorySelect' })
+
+const props = defineProps({
+  // 閫変腑鐨処D
+  modelValue: oneOfType<number | number[]>([Number, Array<Number>]),
+  // 鏄惁澶氶��
+  multiple: propTypes.bool.def(false),
+  // 涓婄骇鍝佺被鐨勭紪鍙�
+  parentId: propTypes.number.def(undefined)
+})
+
+/** 閫変腑鐨勫垎绫� ID */
+const selectCategoryId = computed({
+  get: () => {
+    return props.modelValue
+  },
+  set: (val: number | number[]) => {
+    emit('update:modelValue', val)
+  }
+})
+
+/** 鍒嗙被閫夋嫨 */
+const emit = defineEmits(['update:modelValue'])
+
+/** 鍒濆鍖� **/
+const categoryList = ref<ProductCategoryApi.CategoryVO[]>([]) // 鍒嗙被鏍�
+onMounted(async () => {
+  // 鑾峰緱鍒嗙被鏍�
+  const data = await ProductCategoryApi.getCategoryList({ parentId: props.parentId })
+  categoryList.value = handleTree(data, 'id', 'parentId')
+})
+</script>

--
Gitblit v1.8.0