@tencentcloud/ai-desk-customer-vue 1.4.0 → 1.5.1

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 (58) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/assets/feedback_dialog_close.svg +3 -0
  3. package/assets/feedback_dislike_after.svg +3 -0
  4. package/assets/feedback_dislike_before.svg +10 -0
  5. package/assets/feedback_dislike_hover.svg +10 -0
  6. package/assets/feedback_like_after.svg +14 -0
  7. package/assets/feedback_like_before.svg +10 -0
  8. package/assets/feedback_like_hover.svg +10 -0
  9. package/assets/green_check.svg +4 -0
  10. package/components/CustomerServiceChat/index-web.vue +18 -0
  11. package/components/CustomerServiceChat/message-input/message-input-editor-web.vue +1 -0
  12. package/components/CustomerServiceChat/message-input/message-input-quote/index.vue +29 -20
  13. package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/emoji-picker-dialog.vue +35 -35
  14. package/components/CustomerServiceChat/message-input-toolbar/index-web.vue +1 -1
  15. package/components/CustomerServiceChat/message-list/index-web.vue +5 -0
  16. package/components/CustomerServiceChat/message-list/message-elements/feedback-button.vue +369 -0
  17. package/components/CustomerServiceChat/message-list/message-elements/message-bubble-web.vue +30 -11
  18. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/marked.ts +17 -10
  19. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-branch.vue +13 -5
  20. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-concurrency-limit.vue +1 -1
  21. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-desk.vue +8 -6
  22. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-ivr-form/form-branch.vue +117 -0
  23. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/{message-single-form → message-ivr-form}/form-input.vue +65 -111
  24. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/{message-single-form → message-ivr-form}/index.vue +7 -2
  25. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-branch/branch-pc.vue +5 -3
  26. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-branch/index.vue +3 -1
  27. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/input-mobile.vue +1 -0
  28. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/label-mobile.vue +4 -2
  29. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-pc/label-pc.vue +5 -3
  30. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/form-mobile.vue +17 -5
  31. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/form-pc.vue +21 -1
  32. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-order.vue +2 -1
  33. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-product-card.vue +2 -1
  34. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rating/message-rating-number.vue +9 -13
  35. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rating/message-rating-star.vue +11 -18
  36. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-robot-welcome.vue +1 -0
  37. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-stream.vue +14 -10
  38. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-timeout-warning.vue +29 -0
  39. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/styles/common.scss +1 -0
  40. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-plugin-web.vue +22 -2
  41. package/components/CustomerServiceChat/message-list/message-elements/message-quote/index-web.vue +6 -24
  42. package/components/CustomerServiceChat/message-list/message-elements/message-text.vue +0 -9
  43. package/components/CustomerServiceChat/message-list/message-elements/read-status/index.vue +31 -20
  44. package/components/CustomerServiceChat/message-list/message-elements/simple-message-list/index.vue +2 -1
  45. package/components/common/Toast/index-web.vue +4 -2
  46. package/constant.ts +11 -1
  47. package/locales/en/aidesk.ts +28 -16
  48. package/locales/fil/aidesk.ts +28 -16
  49. package/locales/id/aidesk.ts +28 -16
  50. package/locales/ja/aidesk.ts +28 -16
  51. package/locales/ms/aidesk.ts +28 -16
  52. package/locales/ru/aidesk.ts +28 -16
  53. package/locales/th/aidesk.ts +28 -16
  54. package/locales/vi/aidesk.ts +28 -16
  55. package/locales/zh_cn/aidesk.ts +28 -16
  56. package/locales/zh_tw/aidesk.ts +28 -16
  57. package/package.json +1 -1
  58. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-single-form/form-branch.vue +0 -68
