ai-error-assistant-pro 0.0.19 → 0.0.21

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.
@@ -19,7 +19,7 @@
19
19
  <img alt="" src="../static/zan-active.png" v-else />
20
20
  </div>
21
21
  </el-tooltip>
22
- <el-popover v-model="popover" placement="top-start" trigger="manual">
22
+ <el-popover ref="popoverRef" v-model="popover" placement="top-start" trigger="manual">
23
23
  <div slot="reference">
24
24
  <el-tooltip content="踩" effect="light" placement="bottom">
25
25
  <div class="tools-icon" @click="openPopover" v-if="!listData.cai">
@@ -1,6 +1,6 @@
1
1
  <template>
2
- <div class="chat-contain" ref="chatContainer">
3
- <error-chat :question-stem="analyExercise" :businessSource ="businessSource" @on-init="errorChatInit"/>
2
+ <div class="chat-contain" ref="chatContainer" @scroll="handleScroll">
3
+ <error-chat :question-stem="analyExercise" :businessSource ="businessSource" @on-init="errorChatInit" ref="errorChat"/>
4
4
  <div v-for="(list, index) in messageData" :key="index"
5
5
  :class="{'user-list': list.type === 'user'}"
6
6
  class="message">
@@ -73,6 +73,7 @@
73
73
  </div>
74
74
  </div>
75
75
  <chat-tools v-if="list.type === 'robot'"
76
+ :ref="'chatTools' + index"
76
77
  :chatId="chatId"
77
78
  :detail-data="list"
78
79
  :sending="list.sending"
@@ -140,6 +141,7 @@ export default {
140
141
  chatId: '', // 对话id
141
142
  chatMajorId: '',
142
143
  finish: false,
144
+ lastScrollTop: 0,
143
145
  }
144
146
  },
145
147
  computed: {
@@ -159,6 +161,46 @@ export default {
159
161
  }
160
162
  },
161
163
  methods: {
164
+ handleScroll() {
165
+ const container = this.$refs.chatContainer;
166
+ const containerRect = container.getBoundingClientRect();
167
+ // 检查所有消息中的popover是否在可视区域内
168
+ const errorRef = this.$refs.errorChat;
169
+ this.messageData.forEach((_, index) => {
170
+ const ref = this.$refs['chatTools' + index];
171
+ if (ref && ref[0]) {
172
+ // 只有当popover开启时,才去判断它的位置
173
+ if (ref[0].popover) {
174
+ // 通过 ref 属性获取 el-popover 的 DOM 元素
175
+ const popoverEl = ref[0].$refs.popoverRef.$el;
176
+ if (popoverEl) {
177
+ const popoverRect = popoverEl.getBoundingClientRect();
178
+ if (popoverRect.top < containerRect.top || popoverRect.bottom > containerRect.bottom) {
179
+ ref[0].cancelPopover();
180
+ }
181
+ }
182
+ }
183
+ }
184
+ });
185
+
186
+ // 处理 errorChat 组件内部的 chatTools popover
187
+ const errorChatRef = this.$refs.errorChat;
188
+ if (errorChatRef && errorChatRef.$refs.chatTools) {
189
+ const errorChatToolsRef = errorChatRef.$refs.chatTools;
190
+ // 只有当popover开启时,才去判断它的位置
191
+ if (errorChatToolsRef.popover) {
192
+ const popoverEl = errorChatToolsRef.$refs.popoverRef.$el;
193
+ if (popoverEl) {
194
+ const popoverRect = popoverEl.getBoundingClientRect();
195
+
196
+ // 如果popover的顶部或底部超出 主聊天容器 的可视区域,则关闭它
197
+ if (popoverRect.top < containerRect.top || popoverRect.bottom > containerRect.bottom) {
198
+ errorChatToolsRef.cancelPopover();
199
+ }
200
+ }
201
+ }
202
+ }
203
+ },
162
204
  cancelPopover() {
163
205
  this.popover = false;
164
206
  },
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="error-chat-contain">
2
+ <div class="error-chat-contain" @scroll="handleScroll">
3
3
  <div class="exercises-answer">
4
4
  <div class="exercises-answer-bg"></div>
5
5
  <p class="question-stem" v-html="questionStem.title"></p>
@@ -79,6 +79,7 @@
79
79
  </div>
80
80
  </div>
81
81
  <chat-tools type="error"
82
+ ref="chatTools"
82
83
  :chatId="chatId"
83
84
  :detailData="detailData"
84
85
  @on-reanswer="reanswer" />
@@ -118,6 +119,12 @@ export default {
118
119
  }
119
120
  },
