浏览代码

fix(app): sentry

EvilDragon 4 月之前
父节点
当前提交
98ec3f2e37

+ 1 - 0
packages/app/package.json

@@ -109,6 +109,7 @@
     "pinia-plugin-persistedstate": "3.2.1",
     "qs": "6.5.3",
     "radash": "^12.1.0",
+    "sentry-uniapp": "^1.0.12",
     "vue": "^3.4.21",
     "vue-component-type-helpers": "^2.1.8",
     "vue-i18n": "^9.1.9",

+ 9 - 0
packages/app/src/App.vue

@@ -1,8 +1,17 @@
 <script setup lang="ts">
 import { onLaunch, onShow, onHide } from '@dcloudio/uni-app'
+import * as sentry from 'sentry-uniapp'
 
 onLaunch(() => {
   console.log('App Launch')
+  sentry.init({
+    dsn: 'https://285d1dabcc1091ba170bea48e6c332b2@o4507049702195200.ingest.us.sentry.io/4508207497871361',
+  })
+  // sentry.captureMessage('custom message from ' + uni.getSystemInfoSync().platform, {
+  //   UserId: 123,
+  //   Command: 'npm i -g uapp',
+  // })
+  // sentry.cap
 })
 onShow(() => {
   console.log('App Show')

+ 4 - 1
packages/app/src/core/utils/router.ts

@@ -5,8 +5,11 @@ export const useRouter = () => {
   const push = async (path: string) => {
     uni.navigateTo({ url: path })
   }
+  const replace = async (path: string) => {
+    uni.redirectTo({ url: path })
+  }
   const back = () => {
     uni.navigateBack()
   }
-  return { push, back }
+  return { push, replace, back }
 }

+ 7 - 0
packages/app/src/pages.json

@@ -463,6 +463,13 @@
       "style": {
         "navigationBarTitleText": "提交成功"
       }
+    },
+    {
+      "path": "pages/mine/homepage/consult/success/index",
+      "type": "page",
+      "style": {
+        "navigationBarTitleText": "提交成功"
+      }
     }
   ],
   "subPackages": []

+ 2 - 1
packages/app/src/pages/mine/homepage/consult/index.vue

@@ -60,10 +60,11 @@ const handleSubmit = async () => {
         stylistId: id.value,
         stylistName: '',
       }),
-    { success: true, successTitle: '设计师预约成功' },
+    { success: false, successTitle: '设计师预约成功' },
   )
   if (code === 0) {
     form.value = { appointmentName: '', appointmentPhone: '' }
+    router.replace(`/pages/mine/homepage/consult/success/index?name=${''}`)
   }
 }
 onShareAppMessage(() => ({ title: `${userInfo.value.nickname}` }))

+ 27 - 0
packages/app/src/pages/mine/homepage/consult/success/index.vue

@@ -0,0 +1,27 @@
+<route lang="json">
+{
+  "style": {
+    "navigationBarTitleText": "提交成功"
+  }
+}
+</route>
+<script setup lang="ts">
+import { success } from '../../../../../core/libs/svgs'
+const name = ref('')
+onLoad((query) => {
+  name.value = query.name
+})
+</script>
+<template>
+  <div class="flex-grow flex flex-col justify-center items-center">
+    <wd-img width="60" height="60" :src="success" custom-class="mb-4.5"></wd-img>
+    <div class="mb-10 text-black/90 text-xl font-normal font-['PingFang_SC'] leading-none">
+      提交成功
+    </div>
+    <div
+      class="text-center text-black/40 text-base font-normal font-['PingFang_SC'] leading-relaxed"
+    >
+      感谢您对{{ name }}设计师的信任
+    </div>
+  </div>
+</template>

+ 7 - 1
packages/app/src/pages/mine/setting/index.vue

@@ -37,6 +37,12 @@ const handleChooseAvatar = async ({ detail: { avatarUrl } }) => {
     mask: true,
   })
 }
+const handleLogout = () => {
+  userStore.clearUserInfo()
+  uni.reLaunch({
+    url: '/pages/home/index',
+  })
+}
 </script>
 <template>
   <div class="flex-grow bg-white flex flex-col p-4.5 gap-8">
