提交商品选择

main
fanfan 11 months ago
parent cee74198e4
commit e68c8d31ce
  1. 134
      src/components/SelectGoods/SelectGoods.vue
  2. 2
      src/components/SelectGoods/index.js
  3. 3
      src/views/dataCenter/goods/Update.vue
  4. 21
      src/views/dataCenter/goods/modules/MultiSpec.vue

@ -0,0 +1,134 @@
<template>
<div>
<a-button @click="handleSelectGoods">选择商品</a-button>
<GoodsModal
ref="GoodsModal"
:multiple="multiple"
:maxNum="maxNum"
:defaultList="selectedItems"
@handleSubmit="handleSelectGoodsSubmit"
/>
</div>
</template>
<script>
import PropTypes from 'ant-design-vue/es/_util/vue-types'
import cloneDeep from 'lodash.clonedeep'
import { GoodsModal } from '@/components/Modal'
const columns = [
{
title: '商品ID',
dataIndex: 'goods_id'
},
{
title: '商品信息',
scopedSlots: { customRender: 'item' }
},
{
title: '库存总量',
dataIndex: 'stock_total'
},
{
title: '操作',
width: '180px',
dataIndex: 'action',
scopedSlots: { customRender: 'action' }
}
]
//
export default {
name: 'SelectGoods',
components: {
GoodsModal
},
model: {
prop: 'value',
event: 'change'
},
props: {
// , false
multiple: PropTypes.bool.def(true),
// , multiple
maxNum: PropTypes.integer.def(100),
//
defaultList: PropTypes.array.def([])
},
data () {
return {
columns,
//
selectedItems: [],
// ID
selectedGoodsIds: []
}
},
watch: {
//
defaultList: {
//
immediate: true,
handler (val) {
const { selectedItems } = this
if (val.length && !selectedItems.length) {
this.onUpdate(cloneDeep(val))
}
}
}
},
created () {
},
methods: {
//
onUpdate (selectedItems) {
if (this.multiple || !selectedItems.length) {
//
this.selectedItems = selectedItems
this.selectedGoodsIds = selectedItems.map(item => item.goods_id)
} else {
//
const single = selectedItems[selectedItems.length - 1]
this.selectedItems = [single]
this.selectedGoodsIds = [single.goods_id]
}
this.onChange()
},
//
handleSelectGoods () {
this.$refs.GoodsModal.handle()
},
// modal
handleSelectGoodsSubmit (result) {
const { selectedItems } = result
this.onUpdate(cloneDeep(selectedItems))
},
//
handleDeleteItem (index) {
const { selectedItems } = this
selectedItems.splice(index, 1)
this.onUpdate(selectedItems)
},
// change
onChange () {
const { multiple, selectedGoodsIds } = this
const sGoodsIds = multiple ? selectedGoodsIds : (selectedGoodsIds.length ? selectedGoodsIds[0] : undefined)
return this.$emit('change', sGoodsIds)
}
}
}
</script>
<style lang="less" scoped>
//
.table-goodsList {
margin-top: 10px;
min-width: 620px;
}
</style>

@ -0,0 +1,2 @@
import SelectGoods from './SelectGoods'
export default SelectGoods

@ -472,7 +472,7 @@
<script>
import * as GoodsApi from '@/api/goods'
import { SelectImage, SelectVideo, Ueditor, InputNumberGroup } from '@/components'
import { SelectImage, SelectGoods,SelectVideo, Ueditor, InputNumberGroup } from '@/components'
import GoodsModel from '@/common/model/goods/Index'
import { GoodsType, MultiSpec } from './modules'
import { isEmptyObject } from '@/utils/util'
@ -480,6 +480,7 @@ export default {
components: {
GoodsType,
SelectImage,
SelectGoods,
SelectVideo,
Ueditor,
InputNumberGroup,

@ -75,16 +75,9 @@
<a-input v-model="multiSpecData.skuBatchForm.goods_sku_no" placeholder="sku编码" />
<a-button @click="handleSkuBatch">立即设置</a-button>
</div>
<div style="margin-bottom: 15px;">
<span class="title">选择商品Id:</span>
<a-select style="width: 400px;margin-left: 5px;"
v-decorator="['category_id', { initialValue: 0, rules: [{ required: true, message: '请选择分类' }] }]"
>
<a-select-option :value="0">选择商品Id</a-select-option>
<a-select-option v-for="(item, index) in checkList" :key="index" :value="item.goods_id"
>{{ item.goods_id }}---{{ item.goods_name }}</a-select-option
>
</a-select>
<div style="margin-bottom: 15px;display: flex;">
<span class="title" style="margin-right: 8px">选择商品Id:</span>
<SelectGoods :defaultList="checkList" :multiple="true" />
</div>
<!-- sku列表table -->
@ -133,10 +126,13 @@
import PropTypes from 'ant-design-vue/es/_util/vue-types'
import MultiSpecModel from '@/common/model/goods/MultiSpec'
import { SelectImage } from '@/components'
import SelectGoods from '@/components/SelectGoods/SelectGoods.vue'
export default {
components: {
SelectImage,
SelectGoods
},
props: {
//
@ -162,6 +158,7 @@ export default {
// SKU
skuList: [],
},
visible: false,
}
},
watch: {
@ -267,7 +264,9 @@ export default {
}
return true
},
handleGoodsId() {},
showModal() {
this.visible = true
},
},
}
</script>

Loading…
Cancel
Save