index.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <template>
  2. <view class="page_container">
  3. <custom-nav-bar title="字体大小">
  4. <view class="nav_right_action" slot="more">
  5. <text @click="finishEdit">确定</text>
  6. </view>
  7. </custom-nav-bar>
  8. <view class="preview_container" :style="{ fontSize: sliderValueMaping }">
  9. <message-item-render
  10. v-for="(message, idx) in preveiwList"
  11. :key="idx"
  12. :source="message"
  13. :isSender="message.isSender"
  14. isPreview
  15. />
  16. </view>
  17. <view class="slider_container">
  18. <font-size-slider v-model="sliderValue" step="25" block-width="40" />
  19. </view>
  20. </view>
  21. </template>
  22. <script>
  23. import CustomNavBar from "../../../components/CustomNavBar/index.vue";
  24. import MessageItemRender from "../chating/components/MessageItem/index.vue";
  25. import FontSizeSlider from "./FontSizeSlider.vue";
  26. import { MessageType } from "openim-uniapp-polyfill";
  27. const SliderValueMaping = {
  28. 0: "10px",
  29. 25: "12px",
  30. 50: "14px",
  31. 75: "16px",
  32. 100: "18px",
  33. };
  34. export default {
  35. name: "",
  36. components: {
  37. CustomNavBar,
  38. MessageItemRender,
  39. FontSizeSlider,
  40. },
  41. data() {
  42. return {
  43. sliderValue: 0,
  44. preveiwList: [
  45. {
  46. isSender: true,
  47. contentType: MessageType.TextMessage,
  48. textElem: {
  49. content: "预览字体大小",
  50. },
  51. senderFaceUrl: "ic_avatar_01",
  52. },
  53. {
  54. isSender: false,
  55. contentType: MessageType.TextMessage,
  56. textElem: {
  57. content: "拖动下面滑块,可设置字体大小",
  58. },
  59. senderFaceUrl: "ic_avatar_02",
  60. },
  61. {
  62. isSender: false,
  63. contentType: MessageType.TextMessage,
  64. textElem: {
  65. content: "设置后,会改变聊天和工作圈的字体大小。",
  66. },
  67. senderFaceUrl: "ic_avatar_02",
  68. },
  69. ],
  70. };
  71. },
  72. computed: {
  73. sliderValueMaping() {
  74. return SliderValueMaping[this.sliderValue];
  75. },
  76. },
  77. onLoad() {
  78. this.getInvertMaping();
  79. },
  80. methods: {
  81. finishEdit() {
  82. uni.setStorageSync("RootFontSize", this.sliderValueMaping);
  83. this.$store.commit("user/SET_ROOT_FONT_SIZE", this.sliderValueMaping);
  84. uni.reLaunch({
  85. url: "/pages/conversation/conversationList/index",
  86. });
  87. },
  88. getInvertMaping() {
  89. const invertMap = Object.keys(SliderValueMaping).reduce((acc, key) => {
  90. acc[SliderValueMaping[key]] = key;
  91. return acc;
  92. }, {});
  93. this.sliderValue = invertMap[this.$store.getters.storeRootFontSize];
  94. },
  95. },
  96. };
  97. </script>
  98. <style lang="scss" scoped>
  99. .page_container {
  100. background-color: #f8f8f8;
  101. .nav_right_action {
  102. font-size: 14px;
  103. padding-right: 44rpx;
  104. }
  105. .preview_container {
  106. flex: 1;
  107. }
  108. .slider_container {
  109. height: 200rpx;
  110. background-color: #fff;
  111. padding: 44rpx 44rpx 0;
  112. }
  113. }
  114. </style>