askbot-dragon 1.4.2 → 1.4.3

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 (85) 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 +58 -58
  5. package/public/index.html +59 -59
  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/common.js +11 -11
  13. package/src/assets/js/hammer.js +71 -71
  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 +191 -191
  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 +211 -211
  20. package/src/components/ActionAlertIframe.vue +112 -112
  21. package/src/components/AiGuide.vue +467 -467
  22. package/src/components/AnswerDocknowledge.vue +446 -446
  23. package/src/components/AnswerVoice.vue +285 -280
  24. package/src/components/AskIFrame.vue +15 -15
  25. package/src/components/ConversationContainer.vue +4029 -4028
  26. package/src/components/FileType.vue +86 -86
  27. package/src/components/Message.vue +27 -27
  28. package/src/components/actionSatisfaction.vue +107 -107
  29. package/src/components/actionSendToBot.vue +62 -62
  30. package/src/components/answerDissatisfaction.vue +62 -62
  31. package/src/components/answerRadio.vue +108 -108
  32. package/src/components/ask-components/DissatisfactionOptions.vue +57 -57
  33. package/src/components/ask-components/Msgloading.vue +37 -37
  34. package/src/components/ask-components/SatisfactionV2.vue +15 -15
  35. package/src/components/askVideo.vue +138 -138
  36. package/src/components/assetDetails.vue +370 -370
  37. package/src/components/assetMessage.vue +228 -228
  38. package/src/components/associationIntention.vue +331 -331
  39. package/src/components/attachmentPreview.vue +90 -90
  40. package/src/components/botActionSatisfactor.vue +68 -68
  41. package/src/components/chatContent.vue +513 -513
  42. package/src/components/feedBack.vue +136 -136
  43. package/src/components/fielListView.vue +349 -349
  44. package/src/components/file/AliyunOssComponents.vue +108 -108
  45. package/src/components/formTemplate.vue +3362 -3362
  46. package/src/components/loadingProcess.vue +164 -164
  47. package/src/components/message/ActionAlertIframe.vue +112 -112
  48. package/src/components/message/ShopMessage.vue +164 -164
  49. package/src/components/message/TextMessage.vue +924 -924
  50. package/src/components/message/TicketMessage.vue +177 -177
  51. package/src/components/message/swiper/index.js +4 -4
  52. package/src/components/message/swiper/ticketSwiper.vue +503 -503
  53. package/src/components/message/swiper/ticketSwiperItem.vue +61 -61
  54. package/src/components/msgLoading.vue +231 -231
  55. package/src/components/myPopup.vue +70 -70
  56. package/src/components/pdfPosition.vue +829 -829
  57. package/src/components/popup.vue +227 -227
  58. package/src/components/previewDoc.vue +228 -228
  59. package/src/components/previewPdf.vue +257 -257
  60. package/src/components/receiverMessagePlatform.vue +65 -65
  61. package/src/components/recommend.vue +89 -89
  62. package/src/components/selector/hOption.vue +20 -20
  63. package/src/components/selector/hSelector.vue +199 -199
  64. package/src/components/selector/hWrapper.vue +216 -216
  65. package/src/components/senderMessagePlatform.vue +50 -50
  66. package/src/components/source/BotMessage.vue +24 -24
  67. package/src/components/source/CustomMessage.vue +24 -24
  68. package/src/components/test.vue +260 -260
  69. package/src/components/tree.vue +294 -294
  70. package/src/components/utils/AliyunIssUtil.js +72 -72
  71. package/src/components/utils/ckeditor.js +155 -155
  72. package/src/components/utils/ckeditorImageUpload/command.js +109 -109
  73. package/src/components/utils/ckeditorImageUpload/editing.js +11 -11
  74. package/src/components/utils/ckeditorImageUpload/plugin-image.js +11 -11
  75. package/src/components/utils/ckeditorImageUpload/toolbar-ui.js +40 -40
  76. package/src/components/utils/ckeditorfileUpload/common.js +133 -133
  77. package/src/components/utils/ckeditorfileUpload/editing.js +11 -11
  78. package/src/components/utils/ckeditorfileUpload/plugin_file.js +11 -11
  79. package/src/components/utils/ckeditorfileUpload/toolbar_ui.js +34 -34
  80. package/src/components/utils/format_date.js +25 -25
  81. package/src/components/utils/index.js +6 -6
  82. package/src/components/utils/math_utils.js +29 -29
  83. package/src/components/voiceComponent.vue +119 -119
  84. package/src/main.js +60 -60
  85. package/vue.config.js +55 -55