120
121
  methods: {
122
+ handleScroll() {
123
+ console.log('scroll');
124
+ if (this.$refs.chatTools) {
125
+ this.$refs.chatTools.cancelPopover();
126
+ }
127
+ },
121
128
  async getErrorAnalysis() {
122
129
  try {
123
130
  this.analysisData = {};
@@ -4,7 +4,7 @@
4
4
  <div class="ai-contain-header">
5
5
  <div class="logo-title">
6
6
  <img src="../static/logo.png" alt="" style="width: 48px; height: 48px">
7
- <span class="title-font">AI错题解</span>
7
+ <span class="title-font">AI错题解析</span>
8
8
  </div>
9
9
  <div class="icon-close" @click="closeMessage">
10
10
  <i class="el-icon-close"></i>
@@ -6546,7 +6546,7 @@ if (typeof window !== 'undefined') {
6546
6546
  // Indicate to webpack that this file can be concatenated
6547
6547
  /* harmony default export */ var setPublicPath = (null);
6548
6548
 
6549
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/main.vue?vue&type=template&id=04483a30&scoped=true
6549
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/main.vue?vue&type=template&id=236c26cc&scoped=true
6550
6550
  var render = function render() {
6551
6551
  var _vm = this,
6552
6552
  _c = _vm._self._c;
@@ -6644,19 +6644,23 @@ var staticRenderFns = [function () {
6644
6644
  }
6645
6645
  }), _c('span', {
6646
6646
  staticClass: "title-font"
6647
- }, [_vm._v("AI错题解")])]);
6647
+ }, [_vm._v("AI错题解析")])]);
6648
6648
  }];
6649
6649
 
6650
- ;// CONCATENATED MODULE: ./components/demo/src/main.vue?vue&type=template&id=04483a30&scoped=true
6650
+ ;// CONCATENATED MODULE: ./components/demo/src/main.vue?vue&type=template&id=236c26cc&scoped=true
6651
6651
 
6652
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/chat.vue?vue&type=template&id=75accbf1&scoped=true
6653
- var chatvue_type_template_id_75accbf1_scoped_true_render = function render() {
6652
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/chat.vue?vue&type=template&id=610f94f3&scoped=true
6653
+ var chatvue_type_template_id_610f94f3_scoped_true_render = function render() {
6654
6654
  var _vm = this,
6655
6655
  _c = _vm._self._c;
6656
6656
  return _c('div', {
6657
6657
  ref: "chatContainer",
6658
- staticClass: "chat-contain"
6658
+ staticClass: "chat-contain",
6659
+ on: {
6660
+ "scroll": _vm.handleScroll
6661
+ }
6659
6662
  }, [_c('error-chat', {
6663
+ ref: "errorChat",
6660
6664
  attrs: {
6661
6665
  "question-stem": _vm.analyExercise,
6662
6666
  "businessSource": _vm.businessSource
@@ -6758,6 +6762,8 @@ var chatvue_type_template_id_75accbf1_scoped_true_render = function render() {
6758
6762
  staticClass: "el-icon-arrow-right go-icon"
6759
6763
  })]);
6760
6764
  }), 0)]) : _vm._e(), list.type === 'robot' ? _c('chat-tools', {
6765
+ ref: 'chatTools' + index,
6766
+ refInFor: true,
6761
6767
  attrs: {
6762
6768
  "chatId": _vm.chatId,
6763
6769
  "detail-data": list,
@@ -6771,7 +6777,7 @@ var chatvue_type_template_id_75accbf1_scoped_true_render = function render() {
6771
6777
  }) : _vm._e()], 1)]);
6772
6778
  })], 2);
6773
6779
  };
6774
- var chatvue_type_template_id_75accbf1_scoped_true_staticRenderFns = [];
6780
+ var chatvue_type_template_id_610f94f3_scoped_true_staticRenderFns = [];
6775
6781
 
6776
6782
  ;// CONCATENATED MODULE: ./node_modules/axios/lib/helpers/bind.js
6777
6783
 
@@ -11103,8 +11109,8 @@ const getUserInfo = async (token, businessSource, fn) => {
11103
11109
  cache.session.setJSON('SRKJ_TOKEN_CACHE', token);
11104
11110
  if (fn) fn();
11105
11111
  };
11106
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/chat-tools.vue?vue&type=template&id=a40a67cc&scoped=true
11107
- var chat_toolsvue_type_template_id_a40a67cc_scoped_true_render = function render() {
11112
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/chat-tools.vue?vue&type=template&id=882f7ed8&scoped=true
11113
+ var chat_toolsvue_type_template_id_882f7ed8_scoped_true_render = function render() {
11108
11114
  var _vm = this,
11109
11115
  _c = _vm._self._c;
11110
11116
  return _vm.listData ? _c('div', {
@@ -11160,6 +11166,7 @@ var chat_toolsvue_type_template_id_a40a67cc_scoped_true_render = function render
11160
11166
  "src": __webpack_require__(793)
11161
11167
  }
11162
11168
  })])]), _c('el-popover', {
11169
+ ref: "popoverRef",
11163
11170
  attrs: {
11164
11171
  "placement": "top-start",
11165
11172
  "trigger": "manual"
@@ -11266,9 +11273,9 @@ var chat_toolsvue_type_template_id_a40a67cc_scoped_true_render = function render
11266
11273
  }
11267
11274
  }, [_vm._v("提交")])], 1)], 1)])])], 1)]) : _vm._e();
11268
11275
  };
11269
- var chat_toolsvue_type_template_id_a40a67cc_scoped_true_staticRenderFns = [];
11276
+ var chat_toolsvue_type_template_id_882f7ed8_scoped_true_staticRenderFns = [];
11270
11277
 
11271
- ;// CONCATENATED MODULE: ./components/demo/src/chat-tools.vue?vue&type=template&id=a40a67cc&scoped=true
11278
+ ;// CONCATENATED MODULE: ./components/demo/src/chat-tools.vue?vue&type=template&id=882f7ed8&scoped=true
11272
11279
 
11273
11280
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/chat-tools.vue?vue&type=script&lang=js
11274
11281
 
@@ -11369,10 +11376,10 @@ var chat_toolsvue_type_template_id_a40a67cc_scoped_true_staticRenderFns = [];
11369
11376
  });
11370
11377
  ;// CONCATENATED MODULE: ./components/demo/src/chat-tools.vue?vue&type=script&lang=js
11371
11378
  /* harmony default export */ var src_chat_toolsvue_type_script_lang_js = (chat_toolsvue_type_script_lang_js);
11372
- ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/chat-tools.vue?vue&type=style&index=0&id=a40a67cc&prod&lang=scss&scoped=true
11379
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/chat-tools.vue?vue&type=style&index=0&id=882f7ed8&prod&lang=scss&scoped=true
11373
11380
  // extracted by mini-css-extract-plugin
11374
11381
 
11375
- ;// CONCATENATED MODULE: ./components/demo/src/chat-tools.vue?vue&type=style&index=0&id=a40a67cc&prod&lang=scss&scoped=true
11382
+ ;// CONCATENATED MODULE: ./components/demo/src/chat-tools.vue?vue&type=style&index=0&id=882f7ed8&prod&lang=scss&scoped=true
11376
11383
 
11377
11384
  ;// CONCATENATED MODULE: ./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js
11378
11385
  /* globals __VUE_SSR_CONTEXT__ */
@@ -11483,22 +11490,25 @@ function normalizeComponent(
11483
11490
 
11484
11491
  var component = normalizeComponent(
11485
11492
  src_chat_toolsvue_type_script_lang_js,
11486
- chat_toolsvue_type_template_id_a40a67cc_scoped_true_render,
11487
- chat_toolsvue_type_template_id_a40a67cc_scoped_true_staticRenderFns,
11493
+ chat_toolsvue_type_template_id_882f7ed8_scoped_true_render,
11494
+ chat_toolsvue_type_template_id_882f7ed8_scoped_true_staticRenderFns,
11488
11495
  false,
11489
11496
  null,
11490
- "a40a67cc",
11497
+ "882f7ed8",
11491
11498
  null
11492
11499
 
11493
11500
  )
11494
11501
 
11495
11502
  /* harmony default export */ var chat_tools = (component.exports);
11496
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/error-chat.vue?vue&type=template&id=750eca81&scoped=true
11497
- var error_chatvue_type_template_id_750eca81_scoped_true_render = function render() {
11503
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/error-chat.vue?vue&type=template&id=9097633c&scoped=true
11504
+ var error_chatvue_type_template_id_9097633c_scoped_true_render = function render() {
11498
11505
  var _vm = this,
11499
11506
  _c = _vm._self._c;
11500
11507
  return _c('div', {
11501
- staticClass: "error-chat-contain"
11508
+ staticClass: "error-chat-contain",
11509
+ on: {
11510
+ "scroll": _vm.handleScroll
11511
+ }
11502
11512
  }, [_c('div', {
11503
11513
  staticClass: "exercises-answer"
11504
11514
  }, [_c('div', {
@@ -11627,6 +11637,7 @@ var error_chatvue_type_template_id_750eca81_scoped_true_render = function render
11627
11637
  }
11628
11638
  }, [_vm._v(_vm._s(list.title) + " ")]) : _vm._e()]);
11629
11639
  }), 0) : _vm._e(), _c('chat-tools', {
11640
+ ref: "chatTools",
11630
11641
  attrs: {
11631
11642
  "type": "error",
11632
11643
  "chatId": _vm.chatId,
@@ -11637,7 +11648,7 @@ var error_chatvue_type_template_id_750eca81_scoped_true_render = function render
11637
11648
  }
11638
11649
  })], 1)]);
11639
11650
  };
11640
- var error_chatvue_type_template_id_750eca81_scoped_true_staticRenderFns = [function () {
11651
+ var error_chatvue_type_template_id_9097633c_scoped_true_staticRenderFns = [function () {
11641
11652
  var _vm = this,
11642
11653
  _c = _vm._self._c;
11643
11654
  return _c('div', {
@@ -11656,7 +11667,7 @@ var error_chatvue_type_template_id_750eca81_scoped_true_staticRenderFns = [funct
11656
11667
  })]);
11657
11668
  }];
11658
11669
 
11659
- ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue?vue&type=template&id=750eca81&scoped=true
11670
+ ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue?vue&type=template&id=9097633c&scoped=true
11660
11671
 
11661
11672
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/error-chat.vue?vue&type=script&lang=js
11662
11673
 
@@ -11695,6 +11706,12 @@ var error_chatvue_type_template_id_750eca81_scoped_true_staticRenderFns = [funct
11695
11706
  }
11696
11707
  },
