Browse Source

对接了登录、送评详情等页面接口

master
邓平艺 4 years ago
parent
commit
336b69d5bf
  1. 22
      App.vue
  2. 6
      common/http.interceptor.js
  3. 17
      common/request.js
  4. 6
      common/requestMessage.js
  5. 2
      manifest.json
  6. 6
      packages/address/address.vue
  7. 49
      packages/ratingQueryDetail/ratingQueryDetail.vue
  8. 91
      packages/sonpingDetail/expenseDetail.vue
  9. 26
      packages/sonpingDetail/ratingTrajectory.vue
  10. 69
      packages/sonpingDetail/sonpingDetail.vue
  11. 14
      packages/sonpingDetail/viewDetail.vue
  12. 1
      pages/index/index.vue
  13. 74
      pages/login/login.vue
  14. 3
      pages/write/distribution.vue
  15. 7
      service/address.js
  16. 33
      service/grading.js
  17. 10
      service/login.js

22
App.vue

@ -1,36 +1,16 @@
<script>
export default {
globalData: {
wxlogin: () => {}, //
loginRedirectPage: ''
},
onLaunch: function() {
console.log('App Launch');
this.globalData.wxlogin = this.wxlogin;
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
},
methods: {
wxlogin(){
return new Promise((resolve, rejecj) => {
uni.login({
complete: result => {
if(result.errMsg == 'login:ok'){
let code = result.code;
console.log("login.code", code);
// this.$http(this.API.API_WXLOGIN, { code }).then(res => {
// console.log("", res);
// uni.setStorageSync('userinfo', res.data);
// resolve(res.data);
// })
}
}
})
})
},
}
}
</script>

6
common/http.interceptor.js

