index.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555
  1. <template>
  2. <view>
  3. <view class="top-fixed" :style="'height:'+systems.barHeight +'rpx;'">
  4. <view class="top-c ddflex" :style="'margin-top:'+systems.ktxStatusHeight +'rpx;height:'+systems.navigationHeight +'rpx;'">
  5. <navigator open-type="navigateBack" class="top-back"><image :src="picUrlss+'back_black.png'"></image></navigator>
  6. </view>
  7. </view>
  8. <view class="map-box">
  9. <map :longitude="pois.poiLongitude" :latitude="pois.poiLatitude" :markers="covers" ref="map1" class="map" scale="16"></map>
  10. </view>
  11. <view class="map-info">
  12. <view class="map-infos ddflex">
  13. <view class="map-loc fflex">{{pois.poiName}}</view>
  14. <view class="map-num">{{commentCount}} 帖子</view>
  15. </view>
  16. <view class="map-add">{{pois.poiAddress}}</view>
  17. <block v-if="teamList.length>0">
  18. <view class="map-tits">附近的队伍</view>
  19. <view class="map-team">
  20. <scroll-view scroll-x="true" class="map-teams">
  21. <view class="li" v-for="(item,index) in teamList" :key="index" @click="jumpUrl('/office/team/index?id='+item.id)">
  22. <view class="ddflex">
  23. <image :src="item.url?item.url:picUrlss+'office_images/team_default.png'" mode="aspectFill"></image>
  24. <view class="fflex">
  25. <view class="tover">{{item.title}}</view>
  26. <text>{{item.memberNum}}成员</text>
  27. </view>
  28. <view class="li-btn" @click.stop="joinTeam(item,index)">{{item.isJoin == 1 ? '去看看':'加入'}}</view>
  29. </view>
  30. </view>
  31. </scroll-view>
  32. </view>
  33. </block>
  34. </view>
  35. <view class="cons-b">
  36. <view class="tab ddflex">
  37. <!-- <view :class="'li ' + (pType == 1 ? 'active' : '')" @click="swiPType(1)">综合</view> -->
  38. <!-- <view :class="'li ' + (cateIndex == index ? 'active' : '')" @click="swiTree(item,index)" v-for="(item,index) in category" :key="index">{{item.name}}</view> -->
  39. <view :class="'li ' + (pType == 12 ? 'active' : '')" @click="swiPType(12)">最新</view>
  40. <view :class="'li ' + (pType == 5 ? 'active' : '')" @click="swiPType(5)">热门</view>
  41. </view>
  42. <view class="list" v-if="officeList && officeList.length > 0">
  43. <view class="li" v-for="(item, index) in officeList" :key="index">
  44. <view class="user ddflex" @click="jumpUrl('/topics/home/home?userId=' + item.userDTO.id)">
  45. <image :src="item.userDTO.avatar?item.userDTO.avatar:'/static/images/def_head.png'" mode="aspectFill" class="userimg"></image>
  46. <view class="fflex">
  47. <view class="namea ddflex">
  48. <view class="name fflex ddflex">{{ item.userDTO.nickName }}
  49. <!-- <image src="../../static/images/vip_tag.png" class="vip-tag" v-if="item.userDTO.levelGrade > 0"></image> -->
  50. <image v-if="item.userDTO.isOpenWeRunData" style="width:15rpx;height:20rpx;margin-left: 10rpx;" src="../../static/images/yd.png"></image>
  51. </view>
  52. <view class="time">{{ item.time }}</view>
  53. </view>
  54. <view class="area" v-if="item.userDTO.cityName">{{ item.userDTO.provinceName }} {{ item.userDTO.cityName }}</view>
  55. </view>
  56. </view>
  57. <view class="des" @click="jumpUrlDetail(item)"><rich-text :nodes="item.content"></rich-text></view>
  58. <!-- //如果有投票,就不显示图片 -->
  59. <block v-if="!item.qyPoll">
  60. <view class="video" v-if="item.isHaveVideo && config.open_community_video == 1">
  61. <video :src="item.url" :show-center-play-btn="false" :controls="item.isControls" :autoplay="item.isControls" :id="'myVideo'+index" @pause="videoPause(index)" @ended="videoEnded(index)"></video>
  62. <view class="video-play ddflex" @click="videoPlay(index)" v-if="item.isShowPlayBtn"><image src="../../static/images/play.png"></image></view>
  63. </view>
  64. <view class="imgbox ddflex" @click="jumpUrlDetail(item)" v-if="!item.isHaveVideo"><!-- @click="previewImgss(item.url, idx)" -->
  65. <block v-if="item.url&&item.url.length>0">
  66. <image mode="aspectFill" v-for="(it, idx) in item.url" :src="it" :key="idx"></image>
  67. </block>
  68. </view>
  69. </block>
  70. <!-- 话题 -->
  71. <view class="ddflex" v-if="item.qyDialogu&&item.qyDialogu.isExamine==1">
  72. <view class="topic ddflex" @click="jumpUrl('/topics/detail/detail?topicId=' + item.qyDialogu.id)">
  73. <image src="../../static/images/topic.png"></image>
  74. {{ item.qyDialogu.title }}
  75. </view>
  76. </view>
  77. <view class="loca ddflex" @click="jumpUrlPoi(item,'/office/poi/index')" v-if="item.poiName"><image :src="picUrlss+'office_images/loca.png'"></image><text v-if="item.poiDistance > 0">{{item.poiDistance ? item.poiDistance < 1000 ? item.poiDistance+'m' : (item.poiDistance/1000).toFixed(1)+'km' : ''}}</text>{{item.poiName}}</view>
  78. <!-- 投票 -->
  79. <view :class="'vote-box' + (item.qyPoll.isEnd ? ' ends' : '')" v-if="item.qyPoll">
  80. <view class="vote-tit">{{ item.qyPoll.title }}</view>
  81. <block v-if="item.qyPoll.isVote == 1">
  82. <view class="vote-list end" @click="jumpUrlDetail(item)">
  83. <view :class="'lis ddflex ' + (itpy.isVote == 1 ? 'active' : '')" v-for="(itpy, idex) in JSON.parse(item.qyPoll.optionJson)" :key="idex">
  84. <view class="percent" :style="'width:' + parseFloat(itpy.proportion) + '%;'"></view>
  85. <view class="fflex">{{ itpy.name }}</view>
  86. <view>{{ parseFloat(itpy.proportion) + '%' }}</view>
  87. </view>
  88. </view>
  89. </block>
  90. <block v-else>
  91. <view class="vote-list">
  92. <view class="lis" v-for="(itpy, idex) in JSON.parse(item.qyPoll.optionJson)" :key="idex" @click="submitPoll(item, index, idex)">
  93. {{ itpy.name }}
  94. </view>
  95. </view>
  96. </block>
  97. <view class="vote-can" v-if="item.qyPoll.isEnd"><text>{{item.qyPoll.voteCount}}人参与</text>投票已结束</view>
  98. </view>
  99. <block v-if="item.type==10||item.type==11">
  100. <view v-if="item.type==10" class="ddflex step-box" style="justify-content: space-between;" @click="jumpUrl('/exercise/record/record?userId=' + item.userId)">
  101. <view>
  102. <view class="step-date">{{item.wxRun.step}}</view>
  103. <view class="step-label">步数</view>
  104. </view>
  105. <view>
  106. <view class="step-date">{{item.wxRun.index}}</view>
  107. <view class="step-label" style="text-align: right;">名次</view>
  108. </view>
  109. </view>
  110. <view v-if="item.type==11" class="ddflex step-box" style="justify-content: space-between;" @click="jumpUrl('/match/activityDetail/activityDetail?id=' + item.matchContent.id)">
  111. <image class="step-pic" :src="item.matchContent.pic" mode="aspectFill"></image>
  112. <view class="fflex">
  113. <view class="step-title tovers">{{item.matchContent.title}}</view>
  114. <view class="ddflex" style="justify-content: space-between;margin-top: 10rpx;">
  115. <view class="step-price">{{item.matchContent.endTime}}</view>
  116. <view class="step-btn">查看</view>
  117. </view>
  118. </view>
  119. </view>
  120. </block>
  121. <view v-if="item.userGroupId" class="ddflex step-box" style="padding: 25rpx 21rpx;" @click="jumpUrl('/office/team/index?id=' + item.userGroupId)">
  122. <image style="width: 24rpx;height: 24rpx;margin-right: 13rpx;" src="../../static/images/link.png"></image>
  123. <view style="font-weight: 500;color: #999999;">Team:</view>
  124. <view>{{item.userGroupTitle}}</view>
  125. </view>
  126. <block v-else>
  127. <view class="product" v-if="item.products && item.products.length > 0">
  128. <view scroll-x="true" class="pro-view pro-view1" v-if="item.products.length == 1">
  129. <view class="lis" v-for="(it, idx) in item.products" :key="idx" @click="toProductDetail(it)">
  130. <view class="ddflex">
  131. <image :src="it.pic" mode="aspectFill" class="pic"></image>
  132. <view class="fflex">
  133. <view class="title tover">{{ it.title }}</view>
  134. <view class="opts ddflex">
  135. <view class="money"><text>¥</text>{{ it.salePrice }}</view>
  136. <view class="pro-btn"><image src="../../static/pages/images/n_cart.png"></image></view>
  137. </view>
  138. </view>
  139. </view>
  140. </view>
  141. </view>
  142. <scroll-view scroll-x="true" class="pro-view" v-else>
  143. <view class="lis" v-for="(it, idx) in item.products" :key="idx" @click="toProductDetail(it)">
  144. <view class="ddflex">
  145. <image :src="it.pic" mode="aspectFill" class="pic"></image>
  146. <view class="fflex">
  147. <view class="title tover">{{ it.title }}</view>
  148. <view class="opts ddflex">
  149. <view class="money"><text>¥</text>{{ it.salePrice }}</view>
  150. <view class="pro-btn"><image src="../../static/pages/images/n_cart.png"></image></view>
  151. </view>
  152. </view>
  153. </view>
  154. </view>
  155. </scroll-view>
  156. </view>
  157. </block>
  158. <view class="opt ddflex" v-if="!item.source">
  159. <view class="fflex" @click="jumpUrlDetail(item)">{{fomatNumbers(item.count.browseCount)}}次浏览</view>
  160. <view class="ddflex" @click="submitFabulous(2, item.id, index)">
  161. <image :src="'../../static/images/' + (item.isPraise == 1 ? 'like_h' : 'like') + '.png'"></image>
  162. {{fomatNumbers(item.count.fabulousCount)}}
  163. </view>
  164. <view class="ddflex" @click="jumpUrlDetail(item)">
  165. <image src="../../static/images/comment.png"></image>
  166. {{fomatNumbers(item.count.commentCount)}}
  167. </view>
  168. <button open-type="share" hover-class="none" class="opt-share ddflex">
  169. <image src="../../static/images/share.png"></image>
  170. 分享
  171. </button>
  172. </view>
  173. </view>
  174. </view>
  175. <view class="nodata" v-else>
  176. <image :src="picUrlss + 'empty_jl.png'"></image>
  177. <text>暂无动态</text>
  178. </view>
  179. </view>
  180. <!-- <view class="create" @click="createJump('/office/news/news?newsType=4')" v-if="config.is_show_create_btn == 1"><image src="../../static/images/create.png"></image>发布</view> -->
  181. <!-- <view class="ceng" v-if="isShowbtn" @click="hideBtn"></view> @click="showBtn"
  182. <view class="side ddflex" v-if="isShowbtn">
  183. <view class="li" @click="createJump('/office/news/news?newsType=4')">
  184. <image src="../../static/images/ll_cz.png"></image>
  185. <view>图文</view>
  186. </view>
  187. <view class="li" @click="createJump('/office/news/news?newsType=4?isVideo=true')">
  188. <image src="../../static/images/ll_dt.png"></image>
  189. <view>视频</view>
  190. </view>
  191. </view> -->
  192. </view>
  193. </template>
  194. <script>
  195. const app = getApp();
  196. const api = require('../../utils/api.js');
  197. const req = require('../../utils/request.js');
  198. const util = require('../../utils/util.js');
  199. const QQMapWX = require("../../utils/qqmap.js");
  200. export default {
  201. components: {
  202. },
  203. data() {
  204. return {
  205. systems: {},
  206. isShowbtn: false,
  207. isShowPage: false,
  208. picUrlss: req.public.picUrls,
  209. opt: {},
  210. map: '',
  211. covers: [],
  212. pois: {},
  213. isLoad: true,
  214. form: {
  215. page: 1,
  216. limit: 10
  217. },
  218. pType: 12, //排序: 1综合, 2最新+综合,3浏览最多,4评论最多,5热门,10最新+标签,12最新
  219. isHoleLoad: true,
  220. holeForm: {
  221. page: 1,
  222. limit: 10
  223. },
  224. holeType: 1, //排序: 1综合, 2最新,3浏览最多,4评论最多,5热门
  225. hotTopicList: [],
  226. hotPollList: [],
  227. officeList: [], //聊一聊
  228. commentCount: 0,
  229. config: {},
  230. videoCurrent: null,
  231. videoContext: '',
  232. category: [],
  233. cateIndex: -1,
  234. treeId: '',
  235. teamList: []
  236. }
  237. },
  238. onLoad(options) {
  239. this.opt = options;
  240. let pages = getCurrentPages(); //获取所有页面栈实例列表
  241. let prevPage = pages[pages.length - 2]; //上一页页面实例
  242. if(prevPage){
  243. this.pois = prevPage.$vm.currentPoi;
  244. }
  245. this.map = uni.createMapContext("map1", this);
  246. let points = {
  247. latitude: this.pois.poiLatitude,
  248. longitude: this.pois.poiLongitude
  249. }
  250. let obj = {
  251. id: 0,
  252. latitude: this.pois.poiLatitude,
  253. longitude: this.pois.poiLongitude,
  254. width: 20,
  255. height: 30,
  256. }
  257. this.covers.push(obj);
  258. this.map.moveToLocation(points,res=>{
  259. console.log('地图',res)
  260. })
  261. this.getTeamPage();
  262. this.getOfficeList();
  263. },
  264. onReachBottom() {
  265. this.form.page++;
  266. this.getOfficeList();
  267. },
  268. methods: {
  269. //聊一聊切换排序类型
  270. swiPType(type) {
  271. this.isLoad = true;
  272. this.form.page = 1;
  273. this.pType = type;
  274. this.cateIndex = -1
  275. this.treeId = ''
  276. this.getOfficeList();
  277. },
  278. //预览图片
  279. previewImgss(picUrls, index) {
  280. //预览合同图片
  281. var src = picUrls[index];
  282. let imgs = picUrls;
  283. uni.previewImage({
  284. current: src, // 当前显示图片的http链接
  285. urls: imgs
  286. });
  287. },
  288. showBtn() {
  289. if (!req.isLogins(true)) {
  290. return;
  291. }
  292. this.isShowbtn = true;
  293. },
  294. hideBtn() {
  295. this.isShowbtn = false;
  296. },
  297. removeHtml(content) {
  298. return util.removeHtml(content);
  299. },
  300. createJump(url) {
  301. if (!req.isLogins(true)) {
  302. return;
  303. }
  304. this.jumpUrl(url);
  305. },
  306. jumpUrl(url){
  307. uni.navigateTo({
  308. url: url
  309. })
  310. },
  311. jumpUrlPoi(item,url){
  312. this.currentPoi = item;
  313. uni.navigateTo({
  314. url: url
  315. })
  316. },
  317. joinTeam(item,index){
  318. if(item.isJoin == 1) {
  319. uni.navigateTo({
  320. url: '/office/team/index?id='+item.id
  321. })
  322. return false;
  323. }
  324. if(item.relationMatch){
  325. uni.navigateTo({
  326. url: '/match/activityDetail/activityDetail?id='+item.relationMatch.id
  327. })
  328. return false;
  329. }
  330. req.postRequest(api.user_team_follow,{userGroupId: item.id},data=>{
  331. req.msg('加入团队成功');
  332. this.teamList[index].isJoin = 1;
  333. })
  334. },
  335. jumpToPractice(item,url){
  336. let checkCategory = {
  337. id: item.question.cateId,
  338. name: item.question.cateName
  339. }
  340. req.setStorage('checkCategory',checkCategory)
  341. this.jumpUrl(url);
  342. },
  343. jumpUrlDetail(item) {
  344. this.jumpUrl('/office/detail/detail?contentId=' + item.id);
  345. },
  346. toProductDetail(item) {
  347. this.jumpUrl('/product/detail/detail?id=' + item.id);
  348. },
  349. getTeamPage(){
  350. let form = {
  351. page: 1,
  352. limit: 5,
  353. poiLongitude: this.pois.poiLongitude,
  354. poiLatitude: this.pois.poiLatitude
  355. }
  356. console.log('加载团队',form)
  357. req.getRequest(api.user_team_page,form,data=>{
  358. this.teamList = data.list;
  359. })
  360. },
  361. swiTree(item,index){
  362. if(this.cateIndex == index) return false;
  363. this.cateIndex = index;
  364. this.pType = -1;
  365. this.treeId = item.id;
  366. this.form.page = 1;
  367. this.isLoad = true;
  368. this.getOfficeList()
  369. },
  370. sum(arr) {
  371. var s = 0;
  372. for (var i=arr.length-1; i>=0; i--) {
  373. if(arr[i].count){
  374. s += Number(arr[i].count);
  375. }
  376. }
  377. return s;
  378. },
  379. fomatNumbers(num){
  380. return util.formatNumbers(num)
  381. },
  382. getOfficeList() {
  383. let that = this;
  384. var pramData = {};
  385. pramData.page = this.form.page;
  386. pramData.limit = this.form.limit;
  387. pramData.distance = 20000;//限制距离,单位米
  388. // pramData.type = 4;
  389. if (this.pType == 5) {
  390. //热门
  391. pramData.isEssence = 2;
  392. pramData.orderType = 1;
  393. } else {
  394. pramData.orderType = this.pType;
  395. }
  396. if(this.treeId) {
  397. pramData.treeId = this.treeId
  398. pramData.orderType = 1
  399. }else delete pramData.treeId
  400. pramData.poiLongitude = this.pois.poiLongitude;
  401. pramData.poiLatitude = this.pois.poiLatitude;
  402. // pramData.poiName = this.pois.poiName;
  403. if (!this.isLoad) return false;
  404. this.isLoad = false;
  405. if(pramData.page == 1){
  406. uni.showLoading({
  407. mask: true
  408. })
  409. }
  410. req.getRequest('/api/v3/moments/page', pramData, data => {
  411. if(data.list&&data.list.length > 0){
  412. data.list.map(it=>{
  413. if(it.qyPoll && it.qyPoll.isEnd){
  414. it.qyPoll.voteCount = that.sum(JSON.parse(it.qyPoll.optionJson))
  415. }
  416. if(it.url){
  417. let h = it.url.substring(it.url.lastIndexOf('.') + 1)
  418. if(h.indexOf('mp4')<0&&h.indexOf('MP4')<0){
  419. it.url = it.url.split(',');
  420. }else{
  421. it.isHaveVideo = true
  422. it.isControls = false
  423. it.isShowPlayBtn = true
  424. }
  425. }
  426. it.content = '<div style="overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 5;-webkit-box-orient: vertical;word-break: break-all;">' + it.content + '</div>'
  427. return it;
  428. })
  429. }
  430. if (data.list && data.list.length >= 10) {
  431. this.isLoad = true;
  432. }
  433. if (this.form.page > 1) {
  434. data.list = this.officeList.concat(data.list);
  435. } else {
  436. this.officeList = [];
  437. }
  438. this.officeList = data.list;
  439. if(this.pType == 12){
  440. this.commentCount = data.total;
  441. }
  442. this.isShowPage = true;
  443. uni.hideLoading();
  444. });
  445. },
  446. //提交点赞、取消点赞;收藏、取消收藏
  447. submitFabulous(type, id, index) {
  448. if (!req.isLogins(true)) {
  449. return;
  450. }
  451. var dataP = {};
  452. dataP.type = type; //1,观看 ,2点赞,3评论,4分享,5收藏
  453. dataP.momentsId = id;
  454. req.postRequestLoding('/api/v3/fabulous/save', dataP, data => {
  455. if (type == 2) {
  456. //动态点赞
  457. if (this.officeList[index].isPraise == 1) {
  458. //已赞
  459. this.officeList[index].isPraise = 0;
  460. this.officeList[index].count.fabulousCount--;
  461. req.saveBehaviorNew(id, this.officeList[index].pollId?10:11,11)
  462. } else {
  463. this.officeList[index].isPraise = 1;
  464. this.officeList[index].count.fabulousCount++;
  465. req.saveBehaviorNew(id, this.officeList[index].pollId?10:11,3)
  466. }
  467. }
  468. });
  469. },
  470. //提交投票
  471. submitPoll(item, pIndex, pollIndex) {
  472. if(item.qyPoll.isEnd){
  473. this.jumpUrlDetail(item)
  474. return false;
  475. }
  476. var dataP = {};
  477. // dataP.id = item.id;
  478. dataP.pollId = item.qyPoll.id;
  479. var pollObjList = JSON.parse(item.qyPoll.optionJson);
  480. dataP.pollOptionCode = pollObjList[pollIndex].code;
  481. req.postRequest('/api/v3/poll/saveDetails', dataP, data => {
  482. req.msg('投票成功');
  483. //图片完之后要将该投票的对象返回,便于做渲染%
  484. this.officeList[pIndex].qyPoll = data;
  485. req.saveBehaviorNew(item.id,10,5)
  486. });
  487. },
  488. goTop: function(e) {
  489. // 一键回到顶部
  490. if (uni.pageScrollTo) {
  491. uni.pageScrollTo({
  492. scrollTop: 0
  493. });
  494. } else {
  495. uni.showModal({
  496. title: '提示',
  497. content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
  498. });
  499. }
  500. },
  501. videoPlay(index){
  502. var that = this;
  503. var curIdx = index;
  504. this.officeList[index].isControls = true
  505. this.officeList[index].isShowPlayBtn = false
  506. // 有播放时先将prev暂停,再播放当前点击的current
  507. if (that.videoCurrent != null) {
  508. var videoContextPrev = uni.createVideoContext('myVideo' + that.videoCurrent)
  509. if (that.videoCurrent != curIdx) {
  510. this.officeList[that.videoCurrent].isControls = false
  511. this.officeList[that.videoCurrent].isShowPlayBtn = true
  512. videoContextPrev.stop()
  513. }
  514. that.videoCurrent = curIdx
  515. var videoContextCurrent = uni.createVideoContext('myVideo' + curIdx)
  516. videoContextCurrent.play()
  517. } else {
  518. // 没有播放时播放视频
  519. that.videoCurrent = curIdx
  520. var videoContext = uni.createVideoContext('myVideo' + curIdx) // 对应的视频id
  521. videoContext.play()
  522. }
  523. },
  524. videoPause(index){
  525. this.officeList[index].isControls = false
  526. this.officeList[index].isShowPlayBtn = true
  527. },
  528. videoEnded(index){
  529. this.officeList[index].isControls = false
  530. this.officeList[index].isShowPlayBtn = true
  531. }
  532. },
  533. created() {
  534. const systemInfo = uni.getSystemInfoSync();
  535. // px转换到rpx的比例
  536. let pxToRpxScale = 750 / systemInfo.windowWidth;
  537. let systems = {
  538. ktxStatusHeight: systemInfo.statusBarHeight * pxToRpxScale, // 状态栏的高度
  539. navigationHeight: 44 * pxToRpxScale // 导航栏的高度
  540. };
  541. systems.barHeight = systems.ktxStatusHeight + systems.navigationHeight;
  542. this.systems = systems;
  543. },
  544. }
  545. </script>
  546. <style>
  547. @import "./index.css";
  548. </style>