@@ -69,6 +75,6 @@ const handleChooseAvatar = async ({ detail: { avatarUrl } }) => {
     <SectionHeading title="推荐人" size="sm"></SectionHeading>
     <SectionHeading title="经纪人" size="sm"></SectionHeading> -->
     <div class="flex-1"></div>
-    <div><wd-button block :round="false">退出登录</wd-button></div>
+    <div><wd-button block :round="false" @click="handleLogout">退出登录</wd-button></div>
   </div>
 </template>

+ 2 - 1
packages/app/src/types/uni-pages.d.ts

@@ -53,7 +53,8 @@ interface NavigateToOptions {
        "/pages/mine/orders/detail/index" |
        "/pages/home/mall/purchased/success/index" |
        "/pages/home/spread/case-shooting/photographer/index" |
-       "/pages/mine/authentication/submit/success/index";
+       "/pages/mine/authentication/submit/success/index" |
+       "/pages/mine/homepage/consult/success/index";
 }
 interface RedirectToOptions extends NavigateToOptions {}
 

+ 6 - 2
packages/app/src/utils/http.ts

@@ -2,6 +2,7 @@ import { refreshToken } from '../core/libs/requests'
 import { CustomRequestOptions } from '../interceptors/request'
 import { useUserStore } from '../store'
 import dayjs from 'dayjs'
+import * as sentry from 'sentry-uniapp'
 
 const userStore = useUserStore()
 console.log(userStore.userInfo)
@@ -9,8 +10,9 @@ const Authorization = userStore.userInfo?.token
 console.log(Authorization)
 const header: { 'tenant-id': number; Authorization?: string } = {
   'tenant-id': 1,
+  Authorization,
 }
-Authorization && (header.Authorization = `Bearer ${Authorization}`)
+// Authorization && (header.Authorization = `Bearer ${Authorization}`)
 export const http = async <T>(options: CustomRequestOptions) => {
   const userStore = useUserStore()
   // console.log(dayjs(userStore.userInfo.expiresTime).format('YYYY-MM-DD HH:mm:ss'))
@@ -49,7 +51,8 @@ export const http = async <T>(options: CustomRequestOptions) => {
             resolve(res.data as IResData<T>)
           } else if ((res.data as IResData<T>).code === 401) {
             userStore.clearUserInfo()
-            uni.navigateTo({ url: '/pages/login/index' })
+            // uni.navigateTo({ url: '/pages/login/index' })
+            sentry.captureException(res)
             reject(res)
           } else {
             !options.hideErrorToast &&
@@ -57,6 +60,7 @@ export const http = async <T>(options: CustomRequestOptions) => {
                 icon: 'none',
                 title: (res.data as IResData<T>).msg || '请求错误',
               })
+            sentry.captureException(res)
             reject(res)
           }
         } else if (res.statusCode === 401) {

+ 61 - 0
pnpm-lock.yaml

@@ -85,6 +85,9 @@ importers:
       radash:
         specifier: ^12.1.0
         version: 12.1.0
+      sentry-uniapp:
+        specifier: ^1.0.12
+        version: 1.0.12
       vue:
         specifier: ^3.4.21
         version: 3.4.21(typescript@4.9.5)
@@ -2890,6 +2893,26 @@ packages:
   '@rtsao/scc@1.1.0':
     resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
 
+  '@sentry/core@6.19.7':
+    resolution: {integrity: sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==}
+    engines: {node: '>=6'}
+
+  '@sentry/hub@6.19.7':
+    resolution: {integrity: sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==}
+    engines: {node: '>=6'}
+
+  '@sentry/minimal@6.19.7':
+    resolution: {integrity: sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==}
+    engines: {node: '>=6'}
+
+  '@sentry/types@6.19.7':
+    resolution: {integrity: sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==}
+    engines: {node: '>=6'}
+
+  '@sentry/utils@6.19.7':
+    resolution: {integrity: sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==}
+    engines: {node: '>=6'}
+
   '@sindresorhus/is@0.7.0':
     resolution: {integrity: sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==}
     engines: {node: '>=4'}
@@ -7682,6 +7705,10 @@ packages:
     resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==}
     engines: {node: '>= 0.8.0'}
 
+  sentry-uniapp@1.0.12:
+    resolution: {integrity: sha512-vAmJsYASH41R6Ery0F1Pmsxqj9fYw45GIQpYF2lOitb02B9xQ7A/1nvBlZilUWeggkj2a03825UySui4AZsv9A==}
+    engines: {node: '>=14'}
+
   serve-static@1.16.2:
     resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==}
     engines: {node: '>= 0.8.0'}
@@ -12705,6 +12732,33 @@ snapshots:
 
   '@rtsao/scc@1.1.0': {}
 
+  '@sentry/core@6.19.7':
+    dependencies:
+      '@sentry/hub': 6.19.7
+      '@sentry/minimal': 6.19.7
+      '@sentry/types': 6.19.7
+      '@sentry/utils': 6.19.7
+      tslib: 1.10.0
+
+  '@sentry/hub@6.19.7':
+    dependencies:
+      '@sentry/types': 6.19.7
+      '@sentry/utils': 6.19.7
+      tslib: 1.10.0
+
+  '@sentry/minimal@6.19.7':
+    dependencies:
+      '@sentry/hub': 6.19.7
+      '@sentry/types': 6.19.7
+      tslib: 1.10.0
+
+  '@sentry/types@6.19.7': {}
+
+  '@sentry/utils@6.19.7':
+    dependencies:
+      '@sentry/types': 6.19.7
+      tslib: 1.10.0
+
   '@sindresorhus/is@0.7.0': {}
 
   '@sindresorhus/is@4.6.0': {}
@@ -18733,6 +18787,13 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
+  sentry-uniapp@1.0.12:
+    dependencies:
+      '@sentry/core': 6.19.7
+      '@sentry/types': 6.19.7
+      '@sentry/utils': 6.19.7
+      tslib: 1.10.0
+
   serve-static@1.16.2:
     dependencies:
       encodeurl: 2.0.0