@ -1,4 +1,5 @@
import { BASE_URL } from "@/config/index.js"
import { BASE_URL } from "@/config/index.js";
const { httpMessage } = require('@/common/requestMessage.js');
module.exports = (vm) => {
// 请求全局配置
@ -16,6 +17,9 @@ module.exports = (vm) => {
uni.$u.http.interceptors.response.use(res => {
if(res.data.code == 0) {
return res;
} else if (res.data.code == 401) {
httpMessage('您的登录状态已过期,登录后我们才能提供更好的服务');
return false;
} else {
vm.$msg(res.data.msg);
return false;

17
common/request.js

@ -70,11 +70,9 @@ export default function request(options){
}
// 判断传入用户token和id
let userInfo = uni.getStorageSync('userInfo') || {};
if(userInfo && userInfo.token && !data.token){
data.token = userInfo.token;
}
if(userInfo && userInfo.id && !data.user_id){
data.user_id = userInfo.id;
// data.user_id = userInfo.id; // todo userId 暂都传
data.user_id = 1;
}
// 获取页面options参数
@ -90,9 +88,16 @@ export default function request(options){
getsign(data);
console.log(url, data);
let httpData = method == 'get' ? {params: data} : data;
let httpConfig = {
header: {}
}
if(userInfo && userInfo.token){
httpConfig.header.token = userInfo.token;
}
let httpData = method == 'get' ? {params: data, ...httpConfig} : data;
// 发起请求
uni.$u.http[method](url, httpData).then(res => {
uni.$u.http[method](url, httpData, httpConfig).then(res => {
resolve(res);
}).catch(err => {
reject(err);

6
common/requestMessage.js

@ -15,8 +15,10 @@ export const httpMessage = (function () {
confirmText: '确定',
success: (res) =>{
if (res.confirm) {
isTp = true
uni.reLaunch({
isTp = true;
let pages = getCurrentPages(); // 设置登录重定向地址,登录完成后跳转回原页面
getApp().globalData.loginRedirectPage = '/'+ pages[pages.length - 1].route;
uni.redirectTo({
url: '/pages/login/login',
})
}

2
manifest.json

@ -50,7 +50,7 @@
"quickapp" : {},
/* */
"mp-weixin" : {
"appid" : "wx8c794acc7c3067b6",
"appid" : "wxb35ef055a4dd8ad4",
"setting" : {
"urlCheck" : false
},

6
packages/address/address.vue

@ -37,17 +37,17 @@
return {
addressList: [],
is_select: false,
userInfo: {}
}
},
onLoad(options){
this.is_select = Boolean(Number(options.is_select || '0'));
this.userInfo = uni.getStorageSync('userInfo') || {};
},
onShow(){
this.getUserAddress();
},
methods: {
async getUserAddress(){
let res = await address(this.userInfo.id);
let res = await address();
this.addressList = res.data.datas;
},
// todo

49
packages/ratingQueryDetail/ratingQueryDetail.vue

@ -3,6 +3,7 @@
<view class="flex-col group_4">
<view class="flex-col section_2">
<view class="flex-row equal-division">
<!-- todo 评卡详情图 -->
<image
src="https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/62677e395a7e3f03107ffc5f/62677e4a35a7e10011e93a80/16509497793576171527.png"
class="equal-division-item"
@ -16,19 +17,19 @@
<view class="flex-col section_3">
<view class="flex-row">
<text class="text_2">编号</text>
<text class="text_3">847539845935940</text>
<text class="text_3">{{ details.order.order_num }}</text>
</view>
<view class="flex-row group_6">
<text class="text_4">系列</text>
<text class="text_5">nx系列</text>
<text class="text_5">{{ details.order.card_series }}</text>
</view>
<view class="flex-row group_7">
<text class="text_6">子系列</text>
<text class="text_7">n系列</text>
<text class="text_7">{{ details.order.sub_card_series }}</text>
</view>
<view class="flex-row group_8">
<text class="text_8">发行商</text>
<text class="text_9">华克发行商</text>
<text class="text_9">{{ details.order.publisher }}</text>
</view>
</view>
<view class="justify-between section_4">
@ -36,34 +37,34 @@
<view class="flex-col items-center">
<view class="group_11">
<text class="text_10">居中分</text>
<text class="text_11">10</text>
<text class="text_11">{{ details.order.center_s }}</text>
</view>
<view class="group_12">
<text class="text_12">边框分</text>
<text class="text_13">10</text>
<text class="text_13">{{ details.order.border_s }}</text>
</view>
</view>
<view class="group_13">
<text class="text_14">表面分</text>
<text class="text_15">9.5</text>
<text class="text_15">{{ details.order.front }}</text>
</view>
<view class="group_14">
<text class="text_16">签字分</text>
<text class="text_17">9</text>
<text class="text_17">{{ details.order.sign_s }}</text>
</view>
<view class="group_15">
<text class="text_18">卡角分</text>
<text class="text_19">9</text>
<text class="text_19">{{ details.order.corner_s }}</text>
</view>
</view>
<view class="flex-col items-center section_5">
<text class="text_20">9.5</text>
<text class="text_20">{{ details.order.total_s }}</text>
<text class="text_21">总评分</text>
</view>
</view>
<view class="flex-col section_6">
<view class="flex-col group_16">
<lf-table :Header="header" :Content="content" height="auto" width="686" :showNumber="false"></lf-table>
<lf-table :Header="header" :Content="details.history" height="auto" width="686" :showNumber="false" v-if="$isRight(details.history)"></lf-table>
<view class="flex-col items-center button" @click="setClipboardData">
<text>复制拍卖链接</text>
</view>
@ -74,7 +75,8 @@
</template>
<script>
import lfTable from '@/components/lf-table.vue'
import lfTable from '@/components/lf-table.vue';
import { gradingDetail } from '@/service/grading.js'
export default {
components: {
@ -85,22 +87,27 @@
header: [{
text: '评级',
width: 343,
key: 'rating'
key: 'title'
},{
text: '数量',
width: 343,
key: 'number'
key: 'num'
}],
content: [{
rating: '10',
number: 1
},{
rating: '12',
number: 3
}]
details: {},
id: ''
};
},
onLoad(options){
this.id = options.id || 4; // todo id
this.getGradingDetail();
},
methods: {
async getGradingDetail(){
let res = await gradingDetail(this.id);
console.log("res", res);
this.details = res.data.datas;
},
// todo
setClipboardData(){
uni.setClipboardData({
data: '测试'

91
packages/sonpingDetail/expenseDetail.vue

@ -5,38 +5,30 @@
<view class="flex-col section_2">
<view class="justify-between">
<text class="text_2">费用合计</text>
<text class="text_3">¥120</text>
<text class="text_3">¥{{ details.total }}</text>
</view>
<view class="justify-between group_7">
<text class="text_4">订单折扣</text>
<text class="text_5"></text>
<text class="text_5">{{ details.discount && details.discount > 0 ? details.discount +'折' : '' }}</text>
</view>
</view>
<view class="card">
<!-- <u-collapse @change="change" @close="close" @open="open" ref="myCollapse" > -->
<u-collapse :border="false" ref="myCollapse" :value="['Rating fee']">
<u-collapse-item title="评级费用" value="¥120" name="Rating fee" >
<view class="u-collapse-content lf-row-between collapse-item-content">
<view>ANDRW WIGGINS</view>
<view>¥40</view>
</view>
<view class="u-collapse-content lf-row-between collapse-item-content">
<view>ANDRW WIGGINS</view>
<view>¥40</view>
</view>
<view class="u-collapse-content lf-row-between collapse-item-content">
<view>ANDRW WIGGINS</view>
<view>¥40</view>
<u-collapse-item title="评级费用" :value="ratingFeeTotal" name="Rating fee" >
<view class="u-collapse-content lf-row-between collapse-item-content" v-for="(item, index) in details.grading_cost" :key="index">
<view>{{ item.title }}</view>
<view>¥{{ item.amount }}</view>
</view>
</u-collapse-item>
</u-collapse>
</view>
<view class="card">
<u-collapse :border="false" :value="['other expenses']">
<u-collapse-item title="其他费用" value="¥0" name="other expenses" >
<lf-table :Header="header" :Content="content" height="auto" width="100%" :showNumber="false" :border="false" headBgColor="transparent"></lf-table>
<u-collapse :border="false">
<u-collapse-item title="其他费用" :value="otherFeeTotal" name="other expenses" >
<lf-table :Header="header" :Content="details.other" height="auto" width="100%" :showNumber="false" :border="false" headBgColor="transparent" v-if="$isRight(details.other)"></lf-table>
</u-collapse-item>
</u-collapse>
</view>
@ -47,7 +39,9 @@
</template>
<script>
import lfTable from '@/components/lf-table.vue'
import lfTable from '@/components/lf-table.vue';
import { gradingPayment } from '@/service/grading.js';
import Bigc from '@/common/bigc.js';
export default {
components: {
@ -58,35 +52,64 @@
header: [{
text: '费用名称',
width: 171,
key: 'name'
key: 'title'
},{
text: '价格',
width: 171,
key: 'price'
key: 'amount'
},{
text: '数量',
width: 171,
key: 'number'
key: 'num'
},{
text: '合计',
width: 171,
key: 'total'
}],
content: [{
name: '牛奶',
price: '¥10',
number: 3,
total: '¥10'
},{
name: '大咖',
price: '¥10',
number: 2,
total: '¥10'
}]
id: '',
details: {}
};
},
onLoad(){
// todo this.$nextTick(() => this.$refs.myCollapse.init())
computed: {
ratingFeeTotal(){
if(this.$valueType(this.details.grading_cost) === 'undefined' || this.details.grading_cost.length === 0){
return '';
}else{
let total = new Bigc(0);
this.details.grading_cost.map(item => {
total = total.plus(item.amount);
});
let value = '¥'+ total.round(2, 0);
return value;
}
},
otherFeeTotal(){
if(this.$valueType(this.details.other) === 'undefined' || this.details.other.length === 0){
return '';
}else{
let total = new Bigc(0);
this.details.other.map(item => {
total = total.plus(item.total);
});
let value = '¥'+ total.round(2, 0);
return value;
}
}
},
onLoad(options){
this.id = options.id;
this.getGradingPayment();
},
methods: {
async getGradingPayment(){
let res = await gradingPayment(this.id);
let details = res.data.datas;
details.other.forEach(item => {
item.total = new Bigc(item.num).times(item.amount).round(2, 0);
})
this.details = details;
this.$nextTick(() => this.$refs.myCollapse.init());
}
}
};
</script>

26
packages/sonpingDetail/ratingTrajectory.vue

@ -4,20 +4,21 @@
<view class="flex-col section_2">
<view class="bottom-group justify-center">
<text class="text_2">发货单号</text>
<text class="text_3">9847583947839743-1</text>
<text class="text_3">{{ details.express_numb }}</text>
</view>
<view class="bottom-group justify-center lf-m-t-20">
<text class="text_2">客服电话</text>
<text class="text_3">07715454545</text>
<text class="text_3">{{ details.tel }}</text>
</view>
</view>
</view>
<view class="card">
<u-steps current="0" direction="column" :dot="true">
<u-steps-item title="发货,您的包裹已邮寄,请注意查收" desc="2022-03-16 16:27">
<!-- todo 评级轨迹字段对接 -->
<!-- <u-steps-item title="发货,您的包裹已邮寄,请注意查收" :desc="item.createTime" v-for="(item, index) in details.logs" :key="index">
<text class="slot-icon qxk-iconfont qxk-icon-kefujiqirenbeifen lf-font-50" slot="icon" style="color: #e6a33c;"></text>
</u-steps-item>
</u-steps-item> -->
<u-steps-item title="发货,您的包裹已邮寄,请注意查收" desc="2022-03-16 16:27">
<text class="slot-icon qxk-iconfont qxk-icon-kefujiqirenbeifen lf-font-50" slot="icon" style="color: #e6a33c;"></text>
</u-steps-item>
@ -36,10 +37,25 @@
</template>
<script>
import { gradingLogs } from '@/service/grading.js'
export default {
data() {
return { listD8Bhg9Dz: [null, null, null, null, null, null, null, null, null] };
return {
id: '',
details: {}
};
},
onLoad(options){
this.id = options.id;
this.getGradingLogs();
},
methods: {
async getGradingLogs(){
let res = await gradingLogs(this.id);
this.details = res.data.datas;
}
}
};
</script>

69
packages/sonpingDetail/sonpingDetail.vue

@ -45,7 +45,7 @@
</view>
</view>
<view class="section_3 flex-col">
<view class="flex-col group_13" @click="$url('/packages/sonpingDetail/ratingTrajectory')">
<view class="flex-col group_13" @click="$url('/packages/sonpingDetail/ratingTrajectory?id='+ id)">
<view class="flex-row">
<image
src="https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/62677e395a7e3f03107ffc5f/62677e4a35a7e10011e93a80/16509497775960694116.png"
@ -69,10 +69,10 @@
</view>
<view class="flex-col section_4">
<text class="text_16">送评信息</text>
<view class="justify-between group_16" @click="$url('/packages/sonpingDetail/ratingTrajectory')">
<view class="justify-between group_16" @click="$url('/packages/sonpingDetail/ratingTrajectory?id='+ id)">
<view class="flex-row">
<text class="text_17">寄送藏品</text>
<text class="text_18">顺丰 SF137843938493</text>
<text class="text_18">{{ details.order.express_type }}{{ details.order.express_numb }}</text>
</view>
<image
src="https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/62677e395a7e3f03107ffc5f/62677e4a35a7e10011e93a80/16509497780290849398.png"
@ -81,23 +81,23 @@
</view>
<view class="flex-row group_18">
<text class="text_19">送评公司</text>
<text class="text_20">北京评分卡部</text>
<text class="text_20">{{ details.order.express_type }}</text>
</view>
<view class="flex-row group_19">
<text class="text_21">送评人</text>
<text class="text_22">卡卡</text>
<text class="text_22">{{ details.order.owner }}</text>
</view>
<view class="flex-row group_20">
<text class="text_23">联系方式</text>
<text class="text_24">1527396409</text>
<text class="text_24">{{ details.order.tel }}</text>
</view>
<view class="flex-row group_21">
<text class="text_25">是否快评</text>
<text class="text_26"></text>
<text class="text_26">{{ ['否','是'][details.order.is_fast] }}</text>
</view>
<view class="flex-row group_22">
<text class="text_27">保价</text>
<text class="text_28">¥0</text>
<text class="text_28">¥</text>
</view>
<view class="flex-col group_23">
<view class="flex-col">
@ -107,19 +107,12 @@
</view>
<view class="flex-row equal-division">
<image
src="https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/62677e395a7e3f03107ffc5f/62677e4a35a7e10011e93a80/16509497768828992333.png"
mode="aspectFill"
:src="item"
class="equal-division-item image_14"
@click="previewImage"
/>
<image
src="https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/62677e395a7e3f03107ffc5f/62677e4a35a7e10011e93a80/16509497768927244914.png"
class="equal-division-item"
@click="previewImage"
/>
<image
src="https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/62677e395a7e3f03107ffc5f/62677e4a35a7e10011e93a80/16509497768986098398.png"
class="equal-division-item"
@click="previewImage"
v-for="(item, index) in showImages"
:key="index"
@click="previewImage(index)"
/>
</view>
</view>
@ -136,10 +129,14 @@
</template>
<script>
import { gradingDetail } from '@/service/grading.js'
export default {
data() {
return {
address: {}
address: {},
id: '',
details: {}
};
},
watch: {
@ -147,11 +144,29 @@
console.log("监听到改变,调取接口。。。。");
}
},
computed: {
showImages(){
if(this.details.order && this.details.order.images){
return this.details.order.images.split(',');
}else{
return []
}
}
},
onLoad(options){
this.id = options.id;
this.getGradingDetail();
},
methods: {
previewImage(){
async getGradingDetail(){
let res = await gradingDetail(this.id);
console.log("res", res);
this.details = res.data.datas;
},
previewImage(current){
uni.previewImage({
urls: ['https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/62677e395a7e3f03107ffc5f/62677e4a35a7e10011e93a80/16509497768927244914.png'],
current: 0
urls: this.showImages,
current: current
})
}
}
@ -171,9 +186,9 @@
}
.equal-division-item {
margin-left: 28rpx;
flex: 1 1 210rpx;
width: 210rpx;
height: 130rpx;
/* flex: 1 1 210rpx; */
width: 80px;
height: 80px;
}
.page {
background-color: #f6f6f6;

14
packages/sonpingDetail/viewDetail.vue

@ -112,11 +112,23 @@
</template>
<script>
import { gradingDetail } from '@/service/grading.js'
export default {
data() {
return {};
return {
id: ''
};
},
onLoad(options){
this.id = options.id;
},
methods: {
async getViewGradingDetail(){
// todo
let res = await gradingDetail(this.id);
console.log("res", res)
},
previewImage(){
uni.previewImage({
urls: ['https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/62677e395a7e3f03107ffc5f/62677e4a35a7e10011e93a80/16509497768927244914.png'],

1
pages/index/index.vue

@ -207,7 +207,6 @@
let res = await my();
this.user = res.data.datas.user;
this.dots = res.data.datas.dots;
uni.setStorageSync('userInfo', res.data.datas.user);
},
nextToGrading(){
if(!this.isConsentAgreement) return this.$msg('请先阅读并同意协议');

74
pages/login/login.vue

@ -3,7 +3,7 @@
<view class="lf-row-center lf-flex-column box">
<!-- <image class="img" :src="userInfo.avatar" v-if="userInfo.avatar"></image> -->
<!-- <image class="img" src="../../static/logo.png" v-else></image> -->
<image class="img" src="../../static/logo.png" ></image>
<image class="img" src="@/static/mrtx.png" ></image>
<view class="lf-m-t-30 lf-font-32" v-if="type == 'phone'">{{ userInfo.nickname || '游客用户' }}</view>
<block v-if="type == 'userinfo'">
<button class="btn" @click="getUserProfile">
@ -11,7 +11,7 @@
<text class="lf-m-l-20">微信快捷登录</text>
</button>
<!-- <view class="lf-m-t-40 lf-font-28" @click="$toBack()">暂不绑定继续操作</view> -->
<view class="mask" v-if="!checked" @click="$msg('您未同意协议条款')"></view>
<!-- <view class="mask" v-if="!checked" @click="$msg('您未同意协议条款')"></view> -->
</block>
<block v-else-if="type == 'phone'">
<button class="btn" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">
@ -22,7 +22,7 @@
<view class="mask" v-if="!checked" @click="$msg('您未同意协议条款')"></view>
</block>
</view>
<!-- 服务条款 -->
<!-- 服务条款 todo -->
<view class="fixed-bottom lf-flex" v-show="agreement.title">
<checkbox-group @change="checkboxChange" style="display: inline-block;">
<checkbox class="lf-text-vertical" :checked="checked"></checkbox>
@ -39,6 +39,8 @@
</template>
<script>
import { wxLogin } from '@/service/login.js'
export default {
data(){
return {
@ -46,26 +48,36 @@
isLogin: false, //
userInfo: {},
type: 'userinfo', // phone | userinfo
agreement: {} //
agreement: {}, //
code: ''
}
},
onLoad(options){
this.type = options.type || this.type;
this.getAgree();
getApp().globalData.wxlogin().then(res => {
this.userInfo = res;
});
// this.type = options.type || this.type;
// this.getAgree();
// getApp().globalData.wxlogin().then(res => {
// this.userInfo = res;
// });
uni.login({
complete: result => {
if(result.errMsg == 'login:ok'){
let code = result.code;
this.code = code;
}
}
})
},
methods: {
//
// todo
getAgree(){
this.$http(this.API.API_WXLOGIN_VIEW).then(res => {
this.agreement = res.data?.agreement;
})
// this.$http(this.API.API_WXLOGIN_VIEW).then(res => {
// this.agreement = res.data?.agreement;
// })
},
//
// todo
enterAgree(){
this.$url('/pages/agreement/agreement?id='+ this.agreement.article_id);
this.$url('/pages/article/article?id='+ this.agreement.article_id);
},
//
checkboxChange(event){
@ -95,27 +107,31 @@
//
getUserProfile(){
uni.getUserProfile({
desc: '您的信息将用于时空网显示',
desc: '您的信息将用于球星卡显示',
lang: 'zh_CN',
complete: result => {
complete: async result => {
console.log(result)
if(result.errMsg == 'getUserProfile:ok'){
let encryptedData = result.encryptedData;
let iv = result.iv;
let signature = result.signature;
// let userInfo = uni.getStorageSync('userInfo') || {};
this.$http(this.API.API_WECHAT_SETPROFILE, {
encryptedData,
iv,
// token: userInfo.token //
}).then(res => {
console.log("更新用户信息", res);
this.$msg('更新成功', {icon: 'success'});
uni.setStorageSync('userInfo', res.data);
setTimeout(() => {
this.$toBack();
}, 1000);
let res = await wxLogin({
code: this.code,
iv: iv,
encryptedData: encryptedData
});
let user = {...res.data.datas.user, token: res.data.datas.token};
uni.setStorageSync('userInfo', user);
this.$msg('登录成功, 即将跳转...').then(() => {
let loginRedirectPage = getApp().globalData.loginRedirectPage;
if(loginRedirectPage){
this.$url(loginRedirectPage, {type: 'redirect'});
}else{
this.$url('/pages/index/index', {type: 'launch'});
}
})
}
}

3
pages/write/distribution.vue

@ -140,8 +140,7 @@
};
addGrading(data).then(res => {
// let id = res.data.datas.id; // id TODO
let id = '';
let id = res.data.datas.order_id;
this.$msg('提交成功', {icon: 'success'}).then(() => {
this.$url('/packages/sonpingDetail/sonpingDetail?id='+ id, {type: 'launch'}); //
})

7
service/address.js

@ -1,13 +1,10 @@
import request from '@/common/request.js'
// 获取用户地址列表
export async function address(user_id) {
export async function address() {
return await request({
url: '/api/v1/addresses',
method: 'post',
data: {
user_id
}
method: 'post'
})
}

33
service/grading.js

@ -7,4 +7,37 @@ export async function addGrading(data) {
method: 'post',
data
})
}
// 送评详情
export async function gradingDetail(order_id) {
return await request({
url: '/api/v1/grading_detail',
method: 'post',
data: {
order_id
}
})
}
// 评级轨迹
export async function gradingLogs(order_id) {
return await request({
url: '/api/v1/grading_logs',
method: 'post',
data: {
order_id
}
})
}
// 评级费用明细
export async function gradingPayment(order_id) {
return await request({
url: '/api/v1/grading_payment',
method: 'post',
data: {
order_id
}
})
}

10
service/login.js

@ -0,0 +1,10 @@
import request from '@/common/request.js'
// 用户登录
export async function wxLogin(data) {
return await request({
url: '/api/v1/wx_login',
method: 'post',
data
})
}
Loading…
Cancel
Save