初始化产品库

This commit is contained in:
aixianling
2021-11-15 10:29:05 +08:00
parent 8f735a4ffe
commit 5440b43b9c
306 changed files with 54508 additions and 3 deletions

61
src/common/axios.js Normal file
View File

@@ -0,0 +1,61 @@
import axios from 'axios'
import store from '../store'
import util from "./util";
let instance = axios.create({
timeout: 600000,
withCredentials: true,
})
instance.interceptors.request.use(config => {
store.commit('initWaterMarker')
if (!config.withoutToken && store.state.token) {
config.headers["Authorization"] = store.state.token
}
return config
}, err => {
console.error(err)
})
instance.interceptors.response.use(res => {
if (res.data) {
if (res.data.code) {
if (res.data.code == 0) {
return res.data
} else if (res.data.code == 401) {
store.commit("logout");
let reg = new RegExp('.*code=(.+$)', "g")
if (reg.test(location.search)) {
let code = location.search.replace(reg, '$1')
store.commit('bindAccount', {
code, then: res => {
store.commit("login", [res?.token_type, res?.access_token].join(" ").trim())
location.href = location.href.replace('code=' + code, '')
}
})
} else util.confirm("用户信息验证失效,是否要重新登录?").then(() => {
store.commit('redirectCode')
// let app = store.state.apps?.find(e => location.href.indexOf(e.path) > -1)
// const goto = path => {
// location.href = location.origin + "/pages/loading?" + path
// }
// if (app) {
// goto(location.search + `&app=${app.key}`)
// } else {
// goto(location.search + `#error`)
// }
}).catch(() => 0)
} else {
console.error(res.data.msg || "请求失败!")
return Promise.reject(res.data.msg)
}
} else {
return res.data
}
} else {
console.error("服务器异常,请联系管理员!")
}
}, err => {
console.error(err)
})
export default instance

50
src/common/dict.js Normal file
View File

@@ -0,0 +1,50 @@
import request from "./axios";
import store from "../store";
/**
* 封装字典工具类
*/
const $dict = {
vueStore: null,
url: "/admin/dictionary/queryValsByCodeList",
setUrl(v) {
this.url = v
},
load(...code) {
if (!this.vueStore) this.vueStore = store
return request.post(this.url, null, {
params: {
codeList: code.join(',')
}
}).then((res) => {
this.vueStore.commit("setDicts", res.data)
})
},
getDict(key) {
let dict = this.vueStore.getters.getDict(key)
return dict ? dict.values : []
},
getValue(key, label) {
let dict = this.vueStore.getters.getDict(key)
if (dict) {
let item = dict.values.find(v => v.dictName == label)
return item ? item.dictValue : label
} else return label
},
getLabel(key, value) {
let dict = this.vueStore.getters.getDict(key)
if (dict) {
let item = dict.values.find(v => v.dictValue == value)
return item ? item.dictName : value
} else return value
},
getColor(key, value) {
let dict = this.vueStore.getters.getDict(key)
if (dict) {
let item = dict.values.find(v => v.dictValue == value)
return item ? item.dictColor : value
} else return value
},
}
export default $dict

712
src/common/iconfont.css Normal file

File diff suppressed because one or more lines are too long

245
src/common/permission.js Normal file
View File

@@ -0,0 +1,245 @@
/// null = 未请求1 = 已允许0 = 拒绝|受限, 2 = 系统未开启
var isIOS
function album() {
var result = 0;
var PHPhotoLibrary = plus.ios.import("PHPhotoLibrary");
var authStatus = PHPhotoLibrary.authorizationStatus();
if (authStatus === 0) {
result = null;
} else if (authStatus == 3) {
result = 1;
} else {
result = 0;
}
plus.ios.deleteObject(PHPhotoLibrary);
return result;
}
function camera() {
var result = 0;
var AVCaptureDevice = plus.ios.import("AVCaptureDevice");
var authStatus = AVCaptureDevice.authorizationStatusForMediaType('vide');
if (authStatus === 0) {
result = null;
} else if (authStatus == 3) {
result = 1;
} else {
result = 0;
}
plus.ios.deleteObject(AVCaptureDevice);
return result;
}
function location() {
var result = 0;
var cllocationManger = plus.ios.import("CLLocationManager");
var enable = cllocationManger.locationServicesEnabled();
var status = cllocationManger.authorizationStatus();
if (!enable) {
result = 2;
} else if (status === 0) {
result = null;
} else if (status === 3 || status === 4) {
result = 1;
} else {
result = 0;
}
plus.ios.deleteObject(cllocationManger);
return result;
}
function push() {
var result = 0;
var UIApplication = plus.ios.import("UIApplication");
var app = UIApplication.sharedApplication();
var enabledTypes = 0;
if (app.currentUserNotificationSettings) {
var settings = app.currentUserNotificationSettings();
enabledTypes = settings.plusGetAttribute("types");
if (enabledTypes == 0) {
result = 0;
console.log("推送权限没有开启");
} else {
result = 1;
console.log("已经开启推送功能!")
}
plus.ios.deleteObject(settings);
} else {
enabledTypes = app.enabledRemoteNotificationTypes();
if (enabledTypes == 0) {
result = 3;
console.log("推送权限没有开启!");
} else {
result = 4;
console.log("已经开启推送功能!")
}
}
plus.ios.deleteObject(app);
plus.ios.deleteObject(UIApplication);
return result;
}
function contact() {
var result = 0;
var CNContactStore = plus.ios.import("CNContactStore");
var cnAuthStatus = CNContactStore.authorizationStatusForEntityType(0);
if (cnAuthStatus === 0) {
result = null;
} else if (cnAuthStatus == 3) {
result = 1;
} else {
result = 0;
}
plus.ios.deleteObject(CNContactStore);
return result;
}
function record() {
var result = null;
var avaudiosession = plus.ios.import("AVAudioSession");
var avaudio = avaudiosession.sharedInstance();
var status = avaudio.recordPermission();
console.log("permissionStatus:" + status);
if (status === 1970168948) {
result = null;
} else if (status === 1735552628) {
result = 1;
} else {
result = 0;
}
plus.ios.deleteObject(avaudiosession);
return result;
}
function calendar() {
var result = null;
var EKEventStore = plus.ios.import("EKEventStore");
var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(0);
if (ekAuthStatus == 3) {
result = 1;
console.log("日历权限已经开启");
} else {
console.log("日历权限没有开启");
}
plus.ios.deleteObject(EKEventStore);
return result;
}
function memo() {
var result = null;
var EKEventStore = plus.ios.import("EKEventStore");
var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(1);
if (ekAuthStatus == 3) {
result = 1;
console.log("备忘录权限已经开启");
} else {
console.log("备忘录权限没有开启");
}
plus.ios.deleteObject(EKEventStore);
return result;
}
function requestIOS(permissionID) {
return new Promise((resolve, reject) => {
switch (permissionID) {
case "push":
resolve(push());
break;
case "location":
resolve(location());
break;
case "record":
resolve(record());
break;
case "camera":
resolve(camera());
break;
case "album":
resolve(album());
break;
case "contact":
resolve(contact());
break;
case "calendar":
resolve(calendar());
break;
case "memo":
resolve(memo());
break;
default:
resolve(0);
break;
}
});
}
function requestAndroid(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);
},
function(error) {
console.log('result error: ' + error.message)
resolve({
code: error.code,
message: error.message
});
}
);
});
}
function gotoAppPermissionSetting() {
if (permission.isIOS) {
var UIApplication = plus.ios.import("UIApplication");
var application2 = UIApplication.sharedApplication();
var NSURL2 = plus.ios.import("NSURL");
var setting2 = NSURL2.URLWithString("app-settings:");
application2.openURL(setting2);
plus.ios.deleteObject(setting2);
plus.ios.deleteObject(NSURL2);
plus.ios.deleteObject(application2);
} else {
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);
}
}
const permission = {
get isIOS(){
return typeof isIOS === 'boolean' ? isIOS : (isIOS = uni.getSystemInfoSync().platform === 'ios')
},
requestIOS: requestIOS,
requestAndroid: requestAndroid,
gotoAppSetting: gotoAppPermissionSetting
}
module.exports = permission

59
src/common/util.js Normal file
View File

@@ -0,0 +1,59 @@
import dict from "./dict";
import toast from '../uview/libs/function/toast'
import addUnit from '../uview/libs/function/addUnit'
import $parent from '../uview/libs/function/$parent'
import guid from '../uview/libs/function/guid'
import deepClone from '../uview/libs/function/deepClone'
import debounce from '../uview/libs/function/debounce'
import throttle from '../uview/libs/function/throttle'
import trim from '../uview/libs/function/trim'
import {sys} from '../uview/libs/function/sys'
import test from '../uview/libs/function/test'
import config from '../uview/libs/config/config'
import zIndex from '../uview/libs/config/zIndex'
import $moment from 'dayjs'
const confirm = (content, title, config) => {
let ops = {content}
if (typeof title == 'object') {
ops = {...ops, ...title}
} else ops = {...ops, title: title || "提示"}
return new Promise((resolve, reject) => {
uni.showModal({
...ops, ...config, success: res => {
if (res?.confirm) {
resolve()
} else if (res?.cancel) {
reject()
}
}
})
})
}
/**
* 获取年龄
* @param code
*/
const calcAge = (code) => {
let birthday
if (typeof code == 'string' && code.length == 18) {
birthday = $moment(code.substring(6, 14), 'YYYYMMDD')
} else if (typeof code == 'object') {
birthday = code
}
return Math.ceil($moment().year() - $moment(birthday).year())
}
const u = {toast, $parent, addUnit, guid, config, zIndex, deepClone, throttle, debounce, trim, test, sys}
export default {
dict,
confirm,
calcAge,
u,
dateFormat: (time, format) => {
return $moment(time).format(format || 'YYYY-MM-DD').replace("Invalid Date", "")
}
}