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
6.0 KiB
217 lines
6.0 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="$t('common.choose')">-->
|
|
<!-- <el-option :label="$t('common.all')" 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>
|