Detail.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <template>
  2. <view class="detail">
  3. <uni-popup ref="popup" type="top">
  4. <uni-section type="line" :title="type==='dl'?'地质灾害点详情':'水库淤堤坝详情'">
  5. <template v-slot:right>
  6. <uni-icons type="closeempty" size="24" color="#999" @click="close"></uni-icons>
  7. </template>
  8. </uni-section>
  9. <view class="detail-cont">
  10. <uni-list v-if="type==='dl'">
  11. <uni-list-item title="地质灾害点名称" :rightText="viewData.dlName"></uni-list-item>
  12. <uni-list-item title="地理位置" :rightText="viewData.dlAddress"></uni-list-item>
  13. <uni-list-item title="灾害类别" :rightText="viewData.disasterCatTitle"></uni-list-item>
  14. <uni-list-item title="规模等级" :rightText="viewData.disasterLevelTitle"></uni-list-item>
  15. <uni-list-item title="威胁人数" :rightText="viewData.dlPeopleNum"></uni-list-item>
  16. <uni-list-item title="威胁房屋" :rightText="viewData.dlHouseNum"></uni-list-item>
  17. <uni-list-item title="备注" :note="viewData.remark"></uni-list-item>
  18. </uni-list>
  19. <uni-list v-if="type==='rd'">
  20. <uni-list-item title="监管单位" :rightText="viewData.groupName"></uni-list-item>
  21. <uni-list-item title="水库堤坝名称" :rightText="viewData.rdName"></uni-list-item>
  22. <uni-list-item title="地址" :rightText="viewData.rdAddress"></uni-list-item>
  23. <uni-list-item title="责任人" :rightText="viewData.respName"></uni-list-item>
  24. <uni-list-item title="责任人电话" :rightText="viewData.respPhone"></uni-list-item>
  25. <uni-list-item title="描述" :note="viewData.remark"></uni-list-item>
  26. </uni-list>
  27. <view class="camerasbox">
  28. <view class="item" v-for="item in cameras" :key="item.cameraId">
  29. <view class="item-card">
  30. <view class="title" v-if="item.cameraTitle">{{item.cameraTitle}}</view>
  31. <uni-icons type="videocam-filled" size="40" color="#999" @click="showCamera(item)"></uni-icons>
  32. </view>
  33. </view>
  34. </view>
  35. </view>
  36. </uni-popup>
  37. <CameraModal ref="camera"></CameraModal>
  38. </view>
  39. </template>
  40. <script>
  41. import disasterApi from '@/api/disaster.js'
  42. import {getVideoInfo} from '@/api/system.js'
  43. import CameraModal from '@/components/CameraModal.vue'
  44. export default{
  45. name:"DisasteDetail",
  46. components:{
  47. CameraModal
  48. },
  49. props:{
  50. type:{
  51. type:[String,Number],
  52. default:'dl'
  53. }
  54. },
  55. data(){
  56. return{
  57. viewData:{
  58. groupId: 0,
  59. groupName: '',
  60. dlName: '',
  61. dlAddress: '',
  62. dlCatId: 1,
  63. dlLevelId: 1,
  64. dlPeopleNum: 0,
  65. dlHouseNum: 0,
  66. remark: '',
  67. //水库淤堤坝详情
  68. rdId: 0,
  69. rdName: '',
  70. rdAddress: '',
  71. respName: '',
  72. respPhone: ''
  73. },
  74. cameras:[]
  75. }
  76. },
  77. methods:{
  78. showCamera(item){
  79. // getVideoInfo(cameraId).then((res)=>{
  80. // let cameraHttp=res.data.cameraHttp;
  81. // if(cameraHttp){
  82. // this.$refs.camera.show({title:res.data.cameraTitle,src:cameraHttp})
  83. // }
  84. // })
  85. uni.navigateTo({
  86. url:`/pages/webview/webview?id=${item.cameraId}&title=${item.cameraTitle}`
  87. })
  88. },
  89. show(item){
  90. this.$refs.popup.open('bottom')
  91. this.viewData={...item}
  92. if(item.cameraNum>0){
  93. this.getCameras()
  94. }
  95. },
  96. getCameras(){
  97. const id=this.type==='dl'?this.viewData.dlId:this.viewData.rdId;
  98. disasterApi.getCameraByListWithLocation(id).then((res)=>{
  99. this.cameras=res.data;
  100. })
  101. },
  102. close(){
  103. this.$refs.popup.close()
  104. }
  105. }
  106. }
  107. </script>
  108. <style lang="scss" scoped>
  109. .detail-cont{
  110. &{
  111. max-height: 80vh;
  112. overflow-y: auto;
  113. }
  114. .camerasbox{
  115. width:100%;
  116. display: flex;
  117. align-items: center;
  118. flex-wrap: wrap;
  119. background-color: #fff;
  120. .item{
  121. width: 33.33%;
  122. padding: 20rpx;
  123. background-color: #fff;
  124. box-sizing: border-box;
  125. .item-card{
  126. display: flex;
  127. justify-content: center;
  128. align-items: center;
  129. flex-direction: column;
  130. box-shadow: 0 0 1px rgba(0,0,0,0.6);
  131. padding: 20rpx;
  132. .title{
  133. width: 100%;
  134. font-size: 24rpx;
  135. color: #424242;
  136. line-height: 1.4;
  137. padding-bottom: 15rpx;
  138. overflow:hidden;
  139. text-overflow:ellipsis;
  140. white-space:nowrap;
  141. }
  142. }
  143. }
  144. }
  145. }
  146. </style>