You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							378 lines
						
					
					
						
							14 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							378 lines
						
					
					
						
							14 KiB
						
					
					
				
								<!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>
							 | 
						|
								    <script src="https://cdn.bootcdn.net/ajax/libs/axios/0.19.2/axios.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>
							 | 
						|
								    <Modal
							 | 
						|
								            v-model="modal1"
							 | 
						|
								            title="笔记信息"
							 | 
						|
								            :mask-closable="false"
							 | 
						|
								            @on-ok="okHandler"
							 | 
						|
								            @on-cancel="cancelHandler">
							 | 
						|
								        <i-form :label-width="100">
							 | 
						|
								            <form-item label="文件夹名称">
							 | 
						|
								                <i-select v-model="currentNote.Pid">
							 | 
						|
								                    <i-option v-for="item in noteCols" :value="item.id" :key="item.id">${ item.title }</i-option>
							 | 
						|
								                </i-select>
							 | 
						|
								            </form-item>
							 | 
						|
								            <form-item label="笔记名称">
							 | 
						|
								                <i-input type="text" v-model="currentNote.Title" placeholder="请输入笔记名称"/>
							 | 
						|
								            </form-item>
							 | 
						|
								        </i-form>
							 | 
						|
								    </Modal>
							 | 
						|
								    <Modal
							 | 
						|
								            v-model="modal2"
							 | 
						|
								            title="新增文件夹"
							 | 
						|
								            :mask-closable="false"
							 | 
						|
								            @on-ok="okColHandler">
							 | 
						|
								        <i-form :label-width="100">
							 | 
						|
								            <form-item label="文件夹名称">
							 | 
						|
								                <i-input type="text" v-model="colTitle" placeholder="请输入文件夹名称"/>
							 | 
						|
								            </form-item>
							 | 
						|
								        </i-form>
							 | 
						|
								    </Modal>
							 | 
						|
								    <mavon-editor :externalLink="externalLink" :toolbars="toolbars" v-model="meval" @imgAdd="$imgAdd" @save="saveHandler"
							 | 
						|
								                  @change="changeHandler" ref=md></mavon-editor>
							 | 
						|
								    <Drawer title="目录选择" placement="left" :closable="false" v-model="drawer" width="400">
							 | 
						|
								        <i-button type="primary" ghost long  @click="newNoteColHandler">新建文件夹</i-button>
							 | 
						|
								        <i-button type="success" ghost long style="margin-top: 5px" @click="newNoteHandler">新建笔记</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}
							 | 
						|
								                    <Icon type="md-trash" style="float: right" @click="delHandler(note.Id)"/>
							 | 
						|
								                </menu-item>
							 | 
						|
								            </Submenu>
							 | 
						|
								        </i-menu>
							 | 
						|
								    </Drawer>
							 | 
						|
								</div>
							 | 
						|
								
							 | 
						|
								</body>
							 | 
						|
								<script>
							 | 
						|
								    var app = new Vue({
							 | 
						|
								        delimiters: ['${', '}'],
							 | 
						|
								        el: '#vue-app',
							 | 
						|
								        components: {
							 | 
						|
								            'mavon-editor': MavonEditor.mavonEditor
							 | 
						|
								        },
							 | 
						|
								        data: {
							 | 
						|
								            modal2: false,
							 | 
						|
								            modal1: false,
							 | 
						|
								            drawer: false,
							 | 
						|
								            colTitle: '',
							 | 
						|
								            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: [],
							 | 
						|
								            currentNote: {},
							 | 
						|
								            meval: '',
							 | 
						|
								            noteCols: []
							 | 
						|
								
							 | 
						|
								        },
							 | 
						|
								        mounted: function () {
							 | 
						|
								            var _this = this
							 | 
						|
								            var noteCahche = window.localStorage.getItem("note")
							 | 
						|
								            if (noteCahche) {
							 | 
						|
								                this.currentNote = JSON.parse(noteCahche)
							 | 
						|
								                this.meval = this.currentNote.NoteVal
							 | 
						|
								            }
							 | 
						|
								            this.getData()
							 | 
						|
								            // $vm.$emit('imgAdd', pos, $file);
							 | 
						|
								            this.$refs.md.$on("imgAdd",(pos, $file)=>{
							 | 
						|
								                _this.$imgAdd(pos, $file)
							 | 
						|
								            })
							 | 
						|
								        },
							 | 
						|
								        methods: {
							 | 
						|
								            $imgAdd(pos, $file){
							 | 
						|
								                debugger
							 | 
						|
								                var _this = this
							 | 
						|
								                // 第一步.将图片上传到服务器.
							 | 
						|
								                var formdata = new FormData();
							 | 
						|
								                formdata.append('image', $file);
							 | 
						|
								                axios({
							 | 
						|
								                    url: '/file/upload',
							 | 
						|
								                    method: 'post',
							 | 
						|
								                    data: formdata,
							 | 
						|
								                    headers: { 'Content-Type': 'multipart/form-data' },
							 | 
						|
								                }).then((resp) => {
							 | 
						|
								                    _this.$refs.md.$img2Url(pos, resp.data.Data);
							 | 
						|
								                })
							 | 
						|
								            },
							 | 
						|
								            delHandler (id){
							 | 
						|
								                var _this = this
							 | 
						|
								                if(!id){
							 | 
						|
								                    return
							 | 
						|
								                }
							 | 
						|
								                $.post('/api/note/del/' + id,
							 | 
						|
								                    function (data) {
							 | 
						|
								                        if (data.Status == 0) {
							 | 
						|
								                            this.currentNote = {}
							 | 
						|
								                            this.meval = ''
							 | 
						|
								                            _this.getData()
							 | 
						|
								                            _this.$Notice.success({
							 | 
						|
								                                title: '删除成功',
							 | 
						|
								                                desc: ''
							 | 
						|
								                            })
							 | 
						|
								                        } else if (data.Status == 401) {
							 | 
						|
								                            window.location.href = "/login"
							 | 
						|
								                        } else if (data.Status == 403) {
							 | 
						|
								                            this.$Notice.warning({
							 | 
						|
								                                title: '暂无权限',
							 | 
						|
								                                desc: ''
							 | 
						|
								                            })
							 | 
						|
								                        } else {
							 | 
						|
								                            _this.$Notice.error({
							 | 
						|
								                                title: '删除失败',
							 | 
						|
								                                desc: ''
							 | 
						|
								                            })
							 | 
						|
								                        }
							 | 
						|
								                    }, 'json')
							 | 
						|
								            },
							 | 
						|
								            newNoteColHandler(){
							 | 
						|
								                this.modal2 = true
							 | 
						|
								            },
							 | 
						|
								            getData(){
							 | 
						|
								                var _this = this
							 | 
						|
								                $.get("/api/note", function (data, status) {
							 | 
						|
								                    _this.notes = data
							 | 
						|
								                    data.forEach((el) => {
							 | 
						|
								                        _this.noteCols.push({title: el.Title, id: el.Id})
							 | 
						|
								                    })
							 | 
						|
								                })
							 | 
						|
								            },
							 | 
						|
								            okColHandler() {
							 | 
						|
								                var _this = this
							 | 
						|
								                if(!this.colTitle){
							 | 
						|
								                    return
							 | 
						|
								                }
							 | 
						|
								                $.post('/api/notecoll/save', {
							 | 
						|
								                        title: this.colTitle
							 | 
						|
								                    },
							 | 
						|
								                    function (data) {
							 | 
						|
								                        if (data.Status == 500) {
							 | 
						|
								                            _this.$Notice.error({
							 | 
						|
								                                title: '保存失败',
							 | 
						|
								                                desc: ''
							 | 
						|
								                            })
							 | 
						|
								                        } else if (data.Status == 401) {
							 | 
						|
								                            window.location.href = "/login"
							 | 
						|
								                        } else {
							 | 
						|
								                            _this.getData()
							 | 
						|
								                            _this.$Notice.success({
							 | 
						|
								                                title: '保存成功',
							 | 
						|
								                                desc: ''
							 | 
						|
								                            })
							 | 
						|
								                        }
							 | 
						|
								                    }, 'json')
							 | 
						|
								            },
							 | 
						|
								            changeHandler: function (value, render) {
							 | 
						|
								                this.currentNote.NoteVal = value
							 | 
						|
								                this.currentNote.NoteHtml = render
							 | 
						|
								                var jsonStr = JSON.stringify(this.currentNote);
							 | 
						|
								                window.localStorage.setItem("note", jsonStr)
							 | 
						|
								            },
							 | 
						|
								            newNoteHandler() {
							 | 
						|
								                this.currentNote = {}
							 | 
						|
								                this.meval = ''
							 | 
						|
								            },
							 | 
						|
								            okHandler() {
							 | 
						|
								                var _this = this
							 | 
						|
								                if (!this.currentNote.Pid) {
							 | 
						|
								                    this.$Notice.warning({
							 | 
						|
								                        title: '请选择文件夹后重新保存',
							 | 
						|
								                        desc: ''
							 | 
						|
								                    })
							 | 
						|
								                    return
							 | 
						|
								                }
							 | 
						|
								                if (!this.currentNote.Title) {
							 | 
						|
								                    this.$Notice.warning({
							 | 
						|
								                        title: '请输入笔记名称后重新保存',
							 | 
						|
								                        desc: ''
							 | 
						|
								                    })
							 | 
						|
								                    return
							 | 
						|
								                }
							 | 
						|
								                $.post('/api/note/save/', {
							 | 
						|
								                        pid: this.currentNote.Pid,
							 | 
						|
								                        title: this.currentNote.Title,
							 | 
						|
								                        noteHtml: this.currentNote.NoteHtml,
							 | 
						|
								                        noteVal: this.currentNote.NoteVal
							 | 
						|
								                    },
							 | 
						|
								                    function (data) {
							 | 
						|
								                        if (data.Status == 500) {
							 | 
						|
								                            _this.$Notice.error({
							 | 
						|
								                                title: '保存失败',
							 | 
						|
								                                desc: ''
							 | 
						|
								                            })
							 | 
						|
								                        } else if (data.Status == 401) {
							 | 
						|
								                            window.location.href = "/login"
							 | 
						|
								                        } else {
							 | 
						|
								                            _this.currentNote.Id = data.Id
							 | 
						|
								                            _this.$Notice.success({
							 | 
						|
								                                title: '保存成功',
							 | 
						|
								                                desc: ''
							 | 
						|
								                            })
							 | 
						|
								                        }
							 | 
						|
								                    }, 'json')
							 | 
						|
								            },
							 | 
						|
								            cancelHandler() {
							 | 
						|
								                this.$Notice.warning({
							 | 
						|
								                    title: '笔记没有被保存!!!',
							 | 
						|
								                    desc: ''
							 | 
						|
								                })
							 | 
						|
								            },
							 | 
						|
								            noteSelectHandler(id) {
							 | 
						|
								                var _this = this
							 | 
						|
								                this.notes.forEach((item) => {
							 | 
						|
								                    item.Notes.forEach((note) => {
							 | 
						|
								                        if (id == note.Id) {
							 | 
						|
								                            _this.currentNote = note
							 | 
						|
								                            _this.meval = note.NoteVal ? note.NoteVal : note.NoteHtml
							 | 
						|
								                        }
							 | 
						|
								                    })
							 | 
						|
								                })
							 | 
						|
								            },
							 | 
						|
								            saveHandler(value, render) {
							 | 
						|
								                this.currentNote.NoteVal = value
							 | 
						|
								                this.currentNote.NoteHtml = render
							 | 
						|
								                if (!this.currentNote.Id) {
							 | 
						|
								                    this.modal1 = true
							 | 
						|
								                } else {
							 | 
						|
								                    this.editHandler(value, render)
							 | 
						|
								                }
							 | 
						|
								            },
							 | 
						|
								            editHandler(value, render) {
							 | 
						|
								                var _this = this
							 | 
						|
								                $.post('/api/note/edit/' + this.currentNote.Id, {
							 | 
						|
								                        noteHtml: render,
							 | 
						|
								                        noteVal: value
							 | 
						|
								                    },
							 | 
						|
								                    function (data) {
							 | 
						|
								                        if (data.Status == 0) {
							 | 
						|
								                            _this.$Notice.success({
							 | 
						|
								                                title: '保存成功',
							 | 
						|
								                                desc: ''
							 | 
						|
								                            })
							 | 
						|
								                        } else if (data.Status == 401) {
							 | 
						|
								                            window.location.href = "/login"
							 | 
						|
								                        } else {
							 | 
						|
								                            _this.$Notice.error({
							 | 
						|
								                                title: '保存失败',
							 | 
						|
								                                desc: ''
							 | 
						|
								                            })
							 | 
						|
								                        }
							 | 
						|
								                    }, 'json')
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								    })
							 | 
						|
								</script>
							 | 
						|
								</html>
							 |