@@ -1,5 +1,15 @@ | |||
<template> | |||
<div class="Box"> | |||
<div class="back-box"> | |||
<van-icon | |||
class="back-icon" | |||
@click="goBack" | |||
size=".6rem" | |||
name="arrow-left" | |||
color="#fff" | |||
/> | |||
<span>营销结算</span> | |||
</div> | |||
<div class="navigation"> | |||
<div | |||
class="navigation_box" | |||
@@ -17,30 +27,41 @@ | |||
/> | |||
</div> | |||
</div> | |||
<div class="status1_Box" v-if="list.length != 0"> | |||
<div class="status_1" v-for="item in list" :key="item.id"> | |||
<div class="numBox"> | |||
<div class="numBox_left">{{ item.orderId }}</div> | |||
<div class="numBox_right"> | |||
{{ setTiem(item.createDate, "YYYY-MM-DD HH:mm:ss") }} | |||
<van-list | |||
v-model="ListLoading" | |||
:finished="finished" | |||
finished-text="没有更多了" | |||
@load="onLoad" | |||
style="background-color: #f8f8fa" | |||
> | |||
<div class="status_1" v-for="item in list" :key="item.id"> | |||
<div class="numBox"> | |||
<div class="numBox_left">{{ item.orderId }}</div> | |||
<div class="numBox_right"> | |||
{{ setTiem(item.createDate, "YYYY-MM-DD HH:mm:ss") }} | |||
</div> | |||
</div> | |||
</div> | |||
<div class="accountBox numBox"> | |||
<div class="numBox_left"> | |||
{{ item.sourceStr + " " + item.typeStr }} | |||
<div class="accountBox numBox"> | |||
<div class="numBox_left"> | |||
{{ item.sourceStr + " " + item.typeStr }} | |||
</div> | |||
<div class="numBox_right" style="color: rgba(255, 106, 106, 1)"> | |||
{{ `应收:${item.subsidyStr}` }} | |||
</div> | |||
</div> | |||
<div class="numBox_right" style="color: rgba(255, 106, 106, 1)"> | |||
{{ `应收:${item.subsidyStr}` }} | |||
<div class="backStatus_2" v-if="item.statusStr && item.status == 0"> | |||
{{ item.statusStr }} | |||
</div> | |||
<div class="backStatus_1" v-if="item.statusStr && item.status !== 0"> | |||
{{ item.statusStr }} | |||
</div> | |||
</div> | |||
<div class="backStatus_2" v-if="item.statusStr && item.status == 0"> | |||
{{ item.statusStr }} | |||
</div> | |||
<div class="backStatus_1" v-if="item.statusStr && item.status !== 0"> | |||
{{ item.statusStr }} | |||
</div> | |||
</div> | |||
</van-list> | |||
</div> | |||
<div class="pad" v-if="list.length!=0"></div> | |||
<div class="status2_Box" v-if="navigationIndex == 1 && showTiem"> | |||
<div class="beginDate" @click="beginDateShow = !beginDateShow"> | |||
{{ beginDateText }} | |||
@@ -124,7 +145,7 @@ | |||
</div> | |||
</div> | |||
<div class="noData" v-if="noData">暂无数据!</div> | |||
<div class="noData" v-if="noData&&list.length==0">暂无数据!</div> | |||
<div class="bott_sum"> | |||
<div class="text">总计应收</div> | |||
@@ -164,6 +185,8 @@ Vue.use(DatetimePicker, Popup, Toast); | |||
export default { | |||
data() { | |||
return { | |||
ListLoading: false, | |||
finished: false, | |||
navigation: [ | |||
{ | |||
name: "全部", | |||
@@ -265,14 +288,24 @@ export default { | |||
}; | |||
}, | |||
methods: { | |||
itiLsitData() {//初始化查询列表参数 | |||
this.pageNum1 = 1; | |||
//下拉加载 | |||
onLoad() { | |||
this.pageNum += 1; | |||
this.getLsit(); | |||
}, | |||
goBack() { | |||
this.$router.go(-1); | |||
}, | |||
itiLsitData() { | |||
//初始化查询列表参数 | |||
this.pageNum = 1; | |||
this.pageSize = 10; | |||
this.beginDateText = ""; | |||
this.endDateText = ""; | |||
this.source = ""; | |||
this.type = ""; | |||
this.status = ""; | |||
this.list = []; | |||
}, | |||
settleWay(value) { | |||
this.status3_index = value; | |||
@@ -295,19 +328,22 @@ export default { | |||
//第一个参数是时间戳 第二个参数是格式 参考momentJS | |||
return moment(Number(temp)).format(format); | |||
}, | |||
//点击却换导航 | |||
switchover(index) { | |||
this.navigationIndex = index; | |||
this.list = ""; | |||
switch (index) { | |||
case 0: | |||
this.noData = false; | |||
this.search(); | |||
this.beginDateText = ""; | |||
this.endDateText = ""; | |||
this.itiLsitData() | |||
this.search(); | |||
break; | |||
case 1: | |||
this.noData = false; | |||
this.showTiem = true; | |||
this.itiLsitData() | |||
this.beginDateText = "开始时间"; | |||
this.endDateText = "结束时间"; | |||
break; | |||
@@ -316,22 +352,26 @@ export default { | |||
this.showTiem = true; | |||
this.beginDateText = ""; | |||
this.endDateText = ""; | |||
this.itiLsitData() | |||
break; | |||
case 3: | |||
this.noData = false; | |||
this.showTiem = true; | |||
this.beginDateText = ""; | |||
this.endDateText = ""; | |||
this.itiLsitData() | |||
break; | |||
case 4: | |||
this.noData = false; | |||
this.showTiem = true; | |||
this.beginDateText = ""; | |||
this.endDateText = ""; | |||
this.itiLsitData() | |||
break; | |||
default: | |||
console.log("全部"); | |||
this.itiLsitData() | |||
this.search() | |||
break; | |||
} | |||
}, | |||
@@ -346,6 +386,13 @@ export default { | |||
console.log(this.endDateText, "结束"); | |||
}, | |||
getLsit() { | |||
Toast.loading({ | |||
message: "加载中...", | |||
duration: 0, // 持续展示 toast | |||
forbidClick: true, | |||
forbidClick: true, | |||
}); | |||
this.ListLoading = true; | |||
this.$http | |||
.subsidyList({ | |||
method: "get", | |||
@@ -362,9 +409,11 @@ export default { | |||
.then((res) => { | |||
const { code, data, message } = res; | |||
if (code == 200) { | |||
if (data.list.length == 0) { | |||
if(this.pageNum==1&&data.list.length==0){ | |||
this.noData = true; | |||
} | |||
Toast.clear(); | |||
this.ListLoading = false; | |||
data.list.map((item) => { | |||
item.sourceStr = | |||
this.auditWayOptions.filter((e) => e.value == item.source) | |||
@@ -379,16 +428,17 @@ export default { | |||
: ""; | |||
item.statusStr = item.status === 0 ? "未结算" : "已结算"; | |||
}); | |||
this.list = data.list; | |||
this.itiLsitData() | |||
this.list.push(...data.list); | |||
this.finished = data.list.length === 0 ? true : false; | |||
} else { | |||
Toast.clear(); | |||
Toast(message); | |||
this.itiLsitData() | |||
} | |||
}) | |||
.catch((res) => { | |||
Toast.clear(); | |||
Toast(res); | |||
this.itiLsitData() | |||
}); | |||
}, | |||
getTotal() { | |||
@@ -431,6 +481,25 @@ export default { | |||
/* background: #f6f6f6; */ | |||
overflow: hidden; | |||
} | |||
.pad{ | |||
margin-top: 2rem; | |||
} | |||
.back-box { | |||
left: 0; | |||
top: 0; | |||
z-index: 1000; | |||
width: 100%; | |||
height: 1.3rem; | |||
line-height: 1.3rem; | |||
background: #52a0fd; | |||
color: #fff; | |||
font-size: 0.43rem; | |||
text-align: center; | |||
} | |||
.back-icon { | |||
float: left; | |||
margin: 0.4rem 0 0 0.1rem; | |||
} | |||
.navigation { | |||
overflow: hidden; | |||
border-bottom: 0.01rem solid #eee; | |||
@@ -1,13 +1,22 @@ | |||
<template> | |||
<div class="Box"> | |||
<div class="back-box"> | |||
<van-icon | |||
class="back-icon" | |||
@click="goBack" | |||
size=".6rem" | |||
name="arrow-left" | |||
color="#fff" | |||
/> | |||
<span>会员核销</span> | |||
</div> | |||
<div class="topImgBox">{{ thenDate }}</div> | |||
<div style="margin-top: 1.5rem"></div> | |||
<van-list | |||
v-model="loading" | |||
:finished="finished" | |||
finished-text="没有更多了" | |||
@load="onLoad" | |||
style="background-color: #f8f8fa;" | |||
style="background-color: #f8f8fa" | |||
> | |||
<div class="bill" v-for="(item, index) in list" :key="index"> | |||
<div class="bul_Box"> | |||
@@ -21,31 +30,39 @@ | |||
</div> | |||
<div class="bul_Box"> | |||
<div class="left">券名称</div> | |||
<div class="right" style="color: #b8b8b8">{{item.title}}</div> | |||
<div class="right" style="color: #b8b8b8">{{ item.title }}</div> | |||
</div> | |||
<div class="bul_Box"> | |||
<div class="left">券码</div> | |||
<div class="right" style="color: #b8b8b8">{{item.id}}</div> | |||
<div class="right" style="color: #b8b8b8">{{ item.id }}</div> | |||
</div> | |||
<div class="bul_Box"> | |||
<div class="left">{{item.couponOrderStatus==1?'核销时间':'退款时间'}}</div> | |||
<div class="right" style="color: #b8b8b8">{{setTiem(item.updateDate,"YYYY-MM-DD HH:mm:ss")}}</div> | |||
<div class="left"> | |||
{{ item.couponOrderStatus == 1 ? "核销时间" : "退款时间" }} | |||
</div> | |||
<div class="right" style="color: #b8b8b8"> | |||
{{ setTiem(item.updateDate, "YYYY-MM-DD HH:mm:ss") }} | |||
</div> | |||
</div> | |||
<div class="bul_Box"> | |||
<div class="left">购买用户</div> | |||
<div class="right" style="color: #b8b8b8">{{item.cuserPhone}}</div> | |||
<div class="right" style="color: #b8b8b8">{{ item.cuserPhone }}</div> | |||
</div> | |||
<div class="bul_Box"> | |||
<div class="left">核销员</div> | |||
<div class="right" style="color: #b8b8b8">{{item.buserName}}</div> | |||
<div class="right" style="color: #b8b8b8">{{ item.buserName }}</div> | |||
</div> | |||
<div class="bul_Box"> | |||
<div class="left">{{item.type==8?'原价':'券面额'}}</div> | |||
<div class="right" style="color: #b8b8b8">{{item.price/100}}元</div> | |||
<div class="left">{{ item.type == 8 ? "原价" : "券面额" }}</div> | |||
<div class="right" style="color: #b8b8b8"> | |||
{{ item.price / 100 }}元 | |||
</div> | |||
</div> | |||
<div class="bul_Box"> | |||
<div class="left">{{item.type==8?'底价':'券售价'}}</div> | |||
<div class="right" style="color: #b8b8b8">{{item.couponPrice/100}}元</div> | |||
<div class="left">{{ item.type == 8 ? "底价" : "券售价" }}</div> | |||
<div class="right" style="color: #b8b8b8"> | |||
{{ item.couponPrice / 100 }}元 | |||
</div> | |||
</div> | |||
</div> | |||
</van-list> | |||
@@ -53,26 +70,32 @@ | |||
<div class="calendar" @click="show = !show"> | |||
<img src="@/assets/images/calendar.png" alt="" class="calendar_img" /> | |||
</div> | |||
<van-calendar | |||
v-model="show" | |||
color="#52a0fd" | |||
:min-date="minDate" | |||
:max-date="maxDate" | |||
@confirm="onConfirm" | |||
/> | |||
<van-popup v-model="show" position="bottom"> | |||
<van-datetime-picker | |||
v-model="currentDate" | |||
color="#52a0fd" | |||
type="date" | |||
title="选择年月日" | |||
:min-date="minDate" | |||
:max-date="maxDate" | |||
@confirm="onConfirm" | |||
@cancel="show = !show" | |||
/> | |||
</van-popup> | |||
</div> | |||
</template> | |||
<script> | |||
import { formatDate } from "@/utils/cloud-utils"; | |||
import Vue from "vue"; | |||
import { Calendar, Toast, List } from "vant"; | |||
import { DatetimePicker, Toast, List, Popup } from "vant"; | |||
import moment from "moment"; | |||
Vue.use(Calendar, Toast, List); | |||
import { fstat } from 'fs'; | |||
Vue.use(DatetimePicker, Toast, List, Popup); | |||
export default { | |||
data() { | |||
return { | |||
currentDate: new Date(), | |||
loading: false, | |||
finished: false, | |||
thenDate: "", | |||
@@ -109,6 +132,9 @@ export default { | |||
}; | |||
}, | |||
methods: { | |||
goBack() { | |||
this.$router.go(-1) | |||
}, | |||
//时间处理 | |||
setTiem(temp, format) { | |||
//第一个参数是时间戳 第二个参数是格式 参考momentJS | |||
@@ -135,7 +161,11 @@ export default { | |||
onConfirm(date) { | |||
let tmepTime = formatDate(new Date(date), "yyyy-MM-dd"); | |||
this.pitchTiem = tmepTime; | |||
console.log(this.pitchTiem); | |||
this.thenDate = tmepTime; | |||
this.pageNum = 1 ; | |||
this.list = []; | |||
this.getLsit(); | |||
this.show = false; | |||
//查询 | |||
}, | |||
getLsit() { | |||
@@ -152,9 +182,10 @@ export default { | |||
.then((res) => { | |||
const { code, data } = res; | |||
if (code == 200) { | |||
this.loading = false; | |||
this.list = this.list.concat(data.list.list); | |||
this.finished = data.list.list.length === 0; | |||
this.finished = data.list.list.length === 0?true:false; | |||
} else { | |||
Toast(message); | |||
return; | |||
@@ -179,19 +210,32 @@ export default { | |||
height: 100%; | |||
background-color: #f8f8fa; | |||
} | |||
.topImgBox { | |||
position: fixed; | |||
top: -1.4rem; | |||
.back-box { | |||
left: 0; | |||
top: 0; | |||
z-index: 1000; | |||
width: 100%; | |||
overflow: hidden; | |||
height: 2.5rem; | |||
background-image: url("../../assets/images/bannerbg.png"); | |||
background-size: 100% 2.5rem; | |||
height: 1.3rem; | |||
line-height: 1.3rem; | |||
background: #52a0fd; | |||
color: #fff; | |||
font-size: 0.43rem; | |||
text-align: center; | |||
color: #ffffff; | |||
line-height: 3.8rem; | |||
font-size: 0.5rem; | |||
} | |||
.back-icon { | |||
float: left; | |||
margin: 0.4rem 0 0 0.1rem; | |||
} | |||
.topImgBox { | |||
width: 100%; | |||
overflow: hidden; | |||
background-image: url("../../assets/images/bannerbg.png"); | |||
background-size: 100% 1.2rem; | |||
text-align: center; | |||
color: #ffffff; | |||
line-height: 1.2rem; | |||
font-size: 0.5rem; | |||
margin-bottom: 0.2rem; | |||
} | |||
.bill { | |||
width: 96%; | |||
@@ -1,40 +1,52 @@ | |||
<template> | |||
<div id="Box" v-if="list.length != 0"> | |||
<div class="detail_msg"> | |||
<img :src="list.coverImg" alt="" class="goodImg" /> | |||
<div class="titleBox"> | |||
<div class="name">{{ list.title }}</div> | |||
<div class="time">{{ `有效期至${createDate}` }}</div> | |||
</div> | |||
</div> | |||
<div class="tiemBox"> | |||
<div class="getTime">领券时间</div> | |||
<div class="timeSuffix">{{ expiredTime }}</div> | |||
</div> | |||
<div class="ticket tiemBox"> | |||
<div class="getTime">券码</div> | |||
<div class="timeSuffix">{{ list.id }}</div> | |||
</div> | |||
<div class="tiemBox activity"> | |||
<div class="getTime">活动规则</div> | |||
<img src="@/assets/images/jian.png" alt="" class="timeSuffix_img" /> | |||
<div class="back-box"> | |||
<van-icon | |||
class="back-icon" | |||
@click="goBack" | |||
size=".6rem" | |||
name="arrow-left" | |||
color="#fff" | |||
/> | |||
<span>会员核销</span> | |||
</div> | |||
<div class="tiemBox"> | |||
<div class="getTime">券面额</div> | |||
<div class="timeSuffix">{{ list.price / 100 }}</div> | |||
</div> | |||
<div class="tiemBox"> | |||
<div class="getTime">券售价</div> | |||
<div class="selling timeSuffix">{{ list.salePrice / 100 }}</div> | |||
</div> | |||
<div class="tiemBox"> | |||
<div class="getTime">券状态</div> | |||
<div class="timeSuffix sellingStatus"> | |||
{{ gstTicketState(list.couponOrderStatus) }} | |||
<div class="lisr_box"> | |||
<div class="detail_msg"> | |||
<img :src="list.coverImg" alt="" class="goodImg" /> | |||
<div class="titleBox"> | |||
<div class="name">{{ list.title }}</div> | |||
<div class="time">{{ `有效期至${createDate}` }}</div> | |||
</div> | |||
</div> | |||
<div class="tiemBox"> | |||
<div class="getTime">领券时间</div> | |||
<div class="timeSuffix">{{ expiredTime }}</div> | |||
</div> | |||
<div class="ticket tiemBox"> | |||
<div class="getTime">券码</div> | |||
<div class="timeSuffix">{{ list.id }}</div> | |||
</div> | |||
<div class="tiemBox activity"> | |||
<div class="getTime">活动规则</div> | |||
<img src="@/assets/images/jian.png" alt="" class="timeSuffix_img" /> | |||
</div> | |||
<div class="tiemBox"> | |||
<div class="getTime">券面额</div> | |||
<div class="timeSuffix">{{ list.price / 100 }}</div> | |||
</div> | |||
<div class="tiemBox"> | |||
<div class="getTime">券售价</div> | |||
<div class="selling timeSuffix">{{ list.salePrice / 100 }}</div> | |||
</div> | |||
<div class="tiemBox"> | |||
<div class="getTime">券状态</div> | |||
<div class="timeSuffix sellingStatus"> | |||
{{ gstTicketState(list.couponOrderStatus) }} | |||
</div> | |||
</div> | |||
</div> | |||
<div class="user" @click="ifuse">使用</div> | |||
<div class="user" @click="ifuse">使用</div> | |||
</div> | |||
</div> | |||
</template> | |||
@@ -69,10 +81,13 @@ export default { | |||
}; | |||
}, | |||
methods: { | |||
goBack() { | |||
this.$router.go(-1); | |||
}, | |||
ifuse() { | |||
Toast.loading({ | |||
duration: 0, // 持续展示 toast | |||
forbidClick: true, | |||
duration: 0, // 持续展示 toast | |||
forbidClick: true, | |||
message: "加载中...", | |||
forbidClick: true, | |||
}); | |||
@@ -87,15 +102,15 @@ export default { | |||
.then((res) => { | |||
const { code, message, data } = res; | |||
if (code == 200) { | |||
Toast.clear(); | |||
Toast.clear(); | |||
this.$router.push("/accomplish"); | |||
} else { | |||
Toast.clear(); | |||
Toast.clear(); | |||
Toast(message); | |||
} | |||
}) | |||
.catch((res) => { | |||
Toast.clear(); | |||
Toast.clear(); | |||
Toast(res); | |||
}); | |||
}, | |||
@@ -125,11 +140,29 @@ export default { | |||
<style scoped> | |||
#Box { | |||
width: 96%; | |||
margin: 0 2%; | |||
height: 100%; | |||
overflow: hidden; | |||
} | |||
.back-box { | |||
left: 0; | |||
top: 0; | |||
z-index: 1000; | |||
width: 100%; | |||
height: 1.3rem; | |||
line-height: 1.3rem; | |||
background: #52a0fd; | |||
color: #fff; | |||
font-size: 0.43rem; | |||
text-align: center; | |||
} | |||
.back-icon { | |||
float: left; | |||
margin: 0.4rem 0 0 0.1rem; | |||
} | |||
.lisr_box { | |||
width: 96%; | |||
margin: 0 2%; | |||
} | |||
.detail_msg { | |||
width: 100%; | |||
overflow: hidden; | |||
@@ -1,28 +1,40 @@ | |||
<template> | |||
<div class="Box"> | |||
<div class="back-box"> | |||
<van-icon | |||
class="back-icon" | |||
@click="goBack" | |||
size=".6rem" | |||
name="arrow-left" | |||
color="#fff" | |||
/> | |||
<span>会员核销</span> | |||
</div> | |||
<div class="backBox"> | |||
<div class="timeBox"> | |||
<div class="timeBox_left"> | |||
<div style="color: #999; padding-bottom: 0.5rem">开始时间</div> | |||
<div @click="startTiemShow=!startTiemShow">{{startTiem}}</div> | |||
<div @click="startTiemShow = !startTiemShow">{{ startTiem }}</div> | |||
</div> | |||
<div class="timeBox_centre" style="color: #999">至</div> | |||
<div class="timeBox_right"> | |||
<div style="color: #999; padding-bottom: 0.5rem">结束时间</div> | |||
<div @click="endTiemShow =!endTiemShow">{{endTiem}}</div> | |||
<div @click="endTiemShow = !endTiemShow">{{ endTiem }}</div> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="inquire" @click="search()">查询</div> | |||
<div class="acounts"> | |||
<div class="title">收款总计(元)</div> | |||
<div class="num">{{(sum_real_payment1+sum_real_payment2+sum_real_payment3)/100}}</div> | |||
<div class="title1">{{`${list.length} 笔`}}</div> | |||
<div class="num"> | |||
{{ (sum_real_payment1 + sum_real_payment2 + sum_real_payment3) / 100 }} | |||
</div> | |||
<div class="title1">{{ `${list.length} 笔` }}</div> | |||
<div class="billBox"> | |||
<div class="billBox_left"> | |||
<div>已到账(元)</div> | |||
<div style="color: #333; font-weight: bold; padding-bottom: 0.5rem"> | |||
{{(sum_real_payment2+sum_real_payment3)/100}} | |||
{{ (sum_real_payment2 + sum_real_payment3) / 100 }} | |||
</div> | |||
</div> | |||
<div class="billBox_right"> | |||
@@ -30,181 +42,274 @@ | |||
<div | |||
style="color: #ff6a6a; font-weight: bold; padding-bottom: 0.5rem" | |||
> | |||
{{sum_real_payment1/100}} | |||
{{ sum_real_payment1 / 100 }} | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="content" v-for="(item,index) in list" :key="index"> | |||
<div class="content_left"> | |||
<div class="customer">{{item.onickName}}</div> | |||
<div style="font-size: 0.36rem;">{{setTiem(item.createDate,"YYYY-MM-DD HH:mm:ss")}}</div> | |||
</div> | |||
<div class="content_rigth"> | |||
<div class="price">{{`¥${item.deductionAmount/100}`}}</div> | |||
<div style="color: red">{{`实收 ¥${item.realPayment/100}`}}</div> | |||
<van-list | |||
v-model="ListLoading" | |||
:finished="finished" | |||
finished-text="没有更多了" | |||
@load="onLoad" | |||
style="background-color: #f8f8fa" | |||
> | |||
<div class="content" v-for="(item, index) in list" :key="index"> | |||
<div class="content_left"> | |||
<div class="customer">{{ item.onickName }}</div> | |||
<div style="font-size: 0.36rem"> | |||
{{ setTiem(item.createDate, "YYYY-MM-DD HH:mm:ss") }} | |||
</div> | |||
</div> | |||
<div class="content_rigth"> | |||
<div class="price">{{ `¥${item.deductionAmount / 100}` }}</div> | |||
<div style="color: red">{{ `实收 ¥${item.realPayment / 100}` }}</div> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="noData">暂无数据</div> | |||
<van-calendar | |||
</van-list> | |||
<!-- <van-calendar | |||
v-model="startTiemShow" | |||
color="#52a0fd" | |||
:min-date="startMinDate" | |||
:max-date="startMaxDate" | |||
@confirm="onConfirm1" | |||
/> | |||
<van-calendar | |||
/> --> | |||
<van-popup v-model="startTiemShow" position="bottom"> | |||
<van-datetime-picker | |||
v-model="currentDate1" | |||
color="#52a0fd" | |||
type="date" | |||
title="选择年月日" | |||
:min-date="startMinDate" | |||
:max-date="startMaxDate" | |||
@confirm="onConfirm1" | |||
@cancel="startTiemShow = !startTiemShow" | |||
/> | |||
</van-popup> | |||
<van-popup v-model="endTiemShow" position="bottom"> | |||
<van-datetime-picker | |||
v-model="currentDate2" | |||
color="#52a0fd" | |||
type="date" | |||
title="选择年月日" | |||
:min-date="endMinDate" | |||
:max-date="endMaxDate" | |||
@confirm="onConfirm2" | |||
@cancel="endTiemShow = !endTiemShow" | |||
/> | |||
</van-popup> | |||
<!-- <van-calendar | |||
v-model="endTiemShow" | |||
color="#52a0fd" | |||
:min-date="endMinDate" | |||
:max-date="endMaxDate" | |||
@confirm="onConfirm2" | |||
/> | |||
/> --> | |||
</div> | |||
</template> | |||
<script> | |||
import { formatDate } from "@/utils/cloud-utils"; | |||
import moment from "moment"; | |||
import Vue from "vue"; | |||
import { Calendar,Toast } from "vant"; | |||
import{ mapState} from "vuex"; | |||
Vue.use(Calendar,Toast); | |||
import { DatetimePicker, Toast, List } from "vant"; | |||
import { mapState } from "vuex"; | |||
Vue.use(DatetimePicker, Toast, List); | |||
export default { | |||
data() { | |||
return { | |||
ListLoading: false, | |||
finished: false, | |||
currentDate1: new Date(), | |||
currentDate2: new Date(), | |||
startTiemShow: false, | |||
endTiemShow: false, | |||
startTiem: formatDate(new Date() ,"yyyy-MM-dd") , | |||
endTiem:formatDate(new Date() ,"yyyy-MM-dd"), | |||
startMinDate:new Date(2015, 0, 1), | |||
startMaxDate:new Date(2025, 0, 1), | |||
endMinDate:new Date(2015, 0, 1), | |||
endMaxDate:new Date(2025, 0, 1), | |||
startTiem: formatDate(new Date(), "yyyy-MM-dd"), | |||
endTiem: formatDate(new Date(), "yyyy-MM-dd"), | |||
startMinDate: new Date(2015, 0, 1), | |||
startMaxDate: new Date(2025, 0, 1), | |||
endMinDate: new Date(2015, 0, 1), | |||
endMaxDate: new Date(2025, 0, 1), | |||
sum_real_payment1: 0, | |||
sum_real_payment2: 0, | |||
sum_real_payment3:0, | |||
pageNum:1, | |||
pageSize:10, | |||
list:[], | |||
startdate: moment(new Date().getTime()).format("YYYY-MM-DD")+' 00:00:00', | |||
enddate: moment(new Date().getTime()).format("YYYY-MM-DD")+' 23:59:59', | |||
sum_real_payment3: 0, | |||
pageNum: 1, | |||
pageSize: 10, | |||
list: [], | |||
startdate: | |||
moment(new Date().getTime()).format("YYYY-MM-DD") + " 00:00:00", | |||
enddate: moment(new Date().getTime()).format("YYYY-MM-DD") + " 23:59:59", | |||
}; | |||
}, | |||
computed: { | |||
...mapState(['merchant_id']) | |||
...mapState(["merchant_id"]), | |||
}, | |||
methods: { | |||
//下拉加载 | |||
onLoad() { | |||
this.pageNum += 1; | |||
this.itiSearch(); | |||
}, | |||
goBack() { | |||
this.$router.go(-1); | |||
}, | |||
//根据时间查找 | |||
search(){ | |||
search() { | |||
this.list = []; | |||
this.pageNum = 1; | |||
this.payMum1(); | |||
this.payMum2(); | |||
this.payMum3(); | |||
this.getCardPay(); | |||
}, | |||
//初始化查询表格 | |||
itiSearch(){ | |||
this.payMum1(); | |||
this.payMum2(); | |||
this.payMum3(); | |||
this.getCardPay(); | |||
}, | |||
//查询消费卡扫码记录列表 | |||
//查询消费卡扫码记录列表 | |||
getCardPay() { | |||
this.$http.cardPayList({ | |||
methods: "get", | |||
params: { | |||
pageNum:this.pageNum, | |||
pageSize:this.pageSize, | |||
startdate: this.startdate, | |||
enddate: this.enddate, | |||
}, | |||
}).then(res=>{ | |||
const {code,message,data} = res | |||
if(code ==200){ | |||
this.list = data.list | |||
}else{ | |||
Toast(message); | |||
} | |||
}).catch(res=>{ | |||
Toast(res); | |||
}) | |||
this.ListLoading = true; | |||
this.$http | |||
.cardPayList({ | |||
methods: "get", | |||
params: { | |||
pageNum: this.pageNum, | |||
pageSize: this.pageSize, | |||
startdate: this.startdate, | |||
enddate: this.enddate, | |||
}, | |||
}) | |||
.then((res) => { | |||
const { code, message, data } = res; | |||
if (code == 200) { | |||
this.ListLoading = false; | |||
this.finished = data.list.length === 0?true:false; | |||
this.list.push(...data.list) ; | |||
} else { | |||
Toast(message); | |||
} | |||
}) | |||
.catch((res) => { | |||
Toast(res); | |||
}); | |||
}, | |||
payMum1(){ | |||
this.$http.payMum({ | |||
methods: "get", | |||
params:{ | |||
merchantId: this.merchant_id, | |||
startdate: moment(new Date().getTime()).format("YYYY-MM-DD")+' 00:00:00', | |||
enddate: moment(new Date().getTime()).format("YYYY-MM-DD")+' 23:59:59', | |||
payStatus:0 | |||
} | |||
}).then(res=>{ | |||
const{code , data,message}=res | |||
if(code==200){ | |||
this.sum_real_payment1= Number(data.length!=0?res.data[0].sum_real_payment:0) | |||
}else{ | |||
Toast(message); | |||
} | |||
}) | |||
payMum1() { | |||
this.$http | |||
.payMum({ | |||
methods: "get", | |||
params: { | |||
merchantId: this.merchant_id, | |||
startdate: this.startdate, | |||
enddate: this.enddate, | |||
payStatus: 0, | |||
}, | |||
}) | |||
.then((res) => { | |||
const { code, data, message } = res; | |||
if (code == 200) { | |||
this.sum_real_payment1 = Number( | |||
data.length != 0 ? res.data[0].sum_real_payment : 0 | |||
); | |||
} else { | |||
Toast(message); | |||
} | |||
}); | |||
}, | |||
payMum2(){ | |||
this.$http.payMum({ | |||
methods: "get", | |||
params:{ | |||
merchantId: this.merchant_id, | |||
startdate: moment(new Date().getTime()).format("YYYY-MM-DD")+' 00:00:00', | |||
enddate: moment(new Date().getTime()).format("YYYY-MM-DD")+' 23:59:59', | |||
payStatus:1 | |||
} | |||
}).then(res=>{ | |||
const{code , data,message}=res | |||
if(code==200){ | |||
this.sum_real_payment2= Number(data.length!=0?res.data[0].sum_real_payment:0) | |||
}else{ | |||
Toast(message); | |||
} | |||
}) | |||
payMum2() { | |||
this.$http | |||
.payMum({ | |||
methods: "get", | |||
params: { | |||
merchantId: this.merchant_id, | |||
startdate: this.startdate, | |||
enddate: this.enddate, | |||
payStatus: 1, | |||
}, | |||
}) | |||
.then((res) => { | |||
const { code, data, message } = res; | |||
if (code == 200) { | |||
this.sum_real_payment2 = Number( | |||
data.length != 0 ? res.data[0].sum_real_payment : 0 | |||
); | |||
} else { | |||
Toast(message); | |||
} | |||
}); | |||
}, | |||
payMum3(){ | |||
this.$http.payMum({ | |||
methods: "get", | |||
params:{ | |||
merchantId: this.merchant_id, | |||
startdate: moment(new Date().getTime()).format("YYYY-MM-DD")+' 00:00:00', | |||
enddate: moment(new Date().getTime()).format("YYYY-MM-DD")+' 23:59:59', | |||
payStatus:2 | |||
} | |||
}).then(res=>{ | |||
const{code , data,message}=res | |||
if(code==200){ | |||
this.sum_real_payment3= Number(data.length!=0?res.data[0].sum_real_payment:0) | |||
}else{ | |||
Toast(message); | |||
} | |||
}) | |||
payMum3() { | |||
this.$http | |||
.payMum({ | |||
methods: "get", | |||
params: { | |||
merchantId: this.merchant_id, | |||
startdate: this.startdate, | |||
enddate: this.enddate, | |||
payStatus: 2, | |||
}, | |||
}) | |||
.then((res) => { | |||
const { code, data, message } = res; | |||
if (code == 200) { | |||
this.sum_real_payment3 = Number( | |||
data.length != 0 ? res.data[0].sum_real_payment : 0 | |||
); | |||
} else { | |||
Toast(message); | |||
} | |||
}); | |||
}, | |||
onConfirm1(date){ | |||
const tmepTime = formatDate(new Date(date), "yyyy-MM-dd") | |||
this.startTiem = tmepTime | |||
this.startTiemShow = false | |||
this.startdate = tmepTime +' 00:00:00' | |||
console.log(this.startTiem ,"????"); | |||
onConfirm1(date) { | |||
const tmepTime = formatDate(new Date(date), "yyyy-MM-dd"); | |||
this.startTiem = tmepTime; | |||
this.startTiemShow = false; | |||
this.startdate = tmepTime + " 00:00:00"; | |||
console.log(this.startTiem, "????"); | |||
}, | |||
onConfirm2(date){ | |||
const tmepTime = formatDate(new Date(date), "yyyy-MM-dd") | |||
this.endTiem = tmepTime | |||
this.endTiemShow = false | |||
this.enddate = tmepTime+' 23:59:59' | |||
console.log(this.endTiem ,"????"); | |||
onConfirm2(date) { | |||
const tmepTime = formatDate(new Date(date), "yyyy-MM-dd"); | |||
this.endTiem = tmepTime; | |||
this.endTiemShow = false; | |||
this.enddate = tmepTime + " 23:59:59"; | |||
console.log(this.endTiem, "????"); | |||
}, | |||
//时间处理 | |||
setTiem(temp,format){//第一个参数是时间戳 第二个参数是格式 参考momentJS | |||
return moment(Number(temp)).format(format) | |||
} | |||
setTiem(temp, format) { | |||
//第一个参数是时间戳 第二个参数是格式 参考momentJS | |||
return moment(Number(temp)).format(format); | |||
}, | |||
}, | |||
mounted() { | |||
this.itiSearch(); | |||
}, | |||
mounted(){ | |||
this.search() | |||
} | |||
}; | |||
</script> | |||
<style scoped> | |||
.Box { | |||
background: #f6f6f6; | |||
height: 100%; | |||
} | |||
.back-box { | |||
left: 0; | |||
top: 0; | |||
z-index: 1000; | |||
width: 100%; | |||
height: 1.3rem; | |||
line-height: 1.3rem; | |||
background: #52a0fd; | |||
color: #fff; | |||
font-size: 0.43rem; | |||
text-align: center; | |||
} | |||
.back-icon { | |||
float: left; | |||
margin: 0.4rem 0 0 0.1rem; | |||
} | |||
.timeBox { | |||
overflow: hidden; | |||
@@ -307,7 +412,7 @@ export default { | |||
line-height: 1rem; | |||
text-align: left; | |||
} | |||
.customer{ | |||
.customer { | |||
color: #000; | |||
font-size: 0.48rem; | |||
line-height: 0.48rem; | |||
@@ -325,8 +430,8 @@ export default { | |||
padding: 0.3rem 0; | |||
color: #999; | |||
} | |||
.noData{ | |||
line-height: 2rem; | |||
text-align: center; | |||
.noData { | |||
line-height: 2rem; | |||
text-align: center; | |||
} | |||
</style> |
@@ -1,5 +1,15 @@ | |||
<template> | |||
<div class="Box"> | |||
<div class="back-box"> | |||
<van-icon | |||
class="back-icon" | |||
@click="goBack" | |||
size=".6rem" | |||
name="arrow-left" | |||
color="#fff" | |||
/> | |||
<span>消费卡收款</span> | |||
</div> | |||
<div class="RqBox"> | |||
<div class="text">扫描二维码向我付款</div> | |||
<div class="Rq" ref="RqCode"></div> | |||
@@ -21,6 +31,9 @@ export default { | |||
...mapState(['merchant_id_scan']) | |||
}, | |||
methods: { | |||
goBack() { | |||
this.$router.go(-1) | |||
}, | |||
goToday() { | |||
this.$router.push("/todayConsume"); | |||
}, | |||
@@ -46,7 +59,23 @@ export default { | |||
.Box { | |||
background-color: #52a0fd; | |||
overflow: hidden; | |||
height: 100vh; | |||
height: 100%; | |||
} | |||
.back-box { | |||
left: 0; | |||
top: 0; | |||
z-index: 1000; | |||
width: 100%; | |||
height: 1.3rem; | |||
line-height: 1.3rem; | |||
background: #52a0fd; | |||
color: #fff; | |||
font-size: 0.43rem; | |||
text-align: center; | |||
} | |||
.back-icon { | |||
float: left; | |||
margin: 0.4rem 0 0 0.1rem; | |||
} | |||
.RqBox { | |||
width: 94%; | |||
@@ -64,7 +93,6 @@ export default { | |||
color: rgba(51, 51, 51, 1); | |||
} | |||
.Rq { | |||
background-color: bisque; | |||
width: 6rem; | |||
height: 5rem; | |||
margin: 1rem auto; | |||
@@ -1,5 +1,17 @@ | |||
<template> | |||
<div class="Box"> | |||
<div class="back-box"> | |||
<van-icon | |||
class="back-icon" | |||
@click="goBack" | |||
size=".6rem" | |||
name="arrow-left" | |||
color="#fff" | |||
/> | |||
<span>会员核销</span> | |||
</div> | |||
<div class="topbox"> | |||
<div class="title">今日收款总额(元)</div> | |||
<div class="num">{{(sum_real_payment1+sum_real_payment2+sum_real_payment3)/100}}</div> | |||
@@ -53,11 +65,20 @@ export default { | |||
...mapState(['merchant_id']) | |||
}, | |||
methods: { | |||
goBack() { | |||
this.$router.go(-1) | |||
}, | |||
goCurrent() { | |||
this.$router.push("/current"); | |||
}, | |||
//查询消费卡扫码记录列表 | |||
getCardPay() { | |||
Toast.loading({ | |||
message: "加载中...", | |||
duration: 0, // 持续展示 toast | |||
forbidClick: true, | |||
forbidClick: true, | |||
}); | |||
this.$http.cardPayList({ | |||
methods: "get", | |||
params: { | |||
@@ -69,11 +90,14 @@ export default { | |||
}).then(res=>{ | |||
const {code,message,data} = res | |||
if(code ==200){ | |||
Toast.clear(); | |||
this.list = data.list | |||
}else{ | |||
Toast.clear(); | |||
Toast(message); | |||
} | |||
}).catch(res=>{ | |||
Toast.clear(); | |||
Toast(res); | |||
}) | |||
}, | |||
@@ -148,9 +172,26 @@ export default { | |||
<style scoped> | |||
.Box { | |||
height: 100%; | |||
overflow: hidden; | |||
font-size: 0.42rem; | |||
} | |||
.back-box { | |||
left: 0; | |||
top: 0; | |||
z-index: 1000; | |||
width: 100%; | |||
height: 1.3rem; | |||
line-height: 1.3rem; | |||
background: #52a0fd; | |||
color: #fff; | |||
font-size: 0.43rem; | |||
text-align: center; | |||
} | |||
.back-icon { | |||
float: left; | |||
margin: 0.4rem 0 0 0.1rem; | |||
} | |||
.topbox { | |||
background-color: #52a0fd; | |||
color: rgba(255, 255, 255, 1); | |||
@@ -1,5 +1,15 @@ | |||
<template> | |||
<div class="box"> | |||
<div class="back-box"> | |||
<van-icon | |||
class="back-icon" | |||
@click="goBack" | |||
size=".6rem" | |||
name="arrow-left" | |||
color="#fff" | |||
/> | |||
<span>会员核销</span> | |||
</div> | |||
<div class="case"> | |||
<div class="text">券码</div> | |||
<span class="line"></span> | |||
@@ -18,9 +28,9 @@ | |||
<script> | |||
import Vue from "vue"; | |||
import { Toast } from "vant"; | |||
import { Toast, Icon } from "vant"; | |||
Vue.use(Toast); | |||
Vue.use(Toast, Icon); | |||
export default { | |||
data() { | |||
return { | |||
@@ -29,6 +39,9 @@ export default { | |||
}; | |||
}, | |||
methods: { | |||
goBack() { | |||
this.$router.go(-1) | |||
}, | |||
search() { | |||
if (this.codeText == "" || this.codeText.length == 0) { | |||
Toast("券码不能为空"); | |||
@@ -74,12 +87,28 @@ export default { | |||
}; | |||
</script> | |||
<style lang="less" scoped> | |||
<style scoped> | |||
.box { | |||
// overflow: hidden; | |||
height: 100%; | |||
background: #f6f6f6; | |||
} | |||
.back-box { | |||
left: 0; | |||
top: 0; | |||
z-index: 1000; | |||
width: 100%; | |||
height: 1.3rem; | |||
line-height: 1.3rem; | |||
background: #52a0fd; | |||
color: #fff; | |||
font-size: 0.43rem; | |||
text-align: center; | |||
} | |||
.back-icon { | |||
float: left; | |||
margin: 0.4rem 0 0 0.1rem; | |||
} | |||
.case { | |||
width: 96%; | |||
margin: 30% 2%; | |||
@@ -1,11 +1,20 @@ | |||
<template> | |||
<div class="Box"> | |||
<div class="back-box"> | |||
<van-icon | |||
class="back-icon" | |||
@click="goBack" | |||
size=".6rem" | |||
name="arrow-left" | |||
color="#fff" | |||
/> | |||
<span>会员积分</span> | |||
</div> | |||
<div class="inquireBox"> | |||
<div class="text">手机号</div> | |||
<input type="text" class="phone" placeholder="请输入" v-model="phone"/> | |||
<input type="text" class="phone" placeholder="请输入" v-model="phone" /> | |||
</div> | |||
<div class="but" @click="goUserMessage">提交</div> | |||
</div> | |||
</template> | |||
<script> | |||
@@ -13,35 +22,82 @@ import Vue from "vue"; | |||
import { Toast } from "vant"; | |||
Vue.use(Toast); | |||
export default { | |||
data() { | |||
return { | |||
phone:'', | |||
} | |||
data() { | |||
return { | |||
phone: "", | |||
}; | |||
}, | |||
methods: { | |||
goBack() { | |||
this.$router.go(-1); | |||
}, | |||
goUserMessage() { | |||
const str = /^1[0-9]{10}$/; | |||
if (str.test(this.phone)) { | |||
this.getUserInfo() | |||
} else { | |||
Toast("请输入正确手机号!"); | |||
} | |||
}, | |||
methods: { | |||
goUserMessage(){ | |||
const str = /^1[0-9]{10}$/ | |||
if(str.test(this.phone)){ | |||
this.$router.push({ | |||
path:"/userMessage", | |||
query:{ | |||
phone:this.phone | |||
} | |||
}) | |||
}else{ | |||
Toast("请输入正确手机号!"); | |||
getUserInfo() { | |||
Toast.loading({ | |||
message: "加载中...", | |||
duration: 0, // 持续展示 toast | |||
forbidClick: true, | |||
forbidClick: true, | |||
}); | |||
this.$http | |||
.findByPhone({ | |||
methods: "get", | |||
params: { | |||
phone: this.phone, | |||
}, | |||
}) | |||
.then((res) => { | |||
const { code, data, message } = res; | |||
if (code == 200) { | |||
Toast.clear(); | |||
this.$router.push({ | |||
path: "/userMessage", | |||
query: { | |||
phone: this.phone, | |||
}, | |||
}); | |||
} else { | |||
Toast.clear(); | |||
Toast(message); | |||
} | |||
// this.$router.push('/userMessage') | |||
} | |||
}) | |||
.catch((res) => { | |||
Toast.clear(); | |||
Toast(res); | |||
}); | |||
}, | |||
} | |||
}, | |||
}; | |||
</script> | |||
<style scoped> | |||
.Box { | |||
height: 100%; | |||
background: #f6f6f6; | |||
} | |||
.back-box { | |||
left: 0; | |||
top: 0; | |||
z-index: 1000; | |||
width: 100%; | |||
height: 1.3rem; | |||
line-height: 1.3rem; | |||
background: #52a0fd; | |||
color: #fff; | |||
font-size: 0.43rem; | |||
text-align: center; | |||
} | |||
.back-icon { | |||
float: left; | |||
margin: 0.4rem 0 0 0.1rem; | |||
} | |||
.inquireBox { | |||
width: 96%; | |||
margin: 0 2%; | |||
@@ -65,19 +121,19 @@ export default { | |||
margin-top: 0.3rem; | |||
margin-right: 0.3rem; | |||
} | |||
.but{ | |||
width: 96; | |||
margin: 0 2%; | |||
text-align: center; | |||
line-height: 1.3rem; | |||
border-radius: 0.1rem; | |||
background: #52a0fd; | |||
color: #ffffff; | |||
margin-top: 1.6rem; | |||
.but { | |||
width: 96; | |||
margin: 0 2%; | |||
text-align: center; | |||
line-height: 1.3rem; | |||
border-radius: 0.1rem; | |||
background: #52a0fd; | |||
color: #ffffff; | |||
margin-top: 1.6rem; | |||
} | |||
.consumption_num{ | |||
float: right; | |||
.consumption_num { | |||
float: right; | |||
width: 6rem; | |||
line-height: 1.26rem; | |||
font-size: 0.3rem; | |||
@@ -85,5 +141,4 @@ float: right; | |||
margin-top: 0.3rem; | |||
margin-right: 0.3rem; | |||
} | |||
</style> |
@@ -1,5 +1,15 @@ | |||
<template> | |||
<div> | |||
<div class="Box"> | |||
<div class="back-box"> | |||
<van-icon | |||
class="back-icon" | |||
@click="goBack" | |||
size=".6rem" | |||
name="arrow-left" | |||
color="#fff" | |||
/> | |||
<span >会员积分</span> | |||
</div> | |||
<member-public :data="rule"/> | |||
</div> | |||
</template> | |||
@@ -18,9 +28,35 @@ export default { | |||
} | |||
}, | |||
methods: { | |||
goBack() { | |||
this.$router.go(-1) | |||
}, | |||
goDetails(){ | |||
this.$router.push('/integralParticulars') | |||
} | |||
}, | |||
} | |||
</script> | |||
</script> | |||
<style scoped> | |||
.Box{ | |||
height: 100%; | |||
} | |||
.back-box { | |||
left: 0; | |||
top: 0; | |||
z-index: 1000; | |||
width: 100%; | |||
height: 1.3rem; | |||
line-height: 1.3rem; | |||
background: #52a0fd; | |||
color: #fff; | |||
font-size: 0.43rem; | |||
text-align: center; | |||
} | |||
.back-icon { | |||
float: left; | |||
margin: 0.4rem 0 0 0.1rem; | |||
} | |||
</style> |
@@ -1,5 +1,15 @@ | |||
<template> | |||
<div class="Box"> | |||
<div class="back-box"> | |||
<van-icon | |||
class="back-icon" | |||
@click="goBack" | |||
size=".6rem" | |||
name="arrow-left" | |||
color="#fff" | |||
/> | |||
<p>会员积分</p> | |||
</div> | |||
<div class="topBg"></div> | |||
<div class="textBox"> | |||
<div class="chieBox"> | |||
@@ -61,10 +71,19 @@ export default { | |||
control(data){ | |||
this.addBackFalg = data | |||
}, | |||
goBack() { | |||
this.$router.go(-1) | |||
}, | |||
//提交添加积分 | |||
addIntegral() { | |||
const reg = /(^[1-9]\d*(\.\d{1,2})?$)|(^0(\.\d{1,2})?$)/; | |||
if (reg.test(this.consumption)) { | |||
Toast.loading({ | |||
message: "加载中...", | |||
duration: 0, // 持续展示 toast | |||
forbidClick: true, | |||
forbidClick: true, | |||
}); | |||
this.$http.addCredit({ | |||
method: "POST", | |||
data: { | |||
@@ -79,12 +98,14 @@ export default { | |||
}).then(res=>{ | |||
const {code ,data,message} = res | |||
if(code == 200){ | |||
console.log(6666666666); | |||
Toast.clear(); | |||
this.addBackFalg = true | |||
}else{ | |||
Toast.clear(); | |||
Toast(message) | |||
} | |||
}).catch(res=>{ | |||
Toast.clear(); | |||
Toast(res) | |||
}) | |||
} else { | |||
@@ -125,11 +146,13 @@ export default { | |||
}) | |||
.then((res) => { | |||
const { code, data, message } = res; | |||
if (code == 200) { | |||
this.list = data; | |||
console.log(data); | |||
} else { | |||
Toast(message); | |||
this.goBack() | |||
} | |||
}) | |||
.catch((res) => { | |||
@@ -150,32 +173,53 @@ export default { | |||
background: #f6f6f6; | |||
height: 100%; | |||
} | |||
.back-box { | |||
left: 0; | |||
top: 0; | |||
z-index: 1000; | |||
width: 100%; | |||
height: 1.3rem; | |||
line-height: 1.3rem; | |||
background: #52a0fd; | |||
color: #fff; | |||
font-size: 0.43rem; | |||
text-align: center; | |||
overflow: hidden; | |||
} | |||
.back-icon { | |||
float: left; | |||
margin: 0.4rem 0 0 0.1rem; | |||
} | |||
.topBg { | |||
height: 0.8rem; | |||
background-image: url("../../../assets/images/bannerbg.png"); | |||
background-size: 100% 0.8rem; | |||
} | |||
.textBox { | |||
width: 96; | |||
margin: 0 2%; | |||
width: 96%; | |||
margin: 0.2rem 2%; | |||
border-radius: 0.2rem; | |||
border: 1px solid #eaeaea; | |||
margin-top: -0.2rem; | |||
z-index: 10; | |||
box-shadow: 0 6px 20px 0 rgba(0, 0, 0, 0.15); | |||
margin-top: 0.2rem; | |||
} | |||
.chieBox { | |||
overflow: hidden; | |||
background-color: #fff; | |||
height: 1.25rem; | |||
} | |||
.left { | |||
float: left; | |||
color: #999999; | |||
height: 1.25rem; | |||
line-height: 1.25rem; | |||
padding-left: 0.3rem; | |||
} | |||
.right { | |||
float: right; | |||
height: 1.25rem; | |||
line-height: 1.25rem; | |||
padding-right: 0.3rem; | |||
} | |||
@@ -1,11 +1,20 @@ | |||
<template> | |||
<div class="Box"> | |||
<div class="back-box"> | |||
<van-icon | |||
class="back-icon" | |||
@click="goBack" | |||
size=".6rem" | |||
name="arrow-left" | |||
color="#fff" | |||
/> | |||
<span>会员赠券</span> | |||
</div> | |||
<div class="inquireBox"> | |||
<div class="text">手机号</div> | |||
<input type="text" class="phone" placeholder="请输入" v-model="phone"/> | |||
<input type="text" class="phone" placeholder="请输入" v-model="phone" /> | |||
</div> | |||
<div class="but" @click="goUserMessage">提交</div> | |||
</div> | |||
</template> | |||
<script> | |||
@@ -13,35 +22,82 @@ import Vue from "vue"; | |||
import { Toast } from "vant"; | |||
Vue.use(Toast); | |||
export default { | |||
data() { | |||
return { | |||
phone:'', | |||
} | |||
data() { | |||
return { | |||
phone: "", | |||
}; | |||
}, | |||
methods: { | |||
goBack() { | |||
this.$router.go(-1); | |||
}, | |||
goUserMessage() { | |||
const str = /^1[0-9]{10}$/; | |||
if (str.test(this.phone)) { | |||
this.getUserInfo(); | |||
} else { | |||
Toast("请输入正确手机号!"); | |||
} | |||
// this.$router.push('/ticketDetails') | |||
}, | |||
methods: { | |||
goUserMessage(){ | |||
const str = /^1[0-9]{10}$/ | |||
if(str.test(this.phone)){ | |||
this.$router.push({ | |||
path:"/ticketDetails", | |||
query:{ | |||
phone:this.phone | |||
} | |||
}) | |||
}else{ | |||
Toast("请输入正确手机号!"); | |||
getUserInfo() { | |||
Toast.loading({ | |||
message: "加载中...", | |||
duration: 0, // 持续展示 toast | |||
forbidClick: true, | |||
forbidClick: true, | |||
}); | |||
this.$http | |||
.findByPhone({ | |||
methods: "get", | |||
params: { | |||
phone: this.phone, | |||
}, | |||
}) | |||
.then((res) => { | |||
const { code, data, message } = res; | |||
if (code == 200) { | |||
Toast.clear(); | |||
this.$router.push({ | |||
path: "/ticketDetails", | |||
query: { | |||
phone: this.phone, | |||
}, | |||
}); | |||
} else { | |||
Toast.clear(); | |||
Toast(message); | |||
} | |||
// this.$router.push('/ticketDetails') | |||
} | |||
}) | |||
.catch((res) => { | |||
Toast.clear(); | |||
Toast(res); | |||
}); | |||
}, | |||
} | |||
}, | |||
}; | |||
</script> | |||
<style scoped> | |||
.Box { | |||
height: 100%; | |||
background: #f6f6f6; | |||
} | |||
.back-box { | |||
left: 0; | |||
top: 0; | |||
z-index: 1000; | |||
width: 100%; | |||
height: 1.3rem; | |||
line-height: 1.3rem; | |||
background: #52a0fd; | |||
color: #fff; | |||
font-size: 0.43rem; | |||
text-align: center; | |||
} | |||
.back-icon { | |||
float: left; | |||
margin: 0.4rem 0 0 0.1rem; | |||
} | |||
.inquireBox { | |||
width: 96%; | |||
margin: 0 2%; | |||
@@ -65,19 +121,19 @@ export default { | |||
margin-top: 0.3rem; | |||
margin-right: 0.3rem; | |||
} | |||
.but{ | |||
width: 96; | |||
margin: 0 2%; | |||
text-align: center; | |||
line-height: 1.3rem; | |||
border-radius: 0.1rem; | |||
background: #52a0fd; | |||
color: #ffffff; | |||
margin-top: 1.6rem; | |||
.but { | |||
width: 96; | |||
margin: 0 2%; | |||
text-align: center; | |||
line-height: 1.3rem; | |||
border-radius: 0.1rem; | |||
background: #52a0fd; | |||
color: #ffffff; | |||
margin-top: 1.6rem; | |||
} | |||
.consumption_num{ | |||
float: right; | |||
.consumption_num { | |||
float: right; | |||
width: 6rem; | |||
line-height: 1.26rem; | |||
font-size: 0.3rem; | |||
@@ -85,5 +141,4 @@ float: right; | |||
margin-top: 0.3rem; | |||
margin-right: 0.3rem; | |||
} | |||
</style> |
@@ -1,26 +1,60 @@ | |||
<template> | |||
<div> | |||
<member-public :data="rule"/> | |||
<div class="Box"> | |||
<div class="back-box"> | |||
<van-icon | |||
class="back-icon" | |||
@click="goBack" | |||
size=".6rem" | |||
name="arrow-left" | |||
color="#fff" | |||
/> | |||
<span>会员赠券</span> | |||
<member-public :data="rule" /> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
import memberPublic from '../memberPublic' | |||
import memberPublic from "../memberPublic"; | |||
export default { | |||
components:{memberPublic}, | |||
data() { | |||
return { | |||
rule:{ | |||
QrText:"识别会员码", | |||
manuallyText:'查询手机号', | |||
manuallyClick:this.goDetails | |||
} | |||
} | |||
components: { memberPublic }, | |||
data() { | |||
return { | |||
rule: { | |||
QrText: "识别会员码", | |||
manuallyText: "查询手机号", | |||
manuallyClick: this.goDetails, | |||
}, | |||
}; | |||
}, | |||
methods: { | |||
goBack() { | |||
this.$router.go(-1); | |||
}, | |||
methods: { | |||
goDetails(){ | |||
this.$router.push('/chPhone') | |||
} | |||
goDetails() { | |||
this.$router.push("/chPhone"); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style scoped> | |||
.Box { | |||
height: 100%; | |||
} | |||
</script> | |||
.back-box { | |||
left: 0; | |||
top: 0; | |||
z-index: 1000; | |||
width: 100%; | |||
height: 1.3rem; | |||
line-height: 1.3rem; | |||
background: #52a0fd; | |||
color: #fff; | |||
font-size: 0.43rem; | |||
text-align: center; | |||
} | |||
.back-icon { | |||
float: left; | |||
margin: 0.4rem 0 0 0.1rem; | |||
} | |||
</style> |
@@ -1,5 +1,15 @@ | |||
<template> | |||
<div class="Box"> | |||
<div class="back-box"> | |||
<van-icon | |||
class="back-icon" | |||
@click="Back" | |||
size=".6rem" | |||
name="arrow-left" | |||
color="#fff" | |||
/> | |||
<span>会员赠券</span> | |||
</div> | |||
<div class="topBg"></div> | |||
<div class="textBox"> | |||
<div class="chieBox"> | |||
@@ -19,36 +29,45 @@ | |||
<img src="@/assets/images/jiaoyi.png" alt="" class="noDataImg" /> | |||
<div style="color: #999">暂无可赠送优惠券</div> | |||
</div> | |||
<div | |||
class="ticketListBox" | |||
v-for="(item, index) in ticketList" | |||
:key="index" | |||
@click="setSign(index)" | |||
<van-list | |||
v-model="ListLoading" | |||
:finished="finished" | |||
finished-text="没有更多了" | |||
@load="onLoad" | |||
style="background-color: #f8f8fa" | |||
> | |||
<div class="ticketList"> | |||
<img | |||
v-if="item.sign" | |||
src="@/assets/images/selected2.png" | |||
alt="" | |||
class="ticketListImg" | |||
/> | |||
<div class="nameBox"> | |||
<div class="nameBox_left">{{ item.title }}</div> | |||
<div class="nameBox_right">{{ "库存:" + item.merchantRemain }}</div> | |||
</div> | |||
<div class="validity"> | |||
{{ | |||
item.validStartDate != undefined | |||
? `有效期:${setTiem( | |||
item.validStartDate, | |||
"YYYY-MM-DD HH:mm:ss" | |||
)}至${setTiem(item.validEndDate, "YYYY-MM-DD HH:mm:ss")}` | |||
: "有效期:自领取后" + item.validDays + "日内有效" | |||
}} | |||
<div | |||
class="ticketListBox" | |||
v-for="(item, index) in ticketList" | |||
:key="index" | |||
@click="setSign(index)" | |||
> | |||
<div class="ticketList"> | |||
<img | |||
v-if="item.sign" | |||
src="@/assets/images/selected2.png" | |||
alt="" | |||
class="ticketListImg" | |||
/> | |||
<div class="nameBox"> | |||
<div class="nameBox_left">{{ item.title }}</div> | |||
<div class="nameBox_right"> | |||
{{ "库存:" + item.merchantRemain }} | |||
</div> | |||
</div> | |||
<div class="validity"> | |||
{{ | |||
item.validStartDate != undefined | |||
? `有效期:${setTiem( | |||
item.validStartDate, | |||
"YYYY-MM-DD HH:mm:ss" | |||
)}至${setTiem(item.validEndDate, "YYYY-MM-DD HH:mm:ss")}` | |||
: "有效期:自领取后" + item.validDays + "日内有效" | |||
}} | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</van-list> | |||
<div class="confirm" @click="showPopup">确认</div> | |||
<van-popup v-model="show" :round="true"> | |||
@@ -70,21 +89,23 @@ | |||
</div> | |||
</div> | |||
</van-popup> | |||
<add-end text="赠券成功!" @goBack ="control()" v-if="addFalg"></add-end> | |||
<add-end text="赠券成功!" @goBack="control()" v-if="addFalg"></add-end> | |||
</div> | |||
</template> | |||
<script> | |||
import Vue from "vue"; | |||
import { Popup, Toast } from "vant"; | |||
import moment from "moment"; | |||
import addEnd from "../integral/AddEnd" | |||
import addEnd from "../integral/AddEnd"; | |||
Vue.use(Popup, Toast); | |||
export default { | |||
components:{ | |||
addEnd | |||
components: { | |||
addEnd, | |||
}, | |||
data() { | |||
return { | |||
ListLoading: false, | |||
finished: false, | |||
noData: false, | |||
show: false, | |||
list: "", | |||
@@ -92,40 +113,51 @@ export default { | |||
ticketList: [], | |||
pitcnOn: [], //选中的券列表 | |||
addFalg: false, | |||
pageNum:1, | |||
}; | |||
}, | |||
methods: { | |||
//下拉加载 | |||
onLoad() { | |||
this.pageNum += 1; | |||
this.getTicketList(); | |||
}, | |||
// 接收子组件的值 关闭子组件 | |||
control(data){ | |||
this.addFalg = data | |||
this.show = data | |||
control(data) { | |||
this.addFalg = data; | |||
this.show = data; | |||
}, | |||
Back() { | |||
this.$router.go(-1); | |||
}, | |||
//提交 | |||
submit() { | |||
let arr = [] | |||
this.pitcnOn.map(item=>{ | |||
arr.push(item.id) | |||
}) | |||
this.$http.wxMerchantcouponhandSel({ | |||
method: "post", | |||
data: { | |||
cUserId: this.list.id, | |||
wxCouponSendIds: arr, | |||
}, | |||
}).then(res=>{ | |||
const {code ,data,message} = res | |||
if(code == 200){ | |||
this.show = !this.show | |||
this.addFalg = true | |||
}else{ | |||
this.show = !this.show | |||
Toast(message); | |||
} | |||
}).catch(res=>{ | |||
this.show = !this.show | |||
Toast(res); | |||
}) | |||
let arr = []; | |||
this.pitcnOn.map((item) => { | |||
arr.push(item.id); | |||
}); | |||
this.$http | |||
.wxMerchantcouponhandSel({ | |||
method: "post", | |||
data: { | |||
cUserId: this.list.id, | |||
wxCouponSendIds: arr, | |||
}, | |||
}) | |||
.then((res) => { | |||
const { code, data, message } = res; | |||
if (code == 200) { | |||
this.show = !this.show; | |||
this.addFalg = true; | |||
} else { | |||
this.show = !this.show; | |||
Toast(message); | |||
} | |||
}) | |||
.catch((res) => { | |||
this.show = !this.show; | |||
Toast(res); | |||
}); | |||
}, | |||
//时间处理 | |||
setTiem(temp, format) { | |||
@@ -143,11 +175,12 @@ export default { | |||
this.show = true; | |||
}, | |||
getTicketList() { | |||
this.ListLoading = true; | |||
this.$http | |||
.wxMerchantcouponSend({ | |||
methods: "get", | |||
params: { | |||
pageNum: 1, | |||
pageNum: this.pageNum, | |||
pageSize: 6, | |||
sendType: 7, | |||
expired: 0, | |||
@@ -157,10 +190,13 @@ export default { | |||
.then((res) => { | |||
const { code, data, message } = res; | |||
if (code == 200) { | |||
this.ListLoading = false; | |||
data.list.map((res) => { | |||
res.sign = false; | |||
}); | |||
this.ticketList = data.list; | |||
this.ticketList.push(...data.list); | |||
this.finished = data.list.length === 0?true:false; | |||
} else { | |||
Toast(message); | |||
} | |||
@@ -202,6 +238,23 @@ export default { | |||
<style scoped> | |||
.Box { | |||
background: #f6f6f6; | |||
height: 100%; | |||
} | |||
.back-box { | |||
left: 0; | |||
top: 0; | |||
z-index: 1000; | |||
width: 100%; | |||
height: 1.3rem; | |||
line-height: 1.3rem; | |||
background: #52a0fd; | |||
color: #fff; | |||
font-size: 0.43rem; | |||
text-align: center; | |||
} | |||
.back-icon { | |||
float: left; | |||
margin: 0.4rem 0 0 0.1rem; | |||
} | |||
.topBg { | |||
height: 0.8rem; | |||
@@ -209,20 +262,23 @@ export default { | |||
background-size: 100% 0.8rem; | |||
} | |||
.textBox { | |||
width: 96; | |||
margin: 0 2%; | |||
width: 96%; | |||
margin: 0.2rem 2%; | |||
border-radius: 0.2rem; | |||
border: 1px solid #eaeaea; | |||
margin-top: -0.2rem; | |||
z-index: 10; | |||
box-shadow: 0 6px 20px 0 rgba(0, 0, 0, 0.15); | |||
margin-top: 0.2rem; | |||
} | |||
.chieBox { | |||
overflow: hidden; | |||
background-color: #fff; | |||
height: 1.25rem; | |||
} | |||
.left { | |||
float: left; | |||
height: 1.25rem; | |||
color: #999999; | |||
line-height: 1.25rem; | |||
padding-left: 0.3rem; | |||
@@ -230,6 +286,7 @@ export default { | |||
.right { | |||
float: right; | |||
line-height: 1.25rem; | |||
height: 1.25rem; | |||
padding-right: 0.3rem; | |||
} | |||
@@ -240,11 +297,8 @@ export default { | |||
text-align: center; | |||
background-color: #52a0fd; | |||
color: #fff; | |||
position: fixed; | |||
bottom: 2rem; | |||
} | |||
.noData { | |||
} | |||
.noDataImg { | |||
width: 2rem; | |||
height: 2rem; | |||