|
@@ -0,0 +1,133 @@
|
|
|
+import { state } from '@/state';
|
|
|
+import dayjs from 'dayjs';
|
|
|
+import request from '@/helpers/request';
|
|
|
+
|
|
|
+/** 错误信息列表 */
|
|
|
+export const api_sysExceptionLogSave = (params: any): Promise<any> => {
|
|
|
+ return request.post('/edu-app/sysExceptionLog/save', {
|
|
|
+ data: params
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+type uploadType = {
|
|
|
+ clientType?: string;
|
|
|
+ phone?: string | undefined | null;
|
|
|
+ userAgent?: string;
|
|
|
+ appType?: string;
|
|
|
+ content?: string;
|
|
|
+ exceptionType?: string;
|
|
|
+ exceptionTime?: string;
|
|
|
+ deviceType?: string | null;
|
|
|
+ deviceVersion?: string | null
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 页面有报错时上传错误日志
|
|
|
+ * @params
|
|
|
+ */
|
|
|
+export default function useErrorLog() {
|
|
|
+ const _whiteBlanks = [
|
|
|
+ '/student-register',
|
|
|
+ '/register-new',
|
|
|
+ '/school-register',
|
|
|
+ '/teaher-register',
|
|
|
+ '/instrumentDetail',
|
|
|
+ '/famousMusicDetail',
|
|
|
+ '/musicianDetail',
|
|
|
+ '/tempo-practice',
|
|
|
+ '/order-detail',
|
|
|
+ '/member-center',
|
|
|
+ '/unit-detail',
|
|
|
+ '/practice-mode',
|
|
|
+ '/error-question-mode',
|
|
|
+ '/examination-mode',
|
|
|
+ '/courseware-list',
|
|
|
+ '/co-ai',
|
|
|
+ '/co-ai-detail',
|
|
|
+ '/courseware-play',
|
|
|
+ '/creation'
|
|
|
+ ];
|
|
|
+
|
|
|
+ let _defaultParams = {
|
|
|
+ clientType: 'STUDENT',
|
|
|
+ phone: '',
|
|
|
+ userAgent: '',
|
|
|
+ appType: 'WEB',
|
|
|
+ content: '',
|
|
|
+ exceptionType: 'ERROR',
|
|
|
+ exceptionTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
|
|
+ deviceType: null,
|
|
|
+ deviceVersion: null
|
|
|
+ }
|
|
|
+
|
|
|
+ const _uploadErrorLog = async (event: any) => {
|
|
|
+ try {
|
|
|
+ state.user.data.phone;
|
|
|
+
|
|
|
+ /*
|
|
|
+ 日志上报:1.手机号、应用端 iOS|安卓 App类型(老师端|学生端|web)、App版本、系统信息(系统版本|web userAgent)、错误信息(什么位置出现,错误内容) 错误时间 上报类型(错误、埋点)
|
|
|
+ Phone、 type 、content
|
|
|
+ 手机号|上报类型 (error、record)|content 内容jsonString (应用端 iOS|安卓 App类型(老师端|学生端|web)、App版本、系统信息(系统版本|web userAgent)、错误信息(什么位置出现,错误内容) 错误时间)
|
|
|
+
|
|
|
+ 手机号 |上报类型 |业务平台|应用端(iOS|安卓)|
|
|
|
+ */
|
|
|
+ const href = window.location.href;
|
|
|
+ const index = _whiteBlanks.findIndex(
|
|
|
+ (item: string) => href.indexOf(item) !== -1
|
|
|
+ );
|
|
|
+
|
|
|
+ const whiteIp = ['kt.colexiu.com', 'test.kt.colexiu.com', 'dev.kt.colexiu.com']
|
|
|
+ console.log(window.location.hash, index, 'errorLog')
|
|
|
+ if (!whiteIp.includes(window.location.host)) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!(window.location.hash === '#/' || index !== -1)) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 错误信息
|
|
|
+ // 资源加载失败,可以在这里处理错误
|
|
|
+ const contentError = `Error message: ${event.target.tagName || ''};${
|
|
|
+ event.target.src || event.target.href || ''
|
|
|
+ };lineno: ${event.lineno || ''};message: ${
|
|
|
+ event.message || ''
|
|
|
+ };filename: ${event.filename || ''};fileUrl: ${
|
|
|
+ window.location.href
|
|
|
+ }`;
|
|
|
+ // }
|
|
|
+
|
|
|
+ const params = [
|
|
|
+ {
|
|
|
+ ..._defaultParams,
|
|
|
+ phone: state.user.data?.phone,
|
|
|
+ userAgent: window.navigator.userAgent,
|
|
|
+ content: contentError,
|
|
|
+ exceptionTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
|
|
+ }
|
|
|
+ ];
|
|
|
+ // console.log(params)
|
|
|
+ await api_sysExceptionLogSave(params);
|
|
|
+ } catch {
|
|
|
+ //
|
|
|
+ }
|
|
|
+ };
|
|
|
+ /**
|
|
|
+ * 开始监听错误日志并上传
|
|
|
+ */
|
|
|
+ const startListenErrorLog = (params?: uploadType) => {
|
|
|
+ _defaultParams = Object.assign(_defaultParams, params);
|
|
|
+ console.log('mount useErrorLog');
|
|
|
+ window.addEventListener('error', _uploadErrorLog);
|
|
|
+ };
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 停止监听
|
|
|
+ */
|
|
|
+ const stopListenErrorLog = () => {
|
|
|
+ window.removeEventListener('error', _uploadErrorLog);
|
|
|
+ };
|
|
|
+
|
|
|
+ return {
|
|
|
+ startListenErrorLog,
|
|
|
+ stopListenErrorLog
|
|
|
+ };
|
|
|
+}
|