增加支付
This commit is contained in:
@@ -66,3 +66,47 @@ export function tuijianVideo(data){
|
||||
}
|
||||
})
|
||||
}
|
||||
//解锁10集视频
|
||||
export function buyTenVideo(data){
|
||||
return http.request({
|
||||
url: 'order/insertCourseOrders/limit10',
|
||||
method:'GET',
|
||||
data:data
|
||||
})
|
||||
}
|
||||
//解锁单集或者全部视频
|
||||
export function buyVideo(data){
|
||||
return http.request({
|
||||
url: 'order/insertCourseOrders',
|
||||
method:'GET',
|
||||
data:data
|
||||
})
|
||||
}
|
||||
//订单支付
|
||||
export function payOrder(data){
|
||||
let payType='h5'
|
||||
// #ifdef APP
|
||||
payType='app'
|
||||
// #endif
|
||||
return http.request({
|
||||
url: 'wuyou/payOrder/'+data.orderId+'?payType='+payType,
|
||||
method:'GET'
|
||||
})
|
||||
}
|
||||
//获取订单支付状态
|
||||
export function getOrderInfo(data){
|
||||
return http.request({
|
||||
url: 'wuyou/queryOrder/'+data.orderId,
|
||||
method:'GET'
|
||||
})
|
||||
}
|
||||
//金币解锁
|
||||
export function goldPay(data){
|
||||
return http.request({
|
||||
url: 'order/payOrders',
|
||||
method:'POST',
|
||||
data:{...data,header:{
|
||||
'content-type':'application/x-www-form-urlencoded'
|
||||
}}
|
||||
})
|
||||
}
|
||||
@@ -5,12 +5,12 @@
|
||||
@change="swiperChange" :current="current" :circular="true" vertical class="u-flex-1"
|
||||
@transition="transition" :indicator-dots="false" :autoplay="false" :interval="0" :duration="200">
|
||||
<swiper-item v-for="(item,index) in videoList" :key="index">
|
||||
<list-item-vue :total="list.length" :item="item" :isCommand="isCommand"
|
||||
:rightStyle="rightStyle" :infoStyle="infoStyle"
|
||||
:showControls="control.showControls" :current="current" :isCollect="isCollect"
|
||||
@toDetail="toDetail(item,index)" @controlstoggles="controlstoggles" :playSpeeds="playSpeeds"
|
||||
:index="index" :nowIndex="nowIndex" @dianzanClick="dianzanClick(item,index)" @share="share(item)"
|
||||
@zhuijuClick="zhuijuClick(item)" @popupShow="popupShow($event,item,index)"></list-item-vue>
|
||||
<list-item-vue :total="list.length" :item="item" :isCommand="isCommand" :rightStyle="rightStyle"
|
||||
:infoStyle="infoStyle" :showControls="control.showControls" :current="current"
|
||||
:isCollect="isCollect" @toDetail="toDetail(item,index)" @controlstoggles="controlstoggles"
|
||||
:playSpeeds="playSpeeds" :index="index" :nowIndex="nowIndex"
|
||||
@dianzanClick="dianzanClick(item,index)" @share="share(item)" @zhuijuClick="zhuijuClick(item)"
|
||||
@popupShow="popupShow($event,item,index)"></list-item-vue>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
</view>
|
||||
@@ -22,12 +22,12 @@
|
||||
<cell v-for="(item,index) in list" :key="item.courseDetailsId" :ref="setRefList(index)">
|
||||
<view class="swipers-items" :style="boxStyle" @longpress="popupShow('speed')">
|
||||
<list-item-vue :total="list.length" :item="item" :current="current" :isCollect="isCollect"
|
||||
:rightStyle="rightStyle" :infoStyle="infoStyle"
|
||||
:isCommand="isCommand" :showControls="control.showControls" @toDetail="toDetail(item,index)"
|
||||
@itemMounted="itemMounted" @controlstoggles="controlstoggles" :index="index" :instance="instance"
|
||||
:nowIndex="nowIndex" @appear="appear($event,item,index)" :playSpeeds="playSpeeds"
|
||||
@disappear="disappear(item,index)" @dianzanClick="dianzanClick(item,index)" @share="share(item)"
|
||||
@zhuijuClick="zhuijuClick(item)" @popupShow="popupShow($event,item,index)"></list-item-vue>
|
||||
:rightStyle="rightStyle" :infoStyle="infoStyle" :isCommand="isCommand"
|
||||
:showControls="control.showControls" @toDetail="toDetail(item,index)" @itemMounted="itemMounted"
|
||||
@controlstoggles="controlstoggles" :index="index" :instance="instance" :nowIndex="nowIndex"
|
||||
@appear="appear($event,item,index)" :playSpeeds="playSpeeds" @disappear="disappear(item,index)"
|
||||
@dianzanClick="dianzanClick(item,index)" @share="share(item)" @zhuijuClick="zhuijuClick(item)"
|
||||
@popupShow="popupShow($event,item,index)"></list-item-vue>
|
||||
</view>
|
||||
</cell>
|
||||
</list>
|
||||
@@ -125,7 +125,8 @@
|
||||
</view>
|
||||
<view class="u-flex u-flex-row u-m-t-30 u-flex-y-center u-font-28">
|
||||
<view class="u-flex-y-center">
|
||||
<up-checkbox usedAlone shape="circle" v-model:checked="isAgree" :activeColor="color.main"></up-checkbox>
|
||||
<up-checkbox usedAlone shape="circle" v-model:checked="isAgree"
|
||||
:activeColor="color.main"></up-checkbox>
|
||||
</view>
|
||||
<view class="u-flex u-flex-row u-flex-y-center">
|
||||
<text class="u-font-28 color-333">我已经阅读并同意</text>
|
||||
@@ -213,7 +214,7 @@
|
||||
showControls: true
|
||||
})
|
||||
// #ifdef APP
|
||||
control.showControls=false
|
||||
control.showControls = false
|
||||
// #endif
|
||||
|
||||
const customStyle = computed(() => {
|
||||
@@ -229,7 +230,7 @@
|
||||
|
||||
function controlstoggles(e) {
|
||||
control.showControls = e.detail.show
|
||||
console.log(control.showControls );
|
||||
console.log(control.showControls);
|
||||
control.showBack = control.showControls
|
||||
console.log(control);
|
||||
}
|
||||
@@ -292,8 +293,8 @@
|
||||
pay: false,
|
||||
payTips: false,
|
||||
speed: false,
|
||||
data:null,
|
||||
payType:null
|
||||
data: null,
|
||||
payType: null
|
||||
})
|
||||
|
||||
|
||||
@@ -325,25 +326,68 @@
|
||||
}
|
||||
|
||||
|
||||
|
||||
//非金币支付
|
||||
async function payOrder(data) {
|
||||
const res = await Api.payOrder(data)
|
||||
console.log(res);
|
||||
if (res) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/pays/pays?orderId=' + data.orderId + '&url=' + res.h5Url
|
||||
});
|
||||
return
|
||||
// #ifdef APP
|
||||
uni.navigateTo({
|
||||
url: '/pages/pays/pays?orderId=' + res.orderId + '&url=' + res.h5Url
|
||||
});
|
||||
// #endif
|
||||
// #ifdef H5
|
||||
window.location.href = res.h5Url
|
||||
// #endif
|
||||
}
|
||||
}
|
||||
//金币支付
|
||||
async function goldPay(data) {
|
||||
const res = await Api.goldPay(data)
|
||||
console.log(res);
|
||||
}
|
||||
//确认支付
|
||||
function payConfirm() {
|
||||
console.log(isAgree.value);
|
||||
async function payConfirm() {
|
||||
if (!isAgree.value) {
|
||||
return infoBox.showToast('请阅读并同意 《付费须知说明》')
|
||||
}
|
||||
const [type, num] = popup.payType.split('-');
|
||||
console.log(type, num);
|
||||
let data = {
|
||||
courseId: this.courseId
|
||||
courseId: popup.data.courseId
|
||||
}
|
||||
if(popup.payType=='all'){
|
||||
if (num == 1) {
|
||||
data.courseDetailsId = popup.data.courseDetailsId
|
||||
}
|
||||
|
||||
const res = num == '10' ? await Api.buyTenVideo(data) : await Api.buyVideo(data)
|
||||
if (res) {
|
||||
if(type=='gold'){
|
||||
goldPay({
|
||||
orderId: res.orders.ordersId
|
||||
})
|
||||
}else{
|
||||
payOrder({
|
||||
orderId: res.orders.ordersId
|
||||
})
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
function payBtnClick(type,num) {
|
||||
popup.payType=`${type}-${num}`
|
||||
popupClose()
|
||||
function payBtnClick(type, num) {
|
||||
console.log(type, num);
|
||||
popup.payType = `${type}-${num}`
|
||||
popupClose('show')
|
||||
popupShow('payTips')
|
||||
}
|
||||
|
||||
@@ -370,7 +414,10 @@
|
||||
};
|
||||
}
|
||||
//滚动到指定位置
|
||||
let positonmer = null
|
||||
|
||||
function goListPosition(index) {
|
||||
clearTimeout(positonmer)
|
||||
console.log('goListPosition:' + index)
|
||||
const el = refList.value[index]
|
||||
if ($mountedComponents[props.list.length - 1]) {
|
||||
@@ -382,7 +429,7 @@
|
||||
setVideoList(item)
|
||||
insertHistory()
|
||||
} else {
|
||||
setTimeout(() => {
|
||||
positonmer = setTimeout(() => {
|
||||
goListPosition(index)
|
||||
}, 30)
|
||||
}
|
||||
@@ -400,11 +447,13 @@
|
||||
}
|
||||
}
|
||||
|
||||
function popupShow(key = 'show',item,index) {
|
||||
function popupShow(key = 'show', item, index) {
|
||||
console.log(item);
|
||||
popup[key] = true
|
||||
popup['data'] = item
|
||||
popup['index'] = index
|
||||
if (item) {
|
||||
popup['data'] = item
|
||||
popup['index'] = index
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -602,7 +651,7 @@
|
||||
}
|
||||
console.log(videoList.value);
|
||||
if (!item.videoUrl) {
|
||||
popupShow('pay',item,index)
|
||||
popupShow('pay', item, index)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -632,7 +681,7 @@
|
||||
const nowDanjiPrice = computed(() => {
|
||||
return videoList.value[current.value].price
|
||||
})
|
||||
const rightStyle=computed(()=>{
|
||||
const rightStyle = computed(() => {
|
||||
// #ifdef H5
|
||||
return {
|
||||
transform: `translateX(${!control.showControls?'0':60}px)`
|
||||
@@ -644,7 +693,7 @@
|
||||
}
|
||||
// #endif
|
||||
})
|
||||
const infoStyle=computed(()=>{
|
||||
const infoStyle = computed(() => {
|
||||
// #ifdef H5
|
||||
return {
|
||||
transform: `translateX(${!control.showControls?0:'-110%'})`
|
||||
@@ -656,6 +705,7 @@
|
||||
}
|
||||
// #endif
|
||||
})
|
||||
|
||||
function loadmore() {
|
||||
console.log('loadmore');
|
||||
}
|
||||
|
||||
363
http/http.js
363
http/http.js
@@ -1,152 +1,161 @@
|
||||
// 导入全局属性
|
||||
import { sm4DecryptByResData } from "@/utils/encryptUtil.js";
|
||||
import {
|
||||
sm4DecryptByResData
|
||||
} from "@/utils/encryptUtil.js";
|
||||
import infoBox from "@/utils/infoBox.js";
|
||||
import { reject } from "lodash";
|
||||
import {
|
||||
reject
|
||||
} from "lodash";
|
||||
import config from "@/commons/config.js";
|
||||
// 测试服
|
||||
let baseUrl = config.baseApiUrl + "app";
|
||||
const loadingShowTime = 200;
|
||||
|
||||
function getHeader() {
|
||||
const headerObject = {};
|
||||
headerObject["token"] = uni.getStorageSync("token");
|
||||
return headerObject;
|
||||
function getHeader(data) {
|
||||
const header = data ? data.header : {}
|
||||
const headerObject = {
|
||||
...header
|
||||
};
|
||||
headerObject["token"] = uni.getStorageSync("token");
|
||||
return headerObject;
|
||||
}
|
||||
|
||||
// 通用处理逻辑
|
||||
function commonsProcess(showLoading, httpReqCallback,isreturm) {
|
||||
// 判断是否请求完成(用作 是否loading )
|
||||
// 包括: 'ing', 'ingLoading', 'finish'
|
||||
let reqState = "ing";
|
||||
// 是否已经提示的错误信息
|
||||
let isShowErrorToast = false;
|
||||
// 请求完成, 需要处理的动作
|
||||
let reqFinishFunc = () => {
|
||||
if (reqState == "ingLoading") {
|
||||
// 关闭loading弹层
|
||||
infoBox.hideLoading();
|
||||
}
|
||||
reqState = "finish"; // 请求完毕
|
||||
};
|
||||
// 明确显示loading
|
||||
if (showLoading) {
|
||||
// xx ms内响应完成,不提示loading
|
||||
setTimeout(() => {
|
||||
if (reqState == "ing") {
|
||||
reqState = "ingLoading";
|
||||
infoBox.showLoading();
|
||||
}
|
||||
}, loadingShowTime);
|
||||
}
|
||||
function commonsProcess(showLoading, httpReqCallback, isreturm) {
|
||||
// 判断是否请求完成(用作 是否loading )
|
||||
// 包括: 'ing', 'ingLoading', 'finish'
|
||||
let reqState = "ing";
|
||||
// 是否已经提示的错误信息
|
||||
let isShowErrorToast = false;
|
||||
// 请求完成, 需要处理的动作
|
||||
let reqFinishFunc = () => {
|
||||
if (reqState == "ingLoading") {
|
||||
// 关闭loading弹层
|
||||
infoBox.hideLoading();
|
||||
}
|
||||
reqState = "finish"; // 请求完毕
|
||||
};
|
||||
// 明确显示loading
|
||||
if (showLoading) {
|
||||
// xx ms内响应完成,不提示loading
|
||||
setTimeout(() => {
|
||||
if (reqState == "ing") {
|
||||
reqState = "ingLoading";
|
||||
infoBox.showLoading();
|
||||
}
|
||||
}, loadingShowTime);
|
||||
}
|
||||
|
||||
return httpReqCallback()
|
||||
.then((httpData) => {
|
||||
return httpReqCallback()
|
||||
.then((httpData) => {
|
||||
|
||||
reqFinishFunc(); // 请求完毕的动作
|
||||
// 从http响应数据中解构响应数据 [ 响应码、 bodyData ]
|
||||
let { statusCode, data } = httpData;
|
||||
// 避免混淆重新命名
|
||||
let bodyData = data;
|
||||
if(isreturm){
|
||||
return Promise.resolve(bodyData.data || bodyData.page|| bodyData);
|
||||
}
|
||||
if (statusCode == 500) {
|
||||
isShowErrorToast = true;
|
||||
return Promise.reject(bodyData); // 跳转到catch函数
|
||||
}
|
||||
reqFinishFunc(); // 请求完毕的动作
|
||||
// 从http响应数据中解构响应数据 [ 响应码、 bodyData ]
|
||||
let {
|
||||
statusCode,
|
||||
data
|
||||
} = httpData;
|
||||
// 避免混淆重新命名
|
||||
let bodyData = data;
|
||||
if (isreturm) {
|
||||
return Promise.resolve(bodyData.data || bodyData.page || bodyData);
|
||||
}
|
||||
if (statusCode == 500) {
|
||||
isShowErrorToast = true;
|
||||
return Promise.reject(bodyData); // 跳转到catch函数
|
||||
}
|
||||
|
||||
if (statusCode == 401) {
|
||||
// 提示信息
|
||||
isShowErrorToast = true;
|
||||
return Promise.reject(bodyData); // 跳转到catch函数
|
||||
}
|
||||
// http响应码不正确
|
||||
if (statusCode != 200 && statusCode != 204 && statusCode != 201) {
|
||||
isShowErrorToast = true;
|
||||
data.message =
|
||||
data.message == "Bad credentials" ? "用户名或密码错误" : data.message;
|
||||
infoBox.showToast(data.message || "服务器异常");
|
||||
return Promise.reject(bodyData); // 跳转到catch函数
|
||||
}
|
||||
if (bodyData.code == 401) {
|
||||
// 提示信息
|
||||
isShowErrorToast = true;
|
||||
return Promise.reject(bodyData); // 跳转到catch函数
|
||||
}
|
||||
if (bodyData.code == 500) {
|
||||
// 提示信息
|
||||
isShowErrorToast = true;
|
||||
return Promise.reject(bodyData); // 跳转到catch函数
|
||||
}
|
||||
if (bodyData.code != 0) {
|
||||
infoBox.showToast(data.message);
|
||||
return;
|
||||
}
|
||||
if (statusCode == 401) {
|
||||
// 提示信息
|
||||
isShowErrorToast = true;
|
||||
return Promise.reject(bodyData); // 跳转到catch函数
|
||||
}
|
||||
// http响应码不正确
|
||||
if (statusCode != 200 && statusCode != 204 && statusCode != 201) {
|
||||
isShowErrorToast = true;
|
||||
data.message =
|
||||
data.message == "Bad credentials" ? "用户名或密码错误" : data.message;
|
||||
infoBox.showToast(data.message || "服务器异常");
|
||||
return Promise.reject(bodyData); // 跳转到catch函数
|
||||
}
|
||||
if (bodyData.code == 401) {
|
||||
// 提示信息
|
||||
isShowErrorToast = true;
|
||||
return Promise.reject(bodyData); // 跳转到catch函数
|
||||
}
|
||||
if (bodyData.code == 500) {
|
||||
// 提示信息
|
||||
isShowErrorToast = true;
|
||||
return Promise.reject(bodyData); // 跳转到catch函数
|
||||
}
|
||||
if (bodyData.code != 0) {
|
||||
infoBox.showToast(data.message);
|
||||
return;
|
||||
}
|
||||
|
||||
// 加密数据
|
||||
if (!bodyData.data && bodyData.encryptData) {
|
||||
return Promise.resolve({
|
||||
bizData: sm4DecryptByResData(bodyData.encryptData),
|
||||
code: bodyData.code,
|
||||
});
|
||||
}
|
||||
|
||||
// 构造请求成功的响应数据
|
||||
return Promise.resolve(bodyData.data || bodyData.page|| bodyData);
|
||||
})
|
||||
.catch((res) => {
|
||||
|
||||
if (res.status == 404) {
|
||||
infoBox.showErrorToast("接口404").then(() => {});
|
||||
reject();
|
||||
return;
|
||||
}
|
||||
// 加密数据
|
||||
if (!bodyData.data && bodyData.encryptData) {
|
||||
return Promise.resolve({
|
||||
bizData: sm4DecryptByResData(bodyData.encryptData),
|
||||
code: bodyData.code,
|
||||
});
|
||||
}
|
||||
|
||||
if (res.code == 401) {
|
||||
infoBox.showErrorToast(res.message || "请登录").then(() => {
|
||||
uni.redirectTo({
|
||||
url: "/pages/login/login",
|
||||
});
|
||||
reject();
|
||||
});
|
||||
}
|
||||
if (res.code != 0) {
|
||||
infoBox.showErrorToast(res.msg).then(() => {});
|
||||
reject();
|
||||
}
|
||||
if (res.code == 500) {
|
||||
infoBox.showErrorToast(res.msg || "服务器异常").then(() => {});
|
||||
reject();
|
||||
}
|
||||
reqFinishFunc(); // 请求完毕的动作
|
||||
// 构造请求成功的响应数据
|
||||
return Promise.resolve(bodyData.data || bodyData.page || bodyData);
|
||||
})
|
||||
.catch((res) => {
|
||||
|
||||
// 如果没有提示错误, 那么此处提示 异常。
|
||||
if (!isShowErrorToast) {
|
||||
infoBox.showErrorToast(`请求网络异常`);
|
||||
}
|
||||
if (res.status == 404) {
|
||||
infoBox.showErrorToast("接口404").then(() => {});
|
||||
reject();
|
||||
return;
|
||||
}
|
||||
|
||||
return Promise.reject(res);
|
||||
})
|
||||
.finally(() => {
|
||||
// finally 是 then结束后再执行, 此处不适用。 需要在请求完成后立马调用: reqFinishFunc()
|
||||
});
|
||||
if (res.code == 401) {
|
||||
infoBox.showErrorToast(res.message || "请登录").then(() => {
|
||||
uni.redirectTo({
|
||||
url: "/pages/login/login",
|
||||
});
|
||||
reject();
|
||||
});
|
||||
}
|
||||
if (res.code != 0) {
|
||||
infoBox.showErrorToast(res.msg).then(() => {});
|
||||
reject();
|
||||
}
|
||||
if (res.code == 500) {
|
||||
infoBox.showErrorToast(res.msg || "服务器异常").then(() => {});
|
||||
reject();
|
||||
}
|
||||
reqFinishFunc(); // 请求完毕的动作
|
||||
|
||||
// 如果没有提示错误, 那么此处提示 异常。
|
||||
if (!isShowErrorToast) {
|
||||
infoBox.showErrorToast(`请求网络异常`);
|
||||
}
|
||||
|
||||
return Promise.reject(res);
|
||||
})
|
||||
.finally(() => {
|
||||
// finally 是 then结束后再执行, 此处不适用。 需要在请求完成后立马调用: reqFinishFunc()
|
||||
});
|
||||
}
|
||||
|
||||
// 默认 显示loading(控制 xxs 内 不提示loading )
|
||||
function req(uri, data, method = "GET", showLoading = true, extParams = {}) {
|
||||
return commonsProcess(showLoading, () => {
|
||||
return uni.request(
|
||||
Object.assign(
|
||||
{
|
||||
url: baseUrl + uri,
|
||||
data: data,
|
||||
method: method,
|
||||
header: getHeader(),
|
||||
},
|
||||
extParams
|
||||
)
|
||||
);
|
||||
});
|
||||
return commonsProcess(showLoading, () => {
|
||||
return uni.request(
|
||||
Object.assign({
|
||||
url: baseUrl + uri,
|
||||
data: data,
|
||||
method: method,
|
||||
header: getHeader(data),
|
||||
},
|
||||
extParams
|
||||
)
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
// 默认 显示loading(控制 xxs 内 不提示loading )
|
||||
@@ -158,16 +167,17 @@ function request(args) {
|
||||
method = "GET",
|
||||
showLoading = true,
|
||||
extParams = {},
|
||||
isreturm=false
|
||||
isreturm = false
|
||||
} = args
|
||||
if (params) {
|
||||
let result = ''
|
||||
Object.keys(params).forEach((key) => {
|
||||
if (!Object.is(params[key], undefined) && !Object.is(params[key], null) && !Object.is(JSON.stringify(params[key]), '{}')) {
|
||||
result += encodeURIComponent(key) + '=' + encodeURIComponent(params[key]) + "&"
|
||||
}
|
||||
if (!Object.is(params[key], undefined) && !Object.is(params[key], null) && !Object.is(JSON
|
||||
.stringify(params[key]), '{}')) {
|
||||
result += encodeURIComponent(key) + '=' + encodeURIComponent(params[key]) + "&"
|
||||
}
|
||||
})
|
||||
url = url+'?'+(result.slice(0,result.length-1))
|
||||
url = url + '?' + (result.slice(0, result.length - 1))
|
||||
params = null
|
||||
}
|
||||
let headerObject = {}
|
||||
@@ -177,60 +187,59 @@ function request(args) {
|
||||
url: slash(baseUrl, url),
|
||||
data: params || data,
|
||||
method: method,
|
||||
header: getHeader()
|
||||
header: getHeader(data)
|
||||
}, extParams)
|
||||
|
||||
)
|
||||
},isreturm)
|
||||
}, isreturm)
|
||||
}
|
||||
// 处理/
|
||||
function slash(baseUrl, url) {
|
||||
let u = "";
|
||||
if (baseUrl[baseUrl.length - 1] == "/") {
|
||||
u += baseUrl;
|
||||
} else {
|
||||
u = u + baseUrl + "/";
|
||||
}
|
||||
if (url[0] == "/") {
|
||||
u = u + url.slice(1);
|
||||
} else {
|
||||
u = u + url;
|
||||
}
|
||||
return u;
|
||||
let u = "";
|
||||
if (baseUrl[baseUrl.length - 1] == "/") {
|
||||
u += baseUrl;
|
||||
} else {
|
||||
u = u + baseUrl + "/";
|
||||
}
|
||||
if (url[0] == "/") {
|
||||
u = u + url.slice(1);
|
||||
} else {
|
||||
u = u + url;
|
||||
}
|
||||
return u;
|
||||
}
|
||||
|
||||
// 上传
|
||||
function upload(uri, data, file, showLoading = true, extParams = {}) {
|
||||
// 放置token
|
||||
let headerObject = {};
|
||||
return commonsProcess(showLoading, () => {
|
||||
return uni
|
||||
.uploadFile(
|
||||
Object.assign(
|
||||
{
|
||||
url: baseUrl + uri,
|
||||
formData: data,
|
||||
name: "file",
|
||||
filePath: file.path || file.url,
|
||||
header: getHeader(),
|
||||
},
|
||||
extParams
|
||||
)
|
||||
)
|
||||
.then((httpData) => {
|
||||
// uni.upload 返回bodyData 的是 string类型。 需要解析。
|
||||
httpData.data = JSON.parse(httpData.data);
|
||||
return Promise.resolve(httpData);
|
||||
})
|
||||
.catch((err) => {
|
||||
uni.hideLoading();
|
||||
infoBox.showErrorToast(`上传失败`);
|
||||
});
|
||||
});
|
||||
// 放置token
|
||||
let headerObject = {};
|
||||
return commonsProcess(showLoading, () => {
|
||||
return uni
|
||||
.uploadFile(
|
||||
Object.assign({
|
||||
url: baseUrl + uri,
|
||||
formData: data,
|
||||
name: "file",
|
||||
filePath: file.path || file.url,
|
||||
header: getHeader(data),
|
||||
},
|
||||
extParams
|
||||
)
|
||||
)
|
||||
.then((httpData) => {
|
||||
// uni.upload 返回bodyData 的是 string类型。 需要解析。
|
||||
httpData.data = JSON.parse(httpData.data);
|
||||
return Promise.resolve(httpData);
|
||||
})
|
||||
.catch((err) => {
|
||||
uni.hideLoading();
|
||||
infoBox.showErrorToast(`上传失败`);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export default {
|
||||
req: req,
|
||||
request,
|
||||
upload: upload,
|
||||
};
|
||||
req: req,
|
||||
request,
|
||||
upload: upload,
|
||||
};
|
||||
@@ -192,6 +192,13 @@
|
||||
{
|
||||
"navigationBarTitleText" : "抽奖"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/pays/pays",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText" : ""
|
||||
}
|
||||
}
|
||||
],
|
||||
"globalStyle": {
|
||||
|
||||
86
pages/pays/pays.vue
Normal file
86
pages/pays/pays.vue
Normal file
@@ -0,0 +1,86 @@
|
||||
<template>
|
||||
<view style="width: 100%;">
|
||||
<web-view id="webview" :src="state.url" style="width: 100%;"></web-view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
reactive
|
||||
} from 'vue'
|
||||
import {
|
||||
onShow,onHide,onUnload,onLoad
|
||||
} from '@dcloudio/uni-app'
|
||||
import {
|
||||
getOrderInfo
|
||||
} from '@/api/video/index.js'
|
||||
const state = reactive({
|
||||
orderId: '',
|
||||
timer: null,
|
||||
maxAjaxNum: 5,
|
||||
ajaxNum: 0,
|
||||
url: null, //要打开的外部链接
|
||||
viewerUrl: '/hybrid/html/web/viewer.html',
|
||||
webviewStyles: {
|
||||
width: '750px',
|
||||
height: '100%',
|
||||
}
|
||||
})
|
||||
|
||||
function getOrder() {
|
||||
getOrderInfo({
|
||||
orderId: state.orderId
|
||||
}).then(res => {
|
||||
console.log(res.data);
|
||||
if (res.data == 1) {
|
||||
uni.hideLoading()
|
||||
const sysInfo = uni.getSystemInfoSync();
|
||||
let isIos = sysInfo.platform == 'ios'
|
||||
if (isIos) {
|
||||
uni.navigateBack()
|
||||
uni.showToast({
|
||||
title: '支付成功',
|
||||
icon: 'none'
|
||||
})
|
||||
setTimeout(() => {
|
||||
uni.navigateBack()
|
||||
}, 1500)
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '支付成功',
|
||||
icon: 'none'
|
||||
})
|
||||
state.timer = setTimeout(() => {
|
||||
clearTimeout(state.timer)
|
||||
uni.navigateBack()
|
||||
}, 500)
|
||||
}
|
||||
} else {
|
||||
// #ifdef APP
|
||||
uni.showLoading({
|
||||
title: '支付中'
|
||||
})
|
||||
// #endif
|
||||
}
|
||||
});
|
||||
}
|
||||
onShow(() => {
|
||||
getOrder()
|
||||
})
|
||||
onHide(() => {
|
||||
uni.hideLoading()
|
||||
})
|
||||
onUnload(() => {
|
||||
uni.hideLoading()
|
||||
})
|
||||
onLoad((option) => {
|
||||
state.url = option.url
|
||||
state.orderId = option.orderId
|
||||
})
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.webview {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
@@ -1,8 +1,7 @@
|
||||
<template>
|
||||
<view class="min-page">
|
||||
<my-video-list v-if="state.list.length" @swiperChange="swiperChange" :list="state.list" @update="update"
|
||||
:info="state"
|
||||
></my-video-list>
|
||||
<my-video-list v-if="state.list.length" @swiperChange="swiperChange" :list="state.list" @update="update"
|
||||
:info="state"></my-video-list>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -18,8 +17,8 @@
|
||||
import {
|
||||
slice
|
||||
} from 'lodash'
|
||||
const boxStyle={
|
||||
height:'835px'
|
||||
const boxStyle = {
|
||||
height: '835px'
|
||||
}
|
||||
let options = {}
|
||||
const state = reactive({
|
||||
@@ -44,23 +43,26 @@
|
||||
// }
|
||||
}
|
||||
}
|
||||
function update({index,item}){
|
||||
state.list[index]=item
|
||||
|
||||
function update({
|
||||
index,
|
||||
item
|
||||
}) {
|
||||
state.list[index] = item
|
||||
}
|
||||
onLoad((opt) => {
|
||||
Object.assign(options, opt)
|
||||
init()
|
||||
})
|
||||
|
||||
|
||||
function swiperChange({
|
||||
current,
|
||||
direction,
|
||||
data
|
||||
}) {
|
||||
}
|
||||
}) {}
|
||||
|
||||
onShow(() => {
|
||||
|
||||
init()
|
||||
})
|
||||
</script>
|
||||
|
||||
@@ -71,8 +73,8 @@
|
||||
background-color: #000;
|
||||
overflow: hidden;
|
||||
}
|
||||
.u-popup{
|
||||
|
||||
.u-popup {
|
||||
position: fixed;
|
||||
}
|
||||
|
||||
</style>
|
||||
Reference in New Issue
Block a user