Commit 6332865b authored by 夏敏伟's avatar 夏敏伟

增加发送邮件功能

parent 03d4cd4e
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<link rel="icon" type="image/x-icon" href='static/img/favicon.ico'> <link rel="icon" type="image/x-icon" href='static/img/favicon.ico'>
<title></title> <title></title>
<style> <style>
html body { html, body {
height: 100%; height: 100%;
margin: 0px !important; margin: 0px !important;
overflow: hidden; overflow: hidden;
......
...@@ -4301,8 +4301,7 @@ ...@@ -4301,8 +4301,7 @@
"extend": { "extend": {
"version": "3.0.2", "version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
"dev": true
}, },
"extsprintf": { "extsprintf": {
"version": "1.3.0", "version": "1.3.0",
...@@ -4316,6 +4315,11 @@ ...@@ -4316,6 +4315,11 @@
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"dev": true "dev": true
}, },
"fast-diff": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz",
"integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig=="
},
"fast-glob": { "fast-glob": {
"version": "3.2.11", "version": "3.2.11",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
...@@ -6118,6 +6122,11 @@ ...@@ -6118,6 +6122,11 @@
"tslib": "^2.0.3" "tslib": "^2.0.3"
} }
}, },
"parchment": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz",
"integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg=="
},
"parse-json": { "parse-json": {
"version": "2.2.0", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
...@@ -6423,6 +6432,41 @@ ...@@ -6423,6 +6432,41 @@
"resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz",
"integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw=="
}, },
"quill": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz",
"integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==",
"requires": {
"clone": "^2.1.1",
"deep-equal": "^1.0.1",
"eventemitter3": "^2.0.3",
"extend": "^3.0.2",
"parchment": "^1.1.4",
"quill-delta": "^3.6.2"
},
"dependencies": {
"clone": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
"integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="
},
"eventemitter3": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz",
"integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg=="
}
}
},
"quill-delta": {
"version": "3.6.3",
"resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz",
"integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==",
"requires": {
"deep-equal": "^1.0.1",
"extend": "^3.0.2",
"fast-diff": "1.1.2"
}
},
"raf": { "raf": {
"version": "3.4.1", "version": "3.4.1",
"resolved": "https://registry.npmmirror.com/raf/-/raf-3.4.1.tgz", "resolved": "https://registry.npmmirror.com/raf/-/raf-3.4.1.tgz",
...@@ -7759,6 +7803,15 @@ ...@@ -7759,6 +7803,15 @@
"vue-style-loader": "^4.1.0" "vue-style-loader": "^4.1.0"
} }
}, },
"vue-quill-editor": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/vue-quill-editor/-/vue-quill-editor-3.0.6.tgz",
"integrity": "sha512-g20oSZNWg8Hbu41Kinjd55e235qVWPLfg4NvsLW6d+DhgBTFbEuMpcWlUdrD6qT3+Noim6DRu18VLM9lVShXOQ==",
"requires": {
"object-assign": "^4.1.1",
"quill": "^1.3.4"
}
},
"vue-router": { "vue-router": {
"version": "3.5.2", "version": "3.5.2",
"resolved": "https://registry.nlark.com/vue-router/download/vue-router-3.5.2.tgz", "resolved": "https://registry.nlark.com/vue-router/download/vue-router-3.5.2.tgz",
......
import { get, fileUpload, addParam, addParamNew } from "@/util/http_util";
const PREFIX_MAIL = 'api/rest/mail/';
//发送邮件
export const sendMail = data => {
return fileUpload(`${PREFIX_MAIL}/sendWithMime`, data);
}
\ No newline at end of file
...@@ -93,7 +93,8 @@ ...@@ -93,7 +93,8 @@
<NoticeDialog ref="myNotice" :stompClient="stompClient" :currentChatRoomInfo="currentChatRoomInfo"></NoticeDialog> <NoticeDialog ref="myNotice" :stompClient="stompClient" :currentChatRoomInfo="currentChatRoomInfo"></NoticeDialog>
<ChatRoomDialog ref="myChatRoom" :currentChatRoomInfo="currentChatRoomInfo" :stompClient="stompClient"> <ChatRoomDialog ref="myChatRoom" :currentChatRoomInfo="currentChatRoomInfo" :stompClient="stompClient">
</ChatRoomDialog> </ChatRoomDialog>
<chatRoomMemberDialog ref="mychatRoomMemberDialog" :currentChatRoomInfo="currentChatRoomInfo"></chatRoomMemberDialog> <ChatRoomMemberDialog ref="mychatRoomMemberDialog" :currentChatRoomInfo="currentChatRoomInfo" @openSendEmailPage="openSendEmailPage"></ChatRoomMemberDialog>
<SendEmailDialog ref="myEmail" :fromUser="fromUser" :checkedUserList="checkedUserList"></SendEmailDialog>
</div> </div>
</template> </template>
...@@ -104,6 +105,7 @@ import { getTime_extent } from '@/util/http_util.js'; ...@@ -104,6 +105,7 @@ import { getTime_extent } from '@/util/http_util.js';
import NoticeDialog from '@/view/ddkz/components/noticeDialog.vue'; import NoticeDialog from '@/view/ddkz/components/noticeDialog.vue';
import ChatRoomDialog from "@/view/ddkz/components/chatRoomDialog.vue"; import ChatRoomDialog from "@/view/ddkz/components/chatRoomDialog.vue";
import chatRoomMemberDialog from "@/view/ddkz/components/chatRoomMemberDialog.vue"; import chatRoomMemberDialog from "@/view/ddkz/components/chatRoomMemberDialog.vue";
import sendEmailDialog from "@/view/ddkz/components/sendEmailDialog.vue";
import textImg from '@/assets/img/ddkz/tool1.png'; import textImg from '@/assets/img/ddkz/tool1.png';
import excelImg from '@/assets/img/ddkz/tool5.png'; import excelImg from '@/assets/img/ddkz/tool5.png';
import { MAIL_ADDRESS } from "@/constant/user" import { MAIL_ADDRESS } from "@/constant/user"
...@@ -124,14 +126,17 @@ export default { ...@@ -124,14 +126,17 @@ export default {
publicNoticeList: [], publicNoticeList: [],
stompClient: { connected: false }, stompClient: { connected: false },
// peopleList: [], // peopleList: [],
notifications: [] notifications: [],
fromUser:'',
checkedUserList:[]
// status:false // status:false
} }
}, },
components: { components: {
NoticeDialog: NoticeDialog, NoticeDialog: NoticeDialog,
ChatRoomDialog: ChatRoomDialog, ChatRoomDialog: ChatRoomDialog,
chatRoomMemberDialog: chatRoomMemberDialog ChatRoomMemberDialog: chatRoomMemberDialog,
SendEmailDialog:sendEmailDialog
}, },
methods: { methods: {
goBackFn() { goBackFn() {
...@@ -236,6 +241,12 @@ export default { ...@@ -236,6 +241,12 @@ export default {
this.$refs.mychatRoomMemberDialog.showDialog(); this.$refs.mychatRoomMemberDialog.showDialog();
}) })
}, },
openSendEmailPage(data){
this.checkedUserList = data;
this.$nextTick(() => {
this.$refs.myEmail.showDialog();
})
},
sendEmail() { sendEmail() {
window.open(MAIL_ADDRESS); window.open(MAIL_ADDRESS);
}, },
...@@ -347,6 +358,7 @@ export default { ...@@ -347,6 +358,7 @@ export default {
// this.getCurrentTeamPeople(this.currentChatRoomInfo); // this.getCurrentTeamPeople(this.currentChatRoomInfo);
//获取当前公告列表 //获取当前公告列表
this.getRecordsByPagingFn(this.currentChatRoomInfo); this.getRecordsByPagingFn(this.currentChatRoomInfo);
this.fromUser = this.userInfo.email;
} }
} }
</script> </script>
......
...@@ -3,21 +3,33 @@ ...@@ -3,21 +3,33 @@
@open="handleDialogOpen"> @open="handleDialogOpen">
<div class="info-personInfo"> <div class="info-personInfo">
<div class="personInfo-content"> <div class="personInfo-content">
<div v-for="item in personList" class="everyTeam"> <div v-for="(item, index) in personList" class="everyTeam">
<div class="teamInfo"> <div class="teamInfo">
<span>队伍名称:<span>{{ item.teamName }}</span></span> <el-checkbox :indeterminate="item.isIndeterminate" v-model="item.checkAll"
<!-- <span>角色:<span>{{ item.teamType }}</span></span> --> @change="handleCheckAllChange($event, index)">全选</el-checkbox><span>队伍名称:<span>{{ item.teamName
}}</span></span>
</div> </div>
<div class="peopleInfo"> <div class="peopleInfo">
<el-checkbox-group v-model="item.checkedMembers"
@change="handleCheckedMembersChange($event, index)">
<div v-for="item1 in item.teamMemberStateBOList" <div v-for="item1 in item.teamMemberStateBOList"
:class="['everyPersonList', 'cardType' + item.id % 3]"> :class="['everyPersonList', 'cardType' + item.id % 3]">
<span class="isOnline" :style="{ backgroundColor: item1.online ? 'green' : 'gray' }"></span> <el-checkbox :label="item1.userId" :key="item1.userId" :disabled="item1.email?false:true">
<span class="isOnline"
:style="{ backgroundColor: item1.online ? 'green' : 'gray' }"></span>
<span class="username" :style="{ color: item1.online ? 'green' : 'white' }" <span class="username" :style="{ color: item1.online ? 'green' : 'white' }"
v-text="item1.userId"></span> v-text="item1.userId"></span>
<span title="组长" :style="{ color: item1.online ? 'green' : 'white' }" :class="[item1.userId == item.leader ? 'el-icon-user-solid' : '']"></span> <span title="组长" :style="{ color: item1.online ? 'green' : 'white' }"
:class="[item1.userId == item.leader ? 'el-icon-user-solid' : '']"></span>
</el-checkbox>
</div>
</el-checkbox-group>
</div> </div>
</div> </div>
</div> </div>
<div class="personInfo-footer">
<el-button type="success" size="small" @click="sendEmail">发送邮件</el-button>
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
...@@ -32,7 +44,8 @@ export default { ...@@ -32,7 +44,8 @@ export default {
return { return {
dialogVisible: false, dialogVisible: false,
personList: [], personList: [],
chatRoomInfo: {} chatRoomInfo: {},
checkedPersonList:[]
} }
}, },
directives: { directives: {
...@@ -55,20 +68,42 @@ export default { ...@@ -55,20 +68,42 @@ export default {
getCurrentTeamPeople(chatRoomId) { getCurrentTeamPeople(chatRoomId) {
//查询聊天组的人员 //查询聊天组的人员
getChatRoomMemberInfo(chatRoomId).then(res => { getChatRoomMemberInfo(chatRoomId).then(res => {
res.forEach(item => {
item['checkAll'] = false;
item['isIndeterminate'] = false;
item['checkedMembers'] = [];
})
this.personList = res; this.personList = res;
}).catch(error => { }).catch(error => {
this.$message.error(error); this.$message.error(error);
}); });
}, },
handleCheckAllChange(val, index) {
let tmp = [];
this.personList[index].teamMemberStateBOList.forEach(item=>{
tmp.push(item.userId);
});
this.personList[index].checkedMembers = val ? tmp : [];
this.personList[index].isIndeterminate = false;
},
handleCheckedMembersChange(value, index) {
let checkedCount = value.length;
this.personList[index].checkAll = checkedCount === this.personList[index].teamMemberStateBOList.length;
this.personList[index].isIndeterminate = checkedCount > 0 && checkedCount < this.personList[index].teamMemberStateBOList.length;
},
//发送邮件
sendEmail(){
this.checkedPersonList = [];
this.personList.forEach(item=>{
item.checkedMembers.forEach(item1=>{
this.checkedPersonList.push(item.teamMemberStateBOList.filter(item2=>{return item2.userId==item1})[0].email);
})
});
this.$emit('openSendEmailPage',this.checkedPersonList);
}
}, },
computed: { computed: {
// userInfo() {
// if (this.$store.getters.userInfo) {
// return this.$store.getters.userInfo;
// } else {
// return { account: "" };
// }
// },
title() { title() {
return this.chatRoomInfo.nickname + " 成员信息"; return this.chatRoomInfo.nickname + " 成员信息";
} }
...@@ -80,7 +115,7 @@ export default { ...@@ -80,7 +115,7 @@ export default {
<style lang="scss"> <style lang="scss">
.info-personInfo { .info-personInfo {
width: 100%; width: 100%;
height: 30%; height: 40%;
overflow-y: auto; overflow-y: auto;
.title { .title {
...@@ -103,7 +138,7 @@ export default { ...@@ -103,7 +138,7 @@ export default {
.personInfo-content { .personInfo-content {
width: 100%; width: 100%;
height: 100%; height: calc(100% - 50px);
.everyTeam { .everyTeam {
width: calc(33% - 10px); width: calc(33% - 10px);
...@@ -193,5 +228,10 @@ export default { ...@@ -193,5 +228,10 @@ export default {
} }
} }
} }
.personInfo-footer{
width: 100%;
height: 50px;
text-align: right;
}
} }
</style> </style>
\ No newline at end of file
<template>
<el-dialog class="myMailDialog" v-el-drag-dialog :title="title" :visible.sync="dialogVisible" width="1000px" top="10px"
:before-close="handleClose" @open="handleDialogOpen">
<div class="myEmail">
<el-form ref="form" :model="formData" label-width="80px">
<el-form-item>
<el-button class="el-icon-s-promotion" type="success" size="small" @click="sendEmail" :loading="loading"
v-text="buttonMessage"></el-button>
</el-form-item>
<el-form-item label="发送自">
<el-input v-model="formData.fromUser" readonly></el-input>
</el-form-item>
<el-form-item label="发送到">
<el-select v-model="formData.toUser" multiple placeholder="请选择" filterable>
<el-option v-for="item in allUser" :key="item.mail" :label="item.mail" :value="item.mail"
:disabled="item.mail == formData.fromUser">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="主题">
<el-input v-model="formData.subject"></el-input>
</el-form-item>
<el-form-item label="附件">
<el-upload class="upload-demo myUpload" action=""
accept=".png,.PNG,.jpg,.JPG,.docx,.doc,.pdf,.DOCX,.DOC,.PDF,.PPT,.ppt,.pptx,.PPTX,.mlf,.MLF,.xls,.xlsx,.XLS,.XLSX"
:on-remove="handleRemove" :on-change="handleChange" :file-list="fileList" :auto-upload="false"
multiple>
<el-button size="mini" type="primary" title="支持导入doc,ppt,xls,mlf,pdf,jpg,png 最大支持50M文件上传">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">支持导入doc,ppt,xls,mlf,pdf,jpg,png 最大支持100M文件上传</div> -->
</el-upload>
</el-form-item>
</el-form>
<div style="width: 100%;height: 320px; margin: 0 auto">
<quill-editor ref="myQuillEditor" :options="editorOption" @blur="onEditorBlur($event)"
@focus="onEditorFocus($event)" @change="onEditorChange($event)" @ready="onEditorReady($event)">
</quill-editor>
</div>
</div>
</el-dialog>
</template>
<script>
import elDragDialog from "@/util/directive/el-dragDialog";
import { quillEditor } from 'vue-quill-editor';
import Quill from 'quill';
import 'quill/dist/quill.core.css';
import 'quill/dist/quill.snow.css';
import 'quill/dist/quill.bubble.css';
import { getUserList } from '@/api/user.js';
import { sendMail } from '@/api/mail/mail.js';
const fonts = [
"SimSun",
"SimHei",
"Microsoft-YaHei",
"KaiTi",
"FangSong",
"Arial",
"Times-New-Roman",
"sans-serif",
];
// 自定义字号的大小,注意下面的内容要和css里面对应上
const sizes = ['14px', "16px", "18px", "20px", "22px", "26px", "28px", "30px"];
const Size = Quill.import("attributors/style/size");
Size.whitelist = sizes;
Quill.register(Size, true);
const Font = Quill.import("attributors/style/font");
Font.whitelist = fonts; //将字体加入到白名单
Quill.register(Font, true);
export default {
data() {
return {
dialogVisible: false,
title: '',
formData: {
fromUser: '',
toUser: [],
subject: '',
text: ''
},
content: '',
fileList: [],
// 富文本编辑器配置
editorOption: {
modules: {
toolbar: {
container: [
['bold', 'italic', 'underline', 'strike'], // 加粗 斜体 下划线 删除线
['blockquote', 'code-block'], // 引用 代码块
[{ header: 1 }, { header: 2 }], // 1、2 级标题
[{ list: 'ordered' }, { list: 'bullet' }], // 有序、无序列表
[{ script: 'sub' }, { script: 'super' }], // 上标/下标
[{ indent: '-1' }, { indent: '+1' }], // 缩进
[{ direction: 'rtl' }], // 文本方向
[{ size: sizes }], // 配置字号
[{ header: [1, 2, 3, 4, 5, 6] }], // 标题
[{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色
[{ font: fonts }], // 字体种类
[{ align: [] }], // 对齐方式
['clean'], // 清除文本格式
// ['image', 'video'] // 链接、图片、视频
]
}
},
placeholder: '请输入正文'
},
allUser: [],
loading: false,
buttonMessage: '发送'
}
},
props: {
fromUser: String,
checkedUserList: Array
},
directives: {
elDragDialog
},
components: {
quillEditor
},
methods: {
handleClose() {
this.dialogVisible = false;
},
showDialog() {
this.dialogVisible = true;
},
handleDialogOpen() {
this.formData.fromUser = this.$props.fromUser;
this.formData.toUser = this.$props.checkedUserList.filter(item => !!item && item != this.$props.fromUser);
this.getUserListFn();
},
onSubmit() {
console.log("submit!");
},
// 失去焦点事件
onEditorBlur(quill) {
console.log("editor blur!", quill);
},
// 获得焦点事件
onEditorFocus(quill) {
console.log("editor focus!", quill);
},
// 准备富文本编辑器
onEditorReady(quill) {
console.log("editor ready!", quill);
},
// 内容改变事件
onEditorChange({ quill, html, text }) {
// console.log("editor change!", quill, html, text);
console.log(html);
this.content = html;
},
getUserListFn() {
getUserList().then(res => {
this.allUser = res.filter(item => !!item.mail);
})
},
sendEmail() {
this.loading = true;
this.buttonMessage = '发送中';
this.formData.text = this.content;
let fd = new FormData();
fd.append('fromUser', this.formData.fromUser);
fd.append('text', this.formData.text);
fd.append('subject', this.formData.subject);
this.formData.toUser.forEach(item => {
fd.append('sendTo', item);
});
this.fileList.forEach(item => {
fd.append('files', item.raw);
});
sendMail(fd).then(res => {
this.$message.success(res);
this.loading = false;
this.buttonMessage = '发送完成';
setTimeout(() => {
this.buttonMessage = '发送';
}, 2000);
}).catch(error => {
this.$message.error(error.message);
this.loading = false;
this.buttonMessage = '发送失败';
setTimeout(() => {
this.buttonMessage = '发送';
}, 2000);
});
},
handleChange(file, fileList) {
this.fileList = fileList.slice(-20);
},
handleRemove(file, fileList) {
this.fileList = fileList;
},
}
}
</script>
<style lang="scss">
.myMailDialog {
.el-dialog {
height: calc(100% - 60px);
padding: 20px 20px 80px 20px;
.el-dialog__body {
height: calc(100% - 80px);
.myEmail {
width: 100%;
height: 100%;
overflow-y: auto;
.el-select {
width: 100%;
}
.el-upload__tip {
color: white;
}
.upload-demo.myUpload{
margin-top: 6px;
}
.quill-editor {
height: 250px;
}
.myUpload {
.el-upload-list__item {
width: auto !important;
margin-right: 10px;
display: inline-block !important;
border: 1px solid #535353 !important;
box-shadow: 0 0 10px #535353;
background-color: #F5F7FA;
.el-upload-list__item-name {
.el-icon-document {
font-size: 20px !important;
margin-left: 10px;
vertical-align: middle;
}
}
.el-icon-close{
top: 10px !important;
}
}
}
// .editor {
// line-height: normal !important;
// height: 350px;
// }
.ql-toolbar.ql-snow {
background-color: white;
}
.ql-snow .ql-tooltip[data-mode="link"]::before {
content: "请输入链接地址:";
}
.ql-snow .ql-tooltip.ql-editing a.ql-action::after {
border-right: 0px;
content: "保存";
padding-right: 0px;
}
.ql-editor {
background-color: white;
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=SimHei]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=SimHei]::before {
content: "黑体";
font-family: "SimHei";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Microsoft-YaHei]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Microsoft-YaHei]::before {
content: "微软雅黑";
font-family: "Microsoft YaHei";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=KaiTi]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=KaiTi]::before {
content: "楷体";
font-family: "KaiTi";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=FangSong]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=FangSong]::before {
content: "仿宋";
font-family: "FangSong";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Arial]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Arial]::before {
content: "Arial";
font-family: "Arial";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Times-New-Roman]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Times-New-Roman]::before {
content: "Times New Roman";
font-family: "Times New Roman";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=sans-serif]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=sans-serif]::before {
content: "sans-serif";
font-family: "sans-serif";
}
.ql-font-SimSun {
font-family: "SimSun";
}
.ql-font-SimHei {
font-family: "SimHei";
}
.ql-font-Microsoft-YaHei {
font-family: "Microsoft YaHei";
}
.ql-font-KaiTi {
font-family: "KaiTi";
}
.ql-font-FangSong {
font-family: "FangSong";
}
.ql-font-Arial {
font-family: "Arial";
}
.ql-font-Times-New-Roman {
font-family: "Times New Roman";
}
.ql-font-sans-serif {
font-family: "sans-serif";
}
/* 字号设置 */
/* 默认字号 */
.ql-snow .ql-picker.ql-size .ql-picker-label::before,
.ql-snow .ql-picker.ql-size .ql-picker-item::before {
content: "14px";
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="14px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="14px"]::before {
content: "14px";
font-size: 14px;
}
.ql-size-14px {
font-size: 14px;
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="16px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="16px"]::before {
content: "16px";
font-size: 16px;
}
.ql-size-16px {
font-size: 16px;
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="18px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="18px"]::before {
content: "18px";
font-size: 18px;
}
.ql-size-18px {
font-size: 18px;
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="20px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="20px"]::before {
content: "20px";
font-size: 20px;
}
.ql-size-20px {
font-size: 20px;
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="22px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="22px"]::before {
content: "22px";
font-size: 22px;
}
.ql-size-22px {
font-size: 22px;
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="26px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="26px"]::before {
content: "26px";
font-size: 26px;
}
.ql-size-26px {
font-size: 26px;
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="28px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="28px"]::before {
content: "28px";
font-size: 28px;
}
.ql-size-28px {
font-size: 28px;
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="30px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="30px"]::before {
content: "30px";
font-size: 30px;
}
.ql-size-30px {
font-size: 30px;
}
}
}
}
}
</style>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment