多租户商城-商户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

217 lines
5.9 KiB

<template>
<div class="product-select">
<el-form :inline="true" :model="formData" class="demo-form-inline">
<el-form-item label="">
<el-input v-model="formData.keyword" maxlength="20" placeholder="店铺名称/商品ID/商品分组"></el-input>
</el-form-item>
<!-- <el-form-item label="上架状态">-->
<!-- <el-select v-model="formData.status" placeholder="请选择">-->
<!-- <el-option label="全部" value=""></el-option>-->
<!-- <el-option label="上架" value="1"></el-option>-->
<!-- <el-option label="下架" value="0"></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="商品分类">
<el-cascader
ref="cascader"
v-model="formData.categoryId"
:options="categoryList"
:props="{ checkStrictly: true,label: 'categoryName',value: 'id',children: 'childs' }"
clearable></el-cascader>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">{{ $t('common.query') }}</el-button>
</el-form-item>
</el-form>
<el-table
ref="multipleTable"
:data="tableData"
max-height="500"
border
row-key="productId"
@selection-change="handleSelectionChange"
style="width: 100%">
<el-table-column
v-if="isMultiple"
width="40"
type="selection"
:reserve-selection="true"
fixed="left"
>
</el-table-column>
<el-table-column label="" width="40" align="center" v-else>
<template slot-scope="scope">
<el-radio v-model="tableRadio" :label="scope.row"><i></i></el-radio>
</template>
</el-table-column>
<el-table-column label="产品主图" width="180" align="center">
<template slot-scope="scope">
<el-image
style="width: 80px; height: 80px"
:src="scope.row.image"
fit="contain"></el-image>
</template>
</el-table-column>
<el-table-column
prop="productName"
label="产品名称"
width="180">
</el-table-column>
<el-table-column
prop="productId"
label="产品ID">
</el-table-column>
<el-table-column
prop="price"
label="售价">
</el-table-column>
<el-table-column
prop="originalPrice"
label="原价">
</el-table-column>
<el-table-column
prop="stockNumber"
label="库存">
</el-table-column>
<el-table-column
prop="number"
label="销量">
</el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:hide-on-single-page="true"
:page-sizes="[10, 20, 50, 100]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</template>
<script>
import api from '@@/components/canvasShow/config/api'
import {sendReqMixin} from '@@/components/canvasShow/config/mixin'
import {checkEmptyChild} from '@@/config/common'
import Cookies from 'js-cookie'
import { mapGetters } from 'vuex'
export default {
name: 'product-select',
mixins: [sendReqMixin],
data () {
return {
tableRadio: '',
formData: {
keyword: '',
status: '',
categoryId: ''
},
currentPage: 1,
total: 0,
pageSize: 10,
categoryList: [],
tableData: [],
multipleSelection: []
}
},
props: {
selectedRows: {
type: Array,
default: () => []
},
isMultiple: {
type: Boolean,
default: false
}
},
mounted () {
this.getCategory()
this.getTableData()
},
computed: {
...mapGetters([
'typeId'
])
},
methods: {
// 获取类别
getCategory () {
var _this = this
let params = {
url: api.getClassify,
method: 'GET'
}
this.sendReq(params, (res) => {
_this.categoryList = res.data
checkEmptyChild(_this.categoryList)
})
},
// 获取产品信息
getTableData () {
var _this = this
var paramsUrl = `${api.getProducts}?page=${this.currentPage}&pageSize=${this.pageSize}&shelveState=1`
if (this.formData.keyword) {
paramsUrl += `&search=${this.formData.keyword}`
}
let shopId = parseInt(Cookies.get('cereShopId'))
if (shopId && this.typeId===3) {
paramsUrl += `&shopId=${shopId}`
}
let nodesObj = this.$refs['cascader'].getCheckedNodes()
if (nodesObj && nodesObj.length !== 0) {
var categoryId = nodesObj[0].value
paramsUrl += `&classifyId=${categoryId}`
}
let params = {
url: paramsUrl,
method: 'GET'
}
this.sendReq(params, (res) => {
_this.tableData = res.data.list
_this.total = res.data.total
// 表格斌值
// if(_this.selectedRows.length > 0){
// _this.selectedRows.forEach(row => {
// this.$refs.multipleTable.toggleRowSelection(row,true);
// });
// }
})
},
// 搜索
onSubmit () {
this.getTableData()
},
// 每页条数改变
handleSizeChange (val) {
this.pageSize = val
this.getTableData()
},
// 当前页改变
handleCurrentChange (val) {
this.currentPage = val
this.getTableData()
},
// 多选改变
handleSelectionChange(val) {
this.multipleSelection = val
}
}
}
</script>
<style lang="scss" scoped>
.product-select{
.el-pagination{
padding: 0px;
margin-top: 30px;
}
.el-table{
.img{
width: 80px;
height: 80px;
}
}
}
</style>