askbot-dragon 1.7.65-beta → 1.7.67-beta

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.
Files changed (95) hide show
  1. package/README.md +27 -27
  2. package/babel.config.js +6 -6
  3. package/dragon.iml +7 -7
  4. package/package.json +57 -57
  5. package/public/index.html +73 -73
  6. package/src/App.vue +31 -31
  7. package/src/api/index.js +1 -1
  8. package/src/api/mock.http +2 -2
  9. package/src/api/requestUrl.js +185 -185
  10. package/src/assets/js/AliyunlssUtil.js +141 -141
  11. package/src/assets/js/Base64Util.js +22 -22
  12. package/src/assets/js/common.js +252 -252
  13. package/src/assets/js/hammer.js +100 -100
  14. package/src/assets/js/script.js +36 -36
  15. package/src/assets/less/common.css +6773 -6773
  16. package/src/assets/less/converSationContainer/common.less +199 -199
  17. package/src/assets/less/converSationContainer/converSatonContainer.less +493 -493
  18. package/src/assets/less/iconfont.css +37 -37
  19. package/src/assets/less/ticketMessage.less +294 -294
  20. package/src/components/ActionAlertIframe.vue +178 -178
  21. package/src/components/AiGuide.vue +434 -434
  22. package/src/components/AnswerDocknowledge.vue +1203 -1203
  23. package/src/components/AnswerVoice.vue +285 -285
  24. package/src/components/AskIFrame.vue +15 -15
  25. package/src/components/ConversationContainer.vue +10764 -10764
  26. package/src/components/FileType.vue +86 -86
  27. package/src/components/Message.vue +27 -27
  28. package/src/components/MyEditor.vue +342 -342
  29. package/src/components/QwFeedback.vue +302 -302
  30. package/src/components/actionSatisfaction.vue +107 -107
  31. package/src/components/actionSendToBot.vue +62 -62
  32. package/src/components/answerDissatisfaction.vue +62 -62
  33. package/src/components/answerRadio.vue +259 -259
  34. package/src/components/ask-components/DissatisfactionOptions.vue +57 -57
  35. package/src/components/ask-components/Msgloading.vue +37 -37
  36. package/src/components/ask-components/SatisfactionV2.vue +15 -15
  37. package/src/components/askVideo.vue +162 -162
  38. package/src/components/assetDetails.vue +378 -378
  39. package/src/components/assetMessage.vue +229 -229
  40. package/src/components/associationIntention.vue +378 -378
  41. package/src/components/attachmentPreview.vue +90 -90
  42. package/src/components/botActionSatisfactor.vue +68 -68
  43. package/src/components/chatContent.vue +513 -513
  44. package/src/components/feedBack.vue +136 -136
  45. package/src/components/fielListView.vue +351 -351
  46. package/src/components/file/AliyunOssComponents.vue +108 -108
  47. package/src/components/formTemplate.vue +3512 -3512
  48. package/src/components/imgView.vue +31 -31
  49. package/src/components/intelligentSummary.vue +234 -234
  50. package/src/components/kkview.vue +1138 -1138
  51. package/src/components/loadingProcess.vue +164 -164
  52. package/src/components/markDownText.vue +357 -357
  53. package/src/components/message/ActionAlertIframe.vue +112 -112
  54. package/src/components/message/ShopMessage.vue +164 -164
  55. package/src/components/message/TextMessage.vue +928 -928
  56. package/src/components/message/TicketMessage.vue +201 -201
  57. package/src/components/message/swiper/index.js +4 -4
  58. package/src/components/message/swiper/ticketSwiper.vue +503 -503
  59. package/src/components/message/swiper/ticketSwiperItem.vue +61 -61
  60. package/src/components/msgLoading.vue +231 -231
  61. package/src/components/myPopup.vue +73 -73
  62. package/src/components/newPdfPosition.vue +877 -877
  63. package/src/components/pagination.vue +128 -128
  64. package/src/components/pdfPosition.vue +1523 -1523
  65. package/src/components/popup.vue +228 -228
  66. package/src/components/preview/docView.vue +113 -113
  67. package/src/components/preview/excelView.vue +190 -190
  68. package/src/components/preview/newPositionPreview.vue +384 -369
  69. package/src/components/preview/pdfView.vue +824 -824
  70. package/src/components/previewDoc.vue +252 -252
  71. package/src/components/previewPdf.vue +1087 -1087
  72. package/src/components/receiverMessagePlatform.vue +69 -69
  73. package/src/components/recommend.vue +80 -80
  74. package/src/components/selector/hOption.vue +20 -20
  75. package/src/components/selector/hSelector.vue +199 -199
  76. package/src/components/selector/hWrapper.vue +216 -216
  77. package/src/components/senderMessagePlatform.vue +58 -58
  78. package/src/components/source/BotMessage.vue +24 -24
  79. package/src/components/source/CustomMessage.vue +24 -24
  80. package/src/components/test.vue +260 -260
  81. package/src/components/tree.vue +307 -307
  82. package/src/components/utils/AliyunIssUtil.js +103 -103
  83. package/src/components/utils/ckeditor.js +185 -185
  84. package/src/components/utils/format_date.js +25 -25
  85. package/src/components/utils/index.js +6 -6
  86. package/src/components/utils/math_utils.js +29 -29
  87. package/src/components/voiceComponent.vue +119 -119
  88. package/src/components/welcomeKnowledgeFile.vue +347 -347
  89. package/src/components/welcomeLlmCard.vue +144 -144
  90. package/src/components/welcomeSuggest.vue +97 -97
  91. package/src/locales/cn.json +95 -95
  92. package/src/locales/en.json +95 -95
  93. package/src/locales/jp.json +72 -72
  94. package/src/main.js +76 -76
  95. package/vue.config.js +54 -54
@@ -1,260 +1,260 @@
1
- <template>
2
- <div id="answer-radio">
3
- <p class="radio-description" v-html="msg.content.description"
4
- v-if="msg.content.description && !msg.content.isKnowledgeSummary"></p>
5
- <div class="bottom-link" v-if="msg.content.description && !msg.content.isKnowledgeSummary"></div>
6
- <div :class="['options-list', msg.content.isKnowledgeSummary ? 'isKnowledgeSummary' : '']">
7
- <div v-if="msg.content.isKnowledgeSummary" class="tips">{{$t('dragonCommon.AIrecommends')}}</div>
8
- <div v-for="(option, index) in showOptions" class="options-item"
9
- :class="index !== msg.content.options.length - 1 ? 'recommend-item' : 'last-item'" :key="msg.nodeId + '_' + index"
10
- @click="radioClick(msg, option, index)">
11
- <!-- <el-tooltip :disabled="!isMobile" class="item" effect="dark" :content="$t('dragonCommon.clickme')" placement="top">
12
- <span class="options-item-name"> {{ getFilteredName(option.name) }}</span>
13
- </el-tooltip> -->
14
- <div class="tooltip-wrapper">
15
- <span class="tooltip-text options-item-name"> {{ getFilteredName(option.name) }}</span>
16
- <span v-if="!isMobile" class="tooltip-content">{{$t('dragonCommon.clickme')}}</span>
17
- </div>
18
- <i class="arsenal_icon arsenalangle-right-solid"></i>
19
- </div>
20
- </div>
21
- <div v-if="showPage" class="switch-page">
22
- <span @click="changeActivePage" class="switch-page-btn">{{$t('dragonCommon.refresh')}}</span>
23
- <!-- <span @click="showMore" class="switch-page-btn">查看更多</span> -->
24
- </div>
25
- </div>
26
- </template>
27
-
28
- <script>
29
- export default {
30
- name: "answerRadio",
31
- data() {
32
- return {
33
- isMobile: false,
34
- formatOptions: [],
35
- activeIndex: 0,
36
- pageSize: 5,
37
- showPage: false,
38
- showOptions: [],
39
- }
40
- },
41
- props: ['msg','language'],
42
- mounted() {
43
- console.log("askbot-dragon: systemLanguage", sessionStorage.getItem("systemLanguage"));
44
- this.$i18n.locale = sessionStorage.getItem("systemLanguage") || 'cn';
45
- console.log(this.msg, 'msg');
46
- // 关键词推荐 前端分页
47
- if ((this.msg.id == "recdNodeId" || this.msg.content.groupVisible) && this.msg.content.options.length > this.pageSize) {
48
- this.pageSize = this.msg.content.groupNumber || 5;
49
- this.formatOptions = this.chunkArray(this.msg.content.options, this.pageSize);
50
- this.activeIndex = 0;
51
- this.showPage = true;
52
- } else {
53
- this.formatOptions = [this.msg.content.options];
54
- this.activeIndex = 0;
55
- }
56
- this.showOptions = this.formatOptions[0];
57
- this.judgeIsMobile();
58
- },
59
- methods: {
60
- getFilteredName(name) {
61
- if (typeof name === 'string') {
62
- return name.replace(/<\/?p>/g, '');
63
- } else {
64
- return name;
65
- }
66
- },
67
- showMore(){
68
- if (this.activeIndex == this.formatOptions.length - 2) {
69
- this.activeIndex++;
70
- this.showPage = false;
71
- } else {
72
- this.activeIndex++;
73
- }
74
- this.showOptions = [...this.showOptions.concat(this.formatOptions[this.activeIndex])]
75
- },
76
- changeActivePage(){
77
- if (this.activeIndex >= this.formatOptions.length - 1) {
78
- this.activeIndex = 0;
79
- } else {
80
- this.activeIndex++;
81
- }
82
- this.showOptions = this.formatOptions[this.activeIndex]
83
- },
84
- chunkArray(array, size) {
85
- let chunks = [];
86
- for (let i = 0; i < array.length; i += size) {
87
- let chunk = array.slice(i, i + size);
88
- chunks.push(chunk);
89
- }
90
- return chunks;
91
- },
92
- judgeIsMobile() {
93
- let flag = navigator.userAgent.match(
94
- /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
95
- );
96
- if (flag) {
97
- this.isMobile = true;
98
- } else {
99
- this.isMobile = false;
100
- }
101
- console.log(this.isMobile, 'this.isMobile');
102
- },
103
- radioClick(msg, option, index) {
104
- let value = option.answerId ? msg.id + '_' + index + '_' + option.value + '_' + option.name + '_' + option.answerId : msg.id + '_' + index + '_' + option.value + '_' + option.name
105
- this.$emit('onRadioClick', value, option.name, msg.apiKey, msg.actionCategory, msg.msgId ? msg.msgId : '', option.apiKey)
106
- }
107
- }
108
-
109
- }
110
- </script>
111
- <style lang="less">
112
- /* 包裹元素,相对定位,用于定位提示框 */
113
- .tooltip-wrapper {
114
- position: relative;
115
- display: inline-block;
116
- }
117
- /* 实际要显示的文本内容 */
118
- /* 提示框样式 */
119
- .tooltip-content {
120
- visibility: hidden;
121
- background-color: #333;
122
- color: white;
123
- text-align: center;
124
- border-radius: 6px;
125
- padding: 5px 10px;
126
- position: absolute;
127
- z-index: 1;
128
- bottom: 100%;
129
- left: 50%;
130
- transform: translateX(-50%);
131
- white-space: nowrap;
132
- opacity: 0;
133
- transition: opacity 0.3s;
134
- }
135
- /* 提示框下方的小三角样式(使用伪元素实现) */
136
- .tooltip-content::after {
137
- content: "";
138
- position: absolute;
139
- top: 100%;
140
- left: 50%;
141
- margin-left: -5px;
142
- border-width: 5px;
143
- border-style: solid;
144
- border-color: #333 transparent transparent transparent;
145
- }
146
- /* 鼠标悬浮在包裹元素上时,显示提示框 */
147
- .tooltip-wrapper:hover{
148
- .tooltip-content {
149
- visibility: visible !important;
150
- opacity: 0.8;
151
- }
152
- }
153
- </style>
154
- <style scoped lang="less">
155
- #answer-radio {
156
- .switch-page {
157
- margin-top: 10px;
158
- display: flex;
159
- flex-direction: column;
160
- align-items: center;
161
- .switch-page-btn {
162
- width: 80px;
163
- height: 24px;
164
- border-radius: 15px;
165
- border: solid 1px #366AFF;
166
- color: #366AFF;
167
- line-height: 24px;
168
- text-align: center;
169
- cursor: pointer;
170
- font-size: 12px;
171
- }
172
- }
173
- .radio-description {
174
- word-wrap: break-word;
175
- word-break: break-all;
176
- overflow: hidden;
177
- /*padding: 8px 10px 10px 0;*/
178
- padding-bottom: 10px;
179
- height: auto;
180
- /* border-bottom: 1px solid #EEEEEE;*/
181
- }
182
-
183
- .bottom-link {
184
- height: 1px;
185
- background-color: #EEEEEE;
186
- }
187
-
188
- .options-list {
189
- padding-top: 4px;
190
- /* padding-top: 10px;*/
191
- /*padding-right: 10px;*/
192
-
193
- .options-item {
194
- // height: 25px;
195
- line-height: 25px;
196
- background-color: #ffffff;
197
- color: #366aff;
198
- cursor: pointer;
199
- display: flex;
200
- align-items: center;
201
- justify-content: space-between;
202
-
203
- .options-item-name {
204
- flex: auto;
205
- }
206
-
207
- i {
208
- width: 16px;
209
- flex: none;
210
- padding-left: 10px;
211
- }
212
-
213
- .options-item-text {
214
- text-overflow: ellipsis;
215
- display: -webkit-box; //使用了flex,需要加
216
- overflow: hidden; //超出隐藏
217
- word-break: break-all; //纯英文、数字、中文
218
- text-overflow: ellipsis; //省略号
219
- -webkit-box-orient: vertical; //垂直
220
- -webkit-line-clamp: 1; //显示一行
221
- white-space: pre-line; //
222
- }
223
- }
224
-
225
- &.isKnowledgeSummary {
226
- background: #EEF1FF;
227
- border-radius: 10px;
228
- padding: 10px;
229
-
230
- .options-item {
231
- background: #EEF1FF;
232
- }
233
- }
234
-
235
- .tips {
236
- width: 131px;
237
- height: 22px;
238
- background: #366AFF;
239
- border-radius: 5px;
240
- text-align: center;
241
- line-height: 22px;
242
- color: #fff;
243
- font-size: 12px;
244
- }
245
-
246
- .recommend-item {
247
- padding: 8px 0;
248
- }
249
-
250
- .last-item {
251
- padding-top: 8px;
252
- }
253
-
254
- .end {
255
- border-bottom-left-radius: 25px !important;
256
- border-bottom-right-radius: 25px !important;
257
- }
258
- }
259
- }
1
+ <template>
2
+ <div id="answer-radio">
3
+ <p class="radio-description" v-html="msg.content.description"
4
+ v-if="msg.content.description && !msg.content.isKnowledgeSummary"></p>
5
+ <div class="bottom-link" v-if="msg.content.description && !msg.content.isKnowledgeSummary"></div>
6
+ <div :class="['options-list', msg.content.isKnowledgeSummary ? 'isKnowledgeSummary' : '']">
7
+ <div v-if="msg.content.isKnowledgeSummary" class="tips">{{$t('dragonCommon.AIrecommends')}}</div>
8
+ <div v-for="(option, index) in showOptions" class="options-item"
9
+ :class="index !== msg.content.options.length - 1 ? 'recommend-item' : 'last-item'" :key="msg.nodeId + '_' + index"
10
+ @click="radioClick(msg, option, index)">
11
+ <!-- <el-tooltip :disabled="!isMobile" class="item" effect="dark" :content="$t('dragonCommon.clickme')" placement="top">
12
+ <span class="options-item-name"> {{ getFilteredName(option.name) }}</span>
13
+ </el-tooltip> -->
14
+ <div class="tooltip-wrapper">
15
+ <span class="tooltip-text options-item-name"> {{ getFilteredName(option.name) }}</span>
16
+ <span v-if="!isMobile" class="tooltip-content">{{$t('dragonCommon.clickme')}}</span>
17
+ </div>
18
+ <i class="arsenal_icon arsenalangle-right-solid"></i>
19
+ </div>
20
+ </div>
21
+ <div v-if="showPage" class="switch-page">
22
+ <span @click="changeActivePage" class="switch-page-btn">{{$t('dragonCommon.refresh')}}</span>
23
+ <!-- <span @click="showMore" class="switch-page-btn">查看更多</span> -->
24
+ </div>
25
+ </div>
26
+ </template>
27
+
28
+ <script>
29
+ export default {
30
+ name: "answerRadio",
31
+ data() {
32
+ return {
33
+ isMobile: false,
34
+ formatOptions: [],
35
+ activeIndex: 0,
36
+ pageSize: 5,
37
+ showPage: false,
38
+ showOptions: [],
39
+ }
40
+ },
41
+ props: ['msg','language'],
42
+ mounted() {
43
+ console.log("askbot-dragon: systemLanguage", sessionStorage.getItem("systemLanguage"));
44
+ this.$i18n.locale = sessionStorage.getItem("systemLanguage") || 'cn';
45
+ console.log(this.msg, 'msg');
46
+ // 关键词推荐 前端分页
47
+ if ((this.msg.id == "recdNodeId" || this.msg.content.groupVisible) && this.msg.content.options.length > this.pageSize) {
48
+ this.pageSize = this.msg.content.groupNumber || 5;
49
+ this.formatOptions = this.chunkArray(this.msg.content.options, this.pageSize);
50
+ this.activeIndex = 0;
51
+ this.showPage = true;
52
+ } else {
53
+ this.formatOptions = [this.msg.content.options];
54
+ this.activeIndex = 0;
55
+ }
56
+ this.showOptions = this.formatOptions[0];
57
+ this.judgeIsMobile();
58
+ },
59
+ methods: {
60
+ getFilteredName(name) {
61
+ if (typeof name === 'string') {
62
+ return name.replace(/<\/?p>/g, '');
63
+ } else {
64
+ return name;
65
+ }
66
+ },
67
+ showMore(){
68
+ if (this.activeIndex == this.formatOptions.length - 2) {
69
+ this.activeIndex++;
70
+ this.showPage = false;
71
+ } else {
72
+ this.activeIndex++;
73
+ }
74
+ this.showOptions = [...this.showOptions.concat(this.formatOptions[this.activeIndex])]
75
+ },
76
+ changeActivePage(){
77
+ if (this.activeIndex >= this.formatOptions.length - 1) {
78
+ this.activeIndex = 0;
79
+ } else {
80
+ this.activeIndex++;
81
+ }
82
+ this.showOptions = this.formatOptions[this.activeIndex]
83
+ },
84
+ chunkArray(array, size) {
85
+ let chunks = [];
86
+ for (let i = 0; i < array.length; i += size) {
87
+ let chunk = array.slice(i, i + size);
88
+ chunks.push(chunk);
89
+ }
90
+ return chunks;
91
+ },
92
+ judgeIsMobile() {
93
+ let flag = navigator.userAgent.match(
94
+ /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
95
+ );
96
+ if (flag) {
97
+ this.isMobile = true;
98
+ } else {
99
+ this.isMobile = false;
100
+ }
101
+ console.log(this.isMobile, 'this.isMobile');
102
+ },
103
+ radioClick(msg, option, index) {
104
+ let value = option.answerId ? msg.id + '_' + index + '_' + option.value + '_' + option.name + '_' + option.answerId : msg.id + '_' + index + '_' + option.value + '_' + option.name
105
+ this.$emit('onRadioClick', value, option.name, msg.apiKey, msg.actionCategory, msg.msgId ? msg.msgId : '', option.apiKey)
106
+ }
107
+ }
108
+
109
+ }
110
+ </script>
111
+ <style lang="less">
112
+ /* 包裹元素,相对定位,用于定位提示框 */
113
+ .tooltip-wrapper {
114
+ position: relative;
115
+ display: inline-block;
116
+ }
117
+ /* 实际要显示的文本内容 */
118
+ /* 提示框样式 */
119
+ .tooltip-content {
120
+ visibility: hidden;
121
+ background-color: #333;
122
+ color: white;
123
+ text-align: center;
124
+ border-radius: 6px;
125
+ padding: 5px 10px;
126
+ position: absolute;
127
+ z-index: 1;
128
+ bottom: 100%;
129
+ left: 50%;
130
+ transform: translateX(-50%);
131
+ white-space: nowrap;
132
+ opacity: 0;
133
+ transition: opacity 0.3s;
134
+ }
135
+ /* 提示框下方的小三角样式(使用伪元素实现) */
136
+ .tooltip-content::after {
137
+ content: "";
138
+ position: absolute;
139
+ top: 100%;
140
+ left: 50%;
141
+ margin-left: -5px;
142
+ border-width: 5px;
143
+ border-style: solid;
144
+ border-color: #333 transparent transparent transparent;
145
+ }
146
+ /* 鼠标悬浮在包裹元素上时,显示提示框 */
147
+ .tooltip-wrapper:hover{
148
+ .tooltip-content {
149
+ visibility: visible !important;
150
+ opacity: 0.8;
151
+ }
152
+ }
153
+ </style>
154
+ <style scoped lang="less">
155
+ #answer-radio {
156
+ .switch-page {
157
+ margin-top: 10px;
158
+ display: flex;
159
+ flex-direction: column;
160
+ align-items: center;
161
+ .switch-page-btn {
162
+ width: 80px;
163
+ height: 24px;
164
+ border-radius: 15px;
165
+ border: solid 1px #366AFF;
166
+ color: #366AFF;
167
+ line-height: 24px;
168
+ text-align: center;
169
+ cursor: pointer;
170
+ font-size: 12px;
171
+ }
172
+ }
173
+ .radio-description {
174
+ word-wrap: break-word;
175
+ word-break: break-all;
176
+ overflow: hidden;
177
+ /*padding: 8px 10px 10px 0;*/
178
+ padding-bottom: 10px;
179
+ height: auto;
180
+ /* border-bottom: 1px solid #EEEEEE;*/
181
+ }
182
+
183
+ .bottom-link {
184
+ height: 1px;
185
+ background-color: #EEEEEE;
186
+ }
187
+
188
+ .options-list {
189
+ padding-top: 4px;
190
+ /* padding-top: 10px;*/
191
+ /*padding-right: 10px;*/
192
+
193
+ .options-item {
194
+ // height: 25px;
195
+ line-height: 25px;
196
+ background-color: #ffffff;
197
+ color: #366aff;
198
+ cursor: pointer;
199
+ display: flex;
200
+ align-items: center;
201
+ justify-content: space-between;
202
+
203
+ .options-item-name {
204
+ flex: auto;
205
+ }
206
+
207
+ i {
208
+ width: 16px;
209
+ flex: none;
210
+ padding-left: 10px;
211
+ }
212
+
213
+ .options-item-text {
214
+ text-overflow: ellipsis;
215
+ display: -webkit-box; //使用了flex,需要加
216
+ overflow: hidden; //超出隐藏
217
+ word-break: break-all; //纯英文、数字、中文
218
+ text-overflow: ellipsis; //省略号
219
+ -webkit-box-orient: vertical; //垂直
220
+ -webkit-line-clamp: 1; //显示一行
221
+ white-space: pre-line; //
222
+ }
223
+ }
224
+
225
+ &.isKnowledgeSummary {
226
+ background: #EEF1FF;
227
+ border-radius: 10px;
228
+ padding: 10px;
229
+
230
+ .options-item {
231
+ background: #EEF1FF;
232
+ }
233
+ }
234
+
235
+ .tips {
236
+ width: 131px;
237
+ height: 22px;
238
+ background: #366AFF;
239
+ border-radius: 5px;
240
+ text-align: center;
241
+ line-height: 22px;
242
+ color: #fff;
243
+ font-size: 12px;
244
+ }
245
+
246
+ .recommend-item {
247
+ padding: 8px 0;
248
+ }
249
+
250
+ .last-item {
251
+ padding-top: 8px;
252
+ }
253
+
254
+ .end {
255
+ border-bottom-left-radius: 25px !important;
256
+ border-bottom-right-radius: 25px !important;
257
+ }
258
+ }
259
+ }
260
260
  </style>
