首次完整推送,
V:1.20240808.006
This commit is contained in:
13
apis/ctms/_utils/auth.js
Normal file
13
apis/ctms/_utils/auth.js
Normal file
@ -0,0 +1,13 @@
|
||||
const TokenKey = 'CTMS-CLIENT-Token'
|
||||
|
||||
export function getToken() {
|
||||
return uni.getStorageSync(TokenKey)
|
||||
}
|
||||
|
||||
export function setToken(token) {
|
||||
return uni.setStorageSync(TokenKey, token)
|
||||
}
|
||||
|
||||
export function removeToken() {
|
||||
return uni.removeStorageSync(TokenKey)
|
||||
}
|
55
apis/ctms/_utils/constant.js
Normal file
55
apis/ctms/_utils/constant.js
Normal file
@ -0,0 +1,55 @@
|
||||
//缓存变量的键名
|
||||
const constant = {
|
||||
storageKey: 'ctmsClientStore', //缓存键名,必须有
|
||||
user: 'userinfo', //用户信息
|
||||
|
||||
orderBookForm: {
|
||||
'prefix': 'OrderBookDraft'
|
||||
}, //运单询价草稿
|
||||
orderBookSearch: "OrderBookSearch", //询价订单查询表单
|
||||
orderBookList: {
|
||||
'prefix': "OrderBookList"
|
||||
}, //询价缓存,
|
||||
orderBookDetail: {
|
||||
'prefix': "OrderBookDetail"
|
||||
}, //询价单详情,拼接oid订单ID参数
|
||||
|
||||
orderCreateForm: {
|
||||
'prefix': 'OrderCreateDraft'
|
||||
}, //运单创建草稿
|
||||
orderSearchS: 'OrderSearchSimple', //简单运单查询表单
|
||||
orderSearchA: "OrderSearchAll", //完整运单查询表单
|
||||
orderList: {
|
||||
'prefix': "OrderList"
|
||||
}, //运单缓存,根据页面情况拼接参数;重新查询时应及时更新
|
||||
orderDetail: {
|
||||
'prefix': "OrderDetail"
|
||||
}, //运单详情,拼接oid订单ID参数
|
||||
orderCheck: {
|
||||
'prefix': "OrderCheckInfo"
|
||||
}, //运单详情,拼接oid订单ID参数
|
||||
|
||||
noticeList: {
|
||||
'prefix': "NoticeList"
|
||||
},
|
||||
noticeDetail: {
|
||||
'prefix': "NoticeDetail"
|
||||
},
|
||||
|
||||
newsList: {
|
||||
'prefix': "NewsList"
|
||||
},
|
||||
newsDetail: {
|
||||
'prefix': "NewsDetail"
|
||||
},
|
||||
newsReading: "NewsReading",
|
||||
newsLiked: "NewsLiked",
|
||||
newsViewed: "NewsViewed",
|
||||
|
||||
userLoginForm: "fansLoginForm",
|
||||
userRegForm: "fansRegForm",
|
||||
|
||||
splashShowed: "splashShowed" //已显示过开屏页
|
||||
}
|
||||
|
||||
export default constant
|
10
apis/ctms/_utils/errorCode.json
Normal file
10
apis/ctms/_utils/errorCode.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"0": "没有符合条件的数据",
|
||||
"100": "",
|
||||
"101": "",
|
||||
"401": "认证失败,无法访问系统资源",
|
||||
"403": "当前操作没有权限",
|
||||
"404": "访问资源不存在",
|
||||
"500": "网络服务出错",
|
||||
"default": "系统未知错误,请反馈给管理员"
|
||||
}
|
113
apis/ctms/_utils/request.js
Normal file
113
apis/ctms/_utils/request.js
Normal file
@ -0,0 +1,113 @@
|
||||
import store from '@/store'
|
||||
import config from '@/config/ctms.config.js'
|
||||
import {
|
||||
getToken
|
||||
} from './auth.js'
|
||||
import errorCode from './errorCode.json'
|
||||
|
||||
import utils from '@/utils/common.js'
|
||||
const tansParams = utils.tansParams;
|
||||
|
||||
const timeout = 10000
|
||||
const loginPage = config.loginPage
|
||||
const request = function(param) {
|
||||
utils.debug(param);
|
||||
|
||||
//url每次request请求都需要重新组织
|
||||
let url = config.apiUrl;
|
||||
url = url + config.url_entry + param.url + '.' + config.url_suffix;
|
||||
if (param.force_url) {
|
||||
url = param.force_url;
|
||||
}
|
||||
// get请求映射params参数
|
||||
if (param.params) {
|
||||
url = url + '?' + tansParams(param.params)
|
||||
url = url.slice(0, -1)
|
||||
}
|
||||
// 是否需要设置 token
|
||||
const isToken = (param.headers || {}).isToken === false
|
||||
config.header = param.headers || {} //TODO,未成功使用
|
||||
if (getToken() && !isToken) {
|
||||
config.header['Authorization'] = 'hi-ctms-client ' + getToken()
|
||||
}
|
||||
|
||||
let postdata = param.data || {};
|
||||
postdata.pid = config.pid || 0;
|
||||
|
||||
var user = store.state.user;
|
||||
postdata.uid = user.info.id || 0;
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
method: param.method || 'GET',
|
||||
timeout: param.timeout || timeout,
|
||||
url: url,
|
||||
data: postdata,
|
||||
header: config.header,
|
||||
dataType: param.dataType || 'json',
|
||||
success: function(res) {
|
||||
// utils.debug(res);
|
||||
if (res.statusCode === 200) {
|
||||
//请求成功
|
||||
const code = res.data.code || 0
|
||||
//只有0,200这两种状态码可以返回数据,以便下一步操作;其他状态码无法进入到下一步
|
||||
const msg = res.data.msg || errorCode[code] || errorCode['default']
|
||||
switch (code) {
|
||||
default:
|
||||
resolve(false);
|
||||
if (getApp().globalData.config.isDebug) {
|
||||
reject(msg) //调试台显示错误提示
|
||||
}
|
||||
break;
|
||||
case 401:
|
||||
utils.showConfirm('登录状态已过期,您可以继续留在该页面,或者重新登录').then(res => {
|
||||
if (res.confirm) {
|
||||
store.dispatch('LogOut').then(res => {
|
||||
uni.reLaunch({
|
||||
url: loginPage
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
reject('无效的会话,或者会话已过期,请重新登录。')
|
||||
break;
|
||||
case 100:
|
||||
case 101:
|
||||
resolve(false);
|
||||
uni.showToast({
|
||||
title: msg,
|
||||
icon: "error"
|
||||
});
|
||||
break;
|
||||
case 0:
|
||||
case 200:
|
||||
resolve(res.data) //返回的只是数据
|
||||
break;
|
||||
}
|
||||
|
||||
} else if (res.statusCode === 500) {
|
||||
reject('500')
|
||||
} else {
|
||||
reject(res.statusCode)
|
||||
}
|
||||
},
|
||||
fail: (error) => {
|
||||
let {
|
||||
errMsg
|
||||
} = error, message = ""
|
||||
if (errMsg == 'request:fail') {
|
||||
message = '云端连接异常'
|
||||
} else if (errMsg == 'Network Error') {
|
||||
message = '后端接口连接异常'
|
||||
} else if (errMsg.includes('timeout')) {
|
||||
message = '系统接口请求超时'
|
||||
} else if (errMsg.includes('Request failed with status code')) {
|
||||
message = '系统接口' + message.substr(message.length - 3) + '异常'
|
||||
}
|
||||
reject(message)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export default request
|
95
apis/ctms/_utils/storage.js
Normal file
95
apis/ctms/_utils/storage.js
Normal file
@ -0,0 +1,95 @@
|
||||
import constant from './constant'
|
||||
|
||||
// 存储变量名前缀
|
||||
let storageKey = constant.storageKey;
|
||||
|
||||
const storage = {
|
||||
init: function(key) {
|
||||
if (key === storageKey) {
|
||||
return false;
|
||||
}
|
||||
if (typeof key === 'string') {
|
||||
return key;
|
||||
} else if (typeof key === 'object') {
|
||||
return key['prefix'];
|
||||
}
|
||||
},
|
||||
set: function(key, value, params = null) {
|
||||
var _key = this.init(key);
|
||||
// console.log('比较两个KEY', key, _key)
|
||||
if (!_key) {
|
||||
return;
|
||||
}
|
||||
let tmp = uni.getStorageSync(storageKey)
|
||||
tmp = tmp ? tmp : {}
|
||||
if (_key === key) {
|
||||
tmp[key] = value;
|
||||
} else {
|
||||
tmp[_key] = tmp[_key] || {};
|
||||
if (params === null || params === 'undefined') {
|
||||
//不加params参数,则将该项原有数据全部抹除后写入新value作为对象唯一的一个值
|
||||
//只有在明确设置了为null 或者 undifined才是
|
||||
//注意:已知问题:参数(object的键名)不允许是负数
|
||||
tmp[_key] = {
|
||||
0: value
|
||||
};
|
||||
} else {
|
||||
//添加参数,则为指定覆盖方式,对其他项不产生影响
|
||||
tmp[_key][params] = value;
|
||||
}
|
||||
}
|
||||
|
||||
uni.setStorageSync(storageKey, tmp)
|
||||
},
|
||||
get: function(key, params = null) {
|
||||
var _key = this.init(key);
|
||||
if (!_key) {
|
||||
return false;
|
||||
}
|
||||
let tmp = uni.getStorageSync(storageKey)
|
||||
tmp = tmp ? tmp : {}
|
||||
if (_key === key) {
|
||||
return tmp[key] || "";
|
||||
} else {
|
||||
return (tmp[_key] ? (tmp[_key][params] || "") : "");
|
||||
}
|
||||
},
|
||||
all: function(key) {
|
||||
//获取指定键的全部缓存
|
||||
var _key = this.init(key);
|
||||
if (!_key) {
|
||||
return false;
|
||||
}
|
||||
let tmp = uni.getStorageSync(storageKey)
|
||||
tmp = tmp ? tmp : {}
|
||||
if (_key === key) {
|
||||
return tmp[key] || "";
|
||||
} else {
|
||||
return tmp[_key] || [];
|
||||
}
|
||||
},
|
||||
remove: function(key, params = null) {
|
||||
var _key = this.init(key);
|
||||
if (!_key) {
|
||||
return;
|
||||
}
|
||||
let tmp = uni.getStorageSync(storageKey)
|
||||
tmp = tmp ? tmp : {}
|
||||
if (_key === key) {
|
||||
delete tmp[key];
|
||||
} else {
|
||||
delete tmp[_key][params];
|
||||
}
|
||||
uni.setStorageSync(storageKey, tmp)
|
||||
},
|
||||
clean: function() {
|
||||
uni.removeStorageSync(storageKey)
|
||||
},
|
||||
info: function() {
|
||||
//返回当前缓存情况 https://uniapp.dcloud.net.cn/api/storage/storage.html#getstorageinfo
|
||||
//currentSize 当前占用空间 kb; keys,所有缓存键key
|
||||
return uni.getStorageInfoSync(); //只能获取全部,无法指定key
|
||||
}
|
||||
}
|
||||
|
||||
export default storage
|
113
apis/ctms/_utils/upload.js
Normal file
113
apis/ctms/_utils/upload.js
Normal file
@ -0,0 +1,113 @@
|
||||
import store from '@/store'
|
||||
import config from '@/config/ctms.config.js'
|
||||
import {
|
||||
getToken
|
||||
} from './auth.js'
|
||||
import errorCode from './errorCode.json'
|
||||
|
||||
import utils from '@/utils/common.js'
|
||||
const tansParams = utils.tansParams;
|
||||
|
||||
const timeout = 10000
|
||||
const loginPage = config.loginPage
|
||||
const request = function(param) {
|
||||
utils.debug(param);
|
||||
|
||||
//url每次request请求都需要重新组织
|
||||
let url = config.apiUrl;
|
||||
url = url + config.url_entry + param.url + '.' + config.url_suffix;
|
||||
if (param.force_url) {
|
||||
url = param.force_url;
|
||||
}
|
||||
// get请求映射params参数
|
||||
if (param.params) {
|
||||
url = url + '?' + tansParams(param.params)
|
||||
url = url.slice(0, -1)
|
||||
}
|
||||
// 是否需要设置 token
|
||||
const isToken = (param.headers || {}).isToken === false
|
||||
config.header = param.headers || {} //TODO,未成功使用
|
||||
if (getToken() && !isToken) {
|
||||
config.header['Authorization'] = 'hi-ctms-client ' + getToken()
|
||||
}
|
||||
|
||||
let postdata = param.data || {};
|
||||
postdata.pid = config.pid || 0;
|
||||
|
||||
var user = store.state.user;
|
||||
postdata.uid = user.info.id || 0;
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
method: param.method || 'GET',
|
||||
timeout: param.timeout || timeout,
|
||||
url: url,
|
||||
data: postdata,
|
||||
header: config.header,
|
||||
dataType: param.dataType || 'json',
|
||||
success: function(res) {
|
||||
// utils.debug(res);
|
||||
if (res.statusCode === 200) {
|
||||
//请求成功
|
||||
const code = res.data.code || 0
|
||||
//只有0,200这两种状态码可以返回数据,以便下一步操作;其他状态码无法进入到下一步
|
||||
const msg = res.data.msg || errorCode[code] || errorCode['default']
|
||||
switch (code) {
|
||||
default:
|
||||
resolve(false);
|
||||
if (getApp().globalData.config.isDebug) {
|
||||
reject(msg) //调试台显示错误提示
|
||||
}
|
||||
break;
|
||||
case 401:
|
||||
utils.showConfirm('登录状态已过期,您可以继续留在该页面,或者重新登录').then(res => {
|
||||
if (res.confirm) {
|
||||
store.dispatch('LogOut').then(res => {
|
||||
uni.reLaunch({
|
||||
url: loginPage
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
reject('无效的会话,或者会话已过期,请重新登录。')
|
||||
break;
|
||||
case 100:
|
||||
case 101:
|
||||
resolve(false);
|
||||
uni.showToast({
|
||||
title: msg,
|
||||
icon: "error"
|
||||
});
|
||||
break;
|
||||
case 0:
|
||||
case 200:
|
||||
resolve(res.data) //返回的只是数据
|
||||
break;
|
||||
}
|
||||
|
||||
} else if (res.statusCode === 500) {
|
||||
reject('500')
|
||||
} else {
|
||||
reject(res.statusCode)
|
||||
}
|
||||
},
|
||||
fail: (error) => {
|
||||
let {
|
||||
errMsg
|
||||
} = error, message = ""
|
||||
if (errMsg == 'request:fail') {
|
||||
message = '云端连接异常'
|
||||
} else if (errMsg == 'Network Error') {
|
||||
message = '后端接口连接异常'
|
||||
} else if (errMsg.includes('timeout')) {
|
||||
message = '系统接口请求超时'
|
||||
} else if (errMsg.includes('Request failed with status code')) {
|
||||
message = '系统接口' + message.substr(message.length - 3) + '异常'
|
||||
}
|
||||
reject(message)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export default request
|
29
apis/ctms/ads.js
Normal file
29
apis/ctms/ads.js
Normal file
@ -0,0 +1,29 @@
|
||||
import request from './_utils/request.js'
|
||||
import apis from './apis.json'
|
||||
|
||||
export default {
|
||||
// 开屏广告
|
||||
splash: function() {
|
||||
const data = {}
|
||||
let url = apis.AdsSplash;
|
||||
return request({
|
||||
'url': url,
|
||||
// 'force_url': '', //强制指定URL,忽略上面的url设定
|
||||
'method': 'GET',
|
||||
'data': data,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
if (res.code == 200) return res.data;
|
||||
})
|
||||
},
|
||||
// BANNER
|
||||
banner: function() {
|
||||
let url = apis.AdsBanner;
|
||||
return request({
|
||||
'url': url,
|
||||
'method': 'GET'
|
||||
}).then((res) => {
|
||||
if (res.code == 200) return res.data;
|
||||
})
|
||||
}
|
||||
}
|
53
apis/ctms/apis copy.json
Normal file
53
apis/ctms/apis copy.json
Normal file
@ -0,0 +1,53 @@
|
||||
/*————接口预设————*/
|
||||
{
|
||||
"index": "/index/index",
|
||||
"IndexData": "/index/h5data",
|
||||
"AdsSplash": "/index/ads-splash",
|
||||
"AdsBanner": "/index/ads-banner",
|
||||
"OrderSearch": "/order/list",
|
||||
"OrderSearchToday": "/order/today",
|
||||
"OrderSearchYesterday": "/order/yesterday",
|
||||
"OrderSearchFuture": "/order/futrue",
|
||||
"OrderSearchWeek": "/order/week",
|
||||
"OrderSearchPreWeek": "/order/preweek",
|
||||
"OrderSearchMonth": "/order/month",
|
||||
"OrderSearchPreMonth": "/order/premonth",
|
||||
|
||||
"OrderSearchDongbei": "/order/dongbei", //东三省
|
||||
"OrderSearchArea1": "/order/area1", //京津冀
|
||||
"OrderSearchArea2": "/order/area2", //川渝云贵
|
||||
"OrderSearchArea3": "/order/area3", //江浙沪
|
||||
|
||||
"OrderSearchNocheck": "/order/nocheck", //待验车
|
||||
"OrderSearchMine": "/order/mine", //指派我的或我创建的
|
||||
"OrderSearchTonghang": "/order/tonghang", //同行运单
|
||||
|
||||
"OrderDetail": "/order/detail",
|
||||
"OrderCreate": "/order/create",
|
||||
"OrderCheck": "/ordercheck/basic",
|
||||
"JiaocheSearch": "/jiaoche/list",
|
||||
"JiaocheDetail": "/jiaoche/detail",
|
||||
"JiaocheCreate": "/jiaoche/create",
|
||||
"BookSearch": "/orderpre/list",
|
||||
"BookDetail": "/orderpre/detail",
|
||||
"BookCreate": "/orderpre/create",
|
||||
"CarList": "/car/list",
|
||||
"CarDetail": "/car/detail",
|
||||
"StoreList": "/store/list",
|
||||
"StoreDetail": "/store/detail",
|
||||
"TruckList": "/truck/list",
|
||||
"TruckDetail": "/truck/detail",
|
||||
"WeituorenSearch": "/weituoren/list",
|
||||
"WeituorenDetail": "/weituoren/detail",
|
||||
|
||||
"MemberList": "/member/list",
|
||||
"MemberDetail": "/member/detail",
|
||||
|
||||
"UserLogin": "/user/login",
|
||||
"UserReg": "/user/register",
|
||||
"UserDetail": "/user/detail",
|
||||
"UserLogout": "/user/logout",
|
||||
|
||||
"UploadImage": "/upload/image",
|
||||
"UploadImages": "/upload/images"
|
||||
}
|
59
apis/ctms/apis.json
Normal file
59
apis/ctms/apis.json
Normal file
@ -0,0 +1,59 @@
|
||||
/*————接口预设————*/
|
||||
{
|
||||
"index": "/index/index",
|
||||
"IndexData": "/index/h5data",
|
||||
"AdsSplash": "/index/ads-splash",
|
||||
"AdsBanner": "/index/ads-banner",
|
||||
//获取短信验证码
|
||||
"getVcode": "/sms/vcode",
|
||||
"getCwVcode": "/sms/caiwu",
|
||||
|
||||
"OrderSearch": "/order/list",
|
||||
"OrderDetail": "/order/detail",
|
||||
"OrderCreate": "/order/create",
|
||||
"OrderCancel": "/order/cancel",
|
||||
"OrderCheck": "/ordercheck/basic",
|
||||
|
||||
"OrderBookSearch": "/orderpre/list",
|
||||
"OrderBookDetail": "/orderpre/detail",
|
||||
"OrderBookCreate": "/orderpre/create",
|
||||
"OrderBookEdit": "/orderpre/edit",
|
||||
"OrderBookCancel": "/orderpre/cancel",
|
||||
|
||||
"UserLogin": "/fans/login",
|
||||
"UserLoginSms": "/fans/login-sms",
|
||||
"UserAuth": "/fans/auth",
|
||||
"UserReg": "/fans/register",
|
||||
"UserDetail": "/fans/detail",
|
||||
"UserLogout": "/fans/logout",
|
||||
|
||||
"NewsPriceList": "/news/price-list",
|
||||
"NewsPriceDetail": "/news/price-detail",
|
||||
"NewsSearch": "/news/list",
|
||||
"NewsDetail": "/news/detail",
|
||||
"NewsAjax": "/news/ajax",
|
||||
"NewsCatList": "/newscat/list",
|
||||
"NoticeList": "/notice/list",
|
||||
"NoticeDetail": "/notice/detail",
|
||||
|
||||
"JiaocheSearch": "/jiaoche/list",
|
||||
"JiaocheDetail": "/jiaoche/detail",
|
||||
"JiaocheCreate": "/jiaoche/create",
|
||||
"BookSearch": "/orderpre/list",
|
||||
"BookDetail": "/orderpre/detail",
|
||||
"BookCreate": "/orderpre/create",
|
||||
"CarList": "/car/list",
|
||||
"CarDetail": "/car/detail",
|
||||
"StoreList": "/store/list",
|
||||
"StoreDetail": "/store/detail",
|
||||
"TruckList": "/truck/list",
|
||||
"TruckDetail": "/truck/detail",
|
||||
"WeituorenSearch": "/weituoren/list",
|
||||
"WeituorenDetail": "/weituoren/detail",
|
||||
|
||||
"MemberList": "/member/list",
|
||||
"MemberDetail": "/member/detail",
|
||||
|
||||
"UploadImage": "/upload/image",
|
||||
"UploadImages": "/upload/images"
|
||||
}
|
85
apis/ctms/fab.js
Normal file
85
apis/ctms/fab.js
Normal file
@ -0,0 +1,85 @@
|
||||
export default {
|
||||
// 登录方法
|
||||
login: function(username, password, smscode, uuid) {
|
||||
const data = {
|
||||
username,
|
||||
password,
|
||||
smscode,
|
||||
uuid
|
||||
}
|
||||
return request({
|
||||
'url': apis.UserLogin,
|
||||
headers: {
|
||||
isToken: false
|
||||
},
|
||||
'method': 'post',
|
||||
'data': data
|
||||
})
|
||||
},
|
||||
|
||||
// 注册方法
|
||||
register: function(data) {
|
||||
return request({
|
||||
url: apis.UserReg,
|
||||
headers: {
|
||||
isToken: false
|
||||
},
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
|
||||
// 获取用户详细信息
|
||||
getInfo: function() {
|
||||
return request({
|
||||
'url': apis.UserDetail,
|
||||
'method': 'get'
|
||||
})
|
||||
},
|
||||
|
||||
// 退出方法
|
||||
logout: function() {
|
||||
return request({
|
||||
'url': userLogout,
|
||||
'method': 'post'
|
||||
})
|
||||
},
|
||||
// 用户密码重置
|
||||
updateUserPwd: function(oldPassword, newPassword) {
|
||||
const data = {
|
||||
oldPassword,
|
||||
newPassword
|
||||
}
|
||||
return request({
|
||||
url: '/system/user/profile/updatePwd',
|
||||
method: 'put',
|
||||
params: data
|
||||
})
|
||||
},
|
||||
|
||||
// 查询用户个人信息
|
||||
getUserProfile: function() {
|
||||
return request({
|
||||
url: '/system/user/profile',
|
||||
method: 'get'
|
||||
})
|
||||
},
|
||||
|
||||
// 修改用户个人信息
|
||||
updateUserProfile: function(data) {
|
||||
return request({
|
||||
url: '/system/user/profile',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
|
||||
// 用户头像上传
|
||||
uploadAvatar: function(data) {
|
||||
return upload({
|
||||
url: '/system/user/profile/avatar',
|
||||
name: data.name,
|
||||
filePath: data.filePath
|
||||
})
|
||||
}
|
||||
}
|
55
apis/ctms/index.js
Normal file
55
apis/ctms/index.js
Normal file
@ -0,0 +1,55 @@
|
||||
import user from './user.js';
|
||||
import ads from './ads.js';
|
||||
import order from './order.js';
|
||||
import orderpre from './orderpre.js';
|
||||
import notice from './notice.js';
|
||||
import news from './news.js';
|
||||
import vcode from './vcode.js';
|
||||
import sync from './sync.js';
|
||||
import fab from './fab.js';
|
||||
import constant from "./_utils/constant.js";
|
||||
import storage from './_utils/storage.js';
|
||||
|
||||
//处理缓存
|
||||
const cache = {
|
||||
size: function() {
|
||||
var info = storage.info();
|
||||
var size = info.currentSize,
|
||||
kb, m;
|
||||
kb = size % 1000;
|
||||
m = size / 1000 - kb;
|
||||
return {
|
||||
'm': m,
|
||||
'kb': kb
|
||||
}
|
||||
},
|
||||
clear: function() {
|
||||
uni.showModal({
|
||||
title: '您在本机上存储的数据将被抹除,请确认',
|
||||
cancelText: '我再想想',
|
||||
confirmText: '确认',
|
||||
success() {
|
||||
storage.clean();
|
||||
return true;
|
||||
},
|
||||
fail() {
|
||||
return false;
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const ctms = {
|
||||
user,
|
||||
ads,
|
||||
order,
|
||||
orderpre,
|
||||
notice,
|
||||
news,
|
||||
vcode,
|
||||
sync,
|
||||
fab,
|
||||
constant,
|
||||
cache
|
||||
}
|
||||
export default ctms;
|
209
apis/ctms/news.js
Normal file
209
apis/ctms/news.js
Normal file
@ -0,0 +1,209 @@
|
||||
import request from './_utils/request.js'
|
||||
import apis from './apis.json'
|
||||
import constant from './_utils/constant.js'
|
||||
import storage from './_utils/storage.js'
|
||||
export default {
|
||||
//查询运单
|
||||
search: function(formData = null, page = 0, psize = 0, ls = null) {
|
||||
page = page || 1;
|
||||
psize = psize || 10;
|
||||
|
||||
var data = {
|
||||
'search[title]': formData.title,
|
||||
'search[cid]': formData.cid,
|
||||
page: page,
|
||||
psize: psize, //分页数据大小
|
||||
};
|
||||
var url = apis.NewsSearch;
|
||||
var header = {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
};
|
||||
return request({
|
||||
'url': url,
|
||||
'method': 'POST',
|
||||
'data': data,
|
||||
"headers": header,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
if (!res) {
|
||||
storage.set(constant.newsList, {});
|
||||
return false;
|
||||
}
|
||||
switch (res.code) {
|
||||
default:
|
||||
uni.showToast({
|
||||
title: "没有查询到相关内容!",
|
||||
icon: "fail"
|
||||
});
|
||||
break;
|
||||
case 0:
|
||||
var news = {};
|
||||
var totalCount = 0;
|
||||
storage.set(constant.newsList, news, 'page-' + page);
|
||||
break;
|
||||
case 200:
|
||||
var news = res.data.news;
|
||||
var totalCount = res.data.total;
|
||||
storage.set(constant.newsList, totalCount, 'total');
|
||||
storage.set(constant.newsList, news, 'page-' + page);
|
||||
for (var x in news) {
|
||||
var detail = news[x];
|
||||
var id = detail.id;
|
||||
storage.set(constant.newsDetail, detail, id);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return res.data;
|
||||
})
|
||||
},
|
||||
|
||||
//列表,从本地缓存中加载
|
||||
list: function(page = 0) {
|
||||
//取缓存
|
||||
var total = storage.get(constant.newsList, 'total');
|
||||
if (total) {
|
||||
var news = storage.get(constant.newsList, 'page-' + page);
|
||||
if (news) {
|
||||
return {
|
||||
'total': total,
|
||||
'news': news
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
//详情,网络更新
|
||||
checkDetail: function(id) {
|
||||
var data = {
|
||||
id: id
|
||||
};
|
||||
var url = apis.NewsDetail;
|
||||
return request({
|
||||
'url': url,
|
||||
'method': 'POST',
|
||||
'data': data,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
var detail = res.data;
|
||||
storage.set(constant.newsDetail, detail, id);
|
||||
return res;
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: "信息获取失败!",
|
||||
icon: "fail"
|
||||
});
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
//详情,从缓存中读取
|
||||
detail: function(id) {
|
||||
return storage.get(constant.newsDetail, id);
|
||||
},
|
||||
|
||||
//AJAX操作
|
||||
ajax: function(id, op) {
|
||||
var data = {
|
||||
id: id,
|
||||
op: op,
|
||||
};
|
||||
var url = apis.NewsAjax;
|
||||
return request({
|
||||
'url': url,
|
||||
'method': 'POST',
|
||||
'data': data,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
var detail = res.data;
|
||||
storage.set(constant.newsDetail, detail, id);
|
||||
return res;
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 取文章分类
|
||||
cats: function() {
|
||||
var url = apis.NewsCatList;
|
||||
var header = {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
};
|
||||
return request({
|
||||
'url': url,
|
||||
'method': 'GET',
|
||||
'data': {},
|
||||
"headers": header,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
var cats = res.data.cats;
|
||||
return cats;
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
//标记文章浏览记录
|
||||
viewed: function(id) {
|
||||
var ls = constant.newsViewed;
|
||||
var res = uni.getStorageSync(ls) || {};
|
||||
if (!res[id]) {
|
||||
res[id] = id;
|
||||
uni.setStorageSync(ls, res);
|
||||
this.ajax(id, 'view');
|
||||
return true;
|
||||
}
|
||||
},
|
||||
|
||||
//标记文章状态(纯缓存记录)(id,内容ID,op为具体操作-默认为取全部,type为状态类型)
|
||||
mark: function(id, type = null, op = false) {
|
||||
//不归入统一的缓存集合,以确保不在清除缓存时被误清除
|
||||
if (!type) {
|
||||
return false;
|
||||
}
|
||||
var ls, opp_set, opp_del;
|
||||
switch (type) {
|
||||
case 'reading':
|
||||
//在读
|
||||
ls = constant.newsReading;
|
||||
opp_set = 'read';
|
||||
opp_del = 'no_read';
|
||||
break;
|
||||
case 'liked':
|
||||
//喜欢
|
||||
ls = constant.newsLiked;
|
||||
opp_set = 'like';
|
||||
opp_del = 'no_like';
|
||||
break;
|
||||
}
|
||||
var res = uni.getStorageSync(ls) || {};
|
||||
if (!op) {
|
||||
return res;
|
||||
}
|
||||
var data = res,
|
||||
ret = false;
|
||||
switch (op) {
|
||||
case 'set':
|
||||
if (id && !data[id]) {
|
||||
data[id] = id;
|
||||
uni.setStorageSync(ls, data);
|
||||
ret = true;
|
||||
this.ajax(id, opp_set);
|
||||
}
|
||||
break;
|
||||
case 'get':
|
||||
ret = data[id] || false;
|
||||
break;
|
||||
case 'del':
|
||||
delete data[id];
|
||||
uni.setStorageSync(ls, data);
|
||||
ret = true;
|
||||
this.ajax(id, opp_del);
|
||||
break;
|
||||
default:
|
||||
ret = res;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
}
|
69
apis/ctms/notice.js
Normal file
69
apis/ctms/notice.js
Normal file
@ -0,0 +1,69 @@
|
||||
import request from './_utils/request.js'
|
||||
import apis from './apis.json'
|
||||
import constant from './_utils/constant.js'
|
||||
import storage from './_utils/storage.js'
|
||||
export default {
|
||||
//列表
|
||||
list: function(page = 0, psize = 10) {
|
||||
var data = {
|
||||
page: page,
|
||||
psize: psize, //分页数据大小
|
||||
};
|
||||
var url = apis.NoticeList;
|
||||
var header = {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
};
|
||||
return request({
|
||||
'url': url,
|
||||
'method': 'POST',
|
||||
'data': data,
|
||||
"headers": header,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
switch (res.code) {
|
||||
default:
|
||||
break;
|
||||
case 0:
|
||||
var notices = {};
|
||||
var totalCount = 0;
|
||||
storage.set(constant.noitceList, notices, 'page-' + page);
|
||||
break;
|
||||
case 200:
|
||||
var notices = res.data.notices;
|
||||
var totalCount = res.data.total;
|
||||
storage.set(constant.noticeList, totalCount, 'total');
|
||||
storage.set(constant.noitceList, notices, 'page-' + page);
|
||||
for (var x in notices) {
|
||||
storage.set(constant.noticeDetail, notices[x], notices[x].id);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return res.data;
|
||||
})
|
||||
},
|
||||
|
||||
//详情
|
||||
detail: function(id) {
|
||||
var data = {
|
||||
id: id
|
||||
};
|
||||
var url = apis.NoticeDetail;
|
||||
return request({
|
||||
'url': url,
|
||||
'method': 'POST',
|
||||
'data': data,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
var notice = res.data;
|
||||
storage.set(constant.noticeDetail, notice, id);
|
||||
return res;
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: "信息获取失败!",
|
||||
icon: "fail"
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
220
apis/ctms/order.js
Normal file
220
apis/ctms/order.js
Normal file
@ -0,0 +1,220 @@
|
||||
import request from './_utils/request.js'
|
||||
import apis from './apis.json'
|
||||
import constant from './_utils/constant.js'
|
||||
import storage from './_utils/storage.js'
|
||||
export default {
|
||||
//存取草稿(只允许1+5条记录,第1条覆盖保存,后5条循环保存)
|
||||
draft: function(formData, index = 0) {
|
||||
var lsIndex = constant.orderForm;
|
||||
// 指定第1条
|
||||
if (index === null) {
|
||||
return storage.set(lsIndex, formData, 0);
|
||||
}
|
||||
//指定第几条缓存
|
||||
var i = Number(index);
|
||||
if (i > 0) {
|
||||
return storage.set(lsIndex, formData, i);
|
||||
}
|
||||
//确认上次缓存的是第几条
|
||||
var lastIndex = storage.get(lsIndex, 'lastIndex');
|
||||
var li = lastIndex ? lastIndex : 0;
|
||||
if (li < 5) {
|
||||
li += 1;
|
||||
} else {
|
||||
li = 1;
|
||||
}
|
||||
storage.set(lsIndex, li, 'lastIndex');
|
||||
return storage.set(lsIndex, formData, li);
|
||||
|
||||
},
|
||||
getDraft: function(index = null) {
|
||||
var lsIndex = constant.orderForm;
|
||||
index = index || 0;
|
||||
return storage.get(lsIndex, index);
|
||||
},
|
||||
delDraft: function(index = null) {
|
||||
var lsIndex = constant.orderForm;
|
||||
index = index || 0;
|
||||
storage.remove(lsIndex, index);
|
||||
},
|
||||
|
||||
//删除缓存
|
||||
delDetail: function(oid) {
|
||||
storage.remove(constant.orderDetail, oid);
|
||||
},
|
||||
|
||||
//取消订单
|
||||
cancel: function(oid) {
|
||||
//网络请求
|
||||
var data = {
|
||||
'id': oid
|
||||
};
|
||||
var url = apis.OrderCancel;
|
||||
var header = {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
};
|
||||
return request({
|
||||
'url': url,
|
||||
'method': 'POST',
|
||||
'data': data,
|
||||
"headers": header,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
if (!res) {
|
||||
return false;
|
||||
}
|
||||
return res.data;
|
||||
})
|
||||
},
|
||||
|
||||
// 在线下单
|
||||
create: function(formData) {
|
||||
//缓存表单
|
||||
var lsIndex = constant.orderCreateForm
|
||||
storage.set(lsIndex, formData);
|
||||
//网络请求
|
||||
var data = formData;
|
||||
var url = apis.OrderCreate;
|
||||
var header = {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
};
|
||||
return request({
|
||||
'url': url,
|
||||
'method': 'POST',
|
||||
'data': data,
|
||||
"headers": header,
|
||||
'params': {}
|
||||
})
|
||||
},
|
||||
|
||||
//查询运单
|
||||
search: function(formData = null, page = 0, psize = 0, ls = null) {
|
||||
page = page || 1;
|
||||
psize = psize || 10;
|
||||
//缓存表单
|
||||
var lsIndex = ls || constant.orderSearchA
|
||||
if (formData) {
|
||||
storage.set(lsIndex, formData);
|
||||
} else {
|
||||
formData = storage.get(lsIndex)
|
||||
}
|
||||
|
||||
var data = {
|
||||
'search[carno]': formData.carno,
|
||||
'search[sn]': formData.ordersn ? formData.ordersn : 0,
|
||||
'search[phone]': formData.phone,
|
||||
page: page,
|
||||
psize: psize, //分页数据大小
|
||||
};
|
||||
var url = apis.OrderSearch;
|
||||
var header = {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
};
|
||||
return request({
|
||||
'url': url,
|
||||
'method': 'POST',
|
||||
'data': data,
|
||||
"headers": header,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
if (!res) {
|
||||
storage.set(constant.orderList, {});
|
||||
return false;
|
||||
}
|
||||
switch (res.code) {
|
||||
default:
|
||||
uni.showToast({
|
||||
title: "没有查询到相关订单!",
|
||||
icon: "fail"
|
||||
});
|
||||
break;
|
||||
case 0:
|
||||
var orders = {};
|
||||
var totalCount = 0;
|
||||
storage.set(constant.orderList, orders, 'page-' + page);
|
||||
break;
|
||||
case 200:
|
||||
var orders = res.data.orders;
|
||||
var totalCount = res.data.total;
|
||||
storage.set(constant.orderList, totalCount, 'total');
|
||||
storage.set(constant.orderList, orders, 'page-' + page);
|
||||
for (var x in orders) {
|
||||
var order = orders[x];
|
||||
var oid = order.id;
|
||||
storage.set(constant.orderDetail, order, oid);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return res.data;
|
||||
})
|
||||
},
|
||||
|
||||
//运单列表,从本地缓存中加载
|
||||
list: function(page = 0) {
|
||||
//取缓存
|
||||
var total = storage.get(constant.orderList, 'total');
|
||||
if (total) {
|
||||
var orders = storage.get(constant.orderList, 'page-' + page);
|
||||
if (orders) {
|
||||
return {
|
||||
'total': total,
|
||||
'orders': orders
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
//运单详情,网络更新
|
||||
checkDetail: function(oid) {
|
||||
var data = {
|
||||
oid: oid
|
||||
};
|
||||
var url = apis.OrderDetail;
|
||||
return request({
|
||||
'url': url,
|
||||
'method': 'POST',
|
||||
'data': data,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
var order = res.data;
|
||||
storage.set(constant.orderDetail, order, oid);
|
||||
return res.data;
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: "订单信息获取失败!",
|
||||
icon: "fail"
|
||||
});
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
//运单详情,从缓存中读取
|
||||
detail: function(oid) {
|
||||
return storage.get(constant.orderDetail, oid);
|
||||
},
|
||||
|
||||
//运单验车
|
||||
yanche: function(oid, checks, op) {
|
||||
var data = {
|
||||
oid: oid,
|
||||
op: op,
|
||||
checks: checks,
|
||||
};
|
||||
var url = apis.OrderCheck;
|
||||
return request({
|
||||
'url': url,
|
||||
'method': 'POST',
|
||||
'data': data,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
return res.data;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
183
apis/ctms/orderpre.js
Normal file
183
apis/ctms/orderpre.js
Normal file
@ -0,0 +1,183 @@
|
||||
import request from './_utils/request.js'
|
||||
import apis from './apis.json'
|
||||
import constant from './_utils/constant.js'
|
||||
import storage from './_utils/storage.js'
|
||||
export default {
|
||||
//存取草稿(只允许1+5条记录,第1条覆盖保存,后5条循环保存)
|
||||
draft: function(formData, index = 0) {
|
||||
var lsIndex = constant.orderBookForm;
|
||||
// 指定第1条
|
||||
if (index === null) {
|
||||
return storage.set(lsIndex, formData, 0);
|
||||
}
|
||||
//指定第几条缓存
|
||||
var i = Number(index);
|
||||
if (i > 0) {
|
||||
return storage.set(lsIndex, formData, i);
|
||||
}
|
||||
//确认上次缓存的是第几条
|
||||
var lastIndex = storage.get(lsIndex, 'lastIndex');
|
||||
var li = lastIndex ? lastIndex : 0;
|
||||
if (li < 5) {
|
||||
li += 1;
|
||||
} else {
|
||||
li = 1;
|
||||
}
|
||||
storage.set(lsIndex, li, 'lastIndex');
|
||||
return storage.set(lsIndex, formData, li);
|
||||
|
||||
},
|
||||
getDraft: function(index = null) {
|
||||
var lsIndex = constant.orderBookForm;
|
||||
index = index || 0;
|
||||
return storage.get(lsIndex, index);
|
||||
},
|
||||
delDraft: function(index = null) {
|
||||
var lsIndex = constant.orderBookForm;
|
||||
index = index || 0;
|
||||
storage.remove(lsIndex, index);
|
||||
},
|
||||
|
||||
//删除缓存
|
||||
delDetail: function(oid) {
|
||||
storage.remove(constant.orderBookDetail, oid);
|
||||
},
|
||||
|
||||
// 下单询价
|
||||
create: function(formData) {
|
||||
//缓存表单
|
||||
this.draft(formData)
|
||||
//网络请求
|
||||
var data = formData;
|
||||
var url = apis.OrderBookCreate;
|
||||
if (formData.id) url = apis.OrderBookEdit; //有ID传入时,即为更新
|
||||
var header = {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
};
|
||||
return request({
|
||||
'url': url,
|
||||
'method': 'POST',
|
||||
'data': data,
|
||||
"headers": header,
|
||||
'params': {}
|
||||
})
|
||||
},
|
||||
|
||||
cancel: function(oid) {
|
||||
//网络请求
|
||||
var data = {
|
||||
'id': oid
|
||||
};
|
||||
var url = apis.OrderBookCancel;
|
||||
var header = {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
};
|
||||
return request({
|
||||
'url': url,
|
||||
'method': 'POST',
|
||||
'data': data,
|
||||
"headers": header,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
if (!res) {
|
||||
return false;
|
||||
}
|
||||
return res.data;
|
||||
})
|
||||
},
|
||||
|
||||
//获取询价单列表
|
||||
list: function(formData = null, page = 0, psize = 10, ls = null) {
|
||||
page = page || 1;
|
||||
psize = psize || 10;
|
||||
//缓存表单
|
||||
var lsIndex = ls || constant.orderBookSearch
|
||||
if (formData) {
|
||||
storage.set(lsIndex, formData);
|
||||
} else {
|
||||
formData = storage.get(lsIndex)
|
||||
}
|
||||
|
||||
var data = {
|
||||
'search[carno]': formData.carno,
|
||||
'search[sn]': formData.ordersn ? formData.ordersn : 0,
|
||||
'search[phone]': formData.phone,
|
||||
page: page,
|
||||
psize: psize, //分页数据大小
|
||||
};
|
||||
var url = apis.OrderBookSearch;
|
||||
var header = {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
};
|
||||
return request({
|
||||
'url': url,
|
||||
'method': 'POST',
|
||||
'data': data,
|
||||
"headers": header,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
switch (res.code) {
|
||||
default:
|
||||
uni.showToast({
|
||||
title: "没有查询到相关订单!",
|
||||
icon: "fail"
|
||||
});
|
||||
break;
|
||||
case 0:
|
||||
var orders = {};
|
||||
var totalCount = 0;
|
||||
storage.set(constant.orderBookList, orders, 'page-' + page);
|
||||
break;
|
||||
case 200:
|
||||
var orders = res.data.orders;
|
||||
var totalCount = res.data.total;
|
||||
storage.set(constant.orderBookList, totalCount, 'total');
|
||||
storage.set(constant.orderBookList, orders, 'page-' + page);
|
||||
for (var x in orders) {
|
||||
var order = orders[x];
|
||||
var oid = order.id;
|
||||
storage.set(constant.orderBookDetail, order, oid);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return res.data;
|
||||
})
|
||||
},
|
||||
|
||||
//询价单详情
|
||||
//@oid,cache(是否使用缓存)
|
||||
detail: function(oid, cache = null) {
|
||||
var data = {
|
||||
id: oid
|
||||
};
|
||||
var url = apis.OrderBookDetail;
|
||||
if (cache) {
|
||||
return new Promise((resolve, reject) => {
|
||||
var res = storage.get(constant.orderBookDetail, oid);
|
||||
if (res) {
|
||||
resolve(res)
|
||||
} else {
|
||||
// reject('没有查询到该运单的缓存')
|
||||
resolve(false)
|
||||
}
|
||||
});
|
||||
}
|
||||
return request({
|
||||
'url': url,
|
||||
'method': 'POST',
|
||||
'data': data,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
var order = res.data;
|
||||
storage.set(constant.orderBookDetail, order, oid);
|
||||
return res.data;
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: "询价单信息获取失败!",
|
||||
icon: "fail"
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
77
apis/ctms/sync.js
Normal file
77
apis/ctms/sync.js
Normal file
@ -0,0 +1,77 @@
|
||||
// 对异步函数进行同步化模拟
|
||||
const Confirm = {
|
||||
modalPromise: function(title, content, editable) {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.showModal({
|
||||
title: title,
|
||||
content: content,
|
||||
editable: editable,
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
if (editable) {
|
||||
resolve(res.content);
|
||||
} else {
|
||||
resolve(true);
|
||||
}
|
||||
} else if (res.cancel) {
|
||||
resolve(false);
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
reject(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
doSync: async function(title, content, editable) {
|
||||
try {
|
||||
const res = await this.modalPromise(title, content, editable);
|
||||
// console.log('对话框返回', res)
|
||||
return res;
|
||||
} catch (error) {
|
||||
// console.error('Error:', error);
|
||||
// 处理错误或用户取消操作...
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const Actions = {
|
||||
actionPromise: function(title, list) {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.showActionSheet({
|
||||
title: title,
|
||||
itemList: list,
|
||||
success: function(res) {
|
||||
// console.log('授权点击', res)
|
||||
var index = res.tapIndex;
|
||||
var item = list[index];
|
||||
resolve({
|
||||
'index': index,
|
||||
'item': item
|
||||
})
|
||||
},
|
||||
fail: function(res) {
|
||||
// console.log(res.errMsg);
|
||||
resolve(false)
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
doSync: async function(title, list) {
|
||||
try {
|
||||
const res = await this.actionPromise(title, list);
|
||||
// console.log('actionsheet点击返回', res)
|
||||
return res;
|
||||
} catch (error) {
|
||||
// console.error('Error:', error);
|
||||
// 处理错误或用户取消操作...
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
Confirm,
|
||||
Actions
|
||||
}
|
319
apis/ctms/user.js
Normal file
319
apis/ctms/user.js
Normal file
@ -0,0 +1,319 @@
|
||||
import request from './_utils/request.js'
|
||||
import apis from './apis.json'
|
||||
import constant from './_utils/constant.js'
|
||||
import _sync from './sync.js'
|
||||
import config from "@/config/ctms.config.js";
|
||||
import store from '@/store/index.js';
|
||||
|
||||
export default {
|
||||
//检查登陆,返回用户信息
|
||||
checkLogin: function() {
|
||||
var user = store.state.user,
|
||||
isCloud = config.isUserUnicloud;
|
||||
if (user.hasLogin && !isCloud) {
|
||||
return user.info;
|
||||
}
|
||||
var userCloud = store.state.userCloud;
|
||||
if (isCloud && userCloud.hasLogin) {
|
||||
var data = {
|
||||
mobile: userCloud.mobile,
|
||||
openid: userCloud.openid,
|
||||
username: userCloud.mobile
|
||||
}
|
||||
this.authLogin(data);
|
||||
return data;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
// 获取用户信息
|
||||
getInfo: function() {
|
||||
var user = store.state.user,
|
||||
isCloud = config.isUserUnicloud;
|
||||
if (user.hasLogin && !isCloud) {
|
||||
return user.info;
|
||||
}
|
||||
var userCloud = store.state.userCloud;
|
||||
if (isCloud && userCloud.hasLogin) {
|
||||
return {
|
||||
mobile: userCloud.mobile,
|
||||
openid: userCloud.openid,
|
||||
username: userCloud.mobile
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
//一键授权
|
||||
oneKeyAuth: async function() {
|
||||
var _that = this;
|
||||
var isCloud = config.isUserUnicloud;
|
||||
if (!isCloud) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '应用未开启云服务支持'
|
||||
})
|
||||
}
|
||||
|
||||
var user = store.state.user,
|
||||
userCloud = store.state.userCloud,
|
||||
list = [];
|
||||
if (!userCloud.hasLogin) {
|
||||
return uni.showModal({
|
||||
title: '提示',
|
||||
content: '请先登陆云平台',
|
||||
showCancel: true,
|
||||
cancelText: '放弃',
|
||||
success() {
|
||||
uni.navigateTo({
|
||||
url: 'uni_modules/uni-id-pages/pages/login/login-withoutpwd'
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
var _info = userCloud.info,
|
||||
openid = userCloud.openid,
|
||||
mobile = userCloud.mobile;
|
||||
var reg = new RegExp(
|
||||
/^(?:(?:\+|00)86)?1(?:(?:3\d)|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8\d)|(?:9[189]))\d{8}$/
|
||||
);
|
||||
var matches = reg.exec(mobile);
|
||||
|
||||
if (matches['length'] == 1 && matches['0'] == mobile) {
|
||||
list.unshift(mobile)
|
||||
} else if (openid) {
|
||||
list.unshift('同意')
|
||||
} else {
|
||||
return uni.showToast({
|
||||
icon: 'fail',
|
||||
title: '无效的平台信息'
|
||||
})
|
||||
}
|
||||
var res = await _sync.Actions.doSync('请确认授权', list);
|
||||
if (res) {
|
||||
var user = {
|
||||
mobile: mobile,
|
||||
openid: openid,
|
||||
isLong: true
|
||||
}
|
||||
var user = await _that.authLogin(user);
|
||||
// console.log('登陆授权返回', user)
|
||||
return user;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
// 登陆,成功后执行相应的缓存操作
|
||||
login: function(formData) {
|
||||
var isLong = formData.isLong || false;
|
||||
var data = {
|
||||
username: formData.username,
|
||||
passwd: formData.passwd,
|
||||
isLong: isLong
|
||||
};
|
||||
|
||||
var url = apis.UserLogin;
|
||||
var header = {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
};
|
||||
return request({
|
||||
'url': url,
|
||||
// 'force_url': '', //强制指定URL,忽略上面的url设定
|
||||
'method': 'post',
|
||||
'data': data,
|
||||
"headers": header,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
// utils.debug(res.data);
|
||||
var user = store.state.user;
|
||||
var _info = res.data.user;
|
||||
var date = new Date();
|
||||
var expireTime = date.getTime() + 3600 * 24 * 1000;
|
||||
//过期时间,正常是24小时
|
||||
if (isLong) {
|
||||
date.setDate(date.getMonth() + 1);
|
||||
//选择持久登陆时,时长改为1个月
|
||||
expireTime = date.getTime();
|
||||
}
|
||||
// console.log(expireTime, _info.tokenExpired);
|
||||
_info.expireTime = expireTime;
|
||||
store.commit('user/login', _info) //触发@store/modules/user.js的login函数,同步执行
|
||||
return _info;
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '登陆失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 通过短信验证码登陆,成功后执行相应的缓存操作
|
||||
smsLogin: function(formData) {
|
||||
var isLong = formData.isLong || false;
|
||||
var data = {
|
||||
mobile: formData.mobile,
|
||||
vcode: formData.vcode,
|
||||
isLong: isLong
|
||||
};
|
||||
|
||||
var url = apis.UserLoginSms;
|
||||
var header = {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
};
|
||||
return request({
|
||||
'url': url,
|
||||
// 'force_url': '', //强制指定URL,忽略上面的url设定
|
||||
'method': 'post',
|
||||
'data': data,
|
||||
"headers": header,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
// utils.debug(res.data);
|
||||
var user = store.state.user;
|
||||
var _info = res.data.user;
|
||||
var date = new Date();
|
||||
var expireTime = date.getTime() + 3600 * 24 * 1000;
|
||||
//过期时间,正常是24小时
|
||||
if (isLong) {
|
||||
date.setDate(date.getMonth() + 1);
|
||||
//选择持久登陆时,时长改为1个月
|
||||
expireTime = date.getTime();
|
||||
}
|
||||
// console.log(expireTime, _info.tokenExpired);
|
||||
_info.expireTime = expireTime;
|
||||
store.commit('user/login', _info) //触发@store/modules/user.js的login函数,同步执行
|
||||
return _info;
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '登陆失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 注册,成功后执行相应的缓存操作
|
||||
reg: function(formData) {
|
||||
var isLong = formData.isLong || false;
|
||||
var data = {
|
||||
username: formData.username,
|
||||
passwd: formData.passwd,
|
||||
vcode: formData.vcode,
|
||||
email: formData.email,
|
||||
isLong: isLong
|
||||
};
|
||||
|
||||
var url = apis.UserReg;
|
||||
var header = {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
};
|
||||
return request({
|
||||
'url': url,
|
||||
// 'force_url': '', //强制指定URL,忽略上面的url设定
|
||||
'method': 'post',
|
||||
'data': data,
|
||||
"headers": header,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
// utils.debug(res.data);
|
||||
var user = store.state.user;
|
||||
var _info = res.data.user;
|
||||
var date = new Date();
|
||||
var expireTime = date.getTime() + 3600 * 24 * 1000;
|
||||
//过期时间,正常是24小时
|
||||
if (isLong) {
|
||||
date.setDate(date.getMonth() + 1);
|
||||
//选择持久登陆时,时长改为1个月
|
||||
expireTime = date.getTime();
|
||||
}
|
||||
// console.log(expireTime, _info.tokenExpired);
|
||||
_info.expireTime = expireTime;
|
||||
store.commit('user/login', _info) //触发@store/modules/user.js的login函数,同步执行
|
||||
return _info;
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 一键授权登陆
|
||||
authLogin: async function(user, from) {
|
||||
var isLong = user.isLong || false;
|
||||
var plat = getApp().globalData.config.openplat;
|
||||
var from = from || plat;
|
||||
var data = {
|
||||
mobile: user.mobile,
|
||||
openid: user.openid,
|
||||
isLong: isLong,
|
||||
from: from
|
||||
};
|
||||
var url = apis.UserAuth;
|
||||
var header = {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
};
|
||||
return await request({
|
||||
'url': url,
|
||||
'method': 'post',
|
||||
'data': data,
|
||||
"headers": header,
|
||||
'params': {}
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
// utils.debug(res.data);
|
||||
var user = store.state.user;
|
||||
var _info = res.data.user;
|
||||
var date = new Date();
|
||||
var expireTime = date.getTime() + 3600 * 24 * 1000;
|
||||
//过期时间,正常是24小时
|
||||
if (isLong) {
|
||||
date.setDate(date.getMonth() + 1);
|
||||
//选择持久登陆时,时长改为1个月
|
||||
expireTime = date.getTime();
|
||||
}
|
||||
// console.log(expireTime, _info.tokenExpired);
|
||||
_info.expireTime = expireTime;
|
||||
store.commit('user/login', _info) //触发@store/modules/user.js的login函数,同步执行
|
||||
return _info;
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
logout: async function() {
|
||||
var isCloud = config.isUserUnicloud;
|
||||
var res = await _sync.Confirm.doSync('提示', '您正在注销,请确认继续', false);
|
||||
if (res) {
|
||||
store.commit('user/logout') //触发@store/modules/user.js的logout函数,同步执行
|
||||
if (isCloud) store.commit('userCloud/logout')
|
||||
uni.showToast({
|
||||
title: '您已注销,现在重新打开APP',
|
||||
icon: 'none'
|
||||
});
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
loginDraft(formData = {}, isGet = false) {
|
||||
var ls = constant.userLoginForm;
|
||||
var data = uni.getStorageSync(ls);
|
||||
if (isGet) return data;
|
||||
var data = {
|
||||
...data,
|
||||
...formData
|
||||
};
|
||||
uni.setStorageSync(ls, data);
|
||||
},
|
||||
|
||||
regDraft(formData = {}, isGet = false) {
|
||||
var ls = constant.userRegForm;
|
||||
var data = uni.getStorageSync(ls);
|
||||
if (isGet) return data;
|
||||
var data = {
|
||||
...data,
|
||||
...formData
|
||||
};
|
||||
uni.setStorageSync(ls, data);
|
||||
}
|
||||
}
|
47
apis/ctms/vcode.js
Normal file
47
apis/ctms/vcode.js
Normal file
@ -0,0 +1,47 @@
|
||||
import request from './_utils/request.js'
|
||||
import apis from './apis.json'
|
||||
import constant from './_utils/constant.js'
|
||||
import storage from './_utils/storage.js'
|
||||
export default {
|
||||
//手机短信验证码相关操作
|
||||
|
||||
// 获取验证码
|
||||
//scence使用场景,phone发送手机号
|
||||
get: function(scence, phone) {
|
||||
//网络请求
|
||||
var data = {
|
||||
'scence': scence,
|
||||
'phone': phone
|
||||
};
|
||||
var url = apis.getVcode;
|
||||
if (scence === 'caiwu') {
|
||||
url = apis.getCwVcode;
|
||||
}
|
||||
var header = {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
};
|
||||
return request({
|
||||
'url': url,
|
||||
'method': 'POST',
|
||||
'data': data,
|
||||
"headers": header,
|
||||
'params': {}
|
||||
}).then(
|
||||
function(res) {
|
||||
var data = {};
|
||||
if (res.msg) {
|
||||
data.msg = res.msg;
|
||||
}
|
||||
if (res.code == 200) {
|
||||
return {
|
||||
...res.data,
|
||||
...data
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
}
|
Reference in New Issue
Block a user