index.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <template>
  2. <view class="content">
  3. <view class="banner">
  4. <image :src="bannerSrc" alt="banner" mode="aspectFill"/>
  5. </view>
  6. <view class="cross-line"></view>
  7. <view class="menus">
  8. <view class="menu" v-for="(item,index) in miniProgramList" :key="index" @click="toDetail(item)">
  9. <text>{{item.title}}</text>
  10. <image :src="item.pic_url" mode="aspectFill"/>
  11. </view>
  12. </view>
  13. </view>
  14. </template>
  15. <script>
  16. import md5 from "@/common/md5.js";
  17. export default {
  18. data() {
  19. return {
  20. bannerSrc: "",
  21. miniProgramList:[
  22. // {
  23. // appId:'wxec4343871c957260',
  24. // path:'pages/index/index',
  25. // src:'/static/service/1.png'
  26. // },
  27. // {
  28. // appId:'',
  29. // path:'',
  30. // src:'/static/service/2.png'
  31. // },
  32. ],
  33. };
  34. },
  35. onLoad() {
  36. this.getPageImg();
  37. this.getPageMiniProgram();
  38. },
  39. methods: {
  40. getPageImg() {
  41. let md5Sign = md5(
  42. "method=" +
  43. "common" +
  44. "&timestamp=" +
  45. getApp().globalData.globalTimestamp +
  46. "&secret=" +
  47. getApp().globalData.secret
  48. );
  49. let url =
  50. getApp().globalData.shareUrl +
  51. "api/api.php" +
  52. "?method=common&source=service_pics&action=list&timestamp=" +
  53. getApp().globalData.globalTimestamp +
  54. "&sign=" +
  55. md5Sign;
  56. uni.request({
  57. url: url,
  58. method: "POST",
  59. header: {
  60. "content-type": "application/x-www-form-urlencoded",
  61. },
  62. data: {
  63. },
  64. success: (res) => {
  65. if (res.data.code === 200) {
  66. this.bannerSrc = res.data.data.list.length ? getApp().globalData.shareUrl + res.data.data.list[0].pic_url : '/static/nodata.svg'
  67. }
  68. },
  69. fail: () => {
  70. console.log("连接失败");
  71. },
  72. });
  73. },
  74. getPageMiniProgram(){
  75. let md5Sign = md5(
  76. "method=" +
  77. "common" +
  78. "&timestamp=" +
  79. getApp().globalData.globalTimestamp +
  80. "&secret=" +
  81. getApp().globalData.secret
  82. );
  83. let url =
  84. getApp().globalData.shareUrl +
  85. "api/api.php" +
  86. "?method=common&source=service&action=list&timestamp=" +
  87. getApp().globalData.globalTimestamp +
  88. "&sign=" +
  89. md5Sign;
  90. uni.request({
  91. url: url,
  92. method: "POST",
  93. header: {
  94. "content-type": "application/x-www-form-urlencoded",
  95. },
  96. data: {
  97. s_show:1,
  98. },
  99. success: (res) => {
  100. if (res.data.code === 200) {
  101. res.data.data.list.forEach((item) => {
  102. item.pic_url = getApp().globalData.shareUrl + item.pic_url;
  103. });
  104. this.miniProgramList = (res.data.data.list).sort((a,b)=>{return Number(b.weight) - Number(a.weight)});
  105. }
  106. },
  107. fail: () => {
  108. console.log("连接失败");
  109. },
  110. });
  111. },
  112. toDetail(item) {
  113. uni.navigateToMiniProgram({
  114. appId:item.app_id,
  115. path:item.app_path,
  116. success(res) {
  117. console.log(res,'打开成功')
  118. },
  119. fail(err) {
  120. console.log(err)
  121. }
  122. })
  123. },
  124. },
  125. };
  126. </script>
  127. <style lang="scss" scoped>
  128. .flex {
  129. display: flex;
  130. }
  131. .content {
  132. height:100%;
  133. .banner {
  134. height: 25%;
  135. margin-bottom:20rpx;
  136. image {
  137. width: 100%;
  138. height: 100%;
  139. }
  140. }
  141. .cross-line {
  142. width: 100%;
  143. height: 10rpx;
  144. background-color: #F2F2F2;
  145. }
  146. .menus {
  147. // height: 100%;
  148. display: flex;
  149. flex-wrap: wrap;
  150. // justify-content: center;
  151. margin-bottom:20rpx;
  152. .menu {
  153. margin: 2%;
  154. height: 14%;
  155. border-radius: 20rpx;
  156. width: 45%;
  157. // box-shadow: 0rpx 10rpx 5rpx rgb(212, 212, 212);
  158. text {
  159. font-size: 28rpx;
  160. }
  161. image {
  162. width: 100%;
  163. height: 140rpx;
  164. border-radius: 20rpx;
  165. margin-top: 10rpx;
  166. }
  167. }
  168. }
  169. }
  170. </style>