master
15004070936 8 hours ago
parent 9b94070dc5
commit 495c90a06b

@ -0,0 +1,64 @@
import request from '@/utils/request'
// 商品展示申请接口列表
export function listProductShow(query, pageReq) {
return request({
url: '/pms/productShow/list',
method: 'post',
data: query,
params: pageReq
})
}
// 查询商品展示申请信息详细
export function getProductShow(id) {
return request({
url: '/pms/productShow/' + id,
method: 'get'
})
}
// 新增商品展示申请信息
export function addProductShow(data) {
return request({
url: '/pms/productShow',
method: 'post',
data: data
})
}
// 修改商品展示申请信息
export function updateProductShow(data) {
return request({
url: '/pms/productShow',
method: 'put',
data: data
})
}
// 删除商品展示申请信息
export function delProductShow(id) {
return request({
url: '/pms/productShow/' + id,
method: 'delete'
})
}
// 拒绝商品展示(管理员)
export function refuseProductShow(data) {
return request({
url: '/pms/productShow/refuse/',
method: 'put',
data: data
})
}
// 通过商品展示(管理员)
export function passProductShow(data) {
return request({
url: '/pms/productShow/pass/',
method: 'put',
data: data
})
}

@ -78,8 +78,8 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用户名:" prop="username">
<el-input v-model="form.username" placeholder="请输入用户名" />
<el-form-item label="登录账号:" prop="username">
<el-input v-model="form.username" placeholder="保存后无法修改" />
</el-form-item>
</el-col>
<el-col :span="12">

