Welcom to 评论 - lizhenqiu blog!
#248
#249
#250
#251
#252
#253
#254
$media = new Media($this->app); $getBroadcastInfoUrl = $media->getBroadcastInfoUrl($content->media_id);
#255
<!DOCTYPE html> <html> <head> <title>内容演示</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="black" /> <meta name="format-detection" content="telephone=no" /> <style> *{color: #fff;padding: 0px;margin: 0px;border: 0px;} img{max-width: 100%;} </style> </head> <body> {$content|raw|htmlspecialchars_decode} </body> </html>
#256
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>内容预览</title> <meta name="description" content=""> <meta name="keywords" content=""> <meta name="viewport" content="initial-scale=1, maximum-scale=1"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> </head> <body class="docs-home" ontouchstart=""> <style type="text/css"> @media (min-width: 850px){ .docs-home .phone{ /*margin: 0px 0px;*/ margin: 10px auto !important; } .phone:before { content: ''; width: 60px; height: 10px; border-radius: 10px; position: absolute; left:50%; margin-left: -30px; background:#333; top: 50px; } .phone .statusbar { position: absolute; width: 320px; height: 20px; background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAAoCAIAAADhf9zeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REEyN0EzRUU1QzM3MTFFNEE1ODA5RkNEOEU4MEU4ODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REEyN0EzRUY1QzM3MTFFNEE1ODA5RkNEOEU4MEU4ODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpEQTI3QTNFQzVDMzcxMUU0QTU4MDlGQ0Q4RTgwRTg4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEQTI3QTNFRDVDMzcxMUU0QTU4MDlGQ0Q4RTgwRTg4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuHAU7gAAA6nSURBVHja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'); left: 50%; margin-left: -160px; top: 100px; -webkit-background-size: 100% auto; background-size: 100% auto; } .phone:after { content: ''; position: absolute; width: 60px; height: 60px; left: 50%; margin-left: -30px; bottom: 20px; border-radius: 100%; box-sizing: border-box; border: 5px solid #333; } } .phone{ background: #111; border-radius: 0px; box-shadow: none; width: 100%; height: 568px; padding: 0; } .docs-home.mui-ios .phone .statusbar,.docs-home.mui-android .phone .statusbar,.docs-home.mui-ios .phone:before,.docs-home.mui-ios .phone:after{ display: none; } .phone { margin: 0 auto; position: relative; background: #111; border-radius: 55px; box-shadow: 0px 0px 0px 2px #aaa; width: 320px; height: 568px; padding: 105px 25px; -webkit-box-sizing: content-box; box-sizing: content-box; } .phone iframe { width: 320px; height: 100%; display: block; width: 100%; margin-top: 20px; } </style> <div class="docs-header"> <div style="max-width:1024px;margin:0 auto;"> <div class="phone"> <iframe src="" frameborder="0" scrolling="yes" id="myframe"></iframe> <div class="statusbar"></div> </div> </div> </div> <script> document.getElementById("myframe").src=getQueryVariable('uf'); function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = query.split("&"); for (var i=0;i<vars.length;i++) { var pair = vars[i].split("="); if(pair[0] == variable){return pair[1];} } return(false); } </script> </body> </html>
#257
//返回文章内容 public function rHtml(){ $param = $this->request->param(); if(isset($param['id']) && $param['id']) $id=$param['id']; else exit('no id'); $content=ArticlesModel::find($id); // 模板输出并变量赋值 return View::fetch('runhtml', [ 'content' => $content->content ]); } public function runM(){ return View::fetch('runM'); }
#258
#259
cd/ e: cd Php-project\jxt\view\group npm run dev pause
#260
cd/ e: cd test1/test2
#261
<el-upload class="avatar-uploader el-upload--text" :action="uploadUrl" :show-file-list="false" :on-success="handleVideoSuccess" :before-upload="beforeUploadVideo" :on-progress="uploadVideoProcess">
uploadVideoProcess(event, file, fileList){ this.videoFlag = true; this.videoUploadPercent = file.percentage.toFixed(0); },
#262
<el-upload class="upload-demo" action="#" ref="upimg" :on-success="handleAvatarSuccess" :on-progress="uploadVideoProcess" :http-request="httpRequestLogo" :limit="1" > <el-button size="mini" type="primary">点击上传</el-button> <!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> --> </el-upload>
handleAvatarSuccess(res, file) { //console.log(213); // this.myData= file; this.$refs.upimg.clearFiles(); //上传成功之后清除历史记录 //this.handleInitTableData(); //初始化表格数据 }, /*uploadVideoProcess(event, file, fileList){ console.log(file.percentage.toFixed(0)); },*/ // 图片上传 httpRequestLogo(file) { if('' === this.categoryprice) { return this.$message.error('请选择图片分类') } let formdata = new FormData() formdata.append('file',file.file) formdata.append('name',file.file.name) formdata.append('categoryId', this.categoryprice) this.loading=true; const config = { onUploadProgress: progressEvent => { // progressEvent.loaded:已上传文件大小 // progressEvent.total:被上传文件的总大小 let progressPercent = Number((progressEvent.loaded / progressEvent.total * 100).toFixed(2)) if(progressPercent>99) this.loading=false; this.progressPercent=progressPercent; //console.log(progressPercent); } } this.$http.post('/image/upload', formdata,config).then(({ data: res }) => { console.log(res) if(1 !== res.code) { return this.$message.error(res.msg) } this.$message.success('上传成功') this.handleAvatarSuccess() this.getDataList() }) },
#263
chmod 777 项目文件夹/node_modules/.bin/vue-cli-service
#264
<!--配置文件 value: //编辑器内容 config:{ eddc:{ //其他 }, toolbars:[ //工具栏] } editorNum: 1 //编辑器编号 width: 75% width1: 380px --> <template> <!--<script id="editor" type="text/plain"></script>--> <div> <div :id="'editor'+editorNum"></div> <JxtPicture :exhibition="exhibition" @close="onClose" :title="'图片管理'" @getImg="getImg" :width="'75%'" :width1="'380px'" :priceLength="10000" v-if="exhibition" ></JxtPicture> </div> </template> <script> import JxtPicture from '../components/jxt-picture.vue' export default { name: 'ue1', components: { JxtPicture }, props: { editorNum:{ type: Number, default:1 //编辑器编号 }, value: { type: String, default: '', required: false }, config: { type: Object, default: { eddc:{}, toolbars:[] }, required: false }, }, data() { return { exhibition:false, editor: null, instance: null, //texta: 333, configd:this.config, eddc:{ initialFrameWidth:null ,//宽度随浏览器自适应 wordCount: false, //关闭字数统计 elementPathEnabled : false,//隐藏元素路径 autoHeightEnabled: true,//是否自动长高 autoFloatEnabled: true,//是否保持toolbar的位置不动 initialFrameHeight: 360, }, toolbars: [[ 'source', //源代码 //'anchor', //锚点 'undo', //撤销 'redo', //重做 '|', 'forecolor', //字体颜色 'backcolor', //背景色 'bold', //加粗 //'indent', //首行缩进 //'snapscreen', //截图 'italic', //斜体 'underline', //下划线 'strikethrough', //删除线 'subscript', //下标 'fontborder', //字符边框 'superscript', //上标 '|', 'formatmatch', //格式刷 //'blockquote', //引用 'pasteplain', //纯文本粘贴模式 'selectall', //全选 //'print', //打印 //'preview', //预览 'horizontal', //分隔线 'removeformat', //清除格式 '|', //'time', //时间 //'date', //日期 //'unlink', //取消链接 'insertrow', //前插入行 'insertcol', //前插入列 'mergeright', //右合并单元格 'mergedown', //下合并单元格 'deleterow', //删除行 'deletecol', //删除列 'splittorows', //拆分成行 'splittocols', //拆分成列 'splittocells', //完全拆分单元格 'deletecaption', //删除表格标题 'inserttitle', //插入标题 'mergecells', //合并多个单元格 'deletetable', //删除表格 'cleardoc', //清空文档 //'insertparagraphbeforetable', //"表格前插入行" //'insertcode', //代码语言 //'fontfamily', //字体 '|', 'fontsize', //字号 'paragraph', //段落格式 //'simpleupload', //单图上传 //'insertimage', //多图上传 //'edittable', //表格属性 //'edittd', //单元格属性 //'link', //超链接 //'emotion', //表情 //'spechars', //特殊字符 //'searchreplace', //查询替换 //'map', //Baidu地图 //'gmap', //Google地图 //'insertvideo', //视频 //'help', //帮助 '|', 'justifyleft', //居左对齐 'justifyright', //居右对齐 'justifycenter', //居中对齐 'justifyjustify', //两端对齐 '|', 'insertorderedlist', //有序列表 'insertunorderedlist', //无序列表 //'directionalityltr', //从左向右输入 //'directionalityrtl', //从右向左输入 //'rowspacingtop', //段前距 //'rowspacingbottom', //段后距 'pagebreak', //分页 'insertframe', //插入Iframe '|', 'imagenone', //默认 'imageleft', //左浮动 'imageright', //右浮动 //'attachment', //附件 'imagecenter', //居中 //'wordimage', //图片转存 'lineheight', //行间距 //'edittip ', //编辑提示 //'customstyle', //自定义标题 //'autotypeset', //自动排版 //'webapp', //百度应用 //'touppercase', //字母大写 //'tolowercase', //字母小写 //'background', //背景 //'template', //模板 //'scrawl', //涂鸦 //'music', //音乐 'inserttable', //插入表格 //'drafts', // 从草稿箱加载 'charts', // 图表 '|', 'fullscreen', //全屏 'macros', // 自定义上传 ]] } }, watch: { value: { handler: function(val, oldVal) { this.editor = window.UE.getEditor('editor'+this.editorNum, this.configd); this.editor.setContent(val); } } }, mounted () { let config=this.config; //console.log(config.eddc);return false; let eddc=config.eddc && Object.keys(config.eddc).length!=0?config.eddc:this.eddc let toolbars=config.toolbars && config.toolbars.length && config.toolbars[0] && config.toolbars[0].length ?config.toolbars:this.toolbars //console.log(eddc); eddc.toolbars=toolbars; console.log(eddc) this.configd=eddc; this.$nextTick(() => { const _this = this this.editor = window.UE.getEditor('editor'+this.editorNum, this.configd); this.editor.addListener('ready', function () { _this.editor.setContent(_this.value) }) this.editor.commands['macros'] = { execCommand : () => { this.beforeInsertImage() }, queryCommandState: function(){ } } }) }, methods: { onClose() { this.exhibition = false }, getUEContent () { return this.editor.getContent() }, beforeInsertImage() { //this.$emit('showModal', { editor: 'editor' }) //console.log(e) this.exhibition = true //this.priceLength = 10000 }, getImg(e) { let UE = this.editor e.forEach(item => { UE.execCommand('insertHtml', `<img src=${item.org_img}>`) }) }, }, destroyed () { this.editor.destroy() } } </script> <style lang="scss" scoped> /*#editor { width: 90vh; }*/ </style>
#265
<script type="text/javascript" src="ueditor/ueditor.config.js"></script> <script type="text/javascript" src="ueditor/ueditor.all.min.js"> </script> <script type="text/javascript" src="ueditor/lang/zh-cn/zh-cn.js"></script> <script> $(function() { //本来是这样的:UE.getEditor('editor'); 传入参数后就是下面那样子了,toolbars里的就是工具的图标 UE.getEditor('editor', { toolbar: [ ['fullscreen', 'source', 'undo', 'redo', 'bold', 'italic', 'underline','fontborder', 'backcolor', 'fontsize', 'fontfamily', 'justifyleft', 'justifyright','justifycenter', 'justifyjustify', 'strikethrough','superscript', 'subscript', 'removeformat', 'formatmatch','autotypeset', 'blockquote', 'pasteplain', '|', 'forecolor', 'backcolor','insertorderedlist', 'insertunorderedlist', 'selectall', 'cleardoc', 'link', 'unlink','emotion', 'help'] ] }); }) </script>
'|'
toolbars: [ [ 'anchor', //锚点 'undo', //撤销 'redo', //重做 'bold', //加粗 'indent', //首行缩进 'snapscreen', //截图 'italic', //斜体 'underline', //下划线 'strikethrough', //删除线 'subscript', //下标 'fontborder', //字符边框 'superscript', //上标 'formatmatch', //格式刷 'source', //源代码 'blockquote', //引用 'pasteplain', //纯文本粘贴模式 'selectall', //全选 'print', //打印 'preview', //预览 'horizontal', //分隔线 'removeformat', //清除格式 'time', //时间 'date', //日期 'unlink', //取消链接 'insertrow', //前插入行 'insertcol', //前插入列 'mergeright', //右合并单元格 'mergedown', //下合并单元格 'deleterow', //删除行 'deletecol', //删除列 'splittorows', //拆分成行 'splittocols', //拆分成列 'splittocells', //完全拆分单元格 'deletecaption', //删除表格标题 'inserttitle', //插入标题 'mergecells', //合并多个单元格 'deletetable', //删除表格 'cleardoc', //清空文档 'insertparagraphbeforetable', //"表格前插入行" 'insertcode', //代码语言 'fontfamily', //字体 'fontsize', //字号 'paragraph', //段落格式 'simpleupload', //单图上传 'insertimage', //多图上传 'edittable', //表格属性 'edittd', //单元格属性 'link', //超链接 'emotion', //表情 'spechars', //特殊字符 'searchreplace', //查询替换 'map', //Baidu地图 'gmap', //Google地图 'insertvideo', //视频 'help', //帮助 'justifyleft', //居左对齐 'justifyright', //居右对齐 'justifycenter', //居中对齐 'justifyjustify', //两端对齐 'forecolor', //字体颜色 'backcolor', //背景色 'insertorderedlist', //有序列表 'insertunorderedlist', //无序列表 'fullscreen', //全屏 'directionalityltr', //从左向右输入 'directionalityrtl', //从右向左输入 'rowspacingtop', //段前距 'rowspacingbottom', //段后距 'pagebreak', //分页 'insertframe', //插入Iframe 'imagenone', //默认 'imageleft', //左浮动 'imageright', //右浮动 'attachment', //附件 'imagecenter', //居中 'wordimage', //图片转存 'lineheight', //行间距 'edittip ', //编辑提示 'customstyle', //自定义标题 'autotypeset', //自动排版 'webapp', //百度应用 'touppercase', //字母大写 'tolowercase', //字母小写 'background', //背景 'template', //模板 'scrawl', //涂鸦 'music', //音乐 'inserttable', //插入表格 'drafts', // 从草稿箱加载 'charts', // 图表 ] ]
<!-- 加载编辑器的容器 --> <script id="editor" type="text/plain" name="content"> ${info.content} //在这里输入编辑器的初始内容。 </script> <!-- 创建编辑器并设置属性 --> <script type="text/javascript"> //建议使用工厂方法getEditor创建和引用编辑器实例,如果在某个闭包下引用该编辑器,直接调用UE.getEditor('editor')就能拿到相关的实例 //相见文档配置属于你自己的编译器 var ue = UE.getEditor('editor', { initialFrameHeight: 300, initialFrameWeight: 100 }); </script>
#266
确定要清除编辑框内容吗?
该删除操作将不可恢复。
删除 取消
激活Windows
转到"设置"以激活Windows。
#248
#249
#250
一证通查入口 电脑端
#251
#252
#253
#254
$media = new Media($this->app); $getBroadcastInfoUrl = $media->getBroadcastInfoUrl($content->media_id);#255
<!DOCTYPE html> <html> <head> <title>内容演示</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="black" /> <meta name="format-detection" content="telephone=no" /> <style> *{color: #fff;padding: 0px;margin: 0px;border: 0px;} img{max-width: 100%;} </style> </head> <body> {$content|raw|htmlspecialchars_decode} </body> </html>#256
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>内容预览</title> <meta name="description" content=""> <meta name="keywords" content=""> <meta name="viewport" content="initial-scale=1, maximum-scale=1"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> </head> <body class="docs-home" ontouchstart=""> <style type="text/css"> @media (min-width: 850px){ .docs-home .phone{ /*margin: 0px 0px;*/ margin: 10px auto !important; } .phone:before { content: ''; width: 60px; height: 10px; border-radius: 10px; position: absolute; left:50%; margin-left: -30px; background:#333; top: 50px; } .phone .statusbar { position: absolute; width: 320px; height: 20px; background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAAoCAIAAADhf9zeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REEyN0EzRUU1QzM3MTFFNEE1ODA5RkNEOEU4MEU4ODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REEyN0EzRUY1QzM3MTFFNEE1ODA5RkNEOEU4MEU4ODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpEQTI3QTNFQzVDMzcxMUU0QTU4MDlGQ0Q4RTgwRTg4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEQTI3QTNFRDVDMzcxMUU0QTU4MDlGQ0Q4RTgwRTg4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuHAU7gAAA6nSURBVHja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'); left: 50%; margin-left: -160px; top: 100px; -webkit-background-size: 100% auto; background-size: 100% auto; } .phone:after { content: ''; position: absolute; width: 60px; height: 60px; left: 50%; margin-left: -30px; bottom: 20px; border-radius: 100%; box-sizing: border-box; border: 5px solid #333; } } .phone{ background: #111; border-radius: 0px; box-shadow: none; width: 100%; height: 568px; padding: 0; } .docs-home.mui-ios .phone .statusbar,.docs-home.mui-android .phone .statusbar,.docs-home.mui-ios .phone:before,.docs-home.mui-ios .phone:after{ display: none; } .phone { margin: 0 auto; position: relative; background: #111; border-radius: 55px; box-shadow: 0px 0px 0px 2px #aaa; width: 320px; height: 568px; padding: 105px 25px; -webkit-box-sizing: content-box; box-sizing: content-box; } .phone iframe { width: 320px; height: 100%; display: block; width: 100%; margin-top: 20px; } </style> <div class="docs-header"> <div style="max-width:1024px;margin:0 auto;"> <div class="phone"> <iframe src="" frameborder="0" scrolling="yes" id="myframe"></iframe> <div class="statusbar"></div> </div> </div> </div> <script> document.getElementById("myframe").src=getQueryVariable('uf'); function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = query.split("&"); for (var i=0;i<vars.length;i++) { var pair = vars[i].split("="); if(pair[0] == variable){return pair[1];} } return(false); } </script> </body> </html>#257
//返回文章内容 public function rHtml(){ $param = $this->request->param(); if(isset($param['id']) && $param['id']) $id=$param['id']; else exit('no id'); $content=ArticlesModel::find($id); // 模板输出并变量赋值 return View::fetch('runhtml', [ 'content' => $content->content ]); } public function runM(){ return View::fetch('runM'); }#258
#259
cd/ e: cd Php-project\jxt\view\group npm run dev pause#260
cd/ e: cd test1/test2#261
<el-upload class="avatar-uploader el-upload--text" :action="uploadUrl" :show-file-list="false" :on-success="handleVideoSuccess" :before-upload="beforeUploadVideo" :on-progress="uploadVideoProcess">uploadVideoProcess(event, file, fileList){ this.videoFlag = true; this.videoUploadPercent = file.percentage.toFixed(0); },#262
<el-upload class="upload-demo" action="#" ref="upimg" :on-success="handleAvatarSuccess" :on-progress="uploadVideoProcess" :http-request="httpRequestLogo" :limit="1" > <el-button size="mini" type="primary">点击上传</el-button> <!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> --> </el-upload>handleAvatarSuccess(res, file) { //console.log(213); // this.myData= file; this.$refs.upimg.clearFiles(); //上传成功之后清除历史记录 //this.handleInitTableData(); //初始化表格数据 }, /*uploadVideoProcess(event, file, fileList){ console.log(file.percentage.toFixed(0)); },*/ // 图片上传 httpRequestLogo(file) { if('' === this.categoryprice) { return this.$message.error('请选择图片分类') } let formdata = new FormData() formdata.append('file',file.file) formdata.append('name',file.file.name) formdata.append('categoryId', this.categoryprice) this.loading=true; const config = { onUploadProgress: progressEvent => { // progressEvent.loaded:已上传文件大小 // progressEvent.total:被上传文件的总大小 let progressPercent = Number((progressEvent.loaded / progressEvent.total * 100).toFixed(2)) if(progressPercent>99) this.loading=false; this.progressPercent=progressPercent; //console.log(progressPercent); } } this.$http.post('/image/upload', formdata,config).then(({ data: res }) => { console.log(res) if(1 !== res.code) { return this.$message.error(res.msg) } this.$message.success('上传成功') this.handleAvatarSuccess() this.getDataList() }) },#263
chmod 777 项目文件夹/node_modules/.bin/vue-cli-service#264
<!--配置文件 value: //编辑器内容 config:{ eddc:{ //其他 }, toolbars:[ //工具栏] } editorNum: 1 //编辑器编号 width: 75% width1: 380px --> <template> <!--<script id="editor" type="text/plain"></script>--> <div> <div :id="'editor'+editorNum"></div> <JxtPicture :exhibition="exhibition" @close="onClose" :title="'图片管理'" @getImg="getImg" :width="'75%'" :width1="'380px'" :priceLength="10000" v-if="exhibition" ></JxtPicture> </div> </template> <script> import JxtPicture from '../components/jxt-picture.vue' export default { name: 'ue1', components: { JxtPicture }, props: { editorNum:{ type: Number, default:1 //编辑器编号 }, value: { type: String, default: '', required: false }, config: { type: Object, default: { eddc:{}, toolbars:[] }, required: false }, }, data() { return { exhibition:false, editor: null, instance: null, //texta: 333, configd:this.config, eddc:{ initialFrameWidth:null ,//宽度随浏览器自适应 wordCount: false, //关闭字数统计 elementPathEnabled : false,//隐藏元素路径 autoHeightEnabled: true,//是否自动长高 autoFloatEnabled: true,//是否保持toolbar的位置不动 initialFrameHeight: 360, }, toolbars: [[ 'source', //源代码 //'anchor', //锚点 'undo', //撤销 'redo', //重做 '|', 'forecolor', //字体颜色 'backcolor', //背景色 'bold', //加粗 //'indent', //首行缩进 //'snapscreen', //截图 'italic', //斜体 'underline', //下划线 'strikethrough', //删除线 'subscript', //下标 'fontborder', //字符边框 'superscript', //上标 '|', 'formatmatch', //格式刷 //'blockquote', //引用 'pasteplain', //纯文本粘贴模式 'selectall', //全选 //'print', //打印 //'preview', //预览 'horizontal', //分隔线 'removeformat', //清除格式 '|', //'time', //时间 //'date', //日期 //'unlink', //取消链接 'insertrow', //前插入行 'insertcol', //前插入列 'mergeright', //右合并单元格 'mergedown', //下合并单元格 'deleterow', //删除行 'deletecol', //删除列 'splittorows', //拆分成行 'splittocols', //拆分成列 'splittocells', //完全拆分单元格 'deletecaption', //删除表格标题 'inserttitle', //插入标题 'mergecells', //合并多个单元格 'deletetable', //删除表格 'cleardoc', //清空文档 //'insertparagraphbeforetable', //"表格前插入行" //'insertcode', //代码语言 //'fontfamily', //字体 '|', 'fontsize', //字号 'paragraph', //段落格式 //'simpleupload', //单图上传 //'insertimage', //多图上传 //'edittable', //表格属性 //'edittd', //单元格属性 //'link', //超链接 //'emotion', //表情 //'spechars', //特殊字符 //'searchreplace', //查询替换 //'map', //Baidu地图 //'gmap', //Google地图 //'insertvideo', //视频 //'help', //帮助 '|', 'justifyleft', //居左对齐 'justifyright', //居右对齐 'justifycenter', //居中对齐 'justifyjustify', //两端对齐 '|', 'insertorderedlist', //有序列表 'insertunorderedlist', //无序列表 //'directionalityltr', //从左向右输入 //'directionalityrtl', //从右向左输入 //'rowspacingtop', //段前距 //'rowspacingbottom', //段后距 'pagebreak', //分页 'insertframe', //插入Iframe '|', 'imagenone', //默认 'imageleft', //左浮动 'imageright', //右浮动 //'attachment', //附件 'imagecenter', //居中 //'wordimage', //图片转存 'lineheight', //行间距 //'edittip ', //编辑提示 //'customstyle', //自定义标题 //'autotypeset', //自动排版 //'webapp', //百度应用 //'touppercase', //字母大写 //'tolowercase', //字母小写 //'background', //背景 //'template', //模板 //'scrawl', //涂鸦 //'music', //音乐 'inserttable', //插入表格 //'drafts', // 从草稿箱加载 'charts', // 图表 '|', 'fullscreen', //全屏 'macros', // 自定义上传 ]] } }, watch: { value: { handler: function(val, oldVal) { this.editor = window.UE.getEditor('editor'+this.editorNum, this.configd); this.editor.setContent(val); } } }, mounted () { let config=this.config; //console.log(config.eddc);return false; let eddc=config.eddc && Object.keys(config.eddc).length!=0?config.eddc:this.eddc let toolbars=config.toolbars && config.toolbars.length && config.toolbars[0] && config.toolbars[0].length ?config.toolbars:this.toolbars //console.log(eddc); eddc.toolbars=toolbars; console.log(eddc) this.configd=eddc; this.$nextTick(() => { const _this = this this.editor = window.UE.getEditor('editor'+this.editorNum, this.configd); this.editor.addListener('ready', function () { _this.editor.setContent(_this.value) }) this.editor.commands['macros'] = { execCommand : () => { this.beforeInsertImage() }, queryCommandState: function(){ } } }) }, methods: { onClose() { this.exhibition = false }, getUEContent () { return this.editor.getContent() }, beforeInsertImage() { //this.$emit('showModal', { editor: 'editor' }) //console.log(e) this.exhibition = true //this.priceLength = 10000 }, getImg(e) { let UE = this.editor e.forEach(item => { UE.execCommand('insertHtml', `<img src=${item.org_img}>`) }) }, }, destroyed () { this.editor.destroy() } } </script> <style lang="scss" scoped> /*#editor { width: 90vh; }*/ </style>#265
UEditor自定义toolbar工具条
使用ueditor的同学都知道,ueditor里有很多功能,
很全面,但有时候我们的编辑器不需要太多的功能,比如前台评论或者留言,就不需要这么多功能了,
那我们怎么去定制自己想要的工具呢?
官方给出了两个方法,
ueditor工具栏上的按钮列表可以自定义配置,
只需要通过修改配置项就可以实现需求:
1. 方法一:修改ueditorconfig.js里面的toolbars
2. 方法二:实例化编辑器的时候传入toolbars参数
第一种貌似不适合,需要改ueditor.config.js文件,有点麻烦,
第二种就很好,我们且来看看第二种方法,示例如下:
<script type="text/javascript" src="ueditor/ueditor.config.js"></script> <script type="text/javascript" src="ueditor/ueditor.all.min.js"> </script> <script type="text/javascript" src="ueditor/lang/zh-cn/zh-cn.js"></script> <script> $(function() { //本来是这样的:UE.getEditor('editor'); 传入参数后就是下面那样子了,toolbars里的就是工具的图标 UE.getEditor('editor', { toolbar: [ ['fullscreen', 'source', 'undo', 'redo', 'bold', 'italic', 'underline','fontborder', 'backcolor', 'fontsize', 'fontfamily', 'justifyleft', 'justifyright','justifycenter', 'justifyjustify', 'strikethrough','superscript', 'subscript', 'removeformat', 'formatmatch','autotypeset', 'blockquote', 'pasteplain', '|', 'forecolor', 'backcolor','insertorderedlist', 'insertunorderedlist', 'selectall', 'cleardoc', 'link', 'unlink','emotion', 'help'] ] }); }) </script>配置项里用竖线
'|'完整的按钮列表
toolbars: [ [ 'anchor', //锚点 'undo', //撤销 'redo', //重做 'bold', //加粗 'indent', //首行缩进 'snapscreen', //截图 'italic', //斜体 'underline', //下划线 'strikethrough', //删除线 'subscript', //下标 'fontborder', //字符边框 'superscript', //上标 'formatmatch', //格式刷 'source', //源代码 'blockquote', //引用 'pasteplain', //纯文本粘贴模式 'selectall', //全选 'print', //打印 'preview', //预览 'horizontal', //分隔线 'removeformat', //清除格式 'time', //时间 'date', //日期 'unlink', //取消链接 'insertrow', //前插入行 'insertcol', //前插入列 'mergeright', //右合并单元格 'mergedown', //下合并单元格 'deleterow', //删除行 'deletecol', //删除列 'splittorows', //拆分成行 'splittocols', //拆分成列 'splittocells', //完全拆分单元格 'deletecaption', //删除表格标题 'inserttitle', //插入标题 'mergecells', //合并多个单元格 'deletetable', //删除表格 'cleardoc', //清空文档 'insertparagraphbeforetable', //"表格前插入行" 'insertcode', //代码语言 'fontfamily', //字体 'fontsize', //字号 'paragraph', //段落格式 'simpleupload', //单图上传 'insertimage', //多图上传 'edittable', //表格属性 'edittd', //单元格属性 'link', //超链接 'emotion', //表情 'spechars', //特殊字符 'searchreplace', //查询替换 'map', //Baidu地图 'gmap', //Google地图 'insertvideo', //视频 'help', //帮助 'justifyleft', //居左对齐 'justifyright', //居右对齐 'justifycenter', //居中对齐 'justifyjustify', //两端对齐 'forecolor', //字体颜色 'backcolor', //背景色 'insertorderedlist', //有序列表 'insertunorderedlist', //无序列表 'fullscreen', //全屏 'directionalityltr', //从左向右输入 'directionalityrtl', //从右向左输入 'rowspacingtop', //段前距 'rowspacingbottom', //段后距 'pagebreak', //分页 'insertframe', //插入Iframe 'imagenone', //默认 'imageleft', //左浮动 'imageright', //右浮动 'attachment', //附件 'imagecenter', //居中 'wordimage', //图片转存 'lineheight', //行间距 'edittip ', //编辑提示 'customstyle', //自定义标题 'autotypeset', //自动排版 'webapp', //百度应用 'touppercase', //字母大写 'tolowercase', //字母小写 'background', //背景 'template', //模板 'scrawl', //涂鸦 'music', //音乐 'inserttable', //插入表格 'drafts', // 从草稿箱加载 'charts', // 图表 ] ]备注:
我配置的时候配置key使用的是toolbar,
很多博文使用的是toolbars,但是我使用toolbars不起作用,
不知道是不是ueditor的版本问题。
<!-- 加载编辑器的容器 --> <script id="editor" type="text/plain" name="content"> ${info.content} //在这里输入编辑器的初始内容。 </script> <!-- 创建编辑器并设置属性 --> <script type="text/javascript"> //建议使用工厂方法getEditor创建和引用编辑器实例,如果在某个闭包下引用该编辑器,直接调用UE.getEditor('editor')就能拿到相关的实例 //相见文档配置属于你自己的编译器 var ue = UE.getEditor('editor', { initialFrameHeight: 300, initialFrameWeight: 100 }); </script>#266