main
fanfan 11 months ago
parent 654c0386f0
commit c764984e20
  1. 88
      src/components/Modal/GoodsModal/GoodsModal.vue
  2. 6
      src/views/dataCenter/goods/Create.vue
  3. 14
      src/views/dataCenter/goods/Update.vue

@ -2,7 +2,7 @@
<a-modal
class="noborder"
:title="title"
:width="820"
:width="900"
:visible="visible"
:isLoading="isLoading"
:maskClosable="false"
@ -47,11 +47,14 @@
image: item.goods_image,
imageAlt: '商品图片',
title: item.goods_name,
subtitle: `¥${item.goods_price_min}`
subtitle: `¥${item.goods_price_min}`,
}"
:subTitleColor="true"
/>
</template>
<span slot="specific_value" slot-scope="text">
<a-tooltip placement="topLeft" :title="text"> {{ text}}</a-tooltip>
</span>
<!-- 商品状态 -->
<span slot="status" slot-scope="text">
<a-tag :color="text == 10 ? 'green' : 'red'">{{ text == 10 ? '上架' : '下架' }}</a-tag>
@ -71,27 +74,33 @@ import { STable, GoodsItem } from '@/components/Table/table'
const columns = [
{
title: '商品ID',
dataIndex: 'goods_id'
dataIndex: 'goods_id',
},
{
title: '商品信息',
width: '335px',
scopedSlots: { customRender: 'item' }
scopedSlots: { customRender: 'item' },
},
{
title: '规格值',
dataIndex: 'specific_value',
width: '100px',
scopedSlots: { customRender: 'specific_value' },
},
{
title: '商品价格',
dataIndex: 'goods_price_min',
scopedSlots: { customRender: 'goods_price_min' }
scopedSlots: { customRender: 'goods_price_min' },
},
{
title: '库存总量',
dataIndex: 'stock_total'
dataIndex: 'stock_total',
},
{
title: '状态',
dataIndex: 'status',
scopedSlots: { customRender: 'status' }
}
scopedSlots: { customRender: 'status' },
},
]
export default {
@ -102,13 +111,13 @@ export default {
// , multiple
maxNum: PropTypes.integer.def(100),
//
defaultList: PropTypes.array.def([])
defaultList: PropTypes.array.def([]),
},
components: {
STable,
GoodsItem
GoodsItem,
},
data () {
data() {
return {
//
title: '商品库',
@ -123,11 +132,10 @@ export default {
// table
columns,
// Promise
loadData: param => {
return GoodsApi.list({ ...param, ...this.queryParam })
.then(response => {
return response.data.list
})
loadData: (param) => {
return GoodsApi.list({ ...param, ...this.queryParam }).then((response) => {
return response.data.list
})
},
// ID
fieldName: 'goods_id',
@ -136,26 +144,25 @@ export default {
//
selectedItems: [],
//
categoryListTree: []
categoryListTree: [],
}
},
computed: {
rowSelection () {
rowSelection() {
return {
selectedRowKeys: this.selectedRowKeys,
onChange: this.onSelectChange,
type: !this.multiple ? 'radio' : 'checkbox'
type: !this.multiple ? 'radio' : 'checkbox',
}
}
},
},
created () {
created() {
//
this.getCategoryList()
},
methods: {
//
handle () {
handle() {
//
this.visible = true
this.$nextTick(() => {
@ -167,24 +174,24 @@ export default {
},
//
setDefaultValue () {
setDefaultValue() {
const { fieldName, defaultList } = this
if (defaultList.length) {
this.selectedItems = cloneDeep(defaultList)
this.selectedRowKeys = defaultList.map(item => item[fieldName])
this.selectedRowKeys = defaultList.map((item) => item[fieldName])
}
},
//
getCategoryList () {
getCategoryList() {
this.isLoading = true
CategoryModel.getListFromScreen()
.then(selectList => this.categoryListTree = selectList)
.finally(() => this.isLoading = false)
.then((selectList) => (this.categoryListTree = selectList))
.finally(() => (this.isLoading = false))
},
//
onSelectChange (selectedRowKeys, newSelectedItems) {
onSelectChange(selectedRowKeys, newSelectedItems) {
const { selectedItems } = this
this.selectedRowKeys = selectedRowKeys
this.selectedItems = this.createSelectedItems(selectedRowKeys, selectedItems, newSelectedItems)
@ -196,16 +203,16 @@ export default {
* @param array oldSelectedItems 已选择的列表记录 (change前)
* @param array newSelectedItems 已选择的列表记录 (change后)
*/
createSelectedItems (selectedRowKeys, oldSelectedItems, newSelectedItems) {
createSelectedItems(selectedRowKeys, oldSelectedItems, newSelectedItems) {
const { fieldName } = this
const selectedItems = []
oldSelectedItems.forEach(item => {
oldSelectedItems.forEach((item) => {
if (selectedRowKeys.includes(item[fieldName])) {
selectedItems.push(item)
}
})
const oldSelectedKeys = oldSelectedItems.map(item => item[fieldName])
newSelectedItems.forEach(item => {
const oldSelectedKeys = oldSelectedItems.map((item) => item[fieldName])
newSelectedItems.forEach((item) => {
if (!oldSelectedKeys.includes(item[fieldName]) && selectedRowKeys.includes(item[fieldName])) {
selectedItems.push(item)
}
@ -217,12 +224,12 @@ export default {
* 刷新列表
* @param Boolean bool 强制刷新到第一页
*/
handleRefresh (bool = false) {
handleRefresh(bool = false) {
this.$refs.table.refresh(true)
},
//
handleSearch (e) {
handleSearch(e) {
e.preventDefault()
this.searchForm.validateFields((error, values) => {
if (!error) {
@ -233,7 +240,7 @@ export default {
},
//
handleCancel () {
handleCancel() {
this.visible = false
this.queryParam = {}
this.searchForm.resetFields()
@ -242,18 +249,17 @@ export default {
},
//
handleSubmit (e) {
handleSubmit(e) {
e.preventDefault()
//
this.$emit('handleSubmit', {
selectedItems: this.selectedItems,
selectedRowKeys: this.selectedRowKeys
selectedRowKeys: this.selectedRowKeys,
})
//
this.handleCancel()
}
}
},
},
}
</script>

@ -174,6 +174,12 @@
<!-- <a-radio :value="20" :disabled="true">多规格</a-radio> -->
</a-radio-group>
</a-form-item>
<a-form-item label="规格值" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
placeholder="多个规格值,以英文分号分隔"
v-decorator="['specific_value', { rules: [{ required: true, message: '请输入规格值' }] }]"
/>
</a-form-item>
<!-- 多规格的表单内容 -->
<div v-show="form.getFieldValue('spec_type') == 20">
<MultiSpec ref="MultiSpec" />

@ -164,6 +164,12 @@
<small class="c-red">该商品当前正在参与其他活动商品规格不允许更改</small>
</p>
</a-form-item>
<a-form-item label="规格值" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
placeholder="多个规格值,以英文分号分隔"
v-decorator="['specific_value', { rules: [{ required: true, message: '请输入规格值' }] }]"
/>
</a-form-item>
<!-- 多规格的表单内容 -->
<div v-if="form.getFieldValue('spec_type') == 20">
<MultiSpec
@ -176,12 +182,6 @@
</div>
<!-- 单规格的表单内容 -->
<div v-if="form.getFieldValue('spec_type') == 10">
<a-form-item label="规格值" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
placeholder="多个规格值,以英文分号分隔"
v-decorator="['specific_value', { rules: [{ required: true, message: '请输入规格值' }] }]"
/>
</a-form-item>
<a-form-item
label="商品价格"
:labelCol="labelCol"
@ -606,7 +606,7 @@ export default {
// (form-item)
this.$nextTick(() => {
this.form.setFieldsValue(GoodsModel.getFieldsValue2())
this.ruleList = this.formData.goods.rules?this.formData.goods.rules:[]
this.ruleList = this.formData.goods.rules ? this.formData.goods.rules : []
this.onForceUpdate()
})
}

Loading…
Cancel
Save