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

修改新增订单页面

上级 83d1113e
......@@ -41,7 +41,7 @@
</div>
<slot></slot>
<div class="table-list-bd">
<el-table :data="dataList" v-loading="loading" v-bind="$attrs" v-on="$listeners" style="height: 100%">
<el-table :data="dataList" v-loading="loading" v-bind="$attrs" v-on="$listeners" style="height: 100%" ref="table">
<template v-for="item in columns">
<el-table-column v-bind="item" :key="item.prop" v-if="visible(item)">
<template v-slot:default="scope" v-if="item.slots || item.computed">
......@@ -112,6 +112,11 @@ export default {
}
}
},
computed: {
table() {
return this.$refs.table
}
},
methods: {
fetchList(isReset) {
/**
......
......@@ -121,6 +121,7 @@ export default {
height: 20px;
margin-right: 8px;
border-radius: 2px;
object-fit: cover;
}
}
</style>
<template>
<div class="select-goods">
<div style="text-align: right">
<el-button type="text" @click="dialogVisible = true">从商品库添加</el-button>
</div>
<table-list v-bind="selectedTableOptions" border>
<template v-slot:table-goods="{ row }">
<goods-item :data="row"></goods-item>
</template>
</table-list>
<el-dialog :visible.sync="dialogVisible" fullscreen append-to-body title="关联商品">
<table-list
v-bind="tableOptions"
ref="list"
@select="select"
@selection-change="handleSelectionChange"
class="select-goods-table"
>
<template v-slot:table-goods="{ row }">
<goods-item :data="row"></goods-item>
</template>
<template v-slot:table-view="{ row }">
<p>访客数:{{ row.usesr_view }}</p>
<p>浏览量:{{ row.page_view }}</p>
</template>
</table-list>
<div class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="handlePrimary">确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import TableList from '@/components/base/tableList'
import { getGoodsList } from '@/api/goods'
import GoodsItem from '@/components/goods/goodsItem'
export default {
props: { multiple: { type: Boolean, default: false } },
components: { TableList, GoodsItem },
data() {
return {
dialogVisible: false,
multipleSelection: [], // 选择的数据
selected: [] // 确定选中的
}
},
computed: {
shopId() {
return this.$store.state.shopId
},
// 列表配置
tableOptions() {
return {
remote: {
httpRequest: getGoodsList,
params: { shop_id: this.shopId, spu_name: '' }
},
filters: [
{
type: 'input',
prop: 'spu_name',
placeholder: '商品名称'
}
],
columns: [
{ type: 'selection' },
{ label: '商品名', prop: 'spu_name', slots: 'table-goods', minWidth: 140 },
{ label: '价格(元)', prop: 'price_zone', align: 'center' },
{ label: '访问量', prop: 'page_view', slots: 'table-view', minWidth: 120 },
{ label: '库存', prop: 'stock', align: 'center' },
{ label: '销量', prop: 'sales_volume', align: 'center' },
{ label: '创建时间', prop: 'create_time', width: 110 },
{
label: '商品状态',
prop: 'status',
align: 'center',
computed({ row }) {
const map = { 1: '仓库中', 2: '销售中', 3: '已售罄', 4: '下架', 5: '已删除' }
return map[row.status]
}
}
]
}
},
selectedTableOptions() {
return {
columns: [{ label: '商品名', prop: 'spu_name', slots: 'table-goods' }],
data: this.selected
}
}
},
methods: {
// 选择
select(selection, row) {
if (!this.multiple && selection.length > 1) {
const selected = !!selection.find(item => item.spu_id === row.spu_id)
this.$refs.list.table.clearSelection()
this.$nextTick(function () {
this.$refs.list.table.toggleRowSelection(row, selected)
})
}
},
// 选择
handleSelectionChange(value) {
this.multipleSelection = value
},
// 确定
handlePrimary() {
this.selected = [...this.multipleSelection]
const [first] = this.selected
const value = first ? first.spu_id : ''
this.$emit('input', value)
this.dispatch('ElFormItem', 'el.form.change', value)
this.dialogVisible = false
},
dispatch(componentName, eventName, params) {
var parent = this.$parent || this.$root
var name = parent.$options.componentName
while (parent && (!name || name !== componentName)) {
parent = parent.$parent
if (parent) {
name = parent.$options.componentName
}
}
if (parent) {
parent.$emit.apply(parent, [eventName].concat(params))
}
}
}
}
</script>
<style lang="scss" scoped>
.dialog-footer {
position: sticky;
bottom: 0;
text-align: center;
z-index: 118;
padding: 20px 0;
border-top: 0.5px solid rgba(0, 0, 0, 0.05);
background-color: rgba(255, 255, 255, 0.95);
}
::v-deep .select-goods-table .el-table th:first-child .cell {
display: none;
}
</style>
......@@ -70,8 +70,8 @@ export default {
{ label: '商品数', prop: 'spu_sum', width: 100 },
{ label: '创建时间', prop: 'create_time', width: 200 },
{ label: '操作', slots: 'table-x', align: 'right' }
],
data: this.groupList
]
// data: this.groupList
}
}
},
......
......@@ -8,9 +8,9 @@
</app-card>
<app-card title="商品信息">
<el-form-item label="关联商品" prop="spu_id">
<el-input v-model="ruleForm.spu_id" />
<select-goods v-model="ruleForm.spu_id"></select-goods>
</el-form-item>
<el-form-item label="商品规格" prop="sku_id">
<el-form-item label="商品规格" prop="sku_id" v-if="ruleForm.spu_id">
<el-radio-group v-model="ruleForm.sku_id">
<el-radio border :label="item.sku_id" :key="item.sku_id" v-for="item in skuList">
<span class="sku-name">{{ item.spec_values }} </span><span class="sku-price">{{ item.price }}</span>
......@@ -50,14 +50,15 @@
import AppCard from '@/components/base/card'
import UserAutocomplete from '@/components/base/userAutocomplete'
import OrderAutocomplete from '@/components/order/orderAutocomplete'
import SelectGoods from '@/components/order/selectGoods'
import { addOrder, getSkuList } from '@/api/order'
export default {
components: { AppCard, UserAutocomplete, OrderAutocomplete },
components: { AppCard, UserAutocomplete, OrderAutocomplete, SelectGoods },
data() {
return {
ruleForm: {
customer_id: '',
spu_id: '6805043172159258624',
spu_id: '',
sku_id: '',
buy_count: 1,
payment_method: '99',
......@@ -73,7 +74,7 @@ export default {
}
},
watch: {
'ruleForm.spu_id': skuId => {
'ruleForm.spu_id'(skuId) {
this.getSkuList(skuId)
}
},
......@@ -119,9 +120,6 @@ export default {
addOrderId() {
this.ruleForm.paymentOrderIds.push('')
}
},
beforeMount() {
this.getSkuList(this.ruleForm.spu_id)
}
}
</script>
......
......@@ -51,7 +51,7 @@
<h3 class="order-fields-title">付款信息</h3>
<div class="order-field-item">
<div class="order-field-item__label">买家:</div>
<div class="order-field-item__content">{{ data.shipping_user }}</div>
<div class="order-field-item__content">{{ data.shipping_user || data.customer_id }}</div>
</div>
<div class="order-field-item">
<div class="order-field-item__label">买家留言:</div>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论