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.

240 lines
7.8 KiB

9 hours ago
<template>
<el-dialog :title="choosePruoductObj.title"
:visible.sync="choosePruoductObj.open"
:width="choosePruoductObj.width"
@open="init()"
@close="cancel"
append-to-body>
<el-form ref="auditForm" inline :model="choosePruoductObj.queryParams" label-width="80px">
<el-form-item label="商品名称" prop="nameLike">
<el-input
size="small"
placeholder="请输入商品名称"
v-model="choosePruoductObj.queryParams.nameLike"
clearable
/>
</el-form-item>
<el-form-item label="商品编码" prop="outProductId">
<el-input
size="small"
placeholder="请输入商品编码"
v-model="choosePruoductObj.queryParams.outProductId"
clearable
/>
</el-form-item>
<el-form-item style="float: right">
<el-button type="primary" icon="el-icon-search" size="mini" @click="getProductList"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<span>申请展示日期范围</span>
<el-date-picker
v-model="handleDateArray"
clearable
size="small"
type="daterange"
:picker-options="pickerOptions"
value-format="yyyy-MM-dd"
placeholder="选择日期范围"
@change="handleDateChange"
/>
<span style="color: #999; font-size: 12px;"> 温馨提示尽量选择2天后的日期开始展示为审核留出足够时间</span>
</el-row>
<el-table class="mt20"
:data="choosePruoductObj.list"
ref="table"
v-loading="choosePruoductObj.loading"
max-height="500" border
row-key="productId"
@selection-change="handleSelectionChange"
:header-cell-style="{'text-align': 'center'}"
:cell-style="{'text-align': 'center'}"
>
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="主图" prop="pic">
<template slot-scope="{ row }">
<el-image v-if="row.pic" :src="row.pic" :preview-src-list="[row.pic]" class="small-img"/>
</template>
</el-table-column>
<el-table-column label="名称/编码" min-width="200" prop="outProductId">
<template slot-scope="{ row }">
<div>名称{{ row.name }} </div>
<div v-if="row.outProductId">{{ row.outProductId }}</div>
</template>
</el-table-column>
<el-table-column label="品牌/分类" prop="brandName">
<template #default="{ row }" >
<div v-if="row.brandName">{{ row.brandName }}</div>
<div v-if="row.productCategoryName">{{ row.productCategoryName }}</div>
</template>
</el-table-column>
<el-table-column label="价格/排序" prop="price">
<template #default="{ row }">
<div v-if="row.price">{{ row.price }}</div>
<div v-if="row.sort">{{ row.sort }}</div>
</template>
</el-table-column>
<el-table-column label="场馆内上架状态/商品课程" prop="" width="180">
<template #default="{ row }">
<dict-tag :value="row.publishStatus" prop-name="pms_publish_status"/>
&nbsp;&nbsp;
<dict-tag :value="row.isCourse" prop-name="pms_is_course" />
</template>
</el-table-column>
</el-table>
<pagination
v-show="choosePruoductObj.total>0"
:total="choosePruoductObj.total"
:page.sync="choosePruoductObj.queryParams.pageNum"
:limit.sync="choosePruoductObj.queryParams.pageSize"
@pagination="getProductList"
/>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</template>
<script>
import {listPmsProduct} from "@/api/pms/product";
import { getProductShow,addProductShow,updateProductShow} from "@/api/pms/productShow";
import ProductCategorySelect from "@/views/components/ProductCategorySelect.vue";
export default {
components: {ProductCategorySelect},
name: "ProductSelect",
data() {
return {
loadingSelect: false,
pickerOptions: {
disabledDate(time) {
// 返回 true 表示禁用,禁止选择今天之前的日期(今天及之后可选)
return time.getTime() < Date.now() - 8.64e7
}
},
selectProduct: [],
handleDateArray: [],
form: {
showStartTime:'',
showEndTime:'',
productId:'',
id:''
},
choosePruoductObj: {
loading: false,
open: false,
title: "选择商品提交申请",
list: [],
width: '60%',
queryParams: {
pageNum: 1,
pageSize: 10,
sale:'1',
nameLike: null,
outProductId: null
},
total: 0
}
}
},
methods: {
submitForm() {
if (this.selectProduct.length>1 || this.selectProduct.length===0){
this.$message.warning('请选择一条记录进行提交');
return;
}
if(this.form.showStartTime=='' || this.form.showEndTime==''){
this.$message.warning('请选择展示日期范围');
return;
}
this.form.productId=this.selectProduct[0].id;
// 判断是否为新增还是更新
if(this.form.id){
updateProductShow(this.form).then(()=>{
this.$message.success('提交成功');
this.choosePruoductObj.open=false;
this.$emit("refreshData")
})
}else {
addProductShow(this.form).then(()=>{
this.$message.success('提交成功');
this.choosePruoductObj.open=false;
this.$emit("refreshData")
})
}
},
async init() {
this.choosePruoductObj.queryParams.pageNum = 1;
await this.getProductList();
this.choosePruoductObj.open = true
this.$nextTick(()=>{
if (this.selectProduct.length>0){
this.judge()
}
})
},
judge() {
this.$nextTick(()=>{
this.choosePruoductObj.list.forEach(ele => {
if (this.selectProduct.some(item => item.id === ele.id)) {
this.$refs.table.toggleRowSelection(ele, true)
} else {
this.$refs.table.toggleRowSelection(ele, false)
}
});
})
},
handleDateChange(val) {
if (val) {
this.form.showStartTime = val[0];
this.form.showEndTime = val[1];
} else {
delete this.form.showStartTime;
delete this.form.showEndTime;
}
},
handleSelectionChange(selection) {
this.selectProduct= selection
},
async getProductList() {
this.choosePruoductObj.loading = true;
const query = {...this.choosePruoductObj.queryParams, pageNum: undefined, pageSize: undefined};
const {pageNum, pageSize} = this.choosePruoductObj.queryParams;
const pageReq = {page: pageNum - 1, size: pageSize};
await listPmsProduct(query, pageReq).then(response => {
const { content, totalElements } = response
this.choosePruoductObj.list = content;
this.choosePruoductObj.total = Number(totalElements);
this.choosePruoductObj.loading = false;
});
},
cancel() {
this.$refs.table.clearSelection()
this.selectProduct = [];
this.handleDateArray = [];
this.form = {
showStartTime:'',
showEndTime:'',
productId:''
}
this.choosePruoductObj.open = false;
}
}
}
</script>
<style lang="stylus">
.line
display flex
align-items center
margin-bottom: 5px;
border-bottom 1px dashed #ccc
.line:last-child
border-bottom 0 !important
margin-bottom 0 !important
</style>