更新商品管理模块

This commit is contained in:
2024-09-28 15:07:09 +08:00
parent 3c7918211e
commit 587965020b
11 changed files with 642 additions and 532 deletions

View File

@@ -91,8 +91,8 @@
function haocaiClick(item, index) {
console.log(item);
if (item.consId != props.modelValue) {
emits('update:modelValue', item.consId)
if (item.id != props.modelValue) {
emits('update:modelValue', item.id)
emits('change', item)
}
popShow.value = false

View File

@@ -14,9 +14,9 @@
<view class="">
<template v-if="isBindGuige&&isSku">
<view class="list">
<view class="u-p-b-32 u-p-t-32 border-bottom" v-for="(item,index) in skuList" :key="index">
<view class="u-p-b-32 u-p-t-32 border-bottom" v-for="(sku,index) in skuList" :key="index">
<view>规格名称</view>
<view class="u-m-t-16">{{item.specSnap}}</view>
<view class="u-m-t-16">{{sku.specSnap}}</view>
<view class="color-666 u-m-t-24 u-flex">
<view class="xuhao">序号</view>
<view class="u-flex u-flex-1 u-p-l-32 gap-20">
@@ -26,29 +26,24 @@
</view>
</view>
<view class="u-m-t-32 color-666">
<view class="u-m-t-24" v-for="(haocai,haocaiIndex) in item.haoaiList"
<view class="u-m-t-24" v-for="(item,haocaiIndex) in sku.haoCaiList"
:key="haocaiIndex">
<view class=" u-flex">
<view class="xuhao">{{haocaiIndex+1}}</view>
<view class="u-flex u-flex-1 u-p-l-32 gap-20">
<view class="u-flex-1 ">
<view class="u-flex input">
<view>{{item.name}}</view>
<up-icon :size="10" name="arrow-down-fill"></up-icon>
</view>
<choose-haocai @change="conInfosChange($event,item)"
:listMap="$haocaiMap" :list="haoCaiList"
v-model="item.conInfoId"></choose-haocai>
</view>
<view class="u-flex-1 ">
<view class="u-flex input">
<view>{{item.unit}}</view>
<up-icon :size="10" name="arrow-down-fill"></up-icon>
</view>
<choose-danwei :listMap="$danweiMap" :list="danweiList"
v-model="item.conUnit"></choose-danwei>
</view>
<view class="u-flex-1 ">
<view class="u-flex input">
<up-input border="none"></up-input>
<up-icon color="#EB4F4F" @click="delGuigeHaocao(index,haocaiIndex)"
:size="16" name="minus-circle-fill"></up-icon>
</view>
<view class="u-flex input">
<up-input border="none" v-model="item.surplusStock"></up-input>
<up-icon @click="delGuigeHaocao(index,haocaiIndex)" color="#EB4F4F" :size="16"
name="minus-circle-fill"></up-icon>
</view>
</view>
</view>
@@ -173,16 +168,20 @@
deletetbProskuCon,
} from "@/http/yskApi/consumable.js";
import {
tbShopCurrencyGet,$hasPermission
tbShopCurrencyGet,
$hasPermission
} from '@/http/yskApi/shop.js'
import infoBox from '@/commons/utils/infoBox.js'
import chooseHaocai from './choose-haocai.vue';
import chooseDanwei from './choose-danwei.vue';
import {
$tbProskuConV2
} from '@/http/yskApi/goods.js'
const emits=defineEmits(['cancel'])
function cancel(){
import { cloneWith } from 'lodash';
const emits = defineEmits(['cancel', 'updateGoods'])
function cancel() {
emits('cancel')
}
const props = defineProps({
@@ -203,27 +202,29 @@
console.log(newval);
conInfos.value = newval
})
function conInfosChange(newval, item) {
console.log(newval);
item.stockNumber = newval.balance
item.conUnit = newval.conUnit
}
const skuList = ref(props.goods.skuList)
watch(() => props.goods.skuList, (newval) => {
console.log(newval);
skuList.value = newval
})
const $baseicHaocaiData = {
conInfoId: '',
conUnit: '',
surplusStock: ''
}
function addHaocai() {
conInfos.value.push({
conInfoId: '',
conUnit: '',
surplusStock: ''
...$baseicHaocaiData
})
}
const popup = reactive({
@@ -233,11 +234,21 @@
})
function addGuigeHaocai(index) {
console.log(index);
if (skuList.value[index].haoCaiList) {
skuList.value[index].haoCaiList.push({
...$baseicHaocaiData
})
} else {
skuList.value[index].haoCaiList = [{
...$baseicHaocaiData
}]
}
console.log(skuList.value[index]);
}
function delHaocai(index) {
const item = conInfos.value[index]
console.log(item);
uni.showModal({
title: '提示',
content: '是否删除该耗材',
@@ -258,7 +269,24 @@
}
function delGuigeHaocao(guigeIndex, haocaiIndex) {
skuList.value[guigeIndex].haoaiList.splice(haocaiIndex, 1)
const item = skuList.value[guigeIndex].haoCaiList[haocaiIndex]
console.log(item);
uni.showModal({
title: '提示',
content: '是否删除该耗材',
success(res) {
if (res.confirm) {
if (item&&item.id) {
deletetbProskuCon([item.id]).then(res1 => {
skuList.value[guigeIndex].haoCaiList.splice(haocaiIndex, 1)
})
} else {
skuList.value[guigeIndex].haoCaiList.splice(haocaiIndex, 1)
}
}
}
})
}
// 是否是多规格商品
@@ -270,30 +298,66 @@
isBindGuige.value = isSku.value
})
function save() {
async function save() {
console.log('save');
const isPas= conInfos.value.every(v=>{
return v.conInfoId&&v.conUnit&&v.surplusStock>0
})
console.log(isPas);
return
let ajaxData = ''
let isPas=false
if(!isBindGuige.value){
//绑定至商品
isPas = conInfos.value.every(v => {
return v.conInfoId && v.conUnit && v.surplusStock > 0
})
}else{
//绑定至规格
isPas = skuList.value.filter(v=>v.haoCaiList&&v.haoCaiList.length).every(sku => {
console.log(sku.haoCaiList);
return sku.haoCaiList.every(v=>{
return v.conInfoId && v.conUnit && v.surplusStock > 0
})
})
}
if (!isPas) {
return infoBox.showToast('请填写全部耗材选项值')
}
let ajaxData = {
productId: props.goods.id,
cons: []
}
if (!isBindGuige.value) {
//绑定至商品
ajaxData = conInfos.value.map(v => {
ajaxData.cons = conInfos.value.map(v => {
return {
id: v.id || '',
conInfoId: v.conInfoId,
productId: props.goods.id,
shopId: uni.getStorageSync('shopId'),
productSkuId: 0,
surplusStock: v.surplusStock
surplusStock: v.surplusStock * 1,
status: 1
}
})
} else {
for(let i in skuList.value){
const haocaiList=skuList.value[i].haoCaiList||[]
for(let k in haocaiList){
const v=haocaiList[k]
ajaxData.cons.push({
id: v.id || '',
conInfoId: v.conInfoId,
productId: props.goods.id,
shopId: uni.getStorageSync('shopId'),
productSkuId: skuList.value[i].id,
surplusStock: v.surplusStock * 1,
status: 1
})
}
}
}
console.log(ajaxData);
$tbProskuConV2(ajaxData)
await $tbProskuConV2(ajaxData)
emits('updateGoods')
infoBox.showToast('修改成功')
}
let haoCaiList = ref([])
@@ -303,12 +367,11 @@
function init() {
gettbConsInfo({
page: 0,
size: 200
"status": 1,
}).then(res => {
for (let i in res.content) {
const item = res.content[i]
$haocaiMap[item.consId] = item
$haocaiMap[item.id] = item
}
haoCaiList.value = res.content