record.vue 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. <template>
  2. <view>
  3. <view class="pageItemList" v-for="(item,index) in pageItemList" :key="index">
  4. <!-- 纯文本模块 -->
  5. <view class="TEXT">
  6. <view v-if="item.pageRelation.businessType === 'TEXT'">
  7. <!-- 将内容所在父模块的索引保存到新数组 判断新数组中的索引值==循环的索引值时,让内容模块渲染(textVo_index[index_2] == index)保证了内容模块的排序问题 -->
  8. <view v-if="textVo_index[index_2] == index" v-for="(item_2,index_2) in textVo" :key="index_2">
  9. <e-text :textVo="textVo[index_2]"></e-text>
  10. </view>
  11. </view>
  12. </view>
  13. <!-- 图文模块 -->
  14. <view class="IMAGE_TEXT">
  15. <view v-if="item.pageRelation.businessType === 'IMAGE_TEXT'">
  16. <view v-if="imageText_index[index_2] == index" v-for="(item_2,index_2) in imageText" :key="index_2">
  17. <e-image-text :imageText="imageText[index_2]"></e-image-text>
  18. </view>
  19. </view>
  20. </view>
  21. <!-- 图集模块 -->
  22. <view class="PICTURE">
  23. <view v-if="item.pageRelation.businessType === 'PICTURE'">
  24. <view v-if="pictureList_index[index_2] == index" v-for="(item_2,index_2) in pictureList" :key="index_2">
  25. <e-picture :pictureList="pictureList[index_2]"></e-picture>
  26. </view>
  27. </view>
  28. </view>
  29. <!-- 文件模块 -->
  30. <view class="FILE">
  31. <view v-if="item.pageRelation.businessType === 'FILE'">
  32. <view v-if="fileList_index[index_2] == index" v-for="(item_2,index_2) in fileList" :key="index_2">
  33. <e-file :fileList="fileList[index_2]"></e-file>
  34. </view>
  35. </view>
  36. </view>
  37. <!-- 链接模块 -->
  38. <view class="LINKS">
  39. <view v-if="item.pageRelation.businessType === 'LINKS'">
  40. <view v-if="linksList_index[index_2] == index" v-for="(item_2,index_2) in linksList" :key="index_2">
  41. <e-link :linksList="linksList[index_2]" :mine_code="mine_code"></e-link>
  42. </view>
  43. </view>
  44. </view>
  45. <!-- 视频模块 -->
  46. <view class="VIDEO">
  47. <view v-if="item.pageRelation.businessType === 'VIDEO'">
  48. <view v-if="videoList_index[index_2] == index" v-for="(item_2,index_2) in videoList" :key="index_2">
  49. <e-video :videoList="videoList[index_2]"></e-video>
  50. </view>
  51. </view>
  52. </view>
  53. <!-- 设备铭牌模块 -->
  54. <view class="EQUIPMENT">
  55. <view v-if="item.pageRelation.businessType === 'EQUIPMENT'">
  56. <view v-if="equipmentList_index[index_2] == index" v-for="(item_2,index_2) in equipmentList" :key="index_2">
  57. <e-equipment :equipmentList="equipmentList[index_2]"></e-equipment>
  58. </view>
  59. </view>
  60. </view>
  61. </view>
  62. <!-- 浏览记录 -->
  63. <view v-if="browse.length != 0">
  64. <e-browse :browse="browse" :mine_code="mine_code" :pageId="pageId" :bgColor="bgColor"></e-browse>
  65. </view>
  66. </view>
  67. </template>
  68. <script>
  69. import {set_base_url} from '@/common/set_base_url.js'
  70. import Base64 from "@/common/js-base64.js"
  71. export default {
  72. data() {
  73. return {
  74. mine_code:"",
  75. base_url:"",
  76. // 二维码ID
  77. pageId:'',
  78. // 模块数组
  79. pageItemList:[],
  80. // 纯文本模块
  81. textVo:[],
  82. // 所在模块索引
  83. textVo_index:[],
  84. // base wenben
  85. textVo_dataContent:[],
  86. // 图文模块
  87. imageText:[],
  88. // 所在模块索引
  89. imageText_index:[],
  90. // base wenben
  91. imageText_dataContent:[],
  92. // 图集模块
  93. pictureList:[],
  94. // 所在模块索引
  95. pictureList_index:[],
  96. // 文件模块
  97. fileList:[],
  98. // 所在模块索引
  99. fileList_index:[],
  100. // 链接模块
  101. linksList:[],
  102. // 所在模块索引
  103. linksList_index:[],
  104. // 视频模块
  105. videoList:[],
  106. videoList_index:[],
  107. // 设备铭牌模块
  108. equipmentList:[],
  109. // 所在模块索引
  110. equipmentList_index:[],
  111. // 浏览记录
  112. browse:[],
  113. // 随即色
  114. bgColor:[],
  115. }
  116. },
  117. onLoad(option) {
  118. this.mine_code = option.mine_code
  119. // 根据矿编码切换首页接口不同的请求基础路径
  120. this.base_url = set_base_url(this.mine_code)
  121. // 获取二维码ID
  122. this.pageId = option.pageId
  123. // 获取二维码详情
  124. this.get_inner()
  125. // 获取浏览记录
  126. this.get_browse()
  127. },
  128. methods: {
  129. // 获取二维码详情
  130. get_inner(){
  131. uni.request({
  132. url: this.base_url + "/swagger/api/page/v1/detailPage?pageId="+this.pageId+"&sourceType=&organizationIds=&userId=&userName=",
  133. success: (res) => {
  134. console.log(res.data.data)
  135. const data = res.data.data
  136. // 设置页面标题
  137. uni.setNavigationBarTitle({
  138. title: data.page.title
  139. })
  140. // 获取模块数组
  141. this.pageItemList = data.pageItemList
  142. // 判断模块属性
  143. for(let i = 0; i < data.pageItemList.length; i++){
  144. if(data.pageItemList[i].pageRelation.businessType === 'TEXT'){
  145. // console.log("纯文本模块",i)
  146. // 内容模块数组
  147. this.textVo.push(data.pageItemList[i].textVo)
  148. // 保存内容所在父模块的索引
  149. this.textVo_index.push(i)
  150. // base64解码 替换原数组属性
  151. this.textVo_dataContent.push(data.pageItemList[i].textVo.dataContent)
  152. for(let i = 0; i < this.textVo_dataContent.length; i++){
  153. this.textVo[i].dataContent = Base64.decode(this.textVo_dataContent[i])
  154. }
  155. // console.log(this.textVo_dataContent)
  156. // console.log(this.textVo)
  157. // console.log(this.textVo_index)
  158. }else if(data.pageItemList[i].pageRelation.businessType === 'IMAGE_TEXT'){
  159. // console.log("图文模块",i)
  160. // 图文模块
  161. this.imageText.push(data.pageItemList[i].imageText)
  162. // 保存内容所在父模块的索引
  163. this.imageText_index.push(i)
  164. // base64解码 替换原数组属性
  165. this.imageText_dataContent.push(data.pageItemList[i].imageText.dataContent)
  166. for(let i = 0; i < this.imageText_dataContent.length; i++){
  167. this.imageText[i].dataContent = Base64.decode(this.imageText_dataContent[i])
  168. }
  169. }else if(data.pageItemList[i].pageRelation.businessType === 'PICTURE'){
  170. // console.log("图集模块",i)
  171. this.pictureList.push(data.pageItemList[i].pictureList)
  172. this.pictureList_index.push(i)
  173. }else if(data.pageItemList[i].pageRelation.businessType === 'FILE'){
  174. // console.log("文件模块",i)
  175. // 文件模块
  176. this.fileList.push(data.pageItemList[i].fileList)
  177. this.fileList_index.push(i)
  178. }else if(data.pageItemList[i].pageRelation.businessType === 'LINKS'){
  179. // console.log("链接模块",i)
  180. this.linksList.push(data.pageItemList[i].linksList)
  181. this.linksList_index.push(i)
  182. }else if(data.pageItemList[i].pageRelation.businessType === 'VIDEO'){
  183. // console.log("视频模块",i)
  184. // 视频模块
  185. this.videoList.push(data.pageItemList[i].videoList)
  186. this.videoList_index.push(i)
  187. }else if(data.pageItemList[i].pageRelation.businessType === 'EQUIPMENT'){
  188. // console.log("设备铭牌模块",i)
  189. // 设备铭牌模块
  190. this.equipmentList.push(data.pageItemList[i].equipmentList)
  191. this.equipmentList_index.push(i)
  192. }else if(data.pageItemList[i].pageRelation.businessType === 'RECORD'){
  193. // console.log("记录管理模块",i)
  194. }
  195. }
  196. }
  197. })
  198. },
  199. // 获取浏览记录
  200. get_browse(){
  201. uni.request({
  202. url: this.base_url + "/swagger/api/pageuser/v1/getPageUserByPageId/"+this.pageId,
  203. success: (res) => {
  204. console.log(res.data.data)
  205. this.browse = res.data.data
  206. this.browse.length = 3
  207. console.log(this.browse)
  208. for(let i=0;i<3;i++){
  209. // 获取随机色
  210. let r = parseInt(Math.random() * 256)
  211. let g = parseInt(Math.random() * 256)
  212. let b = parseInt(Math.random() * 256)
  213. // ES6 字符串拼接
  214. // this.bgColor = `rgba(${r},${g},${b},0.3)`
  215. let color = "rgba(" + r + "," + g + "," + b + "," + 0.3 + ")"
  216. // console.log(color)
  217. this.bgColor.push(color)
  218. }
  219. this.$forceUpdate()
  220. }
  221. })
  222. },
  223. },
  224. }
  225. </script>
  226. <style lang="scss">
  227. page{
  228. box-sizing: border-box;
  229. padding: 25rpx;
  230. margin-bottom: 90px;
  231. }
  232. .pageItemList{
  233. width: 700rpx;
  234. margin-bottom: 40rpx;
  235. }
  236. .bottom_btn{
  237. position: fixed;
  238. left: 0;
  239. bottom: 0;
  240. width: 750rpx;
  241. line-height: 60px;
  242. background-color: #009FE8;
  243. color: #FFFFFF;
  244. text-align: center;
  245. font-weight: 700;
  246. }
  247. </style>