Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
finance-manage
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
finance-oa
finance-manage
Commits
fa5596bb
Commit
fa5596bb
authored
Aug 22, 2020
by
RuoYi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Editor组件优化,支持自定义高度&图片冲突问题
parent
eb30fc4b
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
90 additions
and
121 deletions
+90
-121
ruoyi-ui/src/components/Editor/index.vue
ruoyi-ui/src/components/Editor/index.vue
+88
-119
ruoyi-ui/src/views/system/notice/index.vue
ruoyi-ui/src/views/system/notice/index.vue
+2
-2
No files found.
ruoyi-ui/src/components/Editor/index.vue
View file @
fa5596bb
<
template
>
<
template
>
<div>
<div
class=
"editor"
ref=
"editor"
:style=
"styles"
></div>
<!-- 图片上传组件辅助 -->
<el-upload
class=
"avatar-uploader quill-img"
:action=
"uploadImgUrl"
name=
"file"
:headers=
"headers"
:show-file-list=
"false"
:on-success=
"quillImgSuccess"
:on-error=
"uploadError"
:before-upload=
"quillImgBefore"
accept=
'.jpg,.jpeg,.png,.gif'
></el-upload>
<!-- 富文本组件 -->
<quill-editor
class=
"editor"
v-model=
"content"
ref=
"quillEditor"
:options=
"editorOption"
@
blur=
"onEditorBlur($event)"
@
focus=
"onEditorFocus($event)"
@
change=
"onEditorChange($event)"
></quill-editor>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
getToken
}
from
'
@/utils/auth
'
import
Quill
from
"
quill
"
;
// 工具栏配置
const
toolbarOptions
=
[
[
"
bold
"
,
"
italic
"
,
"
underline
"
,
"
strike
"
],
// 加粗 斜体 下划线 删除线
[
"
blockquote
"
,
"
code-block
"
],
// 引用 代码块
[{
list
:
"
ordered
"
},
{
list
:
"
bullet
"
}],
// 有序、无序列表
[{
indent
:
"
-1
"
},
{
indent
:
"
+1
"
}],
// 缩进
[{
size
:
[
"
small
"
,
false
,
"
large
"
,
"
huge
"
]
}],
// 字体大小
[{
header
:
[
1
,
2
,
3
,
4
,
5
,
6
,
false
]
}],
// 标题
[{
color
:
[]
},
{
background
:
[]
}],
// 字体颜色、字体背景颜色
[{
align
:
[]
}],
// 对齐方式
[
"
clean
"
],
// 清除文本格式
[
"
link
"
,
"
image
"
,
"
video
"
]
// 链接、图片、视频
];
import
{
quillEditor
}
from
"
vue-quill-editor
"
;
import
"
quill/dist/quill.core.css
"
;
import
"
quill/dist/quill.core.css
"
;
import
"
quill/dist/quill.snow.css
"
;
import
"
quill/dist/quill.snow.css
"
;
import
"
quill/dist/quill.bubble.css
"
;
import
"
quill/dist/quill.bubble.css
"
;
export
default
{
export
default
{
name
:
"
Editor
"
,
props
:
{
props
:
{
/* 编辑器的内容 */
/* 编辑器的内容 */
value
:
{
value
:
{
type
:
String
type
:
String
,
default
:
""
,
},
},
/*
图片大小
*/
/*
高度
*/
maxSize
:
{
height
:
{
type
:
Number
,
type
:
Number
,
default
:
4000
//kb
default
:
null
,
}
},
/* 最小高度 */
minHeight
:
{
type
:
Number
,
default
:
null
,
},
},
},
components
:
{
quillEditor
},
data
()
{
data
()
{
return
{
return
{
content
:
this
.
value
,
Quill
:
null
,
uploadImgUrl
:
""
,
currentValue
:
""
,
editorOption
:
{
options
:
{
theme
:
"
snow
"
,
// or 'bubble'
theme
:
"
snow
"
,
placeholder
:
"
请输入内容
"
,
bounds
:
document
.
body
,
debug
:
"
warn
"
,
modules
:
{
modules
:
{
toolbar
:
{
// 工具栏配置
container
:
toolbarOptions
,
toolbar
:
[
handlers
:
{
[
"
bold
"
,
"
italic
"
,
"
underline
"
,
"
strike
"
],
// 加粗 斜体 下划线 删除线
image
:
function
(
value
)
{
[
"
blockquote
"
,
"
code-block
"
],
// 引用 代码块
if
(
value
)
{
[{
list
:
"
ordered
"
},
{
list
:
"
bullet
"
}],
// 有序、无序列表
// 触发input框选择图片文件
[{
indent
:
"
-1
"
},
{
indent
:
"
+1
"
}],
// 缩进
document
.
querySelector
(
"
.quill-img input
"
).
click
();
[{
size
:
[
"
small
"
,
false
,
"
large
"
,
"
huge
"
]
}],
// 字体大小
}
else
{
[{
header
:
[
1
,
2
,
3
,
4
,
5
,
6
,
false
]
}],
// 标题
this
.
quill
.
format
(
"
image
"
,
false
);
[{
color
:
[]
},
{
background
:
[]
}],
// 字体颜色、字体背景颜色
}
[{
align
:
[]
}],
// 对齐方式
}
[
"
clean
"
],
// 清除文本格式
}
[
"
link
"
,
"
image
"
,
"
video
"
]
// 链接、图片、视频
],
},
placeholder
:
"
请输入内容
"
,
readOnly
:
false
,
},
};
},
computed
:
{
styles
()
{
let
style
=
{};
if
(
this
.
minHeight
)
{
style
.
minHeight
=
`
${
this
.
minHeight
}
px`
;
}
}
if
(
this
.
height
)
{
style
.
height
=
`
${
this
.
height
}
px`
;
}
}
return
style
;
},
},
uploadImgUrl
:
process
.
env
.
VUE_APP_BASE_API
+
"
/common/upload
"
,
// 上传的图片服务器地址
headers
:
{
Authorization
:
'
Bearer
'
+
getToken
()
}
};
},
},
watch
:
{
watch
:
{
value
:
function
()
{
value
:
{
this
.
content
=
this
.
value
;
handler
(
val
)
{
if
(
val
!==
this
.
currentValue
)
{
this
.
currentValue
=
val
;
if
(
this
.
Quill
)
{
this
.
Quill
.
pasteHTML
(
this
.
value
);
}
}
}
},
},
methods
:
{
immediate
:
true
,
onEditorBlur
()
{
//失去焦点事件
},
},
onEditorFocus
()
{
//获得焦点事件
},
},
onEditorChange
()
{
mounted
()
{
//内容改变事件
this
.
init
();
this
.
$emit
(
"
input
"
,
this
.
content
);
},
},
beforeDestroy
()
{
// 富文本图片上传前
this
.
Quill
=
null
;
quillImgBefore
(
file
)
{
},
let
fileType
=
file
.
type
;
methods
:
{
if
(
fileType
===
'
image/jpeg
'
||
fileType
===
'
image/png
'
){
init
()
{
return
true
;
const
editor
=
this
.
$refs
.
editor
;
}
else
{
this
.
Quill
=
new
Quill
(
editor
,
this
.
options
);
this
.
$message
.
error
(
'
请插入图片类型文件(jpg/jpeg/png)
'
);
this
.
Quill
.
pasteHTML
(
this
.
currentValue
);
return
false
;
this
.
Quill
.
on
(
"
text-change
"
,
(
delta
,
oldDelta
,
source
)
=>
{
}
const
html
=
this
.
$refs
.
editor
.
children
[
0
].
innerHTML
;
const
text
=
this
.
Quill
.
getText
();
const
quill
=
this
.
Quill
;
this
.
currentValue
=
html
;
this
.
$emit
(
"
input
"
,
html
);
this
.
$emit
(
"
on-change
"
,
{
html
,
text
,
quill
});
});
this
.
Quill
.
on
(
"
text-change
"
,
(
delta
,
oldDelta
,
source
)
=>
{
this
.
$emit
(
"
on-text-change
"
,
delta
,
oldDelta
,
source
);
});
this
.
Quill
.
on
(
"
selection-change
"
,
(
range
,
oldRange
,
source
)
=>
{
this
.
$emit
(
"
on-selection-change
"
,
range
,
oldRange
,
source
);
});
this
.
Quill
.
on
(
"
editor-change
"
,
(
eventName
,
...
args
)
=>
{
this
.
$emit
(
"
on-editor-change
"
,
eventName
,
...
args
);
});
},
},
quillImgSuccess
(
res
,
file
)
{
// res为图片服务器返回的数据
// 获取富文本组件实例
let
quill
=
this
.
$refs
.
quillEditor
.
quill
;
// 如果上传成功
if
(
res
.
code
==
200
)
{
// 获取光标所在位置
let
length
=
quill
.
getSelection
().
index
;
// 插入图片 res.url为服务器返回的图片地址
quill
.
insertEmbed
(
length
,
"
image
"
,
res
.
url
);
// 调整光标到最后
quill
.
setSelection
(
length
+
1
);
}
else
{
this
.
$message
.
error
(
"
图片插入失败
"
);
}
},
},
// 富文本图片上传失败
uploadError
()
{
// loading动画消失
this
.
$message
.
error
(
"
图片插入失败
"
);
}
}
};
};
</
script
>
</
script
>
...
@@ -147,7 +117,6 @@ export default {
...
@@ -147,7 +117,6 @@ export default {
.editor
{
.editor
{
white-space
:
pre-wrap
!important
;
white-space
:
pre-wrap
!important
;
line-height
:
normal
!important
;
line-height
:
normal
!important
;
height
:
192px
;
}
}
.quill-img
{
.quill-img
{
display
:
none
;
display
:
none
;
...
...
ruoyi-ui/src/views/system/notice/index.vue
View file @
fa5596bb
...
@@ -159,12 +159,12 @@
...
@@ -159,12 +159,12 @@
<
/el-col>
<
/el-col>
<
el
-
col
:
span
=
"
24
"
>
<
el
-
col
:
span
=
"
24
"
>
<
el
-
form
-
item
label
=
"
内容
"
>
<
el
-
form
-
item
label
=
"
内容
"
>
<
Editor
v
-
model
=
"
form.noticeContent
"
/>
<
editor
v
-
model
=
"
form.noticeContent
"
:
min
-
height
=
"
192
"
/>
<
/el-form-item>
<
/el-form-item>
<
/el-col>
<
/el-col>
<
/el-row>
<
/el-row>
<
/el-form>
<
/el-form>
<
div
slot
=
"
footer
"
class
=
"
dialog-footer
"
style
=
"
padding-top:30px
"
>
<
div
slot
=
"
footer
"
class
=
"
dialog-footer
"
>
<
el
-
button
type
=
"
primary
"
@
click
=
"
submitForm
"
>
确
定
<
/el-button>
<
el
-
button
type
=
"
primary
"
@
click
=
"
submitForm
"
>
确
定
<
/el-button>
<
el
-
button
@
click
=
"
cancel
"
>
取
消
<
/el-button>
<
el
-
button
@
click
=
"
cancel
"
>
取
消
<
/el-button>
<
/div>
<
/div>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment