record.vue 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  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 Base64 from "@/common/js-base64.js"
  70. export default {
  71. data() {
  72. return {
  73. mine_code:"",
  74. base_url:"",
  75. // 二维码ID
  76. pageId:'',
  77. // 模块数组
  78. pageItemList:[],
  79. // 纯文本模块
  80. textVo:[],
  81. // 所在模块索引
  82. textVo_index:[],
  83. // base wenben
  84. textVo_dataContent:[],
  85. // 图文模块
  86. imageText:[],
  87. // 所在模块索引
  88. imageText_index:[],
  89. // base wenben
  90. imageText_dataContent:[],
  91. // 图集模块
  92. pictureList:[],
  93. // 所在模块索引
  94. pictureList_index:[],
  95. // 文件模块
  96. fileList:[],
  97. // 所在模块索引
  98. fileList_index:[],
  99. // 链接模块
  100. linksList:[],
  101. // 所在模块索引
  102. linksList_index:[],
  103. // 视频模块
  104. videoList:[],
  105. videoList_index:[],
  106. // 设备铭牌模块
  107. equipmentList:[],
  108. // 所在模块索引
  109. equipmentList_index:[],
  110. // 浏览记录
  111. browse:[],
  112. // 随即色
  113. bgColor:[],
  114. }
  115. },
  116. onLoad(option) {
  117. this.mine_code = option.mine_code
  118. // 根据矿编码切换首页接口不同的请求基础路径
  119. switch (option.mine_code) {
  120. case 'ningdongyunying':
  121. this.base_url = "http://ningdongyunying.nxjiewei.com:8011/api"
  122. break;
  123. case 'meihuajing':
  124. this.base_url = "http://meihuajing.nxjiewei.com:8011/api"
  125. break;
  126. case 'zaoquan':
  127. this.base_url = "http://zaoquan.nxjiewei.com:8011/api"
  128. break;
  129. default:
  130. this.base_url = ""
  131. }
  132. // 获取二维码ID
  133. this.pageId = option.pageId
  134. // 获取二维码详情
  135. this.get_inner()
  136. // 获取浏览记录
  137. this.get_browse()
  138. },
  139. methods: {
  140. // 获取二维码详情
  141. get_inner(){
  142. uni.request({
  143. url: this.base_url + "/swagger/api/page/v1/detailPage?pageId="+this.pageId+"&sourceType=&organizationIds=&userId=&userName=",
  144. success: (res) => {
  145. console.log(res.data.data)
  146. const data = res.data.data
  147. // 设置页面标题
  148. uni.setNavigationBarTitle({
  149. title: data.page.title
  150. })
  151. // 获取模块数组
  152. this.pageItemList = data.pageItemList
  153. // 判断模块属性
  154. for(let i = 0; i < data.pageItemList.length; i++){
  155. if(data.pageItemList[i].pageRelation.businessType === 'TEXT'){
  156. // console.log("纯文本模块",i)
  157. // 内容模块数组
  158. this.textVo.push(data.pageItemList[i].textVo)
  159. // 保存内容所在父模块的索引
  160. this.textVo_index.push(i)
  161. // base64解码 替换原数组属性
  162. this.textVo_dataContent.push(data.pageItemList[i].textVo.dataContent)
  163. for(let i = 0; i < this.textVo_dataContent.length; i++){
  164. this.textVo[i].dataContent = Base64.decode(this.textVo_dataContent[i])
  165. }
  166. // console.log(this.textVo_dataContent)
  167. // console.log(this.textVo)
  168. // console.log(this.textVo_index)
  169. }else if(data.pageItemList[i].pageRelation.businessType === 'IMAGE_TEXT'){
  170. // console.log("图文模块",i)
  171. // 图文模块
  172. this.imageText.push(data.pageItemList[i].imageText)
  173. // 保存内容所在父模块的索引
  174. this.imageText_index.push(i)
  175. // base64解码 替换原数组属性
  176. this.imageText_dataContent.push(data.pageItemList[i].imageText.dataContent)
  177. for(let i = 0; i < this.imageText_dataContent.length; i++){
  178. this.imageText[i].dataContent = Base64.decode(this.imageText_dataContent[i])
  179. }
  180. }else if(data.pageItemList[i].pageRelation.businessType === 'PICTURE'){
  181. // console.log("图集模块",i)
  182. this.pictureList.push(data.pageItemList[i].pictureList)
  183. this.pictureList_index.push(i)
  184. }else if(data.pageItemList[i].pageRelation.businessType === 'FILE'){
  185. // console.log("文件模块",i)
  186. // 文件模块
  187. this.fileList.push(data.pageItemList[i].fileList)
  188. this.fileList_index.push(i)
  189. }else if(data.pageItemList[i].pageRelation.businessType === 'LINKS'){
  190. // console.log("链接模块",i)
  191. this.linksList.push(data.pageItemList[i].linksList)
  192. this.linksList_index.push(i)
  193. }else if(data.pageItemList[i].pageRelation.businessType === 'VIDEO'){
  194. // console.log("视频模块",i)
  195. // 视频模块
  196. this.videoList.push(data.pageItemList[i].videoList)
  197. this.videoList_index.push(i)
  198. }else if(data.pageItemList[i].pageRelation.businessType === 'EQUIPMENT'){
  199. // console.log("设备铭牌模块",i)
  200. // 设备铭牌模块
  201. this.equipmentList.push(data.pageItemList[i].equipmentList)
  202. this.equipmentList_index.push(i)
  203. }else if(data.pageItemList[i].pageRelation.businessType === 'RECORD'){
  204. // console.log("记录管理模块",i)
  205. }
  206. }
  207. }
  208. })
  209. },
  210. // 获取浏览记录
  211. get_browse(){
  212. uni.request({
  213. url: this.base_url + "/swagger/api/pageuser/v1/getPageUserByPageId/"+this.pageId,
  214. success: (res) => {
  215. console.log(res.data.data)
  216. this.browse = res.data.data
  217. this.browse.length = 3
  218. console.log(this.browse)
  219. for(let i=0;i<3;i++){
  220. // 获取随机色
  221. let r = parseInt(Math.random() * 256)
  222. let g = parseInt(Math.random() * 256)
  223. let b = parseInt(Math.random() * 256)
  224. // ES6 字符串拼接
  225. // this.bgColor = `rgba(${r},${g},${b},0.3)`
  226. let color = "rgba(" + r + "," + g + "," + b + "," + 0.3 + ")"
  227. // console.log(color)
  228. this.bgColor.push(color)
  229. }
  230. this.$forceUpdate()
  231. }
  232. })
  233. },
  234. },
  235. }
  236. </script>
  237. <style lang="scss">
  238. page{
  239. box-sizing: border-box;
  240. padding: 25rpx;
  241. margin-bottom: 90px;
  242. }
  243. .pageItemList{
  244. width: 700rpx;
  245. margin-bottom: 40rpx;
  246. }
  247. .bottom_btn{
  248. position: fixed;
  249. left: 0;
  250. bottom: 0;
  251. width: 750rpx;
  252. line-height: 60px;
  253. background-color: #009FE8;
  254. color: #FFFFFF;
  255. text-align: center;
  256. font-weight: 700;
  257. }
  258. </style>