record.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402
  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="recordList.length != 0">
  64. <view class="RECORD">
  65. <e-record :recordList="recordList" :instanceList="instanceList" @set_parentId="set_parentId"></e-record>
  66. </view>
  67. </view> -->
  68. <!-- 浏览记录 -->
  69. <view v-if="browse.length != 0">
  70. <e-browse :browse="browse" :bgColor="bgColor"></e-browse>
  71. </view>
  72. <!-- 添加记录 -->
  73. <!-- <view v-if="selectRecord_list.length > 0" class="bottom_btn" @click="bottom_btn_click()">添加记录</view> -->
  74. </view>
  75. </template>
  76. <script>
  77. import Base64 from "@/common/js-base64.js"
  78. export default {
  79. data() {
  80. return {
  81. mine_code:"",
  82. base_url:"",
  83. // 二维码ID
  84. pageId:'',
  85. // 模块数组
  86. pageItemList:[],
  87. // 纯文本模块
  88. textVo:[],
  89. // 所在模块索引
  90. textVo_index:[],
  91. // base wenben
  92. textVo_dataContent:[],
  93. // 图文模块
  94. imageText:[],
  95. // 所在模块索引
  96. imageText_index:[],
  97. // base wenben
  98. imageText_dataContent:[],
  99. // 图集模块
  100. pictureList:[],
  101. // 所在模块索引
  102. pictureList_index:[],
  103. // 文件模块
  104. fileList:[],
  105. // 所在模块索引
  106. fileList_index:[],
  107. // 链接模块
  108. linksList:[],
  109. // 所在模块索引
  110. linksList_index:[],
  111. // 视频模块
  112. videoList:[],
  113. videoList_index:[],
  114. // 设备铭牌模块
  115. equipmentList:[],
  116. // 所在模块索引
  117. equipmentList_index:[],
  118. // 记录管理模块
  119. recordList:[],
  120. instanceList:[],
  121. // 浏览记录
  122. browse:[],
  123. // 随即色
  124. bgColor:[],
  125. // 添加记录入口列表
  126. selectRecord_list:[]
  127. }
  128. },
  129. onLoad(option) {
  130. this.mine_code = option.mine_code
  131. // 根据矿编码切换首页接口不同的请求基础路径
  132. switch (option.mine_code) {
  133. case 'ningdongyunying':
  134. this.base_url = "http://ningdongyunying.nxjiewei.com:8011/api"
  135. break;
  136. case 'meihuajing':
  137. this.base_url = "http://meihuajing.nxjiewei.com:8011/api"
  138. break;
  139. case 'zaoquan':
  140. this.base_url = "http://zaoquan.nxjiewei.com:8011/api"
  141. break;
  142. default:
  143. this.base_url = ""
  144. }
  145. // 获取二维码ID
  146. this.pageId = option.pageId
  147. // 获取二维码详情
  148. this.get_inner()
  149. // 获取浏览记录
  150. this.get_browse()
  151. // 获取二维码记录筛选接口
  152. this.get_selectRecord()
  153. // 获取添加记录入口列表
  154. this.get_selectRecord_list()
  155. },
  156. methods: {
  157. // 弹出添加记录菜单
  158. bottom_btn_click(){
  159. uni.showActionSheet({
  160. itemList: this.selectRecord_list_name,
  161. success: (res) => {
  162. // console.log('选中了第' + (res.tapIndex + 1) + '个按钮');
  163. // console.log(res.tapIndex)
  164. // console.log(this.selectRecord_list[res.tapIndex].parentId)
  165. uni.navigateTo({
  166. // url:"./selectRecord_list_detail/selectRecord_list_detail?pageRecordId=" + this.selectRecord_list[res.tapIndex].parentId + "&pageId=" + this.pageId,
  167. url:"./selectRecord_list_detail/selectRecord_list_detail?pageRecordId=d540a652a218469d92c627f1c4b1d95e&pageId=" + this.pageId,
  168. })
  169. },
  170. fail: function (res) {
  171. console.log(res.errMsg);
  172. }
  173. })
  174. },
  175. // 获取二维码详情
  176. get_inner(){
  177. uni.request({
  178. url: this.base_url + "/swagger/api/page/v1/detailPage?pageId="+this.pageId+"&sourceType=&organizationIds=&userId=&userName=",
  179. success: (res) => {
  180. console.log(res.data.data)
  181. const data = res.data.data
  182. // 设置页面标题
  183. uni.setNavigationBarTitle({
  184. title: data.page.title
  185. })
  186. // 获取模块数组
  187. this.pageItemList = data.pageItemList
  188. // 判断模块属性
  189. for(let i = 0; i < data.pageItemList.length; i++){
  190. if(data.pageItemList[i].pageRelation.businessType === 'TEXT'){
  191. // console.log("纯文本模块",i)
  192. // 内容模块数组
  193. this.textVo.push(data.pageItemList[i].textVo)
  194. // 保存内容所在父模块的索引
  195. this.textVo_index.push(i)
  196. // base64解码 替换原数组属性
  197. this.textVo_dataContent.push(data.pageItemList[i].textVo.dataContent)
  198. for(let i = 0; i < this.textVo_dataContent.length; i++){
  199. this.textVo[i].dataContent = Base64.decode(this.textVo_dataContent[i])
  200. }
  201. // console.log(this.textVo_dataContent)
  202. // console.log(this.textVo)
  203. // console.log(this.textVo_index)
  204. }else if(data.pageItemList[i].pageRelation.businessType === 'IMAGE_TEXT'){
  205. // console.log("图文模块",i)
  206. // 图文模块
  207. this.imageText.push(data.pageItemList[i].imageText)
  208. // 保存内容所在父模块的索引
  209. this.imageText_index.push(i)
  210. // base64解码 替换原数组属性
  211. this.imageText_dataContent.push(data.pageItemList[i].imageText.dataContent)
  212. for(let i = 0; i < this.imageText_dataContent.length; i++){
  213. this.imageText[i].dataContent = Base64.decode(this.imageText_dataContent[i])
  214. }
  215. }else if(data.pageItemList[i].pageRelation.businessType === 'PICTURE'){
  216. // console.log("图集模块",i)
  217. this.pictureList.push(data.pageItemList[i].pictureList)
  218. this.pictureList_index.push(i)
  219. }else if(data.pageItemList[i].pageRelation.businessType === 'FILE'){
  220. // console.log("文件模块",i)
  221. // 文件模块
  222. this.fileList.push(data.pageItemList[i].fileList)
  223. this.fileList_index.push(i)
  224. }else if(data.pageItemList[i].pageRelation.businessType === 'LINKS'){
  225. // console.log("链接模块",i)
  226. this.linksList.push(data.pageItemList[i].linksList)
  227. this.linksList_index.push(i)
  228. }else if(data.pageItemList[i].pageRelation.businessType === 'VIDEO'){
  229. // console.log("视频模块",i)
  230. // 视频模块
  231. this.videoList.push(data.pageItemList[i].videoList)
  232. this.videoList_index.push(i)
  233. }else if(data.pageItemList[i].pageRelation.businessType === 'EQUIPMENT'){
  234. // console.log("设备铭牌模块",i)
  235. // 设备铭牌模块
  236. this.equipmentList.push(data.pageItemList[i].equipmentList)
  237. this.equipmentList_index.push(i)
  238. }else if(data.pageItemList[i].pageRelation.businessType === 'RECORD'){
  239. // console.log("记录管理模块",i)
  240. }
  241. }
  242. }
  243. })
  244. },
  245. // 获取浏览记录
  246. get_browse(){
  247. uni.request({
  248. url: this.base_url + "/swagger/api/pageuser/v1/getPageUserByPageId/"+this.pageId,
  249. success: (res) => {
  250. console.log(res.data.data)
  251. this.browse = res.data.data
  252. for(let i=0;i<100;i++){
  253. // 获取随机色
  254. let r = parseInt(Math.random() * 256)
  255. let g = parseInt(Math.random() * 256)
  256. let b = parseInt(Math.random() * 256)
  257. // ES6 字符串拼接
  258. // this.bgColor = `rgba(${r},${g},${b},0.3)`
  259. let color = "rgba(" + r + "," + g + "," + b + "," + 0.3 + ")"
  260. // console.log(color)
  261. this.bgColor.push(color)
  262. }
  263. }
  264. })
  265. },
  266. // 获取二维码记录筛选接口
  267. get_selectRecord(){
  268. uni.request({
  269. url: this.base_url + "/swagger/api/page/v1/selectRecordByGetPageId/"+this.pageId,
  270. success: (res) => {
  271. console.log(res.data.data)
  272. this.recordList = res.data.data
  273. // 根据筛选标签获取列表接口
  274. this.get_PageRecordInstanceList(res.data.data[0].parentId)
  275. }
  276. })
  277. },
  278. set_parentId(parentId){
  279. this.get_PageRecordInstanceList(parentId)
  280. },
  281. // 根据筛选标签获取列表接口
  282. get_PageRecordInstanceList(parentId){
  283. uni.showLoading({
  284. icon:"none",
  285. title:"加载中...",
  286. mask:true
  287. })
  288. uni.request({
  289. url: this.base_url + "/swagger/api/record/v1/getPageRecordInstanceList?pageId="+this.pageId+"&pageRecordParentId=" + parentId + " &pageNumber=1&pageSize=5",
  290. success: (res) => {
  291. console.log(res.data.data)
  292. this.instanceList = res.data.data
  293. uni.hideLoading()
  294. }
  295. })
  296. },
  297. // 获取添加记录入口列表
  298. get_selectRecord_list(){
  299. uni.request({
  300. url: this.base_url + "/swagger/api/page/v1/selectRecordByGetPageId/"+this.pageId,
  301. success: (res) => {
  302. console.log(res.data.data)
  303. this.selectRecord_list = res.data.data
  304. let selectRecord_list_name = []
  305. res.data.data.map(function(item,index){
  306. selectRecord_list_name.push(item.templateName)
  307. })
  308. console.log(selectRecord_list_name)
  309. this.selectRecord_list_name = selectRecord_list_name
  310. }
  311. })
  312. },
  313. },
  314. }
  315. </script>
  316. <style lang="scss">
  317. page{
  318. box-sizing: border-box;
  319. padding: 25rpx;
  320. margin-bottom: 90px;
  321. }
  322. .pageItemList{
  323. width: 700rpx;
  324. margin-bottom: 40rpx;
  325. }
  326. .bottom_btn{
  327. position: fixed;
  328. left: 0;
  329. bottom: 0;
  330. width: 750rpx;
  331. line-height: 60px;
  332. background-color: #009FE8;
  333. color: #FFFFFF;
  334. text-align: center;
  335. font-weight: 700;
  336. }
  337. </style>