Detail.vue 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  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="巡检">
  18. <template v-slot:footer>
  19. <text v-if="viewData.inspectorName">{{viewData.inspectorName}}}</text>
  20. <text v-if="viewData.inspectorPhone">({{viewData.inspectorPhone}})</text>
  21. </template>
  22. </uni-list-item>
  23. <uni-list-item title="行政">
  24. <template v-slot:footer>
  25. <text v-if="viewData.administratorName">{{viewData.administratorName}}}</text>
  26. <text v-if="viewData.administratorPhone">({{viewData.administratorPhone}})</text>
  27. </template>
  28. </uni-list-item>
  29. <uni-list-item title="技术">
  30. <template v-slot:footer>
  31. <text v-if="viewData.technicianName">{{viewData.technicianName}}}</text>
  32. <text v-if="viewData.technicianPhone">({{viewData.technicianPhone}})</text>
  33. </template>
  34. </uni-list-item>
  35. <uni-list-item title="备注" :note="viewData.remark"></uni-list-item>
  36. </uni-list>
  37. <uni-list v-if="type==='rd'">
  38. <uni-list-item title="监管单位" :rightText="viewData.groupName"></uni-list-item>
  39. <uni-list-item title="水库堤坝名称" :rightText="viewData.rdName"></uni-list-item>
  40. <uni-list-item title="地址" :rightText="viewData.rdAddress"></uni-list-item>
  41. <uni-list-item title="责任人" :rightText="viewData.respName"></uni-list-item>
  42. <uni-list-item title="责任人电话" :rightText="viewData.respPhone"></uni-list-item>
  43. <uni-list-item title="巡检">
  44. <template v-slot:footer>
  45. <text v-if="viewData.inspectorName">{{viewData.inspectorName}}}</text>
  46. <text v-if="viewData.inspectorPhone">({{viewData.inspectorPhone}})</text>
  47. </template>
  48. </uni-list-item>
  49. <uni-list-item title="行政">
  50. <template v-slot:footer>
  51. <text v-if="viewData.administratorName">{{viewData.administratorName}}}</text>
  52. <text v-if="viewData.administratorPhone">({{viewData.administratorPhone}})</text>
  53. </template>
  54. </uni-list-item>
  55. <uni-list-item title="技术">
  56. <template v-slot:footer>
  57. <text v-if="viewData.technicianName">{{viewData.technicianName}}}</text>
  58. <text v-if="viewData.technicianPhone">({{viewData.technicianPhone}})</text>
  59. </template>
  60. </uni-list-item>
  61. <uni-list-item title="描述" :note="viewData.remark"></uni-list-item>
  62. </uni-list>
  63. <view class="camerasbox">
  64. <view class="item" v-for="item in cameras" :key="item.cameraId">
  65. <view class="item-card">
  66. <view class="title" v-if="item.cameraTitle">{{item.cameraTitle}}</view>
  67. <uni-icons type="videocam-filled" size="40" color="#999" @click="showCamera(item)"></uni-icons>
  68. </view>
  69. </view>
  70. </view>
  71. </view>
  72. </uni-popup>
  73. <CameraModal ref="camera"></CameraModal>
  74. </view>
  75. </template>
  76. <script>
  77. import disasterApi from '@/api/disaster.js'
  78. import {getVideoInfo} from '@/api/system.js'
  79. import CameraModal from '@/components/CameraModal.vue'
  80. export default{
  81. name:"DisasteDetail",
  82. components:{
  83. CameraModal
  84. },
  85. props:{
  86. type:{
  87. type:[String,Number],
  88. default:'dl'
  89. }
  90. },
  91. data(){
  92. return{
  93. viewData:{
  94. groupId: 0,
  95. groupName: '',
  96. dlName: '',
  97. dlAddress: '',
  98. dlCatId: 1,
  99. dlLevelId: 1,
  100. dlPeopleNum: 0,
  101. dlHouseNum: 0,
  102. inspectorName: '',
  103. inspectorPhone: '',
  104. administratorName: '',
  105. administratorPhone: '',
  106. technicianName: '',
  107. technicianPhone: '',
  108. remark: '',
  109. //水库淤堤坝详情
  110. rdId: 0,
  111. rdName: '',
  112. rdAddress: '',
  113. respName: '',
  114. respPhone: ''
  115. },
  116. cameras:[]
  117. }
  118. },
  119. methods:{
  120. showCamera(item){
  121. // getVideoInfo(cameraId).then((res)=>{
  122. // let cameraHttp=res.data.cameraHttp;
  123. // if(cameraHttp){
  124. // this.$refs.camera.show({title:res.data.cameraTitle,src:cameraHttp})
  125. // }
  126. // })
  127. uni.navigateTo({
  128. url:`/pages/webview/webview?id=${item.cameraId}&title=${item.cameraTitle}`
  129. })
  130. },
  131. show(item){
  132. this.$refs.popup.open('bottom')
  133. this.viewData={...item}
  134. if(item.cameraNum>0){
  135. this.getCameras()
  136. }
  137. },
  138. getCameras(){
  139. const id=this.type==='dl'?this.viewData.dlId:this.viewData.rdId;
  140. disasterApi.getCameraByListWithLocation(id).then((res)=>{
  141. this.cameras=res.data;
  142. })
  143. },
  144. close(){
  145. this.$refs.popup.close()
  146. }
  147. }
  148. }
  149. </script>
  150. <style lang="scss" scoped>
  151. .detail-cont{
  152. &{
  153. max-height: 80vh;
  154. overflow-y: auto;
  155. }
  156. .camerasbox{
  157. width:100%;
  158. display: flex;
  159. align-items: center;
  160. flex-wrap: wrap;
  161. background-color: #fff;
  162. .item{
  163. width: 33.33%;
  164. padding: 20rpx;
  165. background-color: #fff;
  166. box-sizing: border-box;
  167. .item-card{
  168. display: flex;
  169. justify-content: center;
  170. align-items: center;
  171. flex-direction: column;
  172. box-shadow: 0 0 1px rgba(0,0,0,0.6);
  173. padding: 20rpx;
  174. .title{
  175. width: 100%;
  176. font-size: 24rpx;
  177. color: #424242;
  178. line-height: 1.4;
  179. padding-bottom: 15rpx;
  180. overflow:hidden;
  181. text-overflow:ellipsis;
  182. white-space:nowrap;
  183. }
  184. }
  185. }
  186. }
  187. }
  188. </style>