@@ -1,58 +1,58 @@
1
- <template>
2
- <view class="media-body-ps">
3
- <view class="other" v-html="message.content.replyText"></view>
4
- <view
5
- v-for="(reply_option, index) in message.content.replyOptions"
6
- v-bind:class="[index == message.content.replyOptions.length - 1 ? 'end' : '', 'ps']"
7
- :key="index"
8
- :data-name="reply_option.name"
9
- :data-answer="reply_option.answer"
10
- @click="onClick(reply_option)" >
11
- <view :data-name="reply_option.name"
12
- :data-answer="reply_option.answer">{{ reply_option.name }}
13
- </view>
14
- </view>
15
- </view>
16
- </template>
17
- <script>
18
- export default {
19
- name:"DissatisfactionOptions",
20
- props:["message"],
21
- methods:{
22
- onClick(option){
23
- this.$emit('onOption',option);
24
- }
25
- }
26
-
27
- }
28
- </script>
29
- <style lang='less'>
30
- .other {
31
- font-size: 14px;
32
- word-wrap: break-word;
33
- word-break: break-all;
34
- overflow: hidden;
35
- padding: 8px 20px 8px 15px;
36
- height: auto;
37
- }
38
- .ps {
39
- padding: 8px 20px 8px 15px;
40
- height: auto;
41
- border-top: 1px solid #F4F8FC;
42
- background-color: #ffffff;
43
- color: var(--color);
44
- cursor: pointer;
45
- font-size: 14px;
46
- display: flex;
47
- flex-direction: row;
48
- justify-content: space-between;
49
- i{
50
- margin-left: 20px;
51
- }
52
- }
53
- .end {
54
- border: 1px solid #F4F8FC;
55
- border-bottom-left-radius: 32px !important;
56
- border-bottom-right-radius: 32px !important;
57
- }
1
+ <template>
2
+ <view class="media-body-ps">
3
+ <view class="other" v-html="message.content.replyText"></view>
4
+ <view
5
+ v-for="(reply_option, index) in message.content.replyOptions"
6
+ v-bind:class="[index == message.content.replyOptions.length - 1 ? 'end' : '', 'ps']"
7
+ :key="index"
8
+ :data-name="reply_option.name"
9
+ :data-answer="reply_option.answer"
10
+ @click="onClick(reply_option)" >
11
+ <view :data-name="reply_option.name"
12
+ :data-answer="reply_option.answer">{{ reply_option.name }}
13
+ </view>
14
+ </view>
15
+ </view>
16
+ </template>
17
+ <script>
18
+ export default {
19
+ name:"DissatisfactionOptions",
20
+ props:["message"],
21
+ methods:{
22
+ onClick(option){
23
+ this.$emit('onOption',option);
24
+ }
25
+ }
26
+
27
+ }
28
+ </script>
29
+ <style lang='less'>
30
+ .other {
31
+ font-size: 14px;
32
+ word-wrap: break-word;
33
+ word-break: break-all;
34
+ overflow: hidden;
35
+ padding: 8px 20px 8px 15px;
36
+ height: auto;
37
+ }
38
+ .ps {
39
+ padding: 8px 20px 8px 15px;
40
+ height: auto;
41
+ border-top: 1px solid #F4F8FC;
42
+ background-color: #ffffff;
43
+ color: var(--color);
44
+ cursor: pointer;
45
+ font-size: 14px;
46
+ display: flex;
47
+ flex-direction: row;
48
+ justify-content: space-between;
49
+ i{
50
+ margin-left: 20px;
51
+ }
52
+ }
53
+ .end {
54
+ border: 1px solid #F4F8FC;
55
+ border-bottom-left-radius: 32px !important;
56
+ border-bottom-right-radius: 32px !important;
57
+ }
58
58
  </style>