mirror of
				https://gitee.com/hhyykk/ipms-sjy-ui.git
				synced 2025-11-04 20:28:45 +08:00 
			
		
		
		
	Merge remote-tracking branch 'yudao/dev' into dev-to-dev
This commit is contained in:
		@@ -1,4 +1,5 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <!-- 情况一:添加/修改 -->
 | 
			
		||||
  <el-form
 | 
			
		||||
    v-if="!isDetail"
 | 
			
		||||
    ref="productSpuBasicInfoRef"
 | 
			
		||||
@@ -23,7 +24,7 @@
 | 
			
		||||
            class="w-1/1"
 | 
			
		||||
            node-key="id"
 | 
			
		||||
            placeholder="请选择商品分类"
 | 
			
		||||
            @change="nodeClick"
 | 
			
		||||
            @change="categoryNodeClick"
 | 
			
		||||
          />
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
@@ -126,8 +127,8 @@
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
  </el-form>
 | 
			
		||||
  <ProductAttributesAddForm ref="attributesAddFormRef" :propertyList="propertyList" />
 | 
			
		||||
  <!-- 详情跟表单放在一块可以共用已有功能,再抽离成组件有点过度封装的感觉 -->
 | 
			
		||||
 | 
			
		||||
  <!-- 情况二:详情 -->
 | 
			
		||||
  <Descriptions v-if="isDetail" :data="formData" :schema="allSchemas.detailSchema">
 | 
			
		||||
    <template #categoryId="{ row }"> {{ categoryString(row.categoryId) }}</template>
 | 
			
		||||
    <template #brandId="{ row }">
 | 
			
		||||
@@ -163,6 +164,10 @@
 | 
			
		||||
      />
 | 
			
		||||
    </template>
 | 
			
		||||
  </Descriptions>
 | 
			
		||||
 | 
			
		||||
  <!-- 商品属性添加 Form 表单 -->
 | 
			
		||||
  <!-- TODO @puhui999: ProductPropertyAddForm 是不是更合适呀 -->
 | 
			
		||||
  <ProductAttributesAddForm ref="attributesAddFormRef" :propertyList="propertyList" />
 | 
			
		||||
</template>
 | 
			
		||||
<script lang="ts" name="ProductSpuBasicInfoForm" setup>
 | 
			
		||||
import { PropType } from 'vue'
 | 
			
		||||