@@ -1,110 +1,110 @@
1
- import Command from "@ckeditor/ckeditor5-core/src/command";
2
- import { multipartUpload, ossFileUrl } from "../AliyunIssUtil";
3
- const ossConfig = {
4
- region: "oss-cn-zhangjiakou",
5
- //云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用STS方式来进行API访问
6
- accessKeyId: "LTAI4G3QtdEdwkEbihBngAsK",
7
- accessKeySecret: "OwgdVfc5PeCkIgqIdug660xmiSPchn",
8
- // stsToken: '<Your securityToken(STS)>',
9
- bucket: "guoranopen-zjk",
10
- }
11
- export default class ImageCommand extends Command {
12
- refresh() {
13
- this.isEnabled = true;
14
- }
15
- execute(file) {
16
- if (file){
17
- this.forEachFiles(file.file)
18
- return
19
- }
20
- var inputObj = document.createElement('input')
21
- inputObj.setAttribute('id', '_ef');
22
- inputObj.setAttribute('type', 'file');
23
- inputObj.setAttribute('accept','image/jpeg,image/png,image/gif,image/bmp,image/webp,image/tiff')
24
- inputObj.setAttribute("style", 'visibility:hidden');
25
- document.body.appendChild(inputObj);
26
- inputObj.click();
27
- inputObj.onchange = () => {
28
- // 循环上传文件
29
- let files = inputObj.files;
30
- for (let index = 0; index < files.length; index++) {
31
- const filed = files[index];
32
- let command = this.editor.commands.get("insertAskComponent");
33
- command.execute({
34
- tag: "span-editable",
35
- options: {
36
- name: filed.name + '正在上传...',
37
- data: index,
38
- editable:false,
39
- type:'upload'
40
- },
41
- })
42
- this.upload(filed).then(res =>{
43
- // let command = this.editor.commands.get("insertAskComponent");
44
- command.execute({
45
- tag: "img",
46
- options: {
47
- width:'100%',
48
- alt: filed.name + index,
49
- src: res.default
50
- },
51
- });
52
- })
53
- }
54
- }
55
- }
56
- forEachFiles(files){
57
- for (let index = 0; index < files.length; index++) {
58
- const filed = files[index];
59
- let command = this.editor.commands.get("insertAskComponent");
60
- command.execute({
61
- tag: "span-editable",
62
- options: {
63
- name: filed.name + '正在上传...',
64
- data: index,
65
- editable: false,
66
- type: 'upload'
67
- },
68
- })
69
- this.upload(filed).then(res => {
70
- // let command = this.editor.commands.get("insertAskComponent");
71
- command.execute({
72
- tag: "img",
73
- options: {
74
- width: '100%',
75
- alt: filed.name + index,
76
- src: res.default
77
- },
78
- });
79
- })
80
- }
81
- }
82
- upload(file) {
83
- return new Promise((resolve) => {
84
- /* this._initRequest();
85
- this._initListeners( resolve, reject, file );
86
- this._sendRequest( file );*/
87
- this.uploadFile(file, resolve)
88
- })
89
- }
90
- uploadFile(file, resolve) {
91
- let imgInfo = {
92
- url: '',
93
- }
94
- let res = multipartUpload(
95
- ossConfig,
96
- file,
97
- null,
98
- imgInfo
99
- );
100
- console.log(res,'resprespresp');
101
- res.then(resp => {
102
- imgInfo.url = ossFileUrl(ossConfig, resp.name)
103
- console.log(resp,'resprespresp');
104
- console.log(imgInfo)
105
- resolve({
106
- default: imgInfo.url
107
- })
108
- })
109
- }
1
+ import Command from "@ckeditor/ckeditor5-core/src/command";
2
+ import { multipartUpload, ossFileUrl } from "../AliyunIssUtil";
3
+ const ossConfig = {
4
+ region: "oss-cn-zhangjiakou",
5
+ //云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用STS方式来进行API访问
6
+ accessKeyId: "LTAI4G3QtdEdwkEbihBngAsK",
7
+ accessKeySecret: "OwgdVfc5PeCkIgqIdug660xmiSPchn",
8
+ // stsToken: '<Your securityToken(STS)>',
9
+ bucket: "guoranopen-zjk",
10
+ }
11
+ export default class ImageCommand extends Command {
12
+ refresh() {
13
+ this.isEnabled = true;
14
+ }
15
+ execute(file) {
16
+ if (file){
17
+ this.forEachFiles(file.file)
18
+ return
19
+ }
20
+ var inputObj = document.createElement('input')
21
+ inputObj.setAttribute('id', '_ef');
22
+ inputObj.setAttribute('type', 'file');
23
+ inputObj.setAttribute('accept','image/jpeg,image/png,image/gif,image/bmp,image/webp,image/tiff')
24
+ inputObj.setAttribute("style", 'visibility:hidden');
25
+ document.body.appendChild(inputObj);
26
+ inputObj.click();
27
+ inputObj.onchange = () => {
28
+ // 循环上传文件
29
+ let files = inputObj.files;
30
+ for (let index = 0; index < files.length; index++) {
31
+ const filed = files[index];
32
+ let command = this.editor.commands.get("insertAskComponent");
33
+ command.execute({
34
+ tag: "span-editable",
35
+ options: {
36
+ name: filed.name + '正在上传...',
37
+ data: index,
38
+ editable:false,
39
+ type:'upload'
40
+ },
41
+ })
42
+ this.upload(filed).then(res =>{
43
+ // let command = this.editor.commands.get("insertAskComponent");
44
+ command.execute({
45
+ tag: "img",
46
+ options: {
47
+ width:'100%',
48
+ alt: filed.name + index,
49
+ src: res.default
50
+ },
51
+ });
52
+ })
53
+ }
54
+ }
55
+ }
56
+ forEachFiles(files){
57
+ for (let index = 0; index < files.length; index++) {
58
+ const filed = files[index];
59
+ let command = this.editor.commands.get("insertAskComponent");
60
+ command.execute({
61
+ tag: "span-editable",
62
+ options: {
63
+ name: filed.name + '正在上传...',
64
+ data: index,
65
+ editable: false,
66
+ type: 'upload'
67
+ },
68
+ })
69
+ this.upload(filed).then(res => {
70
+ // let command = this.editor.commands.get("insertAskComponent");
71
+ command.execute({
72
+ tag: "img",
73
+ options: {
74
+ width: '100%',
75
+ alt: filed.name + index,
76
+ src: res.default
77
+ },
78
+ });
79
+ })
80
+ }
81
+ }
82
+ upload(file) {
83
+ return new Promise((resolve) => {
84
+ /* this._initRequest();
85
+ this._initListeners( resolve, reject, file );
86
+ this._sendRequest( file );*/
87
+ this.uploadFile(file, resolve)
88
+ })
89
+ }
90
+ uploadFile(file, resolve) {
91
+ let imgInfo = {
92
+ url: '',
93
+ }
94
+ let res = multipartUpload(
95
+ ossConfig,
96
+ file,
97
+ null,
98
+ imgInfo
99
+ );
100
+ console.log(res,'resprespresp');
101
+ res.then(resp => {
102
+ imgInfo.url = ossFileUrl(ossConfig, resp.name)
103
+ console.log(resp,'resprespresp');
104
+ console.log(imgInfo)
105
+ resolve({
106
+ default: imgInfo.url
107
+ })
108
+ })
109
+ }
110
110
  }
@@ -1,12 +1,12 @@
1
- import Plugin from "@ckeditor/ckeditor5-core/src/plugin";
2
- import ImageCommand from "./command";
3
- export default class MyimageUpload extends Plugin {
4
- static get pluginName() {
5
- return "imageUpload";
6
- }
7
- init() {
8
- const editor = this.editor;
9
- // 注册一个 BoldCommand 命令
10
- editor.commands.add('imageUpload', new ImageCommand(editor));
11
- }
1
+ import Plugin from "@ckeditor/ckeditor5-core/src/plugin";
2
+ import ImageCommand from "./command";
3
+ export default class MyimageUpload extends Plugin {
4
+ static get pluginName() {
5
+ return "imageUpload";
6
+ }
7
+ init() {
8
+ const editor = this.editor;
9
+ // 注册一个 BoldCommand 命令
10
+ editor.commands.add('imageUpload', new ImageCommand(editor));
11
+ }
12
12
  }
@@ -1,12 +1,12 @@
1
- import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
2
- import ToolbarUI from './toolbar-ui'
3
- import ImageUpload from './editing'
4
-
5
- export default class MyimageUpload extends Plugin {
6
- static get requires() {
7
- return [ImageUpload, ToolbarUI];
8
- }
9
- static get pluginName() {
10
- return 'MyimageUpload';
11
- }
1
+ import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
2
+ import ToolbarUI from './toolbar-ui'
3
+ import ImageUpload from './editing'
4
+
5
+ export default class MyimageUpload extends Plugin {
6
+ static get requires() {
7
+ return [ImageUpload, ToolbarUI];
8
+ }
9
+ static get pluginName() {
10
+ return 'MyimageUpload';
11
+ }
12
12
  }
@@ -1,41 +1,41 @@
1
- /* eslint-disable */
2
- import Plugin from "@ckeditor/ckeditor5-core/src/plugin";
3
- import ButtonView from "@ckeditor/ckeditor5-ui/src/button/buttonview";
4
- // import aoteman from "@ckeditor/ckeditor5-basic-styles/theme/icons/bold.svg";
5
-
6
- // console.log(aoteman.replace('/',''));
7
- export default class BoldToolbarUI extends Plugin {
8
- init() {
9
- this._createToolbarButton();
10
- }
11
-
12
- _createToolbarButton() {
13
- const editor = this.editor;
14
- const command = editor.commands.get('imageUpload');
15
- editor.ui.componentFactory.add('MyimageUpload', (locale) => {
16
- const view = new ButtonView(locale);
17
- view.set({
18
- label: '上传图片',
19
- tooltip: true,
20
- withText: true, // 在按钮上展示 label
21
- // icon:`<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
22
- // viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" xml:space="preserve">
23
- // <path d="M182,4.2H18c-9.9,0-18,8-18,18l0,0v156c0.2,9.7,8.3,17.5,18,17.5h164c9.7,0,17.8-7.8,18-17.5v-156C200,12.3,192,4.2,182,4.2
24
- // z M152.5,101.2c-3.1-2.3-7.5-2.3-10.6,0l-31.1,26.1L67.9,58.5c-3.4-3.7-8.9-3.9-12.6-0.6c-0.2,0.2-0.3,0.3-0.6,0.6L18,99.3V22.2h164
25
- // v91.3L152.5,101.2z" fill="#333333"/>
26
- // <path d="M145.8,38.3c-14,0-25.3,11.3-25.3,25.3s11.3,25.3,25.3,25.3s25.3-11.3,25.3-25.3l0,0C171.1,49.6,159.7,38.3,145.8,38.3z
27
- // M145.8,70.3c-4,0-7.3-3.2-7.3-7.3s3.2-7.3,7.3-7.3s7.3,3.2,7.3,7.3c0.2,4-2.8,7.4-6.8,7.6c-0.1,0-0.3,0-0.4,0V70.3z" fill="#333333"/>
28
- // </svg>`,
29
- class:'icon'
30
- });
31
-
32
- // console.log(Template);
33
- // 将按钮的状态关联到命令对应值上
34
- view.bind("isOn", "isEnabled").to(command, "value", "isEnabled");
35
- // 点击按钮时触发相应命令
36
- this.listenTo(view, "execute", () => editor.execute('imageUpload'));
37
- return view;
38
-
39
- })
40
- }
1
+ /* eslint-disable */
2
+ import Plugin from "@ckeditor/ckeditor5-core/src/plugin";
3
+ import ButtonView from "@ckeditor/ckeditor5-ui/src/button/buttonview";
4
+ // import aoteman from "@ckeditor/ckeditor5-basic-styles/theme/icons/bold.svg";
5
+
6
+ // console.log(aoteman.replace('/',''));
7
+ export default class BoldToolbarUI extends Plugin {
8
+ init() {
9
+ this._createToolbarButton();
10
+ }
11
+
12
+ _createToolbarButton() {
13
+ const editor = this.editor;
14
+ const command = editor.commands.get('imageUpload');
15
+ editor.ui.componentFactory.add('MyimageUpload', (locale) => {
16
+ const view = new ButtonView(locale);
17
+ view.set({
18
+ label: '上传图片',
19
+ tooltip: true,
20
+ withText: true, // 在按钮上展示 label
21
+ // icon:`<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
22
+ // viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" xml:space="preserve">
23
+ // <path d="M182,4.2H18c-9.9,0-18,8-18,18l0,0v156c0.2,9.7,8.3,17.5,18,17.5h164c9.7,0,17.8-7.8,18-17.5v-156C200,12.3,192,4.2,182,4.2
24
+ // z M152.5,101.2c-3.1-2.3-7.5-2.3-10.6,0l-31.1,26.1L67.9,58.5c-3.4-3.7-8.9-3.9-12.6-0.6c-0.2,0.2-0.3,0.3-0.6,0.6L18,99.3V22.2h164
25
+ // v91.3L152.5,101.2z" fill="#333333"/>
26
+ // <path d="M145.8,38.3c-14,0-25.3,11.3-25.3,25.3s11.3,25.3,25.3,25.3s25.3-11.3,25.3-25.3l0,0C171.1,49.6,159.7,38.3,145.8,38.3z
27
+ // M145.8,70.3c-4,0-7.3-3.2-7.3-7.3s3.2-7.3,7.3-7.3s7.3,3.2,7.3,7.3c0.2,4-2.8,7.4-6.8,7.6c-0.1,0-0.3,0-0.4,0V70.3z" fill="#333333"/>
28
+ // </svg>`,
29
+ class:'icon'
30
+ });
31
+
32
+ // console.log(Template);
33
+ // 将按钮的状态关联到命令对应值上
34
+ view.bind("isOn", "isEnabled").to(command, "value", "isEnabled");
35
+ // 点击按钮时触发相应命令
36
+ this.listenTo(view, "execute", () => editor.execute('imageUpload'));
37
+ return view;
38
+
39
+ })
40
+ }
41
41
  }
@@ -1,134 +1,134 @@
1
- import Command from "@ckeditor/ckeditor5-core/src/command";
2
- import { multipartUpload, ossFileUrl } from "../AliyunIssUtil";
3
- import { v4 as uuidv4 } from "uuid";
4
- const ossConfig = {
5
- region: "oss-cn-zhangjiakou",
6
- //云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用STS方式来进行API访问
7
- accessKeyId: "LTAI4G3QtdEdwkEbihBngAsK",
8
- accessKeySecret: "OwgdVfc5PeCkIgqIdug660xmiSPchn",
9
- // stsToken: '<Your securityToken(STS)>',
10
- bucket: "guoranopen-zjk",
11
- }
12
-
13
- export default class FileCommand extends Command {
14
- refresh() {
15
- this.isEnabled = true;
16
- }
17
- execute(file) {
18
- if (file){
19
- this.forEachFiles(file.file)
20
- return
21
- }
22
- let inputObj = document.createElement('input')
23
- inputObj.setAttribute('id', '_ef');
24
- inputObj.setAttribute('type', 'file');
25
- inputObj.setAttribute('accept','*')
26
- inputObj.setAttribute("style", 'visibility:hidden');
27
- document.body.appendChild(inputObj);
28
- inputObj.click();
29
- inputObj.onchange = () => {
30
- // 循环上传文件
31
- let files = inputObj.files;
32
- for (let index = 0; index < files.length; index++) {
33
- const filed = files[index];
34
- let command = this.editor.commands.get("insertAskComponent");
35
- if(filed.type.includes('image')) {
36
- command.execute({
37
- tag: "span-editable",
38
- options: {
39
- name: filed.name + '正在上传...',
40
- data: index,
41
- editable:false,
42
- type:'upload'
43
- },
44
- })
45
- this.upload(filed).then(res =>{
46
- command.execute({
47
- tag: "img",
48
- options: {
49
- width:'100%',
50
- alt: filed.name + index,
51
- src: res.default
52
- },
53
- });
54
- })
55
- } else {
56
- let uid = uuidv4()
57
- command.execute({
58
- tag: "span-editable",
59
- options: {
60
- name: filed.name,
61
- data: uid,
62
- editable:false,
63
- type:'FileUpload'
64
- },
65
- })
66
- this.upload(filed).then(res =>{
67
- // 需要回调通知父组件 上传成功
68
- let data = JSON.stringify({
69
- id: uid,
70
- default:res.default
71
- })
72
- command.execute({
73
- tag: "span-editable",
74
- options: {
75
- name: filed.name,
76
- data: data ,
77
- editable:false,
78
- type:'MyFile'
79
- },
80
- })
81
- })
82
- }
83
-
84
- }
85
- }
86
- }
87
-
88
- forEachFiles(files){
89
- for (let index = 0; index < files.length; index++) {
90
- const filed = files[index];
91
- this.upload(filed).then(res =>{
92
- // 需要回调通知父组件 上传成功
93
- let command = this.editor.commands.get("insertAskComponent");
94
- command.execute({
95
- tag: "span-editable",
96
- options: {
97
- name: filed.name,
98
- data: res.default,
99
- editable:false,
100
- type:'MyFile'
101
- },
102
- // src: res.default
103
- })
104
- })
105
- }
106
- }
107
-
108
- upload(file) {
109
- return new Promise((resolve) => {
110
- /* this._initRequest();
111
- this._initListeners( resolve, reject, file );
112
- this._sendRequest( file );*/
113
- this.uploadFile(file, resolve)
114
- })
115
- }
116
- uploadFile(file, resolve) {
117
- let imgInfo = {
118
- url: '',
119
- }
120
- let res = multipartUpload(
121
- ossConfig,
122
- file,
123
- null,
124
- imgInfo
125
- );
126
- res.then(resp => {
127
- imgInfo.url = ossFileUrl(ossConfig, resp.name)
128
- resolve({
129
- name: resp.name,
130
- default: imgInfo.url
131
- })
132
- })
133
- }
1
+ import Command from "@ckeditor/ckeditor5-core/src/command";
2
+ import { multipartUpload, ossFileUrl } from "../AliyunIssUtil";
3
+ import { v4 as uuidv4 } from "uuid";
4
+ const ossConfig = {
5
+ region: "oss-cn-zhangjiakou",
6
+ //云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用STS方式来进行API访问
7
+ accessKeyId: "LTAI4G3QtdEdwkEbihBngAsK",
8
+ accessKeySecret: "OwgdVfc5PeCkIgqIdug660xmiSPchn",
9
+ // stsToken: '<Your securityToken(STS)>',
10
+ bucket: "guoranopen-zjk",
11
+ }
12
+
13
+ export default class FileCommand extends Command {
14
+ refresh() {
15
+ this.isEnabled = true;
16
+ }
17
+ execute(file) {
18
+ if (file){
19
+ this.forEachFiles(file.file)
20
+ return
21
+ }
22
+ let inputObj = document.createElement('input')
23
+ inputObj.setAttribute('id', '_ef');
24
+ inputObj.setAttribute('type', 'file');
25
+ inputObj.setAttribute('accept','*')
26
+ inputObj.setAttribute("style", 'visibility:hidden');
27
+ document.body.appendChild(inputObj);
28
+ inputObj.click();
29
+ inputObj.onchange = () => {
30
+ // 循环上传文件
31
+ let files = inputObj.files;
32
+ for (let index = 0; index < files.length; index++) {
33
+ const filed = files[index];
34
+ let command = this.editor.commands.get("insertAskComponent");
35
+ if(filed.type.includes('image')) {
36
+ command.execute({
37
+ tag: "span-editable",
38
+ options: {
39
+ name: filed.name + '正在上传...',
40
+ data: index,
41
+ editable:false,
42
+ type:'upload'
43
+ },
44
+ })
45
+ this.upload(filed).then(res =>{
46
+ command.execute({
47
+ tag: "img",
48
+ options: {
49
+ width:'100%',
50
+ alt: filed.name + index,
51
+ src: res.default
52
+ },
53
+ });
54
+ })
55
+ } else {
56
+ let uid = uuidv4()
57
+ command.execute({
58
+ tag: "span-editable",
59
+ options: {
60
+ name: filed.name,
61
+ data: uid,
62
+ editable:false,
63
+ type:'FileUpload'
64
+ },
65
+ })
66
+ this.upload(filed).then(res =>{
67
+ // 需要回调通知父组件 上传成功
68
+ let data = JSON.stringify({
69
+ id: uid,
70
+ default:res.default
71
+ })
72
+ command.execute({
73
+ tag: "span-editable",
74
+ options: {
75
+ name: filed.name,
76
+ data: data ,
77
+ editable:false,
78
+ type:'MyFile'
79
+ },
80
+ })
81
+ })
82
+ }
83
+
84
+ }
85
+ }
86
+ }
87
+
88
+ forEachFiles(files){
89
+ for (let index = 0; index < files.length; index++) {
90
+ const filed = files[index];
91
+ this.upload(filed).then(res =>{
92
+ // 需要回调通知父组件 上传成功
93
+ let command = this.editor.commands.get("insertAskComponent");
94
+ command.execute({
95
+ tag: "span-editable",
96
+ options: {
97
+ name: filed.name,
98
+ data: res.default,
99
+ editable:false,
100
+ type:'MyFile'
101
+ },
102
+ // src: res.default
103
+ })
104
+ })
105
+ }
106
+ }
107
+
108
+ upload(file) {
109
+ return new Promise((resolve) => {
110
+ /* this._initRequest();
111
+ this._initListeners( resolve, reject, file );
112
+ this._sendRequest( file );*/
113
+ this.uploadFile(file, resolve)
114
+ })
115
+ }
116
+ uploadFile(file, resolve) {
117
+ let imgInfo = {
118
+ url: '',
119
+ }
120
+ let res = multipartUpload(
121
+ ossConfig,
122
+ file,
123
+ null,
124
+ imgInfo
125
+ );
126
+ res.then(resp => {
127
+ imgInfo.url = ossFileUrl(ossConfig, resp.name)
128
+ resolve({
129
+ name: resp.name,
130
+ default: imgInfo.url
131
+ })
132
+ })
133
+ }
134
134
  }
@@ -1,12 +1,12 @@
1
- import Plugin from "@ckeditor/ckeditor5-core/src/plugin";
2
- import FileCommand from "./common";
3
- export default class MyFileUpload extends Plugin {
4
- static get pluginName() {
5
- return "fileUpload";
6
- }
7
- init() {
8
- const editor = this.editor;
9
- // 注册一个 BoldCommand 命令
10
- editor.commands.add('fileUpload', new FileCommand(editor));
11
- }
1
+ import Plugin from "@ckeditor/ckeditor5-core/src/plugin";
2
+ import FileCommand from "./common";
3
+ export default class MyFileUpload extends Plugin {
4
+ static get pluginName() {
5
+ return "fileUpload";
6
+ }
7
+ init() {
8
+ const editor = this.editor;
9
+ // 注册一个 BoldCommand 命令
10
+ editor.commands.add('fileUpload', new FileCommand(editor));
11
+ }
12
12
  }