index.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709
  1. <template>
  2. <page-meta :page-style="isMorningShow ? 'overflow: hidden;' : ''">
  3. <view v-if="sourceType == '微信分享' && mixinIsSceneNumber == 1154" class="share-line-content">
  4. <view class="share-content-box">
  5. <image class="share-image" src="https://hzstatic.hzinsights.com/yx_xcx/home-share.png"></image>
  6. </view>
  7. <image class="share-report-go_cygx_xcx" src="https://hzstatic.hzinsights.com/new_cygx/go_cygx_xcx.png"></image>
  8. </view>
  9. <block v-else>
  10. <view class="container New-container">
  11. <view :class="['content-search', bannerClass && 'banne-bg', bannerPosition && 'banner-Position']">
  12. <view class="top-content-box">
  13. <search-bar @goSearch="goSearch" :searchTitle="searchPlaceholderList.SummarySearch" :width="58">
  14. <template slot="content-left">
  15. <view class="box-img" @click="goMyInfo">
  16. <view class="content-img">
  17. <image v-if="info.Headimgurl" :src="info.Headimgurl" alt=""></image>
  18. <image v-else src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/logo.png" class="avatar"></image>
  19. </view>
  20. </view>
  21. </template>
  22. </search-bar>
  23. </view>
  24. </view>
  25. <view class="banne-content" v-if="bannerDataList.length > 0">
  26. <swiper autoplay :interval="4000" circular indicator-dots>
  27. <view v-for="item in bannerDataList" :key="item.BannerId" @click="bannerSwiperHandler(item)">
  28. <swiper-item>
  29. <image :src="item.IndexImg"></image>
  30. <view class="banner-title">
  31. <text class="text_twoLine" :style="{ 'font-size': item.Subtitle.length > 24 ? '45rpx' : '50rpx' }">
  32. {{ item.Title }}
  33. </text>
  34. <text class="time text_twoLine"> {{ item.Subtitle }}</text>
  35. </view>
  36. </swiper-item>
  37. </view>
  38. </swiper>
  39. </view>
  40. <view class="lable-select-box" v-if="industryTablList.length > 0">
  41. <view class="global_two_tabs industry-box-tabs">
  42. <view
  43. :class="['item', item.ChartPermissionId == industrytabActId && 'tabs-active']"
  44. v-for="(item, index) in industryTablList"
  45. :key="item.ChartPermissionId"
  46. @click="toggleIndustryTab(item, index)"
  47. >
  48. {{ item.PermissionName }}
  49. </view>
  50. </view>
  51. <view
  52. v-if="isTopHeight"
  53. class="lable-select-content"
  54. :style="[
  55. { top: isTopHeight },
  56. { 'background-color': isScrollNumber >= 175 ? '#fff' : '#f5f6fa' },
  57. { 'box-shadow': isScrollNumber >= 175 ? '0rpx 3rpx 8rpx 0rpx rgba(0, 0, 0, 0.16)' : '' },
  58. ]"
  59. >
  60. <view class="lable-row" v-for="(item, index) in lableIsRows" :key="index">
  61. <view :class="['lable-item', lable.isAct && 'item-active']" v-for="lable in item" :key="lable.TagId" @click="lableKeysHandler(lable)">
  62. {{ lable.TagName }}
  63. <image v-if="lable.TagName == '问答'" class="item-image" lazy-load src="https://hzstatic.hzinsights.com/cygx/icon/new_report.png"></image>
  64. </view>
  65. </view>
  66. </view>
  67. </view>
  68. <block v-if="newDataList && newDataList.length">
  69. <view :class="['content-ul', industryTablList.length == 0 && 'content-ul-top']">
  70. <view class="item-ul">
  71. <block v-for="(item, index) in newDataList" :key="index">
  72. <view v-if="index % 2 == 0 && item.IsShowData">
  73. <block v-if="item.Source === 'article' || item.Source === 'yanxuanspecial' || item.Source === 'ficcreport'"> <ReportItem :list="item.Article" /></block>
  74. <block v-if="item.Source === 'newchart'">
  75. <ChartItem :list="item.Newchart" :isMyChartCollection="isMyChartCollection" @myChartIsTop="myChartIsTop" @myChartCollect="myChartCollect" />
  76. </block>
  77. <block v-if="item.Source === 'roadshow' || item.Source === 'activityvideo' || item.Source === 'activityvoice' || item.Source === 'askserievideo'">
  78. <RoadshowItem :list="item.Roadshow" @isCollectionHandeler="isCollectionHandeler" />
  79. </block>
  80. <block v-if="item.Source === 'activity' || item.Source === 'activityspecial'">
  81. <ActivityItem :list="item.Activity" />
  82. </block>
  83. <block v-if="['researchsummary', 'minutessummary', 'meetingreviewchapt', 'productinterior', 'reportselection'].includes(item.Source)">
  84. <item-content :list="dataListItem(item)" @showMorningDialog="showMorningDialog" />
  85. </block>
  86. <FiccReport v-if="item.Source === 'ficcreportxcx'" :list="item.FiccReportXcx" />
  87. </view>
  88. </block>
  89. </view>
  90. <view class="item-ul">
  91. <block v-for="(item, index) in newDataList" :key="index">
  92. <view v-if="index % 2 !== 0 && item.IsShowData">
  93. <block v-if="item.Source === 'article' || item.Source === 'yanxuanspecial' || item.Source === 'ficcreport'"> <ReportItem :list="item.Article" /></block>
  94. <block v-if="item.Source === 'newchart'">
  95. <ChartItem :list="item.Newchart" :isMyChartCollection="isMyChartCollection" @myChartIsTop="myChartIsTop" @myChartCollect="myChartCollect" />
  96. </block>
  97. <block v-if="item.Source === 'roadshow' || item.Source === 'activityvideo' || item.Source === 'activityvoice' || item.Source === 'askserievideo'">
  98. <RoadshowItem :list="item.Roadshow" @isCollectionHandeler="isCollectionHandeler" />
  99. </block>
  100. <block v-if="item.Source === 'activity' || item.Source === 'activityspecial'">
  101. <ActivityItem :list="item.Activity" />
  102. </block>
  103. <block v-if="['researchsummary', 'minutessummary', 'meetingreviewchapt', 'productinterior', 'reportselection'].includes(item.Source)">
  104. <item-content :list="dataListItem(item)" @showMorningDialog="showMorningDialog" />
  105. </block>
  106. <FiccReport v-if="item.Source === 'ficcreportxcx'" :list="item.FiccReportXcx" />
  107. </view>
  108. </block>
  109. </view>
  110. </view>
  111. <u-loadmore :status="status" icon-type="flower" :load-text="loadText" margin-top="20" v-if="page_no > 1" />
  112. </block>
  113. <view class="nodata" v-else>
  114. <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/act_search.png" mode="" class="nodata_ico"></image>
  115. <text style="">暂无数据</text>
  116. </view>
  117. <morning-dlg v-if="isMorningShow" :isMorningShow.sync="isMorningShow" :morningItem.sync="morningItem" />
  118. </view>
  119. <suspenButton :show.sync="wholeShowListData.IsShow" v-if="wholeShowListData.IsShow" ref="suspenButton">
  120. <template slot="center">
  121. <image mode="widthFix" style="height: 120rpx; width: 120rpx" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/most_confidential.png "> </image>
  122. </template>
  123. <template slot="top">
  124. <image @click.stop="goSecretDetail(1)" mode="widthFix" style="height: 120rpx; width: 120rpx" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/company_icon.png"> </image>
  125. </template>
  126. <template slot="left">
  127. <image @click.stop="goSecretDetail(3)" mode="widthFix" style="height: 120rpx; width: 120rpx" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/week_summary.png"> </image>
  128. </template>
  129. </suspenButton>
  130. <Loading />
  131. <videoModule :showVideoPop.sync="showVideoPopUp" :videoPopList="videoPopListUp" />
  132. <view v-if="showAudioBox">
  133. <audioModule :showAudioPop.sync="showAudioPop" />
  134. </view>
  135. <view class="paly-list-image" v-if="playlistData.length > 0" @click="showAudioBoxPlayList">
  136. <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/Joined_play_list.png"></image>
  137. </view>
  138. </block>
  139. </page-meta>
  140. </template>
  141. <script>
  142. import { Home, Mine, Reports } from "@/config/api";
  143. import ChartItem from "@/components/ItemComponent/chartItem.vue";
  144. import ReportItem from "@/components/ItemComponent/reportItem.vue";
  145. import RoadshowItem from "@/components/ItemComponent/roadshowItem.vue";
  146. import ActivityItem from "@/components/ItemComponent/activityItem.vue";
  147. import SearchBar from "@/components/search-bar/searchBar.vue";
  148. import MorningDlg from "./components/morningDlg.vue";
  149. import ItemContent from "./components/ItemContent.vue";
  150. import videoModule from "@/components/videoModule/index";
  151. import suspenButton from "@/components/suspen_button.vue";
  152. import audioModule from "@/components/audioModule/index";
  153. import FiccReport from "@/components/ItemComponent/ficcReport.vue";
  154. export default {
  155. data() {
  156. return {
  157. newDataList: [],
  158. page_no: 1,
  159. pageSize: 10,
  160. status: "loadmore",
  161. refresh: false, //正在下拉
  162. loadText: {
  163. loadmore: "上拉加载更多",
  164. loading: "加载中",
  165. nomore: "已经到底了",
  166. },
  167. info: {},
  168. isMorningShow: false, // 晨会的弹框
  169. morningItem: {}, // 晨会的弹框
  170. bannerDataList: [], // banner数据
  171. showVideoPopUp: false, //
  172. videoPopListUp: {},
  173. isScrollNumber: 0,
  174. dataListLable: [], // 标签的数据
  175. actIdLable: "", // 标签选择后的ID
  176. isTopHeight: "",
  177. lableArrList: [],
  178. showAudioPop: false,
  179. industryTablList: [],
  180. industrytabActId: 0,
  181. sourceType: "",
  182. };
  183. },
  184. computed: {
  185. bannerClass() {
  186. //判断banner的样式
  187. return this.bannerDataList.length > 0 && this.isScrollNumber < 235;
  188. },
  189. bannerPosition() {
  190. return this.bannerDataList.length > 0;
  191. },
  192. lableIsRows() {
  193. //处理标签的样式
  194. const rows = [this.dataListLable];
  195. return rows;
  196. },
  197. showAudioBox() {
  198. return this.$store.state.audioBg.parseIntShow;
  199. },
  200. // 播放列表数据
  201. playlistData() {
  202. return this.$store.state.audioJoinPlaylist.playlist;
  203. },
  204. },
  205. components: {
  206. ChartItem,
  207. ReportItem,
  208. RoadshowItem,
  209. ActivityItem,
  210. SearchBar,
  211. MorningDlg,
  212. ItemContent,
  213. videoModule,
  214. suspenButton,
  215. audioModule,
  216. FiccReport,
  217. },
  218. methods: {
  219. showAudioBoxPlayList() {
  220. this.$store.commit("audioBg/parseIntAudio", true);
  221. this.showAudioPop = true;
  222. uni.$emit("play-list-emit", {});
  223. },
  224. // 获取最先数据
  225. async getNewList() {
  226. const res = await Home.getNewList({
  227. PageSize: this.pageSize,
  228. CurrentIndex: this.page_no,
  229. TagIds: this.actIdLable || "",
  230. ChartPermissionId: this.industrytabActId,
  231. });
  232. if (res.Ret === 200) {
  233. this.status = !res.Data.Paging.IsEnd ? "loadmore" : "nomore";
  234. let listArr = [];
  235. res.Data.List &&
  236. res.Data.List.forEach((item) => {
  237. let obj = {
  238. Source: item.Source,
  239. Article: item.Article || item.YanxuanSpecial || item.FiccReport,
  240. Newchart: item.Newchart,
  241. Activity: item.Activity || item.Activityspecial,
  242. Roadshow: item.Roadshow || item.Activityvideo || item.Activityvoice || item.AskserieVideo,
  243. ThreeSummary: item.Researchsummary || item.Minutessummary || item.Meetingreviewchapt || item.ProductInterior || item.ReportSelection,
  244. FiccReportXcx: item.FiccReportXcx,
  245. };
  246. listArr.push({ ...obj, IsShowData: obj.Article || obj.Newchart || obj.Roadshow || obj.Activity || obj.ThreeSummary || item.YanxuanSpecial || obj.FiccReportXcx });
  247. });
  248. this.newDataList = this.page_no === 1 ? listArr : [...this.newDataList, ...listArr];
  249. if (this.refresh) {
  250. uni.stopPullDownRefresh();
  251. this.refresh = false;
  252. }
  253. }
  254. },
  255. // 微路演收藏
  256. async isCollectionHandeler(item) {
  257. await this.$store.dispatch("showLoginModal");
  258. const res = await Home.microRoadshowCollect({
  259. SourceId: item.SourceId,
  260. SourceType: item.Type,
  261. PageRouter: this.$store.state.pageRouterReport,
  262. });
  263. if (res.Ret === 200) {
  264. let index = this.newDataList.findIndex((key) => key.Roadshow && key.Roadshow.SourceId == item.SourceId && key.Roadshow.Type == item.Type);
  265. res.Data.Status == 1 ? (this.newDataList[index].Roadshow.IsCollect = true) : (this.newDataList[index].Roadshow.IsCollect = false);
  266. uni.showToast({
  267. title: res.Msg,
  268. duration: 2000,
  269. });
  270. }
  271. },
  272. // 跳转到我的页面
  273. goMyInfo() {
  274. uni.navigateTo({
  275. url: "/pageMy/myPage/myPage",
  276. });
  277. },
  278. // 跳转绑定页面
  279. goLogin() {
  280. uni.showModal({
  281. title: "即将前往登录页面,请确认是否继续",
  282. content: "为了给您提供更好的使用体验,请登录后再进行查看或操作",
  283. confirmColor: "#376cbb",
  284. cancelColor: "#606266",
  285. success: function (res) {
  286. if (res.confirm) {
  287. //已授权未绑定
  288. uni.navigateTo({
  289. url: "/pageMy/login/login",
  290. });
  291. }
  292. },
  293. });
  294. },
  295. /* 搜索 */
  296. goSearch() {
  297. uni.navigateTo({ url: "/pages-search/indedxSearch/indedxSearch?isType=" + this.topTabsActive + "&source=首页页面" });
  298. },
  299. async getUserInfo() {
  300. const res = await Mine.getInfo();
  301. if (res.Ret === 200) {
  302. this.info = res.Data;
  303. res.Data.Mobile && this.$db.set("mobile", res.Data.Mobile);
  304. }
  305. },
  306. // 晨会弹框显示
  307. async showMorningDialog(item) {
  308. if (item.Source == "meetingreviewchapt") {
  309. const res = await Reports.morning_meeting_history({ Id: item.Id, SourcePage: "首页" });
  310. this.isMorningShow = true;
  311. this.morningItem = item;
  312. }
  313. },
  314. dataListItem(item) {
  315. let obj = item.ThreeSummary ? { ...item.ThreeSummary, Source: item.Source } : {};
  316. return obj;
  317. },
  318. /* 绝密标签点击后的跳转 */
  319. goSecretDetail(type) {
  320. if (type == 1) {
  321. uni.navigateTo({
  322. url: "/reportPages/keyCompany/keyCompany",
  323. });
  324. } else {
  325. uni.navigateTo({
  326. url: "/reportPages/secretDetails/secretDetails",
  327. });
  328. }
  329. this.$refs.suspenButton.onOpen();
  330. },
  331. // 获取banner 列表
  332. async getBannerList() {
  333. const res = await Home.bannerList();
  334. if (res.Ret === 200) {
  335. this.bannerDataList = res.Data.List || [];
  336. }
  337. },
  338. // bannaer 点击事件
  339. async bannerSwiperHandler(item) {
  340. let { Type, SourceId, Path } = item.BannerUrlResp;
  341. if (Type == 1) return;
  342. await Home.bannerHistory({
  343. BannerId: item.BannerId,
  344. });
  345. if (Type == 5) {
  346. let obj = {
  347. BackgroundImg: "https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/my_log.png",
  348. Id: SourceId,
  349. PlaySeconds: "15",
  350. ResourceUrl: "https://hzstatic.hzinsights.com/static/yb/video/8617330c2a76e0c35999f6466b4470c4.mp4",
  351. Title: "三分钟了解弘则研究体系和方法论",
  352. Type: "三分钟了解弘则研究体系和方法论",
  353. };
  354. this.videoPopListUp = obj;
  355. this.showVideoPopUp = true;
  356. await Mine.addHistory();
  357. } else {
  358. Path &&
  359. uni.navigateTo({
  360. url: Path + SourceId,
  361. });
  362. }
  363. },
  364. async lableKeysHandler(item) {
  365. const checkList = item.CheckList;
  366. if (item.isAct) {
  367. item.isAct = false;
  368. this.lableArrList = this.lableArrList.filter((key) => checkList.includes(key));
  369. this.getLableDataList();
  370. return;
  371. }
  372. let isFlag = false; //是否有交集
  373. for (let e of checkList) {
  374. if (this.lableArrList.includes(e)) {
  375. isFlag = true;
  376. break;
  377. }
  378. }
  379. if (!isFlag) {
  380. this.lableArrList = [...this.lableArrList, ...checkList];
  381. item.isAct = true;
  382. } else {
  383. //有交集
  384. // 找到有交集的那个 设置为false 然后将点击的这个设置为true
  385. this.lableIsRows.forEach((e1) => {
  386. e1.forEach((e2) => {
  387. let flag = false;
  388. for (let i of e2.CheckList) {
  389. if (this.lableArrList.includes(i)) {
  390. flag = true;
  391. break;
  392. }
  393. }
  394. if (flag) {
  395. e2.isAct = false;
  396. }
  397. });
  398. });
  399. item.isAct = true;
  400. }
  401. this.getLableDataList();
  402. if (!item.isAct) return;
  403. const res = await Home.tagAddHistory({
  404. TagId: item.TagId,
  405. });
  406. },
  407. getLableDataList() {
  408. let actId = [];
  409. this.lableIsRows.forEach((item) => {
  410. item.forEach((_) => {
  411. _.isAct && actId.push(_.TagId);
  412. });
  413. });
  414. this.page_no = 1;
  415. this.actIdLable = actId.join(",");
  416. this.getNewList();
  417. },
  418. // 或者标签内容
  419. async homeTagListCustom() {
  420. const res = await Home.homeTagListCustom();
  421. if (res.Ret === 200) {
  422. this.dataListLable = res.Data.List || [];
  423. let arr = [];
  424. if (this.actIdLable) {
  425. arr = this.actIdLable.split(",").map((_) => Number(_));
  426. }
  427. this.dataListLable.forEach((item) => {
  428. if (arr.includes(item.TagId)) {
  429. item.isAct = true;
  430. }
  431. });
  432. this.industryTablList = res.Data.ListPermission || [];
  433. }
  434. },
  435. // 行业选择的筛选
  436. toggleIndustryTab(item) {
  437. if (this.industrytabActId === item.ChartPermissionId) {
  438. this.industrytabActId = 0;
  439. } else {
  440. this.industrytabActId = item.ChartPermissionId;
  441. }
  442. this.page_no = 1;
  443. this.getNewList();
  444. },
  445. },
  446. mounted() {
  447. uni.$on("updateNewList", (data) => {
  448. this.page_no = 1;
  449. this.getNewList();
  450. });
  451. },
  452. onLoad(options) {
  453. this.sourceType = options.sourceType || "";
  454. this.industrytabActId = options.industrytabActId ? Number(options.industrytabActId) : 0;
  455. this.actIdLable = options.findIndexId;
  456. if (this.mixinIsSceneNumber == 1154) return;
  457. this.getBannerList();
  458. this.getNewList();
  459. this.homeTagListCustom();
  460. let menuButtonInfo = uni.getMenuButtonBoundingClientRect();
  461. this.isTopHeight = menuButtonInfo.height + menuButtonInfo.top + 7 + "px";
  462. },
  463. onShow() {
  464. if (this.mixinIsSceneNumber == 1154) return;
  465. this.getUserInfo();
  466. this.getRecordTracking("首页");
  467. this.$store.commit("setRouterActivity", "首页");
  468. this.$store.commit("setRouterReport", "首页");
  469. },
  470. // 加载数据
  471. onReachBottom() {
  472. if (this.status === "nomore" || this.newDataList.length < 8) return;
  473. this.status = "loading";
  474. this.page_no++;
  475. this.getNewList();
  476. },
  477. // 下拉刷新
  478. onPullDownRefresh() {
  479. this.page_no = 1;
  480. this.refresh = true;
  481. this.getNewList();
  482. this.homeTagListCustom();
  483. },
  484. onPageScroll(val) {
  485. this.isScrollNumber = val.scrollTop;
  486. },
  487. /** 用户点击分享*/
  488. onShareAppMessage: function ({ from, target }) {
  489. if (from === "button") {
  490. let item = target.dataset.item;
  491. // type=2 -- 活动视频 type=3 -- 产业视频
  492. let title_share = item.AudioTitle || item.Title;
  493. this.getRecordTracking("首页转发", { ActivityId: item.ActivityId, Id: item.Id, Type: item.Type });
  494. return {
  495. title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费月卡!" : title_share,
  496. path: "/activityPages/activityDetail/activityDetail?id=" + item.ActivityId,
  497. imageUrl: item.AudioShareImg || item.ShareImg,
  498. };
  499. } else {
  500. return {
  501. title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费月卡!" : "弘则研究—聚焦·前瞻·客观·深度",
  502. path: "/pages/index/index?industrytabActId=" + this.industrytabActId + "&findIndexId=" + this.actIdLable,
  503. success: (res) => {},
  504. fail: (err) => {},
  505. };
  506. }
  507. },
  508. /**
  509. * 用户点击分享朋友圈
  510. */
  511. onShareTimeline() {
  512. return {
  513. title: "弘则研究—聚焦·前瞻·客观·深度",
  514. query: "sourceType=微信分享",
  515. imageUrl: "https://hzstatic.hzinsights.com/T2ddwIIaULVdkGM6gVMuNxBSft8Y.png",
  516. };
  517. },
  518. };
  519. </script>
  520. <style lang="scss" scoped>
  521. .New-container {
  522. background-color: $uni-bg-color;
  523. .content-search {
  524. position: sticky;
  525. top: 0;
  526. left: 0;
  527. width: 100%;
  528. z-index: 9;
  529. .top-content-box {
  530. position: sticky;
  531. top: 0;
  532. left: 0;
  533. width: 100%;
  534. z-index: 9;
  535. }
  536. }
  537. .banner-Position {
  538. position: fixed !important;
  539. }
  540. .banne-bg {
  541. /deep/ .nav-bar-wrap {
  542. background-color: transparent;
  543. }
  544. }
  545. .banne-content {
  546. height: 402rpx;
  547. width: 100%;
  548. overflow: hidden;
  549. swiper {
  550. height: 402rpx;
  551. }
  552. image {
  553. width: 100%;
  554. height: 100%;
  555. }
  556. .banner-title {
  557. position: absolute;
  558. bottom: 35rpx;
  559. left: 20rpx;
  560. color: #fff;
  561. font-weight: 500;
  562. line-height: 65rpx;
  563. min-height: 160rpx;
  564. max-height: 225rpx;
  565. overflow: hidden;
  566. .time {
  567. font-size: 28rpx;
  568. line-height: 39rpx;
  569. }
  570. }
  571. .top-content-box {
  572. position: absolute;
  573. top: 0;
  574. left: 0;
  575. width: 100%;
  576. z-index: 9;
  577. }
  578. }
  579. /deep/ .nav-bar-wrap {
  580. padding-left: 35rpx;
  581. .box-img {
  582. position: relative;
  583. height: 64rpx;
  584. width: 64rpx;
  585. display: flex;
  586. align-items: center;
  587. justify-content: center;
  588. margin-right: 20rpx;
  589. border-radius: 50%;
  590. image {
  591. width: 64rpx;
  592. height: 64rpx;
  593. }
  594. .content-img {
  595. position: absolute;
  596. top: 0;
  597. left: 0;
  598. width: 64rpx;
  599. height: 64rpx;
  600. border-radius: 50%;
  601. overflow: hidden;
  602. z-index: 9;
  603. }
  604. }
  605. }
  606. .content-ul {
  607. padding: 0rpx 10rpx 20rpx;
  608. display: flex;
  609. justify-content: space-between;
  610. .item-ul {
  611. width: 49%;
  612. &:first-child {
  613. margin-right: 10rpx;
  614. }
  615. }
  616. }
  617. .content-ul-top {
  618. padding-top: 30rpx;
  619. }
  620. .bind-btn {
  621. padding-top: 110rpx;
  622. text-align: center;
  623. font-size: 24rpx;
  624. color: #333;
  625. line-height: 39rpx;
  626. padding-bottom: 100rpx;
  627. .login-text {
  628. display: inline-block;
  629. color: #376cbb;
  630. }
  631. }
  632. .lable-select-box {
  633. position: sticky;
  634. left: 0;
  635. top: 88px;
  636. z-index: 9;
  637. width: 100%;
  638. }
  639. .lable-select-content {
  640. overflow: hidden;
  641. overflow-x: auto;
  642. width: 100%;
  643. background-color: #fff;
  644. padding: 18rpx 0 18rpx 20rpx;
  645. .lable-row {
  646. display: flex;
  647. font-size: 24rpx;
  648. }
  649. .lable-item {
  650. position: relative;
  651. flex-shrink: 0;
  652. padding: 6rpx 35rpx;
  653. background: #ffffff;
  654. border: 1rpx solid #dcdfe6;
  655. border-radius: 39rpx;
  656. margin-right: 20rpx;
  657. white-space: nowrap;
  658. // padding-top: 20rpx;
  659. color: #999999;
  660. .item-image {
  661. position: absolute;
  662. top: -16rpx;
  663. right: -18rpx;
  664. width: 60rpx;
  665. height: 30rpx;
  666. border-radius: 4rpx;
  667. }
  668. }
  669. .item-active {
  670. border: none;
  671. font-weight: 500;
  672. background: #e5efff;
  673. color: $uni-color-new;
  674. }
  675. }
  676. .industry-box-tabs {
  677. background-color: #fff;
  678. align-items: center;
  679. justify-content: space-between;
  680. padding: 0 10rpx;
  681. .item {
  682. background-color: #f8f8fa;
  683. border-radius: 200rpx;
  684. justify-content: center;
  685. height: 64rpx;
  686. width: 92rpx;
  687. padding: 0;
  688. }
  689. }
  690. }
  691. .paly-list-image {
  692. position: fixed;
  693. right: 50rpx;
  694. bottom: 85rpx;
  695. z-index: 99;
  696. width: 100rpx;
  697. height: 100rpx;
  698. image {
  699. width: 100rpx;
  700. height: 100rpx;
  701. }
  702. }
  703. </style>