Commit 7856a621 authored by 李俊赕's avatar 李俊赕

base-request

parent 738e9eae
...@@ -2834,6 +2834,7 @@ ...@@ -2834,6 +2834,7 @@
"thread-loader": "^2.1.3", "thread-loader": "^2.1.3",
"url-loader": "^2.2.0", "url-loader": "^2.2.0",
"vue-loader": "^15.9.2", "vue-loader": "^15.9.2",
"vue-loader-v16": "npm:vue-loader@^16.1.0",
"vue-style-loader": "^4.1.2", "vue-style-loader": "^4.1.2",
"webpack": "^4.0.0", "webpack": "^4.0.0",
"webpack-bundle-analyzer": "^3.8.0", "webpack-bundle-analyzer": "^3.8.0",
...@@ -15318,6 +15319,11 @@ ...@@ -15318,6 +15319,11 @@
"which-boxed-primitive": "^1.0.2" "which-boxed-primitive": "^1.0.2"
} }
}, },
"uni-read-pages": {
"version": "1.0.5",
"resolved": "https://registry.npm.taobao.org/uni-read-pages/download/uni-read-pages-1.0.5.tgz",
"integrity": "sha1-RSyNyqiXe7rvYAkJvpJsjZcEOHw="
},
"unicode-canonical-property-names-ecmascript": { "unicode-canonical-property-names-ecmascript": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npm.taobao.org/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz", "resolved": "https://registry.npm.taobao.org/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
...@@ -15642,6 +15648,94 @@ ...@@ -15642,6 +15648,94 @@
"vue-style-loader": "^4.1.0" "vue-style-loader": "^4.1.0"
} }
}, },
"vue-loader-v16": {
"version": "npm:vue-loader@16.2.0",
"resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-16.2.0.tgz?cache=0&sync_timestamp=1616796718461&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-loader%2Fdownload%2Fvue-loader-16.2.0.tgz",
"integrity": "sha1-BGpTMI3Ufljv4g3ewe3sAnzjtG4=",
"dev": true,
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
},
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1617175602652&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
"integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
"dev": true,
"optional": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.0",
"resolved": "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz",
"integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=",
"dev": true,
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
"integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
"dev": true,
"optional": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
"integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
"dev": true,
"optional": true
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
"integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
"dev": true,
"optional": true
},
"hash-sum": {
"version": "2.0.0",
"resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-2.0.0.tgz",
"integrity": "sha1-gdAbtd6OpKIUrV1urRtSNGCwtFo=",
"dev": true,
"optional": true
},
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz",
"integrity": "sha1-5MrOW4FtQloWa18JfhDNErNgZLA=",
"dev": true,
"optional": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1611393963969&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz",
"integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
"dev": true,
"optional": true,
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"vue-style-loader": { "vue-style-loader": {
"version": "4.1.3", "version": "4.1.3",
"resolved": "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.3.tgz?cache=0&sync_timestamp=1614758652197&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-style-loader%2Fdownload%2Fvue-style-loader-4.1.3.tgz", "resolved": "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.3.tgz?cache=0&sync_timestamp=1614758652197&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-style-loader%2Fdownload%2Fvue-style-loader-4.1.3.tgz",
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
"core-js": "^3.6.5", "core-js": "^3.6.5",
"flyio": "^0.6.2", "flyio": "^0.6.2",
"regenerator-runtime": "^0.12.1", "regenerator-runtime": "^0.12.1",
"uni-read-pages": "^1.0.5",
"vue": "^2.6.11", "vue": "^2.6.11",
"vuex": "^3.2.0" "vuex": "^3.2.0"
}, },
......
const db = uniCloud.database({
spaceId: 'tcb-nikbzhlwnpd5n913e1c5e-50f4bbo'
})
let cloudRulesApiFun = function(vm){
/* 查询所有产品 废弃*/
let getAllProduct = async () => await db.collection("product").get();
/* 查询产品下的品牌 {product_code:"P0001"} 废弃*/
let getBrand = async (params = {}) => await db.collection("brand").where(params).get();
/* 查询规范项目 {product_code:"P0001"} 废弃*/
let getstandard = async (params = {}) => await db.collection("standard").where(params).get();
/* 查询分组规范项目 废弃*/
let getGroupStandard = async (params = {}) => await uniCloud.callFunction({name: 'getGroupStandard', data: params});
/* 查询类别数据 */
let getClassifyDictionary = async () => await db.collection("dictionary").where({"type":"classify"}).get()
/* 查询有数据的系统 或者 品牌 数据 {"classify_id":"","system_id":"","field":"system_id|brand_id"}*/
let getRelationDictionary = async (params = {}) => await uniCloud.callFunction({name: 'getRelationDictionary', data: params});
let getRelationDictionaryV2 = async () => await uniCloud.callFunction({name: 'getRelationDictionaryV2'});
/* 查询规范 根据 分类、系统、品牌 {"token":"", "classify_id":"","system_id":"","brand_id":""} */
let getGroupStandardV2 = async (params = {}) => await uniCloud.callFunction({name: 'getGroupStandardV2', data: params});
/* 保存图片 {"token":"", "standardId":"", "url":""} */
let saveImage = async (params = {}) => await uniCloud.callFunction({name: 'saveImage', data: params});
/* 获取用户水印,首次返回默认水印 {"token":"", "systemId":""} */
let getUserWatermark = async (params = {}) => await uniCloud.callFunction({name: 'getUserWatermark', data: params});
/* 保存用户水印配置 {"token":"", "watermark": getUserWatemark返回的数据} */
let saveUserWatermark = async (params = {}) => await uniCloud.callFunction({name: 'saveUserWatermark', data: params});
const rulesApi = {
getAllProduct,
getBrand,
getstandard,
getGroupStandard,
// 新接口
getClassifyDictionary,
getRelationDictionary,
getRelationDictionaryV2,
getGroupStandardV2,
saveImage,
getUserWatermark,
saveUserWatermark
}
return rulesApi
}
module.exports = {
cloudRulesApiFun
}
\ No newline at end of file
// 所有模块公共API
import globalUrl from '@/common/base_url.js'
const ucenterApiUrl = globalUrl.ucenterUrl.apiUrl
let commonApiFun = function(vm){
let loginWxByUser = async (params = {}) => await vm.$u.get('/wxh-support-rest/rest/ssoinfo/v3/getUsersByCode', params);
let loginWxByPhone = async (params = {}) => await vm.$u.post('/wxh-support-rest/rest/ssoinfo/v3/findByMobile', params,{'content-type': 'application/x-www-form-urlencoded'});
let loginWechatAuth = async (params = {}) => await vm.$u.post('/wxh-support-rest/rest/ssoinfo/wxapp/unify/authorization', params, {'content-type': 'application/x-www-form-urlencoded'});
const commonApi = {
loginWxByUser,
loginWxByPhone,
loginWechatAuth,
}
return commonApi
}
module.exports = {
commonApiFun
}
\ No newline at end of file
import {
cloudRulesApiFun
} from "@/common/api/cloud_rules.js"
import {
commonApiFun
} from '@/common/api/common.js';
import {
take_orderApiFun
} from '@/common/api/take_order.js';
import {
settledApiFun
} from '@/common/api/settled.js';
let apiFun = function(vm) {
let commonApi = commonApiFun(vm);
let take_orderApi = take_orderApiFun(vm);
let settledApi = settledApiFun(vm)
let cloudApi = cloudRulesApiFun(vm)
let apiUrl = {
...commonApi,
...take_orderApi,
...settledApi,
...cloudApi
}
return apiUrl
}
module.exports = {
apiFun
}
import globalUrl from '@/common/base_url.js'
const ucenterApiUrl = globalUrl.ucenterUrl.apiUrl
let settledApiFun = function(vm){
/* 查询用户基本信息 */
let getSettleBaseInfo = async (params = {}) => await vm.$u.get(ucenterApiUrl+'/v1/settled/get-settled-info', params);
/* 获取认证区域信息 */
let getSettleArea = async (params = {}) => await vm.$u.get(ucenterApiUrl + '/v1/settled/area', params);
/* 提交用户基本信息 */
let submitSettleBaseInfo = async (params = {}) => await vm.$u.post(ucenterApiUrl+'/v1/settled/save-info', params);
/* 校验身份证正面 */
let checkSettleIDCardFront = async (params = {}) => await vm.$u.post(ucenterApiUrl+'/v1/settled/card-front', params);
/* 校验身份证反面 */
let checkSettleIDCardBack = async (params = {}) => await vm.$u.post(ucenterApiUrl+'/v1/settled/card-back', params);
/* 提交用户资料 */
let submitSettleFileInfo = async (params = {}) => await vm.$u.post(ucenterApiUrl+'/v1/settled/submit-info', params);
/* 缴纳保证金 */
let paySettleDeposit = async (params = {}) => await vm.$u.post(ucenterApiUrl + '/v1/settled/pay-deposit' , params,{'content-type': 'application/x-www-form-urlencoded'});
let getSettleDepositResult = async (params = {}) => await vm.$u.get(ucenterApiUrl+'/v1/settled/check-oid', params,{'content-type': 'application/x-www-form-urlencoded'});
/* 校验银行卡 */
// let checkSettleBank = async (params = {}) => await vm.$u.get('/wxh-site-rest/rest/register/verifyBankCard', params);
/* 校验支付宝 */
// let checkSettleAlipay = async (params = {}) => await vm.$u.get('/wxh-site-rest/rest/register/verifyAlipayAccount', params);
/* 提交认证资料 */
let checkSettleSignInfo = async (params = {}) => await vm.$u.post(ucenterApiUrl+'/v1/settled/check-sign-info', params,{'content-type': 'application/x-www-form-urlencoded'});
const settledApi = {
getSettleBaseInfo,
getSettleArea,
submitSettleBaseInfo,
checkSettleIDCardFront,
checkSettleIDCardBack,
submitSettleFileInfo,
paySettleDeposit,
getSettleDepositResult,
// checkSettleBank,
// checkSettleAlipay,
checkSettleSignInfo
}
return settledApi
}
module.exports = {
settledApiFun
}
\ No newline at end of file
import globalUrl from '@/common/base_url.js'
let take_orderApiFun = function(vm){
/* 通过unionid查询用户 */
let getSSOID = async (params = {}) => await vm.$u.get('/wxh-support-rest/rest/ssoinfo/v2/findByUnionId', params);
/* 根据ssoid获取logincode */
let getLoginCode = async (params = {}) => await vm.$u.get('/wxh-support-rest/rest/ssoinfo/v2/getLoginCode', params);
/* 通过appsecret查询用户token */
let getToken = async (params = {}) => await vm.$u.get('/wxh-support-rest/rest/worker/login/applets/', params);
const take_orderApi = {
getSSOID,
getLoginCode,
getToken
}
return take_orderApi
}
module.exports = {
take_orderApiFun
}
\ No newline at end of file
/* --------------------------- prod begin --------------------------- */
let ucenterUrl = {
apiUrl: 'https://rest-u.banshouhui.com', //php端域名请求头
xueUrl:'https://xue.banshouhui.com', //学院
banshou:'https://m.banshou.com' ,//扳手app
}
let systemUrl = {
apiUrl:'https://system.banshouhui.com', //java端域名请求头
}
/* --------------------------- prod end --------------------------- */
/* --------------------------- test begin --------------------------- */
// ucenterUrl = {
// apiUrl: 'https://rest-u.test.ibanshou.cn',
// xueUrl:'https://xue.test.ibanshou.cn', //学院
// banshou:'https://m.test.ibanshou.cn/', //扳手app
// }
// systemUrl = {
// apiUrl:'https://system.dev.banshouhui.com'
// }
/* --------------------------- test end --------------------------- */
/* --------------------------- dev begin --------------------------- */
// ucenterUrl = {
// apiUrl: 'http://rest-u.yunya.com',
// xueUrl:'http://rest-xue.yunya.com', //学院
// banshou:'https://m.test.ibanshou.cn/', //扳手app
// }
// systemUrl = {
// // apiUrl:'https://192.168.1.22'
// // apiUrl:'http://192.168.0.208:37080' //郭小青电脑
// apiUrl:'http://192.168.0.208:8192'
// }
/* --------------------------- dev end --------------------------- */
// function getCodeUrl(uri) {
// return codeUrl.apiBaseUrl + uri;
// }
function getUcenterUrl(uri) {
return ucenterUrl.apiUrl + uri;
}
export default {
ucenterUrl,
getUcenterUrl,
systemUrl
}
export const others = {
methods: {
//富文本的回调
navigate() {
},
moreClick() {
this.$set(this.moreList[1], 'text', this.detail.collected ? '已收藏' : '收藏');
this.is_more = true;
},
cancel() {
this.is_more = false;
}
}
}
// 收藏
export const collection = {
methods: {
//收藏
goCollectionCreate: async function(item, type) {
let res = await this.$u.api.goCollectionCreate({
id: item.id,
type: type
});
this.$u.toast(res.msg);
if (!res.code) {
return;
}
if (type == 'article' || type == 'question' || type == 'answer') {
item.collected = true;
}
},
//取消收藏
goCollectionDelete: async function(item, type) {
let res = await this.$u.api.goCollectionDelete({
id: item.id,
type: type
});
this.$u.toast(res.msg);
if (!res.code) {
return;
}
if (type == 'article' || type == 'question' || type == 'answer') {
item.collected = false;
}
},
},
}
// 点赞
export const vote = {
methods: {
goVoteCreate: async function(item, type, value = 'up') {
let res = await this.$u.api.goVoteCreate({
id: item.id,
type: type,
value: value
});
this.$u.toast(res.msg);
if (!res.code) {
return;
}
item.vote = value;
item.voteup = res.data.voteup;
},
goVoteDelete: async function(item, type, value = 'up') {
let res = await this.$u.api.goVoteDelete({
id: item.id,
type: type,
value: value
})
this.$u.toast(res.msg);
if (!res.code) {
return;
}
item.voteup = res.data.voteup;
item.vote = '';
},
}
}
// 关注
export const attention = {
methods: {
goAttentionCreate: async function(item, type, callback) {
let res = await this.$u.api.goAttentionCreate({
id: item.id,
type: type
})
this.$u.toast(res.msg);
if (!res.code) {
return;
}
item.followed = true;
if (typeof callback == 'function') {
callback();
};
},
goAttentionDelete: async function(item, type, callback = () => {}) {
let res = await this.$u.api.goAttentionDelete({
id: item.id,
type: type
})
this.$u.toast(res.msg);
if (!res.code) {
return;
}
item.followed = false;
if (typeof callback == 'function') {
callback();
};
},
}
}
//轮播图
export const swipers = {
methods: {
//轮播图事件
clickSwiper(index) {
let path = this.vuex_config.blockList[index].url;
if (path == '/' || !path) {
return;
}
if (path.substr(0, 1) == 'p') {
path = '/' + path;
}
this.$u.route({
url: path
})
},
}
}
//样式
export const styleRest = {
methods: {
getStyle(string) {
let underline = {};
let style = {};
let s = string.split('|');
s.forEach(item => {
if (item == 'b') {
style.fontWeight = 'bold';
}
if (item == 'u') {
underline.textDecoration = 'underline';
}
if (item.indexOf('#') != -1) {
let color = item.split(',');
style.backgroundImage = `linear-gradient(90deg,${color[0]} 0%, ${color[1]?color[1]:color[0]} 100%)`;
style.textFillColor = 'transparent'
}
})
return [underline, style];
},
setStyle(item) {
if (item.style) {
let result = this.getStyle(item.style);
item.styleArray = result[1];
item.underline = result[0];
} else {
item.styleArray = {};
item.underline = {};
}
}
}
}
//跳转标签
export const tagClick = {
methods: {
navigateTag(id, type) {
this.$u.route(`/pages/tag/detail?id=${id}&type=${type}`)
}
}
}
//登录成功之后
export const login = {
methods: {
success: async function(id,index=1) {
let res = await this.$u.api.getUserIndex({
id: id
});
if (!res.code) {
this.$u.toast(res.msg);
return;
}
this.$u.vuex('vuex_user', res.data.user);
this.$u.vuex('vuex_isAdmin', res.data.isAdmin);
// #ifdef APP-PLUS
this.$Router.back(index)
// #endif
// #ifndef APP-PLUS
let value = uni.getStorageSync('last_page');
//有上次页面,关闭所有页面,到此页面
if (value) {
this.$Router.replaceAll(Object.assign({},value))
return;
}
//默认到首页
this.$Router.replaceAll({
url: '/pages/index/index'
});
// #endif
}
}
}
// 查看品类模块(首页资料页)
export const getQuickTag = {
data(){
return {
quickTab:{
tabs:[],
tags:[]
}
}
},
methods:{
getTabTitle(){
},
getTabItem(){
},
}
}
\ No newline at end of file
import Vue from 'vue'
//这里仅示范npm安装方式的引入,其它方式引入请看最上面【安装】部分
import Router from 'uni-simple-router'
Vue.use(Router)
//初始化
const router = new Router({
APP: {
animation: {
animationType: 'pop-in',
animationDuration: 300
}
},
encodeURI:false,
routes: ROUTES //路由表
});
//全局路由前置守卫
router.beforeEach((to, from, next) => {
//去的页面是登录类型,来的页面不是登录类型,就缓存此页面,排除用户协议
if(to.path.indexOf('/login/') != -1 && from.path.indexOf('/login/') == -1 && from.path.indexOf('agreement') == -1){
uni.setStorageSync('last_page', {path:from.path,query:from.query});
}
next();
})
// 全局路由后置守卫
router.afterEach((to, from) => {
})
export default router;
module.exports = {
computed: {
theme() {
if (this.vuex_config.theme) {
let theme = this.vuex_config.theme;
let colorArr = this.$u.colorGradient(theme.bgColor, theme.color, theme.ladder);
return Object.assign({
lightColor:colorArr[theme.number] || '#f5f5f5',
faBorderColor:colorArr[theme.border] || '#f5f5f5'
},theme);
}
return {
bgColor: "#0301c5",
border: 5,
color: "#ffffff",
ladder: 10,
number: 9,
lightColor:'#f5f5f5',
faBorderColor:'#f5f5f5'
};
},
btnBgColor(vote, type) {
return (vote, type) => {
if(typeof type == 'undefined'){
return vote ? this.theme.bgColor : this.theme.lightColor;
}
return vote == type ? this.theme.bgColor : this.theme.lightColor;
};
},
btnColor(vote, type) {
return (vote, type) => {
if(typeof type == 'undefined'){
return vote? this.theme.color : this.theme.bgColor;
}
return vote == type ? this.theme.color : this.theme.bgColor;
};
}
},
}
This diff is collapsed.
//免登录接口
import util from '@/utils/util.js'
let noLoginUrl = [
'/v1/h5/settled/get-settled-info',
'/v1/h5/settled/area',
'/v1/h5/settled/save-info',
'/v1/h5/settled/card-front',
'/wxh-support-rest/rest/ssoinfo/v3/getUsersByCode',
'/wxh-support-rest/rest/ssoinfo/v3/findByMobile',
'/wxh-support-rest/rest/ssoinfo/wxapp/unify/authorization',
];
console.log('getSessionId---------')
//设置session_id
const getSessionId = function(vm) {
let session = vm.$util.getDb('session');
if (!session) {
let guid = vm.$u.guid();
vm.$util.setDb('session', guid);
return guid;
}
return session;
}
// 这里的vm,就是我们在vue文件里面的this,所以我们能在这里获取vuex的变量,比如存放在里面的token
// 同时,我们也可以在此使用getApp().globalData,如果你把token放在getApp().globalData的话,也是可以使用的
import globalUrl from '@/common/base_url.js'
const install = (Vue, vm) => {
let systemApiUrl = globalUrl.systemUrl.apiUrl
let ucenterApiUrl = globalUrl.ucenterUrl.apiUrl
function toLoginPage(){
const app = getApp()
let jumpLoginStatus
if(app && app.globalData){
jumpLoginStatus = app.globalData.jumpLoginStatus
}
if(!jumpLoginStatus){
return
}
app.globalData.jumpLoginStatus = false
vm.$u.route('/pages/login/wxlogin');
}
Vue.prototype.$u.http.setConfig({
baseUrl: systemApiUrl,
header: {
'content-type': 'application/json; charset=utf-8'
},
originalData: true
});
// 请求拦截,配置Token等参数
Vue.prototype.$u.http.interceptor.request = (config) => {
const reg = /\?\w+/;
let token = util.getToken()
if(!token && noLoginUrl.indexOf(config.url)<0){
toLoginPage()
return false
}
// // const token = app && app.globalData && app.globalData.token || ''
if(config.url.indexOf('access-token=')>=0 && config.params['access-token']){
// 给默认参数增加access-token (Java端)
if(reg.test(config.url)){
config.url += '&access-token=' + token
}else{
config.url += '?access-token=' + token
}
}
if(config.url.indexOf(ucenterApiUrl)>-1){
// php端增加header Authorization
config.header['Authorization'] = token
}
// config.header.token = vm.vuex_token || 'RTOKENe56f873b5823477fa2e15572f8fa7eb3a5fb6f7b';
config.header['x-requested-with'] = 'xmlhttprequest';
return config;
}
function getCode(res){
const result = res.data
let code
if(result.hasOwnProperty('code')){
code = result.code
}else if(res.hasOwnProperty('statusCode')){
code = res.statusCode
}
return code
}
// 响应拦截,判断状态码是否通过
Vue.prototype.$u.http.interceptor.response = (res) => {
let result = res.data;
//返回__token__,设置
if (res.header.__token__) {
vm.$u.vuex('vuex__token__', res.header.__token__);
}
const code = getCode(res)
switch (code) {
case 1:
case 0:
if(res.status ===401 || res.statusCode === 401){
toLoginPage()
return
}
return result;
case 200:
if(!result.data){
return {
data:res.data,
code:code,
message:res.message || res.errMsg || ''
};
}
return res.data;
case 401:
//需要登录的接口,当token 过期时,清掉本地token,到登录页面
// if (!token) {
// uni.navigateTo({
// url: '/pages/login/wxlogin'
// });
// return;
// }
let pages = getCurrentPages();
if((pages[pages.length - 1]).route!=='pages/login/wxlogin'){
toLoginPage()
return
}
return result;
case 403://没有权限访问
case 500://没有权限访问
uni.showToast({
icon: "none",
title: result.msg
})
return result;
default:
return {
data:res.data,
code:code,
message:res.message || res.errMsg || ''
};
vm.$u.toast('网络请求错误!');
// if (res.statusCode == 200) {
// if(!result.data){
// return {
// data:res.data,
// code:res.statusCode,
// message:res.message || res.errMsg || ''
// };
// }
// return res.data;
// } else if(res.statusCode == 401){
// vm.$u.route('/pages/login/wxlogin');
// } else{
// return {
// data:res.data,
// code:res.statusCode,
// message:res.message || res.errMsg || ''
// };
// vm.$u.toast('网络请求错误!');
// }
}
}
}
// 将返回值统一封装为直接返回对象的统一封装{data:data,code:200,message:message}形式
export default {
install
}
page{
background-color: #FAFAFA;
}
.btn-share {
background-color: transparent;
&::after {
display: none;
}
.icon-share {
display: block;
width: 48rpx;
height: 39rpx;
}
}
\ No newline at end of file
import globalUrl from '@/common/base_url.js'
function strlen(value) {
//中文、中文标点、全角字符按1长度,英文、英文符号、数字按0.5长度计算
let cnReg = /([\u4e00-\u9fa5]|[\u3000-\u303F]|[\uFF00-\uFF60])/g;
let mat = value.match(cnReg);
let length = 0;
if (mat) {
return (length = mat.length + (value.length - mat.length) * 0.5);
} else {
return (length = value.length * 0.5);
}
}
/**
*
* 判断是否在微信浏览器 true是
*/
function isWeiXinBrowser() {
// #ifdef H5
let ua = window.navigator.userAgent.toLowerCase()
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
return true
} else {
return false
}
// #endif
return false
}
/**
* 获取url参数
* @param {*} name
* @param {*}
* @returns
*/
function getQueryString(name, url) {
var url = url || window.location.href
var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i')
var r = url.substr(1).match(reg)
if (r != null) {
return r[2]
}
return null
}
//路径转化
function getPath(path) {
if (path.indexOf('?') != -1) {
let arr = path.split('?');
return arr[0];
}
return path;
}
function uniCopy({
content,
success,
error
}) {
content = typeof content === 'string' ? content : content.toString() // 复制内容,必须字符串,数字需要转换为字符串
/**
* 小程序端 和 app端的复制逻辑
*/
//#ifndef H5
uni.setClipboardData({
data: content,
success: function() {
success("复制成功~")
},
fail: function() {
error("复制失败~")
}
});
//#endif
/**
* H5端的复制逻辑
*/
// #ifdef H5
if (!document.queryCommandSupported('copy')) { //为了兼容有些浏览器 queryCommandSupported 的判断
// 不支持
error('浏览器不支持')
}
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") // 执行浏览器复制命令
if (result) {
success("复制成功~")
} else {
error("复制失败,请检查h5中调用该方法的方式,是不是用户点击的方式调用的,如果不是请改为用户点击的方式触发该方法,因为h5中安全性,不能js直接调用!")
}
textarea.remove()
// #endif
}
function getNavHeight(height=0,platform=''){
// 转换字符数值为真正的数值
// #ifdef H5
return 0;
// #endif
// #ifdef APP-PLUS
return height ? height : 44;
// #endif
// #ifdef MP
// 小程序特别处理,让导航栏高度 = 胶囊高度 + 两倍胶囊顶部与状态栏底部的距离之差(相当于同时获得了导航栏底部与胶囊底部的距离)
// 此方法有缺陷,暂不用(会导致少了几个px),采用直接固定值的方式
// return menuButtonInfo.height + (menuButtonInfo.top - this.statusBarHeight) * 2;//导航高度
let h = platform == 'ios' ? 44 : 48;
return height ? height : h;
// #endif
}
//设置缓存
function setDb(name,value,db_time=7200){
let time = (new Date()).getTime();
let data = {
value:value,
time:time,
db_time:db_time
}
uni.setStorageSync(name, data);
}
//获取缓存
function getDb(name){
try{
let res = uni.getStorageSync(name);
if(!res){
return '';
}
let time = (new Date()).getTime();
if((time-res.time)/1000>=res.db_time){
uni.removeStorageSync(name);
return '';
}
return res.value;
}catch(e){
//TODO handle the exception
return '';
}
}
//获取缓存
function getFileUrlPrefix(){
return globalUrl.askUrl.fileUrl;
}
// 获取base_url
function getUcenterUrl(url) {
return globalUrl.getUcenterUrl(url);
}
// 获取静态文件路径
function getStaticUrl(url) {
return globalUrl.askUrl.apiUrl + '/assets/addons/ask/img/uniapp/' + url;
}
// 获取动态文件路径
function getDynamicUrl(url) {
return globalUrl.askUrl.fileUrl + url;
}
function getAskUrl(url) {
return globalUrl.askUrl.apiUrl + url;
}
// 获取文件类型
function getFileType(fileUrl){
let fileArr = ['doc','ppt','word','xls'];
let fileObj = {
doc:'doc',
docx:'doc',
xls:'xls',
xlsx:'xls',
ppt:'ppt',
pptx:'ppt',
pdf:'pdf',
}
// doc docx xls xlsx ppt pptx pdf
let reg = /\.[^\.]+$/;
let fileType = reg.exec(fileUrl);
let keyUrl = 'word';
keyUrl = fileObj[fileType] || keyUrl;
keyUrl = getStaticUrl('file/'+keyUrl+'.png')
return keyUrl
}
// 处理多次点击方法
function dianji(fn) {
let that = this;
if (that.onoff) {
that.onoff = false;
fn();
setTimeout(function () {
that.onoff = true;
}, 1500)
}
}
//时间戳转换成日期时间
function js_date_time(unixtime) {
var date = new Date(unixtime);
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? ('0' + m) : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
var h = date.getHours();
h = h < 10 ? ('0' + h) : h;
var minute = date.getMinutes();
var second = date.getSeconds();
minute = minute < 10 ? ('0' + minute) : minute;
second = second < 10 ? ('0' + second) : second;
// return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;//年月日时分秒
return y + '-' + m + '-' + d + ' ' + h + ':' + minute;
}
function randStr(len) {
const randomChars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
let result = '';
for (let i=0; i<len; i++) {
result += randomChars.charAt(Math.ceil(Math.random()*100000000) % randomChars.length);
}
return result;
}
export {
strlen,
isWeiXinBrowser,
getQueryString,
getPath,
uniCopy,
getNavHeight,
setDb,
getDb,
getFileUrlPrefix,
getUcenterUrl,
getFileType,
getStaticUrl,
getDynamicUrl,
getAskUrl,
dianji,
js_date_time,
randStr
}
...@@ -9,4 +9,12 @@ App.mpType = 'app' ...@@ -9,4 +9,12 @@ App.mpType = 'app'
const app = new Vue({ const app = new Vue({
...App ...App
}) })
// http拦截器,将此部分放在new Vue()和app.$mount()之间,才能App.vue中正常使用
import httpInterceptor from '@src/common/http.interceptor.js'
Vue.use(httpInterceptor, app)
// http接口API抽离,免于写url或者一些固定的参数
import httpApi from '@src/common/http.api.js'
Vue.use(httpApi, app)
app.$mount() app.$mount()
import {
argo
} from '@/config';
// #ifdef MP-WEIXIN
import AnalysysAgent from '@/include/libs/analysys_paas/mp-weixin/AnalysysAgent_WX_SDK.custom.es6.min.js'
if (AnalysysAgent) {
AnalysysAgent.identify(AnalysysAgent.getDistinctId());
AnalysysAgent.appkey = argo.appkey //设置您的APPKEY
AnalysysAgent.debugMode = argo.debugMode
AnalysysAgent.uploadURL = argo.uploadURL;
// AnalysysAgent.autoShare = true
AnalysysAgent.allowTimeCheck = true
AnalysysAgent.autoTrack = true
AnalysysAgent.registerSuperProperty("platform","take-order");
}
// #endif
export {
AnalysysAgent,
}
const app = getApp();
// 小程序登录
function appLogin() {
return new Promise(function (resolve, reject) {
uni.login({
success(res) {
if (!res.code) {
uni.hideLoading();
uni.showModal({
content: res.errMsg,
showCancel: false
});
}
resolve(res);
},
fail() {
uni.hideLoading();
uni.showModal({
content: '小程序登录失败',
showCancel: false
});
reject();
}
});
});
}
// 小程序授权
function authorization(data) {
return new Promise(async function (resolve, reject) {
const res = await app.$vm.$u.api.loginWechatAuth(data)
if (res) {
if (res.code == 200 && res.data) {
app.setUserData(res.data)
resolve(res);
} else {
reject(res);
}
} else {
uni.showModal({
title: '请求失败',
content: res.message
});
}
});
}
// 小程序注册
function signup(data) {
return new Promise(async function (resolve, reject) {
const res = await app.$vm.$u.api.loginWechatAuth(data)
if (res) {
if (res.code == 200 && res.data) {
app.setUserData(res.data)
resolve(res);
} else {
uni.showModal({
title: '用户授权失败',
content: res.message,
showCancel: false
});
reject(res);
}
} else {
uni.showModal({
title: '请求失败',
content: res.message
});
}
});
}
module.exports = {
appLogin: appLogin,
authorization: authorization,
signup: signup
}
\ No newline at end of file
var t = function(t) {
return (t = t.toString())[1] ? t : "0" + t;
};
const getToken = function(){
const app = getApp()
let token = app && app.globalData && app.globalData.token || ''
if(!token){
token = uni.getStorageSync('token')
}
return token
}
const setToken = function(token){
const app = getApp()
uni.setStorageSync('token',token)
if(app && app.globalData){
app.globalData.token = token
}
}
const getOpenid = function(){
const app = getApp()
let openid = app && app.globalData && app.globalData.openid || ''
if(!openid){
openid = uni.getStorageSync('openid')
}
return openid
}
const setOpenid = function(openid){
const app = getApp()
uni.setStorageSync('openid',openid)
if(app && app.globalData){
app.globalData.openid = openid
}
}
module.exports = {
formatTime: function(n) {
var e = n.getFullYear(), r = n.getMonth() + 1, o = n.getDate(), i = n.getHours(), u = n.getMinutes(), a = n.getSeconds();
return [ e, r, o ].map(t).join("-") + " " + [ i, u, a ].map(t).join(":");
},
throttle: function(t, n) {
null != n && null != n || (n = 1500);
var e = null;
return function() {
var r = +new Date();
console.log(r + "," + e + "," + new Date()), (r - e > n || !e) && (t(), e = r);
};
},
formatLonLat: function(t, n) {
if (void 0 === t || "" == t) return "";
if (t += "", 0 == n) return parseFloat(t).toFixed(6);
var e = t.indexOf("."), r = e < 0 ? t : t.substring(0, e), o = 0, i = 0;
return e > 0 && (o = 60 * (o = "0" + t.substring(e)) + "", 2 == n ? (e = o.indexOf(".")) > 0 && (i = "0" + o.substring(e),
o = o.substring(0, e), e = (i = 60 * i + "").indexOf("."), i = i.substring(0, e + 4),
i = parseFloat(i).toFixed(0)) : 1 == n && (o = parseFloat(o).toFixed(6))), 2 == n ? r + "°" + o + "′" + i + "″" : 1 == n ? r + "°" + o + "′" : void 0;
},
getToken,
setToken,
getOpenid,
setOpenid,
};
\ No newline at end of file
"use strict";
// 设置vue.config 相关配置
const path = require("path");
function resolve(dir) {
return path.join(__dirname, dir);
}
const name = "自营平台";
module.exports = {
lintOnSave: process.env.NODE_ENV === "development",
// 路径别名
configureWebpack: {
name: name,
resolve: {
alias: {
"@src": resolve("src"),
"@i": resolve("src/api"),
"@c": resolve("src/components"),
"@a": resolve("src/assets"),
"@s": resolve("src/styles"),
"@u": resolve("src/utils"),
"@v": resolve("src/pages"),
},
},
},
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment