askbot-dragon 0.7.56 → 0.7.59

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 (66) hide show
  1. package/README.md +27 -27
  2. package/babel.config.js +5 -5
  3. package/dragon.iml +7 -7
  4. package/package.json +55 -54
  5. package/public/index.html +30 -30
  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 +92 -92
  11. package/src/assets/js/Base64Util.js +22 -22
  12. package/src/assets/js/script.js +36 -36
  13. package/src/assets/less/common.css +6773 -6773
  14. package/src/assets/less/converSationContainer/common.less +191 -191
  15. package/src/assets/less/converSationContainer/converSatonContainer.less +493 -493
  16. package/src/assets/less/iconfont.css +37 -37
  17. package/src/assets/less/ticketMessage.less +211 -211
  18. package/src/components/ActionAlertIframe.vue +112 -112
  19. package/src/components/AskIFrame.vue +15 -15
  20. package/src/components/ConversationContainer.vue +1182 -1185
  21. package/src/components/FileType.vue +86 -86
  22. package/src/components/Message.vue +27 -27
  23. package/src/components/actionSatisfaction.vue +107 -107
  24. package/src/components/actionSendToBot.vue +62 -62
  25. package/src/components/answerDissatisfaction.vue +62 -62
  26. package/src/components/answerRadio.vue +76 -76
  27. package/src/components/ask-components/DissatisfactionOptions.vue +57 -57
  28. package/src/components/ask-components/Msgloading.vue +37 -37
  29. package/src/components/ask-components/SatisfactionV2.vue +15 -15
  30. package/src/components/askVideo.vue +138 -138
  31. package/src/components/assetDetails.vue +370 -370
  32. package/src/components/assetMessage.vue +228 -228
  33. package/src/components/associationIntention.vue +121 -121
  34. package/src/components/botActionSatisfactor.vue +68 -68
  35. package/src/components/chatContent.vue +513 -513
  36. package/src/components/feedBack.vue +136 -136
  37. package/src/components/file/AliyunOssComponents.vue +108 -108
  38. package/src/components/formTemplate.vue +1969 -1949
  39. package/src/components/loadingProcess.vue +164 -164
  40. package/src/components/message/ActionAlertIframe.vue +112 -112
  41. package/src/components/message/ShopMessage.vue +164 -164
  42. package/src/components/message/TextMessage.vue +924 -924
  43. package/src/components/message/TicketMessage.vue +177 -177
  44. package/src/components/message/swiper/index.js +4 -4
  45. package/src/components/message/swiper/ticketSwiper.vue +502 -502
  46. package/src/components/message/swiper/ticketSwiperItem.vue +61 -61
  47. package/src/components/msgLoading.vue +231 -231
  48. package/src/components/recommend.vue +89 -89
  49. package/src/components/selector/hOption.vue +20 -20
  50. package/src/components/selector/hSelector.vue +199 -199
  51. package/src/components/selector/hWrapper.vue +216 -216
  52. package/src/components/source/BotMessage.vue +24 -24
  53. package/src/components/source/CustomMessage.vue +24 -24
  54. package/src/components/test.vue +260 -260
  55. package/src/components/utils/AliyunIssUtil.js +72 -72
  56. package/src/components/utils/ckeditor.js +123 -124
  57. package/src/components/utils/command.js +69 -0
  58. package/src/components/utils/editing.js +12 -0
  59. package/src/components/utils/format_date.js +18 -18
  60. package/src/components/utils/index.js +6 -6
  61. package/src/components/utils/math_utils.js +15 -15
  62. package/src/components/utils/plugin-image.js +12 -0
  63. package/src/components/utils/toolbar-ui.js +42 -0
  64. package/src/components/voiceComponent.vue +119 -119
  65. package/src/main.js +45 -44
  66. package/vue.config.js +34 -34
@@ -1,137 +1,137 @@
1
- <template>
2
- <div id="feedBack" class="companyNotRem" :class="{phoneClass:isPhone,companyClass:isCompany,notClick:isDisabled===true}">
3
- <span :class="!positiveClick?'feed-button':'feed-check-button'" class="feed-commen">
4
- <el-button plain class="btnClass" @click="positiveFeedback(feedBack,1)" v-html="feedBack.positiveFeedback.text" v-if="!positiveClick">{{feedBack.positiveFeedback.text}}</el-button>
5
- <el-button plain class="btnClassActive" v-html="feedBack.positiveFeedback.text" v-else>{{feedBack.positiveFeedback.text}}</el-button>
6
- </span>
7
- <span :class="!negativeClick?'feed-button':'feed-check-button'">
8
- <el-button plain class="btnClass" @click="positiveFeedback(feedBack,2)" v-html="feedBack.negativeFeedback.text" v-if="!negativeClick">{{feedBack.negativeFeedback.text}}</el-button>
9
- <el-button plain class="btnClassActive" v-html="feedBack.negativeFeedback.text" v-else>{{feedBack.negativeFeedback.text}}</el-button>
10
- </span>
11
- </div>
12
- </template>
13
- <script>
14
- export default {
15
- name: "feedBack",
16
- data(){
17
- return{
18
- isPhone:false,
19
- isCompany:false,
20
- isDisabled:false,
21
- positiveClick:false,
22
- negativeClick:false
23
- }
24
- },
25
- props:{
26
- feedBack:Object,
27
- rem:String,
28
- disable:Boolean,
29
- },
30
- beforeMount() {
31
- if(this.disable===true)
32
- {
33
- this.isDisabled=true
34
- }
35
- else
36
- {
37
- this.isDisabled=false
38
- }
39
- },
40
- mounted() {
41
- this.isMobile()
42
- },
43
- methods:{
44
- isMobile() {
45
- let flag = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
46
- if (flag) {
47
- this.isPhone=true
48
- }
49
- else
50
- {
51
- this.isCompany=true
52
- }
53
- },
54
- positiveFeedback(Feedback,index){
55
- let feedbackObj={};
56
- let feedback={};
57
- if(index===1)
58
- {
59
- feedbackObj['positiveFeedback']=Feedback.positiveFeedback;
60
- feedback['feedback']=feedbackObj;
61
- feedback['feedbackActions']=Feedback.feedbackActions
62
- feedback['feedbackUid']=Feedback.feedbackUid
63
- this.positiveClick=true
64
- }
65
- else if(index === 2)
66
- {
67
- feedbackObj['negativeFeedback']=Feedback.negativeFeedback;
68
- feedback['feedback']=feedbackObj;
69
- feedback['feedbackActions']=Feedback.feedbackActions
70
- feedback['feedbackUid']=Feedback.feedbackUid
71
- this.negativeClick=true
72
- }
73
- feedback.feedbackUid = this.feedBack.feedbackUid;
74
- feedback.apiKey=this.feedBack.apiKey
75
- this.$emit('positiveFeedback',feedback,this.feedBack.apiKey);
76
- this.isDisabled=true
77
- },
78
- }
79
- }
80
- </script>
81
-
82
- <style scoped lang="less">
83
- #feedBack{
84
- .feed-commen{
85
- margin-right: 8px;
86
- }
87
- .feed-button{
88
- /deep/.el-button{
89
- border: 1px solid #BEC5DB;
90
- color: #616161;
91
- border-radius: 14px;
92
- font-weight: 400;
93
- }
94
- }
95
- .feed-check-button{
96
- /deep/.el-button{
97
- border: 1px solid #BBCDFF;
98
- color: #366aff;
99
- border-radius: 14px;
100
- font-weight: 400;
101
- }
102
- }
103
-
104
- /deep/.el-button.is-plain{
105
- padding: 9px 20px;
106
- }
107
- }
108
- .phoneClass{
109
- width: 100vw;
110
- text-align: left;
111
- /*margin: 0 auto;*/
112
- line-height: 34px;
113
- height: 56px;
114
- padding-left: 20px;
115
- .el-button{
116
- min-width: 60px;
117
- height: 31px;
118
- line-height: 0.9;
119
- }
120
- }
121
- .companyClass{
122
- /* min-width: 300px;*/
123
- width: 370px;
124
- text-align: left;
125
- /*margin: 0 auto;*/
126
- line-height: 34px;
127
- padding-left: 20px;
128
- .el-button{
129
- min-width: 60px;
130
- height: 32px;
131
- line-height: 0.9;
132
- }
133
- }
134
- .notClick{
135
- pointer-events: none;
136
- }
1
+ <template>
2
+ <div id="feedBack" class="companyNotRem" :class="{phoneClass:isPhone,companyClass:isCompany,notClick:isDisabled===true}">
3
+ <span :class="!positiveClick?'feed-button':'feed-check-button'" class="feed-commen">
4
+ <el-button plain class="btnClass" @click="positiveFeedback(feedBack,1)" v-html="feedBack.positiveFeedback.text" v-if="!positiveClick">{{feedBack.positiveFeedback.text}}</el-button>
5
+ <el-button plain class="btnClassActive" v-html="feedBack.positiveFeedback.text" v-else>{{feedBack.positiveFeedback.text}}</el-button>
6
+ </span>
7
+ <span :class="!negativeClick?'feed-button':'feed-check-button'">
8
+ <el-button plain class="btnClass" @click="positiveFeedback(feedBack,2)" v-html="feedBack.negativeFeedback.text" v-if="!negativeClick">{{feedBack.negativeFeedback.text}}</el-button>
9
+ <el-button plain class="btnClassActive" v-html="feedBack.negativeFeedback.text" v-else>{{feedBack.negativeFeedback.text}}</el-button>
10
+ </span>
11
+ </div>
12
+ </template>
13
+ <script>
14
+ export default {
15
+ name: "feedBack",
16
+ data(){
17
+ return{
18
+ isPhone:false,
19
+ isCompany:false,
20
+ isDisabled:false,
21
+ positiveClick:false,
22
+ negativeClick:false
23
+ }
24
+ },
25
+ props:{
26
+ feedBack:Object,
27
+ rem:String,
28
+ disable:Boolean,
29
+ },
30
+ beforeMount() {
31
+ if(this.disable===true)
32
+ {
33
+ this.isDisabled=true
34
+ }
35
+ else
36
+ {
37
+ this.isDisabled=false
38
+ }
39
+ },
40
+ mounted() {
41
+ this.isMobile()
42
+ },
43
+ methods:{
44
+ isMobile() {
45
+ let flag = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
46
+ if (flag) {
47
+ this.isPhone=true
48
+ }
49
+ else
50
+ {
51
+ this.isCompany=true
52
+ }
53
+ },
54
+ positiveFeedback(Feedback,index){
55
+ let feedbackObj={};
56
+ let feedback={};
57
+ if(index===1)
58
+ {
59
+ feedbackObj['positiveFeedback']=Feedback.positiveFeedback;
60
+ feedback['feedback']=feedbackObj;
61
+ feedback['feedbackActions']=Feedback.feedbackActions
62
+ feedback['feedbackUid']=Feedback.feedbackUid
63
+ this.positiveClick=true
64
+ }
65
+ else if(index === 2)
66
+ {
67
+ feedbackObj['negativeFeedback']=Feedback.negativeFeedback;
68
+ feedback['feedback']=feedbackObj;
69
+ feedback['feedbackActions']=Feedback.feedbackActions
70
+ feedback['feedbackUid']=Feedback.feedbackUid
71
+ this.negativeClick=true
72
+ }
73
+ feedback.feedbackUid = this.feedBack.feedbackUid;
74
+ feedback.apiKey=this.feedBack.apiKey
75
+ this.$emit('positiveFeedback',feedback,this.feedBack.apiKey);
76
+ this.isDisabled=true
77
+ },
78
+ }
79
+ }
80
+ </script>
81
+
82
+ <style scoped lang="less">
83
+ #feedBack{
84
+ .feed-commen{
85
+ margin-right: 8px;
86
+ }
87
+ .feed-button{
88
+ /deep/.el-button{
89
+ border: 1px solid #BEC5DB;
90
+ color: #616161;
91
+ border-radius: 14px;
92
+ font-weight: 400;
93
+ }
94
+ }
95
+ .feed-check-button{
96
+ /deep/.el-button{
97
+ border: 1px solid #BBCDFF;
98
+ color: #366aff;
99
+ border-radius: 14px;
100
+ font-weight: 400;
101
+ }
102
+ }
103
+
104
+ /deep/.el-button.is-plain{
105
+ padding: 9px 20px;
106
+ }
107
+ }
108
+ .phoneClass{
109
+ width: 100vw;
110
+ text-align: left;
111
+ /*margin: 0 auto;*/
112
+ line-height: 34px;
113
+ height: 56px;
114
+ padding-left: 20px;
115
+ .el-button{
116
+ min-width: 60px;
117
+ height: 31px;
118
+ line-height: 0.9;
119
+ }
120
+ }
121
+ .companyClass{
122
+ /* min-width: 300px;*/
123
+ width: 370px;
124
+ text-align: left;
125
+ /*margin: 0 auto;*/
126
+ line-height: 34px;
127
+ padding-left: 20px;
128
+ .el-button{
129
+ min-width: 60px;
130
+ height: 32px;
131
+ line-height: 0.9;
132
+ }
133
+ }
134
+ .notClick{
135
+ pointer-events: none;
136
+ }
137
137
  </style>
@@ -1,109 +1,109 @@
1
- <!-- TODO 暂时不使用组件,请使用js工具类 AliyunIssUtil.js -->
2
- <template>
3
-
4
- <div class="aliyun-oss-components">
5
- <input type="file" v-on:change="fileChange" ref="inputer">
6
- </div>
7
- </template>
8
-
9
- <script>
10
- import {uid} from 'uid';
11
-
12
- const OSS = require('ali-oss');
13
-
14
- Date.prototype.Format = function (fmt) {
15
- const o = {
16
- "M+": this.getMonth() + 1, //月份
17
- "d+": this.getDate(), //日
18
- "h+": this.getHours(), //小时
19
- "m+": this.getMinutes(), //分
20
- "s+": this.getSeconds(), //秒
21
- "q+": Math.floor((this.getMonth() + 3) / 3), //季度
22
- "S": this.getMilliseconds() //毫秒
23
- };
24
- if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
25
- for (const k in o)
26
- if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
27
- return fmt;
28
- };
29
-
30
-
31
- export default {
32
- name: "AliyunOssComponents",
33
- data() {
34
- return {
35
- file: null,
36
- ossClient: null
37
- }
38
- },
39
- props: {
40
- // Aliyun OSS 配置
41
- ossConfig: {
42
- type: Object,
43
- default: function () {
44
- return {
45
- region: "",
46
- //云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用STS方式来进行API访问
47
- accessKeyId: "",
48
- accessKeySecret: "",
49
- bucket: ""
50
- }
51
- }
52
- },
53
- // 路径生成函数
54
- pathGenerate: {
55
- type: Function,
56
- default: function (filename) {
57
- return "front-oss/" + new Date().Format("yyyy/MM/dd/hh/mm/") + uid(32) + "/" + filename;
58
- }
59
- },
60
- data: [Blob, Buffer, File]
61
- },
62
- mounted() {
63
- console.debug(this.ossConfig);
64
- this.ossClient = new OSS(this.ossConfig);
65
- },
66
- methods: {
67
- fileChange() {
68
- let inputDOM = this.$refs.inputer;
69
- // 通过DOM取文件数据
70
- // this.file = ;
71
- console.debug('file change', inputDOM.files);
72
- this.putObject(inputDOM.files[0]);
73
- this.multipartUpload(inputDOM.files[0]);
74
- },
75
- /**
76
- *
77
- * @param data
78
- * @return {Promise<null|void>}
79
- */
80
- async putObject(data) {
81
- // object-key可以自定义为文件名(例如file.txt)或目录(例如abc/test/file.txt)的形式,实现将文件上传至当前Bucket或Bucket下的指定目录。
82
- let objectKey = this.pathGenerate(data.name);
83
- let result = await this.ossClient.put(objectKey, data);
84
- return result;
85
-
86
- },
87
- async multipartUpload(data, callback) {
88
- // object-key可以自定义为文件名(例如file.txt)或目录(例如abc/test/file.txt)的形式,实现将文件上传至当前Bucket或Bucket下的指定目录。
89
- let objectKey = this.pathGenerate(data.name);
90
- let res = await this.ossClient.multipartUpload(objectKey, data, {
91
- progress: function (p, checkpoint) {
92
- console.debug('progress callback', p, checkpoint);
93
- // 断点记录点。浏览器重启后无法直接继续上传,您需要手动触发上传操作。
94
- if (callback && callback instanceof Function) {
95
- callback(p, checkpoint);
96
- }
97
- }
98
- });
99
- return res;
100
-
101
- }
102
- }
103
-
104
- }
105
- </script>
106
-
107
- <style scoped>
108
-
1
+ <!-- TODO 暂时不使用组件,请使用js工具类 AliyunIssUtil.js -->
2
+ <template>
3
+
4
+ <div class="aliyun-oss-components">
5
+ <input type="file" v-on:change="fileChange" ref="inputer">
6
+ </div>
7
+ </template>
8
+
9
+ <script>
10
+ import {uid} from 'uid';
11
+
12
+ const OSS = require('ali-oss');
13
+
14
+ Date.prototype.Format = function (fmt) {
15
+ const o = {
16
+ "M+": this.getMonth() + 1, //月份
17
+ "d+": this.getDate(), //日
18
+ "h+": this.getHours(), //小时
19
+ "m+": this.getMinutes(), //分
20
+ "s+": this.getSeconds(), //秒
21
+ "q+": Math.floor((this.getMonth() + 3) / 3), //季度
22
+ "S": this.getMilliseconds() //毫秒
23
+ };
24
+ if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
25
+ for (const k in o)
26
+ if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
27
+ return fmt;
28
+ };
29
+
30
+
31
+ export default {
32
+ name: "AliyunOssComponents",
33
+ data() {
34
+ return {
35
+ file: null,
36
+ ossClient: null
37
+ }
38
+ },
39
+ props: {
40
+ // Aliyun OSS 配置
41
+ ossConfig: {
42
+ type: Object,
43
+ default: function () {
44
+ return {
45
+ region: "",
46
+ //云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用STS方式来进行API访问
47
+ accessKeyId: "",
48
+ accessKeySecret: "",
49
+ bucket: ""
50
+ }
51
+ }
52
+ },
53
+ // 路径生成函数
54
+ pathGenerate: {
55
+ type: Function,
56
+ default: function (filename) {
57
+ return "front-oss/" + new Date().Format("yyyy/MM/dd/hh/mm/") + uid(32) + "/" + filename;
58
+ }
59
+ },
60
+ data: [Blob, Buffer, File]
61
+ },
62
+ mounted() {
63
+ console.debug(this.ossConfig);
64
+ this.ossClient = new OSS(this.ossConfig);
65
+ },
66
+ methods: {
67
+ fileChange() {
68
+ let inputDOM = this.$refs.inputer;
69
+ // 通过DOM取文件数据
70
+ // this.file = ;
71
+ console.debug('file change', inputDOM.files);
72
+ this.putObject(inputDOM.files[0]);
73
+ this.multipartUpload(inputDOM.files[0]);
74
+ },
75
+ /**
76
+ *
77
+ * @param data
78
+ * @return {Promise<null|void>}
79
+ */
80
+ async putObject(data) {
81
+ // object-key可以自定义为文件名(例如file.txt)或目录(例如abc/test/file.txt)的形式,实现将文件上传至当前Bucket或Bucket下的指定目录。
82
+ let objectKey = this.pathGenerate(data.name);
83
+ let result = await this.ossClient.put(objectKey, data);
84
+ return result;
85
+
86
+ },
87
+ async multipartUpload(data, callback) {
88
+ // object-key可以自定义为文件名(例如file.txt)或目录(例如abc/test/file.txt)的形式,实现将文件上传至当前Bucket或Bucket下的指定目录。
89
+ let objectKey = this.pathGenerate(data.name);
90
+ let res = await this.ossClient.multipartUpload(objectKey, data, {
91
+ progress: function (p, checkpoint) {
92
+ console.debug('progress callback', p, checkpoint);
93
+ // 断点记录点。浏览器重启后无法直接继续上传,您需要手动触发上传操作。
94
+ if (callback && callback instanceof Function) {
95
+ callback(p, checkpoint);
96
+ }
97
+ }
98
+ });
99
+ return res;
100
+
101
+ }
102
+ }
103
+
104
+ }
105
+ </script>
106
+
107
+ <style scoped>
108
+
109
109
  </style>