readPage.vue 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <template>
  2. <view v-html="book_title" :style="{
  3. fontSize:`${config.read_config.fontSizeList[read_setting_data.fontSizeIndex]*1.5}px`,
  4. lineHeight:`${config.read_config.lineHeight * config.read_config.fontSizeList[read_setting_data.fontSizeIndex]}px`,
  5. color:`${font_color}`
  6. }"></view>
  7. <view class="inner-box">
  8. <view class="book-inner"
  9. v-html="getText()"
  10. :style="{
  11. fontSize: `${config.read_config.fontSizeList[read_setting_data.fontSizeIndex]}px`,
  12. lineHeight: `${config.read_config.lineHeight * config.read_config.fontSizeList[read_setting_data.fontSizeIndex]}px`,
  13. color:`${font_color}`
  14. }" @touchstart="(event)=>{emits('onTouchstart',event)}"
  15. @touchend="(event)=>{emits('onTouchend',event)}"
  16. @touchmove="(event)=>{emits('onTouchmove',event)}">
  17. </view>
  18. <view style="display: flex;justify-content: space-around;justify-items: center;background-color: aliceblue;margin-bottom: 3%;margin-top: 3%;">
  19. <view @tap="emits('clickPreChapter')">上一章</view>
  20. <view @tap="emits('clickCatalog')">目录</view>
  21. <view @tap="emits('clickNextChapter')">下一章</view>
  22. </view>
  23. </view>
  24. </template>
  25. <script setup lang="ts">
  26. import {defineProps, ref, watch} from 'vue'
  27. import { ReadSetting } from '../../stores/readSetting';
  28. import { config } from '../../config/config';
  29. import { log } from '../../framework/log';
  30. import { tools } from '../../framework/tools';
  31. let lock_content = ref('')
  32. let {text_content,book_title} = defineProps(['text_content','book_title'])
  33. setLockContent()
  34. let emits = defineEmits(['onTouchstart','onTouchend','onTouchmove','clickCatalog','clickPreChapter','clickNextChapter'])
  35. let read_setting_data = ReadSetting().getReadSetting()
  36. let font_color = ref(tools.getFontColorByMode(read_setting_data.readMode))
  37. function showTopLoading(){
  38. }
  39. function showBottomLoading(){
  40. }
  41. watch(async () => ReadSetting().getReadSetting().readMode, // 监听的数据源
  42. (newVal, oldVal) => {
  43. font_color.value = tools.getFontColorByMode(ReadSetting().getReadSetting().readMode)
  44. }
  45. );
  46. function setLockContent(){
  47. let len = text_content.length
  48. let temp_list = text_content.split('<br><br>')
  49. if(temp_list.length>=6){
  50. for(let i=0;i<6;i++){
  51. lock_content.value += (temp_list[i]+"<br><br>"+"<br><br>")
  52. }
  53. }else{
  54. lock_content.value = '请使用书币解锁内容,或者成为vip!'
  55. }
  56. }
  57. function getText(){
  58. return isLock.value?lock_content:text_content
  59. }
  60. let isLock = ref(false)
  61. function LockChapter(){
  62. isLock.value = true
  63. }
  64. function UnLockChapter(){
  65. isLock.value = false
  66. }
  67. defineExpose({ showBottomLoading,showTopLoading ,LockChapter,UnLockChapter });
  68. </script>
  69. <style lang="scss" scoped>
  70. .inner-box {
  71. flex: 1 1 auto;
  72. overflow: hidden;
  73. .book-inner {
  74. text-indent: 2em;
  75. text-align: justify;
  76. }
  77. padding: 5%;
  78. }
  79. </style>