diff --git a/src/views/pms/goods/components/GoodsStock.vue b/src/views/pms/goods/components/GoodsStock.vue
index 313d268d..2071e36b 100644
--- a/src/views/pms/goods/components/GoodsStock.vue
+++ b/src/views/pms/goods/components/GoodsStock.vue
@@ -142,7 +142,7 @@
:prop="'skuList[' + scope.$index + '].skuSn'"
:rules="rules.sku.skuSn"
>
-
+
@@ -253,15 +253,16 @@ const { specForm, skuForm, specTitles, rules, colors, tagInputs, loading } =
watch(
categoryId,
- (newVal, oldVal) => {
+ (value) => {
+
// 商品编辑不加载分类下的规格
const spuId = props.modelValue.id;
if (spuId) {
return false;
}
- if (newVal) {
+ if (value) {
// type=1 商品分类下的规格
- listAttributes({ categoryId: newVal, type: 1 }).then((response) => {
+ listAttributes({ categoryId: value, type: 1 }).then((response) => {
const specList = response.data;
if (specList && specList.length > 0) {
specList.forEach((item) => {
@@ -281,6 +282,12 @@ watch(
}
);
+
+
+watch(state.specForm.specList,(value)=>{
+ generateSkuList()
+})
+
function loadData() {
props.modelValue.specList.forEach((specItem) => {
const specIndex = state.specForm.specList.findIndex(
@@ -372,16 +379,18 @@ function handleSpecReorder() {
* ]
*/
function generateSkuList() {
- const specList = JSON.parse(
- JSON.stringify(
- state.specForm.specList.filter((item) => item.values.length > 0)
- )
- ); // 深拷贝,取有属性的规格项,否则笛卡尔积运算得到的SKU列表值为空
// 如果规格为空,生成SKU列表为空
- if (specList.length === 0) {
- state.skuForm.skuList = [];
+ if(state.specForm.specList.length==0){
+ state.skuForm.skuList = [];
return;
}
+
+ const specList = JSON.parse(
+ JSON.stringify(
+ state.specForm.specList.filter((item) => item.values&&item.values.length > 0)
+ )
+ ); // 深拷贝,取有属性的规格项,否则笛卡尔积运算得到的SKU列表值为空
+
const skuList = specList.reduce(
(acc, curr) => {
let result = [];
@@ -447,7 +456,7 @@ function handleSpecAdd() {
ElMessage.warning("最多支持3组规格");
return;
}
- state.specForm.specList.push({});
+ state.specForm.specList.push({values:[]});
state.tagInputs.push({ value: undefined, visible: false });
handleSpecReorder();
}
@@ -695,7 +704,7 @@ onMounted(() => {
}
}
-.el-form-item--mini.el-form-item {
+.el-form--inline .el-form-item{
margin-top: 18px;
}