Browse Source

add api

voice
刘嘉炜 5 years ago
parent
commit
a4839e89e1
  1. 64
      src/components/reservation_order/reservation_order.vue
  2. 22
      src/js/api.js
  3. 16
      src/pages.json
  4. 8
      src/pages/admin_bind/admin_bind.vue
  5. 31
      src/pages/collection/record/record.vue
  6. 42
      src/pages/employee/invite_code/invite_code.vue
  7. 45
      src/pages/employee/manage/manage.vue
  8. 107
      src/pages/employee/perfect_info/perfect_info.vue
  9. 6
      src/pages/index/index.vue
  10. 167
      src/pages/order_list/order_list.vue
  11. 104
      src/pages/write_off/confirm/confirm.vue
  12. 78
      src/pages/write_off/list/list.vue

64
src/components/reservation_order/reservation_order.vue

@ -1,50 +1,50 @@
<template>
<view class="reservation-order">
<view class="ro-header">
<view>欧轩智能羽毛球馆(永泰店)</view>
<text class="rh-active">待使用</text>
<view class="rh-view">欧轩智能羽毛球馆(永泰店)</view>
<text class="rh-text rh-active">待使用</text>
</view>
<view class="ro-section">
<view class="rs-line">
<view>订单编号</view>
<view>
<view>20195175645666</view>
<view class="rl-view">订单编号</view>
<view class="rl-view">
<view class="rv-view">20195175645666</view>
</view>
</view>
<view class="rs-line">
<view>用户昵称</view>
<view>
<view>周大强</view>
<view class="rl-view">用户昵称</view>
<view class="rl-view">
<view class="rv-view">周大强</view>
</view>
</view>
<view class="rs-line">
<view>支付时间</view>
<view>
<view>2019-05-17 11:12:50</view>
<view class="rl-view">支付时间</view>
<view class="rl-view">
<view class="rv-view">2019-05-17 11:12:50</view>
</view>
</view>
<view class="rs-line">
<view>预定日期</view>
<view>
<view>2019-05-18 周五</view>
<view class="rl-view">预定日期</view>
<view class="rl-view">
<view class="rv-view">2019-05-18 周五</view>
</view>
</view>
<view class="rs-line">
<view>预定场次</view>
<view>
<view>1号馆 10:00-11:0011:00-12:00</view>
<view>1号馆 10:00-11:0011:00-12:00</view>
<view>1号馆 10:00-11:0011:00-12:00</view>
<view>1号馆 10:00-11:0011:00-12:00</view>
<view class="rl-view">预定场次</view>
<view class="rl-view">
<view class="rv-view">1号馆 10:00-11:0011:00-12:00</view>
<view class="rv-view">1号馆 10:00-11:0011:00-12:00</view>
<view class="rv-view">1号馆 10:00-11:0011:00-12:00</view>
<view class="rv-view">1号馆 10:00-11:0011:00-12:00</view>
</view>
</view>
</view>
<view class="ro-bot">
<view class="rb-line">
<view>支付方式微信支付</view>
<view>共5场次 合计¥240</view>
<view class="rl-view">支付方式微信支付</view>
<view class="rl-view">共5场次 合计¥240</view>
</view>
<view class="rb-total">实付款<text>¥240</text>(折扣0)</view>
<view class="rb-total">实付款<text class="rt-txt">¥240</text>(折扣0)</view>
</view>
<view class="ro-bot-line">核销方式商家扫码 2019-05-18 09:50:30</view>
<view class="ro-bot-line">退款时间2019-05-18 09:50:30</view>
@ -69,13 +69,13 @@ export default {
line-height: 96upx;
border-bottom: 2upx solid #D8D8D8;
@include centerFlex(space-between);
>view{
.rh-view{
flex-grow: 1;
font-size: 28upx;
color: #1a1a1a;
@include textHide(1);
}
>text{
.rh-text{
margin-left: 20upx;
flex-shrink: 0;
font-size: 28upx;
@ -89,18 +89,18 @@ export default {
padding-bottom: 20upx;
.rs-line{
display: flex;
view{
.rl-view,.rv-view{
line-height: 40upx;
font-size: 24upx;
color: #9c9c9f;
}
>view{
.rl-view{
&:first-child{
flex-shrink: 0;
}
&+view{
&+.rl-view{
flex-grow: 1;
>view{
.rv-view{
@include textHide(1);
}
}
@ -114,7 +114,7 @@ export default {
border-top: 2upx solid #D8D8D8;
.rb-line{
@include centerFlex(space-between);
>view{
.rl-view{
line-height: 40upx;
font-size: 24upx;
color: #9c9c9f;
@ -122,7 +122,7 @@ export default {
margin-right: 20upx;
flex-shrink: 0;
}
&+view{
&+.rl-view{
flex-grow: 1;
text-align: right;
@include textHide(1);
@ -134,7 +134,7 @@ export default {
text-align: right;
font-size: 24upx;
color: #9c9c9f;
>text{
.rt-txt{
color: #1A1A1A;
}
}

22
src/js/api.js

@ -8,6 +8,28 @@ export const API = {
stadiumList:`${ORIGIN}/stadium/list`, // 店铺列表
stadiumDetail:`${ORIGIN}/stadium/detail`, // A店铺管理-店铺列表-店铺详情
verifiedOrderList:`${ORIGIN}/admin/assistant/order/verified`, // 核销订单列表
verifiedOrderInfo:`${ORIGIN}/admin/stadium/order/get`, // 核销订单信息
verifiedOrder:`${ORIGIN}/admin/stadium/order/verify`, // 核销订单
collectionRecord:`${ORIGIN}/admin/assistant/collection/record`, // 收款记录
reservationOrder:`${ORIGIN}/admin/stadium/order/list`, // 预约订单
membershipOrder:`${ORIGIN}/admin/member_card/order/list`, // 会员卡订单
integralOrder:`${ORIGIN}/admin/shop/order/list`, // 积分商城订单
}
// 员工管理
API['employee'] = {
inviteCode:`${ORIGIN}/admin/assistant/qrcode/invite`, // 添加员工二维码
employeeAdd:`${ORIGIN}/assistant/employee/add`, // 添加员工-填写信息
employeeList:`${ORIGIN}/admin/assistant/employee/list`, // 员工列表
}

16
src/pages.json

@ -1,11 +1,18 @@
{
"pages": [ //pageshttps://uniapp.dcloud.io/collocation/pages
{
"path": "pages/index/index",
"style": {
}
},
{
"path": "pages/employee/perfect_info/perfect_info",
"style": {
"navigationBarTitleText": "员工信息"
}
},
{
"path": "pages/admin_bind/admin_bind",
"style": {
"navigationBarTitleText": "扫码绑定"
@ -38,7 +45,7 @@
{
"path": "pages/order_list/order_list",
"style": {
"navigationBarTitleText": "订单列表"
"navigationBarTitleText": ""
}
},
{
@ -65,12 +72,7 @@
"navigationBarTitleText": "员工管理"
}
},
{
"path": "pages/employee/perfect_info/perfect_info",
"style": {
"navigationBarTitleText": "员工信息"
}
},
{
"path": "pages/employee/invite_code/invite_code",
"style": {

8
src/pages/admin_bind/admin_bind.vue

@ -66,10 +66,10 @@ export default {
code: loginRes.code,
encryptedData: userRes.detail.encryptedData,
iv: userRes.detail.iv,
// brand_id: sceneQuery.b,
// rid: sceneQuery.r,
brand_id: 37,
rid: '@ed8dcd',
brand_id: sceneQuery.b,
rid: sceneQuery.r,
// brand_id: 37,
// rid: '@ed8dcd',
// 'avatar_url': userRes.detail.userInfo.avatarUrl,
// ...userRes.detail.userInfo,
},

31
src/pages/collection/record/record.vue

@ -23,7 +23,7 @@
</view>
</view>
<view class="cr-list">
<view class="cl-item" v-for="e in 10" :key="e">
<view class="cl-item" v-for="e in 10" :key="e" @click="toDetail">
<view class="ci-time">8月15日</view>
<view class="ci-money">¥1242.00</view>
<view class="ci-info">
@ -36,8 +36,35 @@
</template>
<script>
import { API } from '../../../js/api'
import { servers } from '../../../js/server'
import util from '../../../utils/util'
export default {
data(){
return {
recordList: [],
}
},
methods: {
getRecordList({
date
}){
servers.get({
url: API.collectionRecord,
data: {
date,
date,
},
failMsg: '加载失败!'
})
.then(res=>{
this.recordList = res.list;
})
},
toDetail(){
util.routeTo(`/pages/collection/detail/detail`,'nT');
}
}
}
</script>

42
src/pages/employee/invite_code/invite_code.vue

@ -6,24 +6,56 @@
<text>员工扫描二维码加入</text>
</view>
<view class="ic-code-section">
<image></image>
<image mode="aspectFit" :src="inviteCode"></image>
<view>欧轩智能场馆</view>
</view>
<view class="ic-invite-line">
<button class="ic-invite-line" plain hover-class="hover-active" open-type="share">
<view>
<image mode="aspectFit" src="/static/images/icon/invite.png"></image>
<text>邀请微信朋友成为员工</text>
</view>
<image mode="aspectFit" src="/static/images/icon/arrow_b2.png"></image>
</view>
</button>
</view>
</view>
</template>
<script>
import { API } from '../../../js/api'
import { servers } from '../../../js/server'
import { mapState } from 'vuex';
export default {
data(){
return{
inviteCode: ''
}
},
computed: {
...mapState([ 'brandInfo' ]),
},
onLoad(){
this.getInviteCode();
},
onShareAppMessage(res){
let { brandInfo } = this;
return {
path: `/pages/employee/perfect_info/perfect_info?brand_id=${brandInfo.brand.id}`
}
},
methods: {
getInviteCode(){
let { brandInfo } = this
servers.get({
url: API.employee.inviteCode,
data: { brand_id: brandInfo.brand.id },
failMsg: '加载分享码失败!'
})
.then(res=>{
this.inviteCode = res;
})
}
}
}
</script>
@ -65,7 +97,6 @@ export default {
width: 408upx;
height: 408upx;
margin-bottom: 48upx;
background-color: red;
}
>view{
text-align: center;
@ -78,6 +109,7 @@ export default {
padding-left: 24upx;
padding-right: 34upx;
height: 128upx;
border: none;
border-radius: 10upx;
background-color: #fff;
@include centerFlex(space-between);

45
src/pages/employee/manage/manage.vue

@ -12,7 +12,7 @@
<image mode="aspectFit" src="/static/images/icon/round_add.png"></image>
<text>添加员工</text>
</view>
<view class="ei-tip">
<view class="ei-tip" @click="toReview">
<text>待审核员工</text>
<view>
<view>222</view>
@ -41,16 +41,16 @@
</view>
</view>
<view class="ec-lists">
<view class="el-item" v-for="k in 20" :key="k" @click="toAuthority">
<view class="el-item" v-for="k in employeeList" :key="k.id" @click="toAuthority">
<view>
<image class="ei-icon"></image>
<image class="ei-avatar"></image>
<image class="ei-avatar" mode="aspectFill" :src="k.avatar_url"></image>
<view class="ei-info">
<view>胡雪儿</view>
<view>{{k.actual_name}}</view>
<view class="ei-author">
<view>权限</view>
<view>
<view v-for="e in k" :key="e">场馆订{{e}}</view>
<view v-for="e in 2" :key="e">场馆订{{e}}</view>
</view>
</view>
</view>
@ -70,9 +70,41 @@
</view>
</template>
<script>
import { API } from '../../../js/api';
import { servers } from '../../../js/server';
import util from '../../../utils/util'
export default {
data(){
return {
employeeList: [],
}
},
onLoad(){
this.getEmployeeList({})
},
methods: {
getEmployeeList({
stadium_id='',
menu='',
key='',
}){
servers.get({
url: API.employee.employeeList,
data: {
stadium_id,
menu,
key,
},
isDefaultGet: false,
})
.then(res=>{
if(res.data.code == 0){
this.employeeList = res.data.data.data || [];
}else{
util.showNone(res.data.message || '加载失败!');
}
})
},
addEmployee(){
util.routeTo(`/pages/employee/invite_code/invite_code`, 'nT');
},
@ -84,6 +116,9 @@ export default {
},
toAuthority(){
util.routeTo(`/pages/employee/authority_select/authority_select`, 'nT');
},
toReview(){
util.routeTo(`/pages/employee/review_list/review_list`, 'nT');
}
}
}

107
src/pages/employee/perfect_info/perfect_info.vue

@ -1,32 +1,121 @@
<template>
<view class="perfect-info">
<view class="pi-content">
<view class="pi-modal" v-if="isShowSuccess">
<image mode="aspectFit" src="/static/images/icon/success_tip.png"></image>
<view>提交成功</view>
<view>请耐心等待管理员审核</view>
</view>
<view class="pi-content" v-else>
<view class="pi-tip">欧轩智能场馆</view>
<view class="pi-title">邀请你成为员工</view>
<view class="pi-form">
<view>请完成以下信息成为其员工</view>
<view class="pf-line">
<text>你的姓名</text>
<view><input /></view>
<view><input v-model="userName" /></view>
</view>
<view class="pf-line">
<text>联系电话</text>
<view><input /></view>
<view><input v-model="userPhone" type="number" maxlength="11" /></view>
</view>
</view>
<view class="pi-btn" hover-class="hover-active">接受邀请</view>
<button
open-type="getUserInfo"
lang="zh_CN"
class="pi-btn"
hover-class="hover-active"
@getuserinfo="getuserinfo"
>接受邀请</button>
</view>
<view class="pi-modal">
<image mode="aspectFit" src="/static/images/icon/success_tip.png"></image>
<view>提交成功</view>
<view>请耐心等待管理员审核</view>
</view>
</view>
</template>
<script>
import { API } from '../../../js/api';
import { servers } from '../../../js/server';
import util from '../../../utils/util';
const uniLogin = util.promisify(uni.login);
export default {
data(){
return {
userName: '',
userPhone: '',
brand_id: '',
isShowSuccess: false
}
},
onLoad(options){
//
if(!!options.brand_id)return this.brand_id = options.brand_id;
//
if (options.scene) {
// "r=%s&b=%d" -> rid brand_id ->
let sceneQuery = util.formatScene(options.scene);
if(!sceneQuery.b)return util.showNone('缺少品牌ID');
this.brand_id = sceneQuery.b
} else {
console.log("no scene");
}
},
methods: {
async getuserinfo(userRes){
let { userName, userPhone, brand_id } = this;
if(!userName || !userPhone)return util.showNone('请完善信息!');
if(!userRes.detail.userInfo){
return util.showNone('获取用户信息失败!请稍后重试');
}
let loginRes = await uniLogin();
if(!loginRes.code){
return util.showNone('获取登陆凭证失败!稍后重试');
}
const APPID = uni.getAccountInfoSync().miniProgram.appId;
let { sceneQuery } = this;
util.showLoad();
//
servers.post({
url: API.employee.employeeAdd,
data: {
appid: APPID,
code: loginRes.code,
encryptedData: userRes.detail.encryptedData,
iv: userRes.detail.iv,
actual_name: userName,
mobile: userPhone,
brand_id: brand_id || 37,
// brand_id: sceneQuery.b,
// rid: sceneQuery.r,
// brand_id: 37,
// rid: '@ed8dcd',
// 'avatar_url': userRes.detail.userInfo.avatarUrl,
// ...userRes.detail.userInfo,
},
isDefaultGet: false,
})
.then(res=>{
util.hideLoad();
if(res.data.code == 0){
let _data = res.data.data;
// if(_data.user.role === '')return util.routeTo(`/pages/merchant_login/merchant_login`,'rT');
util.showNone(res.data.message || '操作成功!');
this.isShowSuccess = true;
// uni.setStorageSync('token', _data.token);
// setTimeout(_=>{
// this.isLogin = app.isLogin();
// }, 1200);
}else{
util.showNone(res.data.message || '操作失败!');
}
}).catch(util.hideLoad)
}
}
}
</script>

6
src/pages/index/index.vue

@ -118,6 +118,7 @@
const app = getApp();
export default {
computed: {
},
data() {
return {
@ -133,6 +134,9 @@
if(!!app.isLogin())this.getIndexInfo();
},
methods: {
isOrderTab(ID){
return ID == 3 || ID == 4 || ID == 5
},
getIndexInfo(){
servers.get({
url: API.calc,
@ -209,6 +213,7 @@
uni.setStorageSync('token',_data.token);
setTimeout(_=>{
this.isLogin = app.isLogin();
this.getIndexInfo();
this.closeAuthor();
}, 1200);
}else{
@ -222,6 +227,7 @@
toPageInfo(tabInfo){
if(!tabInfo.path)return util.showNone('暂未开放!');
let { indexData } = this;
if(this.isOrderTab(tabInfo.id))return util.routeTo(tabInfo.path + `?order_type=${tabInfo.id}`,'nT');
util.routeTo(tabInfo.path,'nT');
},
toStoreList(){

167
src/pages/order_list/order_list.vue

@ -11,70 +11,70 @@
</picker>
</view>
<view class="oh-ctrl">
<picker>
<view class="oc-period">
<text>2020.08.01-2020.08.27</text>
<view></view>
</view>
</picker>
<view class="oc-period" @click="showPeriodModal">
<text>
{{
!!periodInfo.start&&!!periodInfo.end ?
`${periodInfo.start} ~ ${periodInfo.end}`:
'请选择时间'
}}
</text>
<view></view>
</view>
<view class="oc-bot">
<view>成功交易245笔退款25笔</view>
<view class="ob-btns">
<image mode="aspectFit" @click="toSearch" src="/static/images/icon/search.png"></image>
<image mode="aspectFit" src="/static/images/icon/filter.png"></image>
<image @click="showClassify" mode="aspectFit" src="/static/images/icon/filter.png"></image>
</view>
</view>
</view>
</view>
<view class="ol-order-list">
<view class="ool-item">
<view class="ool-item" v-if="orderType == 3">
<reservation-order></reservation-order>
</view>
<view class="ool-item">
<view class="ool-item" v-if="orderType == 4">
<membership-order></membership-order>
</view>
<view class="ool-item">
<view class="ool-item" v-if="orderType == 5">
<integral-order></integral-order>
</view>
</view>
<!-- 分类tab -->
<view class="ox-dark-mask" v-if="false">
<view class="ol-classify">
<view class="ox-dark-mask" v-if="isShowClassify" @click="hideClassify">
<view class="ol-classify" @click.stop="()=>false">
<view class="oc-title">
预约订单
{{titleName}}
</view>
<view class="oc-tabs">
<view class="ot-item">全部</view>
<view class="ot-item">待使用</view>
<view class="ot-item">已使用</view>
<view class="ot-item">已失效</view>
<view class="ot-item">已退款</view>
<view class="ot-item" v-for="e in classifyArr" :key="e.id">{{e.name}}</view>
</view>
</view>
</view>
<!-- 时间段选择 -->
<view class="ox-dark-mask" v-if="false">
<view class="ol-period">
<view class="ox-dark-mask" v-if="isShowPeriod" @click="hidePeriodModal">
<view class="ol-period" @click.stop="()=>false">
<view>日期范围</view>
<picker>
<picker mode="date" @change="startTimeChange">
<view class="op-time">
<text>开始时间</text>
<view>
<input placeholder="选择时间" disabled />
<input placeholder="选择时间" disabled :value="periodInfo.start" />
<image mode="aspectFit" src="/static/images/icon/arrow_b2.png"></image>
</view>
</view>
</picker>
<picker>
<picker mode="date" @change="endTimeChange">
<view class="op-time">
<text>截止时间</text>
<view>
<input placeholder="选择时间" disabled />
<input placeholder="选择时间" disabled :value="periodInfo.end" />
<image mode="aspectFit" src="/static/images/icon/arrow_b2.png"></image>
</view>
</view>
</picker>
<view class="pl-btn active">确定</view>
<view class="pl-btn active" @click="confirmPeriod">确定</view>
</view>
</view>
</view>
@ -86,6 +86,26 @@
import integral_order from '../../components/integral_order/integral_order';
import membership_order from '../../components/membership_order/membership_order';
import util from '../../utils/util';
import { servers } from '../../js/server';
import { API } from '../../js/api';
const resClassify = [ // tab
{id:0,name:'全部'},
{id:1,name:'待使用'},
{id:2,name:'已使用'},
{id:3,name:'已失效'},
{id:4,name:'已退款'},
];
const memClassify = [ // tab
{id:0,name:'全部'},
{id:1,name:'使用中'},
{id:2,name:'已失效'},
]
const intClassify = [ // tab
{id:0,name:'全部'},
{id:1,name:'待发货'},
{id:2,name:'已发货'},
{id:3,name:'已完成'},
]
export default {
components: {
// 'reservation-order': order.reservation,
@ -93,14 +113,101 @@
'membership-order': membership_order,
'integral-order': integral_order,
},
computed:{
classifyArr(){
let { orderType } = this;
if(orderType == 3)return resClassify;
if(orderType == 4)return memClassify;
if(orderType == 5)return intClassify;
return [];
},
titleName(){
let { orderType } = this;
if(orderType == 3)return '预约订单';
if(orderType == 4)return '会员卡订单';
if(orderType == 5)return '积分商城订单';
return '订单'
}
},
data(){
return {
isShowClassify: false,
isShowPeriod: false,
periodInfo: {
start: '',
end: ''
},
orderType: 3, // 3->,4->,5->
}
},
onLoad(options){
this.orderType = options.order_type;
this.$nextTick(_=>{
uni.setNavigationBarTitle({
title: this.titleName
})
})
this.getReservatioOrder({});
},
methods: {
startTimeChange(res){
this.periodInfo.start = res.detail.value;
},
endTimeChange(res){
this.periodInfo.end = res.detail.value;
console.log(res)
},
toSearch(){
util.routeTo(`/pages/order_search/order_search`,'nT');
},
showClassify(){
this.isShowClassify = true;
},
hideClassify(){
this.isShowClassify = false;
},
confirmPeriod(){
let { start, end } = this.periodInfo;
if(
!start || !end ||
new Date(start).getTime()>=new Date(end).getTime()
)return util.showNone('请选择合理时间!');
this.hidePeriodModal();
},
showPeriodModal(){
this.isShowPeriod = true;
},
hidePeriodModal(){
this.isShowPeriod = false;
},
getReservatioOrder({
key='',
begin='',
end='',
status='',
brand_id='37',
verify_user_id='160',
}){
servers.get({
url: API.reservationOrder,
data: {
key,
begin,
end,
status,
brand_id,
verify_user_id,
},
failMsg: '加载失败!'
})
.then(res=>{
console.log(res);
})
}
},
onLoad(){
console.log(reservation_order)
}
}
</script>
@ -148,10 +255,8 @@
}
.oh-ctrl{
padding: 24upx 40upx 26upx 24upx;
picker{
margin-bottom: 16upx;
}
.oc-period{
margin-bottom: 16upx;
@include centerFlex(flex-start);
text{
line-height: 44upx;

104
src/pages/write_off/confirm/confirm.vue

@ -2,62 +2,134 @@
<view class="write-off-confirm">
<view class="woc-content">
<view class="wc-info">
<view class="wi-title">欧轩智能羽毛球馆(永泰店)</view>
<view class="wi-title">{{orderInfo.stadium_name || '-'}}</view>
<view class="wi-detail">
<view class="wd-line">
<view>订单编号</view>
<view>
<view>20195175645666</view>
<view>{{orderInfo.order_no || '-'}}</view>
</view>
</view>
<view class="wd-line">
<view>用户昵称</view>
<view>
<view>周大强</view>
<view>{{orderInfo.nickname || '-'}}</view>
</view>
</view>
<view class="wd-line">
<view>支付时间</view>
<view>
<view>2019-05-17 11:12:50</view>
<view>{{orderInfo.pay_time || '-'}}</view>
</view>
</view>
<view class="wd-line">
<view>预定日期</view>
<view>
<view>2019-05-18 周五</view>
<view>{{ZH_order_date((orderInfo&&orderInfo.date) || '') || '-'}}</view>
</view>
</view>
<view class="wd-line">
<view>预定场次</view>
<view>
<view>1号馆 10:00-11:0011:00-12:00</view>
<view>1号馆 10:00-11:0011:00-12:00</view>
<view>1号馆 10:00-11:0011:00-12:00</view>
<view>1号馆 10:00-11:0011:00-12:00</view>
<view>1号馆 10:00-11:0011:00-12:00</view>
<view>1号馆 10:00-11:0011:00-12:00</view>
<view v-for="e in orderInfo.sessions" :key="e.id">{{e.venue_name + ' ' }} {{ ' '+e.duration}}</view>
</view>
</view>
</view>
</view>
<view class="wi-split-line"></view>
<view class="wi-btns">
<view hover-class="hover-active">确认核销</view>
<view class="white" hover-class="hover-active">不核销</view>
<view hover-class="hover-active" @click="confirmVerify">确认核销</view>
<view class="white" hover-class="hover-active" @click="cancelVerify">不核销</view>
</view>
</view>
<view class="woc-fail-modal" v-if="false">
<view class="woc-fail-modal" v-if="orderInfo == null">
<image mode="aspectFit" src="/static/images/icon/write_off_fail.png"></image>
<view>很抱歉获取不到二维码订单信息</view>
<view hover-class="hover-active">返回</view>
<view hover-class="hover-active" @click="cancelVerify">返回</view>
</view>
</view>
</template>
<script>
import { API } from '../../../js/api'
import { servers } from '../../../js/server'
import util from '../../../utils/util'
export default {
computed: {
ZH_order_date(){
return date => {
if(!date)return '-'
let _date = date.replace(/\-/gi,'/');
return `${util.get_zh_date(_date)} ${util.get_zh_day(_date)}`;
}
},
},
data(){
return {
orderInfo: {},
}
},
onLoad(options){
console.log(options)
console.log(util.jsonPar(options.query))
this.getOrderInfo(util.jsonPar(options.query));
},
methods: {
confirmVerify: util.debounce(function(){
let { orderInfo } = this;
util.showLoad();
servers.get({
url: API.verifiedOrder,
data: {
brand_id: orderInfo.brand_id,
stadium_id: orderInfo.stadium_id,
verify_code: orderInfo.verify_code
},
isDefaultGet: false
})
.then(res=>{
util.hideLoad();
if(res.data.code == 0){
util.showNone(res.data.message || '操作成功!');
util.previousPageFunction({
fnName: 'getOrderList',
query: null,
})
setTimeout(_=>util.routeTo(),1200);
}else{
util.showNone(res.data.message || '操作失败!')
}
})
.catch(util.hideLoad)
},300,300),
cancelVerify(){
util.routeTo();
},
getOrderInfo({
brand_id = '',
stadium_id = '',
verify_code = '',
}){
util.showLoad();
servers.get({
url: API.verifiedOrderInfo,
data: {
brand_id,
stadium_id,
verify_code,
},
isDefaultGet: false
})
.then(res=>{
util.hideLoad();
if(res.data.code == 0)return this.orderInfo = res.data.data;
this.orderInfo = null
util.showNone(res.data.message || '加载失败!');
})
.catch(util.hideLoad)
}
}
}
</script>

78
src/pages/write_off/list/list.vue

@ -3,53 +3,48 @@
<view class="wol-btn" hover-class="hover-active" @click="scanCode">
<image mode="aspectFit" src="/static/images/icon/scan_code_btn.png"></image>
</view>
<view class="wol-bar">今日核销订单(2)</view>
<view class="wol-bar">今日核销订单({{orderList.length || 0}})</view>
<view class="wol-list">
<view class="wl-item" v-for="e in 9" :key="e">
<view class="wl-item" v-for="e in orderList" :key="e.id">
<view class="wi-header">
<view>欧轩智能羽毛球馆(永泰店)</view>
<view>已使用</view>
<view>{{e.stadium_name || '-'}}</view>
<view>{{ZH_status(e.pay_type || '')}}</view>
</view>
<view class="wi-info">
<view class="wi-line">
<view>订单编号</view>
<view>
<view>20195175645666 </view>
<view>{{e.order_no || '-'}}</view>
</view>
</view>
<view class="wi-line">
<view>用户昵称</view>
<view>
<view>周大强 </view>
<view>{{e.nickname || '-'}} </view>
</view>
</view>
<view class="wi-line">
<view>支付时间</view>
<view>
<view>2019-05-17 11:12:50 </view>
<view>{{e.pay_time || '-'}}</view>
</view>
</view>
<view class="wi-line">
<view> 预定日期</view>
<view>
<view>2019-05-18 周五 </view>
<view>{{ZH_order_date(e.date || '') || '-'}}</view>
</view>
</view>
<view class="wi-line">
<view>预定场次</view>
<view>
<view>1号馆 10:00-11:0011:00-12:00 </view>
<view>1号馆 10:00-11:0011:00-12:00 </view>
<view>1号馆 10:00-11:0011:00-12:00 </view>
<view>1号馆 10:00-11:0011:00-12:00 </view>
<view>1号馆 10:00-11:0011:00-12:00 </view>
<view>1号馆 10:00-11:0011:00-12:00 </view>
<view v-for="k in e.sessions" :key="k.id">{{k.venue_name+' '}}{{' '+k.duration}} </view>
</view>
</view>
</view>
<view class="wi-total">
<view>核销时间2019-05-17 11:12:58</view>
<view>5场次</view>
<view>核销时间{{e.verify_time || '-'}}</view>
<view>{{e.sessions.length || 0}}场次</view>
</view>
</view>
</view>
@ -57,14 +52,46 @@
</template>
<script>
import { API } from '../../../js/api';
import { servers } from '../../../js/server';
import util from '../../../utils/util'
export default {
computed: {
ZH_status(){
return status=> (['未支付','待使用','已使用','已失效','已退款'][status] || '-') // [-101使2使34退]
},
ZH_order_date(){
return date => {
if(!date)return '-'
let _date = date.replace(/\-/gi,'/');
return `${util.get_zh_date(_date)} ${util.get_zh_day(_date)}`;
}
},
},
data(){
return {
orderList: []
}
},
onLoad(){
this.getOrderList(true);
},
methods: {
scanCode(){
uni.scanCode({
success: res=>{
console.log(res);
util.routeTo(`/pages/write_off/confirm/confirm`,'nT');
let { result } = res;
if(
res.scanType !== 'QR_CODE' ||
result.indexOf('brand_id') == -1 ||
result.indexOf('stadium_id') == -1 ||
result.indexOf('verify_code') == -1
){
return util.showNone('无法识别!');
}
util.routeTo(`/pages/write_off/confirm/confirm?query=${res.result}`,'nT');
},
fail: err=>{
if(err.errMsg&&err.errMsg.indexOf('cancel')!=-1)return;
@ -73,6 +100,20 @@ export default {
}
})
},
getOrderList(isLoad){
if(isLoad)util.showLoad();
servers.get({
url: API.verifiedOrderList,
data: {},
failMsg: '获取订单列表失败!'
})
.then(res=>{
if(isLoad)util.hideLoad();
let _list = res.list || [];
this.orderList = _list;
})
.catch(util.hideLoad)
}
}
}
@ -142,6 +183,7 @@ export default {
.wi-line{
display: flex;
view{
margin-bottom: 6upx;
line-height: 34upx;
font-size: 24upx;
color: #9c9c9f;

Loading…
Cancel
Save