11697
11708
  methods: {
11709
+ handleScroll() {
11710
+ console.log('scroll');
11711
+ if (this.$refs.chatTools) {
11712
+ this.$refs.chatTools.cancelPopover();
11713
+ }
11714
+ },
11698
11715
  async getErrorAnalysis() {
11699
11716
  try {
11700
11717
  this.analysisData = {};
@@ -11787,10 +11804,10 @@ var error_chatvue_type_template_id_750eca81_scoped_true_staticRenderFns = [funct
11787
11804
  });
11788
11805
  ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue?vue&type=script&lang=js
11789
11806
  /* harmony default export */ var src_error_chatvue_type_script_lang_js = (error_chatvue_type_script_lang_js);
11790
- ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/error-chat.vue?vue&type=style&index=0&id=750eca81&prod&lang=scss&scoped=true
11807
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/error-chat.vue?vue&type=style&index=0&id=9097633c&prod&lang=scss&scoped=true
11791
11808
  // extracted by mini-css-extract-plugin
11792
11809
 
11793
- ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue?vue&type=style&index=0&id=750eca81&prod&lang=scss&scoped=true
11810
+ ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue?vue&type=style&index=0&id=9097633c&prod&lang=scss&scoped=true
11794
11811
 
11795
11812
  ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue
11796
11813
 
@@ -11803,11 +11820,11 @@ var error_chatvue_type_template_id_750eca81_scoped_true_staticRenderFns = [funct
11803
11820
 
11804
11821
  var error_chat_component = normalizeComponent(
11805
11822
  src_error_chatvue_type_script_lang_js,
11806
- error_chatvue_type_template_id_750eca81_scoped_true_render,
11807
- error_chatvue_type_template_id_750eca81_scoped_true_staticRenderFns,
11823
+ error_chatvue_type_template_id_9097633c_scoped_true_render,
11824
+ error_chatvue_type_template_id_9097633c_scoped_true_staticRenderFns,
11808
11825
  false,
11809
11826
  null,
11810
- "750eca81",
11827
+ "9097633c",
11811
11828
  null
11812
11829
 
11813
11830
  )
@@ -14358,7 +14375,8 @@ const signal = controller.signal;
14358
14375
  chatId: '',
14359
14376
  // 对话id
14360
14377
  chatMajorId: '',
14361
- finish: false
14378
+ finish: false,
14379
+ lastScrollTop: 0
14362
14380
  };
14363
14381
  },
14364
14382
  computed: {
@@ -14378,6 +14396,46 @@ const signal = controller.signal;
14378
14396
  }
14379
14397
  },
14380
14398
  methods: {
14399
+ handleScroll() {
14400
+ const container = this.$refs.chatContainer;
14401
+ const containerRect = container.getBoundingClientRect();
14402
+ // 检查所有消息中的popover是否在可视区域内
14403
+ const errorRef = this.$refs.errorChat;
14404
+ this.messageData.forEach((_, index) => {
14405
+ const ref = this.$refs['chatTools' + index];
14406
+ if (ref && ref[0]) {
14407
+ // 只有当popover开启时,才去判断它的位置
14408
+ if (ref[0].popover) {
14409
+ // 通过 ref 属性获取 el-popover 的 DOM 元素
14410
+ const popoverEl = ref[0].$refs.popoverRef.$el;
14411
+ if (popoverEl) {
14412
+ const popoverRect = popoverEl.getBoundingClientRect();
14413
+ if (popoverRect.top < containerRect.top || popoverRect.bottom > containerRect.bottom) {
14414
+ ref[0].cancelPopover();
14415
+ }
14416
+ }
14417
+ }
14418
+ }
14419
+ });
14420
+
14421
+ // 处理 errorChat 组件内部的 chatTools popover
14422
+ const errorChatRef = this.$refs.errorChat;
14423
+ if (errorChatRef && errorChatRef.$refs.chatTools) {
14424
+ const errorChatToolsRef = errorChatRef.$refs.chatTools;
14425
+ // 只有当popover开启时,才去判断它的位置
14426
+ if (errorChatToolsRef.popover) {
14427
+ const popoverEl = errorChatToolsRef.$refs.popoverRef.$el;
14428
+ if (popoverEl) {
14429
+ const popoverRect = popoverEl.getBoundingClientRect();
14430
+
14431
+ // 如果popover的顶部或底部超出 主聊天容器 的可视区域,则关闭它
14432
+ if (popoverRect.top < containerRect.top || popoverRect.bottom > containerRect.bottom) {
14433
+ errorChatToolsRef.cancelPopover();
14434
+ }
14435
+ }
14436
+ }
14437
+ }
14438
+ },
14381
14439
  cancelPopover() {
14382
14440
  this.popover = false;
14383
14441
  },
@@ -14594,10 +14652,10 @@ const signal = controller.signal;
14594
14652
  });
