Commit 98ee2c46 authored by liwenhong's avatar liwenhong

Merge branch 'feature/activity' of...

Merge branch 'feature/activity' of https://git.yidian-inc.com:8021/bp/op-web-service into feature/activity
parents cb103968 e3a878da
...@@ -91,17 +91,16 @@ exports.addMarketing = async ctx => { ...@@ -91,17 +91,16 @@ exports.addMarketing = async ctx => {
// 编辑营销活动 // 编辑营销活动
exports.updateMarketing = async ctx => { exports.updateMarketing = async ctx => {
const url = `${ACTIVITY_URI}/marketing/background/update_marketing`; const url = `${ACTIVITY_URI}/marketing/background/update_marketing`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 营销活动详情 // 营销活动详情
exports.marketingInfo = async ctx => { exports.marketingInfo = async ctx => {
const url = `${ACTIVITY_URI}/marketing/background/marketing_info`; const url = `${ACTIVITY_URI}/marketing/background/marketing_info`;
...@@ -124,7 +123,6 @@ exports.updateActivity = async ctx => { ...@@ -124,7 +123,6 @@ exports.updateActivity = async ctx => {
body: ctx.request.body body: ctx.request.body
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
console.log(ctx.body);
}; };
// 查看活动订单 // 查看活动订单
...@@ -139,6 +137,18 @@ exports.checkActivityDetail = async ctx => { ...@@ -139,6 +137,18 @@ exports.checkActivityDetail = async ctx => {
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 查看活动订单
exports.checkActivityDetailInfo = async ctx => {
const url = `${ACTIVITY_URI}/order/background/pindan_marketing_info_data_statistics`;
const opts = {
url,
method: "GET",
json: true,
body: ctx.request.body
};
ctx.body = await req(ctx, opts);
};
// 获取自提点列表 // 获取自提点列表
exports.getPlaceList = async ctx => { exports.getPlaceList = async ctx => {
const url = `${ACTIVITY_URI}/marketing/background/take_place_list`; const url = `${ACTIVITY_URI}/marketing/background/take_place_list`;
......
...@@ -64,9 +64,10 @@ router.get(`${API_VERSION}/merchant/lifeinner/life_list`, life.get_life_list) ...@@ -64,9 +64,10 @@ router.get(`${API_VERSION}/merchant/lifeinner/life_list`, life.get_life_list)
router.post(`${API_VERSION}/merchant/authority/get_user_info`, user.getUser_detail) router.post(`${API_VERSION}/merchant/authority/get_user_info`, user.getUser_detail)
// 后台运营管理 // 后台运营管理
router.get(`${API_VERSION}/marketing/background/marketing_list`, activity.getActivityList) router.get(`${API_VERSION}/marketing/background/marketing_list`, activity.getActivityList)
router.get(`${API_VERSION}/order/background/pindan_marketing_info_data_statistics`, activity.checkActivityDetailInfo)
router.post(`${API_VERSION}/goods/background/edit_goods`, activity.editGoodsDetail) router.post(`${API_VERSION}/goods/background/edit_goods`, activity.editGoodsDetail)
router.post(`${API_VERSION}/marketing/background/update_marketing`, activity.updateActivity) router.post(`${API_VERSION}/marketing/background/update_marketing`, activity.updateActivity)
router.post(`${API_VERSION}/marketing/background/marketing_info`, activity.checkActivityDetail) router.post(`${API_VERSION}/marketing/background/marketing_info`, activity.checkActivityDetail)
// //
router.get(`${API_VERSION}/marketing/background/take_place_list`, activity.getPlaceList) router.get(`${API_VERSION}/marketing/background/take_place_list`, activity.getPlaceList)
router.post(`${API_VERSION}/marketing/background/add_take_place`, activity.addPlace) router.post(`${API_VERSION}/marketing/background/add_take_place`, activity.addPlace)
......
const request = require("request"); const request = require("request");
exports.httpReq = (ctx, opts) => { exports.httpReq = (ctx, opts) => {
opts.timeout = opts.timeout || 1000; // opts.timeout = opts.timeout || 10000;
opts.timeout = 10000;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
var time_start = +new Date(); var time_start = +new Date();
...@@ -18,7 +19,8 @@ exports.httpReq = (ctx, opts) => { ...@@ -18,7 +19,8 @@ exports.httpReq = (ctx, opts) => {
request(opts, (err, res, body) => { request(opts, (err, res, body) => {
console.info( console.info(
`[Api] httpReq (${opts.url}, user:[${opts.qs.op_cur_user `[Api] httpReq (${opts.url}, user:[${
opts.qs.op_cur_user
}]) spent: ${+new Date() - time_start}ms` }]) spent: ${+new Date() - time_start}ms`
); );
...@@ -31,5 +33,3 @@ exports.httpReq = (ctx, opts) => { ...@@ -31,5 +33,3 @@ exports.httpReq = (ctx, opts) => {
}); });
}); });
}; };
...@@ -6,39 +6,41 @@ ...@@ -6,39 +6,41 @@
element-loading-spinner="el-icon-loading" element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.8)" element-loading-background="rgba(0, 0, 0, 0.8)"
> >
<div class="activityInfo"> <div class="activityInfo-wrapper">
<div> <el-card class="activityInfo">
<p></p> <div class="infoItem">
<p>订单数量</p> <p class="infoItemText">{{ detailInfo.order_count }}</p>
</div> <p>订单数量</p>
<div> </div>
<p></p> <div class="infoItem">
<p>已售商品数量</p> <p class="infoItemText">{{ detailInfo.sold_goods_count }}</p>
</div> <p>已售商品数量</p>
<div> </div>
<p></p> <div class="infoItem">
<p>支付金额</p> <p class="infoItemText">{{ detailInfo.pay_amount_count }}</p>
</div> <p>支付金额</p>
<div> </div>
<p></p> <div class="infoItem">
<p>优惠金额</p> <p class="infoItemText">{{ detailInfo.discount_amount_count }}</p>
</div> <p>优惠金额</p>
<div> </div>
<p></p> <div class="infoItem">
<p>退款</p> <p class="infoItemText">{{ detailInfo.refund_count }}</p>
</div> <p>退款</p>
<div> </div>
<p></p> <div class="infoItem">
<p>实际收入</p> <p class="infoItemText">{{ detailInfo.real_income_count }}</p>
</div> <p>实际收入</p>
</div>
</el-card>
</div> </div>
<div class="activityDetail"> <div class="activityDetail">
<div class="my-header">
<h3>{{ marketingInfo.marketing_name }}</h3>
<p class="endTime">{{ showTimer }}</p>
</div>
<section class="content"> <section class="content">
<el-card class="activityGoods box-card"> <el-card class="activityGoods box-card">
<div class="my-header">
<h3>{{ marketingInfo.marketing_name }}</h3>
<p class="endTime">{{ showTimer }}</p>
</div>
<p class="title">拼单商品</p> <p class="title">拼单商品</p>
<div class="images-wrapper"> <div class="images-wrapper">
<div <div
...@@ -66,7 +68,7 @@ ...@@ -66,7 +68,7 @@
class="activityImage" class="activityImage"
style="width: 100%; height: 400px" style="width: 100%; height: 400px"
:src="picItem" :src="picItem"
fit="fit" fit="contain"
></el-image> ></el-image>
</el-card> </el-card>
<el-card class="activities box-card"> <el-card class="activities box-card">
...@@ -111,7 +113,8 @@ export default { ...@@ -111,7 +113,8 @@ export default {
goodsList: [], goodsList: [],
marketingInfo: {}, marketingInfo: {},
endTime: "", endTime: "",
showTimer: "" showTimer: "",
detailInfo: {}
}; };
}, },
watch: {}, watch: {},
...@@ -120,14 +123,25 @@ export default { ...@@ -120,14 +123,25 @@ export default {
async checkActivityDetail() { async checkActivityDetail() {
try { try {
this.pageLoading = true; this.pageLoading = true;
let data = await ActivityService.checkActivityDetail({ let dataArr = await Promise.all([
marketing_id: this.$route.query.marketing_id, ActivityService.checkActivityDetail({
marketing_type: this.$route.query.marketing_type marketing_id: this.$route.query.marketing_id,
}); marketing_type: this.$route.query.marketing_type
}),
ActivityService.checkActivityDetailInfo({
marketing_id: this.$route.query.marketing_id
})
]);
// let data = await ActivityService.checkActivityDetail({
// marketing_id: this.$route.query.marketing_id,
// marketing_type: this.$route.query.marketing_type
// });
this.pageLoading = false; this.pageLoading = false;
this.goodsList = data.result.goods_list; this.goodsList = dataArr[0].result.goods_list;
this.marketingInfo = data.result.marketing_info; this.marketingInfo = dataArr[0].result.marketing_info;
this.endTime = data.result.marketing_info.end_time; this.endTime = dataArr[0].result.marketing_info.end_time;
this.detailInfo = dataArr[1].result;
} catch { } catch {
this.pageLoading = false; this.pageLoading = false;
ElMessage.error("加载失败"); ElMessage.error("加载失败");
...@@ -182,18 +196,39 @@ export default { ...@@ -182,18 +196,39 @@ export default {
.wrapper { .wrapper {
height: 100%; height: 100%;
display: flex; display: flex;
justify-content: center; flex-direction: column;
justify-content: flex-start;
align-items: center;
padding: 45px 10px 0; padding: 45px 10px 0;
.activityDetail { .activityInfo {
width: 500px; width: 500px;
.my-header { /deep/ .el-card__body {
.endTime { width: 100%;
margin: 5px 0; display: flex;
font-size: 15px; flex-wrap: wrap;
color: red; }
.infoItem {
width: 33%;
text-align: center;
margin-bottom: 20px;
.infoItemText {
font-weight: bolder;
} }
// display: flex;
// align-items: center;
// justify-content: center;
} }
}
.activityDetail {
width: 500px;
.content { .content {
.my-header {
.endTime {
margin: 5px 0;
font-size: 15px;
color: red;
}
}
.box-card { .box-card {
margin: 10px 0; margin: 10px 0;
} }
......
...@@ -60,7 +60,11 @@ ...@@ -60,7 +60,11 @@
{{ scope.row.activiteHead }} {{ scope.row.activiteHead }}
</div> </div>
<div class="activityPrice"> <div class="activityPrice">
{{ ` ¥ ${scope.row.minPrice}~¥${scope.row.maxPrice} ` }} {{
scope.row.minPrice === scope.row.maxPrice
? ` ¥ ${scope.row.minPrice}`
: ` ¥ ${scope.row.minPrice}~¥${scope.row.maxPrice} `
}}
</div> </div>
</div> </div>
</template> </template>
...@@ -238,13 +242,7 @@ export default { ...@@ -238,13 +242,7 @@ export default {
status: item.online_status, status: item.online_status,
minPrice: item.min_price, minPrice: item.min_price,
maxPrice: item.max_price, maxPrice: item.max_price,
marketing_type: 4, marketing_type: 4
orderNumber: 33,
soldGoods: "",
pay: "",
discounts: "",
refund: "",
realized: "4000"
}; };
}); });
}, },
...@@ -295,7 +293,15 @@ export default { ...@@ -295,7 +293,15 @@ export default {
}; };
}, },
// 查看详情 // 查看详情
handleLook() {} handleLook(row) {
this.$router.push({
path: "/op/groupmeal/orderManagement",
query: {
marketing_id: row.activiteId,
marketing_type: row.marketing_type
}
});
}
}, },
created() { created() {
this.getActivityList(); this.getActivityList();
......
...@@ -263,7 +263,6 @@ export default { ...@@ -263,7 +263,6 @@ export default {
addCommodityPopup: false, // 添加商品弹窗状态 addCommodityPopup: false, // 添加商品弹窗状态
addCommodityTitle: "", // 标题 addCommodityTitle: "", // 标题
commodityForm: { commodityForm: {
picUrlList: [],
goods_name: "", goods_name: "",
price: "", price: "",
original_price: "", original_price: "",
...@@ -272,6 +271,7 @@ export default { ...@@ -272,6 +271,7 @@ export default {
business1: "", business1: "",
}, },
picUrlList: [],
picUploadList: [], // 上传详情图片列表 picUploadList: [], // 上传详情图片列表
isShowPopver: false, // 是否展示图片框 isShowPopver: false, // 是否展示图片框
uploadUrl: `${GOODS_URI}/ksy/ks3apiunencrypt/ks3api_upload`, // 金山云上传地址 uploadUrl: `${GOODS_URI}/ksy/ks3apiunencrypt/ks3api_upload`, // 金山云上传地址
...@@ -357,12 +357,13 @@ export default { ...@@ -357,12 +357,13 @@ export default {
// 查看商品详情 // 查看商品详情
async markGoodsInfoMet(goodSkuID) { async markGoodsInfoMet(goodSkuID) {
this.picUrlList = [];
let params = { goods_sku_id: goodSkuID, marketing_type: "4" }; let params = { goods_sku_id: goodSkuID, marketing_type: "4" };
const res = await markGoodsInfo(params); const res = await markGoodsInfo(params);
this.commodityForm = res.result.goods_info; this.commodityForm = res.result.goods_info;
this.commodityForm.business1 = res.result.goods_info.ota_id; this.commodityForm.business1 = res.result.goods_info.ota_id;
for (var i in res.result.goods_info.desc_pic_url_list) { for (var i in res.result.goods_info.desc_pic_url_list) {
this.commodityForm.picUrlList.push({ this.picUrlList.push({
url: res.result.goods_info.desc_pic_url_list[i], url: res.result.goods_info.desc_pic_url_list[i],
}); });
} }
...@@ -407,6 +408,7 @@ export default { ...@@ -407,6 +408,7 @@ export default {
this.addCommodityPopup = true; this.addCommodityPopup = true;
this.commodityForm = {}; this.commodityForm = {};
if (type == "add") { if (type == "add") {
console.log(this.editInfo);
this.commodityForm.total_amount_order = 0; this.commodityForm.total_amount_order = 0;
this.addCommodityTitle = "商品添加"; this.addCommodityTitle = "商品添加";
} else { } else {
...@@ -494,19 +496,19 @@ export default { ...@@ -494,19 +496,19 @@ export default {
} }
} }
}, },
// 获取营销活动详情 },
marketingInfoMet() {
watch: {
addProduc: function (newVal) {
let marketingId = this.$route.query.marketing_id; let marketingId = this.$route.query.marketing_id;
if (marketingId == undefined) { if (marketingId == undefined) {
return; return;
} }
this.comTableData = this.addProduc; this.comTableData = newVal;
}, },
}, },
created() { created() {
this.getBusinessListMet(); this.getBusinessListMet();
this.marketingInfoMet();
}, },
}; };
</script> </script>
......
<template> <template>
<div class="infoEditing"> <div class="infoEditing">
<el-form <el-form ref="infoEditForm" :model="infoEditForm" label-width="80px">
ref="infoEditForm"
:model="infoEditForm"
:rules="rules"
label-width="80px"
>
<el-form-item label="标题:"> <el-form-item label="标题:">
<el-input v-model="infoEditForm.title" maxlength="30"></el-input> <el-input v-model="infoEditForm.title" maxlength="30"></el-input>
</el-form-item> </el-form-item>
...@@ -50,8 +45,8 @@ export default { ...@@ -50,8 +45,8 @@ export default {
props: { props: {
editInfo: { editInfo: {
type: Object, type: Object,
required: () => {}, required: () => {}
}, }
}, },
data() { data() {
return { return {
...@@ -59,13 +54,13 @@ export default { ...@@ -59,13 +54,13 @@ export default {
title: "", // 标题 title: "", // 标题
desc: "", // 介绍 desc: "", // 介绍
picUploadList: [], // 上传详情图片列表 picUploadList: [], // 上传详情图片列表
picUrlList: [], // 图片回显列表 picUrlList: [] // 图片回显列表
}, },
propData: {}, propData: {},
isShowPopver: false, // 是否展示图片框 isShowPopver: false, // 是否展示图片框
uploadUrl: `${GOODS_URI}/ksy/ks3apiunencrypt/ks3api_upload`, // 金山云上传地址 uploadUrl: `${GOODS_URI}/ksy/ks3apiunencrypt/ks3api_upload` // 金山云上传地址
}; };
}, },
methods: { methods: {
...@@ -91,31 +86,23 @@ export default { ...@@ -91,31 +86,23 @@ export default {
// 获取营销活动详情 // 获取营销活动详情
marketingInfoMet() { marketingInfoMet() {
console.log(); let marketingId = this.$route.query.marketing_id;
this.propData = JSON.parse(localStorage.getItem('propData')); if (marketingId == undefined) {
return;
}
this.propData = JSON.parse(localStorage.getItem("propData"));
this.infoEditForm.title = this.propData.marketing_name; this.infoEditForm.title = this.propData.marketing_name;
this.infoEditForm.desc = this.propData.pindan_desc; this.infoEditForm.desc = this.propData.pindan_desc;
for (var i in this.propData.pindan_pic_url) { for (var i in this.propData.pindan_pic_url) {
this.infoEditForm.picUrlList.push({ this.infoEditForm.picUrlList.push({
url: this.propData.pindan_pic_url[i], url: this.propData.pindan_pic_url[i]
}); });
} }
}, }
}, },
watch: {
editInfo: function (newVal) {
let marketingId = this.$route.query.marketing_id;
if (marketingId == undefined) {
return;
}
localStorage.setItem('propData',JSON.stringify(newVal));
},
},
created() { created() {
this.marketingInfoMet(); this.marketingInfoMet();
}, }
}; };
</script> </script>
......
...@@ -2,6 +2,19 @@ ...@@ -2,6 +2,19 @@
<div id="map" class="mapContainer"> <div id="map" class="mapContainer">
<!-- map --> <!-- map -->
<div class="mapWrapper"> <div class="mapWrapper">
<div class="search">
<el-form-item label-position="left">
<el-button @click="handleSearch">搜索</el-button>
<el-input
class="dialog-input"
v-model="searchKey"
placeholder="请输入关键字"
autocomplete="off"
></el-input>
</el-form-item>
<div id="js-result" v-show="searchKey" class="result"></div>
</div>
<div id="js-container" class="myMap"> <div id="js-container" class="myMap">
正在加载数据 ... 正在加载数据 ...
</div> </div>
...@@ -9,6 +22,11 @@ ...@@ -9,6 +22,11 @@
<!-- info --> <!-- info -->
<div class="mapInfo"> <div class="mapInfo">
<!-- <div class="search" v-if="placeSearch">
<input type="text" placeholder="请输入关键字" v-model="searchKey" />
<button type="button" @click="handleSearch">搜索</button>
<div id="js-result" v-show="searchKey" class="result"></div>
</div> -->
<h3 class="title">拖拽选址</h3> <h3 class="title">拖拽选址</h3>
<ul class="info"> <ul class="info">
<li><span>经度:</span>{{ dragData.lng }}</li> <li><span>经度:</span>{{ dragData.lng }}</li>
...@@ -26,6 +44,7 @@ export default { ...@@ -26,6 +44,7 @@ export default {
data() { data() {
return { return {
MapCityName: "北京", MapCityName: "北京",
searchKey: "",
dragData: { dragData: {
lng: null, lng: null,
lat: null, lat: null,
...@@ -37,6 +56,12 @@ export default { ...@@ -37,6 +56,12 @@ export default {
}; };
}, },
methods: { methods: {
// 搜索
handleSearch() {
if (this.searchKey) {
this.placeSearch.search(this.searchKey);
}
},
dragMap(data) { dragMap(data) {
this.dragData = { this.dragData = {
lng: data.position.lng, lng: data.position.lng,
...@@ -54,10 +79,11 @@ export default { ...@@ -54,10 +79,11 @@ export default {
// 加载PositionPicker,loadUI的路径参数为模块名中 'ui/' 之后的部分 // 加载PositionPicker,loadUI的路径参数为模块名中 'ui/' 之后的部分
let AMapUI = (this.AMapUI = window.AMapUI); let AMapUI = (this.AMapUI = window.AMapUI);
let AMap = (this.AMap = window.AMap); let AMap = (this.AMap = window.AMap);
AMapUI.loadUI(["misc/PositionPicker"], PositionPicker => { AMapUI.loadUI(["misc/PositionPicker"], PositionPicker => {
let mapConfig = { let mapConfig = {
zoom: 16, zoom: 16
cityName: this.MapCityName // cityName: this.MapCityName
}; };
if (this.lat && this.lng) { if (this.lat && this.lng) {
mapConfig.center = [this.lng, this.lat]; mapConfig.center = [this.lng, this.lat];
...@@ -70,7 +96,7 @@ export default { ...@@ -70,7 +96,7 @@ export default {
pageSize: 5, pageSize: 5,
pageIndex: 1, pageIndex: 1,
citylimit: true, citylimit: true,
city: this.MapCityName, // city: this.MapCityName,
map: map, map: map,
panel: "js-result" panel: "js-result"
}); });
...@@ -85,6 +111,36 @@ export default { ...@@ -85,6 +111,36 @@ export default {
); );
}); });
// 地图地图定位
AMap.plugin("AMap.Geolocation", function() {
var geolocation = new AMap.Geolocation({
// 是否使用高精度定位,默认:true
enableHighAccuracy: true,
// 设置定位超时时间,默认:无穷大
timeout: 10000,
// 定位按钮的停靠位置的偏移量,默认:Pixel(10, 20)
buttonOffset: new AMap.Pixel(10, 20),
// 定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
zoomToAccuracy: true,
// 定位按钮的排放位置, RB表示右下
buttonPosition: "RB"
});
map.addControl(geolocation);
geolocation.getCurrentPosition();
AMap.event.addListener(geolocation, "complete", onComplete);
AMap.event.addListener(geolocation, "error", onError);
function onComplete(data) {
console.log(data);
// data是具体的定位信息
}
function onError(data) {
console.log(data);
// 定位出错
}
});
// 创建地图拖拽 // 创建地图拖拽
let positionPicker = new PositionPicker({ let positionPicker = new PositionPicker({
mode: "dragMap", // 设定为拖拽地图模式,可选'dragMap'、'dragMarker',默认为'dragMap' mode: "dragMap", // 设定为拖拽地图模式,可选'dragMap'、'dragMarker',默认为'dragMap'
...@@ -113,7 +169,7 @@ export default { ...@@ -113,7 +169,7 @@ export default {
// 未载入高德地图API,则先载入API再初始化 // 未载入高德地图API,则先载入API再初始化
} else { } else {
await remoteLoad( await remoteLoad(
`http://webapi.amap.com/maps?v=1.3&key=16fe8e3f4c4a6f4981626ef2cf7c759d` `http://webapi.amap.com/maps?v=1.3&key=bb057625545d8cf77df1379e7aaae0b5`
); );
await remoteLoad("http://webapi.amap.com/ui/1.0/main.js"); await remoteLoad("http://webapi.amap.com/ui/1.0/main.js");
this.initMap(); this.initMap();
...@@ -129,8 +185,18 @@ export default { ...@@ -129,8 +185,18 @@ export default {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
.mapWrapper { .mapWrapper {
position: relative;
width: 80%; width: 80%;
height: 100%; height: 100%;
.search {
position: absolute;
top: 10px;
left: 20px;
z-index: 100000;
.dialog-input {
width: 250px;
}
}
.myMap { .myMap {
height: 100%; height: 100%;
height: 500px; height: 500px;
...@@ -148,66 +214,80 @@ export default { ...@@ -148,66 +214,80 @@ export default {
} }
} }
} }
.m-map .search {
.g-wraper { position: absolute;
width: 1000px; top: 10px;
margin: 0 auto; left: 10px;
color: #666; width: 285px;
font-size: 16px; z-index: 1;
line-height: 30px;
}
.m-part {
margin-bottom: 30px;
}
.m-part::after {
content: "";
display: block;
clear: both;
}
.m-part .title {
font-size: 30px;
line-height: 60px;
margin-bottom: 10px;
color: #333;
}
.m-part .mapbox {
width: 600px;
height: 400px;
margin-bottom: 20px;
float: left;
} }
.m-part .info { .m-map .search input {
margin: 0; width: 180px;
padding: 0; border: 1px solid #ccc;
list-style: none; line-height: 20px;
line-height: 30px; padding: 5px;
margin-left: 620px; outline: none;
}
.m-part .info span {
display: block;
color: #999;
}
.m-part ol {
line-height: 40px;
margin-left: 0;
padding-left: 0;
}
.m-part pre {
padding: 10px 20px;
line-height: 30px;
border-radius: 3px;
box-shadow: 0 0 15px rgba(0, 0, 0, 0.5);
}
.m-footer {
background: #eee;
line-height: 60px;
text-align: center;
color: #999;
font-size: 12px;
}
.m-footer a {
margin: 0 5px;
color: #999;
text-decoration: none;
} }
// .g-wraper {
// width: 1000px;
// margin: 0 auto;
// color: #666;
// font-size: 16px;
// line-height: 30px;
// }
// .m-part {
// margin-bottom: 30px;
// }
// .m-part::after {
// content: "";
// display: block;
// clear: both;
// }
// .m-part .title {
// font-size: 30px;
// line-height: 60px;
// margin-bottom: 10px;
// color: #333;
// }
// .m-part .mapbox {
// width: 600px;
// height: 400px;
// margin-bottom: 20px;
// float: left;
// }
// .m-part .info {
// margin: 0;
// padding: 0;
// list-style: none;
// line-height: 30px;
// margin-left: 620px;
// }
// .m-part .info span {
// display: block;
// color: #999;
// }
// .m-part ol {
// line-height: 40px;
// margin-left: 0;
// padding-left: 0;
// }
// .m-part pre {
// padding: 10px 20px;
// line-height: 30px;
// border-radius: 3px;
// box-shadow: 0 0 15px rgba(0, 0, 0, 0.5);
// }
// .m-footer {
// background: #eee;
// line-height: 60px;
// text-align: center;
// color: #999;
// font-size: 12px;
// }
// .m-footer a {
// margin: 0 5px;
// color: #999;
// text-decoration: none;
// }
</style> </style>
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
:active="active" :active="active"
finish-status="success" finish-status="success"
space="30%" space="30%"
align-center="true" :align-center="true"
> >
<el-step title="信息编辑"></el-step> <el-step title="信息编辑"></el-step>
<el-step title="添加商品"></el-step> <el-step title="添加商品"></el-step>
...@@ -27,7 +27,10 @@ ...@@ -27,7 +27,10 @@
<spellOrderSet <spellOrderSet
ref="spellOrderSet" ref="spellOrderSet"
v-show="active === 3" v-show="active === 3"
:spellOrderSet="spellOrderSetArr" :spellOrderSetArr="spellOrderSetArr"
:startTime1="startTime"
:endTime1="endTime"
@getTakeTakePlaceListFromChild="getTakeTakePlaceListFromChild"
/> />
</div> </div>
<div class="stepsBtn"> <div class="stepsBtn">
...@@ -54,13 +57,13 @@ import spellOrderSet from "./components/spellOrderSet.vue"; ...@@ -54,13 +57,13 @@ import spellOrderSet from "./components/spellOrderSet.vue";
import { import {
addMarketing, addMarketing,
marketingInfo, marketingInfo,
updateMarketing, updateMarketing
} from "../../../service/Activity/index"; } from "../../../service/Activity/index";
export default { export default {
components: { components: {
infoEditing, infoEditing,
addProduc, addProduc,
spellOrderSet, spellOrderSet
}, },
data() { data() {
return { return {
...@@ -71,6 +74,7 @@ export default { ...@@ -71,6 +74,7 @@ export default {
spellOrderSetArr: [], spellOrderSetArr: [],
startDate: "", // 开始时间 startDate: "", // 开始时间
endDate: "", // 结束时间 endDate: "", // 结束时间
takePlaceIDArr: []
}; };
}, },
...@@ -87,12 +91,7 @@ export default { ...@@ -87,12 +91,7 @@ export default {
ElMessage.error("请填写商品标题"); ElMessage.error("请填写商品标题");
return; return;
} }
this.infoEditArr = { this.infoEditArr.title = this.$refs.infoEdit.infoEditForm.title;
title: this.$refs.infoEdit.infoEditForm.title,
desc: this.$refs.infoEdit.infoEditForm.desc,
picUploadList:
this.$refs.infoEdit.infoEditForm.picUploadList.join(","),
};
this.active = 2; this.active = 2;
} else if (this.active === 2) { } else if (this.active === 2) {
if (this.$refs.addProduc.comTableData.length == 0) { if (this.$refs.addProduc.comTableData.length == 0) {
...@@ -115,18 +114,22 @@ export default { ...@@ -115,18 +114,22 @@ export default {
} }
let params = { let params = {
marketing_id: marketingId, marketing_id: marketingId,
marketing_type: "4", marketing_type: "4"
}; };
const res = await marketingInfo(params); const res = await marketingInfo(params);
this.infoEditArr = res.result.marketing_info; this.infoEditArr = res.result.marketing_info;
this.addProducArr = res.result.goods_list; this.addProducArr = res.result.goods_list;
this.spellOrderSetArr = res.result.marketing_info; this.spellOrderSetArr = res.result.take_place;
this.startTime = res.result.marketing_info.start_time;
this.endTime = res.result.marketing_info.end_time;
localStorage.setItem("propData", JSON.stringify(this.infoEditArr));
}, },
// 取消 // 取消
cancel() { cancel() {
this.$router.go(-1); this.$router.go(-1);
}, },
// 确认发布 // 确认发布
async confirmRelease() { async confirmRelease() {
for (var i in this.addProducArr) { for (var i in this.addProducArr) {
...@@ -140,20 +143,21 @@ export default { ...@@ -140,20 +143,21 @@ export default {
? "" ? ""
: this.$route.query.marketing_id, : this.$route.query.marketing_id,
goods_sku_id: this.goodsSkuIDArr.join(","), goods_sku_id: this.goodsSkuIDArr.join(","),
marketing_name: this.infoEditArr.title, marketing_name: this.$refs.infoEdit.infoEditForm.title,
marketing_type: "4", marketing_type: "4",
op_cur_user: store.state.userInfo.email, op_cur_user: store.state.userInfo.email,
start_time: this.startDate, start_time: this.startDate,
end_time: this.endDate, end_time: this.endDate,
pindan_pic: this.infoEditArr.picUploadList, pindan_pic: this.$refs.infoEdit.infoEditForm.picUploadList.join(","),
pindan_desc: this.infoEditArr.desc, pindan_desc: this.$refs.infoEdit.infoEditForm.desc,
take_place_ids: this.takePlaceIDArr
}; };
if (this.$route.query.marketing_id == undefined) { if (this.$route.query.marketing_id == undefined) {
const res = await addMarketing(params); const res = await addMarketing(params);
if (res.code === 0) { if (res.code === 0) {
ElMessage.success({ ElMessage.success({
message: "添加成功", message: "添加成功",
type: "success", type: "success"
}); });
this.$router.push({ path: "/op/activity/manage" }); this.$router.push({ path: "/op/activity/manage" });
} else { } else {
...@@ -164,7 +168,7 @@ export default { ...@@ -164,7 +168,7 @@ export default {
if (res.code === 0) { if (res.code === 0) {
ElMessage.success({ ElMessage.success({
message: "修改成功", message: "修改成功",
type: "success", type: "success"
}); });
this.$router.push({ path: "/op/activity/manage" }); this.$router.push({ path: "/op/activity/manage" });
} else { } else {
...@@ -172,10 +176,13 @@ export default { ...@@ -172,10 +176,13 @@ export default {
} }
} }
}, },
getTakeTakePlaceListFromChild(val) {
this.takePlaceIDArr = val;
}
}, },
created() { created() {
this.marketingInfoMet(); this.marketingInfoMet();
}, }
}; };
</script> </script>
......
...@@ -24,34 +24,43 @@ export async function pindanGoods(params) { ...@@ -24,34 +24,43 @@ export async function pindanGoods(params) {
// 查看商品详情 // 查看商品详情
export async function markGoodsInfo(params) { export async function markGoodsInfo(params) {
const res = await axios.get("/api/v1/goods/background/marketing_goods_info", { const res = await axios.get("/api/v1/goods/background/marketing_goods_info", {
params params
}); });
return res; return res;
} }
// 编辑商品详情 // 编辑商品详情
export async function editGoods(params) { export async function editGoods(params) {
const res = await axios.post("/api/v1/goods/background/edit_goods",params); const res = await axios.post("/api/v1/goods/background/edit_goods", params);
return res; return res;
} }
// 添加营销活动 // 添加营销活动
export async function addMarketing(params) { export async function addMarketing(params) {
const res = await axios.post("/api/v1/marketing/background/add_marketing",params); const res = await axios.post(
return res; "/api/v1/marketing/background/add_marketing",
params
);
return res;
} }
// 编辑营销活动 // 编辑营销活动
export async function updateMarketing(params) { export async function updateMarketing(params) {
const res = await axios.post("/api/v1/marketing/background/update_marketing",params); const res = await axios.post(
return res; "/api/v1/marketing/background/update_marketing",
params
);
return res;
} }
// 营销活动详情 // 营销活动详情
export async function marketingInfo(params) { export async function marketingInfo(params) {
const res = await axios.post("/api/v1/marketing/background/marketing_info",params); const res = await axios.post(
return res; "/api/v1/marketing/background/marketing_info",
params
);
return res;
} }
class ActivityService { class ActivityService {
...@@ -92,6 +101,17 @@ class ActivityService { ...@@ -92,6 +101,17 @@ class ActivityService {
return res; return res;
} }
// 查看活动订单-- 具体信息(新添加)
static async checkActivityDetailInfo(params) {
const res = await axios.get(
"/api/v1/order/background/pindan_marketing_info_data_statistics",
{
params
}
);
return res;
}
// 获取自提点列表 // 获取自提点列表
static async getPlaceList(params) { static async getPlaceList(params) {
const res = await axios.get( const res = await axios.get(
......
const path = require('path'); const path = require("path");
const isDev = process.env.NODE_ENV === 'development'; const isDev = process.env.NODE_ENV === "development";
module.exports = { module.exports = {
outputDir: isDev outputDir: isDev ? "./dist" : path.resolve("./public/dist/"),
? './dist' publicPath: isDev ? "/" : "/dist",
: path.resolve('./public/dist/'),
publicPath: isDev ? '/' : '/dist',
configureWebpack: { configureWebpack: {
devServer: { devServer: {
proxy: 'http://localhost:8055', proxy: "http://127.0.0.1:8055", //http://localhost:8055
hot: true, hot: true,
disableHostCheck: true, disableHostCheck: true
}, }
}, },
chainWebpack: config => { chainWebpack: config => {
// 默认不开启 prefetch // 默认不开启 c
config.plugins.delete('prefetch'); config.plugins.delete("prefetch");
// 默认不开启 preload // 默认不开启 preload
config.plugins.delete('preload'); config.plugins.delete("preload");
// 修改页面 title // 修改页面 title
config.plugin('html').tap(args => { config.plugin("html").tap(args => {
args[0].title = '运营管理系统'; args[0].title = "运营管理系统";
return args; return args;
}); });
}, }
}; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment