purchaser.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755
  1. <template>
  2. <view class="container resear-container">
  3. <view class="top-content-box">
  4. <search-bar @goSearch="goSearch" :searchTitle="searchPlaceholderList.SummarySearch" :width="70" />
  5. <view class="content-tabs">
  6. <view
  7. v-for="item in TabBars"
  8. :key="item.val"
  9. :class="['item', item.val == topTabsActive && 'tabs-active']"
  10. @click="topTabsClickHandler(item)"
  11. >
  12. {{ item.titel }}
  13. <view class="active" v-if="item.val == topTabsActive"></view>
  14. </view>
  15. </view>
  16. </view>
  17. <view class="notice-content" v-if="wholeShowListData.YanXuan_Explain">
  18. <view class="notice">
  19. <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/placard_icon.png"></image>
  20. <view class="notice-bar">
  21. <van-notice-bar color="#3385FF" background="#DFECFF" text="买方研选内容试行阶段,限时免费。也欢迎您向我们提宝贵建议。" />
  22. </view>
  23. </view>
  24. </view>
  25. <view class="announcement">
  26. <view class="tab-cont" v-if="topTabsActive == 2">
  27. <scroll-view
  28. scroll-x="true"
  29. @scroll="scrollMove"
  30. :scroll-left="scrollLeft"
  31. scroll-with-animation
  32. class="scroll-tab"
  33. :scroll-into-view="'_' + tabIndex"
  34. >
  35. <block v-for="(item, index) in researchTabBars" :key="index">
  36. <view class="scroll-tab-item" :class="{ active: tagActive == item.name }" @click.stop="typeChange(item)">
  37. {{ item.titel }}
  38. <image
  39. src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/border_act.png"
  40. mode=""
  41. class="border_act"
  42. v-if="tagActive == item.name"
  43. ></image>
  44. </view>
  45. </block>
  46. </scroll-view>
  47. </view>
  48. <blok v-else>
  49. <van-checkbox-group class="checkbox-ui" :value="newCheckboxValue" @change="checkboxChange">
  50. <van-checkbox
  51. style="margin-right: 30rpx; flex-shrink: 0"
  52. shape="square"
  53. icon-size="14"
  54. :name="item.ArticleTypeId"
  55. v-for="item in checkboxGroup"
  56. :key="item.ArticleTypeId"
  57. >{{ item.ArticleTypeName }}</van-checkbox
  58. >
  59. </van-checkbox-group>
  60. </blok>
  61. <view class="content-ul" v-if="tagActive == '用户' || topTabsActive == 1">
  62. <blok v-if="haveData">
  63. <view class="user-li" v-for="(item, index) in collectionList" :key="item.ArticleId">
  64. <view class="li-item">
  65. <text class="li-serial" :style="{ background: serialBackground(index) }" v-if="topTabsActive == 2">
  66. {{ index + 1 }}
  67. </text>
  68. <text class="li-type" :style="{ background: item.ButtonStyle }" v-else>
  69. {{ item.ArticleTypeName }}
  70. </text>
  71. <view>
  72. <text
  73. class="title"
  74. @click="goDetail(item)"
  75. :style="{ display: 'inline', marginLeft: item.Title.substr(0, 1) != '【' ? '14rpx' : 0 }"
  76. >{{ item.Title }}</text
  77. >
  78. <text class="li-industry" @click="themeDetails(key, '月度收藏榜')" v-for="key in item.List" :key="key.IndustrialManagementId">
  79. # {{ key.IndustryName }}
  80. </text>
  81. </view>
  82. </view>
  83. <view class="li-item li-bottom" style="color: #999999">
  84. <viwe class="time-user">
  85. <text>
  86. {{ item.PublishDate }}
  87. </text>
  88. <view class="li-user" @click="authorDetails(item)">
  89. <image class="user_report-img" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/user_report.png"></image>
  90. <text class="text_oneLine"> {{ item.NickName }}</text>
  91. </view>
  92. </viwe>
  93. <view class="li-item user-img">
  94. <view class="img-box">
  95. <image class="user-pv" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/examine_icon.png"></image>
  96. <text>
  97. {{ item.Pv }}
  98. </text>
  99. </view>
  100. <view class="img-box" @click="collectClick(item)">
  101. <image v-if="item.IsCollect" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/collect_act.png"></image>
  102. <image v-else src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/collect_ico.png"></image>
  103. <text class=""> {{ item.CollectNum }}人收藏 </text>
  104. </view>
  105. </view>
  106. </view>
  107. </view>
  108. </blok>
  109. <!-- <view class="content-bottom" v-if="topTabsActive == 2">最新榜单您已掌握,明天再刷刷看~</view> -->
  110. <view class="nodata" v-else>
  111. <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/act_search.png" mode="" class="nodata_ico"></image>
  112. <text>暂无活动</text>
  113. </view>
  114. </view>
  115. <view class="content-ul" v-if="topTabsActive == 2 && hotList.length && tagActive == '主题'">
  116. <view class="hot-li" v-for="(item, index) in hotList" :key="item.IndustrialManagementId">
  117. <view class="li-item hot-item">
  118. <view style="display: flex" class="text_oneLine hot-new" @click="themeDetails(item, '主题热度榜')">
  119. <text class="li-serial serial-number" :style="{ background: serialBackground(index) }">
  120. {{ index + 1 }}
  121. </text>
  122. <text class="text_oneLine title" style="display: inline"> # {{ item.IndustryName }} </text>
  123. <image class="new-img" v-if="item.IsNew" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/new_report.png"></image>
  124. </view>
  125. <text :class="item.IsFollw ? 'cancel-attention' : 'attention'" @click="isAttention(item, '主题')">{{
  126. item.IsFollw ? "取消关注" : "+ 关注"
  127. }}</text>
  128. </view>
  129. <view class="li-item read-more" @click="themeDetails(item, '主题热度榜')">
  130. <text class="text-box text_oneLine" v-for="val in item.IndustrialSubjectList" :key="val.IndustrialSubjectId">
  131. {{ val.SubjectName }}
  132. </text>
  133. </view>
  134. </view>
  135. <view class="content-button" @click="goThemeAuthor('主题')">查看全部主题>></view>
  136. </view>
  137. <view class="content-ul" v-if="topTabsActive == 2 && kolList.length && tagActive == '专家'">
  138. <view class="kol-li" v-for="(item, index) in kolList" :key="item.DepartmentId">
  139. <text class="li-serial serial-number" :style="{ background: serialBackground(index) }">
  140. {{ index + 1 }}
  141. </text>
  142. <image @click="authorDetails(item)" :src="item.ImgUrl" v-if="item.ImgUrl"></image>
  143. <view class="li-item kol-item">
  144. <view class="item-top">
  145. <text @click="authorDetails(item)">
  146. {{ item.NickName }}
  147. </text>
  148. <text :class="item.IsFollw ? 'cancel-attention' : 'attention'" @click="isAttention(item, '专家')">{{
  149. item.IsFollw ? "取消关注" : "+ 关注"
  150. }}</text>
  151. </view>
  152. <text @click="themeDetails(val, 'KOL榜')" class="kol-text text_oneLine" v-for="val in item.List" :key="val.IndustrialManagementId">
  153. # {{ val.IndustryName }}
  154. </text>
  155. </view>
  156. </view>
  157. <view class="content-button" @click="goThemeAuthor('作者')">查看全部作者>></view>
  158. </view>
  159. <u-loadmore :status="status" :load-text="loadText" v-if="page_no > 1" />
  160. </view>
  161. <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
  162. <u-modal
  163. v-model="goFollowShow"
  164. :content-style="{ fontSize: '32rpx' }"
  165. @confirm="goFollowShowBtn"
  166. :show-cancel-button="isCancelBtn"
  167. :confirm-text="confirmText"
  168. @cancel="isCancelBtn = false"
  169. :show-title="false"
  170. :cancel-style="{ borderRight: '1rpx solid #EBEBEB' }"
  171. :confirm-style="{ fontWeight: '700' }"
  172. >
  173. <view class="slot-content">
  174. <rich-text :nodes="accounts"></rich-text>
  175. </view>
  176. </u-modal>
  177. <Loading />
  178. </view>
  179. </template>
  180. <script>
  181. import { Reports, Research, Report } from "@/config/api.js";
  182. import freeCharge from "@/components/freeCharge";
  183. import SearchBar from "@/components/search-bar/searchBar.vue";
  184. import { ResearchTabBars, TabBars, CheckboxGroup } from "./components/Tabs";
  185. export default {
  186. components: { freeCharge, SearchBar },
  187. data() {
  188. return {
  189. // themeNewList: [],
  190. topTabsActive: 1,
  191. tagActive: "用户",
  192. collectionList: [], //用户收藏
  193. hotList: [],
  194. kolList: [],
  195. confirmText: "知道了",
  196. accounts: "",
  197. isCancelBtn: false,
  198. goFollowShow: false,
  199. newCheckboxValue: [],
  200. checkboxGroup: [],
  201. status: "loadmore",
  202. loadText: {
  203. loadmore: "上拉加载更多",
  204. loading: "加载中",
  205. nomore: "已经到底了",
  206. },
  207. page_no: 1,
  208. pageSize: 10,
  209. haveData: true,
  210. };
  211. },
  212. mounted() {
  213. // 处理数据 列表同步详情
  214. uni.$on("updateFllowTheme", (data) => {
  215. this.hotList.forEach((item) => {
  216. if (item.IndustrialManagementId == data.id) {
  217. item.IsFollw = data.isFollw;
  218. }
  219. });
  220. });
  221. // 处理数据 列表同步详情
  222. uni.$on("updateFllowAuthor", (data) => {
  223. this.kolList.forEach((item) => {
  224. if (item.DepartmentId == data.id) {
  225. item.IsFollw = data.isFollw;
  226. }
  227. });
  228. });
  229. },
  230. computed: {
  231. researchTabBars() {
  232. return ResearchTabBars;
  233. },
  234. TabBars() {
  235. return TabBars;
  236. },
  237. },
  238. watch: {
  239. tagActive: {
  240. handler(val) {
  241. this.topTabsActive == 2 && val == "用户" ? this.researchCollectionList() : val == "主题" ? this.researchHotList() : this.researchKolList();
  242. },
  243. immediate: true,
  244. },
  245. topTabsActive: {
  246. handler(val) {
  247. this.collectionList = [];
  248. val == 2 ? this.researchCollectionList() : this.researchArticleNewList();
  249. },
  250. immediate: true,
  251. },
  252. },
  253. methods: {
  254. //用户收藏榜
  255. async researchCollectionList() {
  256. const res = await Research.researchCollectionList({ ChartPermissionId: 31 });
  257. if (res.Ret === 200) {
  258. this.collectionList = res.Data.List || [];
  259. }
  260. },
  261. //主题热度/近期更新更多
  262. async researchHotList() {
  263. const res = await Research.researchHotList({ ChartPermissionId: 31, ThemeType: 1 });
  264. if (res.Ret === 200) {
  265. this.hotList = res.Data.List || [];
  266. }
  267. },
  268. //KOL榜列表接口
  269. async researchKolList() {
  270. const res = await Research.researchKolList({ ChartPermissionId: 31 });
  271. if (res.Ret === 200) {
  272. this.kolList = res.Data.List || [];
  273. }
  274. },
  275. //tabs切换
  276. typeChange(item) {
  277. this.tagActive = item.name;
  278. },
  279. //关注
  280. async isAttention(item, val) {
  281. await this.$store.dispatch("showLoginModal");
  282. const res =
  283. val === "主题"
  284. ? await Reports.reportFllow({ IndustrialManagementId: item.IndustrialManagementId, PageRouter: this.$store.state.pageRouterReport })
  285. : await Reports.reportFllowDepartment({ DepartmentId: item.DepartmentId, PageRouter: this.$store.state.pageRouterReport });
  286. if (res.Ret === 200) {
  287. item.IsFollw = !item.IsFollw;
  288. if (res.Data.Status == 1) {
  289. this.goFollowShow = true;
  290. this.confirmText = res.Data.GoFollow ? "去关注" : "知道了";
  291. if (res.Data.GoFollow) {
  292. this.accounts = `${val == "主题" ? "产业" : "作者"}关注成功 <br> 想要及时获取该${
  293. val === "主题" ? "产业内容的更新推送" : "作者的报告更新提示"
  294. },请关注【查研观向小助手】公众号`;
  295. this.isCancelBtn = true;
  296. } else {
  297. this.accounts =
  298. `${val == "主题" ? "产业" : "作者"}` +
  299. `关注成功<br>请关注【查研观向小助手】公众号,及时获取${val === "主题" ? "产业" : "作者"}报告更新提醒`;
  300. }
  301. } else {
  302. uni.showToast({
  303. title: "已取消关注",
  304. icon: "none",
  305. duration: 2000,
  306. });
  307. }
  308. }
  309. },
  310. //去关注
  311. goFollowShowBtn() {
  312. if (this.confirmText == "去关注") {
  313. uni.navigateTo({
  314. url: "/activityPages/accountsOfficial/accountsOfficial",
  315. });
  316. }
  317. this.goFollowShow = false;
  318. },
  319. //收藏
  320. async collectClick(item) {
  321. await this.$store.dispatch("showLoginModal");
  322. const res = await Report.collectRpt({ ArticleId: item.ArticleId, PageRouter: "月度收藏榜" });
  323. if (res.Ret === 200) {
  324. item.IsCollect = !item.IsCollect;
  325. item.IsCollect
  326. ? (item.CollectNum += 1) &&
  327. uni.showToast({
  328. title: "收藏成功",
  329. icon: "none",
  330. duration: 2000,
  331. })
  332. : (item.CollectNum -= 1);
  333. !item.IsCollect &&
  334. uni.showToast({
  335. title: "已取消收藏",
  336. icon: "none",
  337. duration: 2000,
  338. });
  339. }
  340. },
  341. //去往作者详情
  342. authorDetails(item) {
  343. uni.navigateTo({
  344. url: "/reportPages/authorPages/authorPages?id=" + item.DepartmentId,
  345. });
  346. },
  347. //去往文章详情页面
  348. goDetail(item) {
  349. this.$store.commit("setRouterReport", "月度收藏榜");
  350. uni.navigateTo({ url: "/pageMy/reportDetail/reportDetail?id=" + item.ArticleId });
  351. },
  352. //去往主题详情
  353. themeDetails(item, source) {
  354. uni.navigateTo({ url: "/reportPages/researchTheme/researchTheme?id=" + item.IndustrialManagementId + "&pageRouter=" + source });
  355. // uni.navigateTo({ url: "/reportPages/researchTheme/researchTheme?id=" + item.IndustrialManagementId + "&pageRouter=" + source);
  356. },
  357. //计算遍历的颜色
  358. serialBackground(index) {
  359. index += 1;
  360. return index == 1 ? "#D7584F" : index == 2 ? "#E98033" : index == 3 ? "#FDD367" : "#D3D3D3";
  361. },
  362. /* 搜索 */
  363. async goSearch() {
  364. await this.$store.dispatch("checkHandle", "/pages-search/indedxSearch/indedxSearch?id=研选" + "&source=买方研选页面");
  365. },
  366. // 头部tab的点击事件
  367. topTabsClickHandler(item) {
  368. this.topTabsActive = item.val;
  369. this.haveData = true;
  370. this.page_no = 1;
  371. },
  372. // 复选框组的选择事件
  373. checkboxChange(e) {
  374. this.newCheckboxValue = e.detail;
  375. this.page_no = 1;
  376. this.researchArticleNewList();
  377. },
  378. // 跳转主题 of 作者
  379. goThemeAuthor(type) {
  380. type === "主题"
  381. ? uni.navigateTo({ url: "/pages-purchaser/researchTheme/researchTheme" })
  382. : uni.navigateTo({ url: "/pages-purchaser/researchAuthor/researchAuthor" });
  383. },
  384. // 获取最新下的文章类型
  385. async researchArticleTypeList() {
  386. const res = await Research.researchArticleTypeList();
  387. if (res.Ret === 200) {
  388. this.checkboxGroup = res.Data.List;
  389. }
  390. },
  391. // 获取最新的文章列表
  392. async researchArticleNewList() {
  393. const res = await Research.researchArticleNewList({
  394. PageSize: this.pageSize,
  395. CurrentIndex: this.page_no,
  396. ArticleTypeIds: this.newCheckboxValue.join(","),
  397. });
  398. if (res.Ret === 200) {
  399. this.status = res.Data.Paging.IsEnd ? "nomore" : "loadmore";
  400. this.collectionList = this.page_no === 1 ? res.Data.List || [] : [...this.collectionList, ...res.Data.List];
  401. if (this.page_no == 1) {
  402. this.haveData = this.collectionList.length ? true : false;
  403. }
  404. }
  405. },
  406. },
  407. onLoad() {
  408. this.researchArticleTypeList();
  409. },
  410. onShow() {
  411. this.$store.commit("setRouterReport", "买方研选");
  412. this.getRecordTracking("买方研选");
  413. },
  414. /* 下拉刷新 */
  415. // onPullDownRefresh() {
  416. // wx.stopPullDownRefresh();
  417. // },
  418. onReachBottom() {
  419. if (this.status == "nomore" || this.topTabsActive != 1) return;
  420. this.status = "loading";
  421. this.page_no++;
  422. this.researchArticleNewList();
  423. },
  424. /**
  425. * 用户点击分享
  426. */
  427. onShareAppMessage: function (res) {
  428. return {
  429. title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费月卡!" : "买方研选",
  430. path: "pages/purchaser/purchaser",
  431. success: (res) => {},
  432. fail: (err) => {},
  433. };
  434. },
  435. };
  436. </script>
  437. <style lang="scss">
  438. .resear-container {
  439. background-color: #f7f7f7;
  440. .nav-bar-wrap,
  441. .top-content-box {
  442. position: sticky;
  443. top: 0;
  444. left: 0;
  445. z-index: 999;
  446. padding-left: 30rpx;
  447. }
  448. .top-content-box {
  449. padding-left: 0;
  450. margin-bottom: 20rpx;
  451. .content-tabs {
  452. background-color: #fff;
  453. display: flex;
  454. justify-content: center;
  455. padding-bottom: 10rpx;
  456. .item {
  457. padding-top: 20rpx;
  458. font-size: 34rpx;
  459. position: relative;
  460. padding-bottom: 8rpx;
  461. margin-right: 60rpx;
  462. flex-shrink: 0;
  463. .active {
  464. position: absolute;
  465. left: 0;
  466. bottom: 0;
  467. height: 4rpx;
  468. width: 100%;
  469. border-radius: 1rpx;
  470. background: linear-gradient(90deg, #2e85ff 0%, #7eeaf6 100%);
  471. }
  472. }
  473. .tabs-active {
  474. color: #3385ff;
  475. font-weight: 500;
  476. }
  477. }
  478. }
  479. .notice-content {
  480. position: sticky;
  481. left: 0;
  482. top: 200rpx;
  483. z-index: 99;
  484. width: 100%;
  485. background-color: #fff;
  486. padding-bottom: 20rpx;
  487. }
  488. .notice {
  489. height: 56rpx;
  490. overflow: hidden;
  491. background-color: #dfecff;
  492. display: flex;
  493. align-items: center;
  494. padding-left: 30rpx;
  495. image {
  496. width: 30rpx;
  497. height: 30rpx;
  498. }
  499. .notice-bar {
  500. flex: 1;
  501. }
  502. .van-notice-bar {
  503. height: 56rpx;
  504. }
  505. }
  506. .content-ul {
  507. border-top: 1px solid #f6f6f6;
  508. .user-li,
  509. .hot-li,
  510. .kol-li {
  511. padding: 30rpx 0 20rpx;
  512. border-bottom: 1px solid #f6f6f6;
  513. }
  514. .user-img {
  515. width: 38%;
  516. justify-content: space-between;
  517. .img-box {
  518. display: flex;
  519. align-items: center;
  520. }
  521. .user-pv {
  522. width: 21rpx;
  523. height: 16rpx;
  524. }
  525. }
  526. .kol-li {
  527. display: flex;
  528. align-items: center;
  529. padding-bottom: 30rpx;
  530. image {
  531. width: 120rpx;
  532. height: 120rpx;
  533. border-radius: 8rpx;
  534. margin: 0 20rpx 0 15rpx;
  535. overflow: hidden;
  536. flex-shrink: 0;
  537. }
  538. }
  539. .kol-item {
  540. display: flex;
  541. flex-wrap: wrap;
  542. width: 480rpx;
  543. height: 120rpx;
  544. align-items: baseline;
  545. margin-bottom: 20rpx;
  546. .item-top {
  547. width: 100%;
  548. display: flex;
  549. align-items: center;
  550. justify-content: space-between;
  551. font-size: 29rpx;
  552. font-weight: 700;
  553. }
  554. .kol-text {
  555. width: 50%;
  556. margin-top: 10rpx;
  557. flex-shrink: 0;
  558. }
  559. }
  560. .li-serial {
  561. width: 26rpx;
  562. height: 26rpx;
  563. line-height: 26rpx;
  564. color: #fff;
  565. font-size: 20rpx;
  566. text-align: center;
  567. border-radius: 4rpx 4rpx 4rpx 4rpx;
  568. margin: 7rpx 10rpx 0 20rpx;
  569. flex-shrink: 0;
  570. }
  571. .li-type {
  572. // padding: 0 15rpx;
  573. width: 91rpx;
  574. height: 28rpx;
  575. margin-top: 6rpx;
  576. display: flex;
  577. align-items: center;
  578. justify-content: center;
  579. flex-shrink: 0;
  580. border-radius: 4rpx;
  581. color: #fff;
  582. font-size: 20rpx;
  583. font-weight: 500;
  584. }
  585. .serial-number {
  586. margin-top: 0 !important;
  587. }
  588. .li-item {
  589. display: flex;
  590. .title {
  591. font-size: 28rpx;
  592. line-height: 39rpx;
  593. font-weight: 500;
  594. color: #333;
  595. margin-right: 20rpx;
  596. }
  597. .li-industry {
  598. color: #3385ff;
  599. margin-right: 20rpx;
  600. display: inline-block;
  601. font-weight: 400;
  602. }
  603. .time-user {
  604. display: flex;
  605. align-items: center;
  606. font-size: 24rpx;
  607. }
  608. .li-user {
  609. display: flex;
  610. align-items: center;
  611. flex-shrink: 0;
  612. width: 200rpx;
  613. margin-left: 75rpx;
  614. .user_report-img {
  615. width: 23rpx;
  616. height: 26rpx;
  617. flex-shrink: 0;
  618. }
  619. }
  620. .li-title {
  621. display: flex;
  622. }
  623. }
  624. .li-bottom {
  625. display: flex;
  626. justify-content: space-between;
  627. align-items: center;
  628. margin-top: 30rpx;
  629. width: 100%;
  630. image {
  631. width: 23rpx;
  632. height: 26rpx;
  633. margin-right: 10rpx;
  634. }
  635. }
  636. .read-more {
  637. margin-left: 30rpx;
  638. margin-top: 20rpx;
  639. display: flex;
  640. flex-wrap: wrap;
  641. .text-box {
  642. margin-bottom: 27rpx;
  643. margin-right: 40rpx;
  644. padding: 0;
  645. font-size: 24rpx;
  646. color: #408fff;
  647. width: 170rpx;
  648. height: 46rpx;
  649. line-height: 46rpx;
  650. text-align: center !important;
  651. background: url(~@/static/img/report_bg.png) no-repeat;
  652. background-size: 100% 100%;
  653. text-indent: 0em;
  654. }
  655. }
  656. .attention {
  657. flex-shrink: 0;
  658. padding: 5rpx 28rpx;
  659. border-radius: 37rpx 37rpx 37rpx 37rpx;
  660. color: #fff;
  661. background: #3385ff;
  662. font-weight: 400;
  663. font-size: 24rpx;
  664. }
  665. .hot-item {
  666. justify-content: space-between;
  667. align-items: center;
  668. .hot-new {
  669. align-items: center;
  670. flex: 1;
  671. padding-right: 20rpx;
  672. }
  673. .new-img {
  674. width: 60rpx;
  675. height: 30rpx;
  676. margin-left: 15rpx;
  677. flex-shrink: 0;
  678. }
  679. }
  680. }
  681. .announcement {
  682. background: #fff;
  683. padding: 0 30rpx;
  684. .tab-cont {
  685. height: 115rpx;
  686. background-color: #fff;
  687. font-size: 32rpx;
  688. border-bottom: 1rpx solid #ececec;
  689. .scroll-tab {
  690. position: relative;
  691. width: 100%;
  692. white-space: nowrap;
  693. display: flex;
  694. justify-content: space-around;
  695. }
  696. .scroll-tab-item {
  697. text-align: center;
  698. display: inline-block;
  699. padding: 32rpx 8rpx 30rpx 8rpx;
  700. border-bottom: 8rpx solid transparent;
  701. margin-right: 60rpx;
  702. position: relative;
  703. color: #999999;
  704. font-size: 32rpx;
  705. &:last-child {
  706. margin-right: 0;
  707. }
  708. &.active {
  709. border-bottom: none;
  710. color: #333;
  711. font-weight: 500;
  712. }
  713. .border_act {
  714. width: 80%;
  715. height: 8rpx;
  716. position: absolute;
  717. bottom: 0;
  718. left: 50%;
  719. transform: translateX(-50%);
  720. }
  721. }
  722. }
  723. }
  724. .content-bottom {
  725. background-color: #fff;
  726. text-align: center;
  727. line-height: 100rpx;
  728. color: #c4c4c4;
  729. font-size: 20rpx;
  730. }
  731. .checkbox-ui {
  732. width: 100%;
  733. padding: 30rpx 0;
  734. overflow: hidden;
  735. overflow-x: auto;
  736. display: flex;
  737. border-bottom: 1rpx solid #ececec;
  738. }
  739. .content-button {
  740. height: 100rpx;
  741. width: 100%;
  742. text-align: center;
  743. line-height: 100rpx;
  744. color: #3385ff;
  745. }
  746. .van-checkbox-group {
  747. display: flex;
  748. flex-wrap: wrap;
  749. }
  750. }
  751. </style>