首次提交
|
|
@ -0,0 +1 @@
|
|||
unpackage
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
|
||||
// launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
|
||||
"version": "0.0",
|
||||
"configurations": [{
|
||||
"app-plus" :
|
||||
{
|
||||
"launchtype" : "local"
|
||||
},
|
||||
"default" :
|
||||
{
|
||||
"launchtype" : "local"
|
||||
},
|
||||
"h5" :
|
||||
{
|
||||
"launchtype" : "local"
|
||||
},
|
||||
"mp-weixin" :
|
||||
{
|
||||
"launchtype" : "local"
|
||||
},
|
||||
"type" : "uniCloud"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,432 @@
|
|||
<script>
|
||||
export default {
|
||||
onLaunch: function() {
|
||||
setInterval(d => { //定时器,定时去调取聊天未读消息
|
||||
let userId = uni.getStorageSync('userId')
|
||||
let token = uni.getStorageSync('token')
|
||||
// console.log("userId"+userId+ " token"+token)
|
||||
if (userId && token) {
|
||||
this.$Request.getT('/app/ordersChat/selectRiderAllUnreadCount').then(res => {
|
||||
if (res.code === 0) {
|
||||
let chatCount = res.data
|
||||
let messageCount = res.data
|
||||
uni.setStorageSync('messageCount', messageCount)
|
||||
|
||||
let num = chatCount + messageCount
|
||||
if (num == 0) {
|
||||
uni.removeTabBarBadge({
|
||||
index: 1
|
||||
})
|
||||
return;
|
||||
}
|
||||
uni.setTabBarBadge({
|
||||
index: 1,
|
||||
text: num + ""
|
||||
})
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}, 3000);
|
||||
|
||||
//#ifdef APP-PLUS
|
||||
// APP检测更新 具体打包流程可以参考:https://ask.dcloud.net.cn/article/35667
|
||||
plus.screen.lockOrientation('portrait-primary'); //竖屏正方向锁定
|
||||
//获取是否热更新过
|
||||
const updated = uni.getStorageSync('updated'); // 尝试读取storage
|
||||
let that = this;
|
||||
if (updated.completed === true) {
|
||||
// 如果上次刚更新过
|
||||
// 删除安装包及安装记录
|
||||
console.log('安装记录被删除,更新成功');
|
||||
uni.removeSavedFile({
|
||||
filePath: updated.packgePath,
|
||||
success: res => {
|
||||
uni.removeStorageSync('updated');
|
||||
}
|
||||
});
|
||||
} else if (updated.completed === false) {
|
||||
uni.removeStorageSync('updated');
|
||||
plus.runtime.install(updated.packgePath, {
|
||||
force: true
|
||||
});
|
||||
uni.setStorage({
|
||||
key: 'updated',
|
||||
data: {
|
||||
completed: true,
|
||||
packgePath: updated.packgePath
|
||||
},
|
||||
success: res => {
|
||||
console.log('成功安装上次的更新,应用需要重启才能继续完成');
|
||||
}
|
||||
});
|
||||
uni.showModal({
|
||||
title: '温馨提示',
|
||||
content: '应用将重启以完成更新',
|
||||
showCancel: false,
|
||||
complete: () => {
|
||||
plus.runtime.restart();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
//获取当前系统版本信息
|
||||
plus.runtime.getProperty(plus.runtime.appid, widgetInfo => {
|
||||
//请求后台接口 解析数据 对比版本
|
||||
that.$Request.getT('/app/user/selectNewApp').then(res => {
|
||||
res = res.data[1];
|
||||
if (res.wgtUrl && widgetInfo.version < res.version) {
|
||||
let downloadLink = '';
|
||||
let androidLink = res.androidWgtUrl;
|
||||
let iosLink = res.iosWgtUrl;
|
||||
let ready = false;
|
||||
//校验是是不是热更新
|
||||
if (res.wgtUrl.match(RegExp(/.wgt/))) {
|
||||
// 判断系统类型
|
||||
if (plus.os.name.toLowerCase() === 'android') {
|
||||
console.log('安卓系统');
|
||||
if (androidLink && androidLink !== '#') {
|
||||
// 我这里默认#也是没有地址,请根据业务自行修改
|
||||
console.log('发现下载地址');
|
||||
// 安卓:创建下载任务
|
||||
if (androidLink.match(RegExp(/.wgt/))) {
|
||||
console.log('确认wgt热更新包');
|
||||
downloadLink = androidLink;
|
||||
ready = true;
|
||||
} else {
|
||||
console.log('安卓推荐.wgt强制更新,.apk的强制更新请您自行修改程序');
|
||||
}
|
||||
} else {
|
||||
console.log('下载地址是空的,无法继续');
|
||||
}
|
||||
} else {
|
||||
console.log('苹果系统');
|
||||
if (iosLink && iosLink !== '#') {
|
||||
// 我这里默认#也是没有地址,请根据业务自行修改
|
||||
console.log('发现下载地址');
|
||||
// 苹果(A):进行热更新(如果iosLink是wgt更新包的下载地址)判断文件名中是否含有.wgt
|
||||
if (iosLink.match(RegExp(/.wgt/))) {
|
||||
console.log('确认wgt热更新包');
|
||||
downloadLink = iosLink;
|
||||
ready = true;
|
||||
} else {
|
||||
console.log('苹果只支持.wgt强制更新');
|
||||
}
|
||||
} else {
|
||||
console.log('下载地址是空的,无法继续');
|
||||
}
|
||||
}
|
||||
if (ready) {
|
||||
console.log('任务开始');
|
||||
let downloadTask = uni.downloadFile({
|
||||
url: downloadLink,
|
||||
success: res => {
|
||||
if (res.statusCode === 200) {
|
||||
// 保存下载的安装包
|
||||
console.log('保存安装包');
|
||||
uni.saveFile({
|
||||
tempFilePath: res.tempFilePath,
|
||||
success: res => {
|
||||
const packgePath = res
|
||||
.savedFilePath;
|
||||
// 保存更新记录到stroage,下次启动app时安装更新
|
||||
uni.setStorage({
|
||||
key: 'updated',
|
||||
data: {
|
||||
completed: false,
|
||||
packgePath: packgePath
|
||||
},
|
||||
success: () => {
|
||||
console
|
||||
.log(
|
||||
'成功保存记录'
|
||||
);
|
||||
}
|
||||
});
|
||||
// 任务完成,关闭下载任务
|
||||
console.log(
|
||||
'任务完成,关闭下载任务,下一次启动应用时将安装更新'
|
||||
);
|
||||
downloadTask.abort();
|
||||
downloadTask = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
console.log('下载地址未准备,无法开启下载任务');
|
||||
}
|
||||
} else {
|
||||
//不是热更新是在线更新 校验是否强制升级
|
||||
if (res.method == 'true') {
|
||||
uni.showModal({
|
||||
showCancel: false,
|
||||
confirmText: '立即更新',
|
||||
title: '发现新版本',
|
||||
content: res.des,
|
||||
success: res => {
|
||||
if (res.confirm) {
|
||||
that.$queue.showLoading('下载中...');
|
||||
if (uni.getSystemInfoSync().platform ==
|
||||
'android') {
|
||||
uni.downloadFile({
|
||||
url: androidLink,
|
||||
success: downloadResult => {
|
||||
if (downloadResult
|
||||
.statusCode ===
|
||||
200) {
|
||||
plus.runtime
|
||||
.install(
|
||||
downloadResult
|
||||
.tempFilePath, {
|
||||
force: false
|
||||
},
|
||||
d => {
|
||||
console
|
||||
.log(
|
||||
'install success...'
|
||||
);
|
||||
plus.runtime
|
||||
.restart();
|
||||
},
|
||||
e => {
|
||||
console
|
||||
.error(
|
||||
'install fail...'
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
if (uni.getSystemInfoSync().platform ==
|
||||
'ios') {
|
||||
plus.runtime.openURL(iosLink, function(
|
||||
res) {});
|
||||
}
|
||||
} else if (res.cancel) {
|
||||
console.log('取消');
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
uni.showModal({
|
||||
title: '发现新版本',
|
||||
confirmText: '立即更新',
|
||||
cancelText: '下次更新',
|
||||
content: res.des,
|
||||
success: res => {
|
||||
if (res.confirm) {
|
||||
that.$queue.showLoading('下载中...');
|
||||
if (uni.getSystemInfoSync().platform ==
|
||||
'android') {
|
||||
uni.downloadFile({
|
||||
url: androidLink,
|
||||
success: downloadResult => {
|
||||
if (downloadResult
|
||||
.statusCode ===
|
||||
200) {
|
||||
plus.runtime
|
||||
.install(
|
||||
downloadResult
|
||||
.tempFilePath, {
|
||||
force: false
|
||||
},
|
||||
d => {
|
||||
console
|
||||
.log(
|
||||
'install success...'
|
||||
);
|
||||
plus.runtime
|
||||
.restart();
|
||||
},
|
||||
e => {
|
||||
console
|
||||
.error(
|
||||
'install fail...'
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
if (uni.getSystemInfoSync().platform ==
|
||||
'ios') {
|
||||
plus.runtime.openURL(iosLink, function(
|
||||
res) {});
|
||||
}
|
||||
} else if (res.cancel) {
|
||||
console.log('取消');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
//#endif
|
||||
|
||||
//#ifdef H5
|
||||
let ua = navigator.userAgent.toLowerCase();
|
||||
if (ua.indexOf('micromessenger') !== -1) {
|
||||
let openid = uni.getStorageSync('openid');
|
||||
let userId = uni.getStorageSync('userId');
|
||||
let that = this;
|
||||
console.log(openid)
|
||||
if (!openid) {
|
||||
if (window.location.href.indexOf('?code=') !== -1 || window.location.href.indexOf('&code=') !==
|
||||
-1) {
|
||||
let code;
|
||||
if (window.location.href.indexOf('?code=') !== -1) {
|
||||
code = window.location.href.split('?code=')[1].split('&')[0];
|
||||
} else {
|
||||
code = window.location.href.split('&code=')[1].split('&')[0];
|
||||
}
|
||||
this.$Request.get('/app/Login/getRiderOpenId?code=' + code).then(ret => {
|
||||
this.$queue.setData('openid', ret.data)
|
||||
|
||||
this.$Request.get('/app/Login/wxOpenIdLogin?openId=' + ret.data + '&userType=2')
|
||||
.then(res => {
|
||||
|
||||
this.$queue.setData("userId", res.user.userId);
|
||||
this.$queue.setData("token", res.token);
|
||||
this.$queue.setData("phone", res.user.phone);
|
||||
this.$queue.setData("userName", res.user.userName);
|
||||
this.$queue.setData("avatar", res.user.avatar);
|
||||
this.$queue.setData("invitationCode", res.user.invitationCode);
|
||||
this.$queue.setData("inviterCode", res.user.inviterCode);
|
||||
});
|
||||
});
|
||||
} else {
|
||||
window.location.href =
|
||||
'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' +
|
||||
that.$queue.getWxAppid() +
|
||||
'&redirect_uri=' +
|
||||
window.location.href.split('#')[0] +
|
||||
'&response_type=code&scope=snsapi_userinfo#wechat_redirect';
|
||||
}
|
||||
} else {
|
||||
this.$Request.get('/app/Login/wxOpenIdLogin?openId=' + openid + '&userType=2').then(res => {
|
||||
|
||||
this.$queue.setData("userId", res.user.userId);
|
||||
this.$queue.setData("token", res.token);
|
||||
this.$queue.setData("phone", res.user.phone);
|
||||
this.$queue.setData("userName", res.user.userName);
|
||||
this.$queue.setData("avatar", res.user.avatar);
|
||||
this.$queue.setData("invitationCode", res.user.invitationCode);
|
||||
this.$queue.setData("inviterCode", res.user.inviterCode);
|
||||
});
|
||||
}
|
||||
}
|
||||
//#endif
|
||||
},
|
||||
onShow: function() {
|
||||
|
||||
console.log('App Show')
|
||||
|
||||
// #ifdef APP-PLUS
|
||||
if (uni.getSystemInfoSync().platform == 'android') {
|
||||
let clientid = plus.push.getClientInfo().clientid;
|
||||
|
||||
let userId = this.$queue.getData('userId');
|
||||
if (userId) {
|
||||
// console.log(clientid, '----', userId)
|
||||
this.$Request.postT('/app/user/updateRiderClientId?clientId=' + clientid).then(
|
||||
res => {
|
||||
// console.log(res,'------------------')
|
||||
});
|
||||
}
|
||||
}
|
||||
//#endif
|
||||
|
||||
|
||||
|
||||
this.$Request.get('/app/common/type/308').then(res => {
|
||||
if (res.code == 0) {
|
||||
// #ifdef MP-WEIXIN
|
||||
this.$queue.setData('XCXIsSelect', res.data.value);
|
||||
// #endif
|
||||
// #ifndef MP-WEIXIN
|
||||
this.$queue.setData('XCXIsSelect', '是');
|
||||
// #endif
|
||||
}
|
||||
});
|
||||
// this.$Request.get('/app/common/type/341').then(res => {
|
||||
// if (res.code == 0) {
|
||||
// // #ifdef MP-WEIXIN
|
||||
// this.$queue.setData('XCXIsSelect', res.data.value);
|
||||
// // #endif
|
||||
// // #ifndef MP-WEIXIN
|
||||
// this.$queue.setData('XCXIsSelect', '是');
|
||||
// // #endif
|
||||
// }
|
||||
// });
|
||||
|
||||
//腾讯地图名字
|
||||
this.$Request.getT('/app/common/type/318').then(res => {
|
||||
if (res.code == 0) {
|
||||
if (res.data && res.data.value) {
|
||||
this.$queue.setData('mapName', res.data.value)
|
||||
}
|
||||
}
|
||||
});
|
||||
//腾讯地图key
|
||||
this.$Request.getT('/app/common/type/317').then(res => {
|
||||
if (res.code == 0) {
|
||||
if (res.data && res.data.value) {
|
||||
this.$queue.setData('mapKey', res.data.value)
|
||||
}
|
||||
}
|
||||
});
|
||||
this.$Request.getT('/app/common/type/331').then(res => {
|
||||
if (res.code === 0) {
|
||||
uni.setStorageSync('tuiguang', res.data.value)
|
||||
}
|
||||
});
|
||||
this.$Request.getT('/app/common/type/332').then(res => {
|
||||
if (res.code === 0) {
|
||||
uni.setStorageSync('tuiguangImg', res.data.value)
|
||||
}
|
||||
});
|
||||
|
||||
// 判断账号是否封禁
|
||||
this.userId = this.$queue.getData("userId")
|
||||
if (this.userId) {
|
||||
this.$Request.getT('/app/userinfo/bannedFlag').then(res => {
|
||||
if (res.code == 0) {
|
||||
if (res.data == 2) {
|
||||
uni.showModal({
|
||||
title: '账号已被封禁',
|
||||
content: '请在【我的】【我的客服】申诉,申诉成功后重新登录',
|
||||
showCancel: false,
|
||||
cancelText: '',
|
||||
confirmText: '我知道了',
|
||||
success: res => {
|
||||
uni.clearStorageSync()
|
||||
},
|
||||
fail: () => {},
|
||||
complete: () => {}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
onHide: function() {
|
||||
console.log('App Hide')
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
/*每个页面公共css */
|
||||
/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
|
||||
@import "uview-ui/index.scss";
|
||||
@import 'components/colorui/main.css';
|
||||
@import 'components/colorui/icon.css';
|
||||
</style>
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
/**
|
||||
* 缓存数据优化
|
||||
* var cache = require('utils/cache.js');
|
||||
* import cache from '../cache'
|
||||
* 使用方法 【
|
||||
* 一、设置缓存
|
||||
* string cache.put('k', 'string你好啊');
|
||||
* json cache.put('k', { "b": "3" }, 2);
|
||||
* array cache.put('k', [1, 2, 3]);
|
||||
* boolean cache.put('k', true);
|
||||
* 二、读取缓存
|
||||
* 默认值 cache.get('k')
|
||||
* string cache.get('k', '你好')
|
||||
* json cache.get('k', { "a": "1" })
|
||||
* 三、移除/清理
|
||||
* 移除: cache.remove('k');
|
||||
* 清理:cache.clear();
|
||||
* 】
|
||||
* @type {String}
|
||||
*/
|
||||
var postfix = '_mallStore'; // 缓存前缀
|
||||
/**
|
||||
* 设置缓存
|
||||
* @param {[type]} k [键名]
|
||||
* @param {[type]} v [键值]
|
||||
* @param {[type]} t [时间、单位秒]
|
||||
*/
|
||||
function put(k, v, t) {
|
||||
uni.setStorageSync(k, v)
|
||||
var seconds = parseInt(t);
|
||||
if (seconds > 0) {
|
||||
var timestamp = Date.parse(new Date());
|
||||
timestamp = timestamp / 1000 + seconds;
|
||||
uni.setStorageSync(k + postfix, timestamp + "")
|
||||
} else {
|
||||
uni.removeStorageSync(k + postfix)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取缓存
|
||||
* @param {[type]} k [键名]
|
||||
* @param {[type]} def [获取为空时默认]
|
||||
*/
|
||||
function get(k, def) {
|
||||
var deadtime = parseInt(uni.getStorageSync(k + postfix))
|
||||
if (deadtime) {
|
||||
if (parseInt(deadtime) < Date.parse(new Date()) / 1000) {
|
||||
if (def) {
|
||||
return def;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
var res = uni.getStorageSync(k);
|
||||
if (res) {
|
||||
return res;
|
||||
} else {
|
||||
if (def == undefined || def == "") {
|
||||
def = false;
|
||||
}
|
||||
return def;
|
||||
}
|
||||
}
|
||||
|
||||
function remove(k) {
|
||||
uni.removeStorageSync(k);
|
||||
uni.removeStorageSync(k + postfix);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理所有缓存
|
||||
* @return {[type]} [description]
|
||||
*/
|
||||
function clear() {
|
||||
uni.clearStorageSync();
|
||||
}
|
||||
|
||||
|
||||
module.exports = {
|
||||
put: put,
|
||||
get: get,
|
||||
remove: remove,
|
||||
clear: clear,
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
const ROOTPATH1 = "https://takeoutservice.sxczgkj.cn/sqx_fast";
|
||||
const ROOTPATH = "https://takeoutservice.sxczgkj.cn/sqx_fast";
|
||||
const ROOTPATH2 = "wss://tcwm.xianmaxiong.com/wss/websocket/"; //联系客服
|
||||
const ROOTPATH3 = "wss://tcwm.xianmaxiong.com/wss/ordersChat/"; //聊天
|
||||
|
||||
// const ROOTPATH1 = "http://192.168.0.119:8171/sqx_fast";
|
||||
// const ROOTPATH = "http://192.168.0.119:8171/sqx_fast";
|
||||
// const ROOTPATH2 = "wss://192.168.0.119:8171/wss/websocket/"; //联系客服
|
||||
// const ROOTPATH3 = "wss://192.168.0.119:8171/wss/ordersChat/"; //聊天
|
||||
|
||||
module.exports = {
|
||||
APIHOST: ROOTPATH,
|
||||
APIHOST1: ROOTPATH1,
|
||||
WSHOST: ROOTPATH2,
|
||||
WSHOST1: ROOTPATH3,
|
||||
};
|
||||
|
|
@ -0,0 +1,587 @@
|
|||
import configdata from './config'
|
||||
import cache from './cache'
|
||||
|
||||
module.exports = {
|
||||
config: function(name) {
|
||||
var info = null;
|
||||
if (name) {
|
||||
var name2 = name.split("."); //字符分割
|
||||
if (name2.length > 1) {
|
||||
info = configdata[name2[0]][name2[1]] || null;
|
||||
} else {
|
||||
info = configdata[name] || null;
|
||||
}
|
||||
if (info == null) {
|
||||
let web_config = cache.get("web_config");
|
||||
if (web_config) {
|
||||
if (name2.length > 1) {
|
||||
info = web_config[name2[0]][name2[1]] || null;
|
||||
} else {
|
||||
info = web_config[name] || null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return info;
|
||||
},
|
||||
post: function(url, data, header) {
|
||||
header = header || "application/x-www-form-urlencoded";
|
||||
url = this.config("APIHOST") + url;
|
||||
return new Promise((succ, error) => {
|
||||
uni.request({
|
||||
url: url,
|
||||
data: data,
|
||||
method: "POST",
|
||||
header: {
|
||||
"content-type": header
|
||||
},
|
||||
success: function(result) {
|
||||
if (result.data.code == 401) {
|
||||
uni.removeStorageSync("token")
|
||||
uni.removeStorageSync("userId")
|
||||
uni.removeStorageSync("phone")
|
||||
uni.removeStorageSync("openid")
|
||||
uni.removeStorageSync("userName")
|
||||
uni.removeStorageSync("relation")
|
||||
uni.removeStorageSync("relation_id")
|
||||
uni.removeStorageSync("isInvitation")
|
||||
uni.removeStorageSync("zhiFuBao")
|
||||
uni.removeStorageSync("zhiFuBaoName")
|
||||
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '用户信息失效,请重新登录!',
|
||||
showCancel: false, // 是否显示取消按钮,默认为 true // 是否显示取消按钮,默认为 true
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
succ.call(self, result.data)
|
||||
},
|
||||
fail: function(e) {
|
||||
error.call(self, e)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
postT: function(url, data, header) {
|
||||
header = header || "application/x-www-form-urlencoded";
|
||||
url = this.config("APIHOST1") + url;
|
||||
// let token = uni.getStorageSync("token");
|
||||
let token = uni.getStorageSync("token");
|
||||
if (token) {
|
||||
return new Promise((succ, error) => {
|
||||
uni.request({
|
||||
url: url,
|
||||
data: data,
|
||||
method: "POST",
|
||||
header: {
|
||||
"content-type": header,
|
||||
"token": token
|
||||
},
|
||||
success: function(result) {
|
||||
console.error(result);
|
||||
if (result.data.code == 401 && token) {
|
||||
uni.removeStorageSync("token")
|
||||
uni.removeStorageSync("userId")
|
||||
uni.removeStorageSync("phone")
|
||||
uni.removeStorageSync("openid")
|
||||
uni.removeStorageSync("userName")
|
||||
uni.removeStorageSync("relation")
|
||||
uni.removeStorageSync("relation_id")
|
||||
uni.removeStorageSync("isInvitation")
|
||||
uni.removeStorageSync("zhiFuBao")
|
||||
uni.removeStorageSync("zhiFuBaoName")
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '用户信息失效,请重新登录!',
|
||||
showCancel: false, // 是否显示取消按钮,默认为 true // 是否显示取消按钮,默认为 true
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
succ.call(self, result.data)
|
||||
},
|
||||
fail: function(e) {
|
||||
error.call(self, e)
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
return new Promise((succ, error) => {
|
||||
uni.request({
|
||||
url: url,
|
||||
data: data,
|
||||
method: "POST",
|
||||
header: {
|
||||
"content-type": header,
|
||||
},
|
||||
success: function(result) {
|
||||
if (result.data.code == 401) {
|
||||
uni.removeStorageSync("token")
|
||||
uni.removeStorageSync("userId")
|
||||
uni.removeStorageSync("phone")
|
||||
uni.removeStorageSync("openid")
|
||||
uni.removeStorageSync("userName")
|
||||
uni.removeStorageSync("relation")
|
||||
uni.removeStorageSync("relation_id")
|
||||
uni.removeStorageSync("isInvitation")
|
||||
uni.removeStorageSync("zhiFuBao")
|
||||
uni.removeStorageSync("zhiFuBaoName")
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '用户信息失效,请重新登录!',
|
||||
showCancel: false, // 是否显示取消按钮,默认为 true // 是否显示取消按钮,默认为 true
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
succ.call(self, result.data)
|
||||
},
|
||||
fail: function(e) {
|
||||
error.call(self, e)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
postJson: function(url, data, header) {
|
||||
header = header || "application/json";
|
||||
url = this.config("APIHOST1") + url;
|
||||
// let token = uni.getStorageSync("token");
|
||||
let token = uni.getStorageSync("token");
|
||||
if (token) {
|
||||
return new Promise((succ, error) => {
|
||||
uni.request({
|
||||
url: url,
|
||||
data: data,
|
||||
method: "POST",
|
||||
header: {
|
||||
"content-type": header,
|
||||
"token": token
|
||||
},
|
||||
success: function(result) {
|
||||
// console.error(result);
|
||||
if (result.data.code == 401 && token) {
|
||||
uni.removeStorageSync("token")
|
||||
uni.removeStorageSync("userId")
|
||||
uni.removeStorageSync("phone")
|
||||
uni.removeStorageSync("openid")
|
||||
uni.removeStorageSync("userName")
|
||||
uni.removeStorageSync("relation")
|
||||
uni.removeStorageSync("relation_id")
|
||||
uni.removeStorageSync("isInvitation")
|
||||
uni.removeStorageSync("zhiFuBao")
|
||||
uni.removeStorageSync("zhiFuBaoName")
|
||||
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '用户信息失效,请重新登录!',
|
||||
showCancel: false, // 是否显示取消按钮,默认为 true // 是否显示取消按钮,默认为 true
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
succ.call(self, result.data)
|
||||
},
|
||||
fail: function(e) {
|
||||
error.call(self, e)
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
return new Promise((succ, error) => {
|
||||
uni.request({
|
||||
url: url,
|
||||
data: data,
|
||||
method: "POST",
|
||||
header: {
|
||||
"content-type": header,
|
||||
},
|
||||
success: function(result) {
|
||||
succ.call(self, result.data)
|
||||
},
|
||||
fail: function(e) {
|
||||
error.call(self, e)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
getT: function(url, data, header) {
|
||||
header = header || "application/x-www-form-urlencoded";
|
||||
url = this.config("APIHOST1") + url;
|
||||
let token = uni.getStorageSync("token");
|
||||
if (token) {
|
||||
return new Promise((succ, error) => {
|
||||
uni.request({
|
||||
url: url,
|
||||
data: data,
|
||||
method: "GET",
|
||||
header: {
|
||||
"content-type": header,
|
||||
"token": token
|
||||
},
|
||||
success: function(result) {
|
||||
if (result.data.code == 401 && token) {
|
||||
uni.removeStorageSync("token")
|
||||
uni.removeStorageSync("userId")
|
||||
uni.removeStorageSync("phone")
|
||||
uni.removeStorageSync("openid")
|
||||
uni.removeStorageSync("userName")
|
||||
uni.removeStorageSync("relation")
|
||||
uni.removeStorageSync("relation_id")
|
||||
uni.removeStorageSync("isInvitation")
|
||||
uni.removeStorageSync("zhiFuBao")
|
||||
uni.removeStorageSync("zhiFuBaoName")
|
||||
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '用户信息失效,请重新登录!',
|
||||
showCancel: false, // 是否显示取消按钮,默认为 true // 是否显示取消按钮,默认为 true
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
succ.call(self, result.data)
|
||||
},
|
||||
fail: function(e) {
|
||||
error.call(self, e)
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
return new Promise((succ, error) => {
|
||||
uni.request({
|
||||
url: url,
|
||||
data: data,
|
||||
method: "GET",
|
||||
header: {
|
||||
"content-type": header
|
||||
},
|
||||
success: function(result) {
|
||||
if (result.data.code == 401) {
|
||||
uni.removeStorageSync("token")
|
||||
uni.removeStorageSync("userId")
|
||||
uni.removeStorageSync("phone")
|
||||
uni.removeStorageSync("openid")
|
||||
uni.removeStorageSync("userName")
|
||||
uni.removeStorageSync("relation")
|
||||
uni.removeStorageSync("relation_id")
|
||||
uni.removeStorageSync("isInvitation")
|
||||
uni.removeStorageSync("zhiFuBao")
|
||||
uni.removeStorageSync("zhiFuBaoName")
|
||||
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '用户信息失效,请重新登录!',
|
||||
showCancel: false, // 是否显示取消按钮,默认为 true // 是否显示取消按钮,默认为 true
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
succ.call(self, result.data)
|
||||
},
|
||||
fail: function(e) {
|
||||
error.call(self, e)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
posts: function(url, data, header) {
|
||||
header = header || "application/x-www-form-urlencoded";
|
||||
return new Promise((succ, error) => {
|
||||
uni.request({
|
||||
url: url,
|
||||
data: data,
|
||||
method: "POST",
|
||||
header: {
|
||||
"content-type": header
|
||||
},
|
||||
success: function(result) {
|
||||
if (result.data.code == 401) {
|
||||
uni.removeStorageSync("token")
|
||||
uni.removeStorageSync("userId")
|
||||
uni.removeStorageSync("phone")
|
||||
uni.removeStorageSync("openid")
|
||||
uni.removeStorageSync("userName")
|
||||
uni.removeStorageSync("relation")
|
||||
uni.removeStorageSync("relation_id")
|
||||
uni.removeStorageSync("isInvitation")
|
||||
uni.removeStorageSync("zhiFuBao")
|
||||
uni.removeStorageSync("zhiFuBaoName")
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '用户信息失效,请重新登录!',
|
||||
showCancel: false, // 是否显示取消按钮,默认为 true // 是否显示取消按钮,默认为 true
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
succ.call(self, result.data)
|
||||
},
|
||||
fail: function(e) {
|
||||
error.call(self, e)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
postF: function(url, data, header) {
|
||||
header = header || "application/json";
|
||||
url = this.config("APIHOST") + url;
|
||||
return new Promise((succ, error) => {
|
||||
uni.request({
|
||||
url: url,
|
||||
data: data,
|
||||
method: "POST",
|
||||
header: {
|
||||
"content-type": header
|
||||
},
|
||||
success: function(result) {
|
||||
if (result.data.code == 401) {
|
||||
uni.removeStorageSync("token")
|
||||
uni.removeStorageSync("userId")
|
||||
uni.removeStorageSync("phone")
|
||||
uni.removeStorageSync("openid")
|
||||
uni.removeStorageSync("userName")
|
||||
uni.removeStorageSync("relation")
|
||||
uni.removeStorageSync("relation_id")
|
||||
uni.removeStorageSync("isInvitation")
|
||||
uni.removeStorageSync("zhiFuBao")
|
||||
uni.removeStorageSync("zhiFuBaoName")
|
||||
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '用户信息失效,请重新登录!',
|
||||
showCancel: false, // 是否显示取消按钮,默认为 true // 是否显示取消按钮,默认为 true
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
succ.call(self, result.data)
|
||||
},
|
||||
fail: function(e) {
|
||||
error.call(self, e)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
postFs: function(url, data, header) {
|
||||
header = header || "application/json";
|
||||
return new Promise((succ, error) => {
|
||||
uni.request({
|
||||
url: url,
|
||||
data: data,
|
||||
method: "POST",
|
||||
header: {
|
||||
"content-type": header
|
||||
},
|
||||
success: function(result) {
|
||||
if (result.data.code == 401) {
|
||||
uni.removeStorageSync("token")
|
||||
uni.removeStorageSync("userId")
|
||||
uni.removeStorageSync("phone")
|
||||
uni.removeStorageSync("openid")
|
||||
uni.removeStorageSync("userName")
|
||||
uni.removeStorageSync("relation")
|
||||
uni.removeStorageSync("relation_id")
|
||||
uni.removeStorageSync("isInvitation")
|
||||
uni.removeStorageSync("zhiFuBao")
|
||||
uni.removeStorageSync("zhiFuBaoName")
|
||||
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '用户信息失效,请重新登录!',
|
||||
showCancel: false, // 是否显示取消按钮,默认为 true // 是否显示取消按钮,默认为 true
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
succ.call(self, result.data)
|
||||
},
|
||||
fail: function(e) {
|
||||
error.call(self, e)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
get: function(url, data, header) {
|
||||
header = header || "application/x-www-form-urlencoded";
|
||||
url = this.config("APIHOST") + url;
|
||||
return new Promise((succ, error) => {
|
||||
uni.request({
|
||||
url: url,
|
||||
data: data,
|
||||
method: "GET",
|
||||
header: {
|
||||
"content-type": header
|
||||
},
|
||||
success: function(result) {
|
||||
if (result.data.code == 401) {
|
||||
uni.removeStorageSync("token")
|
||||
uni.removeStorageSync("userId")
|
||||
uni.removeStorageSync("phone")
|
||||
uni.removeStorageSync("openid")
|
||||
uni.removeStorageSync("userName")
|
||||
uni.removeStorageSync("relation")
|
||||
uni.removeStorageSync("relation_id")
|
||||
uni.removeStorageSync("isInvitation")
|
||||
uni.removeStorageSync("zhiFuBao")
|
||||
uni.removeStorageSync("zhiFuBaoName")
|
||||
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '用户信息失效,请重新登录!',
|
||||
showCancel: false, // 是否显示取消按钮,默认为 true // 是否显示取消按钮,默认为 true
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
succ.call(self, result.data)
|
||||
},
|
||||
fail: function(e) {
|
||||
error.call(self, e)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
getJd: function(url, data, header) {
|
||||
header = header || "application/x-www-form-urlencoded";
|
||||
return new Promise((succ, error) => {
|
||||
uni.request({
|
||||
url: url,
|
||||
data: data,
|
||||
method: "GET",
|
||||
header: {
|
||||
"content-type": header
|
||||
},
|
||||
success: function(result) {
|
||||
if (result.data.code == 401) {
|
||||
uni.removeStorageSync("token")
|
||||
uni.removeStorageSync("userId")
|
||||
uni.removeStorageSync("phone")
|
||||
uni.removeStorageSync("openid")
|
||||
uni.removeStorageSync("userName")
|
||||
uni.removeStorageSync("relation")
|
||||
uni.removeStorageSync("relation_id")
|
||||
uni.removeStorageSync("isInvitation")
|
||||
uni.removeStorageSync("zhiFuBao")
|
||||
uni.removeStorageSync("zhiFuBaoName")
|
||||
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '用户信息失效,请重新登录!',
|
||||
showCancel: false, // 是否显示取消按钮,默认为 true // 是否显示取消按钮,默认为 true
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
succ.call(self, result.data)
|
||||
},
|
||||
fail: function(e) {
|
||||
error.call(self, e)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
get1: function(url, data, header) {
|
||||
header = header || "application/json";
|
||||
url = this.config("APIHOST") + url;
|
||||
return new Promise((succ, error) => {
|
||||
uni.request({
|
||||
url: url,
|
||||
data: data,
|
||||
method: "GET",
|
||||
success: function(result) {
|
||||
if (result.data.code == 401) {
|
||||
uni.removeStorageSync("token")
|
||||
uni.removeStorageSync("userId")
|
||||
uni.removeStorageSync("phone")
|
||||
uni.removeStorageSync("openid")
|
||||
uni.removeStorageSync("userName")
|
||||
uni.removeStorageSync("relation")
|
||||
uni.removeStorageSync("relation_id")
|
||||
uni.removeStorageSync("isInvitation")
|
||||
uni.removeStorageSync("zhiFuBao")
|
||||
uni.removeStorageSync("zhiFuBaoName")
|
||||
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '用户信息失效,请重新登录!',
|
||||
showCancel: false, // 是否显示取消按钮,默认为 true // 是否显示取消按钮,默认为 true
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
succ.call(self, result.data)
|
||||
},
|
||||
fail: function(e) {
|
||||
error.call(self, e)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,207 @@
|
|||
/**
|
||||
*
|
||||
* @author maxd
|
||||
* @date 2019.8.1
|
||||
*/
|
||||
module.exports = {
|
||||
//微信的appId
|
||||
getWxAppid() {
|
||||
return 'wxef277af6b5cf522e'
|
||||
},
|
||||
//全局邀请码
|
||||
getInvitation() {
|
||||
return uni.getStorageSync("publicRelation")
|
||||
},
|
||||
//获取APP下载地址
|
||||
getAppDownUrl() {
|
||||
return uni.getStorageSync("appurl")
|
||||
},
|
||||
//全局域名 部分html中需要单独替换 需要修改config中的网络请求域名
|
||||
publicYuMing() {
|
||||
return 'https://tcwm.xianmaxiong.com'
|
||||
},
|
||||
//全局域名 部分html中需要单独替换 需要修改config中的网络请求域名
|
||||
publicYuMingAll() {
|
||||
return 'https://tcwm.xianmaxiong.com/sqx_fast'
|
||||
},
|
||||
minMoney() {
|
||||
return uni.getStorageSync("minMoney") ? uni.getStorageSync("minMoney") : '0.3'
|
||||
},
|
||||
invitaionNum() {
|
||||
return uni.getStorageSync("invitaionNum")
|
||||
},
|
||||
maxMoney() {
|
||||
return uni.getStorageSync("maxMoney") ? uni.getStorageSync("maxMoney") : '0.7'
|
||||
},
|
||||
teamMoney() {
|
||||
return uni.getStorageSync("teamMoney")
|
||||
},
|
||||
logout() {
|
||||
this.remove("token");
|
||||
this.remove("userId");
|
||||
this.remove("mobile");
|
||||
this.remove("openid");
|
||||
this.remove("nickName");
|
||||
this.remove("relation");
|
||||
this.remove("avatar");
|
||||
this.remove("relation_id");
|
||||
this.remove("isInvitation");
|
||||
this.remove("member");
|
||||
this.remove("sex");
|
||||
},
|
||||
loginClear() {
|
||||
this.remove("token");
|
||||
this.remove("userId");
|
||||
this.remove("mobile");
|
||||
this.remove("nickName");
|
||||
this.remove("avatar");
|
||||
this.remove("relation_id");
|
||||
this.remove("isInvitation");
|
||||
this.remove("member");
|
||||
this.remove("sex");
|
||||
},
|
||||
showLoading(title) {
|
||||
uni.showLoading({
|
||||
title: title
|
||||
});
|
||||
},
|
||||
showToast(title) {
|
||||
uni.showToast({
|
||||
title: title,
|
||||
mask: false,
|
||||
duration: 4000,
|
||||
icon: "none"
|
||||
});
|
||||
},
|
||||
getSearchKeys: function(key) {
|
||||
let list = "套套,情趣用品,避孕,男用,女用,成人用品,保健品,冈本 杜蕾斯 杰士邦 第六感 倍力乐 诺丝 多乐士 斯香妮 双一 雨蝶 玛尼仕,充气娃娃,娃娃充气 阴蒂 刺激 超薄 螺纹 震动 润滑 女液体 延时 ";
|
||||
return list.includes(key);
|
||||
},
|
||||
setJson: function(key, value) {
|
||||
let jsonString = JSON.stringify(value);
|
||||
try {
|
||||
uni.setStorageSync(key, jsonString);
|
||||
} catch (e) {
|
||||
// error
|
||||
}
|
||||
},
|
||||
setData: function(key, value) {
|
||||
try {
|
||||
uni.setStorageSync(key, value);
|
||||
} catch (e) {
|
||||
// error
|
||||
}
|
||||
},
|
||||
getData: function(key) {
|
||||
try {
|
||||
const value = uni.getStorageSync(key);
|
||||
if (value) {
|
||||
return value;
|
||||
}
|
||||
} catch (e) {
|
||||
// error
|
||||
}
|
||||
|
||||
},
|
||||
getJson: function(key) {
|
||||
try {
|
||||
const value = uni.getStorageSync(key);
|
||||
if (value) {
|
||||
return JSON.parse(value);
|
||||
}
|
||||
} catch (e) {
|
||||
// error
|
||||
}
|
||||
|
||||
},
|
||||
clear: function() {
|
||||
uni.clearStorage();
|
||||
},
|
||||
get: function(key) { //获取队列里面全部的数据
|
||||
let data = this.getJson(key);
|
||||
if (data instanceof Array) {
|
||||
return data;
|
||||
}
|
||||
return [];
|
||||
},
|
||||
insert: function(param) { //队列插入数据
|
||||
param.capacityNum = param.capacityNum || 100; //队列容量 默认队列中超过100条数据,自动删除尾部
|
||||
let data = this.getJson(param.key);
|
||||
if (data instanceof Array) {
|
||||
if (data.length > param.capacityNum) {
|
||||
let total = data.length - param.capacityNum;
|
||||
for (let i = 0; i < total; i++) {
|
||||
data.pop();
|
||||
}
|
||||
}
|
||||
data.unshift(param.value);
|
||||
} else {
|
||||
data = [];
|
||||
data.push(param.value);
|
||||
}
|
||||
this.setJson(param.key, data);
|
||||
},
|
||||
removeItem: function(key, itemIds) { //提供itemIds数组 批量删除队列中的某项数据
|
||||
let data = this.getJson(key);
|
||||
if (data instanceof Array) {
|
||||
for (let i = 0; i < itemIds.length; i++) {
|
||||
for (let p = 0; p < data.length; p++) {
|
||||
if (itemIds[i] === data[p].itemid) {
|
||||
data.splice(p, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
this.setJson(key, data);
|
||||
}
|
||||
},
|
||||
isExist: function(key, itemId) { //检测某条数据在队列中是否存在
|
||||
let data = this.getJson(key);
|
||||
if (data instanceof Array) {
|
||||
for (let p = 0; p < data.length; p++) {
|
||||
if (itemId === data[p].itemid) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
isExistPdd: function(key, itemId) { //检测某条数据在队列中是否存在
|
||||
let data = this.getJson(key);
|
||||
if (data instanceof Array) {
|
||||
for (let p = 0; p < data.length; p++) {
|
||||
if (itemId === data[p].goodsId) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
isExistJd: function(key, itemId) { //检测某条数据在队列中是否存在
|
||||
let data = this.getJson(key);
|
||||
if (data instanceof Array) {
|
||||
for (let p = 0; p < data.length; p++) {
|
||||
if (itemId === data[p].skuId) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
remove: function(key) { //删除某条队列
|
||||
try {
|
||||
uni.removeStorageSync(key);
|
||||
//localStorage.removeItem(key)
|
||||
} catch (e) {
|
||||
// error
|
||||
}
|
||||
},
|
||||
getCount: function(key) { //获取队列中全部数据数量
|
||||
|
||||
let data = this.getJson(key);
|
||||
if (data instanceof Array) {
|
||||
return data.length;
|
||||
}
|
||||
return 0;
|
||||
},
|
||||
};
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
export default {
|
||||
onShareAppMessage(res) { //发送给朋友
|
||||
return {
|
||||
title: uni.getStorageSync('tuiguang'),
|
||||
path:'/pages/index/index',
|
||||
imageUrl: uni.getStorageSync('tuiguangImg'),
|
||||
}
|
||||
},
|
||||
onShareTimeline(res) { //分享到朋友圈
|
||||
return {
|
||||
title: uni.getStorageSync('tuiguang'),
|
||||
path:'/pages/index/index',
|
||||
imageUrl: uni.getStorageSync('tuiguangImg'),
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
function commentTimeHandle(dateStr) {
|
||||
// dateStr = 2018-09-06 18:47:00" 测试时间
|
||||
var publishTime = dateStr / 1000, //获取dataStr的秒数 打印结果--1536230820000
|
||||
date = new Date(publishTime * 1000), //获取dateStr的标准格式 console.log(date) 打印结果 Thu Sep 06 2018 18:47:00 GMT+0800 (中国标准时间)
|
||||
// 获取date 中的 年 月 日 时 分 秒
|
||||
Y = date.getFullYear(),
|
||||
M = date.getMonth() + 1,
|
||||
D = date.getDate(),
|
||||
H = date.getHours(),
|
||||
m = date.getMinutes(),
|
||||
s = date.getSeconds();
|
||||
// 对 月 日 时 分 秒 小于10时, 加0显示 例如: 09-09 09:01
|
||||
if (M < 10) {
|
||||
M = '0' + M;
|
||||
}
|
||||
if (D < 10) {
|
||||
D = '0' + D;
|
||||
}
|
||||
if (H < 10) {
|
||||
H = '0' + H;
|
||||
}
|
||||
if (m < 10) {
|
||||
m = '0' + m;
|
||||
}
|
||||
if (s < 10) {
|
||||
s = '0' + s;
|
||||
}
|
||||
// console.log("年", Y); // 年 2018
|
||||
// console.log("月", M); // 月 09
|
||||
// console.log("日", D); // 日 06
|
||||
// console.log("时", H); // 时 18
|
||||
// console.log("分", m); // 分 47
|
||||
// console.log("秒", s); // 秒 00
|
||||
var nowTime = new Date().getTime() / 1000, //获取此时此刻日期的秒数
|
||||
diffValue = nowTime - publishTime, // 获取此时 秒数 与 要处理的日期秒数 之间的差值
|
||||
diff_days = parseInt(diffValue / 86400), // 一天86400秒 获取相差的天数 取整
|
||||
diff_hours = parseInt(diffValue / 3600), // 一时3600秒
|
||||
diff_minutes = parseInt(diffValue / 60),
|
||||
diff_secodes = parseInt(diffValue);
|
||||
|
||||
if (diff_days > 0 && diff_days < 3) { //相差天数 0 < diff_days < 3 时, 直接返出
|
||||
return diff_days + "天前";
|
||||
} else if (diff_days <= 0 && diff_hours > 0) {
|
||||
return diff_hours + "小时前";
|
||||
} else if (diff_hours <= 0 && diff_minutes > 0) {
|
||||
return diff_minutes + "分钟前";
|
||||
} else if (diff_secodes < 60) {
|
||||
if (diff_secodes <= 0) {
|
||||
return "刚刚";
|
||||
} else {
|
||||
return diff_secodes + "秒前";
|
||||
}
|
||||
} else if (diff_days >= 3 && diff_days < 30) {
|
||||
return M + '-' + D + ' ' + H + ':' + m;
|
||||
} else if (diff_days >= 30) {
|
||||
return Y + '-' + M + '-' + D + ' ' + H + ':' + m;
|
||||
}
|
||||
}
|
||||
module.exports = {
|
||||
timeHandle: commentTimeHandle
|
||||
}
|
||||
|
|
@ -0,0 +1,184 @@
|
|||
/*
|
||||
Animation 微动画
|
||||
基于ColorUI组建库的动画模块 by 文晓港 2019年3月26日19:52:28
|
||||
*/
|
||||
|
||||
/* css 滤镜 控制黑白底色gif的 */
|
||||
.gif-black{
|
||||
mix-blend-mode: screen;
|
||||
}
|
||||
.gif-white{
|
||||
mix-blend-mode: multiply;
|
||||
}
|
||||
|
||||
|
||||
/* Animation css */
|
||||
[class*=animation-] {
|
||||
animation-duration: .5s;
|
||||
animation-timing-function: ease-out;
|
||||
animation-fill-mode: both
|
||||
}
|
||||
|
||||
.animation-fade {
|
||||
animation-name: fade;
|
||||
animation-duration: .8s;
|
||||
animation-timing-function: linear
|
||||
}
|
||||
|
||||
.animation-scale-up {
|
||||
animation-name: scale-up
|
||||
}
|
||||
|
||||
.animation-scale-down {
|
||||
animation-name: scale-down
|
||||
}
|
||||
|
||||
.animation-slide-top {
|
||||
animation-name: slide-top
|
||||
}
|
||||
|
||||
.animation-slide-bottom {
|
||||
animation-name: slide-bottom
|
||||
}
|
||||
|
||||
.animation-slide-left {
|
||||
animation-name: slide-left
|
||||
}
|
||||
|
||||
.animation-slide-right {
|
||||
animation-name: slide-right
|
||||
}
|
||||
|
||||
.animation-shake {
|
||||
animation-name: shake
|
||||
}
|
||||
|
||||
.animation-reverse {
|
||||
animation-direction: reverse
|
||||
}
|
||||
|
||||
@keyframes fade {
|
||||
0% {
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes scale-up {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: scale(.2)
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
transform: scale(1)
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes scale-down {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: scale(1.8)
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
transform: scale(1)
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes slide-top {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: translateY(-100%)
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
transform: translateY(0)
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes slide-bottom {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: translateY(100%)
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
transform: translateY(0)
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes shake {
|
||||
|
||||
0%,
|
||||
100% {
|
||||
transform: translateX(0)
|
||||
}
|
||||
|
||||
10% {
|
||||
transform: translateX(-9px)
|
||||
}
|
||||
|
||||
20% {
|
||||
transform: translateX(8px)
|
||||
}
|
||||
|
||||
30% {
|
||||
transform: translateX(-7px)
|
||||
}
|
||||
|
||||
40% {
|
||||
transform: translateX(6px)
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: translateX(-5px)
|
||||
}
|
||||
|
||||
60% {
|
||||
transform: translateX(4px)
|
||||
}
|
||||
|
||||
70% {
|
||||
transform: translateX(-3px)
|
||||
}
|
||||
|
||||
80% {
|
||||
transform: translateX(2px)
|
||||
}
|
||||
|
||||
90% {
|
||||
transform: translateX(-1px)
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes slide-left {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: translateX(-100%)
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
transform: translateX(0)
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes slide-right {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: translateX(100%)
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
transform: translateX(0)
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
<template>
|
||||
<view>
|
||||
<view class="cu-custom" :style="[{height:CustomBar + 'px'}]">
|
||||
<view class="cu-bar fixed" :style="style" :class="[bgImage!=''?'none-bg text-white bg-img':'',bgColor]">
|
||||
<view class="action" @tap="BackPage" v-if="isBack">
|
||||
<text class="cuIcon-back"></text>
|
||||
<slot name="backText"></slot>
|
||||
</view>
|
||||
<view class="content" :style="[{top:StatusBar + 'px'}]">
|
||||
<slot name="content"></slot>
|
||||
</view>
|
||||
<slot name="right"></slot>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
StatusBar: this.StatusBar,
|
||||
CustomBar: this.CustomBar
|
||||
};
|
||||
},
|
||||
name: 'cu-custom',
|
||||
computed: {
|
||||
style() {
|
||||
var StatusBar= this.StatusBar;
|
||||
var CustomBar= this.CustomBar;
|
||||
var bgImage = this.bgImage;
|
||||
var style = `height:${CustomBar}px;padding-top:${StatusBar}px;`;
|
||||
if (this.bgImage) {
|
||||
style = `${style}background-image:url(${bgImage});`;
|
||||
}
|
||||
return style
|
||||
}
|
||||
},
|
||||
props: {
|
||||
bgColor: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
isBack: {
|
||||
type: [Boolean, String],
|
||||
default: false
|
||||
},
|
||||
bgImage: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
BackPage() {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
<template>
|
||||
<view class="page-box">
|
||||
<view class="centre">
|
||||
<image src="../static/image/empty.png" mode=""></image>
|
||||
<view class="tips">
|
||||
{{content}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
content: {
|
||||
type: String,
|
||||
default: '暂无内容'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.page-box {
|
||||
// position: relative;
|
||||
// left: 0;
|
||||
height: 50vh;
|
||||
}
|
||||
.centre {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top:0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
margin: auto;
|
||||
height: 400rpx;
|
||||
text-align: center;
|
||||
// padding: 200rpx auto;
|
||||
font-size: 32rpx;
|
||||
image {
|
||||
width: 387rpx;
|
||||
height: 341rpx;
|
||||
// margin-bottom: 20rpx;
|
||||
margin: 0 auto 20rpx;
|
||||
// border: 1px dotted #000000;
|
||||
}
|
||||
.tips {
|
||||
font-size: 32rpx;
|
||||
color: #2F3044;
|
||||
margin-top: 20rpx;
|
||||
font-weight: 700;
|
||||
}
|
||||
.btn {
|
||||
margin: 80rpx auto;
|
||||
width: 600rpx;
|
||||
border-radius: 32rpx;
|
||||
line-height: 90rpx;
|
||||
color: #ffffff;
|
||||
font-size: 34rpx;
|
||||
background: #5074FF;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,269 @@
|
|||
|
||||
var isIos
|
||||
// #ifdef APP-PLUS
|
||||
isIos = (plus.os.name == "iOS")
|
||||
// #endif
|
||||
|
||||
// 判断推送权限是否开启
|
||||
function judgeIosPermissionPush() {
|
||||
var result = false;
|
||||
var UIApplication = plus.ios.import("UIApplication");
|
||||
var app = UIApplication.sharedApplication();
|
||||
var enabledTypes = 0;
|
||||
if (app.currentUserNotificationSettings) {
|
||||
var settings = app.currentUserNotificationSettings();
|
||||
enabledTypes = settings.plusGetAttribute("types");
|
||||
console.log("enabledTypes1:" + enabledTypes);
|
||||
if (enabledTypes == 0) {
|
||||
console.log("推送权限没有开启");
|
||||
} else {
|
||||
result = true;
|
||||
console.log("已经开启推送功能!")
|
||||
}
|
||||
plus.ios.deleteObject(settings);
|
||||
} else {
|
||||
enabledTypes = app.enabledRemoteNotificationTypes();
|
||||
if (enabledTypes == 0) {
|
||||
console.log("推送权限没有开启!");
|
||||
} else {
|
||||
result = true;
|
||||
console.log("已经开启推送功能!")
|
||||
}
|
||||
console.log("enabledTypes2:" + enabledTypes);
|
||||
}
|
||||
plus.ios.deleteObject(app);
|
||||
plus.ios.deleteObject(UIApplication);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断定位权限是否开启
|
||||
function judgeIosPermissionLocation() {
|
||||
var result = false;
|
||||
var cllocationManger = plus.ios.import("CLLocationManager");
|
||||
var status = cllocationManger.authorizationStatus();
|
||||
result = (status != 2)
|
||||
console.log("定位权限开启:" + result);
|
||||
// 以下代码判断了手机设备的定位是否关闭,推荐另行使用方法 checkSystemEnableLocation
|
||||
/* var enable = cllocationManger.locationServicesEnabled();
|
||||
var status = cllocationManger.authorizationStatus();
|
||||
console.log("enable:" + enable);
|
||||
console.log("status:" + status);
|
||||
if (enable && status != 2) {
|
||||
result = true;
|
||||
console.log("手机定位服务已开启且已授予定位权限");
|
||||
} else {
|
||||
console.log("手机系统的定位没有打开或未给予定位权限");
|
||||
} */
|
||||
plus.ios.deleteObject(cllocationManger);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断麦克风权限是否开启
|
||||
function judgeIosPermissionRecord() {
|
||||
var result = false;
|
||||
var avaudiosession = plus.ios.import("AVAudioSession");
|
||||
var avaudio = avaudiosession.sharedInstance();
|
||||
var permissionStatus = avaudio.recordPermission();
|
||||
console.log("permissionStatus:" + permissionStatus);
|
||||
if (permissionStatus == 1684369017 || permissionStatus == 1970168948) {
|
||||
console.log("麦克风权限没有开启");
|
||||
} else {
|
||||
result = true;
|
||||
console.log("麦克风权限已经开启");
|
||||
}
|
||||
plus.ios.deleteObject(avaudiosession);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断相机权限是否开启
|
||||
function judgeIosPermissionCamera() {
|
||||
var result = false;
|
||||
var AVCaptureDevice = plus.ios.import("AVCaptureDevice");
|
||||
var authStatus = AVCaptureDevice.authorizationStatusForMediaType('vide');
|
||||
console.log("authStatus:" + authStatus);
|
||||
if (authStatus == 3) {
|
||||
result = true;
|
||||
console.log("相机权限已经开启");
|
||||
} else {
|
||||
console.log("相机权限没有开启");
|
||||
}
|
||||
plus.ios.deleteObject(AVCaptureDevice);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断相册权限是否开启
|
||||
function judgeIosPermissionPhotoLibrary() {
|
||||
var result = false;
|
||||
var PHPhotoLibrary = plus.ios.import("PHPhotoLibrary");
|
||||
var authStatus = PHPhotoLibrary.authorizationStatus();
|
||||
console.log("authStatus:" + authStatus);
|
||||
if (authStatus == 3) {
|
||||
result = true;
|
||||
console.log("相册权限已经开启");
|
||||
} else {
|
||||
console.log("相册权限没有开启");
|
||||
}
|
||||
plus.ios.deleteObject(PHPhotoLibrary);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断通讯录权限是否开启
|
||||
function judgeIosPermissionContact() {
|
||||
var result = false;
|
||||
var CNContactStore = plus.ios.import("CNContactStore");
|
||||
var cnAuthStatus = CNContactStore.authorizationStatusForEntityType(0);
|
||||
if (cnAuthStatus == 3) {
|
||||
result = true;
|
||||
console.log("通讯录权限已经开启");
|
||||
} else {
|
||||
console.log("通讯录权限没有开启");
|
||||
}
|
||||
plus.ios.deleteObject(CNContactStore);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断日历权限是否开启
|
||||
function judgeIosPermissionCalendar() {
|
||||
var result = false;
|
||||
var EKEventStore = plus.ios.import("EKEventStore");
|
||||
var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(0);
|
||||
if (ekAuthStatus == 3) {
|
||||
result = true;
|
||||
console.log("日历权限已经开启");
|
||||
} else {
|
||||
console.log("日历权限没有开启");
|
||||
}
|
||||
plus.ios.deleteObject(EKEventStore);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断备忘录权限是否开启
|
||||
function judgeIosPermissionMemo() {
|
||||
var result = false;
|
||||
var EKEventStore = plus.ios.import("EKEventStore");
|
||||
var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(1);
|
||||
if (ekAuthStatus == 3) {
|
||||
result = true;
|
||||
console.log("备忘录权限已经开启");
|
||||
} else {
|
||||
console.log("备忘录权限没有开启");
|
||||
}
|
||||
plus.ios.deleteObject(EKEventStore);
|
||||
return result;
|
||||
}
|
||||
|
||||
// Android权限查询
|
||||
function requestAndroidPermission(permissionID) {
|
||||
return new Promise((resolve, reject) => {
|
||||
plus.android.requestPermissions(
|
||||
[permissionID], // 理论上支持多个权限同时查询,但实际上本函数封装只处理了一个权限的情况。有需要的可自行扩展封装
|
||||
function(resultObj) {
|
||||
var result = 0;
|
||||
for (var i = 0; i < resultObj.granted.length; i++) {
|
||||
var grantedPermission = resultObj.granted[i];
|
||||
console.log('已获取的权限:' + grantedPermission);
|
||||
result = 1
|
||||
}
|
||||
for (var i = 0; i < resultObj.deniedPresent.length; i++) {
|
||||
var deniedPresentPermission = resultObj.deniedPresent[i];
|
||||
console.log('拒绝本次申请的权限:' + deniedPresentPermission);
|
||||
result = 0
|
||||
}
|
||||
for (var i = 0; i < resultObj.deniedAlways.length; i++) {
|
||||
var deniedAlwaysPermission = resultObj.deniedAlways[i];
|
||||
console.log('永久拒绝申请的权限:' + deniedAlwaysPermission);
|
||||
result = -1
|
||||
}
|
||||
resolve(result);
|
||||
// 若所需权限被拒绝,则打开APP设置界面,可以在APP设置界面打开相应权限
|
||||
// if (result != 1) {
|
||||
// gotoAppPermissionSetting()
|
||||
// }
|
||||
},
|
||||
function(error) {
|
||||
console.log('申请权限错误:' + error.code + " = " + error.message);
|
||||
resolve({
|
||||
code: error.code,
|
||||
message: error.message
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
// 使用一个方法,根据参数判断权限
|
||||
function judgeIosPermission(permissionID) {
|
||||
if (permissionID == "location") {
|
||||
return judgeIosPermissionLocation()
|
||||
} else if (permissionID == "camera") {
|
||||
return judgeIosPermissionCamera()
|
||||
} else if (permissionID == "photoLibrary") {
|
||||
return judgeIosPermissionPhotoLibrary()
|
||||
} else if (permissionID == "record") {
|
||||
return judgeIosPermissionRecord()
|
||||
} else if (permissionID == "push") {
|
||||
return judgeIosPermissionPush()
|
||||
} else if (permissionID == "contact") {
|
||||
return judgeIosPermissionContact()
|
||||
} else if (permissionID == "calendar") {
|
||||
return judgeIosPermissionCalendar()
|
||||
} else if (permissionID == "memo") {
|
||||
return judgeIosPermissionMemo()
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// 跳转到**应用**的权限页面
|
||||
function gotoAppPermissionSetting() {
|
||||
if (isIos) {
|
||||
var UIApplication = plus.ios.import("UIApplication");
|
||||
var application2 = UIApplication.sharedApplication();
|
||||
var NSURL2 = plus.ios.import("NSURL");
|
||||
// var setting2 = NSURL2.URLWithString("prefs:root=LOCATION_SERVICES");
|
||||
var setting2 = NSURL2.URLWithString("app-settings:");
|
||||
application2.openURL(setting2);
|
||||
|
||||
plus.ios.deleteObject(setting2);
|
||||
plus.ios.deleteObject(NSURL2);
|
||||
plus.ios.deleteObject(application2);
|
||||
} else {
|
||||
// console.log(plus.device.vendor);
|
||||
var Intent = plus.android.importClass("android.content.Intent");
|
||||
var Settings = plus.android.importClass("android.provider.Settings");
|
||||
var Uri = plus.android.importClass("android.net.Uri");
|
||||
var mainActivity = plus.android.runtimeMainActivity();
|
||||
var intent = new Intent();
|
||||
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
|
||||
var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
|
||||
intent.setData(uri);
|
||||
mainActivity.startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
// 检查系统的设备服务是否开启
|
||||
// var checkSystemEnableLocation = async function () {
|
||||
function checkSystemEnableLocation() {
|
||||
if (isIos) {
|
||||
var result = false;
|
||||
var cllocationManger = plus.ios.import("CLLocationManager");
|
||||
var result = cllocationManger.locationServicesEnabled();
|
||||
console.log("系统定位开启:" + result);
|
||||
plus.ios.deleteObject(cllocationManger);
|
||||
return result;
|
||||
} else {
|
||||
var context = plus.android.importClass("android.content.Context");
|
||||
var locationManager = plus.android.importClass("android.location.LocationManager");
|
||||
var main = plus.android.runtimeMainActivity();
|
||||
var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
|
||||
var result = mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER);
|
||||
console.log("系统定位开启:" + result);
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
export {
|
||||
judgeIosPermission,
|
||||
requestAndroidPermission,
|
||||
checkSystemEnableLocation,
|
||||
gotoAppPermissionSetting
|
||||
}
|
||||
|
|
@ -0,0 +1,139 @@
|
|||
<template>
|
||||
<view>
|
||||
<!-- 按钮 -->
|
||||
<button :class="['buttonBorder',!_rotate?'dlbutton':'dlbutton_loading']" :style="{'background':bgColor, 'color': fontColor}">
|
||||
<view :class="_rotate?'rotate_loop':''">
|
||||
<text v-if="_rotate" class="cuIcon cuIcon-loading1 "></text>
|
||||
<text v-if="!_rotate">{{ text }}</text>
|
||||
</view>
|
||||
</button>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
text: String, //显示文本
|
||||
rotate: {
|
||||
//是否启动加载
|
||||
type: [Boolean, String],
|
||||
default: false,
|
||||
},
|
||||
bgColor: {
|
||||
//按钮背景颜色
|
||||
type: String,
|
||||
// default: "linear-gradient(to right, rgba(0,0,0,0.7), rgba(0,0,0,0.6))",
|
||||
},
|
||||
fontColor: {
|
||||
//按钮字体颜色
|
||||
type: String,
|
||||
default: "#FFFFFF",
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
_rotate() {
|
||||
//处理值
|
||||
return String(this.rotate) !== 'false'
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./css/icon.css");
|
||||
|
||||
.dlbutton {
|
||||
color: #FFFFFF;
|
||||
font-size: 30upx;
|
||||
width: 651upx;
|
||||
height: 90upx;
|
||||
|
||||
background: linear-gradient(to left,#FF7F00 0, #FF7F00 100%);
|
||||
box-shadow: 0upx 0upx 13upx 0upx rgba(164, 217, 228, 0.4);
|
||||
border-radius: 2.5rem;
|
||||
line-height: 90upx;
|
||||
text-align: center;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-top: 96upx;
|
||||
}
|
||||
|
||||
.dlbutton_loading {
|
||||
color: #FFFFFF;
|
||||
font-size: 30upx;
|
||||
width: 100upx;
|
||||
height: 100upx;
|
||||
background: linear-gradient(to left,#FF7F00 0, #FF7F00 100%);
|
||||
box-shadow: 0upx 0upx 13upx 0upx rgba(164, 217, 228, 0.4);
|
||||
border-radius: 2.5rem;
|
||||
line-height: 100upx;
|
||||
text-align: center;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-top: 96upx;
|
||||
}
|
||||
|
||||
.buttonBorder {
|
||||
border: none;
|
||||
border-radius: 2.5rem;
|
||||
-webkit-box-shadow: 0 0 60upx 0 rgba(0, 0, 0, .2);
|
||||
box-shadow: 0 0 60upx 0 rgba(0, 0, 0, .2);
|
||||
-webkit-transition: all 0.4s cubic-bezier(.57, .19, .51, .95);
|
||||
-moz-transition: all 0.4s cubic-bezier(.57, .19, .51, .95);
|
||||
-ms-transition: all 0.4s cubic-bezier(.57, .19, .51, .95);
|
||||
-o-transition: all 0.4s cubic-bezier(.57, .19, .51, .95);
|
||||
transition: all 0.4s cubic-bezier(.57, .19, .51, .95);
|
||||
}
|
||||
|
||||
/* 旋转动画 */
|
||||
.rotate_loop {
|
||||
-webkit-transition-property: -webkit-transform;
|
||||
-webkit-transition-duration: 1s;
|
||||
-moz-transition-property: -moz-transform;
|
||||
-moz-transition-duration: 1s;
|
||||
-webkit-animation: rotate 1s linear infinite;
|
||||
-moz-animation: rotate 1s linear infinite;
|
||||
-o-animation: rotate 1s linear infinite;
|
||||
animation: rotate 1s linear infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes rotate {
|
||||
from {
|
||||
-webkit-transform: rotate(0deg)
|
||||
}
|
||||
|
||||
to {
|
||||
-webkit-transform: rotate(360deg)
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes rotate {
|
||||
from {
|
||||
-moz-transform: rotate(0deg)
|
||||
}
|
||||
|
||||
to {
|
||||
-moz-transform: rotate(359deg)
|
||||
}
|
||||
}
|
||||
|
||||
@-o-keyframes rotate {
|
||||
from {
|
||||
-o-transform: rotate(0deg)
|
||||
}
|
||||
|
||||
to {
|
||||
-o-transform: rotate(359deg)
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes rotate {
|
||||
from {
|
||||
transform: rotate(0deg)
|
||||
}
|
||||
|
||||
to {
|
||||
transform: rotate(359deg)
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,222 @@
|
|||
<template>
|
||||
<view class="main-list oBorder">
|
||||
<!-- 文本框 -->
|
||||
<input
|
||||
class="main-input"
|
||||
:value="value"
|
||||
:type="_type"
|
||||
:maxlength="maxlength"
|
||||
:placeholder="placeholder"
|
||||
:password="type==='password'&&!showPassword"
|
||||
@input="onInput"
|
||||
/>
|
||||
|
||||
<!-- 是否可见密码 -->
|
||||
<image
|
||||
v-if="_isShowPass&&type==='password'&&!_isShowCode"
|
||||
class="img cuIcon"
|
||||
:class="showPassword?'cuIcon-attention':'cuIcon-attentionforbid'"
|
||||
@tap="showPass"
|
||||
></image>
|
||||
<!-- 倒计时 -->
|
||||
<view
|
||||
v-if="_isShowCode&&!_isShowPass"
|
||||
:class="['vercode',{'vercode-run': second>0}]"
|
||||
@click="setCode"
|
||||
>{{ getVerCodeSecond }}</view>
|
||||
|
||||
|
||||
<view
|
||||
v-if="_isShowGet"
|
||||
class="vercode"
|
||||
@click="setNumberCode"
|
||||
>官方邀请码</view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
var _this, countDown;
|
||||
export default{
|
||||
data(){
|
||||
return{
|
||||
showPassword: false, //是否显示明文
|
||||
second: 0, //倒计时
|
||||
isRunCode: false, //是否开始倒计时
|
||||
}
|
||||
},
|
||||
props:{
|
||||
type: String, //类型
|
||||
value: String, //值
|
||||
placeholder: String, //框内提示
|
||||
maxlength: {
|
||||
//最大长度
|
||||
type: [Number,String],
|
||||
default: 20,
|
||||
},
|
||||
isShowPass:{
|
||||
//是否显示密码图标(二选一)
|
||||
type: [Boolean,String],
|
||||
default: false,
|
||||
},
|
||||
isShowCode:{
|
||||
//是否显示获取验证码(二选一)
|
||||
type: [Boolean,String],
|
||||
default: false,
|
||||
},
|
||||
isShowGet:{
|
||||
//是否显示获取验证码(二选一)
|
||||
type: [Boolean,String],
|
||||
default: false,
|
||||
},
|
||||
codeText:{
|
||||
type: String,
|
||||
default: "获取验证码",
|
||||
},
|
||||
setTime:{
|
||||
//倒计时时间设置
|
||||
type: [Number,String],
|
||||
default: 60,
|
||||
}
|
||||
},
|
||||
model: {
|
||||
prop: 'value',
|
||||
event: 'input'
|
||||
},
|
||||
mounted() {
|
||||
_this=this
|
||||
//准备触发
|
||||
this.$on('runCode',(val)=>{
|
||||
this.runCode(val);
|
||||
});
|
||||
clearInterval(countDown);//先清理一次循环,避免缓存
|
||||
},
|
||||
methods:{
|
||||
showPass(){
|
||||
//是否显示密码
|
||||
this.showPassword = !this.showPassword
|
||||
},
|
||||
onInput(e) {
|
||||
//传出值
|
||||
this.$emit('input', e.target.value)
|
||||
},
|
||||
setCode(){
|
||||
//设置获取验证码的事件
|
||||
if(this.isRunCode){
|
||||
//判断是否开始倒计时,避免重复点击
|
||||
return false;
|
||||
}
|
||||
this.$emit('setCode')
|
||||
},
|
||||
setNumberCode(){
|
||||
this.$emit('setNumberCode')
|
||||
},
|
||||
runCode(val){
|
||||
//开始倒计时
|
||||
if(String(val)=="0"){
|
||||
|
||||
//判断是否需要终止循环
|
||||
this.second = 0; //初始倒计时
|
||||
clearInterval(countDown);//清理循环
|
||||
this.isRunCode= false; //关闭循环状态
|
||||
return false;
|
||||
}
|
||||
if(this.isRunCode){
|
||||
//判断是否开始倒计时,避免重复点击
|
||||
return false;
|
||||
}
|
||||
this.isRunCode= true
|
||||
this.second = this._setTime //倒数秒数
|
||||
|
||||
let _this=this;
|
||||
countDown = setInterval(function(){
|
||||
_this.second--
|
||||
if(_this.second==0){
|
||||
_this.isRunCode= false
|
||||
clearInterval(countDown)
|
||||
}
|
||||
},1000)
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
computed:{
|
||||
_type(){
|
||||
//处理值
|
||||
const type = this.type
|
||||
return type == 'password' ? 'text' : type
|
||||
},
|
||||
_isShowPass() {
|
||||
//处理值
|
||||
return String(this.isShowPass) !== 'false'
|
||||
},
|
||||
_isShowCode() {
|
||||
//处理值
|
||||
return String(this.isShowCode) !== 'false'
|
||||
},
|
||||
_isShowGet() {
|
||||
//处理值
|
||||
return String(this.isShowGet) !== 'false'
|
||||
},
|
||||
_setTime() {
|
||||
//处理值
|
||||
const setTime = Number(this.setTime)
|
||||
return setTime>0 ? setTime : 60
|
||||
},
|
||||
getVerCodeSecond(){
|
||||
//验证码倒计时计算
|
||||
if(this.second<=0){
|
||||
return this.codeText;
|
||||
}else{
|
||||
if(this.second<10){
|
||||
return '0'+this.second;
|
||||
}else{
|
||||
return this.second;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./css/icon.css");
|
||||
|
||||
.main-list{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
height: 90upx; /* Input 高度 */
|
||||
color: #333333;
|
||||
padding: 32upx;
|
||||
margin-top:18upx;
|
||||
margin-bottom: 18upx;
|
||||
}
|
||||
.img{
|
||||
width: 32upx;
|
||||
height: 32upx;
|
||||
font-size: 32upx;
|
||||
}
|
||||
.main-input{
|
||||
flex: 1;
|
||||
text-align: left;
|
||||
font-size: 28upx;
|
||||
padding-right: 10upx;
|
||||
/* margin-left: 20upx; */
|
||||
}
|
||||
.vercode {
|
||||
color: rgba(0,0,0,0.7);
|
||||
font-size: 24upx;
|
||||
line-height: 100upx;
|
||||
}
|
||||
.vercode-run {
|
||||
color: rgba(0,0,0,0.4) !important;
|
||||
}
|
||||
.oBorder{
|
||||
width: 96%;
|
||||
border-bottom: 1px solid #E6E6E6;
|
||||
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
同城外卖骑手端:
|
||||
包名:com.qsd.tcwm
|
||||
别名:tcwaqs
|
||||
秘钥:123456
|
||||
md5:49:3F:47:8B:15:F6:61:94:A2:AC:F4:DA:BA:72:5C:CD
|
||||
SHA1:29:66:5D:1C:DC:61:76:B7:25:84:4D:BE:26:53:38:26:F3:20:21:83
|
||||
sha256:79:70:AD:DA:0A:9A:90:94:71:4E:F1:D7:27:8A:B2:B6:C1:53:9B:93:30:39:E4:BE:64:1D:78:38:4B:D5:91:CC
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
import Vue from 'vue'
|
||||
import App from './App'
|
||||
import HttpRequest from './common/httpRequest'
|
||||
import HttpCache from './common/cache'
|
||||
import queue from './common/queue'
|
||||
import share from './common/share.js'
|
||||
|
||||
// 引入全局uView
|
||||
import uView from "uview-ui";
|
||||
Vue.use(uView);
|
||||
// 全局获取位置
|
||||
Vue.prototype.getLocation = function () {
|
||||
return new Promise(function (resolve, reject) {
|
||||
showLoading();
|
||||
uni.getLocation({
|
||||
type: "wgs84",
|
||||
success: function (res) {
|
||||
hideLoading();
|
||||
resolve(res);
|
||||
},
|
||||
fail: function () {
|
||||
hideLoading();
|
||||
uni.showModal({
|
||||
title: "请求授权当前位置",
|
||||
content: "我们需要获取地理位置信息,为您推荐附近的订单",
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
uni.openSetting().then((res) => {
|
||||
if (res[1].authSetting["scope.userLocation"] === true) {
|
||||
uni.getLocation({
|
||||
type: "wgs84",
|
||||
success: function (res) {
|
||||
resolve(res);
|
||||
},
|
||||
});
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: "您拒绝了授权当前位置",
|
||||
});
|
||||
}
|
||||
});
|
||||
} else if (res.cancel) {
|
||||
uni.showToast({
|
||||
title: "您拒绝了授权当前位置",
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
Vue.config.productionTip = false
|
||||
Vue.prototype.$Request = HttpRequest;
|
||||
Vue.prototype.$queue = queue;
|
||||
Vue.prototype.$Sysconf = HttpRequest.config;
|
||||
Vue.prototype.$SysCache = HttpCache;
|
||||
Vue.mixin(share)
|
||||
App.mpType = 'app'
|
||||
|
||||
const app = new Vue({
|
||||
...App
|
||||
})
|
||||
app.$mount()
|
||||
|
|
@ -0,0 +1,216 @@
|
|||
{
|
||||
"name" : "同城外卖骑手端",
|
||||
"appid" : "__UNI__20A1151",
|
||||
"description" : "",
|
||||
"versionName" : "1.0.0",
|
||||
"versionCode" : "100",
|
||||
"transformPx" : false,
|
||||
/* 5+App特有相关 */
|
||||
"app-plus" : {
|
||||
"privacy" : {
|
||||
"prompt" : "template",
|
||||
"template" : {
|
||||
"title" : "服务协议和隐私政策",
|
||||
"message" : " 请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/> 你可阅读<a href=\"https://tcwmqs.xianmaxiong.com/pages/riderMy/set/xieyi\">《服务协议》</a>和<a href=\"https://tcwmqs.xianmaxiong.com/pages/riderMy/set/mimi\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面同意按钮开始接受我们的服务。",
|
||||
"buttonAccept" : "同意",
|
||||
"buttonRefuse" : "不同意"
|
||||
}
|
||||
},
|
||||
"usingComponents" : true,
|
||||
"nvueCompiler" : "uni-app",
|
||||
"compilerVersion" : 3,
|
||||
"splashscreen" : {
|
||||
"alwaysShowBeforeRender" : true,
|
||||
"waiting" : true,
|
||||
"autoclose" : true,
|
||||
"delay" : 0
|
||||
},
|
||||
/* 模块配置 */
|
||||
"modules" : {
|
||||
"Payment" : {},
|
||||
"OAuth" : {},
|
||||
"Share" : {},
|
||||
"Maps" : {},
|
||||
"Push" : {},
|
||||
"Camera" : {},
|
||||
"Geolocation" : {}
|
||||
},
|
||||
/* 应用发布信息 */
|
||||
"distribute" : {
|
||||
/* android打包配置 */
|
||||
"android" : {
|
||||
"permissions" : [
|
||||
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.INTERNET\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
|
||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||
]
|
||||
},
|
||||
/* ios打包配置 */
|
||||
"ios" : {
|
||||
"privacyDescription" : {
|
||||
"NSPhotoLibraryUsageDescription" : "该应用需要读取你的相册,如果不允许,你将无法从系统相册选择照片编辑头像。",
|
||||
"NSPhotoLibraryAddUsageDescription" : "是否允许此App在你的APP写入照片?,如果不允许,你将无法保存图片到本地。",
|
||||
"NSCameraUsageDescription" : "是否允许此App使用你的相机?如果不允许,你将无法使用拍照等功能。",
|
||||
"NSLocationAlwaysAndWhenInUseUsageDescription" : "是否允许此App使用你的位置?如果不允许,你将无法获取到您所在位置附近商家。",
|
||||
"NSAppleMusicUsageDescription" : "App需要您的同意,才能访问媒体资料库权限,如果不允许,你将无法从系统相册选择照片发布需求和修改头像",
|
||||
"NSLocalNetworkUsageDescription" : "是否允许此App使用你的本地网络权限?如果不允许,你将无法获取在线内容。",
|
||||
"NSLocationAlwaysUsageDescription" : "是否允许此App使用你的位置?如果不允许,你将无法获取到您所在位置附近商家。",
|
||||
"NSLocationWhenInUseUsageDescription" : "是否允许此App使用你的位置?如果不允许,你将无法获取到您所在位置附近商家。",
|
||||
"NSUserTrackingUsageDescription" : "请放心,开启权限不会获取您在其他站点的隐私信息,该权限仅用于标识设备并保障服务安全与提示浏览体验"
|
||||
},
|
||||
"dSYMs" : false
|
||||
},
|
||||
/* SDK配置 */
|
||||
"sdkConfigs" : {
|
||||
"payment" : {
|
||||
"alipay" : {
|
||||
"__platform__" : [ "android" ]
|
||||
},
|
||||
"weixin" : {
|
||||
"__platform__" : [ "android" ],
|
||||
"appid" : "wxeaffcaea958472d3",
|
||||
"UniversalLinks" : "https://maxiong.xianmxkj.com/"
|
||||
}
|
||||
},
|
||||
"oauth" : {
|
||||
"weixin" : {
|
||||
"appid" : "wxeaffcaea958472d3",
|
||||
"appsecret" : "32f6f3ce599abff2fa0191a36780c66c",
|
||||
"UniversalLinks" : "https://maxiong.xianmxkj.com/"
|
||||
}
|
||||
},
|
||||
"share" : {
|
||||
"weixin" : {
|
||||
"appid" : "wxeaffcaea958472d3",
|
||||
"UniversalLinks" : "https://maxiong.xianmxkj.com/"
|
||||
}
|
||||
},
|
||||
"ad" : {},
|
||||
"maps" : {
|
||||
"amap" : {
|
||||
"appkey_ios" : "3d9ca463c896ed2ee5c2a5864c217df2",
|
||||
"appkey_android" : "51a884078a6ae16b5220dd0577b1a996"
|
||||
}
|
||||
},
|
||||
"push" : {
|
||||
"unipush" : {}
|
||||
},
|
||||
"geolocation" : {
|
||||
"amap" : {
|
||||
"__platform__" : [ "ios", "android" ],
|
||||
"appkey_ios" : "3d9ca463c896ed2ee5c2a5864c217df2",
|
||||
"appkey_android" : "51a884078a6ae16b5220dd0577b1a996"
|
||||
}
|
||||
}
|
||||
},
|
||||
"icons" : {
|
||||
"android" : {
|
||||
"hdpi" : "unpackage/res/icons/72x72.png",
|
||||
"xhdpi" : "unpackage/res/icons/96x96.png",
|
||||
"xxhdpi" : "unpackage/res/icons/144x144.png",
|
||||
"xxxhdpi" : "unpackage/res/icons/192x192.png"
|
||||
},
|
||||
"ios" : {
|
||||
"appstore" : "unpackage/res/icons/1024x1024.png",
|
||||
"ipad" : {
|
||||
"app" : "unpackage/res/icons/76x76.png",
|
||||
"app@2x" : "unpackage/res/icons/152x152.png",
|
||||
"notification" : "unpackage/res/icons/20x20.png",
|
||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||
"proapp@2x" : "unpackage/res/icons/167x167.png",
|
||||
"settings" : "unpackage/res/icons/29x29.png",
|
||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||
"spotlight" : "unpackage/res/icons/40x40.png",
|
||||
"spotlight@2x" : "unpackage/res/icons/80x80.png"
|
||||
},
|
||||
"iphone" : {
|
||||
"app@2x" : "unpackage/res/icons/120x120.png",
|
||||
"app@3x" : "unpackage/res/icons/180x180.png",
|
||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||
"notification@3x" : "unpackage/res/icons/60x60.png",
|
||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||
"settings@3x" : "unpackage/res/icons/87x87.png",
|
||||
"spotlight@2x" : "unpackage/res/icons/80x80.png",
|
||||
"spotlight@3x" : "unpackage/res/icons/120x120.png"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
/* 快应用特有相关 */
|
||||
"quickapp" : {},
|
||||
/* 小程序特有相关 */
|
||||
"mp-weixin" : {
|
||||
"appid" : "wxcf9fdee37e8a4803",
|
||||
"setting" : {
|
||||
"urlCheck" : false,
|
||||
"es6" : true
|
||||
},
|
||||
"plugins" : {
|
||||
"routePlan" : {
|
||||
"version" : "1.0.16",
|
||||
"provider" : "wx50b5593e81dd937a"
|
||||
}
|
||||
},
|
||||
"permission" : {
|
||||
"scope.userLocation" : {
|
||||
"desc" : "你的位置信息将用于为您就近匹配订单"
|
||||
}
|
||||
},
|
||||
"__usePrivacyCheck__" : false,
|
||||
"requiredPrivateInfos" : [ "getLocation", "chooseLocation" ]
|
||||
},
|
||||
"mp-alipay" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-baidu" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-toutiao" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"uniStatistics" : {
|
||||
"enable" : false
|
||||
},
|
||||
"permission" : {
|
||||
"scope.userLocation" : {
|
||||
"desc" : "你的位置信息将用于为您就近匹配订单"
|
||||
}
|
||||
},
|
||||
"h5" : {
|
||||
"devServer" : {
|
||||
"https" : false,
|
||||
"port" : 8180
|
||||
},
|
||||
"router" : {
|
||||
"mode" : "history"
|
||||
},
|
||||
"sdkConfigs" : {
|
||||
"maps" : {
|
||||
"qqmap" : {
|
||||
"key" : "CFLBZ-DRHW6-4KJSW-EITQY-LAJQ2-WLBWM"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"name": "rider",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"@koa/cors": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@koa/cors/-/cors-3.1.0.tgz",
|
||||
"integrity": "sha512-7ulRC1da/rBa6kj6P4g2aJfnET3z8Uf3SWu60cjbtxTA5g8lxRdX/Bd2P92EagGwwAhANeNw8T8if99rJliR6Q==",
|
||||
"requires": {
|
||||
"vary": "^1.1.2"
|
||||
}
|
||||
},
|
||||
"egg-cors": {
|
||||
"version": "2.2.3",
|
||||
"resolved": "https://registry.npmjs.org/egg-cors/-/egg-cors-2.2.3.tgz",
|
||||
"integrity": "sha512-MLG4pQekZpycLXR45ZAIgFpFYshosBxu1CMdhXAzqPzxUn0xI21gVzqLqcxUrzzulaErCwG6qMXaS1eFyj9u2w==",
|
||||
"requires": {
|
||||
"@koa/cors": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"uview-ui": {
|
||||
"version": "1.8.4",
|
||||
"resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-1.8.4.tgz",
|
||||
"integrity": "sha512-Zr+D5dFdNy6CdHQLBEXeGq/w0LkjxzBtsgaaDwLl0P58g67H7fBBDvy6AzWK/k0c7dwPYMBiK7I4Tr9p92+0DA=="
|
||||
},
|
||||
"vary": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"name": "rider",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "main.js",
|
||||
"dependencies": {
|
||||
"egg-cors": "^2.2.3",
|
||||
"uview-ui": "^1.8.4"
|
||||
},
|
||||
"devDependencies": {},
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC"
|
||||
}
|
||||
|
|
@ -0,0 +1,292 @@
|
|||
{
|
||||
"easycom" : {
|
||||
"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
|
||||
},
|
||||
"pages" : [
|
||||
//pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
|
||||
|
||||
{
|
||||
"path" : "pages/index/index",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "",
|
||||
"enablePullDownRefresh" : true,
|
||||
"navigationStyle" : "custom",
|
||||
"navigationBarTextStyle" : "black"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/riderMy",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "我的",
|
||||
"enablePullDownRefresh" : false,
|
||||
"navigationBarBackgroundColor":"#fed9ba"
|
||||
// "navigationStyle" : "custom",
|
||||
// "navigationBarTextStyle" : "black"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/updateNickName",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "修改昵称",
|
||||
"enablePullDownRefresh" : false,
|
||||
"navigationBarBackgroundColor":"#fed9ba"
|
||||
// "navigationStyle" : "custom",
|
||||
// "navigationBarTextStyle" : "black"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/set/set",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "系统设置",
|
||||
"enablePullDownRefresh" : false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/set/yijian",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "意见反馈",
|
||||
"enablePullDownRefresh" : false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/kefu/chat",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "联系客服"
|
||||
// "enablePullDownRefresh" : false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/kefu/liaotianshi",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "聊天室",
|
||||
"enablePullDownRefresh" : false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/kefu/liaotian",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "消息中心",
|
||||
"enablePullDownRefresh" : true
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/approve/approve",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "",
|
||||
"enablePullDownRefresh" : false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/index/buyOrder/buyOrder",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "任务详情",
|
||||
"enablePullDownRefresh" : false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/index/cityOrder/cityOrder",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "任务详情",
|
||||
"enablePullDownRefresh" : false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/index/orderdetail/orderdetail",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "订单详情",
|
||||
"enablePullDownRefresh" : false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/index/orderdetail/navigation",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "导航",
|
||||
"enablePullDownRefresh" : false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/myAccount/myAccount",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "资金账户",
|
||||
"enablePullDownRefresh" : false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/myAccount/AcontMoney/AcontMoney",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "保证金",
|
||||
"enablePullDownRefresh" : false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/myAccount/Acontlist/Acontlist",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "账户明细",
|
||||
"enablePullDownRefresh" : true
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/myAccount/AcontMoney/Acontlist",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "保证金明细",
|
||||
"enablePullDownRefresh" : true
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/myComment/myComment",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "我的评价",
|
||||
"enablePullDownRefresh" : true
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/myComplain/myComplain",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "违规申诉",
|
||||
"enablePullDownRefresh" : false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/myComplain/online_complain/online_complain",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "在线申诉",
|
||||
"enablePullDownRefresh" : false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/myOnline/myOnline",
|
||||
"style" : {
|
||||
"navigationBarTitleText" : "在线申诉",
|
||||
"enablePullDownRefresh" : false
|
||||
}
|
||||
}, {
|
||||
"path": "pages/login/login",
|
||||
"style": {
|
||||
"navigationBarTitleText": "登录",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
}, {
|
||||
"path": "pages/login/forgetPwd",
|
||||
"style": {
|
||||
"navigationBarTitleText": "忘记密码",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
}, {
|
||||
"path": "pages/login/running_rider/running_rider",
|
||||
"style": {
|
||||
"navigationBarTitleText": "骑手注册",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
}
|
||||
,{
|
||||
"path" : "pages/riderMy/myAccount/Txmoney/Txmoney",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText": "余额提现",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/order",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText": "我的订单",
|
||||
"enablePullDownRefresh": true
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/set/xieyi",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText": "用户协议",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
|
||||
},{
|
||||
"path" : "pages/riderMy/set/about",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText": "关于我们",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/set/mimi",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText": "隐私政策",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/paotuixieyi",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText": "跑腿代购协议",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/trainingCenter",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText": "培训中心",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/trainingList",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText": "帮助中心",
|
||||
"enablePullDownRefresh": true
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"path" : "pages/riderMy/profit",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText": "收益明细",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"path": "pages/riderMy/myAccount/AcontMoney/cashList",
|
||||
"style": {
|
||||
"navigationBarTitleText": "提现记录",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/riderMy/myAccount/AcontMoney/zhifubao",
|
||||
"style": {
|
||||
"navigationBarTitleText": "提现账号",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"globalStyle" : {
|
||||
"navigationBarTextStyle" : "black",
|
||||
"navigationBarTitleText" : "同城外卖骑手端",
|
||||
"navigationBarBackgroundColor" : "#FFFFFF",
|
||||
"backgroundColor" : "#F8F8F8"
|
||||
},
|
||||
"condition" : { //模式配置,仅开发期间生效
|
||||
"current": 0, //当前激活的模式(list 的索引项)
|
||||
"list": [
|
||||
{
|
||||
"name": "", //模式名称
|
||||
"path": "", //启动页面,必选
|
||||
"query": "" //启动参数,在页面的onLoad函数里面得到
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,937 @@
|
|||
<template>
|
||||
<view class="content">
|
||||
<view class="list_box1">
|
||||
<view class="part2" v-if="orderDelites.indentType == 1 || orderDelites.indentType == 2">
|
||||
<view class="box_add">
|
||||
<!-- <view class="distance">
|
||||
<view v-if="orderDelites.distancess>1000">{{(Number(orderDelites.distancess) / 1000).toFixed(2)}}</view>
|
||||
<view v-else>{{Number(orderDelites.distancess?(orderDelites.distancess).toFixed(2):0)}}</view>
|
||||
<view class="a" v-if="orderDelites.distancess>1000">km</view>
|
||||
<view class="a" v-else>m</view>
|
||||
<view>{{orderDelites.distancess}}</view>
|
||||
</view> -->
|
||||
<view class="add_name" @click="goStart()">
|
||||
<view class="flex align-center">
|
||||
<view class="buy">
|
||||
<image src="../../../static/rider/icon-buy.png"></image>
|
||||
</view>
|
||||
<view class="sh_name">
|
||||
{{orderDelites.shopAddressDetail}}({{orderDelites.shopProvince?orderDelites.shopProvince:''}}{{orderDelites.shopCity?orderDelites.shopCity:''}}{{orderDelites.shopDistrict?orderDelites.shopDistrict:''}})
|
||||
<u-icon name="map"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="xs_add">
|
||||
{{orderDelites.shopProvince?orderDelites.shopProvince:''}}{{orderDelites.shopCity?orderDelites.shopCity:''}}
|
||||
{{orderDelites.shopDistrict?orderDelites.shopDistrict:''}}
|
||||
</view> -->
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="jiantou">
|
||||
<image src="../../../static/rider/jiantou.png"></image>
|
||||
<view>{{orderDelites.distance}}</view>
|
||||
</view> -->
|
||||
<view class="box_add">
|
||||
<!-- <view class="distance">
|
||||
<view v-if="orderDelites.distance>1000">{{(Number(orderDelites.distance)/ 1000).toFixed(2)}}</view>
|
||||
<view v-else>{{Number(orderDelites.distance?(orderDelites.distance).toFixed(2):0)}}</view>
|
||||
<view class="a" v-if="orderDelites.distance>1000">km</view>
|
||||
<view class="a" v-else>m</view>
|
||||
<view>{{orderDelites.distancessd}}</view>
|
||||
</view> -->
|
||||
<view class="add_name" @click="goEnd()">
|
||||
<view class="flex align-center">
|
||||
<view class="send">
|
||||
<image src="../../../static/rider/icon-send.png"></image>
|
||||
</view>
|
||||
<view class="sh_name">
|
||||
{{orderDelites.userAddressDetail}}({{orderDelites.userProvince?orderDelites.userProvince:''}}{{orderDelites.userCity?orderDelites.userCity:''}}{{orderDelites.userDistrict?orderDelites.userDistrict:''}})
|
||||
<u-icon name="map"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="part2" v-if="orderDelites.indentType == 3 && orderDelites.buyType==0">
|
||||
<view class="box_add">
|
||||
<!-- <view class="distance">
|
||||
<view v-if="orderDelites.distance>1000">{{(Number(orderDelites.distance)/ 1000).toFixed(2)}}</view>
|
||||
<view v-else>{{Number(orderDelites.distance?(orderDelites.distance).toFixed(2):0)}}</view>
|
||||
<view class="a" v-if="orderDelites.distance>1000">km</view>
|
||||
<view class="a" v-else>m</view>
|
||||
<view>{{orderDelites.distancessd}}</view>
|
||||
</view> -->
|
||||
<view class="add_name flex align-center" @click="goEnd()">
|
||||
<view class="send">
|
||||
<image src="../../../static/rider/icon-send.png"></image>
|
||||
</view>
|
||||
<view class="sh_name">
|
||||
{{orderDelites.userAddressDetail}}({{orderDelites.userProvince?orderDelites.userProvince:''}}{{orderDelites.userCity?orderDelites.userCity:''}}{{orderDelites.userDistrict?orderDelites.userDistrict:''}})
|
||||
<u-icon name="map"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="part2" v-if="orderDelites.indentType == 3 && orderDelites.buyType==1">
|
||||
<view class="box_add">
|
||||
<!-- <view class="distance">
|
||||
<view v-if="orderDelites.distancess>1000">{{(Number(orderDelites.distancess) / 1000).toFixed(2)}}</view>
|
||||
<view v-else>{{Number(orderDelites.distancess?(orderDelites.distancess).toFixed(2):0)}}</view>
|
||||
<view class="a" v-if="orderDelites.distancess>1000">km</view>
|
||||
<view class="a" v-else>m</view>
|
||||
<view>{{orderDelites.distancess}}</view>
|
||||
</view> -->
|
||||
<view class="add_name flex" @click="goStart()">
|
||||
<view class="buy">
|
||||
<image src="../../../static/rider/icon-buy.png"></image>
|
||||
</view>
|
||||
<view class="sh_name">
|
||||
{{orderDelites.shopAddressDetail}}({{orderDelites.shopProvince?orderDelites.shopProvince:''}}{{orderDelites.shopCity?orderDelites.shopCity:''}}{{orderDelites.shopDistrict?orderDelites.shopDistrict:''}})
|
||||
<u-icon name="map"></u-icon>
|
||||
</view>
|
||||
<!-- <view class="xs_add">
|
||||
{{orderDelites.shopProvince?orderDelites.shopProvince:''}}{{orderDelites.shopCity?orderDelites.shopCity:''}}
|
||||
{{orderDelites.shopDistrict?orderDelites.shopDistrict:''}}
|
||||
</view> -->
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="jiantou">
|
||||
<image src="../../../static/rider/jiantou.png"></image>
|
||||
<view>{{orderDelites.distance}}</view>
|
||||
</view> -->
|
||||
<view class="box_add">
|
||||
<!-- <view class="distance">
|
||||
<view v-if="orderDelites.distance>1000">{{(Number(orderDelites.distance)/ 1000).toFixed(2)}}</view>
|
||||
<view v-else>{{Number(item.distance?(item.distance).toFixed(2):0)}}</view>
|
||||
<view class="a" v-if="orderDelites.distance>1000">km</view>
|
||||
<view class="a" v-else>m</view>
|
||||
<view>{{orderDelites.distancessd}}</view>
|
||||
</view> -->
|
||||
<view class="add_name" @click="goEnd()">
|
||||
<view class="flex align-center">
|
||||
<view class="send">
|
||||
<image src="../../../static/rider/icon-send.png"></image>
|
||||
</view>
|
||||
<view class="sh_name">
|
||||
{{orderDelites.userAddressDetail}}({{orderDelites.userProvince?orderDelites.userProvince:''}}{{orderDelites.userCity?orderDelites.userCity:''}}{{orderDelites.userDistrict?orderDelites.userDistrict:''}})
|
||||
<u-icon name="map"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="part2" v-if="orderDelites.indentType == 4">
|
||||
<view class="box_add">
|
||||
<view class="distance">
|
||||
<!-- <view v-if="orderDelites.distancessd>1000">{{(Number(orderDelites.distancessd)/ 1000).toFixed(2)}}</view>
|
||||
<view v-else>{{Number(orderDelites.distancessd?(orderDelites.distancessd).toFixed(2):0)}}</view>
|
||||
<view class="a" v-if="orderDelites.distancessd>1000">km</view>
|
||||
<view class="a" v-else>m</view> -->
|
||||
<!-- <view>{{orderDelites.distancessd}}</view> -->
|
||||
</view>
|
||||
<view class="add_name" @click="goEnd()">
|
||||
<view class="send">
|
||||
<image src="../../../static/rider/icon-send.png"></image>
|
||||
</view>
|
||||
<view class="sh_name">
|
||||
{{orderDelites.userAddressDetail}}({{orderDelites.userProvince?orderDelites.userProvince:''}}{{orderDelites.userCity?orderDelites.userCity:''}}{{orderDelites.userDistrict?orderDelites.userDistrict:''}})
|
||||
<u-icon name="map"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="part2" v-if="orderDelites.indentType == 5">
|
||||
<view class="box_add">
|
||||
<view class="distance">
|
||||
<!-- <view v-if="orderDelites.distancess>1000">{{(Number(orderDelites.distancess) / 1000).toFixed(2)}}</view>
|
||||
<view v-else>{{Number(orderDelites.distancess?(orderDelites.distancess).toFixed(2):0)}}</view>
|
||||
<view class="a" v-if="orderDelites.distancess>1000">km</view>
|
||||
<view class="a" v-else>m</view> -->
|
||||
<view>{{orderDelites.distancess}}</view>
|
||||
</view>
|
||||
<view class="add_name" @click="goStart()">
|
||||
<view class="flex align-center">
|
||||
<view class="buy">
|
||||
<image src="../../../static/rider/icon-buy.png"></image>
|
||||
</view>
|
||||
<view class="sh_name">
|
||||
{{orderDelites.shopAddressDetail}}
|
||||
<u-icon name="map"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
<view class="xs_add">
|
||||
{{orderDelites.shopProvince?orderDelites.shopProvince:''}}{{orderDelites.shopCity?orderDelites.shopCity:''}}
|
||||
{{orderDelites.shopDistrict?orderDelites.shopDistrict:''}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="jiantou">
|
||||
<image src="../../../static/rider/jiantou.png"></image>
|
||||
<!-- <view>{{orderDelites.distance}}</view> -->
|
||||
</view>
|
||||
<view class="box_add">
|
||||
<view class="distance">
|
||||
<!-- <view v-if="orderDelites.distance>1000">{{(Number(orderDelites.distance)/ 1000).toFixed(2)}}</view>
|
||||
<view v-else>{{Number(item.distance?(item.distance).toFixed(2):0)}}</view>
|
||||
<view class="a" v-if="orderDelites.distance>1000">km</view>
|
||||
<view class="a" v-else>m</view> -->
|
||||
<view>{{orderDelites.distancessd}}</view>
|
||||
</view>
|
||||
<view class="add_name" @click="goEnd()">
|
||||
<view class="flex align-center">
|
||||
<view class="send">
|
||||
<image src="../../../static/rider/icon-send.png"></image>
|
||||
</view>
|
||||
<view class="sh_name">
|
||||
{{orderDelites.userAddressDetail}}({{orderDelites.userProvince?orderDelites.userProvince:''}}{{orderDelites.userCity?orderDelites.userCity:''}}{{orderDelites.userDistrict?orderDelites.userDistrict:''}})
|
||||
<u-icon name="map"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- tip -->
|
||||
<view class="tip_box" v-if="orderDelites.indentType != 5">
|
||||
<view class="tip_part1">
|
||||
<view class="tip_title" v-if="orderDelites.indentType == 1">帮送清单</view>
|
||||
<view class="tip_title" v-if="orderDelites.indentType == 2">帮取清单</view>
|
||||
<view class="tip_title" v-if="orderDelites.indentType == 3">帮买清单</view>
|
||||
<view class="tip_title" v-if="orderDelites.indentType == 4">服务内容</view>
|
||||
<view class="tip_rider" v-if="orderDelites.prepayMoney">
|
||||
用户预付:¥<text>{{orderDelites.prepayMoney}}</text>
|
||||
</view>
|
||||
|
||||
<view class="box_two1" v-if="orderDelites.itemType">{{orderDelites.itemType}}</view>
|
||||
<view class="box_two1" v-if="orderDelites.itemValue">{{orderDelites.itemValue}}</view>
|
||||
<view class="box_two1" v-if="orderDelites.itemWeight">{{orderDelites.itemWeight}}</view>
|
||||
</view>
|
||||
<u-line color="#F2F2F2" />
|
||||
<view class="tip_content" v-if="orderDelites.indentType == 3">
|
||||
{{orderDelites.productDetails?orderDelites.productDetails:''}}
|
||||
</view>
|
||||
<view class="tip_content"
|
||||
v-if="orderDelites.indentType == 1 || orderDelites.indentType == 2&&orderDelites.remarks">
|
||||
备注:{{orderDelites.remarks?orderDelites.remarks:''}}</view>
|
||||
<view class="tip_content" v-if="orderDelites.indentType == 4">
|
||||
{{orderDelites.serviceDetails?orderDelites.serviceDetails:''}}
|
||||
</view>
|
||||
</view>
|
||||
<!-- 订单信息 -->
|
||||
<view class="order_box">
|
||||
<view class="order_title">订单信息</view>
|
||||
<view class="order_list">
|
||||
<view class="order_name">订单号码</view>
|
||||
<view class="order_numbers" @click="copyOrder(orderDelites.indentNumber)">{{orderDelites.indentNumber}}
|
||||
<u-icon name="order"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
<view class="order_list">
|
||||
<view class="order_name">送达时间</view>
|
||||
<view class="order_numbers">
|
||||
{{orderDelites.sendOutTime?orderDelites.sendOutTime:'立即配送'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="order_list" v-if="orderDelites.remarks">
|
||||
<view class="order_name">订单备注</view>
|
||||
<view class="order_numbers">
|
||||
{{orderDelites.remarks}}
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="order_list">
|
||||
<view class="order_name">发票抬头</view>
|
||||
<view class="order_numbers">无(不需要发票)</view>
|
||||
</view> -->
|
||||
</view>
|
||||
<!-- 费用明细 -->
|
||||
<view class="order_box">
|
||||
<view class="order_title">费用明细</view>
|
||||
<view class="order_list">
|
||||
<view class="income_name">跑腿费</view>
|
||||
<view class="income_numbers">¥<text>{{orderDelites.errandMoney}}</text></view>
|
||||
</view>
|
||||
<view class="order_list" v-if="orderDelites.tip">
|
||||
<view class="income_name">小费奖励</view>
|
||||
<view class="income_numbers">¥<text>{{orderDelites.tip?orderDelites.tip:0}}</text></view>
|
||||
</view>
|
||||
<view class="order_list" v-if="orderDelites.prepayMoney">
|
||||
<view class="income_name">商品费用</view>
|
||||
<view class="income_numbers1">¥<text>{{orderDelites.prepayMoney}}</text></view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 接单按钮 -->
|
||||
<view class="tabbar_btn">
|
||||
<view class="btn" @click="bindorder">
|
||||
接单
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
orderDelites: {},
|
||||
longitude: '', //骑手起点经度
|
||||
latitude: '', //骑手起点纬度
|
||||
qiJuli: '', //骑手距离
|
||||
dianJuli: '', //店家之间距离
|
||||
checkCertification: '',
|
||||
userId: '',
|
||||
arr: [],
|
||||
showModal: false
|
||||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
uni.showLoading({
|
||||
title: '加载中......',
|
||||
icon: 'none'
|
||||
})
|
||||
console.log(options)
|
||||
this.indentNumber = options.id
|
||||
var that = this
|
||||
uni.getLocation({
|
||||
type: 'wgs84',
|
||||
success: function(res) {
|
||||
console.log('当前位置的经度:' + res.longitude);
|
||||
console.log('当前位置的纬度:' + res.latitude);
|
||||
that.longitude = res.longitude
|
||||
that.latitude = res.latitude
|
||||
that.taskData()
|
||||
}
|
||||
});
|
||||
that.userId = that.$queue.getData("userId");
|
||||
},
|
||||
onShow() {
|
||||
this.checkCertification = this.$queue.getData("checkCertification");
|
||||
// //用户端骑手转单订单通知 335
|
||||
// this.$Request.getT('/app/common/type/335').then(res => {
|
||||
// if (res.code === 0) {
|
||||
// this.arr = [];
|
||||
// this.arr.push(res.data.value)
|
||||
// }
|
||||
// });
|
||||
// #ifdef MP-WEIXIN
|
||||
//订阅
|
||||
// if (this.userId) {
|
||||
// if (this.showModal) {
|
||||
// this.openMsg()
|
||||
// }
|
||||
// }
|
||||
// #endif
|
||||
},
|
||||
methods: {
|
||||
openMsg() {
|
||||
console.log('订阅消息')
|
||||
var that = this
|
||||
uni.getSetting({
|
||||
withSubscriptions: true, //是否获取用户订阅消息的订阅状态,默认false不返回
|
||||
success(ret) {
|
||||
console.log(ret.subscriptionsSetting, '------------------')
|
||||
// if (ret.subscriptionsSetting.itemSettings && Object.keys(ret.subscriptionsSetting.itemSettings).length == 2) {
|
||||
if (ret.subscriptionsSetting.itemSettings) {
|
||||
uni.setStorageSync('sendOrderMsg', true)
|
||||
uni.openSetting({ // 打开设置页
|
||||
success(rea) {
|
||||
console.log(rea.authSetting)
|
||||
}
|
||||
});
|
||||
} else { // 用户没有点击“总是保持以上,不再询问”则每次都会调起订阅消息
|
||||
uni.setStorageSync('sendOrderMsg', false)
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '为了更好的体验,请绑定消息推送',
|
||||
confirmText: '确定',
|
||||
cancelText: '取消',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
wx.requestSubscribeMessage({
|
||||
tmplIds: that.arr,
|
||||
success(re) {
|
||||
var datas = JSON.stringify(re);
|
||||
if (datas.indexOf("accept") != -1) {
|
||||
console.log(re)
|
||||
// uni.setStorageSync('sendMsg', true)
|
||||
}
|
||||
},
|
||||
fail: (res) => {
|
||||
console.log(res)
|
||||
}
|
||||
})
|
||||
// uni.setStorageSync('sendMsg', true)
|
||||
|
||||
that.showModal = false
|
||||
} else if (res.cancel) {
|
||||
console.log('取消')
|
||||
// uni.setStorageSync('sendMsg', false)
|
||||
// that.showModal = true
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
copyOrder(value) {
|
||||
// #ifdef MP-WEIXIN
|
||||
if (uni.getStorageSync('sendOrderMsg')) {
|
||||
uni.requestSubscribeMessage({
|
||||
tmplIds: this.arr,
|
||||
success(re) {
|
||||
// console.log(re,'**********')
|
||||
var datas = JSON.stringify(re);
|
||||
if (datas.indexOf("accept") != -1) {
|
||||
console.log(re)
|
||||
}
|
||||
},
|
||||
fail: (res) => {
|
||||
console.log(res)
|
||||
}
|
||||
})
|
||||
}
|
||||
// #endif
|
||||
uni.setClipboardData({
|
||||
data: value, //要被复制的内容
|
||||
success: () => { //复制成功的回调函数
|
||||
uni.showToast({ //提示
|
||||
title: '复制成功'
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
// 获取任务数据
|
||||
taskData() {
|
||||
this.$Request.postT('/app/tbindent/indentMessage', {
|
||||
indentNumber: this.indentNumber,
|
||||
ol: this.longitude,
|
||||
od: this.latitude
|
||||
}).then(res => {
|
||||
if (res.code == 0) {
|
||||
uni.hideLoading()
|
||||
if (res.data.distancess > 1000) {
|
||||
res.data.distancess = Number((res.data.distancess / 1000)).toFixed(2) + "km"
|
||||
} else {
|
||||
if (res.data.distancess == 0) {
|
||||
res.data.distancess = "0m";
|
||||
} else {
|
||||
res.data.distancess = Number(res.data.distancess).toFixed(1) + "m";
|
||||
}
|
||||
}
|
||||
|
||||
if (res.data.distance > 1000) {
|
||||
res.data.distance = Number((res.data.distance / 1000)).toFixed(2) + "km"
|
||||
} else {
|
||||
res.data
|
||||
if (res.data.distance == 0) {
|
||||
res.data.distance = "0m";
|
||||
} else {
|
||||
res.data.distance = Number(res.data.distance).toFixed(1) + "m";
|
||||
}
|
||||
}
|
||||
|
||||
if (res.data.distancessd > 1000) {
|
||||
res.data.distancessd = Number((res.data.distancessd / 1000)).toFixed(2) + "km"
|
||||
} else {
|
||||
if (res.data.distancessd == 0) {
|
||||
res.data.distancessd = "0m";
|
||||
} else {
|
||||
res.data.distancessd = Number(res.data.distancessd).toFixed(1) + "m";
|
||||
}
|
||||
}
|
||||
|
||||
this.orderDelites = res.data
|
||||
} else {
|
||||
console.log('失败:', res.data)
|
||||
}
|
||||
|
||||
});
|
||||
},
|
||||
bindorder() {
|
||||
let that = this
|
||||
if (!that.userId) {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '请先登录后再接单',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
console.log('用户点击确定');
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
console.log('用户点击取消');
|
||||
}
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
// #ifdef MP-WEIXIN
|
||||
if (uni.getStorageSync('sendOrderMsg')) {
|
||||
uni.requestSubscribeMessage({
|
||||
tmplIds: this.arr,
|
||||
success(re) {
|
||||
// console.log(re,'**********')
|
||||
var datas = JSON.stringify(re);
|
||||
if (datas.indexOf("accept") != -1) {
|
||||
console.log(re)
|
||||
}
|
||||
},
|
||||
fail: (res) => {
|
||||
console.log(res)
|
||||
}
|
||||
})
|
||||
}
|
||||
// #endif
|
||||
if (that.checkCertification == null) {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '请先实名认证后再接单',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
console.log('用户点击确定');
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/approve/approve'
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
console.log('用户点击取消');
|
||||
}
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (that.checkCertification == 0) {
|
||||
uni.showToast({
|
||||
title: '实名认证审核中,无法接单',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (that.checkCertification == 2) {
|
||||
uni.showToast({
|
||||
title: '实名认证未通过,无法接单',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '确认接单吗',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
console.log('用户点击确定');
|
||||
that.$Request.postT('/app/tbindent/indentReceiving', {
|
||||
indentNumber: that.indentNumber
|
||||
}).then(res => {
|
||||
if (res.code == 0) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/index/orderdetail/orderdetail?id=' + that
|
||||
.indentNumber
|
||||
})
|
||||
} else {
|
||||
console.log('失败:', res.data)
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: 'none',
|
||||
duration: 1500
|
||||
});
|
||||
setTimeout(()=>{
|
||||
uni.reLaunch({
|
||||
url:'/pages/index/index'
|
||||
})
|
||||
},1500)
|
||||
}
|
||||
});
|
||||
} else if (res.cancel) {
|
||||
console.log('用户点击取消');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
// 计算两点之间的距离
|
||||
jsjl(qj, qw, jj, jw) {
|
||||
this.$Request.postT('/app/indent/findNewIndent', {
|
||||
ol: qj,
|
||||
od: qw,
|
||||
dl: jj,
|
||||
dd: jw
|
||||
}).then(res => {
|
||||
// if(){
|
||||
|
||||
// }
|
||||
});
|
||||
},
|
||||
goStart() {
|
||||
// let obj = {
|
||||
// name: this.orderDelites.shopAddressDetail,
|
||||
// lat: this.orderDelites.shopLat,
|
||||
// long: this.orderDelites.shopLng,
|
||||
// }
|
||||
// this.navgate(obj)
|
||||
// 一键导航
|
||||
let latitude = this.orderDelites.shopLat
|
||||
let longitude = this.orderDelites.shopLng
|
||||
let name = this.orderDelites.shopAddressDetail
|
||||
uni.openLocation({
|
||||
latitude: Number(latitude), //要去的纬度-地址
|
||||
longitude: Number(longitude), //要去的经度-地址
|
||||
name: name, //地址名称
|
||||
address: name, //详细地址名称
|
||||
success: function() {
|
||||
console.log('导航成功');
|
||||
},
|
||||
fail: function(error) {
|
||||
console.log(error)
|
||||
}
|
||||
})
|
||||
},
|
||||
goEnd() {
|
||||
// let obj = {
|
||||
// name: this.orderDelites.userAddressDetail,
|
||||
// lat: this.orderDelites.userLat,
|
||||
// long: this.orderDelites.userLng,
|
||||
// }
|
||||
// this.navgate(obj)
|
||||
|
||||
let latitude = this.orderDelites.userLat
|
||||
let longitude = this.orderDelites.userLng
|
||||
let name = this.orderDelites.userAddressDetail
|
||||
uni.openLocation({
|
||||
latitude: Number(latitude), //要去的纬度-地址
|
||||
longitude: Number(longitude), //要去的经度-地址
|
||||
name: name, //地址名称
|
||||
address: name, //详细地址名称
|
||||
success: function() {
|
||||
console.log('导航成功');
|
||||
},
|
||||
fail: function(error) {
|
||||
console.log(error)
|
||||
}
|
||||
})
|
||||
},
|
||||
navgate(e) {
|
||||
|
||||
let plugin = requirePlugin('routePlan');
|
||||
let key = this.$queue.getData('mapKey'); //使用在腾讯位置服务申请的key
|
||||
let referer = this.$queue.getData('mapName'); //调用插件的app的名称
|
||||
|
||||
let endPoint = JSON.stringify({ //终点
|
||||
'name': e.name,
|
||||
'latitude': e.lat,
|
||||
'longitude': e.long
|
||||
});
|
||||
wx.navigateTo({
|
||||
url: 'plugin://routePlan/index?key=' + key + '&referer=' + referer + '&endPoint=' + endPoint
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
background: #F5F5F5;
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 100%;
|
||||
margin-bottom: 159rpx;
|
||||
}
|
||||
|
||||
.list_box1 {
|
||||
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
/* height: 320rpx; */
|
||||
background: #FFFFFF;
|
||||
border-radius: 23rpx;
|
||||
box-shadow: 0rpx 5rpx 5rpx 0rpx rgba(198, 186, 181, 0.20);
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
.part2 {
|
||||
width: 92%;
|
||||
margin: 0 auto;
|
||||
padding: 25rpx 0;
|
||||
}
|
||||
|
||||
.box_add {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.box_two1 {
|
||||
background: #c4e2ff;
|
||||
color: #359CFF;
|
||||
width: 72px;
|
||||
height: 45rpx;
|
||||
font-size: 22rpx;
|
||||
text-align: center;
|
||||
line-height: 45rpx;
|
||||
border-radius: 5rpx;
|
||||
margin-top: 20rpx;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
.distance {
|
||||
flex: 1;
|
||||
/* text-align: center; */
|
||||
font-size: 28rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: left;
|
||||
}
|
||||
|
||||
.a {
|
||||
font-size: 16rpx;
|
||||
}
|
||||
|
||||
.add_name {
|
||||
flex: 8;
|
||||
position: relative;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
.buy {
|
||||
/* position: absolute;
|
||||
top: 0rpx; */
|
||||
}
|
||||
|
||||
.buy image {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.send {
|
||||
/* position: absolute;
|
||||
top: 0rpx; */
|
||||
}
|
||||
|
||||
.send image {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.sh_name {
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
/* text-indent: 15rpx; */
|
||||
margin-left: 8upx;
|
||||
}
|
||||
|
||||
.xs_add {
|
||||
color: #999999;
|
||||
font-size: 24rpx;
|
||||
margin-top: 10rpx;
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
.jiantou {
|
||||
margin-left: 23rpx;
|
||||
display: flex;
|
||||
/* justify-content: space-between; */
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.jiantou image {
|
||||
width: 20rpx;
|
||||
height: 40rpx;
|
||||
}
|
||||
|
||||
.jiantou>view {
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
.part3 {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.three_left {
|
||||
flex: 1;
|
||||
height: 100rpx;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.three_left image {
|
||||
width: 36rpx;
|
||||
height: 37rpx;
|
||||
}
|
||||
|
||||
.three_left text {
|
||||
color: #333333;
|
||||
font-size: 25rpx;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
.three_right {
|
||||
flex: 1;
|
||||
height: 100rpx;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
color: #FF412D;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* tip */
|
||||
.tip_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
/* height: 180rpx; */
|
||||
background: #FFFFFF;
|
||||
margin-top: 20rpx;
|
||||
border-radius: 22rpx;
|
||||
}
|
||||
|
||||
.tip_part1 {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.tip_title {
|
||||
/* flex: 1; */
|
||||
height: 80rpx;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
margin-left: 30rpx;
|
||||
}
|
||||
|
||||
.tip_rider {
|
||||
/* flex: 1; */
|
||||
font-size: 20rpx;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
margin-left: 30rpx;
|
||||
}
|
||||
|
||||
.tip_rider text {
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
.tip_content {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
font-size: 27rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
margin-top: 15rpx;
|
||||
padding-bottom: 15rpx;
|
||||
}
|
||||
|
||||
.u-line {
|
||||
border-bottom-width: 3px !important;
|
||||
}
|
||||
|
||||
/* 订单信息 */
|
||||
.order_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
/* height: 300rpx; */
|
||||
background: #ffffff;
|
||||
margin-top: 20rpx;
|
||||
border-radius: 22rpx;
|
||||
}
|
||||
|
||||
.order_title {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
line-height: 67rpx;
|
||||
letter-spacing: 3rpx;
|
||||
}
|
||||
|
||||
.order_list {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.order_name {
|
||||
flex: 1;
|
||||
margin-left: 35rpx;
|
||||
color: #999999;
|
||||
font-size: 25rpx;
|
||||
height: 75rpx;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.order_numbers {
|
||||
flex: 1;
|
||||
color: #333333;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
font-size: 26rpx;
|
||||
margin-right: 35rpx;
|
||||
}
|
||||
|
||||
/* 费用明细 */
|
||||
.income_name {
|
||||
flex: 1;
|
||||
margin-left: 35rpx;
|
||||
color: #999999;
|
||||
font-size: 26rpx;
|
||||
height: 75rpx;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.income_numbers {
|
||||
flex: 1;
|
||||
color: #333333;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
font-size: 26rpx;
|
||||
margin-right: 35rpx;
|
||||
}
|
||||
|
||||
.income_numbers1 {
|
||||
flex: 1;
|
||||
color: #FF2400;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
font-size: 26rpx;
|
||||
margin-right: 35rpx;
|
||||
}
|
||||
|
||||
/* 接单按钮 */
|
||||
.tabbar_btn {
|
||||
position: fixed;
|
||||
bottom: 0rpx;
|
||||
left: 0rpx;
|
||||
right: 0rpx;
|
||||
width: 100%;
|
||||
height: 120rpx;
|
||||
background: #FFFFFF;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.btn {
|
||||
width: 90%;
|
||||
height: 80rpx;
|
||||
background: #FF7F00;
|
||||
border-radius: 21rpx;
|
||||
color: white;
|
||||
text-align: center;
|
||||
line-height: 80rpx;
|
||||
font-size: 26rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,506 @@
|
|||
<template>
|
||||
<view class="content">
|
||||
<view class="part2 u-skeleton-fillet">
|
||||
<view class="box_add">
|
||||
<!-- <view class="distance">
|
||||
<view>{{orderDelites.distancessd}}</view>
|
||||
</view> -->
|
||||
<view class="add_name" @click="goStart">
|
||||
<view class="sh_name">
|
||||
{{orderDelites.userAddressDetail}}({{orderDelites.userProvince}}{{orderDelites.userCity}}{{orderDelites.userDistrict}})
|
||||
<u-icon name="map"></u-icon>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
<u-line color="#F2F2F2" />
|
||||
<view class="part3">
|
||||
<view class="three_left">
|
||||
<image src="../../../static/rider/icon_data.png"></image>
|
||||
<text>{{orderDelites.sendOutTime}}</text>
|
||||
</view>
|
||||
<!-- <view class="three_right">¥{{orderDelites.errandMoney}}</view> -->
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- tip -->
|
||||
<view class="tip_box u-skeleton-fillet">
|
||||
<view class="tip_part1">
|
||||
<view class="box_two" v-if="orderDelites.indentType==4">同城服务</view>
|
||||
<view class="box_two" v-if="orderDelites.indentType==3">同城帮买</view>
|
||||
<view class="box_one" v-if='orderDelites.serviceType'>{{orderDelites.serviceType}}</view>
|
||||
<view class="box_one" v-if='orderDelites.tool'>{{orderDelites.tool}}</view>
|
||||
</view>
|
||||
<u-line color="#F2F2F2" />
|
||||
<view class="tip_content" v-if="orderDelites.indentType==3">
|
||||
{{orderDelites.remarks}}
|
||||
</view>
|
||||
<view class="tip_content" v-if="orderDelites.indentType==4">
|
||||
{{orderDelites.serviceDetails}}
|
||||
</view>
|
||||
</view>
|
||||
<!-- 订单信息 -->
|
||||
<view class="order_box u-skeleton-fillet">
|
||||
<view class="order_title">订单信息</view>
|
||||
<view class="order_list">
|
||||
<view class="order_name">订单号码</view>
|
||||
<view class="order_numbers" @click="copyOrder(orderDelites.indentNumber)">{{orderDelites.indentNumber}}
|
||||
<u-icon name="order"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
<view class="order_list">
|
||||
<view class="order_name">预约时间</view>
|
||||
<view class="order_numbers">{{orderDelites.sendOutTime}}</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<!-- 费用明细 -->
|
||||
<view class="order_box u-skeleton-fillet">
|
||||
<view class="order_title">费用明细</view>
|
||||
<view class="order_list">
|
||||
<view class="income_name">跑腿费</view>
|
||||
<view class="income_numbers">¥<text>{{orderDelites.errandMoney}}</text></view>
|
||||
</view>
|
||||
<view class="order_list" v-if="orderDelites.tip">
|
||||
<view class="income_name">小费奖励</view>
|
||||
<view class="income_numbers">¥<text>{{orderDelites.tip}}</text></view>
|
||||
</view>
|
||||
<view class="order_list" v-if="orderDelites.prepayMoney">
|
||||
<view class="income_name">商品预付</view>
|
||||
<view class="income_numbers">¥<text>{{orderDelites.prepayMoney}}</text></view>
|
||||
</view>
|
||||
<view class="order_list">
|
||||
<view class="income_name">合计</view>
|
||||
<view class="income_numbers1">¥<text>{{orderDelites.riderMoney}}</text></view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 接单按钮 -->
|
||||
<view class="tabbar_btn">
|
||||
<view class="btn" @click="bindorder">接单</view>
|
||||
</view>
|
||||
<u-skeleton :loading="loading" :animation="true" bgColor="#FFF"></u-skeleton>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
orderDelites: {},
|
||||
indentNumber: '',
|
||||
checkCertification: '',
|
||||
userId: '',
|
||||
loading: true, // 是否显示骨架屏组件
|
||||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
console.log(options)
|
||||
this.indentNumber = options.id
|
||||
var that = this
|
||||
uni.getLocation({
|
||||
type: 'wgs84',
|
||||
success: function(res) {
|
||||
console.log('当前位置的经度:' + res.longitude);
|
||||
console.log('当前位置的纬度:' + res.latitude);
|
||||
that.longitude = res.longitude
|
||||
that.latitude = res.latitude
|
||||
that.taskData()
|
||||
}
|
||||
});
|
||||
this.userId = that.$queue.getData("userId");
|
||||
this.checkCertification = that.$queue.getData("checkCertification");
|
||||
},
|
||||
methods: {
|
||||
copyOrder(value) {
|
||||
uni.setClipboardData({
|
||||
data: value, //要被复制的内容
|
||||
success: () => { //复制成功的回调函数
|
||||
uni.showToast({ //提示
|
||||
title: '复制成功'
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
goStart() {
|
||||
// let obj = {
|
||||
// name: this.orderDelites.deilveryAddressDetail,
|
||||
// lat: this.orderDelites.userLat,
|
||||
// long: this.orderDelites.userLng,
|
||||
// }
|
||||
// this.navgate(obj)
|
||||
let latitude = this.orderDelites.userLat
|
||||
let longitude = this.orderDelites.userLng
|
||||
let name = this.orderDelites.userAddressDetail
|
||||
uni.openLocation({
|
||||
latitude: Number(latitude), //要去的纬度-地址
|
||||
longitude: Number(longitude), //要去的经度-地址
|
||||
name: name, //地址名称
|
||||
address: name, //详细地址名称
|
||||
success: function() {
|
||||
console.log('导航成功');
|
||||
},
|
||||
fail: function(error) {
|
||||
console.log(error)
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
navgate(e) {
|
||||
let plugin = requirePlugin('routePlan');
|
||||
let key = this.$queue.getData('mapKey'); //使用在腾讯位置服务申请的key
|
||||
let referer = this.$queue.getData('mapName'); //调用插件的app的名称
|
||||
|
||||
let endPoint = JSON.stringify({ //终点
|
||||
'name': e.name,
|
||||
'latitude': e.lat,
|
||||
'longitude': e.long
|
||||
});
|
||||
wx.navigateTo({
|
||||
url: 'plugin://routePlan/index?key=' + key + '&referer=' + referer + '&endPoint=' + endPoint
|
||||
});
|
||||
},
|
||||
// 获取任务数据
|
||||
taskData() {
|
||||
this.$Request.postT('/app/tbindent/indentMessage', {
|
||||
indentNumber: this.indentNumber,
|
||||
ol: this.longitude,
|
||||
od: this.latitude
|
||||
}).then(res => {
|
||||
if (res.code == 0) {
|
||||
if (res.data.distancessd > 1000) {
|
||||
res.data.distancessd = Number((res.data.distancessd / 1000)).toFixed(2) + "km"
|
||||
} else {
|
||||
if (res.data.distancessd == 0) {
|
||||
res.data.distancessd = "0m";
|
||||
} else {
|
||||
res.data.distancessd = Number(res.data.distancessd).toFixed(1) + "m";
|
||||
}
|
||||
}
|
||||
this.orderDelites = res.data
|
||||
|
||||
} else {
|
||||
console.log('res', res.data)
|
||||
}
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
bindorder() {
|
||||
let that = this
|
||||
if (!that.userId) {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '请先登录后再接单',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
console.log('用户点击确定');
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
console.log('用户点击取消');
|
||||
}
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (that.checkCertification != 1) {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '请先实名认证后再接单',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
console.log('用户点击确定');
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/approve/approve'
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
console.log('用户点击取消');
|
||||
}
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '确认接单吗',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
console.log('用户点击确定');
|
||||
that.$Request.postT('/app/tbindent/indentReceiving', {
|
||||
indentNumber: that.indentNumber
|
||||
}).then(res => {
|
||||
if (res.code == 0) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/index/orderdetail/orderdetail?id=' + that
|
||||
.indentNumber
|
||||
})
|
||||
} else {
|
||||
console.log('失败:', res.data)
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: 'none',
|
||||
duration: 1500
|
||||
});
|
||||
}
|
||||
});
|
||||
} else if (res.cancel) {
|
||||
console.log('用户点击取消');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
background: #F5F5F5;
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 100%;
|
||||
padding-bottom: 180rpx;
|
||||
}
|
||||
|
||||
.part2 {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
/* padding-top: 25rpx; */
|
||||
/* height: 230rpx; */
|
||||
background: #ffffff;
|
||||
border-radius: 23rpx;
|
||||
/* box-shadow: 0rpx 5rpx 5rpx 0rpx rgba(198, 186, 181, 0.20); */
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
|
||||
.box_add {
|
||||
display: flex;
|
||||
/* height: 100rpx; */
|
||||
/* line-height: 31rpx; */
|
||||
padding: 15px 17px;
|
||||
}
|
||||
|
||||
.distance {
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
font-size: 28rpx;
|
||||
margin-top: 15rpx;
|
||||
}
|
||||
|
||||
.a {
|
||||
font-size: 16rpx;
|
||||
}
|
||||
|
||||
.add_name {
|
||||
flex: 4;
|
||||
}
|
||||
|
||||
|
||||
.sh_name {
|
||||
font-size: 28rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.xs_add {
|
||||
color: #999999;
|
||||
font-size: 24rpx;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
|
||||
.u-line {
|
||||
border-bottom-width: 3px !important;
|
||||
}
|
||||
|
||||
.part3 {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.three_left {
|
||||
flex: 1;
|
||||
height: 100rpx;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.three_left image {
|
||||
width: 36rpx;
|
||||
height: 37rpx;
|
||||
}
|
||||
|
||||
.three_left text {
|
||||
color: #333333;
|
||||
font-size: 25rpx;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
.three_right {
|
||||
flex: 1;
|
||||
height: 100rpx;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
color: #FF412D;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* tip */
|
||||
.tip_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
height: 180rpx;
|
||||
background: #FFFFFF;
|
||||
margin-top: 20rpx;
|
||||
border-radius: 22rpx;
|
||||
}
|
||||
|
||||
.tip_part1 {
|
||||
display: flex;
|
||||
height: 70rpx;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
margin-left: 30rpx;
|
||||
|
||||
}
|
||||
|
||||
.box_one {
|
||||
background: #c4e2ff;
|
||||
color: #359CFF;
|
||||
height: 45rpx;
|
||||
font-size: 22rpx;
|
||||
text-align: center;
|
||||
line-height: 45rpx;
|
||||
border-radius: 5rpx;
|
||||
margin-left: 20rpx;
|
||||
padding: 0 10rpx
|
||||
}
|
||||
|
||||
.box_two {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 3rpx;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
.tip_content {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
font-size: 29rpx;
|
||||
/* font-weight: bold; */
|
||||
letter-spacing: 2rpx;
|
||||
margin-top: 15rpx;
|
||||
}
|
||||
|
||||
.u-line {
|
||||
border-bottom-width: 3px !important;
|
||||
}
|
||||
|
||||
/* 订单信息 */
|
||||
.order_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
/* height: 300rpx; */
|
||||
padding-bottom: 10upx;
|
||||
background: #ffffff;
|
||||
margin-top: 20rpx;
|
||||
border-radius: 22rpx;
|
||||
}
|
||||
|
||||
.order_title {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
line-height: 67rpx;
|
||||
letter-spacing: 3rpx;
|
||||
}
|
||||
|
||||
.order_list {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.order_name {
|
||||
flex: 1;
|
||||
margin-left: 35rpx;
|
||||
color: #999999;
|
||||
font-size: 25rpx;
|
||||
height: 75rpx;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.order_numbers {
|
||||
flex: 1;
|
||||
color: #333333;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
font-size: 26rpx;
|
||||
margin-right: 35rpx;
|
||||
}
|
||||
|
||||
/* 费用明细 */
|
||||
.income_name {
|
||||
flex: 1;
|
||||
margin-left: 35rpx;
|
||||
color: #999999;
|
||||
font-size: 26rpx;
|
||||
height: 75rpx;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.income_numbers {
|
||||
flex: 1;
|
||||
color: #333333;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
font-size: 26rpx;
|
||||
margin-right: 35rpx;
|
||||
}
|
||||
|
||||
.income_numbers1 {
|
||||
flex: 1;
|
||||
color: #FF2400;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
font-size: 26rpx;
|
||||
margin-right: 35rpx;
|
||||
}
|
||||
|
||||
/* 接单按钮 */
|
||||
.tabbar_btn {
|
||||
position: fixed;
|
||||
bottom: 0rpx;
|
||||
left: 0rpx;
|
||||
right: 0rpx;
|
||||
width: 100%;
|
||||
height: 120rpx;
|
||||
background: #FFFFFF;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.btn {
|
||||
width: 90%;
|
||||
height: 80rpx;
|
||||
background: #FF7F00;
|
||||
border-radius: 21rpx;
|
||||
color: white;
|
||||
text-align: center;
|
||||
line-height: 80rpx;
|
||||
font-size: 26rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,152 @@
|
|||
<template>
|
||||
<view>
|
||||
<map id="tencentMap" :style="[...mapStyle]" :show-compass="showCompass" :enable-traffic="enableTraffic"
|
||||
:longitude="longitude" :latitude="latitude" :markers="markers" :show-location="showLocation"
|
||||
@markertap="markertap"></map>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
mapStyle: {
|
||||
type: Object,
|
||||
default: {
|
||||
width: '100%',
|
||||
height: '600rpx'
|
||||
}
|
||||
},
|
||||
showCompass: { // 是否显示指南针
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
enableTraffic: { // 是否开启实时路况
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
showLocation: { // 是否显示带有方向的当前定位点
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
longitude: '118.72495',
|
||||
latitude: '32.00834',
|
||||
markers: [],
|
||||
}
|
||||
},
|
||||
onReady() {
|
||||
let vm = this
|
||||
vm.map = uni.createMapContext('tencentMap', this)
|
||||
vm.getLocation()
|
||||
},
|
||||
onReady() {
|
||||
// wx请求获取位置权限
|
||||
this.getAuthorize().then(() => {
|
||||
// 同意后获取
|
||||
this.getLocationInfo();
|
||||
}).catch(() => {
|
||||
// 不同意给出弹框,再次确认
|
||||
this.openConfirm().then(() => {
|
||||
this.getLocationInfo();
|
||||
}).catch(() => {
|
||||
this.rejectGetLocation();
|
||||
});
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
// 初次位置授权
|
||||
getAuthorize() {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.authorize({
|
||||
scope: "scope.userLocation",
|
||||
success: () => {
|
||||
resolve(); // 允许授权
|
||||
},
|
||||
fail: () => {
|
||||
reject(); // 拒绝授权
|
||||
},
|
||||
});
|
||||
});
|
||||
},
|
||||
// 确认授权后,获取用户位置
|
||||
getLocationInfo() {
|
||||
const that = this;
|
||||
uni.getLocation({
|
||||
type: "gcj02",
|
||||
success: function(res) {
|
||||
that.longitude = res.longitude;
|
||||
that.latitude = res.latitude;
|
||||
that.markers = [{
|
||||
id: 2,
|
||||
latitude: 32.00834,
|
||||
longitude: 118.72495,
|
||||
callout: {
|
||||
content: '奥林皮克体育中心',
|
||||
color: '#000',
|
||||
fontSize: 10,
|
||||
bgColor: '#fff',
|
||||
padding: 5,
|
||||
display: 'ALWAYS',
|
||||
textAlign: 'center'
|
||||
}
|
||||
}, ]
|
||||
}
|
||||
});
|
||||
},
|
||||
// 拒绝授权后,弹框提示是否手动打开位置授权
|
||||
openConfirm() {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.showModal({
|
||||
title: "请求授权当前位置",
|
||||
content: "我们需要获取地理位置信息,为您推荐附近的商家",
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
uni.openSetting().then((res) => {
|
||||
if (res[1].authSetting["scope.userLocation"] === true) {
|
||||
resolve(); // 打开地图权限设置
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
});
|
||||
} else if (res.cancel) {
|
||||
reject();
|
||||
}
|
||||
},
|
||||
});
|
||||
});
|
||||
},
|
||||
// 彻底拒绝位置获取
|
||||
rejectGetLocation() {
|
||||
uni.showToast({
|
||||
title: "您拒绝了授权,无法获得周边信息",
|
||||
icon: "none",
|
||||
duration: 2000,
|
||||
});
|
||||
},
|
||||
// 地图标点 点击事件
|
||||
markertap(e) {
|
||||
let plugin = requirePlugin('routePlan');
|
||||
let key = '5ZKBZ-W3TCU-LSDVC-4XJLB-KQOYO-TVBQ6'; // 使用在腾讯位置服务申请的key
|
||||
let referer = 'test'; // 调用插件的app的名称
|
||||
let navigation = 1 // 值为1时,开启驾车导航功能;默认不开启此功能
|
||||
let endPoint = JSON.stringify({ // 终点
|
||||
'name': '奥林皮克体育中心',
|
||||
'latitude': 32.00834,
|
||||
'longitude': 118.72495
|
||||
});
|
||||
wx.navigateTo({
|
||||
url: 'plugin://routePlan/index?key=' + key + '&referer=' + referer + '&endPoint=' + endPoint +
|
||||
'&navigation=' + navigation
|
||||
});
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
|
|
@ -0,0 +1,976 @@
|
|||
<template>
|
||||
<view class="content">
|
||||
<view class="part_one u-skeleton-fillet" v-if="orderDelites.indentState=='3' || orderDelites.indentState=='4'">
|
||||
<view class="pickup" v-if="orderDelites.indentState=='3'">待取货...</view>
|
||||
<view class="pickup" v-if="orderDelites.indentState=='4'">配送中...</view>
|
||||
<view class="pickup_tit" v-if="orderDelites.indentState=='3'">抢单成功请及时取货送达</view>
|
||||
<view class="pickup_tit" v-if="orderDelites.indentState=='4'">取货成功请及时送达</view>
|
||||
</view>
|
||||
|
||||
<view class="part_one u-skeleton-fillet" v-else>
|
||||
|
||||
<view class="pickup" v-if="orderDelites.indentState=='5'">已完成...</view>
|
||||
<view class="pickup" v-if="orderDelites.indentState=='6'">已完成...</view>
|
||||
<view class="pickup" v-if="orderDelites.indentState=='7'">已完成...</view>
|
||||
<view class="pickup" v-if="orderDelites.indentState=='9'">已取消...</view>
|
||||
<view class="pickup" v-if="orderDelites.indentState=='10'">已取消...</view>
|
||||
<view class="pickup_tit">加油明天会更好!</view>
|
||||
|
||||
</view>
|
||||
<view class="part_one u-skeleton-fillet" style="height: auto;"
|
||||
v-if="orderDelites.indentState=='3'|| orderDelites.indentState=='4' && orderDelites.indentType=='5'&& orderDelites.indentType!='3'">
|
||||
<view class="pickup">取货码</view>
|
||||
<view class="pickup_tit quhuoma">{{orderDelites.orderCode}}</view>
|
||||
</view>
|
||||
<view class="list_box1 u-skeleton-fillet">
|
||||
<view class="part2">
|
||||
<view class="box_add" style="padding-bottom: 12px;"
|
||||
v-if="orderDelites.indentType == 5||orderDelites.indentType == 1 || orderDelites.indentType == 2 || (orderDelites.indentType==3 &&orderDelites.buyType==1)">
|
||||
<view class="add_name">
|
||||
<view class="flex">
|
||||
<view class="buy">
|
||||
<image src="../../../static/rider/icon-buy.png"></image>
|
||||
</view>
|
||||
<view class="sh_name" @click="goStart()">
|
||||
{{orderDelites.shopAddressDetail}}
|
||||
<u-icon name="map"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
<view class="xs_add" @click="coll(orderDelites.shopPhone)">
|
||||
{{orderDelites.shopName?orderDelites.shopName:''}}<text
|
||||
style="margin-left: 10upx;">{{orderDelites.shopPhone?orderDelites.shopPhone:''}}</text>
|
||||
<u-icon name="phone"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="box_add">
|
||||
<view class="add_name">
|
||||
<view class="flex">
|
||||
<view class="send">
|
||||
<image src="../../../static/rider/icon-send.png"></image>
|
||||
</view>
|
||||
<view class="sh_name" @click="goEnd()">
|
||||
{{orderDelites.userAddressDetail}}({{orderDelites.userProvince?orderDelites.userProvince:''}}
|
||||
{{orderDelites.userCity?orderDelites.userCity:''}}{{orderDelites.userDistrict?orderDelites.userDistrict:''}})
|
||||
<u-icon name="map"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="xs_add" @click="coll(orderDelites.userPhone)">
|
||||
{{orderDelites.userName?orderDelites.userName:''}}<text
|
||||
style="margin-left: 10upx;">{{orderDelites.userPhone?orderDelites.userPhone:''}}</text>
|
||||
<u-icon name="phone"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="orderDelites.indentType == 5" style="padding-bottom: 15px;"></view>
|
||||
<view class="part3" v-if="orderDelites.indentType != 5">
|
||||
<view class="three_left" v-if="orderDelites.predictTime">
|
||||
<image src="../../../static/rider/icon_data.png"></image>
|
||||
<text>{{orderDelites.predictTime}}分钟内送达</text>
|
||||
</view>
|
||||
<view class="three_right">{{orderDelites.errandMoney}}元</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- tip -->
|
||||
<view class="tip_box u-skeleton-fillet" v-if="orderDelites.indentType != 5">
|
||||
<view class="tip_part1">
|
||||
<view class="tip_title" v-if="orderDelites.indentType == 1">帮送清单</view>
|
||||
<view class="tip_title" v-if="orderDelites.indentType == 2">帮取清单</view>
|
||||
<view class="tip_title" v-if="orderDelites.indentType == 3">帮买清单</view>
|
||||
<view class="tip_title" v-if="orderDelites.indentType == 4">服务内容</view>
|
||||
<view class="tip_rider" v-if="orderDelites.prepayMoney" style="margin-right: 16upx;">
|
||||
商品预付:¥<text>{{orderDelites.prepayMoney}}</text>
|
||||
</view>
|
||||
<view class="box_two1" v-if="orderDelites.itemType">{{orderDelites.itemType}}</view>
|
||||
<view class="box_two1" v-if="orderDelites.serviceType">{{orderDelites.serviceType}}</view>
|
||||
<view class="box_two1" v-if="orderDelites.itemValue">{{orderDelites.itemValue}}</view>
|
||||
<view class="box_two1" v-if="orderDelites.itemWeight">{{orderDelites.itemWeight}}</view>
|
||||
</view>
|
||||
<u-line color="#F2F2F2" />
|
||||
<view class="tip_content" v-if="orderDelites.indentType == 3">
|
||||
{{orderDelites.productDetails?orderDelites.productDetails:''}}
|
||||
</view>
|
||||
<view class="tip_content" v-if="orderDelites.indentType == 1 || orderDelites.indentType == 2">
|
||||
{{orderDelites.remarks?orderDelites.remarks:''}}
|
||||
</view>
|
||||
<view class="tip_content" v-if="orderDelites.indentType == 4">
|
||||
{{orderDelites.serviceDetails?orderDelites.serviceDetails:''}}
|
||||
</view>
|
||||
</view>
|
||||
<!-- 订单信息 -->
|
||||
<view class="order_box u-skeleton-fillet">
|
||||
<view class="order_title">订单信息</view>
|
||||
<view class="order_list">
|
||||
<view class="order_name">订单号码</view>
|
||||
<view class="order_numbers" @click="copyOrder(orderDelites.indentNumber)">{{orderDelites.indentNumber}}
|
||||
<u-icon name="order"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
<view class="order_list">
|
||||
<view class="order_name">发布时间</view>
|
||||
<view class="order_numbers">{{orderDelites.createTime}}
|
||||
|
||||
</view>
|
||||
</view>
|
||||
<view class="order_list">
|
||||
<view class="order_name">接单时间</view>
|
||||
<view class="order_numbers">{{orderDelites.receivingTime}}
|
||||
|
||||
</view>
|
||||
</view>
|
||||
<view class="order_list" v-if="orderDelites.finishTime">
|
||||
<view class="order_name">完成时间</view>
|
||||
<view class="order_numbers">{{orderDelites.finishTime}}
|
||||
|
||||
</view>
|
||||
</view>
|
||||
<view class="order_list padding-bottom-sm" v-if="orderDelites.remarks">
|
||||
<view class="order_name">订单备注</view>
|
||||
<view class="order_numbers">{{orderDelites.remarks}}
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="order_list">
|
||||
<view class="order_name">发票抬头</view>
|
||||
<view class="order_numbers">无(不需要发票)</view>
|
||||
</view> -->
|
||||
</view>
|
||||
<!-- 费用明细 -->
|
||||
<view class="order_box u-skeleton-fillet">
|
||||
<view class="order_title">费用明细</view>
|
||||
<view class="order_list">
|
||||
<view class="income_name">跑腿费</view>
|
||||
<view class="income_numbers">¥<text>{{orderDelites.errandMoney}}</text></view>
|
||||
</view>
|
||||
<view class="order_list" v-if="orderDelites.tip">
|
||||
<view class="income_name">小费奖励</view>
|
||||
<view class="income_numbers">¥<text>{{orderDelites.tip?orderDelites.tip:'0'}}</text></view>
|
||||
</view>
|
||||
<view class="order_list" v-if="orderDelites.prepayMoney">
|
||||
<view class="income_name">商品费用</view>
|
||||
<view class="income_numbers1">¥<text>{{orderDelites.prepayMoney}}</text></view>
|
||||
</view>
|
||||
<view class="order_list">
|
||||
<view class="income_name">合计</view>
|
||||
<view class="income_numbers1">¥<text>{{orderDelites.riderMoney}}</text></view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 接单按钮 -->
|
||||
<view class="tabbar_btn"
|
||||
v-if="orderDelites.indentState=='3'||orderDelites.indentState=='4'||orderDelites.indentState=='5'">
|
||||
<!-- <view class="btn_left">
|
||||
联系TA
|
||||
</view>
|
||||
<view class="btn_right" @click="onshow">
|
||||
确定送达
|
||||
</view> -->
|
||||
<view class="btn_right" @click="quhuo(orderDelites.indentId)" v-if="orderDelites.indentState=='3'">确认取货
|
||||
</view>
|
||||
<view class="btn_left" @click="zhuanOrder(orderDelites.indentId)" v-if="orderDelites.indentState=='3'">
|
||||
转单
|
||||
</view>
|
||||
<view class="btn_left" v-if="orderDelites.indentState=='4'" @click="coll(orderDelites.userPhone)">
|
||||
联系TA</view>
|
||||
<view class="btn_right" v-if="orderDelites.indentState=='4'" @click.stop="shouhuo(orderDelites)">确认送达</view>
|
||||
<view class="btn_right" v-if="orderDelites.indentState=='5'">客户待确认</view>
|
||||
</view>
|
||||
<!-- 聊天室 -->
|
||||
<view style="position: fixed;bottom: 150rpx;right: 50rpx;" v-if="orderDelites.indentType == 5">
|
||||
<image @tap="goChat(orderDelites.indentId,orderDelites.orderId)" src="../../../static/image/chats.png"
|
||||
style="width: 100rpx;height: 100rpx;border-radius: 50rpx;">
|
||||
</image>
|
||||
<view class="shopxiaoix" v-if="RiderUnreadCount">{{RiderUnreadCount}}</view>
|
||||
</view>
|
||||
|
||||
<!-- 转单 -->
|
||||
<u-popup v-model="showOrder" mode="center" border-radius="18" :closeable="closeable" close-icon="close-circle"
|
||||
close-icon-size="45" width="580rpx" height="400rpx">
|
||||
<view class="receipt_code">
|
||||
<view class="code_title">填写手机号码</view>
|
||||
<u-input v-model="phone" type="number" placeholder="填写转单人手机号码" :border="border" />
|
||||
<view class="sure" style="margin-top: 40rpx;" @click="zhuandan">确定</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
|
||||
<!-- 收货码弹框 -->
|
||||
<u-popup v-model="show" mode="center" border-radius="18" :closeable="closeable" close-icon="close-circle"
|
||||
close-icon-size="45" width="580rpx" height="400rpx">
|
||||
<view class="receipt_code">
|
||||
<view class="code_title">填写收货码</view>
|
||||
<u-input v-model="shouhuoma" :type="type" placeholder="请输入收货码" :border="border" />
|
||||
<view class="sure" @click="querenSh">确定</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
<!-- <u-skeleton :loading="loading" :animation="true" bgColor="#FFF"></u-skeleton> -->
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
show: false,
|
||||
closeable: true,
|
||||
value: '',
|
||||
type: 'text',
|
||||
border: true,
|
||||
indentNumber: '',
|
||||
orderId: '',
|
||||
orderDelites: {},
|
||||
latitude: '', //骑手起点经度
|
||||
longitude: '', //骑手起点纬度
|
||||
qiJuli: '', //骑手距离
|
||||
shouhuoma: '',
|
||||
loading: true, // 是否显示骨架屏组件
|
||||
RiderUnreadCount: 0,
|
||||
indentId: '',
|
||||
showOrder: false,
|
||||
phone: ''
|
||||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
var that = this
|
||||
console.error(options)
|
||||
// uni.showLoading({
|
||||
// title: '加载中......',
|
||||
// icon: 'none'
|
||||
// })
|
||||
that.indentNumber = options.id
|
||||
that.orderId = options.orderId
|
||||
|
||||
|
||||
uni.getLocation({
|
||||
type: 'wgs84',
|
||||
success: function(res) {
|
||||
console.log('当前位置的经度:' + res.longitude);
|
||||
console.log('当前位置的纬度:' + res.latitude);
|
||||
that.longitude = res.longitude
|
||||
that.latitude = res.latitude
|
||||
that.taskData()
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
setInterval(function() {
|
||||
that.getRiderUnreadCount()
|
||||
}, 10000)
|
||||
|
||||
},
|
||||
methods: {
|
||||
zhuanOrder(indentId) {
|
||||
this.phone = ''
|
||||
this.indentId = indentId
|
||||
this.showOrder = true
|
||||
},
|
||||
zhuandan() {
|
||||
this.$Request.postT('/app/tbindent/transferOfOrder', {
|
||||
indentId: this.indentId,
|
||||
phone: this.phone
|
||||
}).then(res => {
|
||||
if (res.code == 0) {
|
||||
this.phone = ''
|
||||
this.$queue.setData('zhuandan', this.indentId);
|
||||
uni.showToast({
|
||||
title: '转单成功',
|
||||
icon: "none"
|
||||
});
|
||||
setTimeout(d => {
|
||||
uni.navigateBack()
|
||||
}, 1000)
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: "none"
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
goChat(indentId, orderId) {
|
||||
orderId = orderId ? orderId : this.orderId;
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/kefu/liaotianshi?indentId=' + indentId + '&orderId=' + orderId
|
||||
});
|
||||
},
|
||||
copyOrder(value) {
|
||||
uni.setClipboardData({
|
||||
data: value, //要被复制的内容
|
||||
success: () => { //复制成功的回调函数
|
||||
uni.showToast({ //提示
|
||||
title: '复制成功'
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
onshow() {
|
||||
this.show = true
|
||||
},
|
||||
coll(phone) {
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: phone
|
||||
});
|
||||
},
|
||||
taskData() {
|
||||
if (this.indentNumber) {
|
||||
if (!this.longitude) {
|
||||
uni.showModal({
|
||||
title: '温馨提示',
|
||||
content: '未开启定位权限,无法获取数据,请开启一下',
|
||||
showCancel: false,
|
||||
cancelText: '',
|
||||
confirmText: '我知道了',
|
||||
success: res => {
|
||||
uni.navigateBack({
|
||||
|
||||
})
|
||||
},
|
||||
fail: () => {},
|
||||
complete: () => {}
|
||||
});
|
||||
return;
|
||||
}
|
||||
this.$Request.postT('/app/tbindent/indentMessage', {
|
||||
indentNumber: this.indentNumber,
|
||||
ol: this.longitude,
|
||||
od: this.latitude
|
||||
}).then(res => {
|
||||
this.loading = false
|
||||
uni.hideLoading()
|
||||
if (res.code == 0 && res.data) {
|
||||
// this.jsjl(this.longitude,this.latitude,res.data.deliveryAddressLatitude, res.data.deliveryAddressLongitude)
|
||||
// this.jsjl(res.data.shipAddressLatitude, res.data.shipAddressLongitude,res.data.deliveryAddressLatitude, res.data.deliveryAddressLongitude)
|
||||
// if (res.data.distanceInitial > 1000) {
|
||||
// res.data.distanceInitials = (Number(res.data.distanceInitial) / 1000).toFixed(2)
|
||||
// }
|
||||
if (res.data.distance > 1000) {
|
||||
res.data.distances = (Number(res.data.distance) / 1000).toFixed(2)
|
||||
}
|
||||
this.orderDelites = res.data
|
||||
this.orderDelites.orderCode = res.data.orderCode.substring(res.data.orderCode.length -
|
||||
3)
|
||||
|
||||
|
||||
console.log('````', res.data)
|
||||
} else {
|
||||
console.log('失败:', res.data)
|
||||
uni.navigateBack({
|
||||
|
||||
})
|
||||
}
|
||||
this.loading = false;
|
||||
});
|
||||
} else {
|
||||
this.$Request.postT('/app/tbindent/indentMessageByOrderId', {
|
||||
orderId: this.orderId,
|
||||
ol: this.longitude,
|
||||
od: this.latitude
|
||||
}).then(res => {
|
||||
this.loading = false
|
||||
uni.hideLoading()
|
||||
if (res.code == 0) {
|
||||
// this.jsjl(this.longitude,this.latitude,res.data.deliveryAddressLatitude, res.data.deliveryAddressLongitude)
|
||||
// this.jsjl(res.data.shipAddressLatitude, res.data.shipAddressLongitude,res.data.deliveryAddressLatitude, res.data.deliveryAddressLongitude)
|
||||
if (res.data.distanceInitial > 1000) {
|
||||
res.data.distanceInitials = (Number(res.data.distanceInitial) / 1000).toFixed(2)
|
||||
}
|
||||
if (res.data.distance > 1000) {
|
||||
res.data.distances = (Number(res.data.distance) / 1000).toFixed(2)
|
||||
}
|
||||
this.orderDelites = res.data
|
||||
this.orderDelites.orderCode = res.data.orderCode.substring(res.data.orderCode.length -
|
||||
3)
|
||||
|
||||
|
||||
console.log('````', res.data)
|
||||
} else {
|
||||
console.log('失败:', res.data)
|
||||
}
|
||||
this.loading = false;
|
||||
});
|
||||
}
|
||||
|
||||
},
|
||||
quhuo(indentId) {
|
||||
let that = this
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '确认取到货吗',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
that.$Request.postJson('/app/tbindent/riderBuyGoods', {
|
||||
|
||||
indentId: indentId,
|
||||
indentState: "4"
|
||||
}).then(res => {
|
||||
if (res.code == 0) {
|
||||
that.taskData()
|
||||
uni.showToast({
|
||||
title: '确认取货成功',
|
||||
icon: "none"
|
||||
});
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: "none"
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
goStart() {
|
||||
// let obj = {
|
||||
// name: this.orderDelites.shopAddressDetail,
|
||||
// lat: this.orderDelites.shopLat,
|
||||
// long: this.orderDelites.shopLng,
|
||||
// }
|
||||
// this.navgate(obj)
|
||||
// 一键导航
|
||||
let latitude = this.orderDelites.shopLat
|
||||
let longitude = this.orderDelites.shopLng
|
||||
let name = this.orderDelites.shopAddressDetail
|
||||
uni.openLocation({
|
||||
latitude: latitude - 0, //要去的纬度-地址
|
||||
longitude: longitude - 0, //要去的经度-地址
|
||||
name: name, //地址名称
|
||||
address: name, //详细地址名称
|
||||
success: function() {
|
||||
console.log('导航成功');
|
||||
},
|
||||
fail: function(error) {
|
||||
console.log(error)
|
||||
}
|
||||
})
|
||||
},
|
||||
goEnd() {
|
||||
// let obj = {
|
||||
// name: this.orderDelites.userAddressDetail,
|
||||
// lat: this.orderDelites.userLat,
|
||||
// long: this.orderDelites.userLng,
|
||||
// }
|
||||
// this.navgate(obj)
|
||||
|
||||
let latitude = this.orderDelites.userLat
|
||||
let longitude = this.orderDelites.userLng
|
||||
let name = this.orderDelites.userAddressDetail
|
||||
uni.openLocation({
|
||||
latitude: Number(latitude), //要去的纬度-地址
|
||||
longitude: Number(longitude), //要去的经度-地址
|
||||
name: name, //地址名称
|
||||
address: name, //详细地址名称
|
||||
success: function() {
|
||||
console.log('导航成功');
|
||||
},
|
||||
fail: function(error) {
|
||||
console.log(error)
|
||||
}
|
||||
})
|
||||
},
|
||||
navgate(e) {
|
||||
console.log(e)
|
||||
let plugin = requirePlugin('routePlan');
|
||||
let key = this.$queue.getData('mapKey'); //使用在腾讯位置服务申请的key
|
||||
let referer = this.$queue.getData('mapName'); //调用插件的app的名称
|
||||
|
||||
let endPoint = JSON.stringify({ //终点
|
||||
'name': e.name,
|
||||
'latitude': e.lat,
|
||||
'longitude': e.long
|
||||
});
|
||||
wx.navigateTo({
|
||||
url: 'plugin://routePlan/index?key=' + key + '&referer=' + referer + '&endPoint=' + endPoint
|
||||
});
|
||||
},
|
||||
shouhuo(e) {
|
||||
console.log(e)
|
||||
this.indentNumber = e.indentNumber
|
||||
if (e.itemCodeFlag == 0 && e.indentType != 5) {
|
||||
this.show = true
|
||||
|
||||
} else {
|
||||
this.querenSh()
|
||||
}
|
||||
|
||||
},
|
||||
querenSh() {
|
||||
let that = this
|
||||
|
||||
that.$Request.postT('/app/tbindent/riderDelivery', {
|
||||
indentNumber: that.indentNumber,
|
||||
itemCode: that.shouhuoma
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
if (res.code == 0) {
|
||||
|
||||
uni.showToast({
|
||||
title: '订单完成',
|
||||
icon: "none"
|
||||
});
|
||||
setTimeout(function() {
|
||||
uni.navigateBack()
|
||||
}, 1000)
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: "none"
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
getRiderUnreadCount() {
|
||||
let that = this
|
||||
let data = {
|
||||
ordersId: that.orderId
|
||||
}
|
||||
that.$Request.getT("/app/ordersChat/selectRiderUnreadCount", data).then(res => {
|
||||
if (res.code == 0) {
|
||||
if (res.data > 0) {
|
||||
if (that.RiderUnreadCount != res.data) {
|
||||
that.RiderUnreadCount = res.data
|
||||
that.aplayAudio()
|
||||
uni.showModal({
|
||||
title: '消息',
|
||||
content: '有' + res.data + '条消息,请前往聊天列表处理。',
|
||||
success: (ret) => {
|
||||
if (ret.confirm) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/kefu/liaotian'
|
||||
})
|
||||
|
||||
} else {
|
||||
console.log('else', ret)
|
||||
that.defineCallBack()
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
//消息提示
|
||||
aplayAudio() {
|
||||
// console.log('语音提示')
|
||||
const innerAudioContext = uni.createInnerAudioContext();
|
||||
innerAudioContext.autoplay = true;
|
||||
innerAudioContext.src =
|
||||
'https://pw.xianmxkj.com/file/uploadPath/2022/01/19/0753211f78d718d44ee6372e33eae9ee.mp3';
|
||||
innerAudioContext.onPlay(() => {
|
||||
console.log('开始播放');
|
||||
});
|
||||
innerAudioContext.onError((res) => {
|
||||
console.log(res.errMsg);
|
||||
console.log(res.errCode);
|
||||
});
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
background: #F5F5F5;
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 100%;
|
||||
padding-bottom: 259rpx;
|
||||
}
|
||||
|
||||
.part_one {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
height: 120rpx;
|
||||
background: #ffffff;
|
||||
margin-top: 20rpx;
|
||||
border-radius: 23rpx;
|
||||
padding-top: 10rpx;
|
||||
}
|
||||
|
||||
.pickup {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
font-size: 29rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
line-height: 60rpx;
|
||||
}
|
||||
|
||||
.pickup_tit {
|
||||
color: #999999;
|
||||
font-size: 22rpx;
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.quhuoma {
|
||||
font-size: 50rpx;
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
margin: 50rpx 0;
|
||||
height: 100rpx;
|
||||
}
|
||||
|
||||
.list_box1 {
|
||||
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
/* height: 320rpx; */
|
||||
background: #FFFFFF;
|
||||
border-radius: 23rpx;
|
||||
/* box-shadow: 0rpx 5rpx 5rpx 0rpx rgba(198, 186, 181, 0.20); */
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
.part2 {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
padding-top: 25rpx;
|
||||
}
|
||||
|
||||
.box_add {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.distance {
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
.a {
|
||||
font-size: 16rpx;
|
||||
}
|
||||
|
||||
.add_name {
|
||||
flex: 8;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.buy {
|
||||
/* position: absolute;
|
||||
top: 0rpx; */
|
||||
}
|
||||
|
||||
.buy image {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.send {
|
||||
/* position: absolute;
|
||||
top: 0rpx; */
|
||||
}
|
||||
|
||||
.send image {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.sh_name {
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.xs_add {
|
||||
color: #999999;
|
||||
font-size: 24rpx;
|
||||
margin-top: 10rpx;
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
.jiantou {
|
||||
margin-left: 23rpx;
|
||||
}
|
||||
|
||||
.jiantou image {
|
||||
width: 20rpx;
|
||||
height: 40rpx;
|
||||
}
|
||||
|
||||
.part3 {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.three_left {
|
||||
flex: 1;
|
||||
height: 100rpx;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.three_left image {
|
||||
width: 36rpx;
|
||||
height: 37rpx;
|
||||
}
|
||||
|
||||
.box_two1 {
|
||||
background: #c4e2ff;
|
||||
color: #359CFF;
|
||||
/* width: 60px; */
|
||||
padding: 0 5px;
|
||||
height: 45rpx;
|
||||
font-size: 22rpx;
|
||||
text-align: center;
|
||||
line-height: 45rpx;
|
||||
border-radius: 5rpx;
|
||||
margin-top: 20rpx;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
.three_left text {
|
||||
color: #333333;
|
||||
font-size: 25rpx;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
.three_right {
|
||||
flex: 1;
|
||||
height: 100rpx;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
color: #FF412D;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* tip */
|
||||
.tip_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
height: 180rpx;
|
||||
background: #FFFFFF;
|
||||
margin-top: 20rpx;
|
||||
border-radius: 22rpx;
|
||||
}
|
||||
|
||||
.tip_part1 {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.tip_title {
|
||||
/* flex: 1; */
|
||||
height: 80rpx;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
margin-left: 30rpx;
|
||||
}
|
||||
|
||||
.tip_rider {
|
||||
flex: 1;
|
||||
font-size: 20rpx;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
margin-left: 30rpx;
|
||||
}
|
||||
|
||||
.tip_rider text {
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
.tip_content {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
font-size: 27rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
margin-top: 15rpx;
|
||||
}
|
||||
|
||||
.u-line {
|
||||
border-bottom-width: 3px !important;
|
||||
}
|
||||
|
||||
/* 订单信息 */
|
||||
.order_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
/* height: 300rpx; */
|
||||
background: #ffffff;
|
||||
margin-top: 20rpx;
|
||||
border-radius: 22rpx;
|
||||
}
|
||||
|
||||
.order_title {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
line-height: 67rpx;
|
||||
letter-spacing: 3rpx;
|
||||
}
|
||||
|
||||
.order_list {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.order_name {
|
||||
flex: 1;
|
||||
margin-left: 35rpx;
|
||||
color: #999999;
|
||||
font-size: 25rpx;
|
||||
height: 75rpx;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.order_numbers {
|
||||
flex: 1;
|
||||
color: #333333;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
font-size: 26rpx;
|
||||
margin-right: 35rpx;
|
||||
}
|
||||
|
||||
/* 费用明细 */
|
||||
.income_name {
|
||||
flex: 1;
|
||||
margin-left: 35rpx;
|
||||
color: #999999;
|
||||
font-size: 26rpx;
|
||||
height: 75rpx;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.income_numbers {
|
||||
flex: 1;
|
||||
color: #333333;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
font-size: 26rpx;
|
||||
margin-right: 35rpx;
|
||||
}
|
||||
|
||||
.income_numbers1 {
|
||||
flex: 1;
|
||||
color: #FF2400;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
font-size: 26rpx;
|
||||
margin-right: 35rpx;
|
||||
}
|
||||
|
||||
/* 接单按钮 */
|
||||
.tabbar_btn {
|
||||
position: fixed;
|
||||
bottom: 0rpx;
|
||||
left: 0rpx;
|
||||
right: 0rpx;
|
||||
width: 100%;
|
||||
height: 120rpx;
|
||||
background: #FFFFFF;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.btn_left {
|
||||
flex: 1;
|
||||
height: 80rpx;
|
||||
color: white;
|
||||
background: #33D442;
|
||||
text-align: center;
|
||||
line-height: 80rpx;
|
||||
border-radius: 16rpx;
|
||||
margin-left: 35rpx;
|
||||
margin-right: 20rpx;
|
||||
font-size: 26rpx;
|
||||
letter-spacing: 3rpx;
|
||||
}
|
||||
|
||||
.btn_right {
|
||||
flex: 1;
|
||||
height: 80rpx;
|
||||
color: white;
|
||||
background: #FF7F00;
|
||||
text-align: center;
|
||||
line-height: 80rpx;
|
||||
border-radius: 16rpx;
|
||||
margin-left: 20rpx;
|
||||
margin-right: 35rpx;
|
||||
font-size: 26rpx;
|
||||
letter-spacing: 3rpx;
|
||||
}
|
||||
|
||||
/* 收货码弹框 */
|
||||
.receipt_code {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.code_title {
|
||||
width: 100%;
|
||||
line-height: 100rpx;
|
||||
font-size: 31rpx;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
letter-spacing: 2rpx;
|
||||
margin-top: 21rpx;
|
||||
margin-bottom: 25rpx;
|
||||
}
|
||||
|
||||
.u-input--border {
|
||||
border: 1px solid #F2F2F2 !important;
|
||||
background: #F2F2F2 !important;
|
||||
color: #999999 !important;
|
||||
font-weight: 500 !important;
|
||||
letter-spacing: 2rpx !important;
|
||||
}
|
||||
|
||||
.u-input__input {
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
flex: 1;
|
||||
color: #999999 !important;
|
||||
min-height: 85rpx !important;
|
||||
margin-top: 7rpx;
|
||||
}
|
||||
|
||||
.sure {
|
||||
width: 100%;
|
||||
height: 80rpx;
|
||||
background: #FF7F00;
|
||||
color: white;
|
||||
border-radius: 46rpx;
|
||||
text-align: center;
|
||||
line-height: 80rpx;
|
||||
margin-top: 30rpx;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.shopxiaoix {
|
||||
background: red;
|
||||
color: #ffffff;
|
||||
width: 40rpx;
|
||||
height: auto;
|
||||
text-align: center;
|
||||
border-radius: 30rpx;
|
||||
position: relative;
|
||||
top: -66px;
|
||||
left: 35px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,187 @@
|
|||
<template>
|
||||
<view class="container">
|
||||
<view class="wrapper">
|
||||
<view class="input-content">
|
||||
<view class="cu-form-group" style="border: 2upx solid whitesmoke;margin-bottom: 20px;border-radius: 30px">
|
||||
<view class="title text-black">手机号</view>
|
||||
<input type="number" :value="phone" placeholder="请输入手机号" maxlength="11" data-key="phone" @input="inputChange" />
|
||||
</view>
|
||||
<view class="cu-form-group" style="border: 2upx solid whitesmoke;margin-bottom: 20px;border-radius: 30px">
|
||||
<text class="title text-black">验证码</text>
|
||||
<input type="number" :value="code" placeholder="请输入验证码" maxlength="6" data-key="code" @input="inputChange"
|
||||
@confirm="toLogin" />
|
||||
<button class="send-msg" @click="sendMsg" :disabled="sending">{{sendTime}}</button>
|
||||
</view>
|
||||
<view class="cu-form-group" style="border: 2upx solid whitesmoke;margin-bottom: 20px;border-radius: 30px">
|
||||
<text class="title text-black">设置密码</text>
|
||||
<input type="password" :value="password" placeholder="请设置新密码" placeholder-class="input-empty" maxlength="20"
|
||||
minlength="6" data-key="password" @input="inputChange" @confirm="toLogin" />
|
||||
</view>
|
||||
</view>
|
||||
<button class="confirm-btn" @click="toLogin">立即找回</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
code: '',
|
||||
phone: '',
|
||||
password: '',
|
||||
sending: false,
|
||||
sendTime: '获取验证码',
|
||||
count: 60,
|
||||
logining: false
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
sendMsg() {
|
||||
const {
|
||||
phone
|
||||
} = this;
|
||||
if (!phone) {
|
||||
this.$queue.showToast("请输入手机号");
|
||||
} else if (phone.length !== 11) {
|
||||
this.$queue.showToast("请输入正确的手机号");
|
||||
} else {
|
||||
this.$queue.showLoading("正在发送验证码...");
|
||||
this.$Request.getT("/app/Login/sendMsg/" + phone + "/forget").then(res => {
|
||||
if (res.code === 0) {
|
||||
this.sending = true;
|
||||
this.$queue.showToast('验证码发送成功请注意查收');
|
||||
this.countDown();
|
||||
uni.hideLoading();
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
uni.showModal({
|
||||
showCancel: false,
|
||||
title: '短信发送失败',
|
||||
content: res.msg ? res.msg : '请一分钟后再获取验证码'
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
countDown() {
|
||||
const {
|
||||
count
|
||||
} = this;
|
||||
if (count === 1) {
|
||||
this.count = 60;
|
||||
this.sending = false;
|
||||
this.sendTime = '获取验证码'
|
||||
} else {
|
||||
this.count = count - 1;
|
||||
this.sending = true;
|
||||
this.sendTime = count - 1 + '秒后重新获取';
|
||||
setTimeout(this.countDown.bind(this), 1000);
|
||||
}
|
||||
},
|
||||
inputChange(e) {
|
||||
const key = e.currentTarget.dataset.key;
|
||||
this[key] = e.detail.value;
|
||||
},
|
||||
navBack() {
|
||||
uni.navigateBack();
|
||||
},
|
||||
|
||||
|
||||
navTo(url) {
|
||||
uni.navigateTo({
|
||||
url
|
||||
})
|
||||
},
|
||||
toLogin() {
|
||||
const {
|
||||
phone,
|
||||
password,
|
||||
code
|
||||
} = this;
|
||||
if (!phone) {
|
||||
this.$queue.showToast("请输入手机号");
|
||||
} else if (!password) {
|
||||
this.$queue.showToast("请设置密码");
|
||||
} else if (password.length < 6) {
|
||||
this.$queue.showToast("密码位数必须大于六位");
|
||||
} else {
|
||||
this.logining = true;
|
||||
this.$queue.showLoading("正在修改密码中...");
|
||||
this.$Request.post("/app/Login/forgetPwd", {
|
||||
pwd: password,
|
||||
phone: phone,
|
||||
msg: code
|
||||
}).then(res => {
|
||||
uni.hideLoading();
|
||||
if (res.code === 0) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/public/loginphone'
|
||||
});
|
||||
} else {
|
||||
|
||||
uni.showModal({
|
||||
showCancel: false,
|
||||
title: '密码找回失败',
|
||||
content: res.msg,
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang='scss'>
|
||||
|
||||
|
||||
.send-msg {
|
||||
border-radius: 30px;
|
||||
color: white;
|
||||
height: 30px;
|
||||
font-size: 14px;
|
||||
line-height: 30px;
|
||||
|
||||
}
|
||||
|
||||
.container {
|
||||
padding-top: 32upx;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
position: relative;
|
||||
z-index: 90;
|
||||
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
|
||||
.input-content {
|
||||
padding: 32upx 80upx;
|
||||
}
|
||||
|
||||
|
||||
.confirm-btn {
|
||||
width: 600upx;
|
||||
height: 80upx;
|
||||
line-height: 80upx;
|
||||
border-radius: 60upx;
|
||||
margin-top: 32upx;
|
||||
|
||||
color: #fff;
|
||||
font-size: 32upx;
|
||||
|
||||
&:after {
|
||||
border-radius: 60px;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
@ -0,0 +1,618 @@
|
|||
<template>
|
||||
<view class="login">
|
||||
<!-- 小程序状态下登录 -->
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view class="mp_wxBox">
|
||||
<view>
|
||||
<view class="headers">
|
||||
<image src="../../static/logo.png" style="border-radius: 50%;"></image>
|
||||
</view>
|
||||
<view class="content">
|
||||
<view>申请获取以下权限</view>
|
||||
<text style="margin-top: 20rpx;">获得你的公开信息(昵称,头像、地区等)</text>
|
||||
</view>
|
||||
<button v-show="weixinPhone" style="background: #FF7F00;background-color: #FF7F00;color: #FFFFFF;"
|
||||
class="bottom" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">
|
||||
授权手机号
|
||||
</button>
|
||||
<!-- <button v-show="!weixinPhone" style="background: #FF3530; color: #FFF;" class="bottom"
|
||||
open-type="getUserInfo" withCredentials="true" lang="zh_CN" @getuserinfo="wxGetUserInfo">
|
||||
立即登录
|
||||
</button> -->
|
||||
<button v-show="!weixinPhone" style="background: #FF7F00;color: #FFFFFF;" class='bottom'
|
||||
bindtap="getUserProfile" @tap="wxGetUserInfo">
|
||||
授权登录
|
||||
</button>
|
||||
|
||||
<!-- 底部信息 -->
|
||||
<view class="footer">
|
||||
<text @tap="isShowAgree" class="cuIcon" :class="showAgree?'cuIcon-radiobox':'cuIcon-round'">同意
|
||||
</text>
|
||||
<!-- 协议地址 -->
|
||||
<navigator url="/pages/riderMy/set/mimi" open-type="navigate">《隐私政策》</navigator>和
|
||||
<navigator url="/pages/riderMy/set/xieyi" open-type="navigate">《用户服务协议》</navigator>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
|
||||
|
||||
<!-- #ifndef MP-WEIXIN -->
|
||||
<view class="register">
|
||||
<!-- <view class="back-btn yticon icon-zuojiantou-up" @click="navBack"></view> -->
|
||||
<view style="padding-top: 172upx;margin-left: 36upx;">
|
||||
<view style="color: #333333;font-size: 44upx;">手机快捷登录</view>
|
||||
<view style="color: #999999;font-size: 24upx;margin-top: 20upx;">未注册的手机号将自动创建账号</view>
|
||||
</view>
|
||||
<view style="margin-left: 26upx;margin-top: 104upx;">
|
||||
<wInput v-model="phoneData" type="number" maxlength="11" placeholder="请输入手机号"></wInput>
|
||||
<!-- <wInput v-model="passData" type="number" maxlength="6" placeholder="请输入密码"></wInput> -->
|
||||
<wInput v-model="verCode" type="number" maxlength="6" placeholder="请输入验证码" isShowCode ref="runCode"
|
||||
@setCode="sendMsg()"></wInput>
|
||||
<wInput v-show="show" v-model="invitation" isShowGet ref="setNumberCode" @setNumberCode="isShowGet()"
|
||||
placeholder="请填写邀请码"></wInput>
|
||||
</view>
|
||||
|
||||
<view class="footer" style=" margin-right: 72px;">
|
||||
<image v-if="showAgree" @tap="isShowAgree"
|
||||
src="https://api.shengqianxiong.com.cn/img/20201112/669aa8946cfb4ebdb459d57193c0ebca.png"
|
||||
style="width: 36upx;height: 36upx;"></image>
|
||||
<image v-else @tap="isShowAgree"
|
||||
src="https://api.shengqianxiong.com.cn/img/20201112/1e9102fc891f4d86a13c7b2ba6921cba.png"
|
||||
style="width: 36upx;height: 36upx;"></image>
|
||||
<text style="margin-left: 10upx;margin-right: 0;">同意</text>
|
||||
<navigator url="/pages/riderMy/set/mimi" open-type="navigate">《隐私政策》</navigator>和
|
||||
<navigator url="/pages/riderMy/set/xieyi" open-type="navigate">《用户服务协议》</navigator>
|
||||
</view>
|
||||
<wButton text="登 录" :rotate="isRotate" @click.native="startReg()"></wButton>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import wInput from '@/components/watch-login/watch-input.vue' //input
|
||||
import wButton from '@/components/watch-login/watch-button.vue' //button
|
||||
|
||||
export default {
|
||||
components: {
|
||||
wInput,
|
||||
wButton,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
phoneData: '',
|
||||
verCode: '',
|
||||
show: '',
|
||||
invitation: '',
|
||||
isRotate: false, //是否加载旋转
|
||||
platform: "app",
|
||||
userType: 2,
|
||||
passData: '', //密码
|
||||
|
||||
numbers: '',
|
||||
password: '',
|
||||
type: 'number',
|
||||
pass: 'number',
|
||||
clearable: false,
|
||||
mobile: '',
|
||||
code: '',
|
||||
sessionkey: '',
|
||||
flag: '1',
|
||||
showAgree: false, //协议是否选择
|
||||
weixinPhone: false,
|
||||
sending: false,
|
||||
sendDataList: {},
|
||||
phone: '',
|
||||
sendTime: '获取验证码',
|
||||
count: 60
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
navBack(){
|
||||
uni.navigateBack()
|
||||
},
|
||||
isShowAgree() {
|
||||
this.showAgree = !this.showAgree
|
||||
},
|
||||
startReg() {
|
||||
var that = this
|
||||
uni.getSystemInfo({
|
||||
success: function(res) {
|
||||
console.log(res.model);
|
||||
if (res.model == 'iPhone') {
|
||||
that.sysphone = 2
|
||||
} else if (res.model != 'iPhone') {
|
||||
that.sysphone = 1
|
||||
}
|
||||
}
|
||||
});
|
||||
//注册
|
||||
if (that.isRotate) {
|
||||
//判断是否加载中,避免重复点击请求
|
||||
return false;
|
||||
}
|
||||
if (that.showAgree == false) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
position: 'bottom',
|
||||
title: '请先同意《协议》'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
if (that.phoneData.length != 11) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
position: 'bottom',
|
||||
title: '手机号不正确'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
// if (that.passData.length < 5) {
|
||||
// uni.showToast({
|
||||
// icon: 'none',
|
||||
// position: 'bottom',
|
||||
// title: '密码不能低于六位'
|
||||
// });
|
||||
// return false;
|
||||
// }
|
||||
if (that.verCode == 6) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
position: 'bottom',
|
||||
title: '验证码不正确'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
that.isRotate = true;
|
||||
console.log('验证码', that.verCode, )
|
||||
// {
|
||||
// password: that.passData,
|
||||
// phone: that.phoneData,
|
||||
// msg: that.verCode,
|
||||
// platform: that.platform,
|
||||
// userType: that.userType,
|
||||
// sysphone: that.sysphone
|
||||
// // openid: this.$queue.getData("openid")
|
||||
// }
|
||||
|
||||
var openid = this.$queue.getData("openid") ? this.$queue.getData("openid") : '';
|
||||
that.$Request.postJson("/app/Login/registerCode?password=" + that.passData + '&phone=' + that.phoneData +
|
||||
'&msg=' + that.verCode + '&platform=' + that.platform +
|
||||
'&userType=' + that.userType + '&sysphone=' + that.sysphone + '&openId=' + openid).then(res => {
|
||||
console.log(res)
|
||||
if (res.code == 0) {
|
||||
console.log(res.token)
|
||||
this.$queue.setData("token", res.token);
|
||||
this.$queue.setData("userId", res.user.userId);
|
||||
this.$queue.setData("mobile", res.user.phone);
|
||||
// this.getUserInfo(res.user.userId, res.token);
|
||||
uni.navigateTo({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
return false;
|
||||
} else {
|
||||
that.isRotate = false;
|
||||
uni.hideLoading();
|
||||
uni.showModal({
|
||||
showCancel: false,
|
||||
title: '登录失败',
|
||||
content: res.msg,
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
sendMsg() {
|
||||
const {
|
||||
phoneData
|
||||
} = this;
|
||||
if (!phoneData) {
|
||||
this.$queue.showToast("请输入手机号");
|
||||
} else if (phoneData.length !== 11) {
|
||||
this.$queue.showToast("请输入正确的手机号");
|
||||
} else {
|
||||
this.$queue.showLoading("正在发送验证码...");
|
||||
this.$Request.getT("/app/Login/sendMsg/" + phoneData + '/register').then(res => {
|
||||
console.log(res)
|
||||
if (res.code == 0) {
|
||||
if (res.data === 'register') {
|
||||
this.show = true;
|
||||
}
|
||||
this.sending = true;
|
||||
this.$queue.showToast('验证码发送成功请注意查收');
|
||||
this.$refs.runCode.$emit('runCode');
|
||||
uni.hideLoading();
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
uni.showModal({
|
||||
showCancel: false,
|
||||
title: '短信发送失败',
|
||||
content: res.msg ? res.msg : '请一分钟后再获取验证码',
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
bindriderlogin() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/running_rider/running_rider'
|
||||
})
|
||||
},
|
||||
forgetPwd() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/forgetPwd'
|
||||
})
|
||||
},
|
||||
//第一授权获取用户信息===》按钮触发
|
||||
wxGetUserInfo(e) {
|
||||
if (!this.showAgree) {
|
||||
uni.showToast({
|
||||
title: '请选择用户和隐私协议',
|
||||
icon: 'none'
|
||||
})
|
||||
return
|
||||
}
|
||||
let that = this;
|
||||
wx.getUserProfile({
|
||||
desc: '业务需要',
|
||||
success: infoRes => {
|
||||
console.log("infoRes.encryptedData__________:",infoRes.userInfo)
|
||||
let userName = infoRes.userInfo.nickName; //昵称
|
||||
let avatarUrl = infoRes.userInfo.avatarUrl; //头像
|
||||
let sex = infoRes.userInfo.gender; //头像
|
||||
try {
|
||||
that.login(userName, avatarUrl, sex);
|
||||
} catch (e) {}
|
||||
}
|
||||
})
|
||||
},
|
||||
//小程序微信登录后获取手机号
|
||||
getPhoneNumber: function(e) {
|
||||
console.log(e);
|
||||
if (e.detail.errMsg == 'getPhoneNumber:fail user deny') {
|
||||
console.log('用户拒绝提供手机号');
|
||||
} else {
|
||||
console.log('用户同意提供手机号');
|
||||
this.setPhoneByInsert(e.detail.encryptedData, e.detail.iv);
|
||||
}
|
||||
},
|
||||
//小程序微信登录后获取手机号
|
||||
setPhoneByInsert(decryptData, iv) {
|
||||
this.$queue.showLoading('登录中...');
|
||||
|
||||
let data = {
|
||||
decryptData: decryptData,
|
||||
key: this.sessionkey,
|
||||
iv: iv
|
||||
};
|
||||
this.$Request.postJson('/app/Login/selectPhone', data).then(res => {
|
||||
if (res.code === 0) {
|
||||
uni.hideLoading();
|
||||
this.phone = res.data.phoneNumber;
|
||||
this.getWeixinInfo(this.sendDataList);
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
this.$queue.showToast(res.msg);
|
||||
}
|
||||
});
|
||||
},
|
||||
//获取个人信息
|
||||
getWeixinInfo(sendData) {
|
||||
let that = this;
|
||||
// let url = '/user/mp/update';
|
||||
uni.showLoading({
|
||||
title: '登录中...'
|
||||
});
|
||||
var postData = {
|
||||
riderOpenId: sendData.openid, //小程序openid
|
||||
platform: '小程序', //unionId
|
||||
userName: sendData.userName, //微信名称
|
||||
avatar: sendData.imageUrl, //头像
|
||||
userId: '', //性别
|
||||
phone: that.phone,
|
||||
inviterCode: sendData.invitation,
|
||||
sex: sendData.gender
|
||||
};
|
||||
that.$Request.postJson('/app/Login/insertWxRiderUser', postData).then(res => {
|
||||
console.log(res);
|
||||
if (res.code === 0) {
|
||||
uni.hideLoading();
|
||||
that.$queue.setData('token', res.token);
|
||||
that.$queue.setData('userId', res.user.userId);
|
||||
that.$queue.setData("avatar", res.user.avatar ? res.user.avatar : '/static/img/logo.png');
|
||||
that.$queue.setData("userName", res.user.userName);
|
||||
that.$queue.setData("invitationCode", res.user.invitationCode);
|
||||
that.$queue.setData("inviterCode", res.user.inviterCode);
|
||||
that.$queue.setData("sex", res.user.sex);
|
||||
that.$queue.setData("phone", res.user.phone);
|
||||
that.$queue.setData("platform", res.user.platform);
|
||||
|
||||
that.$queue.setData("zhiFuBao", res.user.zhiFuBao);
|
||||
that.$queue.setData("zhiFuBaoName", res.user.zhiFuBaoName);
|
||||
|
||||
that.$queue.setData("checkCertification", res.user.checkCertification);
|
||||
uni.navigateBack();
|
||||
// that.initUserInfo(res.user.userId, res.token);
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
uni.showModal({
|
||||
showCancel: false,
|
||||
title: '登录失败',
|
||||
content: res.msg
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
login(userName, avatarUrl, sex) {
|
||||
console.log(userName, avatarUrl, sex, '*********')
|
||||
let that = this;
|
||||
uni.showLoading({
|
||||
title: '登录中...'
|
||||
});
|
||||
// 1.wx获取登录用户code
|
||||
uni.login({
|
||||
provider: 'weixin',
|
||||
success: function(loginRes) {
|
||||
var getParams = {
|
||||
code: loginRes.code,
|
||||
userType: 2
|
||||
};
|
||||
that.$Request.getT('/app/Login/wxRiderLogin', getParams).then(res => {
|
||||
console.log(res, '登录');
|
||||
if (res.code == 0) {
|
||||
|
||||
that.$queue.setData('openid', res.data.open_id);
|
||||
that.$queue.setData('unionid', res.data.unionid);
|
||||
that.sessionkey = res.data.session_key;
|
||||
that.flag = res.data.flag;
|
||||
console.log(res.data.unionid, res.data.session_key);
|
||||
uni.hideLoading();
|
||||
//非第一次授权获取用户信息
|
||||
//获取用户信息后向调用信息更新方法
|
||||
that.$queue.setData("sessionkey", res.data.session_key);
|
||||
|
||||
var userByinvitationId = that.$queue.getData('userByinvitationId');
|
||||
if (userByinvitationId) {
|
||||
that.userByinvitationId = userByinvitationId;
|
||||
} else {
|
||||
that.userByinvitationId = that.$queue.getInvitation();
|
||||
}
|
||||
var sendData = {
|
||||
openid: that.$queue.getData('openid'),
|
||||
unionid: that.$queue.getData('unionid'),
|
||||
userName: userName,
|
||||
imageUrl: avatarUrl,
|
||||
gender: sex, //性别
|
||||
invitation: that.userByinvitationId //别人登录进来携带你的邀请码
|
||||
};
|
||||
that.sendDataList = sendData;
|
||||
|
||||
|
||||
if (res.data.isPhone == 2) {
|
||||
that.weixinPhone = true
|
||||
} else {
|
||||
that.getWeixinInfo(sendData);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang='scss'>
|
||||
.headers {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.headers>image {
|
||||
width: 400upx;
|
||||
height: 400upx;
|
||||
}
|
||||
|
||||
.footer {
|
||||
/* // padding-left: 140upx; */
|
||||
justify-content: center;
|
||||
margin-top: 32upx;
|
||||
font-size: 24upx;
|
||||
color: #666666;
|
||||
display: flex;
|
||||
text-align: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
page {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.send-msg {
|
||||
border-radius: 30px;
|
||||
color: black;
|
||||
background: white;
|
||||
height: 30px;
|
||||
font-size: 14px;
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
.container {
|
||||
top: 0;
|
||||
padding-top: 32upx;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
background: #fff;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.mp_wxBox {}
|
||||
|
||||
.headers {
|
||||
margin: 35% auto 50rpx;
|
||||
text-align: center;
|
||||
border-radius: 60rpx;
|
||||
width: 650rpx;
|
||||
height: 300rpx;
|
||||
line-height: 450rpx;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.headers image {
|
||||
width: 300rpx;
|
||||
height: 300rpx;
|
||||
}
|
||||
|
||||
.content {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.headers text {
|
||||
display: block;
|
||||
color: #9d9d9d;
|
||||
/* // margin-top: 40rpx; */
|
||||
}
|
||||
|
||||
.bottom {
|
||||
line-height: 80upx;
|
||||
border-radius: 80upx;
|
||||
margin: 50rpx;
|
||||
height: 80upx;
|
||||
font-size: 35rpx;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.welcome {
|
||||
position: relative;
|
||||
left: 30px;
|
||||
top: -55px;
|
||||
font-size: 28px;
|
||||
color: #555;
|
||||
text-shadow: 1px 0px 1px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.input-content {
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.left-top-sign {
|
||||
font-size: 80px;
|
||||
/* color: $page-color-base; */
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.right-top-sign {
|
||||
position: absolute;
|
||||
top: 40px;
|
||||
right: -15px;
|
||||
z-index: 95;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.right-top-sign:before,
|
||||
.right-top-sign:after {
|
||||
display: block;
|
||||
content: '';
|
||||
width: 20px;
|
||||
height: 40px;
|
||||
background: #FF7F00;
|
||||
}
|
||||
|
||||
.right-top-sign:before {
|
||||
transform: rotate(50deg);
|
||||
border-radius: 0 50px 0 0;
|
||||
}
|
||||
|
||||
.right-top-sign:after {
|
||||
position: absolute;
|
||||
right: -198px;
|
||||
top: 0;
|
||||
transform: rotate(-50deg);
|
||||
border-radius: 50px 0 0 0;
|
||||
/* background: pink; */
|
||||
}
|
||||
|
||||
/* ````` */
|
||||
.login {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.login_type {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
margin-top: 50rpx;
|
||||
margin-bottom: 135rpx;
|
||||
}
|
||||
|
||||
.type_name {
|
||||
font-size: 38rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.type_tit {
|
||||
color: #999999;
|
||||
font-size: 21rpx;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
|
||||
/* 登录 */
|
||||
.login_input {
|
||||
width: 80%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.numbers {
|
||||
height: 120rpx;
|
||||
}
|
||||
|
||||
.u-input__input {
|
||||
border-bottom: 1rpx solid #E6E6E6 !important;
|
||||
}
|
||||
|
||||
.submit {
|
||||
width: 100%;
|
||||
height: 90rpx;
|
||||
background: #FF7F00;
|
||||
color: white;
|
||||
text-align: center;
|
||||
line-height: 90rpx;
|
||||
border-radius: 20rpx;
|
||||
margin-top: 75rpx;
|
||||
}
|
||||
|
||||
.submit_bottom {
|
||||
display: flex;
|
||||
height: 70rpx;
|
||||
}
|
||||
|
||||
.bottom_left {
|
||||
flex: 1;
|
||||
color: #999999;
|
||||
font-size: 26rpx;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.bottom_right {
|
||||
flex: 1;
|
||||
color: #FF7F00;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
position: relative;
|
||||
z-index: 90;
|
||||
background: #fff;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,280 @@
|
|||
<template>
|
||||
<view class="content">
|
||||
<view class="user_box">
|
||||
<u-form :model="form" ref="uForm" label-position="top">
|
||||
<u-form-item label="姓名">
|
||||
<u-input v-model="form.name" height="60rpx" placeholder="可商议" />
|
||||
</u-form-item>
|
||||
<u-form-item label="出生日期">
|
||||
<u-input v-model="form.data" height="60rpx" placeholder="请填写 (必填)" />
|
||||
</u-form-item>
|
||||
<u-form-item label="地址">
|
||||
<u-input v-model="form.address" height="60rpx" placeholder="请填写 (选填)" />
|
||||
</u-form-item>
|
||||
</u-form>
|
||||
</view>
|
||||
<!-- 实名认证 -->
|
||||
<view class="user_upload">
|
||||
<view class="upload_name">实名认证</view>
|
||||
|
||||
<view class="upload_box">
|
||||
<view class="upload" v-for="(item,index) in upload_list" :key="item.id">
|
||||
<view class="box">
|
||||
<view class="upload_image">
|
||||
<image :src="item.image"></image>
|
||||
</view>
|
||||
<view class="upload_tit">{{item.name}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 缴纳保证金 -->
|
||||
<view class="deposit">
|
||||
<view class="deposit_left">
|
||||
<view class="deposit_name">缴纳保证金</view>
|
||||
<view class="deposit_tit">满足订单量及好评率即可申请退还保证金</view>
|
||||
</view>
|
||||
<view class="deposit_right">
|
||||
¥200
|
||||
</view>
|
||||
</view>
|
||||
<!-- checkbox -->
|
||||
<view class="sure_submit">
|
||||
<u-checkbox-group>
|
||||
<u-checkbox v-model="checked" shape="circle">同意并接受《跑腿代购服务用户协议》</u-checkbox>
|
||||
</u-checkbox-group>
|
||||
</view>
|
||||
<!-- 底部 tabbar -->
|
||||
<view class="tabbar">
|
||||
<view class="tabbar_price">
|
||||
支付:<text>¥200</text>
|
||||
</view>
|
||||
<view class="tabbar_btn">
|
||||
<view class="btn">注册并支付</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
form: {
|
||||
name: '',
|
||||
data: '',
|
||||
address: ''
|
||||
},
|
||||
upload_list: [{
|
||||
id: 1,
|
||||
name: '请拍摄身份证正面',
|
||||
image: '../../../static/login/add.png'
|
||||
}, {
|
||||
id: 1,
|
||||
name: '请拍摄身份证反面',
|
||||
image: '../../../static/login/add.png'
|
||||
}, {
|
||||
id: 1,
|
||||
name: '请拍摄手持身份证正面',
|
||||
image: '../../../static/login/add.png'
|
||||
}]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
background: #F5F5F5;
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.user_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
height: 360rpx;
|
||||
background: #ffffff;
|
||||
margin-top: 30rpx;
|
||||
border-radius: 18rpx;
|
||||
padding-top: 10rpx;
|
||||
}
|
||||
|
||||
.u-form-item {
|
||||
padding: 0rpx 0 !important;
|
||||
font-weight: bold !important;
|
||||
/* margin-left: 40rpx !important; */
|
||||
line-height: 40rpx !important;
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
.u-input__input {
|
||||
font-size: 25rpx !important;
|
||||
font-weight: 400 !important;
|
||||
}
|
||||
|
||||
/* 实名认证 */
|
||||
.user_upload {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
/* height: 500rpx; */
|
||||
background: #ffffff;
|
||||
margin-top: 50rpx;
|
||||
border-radius: 18rpx;
|
||||
}
|
||||
|
||||
.upload_name {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
font-size: 27rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.upload_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.upload {
|
||||
width: 100%;
|
||||
height: 300rpx;
|
||||
border: 1rpx dashed;
|
||||
margin-bottom: 37rpx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.box {
|
||||
width: 300rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.upload_image image {
|
||||
width: 73rpx;
|
||||
height: 60rpx;
|
||||
}
|
||||
|
||||
.upload_tit {
|
||||
font-size: 23rpx;
|
||||
color: #353535;
|
||||
}
|
||||
|
||||
/* 缴纳保证金 */
|
||||
.deposit {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
height: 135rpx;
|
||||
margin-top: 20rpx;
|
||||
background: #FFFFFF;
|
||||
display: flex;
|
||||
border-radius: 18rpx;
|
||||
}
|
||||
|
||||
.deposit_left {
|
||||
flex: 2;
|
||||
margin-left: 25rpx;
|
||||
margin-top: 25rpx;
|
||||
}
|
||||
|
||||
.deposit_name {
|
||||
color: #FF9707;
|
||||
font-size: 26rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.deposit_tit {
|
||||
font-size: 22rpx;
|
||||
color: #999999;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
|
||||
.deposit_right {
|
||||
flex: 1;
|
||||
color: #F1413D;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
margin-right: 25rpx;
|
||||
}
|
||||
|
||||
.sure_submit {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
height: 100rpx;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
margin-bottom: 90rpx;
|
||||
}
|
||||
|
||||
/* checkbox */
|
||||
.u-checkbox__label {
|
||||
font-size: 23rpx !important;
|
||||
color: #888888 !important;
|
||||
}
|
||||
|
||||
.u-checkbox__icon-wrap--circle {
|
||||
width: 26rpx !important;
|
||||
height: 26rpx !important;
|
||||
}
|
||||
|
||||
/* 底部 tabbar */
|
||||
.tabbar {
|
||||
width: 100%;
|
||||
height: 100rpx;
|
||||
background: #ffffff;
|
||||
position: fixed;
|
||||
bottom: 0rpx;
|
||||
left: 0rpx;
|
||||
right: 0rpx;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.tabbar_price {
|
||||
flex: 1;
|
||||
margin-left: 50rpx;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
color: black;
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.tabbar_price text {
|
||||
color: red;
|
||||
font-weight: 500;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
.tabbar_btn {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.btn {
|
||||
background: #ff6a04;
|
||||
border-radius: 41rpx;
|
||||
width: 220rpx;
|
||||
height: 74rpx;
|
||||
text-align: center;
|
||||
line-height: 74rpx;
|
||||
color: white;
|
||||
font-size: 25rpx;
|
||||
letter-spacing: 1rpx;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
<template>
|
||||
<view class="riderr_login">
|
||||
<view class="rider_type">
|
||||
<view class="type_name">请选择注册类型</view>
|
||||
<view class="type_tit">请选择您是那种注册用户类型</view>
|
||||
</view>
|
||||
<view class="type_box" v-for="(item,index) in list" :key="item.id" @click="bindrider(item.name)">
|
||||
<view class="name">{{item.name}}</view>
|
||||
<view class="icon">
|
||||
<u-icon name="arrow-right"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
list: [{
|
||||
id: 1,
|
||||
name: '跑腿骑手'
|
||||
}, {
|
||||
id: 2,
|
||||
name: '同城师傅'
|
||||
}]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
bindrider(name) {
|
||||
console.log(name)
|
||||
if(name == '跑腿骑手'){
|
||||
uni.navigateTo({
|
||||
url:'/pages/login/login'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.riderr_login {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.rider_type {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
margin-top: 50rpx;
|
||||
margin-bottom: 135rpx;
|
||||
}
|
||||
|
||||
.type_name {
|
||||
font-size: 38rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.type_tit {
|
||||
color: #999999;
|
||||
font-size: 21rpx;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
|
||||
.type_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
height: 110rpx;
|
||||
background: #F2F2F2;
|
||||
display: flex;
|
||||
margin-bottom: 20rpx;
|
||||
border-radius: 18rpx;
|
||||
}
|
||||
|
||||
.name {
|
||||
flex: 1;
|
||||
font-size: 30rpx;
|
||||
color: black;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
margin-left: 60rpx;
|
||||
}
|
||||
|
||||
.icon {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
|
||||
.icon image {
|
||||
width: 15rpx;
|
||||
height: 25rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,550 @@
|
|||
<template>
|
||||
<view v-if="XCXIsSelect !='否'">
|
||||
<view class="padding">
|
||||
<view class=" padding-lr bg-white radius">
|
||||
<u-form :model="form" ref="uForm" label-position="top" :label-style='lableStyle'>
|
||||
<u-form-item label="真实姓名" :border-bottom='false'>
|
||||
<u-input :disabled="disabled" placeholder="请输入真实姓名" v-model="form.userName" />
|
||||
</u-form-item>
|
||||
<u-form-item label="证件号码" :border-bottom='false'>
|
||||
<u-input :disabled="disabled" placeholder="请输入身份证号码" v-model="form.identityCardNumber" />
|
||||
</u-form-item>
|
||||
</u-form>
|
||||
</view>
|
||||
<view class=" padding bg-white radius margin-top">
|
||||
<view class="margin-top"
|
||||
style="border: 2rpx dashed #484B74; width: 100%;height: 320rpx;position: relative;">
|
||||
<view style="text-align: center;margin: 80rpx auto 0;" @click="addImages(1)"
|
||||
v-if="!form.identityCardFront">
|
||||
<image src="../../../static/my/photo.png" mode="widthFix" style="width: 73rpx;"></image>
|
||||
<view class="text-sm text-gray margin-top-sm">请拍摄身份证正面</view>
|
||||
</view>
|
||||
<image @click="disabled? '':addImages(1)" v-else :src="form.identityCardFront"
|
||||
style="width: 100%;height: 320rpx;"></image>
|
||||
</view>
|
||||
<!-- <view class="text-lg">上传身份证反面</view> -->
|
||||
<view class="margin-top"
|
||||
style="border: 2rpx dashed #484B74; width: 100%;height: 320rpx;position: relative;">
|
||||
<view style="text-align: center;margin: 80rpx auto 0;" @click="addImages(2)"
|
||||
v-if="!form.identityCardVerso">
|
||||
<image src="../../../static/my/photo.png" mode="widthFix" style="width: 73rpx;"></image>
|
||||
<view class="text-sm text-gray margin-top-sm">请拍摄身份证反面</view>
|
||||
</view>
|
||||
<image @click="disabled? '':addImages(2)" v-else :src="form.identityCardVerso"
|
||||
style="width: 100%;height: 320rpx;"></image>
|
||||
</view>
|
||||
<view class="margin-top"
|
||||
style="border: 2rpx dashed #484B74; width: 100%;height: 320rpx;position: relative;">
|
||||
<view style="text-align: center;margin: 80rpx auto 0;" @click="addImages(3)"
|
||||
v-if="!form.selfIdentityCard">
|
||||
<image src="../../../static/my/photo.png" mode="widthFix" style="width: 73rpx;"></image>
|
||||
<view class="text-sm text-gray margin-top-sm">请拍摄手持身份证正面</view>
|
||||
</view>
|
||||
<image @click="disabled? '':addImages(3)" v-else :src="form.selfIdentityCard"
|
||||
style="width: 100%;height: 320rpx;"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="padding bg-white radius margin-top">
|
||||
<view class="text-bold">缴纳保证金</view>
|
||||
<view class="flex justify-between margin-top-sm">
|
||||
<view class="text-gray">满足订单量及好评率即可申请退还保证金</view>
|
||||
<view class="text-bold" style="color: #FF6A04;">¥{{money}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="padding margin-top footer text-xxl">
|
||||
<text @tap="isShowAgree" class="cuIcon" :class="showAgree?'cuIcon-radiobox':'cuIcon-round'">同意并接受</text>
|
||||
<!-- 协议地址 -->
|
||||
<navigator url="/pages/riderMy/paotuixieyi" open-type="navigate">《跑腿代购用户协议》</navigator>
|
||||
</view>
|
||||
<view style="height: 120rpx;"></view>
|
||||
</view>
|
||||
<view class="bg-white flex justify-between align-center padding-lr"
|
||||
style="position: fixed;bottom: 0;width: 100%;height: 120rpx;">
|
||||
<view class="">
|
||||
<text class="text-lg text-bold text-black">支付:</text>
|
||||
<text class="text-red">¥{{money}}</text>
|
||||
</view>
|
||||
<view>
|
||||
<u-button v-if="!disabled" @click="submit" class="" :custom-style="customStyle" shape="circle"
|
||||
:hair-line="false">提交认证</u-button>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<u-popup v-model="showpay" mode="bottom" close-icon="close-circle" close-icon-pos="top-right"
|
||||
close-icon-color="#8f9298" close-icon-size="50">
|
||||
<view class="popup_pay">
|
||||
<view class="bg margin-top padding-lr radius">
|
||||
<view style="padding: 0 20upx;margin-top: 36rpx;">
|
||||
<view
|
||||
style="display: flex;height: 100upx;align-items: center;padding: 20upx 0;justify-content: center;"
|
||||
v-for="(item,index) in openLists" :key='index'>
|
||||
<image :src="item.image" style="width: 55upx;height: 55upx;border-radius: 50upx;">
|
||||
</image>
|
||||
<view style="font-size: 30upx;margin-left: 20upx;width: 70%;">
|
||||
{{item.name}}
|
||||
</view>
|
||||
<radio-group name="openWay" style="margin-left: 45rpx;" @tap='selectWay(item)'>
|
||||
<label class="tui-radio">
|
||||
<radio color="#FF7F00" :checked="openWay == item.id ? true : false" />
|
||||
</label>
|
||||
</radio-group>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="pay_btns" @click="pay()">确认支付</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import configdata from '@/common/config.js';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
form: {
|
||||
userName: '',
|
||||
// phone: '',
|
||||
identityCardNumber: '',
|
||||
identityCardFront: '',
|
||||
identityCardVerso: '',
|
||||
selfIdentityCard: '',
|
||||
cashDeposit: ''
|
||||
},
|
||||
disabled: false,
|
||||
lableStyle: {
|
||||
color: '#000',
|
||||
fontSize: '36upx',
|
||||
fontWeight: 700
|
||||
},
|
||||
customStyle: {
|
||||
backgroundColor: '#FF6A04',
|
||||
color: '#FFFFFF',
|
||||
border: 0,
|
||||
width: '200rpx'
|
||||
},
|
||||
btnStyle: {
|
||||
backgroundColor: '#FF6A04',
|
||||
color: '#FFFFFF',
|
||||
},
|
||||
money: 0,
|
||||
showAgree: false, //协议是否选择
|
||||
sessionkey: '',
|
||||
|
||||
showpay: false,
|
||||
openWay: 1,
|
||||
openLists: [],
|
||||
indentNumber: '',
|
||||
XCXIsSelect:'否'
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.XCXIsSelect = this.$queue.getData('XCXIsSelect');
|
||||
if(this.XCXIsSelect =='否'){
|
||||
uni.setNavigationBarTitle({
|
||||
title: '隐私政策'
|
||||
});
|
||||
}else{
|
||||
uni.setNavigationBarTitle({
|
||||
title: '实名认证'
|
||||
});
|
||||
}
|
||||
// #ifdef MP-WEIXIN
|
||||
this.openLists = [{
|
||||
id: 1,
|
||||
image: '../../../static/my/weixin.png',
|
||||
name: '微信'
|
||||
}]
|
||||
this.openWay = 1
|
||||
// #endif
|
||||
// #ifdef H5
|
||||
this.openLists = [
|
||||
{
|
||||
id: 1,
|
||||
image: '../../../static/my/weixin.png',
|
||||
name: '微信'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
image: '../../../static/my/zhifubao.png',
|
||||
name: '支付宝'
|
||||
}
|
||||
|
||||
]
|
||||
this.openWay = 1
|
||||
// #endif
|
||||
// #ifdef APP-PLUS
|
||||
this.openLists = [{
|
||||
id: 1,
|
||||
image: '../../../static/my/weixin.png',
|
||||
name: '微信'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
image: '../../../static/my/zhifubao.png',
|
||||
name: '支付宝'
|
||||
}
|
||||
]
|
||||
// #endif
|
||||
|
||||
this.getRZmoney()
|
||||
this.sessionkey = this.$queue.getData("sessionkey");
|
||||
},
|
||||
methods: {
|
||||
isShowAgree() {
|
||||
this.showAgree = !this.showAgree
|
||||
},
|
||||
getRZmoney() {
|
||||
this.$Request.get("/app/common/type/273").then(res => {
|
||||
if (res.code == 0) {
|
||||
this.money = res.data.value
|
||||
this.form.cashDeposit = res.data.value
|
||||
}
|
||||
});
|
||||
},
|
||||
selectWay: function(item) {
|
||||
this.openWay = item.id;
|
||||
},
|
||||
submit() {
|
||||
let that = this
|
||||
console.log(that.form)
|
||||
if (!that.form.userName) {
|
||||
uni.showToast({
|
||||
title: '请输入真实姓名',
|
||||
icon: 'none',
|
||||
duration: 1000
|
||||
})
|
||||
return;
|
||||
}
|
||||
if (!that.form.identityCardNumber) {
|
||||
uni.showToast({
|
||||
title: '请输入身份证号',
|
||||
icon: 'none',
|
||||
duration: 1000
|
||||
})
|
||||
return;
|
||||
}
|
||||
if (!that.form.identityCardFront) {
|
||||
uni.showToast({
|
||||
title: '请上传身份证正面',
|
||||
icon: 'none',
|
||||
duration: 1000
|
||||
})
|
||||
return;
|
||||
}
|
||||
if (!that.form.identityCardVerso) {
|
||||
uni.showToast({
|
||||
title: '请上传身份证反面',
|
||||
icon: 'none',
|
||||
duration: 1000
|
||||
})
|
||||
return;
|
||||
}
|
||||
if (!that.form.selfIdentityCard) {
|
||||
uni.showToast({
|
||||
title: '请上传手持身份证正面',
|
||||
icon: 'none',
|
||||
duration: 1000
|
||||
})
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.showAgree) {
|
||||
uni.showToast({
|
||||
title: '请勾选跑腿代购用户协议',
|
||||
icon: 'none',
|
||||
duration: 1000
|
||||
})
|
||||
return;
|
||||
}
|
||||
// #ifdef MP-WEIXIN
|
||||
that.$Request.postJson("/app/wxPayErrRider/wxPayJsApiRiderCertification/3", that.form).then(res => {
|
||||
if (res.code == 0) {
|
||||
uni.requestPayment({
|
||||
provider: 'wxpay',
|
||||
timeStamp: res.data.timestamp,
|
||||
nonceStr: res.data.noncestr,
|
||||
package: res.data.package,
|
||||
signType: res.data.signType,
|
||||
paySign: res.data.sign,
|
||||
success: function(res) {
|
||||
console.log(res)
|
||||
uni.hideLoading();
|
||||
uni.showToast({
|
||||
title: '实名认证提交成功',
|
||||
icon: 'none'
|
||||
});
|
||||
setTimeout(function() {
|
||||
uni.navigateBack(1)
|
||||
}, 1000)
|
||||
},
|
||||
fail: function(err) {
|
||||
console.log('fail:' + JSON.stringify(err));
|
||||
uni.hideLoading();
|
||||
that.$queue.showToast('支付失败');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
});
|
||||
// #endif
|
||||
// #ifdef H5
|
||||
this.showpay = true
|
||||
|
||||
// #endif
|
||||
// #ifdef APP-PLUS
|
||||
this.showpay = true
|
||||
// #endif
|
||||
|
||||
},
|
||||
getUserInfo() {
|
||||
this.$Request.get("/app/userinfo/findUserInfoById").then(res => {
|
||||
if (res.code == 0) {
|
||||
this.form.name = res.data.name ? res.data.name : ''
|
||||
this.form.idNumber = res.data.idNumber ? res.data.idNumber : ''
|
||||
this.form.front = res.data.front ? res.data.front : ''
|
||||
this.form.back = res.data.back ? res.data.back : ''
|
||||
|
||||
if (res.data.status == 1) {
|
||||
this.disabled = true
|
||||
}
|
||||
if (res.data.status == 2) {
|
||||
this.form.remek = res.data.remek ? res.data.remek : ''
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
addImages(e) {
|
||||
let that = this
|
||||
uni.chooseImage({
|
||||
count: 1,
|
||||
sourceType: ['album', 'camera'],
|
||||
success: res => {
|
||||
for (let i = 0; i < 1; i++) {
|
||||
that.$queue.showLoading("上传中...");
|
||||
uni.uploadFile({ // 上传接口
|
||||
url: that.config("APIHOST1") + '/alioss/upload', //真实的接口地址
|
||||
// url: 'https://tcwm.xianmaxiong.com/sqx_fast/alioss/upload',
|
||||
filePath: res.tempFilePaths[i],
|
||||
name: 'file',
|
||||
success: (uploadFileRes) => {
|
||||
console.log(uploadFileRes)
|
||||
if (e == 1) {
|
||||
that.form.identityCardFront = JSON.parse(uploadFileRes
|
||||
.data).data
|
||||
} else if (e == 2) {
|
||||
that.form.identityCardVerso = JSON.parse(uploadFileRes
|
||||
.data).data
|
||||
} else if (e == 3) {
|
||||
that.form.selfIdentityCard = JSON.parse(uploadFileRes.data)
|
||||
.data
|
||||
}
|
||||
uni.hideLoading();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
config: function(name) {
|
||||
var info = null;
|
||||
if (name) {
|
||||
var name2 = name.split("."); //字符分割
|
||||
if (name2.length > 1) {
|
||||
info = configdata[name2[0]][name2[1]] || null;
|
||||
} else {
|
||||
info = configdata[name] || null;
|
||||
}
|
||||
if (info == null) {
|
||||
let web_config = cache.get("web_config");
|
||||
if (web_config) {
|
||||
if (name2.length > 1) {
|
||||
info = web_config[name2[0]][name2[1]] || null;
|
||||
} else {
|
||||
info = web_config[name] || null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return info;
|
||||
},
|
||||
pay() {
|
||||
if (this.openWay == 0) {
|
||||
this.$queue.showToast('请选择支付方式!')
|
||||
return;
|
||||
}
|
||||
if (this.openWay == 1) {
|
||||
// #ifdef H5
|
||||
this.$Request.postJson("/app/wxPayErrRider/wxPayJsApiRiderCertification/2", this.form).then(
|
||||
res => {
|
||||
console.log(res)
|
||||
if (res.code == 0) {
|
||||
console.log()
|
||||
this.callPay(res.data);
|
||||
} else {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '支付失败!'
|
||||
});
|
||||
}
|
||||
});
|
||||
// #endif
|
||||
|
||||
// #ifdef APP-PLUS
|
||||
// 微信APP支付 根据订单id获取支付信息
|
||||
this.$Request.postJson("/app/wxPayErrRider/wxPayJsApiRiderCertification/1", this.form).then(
|
||||
res => {
|
||||
console.log(JSON.stringify(res), '微信支付信息')
|
||||
this.isCheckPay(res.code, 'wxpay', JSON.stringify(res.data));
|
||||
});
|
||||
// #endif
|
||||
|
||||
} else if (this.openWay == 2) { //支付宝支付
|
||||
// #ifdef H5
|
||||
this.$Request.postJson("/app/wxPayErrRider/wxPayJsApiRiderCertification/5", this.form).then(
|
||||
res => {
|
||||
console.log(res)
|
||||
if (res.code == 0) {
|
||||
console.log()
|
||||
const div = document.createElement('div')
|
||||
div.innerHTML = res.data //此处form就是后台返回接收到的数据
|
||||
document.body.appendChild(div)
|
||||
document.forms[0].submit()
|
||||
} else {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '支付失败!'
|
||||
});
|
||||
}
|
||||
});
|
||||
// #endif
|
||||
console.log('支付宝')
|
||||
// APP支付宝支付
|
||||
// #ifdef APP
|
||||
this.$Request.postJson("/app/wxPayErrRider/wxPayJsApiRiderCertification/4", this.form).then(
|
||||
res => {
|
||||
console.log(JSON.stringify(res), '支付宝支付信息')
|
||||
this.setPayment('alipay', res.data);
|
||||
});
|
||||
// #endif
|
||||
}
|
||||
},
|
||||
callPay: function(response) {
|
||||
console.log(response)
|
||||
if (typeof WeixinJSBridge === "undefined") {
|
||||
if (document.addEventListener) {
|
||||
document.addEventListener('WeixinJSBridgeReady', this.onBridgeReady(response), false);
|
||||
} else if (document.attachEvent) {
|
||||
document.attachEvent('WeixinJSBridgeReady', this.onBridgeReady(response));
|
||||
document.attachEvent('onWeixinJSBridgeReady', this.onBridgeReady(response));
|
||||
}
|
||||
} else {
|
||||
this.onBridgeReady(response);
|
||||
}
|
||||
},
|
||||
onBridgeReady: function(response) {
|
||||
let that = this;
|
||||
// if (!response.package) {
|
||||
// return;
|
||||
// }
|
||||
console.log(response, 111111)
|
||||
WeixinJSBridge.invoke(
|
||||
'getBrandWCPayRequest', {
|
||||
"appId": response.appid, //公众号名称,由商户传入
|
||||
"timeStamp": response.timestamp, //时间戳,自1970年以来的秒数
|
||||
"nonceStr": response.noncestr, //随机串
|
||||
"package": response.package,
|
||||
"signType": response.signType, //微信签名方式:
|
||||
"paySign": response.sign //微信签名
|
||||
},
|
||||
function(res) {
|
||||
console.log(res, '/*-/*-/*-')
|
||||
if (res.err_msg === "get_brand_wcpay_request:ok") {
|
||||
// 使用以上方式判断前端返回,微信团队郑重提示:
|
||||
//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
|
||||
uni.showLoading({
|
||||
title: '支付成功'
|
||||
});
|
||||
setTimeout(function() {
|
||||
uni.hideLoading();
|
||||
uni.navigateBack()
|
||||
}, 1000);
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
}
|
||||
WeixinJSBridge.log(response.err_msg);
|
||||
}
|
||||
);
|
||||
},
|
||||
isCheckPay(status, name, order) {
|
||||
if (status == 0) {
|
||||
this.setPayment(name, order);
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
uni.showToast({
|
||||
title: '支付信息有误',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
},
|
||||
setPayment(name, order) {
|
||||
console.log(name, '*-*-*', order)
|
||||
uni.requestPayment({
|
||||
provider: name,
|
||||
orderInfo: order, //微信、支付宝订单数据
|
||||
success: function(res) {
|
||||
console.log(res)
|
||||
uni.hideLoading();
|
||||
uni.showLoading({
|
||||
title: '支付成功'
|
||||
});
|
||||
setTimeout(function() {
|
||||
uni.navigateBack()
|
||||
}, 1000);
|
||||
},
|
||||
fail: function(err) {
|
||||
console.log(err)
|
||||
uni.hideLoading();
|
||||
},
|
||||
complete() {
|
||||
uni.hideLoading();
|
||||
}
|
||||
});
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.footer {
|
||||
/* // padding-left: 140upx; */
|
||||
/* justify-content: center; */
|
||||
margin-top: 32upx;
|
||||
font-size: 24upx;
|
||||
color: #666666;
|
||||
display: flex;
|
||||
text-align: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
/* 支付弹框 */
|
||||
.popup_pay {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pay_btns {
|
||||
width: 90%;
|
||||
margin: 0 auto 40rpx;
|
||||
text-align: center;
|
||||
background: #FF7F00;
|
||||
height: 80rpx;
|
||||
border-radius: 16rpx;
|
||||
color: #ffffff;
|
||||
line-height: 80rpx;
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
<template>
|
||||
<view class="content">
|
||||
<view class="kefu_box">
|
||||
<view class="title">联系电话</view>
|
||||
<view style="font-size: 32rpx;">{{mobile}}</view>
|
||||
<view class="btn" @click="PhoneCall">一键拨打</view>
|
||||
<view class="image">
|
||||
<image src="../../../static/logo.png"></image>
|
||||
</view>
|
||||
<view class="tit">长按二维码添加微信</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
mobile: '17884849832'
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
PhoneCall() {
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: this.mobile //仅为示例
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
page {
|
||||
background: #F2F2F2;
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.kefu_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
background: #ffffff;
|
||||
border-radius: 17rpx;
|
||||
margin-top: 40rpx;
|
||||
padding: 35rpx 0rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.title {
|
||||
padding: 20rpx 0rpx;
|
||||
font-size: 41rpx;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.btn {
|
||||
background: #FF6A04;
|
||||
color: #ffffff;
|
||||
width: 42%;
|
||||
margin: 0 auto;
|
||||
border-radius: 54rpx;
|
||||
padding: 20rpx 0rpx;
|
||||
font-size: 37rpx;
|
||||
letter-spacing: 2rpx;
|
||||
margin-top: 25rpx;
|
||||
}
|
||||
|
||||
.image {
|
||||
width: 40%;
|
||||
height: 300rpx;
|
||||
margin: 0 auto;
|
||||
padding: 20rpx 0rpx;
|
||||
}
|
||||
|
||||
.image image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.tit {
|
||||
color: #666666;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,645 @@
|
|||
<template>
|
||||
<view>
|
||||
<view style="width: 100%;">
|
||||
<view style="display: flex;flex-direction: column;" v-for="(item,index) in ListItem" :key='index' >
|
||||
<view style="margin-top: 15rpx;width: 100%;text-align: center;font-size: 26rpx;color: #999999;">
|
||||
{{item.createTime}}</view>
|
||||
<view v-if="item.sendType === 2" style="width: 83%;margin-right: 15%;">
|
||||
<view class="chat-listitem" style="float: left;margin-left: 10rpx;">
|
||||
<view>
|
||||
<image src="../../../static/logo.png" class="chat-listitem-image"></image>
|
||||
</view>
|
||||
<view v-if="item.content && item.type === 1" class="chat-listitem-text"
|
||||
style="margin-left: 20rpx;">{{item.content}}</view>
|
||||
<image @tap="viewImg(item.content)" v-if="item.content && item.type === 2" :src="item.content"
|
||||
style="height: 200rpx;width: 200rpx;margin-left: 20rpx;"></image>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view v-if="item.sendType === 1" style="width: 83%;margin-left: 15%;">
|
||||
<view class="chat-listitem" style="float: right;">
|
||||
<view v-if="item.content && item.type === 1" @longpress="copy(item.content)"
|
||||
class="chat-listitem-text" style="margin-right: 20rpx;">{{item.content}}</view>
|
||||
<view v-if="item.content && item.type === 4" @click="goShop(item.content[3])"
|
||||
style="width: 400rpx;background: #FFFFFF;height: max-content;margin-right: 20rpx;margin-top: 10rpx;border-radius: 20rpx;">
|
||||
<image :src="item.content[0]" class="chat-listitem-image-type4"
|
||||
style="width: 400rpx;height: 350rpx;"></image>
|
||||
<view style="padding: 10rpx;padding-bottom: 20rpx;">
|
||||
<view style="color: #ed5732;font-size: 34rpx;"><text style="font-size: 22rpx;">¥ </text>
|
||||
{{item.content[2]}}</view>
|
||||
<view
|
||||
style="overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;width: 100%;height: 75upx;">
|
||||
{{item.content[1]}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="item.content && item.type === 3"
|
||||
style="width: 500rpx;background: #FFFFFF;height: max-content;margin-right: 20rpx;margin-top: 10rpx;border-radius: 20rpx;padding: 15rpx 10rpx;">
|
||||
<view style="color: #000000;font-weight: 600;margin-left: 10rpx;">你正在咨询的订单</view>
|
||||
<view style="display: flex;">
|
||||
<image :src="item.content[0]" class="chat-listitem-image-type4"
|
||||
style="margin-left: 7rpx;margin-top: 20rpx;width: 110rpx;height: 110rpx;"></image>
|
||||
<view
|
||||
style="margin-top: 15rpx;padding: 10rpx 0rpx 5rpx 10rpx;width: 75%;background: #f5f5f5;margin-left: 10rpx;">
|
||||
<view
|
||||
style="font-size: 28rpx;overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;height: 75upx;width: 100%;">
|
||||
{{item.content[1]}}</view>
|
||||
<view style="color: #ed5732;font-size: 28rpx;"><text style="font-size: 22rpx;">¥
|
||||
</text>{{item.content[5]}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view style="color: #999999;margin-top: 10rpx;margin-left: 12rpx;">
|
||||
<view>订单编号:{{item.content[3]}}</view>
|
||||
<view style="margin-top: 10rpx;">创建时间:{{item.content[4]}}</view>
|
||||
</view>
|
||||
<view
|
||||
style="float: right;margin-right: 10rpx;margin-top: 15rpx;background: #F9221D;color: #FFFFFF;border-radius: 50rpx;width: 150rpx;height: 50rpx;font-size: 24rpx;text-align: center;line-height: 50rpx;"
|
||||
@click="goDingdanDetail(item.content[2])">查看</view>
|
||||
</view>
|
||||
<image @tap="viewImg(item.content)" v-if="item.content && item.type === 2" :src="item.content"
|
||||
style="height: 200rpx;width: 200rpx;margin-right: 20rpx;"></image>
|
||||
<view>
|
||||
<image v-if="item.chat.userHead" :src="item.chat.userHead" class="chat-listitem-image">
|
||||
</image>
|
||||
<image v-else src="../../../static/logo.png" class="chat-listitem-image"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view v-if="item.sendType === 4" style="width: 83%;margin-left: 15%;">
|
||||
<view class="chat-listitem" style="float: right;">
|
||||
<view style="height: max-content;">
|
||||
<image :src="type4[0]" mode=""></image>
|
||||
</view>
|
||||
<image @tap="viewImg(item.content)" v-if="item.content && item.type === 2" :src="item.content" style="height: 200rpx;width: 170rpx;margin-right: 20rpx;"></image>
|
||||
<view>
|
||||
<image :src="item.chat.userHead" class="chat-listitem-image"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="ShopState"
|
||||
style="width: 95%;margin-left: 20rpx;height: 150upx;position: fixed;bottom: 120upx;z-index: 99;background-color: #FFFFFF;border-radius: 20rpx;">
|
||||
<view style="display: flex;width: 100%;color: #000000;padding: 20rpx;">
|
||||
<image :src="Shopimage" style="width: 110rpx;height: 110rpx;"></image>
|
||||
<view style="margin-left: 20rpx;width: 400rpx;">
|
||||
<view
|
||||
style="font-size: 34rpx;color: #000000;overflow: hidden;text-overflow: ellipsis;flex-wrap: nowrap;white-space: nowrap;width: 98%;">
|
||||
{{ShopTitle}}</view>
|
||||
<view style="margin-top: 20rpx;color: #ed5732;font-size: 34rpx;">¥{{Shopmoney}}</view>
|
||||
</view>
|
||||
<view style="text-align: right;">
|
||||
<image @click="ShopClose" src="../../../static/image/close.png"
|
||||
style="width: 30rpx;height: 30rpx;"></image>
|
||||
<view
|
||||
style="margin-top: 20rpx;background: #F9221D;color: #FFFFFF;border-radius: 50rpx;width: 150rpx;height: 50rpx;font-size: 24rpx;text-align: center;line-height: 50rpx;"
|
||||
@click="goMaijia">发送给商家</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view v-if="orderState"
|
||||
style="width: 95%;margin-left: 20rpx;height: 150upx;position: fixed;bottom: 120upx;z-index: 99;background-color: #FFFFFF;border-radius: 20rpx;">
|
||||
<view style="display: flex;width: 100%;color: #000000;padding: 20rpx;">
|
||||
<image :src="orderimage" style="width: 110rpx;height: 110rpx;"></image>
|
||||
<view style="margin-left: 20rpx;width: 400rpx;">
|
||||
<view
|
||||
style="font-size: 34rpx;color: #000000;overflow: hidden;text-overflow: ellipsis;flex-wrap: nowrap;white-space: nowrap;width: 98%;">
|
||||
你可能想咨询该订单</view>
|
||||
<view style="margin-top: 20rpx;color: #ed5732;font-size: 34rpx;">¥{{ordermoney}}</view>
|
||||
</view>
|
||||
<view style="text-align: right;">
|
||||
<image @click="orderClose" src="../../../static/image/close.png"
|
||||
style="width: 30rpx;height: 30rpx;"></image>
|
||||
<view
|
||||
style="margin-top: 20rpx;background: #F9221D;color: #000000;border-radius: 50rpx;width: 150rpx;height: 50rpx;font-size: 24rpx;text-align: center;line-height: 50rpx;"
|
||||
@click="goDingdan">发送订单</view>
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<!-- 底部聊天输入框 -->
|
||||
<view class="input-box">
|
||||
<!-- <view class="justify-between padding-lr" style="display: flex;margin-top: 15rpx;width: 100%;background-color: #eee;padding-top: 4upx;">
|
||||
<image src="../../../static/image/add.png" @click="chooseImage(['album'])"
|
||||
style="width: 60rpx;height: 60rpx;margin-top: 8rpx;margin-right: 12rpx;"></image>
|
||||
<input confirm-type="send" @confirm='setChatSave(1)' type="text" v-model="content"
|
||||
style="width: 72%;height: 70rpx;background: #fff;margin: 4rpx 10rpx 0;border-radius: 70rpx;padding-left: 10rpx;color: #000000;" />
|
||||
<view class="save" @tap='setChatSave(1)'>发送</view>
|
||||
</view> -->
|
||||
<view class="justify-between padding-lr align-center"
|
||||
style="display: flex;width: 100%;background-color: #EEEEEE;">
|
||||
<image src="../../../static/image/add.png" @click="chooseImage(['album'])"
|
||||
style="width: 60rpx;height: 60rpx;margin-right: 12rpx;border-radius: 50upx;"></image>
|
||||
<input confirm-type="send" @confirm='setChatSave(1)' type="text" v-model="content"
|
||||
style="width: 72%;height: 70rpx;background: #fff;margin: 0 10rpx;border-radius: 5rpx;padding-left: 10rpx;" />
|
||||
<view class="save" @tap='setChatSave(1)'>发送</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import configdata from '../../../common/config.js';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
connected: false,
|
||||
connecting: false,
|
||||
msg: false,
|
||||
type4: [],
|
||||
listRight: {
|
||||
chat: {
|
||||
userHead: ""
|
||||
},
|
||||
content: "",
|
||||
sendType: 1,
|
||||
type: 1
|
||||
},
|
||||
content: '',
|
||||
chatId: '',
|
||||
type: 1,
|
||||
ListItem: [],
|
||||
ShopState: false,
|
||||
ShopordersId: '',
|
||||
Shopimage: '',
|
||||
Shopmoney: '',
|
||||
ShopTitle: '',
|
||||
orderState: false,
|
||||
ordersId: '',
|
||||
orderimage: '',
|
||||
orderNum: '',
|
||||
ordermoney: '',
|
||||
orderTitle: '',
|
||||
orderCreateTime: '',
|
||||
className: '',
|
||||
Shopsales: '',
|
||||
hand: 1,
|
||||
index: 0,
|
||||
page: 0,
|
||||
size: 1000,
|
||||
countDown: ''
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
showMsg() {
|
||||
if (this.connected) {
|
||||
if (this.msg) {
|
||||
return '收到消息:' + this.msg
|
||||
} else {
|
||||
return '等待接收消息'
|
||||
}
|
||||
} else {
|
||||
return '尚未连接'
|
||||
}
|
||||
}
|
||||
},
|
||||
onUnload() {
|
||||
uni.closeSocket()
|
||||
uni.hideLoading()
|
||||
},
|
||||
onLoad(d) {
|
||||
if (d.className) {
|
||||
this.className = d.className;
|
||||
if (d.className === 'shop') {
|
||||
this.ShopState = true;
|
||||
this.ShopordersId = d.ordersId;
|
||||
this.Shopimage = d.image;
|
||||
this.Shopmoney = d.money;
|
||||
this.Shopsales = d.sales;
|
||||
this.ShopTitle = d.title;
|
||||
} else if (d.className === 'order') {
|
||||
this.orderState = true;
|
||||
this.ordersId = d.id;
|
||||
this.orderimage = d.image;
|
||||
this.ordermoney = d.money;
|
||||
this.orderTitle = d.title;
|
||||
this.orderNum = d.orderNum;
|
||||
this.orderCreateTime = d.createTime;
|
||||
}
|
||||
}
|
||||
this.getChatSave();
|
||||
this.connect();
|
||||
},
|
||||
onShow() {
|
||||
if (this.connected || this.connecting) {
|
||||
|
||||
} else {
|
||||
this.connect();
|
||||
}
|
||||
},
|
||||
onHide() {
|
||||
uni.closeSocket()
|
||||
},
|
||||
methods: {
|
||||
copy(content) {
|
||||
uni.showModal({
|
||||
title: '温馨提示',
|
||||
content: '确认要复制此文字吗?',
|
||||
showCancel: true,
|
||||
cancelText: '取消',
|
||||
confirmText: '确认',
|
||||
success: res => {
|
||||
if (res.confirm) {
|
||||
uni.setClipboardData({
|
||||
data: content,
|
||||
success: r => {
|
||||
this.$queue.showToast('复制成功');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
h5Copy(content) {
|
||||
if (!document.queryCommandSupported('copy')) {
|
||||
// 不支持
|
||||
return false
|
||||
}
|
||||
let textarea = document.createElement("textarea")
|
||||
textarea.value = content
|
||||
textarea.readOnly = "readOnly"
|
||||
document.body.appendChild(textarea)
|
||||
textarea.select() // 选择对象
|
||||
textarea.setSelectionRange(0, content.length) //核心
|
||||
let result = document.execCommand("copy") // 执行浏览器复制命令
|
||||
textarea.remove()
|
||||
return result
|
||||
},
|
||||
getDateDiff(data) {
|
||||
// 传进来的data必须是日期格式,不能是时间戳
|
||||
//var str = data;
|
||||
//将字符串转换成时间格式
|
||||
var timePublish = new Date(data);
|
||||
var timeNow = new Date();
|
||||
var minute = 1000 * 60;
|
||||
var hour = minute * 60;
|
||||
var day = hour * 24;
|
||||
var month = day * 30;
|
||||
var result = "2";
|
||||
|
||||
var diffValue = timeNow - timePublish;
|
||||
var diffMonth = diffValue / month;
|
||||
var diffWeek = diffValue / (7 * day);
|
||||
var diffDay = diffValue / day;
|
||||
var diffHour = diffValue / hour;
|
||||
var diffMinute = diffValue / minute;
|
||||
|
||||
|
||||
if (diffMonth > 3) {
|
||||
result = timePublish.getFullYear() + "-";
|
||||
result += timePublish.getMonth() + "-";
|
||||
result += timePublish.getDate();
|
||||
} else if (diffMonth > 1) { //月
|
||||
result = data.substring(0, 10);
|
||||
} else if (diffWeek > 1) { //周
|
||||
result = data.substring(0, 10);
|
||||
} else if (diffDay > 1) { //天
|
||||
result = data.substring(0, 10);
|
||||
} else if (diffHour > 1) { //小时
|
||||
result = parseInt(diffHour) + "小时前";
|
||||
} else if (diffMinute > 1) { //分钟
|
||||
result = parseInt(diffMinute) + "分钟前";
|
||||
} else {
|
||||
result = "刚刚";
|
||||
}
|
||||
return result;
|
||||
},
|
||||
goDingdanDetail(id) {
|
||||
uni.navigateTo({
|
||||
url: '../member/orderdetail?id=' + id
|
||||
});
|
||||
},
|
||||
goShop(ordersId) {
|
||||
uni.navigateTo({
|
||||
url: './commoditydetail?ordersId=' + ordersId
|
||||
});
|
||||
},
|
||||
ShopClose() {
|
||||
this.ShopState = false;
|
||||
},
|
||||
orderClose() {
|
||||
this.orderState = false;
|
||||
},
|
||||
goDingdan() {
|
||||
this.orderState = false;
|
||||
this.setChatSave(3);
|
||||
},
|
||||
goMaijia() {
|
||||
this.ShopState = false;
|
||||
this.setChatSave(4);
|
||||
},
|
||||
connect() {
|
||||
let userId = this.$queue.getData('userId');
|
||||
if (this.connected || this.connecting) {
|
||||
uni.showModal({
|
||||
content: '正在连接或者已经连接,请勿重复连接',
|
||||
showCancel: false
|
||||
})
|
||||
return false
|
||||
}
|
||||
let token = uni.getStorageSync('token')
|
||||
this.connecting = true
|
||||
uni.showLoading({
|
||||
title: '连接中...'
|
||||
})
|
||||
uni.connectSocket({
|
||||
// url: 'wss://game.shengqianxiong.com.cn/wss/websocket/' + userId,
|
||||
// url: 'ws://74165o0188.uicp.fun/sqx_fast/websocket/' + userId,
|
||||
url: this.config("WSHOST") + userId,
|
||||
data() {
|
||||
return {
|
||||
msg: 'Hello'
|
||||
}
|
||||
},
|
||||
header: {
|
||||
'content-type': 'application/json',
|
||||
'token': token
|
||||
},
|
||||
method: 'GET',
|
||||
success(res) {
|
||||
// 这里是接口调用成功的回调,不是连接成功的回调,请注意
|
||||
},
|
||||
fail(err) {
|
||||
// 这里是接口调用失败的回调,不是连接失败的回调,请注意
|
||||
}
|
||||
})
|
||||
uni.onSocketOpen((res) => {
|
||||
this.connecting = false
|
||||
this.connected = true
|
||||
uni.hideLoading()
|
||||
// uni.showToast({
|
||||
// icon: 'none',
|
||||
// title: '连接成功'
|
||||
// })
|
||||
console.log('onOpen', res);
|
||||
})
|
||||
uni.onSocketError((err) => {
|
||||
this.connecting = false
|
||||
this.connected = false
|
||||
uni.hideLoading()
|
||||
uni.showModal({
|
||||
content: '网络较差,请稍后再试',
|
||||
showCancel: false
|
||||
})
|
||||
console.log('onError', err);
|
||||
})
|
||||
uni.onSocketMessage((res) => {
|
||||
// let that = this;
|
||||
// let datas = JSON.parse(res.data)
|
||||
// let data = {
|
||||
// chat: {
|
||||
// userHead: '../../static/logo.png'
|
||||
// },
|
||||
// content: datas.content,
|
||||
// type: datas.type,
|
||||
// sendType: datas.sendType
|
||||
// }
|
||||
// that.ListItem.push(data);
|
||||
this.getTimeOrListItem1();
|
||||
console.log('onMessage', res)
|
||||
})
|
||||
uni.onSocketClose((res) => {
|
||||
this.connected = false
|
||||
this.startRecive = false
|
||||
this.msg = false
|
||||
console.log('onClose', res)
|
||||
})
|
||||
},
|
||||
close() {
|
||||
uni.closeSocket()
|
||||
},
|
||||
getTimeOrListItem1() {
|
||||
this.$Request.getT('/app/chats/list?chatId=' + this.chatId).then(
|
||||
res => {
|
||||
this.ListItem = [];
|
||||
if (res.data) {
|
||||
var time = '';
|
||||
res.data.forEach(d => {
|
||||
d.createTime = this.getDateDiff(d.createTime);
|
||||
if (d.createTime === time) {
|
||||
d.createTime = '';
|
||||
} else {
|
||||
time = d.createTime;
|
||||
}
|
||||
if (!d.chat.userHead) {
|
||||
// d.chat.userHead = '../../static/logo.png';
|
||||
let avatar = this.$queue.getData('avatar');
|
||||
d.chat.userHead = avatar
|
||||
}
|
||||
if (d.type === 4) {
|
||||
let data = d.content.split(',');
|
||||
d.content = data;
|
||||
}
|
||||
if (d.type === 3) {
|
||||
let data = d.content.split(',');
|
||||
d.content = data;
|
||||
}
|
||||
this.ListItem.push(d);
|
||||
});
|
||||
setTimeout(() => {
|
||||
uni.pageScrollTo({
|
||||
scrollTop: 99999,
|
||||
duration: 0
|
||||
});
|
||||
}, 50);
|
||||
}
|
||||
uni.hideLoading();
|
||||
});
|
||||
},
|
||||
getChatSave() {
|
||||
let userId = this.$queue.getData('userId');
|
||||
let phone = this.$queue.getData('phone');
|
||||
let userName = this.$queue.getData('userName');
|
||||
if (!phone) {
|
||||
phone = this.$queue.getData('userName');
|
||||
}
|
||||
let avatar = this.$queue.getData('avatar');
|
||||
let data = {
|
||||
userId: userId,
|
||||
userHead: avatar,
|
||||
userName: userName,
|
||||
storeId: '0',
|
||||
storeHead: '码兄外卖',
|
||||
storeName: ''
|
||||
}
|
||||
this.$Request.postJson('/app/chats/save', data).then(res => {
|
||||
if (res.status === 0) {
|
||||
this.chatId = res.data.chatId;
|
||||
uni.showLoading({
|
||||
title: '加载中...'
|
||||
});
|
||||
this.getTimeOrListItem1();
|
||||
}
|
||||
});
|
||||
},
|
||||
setChatSave(type) {
|
||||
//type:1文字 2图片
|
||||
if (type === 1 && this.content == '') {
|
||||
this.$queue.showToast('请输入聊天内容');
|
||||
return;
|
||||
}
|
||||
if (this.chatId == '' || this.chatId == undefined) {
|
||||
this.$queue.showToast('网络较差,请稍后再试');
|
||||
return;
|
||||
}
|
||||
let userId = this.$queue.getData('userId');
|
||||
if (type === 4) {
|
||||
this.content = this.Shopimage + ',' + this.ShopTitle + ',' + this.Shopmoney + ',' + this.ShopordersId;
|
||||
}
|
||||
if (type === 3) {
|
||||
this.content = this.orderimage + ',' + this.orderTitle + ',' + this.ordersId + ',' + this.orderNum +
|
||||
',' + this.orderCreateTime +
|
||||
',' + this.ordermoney
|
||||
}
|
||||
let data = {
|
||||
userId: userId,
|
||||
content: this.content,
|
||||
chatId: this.chatId,
|
||||
type: type,
|
||||
storeId: '0',
|
||||
sendType: '1'
|
||||
}
|
||||
data = JSON.stringify(data);
|
||||
let that = this;
|
||||
uni.sendSocketMessage({
|
||||
data: data,
|
||||
success(res) {
|
||||
let avatar = that.$queue.getData('avatar');
|
||||
if (!avatar) {
|
||||
avatar = '../../static/logo.png';
|
||||
}
|
||||
|
||||
setTimeout(() => {
|
||||
that.getTimeOrListItem1();
|
||||
}, 50);
|
||||
console.log(that.content);
|
||||
},
|
||||
fail(err) {
|
||||
console.log(err);
|
||||
}
|
||||
})
|
||||
this.content = '';
|
||||
},
|
||||
//发送图片
|
||||
chooseImage(sourceType) {
|
||||
uni.chooseImage({
|
||||
count: 1,
|
||||
sourceType: ['album', 'camera'],
|
||||
success: res => {
|
||||
for (let i = 0; i < res.tempFilePaths.length; i++) {
|
||||
this.$queue.showLoading("上传中...");
|
||||
uni.uploadFile({ // 上传接口
|
||||
url: this.config("APIHOST") + '/alioss/upload', //真实的接口地址
|
||||
filePath: res.tempFilePaths[i],
|
||||
name: 'file',
|
||||
success: (uploadFileRes) => {
|
||||
this.content = JSON.parse(uploadFileRes.data).data;
|
||||
this.setChatSave(2);
|
||||
uni.hideLoading();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
config: function(name) {
|
||||
var info = null;
|
||||
if (name) {
|
||||
var name2 = name.split("."); //字符分割
|
||||
if (name2.length > 1) {
|
||||
info = configdata[name2[0]][name2[1]] || null;
|
||||
} else {
|
||||
info = configdata[name] || null;
|
||||
}
|
||||
if (info == null) {
|
||||
// let web_config = cache.get("web_config");
|
||||
// if (web_config) {
|
||||
// if (name2.length > 1) {
|
||||
// info = web_config[name2[0]][name2[1]] || null;
|
||||
// } else {
|
||||
// info = web_config[name] || null;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
return info;
|
||||
},
|
||||
//查看大图
|
||||
viewImg(item) {
|
||||
let imgsArray = [];
|
||||
imgsArray[0] = item;
|
||||
uni.previewImage({
|
||||
current: 0,
|
||||
urls: imgsArray
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
page {
|
||||
/* background: #1c1b20; */
|
||||
}
|
||||
|
||||
.input-box {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
height: 100rpx;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
box-sizing: content-box;
|
||||
z-index: 999;
|
||||
/* background-color: #ececec; */
|
||||
/* padding: 0 5rpx; */
|
||||
}
|
||||
|
||||
.chat-listitem {
|
||||
display: flex;
|
||||
margin-top: 20rpx;
|
||||
padding: 10rpx;
|
||||
}
|
||||
|
||||
.chat-listitem-text {
|
||||
color: #000000;
|
||||
background: #FFFFFF;
|
||||
margin-top: 10rpx;
|
||||
width: fit-content;
|
||||
padding: 15rpx;
|
||||
font-size: 30rpx;
|
||||
height: max-content;
|
||||
word-wrap: break-word;
|
||||
word-break: break-all;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
|
||||
.chat-listitem-image-type4 {
|
||||
color: #000000;
|
||||
background: #FFFFFF;
|
||||
width: fit-content;
|
||||
font-size: 30rpx;
|
||||
height: max-content;
|
||||
word-wrap: break-word;
|
||||
word-break: break-all;
|
||||
border-top-left-radius: 20rpx;
|
||||
border-top-right-radius: 20rpx;
|
||||
}
|
||||
|
||||
.chat-listitem-image {
|
||||
margin-top: 5rpx;
|
||||
width: 75rpx;
|
||||
height: 75rpx;
|
||||
border-radius: 5rpx;
|
||||
}
|
||||
|
||||
.save {
|
||||
width: 130rpx;
|
||||
text-align: center;
|
||||
border-radius: 10rpx;
|
||||
height: 70rpx;
|
||||
color: #FFF;
|
||||
background: #1789FD;
|
||||
margin: 5rpx 10rpx 0;
|
||||
line-height: 70rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,238 @@
|
|||
<template>
|
||||
<view style="height: 100vh;">
|
||||
<!-- border-radius: 32upx; -->
|
||||
<view style="text-align: center;background: #FFFFFF;padding: 30upx;">
|
||||
<view class="item">
|
||||
<view class="lef">
|
||||
<image src="../../../static/my/QQ.png"></image>
|
||||
<view class="txt">
|
||||
<text>QQ</text>
|
||||
<text>{{qq}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view @click="copyHref" class="copy" data-txt='qq'>复制QQ</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="lef">
|
||||
<image src="../../../static/my/wx.png"></image>
|
||||
<view class="txt">
|
||||
<text>微信</text>
|
||||
<text>{{weixin}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view @click="copyHref" class="copy" data-txt='weixin'>复制微信</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="lef">
|
||||
<image src="../../../static/my/phone.png"></image>
|
||||
<view class="txt">
|
||||
<text>电话</text>
|
||||
<text>{{phone}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view @click="copyHref" data-txt='phone' class="copy">拨打电话</view>
|
||||
</view>
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view class="item">
|
||||
<view class="lef">
|
||||
<image src="../../../static/my/kf.png"></image>
|
||||
<view class="txt">
|
||||
<text>在线客服</text>
|
||||
<text>在线客服专员为你解答问题</text>
|
||||
</view>
|
||||
</view>
|
||||
<button class="copys" data-txt='qq' open-type="contact">在线客服</button>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
image: 'https://taobao.xianmxkj.com/custom.jpg',
|
||||
isWeiXin: false,
|
||||
weixin: '',
|
||||
qq: '',
|
||||
phone: '',
|
||||
webviewStyles: {
|
||||
progress: {
|
||||
color: '#FF2638'
|
||||
}
|
||||
}
|
||||
};
|
||||
},
|
||||
onLoad() {
|
||||
// #ifdef H5
|
||||
let ua = navigator.userAgent.toLowerCase();
|
||||
if (ua.indexOf('micromessenger') !== -1) {
|
||||
this.isWeiXin = true;
|
||||
}
|
||||
// #endif
|
||||
|
||||
//微信号码
|
||||
this.$Request.getT('/app/common/type/44').then(res => {
|
||||
if (res.code == 0) {
|
||||
if (res.data && res.data.value) {
|
||||
this.weixin = res.data.value;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//客服电话
|
||||
this.$Request.getT('/app/common/type/252').then(res => {
|
||||
if (res.code == 0) {
|
||||
if (res.data && res.data.value) {
|
||||
this.phone = res.data.value;
|
||||
}
|
||||
}
|
||||
});
|
||||
//qq号码
|
||||
this.$Request.getT('/app/common/type/274').then(res => {
|
||||
if (res.code == 0) {
|
||||
if (res.data && res.data.value) {
|
||||
this.qq = res.data.value;
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
onPullDownRefresh: function() {
|
||||
uni.stopPullDownRefresh(); // 停止刷新
|
||||
},
|
||||
methods: {
|
||||
//邀请码复制
|
||||
copyHref(e) {
|
||||
console.log(e.target.dataset.txt)
|
||||
if (e.target.dataset.txt == 'qq') {
|
||||
this.copy(this.qq)
|
||||
} else if (e.target.dataset.txt == 'weixin') {
|
||||
this.copy(this.weixin)
|
||||
} else {
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: this.phone
|
||||
})
|
||||
|
||||
}
|
||||
},
|
||||
copy(item) {
|
||||
uni.setClipboardData({
|
||||
data: item,
|
||||
success: r => {
|
||||
this.$queue.showToast('复制成功');
|
||||
}
|
||||
});
|
||||
},
|
||||
saveImg() {
|
||||
let that = this;
|
||||
uni.saveImageToPhotosAlbum({
|
||||
filePath: that.image,
|
||||
success(res) {
|
||||
that.$queue.showToast('保存成功');
|
||||
}
|
||||
});
|
||||
},
|
||||
rests() {
|
||||
uni.showToast({
|
||||
title: '已刷新请再次长按识别',
|
||||
mask: false,
|
||||
duration: 1500,
|
||||
icon: 'none'
|
||||
});
|
||||
window.location.reload();
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
/* @import '../../static/css/index.css'; */
|
||||
|
||||
.item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 36rpx;
|
||||
}
|
||||
|
||||
.items {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.lef {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.item image {
|
||||
width: 89rpx;
|
||||
height: 89rpx;
|
||||
margin-right: 26rpx;
|
||||
}
|
||||
|
||||
.item .txt {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-start;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.txt>text:nth-child(1) {
|
||||
font-size: 32rpx;
|
||||
font-family: PingFang SC;
|
||||
font-weight: bold;
|
||||
color: #1F2029;
|
||||
/* line-height: 87rpx; */
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.txt>text:nth-child(2) {
|
||||
font-size: 28rpx;
|
||||
font-family: PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #666666;
|
||||
/* line-height: 87rpx; */
|
||||
}
|
||||
|
||||
.copy {
|
||||
width: 140rpx;
|
||||
height: 54rpx;
|
||||
background: #FF1E43;
|
||||
border-radius: 27rpx;
|
||||
text-align: center;
|
||||
line-height: 54rpx;
|
||||
font-size: 24rpx;
|
||||
font-family: PingFang SC;
|
||||
font-weight: bold;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.copys {
|
||||
height: 54rpx;
|
||||
background: #FF1E43;
|
||||
border-radius: 27rpx;
|
||||
text-align: center;
|
||||
line-height: 54rpx;
|
||||
font-size: 24rpx;
|
||||
font-family: PingFang SC;
|
||||
font-weight: bold;
|
||||
color: #FFFFFF;
|
||||
margin-right: 0rpx;
|
||||
}
|
||||
|
||||
/*
|
||||
<!-- <view style="font-size: 38upx;color: #000000">添加客服微信咨询</view>
|
||||
<view style="font-size: 32upx;margin-top: 32upx;color: #000000">微信号:{{weixin}}</view>
|
||||
<view @click="copyHref" style="width:200upx;margin-top: 32upx;font-size: 30upx;margin-left: 36%;color: #FFFFFF;background: #FF2638;padding: 4upx 20upx;border-radius: 24upx;">一键复制</view>
|
||||
|
||||
<image @click="saveImg" mode="aspectFit" style="margin-top: 32upx" :src="image"></image>
|
||||
<view style="font-size: 28upx;color: #000000;margin-top: 32upx" v-if="isWeiXin">{{ isWeiXin ? '长按识别上方二维码' : '' }}</view>
|
||||
|
||||
|
||||
|
||||
<view v-if="isWeiXin" style="font-size: 24upx;color: #000000;margin-top: 80upx" @click="rests">无法识别?</view> -->
|
||||
|
||||
*/
|
||||
</style>
|
||||
|
|
@ -0,0 +1,170 @@
|
|||
<template>
|
||||
<view class="">
|
||||
<view v-if="chatList.length" class="content ">
|
||||
<view class="radius padding-lr-sm bg" style="margin-top: 4rpx;" @click="goIM(item)"
|
||||
v-for="(item,index) in chatList" :key='index'>
|
||||
<view class="flex padding-tb " v-if="userId == item.userId">
|
||||
<view>
|
||||
<u-image shape="circle" width='80rpx' height="80rpx" :src="item.shopCover"></u-image>
|
||||
</view>
|
||||
<view class="flex-sub margin-left-sm">
|
||||
<view class="flex justify-between">
|
||||
<view style="width: 55%;">{{item.shopName}}</view>
|
||||
<view class="text-grey">{{item.createTime}}</view>
|
||||
</view>
|
||||
<view class="flex justify-between">
|
||||
<view class="text-grey">{{ item.messageType == 1? item.content : '[图片]'}}</view>
|
||||
<view v-if="item.riderUnread"
|
||||
style="height: 32rpx;width: 32rpx;border-radius: 100rpx;background-color: red;color: #FFF;text-align: center;">
|
||||
{{item.riderUnread}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="flex padding-tb" v-else>
|
||||
<view>
|
||||
<u-image shape="circle" width='80rpx' height="80rpx" :src="item.shopCover"></u-image>
|
||||
</view>
|
||||
<view class="flex-sub margin-left-sm">
|
||||
<view class="flex justify-between">
|
||||
<view style="width: 55%;">{{item.shopName}}</view>
|
||||
<view class="text-grey">{{item.createTime}}</view>
|
||||
</view>
|
||||
<view class="flex justify-between">
|
||||
<view class="text-grey">{{ item.messageType == 1? item.content : '[图片]'}}</view>
|
||||
<view v-if="item.riderUnread"
|
||||
style="height: 32rpx;width: 32rpx;border-radius: 100rpx;background-color: red;color: #FFF;text-align: center;">
|
||||
{{item.riderUnread}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<empty v-if="!chatList.length && !msgList.length" content='暂无消息'></empty>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import empty from '../../../components/empty.vue'
|
||||
export default {
|
||||
components: {
|
||||
empty
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
page: 1,
|
||||
limit: 20,
|
||||
chatList: [],
|
||||
userId: '',
|
||||
msgList: [],
|
||||
count: 0,
|
||||
time: '',
|
||||
messageCount: 0,
|
||||
scrollTop: false,
|
||||
}
|
||||
},
|
||||
|
||||
onPullDownRefresh: function() {
|
||||
this.page = 1;
|
||||
this.getChatList();
|
||||
},
|
||||
onLoad() {
|
||||
this.$queue.showLoading("加载中...")
|
||||
that.userId = uni.getStorageSync('userId')
|
||||
if (that.userId) {
|
||||
that.time = setInterval(function() {
|
||||
that.getChatList()
|
||||
// that.getMsgList()
|
||||
that.$nextTick(function() {
|
||||
that.messageCount = uni.getStorageSync('messageCount')
|
||||
})
|
||||
|
||||
}, 10000)
|
||||
|
||||
} else {
|
||||
that.chatList = []
|
||||
that.msgList = []
|
||||
}
|
||||
|
||||
},
|
||||
onShow() {
|
||||
let that = this
|
||||
|
||||
this.page = 1;
|
||||
this.getChatList();
|
||||
|
||||
},
|
||||
onHide() {
|
||||
clearInterval(this.time)
|
||||
|
||||
},
|
||||
methods: {
|
||||
getChatList() {
|
||||
this.$Request.getT("/app/ordersChat/selectOrdersChatPageRider", {
|
||||
page: this.page,
|
||||
limit: this.limit,
|
||||
// shopId: uni.getStorageSync('shopId')
|
||||
}).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.totalCount = res.data.totalCount
|
||||
if (this.page == 1) {
|
||||
this.chatList = res.data.list
|
||||
} else {
|
||||
res.data.list.forEach(d => {
|
||||
this.chatList.push(d);
|
||||
});
|
||||
}
|
||||
this.count = res.data.totalCount;
|
||||
}
|
||||
uni.hideLoading();
|
||||
uni.stopPullDownRefresh();
|
||||
// if (res.code == 0) {
|
||||
// this.chatList = res.data.list
|
||||
// }
|
||||
});
|
||||
},
|
||||
goIM(e) {
|
||||
let userId = this.$queue.getData('userId');
|
||||
if (e.userId == userId) {
|
||||
userId = e.byUserId
|
||||
} else {
|
||||
userId = e.userId
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/kefu/liaotianshi?orderId=' + e.ordersId
|
||||
})
|
||||
},
|
||||
goMsg() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/msg/message'
|
||||
})
|
||||
}
|
||||
},
|
||||
onPageScroll: function(e) {
|
||||
this.scrollTop = e.scrollTop > 200;
|
||||
},
|
||||
onReachBottom: function() {
|
||||
if (this.chatList.length == this.count) {
|
||||
uni.showToast({
|
||||
title: '已经到底了',
|
||||
icon: 'none'
|
||||
})
|
||||
} else {
|
||||
this.page = this.page + 1;
|
||||
this.getChatList();
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
page {
|
||||
background-color: #F7F7F7;
|
||||
}
|
||||
|
||||
.bg {
|
||||
background: #FFFFFF;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,533 @@
|
|||
<template>
|
||||
<view>
|
||||
<view style="width: 100%;padding-bottom: 140rpx;">
|
||||
<view style="display: flex;flex-direction: column;" v-for="(item,index) in ListItem" :key='index'>
|
||||
<view style="margin-top: 15rpx;width: 100%;text-align: center;font-size: 26rpx;color: #999999;">
|
||||
{{item.createTime}}
|
||||
</view>
|
||||
|
||||
<view v-if="item.riderId === userId" style="width: 83%;margin-left: 15%;">
|
||||
<view class="chat-listitem" style="float: right;">
|
||||
<view v-if="item.content && item.messageType === 1" @longpress="copy(item.content)"
|
||||
class="chat-listitem-text" style="margin-right: 20rpx;">{{item.content}}</view>
|
||||
<image @tap="viewImg(item.content)" v-if="item.content && item.messageType === 2"
|
||||
:src="item.content" style="height: 200rpx;width: 200rpx;margin-right: 20rpx;"></image>
|
||||
<view>
|
||||
<image v-if="item.riderAvatar" :src="item.riderAvatar" class="chat-listitem-image"></image>
|
||||
<image v-else src="../../../static/logo.png" class="chat-listitem-image"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="item.riderId != userId" style="width: 83%;margin-right: 15%;">
|
||||
<view class="chat-listitem" style="float: left;margin-left: 10rpx;">
|
||||
<view>
|
||||
<image v-if="item.shopCover" :src="item.shopCover" class="chat-listitem-image"></image>
|
||||
<image v-else-if="item.userAvatar" :src="item.userAvatar" class="chat-listitem-image"></image>
|
||||
<image v-else src="../../../static/logo.png" class="chat-listitem-image"></image>
|
||||
</view>
|
||||
<view v-if="item.content && item.messageType === 1" class="chat-listitem-text"
|
||||
style="margin-left: 20rpx;">{{item.content}}</view>
|
||||
<image @tap="viewImg(item.content)" v-if="item.content && item.messageType === 2"
|
||||
:src="item.content" style="height: 200rpx;width: 200rpx;margin-left: 20rpx;"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 跳转订单 -->
|
||||
<view class="order" @click="bindorder()">
|
||||
<image src="../../../static/image/order.png"></image>
|
||||
</view>
|
||||
<!-- 底部聊天输入框 -->
|
||||
<view class="input-box ">
|
||||
<view class="justify-between padding-lr align-center"
|
||||
style="display: flex;width: 100%;background-color: #EEEEEE;">
|
||||
<image src="../../../static/image/add.png" @click="chooseImage(['album'])"
|
||||
style="width: 60rpx;height: 60rpx;margin-right: 12rpx;border-radius: 50upx;"></image>
|
||||
<input confirm-type="send" @confirm='setChatSave(1)' type="text" v-model="content"
|
||||
style="width: 72%;height: 70rpx;background: #fff;margin: 0 10rpx;border-radius: 5rpx;padding-left: 10rpx;" />
|
||||
<view class="save" @tap='setChatSave(1)'>发送</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import configdata from '../../../common/config.js';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
connected: false,
|
||||
connecting: false,
|
||||
msg: false,
|
||||
type4: [],
|
||||
listRight: {
|
||||
chat: {
|
||||
userHead: ""
|
||||
},
|
||||
content: "",
|
||||
sendType: 1,
|
||||
type: 1
|
||||
},
|
||||
content: '',
|
||||
chatId: '',
|
||||
type: 1,
|
||||
ListItem: [],
|
||||
ShopState: false,
|
||||
ShopordersId: '',
|
||||
Shopimage: '',
|
||||
Shopmoney: '',
|
||||
ShopTitle: '',
|
||||
orderState: false,
|
||||
ordersId: '',
|
||||
userId: '',
|
||||
orderimage: '',
|
||||
orderNum: '',
|
||||
teamId: '',
|
||||
hand: 1,
|
||||
index: 0,
|
||||
page: 0,
|
||||
size: 1000,
|
||||
countDown: '',
|
||||
chatConversationId: '',
|
||||
byUserId: '',
|
||||
orderId: ''
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
showMsg() {
|
||||
if (this.connected) {
|
||||
if (this.msg) {
|
||||
return '收到消息:' + this.msg
|
||||
} else {
|
||||
return '等待接收消息'
|
||||
}
|
||||
} else {
|
||||
return '尚未连接'
|
||||
}
|
||||
}
|
||||
},
|
||||
onUnload() {
|
||||
// uni.closeSocket()
|
||||
uni.hideLoading()
|
||||
},
|
||||
onLoad(d) {
|
||||
console.log(d)
|
||||
this.userId = this.$queue.getData('userId');
|
||||
this.byUserId = d.byUserId
|
||||
this.indentId = d.indentId
|
||||
this.orderId = d.orderId
|
||||
this.connect();
|
||||
|
||||
// if (d.teamName) {
|
||||
// uni.setNavigationBarTitle({
|
||||
// title: d.teamName
|
||||
// });
|
||||
// }
|
||||
},
|
||||
onShow() {
|
||||
if (this.connected || this.connecting) {
|
||||
|
||||
} else {
|
||||
this.connect();
|
||||
}
|
||||
},
|
||||
onHide() {
|
||||
// uni.closeSocket()
|
||||
},
|
||||
onUnload() {
|
||||
this.close()
|
||||
},
|
||||
methods: {
|
||||
// 跳转订单
|
||||
bindorder() {
|
||||
console.log(this.ordersId)
|
||||
uni.navigateTo({
|
||||
url: '/pages/index/orderdetail/orderdetail?orderId='+this.orderId
|
||||
})
|
||||
},
|
||||
copy(content) {
|
||||
uni.showModal({
|
||||
title: '温馨提示',
|
||||
content: '确认要复制此文字吗?',
|
||||
showCancel: true,
|
||||
cancelText: '取消',
|
||||
confirmText: '确认',
|
||||
success: res => {
|
||||
if (res.confirm) {
|
||||
uni.setClipboardData({
|
||||
data: content,
|
||||
success: r => {
|
||||
this.$queue.showToast('复制成功');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
getDateDiff(data) {
|
||||
// 传进来的data必须是日期格式,不能是时间戳
|
||||
//var str = data;
|
||||
//将字符串转换成时间格式
|
||||
var timePublish = new Date(data);
|
||||
var timeNow = new Date();
|
||||
var minute = 1000 * 60;
|
||||
var hour = minute * 60;
|
||||
var day = hour * 24;
|
||||
var month = day * 30;
|
||||
var result = "2";
|
||||
|
||||
var diffValue = timeNow - timePublish;
|
||||
var diffMonth = diffValue / month;
|
||||
var diffWeek = diffValue / (7 * day);
|
||||
var diffDay = diffValue / day;
|
||||
var diffHour = diffValue / hour;
|
||||
var diffMinute = diffValue / minute;
|
||||
|
||||
|
||||
if (diffMonth > 3) {
|
||||
result = timePublish.getFullYear() + "-";
|
||||
result += timePublish.getMonth() + "-";
|
||||
result += timePublish.getDate();
|
||||
} else if (diffMonth > 1) { //月
|
||||
result = data.substring(0, 10);
|
||||
} else if (diffWeek > 1) { //周
|
||||
result = data.substring(0, 10);
|
||||
} else if (diffDay > 1) { //天
|
||||
result = data.substring(0, 10);
|
||||
} else if (diffHour > 1) { //小时
|
||||
result = parseInt(diffHour) + "小时前";
|
||||
} else if (diffMinute > 1) { //分钟
|
||||
result = parseInt(diffMinute) + "分钟前";
|
||||
} else {
|
||||
result = "刚刚";
|
||||
}
|
||||
return result;
|
||||
},
|
||||
|
||||
connect() {
|
||||
let that = this;
|
||||
let userId = that.$queue.getData('userId');
|
||||
if (that.connected || that.connecting) {
|
||||
uni.showModal({
|
||||
content: '正在连接或者已经连接,请勿重复连接',
|
||||
showCancel: false
|
||||
})
|
||||
return false
|
||||
}
|
||||
that.connecting = true
|
||||
uni.showLoading({
|
||||
title: '连接中...'
|
||||
})
|
||||
console.log(userId, '*******************')
|
||||
uni.connectSocket({
|
||||
// url: 'ws://192.168.1.17:8881/gameTeamChat/' + userId + '_' + this.teamId,
|
||||
// url: 'wss://game.shengqianxiong.com.cn/wss/gameTeamChat/' + userId + '_' + this.teamId,
|
||||
// url: 'ws://192.168.1.17:8180/sqx_fast/chatSocket/' + userId,
|
||||
url: this.config("WSHOST1") + this.orderId,
|
||||
data() {
|
||||
return {
|
||||
msg: 'Hello'
|
||||
}
|
||||
},
|
||||
header: {
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
method: 'GET',
|
||||
success(res) {
|
||||
uni.hideLoading();
|
||||
that.getTimeOrListItem1();
|
||||
// 这里是接口调用成功的回调,不是连接成功的回调,请注意
|
||||
},
|
||||
fail(err) {
|
||||
// 这里是接口调用失败的回调,不是连接失败的回调,请注意
|
||||
console.log("--------------" + JSON.stringify(err))
|
||||
}
|
||||
});
|
||||
uni.onSocketOpen((res) => {
|
||||
that.connecting = false
|
||||
that.connected = true
|
||||
uni.hideLoading()
|
||||
// uni.showToast({
|
||||
// icon: 'none',
|
||||
// title: '连接成功'
|
||||
// })
|
||||
console.log('onOpen', res);
|
||||
})
|
||||
uni.onSocketError((err) => {
|
||||
that.connecting = false
|
||||
that.connected = false
|
||||
uni.hideLoading()
|
||||
uni.showModal({
|
||||
content: '网络较差,请稍后再试',
|
||||
showCancel: false
|
||||
})
|
||||
console.log('onError', err);
|
||||
})
|
||||
uni.onSocketMessage((res) => {
|
||||
// let that = this;
|
||||
// let datas = JSON.parse(res.data)
|
||||
// let data = {
|
||||
// chat: {
|
||||
// userHead: '../../../static/logo2.png'
|
||||
// },
|
||||
// content: datas.content,
|
||||
// type: datas.type,
|
||||
// sendType: datas.sendType
|
||||
// }
|
||||
// that.ListItem.push(data);
|
||||
this.getTimeOrListItem1();
|
||||
console.log('onMessage', res)
|
||||
})
|
||||
uni.onSocketClose((res) => {
|
||||
that.connected = false
|
||||
that.startRecive = false
|
||||
that.msg = false
|
||||
console.log('onClose', res)
|
||||
});
|
||||
},
|
||||
close() {
|
||||
uni.closeSocket()
|
||||
},
|
||||
getTimeOrListItem1() {
|
||||
this.$Request.get('/app/ordersChat/selectGameChatDetails?page=1&limit=1000&ordersId=' + this.orderId+'&type=2')
|
||||
.then(
|
||||
res => {
|
||||
this.ListItem = [];
|
||||
if (res.data) {
|
||||
var time = '';
|
||||
res.data.list.forEach(d => {
|
||||
if (!d.avatar) {
|
||||
// d.chat.userHead = '../../static/logo.png';
|
||||
let avatar = this.$queue.getData('avatar');
|
||||
d.avatar = avatar
|
||||
}
|
||||
this.ListItem.push(d);
|
||||
});
|
||||
this.ListItem = this.ListItem.reverse();
|
||||
setTimeout(() => {
|
||||
uni.pageScrollTo({
|
||||
scrollTop: 99999,
|
||||
duration: 0
|
||||
});
|
||||
}, 50);
|
||||
}
|
||||
uni.hideLoading();
|
||||
});
|
||||
},
|
||||
getChatSave() {
|
||||
let userId = this.$queue.getData('userId');
|
||||
let phone = this.$queue.getData('phone');
|
||||
let userName = this.$queue.getData('userName');
|
||||
if (!phone) {
|
||||
phone = this.$queue.getData('userName');
|
||||
}
|
||||
let avatar = this.$queue.getData('avatar');
|
||||
let data = {
|
||||
userId: userId,
|
||||
userHead: avatar,
|
||||
userName: userName,
|
||||
storeId: '0',
|
||||
storeHead: '省钱兄陪玩',
|
||||
storeName: ''
|
||||
}
|
||||
this.$Request.postJson('/chat/save', data).then(res => {
|
||||
if (res.status === 0) {
|
||||
this.chatId = res.data.chatId;
|
||||
uni.showLoading({
|
||||
title: '加载中...'
|
||||
});
|
||||
this.getTimeOrListItem1();
|
||||
}
|
||||
});
|
||||
},
|
||||
setChatSave(type) {
|
||||
//type:1文字 2图片
|
||||
if (type === 1 && this.content == '') {
|
||||
this.$queue.showToast('请输入聊天内容');
|
||||
return;
|
||||
}
|
||||
// if (this.chatId == '' || this.chatId == undefined) {
|
||||
// this.$queue.showToast('网络较差,请稍后再试');
|
||||
// return;
|
||||
// }
|
||||
let userId = this.$queue.getData('userId');
|
||||
let avatar = this.$queue.getData('avatar');
|
||||
let phone = this.$queue.getData('phone');
|
||||
let userName = this.$queue.getData('userName');
|
||||
if (!phone) {
|
||||
phone = this.$queue.getData('userName');
|
||||
}
|
||||
console.log(this.byUserId)
|
||||
let data = {
|
||||
content: this.content,
|
||||
messageType: type,
|
||||
riderId: this.userId,
|
||||
chatConversationId: this.chatConversationId,
|
||||
ordersId: this.orderId
|
||||
}
|
||||
data = JSON.stringify(data);
|
||||
let that = this;
|
||||
uni.sendSocketMessage({
|
||||
data: data,
|
||||
success(res) {
|
||||
|
||||
let avatar = that.$queue.getData('avatar');
|
||||
if (!avatar) {
|
||||
avatar = '../../static/logo.png';
|
||||
}
|
||||
let data = {
|
||||
chat: {
|
||||
userHead: avatar
|
||||
},
|
||||
content: that.content,
|
||||
type: type,
|
||||
userId: userId
|
||||
}
|
||||
console.log(data, 'data99999999999999999')
|
||||
// that.ListItem.push(data);
|
||||
setTimeout(() => {
|
||||
that.getTimeOrListItem1();
|
||||
}, 50);
|
||||
console.log(that.content);
|
||||
},
|
||||
fail(err) {
|
||||
console.log(err);
|
||||
}
|
||||
})
|
||||
this.content = '';
|
||||
},
|
||||
//发送图片
|
||||
chooseImage(sourceType) {
|
||||
uni.chooseImage({
|
||||
count: 1,
|
||||
sourceType: ['album', 'camera'],
|
||||
success: res => {
|
||||
for (let i = 0; i < res.tempFilePaths.length; i++) {
|
||||
this.$queue.showLoading("上传中...");
|
||||
uni.uploadFile({ // 上传接口
|
||||
url: this.config("APIHOST1") + '/alioss/upload', //真实的接口地址
|
||||
filePath: res.tempFilePaths[i],
|
||||
name: 'file',
|
||||
success: (uploadFileRes) => {
|
||||
console.log(uploadFileRes)
|
||||
this.content = JSON.parse(uploadFileRes.data).data;
|
||||
this.setChatSave(2);
|
||||
uni.hideLoading();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
config: function(name) {
|
||||
var info = null;
|
||||
if (name) {
|
||||
var name2 = name.split("."); //字符分割
|
||||
if (name2.length > 1) {
|
||||
info = configdata[name2[0]][name2[1]] || null;
|
||||
} else {
|
||||
info = configdata[name] || null;
|
||||
}
|
||||
if (info == null) {
|
||||
let web_config = cache.get("web_config");
|
||||
if (web_config) {
|
||||
if (name2.length > 1) {
|
||||
info = web_config[name2[0]][name2[1]] || null;
|
||||
} else {
|
||||
info = web_config[name] || null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return info;
|
||||
},
|
||||
//查看大图
|
||||
viewImg(item) {
|
||||
let imgsArray = [];
|
||||
imgsArray[0] = item;
|
||||
uni.previewImage({
|
||||
current: 0,
|
||||
urls: imgsArray
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
page {
|
||||
/* background: #1c1b20; */
|
||||
}
|
||||
|
||||
.input-box {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
height: 120rpx;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
box-sizing: content-box;
|
||||
z-index: 999;
|
||||
/* background-color: #ececec; */
|
||||
/* padding: 0 5rpx; */
|
||||
}
|
||||
|
||||
.chat-listitem {
|
||||
display: flex;
|
||||
margin-top: 20rpx;
|
||||
padding: 10rpx;
|
||||
}
|
||||
|
||||
.chat-listitem-text {
|
||||
color: #000000;
|
||||
background: #FFFFFF;
|
||||
margin-top: 10rpx;
|
||||
width: fit-content;
|
||||
padding: 15rpx;
|
||||
font-size: 30rpx;
|
||||
height: max-content;
|
||||
word-wrap: break-word;
|
||||
word-break: break-all;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
|
||||
.chat-listitem-image-type4 {
|
||||
color: #000000;
|
||||
background: #FFFFFF;
|
||||
width: fit-content;
|
||||
font-size: 30rpx;
|
||||
height: max-content;
|
||||
word-wrap: break-word;
|
||||
word-break: break-all;
|
||||
border-top-left-radius: 20rpx;
|
||||
border-top-right-radius: 20rpx;
|
||||
}
|
||||
|
||||
.chat-listitem-image {
|
||||
margin-top: 5rpx;
|
||||
width: 75rpx;
|
||||
height: 75rpx;
|
||||
border-radius: 5rpx;
|
||||
}
|
||||
|
||||
.save {
|
||||
width: 130rpx;
|
||||
text-align: center;
|
||||
border-radius: 70rpx;
|
||||
height: 70rpx;
|
||||
color: #FFF;
|
||||
background: #1789FD;
|
||||
margin: 5rpx 10rpx 0;
|
||||
line-height: 70rpx;
|
||||
}
|
||||
.order {
|
||||
position: fixed;
|
||||
bottom: 65px;
|
||||
right: 15px;
|
||||
}
|
||||
|
||||
.order image {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,583 @@
|
|||
<template>
|
||||
<view class="content">
|
||||
<view class="acont_part1">
|
||||
<view class="part1_bg">
|
||||
<image src="../../../../static/rider/image-bg.png"></image>
|
||||
</view>
|
||||
<view class="part1_box">
|
||||
<view class="text-right margin-top-sm margin-right-sm" @click="goDet">查看明细</view>
|
||||
<view class="balance">
|
||||
<view class="balance_name">保证金余额(元)</view>
|
||||
<view class="balance_price">{{mayMoney?mayMoney:0}}</view>
|
||||
</view>
|
||||
<view class="part1_btn">
|
||||
<view class="btn_left" @click="tuiBtn()">退保证金</view>
|
||||
<view class="btn_right" @click="openPay()">缴纳保证金</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="acont_part2">
|
||||
<view class="acount_type">保证金规则</view>
|
||||
<view class="acount_box" v-for="(item,index) in list" :key="item.id">
|
||||
<view class="name">{{item.name}}</view>
|
||||
<view class="tit">{{item.tit}}</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<!-- 支付方式 -->
|
||||
<u-popup v-model="shows" mode="center" width="640rpx" height="640rpx" border-radius="14" :closeable="true"
|
||||
close-icon="close-circle" close-icon-size="50" close-icon-color="#CCCCCC" @close="closePopup()">
|
||||
<view style="width: 100%;height: 300upx;background: #FFFFFF;">
|
||||
<view class="receipt_code">
|
||||
<view class="code_title">请输入支付金额</view>
|
||||
<u-input v-model="earnestMoney" type="text" placeholder="请输入支付金额" :border="true" />
|
||||
<view class="margin-tb padding-lr radius bg-white" style="height: 220upx;">
|
||||
<view class="flex align-center justify-between padding-tb-sm" v-for="(item,index) in payList"
|
||||
:key='index'>
|
||||
<image :src="item.image" style="width: 80upx;height: 80upx;border-radius: 50upx;"></image>
|
||||
<view class="flex-sub text-xl text-bold margin-left">{{item.name}}</view>
|
||||
<radio-group name="openWay" style="margin-left: 20upx;" @change='selectWay(item)'>
|
||||
<label class="tui-radio">
|
||||
<radio class="red" :checked="openWay === item.id ? true : false" />
|
||||
</label>
|
||||
</radio-group>
|
||||
</view>
|
||||
</view>
|
||||
<view class="sure" @click="jiaoBtn">确定</view>
|
||||
</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
shows: false,
|
||||
baozhengjin: 0,
|
||||
disabled: true,
|
||||
moneys: '',
|
||||
list: [{
|
||||
id: 1,
|
||||
name: '保证金退款',
|
||||
tit: '48小时内无订单记录即可申请退保证金,保证金统一退款至账户余额,实时到账。'
|
||||
}, {
|
||||
id: 2,
|
||||
name: '保证金缴纳',
|
||||
tit: '所有跑腿专人直送订单需缴纳保证金,没有缴纳者将无法接订单,建议您及时缴纳。'
|
||||
}],
|
||||
mayMoney: 0,
|
||||
openWay: 1,
|
||||
payList: [],
|
||||
earnestMoney: ''
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
//获取保证金
|
||||
this.$Request.getT('/app/common/type/273').then(res => {
|
||||
if (res.code === 0) {
|
||||
this.baozhengjin = res.data.value;
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
// #ifdef MP-WEIXIN
|
||||
this.payList = [{
|
||||
id: 1,
|
||||
image: '../../../../static/my/weixin.png',
|
||||
name: '微信'
|
||||
}]
|
||||
this.openWay = 1
|
||||
// #endif
|
||||
// #ifdef H5
|
||||
this.payList = [{
|
||||
id: 2,
|
||||
image: '../../../../static/my/zhifubao.png',
|
||||
name: '支付宝'
|
||||
}]
|
||||
this.openWay = 2
|
||||
// #endif
|
||||
// #ifdef APP-PLUS
|
||||
this.payList = [{
|
||||
id: 1,
|
||||
image: '../../../../static/my/weixin.png',
|
||||
name: '微信'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
image: '../../../../static/my/zhifubao.png',
|
||||
name: '支付宝'
|
||||
}
|
||||
]
|
||||
// #endif
|
||||
|
||||
},
|
||||
onShow() {
|
||||
this.taskData()
|
||||
|
||||
},
|
||||
methods: {
|
||||
openPay() {
|
||||
this.$Request.getT("/app/wxPayErrRider/selectCertificationFlag").then(res => {
|
||||
if (res.code == 0) {
|
||||
this.shows = true
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
// 跳转保证金明细
|
||||
goDet() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/myAccount/AcontMoney/Acontlist'
|
||||
})
|
||||
},
|
||||
selectWay: function(item) {
|
||||
this.openWay = item.id;
|
||||
},
|
||||
zhifu() {
|
||||
this.shows = true
|
||||
},
|
||||
// 关闭底部弹出层
|
||||
closePopup() {
|
||||
this.shows = false
|
||||
},
|
||||
|
||||
// 获取任务数据
|
||||
taskData() {
|
||||
let that = this;
|
||||
let token = this.$queue.getData('token');
|
||||
let userId = this.$queue.getData('userId');
|
||||
if (token) {
|
||||
//this.$queue.showLoading("加载中...");
|
||||
//可以提现金额查询预估收入查询
|
||||
this.$Request.getT("/app/userinfo/findUserInfoById").then(res => {
|
||||
uni.hideLoading();
|
||||
if (res.code === 0 && res.data) {
|
||||
that.mayMoney = res.data.cashDeposit;
|
||||
if (!res.data.cashDeposit) {
|
||||
// this.earnestMoney=this.baozhengjin;
|
||||
// this.disabled=true;
|
||||
} else {
|
||||
// this.disabled=false;
|
||||
}
|
||||
|
||||
} else if (res.code === -102) {
|
||||
this.$queue.showToast(res.msg);
|
||||
this.$queue.logout();
|
||||
} else {
|
||||
that.mayMoney = '0';
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
// 缴纳
|
||||
jiaoBtn() {
|
||||
let that = this;
|
||||
if (!that.earnestMoney) {
|
||||
that.$queue.showToast('请输入支付金额');
|
||||
return;
|
||||
}
|
||||
uni.showLoading({
|
||||
title: '支付中'
|
||||
});
|
||||
// 微信支付
|
||||
if (that.openWay == 1) {
|
||||
// #ifdef APP-PLUS
|
||||
uni.hideLoading();
|
||||
// 微信APP支付 根据订单id获取支付信息
|
||||
that.$Request.postT('/app/wxPayErrRider/wxPayCashDeposit?money=' + that.earnestMoney + '&type=1').then(
|
||||
ret => {
|
||||
// console.log(JSON.stringify(ret), '支付信息')
|
||||
if (ret.code == 0) {
|
||||
console.log(JSON.stringify(ret), '支付信息')
|
||||
that.isCheckPay(ret.code, 'wxpay', JSON.stringify(ret.data));
|
||||
|
||||
} else {
|
||||
that.shows = false
|
||||
that.earnestMoney = ''
|
||||
that.$queue.showToast(res.msg);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// #endif
|
||||
|
||||
// #ifdef H5
|
||||
let ua = navigator.userAgent.toLowerCase();
|
||||
console.log(ua.indexOf('micromessenger'))
|
||||
if (ua.indexOf('micromessenger') !== -1) {
|
||||
let openId = that.$queue.getData('openid') ? that.$queue.getData('openid') : '';
|
||||
that.$Request.postT('/app/wxPayErrRider/wxPayCashDeposit?money=' + that.earnestMoney + '&type=2')
|
||||
.then(
|
||||
res => {
|
||||
if (res.code == 0) {
|
||||
that.callPay(res);
|
||||
} else {
|
||||
that.shows = false
|
||||
that.earnestMoney = ''
|
||||
that.$queue.showToast(res.msg);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
// #endif
|
||||
|
||||
// #ifdef MP-WEIXIN
|
||||
that.$Request.postT('/app/wxPayErrRider/wxPayCashDeposit?money=' + that.earnestMoney + '&type=3').then(
|
||||
res => {
|
||||
console.log('res', res)
|
||||
if (res.code == 0) {
|
||||
uni.requestPayment({
|
||||
provider: 'wxpay',
|
||||
timeStamp: res.data.timestamp,
|
||||
nonceStr: res.data.noncestr,
|
||||
package: res.data.package,
|
||||
signType: res.data.signType,
|
||||
paySign: res.data.sign,
|
||||
success: function(res) {
|
||||
that.shows = false
|
||||
that.earnestMoney = ''
|
||||
uni.hideLoading();
|
||||
|
||||
|
||||
that.taskData()
|
||||
that.$queue.showToast('支付成功');
|
||||
setTimeout(function() {
|
||||
uni.hideLoading();
|
||||
}, 1000);
|
||||
},
|
||||
fail: function(err) {
|
||||
that.shows = false
|
||||
that.earnestMoney = ''
|
||||
console.log('fail:' + JSON.stringify(err));
|
||||
uni.hideLoading();
|
||||
that.$queue.showToast('支付失败');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
that.shows = false
|
||||
that.earnestMoney = ''
|
||||
that.$queue.showToast(res.msg);
|
||||
}
|
||||
});
|
||||
// #endif
|
||||
} else if (that.openWay == 2) { //支付宝支付
|
||||
uni.hideLoading();
|
||||
// #ifdef H5
|
||||
let userId = this.$queue.getData('userId');
|
||||
that.$Request.postT('/app/wxPayErrRider/wxPayCashDeposit?money=' + that.earnestMoney + '&type=5')
|
||||
.then(res => {
|
||||
if (res.code == 0) {
|
||||
const div = document.createElement('div')
|
||||
div.innerHTML = res.data //此处form就是后台返回接收到的数据
|
||||
document.body.appendChild(div)
|
||||
document.forms[0].submit()
|
||||
that.earnestMoney = ''
|
||||
that.shows = false
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
that.$queue.showToast(res.msg);
|
||||
}
|
||||
});
|
||||
// #endif
|
||||
// #ifdef APP-PLUS
|
||||
that.$Request.postT('/app/wxPayErrRider/wxPayCashDeposit?money=' + that.earnestMoney + '&type=4').then(
|
||||
ret => {
|
||||
uni.hideLoading();
|
||||
// console.log(JSON.stringify(ret), '支付信息')
|
||||
if (ret.code == 0) {
|
||||
that.setPayment('alipay', ret.data);
|
||||
that.shows = false
|
||||
// that.isCheckPay(ret.code, 'alipay', ret.data);
|
||||
} else {
|
||||
that.shows = false
|
||||
that.earnestMoney = ''
|
||||
that.$queue.showToast(res.msg);
|
||||
}
|
||||
});
|
||||
|
||||
// #endif
|
||||
}
|
||||
},
|
||||
callPay: function(response) {
|
||||
if (typeof WeixinJSBridge === "undefined") {
|
||||
if (document.addEventListener) {
|
||||
document.addEventListener('WeixinJSBridgeReady', that.onBridgeReady(response), false);
|
||||
} else if (document.attachEvent) {
|
||||
document.attachEvent('WeixinJSBridgeReady', that.onBridgeReady(response));
|
||||
document.attachEvent('onWeixinJSBridgeReady', that.onBridgeReady(response));
|
||||
}
|
||||
} else {
|
||||
that.onBridgeReady(response);
|
||||
}
|
||||
},
|
||||
onBridgeReady: function(response) {
|
||||
let that = this;
|
||||
console.log(!response.package, '2222222')
|
||||
// if (!response.package) {
|
||||
// return;
|
||||
// }
|
||||
that.earnestMoney = ''
|
||||
that.shows = false
|
||||
console.log(response, '1111111111')
|
||||
WeixinJSBridge.invoke(
|
||||
'getBrandWCPayRequest', {
|
||||
"appId": response.data.appid, //公众号名称,由商户传入
|
||||
"timeStamp": response.data.timestamp, //时间戳,自1970年以来的秒数
|
||||
"nonceStr": response.data.noncestr, //随机串
|
||||
"package": response.data.package,
|
||||
"signType": response.data.signType, //微信签名方式:
|
||||
"paySign": response.data.sign //微信签名
|
||||
},
|
||||
function(res) {
|
||||
console.log(res, '/*-/*-/*-')
|
||||
if (res.err_msg === "get_brand_wcpay_request:ok") {
|
||||
// 使用以上方式判断前端返回,微信团队郑重提示:
|
||||
//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
|
||||
that.taskData()
|
||||
uni.showLoading({
|
||||
title: '支付成功'
|
||||
});
|
||||
setTimeout(function() {
|
||||
uni.hideLoading();
|
||||
}, 1000);
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
}
|
||||
WeixinJSBridge.log(response.err_msg);
|
||||
}
|
||||
);
|
||||
},
|
||||
isCheckPay(status, name, order) {
|
||||
console.log(status, name, order, '111111')
|
||||
this.earnestMoney = ''
|
||||
this.shows = false
|
||||
if (status == 0) {
|
||||
this.setPayment(name, order);
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
uni.showToast({
|
||||
title: '支付信息有误',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
},
|
||||
setPayment(name, order) {
|
||||
let that = this
|
||||
console.log(name, '*-*-*', order)
|
||||
uni.requestPayment({
|
||||
provider: name,
|
||||
orderInfo: order, //微信、支付宝订单数据
|
||||
success: function(res) {
|
||||
console.log(res)
|
||||
that.taskData()
|
||||
uni.hideLoading();
|
||||
that.earnestMoney = ''
|
||||
that.shows = false
|
||||
uni.showLoading({
|
||||
title: '支付成功'
|
||||
});
|
||||
},
|
||||
fail: function(err) {
|
||||
console.log(err)
|
||||
uni.hideLoading();
|
||||
},
|
||||
complete() {
|
||||
uni.hideLoading();
|
||||
}
|
||||
});
|
||||
},
|
||||
// 退保证金
|
||||
tuiBtn() {
|
||||
let that = this
|
||||
if (that.mayMoney == 0) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '暂无保证金'
|
||||
})
|
||||
return
|
||||
}
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '确认退还保证金吗?如果存在未完成订单和未处理完成的投诉无法退还,需要先处理完毕后再申请',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
that.$Request.getT('/app/cash/cashDepositMoney').then(res => {
|
||||
console.log(res)
|
||||
if (res.code == 0) {
|
||||
uni.showToast({
|
||||
title: '申请成功'
|
||||
})
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
setTimeout(function() {
|
||||
that.taskData()
|
||||
}, 1000)
|
||||
});
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
/* 支付金额弹框 */
|
||||
.receipt_code {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.code_title {
|
||||
width: 100%;
|
||||
line-height: 100rpx;
|
||||
font-size: 31rpx;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
letter-spacing: 2rpx;
|
||||
margin-top: 21rpx;
|
||||
margin-bottom: 25rpx;
|
||||
}
|
||||
|
||||
.u-input--border {
|
||||
border: 1px solid #F2F2F2 !important;
|
||||
background: #F2F2F2 !important;
|
||||
color: #999999 !important;
|
||||
font-weight: 500 !important;
|
||||
letter-spacing: 2rpx !important;
|
||||
}
|
||||
|
||||
.u-input__input {
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
flex: 1;
|
||||
color: #999999 !important;
|
||||
min-height: 85rpx !important;
|
||||
margin-top: 7rpx;
|
||||
}
|
||||
|
||||
.sure {
|
||||
width: 100%;
|
||||
height: 80rpx;
|
||||
background: #FF7F00;
|
||||
color: white;
|
||||
border-radius: 46rpx;
|
||||
text-align: center;
|
||||
line-height: 80rpx;
|
||||
margin-top: 30rpx;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
|
||||
.content {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.acont_part1 {
|
||||
width: 100%;
|
||||
|
||||
}
|
||||
|
||||
.part1_bg image {
|
||||
width: 100%;
|
||||
height: 730rpx;
|
||||
}
|
||||
|
||||
.part1_box {
|
||||
width: 90%;
|
||||
height: 400rpx;
|
||||
background: #ffffff;
|
||||
position: absolute;
|
||||
top: 70rpx;
|
||||
left: 37rpx;
|
||||
border-radius: 25rpx;
|
||||
}
|
||||
|
||||
.balance {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
/* margin-top: 50rpx; */
|
||||
line-height: 55rpx;
|
||||
}
|
||||
|
||||
.balance_name {
|
||||
font-size: 26rpx;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.balance_price {
|
||||
margin-top: 10rpx;
|
||||
font-weight: bold;
|
||||
font-size: 60rpx;
|
||||
}
|
||||
|
||||
.part1_btn {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
margin-top: 80rpx;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.btn_left {
|
||||
flex: 1;
|
||||
border: 1rpx solid #CCCCCC;
|
||||
text-align: center;
|
||||
line-height: 80rpx;
|
||||
color: black;
|
||||
font-size: 24rpx;
|
||||
border-radius: 12rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
.btn_right {
|
||||
flex: 1;
|
||||
border: 1rpx solid #CCCCCC;
|
||||
text-align: center;
|
||||
line-height: 80rpx;
|
||||
background: #FF7F00;
|
||||
color: white;
|
||||
font-size: 24rpx;
|
||||
border-radius: 12rpx;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
.acont_part2 {
|
||||
width: 90%;
|
||||
position: absolute;
|
||||
bottom: -100rpx;
|
||||
left: 37rpx;
|
||||
}
|
||||
|
||||
.acount_type {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
line-height: 75rpx;
|
||||
}
|
||||
|
||||
.name {
|
||||
font-size: 26rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
line-height: 70rpx;
|
||||
}
|
||||
|
||||
.tit {
|
||||
color: #666666;
|
||||
font-size: 25rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,119 @@
|
|||
<template>
|
||||
<view>
|
||||
<view class="content" v-if="list.length" >
|
||||
<view class="list_box" v-for="(item,index) in list" :key="index">
|
||||
<view class="list_left">
|
||||
<view class="name">{{item.title}}</view>
|
||||
<view class="flex justify-between align-center">
|
||||
<view style="color: red;">{{item.type==1?'+':'-'}} {{item.money}}</view>
|
||||
<view class="data">{{item.createTime}}</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<!-- <view class="list_right" style="color: red;" v-if="item.type==2">- {{item.money}}</view> -->
|
||||
<!-- <view class="list_right" style="color: #33D442;" v-if="item.type==1">+ {{item.money}}</view> -->
|
||||
</view>
|
||||
</view>
|
||||
<empty v-else></empty>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import empty from '@/components/empty'
|
||||
export default {
|
||||
components: {
|
||||
empty
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
list: [],
|
||||
page: 1,
|
||||
totalCount: 0
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.taskData()
|
||||
},
|
||||
methods: {
|
||||
// 获取任务数据
|
||||
taskData() {
|
||||
this.$Request.getT('/app/userinfo/selectCashDeposit?classify=1&page='+this.page+'&limit=15').then(res => {
|
||||
if(res.code==0){
|
||||
// this.list = res.data.list
|
||||
if (this.page == 1) {
|
||||
this.list = res.data.list
|
||||
} else {
|
||||
this.list = this.list.concat(res.data.list)
|
||||
}
|
||||
this.totalCount = res.data.totalPage
|
||||
}
|
||||
console.log('res',res)
|
||||
uni.stopPullDownRefresh();
|
||||
});
|
||||
},
|
||||
},
|
||||
// 上拉加载
|
||||
onReachBottom: function() {
|
||||
if (this.page < this.totalCount) {
|
||||
this.page += 1;
|
||||
this.taskData();
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '已经最后一页啦',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
onPullDownRefresh: function() {
|
||||
this.page = 1;
|
||||
this.taskData();
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
background: #F5F5F5;
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 100%;
|
||||
background: #FFFFFF;
|
||||
/* margin-top: 20rpx; */
|
||||
padding-bottom: 50rpx;
|
||||
padding-top: 20rpx;
|
||||
}
|
||||
|
||||
.list_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
line-height: 45rpx;
|
||||
padding-top: 20rpx;
|
||||
}
|
||||
|
||||
.list_left {
|
||||
flex: 2;
|
||||
}
|
||||
|
||||
.name {
|
||||
font-size: 26rpx;
|
||||
color: #333333;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.data {
|
||||
color: #999999;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.list_right {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
font-size: 31rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,133 @@
|
|||
<template>
|
||||
<view style="text-align: left">
|
||||
<view v-for="(item, index) in list" :key="index" class="item">
|
||||
<view>
|
||||
<view style="margin-bottom: 8upx;text-align: right;">
|
||||
<text style="margin-bottom: 8upx;color: #0e80d2" v-if="item.state==1"> 提现成功</text>
|
||||
<text style="margin-bottom: 8upx;color: #0e80d2" v-if="item.state==0"> 提现中</text>
|
||||
<text style="margin-bottom: 8upx;color: #FF332F" v-if="item.state==-1"> 提现失败</text>
|
||||
</view>
|
||||
<view style="color: #999999;font-size: 28upx;">
|
||||
<view v-if="item.classify == 1">
|
||||
<view style="margin-bottom: 8upx">支付宝账号 {{ item.zhifubao }}</view>
|
||||
<view style="margin-bottom: 8upx">支付宝姓名 {{ item.zhifubaoName }}</view>
|
||||
<view style="margin-bottom: 8upx">发起时间 {{ item.createAt }}</view>
|
||||
</view>
|
||||
<view v-if="item.classify == 2">
|
||||
<view>微信提现</view>
|
||||
<view style="margin-bottom: 8upx">发起时间 {{ item.createAt }}</view>
|
||||
</view>
|
||||
<view style="margin-bottom: 8upx" v-if="item.state==1">成功时间 {{ item.outAt }}</view>
|
||||
<view style="margin-bottom: 8upx;color: #FF2638" v-if="item.state==-1">失败原因:{{item.refund}}</view>
|
||||
<view style="margin-bottom: 8upx;text-align: right;">
|
||||
<!-- 提现金额: -->
|
||||
<text style="color: #FF332F;font-size: 32upx;font-weight: 600">¥{{ item.money }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 加载更多提示 -->
|
||||
<view class="s-col is-col-24" v-if="list.length > 0">
|
||||
<load-more :loadingType="loadingType" :contentText="contentText"></load-more>
|
||||
</view>
|
||||
<!-- 加载更多提示 -->
|
||||
<empty v-if="list.length == 0" des="暂无数据"></empty>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import empty from '@/components/empty.vue'
|
||||
export default {
|
||||
components: {
|
||||
empty
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
page: 1,
|
||||
size: 10,
|
||||
list: [],
|
||||
loadingType: 0,
|
||||
scrollTop: false,
|
||||
contentText: {
|
||||
contentdown: '上拉显示更多',
|
||||
contentrefresh: '正在加载...',
|
||||
contentnomore: '没有更多数据了'
|
||||
}
|
||||
};
|
||||
},
|
||||
onLoad: function(e) {
|
||||
this.$queue.showLoading('加载中...');
|
||||
this.getMoney();
|
||||
},
|
||||
onPageScroll: function(e) {
|
||||
this.scrollTop = e.scrollTop > 200;
|
||||
},
|
||||
methods: {
|
||||
getMoney(type) {
|
||||
this.loadingType = 1;
|
||||
let userId = this.$queue.getData('userId');
|
||||
let data = {
|
||||
page: this.page,
|
||||
limit: this.size,
|
||||
userId: userId
|
||||
};
|
||||
this.$Request.getT('/app/cash/selectPayDetails', data).then(res => {
|
||||
if (res.code === 0) {
|
||||
if (this.page === 1) {
|
||||
this.list = [];
|
||||
}
|
||||
res.data.list.forEach(d => {
|
||||
// if (d.state === -1) {
|
||||
// d.state = '已退款';
|
||||
// } else if (d.state === 0) {
|
||||
// d.state = '提现中';
|
||||
// } else if (d.state === 1) {
|
||||
// d.state = '提现成功';
|
||||
// }
|
||||
this.list.push(d);
|
||||
});
|
||||
if (res.data.list.length === this.size) {
|
||||
this.loadingType = 0;
|
||||
} else {
|
||||
this.loadingType = 3;
|
||||
}
|
||||
} else {
|
||||
this.loadingType = 2;
|
||||
}
|
||||
uni.hideLoading();
|
||||
if (type === 'Refresh') {
|
||||
uni.stopPullDownRefresh(); // 停止刷新
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
onLoad: function(e) {
|
||||
this.getMoney();
|
||||
},
|
||||
onReachBottom: function() {
|
||||
this.page = this.page + 1;
|
||||
this.getMoney();
|
||||
},
|
||||
onPullDownRefresh: function() {
|
||||
this.page = 1;
|
||||
this.getMoney('Refresh');
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// @import '../../static/css/index.css';
|
||||
|
||||
page {
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.item {
|
||||
background: white;
|
||||
padding: 32rpx;
|
||||
margin: 32rpx;
|
||||
font-size: 28rpx;
|
||||
box-shadow: 7px 9px 34px rgba(0, 0, 0, 0.1);
|
||||
border-radius: 16upx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,281 @@
|
|||
<template>
|
||||
<view class="container" v-if="XCXIsSelect!='否'">
|
||||
<!-- <list-cell title="收款人姓名" type="text" placeholder="请输入支付宝收款人姓名" v-model="userName"></list-cell>
|
||||
|
||||
<list-cell title="支付宝账号" type="number" placeholder="请输入要绑定的支付宝手机号" v-model="mobile" :maxlength="11"></list-cell> -->
|
||||
<u-form :model="form" ref="uForm">
|
||||
<u-form-item label="收款人姓名" label-width="250"><u-input type="text" placeholder="请输入支付宝收款人姓名" v-model="userName" /></u-form-item>
|
||||
<u-form-item label="支付宝账号" label-width="250"><u-input type="text" placeholder="请输入要绑定的支付宝手机号" v-model="mobile" /></u-form-item>
|
||||
</u-form>
|
||||
<button v-if="btn" class="confirm-btn" @click="toLogin" :disabled="logining">{{btn}}</button>
|
||||
<view style="padding: 32upx 64upx;font-size: 24upx;color: #999999;">提示:请正确填写收款人的支付宝账户和真实的收款人姓名,否则将无法正常收款</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
|
||||
data() {
|
||||
return {
|
||||
mobile: '',
|
||||
userName: '',
|
||||
btn:'绑定账户',
|
||||
logining: false,
|
||||
form:{},
|
||||
XCXIsSelect:'否'
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.XCXIsSelect = this.$queue.getData('XCXIsSelect');
|
||||
if(this.XCXIsSelect =='否'){
|
||||
uni.setNavigationBarTitle({
|
||||
title: '隐私政策'
|
||||
});
|
||||
}else{
|
||||
uni.setNavigationBarTitle({
|
||||
title: '账号绑定'
|
||||
});
|
||||
}
|
||||
let userId = this.$queue.getData("userId");
|
||||
if (userId) {
|
||||
this.$Request.getT("/app/userinfo/findUserInfoById").then(res => {
|
||||
if (res.code === 0 && res.data) {
|
||||
if (res.data.zhiFuBao) {
|
||||
this.mobile = res.data.zhiFuBao;
|
||||
this.btn = '修改账户';
|
||||
}else{
|
||||
this.btn = '绑定账户';
|
||||
}
|
||||
if (res.data.zhiFuBaoName) {
|
||||
this.userName = res.data.zhiFuBaoName;
|
||||
}
|
||||
}else{
|
||||
this.btn = '绑定账户';
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
},
|
||||
methods: {
|
||||
inputChange(e) {
|
||||
const key = e.currentTarget.dataset.key;
|
||||
this[key] = e.detail.value;
|
||||
},
|
||||
navBack() {
|
||||
uni.navigateBack();
|
||||
},
|
||||
|
||||
toLogin() {
|
||||
let userId = this.$queue.getData("userId");
|
||||
let token = uni.getStorageSync("token");
|
||||
const {
|
||||
mobile,
|
||||
userName
|
||||
} = this;
|
||||
if (!mobile) {
|
||||
this.$queue.showToast("请设置收款人支付宝账号");
|
||||
} else if (!userName) {
|
||||
this.$queue.showToast("请设置收款人姓名");
|
||||
} else {
|
||||
this.$queue.showLoading("修改中...");
|
||||
this.$Request.postJson("/app/user/updateUser",{
|
||||
zhiFuBao: mobile,
|
||||
zhiFuBaoName: userName
|
||||
}).then(
|
||||
res => {
|
||||
if (res.code === 0) {
|
||||
this.navBack();
|
||||
} else {
|
||||
this.$queue.showToast(res.msg)
|
||||
}
|
||||
uni.hideLoading();
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang='scss'>
|
||||
page {
|
||||
background: #FFFFFF;
|
||||
}
|
||||
|
||||
.container {
|
||||
padding: 32upx;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.confirm-btn1 {
|
||||
width: 300px;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
border-radius: 30px;
|
||||
margin-top: 70upx;
|
||||
background: whitesmoke;
|
||||
color: grey;
|
||||
/* font-size: $font-lg; */
|
||||
|
||||
&:after {
|
||||
border-radius: 60px;
|
||||
}
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
position: relative;
|
||||
z-index: 90;
|
||||
background: #fff;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
.back-btn {
|
||||
position: absolute;
|
||||
left: 20px;
|
||||
z-index: 9999;
|
||||
padding-top: var(--status-bar-height);
|
||||
top: 20px;
|
||||
font-size: 20px;
|
||||
/* color: $font-color-dark; */
|
||||
}
|
||||
|
||||
.left-top-sign {
|
||||
font-size: 80px;
|
||||
/* color: $page-color-base; */
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.right-top-sign {
|
||||
position: absolute;
|
||||
top: 40px;
|
||||
right: -15px;
|
||||
z-index: 95;
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
display: block;
|
||||
content: "";
|
||||
width: 20px;
|
||||
height: 40px;
|
||||
background: -moz-linear-gradient(left, #fa4dbe 0, #fbaa58 100%);
|
||||
background: -webkit-gradient(linear,
|
||||
left top,
|
||||
left right,
|
||||
color-stop(0, #fa4dbe),
|
||||
color-stop(100%, #fbaa58));
|
||||
background: -webkit-linear-gradient(left, #fa4dbe 0, #fbaa58 100%);
|
||||
background: -o-linear-gradient(left, #fa4dbe 0, #fbaa58 100%);
|
||||
background: -ms-linear-gradient(left, #fa4dbe 0, #fbaa58 100%);
|
||||
background: linear-gradient(to left, #fa4dbe 0, #fbaa58 100%);
|
||||
}
|
||||
|
||||
&:before {
|
||||
transform: rotate(50deg);
|
||||
border-radius: 0 50px 0 0;
|
||||
}
|
||||
|
||||
&:after {
|
||||
position: absolute;
|
||||
right: -198px;
|
||||
top: 0;
|
||||
transform: rotate(-50deg);
|
||||
border-radius: 50px 0 0 0;
|
||||
/* background: pink; */
|
||||
}
|
||||
}
|
||||
|
||||
.left-bottom-sign {
|
||||
position: absolute;
|
||||
left: -270px;
|
||||
bottom: -320px;
|
||||
/*border: 100upx solid #d0d1fd;*/
|
||||
border-radius: 50%;
|
||||
padding: 90px;
|
||||
}
|
||||
|
||||
.welcome {
|
||||
position: relative;
|
||||
left: 30px;
|
||||
top: -50px;
|
||||
font-size: 23px;
|
||||
color: #555;
|
||||
text-shadow: 1px 0px 1px rgba(0, 0, 0, .3);
|
||||
}
|
||||
|
||||
.input-content {
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.input-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
justify-content: center;
|
||||
padding: 0 30px;
|
||||
/* background: $page-color-light; */
|
||||
height: 64px;
|
||||
border-radius: 4px;
|
||||
margin-bottom: 30px;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.tit {
|
||||
height: 30px;
|
||||
line-height: 28px;
|
||||
/* font-size: $font-sm+2upx;
|
||||
color: $font-color-base; */
|
||||
}
|
||||
|
||||
input {
|
||||
height: 40px;
|
||||
/* font-size: $font-base + 2upx;
|
||||
color: $font-color-dark; */
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.confirm-btn {
|
||||
width: 300px;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
border-radius: 30px;
|
||||
margin-top: 70upx;
|
||||
background: #FF4701;
|
||||
color: #fff;
|
||||
/* font-size: $font-lg; */
|
||||
|
||||
&:after {
|
||||
border-radius: 60px;
|
||||
}
|
||||
}
|
||||
|
||||
.forget-section {
|
||||
/* font-size: $font-sm+2upx;
|
||||
color: $font-color-spec; */
|
||||
text-align: center;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.register-section {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
bottom: 30px;
|
||||
width: 100%;
|
||||
/* font-size: $font-sm+2upx;
|
||||
color: $font-color-base; */
|
||||
text-align: center;
|
||||
|
||||
text {
|
||||
/* color: $font-color-spec; */
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
<template>
|
||||
<view>
|
||||
<view class="content" v-if="list.length" >
|
||||
<view class="list_box" v-for="(item,index) in list" :key="index">
|
||||
<view class="list_left">
|
||||
<view class="name">{{item.title}}</view>
|
||||
<view class="data">{{item.createTime}}</view>
|
||||
</view>
|
||||
<view class="list_right" style="color: red;" v-if="item.type==2">- {{item.money}}</view>
|
||||
<view class="list_right" style="color: #33D442;" v-if="item.type==1">+ {{item.money}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<empty v-else></empty>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import empty from '@/components/empty'
|
||||
export default {
|
||||
components: {
|
||||
empty
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
list: [],
|
||||
page: 1,
|
||||
totalCount: 0
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.taskData()
|
||||
},
|
||||
methods: {
|
||||
// 获取任务数据
|
||||
taskData() {
|
||||
this.$Request.getT('/app/userinfo/findMoneyDetails?classify=3&page='+this.page+'&limit=15').then(res => {
|
||||
if(res.code==0){
|
||||
// this.list = res.data.list
|
||||
if (this.page == 1) {
|
||||
this.list = res.data.list
|
||||
} else {
|
||||
this.list = this.list.concat(res.data.list)
|
||||
}
|
||||
|
||||
this.totalCount = res.data.totalPage
|
||||
}
|
||||
console.log('res',res)
|
||||
uni.stopPullDownRefresh();
|
||||
});
|
||||
},
|
||||
},
|
||||
// 上拉加载
|
||||
onReachBottom: function() {
|
||||
if (this.page < this.totalCount) {
|
||||
this.page += 1;
|
||||
this.taskData();
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '已经最后一页啦',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
onPullDownRefresh: function() {
|
||||
this.page = 1;
|
||||
this.taskData();
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
background: #F5F5F5;
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 100%;
|
||||
background: #FFFFFF;
|
||||
/* margin-top: 20rpx; */
|
||||
padding-bottom: 50rpx;
|
||||
padding-top: 20rpx;
|
||||
}
|
||||
|
||||
.list_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
line-height: 45rpx;
|
||||
padding-top: 20rpx;
|
||||
}
|
||||
|
||||
.list_left {
|
||||
flex: 2;
|
||||
}
|
||||
|
||||
.name {
|
||||
font-size: 26rpx;
|
||||
color: #333333;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.data {
|
||||
color: #999999;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.list_right {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
font-size: 31rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,632 @@
|
|||
<template>
|
||||
<view class="content" v-if="XCXIsSelect !='否'">
|
||||
<view class="part_one">
|
||||
<view class="one_title">可提现金额</view>
|
||||
<view class="one_price">¥{{mayMoney}}</view>
|
||||
</view>
|
||||
<view class="part_two">
|
||||
<view class="two_title">提现金额
|
||||
<text>提现最低额度{{minMoney}}元</text>
|
||||
</view>
|
||||
<view class="two_box">
|
||||
¥
|
||||
<u-input v-model="money" type="number" :clearable="false" :border="border" placeholder="请输入提现金额" />
|
||||
</view>
|
||||
|
||||
<view class="beizhu">*注单笔限制提现最低额度{{minMoney}}元,最大提现额度为{{manMoney}}元,单笔提现手续费{{shouxufei*100}}%</view>
|
||||
|
||||
</view>
|
||||
<view class="part_three">
|
||||
<view class="three_name">兑换方式</view>
|
||||
<view class="btn">
|
||||
<view class="btn_left" :class="current==2?'btna':''" @click="bindToindex(2)">
|
||||
<image src="../../../../static/my/weixin.png"></image>
|
||||
<text>微信</text>
|
||||
</view>
|
||||
<view class="btn_right" :class="current==1?'btna':''" @click="bindToindex(1)">
|
||||
<image src="../../../../static/my/zhifubao.png"></image>
|
||||
<text>支付宝</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="part_four">
|
||||
<view class="submit" @click="getOut()">立即提现</view>
|
||||
<view class="four_box">
|
||||
<view class="box_left" @click="goZhifuBao">
|
||||
提现账户
|
||||
</view>
|
||||
<view class="box_right" @click="list">
|
||||
提现记录
|
||||
</view>
|
||||
<view class="box_right" @click="isShow">
|
||||
微信收款码
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 微信收款码弹框 -->
|
||||
<u-popup v-model="show" mode="center">
|
||||
<view class="padding">
|
||||
<view class="text-center text-lg text-bold flex justify-between">
|
||||
<view></view>
|
||||
<view>添加微信收款码</view>
|
||||
<view @click="show=false">X</view>
|
||||
</view>
|
||||
<!-- <view class="text-center padding-top-sm padding-bottom-lg" style="color: #999999;">请提交微信号和微信二维码
|
||||
</view> -->
|
||||
<view style="width: 80%;margin: 0 auto;">
|
||||
<view class="margin-top" @click.stop="weixin"
|
||||
style="border: 4rpx solid #010101;border-radius: 16rpx;overflow: hidden;">
|
||||
<image v-if="!wximg" src="../../../../static/image/erweima.png"></image>
|
||||
<image v-else :src="wximg" mode=""></image>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="text-center margin-top-sm " @click="submit"
|
||||
style="border-radius: 10rpx;background-color: #7E59FF;color: #fff;height: 80rpx;line-height: 80rpx;">保存</view> -->
|
||||
</view>
|
||||
</u-popup>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { showToast } from '../../../../common/queue';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
show: false,
|
||||
current: '1',
|
||||
// value: 10,
|
||||
money: '',
|
||||
zhifubaoName: '',
|
||||
zhifubao: '',
|
||||
shouxufei: 0.01,
|
||||
minMoney: '10',
|
||||
manMoney: '200',
|
||||
mayMoney: '',
|
||||
XCXIsSelect: '否',
|
||||
wximg: '',
|
||||
values: ''
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.XCXIsSelect = this.$queue.getData('XCXIsSelect');
|
||||
if (this.XCXIsSelect == '否') {
|
||||
uni.setNavigationBarTitle({
|
||||
title: '隐私政策'
|
||||
});
|
||||
} else {
|
||||
uni.setNavigationBarTitle({
|
||||
title: '余额提现'
|
||||
});
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
this.getMoney()
|
||||
//最低可提现金额度
|
||||
this.$Request.getT('/app/common/type/112').then(res => {
|
||||
if (res.code === 0) {
|
||||
this.minMoney = res.data.value
|
||||
}
|
||||
});
|
||||
//最高可提现金额度
|
||||
this.$Request.getT('/app/common/type/153').then(res => {
|
||||
if (res.code === 0) {
|
||||
this.manMoney = res.data.value
|
||||
}
|
||||
});
|
||||
//手续费
|
||||
this.$Request.getT('/app/common/type/114').then(res => {
|
||||
if (res.code === 0) {
|
||||
this.shouxufei = res.data.value
|
||||
}
|
||||
});
|
||||
this.$Request.getT('/app/common/type/290').then(res => { //判断微信提现方式
|
||||
if (res.code == 0) {
|
||||
if (res.data && res.data.value) {
|
||||
this.values = res.data.value
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
//用户收款码弹框
|
||||
isShow() {
|
||||
this.getMoney()
|
||||
this.show = true
|
||||
},
|
||||
//微信 支付宝提现选择
|
||||
bindToindex(e) {
|
||||
this.current = e
|
||||
console.log(e, this.current)
|
||||
},
|
||||
list() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/myAccount/AcontMoney/cashList'
|
||||
});
|
||||
},
|
||||
goZhifuBao() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/myAccount/AcontMoney/zhifubao'
|
||||
});
|
||||
},
|
||||
getMoney() {
|
||||
let that = this;
|
||||
let token = this.$queue.getData('token');
|
||||
let userId = this.$queue.getData('userId');
|
||||
if (token) {
|
||||
//this.$queue.showLoading("加载中...");
|
||||
//可以提现金额查询预估收入查询
|
||||
that.$Request.getT("/app/userinfo/findUserInfoById").then(res => {
|
||||
if (res.code === 0 && res.data) {
|
||||
that.mayMoney = res.data.balance;
|
||||
that.zhifubao = res.data.zhiFuBao;
|
||||
that.zhifubaoName = res.data.zhiFuBaoName;
|
||||
that.wximg = res.data.cashQrCode
|
||||
} else if (res.code === -102) {
|
||||
that.$queue.showToast(res.msg);
|
||||
that.$queue.logout();
|
||||
// uni.navigateTo({
|
||||
// url: '/pages/public/login'
|
||||
// });
|
||||
} else {
|
||||
that.mayMoney = '0';
|
||||
//this.$queue.showToast(res.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
getOut() {
|
||||
let that = this;
|
||||
let token = that.$queue.getData('token');
|
||||
let userId = that.$queue.getData('userId');
|
||||
if (token) {
|
||||
if (that.current == 1) {
|
||||
if (!that.zhifubao || !that.zhifubaoName) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/myAccount/AcontMoney/zhifubao'
|
||||
});
|
||||
return
|
||||
}
|
||||
if (!/^\d+$/.test(that.money)) {
|
||||
// uni.showToast({
|
||||
// icon: 'none',
|
||||
// title: '请输入正确金额,不能包含中文,英文,特殊字符和小数'
|
||||
// });
|
||||
that.$queue.showToast('请输入正确金额,不能包含中文,英文,特殊字符和小数')
|
||||
return;
|
||||
}
|
||||
if (Number(that.money) < Number(that.minMoney)) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '提现金额不能小于' + that.minMoney + '元'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (Number(that.money) > Number(that.manMoney)) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '提现金额不能大于' + that.manMoney + '元'
|
||||
});
|
||||
return;
|
||||
}
|
||||
uni.showModal({
|
||||
title: '提现申请提示',
|
||||
content: '请仔细确认收款人信息\n姓名:' + that.zhifubaoName + '\n提现金额:' + that.money + '\n提现手续费:' +
|
||||
parseFloat(that.money * that.shouxufei).toFixed(2) + '元' + '\n收款账号:' + that.zhifubao + '',
|
||||
success: e => {
|
||||
if (e.confirm) {
|
||||
that.$queue.showLoading('提现中...');
|
||||
that.$Request.getT('/app/cash/cashMoney?classify=' + that.current +
|
||||
'&money=' + that.money).then(res => {
|
||||
if (res.code === 0) {
|
||||
that.$queue.showToast('提现申请成功,预计三个工作日到账');
|
||||
that.getMoney();
|
||||
that.mayMoney = ''
|
||||
} else {
|
||||
uni.showModal({
|
||||
title: '温馨提示',
|
||||
content: res.msg,
|
||||
showCancel: false,
|
||||
cancelText: '取消',
|
||||
confirmText: '确认'
|
||||
});
|
||||
}
|
||||
uni.hideLoading();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
} else if (that.current == 2) {
|
||||
if (!/^\d+$/.test(that.money)) {
|
||||
// uni.showToast({
|
||||
// icon: 'none',
|
||||
// title: '请输入正确金额,不能包含中文,英文,特殊字符和小数'
|
||||
// });
|
||||
that.$queue.showToast('请输入正确金额,不能包含中文,英文,特殊字符和小数')
|
||||
return;
|
||||
}
|
||||
if (Number(that.money) < Number(that.minMoney)) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '提现金额不能小于' + that.minMoney + '元'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (Number(that.money) > Number(that.manMoney)) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '提现金额不能大于' + that.manMoney + '元'
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (that.values == 2) {
|
||||
that.$Request.getT('/app/userinfo/findUserInfoById').then(res => {
|
||||
if (res.code === 0) {
|
||||
let wxImg = res.data.cashQrCode;
|
||||
if (!wxImg) {
|
||||
uni.showModal({
|
||||
title: '提现提示',
|
||||
content: '请上传微信收款码',
|
||||
showCancel: true,
|
||||
cancelText: '取消',
|
||||
confirmText: '上传',
|
||||
success: res => {
|
||||
if (res.confirm) {
|
||||
that.show = true
|
||||
}
|
||||
},
|
||||
fail: () => {},
|
||||
complete: () => {}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (that.money * 1 >= that.minMoney * 1) {
|
||||
uni.showModal({
|
||||
title: '提现申请提示',
|
||||
content: '金额:' + that.money + '元' + ',' + '手续费:' + (that
|
||||
.money * that.shouxufei).toFixed(2),
|
||||
success: e => {
|
||||
if (e.confirm) {
|
||||
that.$queue.showLoading('提现中...');
|
||||
let data = {
|
||||
money: that.money,
|
||||
classify: 2
|
||||
}
|
||||
that.$Request.getT('/app/cash/cashMoney',
|
||||
data).then(
|
||||
res => {
|
||||
if (res.code === 0) {
|
||||
setTimeout(function() {
|
||||
that.$queue.showToast(
|
||||
'提现申请成功,预计三个工作日到账'
|
||||
);
|
||||
}, 1000)
|
||||
that.getMoney();
|
||||
that.money = ''
|
||||
} else {
|
||||
uni.showModal({
|
||||
title: '温馨提示',
|
||||
content: res.msg,
|
||||
showCancel: false,
|
||||
cancelText: '取消',
|
||||
confirmText: '确认'
|
||||
});
|
||||
|
||||
}
|
||||
uni.hideLoading();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
setTimeout(function() {
|
||||
that.$queue.showToast('提现金额必须大于或等于' + that.minMoney + '元才可提现');
|
||||
}, 1000)
|
||||
|
||||
}
|
||||
} else {
|
||||
that.$queue.showToast('网络状态不好,请刷新后重试!');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
} else {
|
||||
if (!/^\d+$/.test(that.money)) {
|
||||
// uni.showToast({
|
||||
// icon: 'none',
|
||||
// title: '请输入正确金额,不能包含中文,英文,特殊字符和小数'
|
||||
// });
|
||||
that.$queue.showToast('请输入正确金额,不能包含中文,英文,特殊字符和小数')
|
||||
return;
|
||||
}
|
||||
if (parseFloat(that.money).toFixed(1) >= that.minMoney) {
|
||||
uni.showModal({
|
||||
title: '提现申请提示',
|
||||
content: '金额:' + that.money + '元' + ',' + '手续费:' + parseFloat(that
|
||||
.money * that.shouxufei).toFixed(2),
|
||||
success: e => {
|
||||
if (e.confirm) {
|
||||
that.$queue.showLoading('提现中...');
|
||||
let data = {
|
||||
money: that.money,
|
||||
classify: 2,
|
||||
type: 3
|
||||
}
|
||||
that.$Request.getT('/shop/shopmoney/shopCashMoney', data).then(
|
||||
res => {
|
||||
if (res.code === 0) {
|
||||
setTimeout(function() {
|
||||
that.$queue.showToast(
|
||||
'提现申请成功,预计三个工作日到账');
|
||||
}, 1000)
|
||||
that.getMoney();
|
||||
that.money =''
|
||||
} else {
|
||||
uni.showModal({
|
||||
title: '温馨提示',
|
||||
content: res.msg,
|
||||
showCancel: false,
|
||||
cancelText: '取消',
|
||||
confirmText: '确认'
|
||||
});
|
||||
that.getMoney();
|
||||
}
|
||||
uni.hideLoading();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
that.$queue.showToast('提现金额必须大于或等于' + that.minMoney + '元才可提现');
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '提现失败'
|
||||
})
|
||||
}
|
||||
},
|
||||
weixin() {
|
||||
let that = this
|
||||
uni.chooseImage({
|
||||
count: 1, //默认9
|
||||
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album', 'camera'], //从相册选择
|
||||
success: (res) => {
|
||||
that.$queue.showLoading("上传中...");
|
||||
for (let i = 0; i < 1; i++) {
|
||||
uni.uploadFile({ // 上传接口
|
||||
url: 'https://tcwm.xianmaxiong.com/sqx_fast/alioss/upload', //真实的接口地址
|
||||
filePath: res.tempFilePaths[i],
|
||||
name: 'file',
|
||||
success: (uploadFileRes) => {
|
||||
let img = JSON.parse(uploadFileRes.data).data
|
||||
let userId = that.$queue.getData('userId');
|
||||
let data = {
|
||||
cashQrCode: img
|
||||
}
|
||||
that.$Request.postJson('/app/user/updateUser',
|
||||
data).then(
|
||||
res => {
|
||||
if (res.code == 0) {
|
||||
that.getMoney()
|
||||
setTimeout(function() {
|
||||
that.$queue.showToast('上传成功')
|
||||
}, 1000)
|
||||
}
|
||||
});
|
||||
uni.hideLoading();
|
||||
|
||||
|
||||
|
||||
// that.show = false
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
background: #F5F5F5;
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
.part_one {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
background: #FFFFFF;
|
||||
margin-top: 20rpx;
|
||||
border-radius: 20rpx;
|
||||
height: 170rpx;
|
||||
}
|
||||
|
||||
.one_title {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
font-size: 32rpx;
|
||||
letter-spacing: 1rpx;
|
||||
padding-top: 30rpx;
|
||||
}
|
||||
|
||||
.one_price {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
margin-top: 20rpx;
|
||||
font-size: 47rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.part_two {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
background: #FFFFFF;
|
||||
margin-top: 20rpx;
|
||||
border-radius: 20rpx;
|
||||
}
|
||||
|
||||
.two_title {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
line-height: 95rpx;
|
||||
font-size: 34rpx;
|
||||
}
|
||||
|
||||
.two_title text {
|
||||
font-size: 27rpx;
|
||||
margin-left: 34rpx;
|
||||
}
|
||||
|
||||
.two_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.u-input__input {
|
||||
font-size: 50rpx !important;
|
||||
color: #747474 !important;
|
||||
border-bottom: 1rpx solid #cccccc;
|
||||
|
||||
}
|
||||
|
||||
.tit {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
font-size: 31rpx;
|
||||
margin-top: 10rpx;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.beizhu {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
line-height: 55rpx;
|
||||
color: red;
|
||||
letter-spacing: 1rpx;
|
||||
}
|
||||
|
||||
.part_three {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
background: #FFFFFF;
|
||||
margin-top: 20rpx;
|
||||
border-radius: 20rpx;
|
||||
}
|
||||
|
||||
.three_name {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
font-size: 33rpx;
|
||||
color: black;
|
||||
line-height: 80rpx;
|
||||
}
|
||||
|
||||
.btn {
|
||||
width: 96%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
padding-bottom: 30rpx;
|
||||
}
|
||||
|
||||
.btn_left {
|
||||
flex: 1;
|
||||
height: 90rpx;
|
||||
border: 1rpx solid #ccc;
|
||||
border-radius: 20rpx;
|
||||
margin-right: 10rpx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.btn_right {
|
||||
flex: 1;
|
||||
/* width: 240rpx; */
|
||||
height: 90rpx;
|
||||
border: 1rpx solid #ccc;
|
||||
border-radius: 20rpx;
|
||||
margin-left: 10rpx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.btna {
|
||||
border: 1rpx solid #E34B21 !important;
|
||||
}
|
||||
|
||||
|
||||
.btn_left image {
|
||||
width: 50rpx;
|
||||
height: 50rpx;
|
||||
margin-right: 12rpx;
|
||||
}
|
||||
|
||||
.btn_right image {
|
||||
width: 50rpx;
|
||||
height: 50rpx;
|
||||
margin-right: 12rpx;
|
||||
}
|
||||
|
||||
.part_four {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
/* background: #FFFFFF; */
|
||||
margin-top: 20rpx;
|
||||
border-radius: 20rpx;
|
||||
}
|
||||
|
||||
.submit {
|
||||
width: 100%;
|
||||
height: 90rpx;
|
||||
background: #F8501F;
|
||||
color: #F8EBD2;
|
||||
text-align: center;
|
||||
line-height: 90rpx;
|
||||
font-size: 37rpx;
|
||||
border-radius: 12rpx;
|
||||
}
|
||||
|
||||
.four_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
height: 125rpx;
|
||||
display: flex;
|
||||
color: #838383;
|
||||
}
|
||||
|
||||
.box_left {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.box_right {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,176 @@
|
|||
<template>
|
||||
<view class="my_account">
|
||||
<view class="account_top">
|
||||
<view class="account_name">账户余额</view>
|
||||
<view class="account_price">{{moneys}}<text>元</text></view>
|
||||
<view class="account_btn" @click="bindTxmoney">立即提现</view>
|
||||
</view>
|
||||
<!-- 我的列表 -->
|
||||
<view class="mylist">
|
||||
<view class="list_box" v-for="(item,index) in mylist" :key="index" @click="bindTomy(item.name)">
|
||||
<view class="list_left">
|
||||
<view class="list_img">
|
||||
<image :src="item.image"></image>
|
||||
</view>
|
||||
<view class="list_name">{{item.name}}</view>
|
||||
</view>
|
||||
<view class="list_right">
|
||||
<image src="../../../static/my/icon_go.png"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
moneys:0,
|
||||
mylist: [{
|
||||
id: 1,
|
||||
name: '保证金',
|
||||
image: '../../../static/rider/qqq.png'
|
||||
}, {
|
||||
id: 2,
|
||||
name: '账户明细',
|
||||
image: '../../../static/rider/qq.png'
|
||||
}]
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
this.taskData()
|
||||
},
|
||||
methods: {
|
||||
// 获取任务数据
|
||||
taskData() {
|
||||
this.$Request.getT('/app/userinfo/findBalance').then(res => {
|
||||
if(res.code==0){
|
||||
if(res.data){
|
||||
this.moneys = res.data
|
||||
}
|
||||
|
||||
}
|
||||
console.log('res',res)
|
||||
|
||||
});
|
||||
},
|
||||
bindTxmoney() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/myAccount/Txmoney/Txmoney'
|
||||
})
|
||||
},
|
||||
bindTomy(name) {
|
||||
console.log(name)
|
||||
if (name == '保证金') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/myAccount/AcontMoney/AcontMoney'
|
||||
})
|
||||
} else if (name == '账户明细') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/myAccount/Acontlist/Acontlist'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.my_account {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.account_top {
|
||||
width: 100%;
|
||||
height: 280rpx;
|
||||
background: #FF7F00;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.account_name {
|
||||
position: absolute;
|
||||
top: 80rpx;
|
||||
left: 80rpx;
|
||||
color: white;
|
||||
font-size: 30rpx;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.account_price {
|
||||
position: absolute;
|
||||
top: 140rpx;
|
||||
left: 80rpx;
|
||||
color: white;
|
||||
font-size: 50rpx;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.account_price text {
|
||||
font-size: 25rpx;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
.account_btn {
|
||||
width: 190rpx;
|
||||
height: 66rpx;
|
||||
background: #ffffff;
|
||||
color: #FF7F00;
|
||||
border-radius: 66rpx;
|
||||
text-align: center;
|
||||
line-height: 66rpx;
|
||||
position: absolute;
|
||||
top: 140rpx;
|
||||
right: 40rpx;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
/* 我的列表 */
|
||||
.mylist {
|
||||
width: 93%;
|
||||
margin: 0 auto;
|
||||
background-color: #FFFFFF;
|
||||
margin-top: 10rpx;
|
||||
border-radius: 23rpx;
|
||||
}
|
||||
|
||||
.list_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
height: 95rpx;
|
||||
}
|
||||
|
||||
.list_left {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.list_img {
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
.list_img image {
|
||||
width: 50rpx;
|
||||
height: 50rpx;
|
||||
}
|
||||
|
||||
.list_name {
|
||||
font-size: 25rpx;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.list_right {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.list_right image {
|
||||
width: 12rpx;
|
||||
height: 20rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,233 @@
|
|||
<template>
|
||||
<view class="comment">
|
||||
<view class="comment_tabs">
|
||||
<view class="box" v-for="(item,index) in list" :key="index" @click="change(index)" :class="{btna:count == index}">{{item}}</view>
|
||||
</view>
|
||||
<view class="tab_box" :class="{dis:btnnum == 0}">
|
||||
<view class="content">
|
||||
<view class="content_box" v-for="(item,index) in head" :key="item.id">
|
||||
<view class="comment_head">
|
||||
<view class="head_left">
|
||||
<view class="img">
|
||||
<image :src="item.avatar?item.avatar:'../../../static/logo.png'"></image>
|
||||
</view>
|
||||
<view class="comment_name">{{item.nickName?item.nickName:'匿名'}}</view>
|
||||
</view>
|
||||
<view class="head_right" v-if="item.satisfactionFlag=='0'">
|
||||
<view class="image">
|
||||
<image src="../../../static/rider/zan.png"></image>
|
||||
</view>
|
||||
<view class="comment_tit">满意</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="comment_title">{{item.evaluateMessage}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<empty v-if="head.length == 0" ></empty>
|
||||
</view>
|
||||
<view class="tab_box" :class="{dis:btnnum == 1}">
|
||||
<view class="content">
|
||||
<view class="content_box" v-for="(item,index) in head" :key="item.id">
|
||||
<view class="comment_head">
|
||||
<view class="head_left">
|
||||
<view class="img">
|
||||
<image :src="item.avatar?item.avatar:'../../../static/logo.png'"></image>
|
||||
</view>
|
||||
<view class="comment_name">{{item.nickName?item.nickName:'匿名'}}</view>
|
||||
</view>
|
||||
<view class="head_right" v-if="item.satisfactionFlag=='1'">
|
||||
<view class="image">
|
||||
<image src="../../../static/rider/zz.png"></image>
|
||||
</view>
|
||||
<view class="comment_tit comment_tit1">不满意</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="comment_title">{{item.evaluateMessage}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<empty v-if="head.length == 0" ></empty>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import empty from '@/components/empty'
|
||||
export default {
|
||||
components: {
|
||||
empty
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
list: ["满意", "不满意"],
|
||||
btnnum: 0,
|
||||
count: "",
|
||||
head: [],
|
||||
page:1,
|
||||
limit:10,
|
||||
totalCount:0,
|
||||
satisfactionFlag:0
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.bindorder()
|
||||
},
|
||||
methods: {
|
||||
change(e) {
|
||||
// console.log(e)
|
||||
this.head = []
|
||||
this.page = 1
|
||||
this.count = e
|
||||
this.btnnum = e
|
||||
this.satisfactionFlag = e
|
||||
this.bindorder()
|
||||
},
|
||||
// 获取数据
|
||||
bindorder() {
|
||||
this.$Request.getT('/app/userinfo/findEvaluate',
|
||||
{
|
||||
page:this.page,
|
||||
limit:this.limit,
|
||||
satisfactionFlag:this.satisfactionFlag
|
||||
}).then(res => {
|
||||
if(res.code==0){
|
||||
// this.head = res.data
|
||||
if (this.page == 1) {
|
||||
this.head = res.data.list
|
||||
} else {
|
||||
this.head = this.head.concat(res.data.list)
|
||||
}
|
||||
this.totalCount = res.data.totalCount
|
||||
}else{
|
||||
console.log('失败:',res.data)
|
||||
}
|
||||
uni.stopPullDownRefresh();
|
||||
});
|
||||
},
|
||||
},
|
||||
// 上拉加载
|
||||
onReachBottom: function() {
|
||||
if(this.page<this.totalCount){
|
||||
this.page = this.page + 1;
|
||||
this.bindorder();
|
||||
}else{
|
||||
uni.showToast({
|
||||
title:'已经最后一页啦',
|
||||
icon:'none'
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
// 下拉刷新
|
||||
onPullDownRefresh: function() {
|
||||
this.page = 1;
|
||||
this.bindorder();
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
background: #F5F5F5;
|
||||
}
|
||||
|
||||
.comment {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.comment_tabs {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
background: #FFFFFF;
|
||||
height: 90rpx;
|
||||
}
|
||||
|
||||
.box {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.btna {
|
||||
background-color: #E6E6E6;
|
||||
}
|
||||
|
||||
.tab_box {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dis {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* 满意 */
|
||||
.content {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
background: #ffffff;
|
||||
border-radius: 16rpx;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
|
||||
.content_box {
|
||||
height: 145rpx;
|
||||
}
|
||||
|
||||
.img image {
|
||||
width: 50rpx;
|
||||
height: 50rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.comment_head {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.comment_name {
|
||||
color: #333333;
|
||||
font-size: 22rpx;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
.head_left {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
height: 65rpx;
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
.head_right {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
color: #3390FF;
|
||||
font-size: 20rpx;
|
||||
}
|
||||
|
||||
.image {
|
||||
margin-right: 11rpx;
|
||||
margin-top: 8rpx;
|
||||
}
|
||||
|
||||
.image image {
|
||||
width: 22rpx;
|
||||
height: 22rpx;
|
||||
}
|
||||
|
||||
.comment_title {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
color: #333333;
|
||||
font-size: 25rpx;
|
||||
}
|
||||
|
||||
/* 不满意 */
|
||||
.comment_tit1 {
|
||||
color: #cccccc;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,358 @@
|
|||
<template>
|
||||
<view class="content">
|
||||
<view class="complain_cont">
|
||||
<view class="complain_tabs" v-show="!isShow">
|
||||
<u-tabs :list="list" :is-scroll="true" name="illegal" :current="current" active-color="#FF7F00"
|
||||
@change="change"></u-tabs>
|
||||
</view>
|
||||
</view>
|
||||
<u-tabs :list="listTab" :is-scroll="false" inactive-color="#333333" active-color="#FF7F00" :current="currentIndex" @change="changeTab">
|
||||
</u-tabs>
|
||||
<view class="tabs_box dis">
|
||||
<!-- 全部 -->
|
||||
<view class="complain_box" v-for="(item,index) in orderlist" :key="index" @click="bindonline(item)">
|
||||
<view class="complain_part1">
|
||||
<view class="part1_left" v-if="item.illegal">{{item.illegal}}</view>
|
||||
<view class="part1_left" v-if="item.wrongExplain">{{item.wrongExplain}}</view>
|
||||
|
||||
|
||||
<view class="part1_right">扣款{{item.deductMoney}}元</view>
|
||||
</view>
|
||||
<view class="complain_part2" v-if="item.shipAddressDetail">
|
||||
<image src="../../../static/image/black.png"></image>
|
||||
<text>{{item.shipAddressDetail}}</text>
|
||||
</view>
|
||||
<view class="complain_part2" v-if="item.deilveryAddressDetail">
|
||||
<image src="../../../static/image/orange.png"></image>
|
||||
<text>{{item.deilveryAddressDetail}}</text>
|
||||
</view>
|
||||
<view class="complain_part2" v-if="item.shopAddressDetail">
|
||||
<image src="../../../static/image/black.png"></image>
|
||||
<text>{{item.shopAddressDetail}}</text>
|
||||
</view>
|
||||
<view class="complain_part2" v-if="item.userAddressDetail">
|
||||
<image src="../../../static/image/orange.png"></image>
|
||||
<text>{{item.userAddressDetail}}</text>
|
||||
</view>
|
||||
<view class="complain_part2" v-if="item.indentNumber">
|
||||
<image src="../../../static/image/orange.png"></image>
|
||||
<text>订单号:{{item.indentNumber}}</text>
|
||||
</view>
|
||||
<u-line color="#E6E6E6" />
|
||||
<view class="complain_title">
|
||||
<span v-if="item.complaintState=='1'">可申诉</span>
|
||||
<span v-if="item.complaintState=='2'">申诉中</span>
|
||||
<span v-if="item.complaintState=='3'">申诉未通过</span>
|
||||
<span v-if="item.complaintState=='4'">申诉通过</span>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="empty" v-if="orderlist.length == 0">
|
||||
<view
|
||||
style="display: block; width: 90%; margin: 0 auto; position: fixed;top: 35%;left: 0rpx;right: 0rpx;text-align: center;">
|
||||
<image src="../../../static/image/empty.png" style="width: 300rpx;height: 300rpx;"></image>
|
||||
<view style="color: #CCCCCC;">暂无内容</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
isShow: false,
|
||||
page: 1,
|
||||
limit: 10,
|
||||
complaintType: null,
|
||||
complaintState: '',
|
||||
listTab: [{
|
||||
name: '全部'
|
||||
}, {
|
||||
name: '可申诉'
|
||||
}, {
|
||||
name: '申诉中'
|
||||
}, {
|
||||
name: '申诉未通过'
|
||||
}, {
|
||||
name: '申诉通过'
|
||||
}],
|
||||
currentIndex: 0,
|
||||
list: [{
|
||||
id: '',
|
||||
illegal: '全部'
|
||||
}],
|
||||
current: 0,
|
||||
orderlist: [],
|
||||
totalCount: 0,
|
||||
illegalId: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
onLoad() {
|
||||
this.getTypeList()
|
||||
this.bindorder()
|
||||
},
|
||||
methods: {
|
||||
getTypeList() {
|
||||
this.$Request.getT('/app/illegalType/selectIllegalTypeList').then(res => {
|
||||
if (res.code == 0) {
|
||||
this.list = [...this.list, ...res.data]
|
||||
}
|
||||
});
|
||||
},
|
||||
bindlist(index) {
|
||||
console.log(index)
|
||||
|
||||
this.current = index;
|
||||
this.isShow = !this.isShow
|
||||
},
|
||||
// 获取全部数据
|
||||
bindorder() {
|
||||
this.$Request.getT('/app/tbindent/findAllComplaint', {
|
||||
page: this.page,
|
||||
limit: this.limit,
|
||||
complaintState: this.complaintState,
|
||||
illegalId: this.illegalId
|
||||
}).then(res => {
|
||||
if (res.code == 0) {
|
||||
this.totalCount = res.data.totalCount
|
||||
if (this.page == 1) {
|
||||
this.orderlist = res.data.list
|
||||
} else {
|
||||
this.orderlist = this.list_box.concat(res.data.list)
|
||||
}
|
||||
} else {
|
||||
console.log('失败:', res.data)
|
||||
}
|
||||
|
||||
});
|
||||
},
|
||||
change(index) {
|
||||
console.log(index)
|
||||
this.illegalId = this.list[index].id
|
||||
this.orderlist = []
|
||||
this.current = index;
|
||||
this.currentIndex = 0
|
||||
this.page = 1
|
||||
|
||||
this.complaintState = ''
|
||||
this.bindorder()
|
||||
},
|
||||
changeTab(index) {
|
||||
this.orderlist = []
|
||||
this.currentIndex = index
|
||||
this.page = 1
|
||||
if (index == 0) {
|
||||
this.complaintState = ''
|
||||
} else {
|
||||
this.complaintState = index
|
||||
}
|
||||
this.bindorder()
|
||||
},
|
||||
bindonline(item) {
|
||||
// if(item.complaintState == 1 || item.complaintState == 4) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/myComplain/online_complain/online_complain?indentNumber=' + item
|
||||
.indentNumber + '&complaintId=' + item.complaintId
|
||||
})
|
||||
// }
|
||||
},
|
||||
bindshow() {
|
||||
this.isShow = !this.isShow
|
||||
},
|
||||
},
|
||||
// 上拉加载
|
||||
onReachBottom: function() {
|
||||
if (this.page < this.totalCount) {
|
||||
this.page = this.page + 1;
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '已经最后一页啦',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
this.bindorder();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
background-color: #F5F5F5;
|
||||
}
|
||||
|
||||
.empty {
|
||||
width: 100%;
|
||||
background: #ffffff;
|
||||
/* #ifdef MP-WEIXIN */
|
||||
height: 93vh;
|
||||
/* #endif */
|
||||
/* #ifndef MP-WEIXIN */
|
||||
height: 80vh;
|
||||
/* #endif */
|
||||
}
|
||||
|
||||
.u-tab-item {
|
||||
font-weight: 400 !important;
|
||||
color: #000000 !important;
|
||||
font-size: 24rpx !important;
|
||||
}
|
||||
|
||||
.tabs_box {
|
||||
/* display: none; */
|
||||
/* position: absolute; */
|
||||
/* top: 144rpx; */
|
||||
}
|
||||
|
||||
.dis {
|
||||
/* display: block; */
|
||||
/* width: 100%; */
|
||||
/* position: absolute; */
|
||||
/* top: 100rpx; */
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.complain_cont {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
/* display: flex; */
|
||||
}
|
||||
|
||||
.complain_tabs {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.complain_btn {
|
||||
width: 15%;
|
||||
background: #FFFFFF;
|
||||
box-shadow: -2rpx 1rpx 3rpx 0rpx rgba(39, 39, 39, 0.11);
|
||||
height: 88rpx;
|
||||
position: absolute;
|
||||
top: 0rpx;
|
||||
right: 0rpx;
|
||||
z-index: 10075;
|
||||
}
|
||||
|
||||
.btn {
|
||||
color: #999999;
|
||||
font-size: 25rpx;
|
||||
letter-spacing: 2rpx;
|
||||
text-align: center;
|
||||
line-height: 88rpx;
|
||||
}
|
||||
|
||||
.complain_none {
|
||||
width: 15%;
|
||||
background: #FFFFFF;
|
||||
box-shadow: -2rpx 1rpx 3rpx 0rpx rgba(39, 39, 39, 0.11);
|
||||
height: 88rpx;
|
||||
position: absolute;
|
||||
top: 88rpx;
|
||||
right: 0rpx;
|
||||
|
||||
}
|
||||
|
||||
.popup_list {
|
||||
width: 97%;
|
||||
margin: 0 auto;
|
||||
position: relative;
|
||||
top: 90rpx;
|
||||
}
|
||||
|
||||
.list_tabs {
|
||||
width: 90%;
|
||||
height: auto;
|
||||
display: flex;
|
||||
justify-content: start;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.tabs {
|
||||
border: 1rpx solid #cccccc;
|
||||
padding: 0rpx 25rpx;
|
||||
line-height: 50rpx;
|
||||
margin: 10rpx 10rpx;
|
||||
}
|
||||
|
||||
/* 全部 */
|
||||
.complain_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
/* height: 300rpx; */
|
||||
background: #ffffff;
|
||||
margin-top: 30rpx;
|
||||
border-radius: 17rpx;
|
||||
}
|
||||
|
||||
.complain_part1 {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
/* padding-top: 20rpx; */
|
||||
}
|
||||
|
||||
.part1_left {
|
||||
flex: 1;
|
||||
font-size: 26rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
height: 80rpx;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.part1_right {
|
||||
flex: 1;
|
||||
color: #FF1B1B;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.complain_part2 {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
height: 50rpx;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.complain_part2 image {
|
||||
width: 15rpx;
|
||||
height: 15rpx;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
.complain_part2 text {
|
||||
color: #999999;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.u-line {
|
||||
border-bottom-width: 3px !important;
|
||||
margin-top: 20rpx !important;
|
||||
}
|
||||
|
||||
.complain_title {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
height: 80rpx;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
color: #FF2727;
|
||||
font-size: 27rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,195 @@
|
|||
<template>
|
||||
<view class="content">
|
||||
<view class="online_box">
|
||||
<view class="online_title">{{datas.illegal}}</view>
|
||||
<u-line color="#E6E6E6" />
|
||||
<view class="online" style="padding-top: 10rpx;">
|
||||
<view class="online_tit">违规说明</view>
|
||||
<view class="online_test">{{datas.wrongExplain}}</view>
|
||||
</view>
|
||||
<view class="online">
|
||||
<view class="online_tit">关联订单</view>
|
||||
<view class="online_text" v-if="datas.shipAddressDetail" >
|
||||
<image src="../../../../static/image/black.png"></image>
|
||||
<text>{{datas.shipAddressDetail}}</text>
|
||||
</view>
|
||||
<view class="online_text" v-if="datas.deilveryAddressDetail">
|
||||
<image src="../../../../static/image/orange.png"></image>
|
||||
<text>{{datas.deilveryAddressDetail}}</text>
|
||||
</view>
|
||||
|
||||
<view class="online_text" v-if="datas.shopAddressDetail">
|
||||
<image src="../../../../static/image/black.png"></image>
|
||||
<text>{{datas.shopAddressDetail}}</text>
|
||||
</view>
|
||||
<view class="online_text" v-if="datas.userAddressDetail">
|
||||
<image src="../../../../static/image/orange.png"></image>
|
||||
<text>{{datas.userAddressDetail}}</text>
|
||||
</view>
|
||||
<view class="online_text" v-if="datas.indentNumber" @click="copyOrder(datas.indentNumber)">
|
||||
<image src="../../../../static/image/orange.png"></image>
|
||||
<text>订单号:{{datas.indentNumber}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="online">
|
||||
<view class="online_tit">违规说明</view>
|
||||
<view style="font-size: 24rpx;margin-top: 10rpx;">{{datas.resultHanding}}</view>
|
||||
<view class="pnline_tip">如果配送中上报异常,审核成功后违规消除,不扣款</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn" v-if="datas.complaintState=='1'" @click="bindonline">在线申诉</view>
|
||||
<view class="btn btn1" v-if="datas.complaintState=='2'" >申诉中</view>
|
||||
<view class="btn" v-if="datas.complaintState=='3'"@click="bindonline" >申诉未通过</view>
|
||||
<view class="btn" v-if="datas.complaintState=='4'" >申诉通过</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
list: [{
|
||||
id: 1,
|
||||
img: '../../../../static/image/black.png',
|
||||
name: '西安智能大厦'
|
||||
}, {
|
||||
id: 2,
|
||||
img: '../../../../static/image/orange.png',
|
||||
name: '用户地址隐藏',
|
||||
}],
|
||||
indentNumber:'',
|
||||
datas:{},
|
||||
complaintId: ''
|
||||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
console.log(options)
|
||||
this.indentNumber =options.indentNumber
|
||||
this.complaintId = options.complaintId
|
||||
// this.bindorder()
|
||||
},
|
||||
onShow() {
|
||||
console.log('`````````````11111111')
|
||||
if(this.indentNumber!=''){
|
||||
this.bindorder()
|
||||
}
|
||||
|
||||
},
|
||||
methods: {
|
||||
copyOrder(value) {
|
||||
uni.setClipboardData({
|
||||
data: value, //要被复制的内容
|
||||
success: () => { //复制成功的回调函数
|
||||
uni.showToast({ //提示
|
||||
title: '复制成功'
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
bindonline() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/myOnline/myOnline?indentNumber='+this.indentNumber+'&complaintType='+this.datas.complaintType+'&complaintId='+this.complaintId
|
||||
})
|
||||
},
|
||||
// 获取数据
|
||||
bindorder() {
|
||||
this.$Request.getT('/app/tbindent/findComplaint',
|
||||
{
|
||||
indentNumber:this.indentNumber,
|
||||
complaintId: this.complaintId
|
||||
}).then(res => {
|
||||
if(res.code==0){
|
||||
this.datas = res.data
|
||||
|
||||
}else{
|
||||
console.log('失败:',res.data)
|
||||
}
|
||||
|
||||
});
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
background-color: #F5F5F5;
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.online_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
background: #FFFFFF;
|
||||
border-radius: 20rpx;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
|
||||
.online_title {
|
||||
font-size: 28rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
line-height: 80rpx;
|
||||
}
|
||||
|
||||
.online {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
padding-bottom: 34rpx;
|
||||
}
|
||||
|
||||
.online_tit {
|
||||
font-size: 27rpx;
|
||||
letter-spacing: 2rpx;
|
||||
font-weight: bolder;
|
||||
line-height: 40rpx;
|
||||
|
||||
}
|
||||
|
||||
.online_test {
|
||||
color: #333333;
|
||||
font-size: 26rpx;
|
||||
letter-spacing: 2rpx;
|
||||
line-height: 38rpx;
|
||||
}
|
||||
|
||||
.online_text {}
|
||||
|
||||
.online_text image {
|
||||
width: 15rpx;
|
||||
height: 15rpx;
|
||||
}
|
||||
|
||||
.online_text text {
|
||||
font-size: 21rpx;
|
||||
color: #333333;
|
||||
margin-left: 15rpx;
|
||||
letter-spacing: 1rpx;
|
||||
}
|
||||
|
||||
.pnline_tip {
|
||||
color: #999999;
|
||||
font-size: 25rpx;
|
||||
line-height: 50rpx;
|
||||
}
|
||||
|
||||
.btn {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
background: #FF7F00;
|
||||
line-height: 90rpx;
|
||||
text-align: center;
|
||||
color: white;
|
||||
border-radius: 15rpx;
|
||||
margin-top: 20rpx;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
.btn1{
|
||||
background: #ccc;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,157 @@
|
|||
<template>
|
||||
<view class="content">
|
||||
<view class="online_box">
|
||||
<view class="online">
|
||||
<view class="tit">申诉理由</view>
|
||||
<view class="text_box" style="margin-top: 20rpx;">
|
||||
<u-input v-model="value" height="300" :type="type" :border="border" :clearable="false" placeholder="请描述问题发生的情况" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn" @click="bindorder">立即提交</view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
value: '',
|
||||
type: 'textarea',
|
||||
border: true,
|
||||
indentNumber:'',
|
||||
complaintType:'',
|
||||
complaintName:'',
|
||||
complaintId: '',
|
||||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
console.log(options)
|
||||
this.indentNumber =options.indentNumber
|
||||
this.complaintId =options.complaintId
|
||||
},
|
||||
methods: {
|
||||
bindorder(){
|
||||
if(this.value==''){
|
||||
uni.showToast({
|
||||
title:'请填写申诉原因',
|
||||
icon:'none'
|
||||
})
|
||||
return
|
||||
}
|
||||
this.$Request.postJson('/app/tbindent/appealIndent',
|
||||
{
|
||||
indentNumber:this.indentNumber,
|
||||
// appealType:this.complaintType,
|
||||
appealMessage:this.value,
|
||||
complaintId: this.complaintId
|
||||
}).then(res => {
|
||||
if(res.code==0){
|
||||
uni.showToast({
|
||||
title:'提交成功',
|
||||
icon:'none'
|
||||
})
|
||||
setTimeout(function(){
|
||||
uni.redirectTo({
|
||||
url:'/pages/riderMy/myComplain/myComplain'
|
||||
})
|
||||
},1500)
|
||||
}else{
|
||||
console.log('失败:',res.data)
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
background-color: #F5F5F5;
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.online_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
background: #FFFFFF;
|
||||
border-radius: 20rpx;
|
||||
margin-top: 30rpx;
|
||||
padding-top: 20rpx;
|
||||
padding-bottom: 40rpx;
|
||||
}
|
||||
|
||||
.part1 {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
height: 80rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.online_left {
|
||||
flex: 1;
|
||||
font-size: 27rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.online_right {
|
||||
color: #999999;
|
||||
font-size: 22rpx;
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.online_right image {
|
||||
width: 12rpx;
|
||||
height: 21rpx;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
.online_title {
|
||||
font-size: 28rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
line-height: 80rpx;
|
||||
}
|
||||
|
||||
.online {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
padding-bottom: 34rpx;
|
||||
}
|
||||
|
||||
.tit {
|
||||
font-size: 27rpx;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
margin-top: 19rpx;
|
||||
}
|
||||
|
||||
.u-input--border {
|
||||
border: none !important;
|
||||
background: #F5F5F5 !important;
|
||||
}
|
||||
|
||||
.btn {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
background: #FF7F00;
|
||||
line-height: 90rpx;
|
||||
text-align: center;
|
||||
color: white;
|
||||
border-radius: 15rpx;
|
||||
margin-top: 20rpx;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
<template>
|
||||
<view style="line-height: 26px;padding: 32upx;" class="home1">
|
||||
<!-- <view v-html="tit"> </view> -->
|
||||
<view style="font-size: 28upx;" v-html="content"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
tit: '',
|
||||
content: ''
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.getGuize();
|
||||
},
|
||||
methods: {
|
||||
getGuize() {
|
||||
this.$Request.getT('/app/userinfo/userAgreement').then(res => {
|
||||
if (res.code == 0) {
|
||||
this.content = res.data.value;
|
||||
// this.tit = res.data.min
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
page {
|
||||
background: #FFFFFF;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
<template>
|
||||
<view>
|
||||
<view class="content" v-if="list.length">
|
||||
<view class="list_box" v-for="item in list" :key="item.id">
|
||||
<view class="list_left">
|
||||
<view class="name">{{item.title}}</view>
|
||||
<view class="data">{{item.createTime}}</view>
|
||||
</view>
|
||||
<view class="list_right" style="color: red;" v-if="item.type==1">- {{item.money}}</view>
|
||||
<view class="list_right" style="color: #33D442;" v-if="item.type==2">+ {{item.money}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<empty v-else ></empty>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import empty from '@/components/empty'
|
||||
export default {
|
||||
components: {
|
||||
empty
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
page:1,
|
||||
limit:10,
|
||||
totalCount:0,
|
||||
list: []
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.taskData()
|
||||
},
|
||||
methods: {
|
||||
// 获取任务数据
|
||||
taskData() {
|
||||
let userId = this.$queue.getData('userId');
|
||||
this.$Request.getT('/app/userMoney/profitDetailed',{
|
||||
userId:userId,
|
||||
page:this.page,
|
||||
limit:this.limit
|
||||
}).then(res => {
|
||||
if(res.code==0){
|
||||
if (this.page == 1) {
|
||||
this.list = res.data.data.list
|
||||
} else {
|
||||
this.list = this.list_box.concat(res.data.data.list)
|
||||
}
|
||||
this.totalCount = res.data.data.totalCount
|
||||
}
|
||||
console.log('res',res)
|
||||
|
||||
});
|
||||
},
|
||||
},
|
||||
// 上拉加载
|
||||
onReachBottom: function() {
|
||||
if(this.page<this.totalCount){
|
||||
this.page = this.page + 1;
|
||||
}else{
|
||||
uni.showToast({
|
||||
title:'已经最后一页啦',
|
||||
icon:'none'
|
||||
})
|
||||
}
|
||||
|
||||
this.taskData();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
background: #F5F5F5;
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 100%;
|
||||
background: #FFFFFF;
|
||||
margin-top: 20rpx;
|
||||
padding-bottom: 50rpx;
|
||||
padding-top: 20rpx;
|
||||
}
|
||||
|
||||
.list_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
line-height: 45rpx;
|
||||
padding-top: 20rpx;
|
||||
}
|
||||
|
||||
.list_left {
|
||||
flex: 2;
|
||||
}
|
||||
|
||||
.name {
|
||||
font-size: 26rpx;
|
||||
color: #333333;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.data {
|
||||
color: #999999;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.list_right {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
font-size: 31rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,646 @@
|
|||
<template>
|
||||
<view class="bg">
|
||||
<view class="content">
|
||||
<!-- <u-navbar :is-back="true" :title="title"></u-navbar> -->
|
||||
<!-- 顶部 -->
|
||||
<view class="header">
|
||||
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view class="head_image">
|
||||
<button v-if="userId" open-type="chooseAvatar" @chooseavatar="onChooseAvatar" style="background-color: rgba(255, 255, 255, 0) !important;border: none !important;margin-top: 30rpx;">
|
||||
<image :src="avatar?avatar:'../../static/logo.png'" style="border-radius: 50%;"></image>
|
||||
</button>
|
||||
<image v-else :src="avatar?avatar:'../../static/logo.png'" style="border-radius: 50%;"></image>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<!-- #ifndef MP-WEIXIN -->
|
||||
<view class="head_image">
|
||||
<image v-if="userId" @click="upavatar()" :src="avatar?avatar:'../../static/logo.png'" style="border-radius: 50%;"></image>
|
||||
<image v-else :src="avatar?avatar:'../../static/logo.png'" style="border-radius: 50%;"></image>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
|
||||
<view class="head_name" v-if="userId">
|
||||
<view class="name" @click="upNickName()">{{nickName}}</view>
|
||||
<view v-if="XCXIsSelect !='否'">
|
||||
<view class="approve" v-if="checkCertification=='0'">实名认证审核中</view>
|
||||
<view class="approve" v-if="checkCertification=='1'">已实名</view>
|
||||
<view class="approve" @click="bindapprove" v-if="checkCertification=='2'">实名认证未通过</view>
|
||||
<view class="approve" @click="bindapprove" v-if="checkCertification==null">未实名认证</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="head_name" v-if="!userId">
|
||||
<button class="logins" @click="goLogin">登录</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 收入和订单 -->
|
||||
<view style="border-radius: 24rpx;overflow: hidden;width: 93%;margin: 0 auto;background: #ffffff;"
|
||||
v-if="XCXIsSelect !='否'">
|
||||
<view class="user_box">
|
||||
<view class="box">
|
||||
<view class="user_name">
|
||||
<u-section title="今日收入" :right="false" line-color="#FE3B27"></u-section>
|
||||
</view>
|
||||
<view class="user_price">{{indent.incomeday?indent.incomeday:0}} <text>元</text></view>
|
||||
<view class="user_tit ">今日收入金额</view>
|
||||
</view>
|
||||
<view class="box">
|
||||
<view class="user_name">
|
||||
<u-section title="本月收入" :right="false" line-color="#009C66"></u-section>
|
||||
</view>
|
||||
<view class="user_price">{{indent.incomemonth?indent.incomemonth:0}} <text>元</text></view>
|
||||
<view class="user_tit ">本月收入金额</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="user_box">
|
||||
<view class="box">
|
||||
<view class="user_name">
|
||||
<u-section title="累计收入" :right="false" line-color="#FE3B27"></u-section>
|
||||
</view>
|
||||
<view class="user_price">{{indent.incomesum?indent.incomesum:0}} <text>元</text></view>
|
||||
<view class="user_tit ">累计收入金额</view>
|
||||
</view>
|
||||
<view class="box" @click="myOrders()">
|
||||
<view class="user_name">
|
||||
<u-section title="订单统计" :right="false" line-color="#009C66"></u-section>
|
||||
</view>
|
||||
<view class="user_price">{{indent.indentCount?indent.indentCount:0}} <text>单</text></view>
|
||||
<view class="user_tit ">今日完成单量</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 我的列表 -->
|
||||
<view class="mylist">
|
||||
<view v-if="XCXIsSelect !='否'" class="list_box" v-for="(item,index) in mylist" :key="index"
|
||||
@click="bindmy(item.name)">
|
||||
<view class="list_left">
|
||||
<view class="list_img">
|
||||
<image :src="item.image" mode="scaleToFill"></image>
|
||||
</view>
|
||||
<view class="list_name">{{item.name}}</view>
|
||||
</view>
|
||||
<view class="list_right">
|
||||
<view v-if="item.messageCount" class="bott">{{item.messageCount}}</view>
|
||||
<image src="../../static/my/icon_go.png"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="XCXIsSelect =='否'" class="list_box" v-for="(item,index) in datalist" :key="index"
|
||||
@click="bindmy(item.name)">
|
||||
<view class="list_left">
|
||||
<view class="list_img">
|
||||
<image :src="item.image"></image>
|
||||
</view>
|
||||
<view class="list_name">{{item.name}}</view>
|
||||
</view>
|
||||
<view class="list_right">
|
||||
<image src="../../static/my/icon_go.png"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
onShareAppMessage(res) { //发送给朋友
|
||||
return {
|
||||
title: this.tuiguang,
|
||||
path: '/pages/index/index',
|
||||
imageUrl: this.tuiguangImg,
|
||||
}
|
||||
},
|
||||
onShareTimeline(res) { //分享到朋友圈
|
||||
return {
|
||||
title: this.tuiguang,
|
||||
path: '/pages/index/index',
|
||||
imageUrl: this.tuiguangImg,
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tuiguang: '',
|
||||
tuiguangImg: '',
|
||||
show: false,
|
||||
title: '我的',
|
||||
mylist: [
|
||||
{
|
||||
id: 1,
|
||||
name: '我的订单',
|
||||
image: '../../static/rider/77.png'
|
||||
},{
|
||||
id: 2,
|
||||
name: '资金账户',
|
||||
image: '../../static/rider/22.png'
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: '我的评价',
|
||||
image: '../../static/rider/33.png'
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
name: '违规申诉',
|
||||
image: '../../static/rider/44.png'
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
name: '联系客服',
|
||||
image: '../../static/my/8.png'
|
||||
}, {
|
||||
id: 6,
|
||||
name: '消息中心',
|
||||
image: '../../static/rider/liaotin.png',
|
||||
messageCount:''
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
name: '意见反馈',
|
||||
image: '../../static/rider/66.png'
|
||||
},
|
||||
|
||||
{
|
||||
id: 9,
|
||||
name: '系统设置',
|
||||
image: '../../static/rider/55.png'
|
||||
}
|
||||
],
|
||||
datalist: [{
|
||||
id: 3,
|
||||
name: '我的评价',
|
||||
image: '../../static/rider/33.png'
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
name: '违规申诉',
|
||||
image: '../../static/rider/44.png'
|
||||
}, {
|
||||
id: 5,
|
||||
name: '消息中心',
|
||||
image: '../../static/rider/liaotin.png'
|
||||
},
|
||||
// {
|
||||
// id: 6,
|
||||
// name: '用户协议',
|
||||
// image: '../../static/rider/66.png'
|
||||
// },
|
||||
// {
|
||||
// id: 7,
|
||||
// name: '隐私政策',
|
||||
// image: '../../static/rider/77.png'
|
||||
// },
|
||||
{
|
||||
id: 9,
|
||||
name: '系统设置',
|
||||
image: '../../static/rider/55.png'
|
||||
}
|
||||
],
|
||||
information: {}, //个人信息
|
||||
daySr: '',
|
||||
orders: '',
|
||||
indent: {},
|
||||
avatar: '',
|
||||
nickName: '匿名',
|
||||
checkCertification: '',
|
||||
userId: '',
|
||||
token: '',
|
||||
XCXIsSelect: '否',
|
||||
//messageCount: ''
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
|
||||
this.$Request.getT('/app/common/type/331').then(res => {
|
||||
if (res.code === 0) {
|
||||
uni.setStorageSync('tuiguang', res.data.value)
|
||||
this.tuiguang = res.data.value
|
||||
}
|
||||
});
|
||||
|
||||
this.$Request.getT('/app/common/type/332').then(res => {
|
||||
if (res.code === 0) {
|
||||
uni.setStorageSync('tuiguangImg', res.data.value)
|
||||
this.tuiguangImg = res.data.value
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
onShow() {
|
||||
this.mylist[5].messageCount = uni.getStorageSync('messageCount')
|
||||
|
||||
this.XCXIsSelect = this.$queue.getData('XCXIsSelect');
|
||||
this.token = this.$queue.getData('token');
|
||||
this.userId = this.$queue.getData('userId');
|
||||
if (this.token) {
|
||||
this.shouru()
|
||||
this.getUserInfo(this.userId);
|
||||
} else {
|
||||
// this.goLogin();
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
methods: {
|
||||
//微信填写能力获取头像
|
||||
onChooseAvatar(e){
|
||||
console.log(e.detail.avatarUrl)
|
||||
let that = this;
|
||||
let token = uni.getStorageSync('token');
|
||||
uni.showLoading({
|
||||
title: '上传中...'
|
||||
});
|
||||
uni.uploadFile({
|
||||
// url: config.APIHOST1 + '/alioss/upload', //仅为示例,非真实的接口地址
|
||||
url: 'https://tcwm.xianmaxiong.com/sqx_fast/alioss/upload', //仅为示例,非真实的接口地址
|
||||
filePath: e.detail.avatarUrl,
|
||||
header: {
|
||||
token: token
|
||||
},
|
||||
name: 'file',
|
||||
success: uploadFileRes => {
|
||||
let url = JSON.parse(uploadFileRes.data).data;
|
||||
that.$Request.postJson(
|
||||
'/app/user/updateUserImageUrl?avatar=' + url).then(
|
||||
res => {
|
||||
uni.hideLoading();
|
||||
if (res.code === 0) {
|
||||
that.$queue.showToast(
|
||||
"更新成功");
|
||||
that.getUserInfo();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
//修改用户名
|
||||
upNickName(){
|
||||
uni.navigateTo({
|
||||
url:'./updateNickName'
|
||||
})
|
||||
},
|
||||
//修改用户头像
|
||||
upavatar() {
|
||||
let that = this;
|
||||
var url = null;
|
||||
let userId = this.$queue.getData('userId');
|
||||
uni.showActionSheet({
|
||||
// itemList按钮的文字接受的是数组
|
||||
itemList: ["查看头像", "从相册选择图片"],
|
||||
success(e) {
|
||||
var index = e.tapIndex
|
||||
if (index === 0) {
|
||||
// 用户点击了预览当前图片
|
||||
// 可以自己实现当前头像链接的读取
|
||||
let url = that.avatar;
|
||||
let arr = []
|
||||
arr.push(url)
|
||||
uni.previewImage({
|
||||
// 预览功能图片也必须是数组的
|
||||
urls: arr
|
||||
})
|
||||
} else if (index === 1) {
|
||||
uni.chooseImage({
|
||||
count: 1, //默认9
|
||||
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album'], //从相册选择
|
||||
success: function(res) {
|
||||
uni.showLoading({
|
||||
title: '上传中...'
|
||||
});
|
||||
let token = uni.getStorageSync('token');
|
||||
uni.uploadFile({
|
||||
// url: config.APIHOST1 + '/alioss/upload', //仅为示例,非真实的接口地址
|
||||
url: 'https://tcwm.xianmaxiong.com/sqx_fast/alioss/upload', //仅为示例,非真实的接口地址
|
||||
filePath: res.tempFilePaths[0],
|
||||
header: {
|
||||
token: token
|
||||
},
|
||||
name: 'file',
|
||||
success: uploadFileRes => {
|
||||
url = JSON.parse(uploadFileRes.data).data;
|
||||
that.$Request.postJson(
|
||||
'/app/user/updateUserImageUrl?avatar=' + url).then(
|
||||
res => {
|
||||
uni.hideLoading();
|
||||
if (res.code === 0) {
|
||||
that.$queue.showToast(
|
||||
"更新成功");
|
||||
that.getUserInfo();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// 查看今日收入
|
||||
profit() {
|
||||
if (!this.userId) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
return
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/profit'
|
||||
})
|
||||
},
|
||||
// 查看订单统计
|
||||
myOrders() {
|
||||
if (!this.userId) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
return
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/order'
|
||||
})
|
||||
},
|
||||
bindapprove() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/approve/approve'
|
||||
})
|
||||
},
|
||||
bindmy(name) {
|
||||
console.log(name)
|
||||
let that = this
|
||||
|
||||
if (!that.token) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if (name == '资金账户') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/myAccount/myAccount'
|
||||
})
|
||||
}else if (name == '我的订单') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/order'
|
||||
})
|
||||
} else if (name == '我的评价') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/myComment/myComment'
|
||||
})
|
||||
} else if (name == '联系客服') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/kefu/chat'
|
||||
})
|
||||
} else if (name == '用户协议') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/xieyi'
|
||||
})
|
||||
} else if (name == '隐私政策') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/mimi'
|
||||
})
|
||||
} else if (name == '违规申诉') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/myComplain/myComplain'
|
||||
})
|
||||
} else if (name == '培训中心') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/trainingList'
|
||||
})
|
||||
} else if (name == '消息中心') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/kefu/liaotian'
|
||||
})
|
||||
} else if (name == '系统设置') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/set/set'
|
||||
})
|
||||
} else if (name == '意见反馈') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/set/yijian'
|
||||
})
|
||||
}
|
||||
},
|
||||
//检测是否登录
|
||||
checkLogin() {
|
||||
|
||||
},
|
||||
// 获取个人信息
|
||||
getUserInfo(userId) {
|
||||
this.$Request.getT("/app/tbindent/findUserInfoById").then(res => {
|
||||
if (res.code == 0) {
|
||||
this.$nextTick(function() {
|
||||
this.avatar = res.data.avatar ? res.data.avatar : '../../static/logo.png'
|
||||
this.nickName = res.data.nickName
|
||||
uni.setStorageSync('userName',res.data.userName)
|
||||
this.checkCertification = res.data.checkCertification
|
||||
console.log(this.checkCertification, '实名认证')
|
||||
this.userId = res.data.userId
|
||||
})
|
||||
} else {
|
||||
this.$queue.logout();
|
||||
uni.showModal({
|
||||
showCancel: false,
|
||||
title: '登录失败',
|
||||
content: res.msg,
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
// 今日收入、订单量
|
||||
shouru() {
|
||||
this.$Request.getT('/app/userinfo/findIncome').then(res => {
|
||||
if (res.code == 0) {
|
||||
// this.daySr = res.data.income
|
||||
// this.orders = res.data.indentCount
|
||||
this.indent = res.data
|
||||
}
|
||||
console.log('res', res)
|
||||
|
||||
});
|
||||
},
|
||||
// 跳转去登录
|
||||
goLogin() {
|
||||
// this.$queue.setData('href', '/pages/my/index');
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/login'
|
||||
});
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
button::after {
|
||||
border: none;
|
||||
/* background-color: none; */
|
||||
}
|
||||
.u-icon__icon {
|
||||
font-size: 35rpx !important;
|
||||
font-weight: bold !important;
|
||||
}
|
||||
.u-title {
|
||||
color: #000000 !important;
|
||||
}
|
||||
|
||||
.u-navbar-fixed {
|
||||
background: none !important;
|
||||
}
|
||||
|
||||
body {
|
||||
background: #F5F5F5;
|
||||
}
|
||||
|
||||
.bg {}
|
||||
|
||||
.logins {
|
||||
border: none;
|
||||
background: #F8501F;
|
||||
color: #fff;
|
||||
width: 200rpx;
|
||||
margin: 70rpx 20rpx;
|
||||
height: 70rpx;
|
||||
line-height: 70rpx;
|
||||
}
|
||||
|
||||
.content {
|
||||
background: linear-gradient(0deg, #F5F5F5 0%, #fed9ba 100%);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* 顶部 */
|
||||
.header {
|
||||
width: 100%;
|
||||
height: 200rpx;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.head_image {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.head_image image {
|
||||
width: 90rpx;
|
||||
height: 90rpx;
|
||||
}
|
||||
|
||||
.head_name {
|
||||
flex: 4;
|
||||
position: relative;
|
||||
margin-left: -14rpx;
|
||||
}
|
||||
|
||||
.name {
|
||||
position: absolute;
|
||||
top: 65rpx;
|
||||
}
|
||||
|
||||
.approve {
|
||||
position: absolute;
|
||||
top: 100rpx;
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
/* 用户信息 */
|
||||
.user_box {
|
||||
display: flex;
|
||||
height: 210rpx;
|
||||
|
||||
position: relative;
|
||||
top: -15rpx;
|
||||
padding: 0 20rpx;
|
||||
}
|
||||
|
||||
.box {
|
||||
flex: 1;
|
||||
/* margin-left: 40rpx; */
|
||||
margin-top: 40rpx;
|
||||
}
|
||||
|
||||
.user_price {
|
||||
font-size: 44rpx;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
|
||||
.user_price text {
|
||||
font-size: 21rpx;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
.user_tit {
|
||||
color: #B3B3B3;
|
||||
font-size: 21rpx;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
|
||||
.u-section__title {
|
||||
font-weight: 500 !important;
|
||||
color: #333333 !important;
|
||||
font-size: 14px !important;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
/* 我的列表 */
|
||||
.mylist {
|
||||
width: 93%;
|
||||
margin: 0 auto;
|
||||
background-color: #FFFFFF;
|
||||
margin-top: 10rpx;
|
||||
border-radius: 23rpx;
|
||||
}
|
||||
|
||||
.list_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
height: 95rpx;
|
||||
}
|
||||
|
||||
.list_left {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.list_img {
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
.list_img image {
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
}
|
||||
|
||||
.list_name {
|
||||
font-size: 25rpx;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.list_right {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.list_right image {
|
||||
width: 12rpx;
|
||||
height: 20rpx;
|
||||
}
|
||||
|
||||
.bott {
|
||||
background: red;
|
||||
color: #ffffff;
|
||||
padding: 5rpx 10rpx;
|
||||
border-radius: 60%;
|
||||
font-size: 23rpx;
|
||||
margin-right: 15rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
<template>
|
||||
<view style="font-size: 14px;line-height: 26px;padding: 32upx;" class="home1">
|
||||
<view style="font-size: 28upx;" v-html="content" ></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
content:''
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.getGuize();
|
||||
},
|
||||
methods: {
|
||||
getGuize(){
|
||||
this.$Request.getT('/app/common/type/233').then(res =>{
|
||||
if(res.code === 0){
|
||||
this.content = res.data.value;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
<template>
|
||||
<view style="line-height: 26px;padding: 32upx;" class="home1">
|
||||
<!-- <view v-html="tit"> </view> -->
|
||||
<view style="font-size: 28upx;" v-html="content"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
tit: '',
|
||||
content: ''
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
// this.getGuize();
|
||||
// 隐私政策
|
||||
this.$Request.getT('/app/common/type/237').then(res => { //用户完成成功
|
||||
if (res.code == 0) {
|
||||
if (res.data && res.data.value) {
|
||||
this.content = res.data.value;
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
getGuize() {
|
||||
this.$Request.getT('/app/userinfo/privacyPolicy').then(res => {
|
||||
if (res.code == 0) {
|
||||
this.content = res.data.value;
|
||||
// this.tit = res.data.min
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
page {
|
||||
/* background: #1c1b20; */
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,121 @@
|
|||
<template>
|
||||
<view class=" padding-lr">
|
||||
<!-- <view class="flex padding-tb" @click="goNav('/pages/public/pwd')">
|
||||
<view class="flex-sub text-df" style="line-height: 50upx;">修改密码</view>
|
||||
<image src="../../../static/image/go.png" style="line-height: 50upx;width: 15rpx;height: 30rpx;">
|
||||
</image>
|
||||
</view> -->
|
||||
<view class="flex padding-tb" @click="goNav('/pages/riderMy/trainingList')">
|
||||
<view class="flex-sub text-df" style="line-height: 50upx;">帮助中心</view>
|
||||
<image src="../../../static/image/go.png" style="line-height: 50upx;width: 15rpx;height: 30rpx;">
|
||||
</image>
|
||||
</view>
|
||||
<view class="flex padding-tb" @click="goNav('/pages/riderMy/set/xieyi')">
|
||||
<view class="flex-sub text-df" style="line-height: 50upx;">用户协议</view>
|
||||
<image src="../../../static/image/go.png" style="line-height: 50upx;width: 15rpx;height: 30rpx;">
|
||||
</image>
|
||||
</view>
|
||||
<view class="flex padding-tb" @click="goNav('/pages/riderMy/set/mimi')">
|
||||
<view class="flex-sub text-df" style="line-height: 50upx;">隐私政策</view>
|
||||
<image src="../../../static/image/go.png" style="line-height: 50upx;width: 15rpx;height: 30rpx;">
|
||||
</image>
|
||||
</view>
|
||||
<view class="flex padding-tb" @click="goNav('/pages/riderMy/set/about')">
|
||||
<view class="flex-sub text-df" style="line-height: 50upx;">关于我们</view>
|
||||
<image src="../../../static/image/go.png" style="line-height: 50upx;width: 15rpx;height: 30rpx;">
|
||||
</image>
|
||||
</view>
|
||||
<view class="btn" @click="TuiLogin">退出登录</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
userId: ""
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.userId = uni.getStorageSync('userId')
|
||||
},
|
||||
methods: {
|
||||
goNav(e) {
|
||||
uni.navigateTo({
|
||||
url: e
|
||||
})
|
||||
},
|
||||
//退出登录
|
||||
TuiLogin() {
|
||||
let that = this
|
||||
|
||||
if (that.userId) {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '确认退出登录吗?',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.removeStorageSync('userId')
|
||||
uni.removeStorageSync('token')
|
||||
uni.removeStorageSync('avatar')
|
||||
uni.removeStorageSync('nickName')
|
||||
uni.removeStorageSync('phone')
|
||||
uni.removeStorageSync('invitationCode')
|
||||
uni.removeStorageSync('inviterCode')
|
||||
uni.removeStorageSync('platform')
|
||||
uni.removeStorageSync('sex')
|
||||
uni.removeStorageSync('zhiFuBao')
|
||||
uni.removeStorageSync('zhiFuBaoName')
|
||||
uni.removeStorageSync('checkCertification')
|
||||
|
||||
// uni.navigateBack()
|
||||
uni.redirectTo({
|
||||
url:'/pages/index/index'
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
console.log('用户点击取消');
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '您还未登录,请先登录',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
console.log('用户点击确定');
|
||||
uni.navigateTo({
|
||||
url: '/pages/my/loginphone'
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
console.log('用户点击取消');
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
page {
|
||||
background: #FFFFFF;
|
||||
}
|
||||
|
||||
.btn {
|
||||
width: 100%;
|
||||
height: 80upx;
|
||||
background: #FF6A04;
|
||||
color: #FFFFFF;
|
||||
border-radius: 6upx;
|
||||
text-align: center;
|
||||
line-height: 80upx;
|
||||
margin-top: 40upx;
|
||||
font-size: 34upx;
|
||||
/* color: #fff; */
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
<template>
|
||||
<view style="line-height: 26px;padding: 32upx;" class="home1">
|
||||
<!-- <view v-html="tit"> </view> -->
|
||||
<view style="font-size: 28upx;" v-html="content"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
tit: '',
|
||||
content: ''
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
// this.getGuize();
|
||||
// 用户协议
|
||||
this.$Request.getT('/app/common/type/236').then(res => { //用户完成成功
|
||||
if (res.code == 0) {
|
||||
if (res.data && res.data.value) {
|
||||
this.content = res.data.value;
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
getGuize() {
|
||||
this.$Request.getT('/app/userinfo/userAgreement').then(res => {
|
||||
if (res.code == 0) {
|
||||
this.content = res.data.value;
|
||||
// this.tit = res.data.min
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
page {
|
||||
background: #FFFFFF;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,194 @@
|
|||
<template>
|
||||
<view class="page" style="background-color: #ffffff;">
|
||||
<view class="feedback-title">
|
||||
<text>问题和意见</text>
|
||||
<text @tap="chooseMsg">快速键入</text>
|
||||
</view>
|
||||
<view class="feedback-body"><textarea placeholder="请详细描述你的问题和意见..." v-model="sendDate.content"
|
||||
class="feedback-textare" /></view>
|
||||
<view v-if="XCXIsSelect !='否'">
|
||||
<view class="feedback-title"><text>QQ/邮箱</text></view>
|
||||
<view class="feedback-body"><input class="feedback-input" v-model="sendDate.contact"
|
||||
placeholder="方便我们联系你 " /></view>
|
||||
|
||||
</view>
|
||||
<button style="" class="feedback-submit" @tap="send">提交</button>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
msgContents: ['界面显示错乱', '启动缓慢,卡出翔了', 'UI无法直视,丑哭了', '偶发性崩溃'],
|
||||
stars: [1, 2, 3, 4, 5],
|
||||
imageList: [],
|
||||
sendDate: {
|
||||
score: 5,
|
||||
content: '',
|
||||
contact: ''
|
||||
},
|
||||
XCXIsSelect: '否',
|
||||
};
|
||||
},
|
||||
onLoad() {
|
||||
this.XCXIsSelect = this.$queue.getData('XCXIsSelect');
|
||||
// let deviceInfo = {
|
||||
// appid: plus.runtime.appid,
|
||||
// imei: plus.device.imei, //设备标识
|
||||
// p: plus.os.name === 'Android' ? 'a' : 'i', //平台类型,i表示iOS平台,a表示Android平台。
|
||||
// md: plus.device.model, //设备型号
|
||||
// app_version: plus.runtime.version,
|
||||
// plus_version: plus.runtime.innerVersion, //基座版本号
|
||||
// os: plus.os.version,
|
||||
// net: '' + plus.networkinfo.getCurrentType()
|
||||
// };
|
||||
// this.sendDate = Object.assign(deviceInfo, this.sendDate);
|
||||
},
|
||||
methods: {
|
||||
close(e) {
|
||||
this.imageList.splice(e, 1);
|
||||
},
|
||||
chooseMsg() {
|
||||
//快速输入
|
||||
uni.showActionSheet({
|
||||
itemList: this.msgContents,
|
||||
success: res => {
|
||||
this.sendDate.content = this.msgContents[res.tapIndex];
|
||||
}
|
||||
});
|
||||
},
|
||||
chooseImg() {
|
||||
//选择图片
|
||||
uni.chooseImage({
|
||||
sourceType: ['camera', 'album'],
|
||||
sizeType: 'compressed',
|
||||
count: 8 - this.imageList.length,
|
||||
success: res => {
|
||||
this.imageList = this.imageList.concat(res.tempFilePaths);
|
||||
}
|
||||
});
|
||||
},
|
||||
chooseStar(e) {
|
||||
//点击评星
|
||||
this.sendDate.score = e;
|
||||
},
|
||||
previewImage() {
|
||||
//预览图片
|
||||
uni.previewImage({
|
||||
urls: this.imageList
|
||||
});
|
||||
},
|
||||
send() {
|
||||
//发送反馈
|
||||
console.log(JSON.stringify(this.sendDate));
|
||||
|
||||
if (!this.sendDate.content) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '请输入反馈内容'
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!this.sendDate.contact) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '请填写QQ或邮箱'
|
||||
});
|
||||
return;
|
||||
}
|
||||
this.$queue.showLoading('加载中...');
|
||||
this.$Request.postJson('/app/shop/userFeedback', {
|
||||
shopId: uni.getStorageSync("shopId"),
|
||||
userEmail: this.sendDate.contact,
|
||||
feedbackMessage: this.sendDate.content,
|
||||
// state: 2
|
||||
}).then(res => {
|
||||
if (res.code === 0) {
|
||||
uni.showToast({
|
||||
title: '投诉成功'
|
||||
});
|
||||
setTimeout(function() {
|
||||
uni.navigateBack();
|
||||
}, 1000);
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
uni.showModal({
|
||||
showCancel: false,
|
||||
title: '投诉失败',
|
||||
content: res.msg
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: uniicons;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
src: url('https://img-cdn-qiniu.dcloud.net.cn/fonts/uni.ttf') format('truetype');
|
||||
}
|
||||
|
||||
page {
|
||||
background-color: #F5F5F5 !important;
|
||||
}
|
||||
|
||||
view {
|
||||
font-size: 28upx;
|
||||
}
|
||||
|
||||
|
||||
/*问题反馈*/
|
||||
.feedback-title {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 20upx;
|
||||
color: #8f8f94;
|
||||
font-size: 28upx;
|
||||
}
|
||||
|
||||
.feedback-star-view.feedback-title {
|
||||
justify-content: flex-start;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.feedback-body {
|
||||
font-size: 32upx;
|
||||
padding: 16upx;
|
||||
margin: 16upx;
|
||||
border-radius: 16upx;
|
||||
background: #FFFFFF;
|
||||
/* color: #FFF; */
|
||||
}
|
||||
|
||||
.feedback-textare {
|
||||
height: 200upx;
|
||||
font-size: 34upx;
|
||||
line-height: 50upx;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 20upx 30upx 0;
|
||||
|
||||
}
|
||||
|
||||
.feedback-input {
|
||||
font-size: 32upx;
|
||||
height: 60upx;
|
||||
/* padding: 15upx 20upx; */
|
||||
line-height: 60upx;
|
||||
}
|
||||
|
||||
|
||||
.feedback-submit {
|
||||
background: #FFCC00;
|
||||
/* color: #ffffff; */
|
||||
margin: 20upx;
|
||||
margin-top: 32upx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
<template>
|
||||
<view style="line-height: 26px;padding: 32upx;" class="home1">
|
||||
<!-- <view v-html="tit"> </view> -->
|
||||
<!-- <view style="font-size: 28upx;" v-html="content"></view> -->
|
||||
<u-parse :html="content"></u-parse>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
list: [],
|
||||
content: ''
|
||||
}
|
||||
},
|
||||
onLoad(e) {
|
||||
this.taskData(e.id)
|
||||
},
|
||||
methods: {
|
||||
// 获取任务数据
|
||||
taskData(e) {
|
||||
this.$Request.getT('/app/userinfo/TrainingCenter?id='+e).then(res => {
|
||||
if(res.code==0){
|
||||
this.content = res.data.message
|
||||
}
|
||||
});
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
page {
|
||||
background: #FFFFFF;
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 100%;
|
||||
background: #FFFFFF;
|
||||
margin-top: 20rpx;
|
||||
padding-bottom: 50rpx;
|
||||
padding-top: 20rpx;
|
||||
}
|
||||
|
||||
.list_box {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
line-height: 45rpx;
|
||||
padding-top: 20rpx;
|
||||
}
|
||||
|
||||
.list_left {
|
||||
flex: 2;
|
||||
}
|
||||
|
||||
.name {
|
||||
font-size: 26rpx;
|
||||
color: #333333;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.data {
|
||||
color: #999999;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
/* .list_right {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
font-size: 31rpx;
|
||||
} */
|
||||
</style>
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
<template>
|
||||
<view>
|
||||
<view style="margin-top: 4upx;" class="bg-white flex justify-between align-center padding" v-for="(item,index) in dataList" :key='index' @click="goDet(item)" >
|
||||
<view class="text-lg">{{index+1}}.{{item.title}}</view>
|
||||
<image src="../../static/image/go.png" style="width: 20rpx;height: 34rpx;" mode="aspectFill"></image>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
page: 1,
|
||||
limit: 10,
|
||||
dataList: []
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.getDataList()
|
||||
},
|
||||
methods: {
|
||||
getDataList() {
|
||||
let data = {
|
||||
page: this.page,
|
||||
limit: this.limit,
|
||||
type:2
|
||||
}
|
||||
this.$Request.getT("/app/userinfo/trainingCenterList",data).then(res => {
|
||||
this.dataList = res.data.list
|
||||
})
|
||||
},
|
||||
goDet(e) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/riderMy/trainingCenter?id='+e.trainingId
|
||||
})
|
||||
}
|
||||
},
|
||||
onReachBottom: function() {
|
||||
this.page = this.page + 1;
|
||||
this.getDataList();
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
|
|
@ -0,0 +1,197 @@
|
|||
<template>
|
||||
<view class="container">
|
||||
<view class="wrapper">
|
||||
<view class="input-content">
|
||||
<view class="cu-form-group" style="border: 2upx solid whitesmoke;margin-bottom: 20px;border-radius: 30px">
|
||||
<text class="title">原昵称</text>
|
||||
<input type="text" :value="oldnickName" placeholder-class="input-empty" disabled="true" />
|
||||
</view>
|
||||
<view class="cu-form-group" style="border: 2upx solid whitesmoke;margin-bottom: 20px;border-radius: 30px">
|
||||
<text class="title">新昵称</text>
|
||||
<input type="nickname" v-model="nickName" placeholder="请设置新昵称" placeholder-class="input-empty" maxlength="20"
|
||||
minlength="6" />
|
||||
</view>
|
||||
</view>
|
||||
<button class="confirm-btn" @click="updatNickName">修改昵称</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
nickName: '',
|
||||
oldnickName: ''
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.oldnickName = this.$queue.getData('userName');
|
||||
},
|
||||
methods: {
|
||||
updatNickName() {
|
||||
var patrn = /[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、 ]/im;
|
||||
if (patrn.test(this.nickName)) { // 如果包含特殊字符返回false
|
||||
this.$queue.showToast('包含特殊字符,请重新输入');
|
||||
return;
|
||||
}
|
||||
uni.showLoading({
|
||||
title: '提交中...'
|
||||
});
|
||||
let userId = this.$queue.getData('userId');
|
||||
let data = {
|
||||
userName:this.nickName
|
||||
}
|
||||
this.$Request.postT('/app/user/updateUserName',data).then(res => {
|
||||
uni.hideLoading();
|
||||
if (res.code === 0) {
|
||||
this.$queue.showToast("更新成功");
|
||||
setTimeout(() => {
|
||||
uni.navigateBack();
|
||||
}, 500);
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang='scss'>
|
||||
page {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.send-msg {
|
||||
border-radius: 30px;
|
||||
color: white;
|
||||
height: 30px;
|
||||
font-size: 14px;
|
||||
line-height: 30px;
|
||||
background: #e10a07;
|
||||
}
|
||||
|
||||
.container {
|
||||
padding-top: 32upx;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
position: relative;
|
||||
z-index: 90;
|
||||
background: #fff;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
.right-top-sign {
|
||||
position: absolute;
|
||||
top: 40px;
|
||||
right: -15px;
|
||||
z-index: 95;
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
display: block;
|
||||
content: "";
|
||||
width: 20px;
|
||||
height: 40px;
|
||||
background: -moz-linear-gradient(left, #fa4dbe 0, #fbaa58 100%);
|
||||
background: -webkit-gradient(linear,
|
||||
left top,
|
||||
left right,
|
||||
color-stop(0, #fa4dbe),
|
||||
color-stop(100%, #fbaa58));
|
||||
background: -webkit-linear-gradient(left, #fa4dbe 0, #fbaa58 100%);
|
||||
background: -o-linear-gradient(left, #fa4dbe 0, #fbaa58 100%);
|
||||
background: -ms-linear-gradient(left, #fa4dbe 0, #fbaa58 100%);
|
||||
background: linear-gradient(to left, #fa4dbe 0, #fbaa58 100%);
|
||||
}
|
||||
|
||||
&:before {
|
||||
transform: rotate(50deg);
|
||||
border-radius: 0 50px 0 0;
|
||||
}
|
||||
|
||||
&:after {
|
||||
position: absolute;
|
||||
right: -198px;
|
||||
top: 0;
|
||||
transform: rotate(-50deg);
|
||||
border-radius: 50px 0 0 0;
|
||||
/* background: pink; */
|
||||
}
|
||||
}
|
||||
|
||||
.left-bottom-sign {
|
||||
position: absolute;
|
||||
left: -270px;
|
||||
bottom: -320px;
|
||||
/*border: 100upx solid #d0d1fd;*/
|
||||
border-radius: 50%;
|
||||
padding: 90px;
|
||||
}
|
||||
|
||||
|
||||
.welcome {
|
||||
position: relative;
|
||||
left: 30px;
|
||||
top: -55px;
|
||||
font-size: 28px;
|
||||
color: #555;
|
||||
text-shadow: 1px 0px 1px rgba(0, 0, 0, .3);
|
||||
}
|
||||
|
||||
.input-content {
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.confirm-btn {
|
||||
width: 300px;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
border-radius: 30px;
|
||||
margin-top: 40px;
|
||||
background: #FF7F00;
|
||||
color: #fff;
|
||||
|
||||
|
||||
&:after {
|
||||
border-radius: 60px;
|
||||
}
|
||||
}
|
||||
|
||||
.confirm-btn1 {
|
||||
width: 300px;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
border-radius: 30px;
|
||||
margin-top: 40px;
|
||||
background: whitesmoke;
|
||||
color: grey;
|
||||
|
||||
|
||||
&:after {
|
||||
border-radius: 60px;
|
||||
}
|
||||
}
|
||||
|
||||
.forget-section {
|
||||
text-align: center;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.register-section {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
bottom: 30px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
|
||||
text {
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
After Width: | Height: | Size: 522 B |
|
After Width: | Height: | Size: 375 B |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 651 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 615 B |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 920 B |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 343 B |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 1011 B |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 981 B |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 409 B |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.6 KiB |