Commit cb5bc6bd authored by lihui's avatar lihui

feat: 自提点

parent 2e10f914
......@@ -35,25 +35,25 @@ exports.pindanGoods = async ctx => {
// 查看商品详情
exports.markGoodsInfo = async ctx => {
const url = `${ACTIVITY_URI}/goods/background/marketing_goods_info`;
const opts = {
url,
method: "GET"
};
ctx.body = await req(ctx, opts);
const url = `${ACTIVITY_URI}/goods/background/marketing_goods_info`;
const opts = {
url,
method: "GET"
};
ctx.body = await req(ctx, opts);
};
// 编辑商品
exports.editGoods = async ctx => {
const url = `${ACTIVITY_URI}/goods/background/edit_goods`;
const opts = {
url,
method: "POST",
json: true,
body: ctx.request.body
};
ctx.body = await req(ctx, opts);
const url = `${ACTIVITY_URI}/goods/background/edit_goods`;
const opts = {
url,
method: "POST",
json: true,
body: ctx.request.body
};
ctx.body = await req(ctx, opts);
};
// 获取活动过列表
exports.getActivityList = async ctx => {
......@@ -79,26 +79,26 @@ exports.editGoodsDetail = async ctx => {
// 添加营销活动
exports.addMarketing = async ctx => {
const url = `${ACTIVITY_URI}/marketing/background/add_marketing`;
const opts = {
url,
method: "POST",
json: true,
body: ctx.request.body
};
ctx.body = await req(ctx, opts);
const url = `${ACTIVITY_URI}/marketing/background/add_marketing`;
const opts = {
url,
method: "POST",
json: true,
body: ctx.request.body
};
ctx.body = await req(ctx, opts);
};
// 营销活动详情
exports.marketingInfo = async ctx => {
const url = `${ACTIVITY_URI}/marketing/background/marketing_info`;
const opts = {
url,
method: "POST",
json: true,
body: ctx.request.body
};
ctx.body = await req(ctx, opts);
const url = `${ACTIVITY_URI}/marketing/background/marketing_info`;
const opts = {
url,
method: "POST",
json: true,
body: ctx.request.body
};
ctx.body = await req(ctx, opts);
};
// 关闭/开启 活动
......@@ -138,7 +138,7 @@ exports.getPlaceList = async ctx => {
// 添加自提点
exports.addPlace = async ctx => {
const url = `${ACTIVITY_URI}/marketing/background/add_take_place"`;
const url = `${ACTIVITY_URI}/marketing/background/add_take_place`;
const opts = {
url,
method: "POST",
......
......@@ -6,6 +6,32 @@
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.8)"
>
<div class="activityInfo">
<div>
<p></p>
<p>订单数量</p>
</div>
<div>
<p></p>
<p>已售商品数量</p>
</div>
<div>
<p></p>
<p>支付金额</p>
</div>
<div>
<p></p>
<p>优惠金额</p>
</div>
<div>
<p></p>
<p>退款</p>
</div>
<div>
<p></p>
<p>实际收入</p>
</div>
</div>
<div class="activityDetail">
<div class="my-header">
<h3>{{ marketingInfo.marketing_name }}</h3>
......
......@@ -79,41 +79,6 @@
width="width"
>
</el-table-column>
<el-table-column
align="center"
prop="soldGoods"
label="已售商品数量"
width="width"
>
</el-table-column>
<el-table-column
align="center"
prop="pay"
label="支付金额"
width="width"
>
</el-table-column>
<el-table-column
align="center"
prop="discounts"
label="优惠金额"
width="width"
>
</el-table-column>
<el-table-column
align="center"
prop="refund"
label="已退款金额"
width="width"
>
</el-table-column>
<el-table-column
align="center"
prop="realized"
label="实际收入"
width="width"
>
</el-table-column>
<el-table-column align="center" prop="scope" label="操作" width="250">
<template #default="scope">
<div class="button-one">
......
......@@ -47,18 +47,24 @@
<script>
import { GOODS_URI } from "../../../../../server/config";
export default {
props: ["editInfo"],
//props: ["editInfo"],
props: {
infoEditArr: {
type: Object,
required: () => {}
}
},
data() {
return {
infoEditForm: {
title: "", // 标题
desc: "", // 介绍
picUploadList: [], // 上传详情图片列表
picUploadList: [] // 上传详情图片列表
},
isShowPopver: false, // 是否展示图片框
picUrlList: [], // 图片回显列表
uploadUrl: `${GOODS_URI}/ksy/ks3apiunencrypt/ks3api_upload`, // 金山云上传地址
uploadUrl: `${GOODS_URI}/ksy/ks3apiunencrypt/ks3api_upload` // 金山云上传地址
};
},
methods: {
......@@ -81,17 +87,17 @@ export default {
this.infoEditForm.picUploadList.splice(i, 1);
}
}
},
}
},
created(){
created() {
console.log(this.editInfo);
}
};
</script>
<style scoped>
.infoEditing{
width: 64%;
margin: 0 auto;
}
</style>
\ No newline at end of file
.infoEditing {
width: 64%;
margin: 0 auto;
}
</style>
......@@ -2,11 +2,7 @@
<div id="map" class="mapContainer">
<!-- map -->
<div class="mapWrapper">
<div class="search" v-if="placeSearch">
<input type="text" placeholder="请输入关键字" v-model="searchKey" />
<button type="button" @click="handleSearch">搜索</button>
</div>
<div id="js-container" @drag="dragMap" class="myMap">
<div id="js-container" class="myMap">
正在加载数据 ...
</div>
</div>
......@@ -18,9 +14,6 @@
<li><span>经度:</span>{{ dragData.lng }}</li>
<li><span>纬度:</span>{{ dragData.lat }}</li>
<li><span>地址:</span>{{ dragData.address }}</li>
<li><span>最近的路口:</span>{{ dragData.nearestJunction }}</li>
<li><span>最近的路:</span>{{ dragData.nearestRoad }}</li>
<li><span>最近的POI:</span>{{ dragData.nearestPOI }}</li>
</ul>
</div>
</div>
......@@ -49,14 +42,15 @@ export default {
lng: data.position.lng,
lat: data.position.lat,
address: data.address,
nearestJunction: data.nearestJunction,
nearestRoad: data.nearestRoad,
nearestPOI: data.nearestPOI
province: data.regeocode.addressComponent.province,
city: data.regeocode.addressComponent.city,
area: data.regeocode.addressComponent.district
};
},
// 初始化地图
initMap() {
let that = this;
// 加载PositionPicker,loadUI的路径参数为模块名中 'ui/' 之后的部分
let AMapUI = (this.AMapUI = window.AMapUI);
let AMap = (this.AMap = window.AMap);
......@@ -69,6 +63,7 @@ export default {
mapConfig.center = [this.lng, this.lat];
}
let map = new AMap.Map("js-container", mapConfig);
// 加载地图搜索插件
AMap.service("AMap.PlaceSearch", () => {
this.placeSearch = new AMap.PlaceSearch({
......@@ -80,6 +75,7 @@ export default {
panel: "js-result"
});
});
// 启用工具条
AMap.plugin(["AMap.ToolBar"], function() {
map.addControl(
......@@ -88,19 +84,21 @@ export default {
})
);
});
// 创建地图拖拽
let positionPicker = new PositionPicker({
mode: "dragMap", // 设定为拖拽地图模式,可选'dragMap'、'dragMarker',默认为'dragMap'
map: map // 依赖地图对象
});
// 拖拽完成发送自定义 drag 事件
positionPicker.on("success", positionResult => {
// 过滤掉初始化地图后的第一次默认拖放
if (!this.dragStatus) {
this.dragStatus = true;
} else {
console.log(positionResult);
this.$emit("drag", positionResult);
this.dragMap(positionResult);
that.$emit("getMapInfo", this.dragData);
}
});
// 启动拖放
......@@ -109,7 +107,6 @@ export default {
}
},
async created() {
console.log("niohao");
// 已载入高德地图API,则直接初始化地图
if (window.AMap && window.AMapUI) {
this.initMap();
......@@ -133,7 +130,7 @@ export default {
flex-direction: row;
.mapWrapper {
width: 80%;
height: 500px;
height: 100%;
.myMap {
height: 100%;
height: 500px;
......@@ -141,6 +138,14 @@ export default {
}
.mapInfo {
width: 20%;
padding-left: 20px;
display: flex;
flex-direction: column;
justify-content: start;
align-items: flex-start;
.info {
text-align: left;
}
}
}
......
......@@ -3,25 +3,30 @@
<!-- 时间选择器 -->
<div class="spellOrderSet">
<!-- 时间选择器 -->
<span class="demonstration">拼单起止时间: </span>
<el-date-picker
v-model="startDate"
type="datetime"
minTime="startMinTime"
maxTime="startMaxTime"
placeholder="选择日期时间"
@change="changeStartTime"
>
</el-date-picker>
<el-date-picker
v-model="endDate"
type="datetime"
minTime="endMinTime"
maxTime="MaxTime"
placeholder="选择日期时间"
@change="changeEndTime"
>
</el-date-picker>
<div class="datepickerWrapper">
<span class="demonstration">拼单起止时间: </span>
<el-date-picker
class="startTimePicker"
v-model="startDate"
type="datetime"
:disabledDate="pickerOptions.disabledDateStart"
:default-value="new Date()"
placeholder="选择开始时间"
@change="changeStartTime"
>
</el-date-picker>
<el-date-picker
class="endTimePicker"
v-model="endDate"
type="datetime"
:default-value="new Date()"
placeholder="选择结束时间"
:disabledDate="pickerOptions.disabledDateEnd"
@change="changeEndTime"
>
</el-date-picker>
</div>
<!-- 自提点列表 -->
<div
class="card-wrapper"
......@@ -38,8 +43,8 @@
class="set"
v-model="selfLiftingPoint"
placeholder="自提点名称/自提点联系人"
suffix-icon="el-icon-search"
></el-input>
<el-button type="primary" @click="getPlaceList">搜索</el-button>
<el-button type="primary" @click="dialogFormVisible = true"
>添加自提点</el-button
>
......@@ -79,7 +84,7 @@
>
</el-table-column>
<el-table-column
prop="contacts"
prop="contactor"
align="center"
label="自提点联系人"
width="width"
......@@ -92,12 +97,6 @@
width="width"
>
<template #default="scope">
<el-button
type="primary"
size="small"
@click="handleModify(scope.row)"
>修改</el-button
>
<el-popconfirm
title="确定要删除此自提点吗?"
@confirm="deleteTakePlace"
......@@ -160,12 +159,16 @@
class="dialog-input"
v-model="form.location"
placeholder=""
:disabled="true"
></el-input>
<a href="javascript:;" style="margin-left: 30px"
<a
href="javascript:;"
style="margin-left: 30px"
@click="mapDialogVisible = true"
>从高德获取坐标</a
>
</el-form-item>
<p class="location">北京市朝阳区酒仙桥9号恒通国际创新园</p>
<p class="location">{{ form.location }}</p>
<el-form-item
prop="address"
label="详细地址"
......@@ -178,12 +181,12 @@
</el-form-item>
<el-form-item
label="自提点联系人"
prop="contacts"
prop="contactor"
:label-width="formLabelWidth"
>
<el-input
class="dialog-input"
v-model="form.contacts"
v-model="form.contactor"
maxlength="30"
show-word-limit
></el-input>
......@@ -211,21 +214,19 @@
<!-- 地图 dialog -->
<el-dialog
custom-class="mapDialog"
title="提示"
v-model="mapDialogVisible"
width="100%"
:before-close="handleClose"
>
<my-map class="my-map" />
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="dialogVisible = false"
>确 定</el-button
>
</span>
</template>
<my-map class="my-map" @getMapInfo="getMapInfo" />
<div class="confirmButton">
<el-button @click="mapDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="mapDialogVisible = false"
>确 定</el-button
>
</div>
</el-dialog>
{{ infoEditArr }}
</div>
</div>
</div>
......@@ -236,10 +237,36 @@ import ActivityService from "@/service/Activity/index";
import { ElMessage } from "element-plus";
import myMap from "../components/myMap.vue";
export default {
props: {
infoEditArr: {
type: Object,
required: () => {}
}
},
data() {
return {
startDate: "", //开始时间
endDate: "", // 结束时间
pickerOptions: {
disabledDateStart(time) {
let _now = Date.now();
// let three = 3 * 24 * 60 * 60 * 1000;
let threeDays = _now + 3 * 24 * 60 * 60 * 1000;
return time.getTime() < _now || time.getTime() > threeDays; //大于当前的禁止,小于3天前的禁止
},
disabledDateEnd(time) {
let _now = null;
if (this.startDate) {
_now = this.startDate;
} else {
_now = Date.now();
}
let ninety = 90 * 24 * 60 * 60 * 1000;
let ninetyDays = _now + ninety;
return time.getTime() < _now || time.getTime() > ninetyDays; //大于当前的禁止,小于90天前的禁止
}
},
defaultTime1: [new Date(2000, 1, 1, 12, 0, 0)],
startMinTime: "", // 开始时间的最小选择时间
startMaxTime: "", // 开始时间的最大选择时间
mapDialogVisible: false,
......@@ -258,7 +285,7 @@ export default {
address: [
{ required: true, message: "请输入详细地址", trigger: "blur" }
],
contacts: [
contactor: [
{ required: true, message: "请输入联系人", trigger: "blur" },
{ min: 0, max: 30, message: "长度在 0 到 30 个字符", trigger: "blur" }
],
......@@ -284,8 +311,11 @@ export default {
name: "",
location: "",
address: "",
contacts: "",
phone: ""
contactor: "",
phone: "",
province: "",
city: "",
area: ""
} // 添加自提点 详细信息
};
},
......@@ -306,8 +336,8 @@ export default {
this.pageLoading = true;
let data = await ActivityService.getPlaceList(params);
this.pageLoading = false;
this.setTableListData(data.data.list);
this.pageCount = data.data.total;
this.setTableListData(data.result.list);
this.pageCount = data.result.total;
} catch {
this.pageLoading = false;
ElMessage.error("加载失败");
......@@ -335,6 +365,7 @@ export default {
let params = Object.assign(this.form, {
take_place_id: this.id //搜索关键词
});
console.log(this.form);
try {
this.pageLoading = true;
await ActivityService.addPlace(params);
......@@ -352,7 +383,7 @@ export default {
name: item.take_place_name,
location: item.province + item.city + item.area, // p + c + a
address: item.address,
contacts: item.contact_name,
contactor: item.contact_name,
id: item.take_place_id
};
});
......@@ -369,8 +400,10 @@ export default {
if (valid) {
await this.addPlace();
this.dialogFormVisible = false;
this.$refs.ruleForm.resetFields();
} else {
console.log("error submit!!");
this.dialogFormVisible = false;
console.log("添加失败");
return false;
}
});
......@@ -399,11 +432,20 @@ export default {
// 改变结束时间
changeEndTime() {
this.$emit("getEndTime", this.endDate);
},
// 获取地图信息
getMapInfo(mapInfo) {
this.form.location = mapInfo.address;
this.form.province = mapInfo.province;
this.form.city = mapInfo.city;
this.form.area = mapInfo.area;
this.form.longitude = mapInfo.lat; // longitude latitude contactor
this.form.latitude = mapInfo.lng;
}
},
async created() {
// 初始化时间
this.startMinTime = ""; // 开始时间的最小选择时间
this.startMinTime = new Date(); // 开始时间的最小选择时间
this.startMaxTime = ""; // 开始时间的最大选择时间
this.getPlaceList();
}
......@@ -427,6 +469,12 @@ export default {
.spellOrderSet {
text-align: center;
margin: 50px 0;
.datepickerWrapper {
margin: 1px 0 30px;
}
.startTimePicker {
margin-right: 50px;
}
}
.set {
width: 50%;
......@@ -455,7 +503,12 @@ export default {
height: 80%;
margin-top: 10vh !important;
.my-map {
height: 100%;
height: 10%;
}
.confirmButton {
position: absolute;
bottom: 100px;
right: 100px;
}
}
</style>
......@@ -13,17 +13,17 @@
<el-step title="拼单设置"></el-step>
</el-steps>
<div class="content">
<<<<<<< Updated upstream
<infoEditing ref="infoEdit" v-if="active === 1" />
=======
<infoEditing ref="infoEdit" v-if="active === 1" :editInfo="infoEditArr"/>
>>>>>>> Stashed changes
<infoEditing
ref="infoEdit"
v-if="active === 1"
:infoEditArr="infoEditArr"
/>
<addProduc
ref="addProduc"
v-else-if="active === 2"
:editInfo="infoEditArr"
/>
<spellOrderSet v-else />
<spellOrderSet :infoEditArr="infoEditArr" v-else />
</div>
<div class="stepsBtn">
<el-button @click="prev" v-show="active >= 2" style="margin-right: 20px"
......@@ -91,7 +91,7 @@ export default {
}
let params = {
marketing_id: marketingId,
marketing_type: "4",
marketing_type: "4"
};
const res = await marketingInfo(params);
this.infoEditArr = res.result.marketing_info;
......@@ -112,19 +112,15 @@ export default {
start_time: "",
end_time: "",
pindan_pic: "",
pindan_desc: "",
pindan_desc: ""
});
console.log(res);
this.$router.push({ path: "/op/activity/manage" });
}
},
<<<<<<< Updated upstream
created() {}
=======
created() {
this.marketingInfoMet();
},
>>>>>>> Stashed changes
}
};
</script>
......
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