index.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705
  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. <!-- <view v-if="newDataList.length === 4" class="bind-btn">
  118. <view @click="goLogin"> 为了给您提供更好的使用体验,<br />请 <text class="login-text">登录</text>后再查看此页面内容</view>
  119. </view> -->
  120. <morning-dlg v-if="isMorningShow" :isMorningShow.sync="isMorningShow" :morningItem.sync="morningItem" />
  121. </view>
  122. <suspenButton :show.sync="wholeShowListData.IsShow" v-if="wholeShowListData.IsShow" ref="suspenButton">
  123. <template slot="center">
  124. <image mode="widthFix" style="height: 120rpx; width: 120rpx" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/most_confidential.png "> </image>
  125. </template>
  126. <template slot="top">
  127. <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>
  128. </template>
  129. <template slot="left">
  130. <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>
  131. </template>
  132. </suspenButton>
  133. <Loading />
  134. <videoModule :showVideoPop.sync="showVideoPopUp" :videoPopList="videoPopListUp" />
  135. <view v-if="showAudioBox">
  136. <audioModule :showAudioPop.sync="showAudioPop" />
  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 numTags =.length;
  195. const rows = [this.dataListLable];
  196. // if (numTags <= 4) {
  197. // rows.push(this.dataListLable);
  198. // } else if (numTags > 4 && numTags <= 8) {
  199. // const firstRow = this.dataListLable.slice(0, 4);
  200. // const secondRow = this.dataListLable.slice(4);
  201. // rows.push(firstRow, secondRow);
  202. // } else if (numTags >= 9) {
  203. // const firstRow = this.dataListLable.filter((_, index) => index % 2 === 0);
  204. // const secondRow = this.dataListLable.filter((_, index) => index % 2 !== 0);
  205. // rows.push(firstRow, secondRow);
  206. // }
  207. return rows;
  208. },
  209. showAudioBox() {
  210. return this.$store.state.audioBg.parseIntShow;
  211. },
  212. },
  213. components: {
  214. ChartItem,
  215. ReportItem,
  216. RoadshowItem,
  217. ActivityItem,
  218. SearchBar,
  219. MorningDlg,
  220. ItemContent,
  221. videoModule,
  222. suspenButton,
  223. audioModule,
  224. FiccReport,
  225. },
  226. methods: {
  227. // 获取最先数据
  228. async getNewList() {
  229. const res = await Home.getNewList({
  230. PageSize: this.pageSize,
  231. CurrentIndex: this.page_no,
  232. TagIds: this.actIdLable || "",
  233. ChartPermissionId: this.industrytabActId,
  234. });
  235. if (res.Ret === 200) {
  236. this.status = !res.Data.Paging.IsEnd ? "loadmore" : "nomore";
  237. let listArr = [];
  238. res.Data.List &&
  239. res.Data.List.forEach((item) => {
  240. let obj = {
  241. Source: item.Source,
  242. Article: item.Article || item.YanxuanSpecial || item.FiccReport,
  243. Newchart: item.Newchart,
  244. Activity: item.Activity || item.Activityspecial,
  245. Roadshow: item.Roadshow || item.Activityvideo || item.Activityvoice || item.AskserieVideo,
  246. ThreeSummary: item.Researchsummary || item.Minutessummary || item.Meetingreviewchapt || item.ProductInterior || item.ReportSelection,
  247. FiccReportXcx: item.FiccReportXcx,
  248. };
  249. listArr.push({ ...obj, IsShowData: obj.Article || obj.Newchart || obj.Roadshow || obj.Activity || obj.ThreeSummary || item.YanxuanSpecial || obj.FiccReportXcx });
  250. });
  251. this.newDataList = this.page_no === 1 ? listArr : [...this.newDataList, ...listArr];
  252. if (this.refresh) {
  253. uni.stopPullDownRefresh();
  254. this.refresh = false;
  255. }
  256. }
  257. },
  258. // 微路演收藏
  259. async isCollectionHandeler(item) {
  260. await this.$store.dispatch("showLoginModal");
  261. const res = await Home.microRoadshowCollect({
  262. SourceId: item.SourceId,
  263. SourceType: item.Type,
  264. PageRouter: this.$store.state.pageRouterReport,
  265. });
  266. if (res.Ret === 200) {
  267. let index = this.newDataList.findIndex((key) => key.Roadshow && key.Roadshow.SourceId == item.SourceId && key.Roadshow.Type == item.Type);
  268. res.Data.Status == 1 ? (this.newDataList[index].Roadshow.IsCollect = true) : (this.newDataList[index].Roadshow.IsCollect = false);
  269. uni.showToast({
  270. title: res.Msg,
  271. duration: 2000,
  272. });
  273. }
  274. },
  275. // 跳转到我的页面
  276. goMyInfo() {
  277. uni.navigateTo({
  278. url: "/pageMy/myPage/myPage",
  279. });
  280. },
  281. // 跳转绑定页面
  282. goLogin() {
  283. uni.showModal({
  284. title: "即将前往登录页面,请确认是否继续",
  285. content: "为了给您提供更好的使用体验,请登录后再进行查看或操作",
  286. confirmColor: "#376cbb",
  287. cancelColor: "#606266",
  288. success: function (res) {
  289. if (res.confirm) {
  290. //已授权未绑定
  291. uni.navigateTo({
  292. url: "/pageMy/login/login",
  293. });
  294. }
  295. },
  296. });
  297. },
  298. /* 搜索 */
  299. goSearch() {
  300. uni.navigateTo({ url: "/pages-search/indedxSearch/indedxSearch?isType=" + this.topTabsActive + "&source=首页页面" });
  301. },
  302. async getUserInfo() {
  303. const res = await Mine.getInfo();
  304. if (res.Ret === 200) {
  305. this.info = res.Data;
  306. res.Data.Mobile && this.$db.set("mobile", res.Data.Mobile);
  307. }
  308. },
  309. // 晨会弹框显示
  310. async showMorningDialog(item) {
  311. if (item.Source == "meetingreviewchapt") {
  312. const res = await Reports.morning_meeting_history({ Id: item.Id, SourcePage: "首页" });
  313. this.isMorningShow = true;
  314. this.morningItem = item;
  315. }
  316. },
  317. dataListItem(item) {
  318. let obj = item.ThreeSummary ? { ...item.ThreeSummary, Source: item.Source } : {};
  319. return obj;
  320. },
  321. /* 绝密标签点击后的跳转 */
  322. goSecretDetail(type) {
  323. if (type == 1) {
  324. uni.navigateTo({
  325. url: "/reportPages/keyCompany/keyCompany",
  326. });
  327. } else {
  328. uni.navigateTo({
  329. url: "/reportPages/secretDetails/secretDetails",
  330. });
  331. }
  332. this.$refs.suspenButton.onOpen();
  333. },
  334. // 获取banner 列表
  335. async getBannerList() {
  336. const res = await Home.bannerList();
  337. if (res.Ret === 200) {
  338. this.bannerDataList = res.Data.List || [];
  339. }
  340. },
  341. // bannaer 点击事件
  342. async bannerSwiperHandler(item) {
  343. let { Type, SourceId, Path } = item.BannerUrlResp;
  344. if (Type == 1) return;
  345. await Home.bannerHistory({
  346. BannerId: item.BannerId,
  347. });
  348. if (Type == 5) {
  349. let obj = {
  350. BackgroundImg: "https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/my_log.png",
  351. Id: SourceId,
  352. PlaySeconds: "15",
  353. ResourceUrl: "https://hzstatic.hzinsights.com/static/yb/video/8617330c2a76e0c35999f6466b4470c4.mp4",
  354. Title: "三分钟了解弘则研究体系和方法论",
  355. Type: "三分钟了解弘则研究体系和方法论",
  356. };
  357. this.videoPopListUp = obj;
  358. this.showVideoPopUp = true;
  359. await Mine.addHistory();
  360. } else {
  361. Path &&
  362. uni.navigateTo({
  363. url: Path + SourceId,
  364. });
  365. }
  366. },
  367. async lableKeysHandler(item) {
  368. const checkList = item.CheckList;
  369. if (item.isAct) {
  370. item.isAct = false;
  371. this.lableArrList = this.lableArrList.filter((key) => checkList.includes(key));
  372. this.getLableDataList();
  373. return;
  374. }
  375. let isFlag = false; //是否有交集
  376. for (let e of checkList) {
  377. if (this.lableArrList.includes(e)) {
  378. isFlag = true;
  379. break;
  380. }
  381. }
  382. if (!isFlag) {
  383. this.lableArrList = [...this.lableArrList, ...checkList];
  384. item.isAct = true;
  385. } else {
  386. //有交集
  387. // 找到有交集的那个 设置为false 然后将点击的这个设置为true
  388. this.lableIsRows.forEach((e1) => {
  389. e1.forEach((e2) => {
  390. let flag = false;
  391. for (let i of e2.CheckList) {
  392. if (this.lableArrList.includes(i)) {
  393. flag = true;
  394. break;
  395. }
  396. }
  397. if (flag) {
  398. e2.isAct = false;
  399. }
  400. });
  401. });
  402. item.isAct = true;
  403. }
  404. this.getLableDataList();
  405. if (!item.isAct) return;
  406. const res = await Home.tagAddHistory({
  407. TagId: item.TagId,
  408. });
  409. },
  410. getLableDataList() {
  411. let actId = [];
  412. this.lableIsRows.forEach((item) => {
  413. item.forEach((_) => {
  414. _.isAct && actId.push(_.TagId);
  415. });
  416. });
  417. this.page_no = 1;
  418. this.actIdLable = actId.join(",");
  419. this.getNewList();
  420. },
  421. // 或者标签内容
  422. async homeTagListCustom() {
  423. const res = await Home.homeTagListCustom();
  424. if (res.Ret === 200) {
  425. this.dataListLable = res.Data.List || [];
  426. let arr = [];
  427. if (this.actIdLable) {
  428. arr = this.actIdLable.split(",").map((_) => Number(_));
  429. }
  430. this.dataListLable.forEach((item) => {
  431. if (arr.includes(item.TagId)) {
  432. item.isAct = true;
  433. }
  434. });
  435. this.industryTablList = res.Data.ListPermission || [];
  436. }
  437. },
  438. // 行业选择的筛选
  439. toggleIndustryTab(item) {
  440. if (this.industrytabActId === item.ChartPermissionId) {
  441. this.industrytabActId = 0;
  442. } else {
  443. this.industrytabActId = item.ChartPermissionId;
  444. }
  445. this.page_no = 1;
  446. this.getNewList();
  447. },
  448. },
  449. mounted() {
  450. uni.$on("updateNewList", (data) => {
  451. this.page_no = 1;
  452. this.getNewList();
  453. });
  454. },
  455. onLoad(options) {
  456. this.sourceType = options.sourceType || "";
  457. this.industrytabActId = options.industrytabActId ? Number(options.industrytabActId) : 0;
  458. this.actIdLable = options.findIndexId;
  459. if (this.mixinIsSceneNumber == 1154) return;
  460. this.getBannerList();
  461. this.getNewList();
  462. this.homeTagListCustom();
  463. let menuButtonInfo = uni.getMenuButtonBoundingClientRect();
  464. this.isTopHeight = menuButtonInfo.height + menuButtonInfo.top + 7 + "px";
  465. },
  466. onShow() {
  467. if (this.mixinIsSceneNumber == 1154) return;
  468. this.getUserInfo();
  469. this.getRecordTracking("首页");
  470. this.$store.commit("setRouterActivity", "首页");
  471. this.$store.commit("setRouterReport", "首页");
  472. },
  473. // 加载数据
  474. onReachBottom() {
  475. if (this.status === "nomore" || this.newDataList.length < 8) return;
  476. this.status = "loading";
  477. this.page_no++;
  478. this.getNewList();
  479. },
  480. // 下拉刷新
  481. onPullDownRefresh() {
  482. this.page_no = 1;
  483. this.refresh = true;
  484. this.getNewList();
  485. this.homeTagListCustom();
  486. },
  487. onPageScroll(val) {
  488. this.isScrollNumber = val.scrollTop;
  489. },
  490. /** 用户点击分享*/
  491. onShareAppMessage: function ({ from, target }) {
  492. if (from === "button") {
  493. let item = target.dataset.item;
  494. let audio_id = item.Type == 1 || item.AudioType == 1 ? item.Id : "";
  495. // type=2 -- 活动视频 type=3 -- 产业视频
  496. let video_id = item.Type == 2 || item.Type == 3 ? item.Id : "";
  497. let activity_id = item.Type == 2 && item.ActivityId > 0 ? item.ActivityId : "";
  498. let title_share = item.AudioTitle || item.Title;
  499. this.getRecordTracking("首页转发", { ActivityId: item.ActivityId, Id: item.Id, Type: item.Type });
  500. return {
  501. title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费月卡!" : title_share,
  502. path: "/pages/material/material?topTabsActive=4" + "&audioShareId=" + audio_id + "&videoShareId=" + video_id + "&activityId=" + activity_id,
  503. imageUrl: item.AudioShareImg || item.ShareImg,
  504. };
  505. } else {
  506. return {
  507. title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费月卡!" : "弘则研究—聚焦·前瞻·客观·深度",
  508. path: "/pages/index/index?industrytabActId=" + this.industrytabActId + "&findIndexId=" + this.actIdLable,
  509. success: (res) => {},
  510. fail: (err) => {},
  511. };
  512. }
  513. },
  514. /**
  515. * 用户点击分享朋友圈
  516. */
  517. onShareTimeline() {
  518. return {
  519. title: "弘则研究—聚焦·前瞻·客观·深度",
  520. query: "sourceType=微信分享",
  521. imageUrl: "https://hzstatic.hzinsights.com/T2ddwIIaULVdkGM6gVMuNxBSft8Y.png",
  522. };
  523. },
  524. };
  525. </script>
  526. <style lang="scss" scoped>
  527. .New-container {
  528. background-color: $uni-bg-color;
  529. .content-search {
  530. position: sticky;
  531. top: 0;
  532. left: 0;
  533. width: 100%;
  534. z-index: 9;
  535. .top-content-box {
  536. position: sticky;
  537. top: 0;
  538. left: 0;
  539. width: 100%;
  540. z-index: 9;
  541. }
  542. }
  543. .banner-Position {
  544. position: fixed !important;
  545. }
  546. .banne-bg {
  547. /deep/ .nav-bar-wrap {
  548. background-color: transparent;
  549. }
  550. }
  551. .banne-content {
  552. height: 402rpx;
  553. width: 100%;
  554. overflow: hidden;
  555. swiper {
  556. height: 402rpx;
  557. }
  558. image {
  559. width: 100%;
  560. height: 100%;
  561. }
  562. .banner-title {
  563. position: absolute;
  564. bottom: 35rpx;
  565. left: 20rpx;
  566. color: #fff;
  567. font-weight: 500;
  568. line-height: 65rpx;
  569. min-height: 160rpx;
  570. max-height: 225rpx;
  571. overflow: hidden;
  572. .time {
  573. font-size: 28rpx;
  574. line-height: 39rpx;
  575. }
  576. }
  577. .top-content-box {
  578. position: absolute;
  579. top: 0;
  580. left: 0;
  581. width: 100%;
  582. z-index: 9;
  583. }
  584. }
  585. /deep/ .nav-bar-wrap {
  586. padding-left: 35rpx;
  587. .box-img {
  588. position: relative;
  589. height: 64rpx;
  590. width: 64rpx;
  591. display: flex;
  592. align-items: center;
  593. justify-content: center;
  594. margin-right: 20rpx;
  595. border-radius: 50%;
  596. image {
  597. width: 64rpx;
  598. height: 64rpx;
  599. }
  600. .content-img {
  601. position: absolute;
  602. top: 0;
  603. left: 0;
  604. width: 64rpx;
  605. height: 64rpx;
  606. border-radius: 50%;
  607. overflow: hidden;
  608. z-index: 9;
  609. }
  610. }
  611. }
  612. .content-ul {
  613. padding: 0rpx 10rpx 20rpx;
  614. display: flex;
  615. justify-content: space-between;
  616. .item-ul {
  617. width: 49%;
  618. &:first-child {
  619. margin-right: 10rpx;
  620. }
  621. }
  622. }
  623. .content-ul-top {
  624. padding-top: 30rpx;
  625. }
  626. .bind-btn {
  627. padding-top: 110rpx;
  628. text-align: center;
  629. font-size: 24rpx;
  630. color: #333;
  631. line-height: 39rpx;
  632. padding-bottom: 100rpx;
  633. .login-text {
  634. display: inline-block;
  635. color: #376cbb;
  636. }
  637. }
  638. .lable-select-box {
  639. position: sticky;
  640. left: 0;
  641. top: 88px;
  642. z-index: 9;
  643. width: 100%;
  644. }
  645. .lable-select-content {
  646. overflow: hidden;
  647. overflow-x: auto;
  648. width: 100%;
  649. background-color: #fff;
  650. padding: 18rpx 0 18rpx 20rpx;
  651. .lable-row {
  652. display: flex;
  653. font-size: 24rpx;
  654. }
  655. .lable-item {
  656. position: relative;
  657. flex-shrink: 0;
  658. padding: 6rpx 35rpx;
  659. background: #ffffff;
  660. border: 1rpx solid #dcdfe6;
  661. border-radius: 39rpx;
  662. margin-right: 20rpx;
  663. white-space: nowrap;
  664. // padding-top: 20rpx;
  665. color: #999999;
  666. .item-image {
  667. position: absolute;
  668. top: -16rpx;
  669. right: -18rpx;
  670. width: 60rpx;
  671. height: 30rpx;
  672. border-radius: 4rpx;
  673. }
  674. }
  675. .item-active {
  676. border: none;
  677. font-weight: 500;
  678. background: #e5efff;
  679. color: $uni-color-new;
  680. }
  681. }
  682. .industry-box-tabs {
  683. background-color: #fff;
  684. align-items: center;
  685. justify-content: space-between;
  686. padding: 0 10rpx;
  687. .item {
  688. background-color: #f8f8fa;
  689. border-radius: 200rpx;
  690. justify-content: center;
  691. height: 64rpx;
  692. width: 92rpx;
  693. padding: 0;
  694. }
  695. }
  696. }
  697. </style>