@ -75,8 +75,7 @@ export default {
pageNum: this.pageNum
}).then(response => {
if (response.code === 200) {
this.staffList = response.rows
console.log(this.staffList)
this.staffList = response.rows.filter(item => item.userId !== '1');
this.hasMoreData = response.rows.length > 0
this.pageNum = this.pageNum + 1
} else {

@ -1,6 +1,6 @@
<template>
<div class="add-product-wrapper">
<el-form label-width="108px" :model="form" ref="form" :rules="rules">
<el-form label-width="110px" :model="form" ref="form" :rules="rules">
<el-card style="margin: 20px 20px; font-size: 14px">
<div slot="header">
<span>基本信息</span>
@ -36,7 +36,7 @@
</el-form-item>
</el-col>
</el-row>
<el-row v-hasPermi="['pms:productCategory:list']">
<el-row v-if="checkPermi(['pms:productCategory:list'])">
<el-col :span="8">
<el-form-item label="品牌" prop="brandId">
<brand-select v-model="form.brandId" @change="onBrandChange"></brand-select>
@ -73,7 +73,7 @@
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="上架状态">
<el-form-item label="场馆内上架状态">
<DictRadio v-model="form.publishStatus" size="small"
:radioData="dict.type.pms_publish_status"/>
</el-form-item>
@ -180,7 +180,7 @@
</el-card>
<div class="tc">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" v-if="!readOnly" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-form>
@ -196,6 +196,7 @@ import ProductCategorySelect from "@/views/components/ProductCategorySelect.vue"
import BrandSelect from "@/views/components/BrandSelect.vue";
import CourseSelect from "@/views/mall/product/courseSelect";
import staffSelect from '@/components/system/staff/staffSelect'
import store from "@/store";
export default {
name: "AddProduct",
dicts: ['pms_publish_status','pms_is_course'],
@ -203,7 +204,7 @@ export default {
data() {
return {
rules: {
rules: {
name: [
{ required: true, message: '请输入商品名称', trigger: 'blur' },
],
@ -246,16 +247,28 @@ export default {
]
}
],
maxOptionNum: 44
maxOptionNum: 44,
readOnly:false
};
},
computed:{
isEdit(){
return this.$route.query.id && !this.readOnly
}
},
created() {
const {id} = this.$route.query
const {id,readOnly} = this.$route.query
if (id) {
this.getInfo(id);
}
this.readOnly = readOnly
},
methods: {
checkPermi(permissions){
const userPermissions = store.getters && store.getters.permissions
if (userPermissions.includes('*:*:*')) return true
return permissions.some(p => userPermissions.includes(p))
},
handleConfirm(value){
this.form.courseName=value.courseName
this.form.courseId =value.courseId

@ -34,11 +34,55 @@
<el-table class="mt20" :data="chooseCourseObj.list" ref="table" v-loading="chooseCourseObj.loading" max-height="500" border
row-key="courseId" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"/>
<el-table-column label="课程名称" prop="courseName"/>
<el-table-column label="课程类型" prop="courseTypeName"/>
<el-table-column label="课程状态" prop="sale"/>
<el-table-column label="授课模式" prop="teachingMode"/>
<el-table-column label="创建时间" prop="createTime"/>
<el-table-column prop="courseName" width="180" align="center" label="课程名称" />
<el-table-column prop="courseTypeName" align="center" label="课程类型" />
<el-table-column prop="teachingMode" align="center" label="授课模式">
<template slot-scope="scope">
<div v-if="scope.row.teachingMode === '1'">
<el-tooltip class="item" effect="dark" content="班课" placement="right">
<svg-icon icon-class="one-to-many" style="height: 25px;width: 25px;" />
</el-tooltip>
</div>
<div v-if="scope.row.teachingMode === '2'">
<el-tooltip class="item" effect="dark" content="一对一" placement="right">
<svg-icon icon-class="one-to-one" style="height: 25px;width: 25px;" />
</el-tooltip>
</div>
</template>
</el-table-column>
<el-table-column prop="tuitionFee" align="center" label="课程价值/节" >
<template slot-scope="scope">
{{ scope.row.tuitionFee }}
</template>
</el-table-column>
<el-table-column prop="claFee" align="center" label="教练课时费/节" >
<template slot-scope="scope">
{{ scope.row.claFee }}
</template>
</el-table-column>
<el-table-column prop="campusIds" align="center" label="开课校区">
<template slot-scope="scope">
<div >
<span v-if="scope.row.campusIds==null"></span>
<span v-else>
{{ scope.row.campusIds.split(',').length }}个校区<br>
{{ scope.row.storeNames }}
</span>
</div>
</template>
</el-table-column>
<el-table-column prop="star" width="200" align="center" label="课程难度">
<template slot-scope="scope">
<el-rate
v-model="scope.row.star"
:disabled="true"
:colors="['#F7BA2A', '#F7BA2A', '#F7BA2A']"
:void-color="'#C6D1DE'"
:max="5"
/>
</template>
</el-table-column>
</el-table>
<pagination
v-show="chooseCourseObj.total>0"
@ -94,6 +138,7 @@ export default {
submitForm() {
if (this.selectCourse.length>1){
this.$message.warning('请选择一条记录进行提交');
return;
}
if (this.selectCourse.length==1){
this.$emit('onComplete', this.selectCourse[0])

@ -1,7 +1,7 @@
<template>
<div class="app-container">
<div v-show="show">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px" size="small" class="ry_form">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="120px" size="small" class="ry_form">
<el-row>
<el-form-item label="名称" prop="name">
<el-input
@ -11,21 +11,11 @@
size="small"
/>
</el-form-item>
<el-form-item label="品牌" prop="brandName">
<el-input
v-model="queryParams.brandNameLike"
placeholder="请输入品牌名称"
clearable
size="small"
/>
</el-form-item>
<el-form-item label="分类" prop="productCategoryName">
<el-input
v-model="queryParams.productCategoryNameLike"
placeholder="请输入分类名称"
clearable
size="small"
/>
<!-- <el-form-item label="品牌" prop="brandId" v-if="checkPermi(['pms:brand:list'])">-->
<!-- <brand-select v-model="queryParams.brandId" placeholder="请选择品牌"/>-->
<!-- </el-form-item>-->
<el-form-item label="分类" prop="productCategoryId" v-if="checkPermi(['pms:productCategory:list'])">
<product-category-select v-model="queryParams.productCategoryId" placeholder="请选择分类"/>
</el-form-item>
<el-form-item label="编码" prop="outProductId">
<el-input
@ -41,7 +31,7 @@
</el-row>
<el-row>
<el-form-item label="上架状态" prop="publishStatus">
<el-form-item label="场馆内上架状态" prop="publishStatus">
<DictRadio v-model="queryParams.publishStatus" @change="handleQuery" size="small"
:radioData="dict.type.pms_publish_status" :showAll="'all'"/>
</el-form-item>
@ -79,45 +69,44 @@
<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>
<el-table-column label="商品名称" min-width="200" prop="name"/>
<el-table-column label="商品编码" prop="outProductId"/>
<!-- <el-table-column label="品牌" prop="brandName">-->
<!-- <template #default="{ row }" >-->
<!-- <div >{{ row.brandName?row.brandName:'默认' }}</div>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="分类" prop="productCategoryName">
<template #default="{ row }" >
<div >{{ row.productCategoryName?row.productCategoryName:'默认' }}</div>
</template>
</el-table-column>
<el-table-column label="品牌/分类" prop="brandName">
<template slot-scope="{ 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 slot-scope="{ row }">
<div v-if="row.price">{{ row.price }}</div>
<div v-if="row.sort">{{ row.sort }}</div>
<el-table-column label="价格" prop="price"/>
<el-table-column label="排序" prop="sort"/>
<el-table-column label="场馆内上架状态" prop="publishStatus">
<template #default="{ row }">
<dict-tag :value="row.publishStatus" prop-name="pms_publish_status"/>
</template>
</el-table-column>
<el-table-column label="上架状态/商品课程" prop="">
<template slot-scope="{ row }">
<dict-tag :value="row.publishStatus" prop-name="pms_publish_status"/>
&nbsp;&nbsp;
<el-table-column label="商品or课程" prop="isCourse">
<template #default="{ row }">
<dict-tag :value="row.isCourse" prop-name="pms_is_course" />
</template>
</el-table-column>
<el-table-column label="操作" class-name="small-padding fixed-width">
<template slot-scope="scope">
<template #default="{ row }">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
@click="handleUpdate(row)"
>修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
@click="handleDelete(row)"
>删除</el-button>
</template>
</el-table-column>
@ -138,12 +127,15 @@
<script>
import {delPmsProduct, listPmsProduct} from "@/api/pms/product";
import ProductCategorySelect from "@/views/components/ProductCategorySelect.vue";
import BrandSelect from "@/views/components/BrandSelect.vue";
import {mapGetters} from "vuex";
import store from "@/store";
export default {
name: "PmsProduct",
components: { ProductCategorySelect ,BrandSelect},
dicts: ['pms_publish_status','pms_is_course'],
data() {
return {
@ -179,17 +171,8 @@ export default {
categoryId: null,
outProductId: null,
name: null,
pic: null,
albumPics: null,
nameLike: null,
publishStatus: null,
sort: null,
price: null,
unit: null,
weight: null,
detailHtml: null,
detailMobileHtml: null,
brandName: null,
productCategoryName: null,
isCourse:null,
},
};
@ -201,11 +184,11 @@ export default {
...mapGetters(['userId']),
},
methods: {
productSelect(){
this.open=true
// this.$router.push({ path: '/product/getCourseList' });
},
checkPermi(permissions){
const userPermissions = store.getters && store.getters.permissions
if (userPermissions.includes('*:*:*')) return true
return permissions.some(p => userPermissions.includes(p))
},
/** 查询商品信息列表 */
getList() {
this.loading = true;
@ -218,7 +201,6 @@ export default {
const { content, totalElements } = response
this.pmsProductList = content;
this.total =Number(totalElements) ;
console.log(content)
this.loading = false;
});
},

@ -0,0 +1,318 @@
<template>
<div class="app-container">
<div v-show="show">
<el-form :model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
label-width="80px"
size="small"
class="ry_form"
>
<el-row>
<el-form-item label="商品名称" prop="productName">
<el-input
v-model="queryParams.productName"
placeholder="请输入商品名称"
clearable
size="small"
/>
</el-form-item>
<el-form-item label="申请场馆" prop="storeName">
<el-input
v-model="queryParams.storeName"
placeholder="请输入场馆名称"
clearable
size="small"
/>
</el-form-item>
<el-form-item label="商品编码" prop="outProductId">
<el-input
v-model="queryParams.outProductId"
placeholder="请输入商品编码"
clearable
size="small"
/>
</el-form-item>
<el-form-item style="float: right">
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="申请状态" prop="applyStatus">
<el-select v-model="queryParams.applyStatus" placeholder="请选择申请状态" clearable size="small">
<el-option
v-for="dict in applyStatus"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="展示状态" prop="showFlag">
<DictRadio v-model="queryParams.showFlag" @change="handleQuery" size="small"
:radioData="showFlag"/>
</el-form-item>
</el-row>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button>
</el-col>
</el-row>
<el-table
v-loading="loading"
:data="pmsProductShowList"
@selection-change="handleSelectionChange"
border
:header-cell-style="{'text-align': 'center'}"
:cell-style="{'text-align': 'center'}"
>
<el-table-column type="selection" width="55" align="center"/>
<el-table-column prop="productName" label="商品信息" show-overflow-tooltip >
<template #default="{ row }">
<span>商品名称{{ row.productName}}</span><br/>
<span>商品编号{{ row.outProductId}}</span>
</template>
</el-table-column>
<el-table-column prop="tenantName" label="租户场馆信息" show-overflow-tooltip >
<template #default="{ row }">
<span>租户名称{{ row.tenantName}}</span><br/>
<span>场馆名称{{ row.storeName}}</span>
</template>
</el-table-column>
<el-table-column prop="productCategoryName" label="上架分类" width="180" show-overflow-tooltip>
<template #default="{ row }">
<span>默认场馆商品</span><br/>
<span>商城上架分类{{ row.productCategoryName?row.productCategoryName:"待定" }}</span>
</template>
</el-table-column>
<el-table-column prop="showFlag" label="展示标识" align="center">
<template #default="{ row }">
<el-tag :type="row.showFlag === '1' ? 'success' : 'info'" size="small">
{{ row.showFlag === '1' ? '展示' : '不展示' }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="applyStatus" label="申请状态" align="center">
<template #default="{ row }">
<el-tag
v-if="row.applyStatus === '0'"
type="warning"
size="small"
>待审核</el-tag>
<el-tag
v-else-if="row.applyStatus === '1'"
type="success"
size="small"
>审核通过</el-tag>
<el-tag
v-else-if="row.applyStatus === '2'"
type="danger"
size="small"
>审核拒绝</el-tag>
<el-tag
v-else-if="row.applyStatus === '3'"
type="primary"
size="small"
>展示中</el-tag>
<el-tag
v-else-if="row.applyStatus === '4'"
type="info"
size="small"
>展示期结束</el-tag>
<span v-else>{{ row.applyStatus }}</span>
</template>
</el-table-column>
<el-table-column prop="showStartTime" label="展示开始时间" width="120" align="center" >
<template #default="{ row }">
<span>{{ row.showStartTime?row.showStartTime.substr(0,10):"" }}</span><br/>
</template>
</el-table-column>
<el-table-column prop="showEndTime" label="展示结束时间" width="120" align="center" >
<template #default="{ row }">
<span>{{ row.showEndTime?row.showEndTime.substr(0,10):"" }}</span><br/>
</template>
</el-table-column>
<el-table-column prop="applyTime" label="申请时间" align="center" >
<template #default="{ row }">
<span>{{ row.applyTime?row.applyTime.substr(0,10):"" }}</span><br/>
<span>{{ row.applyTime?row.applyTime.substr(11,8):"" }}</span>
</template>
</el-table-column>
<el-table-column prop="reviewTime" label="审核时间" align="center" >
<template #default="{ row }">
<span>{{ row.reviewTime?row.reviewTime.substr(0,10):"" }}</span><br/>
<span>{{ row.reviewTime?row.reviewTime.substr(11,8):"" }}</span>
</template>
</el-table-column>
<el-table-column prop="sort" label="展示排序" align="center" />
<el-table-column label="操作" class-name="small-padding fixed-width">
<template #default="{ row }">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(row)"
>修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<InBody v-show="total>0">
<pagination
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</InBody>
</div>
<ProductSelect ref="productSelect" @refreshData="getList"/>
</div>
</template>
<script>
import {listProductShow, getProductShow,addProductShow,updateProductShow,delProductShow} from "@/api/pms/productShow";
import {mapGetters} from "vuex";
import {addPmsBrand, getPmsBrand, updatePmsBrand} from "@/api/pms/brand";
import store from "@/store";
import ProductSelect from "@/views/mall/publishProduct/productSelect.vue";
export default {
name: "publishProduct",
components: {ProductSelect},
data() {
return {
show: true,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
pmsProductShowList: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
},
showFlag:[{
value: '0',
label: '未展示'
}, {
value: '1',
label: '展示'
}],
applyStatus:[{//
value: '0',
label: '待审核'
}, {
value: '1',
label: '审核通过'
},
{
value: '2',
label: '审核拒绝'
},
{
value: '3',
label: '展示中'
},
{
value: '4',
label: '展示期结束'
},
],
};
},
created() {
this.getList();
},
computed:{
...mapGetters(['userId']),
},
methods: {
/** 查询商品信息列表 */
getList() {
this.loading = true;
const {pageNum, pageSize} = this.queryParams;
const query = {...this.queryParams, pageNum: undefined, pageSize: undefined};
const pageReq = {page: pageNum - 1, size: pageSize};
listProductShow(query, pageReq).then(response => {
const { content, totalElements } = response
this.pmsProductShowList = content;
this.total =Number(totalElements) ;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.$refs.productSelect.choosePruoductObj.open = true
},
/** 修改按钮操作 */
handleUpdate(row) {
this.$refs.productSelect.selectProduct[0]={id:row.productId}
this.$refs.productSelect.handleDateArray = [row.showStartTime, row.showEndTime];
this.$refs.productSelect.form.id = row.id
this.$refs.productSelect.choosePruoductObj.title = "修改商品展示申请"
this.$refs.productSelect.choosePruoductObj.open = true
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除编号为"' + ids + '"的申请?').then(function() {
return delProductShow(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
}
};
</script>

@ -0,0 +1,239 @@
<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>

@ -0,0 +1,376 @@
<template>
<div class="app-container">
<div v-show="show">
<el-form :model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
label-width="80px"
size="small"
class="ry_form"
>
<el-row>
<el-form-item label="商品名称" prop="productName">
<el-input
v-model="queryParams.productName"
placeholder="请输入商品名称"
clearable
size="small"
/>
</el-form-item>
<el-form-item label="分类" prop="" >
<product-category-select v-model="queryParams.productCategoryId" placeholder="请选择分类"/>
</el-form-item>
<el-form-item label="申请场馆" prop="storeName">
<el-input
v-model="queryParams.storeName"
placeholder="请输入场馆名称"
clearable
size="small"
/>
</el-form-item>
<el-form-item label="商品编码" prop="outProductId">
<el-input
v-model="queryParams.outProductId"
placeholder="请输入商品编码"
clearable
size="small"
/>
</el-form-item>
<el-form-item style="float: right">
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="申请状态" prop="applyStatus">
<el-select v-model="queryParams.applyStatus" placeholder="请选择申请状态" clearable size="small">
<el-option
v-for="dict in applyStatus"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="展示状态" prop="showFlag">
<DictRadio v-model="queryParams.showFlag" @change="handleQuery" size="small"
:radioData="showFlag"/>
</el-form-item>
</el-row>
</el-form>
<el-row :gutter="10" class="mb8">
<span style="color: #999; font-size: 12px;margin-left: 20px " >
* 展示状态切换为定时任务根据申请展示时间自动展示或结束展示无需手动操作
</span>
</el-row>
<el-table
v-loading="loading"
:data="pmsProductShowList"
border
:header-cell-style="{'text-align': 'center'}"
:cell-style="{'text-align': 'center'}"
>
<el-table-column prop="productName" label="商品信息" show-overflow-tooltip >
<template #default="{ row }">
<span>商品名称{{ row.productName}}</span><br/>
<span>商品编号{{ row.outProductId}}</span>
</template>
</el-table-column>
<el-table-column prop="tenantName" label="租户场馆信息" show-overflow-tooltip >
<template #default="{ row }">
<span>租户名称{{ row.tenantName}}</span><br/>
<span>场馆名称{{ row.storeName}}</span>
</template>
</el-table-column>
<el-table-column prop="productCategoryName" label="上架分类" width="180" show-overflow-tooltip>
<template #default="{ row }">
<span>默认场馆商品</span><br/>
<span>商城上架分类{{ row.productCategoryName?row.productCategoryName:"待定" }}</span>
</template>
</el-table-column>
<el-table-column prop="showFlag" label="展示标识" align="center" >
<template #default="{ row }">
<el-tag :type="row.showFlag === '1' ? 'success' : 'info'" size="small">
{{ row.showFlag === '1' ? '展示' : '不展示' }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="applyStatus" label="申请状态" align="center">
<template #default="{ row }">
<el-tag
v-if="row.applyStatus === '0'"
type="warning"
size="small"
>待审核</el-tag>
<el-tag
v-else-if="row.applyStatus === '1'"
type="success"
size="small"
>审核通过</el-tag>
<el-tag
v-else-if="row.applyStatus === '2'"
type="danger"
size="small"
>审核拒绝</el-tag>
<el-tag
v-else-if="row.applyStatus === '3'"
type="primary"
size="small"
>展示中</el-tag>
<el-tag
v-else-if="row.applyStatus === '4'"
type="info"
size="small"
>展示期结束</el-tag>
<span v-else>{{ row.applyStatus }}</span>
</template>
</el-table-column>
<el-table-column prop="showStartTime" label="展示开始时间" width="120" align="center" >
<template #default="{ row }">
<span>{{ row.showStartTime?row.showStartTime.substr(0,10):"" }}</span><br/>
</template>
</el-table-column>
<el-table-column prop="showEndTime" label="展示结束时间" width="120" align="center" >
<template #default="{ row }">
<span>{{ row.showEndTime?row.showEndTime.substr(0,10):"" }}</span><br/>
</template>
</el-table-column>
<el-table-column prop="applyTime" label="申请时间" align="center" >
<template #default="{ row }">
<span>{{ row.applyTime?row.applyTime.substr(0,10):"" }}</span><br/>
<span>{{ row.applyTime?row.applyTime.substr(11,8):"" }}</span>
</template>
</el-table-column>
<el-table-column prop="reviewTime" label="审核时间" align="center" >
<template #default="{ row }">
<span>{{ row.reviewTime?row.reviewTime.substr(0,10):"" }}</span><br/>
<span>{{ row.reviewTime?row.reviewTime.substr(11,8):"" }}</span>
</template>
</el-table-column>
<el-table-column prop="sort" label="展示排序" align="center" />
<el-table-column label="操作" class-name="small-padding fixed-width">
<template #default="{ row }">
<el-button
v-if="row.applyStatus === '0' || row.applyStatus === '2' "
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(row)"
>操作
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="productDetail(row)"
>商品详情
</el-button>
</template>
</el-table-column>
</el-table>
<InBody v-show="total>0">
<pagination
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</InBody>
</div>
<!-- 添加或修改品牌管理对话框 -->
<el-dialog :title="title" :visible.sync="open" width="60%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="108px" inline class="dialog-form-one">
<el-row style="padding-bottom: 10px">
<el-form-item label="商品名称" prop="productName">
<el-input v-model="form.productName" placeholder="商品名称" disabled="disabled"/>
</el-form-item>
<el-form-item label="场馆名称" prop="storeName">
<el-input v-model="form.storeName" placeholder="场馆名称" disabled="disabled"/>
</el-form-item>
<el-form-item label="展示时间" prop="" disabled="disabled">
{{this.form.showStartTime?form.showStartTime.substring(0,10):""}}
{{this.form.showEndTime?form.showEndTime.substring(0,10):""}}
</el-form-item>
<hr style="color: #999999"/>
</el-row>
<el-row>
<el-form-item label="审核结果" prop="applyStatus">
<DictRadio v-model="form.applyStatus" size="small"
:radioData="applyStatusFlag"/>
</el-form-item>
</el-row>
<el-row v-if="form.applyStatus==1">
<el-form-item label="展示分类" prop="showCategory" >
<product-category-select v-model="form.showCategory" placeholder="请选择分类"/>
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input v-model="form.sort" placeholder="请输入排序" />
</el-form-item>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {listProductShow, refuseProductShow,passProductShow} from "@/api/pms/productShow";
import {mapGetters} from "vuex";
import ProductCategorySelect from "@/views/components/ProductCategorySelect.vue";
import ProductSelect from "@/views/mall/publishProduct/productSelect.vue";
import {number} from "echarts/lib/export";
export default {
name: "publishProduct",
components: {ProductSelect,ProductCategorySelect},
data() {
return {
//
title: "",
//
open: false,
//
form: {},
//
rules: {
applyStatus: [
{required: true, message: "选择审核结果", trigger: "change"},
],
},
show: true,
//
loading: true,
//
showSearch: true,
//
total: 0,
//
pmsProductShowList: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
},
showFlag:[
{
value: '0',
label: '未展示'
}, {
value: '1',
label: '展示'
}],
applyStatusFlag:[ {
value: '1',
label: '审核通过'
}, {
value: '2',
label: '审核拒绝'
},
],
applyStatus:[
{//
value: '0',
label: '待审核'
}, {
value: '1',
label: '审核通过'
},
{
value: '2',
label: '审核拒绝'
},
{
value: '3',
label: '展示中'
},
{
value: '4',
label: '展示期结束'
},
],
};
},
created() {
this.getList();
},
computed:{
...mapGetters(['userId']),
},
methods: {
/** 查询商品信息列表 */
getList() {
this.loading = true;
const {pageNum, pageSize} = this.queryParams;
const query = {...this.queryParams, pageNum: undefined, pageSize: undefined};
const pageReq = {page: pageNum - 1, size: pageSize};
listProductShow(query, pageReq).then(response => {
const { content, totalElements } = response
this.pmsProductShowList = content;
this.total =Number(totalElements) ;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 修改按钮操作 */
handleUpdate(row) {
this.open = true;
this.title = "审核";
this.form = JSON.parse(JSON.stringify(row));
},
productDetail(row){
this.$router.push({ path: '/product/edit', query: { id: row.productId ,readOnly:true} });
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.applyStatus == 2) {
refuseProductShow(this.form).then(response => {
this.$modal.msgSuccess("审核拒绝");
this.open = false;
this.getList();
});
}
if (this.form.applyStatus == 1)
{
this.form.showCategory= Number(this.form.showCategory);
passProductShow(this.form).then(response => {
this.$modal.msgSuccess("审核通过");
this.open = false;
this.getList();
});
}
}
});
},
cancel(){
this.open = false;
this.reset();
},
//
reset() {
this.form = {};
},
}
};
</script>

@ -71,7 +71,9 @@
<el-table-column prop="orderNum" align="center" label="排序" width="200"></el-table-column>
<el-table-column prop="status" align="center" label="状态" width="100">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
<dict-tag
prop-name="sys_normal_disable"
:value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="入驻期限" align="center" width="200">
@ -101,7 +103,6 @@
v-hasPermi="['system:dept:add']"
>新增</el-button>
<el-button
v-if="scope.row.parentId != 0"
size="mini"
type="text"
icon="el-icon-delete"

@ -99,6 +99,7 @@
<el-table v-loading="loading" :data="dataList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="租户ID" align="center" prop="tenantId" />
<el-table-column label="租户名称" align="center" prop="tenantName" :show-overflow-tooltip="true" />
<el-table-column label="联系人" align="center" prop="contactName" :show-overflow-tooltip="true" />
<el-table-column label="联系电话" align="center" prop="contactPhone" :show-overflow-tooltip="true" />
@ -295,7 +296,7 @@ export default {
this.getList()
this.msgSuccess('删除成功')
} else {
this.msgError(response.respMsg)
this.msgError(response.message)
}
}).catch(function() {})
},

Loading…
Cancel
Save