Commit f3d63adc by 无尘

feat: 增加各页面公共请求

parent b5a284ee
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
}, },
"dependencies": { "dependencies": {
"amfe-flexible": "^2.2.1", "amfe-flexible": "^2.2.1",
"axios": "^0.18.0",
"jsbarcode": "^3.6.0", "jsbarcode": "^3.6.0",
"vant": "^1.4.1", "vant": "^1.4.1",
"vconsole": "^3.2.2", "vconsole": "^3.2.2",
......
/**
* 卡券 api
*/
import { postJson } from './request';
/* Common */
export const getCardsData = data => postJson('/vip/getvouchers', data);
/**
* 首页 api
*/
import { postJson } from './request';
/* Common */
export const getIndexData = data => postJson('/vip/getvouchers', data);
/**
* 积分 api
*/
import { postJson } from './request';
/* Common */
export const getPointData = data => postJson('/vip/getvouchers', data);
/**
* 积分 api
*/
import { postJson } from './request';
/* Common */
export const getRecordData = data => postJson('/vip/getvouchers', data);
import axios from 'axios'; import axios from 'axios';
import store from '@/store'; import store from '../store/index';
import qs from 'qs';
import { Toast } from 'vant';
let local = window.location.origin; let local = '';
if (local.indexOf('localhost') != -1) { if (process.env.NODE_ENV === 'development') {
local = 'http://www.gicdev.com'; local = 'https://apitest.pbwear.com';
}else {
local = 'https://api.pbwear.com';
} }
let loading = '';
// 创建axios 实例 // 创建axios 实例
const service = axios.create({ const service = axios.create({
baseURL: local, // api的base_url baseURL: local, // api的base_url
timeout: 20000 // 请求超时时间 timeout: 20000, // 请求超时时间
withCredentials: true,
}) })
// request 拦截器 // request 拦截器
service.interceptors.request.use( service.interceptors.request.use(
config => { config => {
// 这里可以自定义一些config 配置 loading = Toast.loading({
duration: 0, // 持续展示 toast
// loading + 1 mask: true,
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: ' '
});
// loading true
store.dispatch('SetLoading', true); store.dispatch('SetLoading', true);
return config; return config;
}, },
error => { error => {
// 这里处理一些请求出错的情况 loading.clear();
// loading false
// loading 清 0
setTimeout(function() { setTimeout(function() {
store.dispatch('SetLoading', 0); store.dispatch('SetLoading', false);
}, 300) }, 300)
console.log(error)
Promise.reject(error); Promise.reject(error);
} }
) )
...@@ -38,22 +45,150 @@ service.interceptors.request.use( ...@@ -38,22 +45,150 @@ service.interceptors.request.use(
// response 拦截器 // response 拦截器
service.interceptors.response.use( service.interceptors.response.use(
response => { response => {
const res = response.data const res = response.data;
// 这里处理一些response 正常放回时的逻辑 loading.clear();
// loading false
// loading - 1 store.dispatch('SetLoading', false);
store.dispatch('SetLoading', false) return res;
return res
}, },
error => { error => {
// 这里处理一些response 出错时的逻辑 loading.clear();
// loading false
store.dispatch('SetLoading', false);
return Promise.reject(error);
}
)
// export default service
/*
*
* 统一响应处理
* @url:
*
*/
function handleResponse(code, msg) {
switch (code) {
case 0:
Toast(msg);
break;
}
Toast(msg);
}
// loading - 1 /*
store.dispatch('SetLoading', false) *
* 统一 get 请求方法
* @url: 请求的 url
* @params: 请求带的参数
* @header: 带 token
*
*/
return Promise.reject(error) export const getRequest = (url, params) => {
params.requestProject = "web";
return new Promise((resolve, reject) => {
service({
method: 'get',
url: `${local}${url}`,
data: {},
params: params,
headers: { 'content-type': 'application/x-www-form-urlencoded' },// "token": token
}).then(res => {
resolve(res)
}).catch(error => {
reject(error)
})
})
}
/*
*
* 统一 post 请求方法
* url: 请求的 url
* @params: 请求带的参数
* @header:
*
*/
export const postRequest = (url, params) => {
params.requestProject = "web";
return new Promise((resolve, reject) => {
service({
method: 'post',
url: `${local}${url}`,
data: qs.stringify(params),
headers: { 'content-type': 'application/x-www-form-urlencoded' }
}).then(res => {
resolve(res)
}).catch(error => {
reject(error)
})
})
}
export const postJsonRequest = (url, params) => {
params.requestProject = "web";
return new Promise((resolve, reject) => {
service({
method: 'post',
url: `${local}${url}`,
data: "{}",
params: params,
headers: { 'Content-Type': 'application/json;charset=UTF-8' }
}).then(res => {
resolve(res);
}).catch(error => {
reject(error);
})
})
}
/*
* method: 'post'
* 'Content-Type': 'application/json;charset=UTF-8'
* @data: params
* @requestProject: 'web'
*
*/
export const postJson = (url, params) => {
return new Promise((resolve, reject) => {
service({
method: 'post',
url: `${local}${url}`,
data: params,
params: { requestProject: 'web' },
headers: { 'Content-Type': 'application/json;charset=UTF-8' }
}).then(res => {
if (res.errorCode != 0) {
handleResponse(res.errorCode, res.message);
reject(res);
} else {
resolve(res);
} }
) }).catch(error => {
reject(error);
})
})
}
export default service /*
\ No newline at end of file * method: 'post'
* @data: params
*
*/
export const postForm = (url, params) => {
params.requestProject = "web";
return new Promise((resolve, reject) => {
service({
method: 'post',
url: `${local}${url}`,
data: params,
headers: {}
}).then(res => {
resolve(res)
}).catch(error => {
reject(error)
})
})
}
...@@ -43,7 +43,7 @@ body { ...@@ -43,7 +43,7 @@ body {
.clique-menu { .clique-menu {
width: 100%; width: 100%;
padding: 15px 0; padding: 25px 0;
} }
.clique-menu-cell:after { .clique-menu-cell:after {
...@@ -53,6 +53,7 @@ body { ...@@ -53,6 +53,7 @@ body {
.clique-menu p { .clique-menu p {
text-align: center; text-align: center;
margin-top: 10px;
} }
.van-swipe__indicator { .van-swipe__indicator {
......
/** /**
* 手机号格式化 * 手机号格式化
* import formatPhone from '@/assets/js/public.js';
* formatPhone.formatPhone(12345678900)
* @param {String} phone * @param {String} phone
*/ */
const formatPhone = (phone) => { const formatPhone = (phone) => {
......
import Vuex from 'vuex';
import Vue from 'vue'; import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex); Vue.use(Vuex);
export default new Vuex.Store({ export default new Vuex.Store({
state: { state: {
bodyH: document.documentElement.clientHeight, bodyH: document.documentElement.clientHeight,
reqLoading: false
}, },
mutations: { mutations: {
setReqLoading(state, data) {
state.reqLoading = data;
}
}, },
action: { actions: {
SetLoading({ commit }, flag) {
commit('setReqLoading', flag)
}
} }
}) })
...@@ -47,17 +47,15 @@ ...@@ -47,17 +47,15 @@
</template> </template>
<script> <script>
import formatPhone from '@/assets/js/public.js'; import { Icon, Toast } from 'vant';
import { Icon } from 'vant'; import { getCardsData } from '@/api/cards.js';
export default { export default {
name: "cards", name: "cards",
components: { components: {
[Icon.name]: Icon [Icon.name]: Icon
}, },
data() { data() {
return { return {
cardList: [ cardList: [
{ {
brandName: 'MATERIAL GIRL', brandName: 'MATERIAL GIRL',
...@@ -123,11 +121,28 @@ export default { ...@@ -123,11 +121,28 @@ export default {
showPartData(item) { showPartData(item) {
// const that = this; // const that = this;
item.showCount = 3; item.showCount = 3;
},
async getCardList() {
const that = this;
let params = {
CardNo: '',
SecretId: '',
Timestamp: '',
Signature: ''
}
let resData = await getCardsData(params);
if (resData.errcode == 1) {
that.cardList = resData.result;
}else {
Toast(resData.message);
}
} }
}, },
mounted(){ mounted(){
/* eslint-disable */ /* eslint-disable */
console.log( formatPhone.formatPhone(12345678900) );
this.getCardList();
} }
}; };
</script> </script>
......
...@@ -8,17 +8,17 @@ ...@@ -8,17 +8,17 @@
<section> <section>
<div class="clique-qrcode"> <div class="clique-qrcode">
<svg id="barcode"></svg> <svg id="barcode"></svg>
<p class="font-13 color-232326">18790876890</p> <p class="font-13 color-232326">{{ userData.phoneNumber }}</p>
</div> </div>
</section> </section>
<section> <section>
<div class="clique-menu flex"> <div class="clique-menu flex">
<div class="flex-1 flex flex-column clique-menu-cell" @click="changeRoute('point')"> <div class="flex-1 flex flex-column clique-menu-cell" @click="changeRoute('point')">
<p class="color-232326 font-20 font-w-500">10,000</p> <p class="color-232326 font-20 font-w-500">{{ userData.AvailableIntegral }}</p>
<p class="color-848689 font-14 m-t-6">可用积分</p> <p class="color-848689 font-14 m-t-6">可用积分</p>
</div> </div>
<div class="flex-1 flex flex-column clique-menu-cell border-left-1" @click="changeRoute('records')"> <div class="flex-1 flex flex-column clique-menu-cell border-left-1" @click="changeRoute('records')">
<p class="color-232326 font-20 font-w-500">2</p> <p class="color-232326 font-20 font-w-500">{{ userData.record }}</p>
<p class="color-848689 font-14 m-t-6">消费记录</p> <p class="color-848689 font-14 m-t-6">消费记录</p>
</div> </div>
<div class="flex-1 flex flex-column clique-menu-cell border-left-1" @click="changeRoute('cards')"> <div class="flex-1 flex flex-column clique-menu-cell border-left-1" @click="changeRoute('cards')">
...@@ -72,12 +72,9 @@ ...@@ -72,12 +72,9 @@
</template> </template>
<script> <script>
import { Swipe, SwipeItem, Icon } from 'vant';
import JsBarcode from 'jsbarcode'; import JsBarcode from 'jsbarcode';
import { import { getIndexData } from '@/api/index.js';
Swipe,
SwipeItem,
Icon
} from 'vant';
export default { export default {
components: { components: {
...@@ -89,6 +86,12 @@ export default { ...@@ -89,6 +86,12 @@ export default {
data() { data() {
return { return {
cliqueCard: false, // 是否有集团卡 cliqueCard: false, // 是否有集团卡
userData: {
cardNumber: '122223334444f',
phoneNumber: '18790876890',
AvailableIntegral: '10,000',
record: 2
},
banners: { banners: {
title: 'test', title: 'test',
price: 2680, price: 2680,
...@@ -182,18 +185,30 @@ export default { ...@@ -182,18 +185,30 @@ export default {
/** /**
* 生成条形码 * 生成条形码
*/ */
barcode() { barcode(code) {
JsBarcode("#barcode", "122223334444f",{ JsBarcode("#barcode", code, {
format: 'CODE128', format: 'CODE128',
displayValue: false, displayValue: false,
background: "#ffffff", background: "#ffffff",
height: '60' height: '60'
}) })
},
/**
* 获取数据
*/
async getData() {
const that = this;
let resData = await getIndexData();
if (resData.errorCode == 1) {
that.userData = resData;
that.barcode(that.userData.cardNumber);
}
} }
}, },
mounted() { mounted() {
let that = this; let that = this;
that.barcode(); that.barcode('123456789766');
} }
}; };
</script> </script>
...@@ -284,6 +299,4 @@ export default { ...@@ -284,6 +299,4 @@ export default {
} }
} }
} }
</style> </style>
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
</div> </div>
<div class="point-body" :style="{'min-height': $store.state.bodyH - 113 + 'px'}"> <div class="point-body" :style="{'min-height': $store.state.bodyH - 113 + 'px'}">
<van-list <van-list
v-if="list.length" v-if="!!list.length"
v-model="loading" v-model="loading"
:finished="finished" :finished="finished"
finished-text=" " finished-text=" "
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
<script> <script>
import { List } from 'vant'; import { List } from 'vant';
import { getPointData } from '@/api/point.js';
export default { export default {
name: "point", name: "point",
components: { components: {
...@@ -64,16 +65,32 @@ export default { ...@@ -64,16 +65,32 @@ export default {
// 异步更新数据 // 异步更新数据
setTimeout(() => { setTimeout(() => {
for (let i = 0; i < 10; i++) { for (let i = 0; i < 10; i++) {
// this.list.push(this.list.length + 1); this.list.push({
name: '今日签到',
brandName: '[MATERIAL GIRL]',
date: '2018-12-06 10:32',
point: '5'
});
} }
// 加载状态结束 // 加载状态结束
that.loading = false; that.loading = false;
// 数据全部加载完成 // 数据全部加载完成
if (that.list.length >=1) { if (that.list.length >= 50) {
that.finished = true; that.finished = true;
} }
}, 500); }, 500);
},
/**
* 获取积分数据
*/
async getData() {
const that = this;
let resData = await getPointData();
if (resData.errorCode == 1) {
that.list = resData;
}
} }
} }
}; };
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="recorde-contian bg-f4f5f6" :style="{'min-height': $store.state.bodyH + 'px'}"> <div class="recorde-contian bg-f4f5f6" :style="{'min-height': $store.state.bodyH + 'px'}">
<div class="list-contian"> <div class="list-contian">
<van-list <van-list
v-if="list.length" v-if="!!list.length"
v-model="loading" v-model="loading"
:finished="finished" :finished="finished"
finished-text=" " finished-text=" "
...@@ -43,6 +43,7 @@ ...@@ -43,6 +43,7 @@
<script> <script>
import { List, Icon } from 'vant'; import { List, Icon } from 'vant';
import { getRecordData } from '@/api/record.js';
export default { export default {
name: "record", name: "record",
components: { components: {
...@@ -127,6 +128,17 @@ export default { ...@@ -127,6 +128,17 @@ export default {
that.finished = true; that.finished = true;
} }
}, 500); }, 500);
},
/**
* 获取消费记录数据
*/
async getData() {
const that = this;
let resData = await getRecordData();
if (resData.errorCode == 1) {
that.list = resData;
}
} }
} }
}; };
......
...@@ -5,6 +5,10 @@ const path = require('path'); ...@@ -5,6 +5,10 @@ const path = require('path');
module.exports = { module.exports = {
outputDir: 'dist', outputDir: 'dist',
publicPath: process.env.NODE_ENV === 'production' ? './' : './', publicPath: process.env.NODE_ENV === 'production' ? './' : './',
/* devServer: {
host: "localhost",
port: 8006, // 端口号
}, */
css: { css: {
loaderOptions: { loaderOptions: {
postcss: { postcss: {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment