Merge branch 'dev-to-dev' of https://gitee.com/puhui999/yudao-ui-admin-vue3 into dev
Conflicts: src/utils/dict.tspull/165/MERGE
commit
7908160e68
|
@ -355,7 +355,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
|
|||
},
|
||||
children: [
|
||||
{
|
||||
path: 'productSpuAdd', // TODO @puhui999:最好拆成 add 和 edit 两个路由;添加商品;修改商品 fix
|
||||
path: 'spu/add',
|
||||
component: () => import('@/views/mall/product/spu/addForm.vue'),
|
||||
name: 'ProductSpuAdd',
|
||||
meta: {
|
||||
|
@ -368,9 +368,9 @@ const remainingRouter: AppRouteRecordRaw[] = [
|
|||
}
|
||||
},
|
||||
{
|
||||
path: 'productSpuEdit/:spuId(\\d+)',
|
||||
path: 'spu/edit/:spuId(\\d+)',
|
||||
component: () => import('@/views/mall/product/spu/addForm.vue'),
|
||||
name: 'productSpuEdit',
|
||||
name: 'ProductSpuEdit',
|
||||
meta: {
|
||||
noCache: true,
|
||||
hidden: true,
|
||||
|
@ -381,9 +381,9 @@ const remainingRouter: AppRouteRecordRaw[] = [
|
|||
}
|
||||
},
|
||||
{
|
||||
path: 'productSpuDetail/:spuId(\\d+)',
|
||||
path: 'spu/detail/:spuId(\\d+)',
|
||||
component: () => import('@/views/mall/product/spu/addForm.vue'),
|
||||
name: 'productSpuDetail',
|
||||
name: 'ProductSpuDetail',
|
||||
meta: {
|
||||
noCache: true,
|
||||
hidden: true,
|
||||
|
|
|
@ -104,7 +104,7 @@ const getDetail = async () => {
|
|||
formLoading.value = true
|
||||
try {
|
||||
const res = (await ProductSpuApi.getSpu(id)) as ProductSpuApi.Spu
|
||||
res.skus!.forEach((item) => {
|
||||
res.skus?.forEach((item) => {
|
||||
// 回显价格分转元
|
||||
item.price = formatToFraction(item.price)
|
||||
item.marketPrice = formatToFraction(item.marketPrice)
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<!-- TODO @puhui999:只能选根节点 fix: 已完善-->
|
||||
<el-form-item label="商品分类" prop="categoryId">
|
||||
<el-tree-select
|
||||
v-model="formData.categoryId"
|
||||
|
@ -166,8 +165,7 @@
|
|||
</Descriptions>
|
||||
|
||||
<!-- 商品属性添加 Form 表单 -->
|
||||
<!-- TODO @puhui999: ProductPropertyAddForm 是不是更合适呀 -->
|
||||
<ProductAttributesAddForm ref="attributesAddFormRef" :propertyList="propertyList" />
|
||||
<ProductPropertyAddForm ref="attributesAddFormRef" :propertyList="propertyList" />
|
||||
</template>
|
||||
<script lang="ts" name="ProductSpuBasicInfoForm" setup>
|
||||
import { PropType } from 'vue'
|
||||
|
@ -178,7 +176,7 @@ import { checkSelectedNode, defaultProps, handleTree, treeToString } from '@/uti
|
|||
import { createImageViewer } from '@/components/ImageViewer'
|
||||
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
|
||||
import { UploadImg, UploadImgs } from '@/components/UploadFile'
|
||||
import { ProductAttributes, ProductAttributesAddForm, SkuList } from './index'
|
||||
import { ProductAttributes, ProductPropertyAddForm, SkuList } from './index'
|
||||
import { basicInfoSchema } from './spu.data'
|
||||
import type { Spu } from '@/api/mall/product/spu'
|
||||
import * as ProductCategoryApi from '@/api/mall/product/category'
|
||||
|
@ -258,7 +256,7 @@ watch(
|
|||
return
|
||||
}
|
||||
copyValueToTarget(formData, data)
|
||||
formData.sliderPicUrls = data['sliderPicUrls'].map((item) => ({
|
||||
formData.sliderPicUrls = data['sliderPicUrls']?.map((item) => ({
|
||||
url: item
|
||||
}))
|
||||
// 只有是多规格才处理
|
||||
|
@ -267,16 +265,16 @@ watch(
|
|||
}
|
||||
// 直接拿返回的 skus 属性逆向生成出 propertyList
|
||||
const properties = []
|
||||
formData.skus.forEach((sku) => {
|
||||
sku.properties.forEach(({ propertyId, propertyName, valueId, valueName }) => {
|
||||
formData.skus?.forEach((sku) => {
|
||||
sku.properties?.forEach(({ propertyId, propertyName, valueId, valueName }) => {
|
||||
// 添加属性
|
||||
if (!properties.some((item) => item.id === propertyId)) {
|
||||
if (!properties?.some((item) => item.id === propertyId)) {
|
||||
properties.push({ id: propertyId, name: propertyName, values: [] })
|
||||
}
|
||||
// 添加属性值
|
||||
const index = properties.findIndex((item) => item.id === propertyId)
|
||||
if (!properties[index].values.some((value) => value.id === valueId)) {
|
||||
properties[index].values.push({ id: valueId, name: valueName })
|
||||
const index = properties?.findIndex((item) => item.id === propertyId)
|
||||
if (!properties[index].values?.some((value) => value.id === valueId)) {
|
||||
properties[index].values?.push({ id: valueId, name: valueName })
|
||||
}
|
||||
})
|
||||
})
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
</template>
|
||||
</Dialog>
|
||||
</template>
|
||||
<script lang="ts" name="ProductPropertyForm" setup>
|
||||
<script lang="ts" name="ProductPropertyAddForm" setup>
|
||||
import * as PropertyApi from '@/api/mall/product/property'
|
||||
|
||||
const { t } = useI18n() // 国际化
|
|
@ -23,7 +23,6 @@
|
|||
min-width="120"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<!-- TODO puhui999:展示成蓝色,有点区分度哈 fix-->
|
||||
<span style="font-weight: bold; color: #40aaff">
|
||||
{{ row.properties[index]?.valueName }}
|
||||
</span>
|
||||
|
|
|
@ -2,7 +2,7 @@ import BasicInfoForm from './BasicInfoForm.vue'
|
|||
import DescriptionForm from './DescriptionForm.vue'
|
||||
import OtherSettingsForm from './OtherSettingsForm.vue'
|
||||
import ProductAttributes from './ProductAttributes.vue'
|
||||
import ProductAttributesAddForm from './ProductAttributesAddForm.vue'
|
||||
import ProductPropertyAddForm from './ProductPropertyAddForm.vue'
|
||||
import SkuList from './SkuList.vue'
|
||||
|
||||
export {
|
||||
|
@ -10,6 +10,6 @@ export {
|
|||
DescriptionForm,
|
||||
OtherSettingsForm,
|
||||
ProductAttributes,
|
||||
ProductAttributesAddForm,
|
||||
ProductPropertyAddForm,
|
||||
SkuList
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import { CrudSchema } from '@/hooks/web/useCrudSchemas'
|
||||
|
||||
// TODO @puhui999:如果只要 detail,可以不用 CrudSchema,只要描述的 Schema
|
||||
// fix: useCrudSchemas 中没有单独处理的情况且只要 detail 的情况只要 spu 这里有使用 如果改动得添加/修改代码
|
||||
export const basicInfoSchema = reactive<CrudSchema[]>([
|
||||
{
|
||||
label: '商品名称',
|
||||
|
|
|
@ -396,18 +396,18 @@ const resetQuery = () => {
|
|||
const openForm = (id?: number) => {
|
||||
// 修改
|
||||
if (typeof id === 'number') {
|
||||
push('/product/productSpuEdit/' + id)
|
||||
push('/product/spu/edit/' + id)
|
||||
return
|
||||
}
|
||||
// 新增
|
||||
push('/product/productSpuAdd')
|
||||
push({ name: 'ProductSpuAdd' })
|
||||
}
|
||||
|
||||
/**
|
||||
* 查看商品详情
|
||||
*/
|
||||
const openDetail = (id?: number) => {
|
||||
push('/product/productSpuDetail/' + id)
|
||||
push('/product/spu/detail/' + id)
|
||||
}
|
||||
|
||||
/** 导出按钮操作 */
|
||||
|
|
Loading…
Reference in New Issue