14595
14653
  ;// CONCATENATED MODULE: ./components/demo/src/chat.vue?vue&type=script&lang=js
14596
14654
  /* harmony default export */ var src_chatvue_type_script_lang_js = (chatvue_type_script_lang_js);
14597
- ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/chat.vue?vue&type=style&index=0&id=75accbf1&prod&lang=scss&scoped=true
14655
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/chat.vue?vue&type=style&index=0&id=610f94f3&prod&lang=scss&scoped=true
14598
14656
  // extracted by mini-css-extract-plugin
14599
14657
 
14600
- ;// CONCATENATED MODULE: ./components/demo/src/chat.vue?vue&type=style&index=0&id=75accbf1&prod&lang=scss&scoped=true
14658
+ ;// CONCATENATED MODULE: ./components/demo/src/chat.vue?vue&type=style&index=0&id=610f94f3&prod&lang=scss&scoped=true
14601
14659
 
14602
14660
  ;// CONCATENATED MODULE: ./components/demo/src/chat.vue
14603
14661
 
@@ -14610,11 +14668,11 @@ const signal = controller.signal;
14610
14668
 
14611
14669
  var chat_component = normalizeComponent(
14612
14670
  src_chatvue_type_script_lang_js,
14613
- chatvue_type_template_id_75accbf1_scoped_true_render,
14614
- chatvue_type_template_id_75accbf1_scoped_true_staticRenderFns,
14671
+ chatvue_type_template_id_610f94f3_scoped_true_render,
14672
+ chatvue_type_template_id_610f94f3_scoped_true_staticRenderFns,
14615
14673
  false,
14616
14674
  null,
14617
- "75accbf1",
14675
+ "610f94f3",
14618
14676
  null
14619
14677
 
14620
14678
  )
@@ -14878,10 +14936,10 @@ var api = init(defaultConverter, { path: '/' });
14878
14936
  });
14879
14937
  ;// CONCATENATED MODULE: ./components/demo/src/main.vue?vue&type=script&lang=js
14880
14938
  /* harmony default export */ var src_mainvue_type_script_lang_js = (mainvue_type_script_lang_js);
14881
- ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/main.vue?vue&type=style&index=0&id=04483a30&prod&lang=scss&scoped=true
14939
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/main.vue?vue&type=style&index=0&id=236c26cc&prod&lang=scss&scoped=true
14882
14940
  // extracted by mini-css-extract-plugin
14883
14941
 
14884
- ;// CONCATENATED MODULE: ./components/demo/src/main.vue?vue&type=style&index=0&id=04483a30&prod&lang=scss&scoped=true
14942
+ ;// CONCATENATED MODULE: ./components/demo/src/main.vue?vue&type=style&index=0&id=236c26cc&prod&lang=scss&scoped=true
14885
14943
 
14886
14944
  ;// CONCATENATED MODULE: ./components/demo/src/main.vue
14887
14945
 
@@ -14898,7 +14956,7 @@ var main_component = normalizeComponent(
14898
14956
  staticRenderFns,
14899
14957
  false,
14900
14958
  null,
14901
- "04483a30",
14959
+ "236c26cc",
14902
14960
  null
14903
14961
 
14904
14962
  )