| @@ -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; | |||