推荐直播间,修改部分代码,新增劵活动一些部分
parent
f73bdce1a1
commit
ab53a1ecc2
|
@ -14,7 +14,7 @@ export const getPromotionSeckill = params => {
|
|||
|
||||
// 是否推荐直播间
|
||||
export const whetherStar = params => {
|
||||
return getRequest(`/broadcast/studio/id/${params.id}&recommend=${params.recommend}`);
|
||||
return putRequest(`/broadcast/studio/recommend/${params.id}`,params);
|
||||
};
|
||||
|
||||
// 添加优惠券活动
|
||||
|
|
|
@ -21,10 +21,10 @@ export default {
|
|||
// buyer: "https://buyer-api.pickmall.cn",
|
||||
// seller: "https://store-api.pickmall.cn",
|
||||
// manager: "https://admin-api.pickmall.cn"
|
||||
common: 'http://192.168.0.100:8890',
|
||||
buyer: 'http://192.168.0.100:8888',
|
||||
seller: 'http://192.168.0.100:8889',
|
||||
manager: 'http://192.168.0.100:8887'
|
||||
common: 'http://192.168.0.109:8890',
|
||||
buyer: 'http://192.168.0.109:8888',
|
||||
seller: 'http://192.168.0.109:8889',
|
||||
manager: 'http://192.168.0.109:8887'
|
||||
},
|
||||
api_prod: {
|
||||
common: "https://common-api.pickmall.cn",
|
||||
|
|
|
@ -1,172 +1,180 @@
|
|||
<template>
|
||||
<div class="renovation">
|
||||
<!-- 左侧模块列表 -->
|
||||
<div class="model-list">
|
||||
<div class="classification-title">基础模块</div>
|
||||
<draggable tag="ul" :list="modelData"
|
||||
v-bind="{group:{ name:'model', pull:'clone',put:false},sort:false, ghostClass: 'ghost'}"
|
||||
@end="handleMoveEnd"
|
||||
@start="handleMoveStart"
|
||||
:move="handleMove"
|
||||
>
|
||||
<li v-for="(model, index) in modelData" :key="index" class="model-item">
|
||||
<Icon :type="model.icon" />
|
||||
<span>{{model.name}}</span>
|
||||
</li>
|
||||
</draggable>
|
||||
</div>
|
||||
<!-- 中间展示模块 -->
|
||||
<div class="show-content">
|
||||
<model-form ref="modelForm" :data="modelForm"></model-form>
|
||||
</div>
|
||||
<!-- 保存按钮 -->
|
||||
<div class="btn-bar"><Button type="primary" @click="saveTemplate">保存模板</Button> <Button @click="resetTemplate">还原模板</Button></div>
|
||||
<div class="renovation">
|
||||
<!-- 左侧模块列表 -->
|
||||
<div class="model-list">
|
||||
<div class="classification-title">基础模块</div>
|
||||
<draggable tag="ul" :list="modelData" v-bind="{group:{ name:'model', pull:'clone',put:false},sort:false, ghostClass: 'ghost'}" @end="handleMoveEnd" @start="handleMoveStart" :move="handleMove">
|
||||
<li v-for="(model, index) in modelData" :key="index" class="model-item">
|
||||
<Icon :type="model.icon" />
|
||||
<span>{{model.name}}</span>
|
||||
</li>
|
||||
</draggable>
|
||||
</div>
|
||||
<!-- 中间展示模块 -->
|
||||
<div class="show-content">
|
||||
<model-form ref="modelForm" :data="modelForm"></model-form>
|
||||
</div>
|
||||
<!-- 保存按钮 -->
|
||||
<div class="btn-bar"><Button type="primary" @click="saveTemplate">保存模板</Button> <Button @click="resetTemplate">还原模板</Button></div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { modelData } from './modelConfig';
|
||||
import { modelData } from "./modelConfig";
|
||||
import Draggable from "vuedraggable";
|
||||
import ModelForm from './modelForm.vue';
|
||||
import * as API_floor from '@/api/other.js';
|
||||
import ModelForm from "./modelForm.vue";
|
||||
import * as API_floor from "@/api/other.js";
|
||||
export default {
|
||||
components:{
|
||||
Draggable, ModelForm
|
||||
},
|
||||
mounted(){
|
||||
this.getTemplateItem(this.$route.query.id)
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
modelData, // 可选模块数据
|
||||
modelForm:{list:[]} // 模板数据
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
saveTemplate(){ // 保存模板
|
||||
this.modelForm.list.unshift(this.$refs.modelForm.navList)
|
||||
this.modelForm.list.unshift(this.$refs.modelForm.topAdvert)
|
||||
const modelForm = JSON.stringify(this.modelForm)
|
||||
const data = {
|
||||
id:this.$route.query.id,
|
||||
pageData:modelForm,
|
||||
}
|
||||
API_floor.updateHome(this.$route.query.id, data).then(res=> {
|
||||
if(res.success) {
|
||||
this.$Message.success('保存模板成功');
|
||||
} else {
|
||||
this.$Message.error(res.message)
|
||||
}
|
||||
})
|
||||
components: {
|
||||
Draggable,
|
||||
ModelForm,
|
||||
},
|
||||
mounted() {
|
||||
this.getTemplateItem(this.$route.query.id);
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
modelData, // 可选模块数据
|
||||
modelForm: { list: [] }, // 模板数据
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
saveTemplate() {
|
||||
// 保存模板
|
||||
this.$Modal.confirm({
|
||||
title: "Title",
|
||||
content: "<p>Content of dialog</p><p>Content of dialog</p>",
|
||||
onOk: () => {
|
||||
this.$Message.info("Clicked ok");
|
||||
},
|
||||
resetTemplate(){ // 还原模板
|
||||
this.getTemplateItem(this.$route.query.id)
|
||||
onCancel: () => {
|
||||
this.$Message.info("Clicked cancel");
|
||||
},
|
||||
getTemplateItem(id){ // 获取模板数据
|
||||
API_floor.getHomeData(id).then(res => {
|
||||
if (res.success) {
|
||||
let pageData = res.result.pageData;
|
||||
if(pageData) {
|
||||
pageData = JSON.parse(pageData);
|
||||
if (pageData.list[0].type === 'topAdvert') { // topAdvert 为顶部广告 navList为导航栏
|
||||
this.$refs.modelForm.topAdvert = pageData.list[0];
|
||||
this.$refs.modelForm.navList = pageData.list[1];
|
||||
pageData.list.splice(0,2)
|
||||
this.modelForm = pageData;
|
||||
} else {
|
||||
this.modelForm = {list:[]}
|
||||
}
|
||||
|
||||
} else {
|
||||
this.modelForm = {list:[]}
|
||||
}
|
||||
}
|
||||
|
||||
// this.$refs.modelForm.topAdvert = {};
|
||||
// this.$refs.modelForm.navList = {}
|
||||
})
|
||||
});
|
||||
|
||||
this.modelForm.list.unshift(this.$refs.modelForm.navList);
|
||||
this.modelForm.list.unshift(this.$refs.modelForm.topAdvert);
|
||||
const modelForm = JSON.stringify(this.modelForm);
|
||||
const data = {
|
||||
id: this.$route.query.id,
|
||||
pageData: modelForm,
|
||||
};
|
||||
API_floor.updateHome(this.$route.query.id, data).then((res) => {
|
||||
if (res.success) {
|
||||
this.$Message.success("保存模板成功");
|
||||
} else {
|
||||
this.$Message.error(res.message);
|
||||
}
|
||||
|
||||
});
|
||||
},
|
||||
watch: {
|
||||
modelForm: {
|
||||
deep: true,
|
||||
handler: function (val) {
|
||||
console.log(val)
|
||||
resetTemplate() {
|
||||
// 还原模板
|
||||
this.getTemplateItem(this.$route.query.id);
|
||||
},
|
||||
getTemplateItem(id) {
|
||||
// 获取模板数据
|
||||
API_floor.getHomeData(id).then((res) => {
|
||||
if (res.success) {
|
||||
let pageData = res.result.pageData;
|
||||
if (pageData) {
|
||||
pageData = JSON.parse(pageData);
|
||||
if (pageData.list[0].type === "topAdvert") {
|
||||
// topAdvert 为顶部广告 navList为导航栏
|
||||
this.$refs.modelForm.topAdvert = pageData.list[0];
|
||||
this.$refs.modelForm.navList = pageData.list[1];
|
||||
pageData.list.splice(0, 2);
|
||||
this.modelForm = pageData;
|
||||
} else {
|
||||
this.modelForm = { list: [] };
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.modelForm = { list: [] };
|
||||
}
|
||||
}
|
||||
|
||||
// this.$refs.modelForm.topAdvert = {};
|
||||
// this.$refs.modelForm.navList = {}
|
||||
});
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
modelForm: {
|
||||
deep: true,
|
||||
handler: function (val) {
|
||||
console.log(val);
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.renovation{
|
||||
position: relative;
|
||||
display: flex;
|
||||
.renovation {
|
||||
position: relative;
|
||||
display: flex;
|
||||
}
|
||||
.model-list{
|
||||
width: 120px;
|
||||
height:auto;
|
||||
padding: 10px;
|
||||
background: #fff;
|
||||
margin-top: 60px;
|
||||
position: fixed;
|
||||
z-index: 100;
|
||||
box-shadow: 1px 1px 10px #999;
|
||||
.classification-title{
|
||||
width: 100%;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
}
|
||||
.model-item{
|
||||
width: 100px;
|
||||
height: 30px;
|
||||
background: #eee;
|
||||
margin-top: 10px;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
color: #999;
|
||||
&:hover{
|
||||
border: 1px dashed #409EFF;
|
||||
color: #409EFF;
|
||||
cursor: move;
|
||||
}
|
||||
}
|
||||
.ghost::after{
|
||||
border:none;
|
||||
height: 0;
|
||||
content: '';
|
||||
}
|
||||
}
|
||||
.show-content{
|
||||
margin-left: 150px;
|
||||
margin-top: 60px;
|
||||
}
|
||||
.ghost{
|
||||
background: #fff;
|
||||
height: 30px;
|
||||
position: relative;
|
||||
&::after{
|
||||
content: '松开鼠标添加模块';
|
||||
position: absolute;
|
||||
background: #fff;
|
||||
border: 1px dashed #409EFF;
|
||||
color: #409EFF;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
line-height: 50px;
|
||||
}
|
||||
}
|
||||
.btn-bar{
|
||||
position: fixed;
|
||||
.model-list {
|
||||
width: 120px;
|
||||
height: auto;
|
||||
padding: 10px;
|
||||
background: #fff;
|
||||
margin-top: 60px;
|
||||
position: fixed;
|
||||
z-index: 100;
|
||||
box-shadow: 1px 1px 10px #999;
|
||||
.classification-title {
|
||||
width: 100%;
|
||||
background:#fff;
|
||||
height: 50px;
|
||||
padding: 10px;
|
||||
box-shadow: 1px 1px 10px #999;
|
||||
z-index: 99;
|
||||
top: 100px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
}
|
||||
.model-item {
|
||||
width: 100px;
|
||||
height: 30px;
|
||||
background: #eee;
|
||||
margin-top: 10px;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
color: #999;
|
||||
&:hover {
|
||||
border: 1px dashed #409eff;
|
||||
color: #409eff;
|
||||
cursor: move;
|
||||
}
|
||||
}
|
||||
.ghost::after {
|
||||
border: none;
|
||||
height: 0;
|
||||
content: "";
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
.show-content {
|
||||
margin-left: 150px;
|
||||
margin-top: 60px;
|
||||
}
|
||||
.ghost {
|
||||
background: #fff;
|
||||
height: 30px;
|
||||
position: relative;
|
||||
&::after {
|
||||
content: "松开鼠标添加模块";
|
||||
position: absolute;
|
||||
background: #fff;
|
||||
border: 1px dashed #409eff;
|
||||
color: #409eff;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
line-height: 50px;
|
||||
}
|
||||
}
|
||||
.btn-bar {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
background: #fff;
|
||||
height: 50px;
|
||||
padding: 10px;
|
||||
box-shadow: 1px 1px 10px #999;
|
||||
z-index: 99;
|
||||
top: 100px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -55,6 +55,7 @@ export default {
|
|||
},
|
||||
methods: {
|
||||
changeMenu(name) { //二级路由点击
|
||||
console.log(name)
|
||||
this.$router.push({
|
||||
name: name
|
||||
});
|
||||
|
|
|
@ -312,6 +312,7 @@ export default {
|
|||
],
|
||||
data: [], // 表单数据
|
||||
total: 0, // 表单数据总数
|
||||
selectMember: [], //保存选中的用户
|
||||
};
|
||||
},
|
||||
props: {
|
||||
|
@ -320,18 +321,66 @@ export default {
|
|||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
// 已选择用户数据
|
||||
selectedList: {
|
||||
type: null,
|
||||
default: "",
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
selectedList: {
|
||||
handler(val) {
|
||||
this.$set(this, "selectMember", JSON.parse(JSON.stringify(val)));
|
||||
this.init(this.data);
|
||||
// 将父级数据与当前组件数据进行匹配
|
||||
|
||||
},
|
||||
deep: true,
|
||||
immediate: true,
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
// 回调给父级
|
||||
callback(val, index) {
|
||||
val.___selected = !val.___selected;
|
||||
this.$set(val, "___selected", !val.___selected);
|
||||
console.log(val.___selected);
|
||||
let findUser = this.selectMember.find((item) => {
|
||||
return item.id == val.id;
|
||||
});
|
||||
// 如果没有则添加
|
||||
if (!findUser) {
|
||||
this.selectMember.push(val);
|
||||
} else {
|
||||
// 有重复数据就删除
|
||||
this.selectMember.map((item, index) => {
|
||||
if (item.id == findUser.id) {
|
||||
this.selectMember.splice(index, 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
this.$emit("callback", val);
|
||||
},
|
||||
init() {
|
||||
this.getData();
|
||||
// 初始化信息
|
||||
init(data) {
|
||||
data.forEach((item) => {
|
||||
if (this.selectMember.length != 0) {
|
||||
this.selectMember.forEach((member) => {
|
||||
if (member.id == item.id) {
|
||||
this.$set(item, "___selected", true);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.$set(item, "___selected", false);
|
||||
}
|
||||
});
|
||||
this.data = data;
|
||||
},
|
||||
changePage(v) {
|
||||
this.searchForm.pageNumber = v;
|
||||
// 此处如果是父子级传值的时候需要做一下处理
|
||||
//selectedMember
|
||||
|
||||
this.getData();
|
||||
},
|
||||
changePageSize(v) {
|
||||
|
@ -387,15 +436,13 @@ export default {
|
|||
}
|
||||
});
|
||||
},
|
||||
|
||||
//查询会员列表
|
||||
getData() {
|
||||
API_Member.getMemberListData(this.searchForm).then((res) => {
|
||||
if (res.result.records) {
|
||||
this.loading = false;
|
||||
res.result.records.forEach((item) => {
|
||||
item.___selected = false;
|
||||
});
|
||||
this.data = res.result.records;
|
||||
this.init(res.result.records);
|
||||
this.total = res.result.total;
|
||||
}
|
||||
});
|
||||
|
@ -484,7 +531,7 @@ export default {
|
|||
},
|
||||
},
|
||||
mounted() {
|
||||
this.init();
|
||||
this.getData();
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<Row>
|
||||
<Form ref="searchForm" :model="searchForm" inline :label-width="70" class="search-form">
|
||||
<Form-item label="活动名称" prop="couponName">
|
||||
<Input type="text" v-model="searchForm.couponName" placeholder="请输入活动名称" clearable style="width: 200px"/>
|
||||
<Input type="text" v-model="searchForm.couponName" placeholder="请输入活动名称" clearable style="width: 200px" />
|
||||
</Form-item>
|
||||
<Form-item label="活动状态" prop="promotionStatus">
|
||||
<Select v-model="searchForm.promotionStatus" placeholder="请选择" clearable style="width: 200px">
|
||||
|
@ -15,8 +15,7 @@
|
|||
</Select>
|
||||
</Form-item>
|
||||
<Form-item label="活动时间">
|
||||
<DatePicker v-model="selectDate" type="daterange" clearable placeholder="选择起始时间"
|
||||
style="width: 200px"></DatePicker>
|
||||
<DatePicker v-model="selectDate" type="daterange" clearable placeholder="选择起始时间" style="width: 200px"></DatePicker>
|
||||
</Form-item>
|
||||
<Button @click="handleSearch" type="primary" icon="ios-search" class="search-btn">搜索</Button>
|
||||
</Form>
|
||||
|
@ -26,21 +25,17 @@
|
|||
<Button @click="delAll">批量下架</Button>
|
||||
<!-- <Button @click="upAll" >批量上架</Button> -->
|
||||
</Row>
|
||||
<Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom"
|
||||
@on-sort-change="changeSort" @on-selection-change="changeSelect">
|
||||
<Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom" @on-sort-change="changeSort" @on-selection-change="changeSelect">
|
||||
<template slot-scope="{ row,index }" slot="action">
|
||||
<Button v-if="!checked && row.promotionStatus === 'NEW' || row.promotionStatus === 'CLOSE'" type="primary"
|
||||
size="small" style="margin-right: 10px" @click="edit(row)">编辑
|
||||
<Button v-if="!checked && row.promotionStatus === 'NEW' || row.promotionStatus === 'CLOSE'" type="primary" size="small" style="margin-right: 10px" @click="edit(row)">编辑
|
||||
</Button>
|
||||
<Button v-if="!checked && row.promotionStatus === 'START' || row.promotionStatus === 'NEW'" type="error"
|
||||
size="small" style="margin-right: 10px" @click="remove(row)">下架
|
||||
<Button v-if="!checked && row.promotionStatus === 'START' || row.promotionStatus === 'NEW'" type="error" size="small" style="margin-right: 10px" @click="remove(row)">下架
|
||||
</Button>
|
||||
</template>
|
||||
</Table>
|
||||
<Row type="flex" justify="end" class="page">
|
||||
<Page :current="searchForm.pageNumber + 1" :total="total" :page-size="searchForm.pageSize"
|
||||
@on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]"
|
||||
size="small" show-total show-elevator show-sizer></Page>
|
||||
<Page :current="searchForm.pageNumber + 1" :total="total" :page-size="searchForm.pageSize" @on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]"
|
||||
size="small" show-total show-elevator show-sizer></Page>
|
||||
</Row>
|
||||
</Card>
|
||||
</div>
|
||||
|
@ -68,7 +63,7 @@ export default {
|
|||
pageSize: 10, // 页面大小
|
||||
sort: "startTime", // 默认排序字段
|
||||
order: "desc", // 默认排序方式
|
||||
getType: '', // 默认排序方式
|
||||
getType: "", // 默认排序方式
|
||||
},
|
||||
form: {
|
||||
// 添加或编辑表单对象初始化数据
|
||||
|
@ -77,7 +72,7 @@ export default {
|
|||
// 表单验证规则
|
||||
formValidate: {
|
||||
promotionName: [
|
||||
{required: true, message: "不能为空", trigger: "blur"},
|
||||
{ required: true, message: "不能为空", trigger: "blur" },
|
||||
],
|
||||
},
|
||||
submitLoading: false, // 添加或编辑提交状态
|
||||
|
@ -94,15 +89,16 @@ export default {
|
|||
{
|
||||
title: "活动名称",
|
||||
key: "promotionName",
|
||||
width: 120,
|
||||
minWidth: 100,
|
||||
fixed: "left",
|
||||
},
|
||||
{
|
||||
title: "优惠券名称",
|
||||
key: "couponName",
|
||||
width: 120,
|
||||
tooltip: true
|
||||
}, {
|
||||
minWidth: 100,
|
||||
tooltip: true,
|
||||
},
|
||||
{
|
||||
title: "面额/折扣",
|
||||
key: "price",
|
||||
width: 120,
|
||||
|
@ -124,9 +120,11 @@ export default {
|
|||
width: 150,
|
||||
render: (h, params) => {
|
||||
return h(
|
||||
"div", params.row.receivedNum + "/" + params.row.publishNum)
|
||||
"div",
|
||||
params.row.receivedNum + "/" + params.row.publishNum
|
||||
);
|
||||
},
|
||||
minWidth:130,
|
||||
minWidth: 130,
|
||||
},
|
||||
{
|
||||
title: "优惠券类型",
|
||||
|
@ -162,20 +160,19 @@ export default {
|
|||
},
|
||||
{
|
||||
title: "活动时间",
|
||||
width: 120,
|
||||
render: (h, params) => {
|
||||
|
||||
render: (h, params) => {
|
||||
if (params.row.getType === "ACTIVITY") {
|
||||
return h("div", "长期有效");
|
||||
} else {
|
||||
return h("div", {
|
||||
domProps: {
|
||||
innerHTML: params.row.startTime + "<br/>" + params.row.endTime,
|
||||
innerHTML:
|
||||
params.row.startTime + "<br/>" + params.row.endTime,
|
||||
},
|
||||
});
|
||||
}
|
||||
},
|
||||
minWidth:150,
|
||||
},
|
||||
{
|
||||
title: "状态",
|
||||
|
@ -210,14 +207,14 @@ export default {
|
|||
),
|
||||
]);
|
||||
},
|
||||
minWidth:70,
|
||||
minWidth: 70,
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
slot: "action",
|
||||
align: "center",
|
||||
fixed: "right",
|
||||
minWidth: 140
|
||||
maxWidth: 140,
|
||||
},
|
||||
],
|
||||
data: [], // 表单数据
|
||||
|
@ -233,13 +230,13 @@ export default {
|
|||
//优惠券类型 查询参数
|
||||
getType: {
|
||||
type: String,
|
||||
default: ''
|
||||
default: "",
|
||||
},
|
||||
//已选择优惠券
|
||||
selectList: {
|
||||
selectedList: {
|
||||
type: Array,
|
||||
default: []
|
||||
}
|
||||
default: [],
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
$route(to, from) {
|
||||
|
@ -255,16 +252,27 @@ export default {
|
|||
},
|
||||
init() {
|
||||
this.getDataList();
|
||||
|
||||
// 判断是否是父级回调给自己已选择优惠券
|
||||
if (this.selectedList.length != 0) {
|
||||
// console.log(this.selectedList);
|
||||
this.selectedList.forEach((item) => {
|
||||
item._checked = true;
|
||||
item.___selected = true;
|
||||
});
|
||||
this.$set(this, "data", this.selectedList);
|
||||
console.log(this.data);
|
||||
}
|
||||
},
|
||||
add() {
|
||||
this.$router.push({name: "add-platform-coupon"});
|
||||
this.$router.push({ name: "add-platform-coupon" });
|
||||
},
|
||||
/** 跳转至领取详情页面 */
|
||||
receiveInfo(v) {
|
||||
this.$router.push({name: "member-receive-coupon", query: {id: v.id}});
|
||||
this.$router.push({ name: "member-receive-coupon", query: { id: v.id } });
|
||||
},
|
||||
info(v) {
|
||||
this.$router.push({name: "platform-coupon-info", query: {id: v.id}});
|
||||
this.$router.push({ name: "platform-coupon-info", query: { id: v.id } });
|
||||
},
|
||||
changePage(v) {
|
||||
this.searchForm.pageNumber = v - 1;
|
||||
|
@ -294,7 +302,7 @@ export default {
|
|||
changeSelect(e) {
|
||||
this.selectList = e;
|
||||
this.selectCount = e.length;
|
||||
this.checked ? this.check() : '';
|
||||
this.checked ? this.check() : "";
|
||||
},
|
||||
getDataList() {
|
||||
this.loading = true;
|
||||
|
@ -309,9 +317,9 @@ export default {
|
|||
getPlatformCouponList(this.searchForm).then((res) => {
|
||||
this.loading = false;
|
||||
if (res.success) {
|
||||
res.result.records.forEach(item => {
|
||||
item.___selected = false
|
||||
})
|
||||
res.result.records.forEach((item) => {
|
||||
item.___selected = false;
|
||||
});
|
||||
this.data = res.result.records;
|
||||
this.total = res.result.total;
|
||||
}
|
||||
|
@ -353,7 +361,7 @@ export default {
|
|||
});
|
||||
},
|
||||
edit(v) {
|
||||
this.$router.push({name: "edit-platform-coupon", query: {id: v.id}});
|
||||
this.$router.push({ name: "edit-platform-coupon", query: { id: v.id } });
|
||||
},
|
||||
remove(v) {
|
||||
this.$Modal.confirm({
|
||||
|
|
|
@ -6,12 +6,11 @@
|
|||
<h4>活动信息</h4>
|
||||
<div class="form-item-view">
|
||||
<FormItem label="活动名称" prop="promotionName">
|
||||
<Input type="text" v-model="form.promotionName" placeholder="活动名称" clearable style="width: 260px"/>
|
||||
<Input type="text" v-model="form.promotionName" placeholder="活动名称" clearable style="width: 260px" />
|
||||
</FormItem>
|
||||
|
||||
<FormItem label="活动时间">
|
||||
<DatePicker type="datetimerange" v-model="rangeTime" format="yyyy-MM-dd HH:mm:ss" placeholder="请选择"
|
||||
:options="options" style="width: 260px">
|
||||
<DatePicker type="datetimerange" v-model="rangeTime" format="yyyy-MM-dd HH:mm:ss" placeholder="请选择" :options="options" style="width: 260px">
|
||||
</DatePicker>
|
||||
</FormItem>
|
||||
|
||||
|
@ -27,15 +26,16 @@
|
|||
<Radio label="DESIGNATED">指定会员</Radio>
|
||||
</RadioGroup>
|
||||
</FormItem>
|
||||
<FormItem label="选择会员" prop="scopeType"
|
||||
v-if="form.couponActivityType==='SPECIFY' && form.activityScope==='DESIGNATED'">
|
||||
<FormItem label="选择会员" prop="scopeType" v-if="form.couponActivityType==='SPECIFY' && form.activityScope==='DESIGNATED'">
|
||||
<Button type="primary" icon="ios-add" @click="addVip" ghost>选择会员</Button>
|
||||
<div style="margin-top:24px;" v-if="form.activityScope == 'DESIGNATED'">
|
||||
<Table border :columns="userColumns" :data="this.selectedMember">
|
||||
</Table>
|
||||
</div>
|
||||
</FormItem>
|
||||
{{ selectedMember }}
|
||||
|
||||
<FormItem label="活动描述" prop="activityScopeInfo">
|
||||
<Input v-model="form.activityScopeInfo" type="textarea" :rows="4" maxlength="50" show-word-limit clearable
|
||||
style="width: 260px"/>
|
||||
<Input v-model="form.activityScopeInfo" type="textarea" :rows="4" maxlength="50" show-word-limit clearable style="width: 260px" />
|
||||
</FormItem>
|
||||
</div>
|
||||
<h4>配置优惠券</h4>
|
||||
|
@ -47,8 +47,8 @@
|
|||
|
||||
<Table border :columns="columns" :data="this.selectCouponList">
|
||||
<template slot="sendNum" slot-scope="scope">
|
||||
<Input type="text" v-model="form.couponActivityItems[scope.index].num" placeholder="赠送数量"/>
|
||||
<Input type="text" v-model="form.couponActivityItems[scope.index].couponId" v-show="false"/>
|
||||
<Input type="text" v-model="form.couponActivityItems[scope.index].num" placeholder="赠送数量" />
|
||||
<Input type="text" v-model="form.couponActivityItems[scope.index].couponId" v-show="false" />
|
||||
</template>
|
||||
</Table>
|
||||
</FormItem>
|
||||
|
@ -61,12 +61,12 @@
|
|||
</div>
|
||||
</Form>
|
||||
</Card>
|
||||
<Modal v-model="showCouponSelect" width="80%">
|
||||
<couponTemplate :checked="true" :selectList="selectCouponList" getType="ACTIVITY" @selected="selectedCoupon"/>
|
||||
<Modal @on-ok="()=>{this.showCouponSelect = false}" @on-cancel="()=>{this.showCouponSelect = false}" v-model="showCouponSelect" width="80%">
|
||||
<couponTemplate :checked="true" v-if="showCouponSelect" :selectedList="selectCouponList" getType="ACTIVITY" @selected="selectedCoupon" />
|
||||
</Modal>
|
||||
|
||||
<Modal width="1200" v-model="checkUserList">
|
||||
<userList @callback="callbackSelectUser" ref="memberLayout"/>
|
||||
<userList v-if="checkUserList" @callback="callbackSelectUser" :selectedList="selectedMember" ref="memberLayout" />
|
||||
</Modal>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -76,10 +76,7 @@ import couponTemplate from "@/views/promotion/coupon/coupon";
|
|||
|
||||
import userList from "@/views/member/list/index";
|
||||
|
||||
import {
|
||||
saveActivityCoupon,
|
||||
updateCouponActivity,
|
||||
} from "@/api/promotion";
|
||||
import { saveActivityCoupon, updateCouponActivity } from "@/api/promotion";
|
||||
|
||||
export default {
|
||||
name: "addCouponActivity",
|
||||
|
@ -89,30 +86,72 @@ export default {
|
|||
},
|
||||
data() {
|
||||
return {
|
||||
showCouponSelect: false,//显示优惠券选择框
|
||||
showCouponSelect: false, //显示优惠券选择框
|
||||
modalType: 0, // 是否编辑
|
||||
rangeTime: '',//时间区间
|
||||
checkUserList: false,//会员选择器
|
||||
selectedMember: [],//选择的会员
|
||||
rangeTime: "", //时间区间
|
||||
checkUserList: false, //会员选择器
|
||||
selectedMember: [], //选择的会员
|
||||
form: {
|
||||
promotionName: '', //活动名称
|
||||
activityScope: 'ALL', //活动范围
|
||||
couponActivityType: 'REGISTERED', //触发活动方式
|
||||
activityScopeInfo: '', //活动描述
|
||||
startTime: '', //开始时间
|
||||
endTime: '', //结束时间
|
||||
couponActivityItems: []
|
||||
|
||||
promotionName: "", //活动名称
|
||||
activityScope: "ALL", //活动范围
|
||||
couponActivityType: "REGISTERED", //触发活动方式
|
||||
activityScopeInfo: "", //活动描述
|
||||
startTime: "", //开始时间
|
||||
endTime: "", //结束时间
|
||||
couponActivityItems: [],
|
||||
}, // 表单
|
||||
id: this.$route.query.id, // 优惠券活动id
|
||||
submitLoading: false, // 添加或编辑提交状态
|
||||
selectCouponList: [],//选择的优惠券列表
|
||||
selectCouponList: [], //选择的优惠券列表
|
||||
formRule: {
|
||||
promotionName: [{required: true, message: "活动名称不能为空"}],
|
||||
rangeTime: [{required: true, message: "请选择活动有效期"}],
|
||||
description: [{required: true, message: "请输入范围描述"}],
|
||||
promotionName: [{ required: true, message: "活动名称不能为空" }],
|
||||
rangeTime: [{ required: true, message: "请选择活动有效期" }],
|
||||
description: [{ required: true, message: "请输入范围描述" }],
|
||||
},
|
||||
//优惠券表哥
|
||||
// 用户表格
|
||||
userColumns: [
|
||||
{
|
||||
title: "用户名称",
|
||||
key: "nickName",
|
||||
minWidth: 120,
|
||||
},
|
||||
{
|
||||
title: "手机号",
|
||||
key: "mobile",
|
||||
render: (h, params) => {
|
||||
return h("div", params.row.mobile || "暂未填写");
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "最后登录时间",
|
||||
key: "lastLoginDate",
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
key: "action",
|
||||
minWidth: 50,
|
||||
align: "center",
|
||||
render: (h, params) => {
|
||||
return h(
|
||||
"Button",
|
||||
{
|
||||
props: {
|
||||
size: "small",
|
||||
type: "error",
|
||||
ghost: true,
|
||||
},
|
||||
on: {
|
||||
click: () => {
|
||||
this.delUser(params.index);
|
||||
},
|
||||
},
|
||||
},
|
||||
"删除"
|
||||
);
|
||||
},
|
||||
},
|
||||
],
|
||||
//优惠券表格
|
||||
columns: [
|
||||
{
|
||||
title: "优惠券名称",
|
||||
|
@ -175,7 +214,7 @@ export default {
|
|||
},
|
||||
on: {
|
||||
click: () => {
|
||||
// this.delGoods(params.index);
|
||||
this.delCoupon(params.index);
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -194,14 +233,32 @@ export default {
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
// 删除选择的优惠券
|
||||
delUser(index) {
|
||||
this.selectedMember.splice(index, 1);
|
||||
},
|
||||
// 删除选择的优惠券
|
||||
delCoupon(index) {
|
||||
this.selectCouponList.splice(index, 1);
|
||||
},
|
||||
|
||||
// 返回已选择的用户
|
||||
callbackSelectUser(val) {
|
||||
let index = this.selectedMember.indexOf(val)
|
||||
if (index > 0) {
|
||||
this.selectedMember.remove(val);
|
||||
// 每次将返回的数据回调判断
|
||||
let findUser = this.selectedMember.find((item) => {
|
||||
return item.id == val.id;
|
||||
});
|
||||
// 如果没有则添加
|
||||
if (!findUser) {
|
||||
this.selectedMember.push(val);
|
||||
} else {
|
||||
// 有重复数据就删除
|
||||
this.selectedMember.map((item, index) => {
|
||||
if (item.id == findUser.id) {
|
||||
this.selectedMember.splice(index, 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
this.selectedMember.push(val);
|
||||
},
|
||||
|
||||
// 添加指定用户
|
||||
|
@ -218,17 +275,16 @@ export default {
|
|||
/**
|
||||
* 返回优惠券*/
|
||||
selectedCoupon(val) {
|
||||
this.selectCouponList = val
|
||||
this.selectCouponList = val;
|
||||
//清空原有数据
|
||||
this.form.couponActivityItems = [];
|
||||
val.forEach((item, index) => {
|
||||
|
||||
this.form.couponActivityItems.push({
|
||||
num: 0,
|
||||
couponId: item.id
|
||||
})
|
||||
})
|
||||
console.log(val)
|
||||
couponId: item.id,
|
||||
});
|
||||
});
|
||||
console.log(val);
|
||||
},
|
||||
|
||||
getCoupon() {
|
||||
|
@ -276,7 +332,6 @@ export default {
|
|||
},
|
||||
/** 保存平台优惠券 */
|
||||
handleSubmit() {
|
||||
|
||||
this.form.startTime = this.$options.filters.unixToDate(
|
||||
this.rangeTime[0] / 1000
|
||||
);
|
||||
|
@ -287,7 +342,7 @@ export default {
|
|||
this.$refs.form.validate((valid) => {
|
||||
if (valid) {
|
||||
const params = JSON.parse(JSON.stringify(this.form));
|
||||
console.log(params)
|
||||
console.log(params);
|
||||
this.submitLoading = true;
|
||||
if (this.modalType === 0) {
|
||||
// 添加 避免编辑后传入id等数据 记得删除
|
||||
|
@ -318,7 +373,7 @@ export default {
|
|||
this.$store.state.app.pageOpenedList
|
||||
);
|
||||
this.$router.go(-1);
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -93,7 +93,7 @@ export default {
|
|||
},
|
||||
on: {
|
||||
"on-change": () => {
|
||||
this.star(params.row,params.index);
|
||||
this.star(params.row, params.index);
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -183,19 +183,19 @@ export default {
|
|||
/**
|
||||
* 是否推荐
|
||||
*/
|
||||
async star(val,index) {
|
||||
let switched
|
||||
if(this.liveData[index].recommend){
|
||||
this.$set(this.liveData[index],'recommend',false)
|
||||
switched = false
|
||||
}
|
||||
else{
|
||||
|
||||
this.$set(this.liveData[index],'recommend',true)
|
||||
switched = true
|
||||
async star(val, index) {
|
||||
let switched;
|
||||
if (this.liveData[index].recommend) {
|
||||
this.$set(this.liveData[index], "recommend", false);
|
||||
switched = false;
|
||||
} else {
|
||||
this.$set(this.liveData[index], "recommend", true);
|
||||
switched = true;
|
||||
}
|
||||
|
||||
await whetherStar({id:val.id,recommend:switched});
|
||||
await whetherStar({ id: val.id, recommend: switched });
|
||||
|
||||
this.getStoreLives();
|
||||
},
|
||||
|
||||
/**
|
|
@ -22,10 +22,10 @@ export default {
|
|||
// buyer: 'https://buyer-api.pickmall.cn',
|
||||
// seller: 'https://store-api.pickmall.cn',
|
||||
// manager: 'https://admin-api.pickmall.cn',
|
||||
common: 'http://192.168.0.100:8890',
|
||||
buyer: 'http://192.168.0.100:8888',
|
||||
seller: 'http://192.168.0.100:8889',
|
||||
manager: 'http://192.168.0.100:8887'
|
||||
common: 'http://192.168.0.109:8890',
|
||||
buyer: 'http://192.168.0.109:8888',
|
||||
seller: 'http://192.168.0.109:8889',
|
||||
manager: 'http://192.168.0.109:8887'
|
||||
},
|
||||
api_prod: {
|
||||
common: 'https://common-api.pickmall.cn',
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
|
||||
</Modal>
|
||||
|
||||
|
||||
|
||||
<div class="step-list">
|
||||
<steps :current="activestep" simple style="height:60px;margin-top: 10px" process-status="process">
|
||||
<div class="step-view">
|
||||
|
|
|
@ -153,7 +153,6 @@ import {
|
|||
addLiveGoods,
|
||||
editLive,
|
||||
getLiveInfo,
|
||||
delLiveGoods,
|
||||
delRoomLiveGoods,
|
||||
} from "@/api/promotion";
|
||||
import liveGoods from "./liveGoods";
|
||||
|
|
|
@ -276,10 +276,10 @@ export default {
|
|||
async saveLiveGoods() {
|
||||
this.saveGoodsLoading = true;
|
||||
let submit = this.liveGoodsData.map((element) => {
|
||||
console.log(element.priceType);
|
||||
console.log(element);
|
||||
return {
|
||||
goodsId: element.goodsId, //商品id
|
||||
goodsImage: element.small, //商品图片
|
||||
goodsImage: element.small, //商品图片 必须为 300 * 300
|
||||
name: element.goodsName, //商品昵称
|
||||
price: parseInt(element.price), //商品价格
|
||||
quantity: element.quantity, //库存
|
||||
|
|
Loading…
Reference in New Issue