@tencentcloud/ai-desk-customer-vue 0.7.0 → 1.0.0
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.
- package/CHANGELOG.md +5 -3
- package/README.md +153 -50
- package/components/CustomerServiceChat/chat-header/index-web.vue +2 -2
- package/components/CustomerServiceChat/index-web.vue +71 -11
- package/components/CustomerServiceChat/message-input/message-input-editor-web.vue +7 -1
- package/components/CustomerServiceChat/message-input-toolbar/emoji-dialog-mobile/emoji-dialog-mobile.vue +2 -1
- package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/emoji-picker-dialog.vue +2 -1
- package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/index.vue +2 -1
- package/components/CustomerServiceChat/message-input-toolbar/file-upload/index.vue +3 -2
- package/components/CustomerServiceChat/message-input-toolbar/image-upload/index.vue +4 -3
- package/components/CustomerServiceChat/message-input-toolbar/index-web.vue +2 -2
- package/components/CustomerServiceChat/message-input-toolbar/video-upload/index.vue +2 -2
- package/components/CustomerServiceChat/message-list/message-elements/message-bubble-web.vue +19 -0
- package/components/CustomerServiceChat/message-list/message-elements/message-custom.vue +6 -2
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/marked.ts +4 -0
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-branch.vue +13 -4
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/input-mobile.vue +4 -2
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/radios-mobile.vue +4 -2
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-pc/input-pc.vue +4 -2
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-pc/radio-pc.vue +5 -3
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/form-mobile.vue +6 -4
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/form-pc.vue +5 -3
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-product-card.vue +21 -11
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rating/message-rating-number.vue +6 -6
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rating/message-rating-star.vue +14 -14
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-robot-welcome.vue +2 -6
- package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-single-form/form-input.vue +6 -4
- package/components/CustomerServiceChat/message-list/message-elements/message-location.vue +2 -1
- package/components/CustomerServiceChat/message-list/message-elements/message-text.vue +1 -1
- package/components/CustomerServiceChat/message-list/message-elements/message-thinking.vue +2 -2
- package/components/CustomerServiceChat/message-list/message-tool/index-web.vue +1 -1
- package/components/CustomerServiceChat/message-list/message-tool/message-revoked.vue +1 -0
- package/components/CustomerServiceChat/message-list/scroll-button/index.vue +3 -1
- package/components/CustomerServiceChat/message-toolbar-button/index.vue +2 -2
- package/components/common/Dialog/index.vue +2 -2
- package/components/common/ImagePreviewer/index-web.vue +2 -2
- package/constant.ts +14 -0
- package/excluded-list.txt +0 -1
- package/index.ts +1 -6
- package/locales/en/TUIChat.ts +158 -0
- package/locales/en/aidesk.ts +16 -0
- package/locales/en/component.ts +6 -0
- package/locales/en/index.ts +26 -0
- package/locales/en/time.ts +37 -0
- package/locales/fil/TUIChat.ts +160 -0
- package/locales/fil/aidesk.ts +16 -0
- package/locales/fil/component.ts +6 -0
- package/locales/fil/index.ts +25 -0
- package/locales/fil/time.ts +18 -0
- package/locales/id/TUIChat.ts +164 -0
- package/locales/id/aidesk.ts +16 -0
- package/locales/id/component.ts +6 -0
- package/locales/id/index.ts +26 -0
- package/locales/id/time.ts +19 -0
- package/locales/index.ts +30 -0
- package/locales/ja/TUIChat.ts +165 -0
- package/locales/ja/aidesk.ts +16 -0
- package/locales/ja/component.ts +6 -0
- package/locales/ja/index.ts +26 -0
- package/locales/ja/time.ts +18 -0
- package/locales/ms/TUIChat.ts +165 -0
- package/locales/ms/aidesk.ts +16 -0
- package/locales/ms/component.ts +6 -0
- package/locales/ms/index.ts +26 -0
- package/locales/ms/time.ts +18 -0
- package/locales/ru/TUIChat.ts +158 -0
- package/locales/ru/aidesk.ts +16 -0
- package/locales/ru/component.ts +7 -0
- package/locales/ru/index.ts +26 -0
- package/locales/ru/time.ts +30 -0
- package/locales/th/TUIChat.ts +165 -0
- package/locales/th/aidesk.ts +16 -0
- package/locales/th/component.ts +6 -0
- package/locales/th/index.ts +26 -0
- package/locales/th/time.ts +18 -0
- package/locales/vi/TUIChat.ts +156 -0
- package/locales/vi/aidesk.ts +16 -0
- package/locales/vi/component.ts +6 -0
- package/locales/vi/index.ts +26 -0
- package/locales/vi/time.ts +18 -0
- package/locales/zh_cn/TUIChat.ts +158 -0
- package/locales/zh_cn/aidesk.ts +17 -0
- package/locales/zh_cn/component.ts +6 -0
- package/locales/zh_cn/index.ts +26 -0
- package/locales/zh_cn/time.ts +37 -0
- package/locales/zh_tw/TUIChat.ts +158 -0
- package/locales/zh_tw/aidesk.ts +16 -0
- package/locales/zh_tw/component.ts +6 -0
- package/locales/zh_tw/index.ts +26 -0
- package/locales/zh_tw/time.ts +37 -0
- package/package.json +2 -2
- package/server.ts +14 -2
- package/utils/index.ts +6 -16
- package/utils/utils.ts +4 -5
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<div :class="['video-upload', !isPC && 'video-upload-h5']">
|
|
11
11
|
<input
|
|
12
12
|
ref="inputRef"
|
|
13
|
-
title="视频"
|
|
13
|
+
:title="TUITranslateService.t('视频')"
|
|
14
14
|
type="file"
|
|
15
15
|
data-type="video"
|
|
16
16
|
accept="video/*"
|
|
@@ -27,8 +27,8 @@ import {
|
|
|
27
27
|
IConversationModel,
|
|
28
28
|
SendMessageParams,
|
|
29
29
|
SendMessageOptions,
|
|
30
|
+
TUITranslateService
|
|
30
31
|
} from '@tencentcloud/chat-uikit-engine';
|
|
31
|
-
import { TUIGlobal } from '@tencentcloud/universal-api';
|
|
32
32
|
import vue from '../../../../adapter-vue';
|
|
33
33
|
import { isPC } from '../../../../utils/env';
|
|
34
34
|
import ToolbarItemContainer from '../toolbar-item-container/index.vue';
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
isNoPadding && isBlink ? 'blink-shadow' : '',
|
|
45
45
|
!isNoPadding && isBlink ? 'blink-content' : '',
|
|
46
46
|
isMultiBranchMsg?'multi-branch-message':'',
|
|
47
|
+
(isProductCardMessage && isH5) ? 'product-message-bubble-h5' : (isProductCardMessage ? 'product-message-bubble' : ''),
|
|
47
48
|
isPC ? '':'body-mobile',
|
|
48
49
|
]"
|
|
49
50
|
>
|
|
@@ -141,6 +142,7 @@ import loadingIcon from '../../../../assets/loading.png';
|
|
|
141
142
|
import customerAvatar from '../../../../assets/customer_avatar.png';
|
|
142
143
|
import { shallowCopyMessage } from '../../../../utils/utils';
|
|
143
144
|
import { isPC,isH5 } from '../../../../utils/env';
|
|
145
|
+
import { CUSTOM_MESSAGE_SRC } from '../../../../constant';
|
|
144
146
|
const { computed, toRefs } = vue;
|
|
145
147
|
|
|
146
148
|
interface IProps {
|
|
@@ -213,6 +215,15 @@ const isMultiBranchMsg = computed(()=>{
|
|
|
213
215
|
});
|
|
214
216
|
|
|
215
217
|
|
|
218
|
+
const isProductCardMessage = computed(()=>{
|
|
219
|
+
if (message.value?.type == "TIMCustomElem") {
|
|
220
|
+
if (JSON.parse(message.value.payload.data).src === CUSTOM_MESSAGE_SRC.PRODUCT_CARD) {
|
|
221
|
+
return true;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return false;
|
|
225
|
+
});
|
|
226
|
+
|
|
216
227
|
const isNoPadding = computed(() => {
|
|
217
228
|
return (
|
|
218
229
|
!hasEmojiReaction.value
|
|
@@ -400,6 +411,14 @@ function scrollTo(scrollHeight: number) {
|
|
|
400
411
|
border-radius: 0 10px 10px;
|
|
401
412
|
padding: 0px;
|
|
402
413
|
}
|
|
414
|
+
|
|
415
|
+
.product-message-bubble {
|
|
416
|
+
background: #f3f4f7 !important ;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
.product-message-bubble-h5 {
|
|
420
|
+
background: #fff !important ;
|
|
421
|
+
}
|
|
403
422
|
|
|
404
423
|
.content-out {
|
|
405
424
|
background: linear-gradient(26deg, #1C66E5 2.07%, #03C8FD 152.75%);
|
|
@@ -15,6 +15,10 @@ export const marked = new Marked(
|
|
|
15
15
|
`;
|
|
16
16
|
},
|
|
17
17
|
link(this: any, href: string | null, title: string | null, text: string) {
|
|
18
|
+
// a 标签 href 如果异常(包含非 ASCII 字符),则当成普通文本处理
|
|
19
|
+
if (href && /[^\x00-\x7F]/g.test(href)) {
|
|
20
|
+
return text;
|
|
21
|
+
}
|
|
18
22
|
return `<a target="_blank" rel="noreferrer noopenner" class="message-marked_link" href="${href || ''}" title="${title}">${text}</a>`;
|
|
19
23
|
},
|
|
20
24
|
},
|
|
@@ -8,10 +8,9 @@
|
|
|
8
8
|
{{ content.header || content.title }}
|
|
9
9
|
</div>
|
|
10
10
|
<div
|
|
11
|
-
v-if="!isSelected"
|
|
12
11
|
v-for="(item, index) in content.items"
|
|
13
12
|
:key="index"
|
|
14
|
-
class="branch-body
|
|
13
|
+
:class="['branch-body','branch-bubble','branch-item',isSelected ? 'branch-item-selected' : '']"
|
|
15
14
|
:style="{ borderWidth: content.header ? '1px 0 0px 0' : '' }"
|
|
16
15
|
@click="handleContentListItemClick(item)"
|
|
17
16
|
>
|
|
@@ -61,8 +60,10 @@ export default {
|
|
|
61
60
|
});
|
|
62
61
|
|
|
63
62
|
const handleContentListItemClick = (branch: branchItem) => {
|
|
64
|
-
isSelected.value
|
|
65
|
-
|
|
63
|
+
if(!isSelected.value) {
|
|
64
|
+
isSelected.value = true;
|
|
65
|
+
emit('sendMessage', { text: branch.content });
|
|
66
|
+
}
|
|
66
67
|
};
|
|
67
68
|
|
|
68
69
|
return {
|
|
@@ -117,4 +118,12 @@ export default {
|
|
|
117
118
|
flex-direction:column;
|
|
118
119
|
align-items: flex-start;
|
|
119
120
|
}
|
|
121
|
+
.branch-item-selected {
|
|
122
|
+
cursor:none;
|
|
123
|
+
color: #a0a7b8;
|
|
124
|
+
opacity:0.6;
|
|
125
|
+
}
|
|
126
|
+
.branch-title-icon {
|
|
127
|
+
margin-right: 5px;
|
|
128
|
+
}
|
|
120
129
|
</style>
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
@input="onInputChanged"
|
|
10
10
|
>
|
|
11
11
|
<div v-if="validator" class="validator-line">
|
|
12
|
-
|
|
12
|
+
{{TUITranslateService.t("AIDesk.请填写必填项")}}
|
|
13
13
|
</div>
|
|
14
14
|
</div>
|
|
15
15
|
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
<script lang="ts">
|
|
19
19
|
import vue from '../../../../../../../../adapter-vue';
|
|
20
20
|
import LabelMobile from './label-mobile.vue';
|
|
21
|
+
import { TUITranslateService } from '@tencentcloud/chat-uikit-engine';
|
|
21
22
|
const { computed, ref} = vue;
|
|
22
23
|
|
|
23
24
|
interface FormItem{
|
|
@@ -68,7 +69,8 @@ export default {
|
|
|
68
69
|
return {
|
|
69
70
|
text,
|
|
70
71
|
onInputChanged,
|
|
71
|
-
props
|
|
72
|
+
props,
|
|
73
|
+
TUITranslateService
|
|
72
74
|
}
|
|
73
75
|
}
|
|
74
76
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
</div>
|
|
6
6
|
<div class="radio-container">
|
|
7
7
|
<div v-if="validator" class="validator-line">
|
|
8
|
-
|
|
8
|
+
{{ TUITranslateService.t("AIDesk.请填写必填项") }}
|
|
9
9
|
</div>
|
|
10
10
|
<div class="form-radio-box-mobile" v-for="(item,index) in chooseItemList" :key="index">
|
|
11
11
|
<div class="radio-container-uni" @click="clickItem(index)">
|
|
@@ -33,6 +33,7 @@ import Icon from '../../customer-icon.vue';
|
|
|
33
33
|
import radioUncheckIcon from '../../../../../../../../assets/radio-uncheck.png';
|
|
34
34
|
import radioCheckIcon from '../../../../../../../../assets/radio-check.png';
|
|
35
35
|
import { isPC, isH5,isWeChat, isUniFrameWork } from '../../../../../../../../utils/env';
|
|
36
|
+
import { TUITranslateService } from '@tencentcloud/chat-uikit-engine';
|
|
36
37
|
const { ref} = vue;
|
|
37
38
|
export default {
|
|
38
39
|
components:{
|
|
@@ -84,7 +85,8 @@ export default {
|
|
|
84
85
|
radioUncheckIcon,
|
|
85
86
|
radioCheckIcon,
|
|
86
87
|
changeSelectedIcon,
|
|
87
|
-
checkedIcon
|
|
88
|
+
checkedIcon,
|
|
89
|
+
TUITranslateService
|
|
88
90
|
}
|
|
89
91
|
}
|
|
90
92
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
@change="onInputChanged"
|
|
9
9
|
>
|
|
10
10
|
<div v-if="validator" class="validator-line">
|
|
11
|
-
|
|
11
|
+
{{ TUITranslateService.t("AIDesk.请填写必填项") }}
|
|
12
12
|
</div>
|
|
13
13
|
</div>
|
|
14
14
|
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
</template>
|
|
17
17
|
<script lang="ts">
|
|
18
18
|
import vue from '../../../../../../../../adapter-vue';
|
|
19
|
+
import { TUITranslateService } from '@tencentcloud/chat-uikit-engine';
|
|
19
20
|
const { computed, ref} = vue;
|
|
20
21
|
|
|
21
22
|
interface FormItem{
|
|
@@ -62,7 +63,8 @@ export default {
|
|
|
62
63
|
};
|
|
63
64
|
return {
|
|
64
65
|
text,
|
|
65
|
-
onInputChanged
|
|
66
|
+
onInputChanged,
|
|
67
|
+
TUITranslateService
|
|
66
68
|
}
|
|
67
69
|
}
|
|
68
70
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<div class="radio-container-pc">
|
|
4
4
|
<div v-if="validator" class="validator-line">
|
|
5
|
-
|
|
5
|
+
{{ TUITranslateService.t("AIDesk.请填写必填项") }}
|
|
6
6
|
</div>
|
|
7
7
|
<div class="form-radio-box-pc" v-for="(item,index) in chooseItemList" :key="index">
|
|
8
8
|
<div class="radio-container-pc-icon" @click="clickItem(index)">
|
|
@@ -22,7 +22,8 @@
|
|
|
22
22
|
import vue from '../../../../../../../../adapter-vue';
|
|
23
23
|
import radioUncheckIcon from '../../../../../../../../assets/radio-uncheck.png';
|
|
24
24
|
import radioCheckIcon from '../../../../../../../../assets/radio-check.png';
|
|
25
|
-
|
|
25
|
+
import { TUITranslateService } from '@tencentcloud/chat-uikit-engine';
|
|
26
|
+
const { ref } = vue;
|
|
26
27
|
export default {
|
|
27
28
|
props:{
|
|
28
29
|
chooseItemList:{
|
|
@@ -68,7 +69,8 @@ export default {
|
|
|
68
69
|
radioUncheckIcon,
|
|
69
70
|
radioCheckIcon,
|
|
70
71
|
changeSelectedIcon,
|
|
71
|
-
checkedIcon
|
|
72
|
+
checkedIcon,
|
|
73
|
+
TUITranslateService
|
|
72
74
|
}
|
|
73
75
|
}
|
|
74
76
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<div v-if="!finishSubmit && props.payload.nodeStatus == 0" class="before-form">
|
|
4
4
|
<Icon :src="iconForm" width="60px" height="60px" style="margin:5px 4px"/>
|
|
5
5
|
<div class="form-button" @click="clickShowDialog">
|
|
6
|
-
|
|
6
|
+
{{TUITranslateService.t("AIDesk.立即填写")}}
|
|
7
7
|
</div>
|
|
8
8
|
</div>
|
|
9
9
|
<div class="edit-form">
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
</div>
|
|
47
47
|
<div class="button-container"v-if="!finishSubmit && props.payload.nodeStatus == 0">
|
|
48
48
|
<div class="button" @click="handleSendForm">
|
|
49
|
-
|
|
49
|
+
{{TUITranslateService.t("AIDesk.提交")}}
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
</div>
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
</div>
|
|
63
63
|
|
|
64
64
|
<div class="form-button" @click="clickShowDialog">
|
|
65
|
-
|
|
65
|
+
{{TUITranslateService.t("AIDesk.查看内容")}}
|
|
66
66
|
</div>
|
|
67
67
|
</div>
|
|
68
68
|
</div>
|
|
@@ -80,6 +80,7 @@ import RadioMobile from './component-mobile/radios-mobile.vue';
|
|
|
80
80
|
import LabelMobile from './component-mobile/label-mobile.vue';
|
|
81
81
|
import FormPopup from './component-mobile/form-popup.vue';
|
|
82
82
|
import { CUSTOM_MESSAGE_SRC } from '../../../../../../../constant';
|
|
83
|
+
import {TUITranslateService} from '@tencentcloud/chat-uikit-engine';
|
|
83
84
|
const { ref , onMounted,computed} = vue;
|
|
84
85
|
interface Props {
|
|
85
86
|
payload: customerServicePayloadType;
|
|
@@ -194,7 +195,8 @@ export default {
|
|
|
194
195
|
handleInputChange,
|
|
195
196
|
handleSendForm,
|
|
196
197
|
closeDialog,
|
|
197
|
-
isValid
|
|
198
|
+
isValid,
|
|
199
|
+
TUITranslateService
|
|
198
200
|
}
|
|
199
201
|
}
|
|
200
202
|
}
|
|
@@ -6,7 +6,7 @@
|
|
|
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
|
-
|
|
9
|
+
{{TUITranslateService.t("AIDesk.已提交")}}
|
|
10
10
|
</div>
|
|
11
11
|
</div>
|
|
12
12
|
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
|
|
29
29
|
<div class="button-container"v-if="!finishSubmit && props.payload.nodeStatus == 0">
|
|
30
30
|
<div class="button" @click="handleSendForm">
|
|
31
|
-
|
|
31
|
+
{{TUITranslateService.t("AIDesk.提交")}}
|
|
32
32
|
</div>
|
|
33
33
|
|
|
34
34
|
</div>
|
|
@@ -44,6 +44,7 @@ import RadioPC from './component-pc/radio-pc.vue';
|
|
|
44
44
|
import Icon from '../customer-icon.vue';
|
|
45
45
|
import iconSucess from '../../../../../../../assets/icon_success.png';
|
|
46
46
|
import { CUSTOM_MESSAGE_SRC } from '../../../../../../../constant';
|
|
47
|
+
import {TUITranslateService} from '@tencentcloud/chat-uikit-engine';
|
|
47
48
|
const { ref, onMounted } = vue;
|
|
48
49
|
interface Props {
|
|
49
50
|
payload: customerServicePayloadType;
|
|
@@ -147,7 +148,8 @@ export default {
|
|
|
147
148
|
mapValue,
|
|
148
149
|
isSubmit,
|
|
149
150
|
checkTip,
|
|
150
|
-
isValid
|
|
151
|
+
isValid,
|
|
152
|
+
TUITranslateService
|
|
151
153
|
};
|
|
152
154
|
},
|
|
153
155
|
};
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
{{ props.payload.content.desc }}
|
|
22
22
|
</div>
|
|
23
23
|
<div class="product-card-link" @click="jumpProductCard">
|
|
24
|
-
|
|
24
|
+
{{TUITranslateService.t("AIDesk.跳转")}}
|
|
25
25
|
</div>
|
|
26
26
|
</div>
|
|
27
27
|
</div>
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
<script lang="ts">
|
|
32
32
|
import { customerServicePayloadType } from '../../../../../../interface';
|
|
33
33
|
import { isApp } from '../../../../../../utils/env';
|
|
34
|
-
|
|
34
|
+
import {TUITranslateService} from '@tencentcloud/chat-uikit-engine';
|
|
35
35
|
// eslint-disable-next-line
|
|
36
36
|
declare var uni: any;
|
|
37
37
|
|
|
@@ -67,38 +67,42 @@ export default {
|
|
|
67
67
|
props,
|
|
68
68
|
isApp,
|
|
69
69
|
jumpProductCard,
|
|
70
|
+
TUITranslateService
|
|
70
71
|
};
|
|
71
72
|
},
|
|
72
73
|
};
|
|
73
74
|
</script>
|
|
74
75
|
<style lang="scss" scoped>
|
|
75
76
|
.message-product-card {
|
|
76
|
-
min-width:
|
|
77
|
-
max-width:
|
|
77
|
+
min-width: 200px;
|
|
78
|
+
max-width: 400px;
|
|
78
79
|
display: flex;
|
|
79
|
-
padding: 10px;
|
|
80
80
|
|
|
81
81
|
.product-img {
|
|
82
82
|
width: 75px;
|
|
83
83
|
height: 75px;
|
|
84
84
|
border-radius: 10px;
|
|
85
|
+
flex-shrink: 0;
|
|
86
|
+
object-fit: cover;
|
|
85
87
|
}
|
|
86
88
|
|
|
87
89
|
.product-card-information {
|
|
88
90
|
width:100%;
|
|
89
|
-
margin-left:
|
|
91
|
+
margin-left: 15px;
|
|
90
92
|
margin-right:5px;
|
|
91
93
|
display: flex;
|
|
92
94
|
flex-direction: column;
|
|
93
95
|
justify-content: space-between;
|
|
94
96
|
|
|
95
97
|
.product-card-title {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
+
max-width: 200px;
|
|
99
|
+
min-width: 100px;
|
|
100
|
+
color: #000000;
|
|
101
|
+
font-size: 14px;
|
|
98
102
|
display: -webkit-box;
|
|
99
103
|
overflow: hidden;
|
|
100
104
|
text-overflow: ellipsis;
|
|
101
|
-
-webkit-line-clamp:
|
|
105
|
+
-webkit-line-clamp: 2;
|
|
102
106
|
-webkit-box-orient: vertical;
|
|
103
107
|
word-break: break-all;
|
|
104
108
|
}
|
|
@@ -106,23 +110,29 @@ export default {
|
|
|
106
110
|
.product-card-description-block {
|
|
107
111
|
display:flex;
|
|
108
112
|
justify-content: space-between;
|
|
113
|
+
align-items: center;
|
|
114
|
+
gap: 5px;
|
|
109
115
|
}
|
|
110
116
|
|
|
111
117
|
.product-card-description {
|
|
112
|
-
font-size:
|
|
113
|
-
max-width:
|
|
118
|
+
font-size: 12px;
|
|
119
|
+
max-width: 60px;
|
|
114
120
|
color: #1c66e5;
|
|
115
121
|
overflow: hidden;
|
|
116
122
|
text-overflow: ellipsis;
|
|
117
123
|
white-space: nowrap;
|
|
118
124
|
font-weight: 600;
|
|
125
|
+
flex: 0 1 60px;
|
|
119
126
|
}
|
|
120
127
|
|
|
121
128
|
.product-card-link {
|
|
129
|
+
cursor: pointer;
|
|
122
130
|
background-color: #1c66e5;
|
|
123
131
|
color:#ffffff;
|
|
124
132
|
padding:2px 12px;
|
|
125
133
|
border-radius: 12px;
|
|
134
|
+
flex: 0 0 auto;
|
|
135
|
+
margin-left: auto;
|
|
126
136
|
}
|
|
127
137
|
}
|
|
128
138
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
7
|
<div class="rating-card">
|
|
8
|
-
<span class="card-title"
|
|
8
|
+
<span class="card-title">{{ TUITranslateService.t("AIDesk.请对本次服务进行评价") }}</span>
|
|
9
9
|
<div class="card-wrapper">
|
|
10
10
|
<div style="max-width: 250px">
|
|
11
11
|
<div
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
</div>
|
|
28
28
|
</div>
|
|
29
29
|
</div>
|
|
30
|
-
<div :style="{ marginTop: 10 + 'px', marginBottom: 10 + 'px' }">
|
|
30
|
+
<div :style="{ marginTop: 10 + 'px', marginBottom: 10 + 'px', wordBreak: 'normal' }">
|
|
31
31
|
{{
|
|
32
32
|
hoverValue === -1
|
|
33
33
|
? selectValue === -1
|
|
34
|
-
? "
|
|
34
|
+
? TUITranslateService.t("AIDesk.如果满意请给好评哦~")
|
|
35
35
|
: desc[selectValue]
|
|
36
36
|
: desc[hoverValue]
|
|
37
37
|
}}
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
:disabled="hasReply || hasExpire"
|
|
42
42
|
@click="submitRatingStar"
|
|
43
43
|
>
|
|
44
|
-
|
|
44
|
+
{{ TUITranslateService.t("AIDesk.提交评价") }}
|
|
45
45
|
</button>
|
|
46
46
|
</div>
|
|
47
47
|
<p
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
import vue from '../../../../../../../adapter-vue';
|
|
61
61
|
import { CUSTOM_MESSAGE_SRC } from '../../../../../../../constant';
|
|
62
62
|
import { ratingTemplateType } from '../../../../../../../interface';
|
|
63
|
+
import { TUITranslateService } from '@tencentcloud/chat-uikit-engine';
|
|
63
64
|
const { computed, ref, watchEffect } = vue;
|
|
64
65
|
|
|
65
66
|
interface Props {
|
|
@@ -148,6 +149,7 @@ export default {
|
|
|
148
149
|
setValue,
|
|
149
150
|
setHoverValue,
|
|
150
151
|
submitRatingStar,
|
|
152
|
+
TUITranslateService
|
|
151
153
|
};
|
|
152
154
|
},
|
|
153
155
|
};
|
|
@@ -172,7 +174,6 @@ export default {
|
|
|
172
174
|
|
|
173
175
|
.rating-card {
|
|
174
176
|
min-width: 270px;
|
|
175
|
-
width: 50%;
|
|
176
177
|
background: #fbfbfb;
|
|
177
178
|
border-radius: 20px;
|
|
178
179
|
border: 0;
|
|
@@ -202,7 +203,6 @@ export default {
|
|
|
202
203
|
}
|
|
203
204
|
|
|
204
205
|
.submit-button {
|
|
205
|
-
width: 50%;
|
|
206
206
|
height: 50px;
|
|
207
207
|
background-color: #0365f9;
|
|
208
208
|
font-size: 18px;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
{{ props.ratingTemplate.head }}
|
|
5
5
|
</p>
|
|
6
6
|
<div class="rating-card">
|
|
7
|
-
<span class="card-title"
|
|
7
|
+
<span class="card-title">{{ TUITranslateService.t("AIDesk.请对本次服务进行评价") }}</span>
|
|
8
8
|
<div class="card-wrapper">
|
|
9
9
|
<div style="max-width: 200px">
|
|
10
10
|
<div
|
|
@@ -30,11 +30,11 @@
|
|
|
30
30
|
</div>
|
|
31
31
|
</div>
|
|
32
32
|
</div>
|
|
33
|
-
<div :style="{ marginTop: 10 + 'px', marginBottom: 10 + 'px' }">
|
|
33
|
+
<div :style="{ marginTop: 10 + 'px', marginBottom: 10 + 'px', wordBreak: 'normal' }">
|
|
34
34
|
{{
|
|
35
35
|
hoverValue === -1
|
|
36
36
|
? value === -1
|
|
37
|
-
? "
|
|
37
|
+
? TUITranslateService.t("AIDesk.如果满意请给好评哦~")
|
|
38
38
|
: desc[value]
|
|
39
39
|
: desc[hoverValue]
|
|
40
40
|
}}
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
:disabled="hasReply || hasExpire"
|
|
45
45
|
@click="submitRatingStar"
|
|
46
46
|
>
|
|
47
|
-
|
|
47
|
+
{{ TUITranslateService.t("AIDesk.提交评价") }}
|
|
48
48
|
</button>
|
|
49
49
|
</div>
|
|
50
50
|
<p
|
|
@@ -66,6 +66,7 @@ import { ratingTemplateType } from '../../../../../../../interface';
|
|
|
66
66
|
import star from '../../../../../../../assets/star.png';
|
|
67
67
|
import starLine from '../../../../../../../assets/starLine.png';
|
|
68
68
|
import Icon from '../customer-icon.vue';
|
|
69
|
+
import { TUITranslateService } from '@tencentcloud/chat-uikit-engine';
|
|
69
70
|
const { computed, ref, watchEffect } = vue;
|
|
70
71
|
|
|
71
72
|
interface Props {
|
|
@@ -169,6 +170,7 @@ export default {
|
|
|
169
170
|
submitRatingStar,
|
|
170
171
|
star,
|
|
171
172
|
starLine,
|
|
173
|
+
TUITranslateService
|
|
172
174
|
};
|
|
173
175
|
},
|
|
174
176
|
};
|
|
@@ -193,7 +195,6 @@ export default {
|
|
|
193
195
|
|
|
194
196
|
.rating-card {
|
|
195
197
|
min-width: 250px;
|
|
196
|
-
width: 50%;
|
|
197
198
|
background: #fbfbfb;
|
|
198
199
|
border-radius: 20px;
|
|
199
200
|
border: 0;
|
|
@@ -223,15 +224,14 @@ export default {
|
|
|
223
224
|
}
|
|
224
225
|
|
|
225
226
|
.submit-button {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
cursor: pointer;
|
|
227
|
+
height: 35px;
|
|
228
|
+
background-color: #0365f9;
|
|
229
|
+
font-size: 14px;
|
|
230
|
+
font-weight: 400;
|
|
231
|
+
color: white;
|
|
232
|
+
border: 0;
|
|
233
|
+
border-radius: 8px;
|
|
234
|
+
cursor: pointer;
|
|
235
235
|
}
|
|
236
236
|
|
|
237
237
|
</style>
|
|
@@ -14,9 +14,6 @@
|
|
|
14
14
|
class="change-wrapper"
|
|
15
15
|
@click="changeBranchList()"
|
|
16
16
|
>
|
|
17
|
-
<div style="margin-right: 3px;">
|
|
18
|
-
换一换
|
|
19
|
-
</div>
|
|
20
17
|
<Icon :src="iconRefresh" />
|
|
21
18
|
</div>
|
|
22
19
|
</div>
|
|
@@ -98,7 +95,7 @@ export default {
|
|
|
98
95
|
iconRight,
|
|
99
96
|
changeBranchList,
|
|
100
97
|
iconQuestion,
|
|
101
|
-
iconRefresh
|
|
98
|
+
iconRefresh,
|
|
102
99
|
};
|
|
103
100
|
},
|
|
104
101
|
};
|
|
@@ -106,7 +103,6 @@ export default {
|
|
|
106
103
|
|
|
107
104
|
<style lang="scss">
|
|
108
105
|
.welcome-card {
|
|
109
|
-
min-width: 300px;
|
|
110
106
|
max-width: 400px;
|
|
111
107
|
|
|
112
108
|
.welcome-title {
|
|
@@ -125,7 +121,7 @@ export default {
|
|
|
125
121
|
.card-title {
|
|
126
122
|
display: inline-block;
|
|
127
123
|
margin-left: 8px;
|
|
128
|
-
font-size:
|
|
124
|
+
font-size: 14px;
|
|
129
125
|
}
|
|
130
126
|
|
|
131
127
|
.el-link {
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
{{ props.title }}
|
|
8
8
|
</div>
|
|
9
9
|
<div class="form-button" @click="showForm">
|
|
10
|
-
|
|
10
|
+
{{ TUITranslateService.t("AIDesk.立即填写") }}
|
|
11
11
|
</div>
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
<input
|
|
27
27
|
v-model="text"
|
|
28
28
|
class="form-input"
|
|
29
|
-
placeholder="
|
|
29
|
+
:placeholder="TUITranslateService.t('AIDesk.请输入内容')"
|
|
30
30
|
>
|
|
31
31
|
</div>
|
|
32
32
|
</div>
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
</div>
|
|
39
39
|
<div class="form-finish-title-right">
|
|
40
40
|
<Icon :src="iconSucess" style="margin:0px 4px"/>
|
|
41
|
-
|
|
41
|
+
{{ TUITranslateService.t("AIDesk.已提交") }}
|
|
42
42
|
</div>
|
|
43
43
|
</div>
|
|
44
44
|
<div>
|
|
@@ -52,6 +52,7 @@ import vue from '../../../../../../../adapter-vue';
|
|
|
52
52
|
import iconForm from '../../../../../../../assets/icon_form.png';
|
|
53
53
|
import Icon from '../customer-icon.vue';
|
|
54
54
|
import iconSucess from '../../../../../../../assets/icon_success.png';
|
|
55
|
+
import { TUITranslateService } from '@tencentcloud/chat-uikit-engine';
|
|
55
56
|
const { computed, ref} = vue;
|
|
56
57
|
|
|
57
58
|
interface Props {
|
|
@@ -94,7 +95,8 @@ export default {
|
|
|
94
95
|
isShowForm,
|
|
95
96
|
showForm,
|
|
96
97
|
iconSucess,
|
|
97
|
-
isFinish
|
|
98
|
+
isFinish,
|
|
99
|
+
TUITranslateService
|
|
98
100
|
};
|
|
99
101
|
},
|
|
100
102
|
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
class="message-location"
|
|
4
4
|
:href="data.href"
|
|
5
5
|
target="_blank"
|
|
6
|
-
title="
|
|
6
|
+
:title="TUITranslateService.t('AIDesk.跳转')"
|
|
7
7
|
>
|
|
8
8
|
<span class="el-icon-location-outline">{{ data.description }}</span>
|
|
9
9
|
<img :src="data.url">
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
</template>
|
|
12
12
|
|
|
13
13
|
<script lang="ts" setup>
|
|
14
|
+
import { TUITranslateService } from '@tencentcloud/chat-uikit-engine';
|
|
14
15
|
import vue from '../../../../adapter-vue';
|
|
15
16
|
const { watchEffect, ref } = vue;
|
|
16
17
|
const props = defineProps({
|