JLBA202505130001_关于吉林银行新建AI智能培训系统的需求_继续开发语音按钮
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
import { ErrorCode, ShowErrorTipOptions } from './touch-btn.types';
|
||||
import { get_base_url } from '@/api/request.js';
|
||||
import { getToken } from '@/common/common.js';
|
||||
import { getToken, getPhoneEnvBool } from '@/common/common.js';
|
||||
const IsAndEnv = getPhoneEnvBool('AND')
|
||||
|
||||
// const url = '/trapractice/voiceCallSocket/voiceCall'
|
||||
// const url = '/traapp/voiceTransSocket/open';
|
||||
const url = '/traapp/voiceAiModelSocket/open';
|
||||
// const url = '/traapp/asrAiModelSocket/open';
|
||||
const url = '/traapp/asrAiModelSocket/open';
|
||||
const _baseUrl = get_base_url(url).split('http').join('ws');
|
||||
// const _baseUrl = '';
|
||||
export const wsUrl = _baseUrl + url + '?summary=' + getToken();
|
||||
const windowInfo = uni.getWindowInfo();
|
||||
// 安全区域信息
|
||||
@@ -17,58 +19,48 @@ export const bottomAreaTopBoundary = safeArea.bottom - btnHeight;
|
||||
// 屏幕横向分割线
|
||||
export const horizontalSplitX = safeArea.right / 2;
|
||||
|
||||
|
||||
// 假设你在 Vue3 环境中,ws、wsStatus 是 ref 响应式变量
|
||||
import { ref } from 'vue';
|
||||
|
||||
const ws = ref(null);
|
||||
const wsStatus = ref(false);
|
||||
|
||||
/**
|
||||
* 封装WebSocket连接为Promise
|
||||
* @param {string} wsUrl - WebSocket连接地址
|
||||
* @returns {Promise<UniApp.SocketTask>} 成功时返回WS实例,失败时reject错误信息
|
||||
*/
|
||||
export const initWebSocket = (wsUrl: string): Promise<UniApp.SocketTask> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
// 1. 创建WS连接
|
||||
const ws = uni.connectSocket({
|
||||
url: wsUrl,
|
||||
fail: (err) => {
|
||||
console.error('WS连接创建失败:', err);
|
||||
// 连接创建失败直接reject
|
||||
reject(new Error(`WS连接创建失败:${err.errMsg || err.message}`));
|
||||
},
|
||||
success: () => {
|
||||
console.log('WS连接创建请求已发送');
|
||||
}
|
||||
});
|
||||
export const initWebSocket = (wsUrl : string) : Promise<UniApp.SocketTask> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
// 1. 创建WS连接
|
||||
const ws = uni.connectSocket({
|
||||
url: wsUrl,
|
||||
fail: (err) => {
|
||||
console.error('WS连接创建失败:', err);
|
||||
// 连接创建失败直接reject
|
||||
reject(new Error(`WS连接创建失败:${err.errMsg || err.message}`));
|
||||
},
|
||||
success: () => {
|
||||
}
|
||||
});
|
||||
|
||||
// 2. 监听连接成功(核心:连接成功时resolve,返回WS实例)
|
||||
const onOpenHandler = (res) => {
|
||||
resolve(ws);
|
||||
};
|
||||
|
||||
// 2. 监听连接成功(核心:连接成功时resolve,返回WS实例)
|
||||
const onOpenHandler = (res) => {
|
||||
console.log('ws已连接', res);
|
||||
// resolve返回WS实例
|
||||
resolve(ws);
|
||||
};
|
||||
// 4. 监听连接错误(出错时reject)
|
||||
const onErrorHandler = (err) => {
|
||||
console.log('WS连接错误', err);
|
||||
// reject返回错误信息
|
||||
reject(new Error(`WS连接错误:${err.errMsg || err.message}`));
|
||||
};
|
||||
|
||||
// 4. 监听连接错误(出错时reject)
|
||||
const onErrorHandler = (err) => {
|
||||
console.log('WS连接错误', err);
|
||||
// reject返回错误信息
|
||||
reject(new Error(`WS连接错误:${err.errMsg || err.message}`));
|
||||
};
|
||||
|
||||
// 5. 监听连接关闭(如果在open前关闭,也reject)
|
||||
const onCloseHandler = (err) => {
|
||||
console.log('WS连接已关闭', err);
|
||||
// 连接未成功就关闭,执行reject
|
||||
reject(new Error(`WS连接已关闭:${err.errMsg || err.message}`));
|
||||
};
|
||||
// 绑定监听事件
|
||||
ws.onOpen(onOpenHandler);
|
||||
ws.onError(onErrorHandler);
|
||||
ws.onClose(onCloseHandler);
|
||||
});
|
||||
// 5. 监听连接关闭(如果在open前关闭,也reject)
|
||||
const onCloseHandler = (err) => {
|
||||
console.log('WS连接已关闭', err);
|
||||
// 连接未成功就关闭,执行reject
|
||||
reject(new Error(`WS连接已关闭:${err.errMsg || err.message}`));
|
||||
};
|
||||
// 绑定监听事件
|
||||
ws.onOpen(onOpenHandler);
|
||||
ws.onError(onErrorHandler);
|
||||
ws.onClose(onCloseHandler);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -78,19 +70,48 @@ export const initWebSocket = (wsUrl: string): Promise<UniApp.SocketTask> => {
|
||||
* @returns 固定返回false(保持原有返回值类型)
|
||||
*/
|
||||
export function showErrorTip(
|
||||
errorCode: ErrorCode,
|
||||
options: ShowErrorTipOptions = {}
|
||||
): boolean {
|
||||
// 解构可选参数,设置默认延迟时间为200ms
|
||||
const { delayTime = 200 } = options;
|
||||
errorCode : ErrorCode,
|
||||
options : ShowErrorTipOptions = {}
|
||||
) : boolean {
|
||||
// 解构可选参数,设置默认延迟时间为200ms
|
||||
const { delayTime = 200 } = options;
|
||||
|
||||
// 延迟显示对应的错误提示
|
||||
setTimeout(() => {
|
||||
uni.showToast({
|
||||
title: errorCode, // 直接使用枚举值作为提示文本
|
||||
icon: 'none'
|
||||
});
|
||||
}, delayTime); // 使用传入的延迟时间(或默认200ms)
|
||||
// 延迟显示对应的错误提示
|
||||
setTimeout(() => {
|
||||
uni.showToast({
|
||||
title: errorCode, // 直接使用枚举值作为提示文本
|
||||
icon: 'none'
|
||||
});
|
||||
}, delayTime); // 使用传入的延迟时间(或默认200ms)
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 跨平台震动反馈封装(适配安卓/iOS)轻震
|
||||
* @returns {Promise<boolean>} 是否成功触发震动
|
||||
*/
|
||||
export const vibrateLight = () : void => {
|
||||
// #ifdef APP-PLUS
|
||||
try {
|
||||
if (IsAndEnv) {
|
||||
uni.vibrateShort({
|
||||
success: function () {
|
||||
console.log('success');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
let UIImpactFeedbackGenerator = plus.ios.importClass(
|
||||
'UIImpactFeedbackGenerator'
|
||||
)
|
||||
let impact = new UIImpactFeedbackGenerator()
|
||||
impact.prepare()
|
||||
impact.init(1)
|
||||
impact.impactOccurred()
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('震动功能执行异常:', error);
|
||||
}
|
||||
// #endif
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user