ocpview-plus 0.0.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 (195) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +0 -0
  3. package/dist/efviewplus.min.esm.js +99954 -0
  4. package/dist/efviewplus.min.js +142 -0
  5. package/dist/locale/lang.js +1 -0
  6. package/dist/locale/zh-CN.js +1 -0
  7. package/dist/locale/zh-TW.js +1 -0
  8. package/dist/locale/zh-UG.js +1 -0
  9. package/dist/style.css +9 -0
  10. package/dist/styles/efviewplus.css +1 -0
  11. package/package.json +144 -0
  12. package/src/components/base/controlbase.vue +191 -0
  13. package/src/components/base/controlbox.vue +102 -0
  14. package/src/components/base/index.js +3 -0
  15. package/src/components/base/load.js +20 -0
  16. package/src/components/base/probase.js +220 -0
  17. package/src/components/base/size.js +78 -0
  18. package/src/components/billbox/billbox.vue +68 -0
  19. package/src/components/billbox/index.js +2 -0
  20. package/src/components/cascaderbox/cascaderbox.vue +184 -0
  21. package/src/components/cascaderbox/index.js +2 -0
  22. package/src/components/checkbox/checkbox.vue +76 -0
  23. package/src/components/checkbox/checkgroupbox.vue +104 -0
  24. package/src/components/checkbox/index.js +3 -0
  25. package/src/components/colorbox/colorbox.vue +44 -0
  26. package/src/components/colorbox/index.js +2 -0
  27. package/src/components/combobox/combobox.vue +220 -0
  28. package/src/components/combobox/index.js +2 -0
  29. package/src/components/conditionbox/conditionbase.vue +195 -0
  30. package/src/components/conditionbox/conditionbox.vue +63 -0
  31. package/src/components/conditionbox/conditionfilterbox.vue +477 -0
  32. package/src/components/conditionbox/conditionselectorbox.vue +237 -0
  33. package/src/components/conditionbox/index.js +5 -0
  34. package/src/components/conditionbox/queryconditionbox.vue +26 -0
  35. package/src/components/conditionbox/queryconditionboxbase.vue +124 -0
  36. package/src/components/conditionbox/searchconditionbox.vue +114 -0
  37. package/src/components/conditionbox/searchgrid.vue +391 -0
  38. package/src/components/datebox/datebox.vue +129 -0
  39. package/src/components/datebox/daterangebox.vue +155 -0
  40. package/src/components/datebox/index.js +3 -0
  41. package/src/components/form/baseform.vue +677 -0
  42. package/src/components/form/detailsbox.vue +487 -0
  43. package/src/components/form/formbox.vue +29 -0
  44. package/src/components/form/formcardbox.vue +268 -0
  45. package/src/components/form/formcardgroupbox.vue +252 -0
  46. package/src/components/form/formcompro.js +19 -0
  47. package/src/components/form/formdetail.vue +129 -0
  48. package/src/components/form/formdetailtwo.vue +302 -0
  49. package/src/components/form/index.js +8 -0
  50. package/src/components/form/toolanchor.js +46 -0
  51. package/src/components/form/workform.vue +168 -0
  52. package/src/components/grid/basegrid.vue +1061 -0
  53. package/src/components/grid/editgrid.vue +51 -0
  54. package/src/components/grid/editgridbase.vue +947 -0
  55. package/src/components/grid/editgridcard.vue +193 -0
  56. package/src/components/grid/expandrow.vue +137 -0
  57. package/src/components/grid/index.js +6 -0
  58. package/src/components/grid/viewgrid.vue +122 -0
  59. package/src/components/grid/viewgridbase.vue +1284 -0
  60. package/src/components/icon/common-icon.vue +53 -0
  61. package/src/components/icon/eicon.vue +29 -0
  62. package/src/components/icon/icons.vue +42 -0
  63. package/src/components/icon/index.js +2 -0
  64. package/src/components/label/index.js +3 -0
  65. package/src/components/label/showtext.vue +95 -0
  66. package/src/components/load/loadcartoon.vue +228 -0
  67. package/src/components/map/index.js +2 -0
  68. package/src/components/map/mapbox.vue +348 -0
  69. package/src/components/masterplate/appendix.vue +586 -0
  70. package/src/components/masterplate/approval.vue +803 -0
  71. package/src/components/masterplate/base.vue +985 -0
  72. package/src/components/masterplate/billasyncimport.vue +614 -0
  73. package/src/components/masterplate/billconditionbox.vue +224 -0
  74. package/src/components/masterplate/billconditionsbox.vue +427 -0
  75. package/src/components/masterplate/billdetailform.vue +990 -0
  76. package/src/components/masterplate/billimport.vue +263 -0
  77. package/src/components/masterplate/billquerygrid.vue +316 -0
  78. package/src/components/masterplate/billsinglegrid.vue +234 -0
  79. package/src/components/masterplate/birtreport.vue +185 -0
  80. package/src/components/masterplate/detailbtntoolbar.vue +311 -0
  81. package/src/components/masterplate/detailsbox.vue +386 -0
  82. package/src/components/masterplate/editgridcard.vue +222 -0
  83. package/src/components/masterplate/editgridcard2.vue +109 -0
  84. package/src/components/masterplate/formcard.vue +106 -0
  85. package/src/components/masterplate/formcardgroupbox.vue +168 -0
  86. package/src/components/masterplate/formdetailtwo.vue +356 -0
  87. package/src/components/masterplate/gridcolset.vue +227 -0
  88. package/src/components/masterplate/index.js +23 -0
  89. package/src/components/masterplate/layouttemplate.vue +33 -0
  90. package/src/components/masterplate/leftlistrightdetails.vue +474 -0
  91. package/src/components/masterplate/leftlistrightlist.vue +465 -0
  92. package/src/components/masterplate/lefttreerightdetails.vue +619 -0
  93. package/src/components/masterplate/levelreport.vue +510 -0
  94. package/src/components/masterplate/listbtntoolbar.vue +257 -0
  95. package/src/components/masterplate/listdetails.vue +769 -0
  96. package/src/components/masterplate/operlog.vue +272 -0
  97. package/src/components/masterplate/options.vue +110 -0
  98. package/src/components/masterplate/page.vue +102 -0
  99. package/src/components/masterplate/promptmessage.vue +74 -0
  100. package/src/components/masterplate/querybar.vue +490 -0
  101. package/src/components/masterplate/report.vue +357 -0
  102. package/src/components/masterplate/rowbtntoolbar.vue +126 -0
  103. package/src/components/masterplate/simpletree.vue +129 -0
  104. package/src/components/masterplate/simpleviewgrid.vue +144 -0
  105. package/src/components/mychart/bar/bar.vue +202 -0
  106. package/src/components/mychart/basechart.vue +190 -0
  107. package/src/components/mychart/complexmychart/barline.vue +154 -0
  108. package/src/components/mychart/gauge/gauge.vue +83 -0
  109. package/src/components/mychart/index.js +9 -0
  110. package/src/components/mychart/line/line.vue +202 -0
  111. package/src/components/mychart/liquidfill/liquidfill.vue +109 -0
  112. package/src/components/mychart/pie/pie.vue +96 -0
  113. package/src/components/mychart/radar/radar.vue +122 -0
  114. package/src/components/mychart/scatter/scatter.vue +76 -0
  115. package/src/components/numberbox/append.js +11 -0
  116. package/src/components/numberbox/index.js +3 -0
  117. package/src/components/numberbox/numberbox.vue +303 -0
  118. package/src/components/numberbox/numberrangebox.vue +423 -0
  119. package/src/components/picturebox/filebox.vue +365 -0
  120. package/src/components/picturebox/index.js +3 -0
  121. package/src/components/picturebox/picturebox.vue +541 -0
  122. package/src/components/picturebox/uploadbox.vue +164 -0
  123. package/src/components/poptagbox/index.js +2 -0
  124. package/src/components/poptagbox/poptagbox.vue +389 -0
  125. package/src/components/poptextbox/index.js +2 -0
  126. package/src/components/poptextbox/poptextbox.vue +601 -0
  127. package/src/components/radiobox/index.js +2 -0
  128. package/src/components/radiobox/radiogroupbox.vue +76 -0
  129. package/src/components/richtextbox/editor.vue +150 -0
  130. package/src/components/richtextbox/index.js +2 -0
  131. package/src/components/richtextbox/richtextbox.vue +448 -0
  132. package/src/components/textbox/index.js +2 -0
  133. package/src/components/textbox/textbox.vue +98 -0
  134. package/src/components/timebox/index.js +2 -0
  135. package/src/components/timebox/timebox.vue +76 -0
  136. package/src/components/toolbar/ebutton.vue +169 -0
  137. package/src/components/toolbar/index.js +3 -0
  138. package/src/components/toolbar/toolbar.vue +446 -0
  139. package/src/components/tree/basetree.vue +725 -0
  140. package/src/components/tree/index.js +3 -0
  141. package/src/components/tree/treedata.vue +51 -0
  142. package/src/components/tree/treedatabase.vue +189 -0
  143. package/src/components/upload/billimport.vue +233 -0
  144. package/src/components/upload/index.js +2 -0
  145. package/src/components/videobox/index.js +2 -0
  146. package/src/components/videobox/uploadbox.vue +148 -0
  147. package/src/components/videobox/videobox.vue +503 -0
  148. package/src/components/wrichtextbox/editor.vue +219 -0
  149. package/src/components/wrichtextbox/index.js +2 -0
  150. package/src/components/wrichtextbox/wrichtextbox.vue +63 -0
  151. package/src/index.js +215 -0
  152. package/src/locale/format.js +51 -0
  153. package/src/locale/index.js +63 -0
  154. package/src/locale/lang/zh-CN.js +123 -0
  155. package/src/locale/lang/zh-TW.js +114 -0
  156. package/src/locale/lang/zh-UG.js +115 -0
  157. package/src/locale/lang.js +15 -0
  158. package/src/method/case/case.js +1180 -0
  159. package/src/method/config/queryconfig.js +24 -0
  160. package/src/method/const/const.js +815 -0
  161. package/src/method/index.js +8 -0
  162. package/src/static/excel/exportexcel.js +627 -0
  163. package/src/static/iview/coustom.js +463 -0
  164. package/src/store/index.js +19 -0
  165. package/src/store/modules/app.js +53 -0
  166. package/src/styles/README.md +3 -0
  167. package/src/styles/common.less +75 -0
  168. package/src/styles/components/anchor.less +74 -0
  169. package/src/styles/components/approval.less +136 -0
  170. package/src/styles/components/button.less +208 -0
  171. package/src/styles/components/card.less +51 -0
  172. package/src/styles/components/content.less +38 -0
  173. package/src/styles/components/font.less +314 -0
  174. package/src/styles/components/form.less +72 -0
  175. package/src/styles/components/iconfont/fonts/iconfont.less +1376 -0
  176. package/src/styles/components/iconfont/fonts/iconfont.svg +699 -0
  177. package/src/styles/components/iconfont/fonts/iconfont.ttf +0 -0
  178. package/src/styles/components/iconfont/fonts/iconfont.woff +0 -0
  179. package/src/styles/components/iconfont/fonts/iconfont.woff2 +0 -0
  180. package/src/styles/components/index.less +16 -0
  181. package/src/styles/components/input.less +290 -0
  182. package/src/styles/components/modal.less +203 -0
  183. package/src/styles/components/page.less +340 -0
  184. package/src/styles/components/select.less +361 -0
  185. package/src/styles/components/steps.less +367 -0
  186. package/src/styles/components/table.less +544 -0
  187. package/src/styles/components/tabs.less +249 -0
  188. package/src/styles/components/upload.less +83 -0
  189. package/src/styles/custom.less +67 -0
  190. package/src/styles/index.less +6 -0
  191. package/src/styles/pack.less +6 -0
  192. package/src/utils/EfuMessenger.js +155 -0
  193. package/src/utils/assist.js +353 -0
  194. package/src/utils/index.js +1 -0
  195. package/src/utils/random_str.js +10 -0
@@ -0,0 +1,150 @@
1
+ <template>
2
+ <div>
3
+ <QuillEditor ref="myQuillEditor"
4
+ theme="snow"
5
+ class="quill-editor customEditor"
6
+ v-model:content="content"
7
+ :options="data.editorOption"
8
+ contentType="html"
9
+ @update:content="setValue()"
10
+ />
11
+ </div>
12
+ </template>
13
+
14
+ <script setup>
15
+ import { QuillEditor,Quill } from '@vueup/vue-quill'
16
+ import { reactive, onMounted, ref, toRaw, watch,computed } from 'vue'
17
+ // import { backsite } from '@/api'
18
+ const sizes =[false, '42px', '36px', '26px', '24px', '22px', '18px', '16px','15px', '14px', '12px', '10.5px', '9px', '7.5px','6.5px', '5.5px','5px']
19
+ let fontSizeStyle = Quill.import("attributors/style/size");
20
+ fontSizeStyle.whitelist = sizes;
21
+ Quill.register(fontSizeStyle, true);
22
+ const fonts = [false,'SimSun','KaiTi','FangSong','SimHei','Microsoft-YaHei','PmingLiu','Impact','Georgia','Tahoma','Arial','Verdana']
23
+ var Font = Quill.import("formats/font");
24
+ Font.whitelist = fonts; // 将字体加入到白名单
25
+ Quill.register(Font, true);
26
+ const Embed = Quill.import("blots/embed");
27
+ class DividerBlot extends Embed {
28
+ static create(value) {
29
+ let node = super.create();
30
+ node.innerHTML = value.text
31
+ node.setAttribute('contenteditable', false);
32
+ node.setAttribute('class', 'at-some-one');
33
+ return node;
34
+ }
35
+ static value(node) {
36
+ return {
37
+ text: node.innerHTML.trim()
38
+ };
39
+ }
40
+ }
41
+ DividerBlot.blotName = 'atusertag';
42
+ DividerBlot.tagName = 'span';
43
+ DividerBlot.className = 'user-at-span';
44
+ Quill.register(DividerBlot);
45
+
46
+ const titleConfig = [
47
+ {Choice:'.ql-bold', title:'加粗'},
48
+ {Choice:'.ql-italic', title:'斜体'},
49
+ {Choice:'.ql-underline', title:'下划线'},
50
+ {Choice:'.ql-header', title:'段落格式'},
51
+ {Choice:'.ql-strike', title:'删除线'},
52
+ {Choice:'.ql-blockquote', title:'块引用'},
53
+ {Choice:'.ql-code', title:'插入代码'},
54
+ {Choice:'.ql-code-block', title:'插入代码段'},
55
+ // {Choice:'.ql-font', title:'字体'},
56
+ // {Choice:'.ql-size', title:'字体大小'},
57
+ {Choice:'.ql-list[value="ordered"]', title:'编号列表'},
58
+ {Choice:'.ql-list[value="bullet"]', title:'项目列表'},
59
+ {Choice:'.ql-direction', title:'文本方向'},
60
+ {Choice:'.ql-header[value="1"]', title:'h1'},
61
+ {Choice:'.ql-header[value="2"]', title:'h2'},
62
+ {Choice:'.ql-align', title:'对齐方式'},
63
+ {Choice:'.ql-color', title:'字体颜色'},
64
+ {Choice:'.ql-background', title:'背景颜色'},
65
+ {Choice:'.ql-image', title:'图像'},
66
+ {Choice:'.ql-video', title:'视频'},
67
+ {Choice:'.ql-link', title:'添加链接'},
68
+ {Choice:'.ql-formula', title:'插入公式'},
69
+ {Choice:'.ql-clean', title:'清除字体格式'},
70
+ {Choice:'.ql-script[value="sub"]', title:'下标'},
71
+ {Choice:'.ql-script[value="super"]', title:'上标'},
72
+ {Choice:'.ql-indent[value="-1"]', title:'向左缩进'},
73
+ {Choice:'.ql-indent[value="+1"]', title:'向右缩进'},
74
+ {Choice:'.ql-header .ql-picker-label', title:'标题大小'},
75
+ {Choice:'.ql-header .ql-picker-item[data-value="1"]', title:'标题一'},
76
+ {Choice:'.ql-header .ql-picker-item[data-value="2"]', title:'标题二'},
77
+ {Choice:'.ql-header .ql-picker-item[data-value="3"]', title:'标题三'},
78
+ {Choice:'.ql-header .ql-picker-item[data-value="4"]', title:'标题四'},
79
+ {Choice:'.ql-header .ql-picker-item[data-value="5"]', title:'标题五'},
80
+ {Choice:'.ql-header .ql-picker-item[data-value="6"]', title:'标题六'},
81
+ {Choice:'.ql-header .ql-picker-item:last-child', title:'标准'},
82
+ //{Choice:'.ql-size .ql-picker-item[data-value="small"]', title:'小号'},
83
+ //{Choice:'.ql-size .ql-picker-item[data-value="large"]', title:'大号'},
84
+ //{Choice:'.ql-size .ql-picker-item[data-value="huge"]', title:'超大号'},
85
+ //{Choice:'.ql-size .ql-picker-item:nth-child(2)', title:'标准'},
86
+ {Choice:'.ql-align .ql-picker-item:first-child', title:'居左对齐'},
87
+ {Choice:'.ql-align .ql-picker-item[data-value="center"]', title:'居中对齐'},
88
+ {Choice:'.ql-align .ql-picker-item[data-value="right"]', title:'居右对齐'},
89
+ {Choice:'.ql-align .ql-picker-item[data-value="justify"]', title:'两端对齐'}
90
+ ]
91
+
92
+ const props = defineProps(['value','myConfig','toolbarOptions'])
93
+ const emit = defineEmits(['updateValue','imgClick','initQuill'])
94
+ const content = ref('')
95
+ const myQuillEditor = ref()
96
+ watch(() => props.value, (val) => {
97
+ console.log(toRaw(myQuillEditor.value))
98
+ const text = toRaw(myQuillEditor.value).getHTML()
99
+ if (text !== val) {
100
+ toRaw(myQuillEditor.value).setHTML(val)
101
+ }
102
+ })
103
+ const toolbarOptions = computed(() => {
104
+ return props.toolbarOptions;
105
+ });
106
+
107
+
108
+ const fileBtn = ref()
109
+ const data = reactive({
110
+ content: '',
111
+ editorOption: {
112
+ modules: {
113
+ toolbar: toolbarOptions
114
+ },
115
+ placeholder: '请输入内容...'
116
+ }
117
+ })
118
+
119
+ const imgHandler = (state) => {
120
+ if (state) {
121
+ emit('imgClick', state)
122
+ }
123
+ }
124
+ const setValue = () => {
125
+ const text = toRaw(myQuillEditor.value).getHTML()
126
+ emit('updateValue', text)
127
+ }
128
+
129
+ onMounted(() => {
130
+ {
131
+ if (document.getElementsByClassName('ql-editor') && document.getElementsByClassName('ql-editor').length > 0) {
132
+ document.getElementsByClassName('ql-editor')[0].dataset.placeholder = '';
133
+ for (let item of titleConfig) {
134
+ let tip = document.querySelector('.quill-editor ' + item.Choice);
135
+ if (!tip) continue;
136
+ tip.setAttribute('title', item.title);
137
+ }
138
+ }
139
+ }
140
+ const quill = toRaw(myQuillEditor.value).getQuill()
141
+ if (myQuillEditor.value) {
142
+ quill.getModule('toolbar').addHandler('image', imgHandler)
143
+ }
144
+ toRaw(myQuillEditor.value).setHTML(props.value)
145
+ let obj = {};
146
+ obj.quill = quill;
147
+ emit('initQuill',obj);
148
+ })
149
+ </script>
150
+
@@ -0,0 +1,2 @@
1
+ import RichTextBox from './richtextbox.vue';
2
+ export default RichTextBox;
@@ -0,0 +1,448 @@
1
+ <template>
2
+ <div v-show="myConfig.visible" @keydown.enter.stop="keyDown" @blue="onEditorBlur">
3
+ <!-- 图片上传组件辅助-->
4
+ <UploadBox v-show="false" id="iviewUp" ref="uploadbox" class="avatar-uploader" :config="myConfig" @success="handleSuccess" :headers="headers"/>
5
+ <Editor ref="myQuillEditor" :style="myConfig.editorStyle" :myConfig="myConfig" :toolbarOptions="myConfig.toolbarOptions" :value="value" @updateValue="onEditorChange" @imgClick="imgClick" @initQuill="initQuill" />
6
+ </div>
7
+ </template>
8
+ <script>
9
+ // 工具栏配置
10
+ import Base from '@/components/base/controlbase.vue';
11
+ import UploadBox from '@/components/picturebox/uploadbox.vue'
12
+ import { Quill } from '@vueup/vue-quill'
13
+ import Editor from './editor.vue';
14
+ export default {
15
+ name: 'richtextbox',
16
+ components:{
17
+ UploadBox,Editor
18
+ },
19
+ extends: Base,
20
+ data () {
21
+ return {
22
+ myConfig:{
23
+ fileType:['jpg','jpeg','png','gif'],
24
+ fileSize: 2,
25
+ multiSelect:true,
26
+ editorStyle:{
27
+ 'height':'auto'
28
+ },
29
+ simpleFlag:false,
30
+ showImage:true,
31
+ uploadfile:'',
32
+ toolbarOptions:[
33
+ ['bold', 'italic', 'underline', 'strike'],
34
+ [{ 'header': 1 }, { 'header': 2 }],
35
+ [{ list:'ordered' }, { list:'bullet' }],
36
+ [{ script:'sub' }, { script:'super' }],
37
+ [{ 'indent': '-1' }, { 'indent': '+1' }],
38
+ [{ 'color': [] }, { 'background': [] }],
39
+ [{ 'size': [false, '42px', '36px', '26px', '24px', '22px', '18px', '16px','15px', '14px', '12px', '10.5px', '9px', '7.5px','6.5px', '5.5px','5px'] }],
40
+ [{ 'font': [false,'SimSun','KaiTi','FangSong','SimHei','Microsoft-YaHei','PmingLiu','Impact','Georgia','Tahoma','Arial','Verdana'] }],
41
+ [{ header:[1, 2, 3, 4, 5, 6, false] }],
42
+ [{ 'align': [] }],
43
+ ["clean"]
44
+ ],
45
+ },
46
+
47
+ quillUpdateImg:false, // 根据图片上传状态来确定是否显示loading动画,刚开始是false,不显示
48
+ headers:{
49
+ 'billmoduleid':'img',
50
+ 'billno':'img'
51
+ // token: sessionStorage.token
52
+ }, // 有的图片服务器要求请求头需要有token
53
+ };
54
+ },
55
+
56
+ mounted () {
57
+ //eslint-disable-next-line no-labels
58
+ this.onEditorFocus();
59
+ },
60
+ methods:{
61
+ customInit () {
62
+ if (!this.myConfig.simpleFlag) {
63
+ if (!this.myConfig.uploadfile) {
64
+ this.myConfig.uploadfile = this.OmdUrl.uploadfile;
65
+ }
66
+ }
67
+ if (this.myConfig.showImage) {
68
+ this.myConfig.toolbarOptions.push(['link', 'image'])
69
+ }
70
+ },
71
+ onEditorBlur () {
72
+ // 失去焦点事件
73
+ this.onEditorChange(this.quill.getHTML());
74
+ },
75
+ onEditorFocus (e) {
76
+ if (this.myConfig.readOnly) {
77
+ this.quill.enable(false);
78
+ } else {
79
+ this.quill.enable(true);
80
+ }
81
+ // 获得焦点事件
82
+ },
83
+ onEditorChange (value) {
84
+ this.value = value;
85
+ // 内容改变事件
86
+ this.setFatherValue();
87
+ //this.$emit('inputValue', this.content);
88
+ },
89
+
90
+ // 富文本图片上传前
91
+ beforeUpload () {
92
+ // 显示loading动画
93
+ this.quillUpdateImg = true;
94
+ },
95
+ imgClick(value) {
96
+ if (value) {
97
+ if (!this.myConfig.readOnly) {
98
+ document.querySelector('#iviewUp input').click();
99
+ }
100
+ } else {
101
+ this.quill.format('image', false);
102
+ }
103
+ },
104
+ handleSuccess (res) {
105
+ // res为图片服务器返回的数据
106
+ // 获取富文本组件实例
107
+ let quill = this.quill;
108
+ // 如果上传成功
109
+ if (res.returncode === '0') {
110
+ // 获取光标所在位置
111
+ let length = quill.getSelection().index;
112
+ // 插入图片 res.url为服务器返回的图片地址
113
+ let url = '';
114
+ if (res.data[0].url) {
115
+ url = res.url;
116
+ } else {
117
+ if (res.data[0].fileKey) {
118
+ res.data[0].filekey = res.data[0].fileKey;
119
+ }
120
+ url = this.OmdUrl.downfile + res.data[0].filekey;
121
+ }
122
+ quill.insertEmbed(length, 'image', url);
123
+ // 调整光标到最后
124
+ quill.setSelection(length + 1);
125
+ } else {
126
+ this.$message.error('图片插入失败');
127
+ }
128
+ // loading动画消失
129
+ this.quillUpdateImg = false;
130
+ },
131
+ // 富文本图片上传失败
132
+ uploadError () {
133
+ // loading动画消失
134
+ this.quillUpdateImg = false;
135
+ this.$message.error('图片插入失败');
136
+ },
137
+ addQuillTitle () {
138
+ // eslint-disable-next-line one-var
139
+ const oToolBar = document.querySelector('.ql-toolbar'),
140
+ aButton = oToolBar.querySelectorAll('button'),
141
+ aSelect = oToolBar.querySelectorAll('select');
142
+ aButton.forEach(function (item) {
143
+ if (item.className === 'ql-script') {
144
+ item.value === 'sub' ? (item.title = '下标') : (item.title = '上标');
145
+ } else if (item.className === 'ql-indent') {
146
+ item.value === '+1'
147
+ ? (item.title = '向右缩进')
148
+ : (item.title = '向左缩进');
149
+ } else {
150
+ // eslint-disable-next-line no-undef
151
+ item.title = titleConfig[item.classList[0]];
152
+ }
153
+ });
154
+ aSelect.forEach(function (item) {
155
+ // eslint-disable-next-line no-undef
156
+ item.parentNode.title = titleConfig[item.classList[0]];
157
+ });
158
+ },
159
+ keyDown (e) {
160
+ //e.stopPropagation();
161
+ },
162
+ initQuill(obj) {
163
+ this.quill = obj.quill;
164
+ },
165
+ setDynamicText(value) {
166
+ let quill = this.quill;
167
+ let range = quill.getSelection(true);
168
+ quill.insertEmbed(range.index, 'atusertag', {text:value}, Quill.sources.USER);
169
+ quill.setSelection(range.index + 1, Quill.sources.SILENT);
170
+ //quill.focus();
171
+ //quill.update();
172
+ },
173
+ setCustomPro(obj) {
174
+ if (obj) {
175
+ this.myConfig = Object.assign({}, this.myConfig, obj);
176
+ }
177
+ if (obj.readOnly !== undefined) {
178
+ this.onEditorFocus();
179
+ }
180
+ }
181
+ }
182
+ };
183
+ </script>
184
+
185
+ <style>
186
+ .customEditor {
187
+ line-height: normal !important;
188
+ }
189
+ .ql-snow .ql-tooltip[data-mode=link]::before {
190
+ content: "请输入链接地址:";
191
+ }
192
+ .ql-snow .ql-tooltip.ql-editing a.ql-action::after {
193
+ border-right: 0px;
194
+ content: '保存';
195
+ padding-right: 0px;
196
+ }
197
+
198
+ .ql-snow .ql-tooltip[data-mode=video]::before {
199
+ content: "请输入视频地址:";
200
+ }
201
+
202
+ .ql-snow .ql-picker.ql-size .ql-picker-label::before,
203
+ .ql-snow .ql-picker.ql-size .ql-picker-item::before {
204
+ content: "四号";
205
+ font-size: 14px;
206
+ }
207
+
208
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="14px"]::before,
209
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="14px"]::before {
210
+ content: "四号";
211
+ font-size: 14px;
212
+ }
213
+
214
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="42px"]::before,
215
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="42px"]::before {
216
+ content: "初号";
217
+ font-size: 42px;
218
+ }
219
+
220
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="36px"]::before,
221
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="36px"]::before {
222
+ content: "小初";
223
+ font-size: 36px;
224
+ }
225
+
226
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="26px"]::before,
227
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="26px"]::before {
228
+ content: "一号";
229
+ font-size: 26px;
230
+ }
231
+
232
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="24px"]::before,
233
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="24px"]::before {
234
+ content: "小一";
235
+ font-size: 24px;
236
+ }
237
+
238
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="22px"]::before,
239
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="22px"]::before {
240
+ content: "二号";
241
+ font-size: 22px;
242
+ }
243
+
244
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="18px"]::before,
245
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="18px"]::before {
246
+ content: "小二";
247
+ font-size: 18px;
248
+ }
249
+
250
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="16px"]::before,
251
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="16px"]::before {
252
+ content: "三号";
253
+ font-size: 16px;
254
+ }
255
+
256
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="15px"]::before,
257
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="15px"]::before {
258
+ content: "小三";
259
+ font-size: 15px;
260
+ }
261
+
262
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="12px"]::before,
263
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="12px"]::before {
264
+ content: "小四";
265
+ font-size: 12px;
266
+ }
267
+
268
+
269
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="10.5px"]::before,
270
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="10.5px"]::before {
271
+ content: "五号";
272
+ font-size: 10.5px;
273
+ }
274
+
275
+
276
+
277
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="9px"]::before,
278
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="9px"]::before {
279
+ content: "小五";
280
+ font-size: 9px;
281
+ }
282
+
283
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="7.5px"]::before,
284
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="7.5px"]::before {
285
+ content: "六号";
286
+ font-size: 7.5px;
287
+ }
288
+
289
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="6.5px"]::before,
290
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="6.5px"]::before {
291
+ content: "小六";
292
+ font-size: 6.5px;
293
+ }
294
+
295
+
296
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="5.5px"]::before,
297
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="5.5px"]::before {
298
+ content: "七号";
299
+ font-size: 5.5px;
300
+ }
301
+
302
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="5px"]::before,
303
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="5px"]::before {
304
+ content: "八号";
305
+ font-size: 5px;
306
+ }
307
+
308
+ .ql-snow .ql-picker.ql-header .ql-picker-label::before,
309
+ .ql-snow .ql-picker.ql-header .ql-picker-item::before {
310
+ content: '文本';
311
+ }
312
+ .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
313
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
314
+ content: '标题1';
315
+ }
316
+ .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
317
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
318
+ content: '标题2';
319
+ }
320
+ .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
321
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
322
+ content: '标题3';
323
+ }
324
+ .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
325
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
326
+ content: '标题4';
327
+ }
328
+ .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
329
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
330
+ content: '标题5';
331
+ }
332
+ .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
333
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
334
+ content: '标题6';
335
+ }
336
+
337
+ .ql-snow .ql-picker.ql-font .ql-picker-label::before,
338
+ .ql-snow .ql-picker.ql-font .ql-picker-item::before {
339
+ content: '黑体';
340
+ }
341
+ .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='SimSun']::before,
342
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='SimSun']::before {
343
+ content: "宋体";
344
+ font-family: SimSun,sans-serif;
345
+ }
346
+ .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='KaiTi']::before,
347
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='KaiTi']::before {
348
+ content: "楷体";
349
+ font-family: KaiTi,sans-serif;
350
+ }
351
+ .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='FangSong']::before,
352
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='FangSong']::before {
353
+ content: "仿宋";
354
+ font-family: FangSong,sans-serif;
355
+ }
356
+
357
+ .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='SimHei']::before,
358
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='SimHei']::before {
359
+ content: "黑体";
360
+ font-family: SimHei,sans-serif;
361
+ }
362
+
363
+ .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='Microsoft-YaHei']::before,
364
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='Microsoft-YaHei']::before {
365
+ content: "微软雅黑";
366
+ font-family: Microsoft YaHei,sans-serif;
367
+ }
368
+
369
+ .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='PmingLiu']::before,
370
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='PmingLiu']::before {
371
+ content: "PmingLiu";
372
+ font-family: PmingLiu,sans-serif;
373
+ }
374
+
375
+ .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='Impact']::before,
376
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='Impact']::before {
377
+ content: "Impact";
378
+ font-family: Impact,sans-serif;
379
+ }
380
+
381
+ .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='Georgia']::before,
382
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='Georgia']::before {
383
+ content: "Georgia";
384
+ font-family: Georgia,sans-serif;
385
+ }
386
+
387
+ .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='Tahoma']::before,
388
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='Tahoma']::before {
389
+ content: "Tahoma";
390
+ font-family: Tahoma,sans-serif;
391
+ }
392
+
393
+ .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='Arial']::before,
394
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='Arial']::before {
395
+ content: "Arial";
396
+ font-family: Arial,sans-serif;
397
+ }
398
+
399
+ .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='Verdana']::before,
400
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='Verdana']::before {
401
+ content: "Verdana";
402
+ font-family: Verdana,sans-serif;
403
+ }
404
+ .ql-font-SimSun {
405
+ font-family: SimSun , sans-serif;
406
+ }
407
+ .ql-font-KaiTi {
408
+ font-family: KaiTi , sans-serif;
409
+ }
410
+ .ql-font-FangSong {
411
+ font-family: FangSong , sans-serif;
412
+ }
413
+ .ql-font-SimHei {
414
+ font-family: SimHei , sans-serif;
415
+ }
416
+ .ql-font-KaiTi {
417
+ font-family: KaiTi , sans-serif;
418
+ }
419
+ .ql-font-Microsoft-YaHei {
420
+ font-family: Microsoft YaHei , sans-serif;
421
+ }
422
+ .ql-font-PmingLiu {
423
+ font-family: PmingLiu , sans-serif;
424
+ }
425
+
426
+ .ql-font-Impact {
427
+ font-family: Impact , sans-serif;
428
+ }
429
+
430
+ .ql-font-Georgia {
431
+ font-family: Georgia , sans-serif;
432
+ }
433
+
434
+ .ql-font-Tahoma {
435
+ font-family: Tahoma , sans-serif;
436
+ }
437
+
438
+ .ql-font-Arial {
439
+ font-family: Arial , sans-serif;
440
+ }
441
+ .ql-font-Verdana {
442
+ font-family: Verdana , sans-serif;
443
+ }
444
+ .ql-picker-options {
445
+ height: 300px;
446
+ overflow: auto;
447
+ }
448
+ </style>
@@ -0,0 +1,2 @@
1
+ import TextBox from './textbox.vue';
2
+ export default TextBox;