@tencentcloud/ai-desk-customer-vue 1.0.1 → 1.3.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.
Files changed (43) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/assets/send_button_h5.svg +1 -0
  3. package/components/CustomerServiceChat/index-web.vue +3 -3
  4. package/components/CustomerServiceChat/message-input/index-web.vue +16 -7
  5. package/components/CustomerServiceChat/message-input/message-input-editor-web.vue +5 -2
  6. package/components/CustomerServiceChat/message-list/index-web.vue +6 -0
  7. package/components/CustomerServiceChat/message-list/message-elements/message-bubble-web.vue +14 -15
  8. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/marked.ts +1 -1
  9. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-branch.vue +25 -6
  10. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-concurrency-limit.vue +40 -0
  11. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-desk.vue +32 -8
  12. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-branch/branch-pc.vue +93 -73
  13. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-branch/index.vue +53 -52
  14. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/input-mobile.vue +73 -80
  15. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/label-mobile.vue +21 -24
  16. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/radios-mobile.vue +115 -116
  17. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-pc/input-pc.vue +69 -73
  18. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-pc/label-pc.vue +21 -25
  19. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-pc/radio-pc.vue +87 -77
  20. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/form-mobile.vue +213 -200
  21. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/form-pc.vue +122 -113
  22. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/index.vue +7 -7
  23. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-order.vue +142 -0
  24. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rating/message-rating-number.vue +2 -1
  25. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rating/message-rating-star.vue +2 -1
  26. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rich-text.vue +8 -6
  27. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-stream.vue +89 -6
  28. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-plugin-web.vue +5 -0
  29. package/components/CustomerServiceChat/message-list/scroll-button/index.vue +15 -3
  30. package/components/common/BottomPopup/index.vue +1 -1
  31. package/constant.ts +10 -4
  32. package/locales/en/aidesk.ts +3 -1
  33. package/locales/fil/aidesk.ts +3 -1
  34. package/locales/id/aidesk.ts +4 -2
  35. package/locales/ja/aidesk.ts +4 -2
  36. package/locales/ms/aidesk.ts +4 -2
  37. package/locales/ru/aidesk.ts +5 -3
  38. package/locales/th/aidesk.ts +3 -1
  39. package/locales/vi/aidesk.ts +4 -2
  40. package/locales/zh_cn/aidesk.ts +4 -3
  41. package/locales/zh_tw/aidesk.ts +3 -1
  42. package/package.json +1 -1
  43. package/server.ts +53 -16
@@ -1,95 +1,91 @@
1
1
  <template>
2
- <div class="form-input-box">
3
- <div class="form-input-line">
4
- <input
5
- v-model="text"
6
- :class="['form-input',validator? 'form-input-validate':'']"
7
- :placeholder="placeholder"
8
- @change="onInputChanged"
9
- >
10
- <div v-if="validator" class="validator-line">
11
- {{ TUITranslateService.t("AIDesk.请填写必填项") }}
2
+ <div class="form-input-box">
3
+ <div class="form-input-line">
4
+ <input
5
+ v-model="text"
6
+ :class="['form-input',validator && !isDisabled ? 'form-input-validate':'']"
7
+ :placeholder="placeholder"
8
+ @change="onInputChanged"
9
+ :disabled="isDisabled"
10
+ >
11
+ <div v-if="validator && !isDisabled" class="validator-line">
12
+ {{ TUITranslateService.t("AIDesk.请填写必填项") }}
12
13
  </div>
13
- </div>
14
-
15
14
  </div>
15
+ </div>
16
16
  </template>
17
17
  <script lang="ts">
18
18
  import vue from '../../../../../../../../adapter-vue';
19
19
  import { TUITranslateService } from '@tencentcloud/chat-uikit-engine';
20
- const { computed, ref} = vue;
21
-
22
- interface FormItem{
23
- name:string;
24
- value:string;
25
- }
26
-
20
+ const { ref } = vue;
27
21
 
28
22
  export default {
29
- props:{
30
- placeholder:{
31
- type:String,
32
- default:''
33
- },
34
- variableValue:{
35
- type:String,
36
- default:''
37
- },
38
- name:{
39
- type:String,
40
- default:'',
41
- },
42
- isRequired:{
43
- type:Number,
44
- default:0,
45
- },
46
- nodeStatus:{
47
- type:Number,
48
- default:0
49
- },
50
- validator:{
51
- type:Boolean,
52
- default:false
53
- }
23
+ props: {
24
+ placeholder: {
25
+ type: String,
26
+ default: ''
27
+ },
28
+ variableValue: {
29
+ type: String,
30
+ default: ''
31
+ },
32
+ name: {
33
+ type: String,
34
+ default: '',
54
35
  },
55
- emits:['input-change'],
56
- setup(props, {emit}){
57
- const text = ref<string>('');
58
- if(props.variableValue.length!=0){
59
- text.value = props.variableValue;
60
- }
61
- const onInputChanged = ():void => {
62
- emit('input-change',{name:props.name,value:text.value});
63
- };
64
- return {
65
- text,
66
- onInputChanged,
67
- TUITranslateService
68
- }
36
+ isRequired: {
37
+ type: Number,
38
+ default: 0,
39
+ },
40
+ validator: {
41
+ type: Boolean,
42
+ default: false
43
+ },
44
+ isDisabled: {
45
+ type: Boolean,
46
+ default: false
47
+ }
48
+ },
49
+ emits:['input-change'],
50
+ setup(props, {emit}){
51
+ const text = ref<string>('');
52
+ if (props.variableValue.length != 0) {
53
+ text.value = props.variableValue;
69
54
  }
55
+ const onInputChanged = ():void => {
56
+ emit('input-change',{name:props.name,value:text.value});
57
+ };
58
+ return {
59
+ text,
60
+ onInputChanged,
61
+ TUITranslateService
62
+ }
63
+ }
70
64
  }
71
65
  </script>
72
66
  <style lang="scss">
73
-
67
+ input:disabled {
68
+ background-color: #dbdbdb;
69
+ opacity: 0.5;
70
+ }
74
71
  .form-input-line {
75
- display:flex;
76
- margin-bottom: 10px;
77
- flex-direction: column;
72
+ display: flex;
73
+ margin-bottom: 10px;
74
+ flex-direction: column;
78
75
  }
79
76
  .form-input {
80
- flex:1;
81
- height: 27px;
82
- border-radius: 5px;
83
- border-color: transparent;
84
- width:300px;
85
- padding:5px 8px;
77
+ flex: 1;
78
+ height: 27px;
79
+ border-radius: 5px;
80
+ border-color: transparent;
81
+ padding: 5px 8px;
86
82
  }
87
83
  .form-input-validate {
88
- border:1px solid #e54545;
84
+ border: 1px solid #e54545;
89
85
  }
90
86
  .validator-line {
91
- font-size: 12px;
92
- color:#e54545;
93
- margin-top: 3px;
87
+ font-size: 12px;
88
+ color: #e54545;
89
+ margin-top: 3px;
94
90
  }
95
- </style>
91
+ </style>
@@ -1,33 +1,29 @@
1
1
  <template>
2
- <div class="form-label">
3
- <div v-if="isRequired" style="color: red;">
4
- *&nbsp;
5
- </div>
6
- {{ name }}
7
-
2
+ <div class="form-label">
3
+ <div v-if="isRequired" style="color: red;">
4
+ *&nbsp;
8
5
  </div>
6
+ {{ name }}
7
+ </div>
9
8
  </template>
10
9
  <script lang="ts">
11
- export default {
12
- props:{
13
- name:{
14
- type:String,
15
- default:''
16
- },
17
- isRequired:{
18
- type:Number,
19
- default:0
20
- }
21
- },
22
- setup(props){
23
-
24
- }
25
- }
10
+ export default {
11
+ props: {
12
+ name: {
13
+ type: String,
14
+ default: ''
15
+ },
16
+ isRequired: {
17
+ type: Number,
18
+ default: 0
19
+ }
20
+ },
21
+ }
26
22
  </script>
27
23
  <style lang="scss">
28
24
  .form-label {
29
- display:flex;
30
- padding-bottom: 8px;
31
- margin-top:12px;
25
+ display:flex;
26
+ padding-bottom: 8px;
27
+ margin-top:12px;
32
28
  }
33
- </style>
29
+ </style>
@@ -1,99 +1,109 @@
1
1
  <template>
2
- <div>
3
- <div class="radio-container-pc">
4
- <div v-if="validator" class="validator-line">
5
- {{ TUITranslateService.t("AIDesk.请填写必填项") }}
6
- </div>
7
- <div class="form-radio-box-pc" v-for="(item,index) in chooseItemList" :key="index">
8
- <div class="radio-container-pc-icon" @click="clickItem(index)">
9
- <div class="radio-icon">
10
- <img :src="changeSelectedIcon(item)" alt="" style="width: 20px; height: 20px; vertical-align: middle;"/>
11
- </div>
12
- <div class="radio-label">
13
- {{ item }}
14
- </div>
15
- </div>
16
- </div>
2
+ <div>
3
+ <div class="radio-container-pc">
4
+ <div v-if="validator && !isDisabled" class="validator-line">
5
+ {{ TUITranslateService.t("AIDesk.请填写必填项") }}
6
+ </div>
7
+ <div :class="['form-radio-box-pc',isDisabled ? 'form-radio-box-pc-disabled' : '']" v-for="(item,index) in chooseItemList" :key="index">
8
+ <div class="radio-container-pc-icon" @click="clickItem(index)">
9
+ <div class="radio-icon">
10
+ <img :src="changeSelectedIcon(item)" alt="" style="width: 20px; height: 20px; vertical-align: middle;"/>
11
+ </div>
12
+ <div class="radio-label">
13
+ {{ item }}
14
+ </div>
17
15
  </div>
18
-
16
+ </div>
19
17
  </div>
18
+ </div>
20
19
  </template>
21
20
  <script lang="ts">
22
21
  import vue from '../../../../../../../../adapter-vue';
23
22
  import radioUncheckIcon from '../../../../../../../../assets/radio-uncheck.png';
24
23
  import radioCheckIcon from '../../../../../../../../assets/radio-check.png';
25
24
  import { TUITranslateService } from '@tencentcloud/chat-uikit-engine';
26
- const { ref } = vue;
25
+ const { ref } = vue;
27
26
  export default {
28
- props:{
29
- chooseItemList:{
30
- type:Array,
31
- default:[]
32
- },
33
- name:{
34
- type:String,
35
- default:'',
36
- },
37
- isRequired:{
38
- type:Number,
39
- default:0,
40
- },
41
- validator:{
42
- type:Boolean,
43
- default:false
44
- }
27
+ props: {
28
+ chooseItemList: {
29
+ type: Array,
30
+ default: []
45
31
  },
46
- emits:['input-change'],
47
- setup(props,{emit}){
48
- const selectedOption = ref<string>('');
49
- const checkedIcon = ref<string>('');
50
- const changeSelectedIcon = (name:any) => {
51
- if(selectedOption.value === name)
52
- return radioCheckIcon;
53
- else
54
- return radioUncheckIcon;
55
- }
56
-
57
- const clickItem=(index:number) => {
58
- selectedOption.value = props.chooseItemList[index] as string;
59
- emit('input-change',{name:props.name,value:selectedOption.value});
60
- }
32
+ name: {
33
+ type: String,
34
+ default: '',
35
+ },
36
+ isRequired: {
37
+ type: Number,
38
+ default: 0,
39
+ },
40
+ validator: {
41
+ type: Boolean,
42
+ default: false
43
+ },
44
+ isDisabled: {
45
+ type: Boolean,
46
+ default: false
47
+ }
48
+ },
49
+ emits:['input-change'],
50
+ setup(props,{emit}){
51
+ const selectedOption = ref<string>('');
52
+ const checkedIcon = ref<string>('');
53
+ const changeSelectedIcon = (name:any) => {
54
+ if (selectedOption.value === name) {
55
+ return radioCheckIcon;
56
+ } else {
57
+ return radioUncheckIcon;
58
+ }
59
+ }
61
60
 
62
- const onInputChanged = ():void => {
63
- emit('input-change',{name:props.name,value:selectedOption.value});
64
- };
65
- return {
66
- onInputChanged,
67
- selectedOption,
68
- clickItem,
69
- radioUncheckIcon,
70
- radioCheckIcon,
71
- changeSelectedIcon,
72
- checkedIcon,
73
- TUITranslateService
74
- }
61
+ const clickItem=(index:number) => {
62
+ if (props.isDisabled) {
63
+ return;
64
+ }
65
+ selectedOption.value = props.chooseItemList[index] as string;
66
+ emit('input-change',{name:props.name,value:selectedOption.value});
75
67
  }
68
+
69
+ const onInputChanged = ():void => {
70
+ emit('input-change',{name:props.name,value:selectedOption.value});
71
+ };
72
+ return {
73
+ onInputChanged,
74
+ selectedOption,
75
+ clickItem,
76
+ radioUncheckIcon,
77
+ radioCheckIcon,
78
+ changeSelectedIcon,
79
+ checkedIcon,
80
+ TUITranslateService
81
+ }
82
+ }
76
83
  }
77
84
  </script>
78
85
  <style lang="scss">
79
86
  .form-radio-box{
80
- margin-bottom: 5px;
87
+ margin-bottom: 5px;
81
88
  }
82
89
  .radio-container-pc {
83
- display:flex;
84
- flex-direction: column;
85
- width:100%;
90
+ display: flex;
91
+ flex-direction: column;
92
+ width: 100%;
86
93
  }
87
- .form-radio-box-pc{
88
- padding: 5px 0;
94
+ .form-radio-box-pc {
95
+ padding: 5px 0;
89
96
  }
90
- .radio-container-pc-icon{
91
- display:flex;
92
- flex-direction: row;
93
- width: 100%;
94
- align-items: center;
95
- .radio-icon {
96
- margin-right:5px;
97
- }
97
+ .form-radio-box-pc-disabled {
98
+ color: #b0b0b0;
99
+ }
100
+ .radio-container-pc-icon {
101
+ display: flex;
102
+ flex-direction: row;
103
+ width: 100%;
104
+ align-items: center;
105
+ .radio-icon {
106
+ margin-right:5px;
107
+ }
98
108
  }
99
- </style>
109
+ </style>