From 545fff234b8560c0db142767134783e99fe48705 Mon Sep 17 00:00:00 2001 From: pushuo <229102104@qq.com> Date: Wed, 20 Jul 2022 15:01:50 +0800 Subject: [PATCH] wip --- .../admin/views/layouts/master.blade.php | 2 +- .../views/pages/products/form/form.blade.php | 7 ++- themes/default/product.blade.php | 49 ++++++++++++++++--- 3 files changed, 49 insertions(+), 9 deletions(-) diff --git a/resources/beike/admin/views/layouts/master.blade.php b/resources/beike/admin/views/layouts/master.blade.php index 0a401ac0..c017ab3d 100644 --- a/resources/beike/admin/views/layouts/master.blade.php +++ b/resources/beike/admin/views/layouts/master.blade.php @@ -4,6 +4,7 @@ + @@ -17,7 +18,6 @@ - beike admin @stack('header') {{-- --}} diff --git a/resources/beike/admin/views/pages/products/form/form.blade.php b/resources/beike/admin/views/pages/products/form/form.blade.php index f2f6b499..bfc7ec6e 100644 --- a/resources/beike/admin/views/pages/products/form/form.blade.php +++ b/resources/beike/admin/views/pages/products/form/form.blade.php @@ -140,11 +140,14 @@ el: '#app', data: { form: { - variables: @json($product->variables ?? []), + // 字符串转json + variables: JSON.parse(@json($product->variables ?? [])), + {{-- variables: @json($product->variables ?? []), --}} skus: @json($product->skus ?? []), }, source: { - variables: @json($product->variables ?? []), + {{-- variables: @json($product->variables ?? []), --}} + variables: JSON.parse(@json($product->variables ?? [])), }, editing: { isVariable: @json(($product->variables ?? null) != null), diff --git a/themes/default/product.blade.php b/themes/default/product.blade.php index ae9c7cdd..5083bdba 100644 --- a/themes/default/product.blade.php +++ b/themes/default/product.blade.php @@ -120,9 +120,22 @@ data: { selectedVariantsIndex: [], // 选中的变量索引 + product: { + id: 0, + image: "", + model: "", + origin_price: 0, + origin_price_format: "", + position: 0, + price: 0, + price_format: "", + quantity: 0, + sku: "", + }, source: { skus: @json($product['skus']), - variables: @json($product['variables']), + // variables: @json($product['variables']), + variables: JSON.parse(@json($product['variables'] ?? [])), } }, @@ -142,22 +155,46 @@ // console.log(this.selectedVariantsIndex) this.checkedVariants() + this.getSku(); }, methods: { - checkedVariableValue(variable_idnex, value_index,value) { - this.source.variables[variable_idnex].values[value_index].selected = !value.selected + checkedVariableValue(variable_idnex, value_index, value) { + this.source.variables[variable_idnex].values.forEach((v, i) => { + v.selected = false + if (i == value_index) { + v.selected = true + } + }) + + // 获取选中的 variables 内 value的 下标 index 填充到 selectedVariantsIndex 中 + this.source.variables.forEach((variable, index) => { + variable.values.forEach((value, value_index) => { + if (value.selected) { + this.selectedVariantsIndex[index] = value_index + } + }) + }) + + this.getSku(); }, // 把对应 selectedVariantsIndex 下标选中 variables -> values 的 selected 字段为 true checkedVariants() { this.source.variables.forEach((variable, index) => { - variable.values.forEach(value => { - value.selected = false - }) + // variable.values.forEach(value => { + // value.selected = false + // }) variable.values[this.selectedVariantsIndex[index]].selected = true }) }, + + // 根据 selectedVariantsIndex 下标获取对应的 sku + getSku() { + const sku = this.source.skus.find(sku => sku.variants.toString() === this.selectedVariantsIndex.toString()) + console.log(sku); + this.product = sku + } } })