adDetail.vue 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <template>
  2. <view class="adDetails">
  3. <view class="adTitle">{{ adDetail.adName }}</view>
  4. <view class="adTime">{{ adDetail.createTime }}</view>
  5. <rich-text :nodes="adDetail.description" class="adContent"></rich-text>
  6. <view v-if="adDetail.jumpType == 1 && adDetail.videoUrl" class="adVideo">
  7. <video :src="adDetail.videoUrl" controls class="video-player"></video>
  8. </view>
  9. </view>
  10. </template>
  11. <script>
  12. import { getMapAdDetail_Api } from "@/api/map.js";
  13. import $Config from "@/config/index.js";
  14. export default {
  15. data() {
  16. return {
  17. adDetail: {},
  18. adVideoUrl: "",
  19. params: {
  20. adId: "",
  21. },
  22. };
  23. },
  24. watch: {
  25. "adDetail.description": {
  26. //富文本图片预览
  27. handler(newV, oldV) {
  28. this.$nextTick(() => {
  29. let imgArr = document.getElementsByTagName("img");
  30. if (imgArr) {
  31. for (let i = 0; i < imgArr.length; i++) {
  32. imgArr[i].addEventListener("click", (e) => {
  33. console.log(imgArr[i]);
  34. uni.previewImage({
  35. urls: [imgArr[i].src],
  36. });
  37. });
  38. }
  39. }
  40. });
  41. },
  42. deep: true,
  43. },
  44. },
  45. mounted() {
  46. this.params.adId = this.$route.query.mapAdId;
  47. this.getDetails();
  48. },
  49. methods: {
  50. getDetails() {
  51. getMapAdDetail_Api(this.params).then((res) => {
  52. this.adDetail = res;
  53. }).catch((err) => {
  54. console.log('err',err);
  55. });
  56. },
  57. },
  58. };
  59. </script>
  60. <style lang="scss" scoped>
  61. .adDetails {
  62. padding: 20rpx;
  63. .adTitle {
  64. font-size: 32rpx;
  65. font-weight: bold;
  66. padding: 10rpx 20rpx;
  67. }
  68. .adTime {
  69. font-size: 24rpx;
  70. color: #999;
  71. padding: 10rpx 20rpx;
  72. }
  73. .adContent {
  74. font-size: 28rpx;
  75. line-height: 44rpx;
  76. margin-top: 20rpx;
  77. display: inline-block;
  78. }
  79. .adVideo {
  80. margin-top: 20rpx;
  81. .video-player {
  82. width: 100%;
  83. height: 400rpx;
  84. }
  85. }
  86. }
  87. </style>