@@ -257,7 +262,9 @@ watch(
 | 
			
		||||
      url: item
 | 
			
		||||
    }))
 | 
			
		||||
    // 只有是多规格才处理
 | 
			
		||||
    if (!formData.specType) return
 | 
			
		||||
    if (!formData.specType) {
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
    //  直接拿返回的 skus 属性逆向生成出 propertyList
 | 
			
		||||
    const properties = []
 | 
			
		||||
    formData.skus.forEach((sku) => {
 | 
			
		||||
@@ -287,8 +294,8 @@ const emit = defineEmits(['update:activeName'])
 | 
			
		||||
const validate = async () => {
 | 
			
		||||
  // 校验 sku
 | 
			
		||||
  if (!skuListRef.value.validateSku()) {
 | 
			
		||||
    message.warning('商品相关价格不能低于0.01元!!')
 | 
			
		||||
    throw new Error('商品相关价格不能低于0.01元!!')
 | 
			
		||||
    message.warning('商品相关价格不能低于 0.01 元!!')
 | 
			
		||||
    throw new Error('商品相关价格不能低于 0.01 元!!')
 | 
			
		||||
  }
 | 
			
		||||
  // 校验表单
 | 
			
		||||
  if (!productSpuBasicInfoRef) return
 | 
			
		||||
@@ -340,7 +347,7 @@ const categoryList = ref([]) // 分类树
 | 
			
		||||
/**
 | 
			
		||||
 * 选择分类时触发校验
 | 
			
		||||
 */
 | 
			
		||||
const nodeClick = () => {
 | 
			
		||||
const categoryNodeClick = () => {
 | 
			
		||||
  if (!checkSelectedNode(categoryList.value, formData.categoryId)) {
 | 
			
		||||
    formData.categoryId = null
 | 
			
		||||
    message.warning('必须选择二级及以下节点!!')
 | 
			
		||||
@@ -348,6 +355,7 @@ const nodeClick = () => {
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * 获取分类的节点的完整结构
 | 
			
		||||
 *
 | 
			
		||||
 * @param categoryId 分类id
 | 
			
		||||
 */
 | 
			
		||||
const categoryString = (categoryId) => {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <!-- 情况一:添加/修改 -->
 | 
			
		||||
  <el-form
 | 
			
		||||
    v-if="!isDetail"
 | 
			
		||||
    ref="descriptionFormRef"
 | 
			
		||||
@@ -11,6 +12,8 @@
 | 
			
		||||
      <Editor v-model:modelValue="formData.description" />
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
  </el-form>
 | 
			
		||||
 | 
			
		||||
  <!-- 情况二:详情 -->
 | 
			
		||||
  <Descriptions
 | 
			
		||||
    v-if="isDetail"
 | 
			
		||||
    :data="formData"
 | 
			
		||||
@@ -30,10 +33,9 @@ import { PropType } from 'vue'
 | 
			
		||||
import { propTypes } from '@/utils/propTypes'
 | 
			
		||||
import { copyValueToTarget } from '@/utils'
 | 
			
		||||
import { descriptionSchema } from './spu.data'
 | 
			
		||||
const message = useMessage() // 消息弹窗
 | 
			
		||||
 | 
			
		||||
const { allSchemas } = useCrudSchemas(descriptionSchema)
 | 
			
		||||
 | 
			
		||||
const message = useMessage() // 消息弹窗
 | 
			
		||||
const props = defineProps({
 | 
			
		||||
  propFormData: {
 | 
			
		||||
    type: Object as PropType<Spu>,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <!-- 情况一:添加/修改 -->
 | 
			
		||||
  <el-form
 | 
			
		||||
    v-if="!isDetail"
 | 
			
		||||
    ref="otherSettingsFormRef"
 | 
			
		||||
@@ -56,6 +57,8 @@
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
  </el-form>
 | 
			
		||||
 | 
			
		||||
  <!-- 情况二:详情 -->
 | 
			
		||||
  <Descriptions v-if="isDetail" :data="formData" :schema="allSchemas.detailSchema">
 | 
			
		||||
    <template #recommendHot="{ row }">
 | 
			
		||||
      {{ row.recommendHot ? '是' : '否' }}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <!-- 情况一:添加/修改 -->
 | 
			
		||||
  <el-table
 | 
			
		||||
    v-if="!isDetail"
 | 
			
		||||
    :data="isBatch ? skuList : formData!.skus"
 | 
			
		||||
@@ -109,6 +110,8 @@
 | 
			
		||||
      </template>
 | 
			
		||||
    </el-table-column>
 | 
			
		||||
  </el-table>
 | 
			
		||||
 | 
			
		||||
  <!-- 情况二:详情 -->
 | 
			
		||||
  <el-table
 | 
			
		||||
    v-if="isDetail"
 | 
			
		||||
    :data="formData!.skus"
 | 
			
		||||
@@ -132,7 +135,6 @@
 | 
			
		||||
        min-width="80"
 | 
			
		||||
      >
 | 
			
		||||
        <template #default="{ row }">
 | 
			
		||||
          <!-- TODO puhui999:展示成蓝色,有点区分度哈 fix-->
 | 
			
		||||
          <span style="font-weight: bold; color: #40aaff">
 | 
			
		||||
            {{ row.properties[index]?.valueName }}
 | 
			
		||||
          </span>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
import { CrudSchema } from '@/hooks/web/useCrudSchemas'
 | 
			
		||||
 | 
			
		||||
// TODO @puhui999:如果只要 detail,可以不用 CrudSchema,只要描述的 Schema
 | 
			
		||||
export const basicInfoSchema = reactive<CrudSchema[]>([
 | 
			
		||||
  {
 | 
			
		||||
    label: '商品名称',
 | 
			
		||||
 
 | 
			
		||||
@@ -171,7 +171,6 @@
 | 
			
		||||
      </el-table-column>
 | 
			
		||||
      <el-table-column align="center" fixed="right" label="操作" min-width="200">
 | 
			
		||||
        <template #default="{ row }">
 | 
			
		||||
          <!-- TODO @puhui999:【详情】,可以后面点做哈 fix-->
 | 
			
		||||
          <el-button
 | 
			
		||||
            v-hasPermi="['product:spu:update']"
 | 
			
		||||
            link
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user