factoryindex.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. <template>
  2. <view class="page">
  3. <!-- 1. 顶部标题 -->
  4. <view class="header">
  5. <text class="title">{{title}}</text>
  6. <!-- 新增地图按钮 -->
  7. <!-- <image
  8. class="map-btn"
  9. src="/static/img/map.png"
  10. mode="aspectFit"
  11. @tap="goMap"
  12. /> -->
  13. </view>
  14. <!-- 2. 轮播图 -->
  15. <swiper
  16. class="swiper"
  17. circular
  18. :indicator-dots="true"
  19. :autoplay="true"
  20. :interval="3000"
  21. :duration="800"
  22. >
  23. <swiper-item v-for="(item, index) in picture" :key="index">
  24. <image :src="item" class="swiper-item" mode="aspectFill" />
  25. </swiper-item>
  26. </swiper>
  27. <view style="display: flex;width: 100%;flex-direction:row-reverse;background: white;">
  28. <text class="title2" @tap="goMap">地图</text>
  29. <!-- <image
  30. class="map-btn2"
  31. src="/static/img/tab4.png"
  32. mode="aspectFit"
  33. @tap="goMap"
  34. /> -->
  35. </view>
  36. <!-- 3. 九宫格导航 -->
  37. <!-- <view class="grid-box">
  38. <view
  39. v-for="(item,index) in parkList2"
  40. :key="index"
  41. class="grid-card"
  42. @tap="goListByValue(item.label)"
  43. >
  44. <text class="grid-label">{{item.label}}</text>
  45. </view>
  46. </view> -->
  47. <!-- 3. 九宫格导航 -->
  48. <view class="grid-box">
  49. <view
  50. v-for="(item,index) in parkList2"
  51. :key="index"
  52. class="grid-card"
  53. @tap="goListByValue(item.label)"
  54. >
  55. <!-- 上:名称 -->
  56. <text class="grid-label">{{item.label}}</text>
  57. <!-- 下:数量 -->
  58. <text class="grid-num">闲置厂房{{item.building_cnt}} 处</text>
  59. </view>
  60. </view>
  61. <!-- 地图已注释,如需恢复直接放开即可 -->
  62. <!--
  63. <view class="map-box">
  64. <view @touchend="onTouchEnd" class="map-wrap">
  65. <canvas canvas-id="ydChart" id="ydChart" class="map-canvas" />
  66. </view>
  67. </view>
  68. -->
  69. </view>
  70. </template>
  71. <script>
  72. // import * as echarts from 'echarts' // 如不用地图可注释
  73. import loginService from "@/api/auth/loginService";
  74. export default {
  75. data() {
  76. return {
  77. title: '盐都区闲置厂房分布图',
  78. picture: [
  79. 'https://ydwqfw.com.cn/yd_qycpfbH5/bg1.jpg',
  80. 'https://ydwqfw.com.cn/yd_qycpfbH5/bg2.jpg',
  81. 'https://ydwqfw.com.cn/yd_qycpfbH5/bg3.jpg',
  82. 'https://ydwqfw.com.cn/yd_qycpfbH5/bg4.jpg'
  83. ],
  84. parkList2: []
  85. }
  86. },
  87. /* 地图相关生命周期,如不用可全部注释
  88. async onReady() {
  89. const json = await this.loadGeoJSON()
  90. echarts.registerMap('yanduqu', json)
  91. ...
  92. },
  93. methods: {
  94. loadGeoJSON() { ... },
  95. onTouchEnd(e) { ... },
  96. renderMap() { ... }
  97. }
  98. */
  99. onShow() {
  100. loginService.getParkList().then(({
  101. data
  102. }) => {
  103. let alls=0;
  104. for(var i = 0; i < data.length; i++){
  105. alls=alls+data[i].building_cnt;
  106. }
  107. this.allcount=alls;
  108. this.parkList2=data;
  109. this.parkList2.unshift({total_area: 0, total_idle_area: 0, building_cnt: alls, label: "全部"})
  110. }).catch(e => {
  111. })
  112. },
  113. methods: {
  114. // 九宫格跳转
  115. goListByValue(val) {
  116. uni.navigateTo({
  117. url: `/pages/factoryBuildings/factoryBuildingsList?parkid=${val}`
  118. })
  119. },
  120. goMap() {
  121. uni.navigateTo({
  122. url: `/pages/index/factoryindex4` // 换成你的地图页面路径
  123. })
  124. }
  125. }
  126. }
  127. </script>
  128. <style scoped>
  129. .page {
  130. display: flex;
  131. flex-direction: column;
  132. min-height: 100vh;
  133. background: #f5f5f5;
  134. }
  135. /* 顶部标题 */
  136. .header {
  137. position: relative; /* 让子元素绝对定位参照它 */
  138. padding: 20rpx 0;
  139. text-align: center;
  140. background: #fff;
  141. }
  142. .title {
  143. font-size: 36rpx;
  144. font-weight: bold;
  145. color: #333;
  146. }
  147. /* 右上角地图按钮 */
  148. .map-btn {
  149. position: absolute;
  150. right: 30rpx;
  151. top: 50%;
  152. transform: translateY(-50%);
  153. width: 48rpx;
  154. height: 48rpx;
  155. }
  156. /* 轮播图 */
  157. .swiper {
  158. width: 100%;
  159. height: 300rpx;
  160. }
  161. .swiper-item {
  162. width: 100%;
  163. height: 100%;
  164. }
  165. /* 九宫格区域 */
  166. .grid-box {
  167. width: 100%;
  168. padding: 30rpx;
  169. box-sizing: border-box;
  170. display: grid;
  171. grid-template-columns: repeat(3, 1fr);
  172. gap: 24rpx;
  173. background: #fff;
  174. }
  175. .grid-num {
  176. margin-top: 8rpx;
  177. font-size: 24rpx;
  178. color: rgba(255,255,255,.85);
  179. }
  180. .grid-card {
  181. display: flex;
  182. align-items: center;
  183. justify-content: center;
  184. height: 160rpx;
  185. background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
  186. border-radius: 16rpx;
  187. box-shadow: 0 6rpx 16rpx rgba(0, 0, 0, 0.08);
  188. transition: transform 0.15s;
  189. flex-direction: column;
  190. }
  191. .grid-card:active {
  192. transform: scale(0.96);
  193. }
  194. .grid-label {
  195. font-size: 30rpx;
  196. font-weight: 600;
  197. padding-left: 8rpx;
  198. padding-right: 8rpx;
  199. text-align: center;
  200. color: #fff;
  201. }
  202. .title2{
  203. background: #1296db;
  204. border-radius: 15rpx;
  205. color: white;
  206. margin-top: 8rpx;
  207. margin-right: 30rpx;
  208. padding-top: 8rpx;
  209. padding-bottom: 8rpx;
  210. padding-right: 40rpx;
  211. padding-left: 40rpx;
  212. }
  213. </style>