<!doctype html> <html lang="en" class="no-js"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="description" content="码农随笔,个人随笔是一个面向IT技术人员,提供个人平时工作总结和在线记录学习笔记,个人技术博客,在线云笔记,码农笔录,最新的技术博客,www.aiprose.com"> <meta name="keywords" content="码农随笔,个人随笔,博客,个人博客,个人笔记,技术博客,免费云笔记,云笔记,随笔,IT博客,谷歌地图,码农笔录,aiprose"> <title>我的笔记 - 码农随笔</title> <script type="text/javascript" src="/static/js/vue.min.js"></script> <link rel="stylesheet" href="/static/css/iview.css"> <script src="/static/js/iview.min.js"></script> <script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.4.0/jquery.min.js"></script> <link rel="stylesheet" href="/static/editor/css/index.css"> <script src="/static/editor/mavon-editor.js"></script> <style> html, body { height: 100%; min-height: 100%; } main { margin-top: 0 !important; margin-bottom: 0 !important; background-color: #f5f4e9; } #vue-app { height: 100%; } .v-note-wrapper { height: 100%; z-index: 99 !important; } .v-note-wrapper .v-note-op { padding-left: 40px !important; } .ivu-menu-png { z-index: 1000; position: fixed; left: 10px; top: 5px; } .ivu-drawer-body { scrollbar-width: none; /* firefox */ -ms-overflow-style: none; /* IE 10+ */ overflow-x: hidden; overflow-y: auto; } ::-webkit-scrollbar { display: none; /* Chrome Safari */ } </style> </head> <body> <div id="vue-app"> <div class="ivu-menu-png" @click="drawer = true"> <img src="/static/img/imenu.png" alt="" width="30" height="30"> </div> <mavon-editor :externalLink="externalLink" :toolbars="toolbars" v-model="meval"></mavon-editor> <Drawer title="目录选择" placement="left" :closable="false" v-model="drawer" width="400"> <i-button type="primary" ghost long>添加文件夹</i-button> <i-button type="success" ghost long style="margin-top: 5px">添加笔记</i-button> <i-menu theme="light" accordion="true" width="380" @on-select="noteSelectHandler"> <Submenu :name="item.Id" v-for="(item,key) in notes" :key="key"> <template slot="title"> <i class="ivu-icon ivu-icon-ios-paper"></i> ${item.Title} </template> <menu-item :name="note.Id" v-for="(note,nkey) in item.Notes" :key="nkey">${note.Title}</menu-item> </Submenu> </i-menu> </Drawer> </div> </body> <script> var app = new Vue({ delimiters: ['${', '}'], el: '#vue-app', components: { 'mavon-editor': MavonEditor.mavonEditor }, data: { drawer: true, externalLink: { // markdown_css: function() { // // 这是你的markdown css文件路径 // return '/markdown/github-markdown.min.css'; // }, katex_css: function () { // 这是你的katex配色方案路径路径 return '/katex/katex.min.css'; }, katex_js: function () { // 这是你的katex.js路径 return '/katex/katex.min.js'; }, }, toolbars: { bold: true, // 粗体 italic: true, // 斜体 header: true, // 标题 underline: true, // 下划线 strikethrough: true, // 中划线 mark: true, // 标记 superscript: true, // 上角标 subscript: true, // 下角标 quote: true, // 引用 ol: true, // 有序列表 ul: true, // 无序列表 link: true, // 链接 imagelink: true, // 图片链接 code: true, // code table: true, // 表格 //fullscreen: true, // 全屏编辑 readmodel: true, // 沉浸式阅读 htmlcode: true, // 展示html源码 help: true, // 帮助 /* 1.3.5 */ undo: true, // 上一步 //redo: true, // 下一步 //trash: true, // 清空 save: true, // 保存(触发events中的save事件) /* 1.4.2 */ navigation: true, // 导航目录 /* 2.1.8 */ alignleft: true, // 左对齐 aligncenter: true, // 居中 alignright: true, // 右对齐 /* 2.2.1 */ subfield: true, // 单双栏模式 preview: true, // 预览 menu: true, // 预览 }, notes: [], meval: '' }, mounted() { var _this = this $.get("/note/api", function (data, status) { _this.notes = data }) }, methods: { noteSelectHandler(id) { var _this = this this.notes.forEach((item) => { item.Notes.forEach((note) => { if (id == note.Id) { _this.meval = note.NoteVal ? note.NoteVal : note.NoteHtml } }) }) } } }) </script> <script> function keyDown(e) { // e.preventDefault(); var currKey = 0, e = e || event || window.event; currKey = e.keyCode || e.which || e.charCode; if (currKey == 83 && (e.ctrlKey || e.metaKey)) { layer.msg("ctrl+s") saveNote() return false; } } function saveNote() { if (!note || !note.Id) { layer.msg('请在左边菜单中选择笔记', function () { }); return } var noteHtml = editor.txt.html() if (!editor.txt.html() && editor.txt.html().trim().length == 0) { layer.msg('保存内容为空', function () { }); return } $.post('/api/note/edit/' + note.Id, { noteHtml: noteHtml }, function (data) { if (data.Status == 0) { layer.msg("保存成功", {icon: 6}); } else if (data.Status == 401) { window.location.href = "/login" } else { layer.msg("服务器异常", {icon: 5}); } }, 'json') } function noteClick(id) { $.get('/api/note/' + id, function (data) { if (!data.Status) { if (data.NoteHtml && data.NoteHtml.trim().length != 0) { editor.txt.html(data.NoteHtml); $(".current-title").text(data.Title) } else if (note) { editor.txt.html(""); } note = data } else if (data.Status == 401) { window.location.href = "/login" } else if (data.Status == 403) { layer.msg("暂无权限", {icon: 5}); } else { layer.msg("服务器异常", {icon: 5}); } }, 'json') } function addNoteCallback(obj) { var subMenu = $(".sub-menu") $.each(subMenu, function (index, el) { if ($(el).attr("value") == obj.Pid) { var child = '<li><a href="javascript:void(0)" onclick="noteClick(' + obj.Id + ')" value="' + obj.Id + '" >' + obj.Title + '</a></li>' $(el).append(child) if (!note || !note.Id) { note = obj $(".current-title").text(obj.Title) } return } }) } $(function () { $("#delNote").click(function () { if (!note || !note.Id) { layer.msg('请在右边菜单中选择笔记', function () { }); return } layer.confirm('删除确认', { btn: ['确认', '手滑了'] //按钮 }, function () { $.post('/api/note/del/' + note.Id, function (data) { if (data.Status == 0) { var subMenu = $(".sub-menu li a") $.each(subMenu, function (index, el) { if ($(el).attr("value") == note.Id) { $(el).remove() return } }) note = null layer.msg("删除成功", {icon: 6}); } else if (data.Status == 401) { window.location.href = "/login" } else if (data.Status == 403) { layer.msg("暂无权限", {icon: 5}); } else { layer.msg("服务器异常", {icon: 5}); } }, 'json') }, function () { }); }) }) </script> </html>