@@ -0,0 +1,117 @@
1
+ <template>
2
+ <div class="form-branch-container">
3
+ <p
4
+ v-if="props.title"
5
+ class="form-card-title"
6
+ >
7
+ {{ props.title }}
8
+ </p>
9
+ <div
10
+ v-for="(item, index) in props.list"
11
+ :key="index"
12
+ :class="getItemClass(item)"
13
+ @click="listItemClick(item)"
14
+ >
15
+ {{ item.content }}
16
+ </div>
17
+ </div>
18
+ </template>
19
+
20
+ <script lang="ts">
21
+ import vue from '../../../../../../../adapter-vue';
22
+ const { computed, ref } = vue;
23
+
24
+ interface branchItem {
25
+ content: string;
26
+ desc: string;
27
+ }
28
+
29
+ interface Props {
30
+ title: string;
31
+ list: branchItem[];
32
+ selectedContent: string;
33
+ }
34
+
35
+ export default {
36
+ props: {
37
+ title: {
38
+ type: String,
39
+ default: '',
40
+ },
41
+ list: {
42
+ type: Array,
43
+ default: () => [],
44
+ },
45
+ selectedContent: {
46
+ type: String,
47
+ default: '',
48
+ },
49
+ },
50
+ emits: ['input-click'],
51
+ setup(props: Props, { emit }) {
52
+ const disabled = ref<boolean>(false);
53
+ const selectedItem = ref<string>('');
54
+ const listItemClick = (branch: branchItem): void => {
55
+ if (disabled.value || props.selectedContent) {
56
+ return;
57
+ }
58
+ emit('input-click', branch);
59
+ disabled.value = true;
60
+ selectedItem.value = branch.content;
61
+ };
62
+ const getItemClass = (item: branchItem) => {
63
+ const classes:string[] = [];
64
+ if (props.selectedContent) {
65
+ classes.push(item.content === props.selectedContent ? 'item-selected' : 'item-disabled');
66
+ } else if (disabled.value) {
67
+ classes.push(item.content === selectedItem.value ? 'item-selected' : 'item-disabled');
68
+ }
69
+ classes.push('ivr-form-branch-item');
70
+ return classes;
71
+ };
72
+ return {
73
+ props,
74
+ listItemClick,
75
+ disabled,
76
+ selectedItem,
77
+ getItemClass
78
+ };
79
+ },
80
+ };
81
+ </script>
82
+ <style lang="scss">
83
+ .form-branch-container {
84
+ .form-card-title {
85
+ margin-bottom: 8px;
86
+ }
87
+
88
+ .ivr-form-branch-item {
89
+ cursor: pointer;
90
+ color: #1C66E5;
91
+ background-color: #fff;
92
+ border: 1px solid rgba(0, 110, 255, 0.3);
93
+ padding: 12px;
94
+ border-radius: 20px;
95
+ margin-top: 8px;
96
+ line-height: 16px;
97
+ width: -moz-fit-content;
98
+ max-width: fit-content;
99
+ font-family: PingFangSC-Regular;
100
+ min-width: 50px;
101
+ text-align: center;
102
+ word-wrap: break-word;
103
+ }
104
+ .item-disabled {
105
+ cursor: default !important;
106
+ opacity: 0.6;
107
+ color: #94BFFF;
108
+ background-color: #F5F9FF;
109
+ border: 1px solid rgba(0, 110, 255, 0.15);
110
+ }
111
+ .item-selected {
112
+ background-color: rgba(54, 141, 255, 0.15) !important;
113
+ position: relative;
114
+ cursor: default !important;
115
+ }
116
+ }
117
+ </style>
@@ -1,37 +1,25 @@
1
1
  <template>
2
- <div class="form-container" v-if="!isShowForm && !isFinish">
3
- <Icon :src="iconForm" width="65px" height="65px"/>
4
-
5
- <div class="right-container">
6
- <div class="card-title">
7
- {{ props.title }}
8
- </div>
9
- <div class="form-button" @click="showForm">
10
- {{ TUITranslateService.t("AIDesk.立即填写") }}
11
- </div>
12
- </div>
13
-
14
- </div>
15
- <div class="form-input-container" v-else-if="isShowForm && !isFinish">
2
+ <div class="form-input-container" v-if="!isFinish && !props.selectedContent">
16
3
  <div class="card-title">
17
- <!-- {{ props.title }} -->
18
- title
4
+ {{ props.title }}
19
5
  </div>
20
6
  <div class="form-input-box">
21
- <div class="form-input-line">
22
- <div class="form-label">
23
- <span class="required-icon" v-if="true" >{{'*'}}</span>
24
- <label>label</label>
25
- </div>
7
+ <div class="form-input-text">
26
8
  <input
27
9
  v-model="text"
28
- class="form-input"
10
+ :class="['form-input', isH5 ? 'form-input-h5' : '']"
29
11
  :placeholder="TUITranslateService.t('AIDesk.请输入内容')"
30
12
  >
13
+ <div v-if="validator" class="validator-line">
14
+ {{ TUITranslateService.t("AIDesk.请填写必填项") }}
15
+ </div>
16
+ </div>
17
+ <div @click="submitForm()" class="submit-icon">
18
+ <Icon :src="iconSend" width="30px" height="30px"/>
31
19
  </div>
32
20
  </div>
33
21
  </div>
34
- <div class="form-finish-container" v-else-if="isFinish">
22
+ <div class="form-finish-container" v-else-if="isFinish || props.selectedContent">
35
23
  <div class="card-title">
36
24
  <div>
37
25
  {{ props.title }}
@@ -42,7 +30,7 @@
42
30
  </div>
43
31
  </div>
44
32
  <div>
45
- {{ text }}
33
+ {{ props.selectedContent || text }}
46
34
  </div>
47
35
  </div>
48
36
  </template>
@@ -52,11 +40,14 @@ import vue from '../../../../../../../adapter-vue';
52
40
  import iconForm from '../../../../../../../assets/icon_form.png';
53
41
  import Icon from '../customer-icon.vue';
54
42
  import iconSucess from '../../../../../../../assets/icon_success.png';
43
+ import iconSend from '../../../../../../../assets/send_button_h5.svg';
55
44
  import { TUITranslateService } from '@tencentcloud/chat-uikit-engine';
56
- const { computed, ref} = vue;
45
+ import { isH5 } from '../../../../../../../utils/env';
46
+ const { ref } = vue;
57
47
 
58
48
  interface Props {
59
49
  title: string;
50
+ selectedContent: string;
60
51
  }
61
52
  export default {
62
53
  components: {
@@ -67,6 +58,10 @@ export default {
67
58
  type: String,
68
59
  default: '',
69
60
  },
61
+ selectedContent: {
62
+ type: String,
63
+ default: '',
64
+ },
70
65
  },
71
66
  emits: ['input-submit'],
72
67
  setup(props: Props, { emit }) {
@@ -74,29 +69,36 @@ export default {
74
69
  const text = ref<string>('');
75
70
  const isShowForm = ref<boolean>(false);
76
71
  const isFinish = ref<boolean>(false);
77
-
78
- const listItemClick = (): void => {
79
- disabled.value = true;
80
- isShowForm.value = false;
81
- isFinish.value = true;
82
- // emit('input-submit', text.value);
83
- };
72
+ const validator = ref<boolean>(false);
84
73
 
85
74
  const showForm = (): void => {
86
75
  isShowForm.value = true;
87
76
  }
88
77
 
78
+ const submitForm = (): void => {
79
+ if (text.value.trim() === '') {
80
+ validator.value = true;
81
+ return;
82
+ }
83
+ emit('input-submit', text.value);
84
+ isFinish.value = true;
85
+ validator.value = false;
86
+ }
87
+
89
88
  return {
90
89
  disabled,
91
90
  text,
92
- listItemClick,
93
91
  props,
94
92
  iconForm,
95
93
  isShowForm,
96
94
  showForm,
97
95
  iconSucess,
96
+ iconSend,
98
97
  isFinish,
99
- TUITranslateService
98
+ TUITranslateService,
99
+ submitForm,
100
+ validator,
101
+ isH5,
100
102
  };
101
103
  },
102
104
  };
@@ -111,9 +113,11 @@ export default {
111
113
  margin-left: 10px;
112
114
  .form-button {
113
115
  background-color: #1c66e5;
114
- color:#ffffff;
115
- padding:2px 12px;
116
- border-radius: 12px;
116
+ display: flex;
117
+ color: #ffffff;
118
+ padding: 4px 12px;
119
+ border-radius: 20px;
120
+ justify-content: center;
117
121
  }
118
122
  }
119
123
  }
@@ -124,47 +128,25 @@ export default {
124
128
  }
125
129
 
126
130
  .form-input-box {
131
+ display: flex;
132
+ gap: 5px;
127
133
  button:disabled {
128
134
  background: #d8d8d8;
129
135
  }
130
- .form-input-line {
136
+ .form-input-text {
131
137
  display:flex;
132
- margin-bottom: 10px;
133
- }
134
- .form-label {
135
- align-self: center;
136
- display:flex;
137
- width:66px;
138
- label {
139
- text-overflow: ellipsis;
140
- overflow: hidden;
141
- white-space: nowrap;
142
- }
143
-
144
- .required-icon {
145
- color: #e54545;
146
- font-size: 16px;
147
- }
138
+ flex:1;
139
+ flex-direction: column;
140
+ min-width: 200px;
148
141
  }
149
142
  .form-input {
150
143
  flex:1;
151
- margin-left:10px;
152
144
  height: 27px;
153
145
  border-radius: 8px;
154
146
  border: 0px;
155
147
  }
156
- .form-input-radio {
157
- margin-left:10px;
158
- display:flex;
159
- align-items: center;
160
- flex-flow: wrap;
161
- label {
162
- margin-right: 5px;
163
- }
164
-
165
- .form-radio {
166
- margin:0px 5px 0px 0px;
167
- }
148
+ .form-input-h5 {
149
+ background: #f3f4f7;
168
150
  }
169
151
  }
170
152
 
@@ -194,51 +176,23 @@ export default {
194
176
  }
195
177
 
196
178
  .form-finish-container {
197
- .card-title {
198
- display:flex;
199
- justify-content: space-between;
200
- margin-bottom: 10px;
201
- }
202
- .form-finish-title-right {
203
- display:flex;
204
- }
179
+ .card-title {
180
+ display:flex;
181
+ justify-content: space-between;
182
+ margin-bottom: 10px;
183
+ align-items: flex-start;
205
184
  }
206
- input[type="radio"] {
207
- +label {
208
- position: relative;
209
- cursor: pointer;
210
- margin-left: 20px;
211
- &::before {
212
- content: "";
213
- position: absolute;
214
- left: -20px;
215
- top:2px;
216
- border-radius: 50%;
217
- // border: 1px solid #6f686a;
218
- width: 16px;
219
- height: 16px;
220
- background-image: url('../../../../../../../assets/radio-uncheck.png');
221
- background-size: cover;
222
- background-position: center;
223
- }
224
- &::after {
225
- content: "";
226
- position: absolute;
227
- left: -20px;
228
- top: 2px;
229
- border-radius: 50%;
230
- width: 16px;
231
- height: 16px;
232
- }
233
- }
234
- &:checked {
235
- + label::after {
236
- background-image: url('../../../../../../../assets/radio-check.png');
237
- background-size: cover;
238
- }
185
+ .form-finish-title-right {
186
+ display: flex;
187
+ word-break: keep-all;
239
188
  }
240
189
  }
241
-
242
-
243
-
190
+ .validator-line {
191
+ font-size: 12px;
192
+ color: #e54545;
193
+ margin-top: 3px;
194
+ }
195
+ .submit-icon {
196
+ cursor: pointer;
197
+ }
244
198
  </style>
@@ -7,16 +7,18 @@
7
7
  <FormBranch
8
8
  :title="content.header"
9
9
  :list="content.items"
10
+ :selectedContent="content.selected && content.selected.content"
10
11
  @input-click="handleContentListItemClick"
11
12
  />
12
13
  </div>
13
14
  </div>
14
15
  <div
15
16
  v-else
16
- class="message-form"
17
+ class="message-form-input"
17
18
  >
18
19
  <FormInput
19
20
  :title="content.header"
21
+ :selectedContent="content.selected && content.selected.content"
20
22
  @input-submit="handleFormSaveInputSubmit"
21
23
  />
22
24
  </div>
@@ -55,6 +57,9 @@ export default {
55
57
  type: 0,
56
58
  header: '',
57
59
  items: [],
60
+ selected:{
61
+ content: '',
62
+ }
58
63
  };
59
64
  });
60
65
 
@@ -74,7 +79,7 @@ export default {
74
79
  };
75
80
  </script>
76
81
  <style lang="scss">
77
- .message-form {
82
+ .message-form-input {
78
83
  max-width: 300px;
79
84
  }
80
85
  </style>
@@ -76,10 +76,12 @@ export default {
76
76
  <style lang="scss">
77
77
  .form-branch-container {
78
78
  .card-title-container {
79
- padding: 12px;
79
+ padding: 8px 16px;
80
80
  border-radius: 0 10px 10px;
81
- width:fit-content;
82
81
  font-family: PingFangSC-Regular;
82
+ overflow-wrap: break-word;
83
+ word-break: normal;
84
+ max-width: fit-content;
83
85
  }
84
86
  .card-title {
85
87
  background-color: #f3f4f7;
@@ -98,13 +100,13 @@ export default {
98
100
  margin-top: 8px;
99
101
  cursor: pointer;
100
102
  line-height: 16px;
101
- width:fit-content;
102
103
  font-family: PingFangSC-Regular;
103
104
  min-width: 50px;
104
105
  text-align: center;
105
106
  overflow-wrap: break-word;
106
107
  word-wrap: break-word;
107
108
  word-break: normal;
109
+ max-width: fit-content;
108
110
  }
109
111
  .warning-item {
110
112
  color: #ff9800;
@@ -56,5 +56,7 @@ export default {
56
56
  };
57
57
  </script>
58
58
  <style lang="scss">
59
-
59
+ .message-form {
60
+ max-width: 100%
61
+ }
60
62
  </style>
@@ -86,6 +86,7 @@ export default {
86
86
  }
87
87
  .form-input-mobile {
88
88
  border-color: transparent;
89
+ background-color: transparent;
89
90
  padding: 5px 8px;
90
91
  font-size: 14px;
91
92
  }
@@ -22,8 +22,10 @@
22
22
  </script>
23
23
  <style lang="scss">
24
24
  .form-label {
25
- display:flex;
26
- width:70px;
25
+ width: 100px;
27
26
  padding-bottom: 8px;
27
+ margin-right: 8px;
28
+ overflow-wrap: break-word;
29
+ word-break: normal;
28
30
  }
29
31
  </style>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="form-label">
2
+ <div class="form-label-pc">
3
3
  <div v-if="isRequired" style="color: red;">
4
4
  *&nbsp;
5
5
  </div>
@@ -21,9 +21,11 @@
21
21
  }
22
22
  </script>
23
23
  <style lang="scss">
24
- .form-label {
24
+ .form-label-pc {
25
25
  display:flex;
26
26
  padding-bottom: 8px;
27
- margin-top:12px;
27
+ margin-top: 12px;
28
+ overflow-wrap: break-word;
29
+ word-break: normal;
28
30
  }
29
31
  </style>
@@ -17,7 +17,7 @@
17
17
  >
18
18
  <div style="height:100%;overflow-y: auto;">
19
19
  <div class="dialog-title">
20
- <div>
20
+ <div class="dialog-title-tip">
21
21
  {{ props.payload.content.tip }}
22
22
  </div>
23
23
  <div @click="closeDialog">
@@ -35,7 +35,7 @@
35
35
  <RadioMobile :chooseItemList="item.chooseItemList" :name="item.name" :isRequired="item.isRequired" @input-change="handleInputChange" :validator="item.isRequired == 1 && isValid(item.name)"/>
36
36
  </div>
37
37
  <div v-else class="variable-value-container-mobile">
38
- <div class="variable-value-label">
38
+ <div class="variable-value-label-mobile">
39
39
  {{ item.name }}
40
40
  </div>
41
41
  <div class="variable-value">
@@ -365,6 +365,11 @@ export default {
365
365
  padding: 20px;
366
366
  font-size: 16px;
367
367
  font-weight: 500;
368
+ .dialog-title-tip {
369
+ width: 100%;
370
+ overflow-wrap: anywhere;
371
+ word-break: normal;
372
+ }
368
373
  .dialog-close {
369
374
  color: rgba(153,153,153,1);
370
375
  }
@@ -376,13 +381,20 @@ export default {
376
381
  align-items: center;
377
382
  border-bottom: 1px solid #e7e7e7;
378
383
  gap: 5px;
384
+ width: 100%;
385
+ box-sizing: border-box;
386
+ overflow: hidden;
379
387
  }
380
- .variable-value-label {
381
- width: 70px;
382
- white-space: nowrap;
388
+ .variable-value-label-mobile {
389
+ width: 100px;
390
+ overflow-wrap: break-word;
391
+ word-break: normal;
383
392
  }
384
393
  .variable-value {
385
394
  flex: 1;
395
+ overflow-wrap: break-word;
396
+ word-break: normal;
397
+ min-width: 0;
386
398
  }
387
399
  .button-container {
388
400
  display: flex;
@@ -6,7 +6,9 @@
6
6
  </div>
7
7
  <div class="form-finish-title-right" v-if="finishSubmit || props.payload.nodeStatus == 2" >
8
8
  <Icon :src="iconSucess" style="margin:0px 4px"/>
9
- {{ TUITranslateService.t("AIDesk.已提交") }}
9
+ <div class="form-finish-title">
10
+ {{ TUITranslateService.t("AIDesk.已提交") }}
11
+ </div>
10
12
  </div>
11
13
  </div>
12
14
 
@@ -160,9 +162,21 @@ export default {
160
162
  justify-content: space-between;
161
163
  align-items: center;
162
164
  margin-bottom: 12px;
165
+ width: 100%;
166
+ }
167
+ .form-title {
168
+ flex: 1;
169
+ min-width: 0;
170
+ overflow-wrap: break-word;
171
+ word-break: normal;
172
+ padding-right: 8px;
173
+ box-sizing: border-box;
163
174
  }
164
175
  .form-finish-title-right {
165
176
  display: flex;
177
+ flex-shrink: 0;
178
+ align-items: center;
179
+ max-width: 100%;
166
180
  }
167
181
  .button-container {
168
182
  display: flex;
@@ -191,5 +205,11 @@ export default {
191
205
  .variable-value-container {
192
206
  padding-bottom: 8px;
193
207
  margin-top: 3px;
208
+ overflow-wrap: break-word;
209
+ word-break: normal;
210
+ }
211
+ .form-finish-title {
212
+ word-break: keep-all;
213
+ white-space: nowrap;
194
214
  }
195
215
  </style>
@@ -95,7 +95,8 @@ export default {
95
95
  text-overflow: ellipsis;
96
96
  -webkit-line-clamp: 1;
97
97
  -webkit-box-orient: vertical;
98
- word-break: break-all;
98
+ overflow-wrap: break-word;
99
+ word-break: normal;
99
100
  }
100
101
 
101
102
  .order-description {
@@ -104,7 +104,8 @@ export default {
104
104
  text-overflow: ellipsis;
105
105
  -webkit-line-clamp: 2;
106
106
  -webkit-box-orient: vertical;
107
- word-break: break-all;
107
+ overflow-wrap: break-word;
108
+ word-break: normal;
108
109
  }
109
110
 
110
111
  .product-card-description-block {
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="message-rating-star">
3
- <p class="rating-head">
3
+ <p class="rating-head-tail">
4
4
  {{ props.ratingTemplate.head }}
5
5
  </p>
6
6
 
@@ -46,7 +46,7 @@
46
46
  </div>
47
47
  <p
48
48
  v-if="hasReply"
49
- class="rating-tail"
49
+ class="rating-head-tail"
50
50
  :style="{
51
51
  marginTop: 20 + 'px',
52
52
  }"
@@ -108,13 +108,13 @@ export default {
108
108
  });
109
109
 
110
110
  const setValue = (val: number) => {
111
- if (!hasReply.value) {
111
+ if (!hasReply.value && !hasExpire.value) {
112
112
  selectValue.value = val;
113
113
  }
114
114
  };
115
115
 
116
116
  const setHoverValue = (value: number) => {
117
- if (!hasReply.value) {
117
+ if (!hasReply.value && !hasExpire.value) {
118
118
  hoverValue.value = value;
119
119
  }
120
120
  };
@@ -155,16 +155,11 @@ export default {
155
155
  };
156
156
  </script>
157
157
  <style lang="scss" scoped>
158
- .rating-head {
159
- font-size: 14px;
160
- font-weight: 400;
161
- color: #999;
162
- }
163
-
164
- .rating-tail {
158
+ .rating-head-tail {
165
159
  font-size: 14px;
166
160
  font-weight: 400;
167
161
  color: #999;
162
+ word-break: break-word;
168
163
  }
169
164
 
170
165
  .card-title {
@@ -178,11 +173,12 @@ export default {
178
173
  border-radius: 20px;
179
174
  border: 0;
180
175
  margin-top: 10px;
181
- padding-top: 20px;
182
- padding-bottom: 20px;
176
+ min-width: 240px;
177
+ padding: 10px;
183
178
 
184
179
  button:disabled {
185
180
  background: #d8d8d8;
181
+ cursor: default;
186
182
  }
187
183
  }
188
184