提交 acd948f3 authored 作者: 王鹏飞's avatar 王鹏飞

bug fixes

上级 5cdc2a7a
...@@ -93,3 +93,9 @@ export function addSkuValue(data) { ...@@ -93,3 +93,9 @@ export function addSkuValue(data) {
export function deleteSkuValue(data) { export function deleteSkuValue(data) {
return httpRequest.post('/api/shop/spec/value/delete', data) return httpRequest.post('/api/shop/spec/value/delete', data)
} }
/**
* 获取商品规格
*/
export function getSkuList(data) {
return httpRequest.post('/api/shop/commodity/spu/spec/value/search', data)
}
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
v-if="tr.stock" v-if="tr.stock"
></el-input> ></el-input>
</template> </template>
<template v-else>{{ tr.stock[td.key] }}</template>
</td> </td>
</tr> </tr>
</tbody> </tbody>
...@@ -76,7 +77,8 @@ export default { ...@@ -76,7 +77,8 @@ export default {
{ formType: 'input', key: 'price', value: '*价格(元)' }, { formType: 'input', key: 'price', value: '*价格(元)' },
{ formType: 'input', key: 'mark_price', value: '划线价(元)' }, { formType: 'input', key: 'mark_price', value: '划线价(元)' },
{ formType: 'input', key: 'stock', value: '*库存' }, { formType: 'input', key: 'stock', value: '*库存' },
{ formType: 'input', key: 'prime_price', value: '成本价' } { formType: 'input', key: 'prime_price', value: '成本价' },
{ key: 'sales_volume', value: '销量' }
], ],
showBatchInput: false, showBatchInput: false,
batchKey: '', // 当前批量修改的字段 batchKey: '', // 当前批量修改的字段
......
...@@ -27,7 +27,7 @@ export default { ...@@ -27,7 +27,7 @@ export default {
data() { data() {
return { return {
menuList: [ menuList: [
{ name: '概况', icon: 'el-icon-house' }, { name: '概况', path: '/', icon: 'el-icon-house' },
{ {
name: '商品', name: '商品',
path: '/goods', path: '/goods',
......
...@@ -145,7 +145,7 @@ import SkuView from '@/components/goods/skuView' ...@@ -145,7 +145,7 @@ import SkuView from '@/components/goods/skuView'
import Message from '@/components/goods/message' import Message from '@/components/goods/message'
import Editor from '@/components/tinymce' import Editor from '@/components/tinymce'
// 接口 // 接口
import { addGoods, updateGoods, getGoodsList } from '@/api/goods' import { addGoods, updateGoods, getGoodsList, getSkuList } from '@/api/goods'
export default { export default {
components: { AppCard, AppUpload, AppUploadVideo, Sku, SkuView, Message, Editor }, components: { AppCard, AppUpload, AppUploadVideo, Sku, SkuView, Message, Editor },
props: { isEdit: { type: Boolean, default: false } }, props: { isEdit: { type: Boolean, default: false } },
...@@ -243,32 +243,7 @@ export default { ...@@ -243,32 +243,7 @@ export default {
console.log('商品图片解析失败', error) console.log('商品图片解析失败', error)
} }
// 规格明细 // 规格明细
try { this.getSkuList()
const goodStockList = data.spec ? JSON.parse(data.spec) : []
this.ruleForm.goodStockList = goodStockList
// 根据规格明细生成商品规格数据
this.ruleForm.skuKeyValueList = goodStockList.reduce((result, item, index) => {
const ids = item.spec_id.split(',')
const names = item.spec_name.split(',')
const valueIds = item.spec_value_id.split(',')
const valueNames = item.spec_value.split(',')
if (index === 0) {
result = ids.map((id, index) => {
return { spec_id: id, spec_name: names[index], spec_values: [] }
})
}
valueIds.map((valueId, index) => {
const skuValues = result[index].spec_values
const found = skuValues.find(item => item.spec_value_id === valueId)
if (!found) {
skuValues.push({ spec_value_id: valueId, spec_value: valueNames[index] })
}
})
return result
}, [])
} catch (error) {
console.log('商品规格解析失败', error)
}
// 留言 // 留言
try { try {
this.ruleForm.messageList = data.app_button_text ? JSON.parse(data.app_button_text) : [] this.ruleForm.messageList = data.app_button_text ? JSON.parse(data.app_button_text) : []
...@@ -280,6 +255,44 @@ export default { ...@@ -280,6 +255,44 @@ export default {
this.loading = false this.loading = false
}) })
}, },
getSkuList() {
getSkuList({ shop_id: this.shopId, spu_id: this.pid }).then(response => {
const goodStockList = response.data.map(item => {
return {
mark_price: item.mark_price,
price: item.price,
prime_price: item.prime_price,
sales_volume: item.sales_volume,
spec_id: item.spec_ids,
spec_name: item.spec_names,
spec_value_id: item.spec_value_ids,
spec_value: item.spec_values,
stock: item.stock
}
})
this.ruleForm.goodStockList = goodStockList
// 根据规格明细生成商品规格数据
this.ruleForm.skuKeyValueList = goodStockList.reduce((result, item, index) => {
const ids = item.spec_id.split(',')
const names = item.spec_name.split(',')
const valueIds = item.spec_value_id.split(',')
const valueNames = item.spec_value.split(',')
if (index === 0) {
result = ids.map((id, index) => {
return { spec_id: id, spec_name: names[index], spec_values: [] }
})
}
valueIds.map((valueId, index) => {
const skuValues = result[index].spec_values
const found = skuValues.find(item => item.spec_value_id === valueId)
if (!found) {
skuValues.push({ spec_value_id: valueId, spec_value: valueNames[index] })
}
})
return result
}, [])
})
},
// 上一步 // 上一步
prev() { prev() {
this.submit(() => { this.submit(() => {
......
...@@ -38,7 +38,8 @@ ...@@ -38,7 +38,8 @@
</template> </template>
</table-list> </table-list>
<div class="footer" style="padding: 10px 0"> <div class="footer" style="padding: 10px 0">
<el-button size="medium" :disabled="!multipleSelection.length" @click="handleUpdateStatus">上架</el-button> <el-button size="medium" :disabled="!multipleSelection.length" @click="handleUpdateStatus('2')">上架</el-button>
<el-button size="medium" :disabled="!multipleSelection.length" @click="handleUpdateStatus('4')">下架</el-button>
<el-button size="medium" :disabled="!multipleSelection.length" @click="onRemove">删除</el-button> <el-button size="medium" :disabled="!multipleSelection.length" @click="onRemove">删除</el-button>
</div> </div>
...@@ -172,8 +173,8 @@ export default { ...@@ -172,8 +173,8 @@ export default {
this.multipleSelection = value this.multipleSelection = value
}, },
// 上架 // 上架
handleUpdateStatus() { handleUpdateStatus(status) {
const data = this.multipleSelection.map(item => ({ spu_id: item.spu_id, status: '2' })) const data = this.multipleSelection.map(item => ({ spu_id: item.spu_id, status }))
updateGoodsStatus({ shop_id: this.shopId, data }).then(res => { updateGoodsStatus({ shop_id: this.shopId, data }).then(res => {
this.$refs.list.refetch() this.$refs.list.refetch()
}) })
......
...@@ -81,8 +81,8 @@ export default { ...@@ -81,8 +81,8 @@ export default {
} }
}, },
watch: { watch: {
'ruleForm.spu_id'(skuId) { 'ruleForm.spu_id'(goodsId) {
this.getSkuList(skuId) this.getSkuList(goodsId)
} }
}, },
computed: { computed: {
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
<div class="order-fields"> <div class="order-fields">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<h3 class="order-fields-title">买家信息</h3> <h3 class="order-fields-title">付款信息</h3>
<div class="order-field-item"> <div class="order-field-item">
<div class="order-field-item__label">实付金额:</div> <div class="order-field-item__label">实付金额:</div>
<div class="order-field-item__content">{{ data.payment_money }}</div> <div class="order-field-item__content">{{ data.payment_money }}</div>
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
</div> </div>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<h3 class="order-fields-title">付款信息</h3> <h3 class="order-fields-title">买家信息</h3>
<div class="order-field-item"> <div class="order-field-item">
<div class="order-field-item__label">买家:</div> <div class="order-field-item__label">买家:</div>
<div class="order-field-item__content">{{ data.shipping_user || data.customer_id }}</div> <div class="order-field-item__content">{{ data.shipping_user || data.customer_id }}</div>
......
...@@ -25,6 +25,9 @@ ...@@ -25,6 +25,9 @@
<el-form-item label="店铺Logo" prop="shop_logo"> <el-form-item label="店铺Logo" prop="shop_logo">
<app-upload-image v-model="ruleForm.shop_logo" accept="image/*" :show-file-list="false"></app-upload-image> <app-upload-image v-model="ruleForm.shop_logo" accept="image/*" :show-file-list="false"></app-upload-image>
</el-form-item> </el-form-item>
<el-form-item label="主体信息" prop="business_entity">
<el-input v-model="ruleForm.business_entity" placeholder="请输入主体信息" maxlength="20"></el-input>
</el-form-item>
<el-form-item label="店铺有效期" prop="end_time"> <el-form-item label="店铺有效期" prop="end_time">
<el-date-picker <el-date-picker
v-model="ruleForm.end_time" v-model="ruleForm.end_time"
...@@ -69,6 +72,7 @@ export default { ...@@ -69,6 +72,7 @@ export default {
{ max: 20, message: '最多输入20个字符', trigger: 'blur' } { max: 20, message: '最多输入20个字符', trigger: 'blur' }
], ],
shop_logo: [{ required: true, message: '请上传', trigger: 'change' }], shop_logo: [{ required: true, message: '请上传', trigger: 'change' }],
business_entity: [{ required: true, message: '必填', trigger: 'blur' }],
end_time: [{ required: true, message: '请选择', trigger: 'change' }], end_time: [{ required: true, message: '请选择', trigger: 'change' }],
shop_desc: [ shop_desc: [
{ required: true, message: '必填', trigger: 'blur' }, { required: true, message: '必填', trigger: 'blur' },
......
...@@ -31,6 +31,9 @@ ...@@ -31,6 +31,9 @@
<el-form-item label="店铺Logo" prop="shop_logo"> <el-form-item label="店铺Logo" prop="shop_logo">
<app-upload-image v-model="ruleForm.shop_logo"></app-upload-image> <app-upload-image v-model="ruleForm.shop_logo"></app-upload-image>
</el-form-item> </el-form-item>
<el-form-item label="主体信息" prop="business_entity">
<el-input v-model="ruleForm.business_entity" placeholder="请输入主体信息" maxlength="20"></el-input>
</el-form-item>
<el-form-item label="店铺有效期" prop="end_time"> <el-form-item label="店铺有效期" prop="end_time">
<el-date-picker <el-date-picker
v-model="ruleForm.end_time" v-model="ruleForm.end_time"
...@@ -78,6 +81,7 @@ export default { ...@@ -78,6 +81,7 @@ export default {
{ max: 20, message: '最多输入20个字符', trigger: 'blur' } { max: 20, message: '最多输入20个字符', trigger: 'blur' }
], ],
shop_logo: [{ required: true, message: '请上传', trigger: 'change' }], shop_logo: [{ required: true, message: '请上传', trigger: 'change' }],
business_entity: [{ required: true, message: '必填', trigger: 'blur' }],
end_time: [{ required: true, message: '请选择', trigger: 'change' }], end_time: [{ required: true, message: '请选择', trigger: 'change' }],
shop_desc: [ shop_desc: [
{ required: true, message: '必填', trigger: 'blur' }, { required: true, message: '必填', trigger: 'blur' },
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论