reportDetail.vue 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. <template>
  2. <view class="container">
  3. <view class="content" :class="{'disable-scroll': showMask}">
  4. <zero-markdown-view :markdown="compileMarkDown"></zero-markdown-view>
  5. </view>
  6. <view class="mask" v-show="showMask">
  7. <view class="mask-box login-box" v-if="!isLogin">
  8. <view class="button">
  9. <u-button type="error">登录阅读原文</u-button>
  10. </view>
  11. </view>
  12. <view class="mask-box member-box" v-if="isLogin && !free">
  13. <view class="remark">
  14. 正文需付费才可阅读
  15. </view>
  16. <view class="button">
  17. <u-button type="error">¥{{report.price}}&nbsp;阅读全部</u-button>
  18. </view>
  19. <view class="link">
  20. <view class="text">
  21. 个人会员或单位会员免费,点击现在入会&gt;
  22. </view>
  23. </view>
  24. </view>
  25. </view>
  26. <view class="bottom-block" v-show="!showMask"></view>
  27. <view class="bottom-box" v-show="!showMask">
  28. <view class="menu-box">
  29. <view class="menu-item iconfont icon-dianzan"></view>
  30. <view class="menu-item iconfont icon-shoucang1 active"></view>
  31. <view class="menu-item iconfont icon-zhuanfa"></view>
  32. <view class="menu-item iconfont icon-pengyouquan"></view>
  33. <view class="menu-item iconfont icon-xiaoxi"></view>
  34. </view>
  35. </view>
  36. </view>
  37. </template>
  38. <script setup>
  39. import { ref, computed } from 'vue'
  40. import { onLoad } from '@dcloudio/uni-app'
  41. import { getToken } from '@/utils/auth.js'
  42. const id = ref()
  43. const title = ref()
  44. const report = ref({
  45. id: '01',
  46. title: '',
  47. price: '9.9',
  48. memberFree: 1,
  49. free: 0,
  50. status: 0,
  51. markdown: `# 《二手住宅市场交易简报》
  52. **一、市场现状**
  53. 在2025年,二手住宅市场呈现出较为复杂的态势。整体交易量与以往相比,出现了一定程度的波动。在部分地区,由于新的住房政策的影响,原本计划购买新房的人群有一部分开始转向二手住宅市场,这使得一些热门地区的二手住宅询问量有较为明显的增加。
  54. 从价格方面看,价格区间分化较为明显。靠近城市中心、配套设施齐全且房屋状况较好的二手住宅,其价格依然保持坚挺,甚至在某些地段还有小幅度的上涨。而那些位于城市边缘、房龄较长或者社区设施老化的二手住宅,则面临着价格下探的压力。
  55. **二、影响因素**
  56. 1. **政策因素**
  57. - 政府近期出台的一些鼓励居住性购房的政策,对二手住宅市场产生了影响。例如,贷款政策的放宽使得购房者的资金压力得到了一定程度的缓解,这吸引了许多刚需购房者进入二手住宅市场。
  58. - 税收政策调整方面,部分地区降低了二手房交易中的一些税费,这也刺激了二手住宅的交易活跃度。
  59. 2. **市场供需关系**
  60. - 从供给端来看,随着房地产市场多年的发展,市场上存在着大量的存量二手住宅。尤其是一些早期房产投资者,由于持有成本以及自身需求的改变,开始释放手中的房源。
  61. - 在需求端,除了刚需购房者外,一些改善型购房者也在二手住宅市场寻找合适的房源。他们更倾向于购买地段较好、周边配套成熟的二手房,而不是等待新房建成。
  62. **三、未来展望**
  63. 二手住宅市场在未来一段时间内预计将继续受到多种因素的综合影响。随着城市规划的不断发展,如果城市周边区域的配套设施能够逐步完善起来,那么城市边缘的二手住宅价格可能会出现稳定或者回升的迹象。
  64. 政策调控仍然会是影响市场走向的重要因素,如果贷款政策和税收政策能够继续保持稳定或者进一步优化,二手住宅市场的优化发展便更有保障。同时,随着环保意识的提高,那些绿色环保、节能的二手住宅可能会受到更多购房者的青睐。`
  65. })
  66. const compileMarkDown = computed(() => {
  67. if (!report.value.markdown) {
  68. return;
  69. }
  70. let htmlString = "";
  71. // 判断markdown中代码块标识符的数量是否为偶数
  72. if (report.value.markdown.split("```").length % 2) {
  73. let content = report.value.markdown;
  74. if (content[content.length - 1] != "\n") {
  75. content += "\n";
  76. }
  77. htmlString = content;
  78. } else {
  79. htmlString = report.value.markdown;
  80. }
  81. return htmlString;
  82. })
  83. // 是否登录
  84. const isLogin = computed(() => {
  85. return false
  86. // return getToken() ? true : false
  87. })
  88. // 是否购买/免费
  89. const free = computed(() => {
  90. return false
  91. })
  92. const showMask = computed(() => {
  93. // 是否登录
  94. // 是否已购买或者免费
  95. if (report.value.status || report.value.free) {
  96. return false
  97. }
  98. // 判断用户是否为会员免费
  99. if (report.value.memberFree) {
  100. //
  101. }
  102. return false
  103. })
  104. onLoad((load) => {
  105. id.value = load.id
  106. title.value = load.title
  107. uni.setNavigationBarTitle({
  108. title: title.value
  109. })
  110. })
  111. </script>
  112. <style lang="scss" scoped>
  113. .container {
  114. height: 100vh;
  115. width: 100vw;
  116. background-color: $uni-bg-color;
  117. .content {
  118. padding: 0 20rpx;
  119. }
  120. .mask {
  121. height: 75vh;
  122. padding: 0 20rpx;
  123. background-color: $uni-bg-color-grey;
  124. -webkit-box-shadow: 0px -1rpx 5rpx 0px rgba(50, 50, 50, 0.25);
  125. -moz-box-shadow: 0px -1rpx 5rpx 0px rgba(50, 50, 50, 0.25);
  126. box-shadow: 0px -1rpx 5rpx 0px rgba(50, 50, 50, 0.25);
  127. border-radius: 20rpx 20rpx 0 0;
  128. @include bottomMagnet();
  129. .mask-box {
  130. height: 100%;
  131. width: 100%;
  132. position: relative;
  133. .button {
  134. margin: 0 auto;
  135. width: 45%;
  136. }
  137. }
  138. .member-box {
  139. padding-top: 210rpx;
  140. .remark {
  141. height: 90rpx;
  142. text-align: center;
  143. letter-spacing: 3rpx;
  144. font-size: 32rpx;
  145. color: $uni-text-color-grey;
  146. }
  147. .link {
  148. position: absolute;
  149. top: 70%;
  150. width: 100%;
  151. font-size: 32rpx;
  152. color: $uni-color-error;
  153. font-size: $uni-title-font-size-2;
  154. font-weight: bold;
  155. .text {
  156. text-align: center;
  157. letter-spacing: 5rpx;
  158. &:active {
  159. text-decoration: underline;
  160. }
  161. }
  162. }
  163. }
  164. .login-box {
  165. padding-top: 300rpx;
  166. }
  167. }
  168. .disable-scroll {
  169. position: fixed;
  170. top: 0;
  171. left: 0;
  172. width: 100%;
  173. height: 100%;
  174. }
  175. .bottom-block {
  176. height: 110rpx;
  177. }
  178. .bottom-box {
  179. padding: 5rpx 25rpx;
  180. background-color: $uni-bg-color-grey;
  181. @include bottomMagnet();
  182. -webkit-box-shadow: 0px -1rpx 5rpx 0px rgba(50, 50, 50, 0.25);
  183. -moz-box-shadow: 0px -1rpx 5rpx 0px rgba(50, 50, 50, 0.25);
  184. box-shadow: 0px -1rpx 5rpx 0px rgba(50, 50, 50, 0.25);
  185. .menu-box {
  186. height: 100rpx;
  187. display: flex;
  188. align-items: center;
  189. justify-content: flex-end;
  190. gap: 50rpx;
  191. .iconfont {
  192. font-size: 42rpx;
  193. color: $uni-text-color-grey;
  194. }
  195. .active {
  196. color: yellow;
  197. }
  198. }
  199. }
  200. }
  201. </style>