first commit

This commit is contained in:
PC-202306242200\Administrator
2026-03-31 10:53:43 +08:00
commit f529129c93
770 changed files with 86065 additions and 0 deletions

108
utils/fun.js Normal file
View File

@@ -0,0 +1,108 @@
import {
getOssUploadParams
} from "@/api/api.js"
//预览图片
export const lookImg = (e) => {
uni.previewImage({
urls: e
});
}
//拨打电话
export const call = (e) => uni.makePhoneCall({
phoneNumber: e
});
// 剪贴板
export const copy = (e) => uni.setClipboardData({
data: e,
success: function() {
console.log('success');
}
});;
//获取超链接参数
export const urlQuery = (e) => {
let search = e
search = search.split('?')[1];
const pairs = search ? search.split('&') : [];
const query = {};
for (let i = 0; i < pairs.length; ++i) {
const [key, value] = pairs[i].split('=');
query[key] = query[key] || decodeURIComponent(value);
}
return query
};
export const uploadFiles = (urls) => {
return new Promise(async (resolve, reject) => {
let res = await getOssUploadParams()
const fd = {
policy: res.policy,
OSSAccessKeyId: res.accessId,
success_action_status: 200,
signature: res.signature,
key: res.dir + Date.now() + Math.floor(100000 + Math.random() *
900000) + '.' +
urls.substring(urls.lastIndexOf(".") + 1),
};
uni.uploadFile({
url: res.host, // Example, not a real endpoint
filePath: urls,
header: {
"content-type": 'multipart/form-data'
},
name: 'file',
formData: fd,
success: (_res) => {
resolve(res.host + '/' + fd.key);
},
fail: (err) => {
console.log(err);
reject(err);
}
});
console.log();
});
}
export function getUrlParam(url, paramName) {
// 正则表达式模式用于匹配URL中的参数部分。正则表达式的含义是匹配不包含 ?、&、= 的字符作为参数名,之后是等号和不包含 & 的字符作为参数值
let pattern = /([^?&=]+)=([^&]+)/g;
let params = {};
// match用于存储正则匹配的结果
let match;
// while 循环和正则表达式 exec 方法来迭代匹配URL中的参数
while ((match = pattern.exec(url)) !== null) {
// 在字符串url中循环匹配pattern并对每个匹配项进行解码操作将解码后的键和值分别存储在key和value变量中
let key = decodeURIComponent(match[1]);
let value = decodeURIComponent(match[2]);
if (params[key]) {
if (Array.isArray(params[key])) {
params[key].push(value);
} else {
params[key] = [params[key], value];
}
} else {
// 参数名在 params 对象中不存在,将该参数名和对应的值添加到 params 对象中
params[key] = value;
}
}
if (!paramName) {
// 没有传入参数名称, 返回含有所有参数的对象params
return params;
} else {
if (params[paramName]) {
return params[paramName];
} else {
return '';
}
}
}

149
utils/sok.js Normal file
View File

@@ -0,0 +1,149 @@
import store from '@/store/index.js';
import config from '@/config'
export const init = () => {
if(!uni.getStorageSync('token')){
console.log('sok-未登录');
return
}else{
console.log('sok-登录');
}
var timeout = 10000;
var timeoutObj = null;
var timeAnt = 0
setInterval(() => {
timeAnt++
}, 1000)
openConnection()
function checkOpenSocket() {
uni.sendSocketMessage({
data: 'ping',
success: res => {
timeAnt = 0
return;
},
fail: err => {
// 未连接打开websocket连接
openConnection();
}
});
}
function openConnection() {
// 打开连接
// uni.closeSocket(); // 确保已经关闭后再重新打开
uni.connectSocket({
url: `wss://${config.sok}/ws/deviceUpMessage?token=${uni.getStorageSync('token')}`,
success(res) {
// console.log('连接成功 connectSocket=', res);
},
fail(err) {
// console.log('连接失败 connectSocket=', err);
}
});
uni.onSocketOpen(res => {
checkOpenSocket()
// console.log('连接成功');
});
uni.onSocketError(err => {
// console.log('连接失败');
});
onSocketMessage(); // 打开成功监听服务器返回的消息
}
// 打开成功监听服务器返回的消息
function onSocketMessage() {
// 消息
timeout = 10000;
timeoutObj = null;
uni.onSocketMessage(res => {
timeAnt = 0
getSocketMsg(res.data); // 监听到有新服务器消息
});
}
// 监听到有新服器消息
function getSocketMsg(data) {
console.log(data);
var obj;
let pages = getCurrentPages() //获取加载的页面
let currentPage = pages[pages.length - 1] //获取当前页面的对象
let url = currentPage.route //当前页面url
if (data !== 'pong') {
store.commit('setSokStatus', 1);
uni.hideLoading()
obj = JSON.parse(data)
store.commit('setCommand', obj.command);
store.commit('setDataObj', obj);
// 插枪状态
console.log(obj);
if (obj.insertStatus || obj.insertStatus === 0) {
store.commit('setInsertStatus', obj.insertStatus);
}
if (obj.command == 'startResult' && obj.result == '-1') {
uni.showModal({
title: '提示',
content: '启动失败,请重试',
showCancel: false,
confirmText: "确认",
success: () => {}
})
}
if (obj.command == 'startResult' && obj.result == '-2') {
uni.showModal({
title: '提示',
content: '启动超时,请重试',
showCancel: false,
confirmText: "确认",
success: () => {}
})
}
if (obj.command == 'startResult' && obj.result == '01') {
if (url != 'pageOrder/recharge/recharge') {
uni.navigateTo({
url: `/pageOrder/recharge/recharge?transactionNo=${obj.transactionNo}&type=order`
});
}
}
if (obj.command == 'transactionResult') {
if (url == 'pageOrder/recharge/recharge') {
uni.navigateBack()
}
}
}else{
// store.commit('setSokStatus', 0);
}
timeAnt = 0
reset(); // 检测心跳reset,防止长时间连接导致连接关闭
}
// 检测心跳reset
function reset() {
clearInterval(timeoutObj);
start(); // 启动心跳
}
// 启动心跳 start
function start() {
timeoutObj = setInterval(function() {
if (timeAnt > 10) {
// console.log('连接失败重新连接....');
openConnection();
return
}
uni.sendSocketMessage({
data: 'ping',
success: res => {
// console.log(res);
},
fail: err => {
// console.log('连接失败重新连接....');
openConnection();
}
});
}, timeout);
}
}