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/spu/form/OtherForm.vue | 91 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 91 insertions(+), 0 deletions(-)
diff --git a/src/views/mall/product/spu/form/OtherForm.vue b/src/views/mall/product/spu/form/OtherForm.vue
new file mode 100644
index 0000000..e7e6358
--- /dev/null
+++ b/src/views/mall/product/spu/form/OtherForm.vue
@@ -0,0 +1,91 @@
+<!-- 鍟嗗搧鍙戝竷 - 鍏跺畠璁剧疆 -->
+<template>
+ <el-form ref="formRef" :model="formData" :rules="rules" label-width="120px" :disabled="isDetail">
+ <el-form-item label="鍟嗗搧鎺掑簭" prop="sort">
+ <el-input-number
+ v-model="formData.sort"
+ :min="0"
+ placeholder="璇疯緭鍏ュ晢鍝佹帓搴�"
+ class="w-80!"
+ />
+ </el-form-item>
+ <el-form-item label="璧犻�佺Н鍒�" prop="giveIntegral">
+ <el-input-number
+ v-model="formData.giveIntegral"
+ :min="0"
+ placeholder="璇疯緭鍏ヨ禒閫佺Н鍒�"
+ class="w-80!"
+ />
+ </el-form-item>
+ <el-form-item label="铏氭嫙閿�閲�" prop="virtualSalesCount">
+ <el-input-number
+ v-model="formData.virtualSalesCount"
+ :min="0"
+ placeholder="璇疯緭鍏ヨ櫄鎷熼攢閲�"
+ class="w-80!"
+ />
+ </el-form-item>
+ </el-form>
+</template>
+<script lang="ts" setup>
+import type { Spu } from '@/api/mall/product/spu'
+import { PropType } from 'vue'
+import { propTypes } from '@/utils/propTypes'
+import { copyValueToTarget } from '@/utils'
+
+defineOptions({ name: 'ProductOtherForm' })
+
+const message = useMessage() // 娑堟伅寮圭獥
+
+const props = defineProps({
+ propFormData: {
+ type: Object as PropType<Spu>,
+ default: () => {}
+ },
+ isDetail: propTypes.bool.def(false) // 鏄惁浣滀负璇︽儏缁勪欢
+})
+
+const formRef = ref() // 琛ㄥ崟Ref
+// 琛ㄥ崟鏁版嵁
+const formData = ref<Spu>({
+ sort: 0, // 鍟嗗搧鎺掑簭
+ giveIntegral: 0, // 璧犻�佺Н鍒�
+ virtualSalesCount: 0 // 铏氭嫙閿�閲�
+})
+// 琛ㄥ崟瑙勫垯
+const rules = reactive({
+ sort: [required],
+ giveIntegral: [required],
+ virtualSalesCount: [required]
+})
+
+/** 灏嗕紶杩涙潵鐨勫�艰祴鍊肩粰 formData */
+watch(
+ () => props.propFormData,
+ (data) => {
+ if (!data) {
+ return
+ }
+ copyValueToTarget(formData.value, data)
+ },
+ {
+ immediate: true
+ }
+)
+
+/** 琛ㄥ崟鏍¢獙 */
+const emit = defineEmits(['update:activeName'])
+const validate = async () => {
+ if (!formRef) return
+ try {
+ await unref(formRef)?.validate()
+ // 鏍¢獙閫氳繃鏇存柊鏁版嵁
+ Object.assign(props.propFormData, formData.value)
+ } catch (e) {
+ message.error('銆愬叾瀹冭缃�戜笉瀹屽杽锛岃濉啓鐩稿叧淇℃伅')
+ emit('update:activeName', 'other')
+ throw e // 鐩殑鎴柇涔嬪悗鐨勬牎楠�
+ }
+}
+defineExpose({ validate })
+</script>
--
Gitblit v1.8.0