lw-cdp-ui 1.4.43 → 1.4.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,10 @@
1
1
  <template>
2
2
  <el-tour v-model="isOpen" :current="currentStep">
3
- <el-tour-step v-for="(step, index) in formattedSteps" :key="index" :target="step.target" :title="step.title"
3
+ <el-tour-step
4
+ v-for="(step, index) in formattedSteps"
5
+ :key="index"
6
+ :target="step.target"
7
+ :title="step.title"
4
8
  :description="step.description" />
5
9
  </el-tour>
6
10
  </template>
@@ -16,7 +20,7 @@ export default {
16
20
  type: Array,
17
21
  required: true,
18
22
  validator: (value) => {
19
- return value.every(step => {
23
+ return value.every((step) => {
20
24
  return step.css && step.title && step.description
21
25
  })
22
26
  }
@@ -49,44 +53,57 @@ export default {
49
53
 
50
54
  // 开始引导
51
55
  const startTour = () => {
52
- const allElementsExist = props.steps.every(step => {
56
+ // 如果 router 未初始化,延迟执行
57
+ if (!router) {
58
+ setTimeout(() => {
59
+ startTour()
60
+ }, 100)
61
+ return
62
+ }
63
+
64
+ const allElementsExist = props.steps.every((step) => {
53
65
  return document.querySelector(step.css)
54
66
  })
55
67
 
56
68
  if (!allElementsExist) {
57
69
  console.warn('元素未加载完成')
58
- startTour()
70
+ setTimeout(() => {
71
+ startTour()
72
+ }, 100)
59
73
  return
60
74
  }
61
75
 
62
- formattedSteps.value = props.steps.map(step => {
76
+ formattedSteps.value = props.steps.map((step) => {
63
77
  const targetElement = document.querySelector(step.css)
64
78
  return {
65
79
  target: targetElement || undefined,
66
80
  title: step.title,
67
81
  description: step.description,
68
- // 可以添加更多el-tour支持的配置项
69
82
  placement: 'bottom'
70
83
  }
71
84
  })
72
85
  isOpen.value = true
73
86
 
74
87
  let LwTour = $tool.data.get('LwTour') || {}
75
- let { path, meta } = router.currentRoute.value
76
- LwTour[`${meta.title}${path}`] = true
77
- $tool.data.set('LwTour', LwTour)
88
+ const currentRoute = router?.currentRoute?.value
89
+ if (currentRoute) {
90
+ const { path, meta } = currentRoute
91
+ LwTour[`${meta?.title || ''}${path}`] = true
92
+ $tool.data.set('LwTour', LwTour)
93
+ }
78
94
  }
79
95
 
80
-
81
-
82
96
  // 组件挂载后自动开始引导
83
97
  onMounted(() => {
84
98
  let LwTour = $tool.data.get('LwTour') || {}
85
- let { path, meta } = router.currentRoute.value
86
- if (props.autoStart && !LwTour[`${meta.title}${path}`]) {
87
- nextTick(() => {
88
- startTour()
89
- })
99
+ const currentRoute = router?.currentRoute?.value
100
+ if (currentRoute && props.autoStart) {
101
+ const { path, meta } = currentRoute
102
+ if (!LwTour[`${meta?.title || ''}${path}`]) {
103
+ nextTick(() => {
104
+ startTour()
105
+ })
106
+ }
90
107
  }
91
108
  $bus.$emit(`lwTourOpen`, true)
92
109
  })