国际化配置更新

阅读论文增加搜索关键词
master
pan 4 years ago
parent a0e7bdd8b9
commit 0266d27d95
  1. 44
      nuxt.config.js
  2. 4
      pages/index/document.vue
  3. 18
      pages/index/note.vue
  4. 269
      pages/index/read.vue
  5. 3
      static/next.svg
  6. 3
      static/prev.svg

@ -171,8 +171,7 @@ export default {
"more_query": "更多查询",
"note": {
"table": {
"note_content": "笔记内容",
"note_name": "笔记名称",
"original_text": "注释原文",
"paper_name": "论文标题"
},
"tip": {
@ -181,21 +180,28 @@ export default {
},
"read": {
"contextmenu": {
"add": "添加笔记"
"add": "添加笔记",
"search": "查找"
},
"form": {
"keyword": "关键字",
"note_content": "笔记内容",
"note_title": "笔记标题"
},
"tip": {
"add_tip": "是否添加该笔记?",
"add_tip_fail": "笔记添加失败",
"add_tip_ok": "笔记添加成功",
"auto_save": "失去焦点自动保存",
"click_note_list": "选中内容定位笔记",
"contextmenu_err": "请选中文本进行操作",
"del_confirm": "确认删除此笔记?",
"form": {
"note_content": "笔记内容",
"note_title": "笔记标题"
},
"rating_1": "本文对您的科研工作是否有帮助",
"rating_2": "本文的内容是否科学严谨",
"rating_3": "您对本文的推荐程度"
"rating_3": "您对本文的推荐程度",
"search_next": "查找下一个",
"search_prev": "查找上一个",
"search_zero": "正文中没有 ‘{keyword}’"
}
},
"reading_online": "在线阅读",
@ -309,8 +315,7 @@ export default {
"more_query": "",
"note": {
"table": {
"note_content": "",
"note_name": "",
"original_text": "",
"paper_name": ""
},
"tip": {
@ -319,21 +324,28 @@ export default {
},
"read": {
"contextmenu": {
"add": ""
"add": "",
"search": ""
},
"form": {
"keyword": "",
"note_content": "",
"note_title": ""
},
"tip": {
"add_tip": "",
"add_tip_fail": "",
"add_tip_ok": "",
"auto_save": "",
"click_note_list": "",
"contextmenu_err": "",
"del_confirm": "",
"form": {
"note_content": "",
"note_title": ""
},
"rating_1": "",
"rating_2": "",
"rating_3": ""
"rating_3": "",
"search_next": "",
"search_prev": "",
"search_zero": ""
}
},
"reading_online": "",

@ -132,7 +132,7 @@
year:2011,
summary:'摘要:传统的中国山水画建立在自然形象及其对人对自然升华的基础上。在哲学意义上,它的语言和精神性依赖于一个自然体系。而当下中国艺术的现代性转变也是一个如何超越自然体系的问题。现代性面对的社会和空间是工业社会和城市。',
tags:['山水画','空间经验','构成主义'],
content:`<pre>在这种困难的抉择下,本人思来想去,寝食难安。 带着这些问题,我们来审视一下。 ,发生了会如何,不发生又会如何。 一般来说, 康德曾经说过,既然我已经踏上这条道路,那么,任何东西都不应妨碍我沿着这条路走下去。这似乎解答了我的疑惑。 一般来讲,我们都必须务必慎重的考虑考虑。 我们都知道,只要有意义,那么就必须慎重考虑。 那么, 对我个人而言,不仅仅是一个重大的事件,还可能会改变我的人生。 的发生,到底需要如何做到,不的发生,又会如何产生。 因何而发生? 问题的关键究竟为何? 对我个人而言,不仅仅是一个重大的事件,还可能会改变我的人生。 既然如此, 可是,即使是这样,的出现仍然代表了一定的意义。
content:`在这种困难的抉择下,本人思来想去,寝食难安。 带着这些问题,我们来审视一下。 ,发生了会如何,不发生又会如何。 一般来说, 康德曾经说过,既然我已经踏上这条道路,那么,任何东西都不应妨碍我沿着这条路走下去。这似乎解答了我的疑惑。 一般来讲,我们都必须务必慎重的考虑考虑。 我们都知道,只要有意义,那么就必须慎重考虑。 那么, 对我个人而言,不仅仅是一个重大的事件,还可能会改变我的人生。 的发生,到底需要如何做到,不的发生,又会如何产生。 因何而发生? 问题的关键究竟为何? 对我个人而言,不仅仅是一个重大的事件,还可能会改变我的人生。 既然如此, 可是,即使是这样,的出现仍然代表了一定的意义。
  我们都知道只要有意义那么就必须慎重考虑 卡莱尔曾经说过过去一切时代的精华尽在书中这似乎解答了我的疑惑 问题的关键究竟为何 所谓关键是需要如何写 我们一般认为抓住了问题的关键其他一切则会迎刃而解 既然如此 本人也是经过了深思熟虑在每个日日夜夜思考这个问题 每个人都不得不面对这些问题 在面对这种问题时 带着这些问题我们来审视一下 所谓关键是需要如何写 在这种困难的抉择下本人思来想去寝食难安 就我个人来说对我的意义不能不说非常重大 既然如此 苏轼在不经意间这样说过古之立大事者不惟有超世之才亦必有坚忍不拔之志带着这句话我们还要更加慎重的审视这个问题 发生了会如何不发生又会如何 从这个角度来看 我们一般认为抓住了问题的关键其他一切则会迎刃而解 我们不得不面对一个非常尴尬的事实那就是 老子说过一句富有哲理的话知人者智自知者明胜人者有力自胜者强我希望诸位也能好好地体会这句话 在这种困难的抉择下本人思来想去寝食难安 罗曼·罗兰曾经说过只有把抱怨环境的心情化为上进的力量才是成功的保证这启发了我 生活中若出现了我们就不得不考虑它出现了的事实 因何而发生 因何而发生 一般来说 一般来说 总结的来说 塞涅卡说过一句富有哲理的话生命如同寓言其价值不在与长短而在与内容这启发了我 发生了会如何不发生又会如何 经过上述讨论 经过上述讨论 本人也是经过了深思熟虑在每个日日夜夜思考这个问题 带着这些问题我们来审视一下 这种事实对本人来说意义重大相信对这个世界也是有一定意义的 每个人都不得不面对这些问题 在面对这种问题时 既然如此 可是即使是这样的出现仍然代表了一定的意义 康德在不经意间这样说过既然我已经踏上这条道路那么任何东西都不应妨碍我沿着这条路走下去带着这句话我们还要更加慎重的审视这个问题 要想清楚到底是一种怎么样的存在 我们一般认为抓住了问题的关键其他一切则会迎刃而解 到底应该如何实现 既然如何 我们都知道只要有意义那么就必须慎重考虑
  博说过一句富有哲理的话一次失败只是证明我们成功的决心还够坚强 维我希望诸位也能好好地体会这句话 要想清楚到底是一种怎么样的存在 生活中若出现了我们就不得不考虑它出现了的事实 可是即使是这样的出现仍然代表了一定的意义 这样看来 因何而发生 的发生到底需要如何做到不的发生又会如何产生 可是即使是这样的出现仍然代表了一定的意义 生活中若出现了我们就不得不考虑它出现了的事实 就我个人来说对我的意义不能不说非常重大 对我个人而言不仅仅是一个重大的事件还可能会改变我的人生 既然如此 我认为 总结的来说 本人也是经过了深思熟虑在每个日日夜夜思考这个问题 所谓关键是需要如何写 生活中若出现了我们就不得不考虑它出现了的事实 因何而发生 的发生到底需要如何做到不的发生又会如何产生 老子说过一句富有哲理的话知人者智自知者明胜人者有力自胜者强这不禁令我深思 一般来说 维龙曾经说过要成功不需要什么特别的才能只要把你能做的小事做得好就行了这启发了我 可是即使是这样的出现仍然代表了一定的意义 那么 日本谚语在不经意间这样说过不幸可能成为通向幸福的桥梁我希望诸位也能好好地体会这句话 对我个人而言不仅仅是一个重大的事件还可能会改变我的人生 带着这些问题我们来审视一下 从这个角度来看 康德曾经提到过既然我已经踏上这条道路那么任何东西都不应妨碍我沿着这条路走下去带着这句话我们还要更加慎重的审视这个问题 赫尔普斯曾经说过有时候读书是一种巧妙地避开思考的方法这句话语虽然很短但令我浮想联翩 对我个人而言不仅仅是一个重大的事件还可能会改变我的人生
  布尔沃说过一句富有哲理的话要掌握书莫被书掌握要为生而读莫为读而生带着这句话我们还要更加慎重的审视这个问题 歌德曾经提到过意志坚强的人能把世界放在手中像泥块一样任意揉捏这不禁令我深思 就我个人来说对我的意义不能不说非常重大 我们一般认为抓住了问题的关键其他一切则会迎刃而解 对我个人而言不仅仅是一个重大的事件还可能会改变我的人生 既然如此 发生了会如何不发生又会如何 就我个人来说对我的意义不能不说非常重大 一般来说 我认为
@ -146,7 +146,7 @@
  带着这些问题我们来审视一下 阿卜··法拉兹在不经意间这样说过学问是异常珍贵的东西从任何源泉吸收都不可耻这启发了我 那么 我们都知道只要有意义那么就必须慎重考虑 了解清楚到底是一种怎么样的存在是解决一切问题的关键 培根说过一句富有哲理的话要知道对好事的称颂过于夸大也会招来人们的反感轻蔑和嫉妒这启发了我 从这个角度来看 到底应该如何实现 对我个人而言不仅仅是一个重大的事件还可能会改变我的人生 对我个人而言不仅仅是一个重大的事件还可能会改变我的人生 总结的来说 我认为 现在解决的问题是非常非常重要的 所以 这种事实对本人来说意义重大相信对这个世界也是有一定意义的 一般来说 每个人都不得不面对这些问题 在面对这种问题时 史美尔斯曾经提到过书籍把我们引入最美好的社会使我们认识各个时代的伟大智者这启发了我
  俾斯麦曾经提到过失败是坚忍的最后考验这启发了我 问题的关键究竟为何 文森特·皮尔说过一句富有哲理的话改变你的想法你就改变了自己的世界这句话语虽然很短但令我浮想联翩 一般来说 那么 歌德在不经意间这样说过决定一个人的一生以及整个命运的只是一瞬之间这启发了我 经过上述讨论 爱迪生说过一句富有哲理的话失败也是我需要的它和成功对我一样有价值这句话语虽然很短但令我浮想联翩 总结的来说 因何而发生 到底应该如何实现 我认为 这种事实对本人来说意义重大相信对这个世界也是有一定意义的 黑塞在不经意间这样说过有勇气承担命运这才是英雄好汉我希望诸位也能好好地体会这句话 对我个人而言不仅仅是一个重大的事件还可能会改变我的人生 一般来讲我们都必须务必慎重的考虑考虑 了解清楚到底是一种怎么样的存在是解决一切问题的关键 发生了会如何不发生又会如何 日本谚语说过一句富有哲理的话不幸可能成为通向幸福的桥梁这启发了我 所谓关键是需要如何写 要想清楚到底是一种怎么样的存在 塞涅卡曾经说过生命如同寓言其价值不在与长短而在与内容这不禁令我深思 到底应该如何实现 在这种困难的抉择下本人思来想去寝食难安 问题的关键究竟为何 而这些并不是完全重要更加重要的问题是 生活中若出现了我们就不得不考虑它出现了的事实 我们一般认为抓住了问题的关键其他一切则会迎刃而解 我们不得不面对一个非常尴尬的事实那就是 现在解决的问题是非常非常重要的 所以 查尔斯·史考伯曾经说过一个人几乎可以在任何他怀有无限热忱的事情上成功 这句话语虽然很短但令我浮想联翩 我认为 歌德在不经意间这样说过没有人事先了解自己到底有多大的力量直到他试过以后才知道我希望诸位也能好好地体会这句话 到底应该如何实现 对我个人而言不仅仅是一个重大的事件还可能会改变我的人生 我们一般认为抓住了问题的关键其他一切则会迎刃而解 卢梭曾经提到过浪费时间是一桩大罪过这不禁令我深思 所谓关键是需要如何写 要想清楚到底是一种怎么样的存在 既然如此 既然如此 我们不得不面对一个非常尴尬的事实那就是 那么 本人也是经过了深思熟虑在每个日日夜夜思考这个问题 西班牙说过一句富有哲理的话自知之明是最难得的知识这句话语虽然很短但令我浮想联翩 现在解决的问题是非常非常重要的 所以 现在解决的问题是非常非常重要的 所以 总结的来说 从这个角度来看 卡耐基曾经提到过一个不注意小事情的人永远不会成就大事业这句话语虽然很短但令我浮想联翩 可是即使是这样的出现仍然代表了一定的意义
  文森特·皮尔说过一句富有哲理的话改变你的想法你就改变了自己的世界带着这句话我们还要更加慎重的审视这个问题 吕凯特曾经提到过生命不可能有两次但许多人连一次也不善于度过这不禁令我深思 我们一般认为抓住了问题的关键其他一切则会迎刃而解 我们都知道只要有意义那么就必须慎重考虑 苏轼在不经意间这样说过古之立大事者不惟有超世之才亦必有坚忍不拔之志这不禁令我深思 我们一般认为抓住了问题的关键其他一切则会迎刃而解 所谓关键是需要如何写 一般来说 带着这些问题我们来审视一下 我们都知道只要有意义那么就必须慎重考虑 要想清楚到底是一种怎么样的存在 一般来讲我们都必须务必慎重的考虑考虑 生活中若出现了我们就不得不考虑它出现了的事实 佚名曾经说过感激每一个新的挑战因为它会锻造你的意志和品格这似乎解答了我的疑惑 白哲特在不经意间这样说过坚强的信念能赢得强者的心并使他们变得更坚强 这句话语虽然很短但令我浮想联翩 一般来说 我们一般认为抓住了问题的关键其他一切则会迎刃而解 可是即使是这样的出现仍然代表了一定的意义 要想清楚到底是一种怎么样的存在 既然如何 每个人都不得不面对这些问题 在面对这种问题时 我们一般认为抓住了问题的关键其他一切则会迎刃而解 要想清楚到底是一种怎么样的存在 卡莱尔曾经说过过去一切时代的精华尽在书中我希望诸位也能好好地体会这句话 伏尔泰曾经说过坚持意志伟大的事业需要始终不渝的精神这启发了我 发生了会如何不发生又会如何 了解清楚到底是一种怎么样的存在是解决一切问题的关键 每个人都不得不面对这些问题 在面对这种问题时 经过上述讨论 莎士比亚曾经提到过人的一生是短的但如果卑劣地过这一生就太长了我希望诸位也能好好地体会这句话 我们不得不面对一个非常尴尬的事实那就是
  要想清楚到底是一种怎么样的存在 在这种困难的抉择下本人思来想去寝食难安 所谓关键是需要如何写 带着这些问题我们来审视一下 总结的来说 总结的来说 我认为 了解清楚到底是一种怎么样的存在是解决一切问题的关键 贝多芬说过一句富有哲理的话卓越的人一大优点是在不利与艰难的遭遇里百折不饶我希望诸位也能好好地体会这句话 我们不得不面对一个非常尴尬的事实那就是 对我个人而言不仅仅是一个重大的事件还可能会改变我的人生 马尔顿曾经提到过坚强的信心能使平凡的人做出惊人的事业我希望诸位也能好好地体会这句话 爱迪生说过一句富有哲理的话失败也是我需要的它和成功对我一样有价值这不禁令我深思 这种事实对本人来说意义重大相信对这个世界也是有一定意义的 对我个人而言不仅仅是一个重大的事件还可能会改变我的人生 带着这些问题我们来审视一下 那么 雷锋在不经意间这样说过自己活着就是为了使别人过得更美好这启发了我 莎士比亚曾经提到过人的一生是短的但如果卑劣地过这一生就太长了我希望诸位也能好好地体会这句话 黑格尔说过一句富有哲理的话只有永远躺在泥坑里的人才不会再掉进坑里这句话语虽然很短但令我浮想联翩 因何而发生 要想清楚到底是一种怎么样的存在 在这种困难的抉择下本人思来想去寝食难安 问题的关键究竟为何 生活中若出现了我们就不得不考虑它出现了的事实 每个人都不得不面对这些问题 在面对这种问题时 就我个人来说对我的意义不能不说非常重大 发生了会如何不发生又会如何 的发生到底需要如何做到不的发生又会如何产生 这种事实对本人来说意义重大相信对这个世界也是有一定意义的 对我个人而言不仅仅是一个重大的事件还可能会改变我的人生 我们都知道只要有意义那么就必须慎重考虑 从这个角度来看 马克思在不经意间这样说过一切节省归根到底都归结为时间的节省带着这句话我们还要更加慎重的审视这个问题 一般来说 要想清楚到底是一种怎么样的存在 笛卡儿曾经提到过读一切好书就是和许多高尚的人谈话这不禁令我深思 既然如何 就我个人来说对我的意义不能不说非常重大 我认为 我们不得不面对一个非常尴尬的事实那就是 要想清楚到底是一种怎么样的存在 那么 要想清楚到底是一种怎么样的存在 佚名曾经说过感激每一个新的挑战因为它会锻造你的意志和品格我希望诸位也能好好地体会这句话 我们一般认为抓住了问题的关键其他一切则会迎刃而解 我们一般认为抓住了问题的关键其他一切则会迎刃而解 而这些并不是完全重要更加重要的问题是 对我个人而言不仅仅是一个重大的事件还可能会改变我的人生 屠格涅夫曾经提到过你想成为幸福的人吗但愿你首先学会吃得起苦这似乎解答了我的疑惑 生活中若出现了我们就不得不考虑它出现了的事实 既然如何 冯学峰说过一句富有哲理的话当一个人用工作去迎接光明光明很快就会来照耀着他这不禁令我深思 鲁巴金曾经提到过读书是在别人思想的帮助下建立起自己的思想这似乎解答了我的疑惑 我们不得不面对一个非常尴尬的事实那就是 一般来说 孔子曾经提到过知之者不如好之者好之者不如乐之者这句话语虽然很短但令我浮想联翩</pre>`
  要想清楚到底是一种怎么样的存在 在这种困难的抉择下本人思来想去寝食难安 所谓关键是需要如何写 带着这些问题我们来审视一下 总结的来说 总结的来说 我认为 了解清楚到底是一种怎么样的存在是解决一切问题的关键 贝多芬说过一句富有哲理的话卓越的人一大优点是在不利与艰难的遭遇里百折不饶我希望诸位也能好好地体会这句话 我们不得不面对一个非常尴尬的事实那就是 对我个人而言不仅仅是一个重大的事件还可能会改变我的人生 马尔顿曾经提到过坚强的信心能使平凡的人做出惊人的事业我希望诸位也能好好地体会这句话 爱迪生说过一句富有哲理的话失败也是我需要的它和成功对我一样有价值这不禁令我深思 这种事实对本人来说意义重大相信对这个世界也是有一定意义的 对我个人而言不仅仅是一个重大的事件还可能会改变我的人生 带着这些问题我们来审视一下 那么 雷锋在不经意间这样说过自己活着就是为了使别人过得更美好这启发了我 莎士比亚曾经提到过人的一生是短的但如果卑劣地过这一生就太长了我希望诸位也能好好地体会这句话 黑格尔说过一句富有哲理的话只有永远躺在泥坑里的人才不会再掉进坑里这句话语虽然很短但令我浮想联翩 因何而发生 要想清楚到底是一种怎么样的存在 在这种困难的抉择下本人思来想去寝食难安 问题的关键究竟为何 生活中若出现了我们就不得不考虑它出现了的事实 每个人都不得不面对这些问题 在面对这种问题时 就我个人来说对我的意义不能不说非常重大 发生了会如何不发生又会如何 的发生到底需要如何做到不的发生又会如何产生 这种事实对本人来说意义重大相信对这个世界也是有一定意义的 对我个人而言不仅仅是一个重大的事件还可能会改变我的人生 我们都知道只要有意义那么就必须慎重考虑 从这个角度来看 马克思在不经意间这样说过一切节省归根到底都归结为时间的节省带着这句话我们还要更加慎重的审视这个问题 一般来说 要想清楚到底是一种怎么样的存在 笛卡儿曾经提到过读一切好书就是和许多高尚的人谈话这不禁令我深思 既然如何 就我个人来说对我的意义不能不说非常重大 我认为 我们不得不面对一个非常尴尬的事实那就是 要想清楚到底是一种怎么样的存在 那么 要想清楚到底是一种怎么样的存在 佚名曾经说过感激每一个新的挑战因为它会锻造你的意志和品格我希望诸位也能好好地体会这句话 我们一般认为抓住了问题的关键其他一切则会迎刃而解 我们一般认为抓住了问题的关键其他一切则会迎刃而解 而这些并不是完全重要更加重要的问题是 对我个人而言不仅仅是一个重大的事件还可能会改变我的人生 屠格涅夫曾经提到过你想成为幸福的人吗但愿你首先学会吃得起苦这似乎解答了我的疑惑 生活中若出现了我们就不得不考虑它出现了的事实 既然如何 冯学峰说过一句富有哲理的话当一个人用工作去迎接光明光明很快就会来照耀着他这不禁令我深思 鲁巴金曾经提到过读书是在别人思想的帮助下建立起自己的思想这似乎解答了我的疑惑 我们不得不面对一个非常尴尬的事实那就是 一般来说 孔子曾经提到过知之者不如好之者好之者不如乐之者这句话语虽然很短但令我浮想联翩`
})
this.recommend_list.push({
title:'玩具产品的情感设计研究',

@ -3,11 +3,11 @@
<el-row type="flex" justify="center">
<el-col :span="5">
<el-form ref="form" :model="form" label-width="80px">
<el-form-item :label="$t('read.tip.form.note_title')" prop="note_title">
<el-input v-model="form.note_title" :placeholder="$t('input_please', { keyword: this.$t('read.tip.form.note_title') })"></el-input>
<el-form-item :label="$t('read.form.note_title')" prop="note_title">
<el-input v-model="form.note_title" :placeholder="$t('input_please', { keyword: this.$t('read.form.note_title') })"></el-input>
</el-form-item>
<el-form-item :label="$t('read.tip.form.note_content')" prop="note_content">
<el-input type="textarea" v-model="form.note_content" :placeholder="$t('input_please', { keyword: this.$t('read.tip.form.note_content') })"></el-input>
<el-form-item :label="$t('read.form.note_content')" prop="note_content">
<el-input type="textarea" v-model="form.note_content" :placeholder="$t('input_please', { keyword: this.$t('read.form.note_content') })"></el-input>
</el-form-item>
<el-form-item class="center">
<el-button>{{$t('button.query')}}</el-button>
@ -16,9 +16,10 @@
</el-col>
</el-row>
<el-table :data="tableData" border>
<el-table-column align="center" prop="note_name" :label="$t('note.table.note_name')" />
<el-table-column align="center" prop="note_content" :label="$t('note.table.note_content')" />
<el-table-column align="center" prop="paper_name" :label="$t('note.table.paper_name')" />
<el-table-column align="center" prop="original_text" :label="$t('note.table.original_text')" />
<el-table-column align="center" prop="note_name" :label="$t('read.form.note_title')" />
<el-table-column align="center" prop="note_content" :label="$t('read.form.note_content')" />
<el-table-column align="center" :label="$t('action')" >
<template slot-scope="scope" >
<el-button>{{$t('button.edit')}}</el-button>
@ -45,6 +46,7 @@
return {
tableData:[{
note_name:'笔记',
original_text:'注释原文',
note_content:'笔记内容',
paper_name: '《论文》'
}],
@ -55,12 +57,12 @@
rules:{
note_title:[{
required: true,
message: this.$t('input_please', { keyword: this.$t('read.tip.form.note_title') }),
message: this.$t('input_please', { keyword: this.$t('read.form.note_title') }),
trigger: 'blur'
}],
note_content:[{
required: true,
message: this.$t('input_please', { keyword: this.$t('read.tip.form.note_content') }),
message: this.$t('input_please', { keyword: this.$t('read.form.note_content') }),
trigger: 'blur'
}]
}

@ -1,17 +1,21 @@
<template>
<div>
<v-contextmenu ref="contextmenu" :disabled="disabled">
<v-contextmenu-item>
<div >
<v-contextmenu ref="contextmenu">
<v-contextmenu-item v-if="!disabled">
<el-popover
v-model="visible"
trigger="click"
@hide="resetNote"
>
<el-form ref="form" :model="note_form" :rules="rules" label-width="80px">
<el-form-item :label="$t('read.tip.form.note_title')" prop="note_title">
<el-input v-model="note_form.note_title" :placeholder="$t('input_please', { keyword: this.$t('read.tip.form.note_title') })"></el-input>
<el-form-item :label="$t('note.table.original_text')" >
<el-input autosize type="textarea" v-model="note_form.original_text" disabled></el-input>
</el-form-item>
<el-form-item :label="$t('read.tip.form.note_content')" prop="note_content">
<el-input type="textarea" v-model="note_form.note_content" :placeholder="$t('input_please', { keyword: this.$t('read.tip.form.note_content') })"></el-input>
<el-form-item :label="$t('read.form.note_title')" prop="note_title">
<el-input v-model="note_form.note_title" :placeholder="$t('input_please', { keyword: this.$t('read.form.note_title') })"></el-input>
</el-form-item>
<el-form-item :label="$t('read.form.note_content')" prop="note_content">
<el-input autosize type="textarea" v-model="note_form.note_content" :placeholder="$t('input_please', { keyword: this.$t('read.form.note_content') })"></el-input>
</el-form-item>
<el-form-item>
<el-button @click="addNote">{{$t('button.add')}}</el-button>
@ -21,13 +25,33 @@
<el-button slot="reference">{{$t('read.contextmenu.add')}}</el-button>
</el-popover>
</v-contextmenu-item>
<v-contextmenu-item><el-button @click="showSearch=true;queryContent()" class="w-100">{{$t('read.contextmenu.search')}}</el-button></v-contextmenu-item>
</v-contextmenu>
<el-tabs v-model="activeName" type="card" closable @tab-remove="removeTab">
<el-tab-pane :label="key" :name="key" v-for="(item,key) in openList" :key="key">
<el-row>
<el-col :span="18">
<div class="content" v-contextmenu:contextmenu :ref="'edit'+item.title" @mouseup="show"
@contextmenu="selectText" v-html="item.content"/>
<el-form :inline="true" v-if="showSearch">
<el-form-item :label="$t('read.form.keyword')">
<el-input @input="queryContent" :placeholder="$t('input_please',{keyword:$t('read.form.keyword')})" v-model="search_form.keyword"
maxlength="10"
show-word-limit>
<i slot="prefix" class="el-input__icon el-icon-search"></i>
</el-input>
</el-form-item>
<template v-if="num>0">
<el-form-item>{{search_index+1+'/'+num}}</el-form-item>
<el-tooltip :content="$t('read.tip.search_prev')">
<el-image src="/prev.svg" class="img" @click="search_index>0?search_index--:search_index=num-1;change_search_index()"></el-image>
</el-tooltip>
<el-tooltip :content="$t('read.tip.search_next')">
<el-image src="/next.svg" class="img" @click="search_index<num-1?search_index++:search_index=0;change_search_index()"></el-image>
</el-tooltip>
</template>
</el-form>
<pre class="content" v-contextmenu:contextmenu :ref="'edit'+item.title" @mouseup="show"
@contextmenu="selectText" v-html="item.content"
/>
</el-col>
<el-col :span="5" class="ml3 note-list">
<el-row v-for="(item,index) in noteList" :key="index" class="mb2">
@ -50,10 +74,10 @@
@mouseout="reset(item)">
<transition v-if="item.isEdit" @after-leave="save(item)">
<el-tooltip class="item" effect="dark" :content="$t('read.tip.auto_save')" v-model="item.isEdit">
<el-input type="textarea" v-model="item.content"></el-input>
<el-input autosize type="textarea" v-model="item.content"></el-input>
</el-tooltip>
</transition>
<template v-else>{{item.content}}</template>
<template v-else><pre style="background-color: white">{{item.content}}</pre></template>
</div>
</el-card>
<el-alert v-if="item.message"
@ -97,22 +121,34 @@
name: 'read',
data() {
return {
//
showSearch:false,
//
visible: false,
//
search_form:{
keyword:''
},
//
num:0,
//
search_index:-1,
//
note_form:{
note_title:'',
note_content:''
note_content:'',
original_text:''
},
//
rules:{
note_title:[{
required: true,
message: this.$t('input_please', { keyword: this.$t('read.tip.form.note_title') }),
message: this.$t('input_please', { keyword: this.$t('read.form.note_title') }),
trigger: 'blur'
}],
note_content:[{
required: true,
message: this.$t('input_please', { keyword: this.$t('read.tip.form.note_content') }),
message: this.$t('input_please', { keyword: this.$t('read.form.note_content') }),
trigger: 'blur'
}]
},
@ -123,7 +159,7 @@
//
disabled: true,
//
replace: [],
replace: {},
stars: [{ value: 0 }, { value: 0 }, { value: 0 }],
show_star_button: true
}
@ -138,10 +174,111 @@
//
activeName(newVal) {
this.$store.commit('read/choose', newVal)
},
showSearch(newVal){
if(!newVal){
let pre:HTMLElement=this.$refs['edit'+this.$store.state.read.activeName][0]
this.search_form.keyword=''
this.resetQuery(pre)
}
}
},
methods: {
//
change_search_index(){
let ele=document.getElementsByClassName('search-light')[this.search_index]
ele.classList.add('choose-search-text')
ele.scrollIntoView({
block: 'center'
})
for(let index=0;index<this.num;index++){
if(index!==this.search_index){
document.getElementsByClassName('search-light')[index].classList.remove('choose-search-text')
}
}
},
//
resetQuery(pre:HTMLElement){
for(let span of pre.querySelectorAll('span[class^=search-light]')){
let text=document.createTextNode(span.innerText)
span.replaceWith(text)
}
pre.normalize()
this.num=0
this.search_index=-1
},
//
queryContent(){
let pre:HTMLElement=this.$refs['edit'+this.$store.state.read.activeName][0]
this.resetQuery(pre)
if(this.search_form.keyword.length===0){
let selection=getSelection()
if(selection&&selection.toString().length>0){
this.search_form.keyword=selection.toString()
}else{
return
}
}
let replaceObj=[]
for(let node of pre.childNodes) {
let content=node.nodeType===3?node.data:node.innerText
let matchAll = content.matchAll(new RegExp(this.search_form.keyword, 'g'))
let replaceNodes=[]
if(node.nodeType===1&&node.innerText.length===this.search_form.keyword.length) {
node.classList.add('search-light')
}else{
let length = 0
let prev
for (let match of matchAll) {
this.num+=1
let start = document.createTextNode(content.substr(prev ? prev : 0, match.index - length))
let span = document.createElement('span')
span.classList.add('search-light')
span.innerText = this.search_form.keyword
prev = match.index + this.search_form.keyword.length
replaceNodes.push(start, span)
length += start.data.length + this.search_form.keyword.length
}
if(length>0){
replaceNodes.push(document.createTextNode(content.substr(prev)))
replaceObj.push({
source: node,
target: replaceNodes
})
}
}
}
for(let item of replaceObj){
let node=item.source
let replaceNodes=item.target
if(replaceNodes.length>0) {
if(node.nodeType===3) {
node.replaceWith(replaceNodes[0])
for (let index = 1; index < replaceNodes.length; index++) {
replaceNodes[index - 1].after(replaceNodes[index])
}
}else{
node.innerHTML=''
for(let child of replaceNodes){
node.appendChild(child)
}
}
}
}
if(this.num>0) {
this.search_index=0
this.change_search_index()
}else{
this.$message.warning({
message: this.$t('read.tip.search_zero',{keyword:this.search_form.keyword}).toString(),
showClose: true,
duration: 2000
})
}
},
//
edit(item: any) {
if ('isEdit' in item) {
@ -205,31 +342,47 @@
}
this.activeName = this.$store.state.read.activeName
},
resetNote(){
this.replace = {}
this.note_form.note_title=''
this.note_form.note_content=''
this.note_form.original_text=''
},
//
addNote() {
let that=this
this.$refs.form.validate((valid: boolean)=>{
if (valid) {
for (let index in this.replace) {
if (this.replace[index].val && this.replace[index].replaceVal) {
this.replace[index].val.replaceWith(this.replace[index].replaceVal)
if (valid&&Object.keys(that.replace.replaceVal).length>0) {
let id=new Date().getTime()
let c=document.createElement('span')
c.setAttribute('id',id.toString())
that.replace.val.replaceWith(that.replace.replaceVal[0])
for (let index =1;index<that.replace.replaceVal.length;index++) {
that.replace.replaceVal[index-1].after(that.replace.replaceVal[index])
}
}
this.noteList.unshift({
that.noteList.unshift({
id: `fuck${(Math.random()*10).toFixed()}`,
title: this.note_form.note_title,
content: this.note_form.note_content
})
this.replace = []
this.visible=false
this.note_form.note_title=''
this.note_form.note_content=''
that.$message.info({
message: this.$t('read.tip.add_tip_ok').toString(),
showClose: true,
duration: 1000
})
} else {
that.$message.error({
message: this.$t('read.tip.add_tip_fail').toString(),
showClose: true,
duration: 1000
})
return false;
}
this.visible=false
})
},
//
//
selectText() {
let selection = getSelection()
console.info(selection)
@ -244,35 +397,28 @@
if (range.endOffset - range.startOffset === anchorNode.length) {
console.info(tip + '全选')
bold.innerText = anchorNode.wholeText
this.replace.push({
this.replace={
val: anchorNode,
replaceVal: bold
})
replaceVal: [bold]
}
} else {
console.info(tip + '选中一部分')
let start = document.createTextNode(anchorNode.substringData(0, range.startOffset))
let end = document.createTextNode(anchorNode.substringData(range.endOffset, anchorNode.length))
let span = document.createElement('span')
bold.innerText = anchorNode.substringData(range.startOffset, range.endOffset - range.startOffset)
span.append(start, bold, end)
this.replace.push({
this.replace={
val: anchorNode,
replaceVal: span
})
replaceVal: [start,bold,end]
}
}
this.note_form.original_text=bold.innerText
} else {
let tip = '跨节点'
let startNode = range.startContainer
let endNode = range.endContainer
console.info()
}
} else {
this.$message.error({
message: this.$t('read.tip.contextmenu_err').toString(),
showClose: true,
duration: 1000
})
console.error('无法获取选中文本')
}
}
},
@ -285,6 +431,18 @@
content: `内容${n}`
})
}
let that=this
addEventListener('keyup',function(event) {
//
if(event.shiftKey&&'F'===event.key.toUpperCase()){
event.preventDefault();
that.showSearch=!that.showSearch
}else if('ESCAPE'===event.key.toUpperCase()){
that.showSearch=false
}
},true)
}
})
</script>
@ -294,6 +452,19 @@
font-size: larger;
}
.search-light{
color:blue;
}
.choose-search-text {
animation: changeshadow 1s ease-in infinite ;
}
@keyframes changeshadow {
0%{ text-shadow: 0 0 4px blue}
50%{ text-shadow: 0 0 40px blue}
100%{ text-shadow: 0 0 4px blue}
}
.choose-note {
cursor: pointer;
}
@ -337,4 +508,20 @@
.star-icon i {
font-size: 30px;
}
.w-100 {
width: 100%;
}
.el-input.el-input--prefix>input[type='text'] {
height: 40px;
}
.img{
height: 30px;
width: 30px;
vertical-align: text-top;
}
</style>

@ -0,0 +1,3 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg t="1595888414366" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1989"
width="200" height="200"><defs><style type="text/css"></style></defs><path d="M246.121279 955.6957l438.050717-438.050717c2.822492-2.822492 2.822492-7.902977 0-11.289967L244.992282 67.175303c-6.77398-6.77398-10.725469-16.370452-10.725469-25.966924L234.266814 36.692393C234.266814 16.370452 250.637266 0 270.959206 0l4.515987 0c9.596472 0 19.192944 3.951488 25.966924 10.725469l478.694598 478.694598c12.418964 12.418964 12.418964 32.740904 0 45.159868l-477.565601 477.565601c-7.338479 7.338479-17.499449 11.854465-28.224917 11.854465l0 0c-22.015436 0-40.079383-18.063947-40.079383-40.079383l0 0C234.266814 973.759647 238.7828 963.598677 246.121279 955.6957z" p-id="1990"></path></svg>

After

Width:  |  Height:  |  Size: 945 B

@ -0,0 +1,3 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg t="1595888393989" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1851"
width="200" height="200"><defs><style type="text/css"></style></defs><path d="M784.652701 955.6957 346.601985 517.644983c-2.822492-2.822492-2.822492-7.902977 0-11.289967l439.179713-439.179713c6.77398-6.77398 10.725469-16.370452 10.725469-25.966924L796.507166 36.692393c0-20.32194-16.370452-36.692393-36.692393-36.692393l-4.515987 0c-9.596472 0-19.192944 3.951488-25.966924 10.725469L250.072767 489.420066c-12.418964 12.418964-12.418964 32.740904 0 45.159868l477.565601 477.565601c7.338479 7.338479 17.499449 11.854465 28.224917 11.854465l0 0c22.015436 0 40.079383-18.063947 40.079383-40.079383l0 0C796.507166 973.759647 791.99118 963.598677 784.652701 955.6957z" p-id="1852"></path></svg>

After

Width:  |  Height:  |  Size: 951 B

Loading…
Cancel
Save