index.vue 23 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121
  1. <template>
  2. <view>
  3. <!-- 首页风格切换-1-切换风格 -->
  4. <view class="top_bg_color">
  5. <!-- 固定安全色 -->
  6. <view class="bg_img" :style="{backgroundColor:top_bg_color}"></view>
  7. <view class="status_bar"></view>
  8. <!-- 查询 -->
  9. <view class="search" @click="go_search()">
  10. <view class="left">
  11. <view class="icon">
  12. <image src="./icon/search.png" mode=""></image>
  13. </view>
  14. <view class="text">查询</view>
  15. </view>
  16. <view @click.stop="scan()">
  17. <uni-icons type="scan" color="#fff"></uni-icons>
  18. </view>
  19. </view>
  20. <!-- 日期天气 -->
  21. <view class="date">
  22. <view class="text">{{text_time}}</view>
  23. <view class="icon" @click="go_tianqi()">
  24. <image src="./icon/weather.png" mode=""></image>
  25. </view>
  26. </view>
  27. <!-- 值班 -->
  28. <view class="notice" @click="go_duty_information()">
  29. {{text}}
  30. </view>
  31. <!-- 开屏通告 -->
  32. <openingNotice></openingNotice>
  33. <view v-for="(item,index) in common" :key="index">
  34. <view class="fixed_system" v-if="item.type_name == '七大板块' && item.index == index">
  35. <view class="top_bg">
  36. <image src="./icon/top_bg.png" mode=""></image>
  37. </view>
  38. <view class="line">
  39. <view class="item" v-for="(item_2,index_2) in item.data" :key="index_2" v-if="index_2 < 3"
  40. @click="go_page(item_2)">
  41. <view class="icon">
  42. <image :src="item_2.thumb" mode=""></image>
  43. </view>
  44. <view class="text">{{item_2.title}}</view>
  45. </view>
  46. </view>
  47. <view class="line">
  48. <view class="item" v-for="(item_2,index_2) in item.data" :key="index_2" v-if="index_2 > 2"
  49. @click="go_page(item_2)">
  50. <view class="icon">
  51. <image :src="item_2.thumb" mode=""></image>
  52. </view>
  53. <view class="text">{{item_2.title}}</view>
  54. </view>
  55. </view>
  56. </view>
  57. </view>
  58. </view>
  59. <view v-for="(item,index) in common" :key="index">
  60. <view class="todo" v-if="item.type_name == '待办事项' && item.index == index">
  61. <view class="left">
  62. <view class="title">
  63. <view class="icon"></view>
  64. <view class="text">待办事项</view>
  65. </view>
  66. </view>
  67. <view class="right">
  68. <view class="tip">您有 <text style="color: #FF0000;">0</text> 项待办</view>
  69. <view class="detail">
  70. 详情 <uni-icons type="right" size="12" color="#B5B5B5"></uni-icons>
  71. </view>
  72. </view>
  73. </view>
  74. <view class="nav" v-if="item.type_name == '实操应用' && item.index == index">
  75. <view class="section" v-for="(item_2,index_2) in item.data" :key="index_2">
  76. <view class="title">
  77. <view class="icon"></view>
  78. <view class="text">{{item_2.title}}</view>
  79. </view>
  80. <view class="list">
  81. <view class="item" v-for="(item_3,index_3) in item_2.children" :key="index_3"
  82. @click="go_page(item_3)">
  83. <view class="icon">
  84. <image :src="item_3.thumb" mode=""></image>
  85. </view>
  86. <view class="text">{{item_3.title}}</view>
  87. </view>
  88. </view>
  89. </view>
  90. </view>
  91. <view class="nav" v-if="item.type_name == '数据平台' && item.index == index">
  92. <view class="section" v-for="(item_2,index_2) in item.data" :key="index_2">
  93. <view class="title">
  94. <view class="icon"></view>
  95. <view class="text">{{item_2.title}}</view>
  96. </view>
  97. <view class="list">
  98. <view class="item" v-for="(item_3,index_3) in item_2.children" :key="index_3"
  99. @click="go_page(item_3)">
  100. <view class="icon">
  101. <image :src="item_3.thumb" mode=""></image>
  102. </view>
  103. <view class="text">{{item_3.title}}</view>
  104. </view>
  105. </view>
  106. </view>
  107. </view>
  108. <view class="nav" v-if="item.type_name == '学习资料' && item.index == index">
  109. <view class="section" v-for="(item_2,index_2) in item.data" :key="index_2">
  110. <view class="title">
  111. <view class="icon"></view>
  112. <view class="text">{{item_2.title}}</view>
  113. </view>
  114. <view class="list">
  115. <view class="item" v-for="(item_3,index_3) in item_2.children" :key="index_3"
  116. @click="go_page(item_3)">
  117. <view class="icon">
  118. <image :src="item_3.thumb" mode=""></image>
  119. </view>
  120. <view class="text">{{item_3.title}}</view>
  121. </view>
  122. </view>
  123. </view>
  124. </view>
  125. <view class="news" v-if="item.type_name == '动态信息' && item.index == index">
  126. <view class="title_box">
  127. <view class="left">
  128. <view class="title">
  129. <view class="icon"></view>
  130. <view class="text">动态信息</view>
  131. </view>
  132. </view>
  133. <view class="right" @click="go_more()">
  134. <view class="detail">
  135. 查看全部 <uni-icons type="right" size="12" color="#B5B5B5"></uni-icons>
  136. </view>
  137. </view>
  138. </view>
  139. <t-i-banner style="padding-top: 60rpx;" :banner="banners" :mine_code="mine_code"
  140. @change_top_bg_color_img="change_top_bg_color_img">
  141. </t-i-banner>
  142. <view class="list">
  143. <view class="item" v-for="(item,index) in newsList" :key="index" @click="go_detail(item.id)">
  144. <view class="icon"></view>
  145. <view class="inner">
  146. <view class="new_title">{{item.title}}</view>
  147. <view class="tip">
  148. <view class="time">{{item.created_at}}</view>
  149. <view class="detail">
  150. 详情<image src="./icon/new_detail.png" mode=""></image>
  151. </view>
  152. </view>
  153. </view>
  154. </view>
  155. </view>
  156. </view>
  157. </view>
  158. <!-- 宁煤信息平台登录框 -->
  159. <uni-popup ref="popup" type="center" @maskClick="maskClick">
  160. <view class="login_box">
  161. <view class="input_box">
  162. <view class="label">工号:</view>
  163. <view class="box">
  164. {{staff_num}}
  165. </view>
  166. </view>
  167. <view class="input_box">
  168. <view class="label">登录密码(宁煤信息平台):</view>
  169. <view class="box">
  170. <input type="password" v-model="password" />
  171. </view>
  172. </view>
  173. <view class="btn" @click="login()">确认</view>
  174. </view>
  175. </uni-popup>
  176. </view>
  177. </template>
  178. <script>
  179. import {
  180. set_base_url
  181. } from '@/common/set_base_url.js'
  182. import {
  183. goToLink
  184. } from '@/common/common.js'
  185. import time from "@/common/time.js"
  186. import {
  187. getCurrentDate,
  188. diffTime
  189. } from '@/common/time.js'
  190. // 版本控制
  191. import upApp from "@/uni_modules/uni-upgrade-center-app/utils/check-update"
  192. export default {
  193. data() {
  194. return {
  195. // 根_mine_code
  196. app_mine_code: "",
  197. // 当前煤矿编码
  198. mine_code: "",
  199. // 首页接口的基础请求路径 默认为当前矿编码的基础路径
  200. base_url: " ",
  201. // 轮播图
  202. banners: [],
  203. // 新闻列表
  204. newsList: "",
  205. text_time: "",
  206. // 值班公告
  207. text: "",
  208. // 背景虚化图片
  209. top_bg_color_img: "",
  210. // 背景安全色
  211. top_bg_color: "#7372c2",
  212. top_bg_color_list: ['#d62b2b', '#00a2e8', '#b08654', "#7372c2"],
  213. // 标题栏背景色
  214. navbar_bg_color: "",
  215. common: [],
  216. staff_num: "",
  217. password: "",
  218. url: "",
  219. app_id: "",
  220. gps: "",
  221. deviceID: "",
  222. phoneType: ""
  223. }
  224. },
  225. onPullDownRefresh() {
  226. uni.reLaunch({
  227. url: "./index"
  228. })
  229. setTimeout(function() {
  230. uni.stopPullDownRefresh();
  231. }, 1000);
  232. },
  233. onLoad() {
  234. // 初始化当前煤矿编码
  235. this.mine_code = uni.getStorageSync('mine_code')
  236. // 根据矿编码切换首页接口不同的请求基础路径
  237. this.base_url = set_base_url(this.mine_code)
  238. this.staff_num = uni.getStorageSync('user').staff_num
  239. this.text_time = getCurrentDate()
  240. // #ifdef H5
  241. if (this.mine_code == 'ningmeijituan') {
  242. if (window.location.href.indexOf('token') != -1) {
  243. this.$api.oauth_getNoPasswordToken({
  244. token: window.location.href.split('token=')[1].split('&')[0],
  245. caller: window.location.href.split('token=')[1].split('&')[1].split('=')[1]
  246. }).then((res) => {
  247. uni.setStorageSync('Authorization', res.data.data.accessToken)
  248. uni.setStorageSync('token_type', res.data.data.token_type)
  249. // 存储用户基本信息
  250. uni.setStorageSync('user', res.data.data.user);
  251. uni.setStorageSync('people_code', res.data.data.user.people_code);
  252. // 存储电话号码
  253. uni.setStorageSync('mobile', res.data.data.user.mobile);
  254. })
  255. } else {
  256. this.check_token()
  257. }
  258. } else {
  259. this.check_token()
  260. }
  261. // #endif
  262. // 检查更新
  263. upApp()
  264. // #ifdef APP-PLUS
  265. this.check_token()
  266. // #endif
  267. // 获取轮播图
  268. this.get_banner()
  269. // 获取首页新闻列表
  270. this.getNews()
  271. // 值班公告
  272. this.get_notice()
  273. this.get_home_aqyk_newLinks()
  274. },
  275. onPageScroll: function(e) {
  276. if (e.scrollTop > 300) {
  277. this.navbar_bg_color = "#009fe8"
  278. } else {
  279. this.navbar_bg_color = ""
  280. }
  281. },
  282. methods: {
  283. scan() {
  284. // 只允许通过相机扫码
  285. uni.scanCode({
  286. onlyFromCamera: true,
  287. success: (res) => {
  288. console.log('条码类型:' + res.scanType);
  289. console.log('条码内容:' + res.result);
  290. let pageId = ""
  291. function GetQueryString(name) {
  292. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
  293. var r = res.result.match(reg);
  294. if (r != null) return unescape(r[2]);
  295. return null;
  296. }
  297. console.log(GetQueryString("pageId"))
  298. if (GetQueryString("pageId")) {
  299. pageId = GetQueryString("pageId")
  300. } else {
  301. pageId = res.result.split('=')[1]
  302. }
  303. uni.navigateTo({
  304. url: "../../index/record/record?pageId=" + pageId + "&mine_code=" + this
  305. .mine_code,
  306. })
  307. }
  308. })
  309. },
  310. maskClick() {
  311. this.password = ""
  312. },
  313. login() {
  314. // #ifdef APP-PLUS
  315. if (this.password == '') {
  316. uni.showToast({
  317. icon: "none",
  318. title: "密码不能为空!"
  319. })
  320. return
  321. }
  322. this.$refs.popup.close()
  323. // 获取gps
  324. uni.getLocation({
  325. type: 'wgs84',
  326. success: (res) => {
  327. console.log('当前位置的经度:' + res.longitude);
  328. console.log('当前位置的纬度:' + res.latitude);
  329. this.gps = res.longitude + ',' + res.latitude
  330. // 获取设备信息
  331. plus.device.getInfo({
  332. success: (e) => {
  333. console.log(JSON.stringify(e.uuid));
  334. console.log(plus.device.model)
  335. this.deviceID = JSON.stringify(e.uuid)
  336. this.phoneType = plus.device.model
  337. uni.request({
  338. method: "POST",
  339. url: "http://mtyyxs.shnxmyjt.com:33300/api/OAuth/Login",
  340. header: {
  341. 'Content-Type': 'application/json;charset=UTF-8',
  342. 'caller': 'UnifiedPortal'
  343. },
  344. data: {
  345. phoneType: this.phoneType,
  346. password: this.password,
  347. gps: this.gps,
  348. userID: this.staff_num,
  349. resolvingPower: "851*393",
  350. deviceID: this.deviceID,
  351. ip: "112312313"
  352. },
  353. success: (res) => {
  354. console.log(this.password)
  355. console.log(res)
  356. if (res.data.code = '11002') {
  357. uni.showToast({
  358. icon: "none",
  359. title: res.data.msg
  360. })
  361. if (res.data.data.length > 20) {
  362. uni.setStorageSync('ningmei_token', res
  363. .data.data)
  364. uni.setStorageSync(
  365. 'ningmei_token_time',
  366. new Date().format("yyyy-MM-dd")
  367. )
  368. uni.navigateTo({
  369. url: "../../index/ningMeiXinXiPingTai/ningMeiXinXiPingTai",
  370. success: (res) => {
  371. // 通过eventChannel向被打开页面传送数据
  372. res.eventChannel
  373. .emit(
  374. 'acceptDataFromOpenerPage', {
  375. data: this
  376. .url
  377. })
  378. }
  379. })
  380. }
  381. }
  382. }
  383. })
  384. }
  385. });
  386. }
  387. })
  388. // #endif
  389. },
  390. // 单点登录及token过期验证
  391. check_token() {
  392. // token过期验证
  393. this.$api.worksheet_classify_list({
  394. }).then((res) => {
  395. if (res.data.code == 401) {
  396. uni.removeStorageSync('ningmei_token');
  397. uni.removeStorageSync('Authorization');
  398. const user = uni.getStorageSync('login_user')
  399. if (user) {
  400. this.$api.login({
  401. username: user.username,
  402. password: user.password
  403. }).then((res) => {
  404. if (res.data.code === 0) {
  405. // 保存当前用户的登录 工号和密码
  406. uni.setStorageSync('login_user', user)
  407. uni.setStorageSync('Authorization', res.data.data.access_token)
  408. uni.setStorageSync('token_type', res.data.data.token_type)
  409. // 存储用户基本信息
  410. uni.setStorageSync('user', res.data.data.user);
  411. uni.setStorageSync('people_code', res.data.data.user.people_code);
  412. // 存储电话号码
  413. uni.setStorageSync('mobile', res.data.data.user.mobile);
  414. // 清除信息平台的登录历史token
  415. uni.setStorageSync('ningmei_token', ' ')
  416. // 登录成功跳转首页
  417. uni.switchTab({
  418. url: "../../tabbar/index/index",
  419. success: () => {
  420. //#ifdef H5
  421. window.location.reload();
  422. //#endif
  423. }
  424. })
  425. // #ifdef APP-PLUS
  426. plus.runtime.restart();
  427. // #endif
  428. } else if (res.data.code === 1001) {
  429. uni.showToast({
  430. icon: "none",
  431. title: "用户不存在"
  432. })
  433. } else if (res.data.code === 1002) {
  434. uni.showToast({
  435. icon: "none",
  436. title: "密码错误"
  437. })
  438. } else {
  439. return false
  440. }
  441. }).catch((err) => {
  442. console.log('request fail', err);
  443. uni.showToast({
  444. icon: "none",
  445. title: err
  446. })
  447. })
  448. } else {
  449. uni.showToast({
  450. icon: "none",
  451. title: "登录失效、请重新登录"
  452. })
  453. setTimeout(function() {
  454. uni.redirectTo({
  455. url: "../../my/login/login"
  456. })
  457. }, 1500)
  458. }
  459. } else {
  460. // console.log(res)
  461. }
  462. })
  463. },
  464. // 天气
  465. go_tianqi() {
  466. uni.navigateTo({
  467. url: "../../index/weather/weather"
  468. })
  469. },
  470. go_search() {
  471. uni.navigateTo({
  472. url: "../../index/search/search?mine_code=ningmeijituan"
  473. })
  474. },
  475. get_home_aqyk_newLinks() {
  476. this.$api.home_aqyk_newLinks({
  477. }).then((res) => {
  478. // console.log(res.data)
  479. let data = res.data
  480. data.forEach((item, index) => {
  481. item['index'] = index
  482. })
  483. // console.log(data)
  484. this.common = data
  485. })
  486. },
  487. // 获取轮播图
  488. get_banner() {
  489. uni.request({
  490. url: this.base_url + "/scrollImg/list",
  491. method: "GET",
  492. success: (res) => {
  493. // console.log(res.data.data.data)
  494. this.banners = res.data.data.data
  495. this.top_bg_color_img = this.banners[0].imgURL
  496. }
  497. })
  498. },
  499. // 请求新闻动态
  500. getNews() {
  501. uni.request({
  502. url: this.base_url + "/article/list",
  503. method: "GET",
  504. data: {
  505. pageSize: 4
  506. },
  507. success: (res) => {
  508. this.newsList = res.data.data.data
  509. }
  510. })
  511. },
  512. // 值班公告
  513. get_notice() {
  514. uni.request({
  515. url: this.base_url + "/notice/list",
  516. method: "GET",
  517. success: (res) => {
  518. if (!res.data.data.content) {
  519. this.text = res.data.data.message
  520. } else {
  521. this.text = res.data.data.content.replace(/<br /g, " ").replace(/>/g, " ").replace(
  522. /\//g, " ")
  523. }
  524. }
  525. })
  526. },
  527. // 切换背景图片
  528. change_top_bg_color_img(index) {
  529. if (index > 3) {
  530. index = parseInt(4 * Math.random())
  531. }
  532. this.top_bg_color = this.top_bg_color_list[index]
  533. },
  534. go_page(item) {
  535. if (item.link == null) {
  536. uni.showToast({
  537. icon: "none",
  538. title: "暂未开通"
  539. })
  540. return
  541. }
  542. let link = item.link
  543. if (link.indexOf("nativeApp://") != -1) {
  544. let app_name = link.match(/nativeApp:\/\/(\S*)\?/)[1]
  545. let app_down_link = link.split('?')[1]
  546. // #ifdef APP
  547. if (plus.os.name == 'Android') {
  548. plus.runtime.launchApplication({
  549. pname: app_name
  550. }, (e) => {
  551. console.log('Open system default browser failed: ' + e.message)
  552. uni.showModal({
  553. title: app_name,
  554. content: '未安装此应用、是否下载?',
  555. success: (res) => {
  556. if (res.confirm) {
  557. console.log('用户点击确定');
  558. uni.navigateTo({
  559. url: "../../index/h5/h5?url=" + app_down_link
  560. })
  561. } else if (res.cancel) {
  562. console.log('用户点击取消');
  563. }
  564. }
  565. });
  566. })
  567. }
  568. // #endif
  569. } else if (link.indexOf("http://mtyyxs.shnxmyjt.com") != -1) {
  570. console.log("信息平台")
  571. this.url = item
  572. // 有登录记录
  573. let token = uni.getStorageSync('ningmei_token')
  574. let time = uni.getStorageSync('ningmei_token_time')
  575. // 30天刷新一次
  576. let diffTimeShow = diffTime(time, new Date().format("yyyy-MM-dd")).split(' ')[0];
  577. console.log(diffTimeShow)
  578. if (token.length > 20 && diffTimeShow < 30) {
  579. uni.navigateTo({
  580. url: "../../index/ningMeiXinXiPingTai/ningMeiXinXiPingTai",
  581. success: (res) => {
  582. // 通过eventChannel向被打开页面传送数据
  583. res.eventChannel.emit('acceptDataFromOpenerPage', {
  584. data: this.url
  585. })
  586. }
  587. })
  588. } else {
  589. this.$refs.popup.open()
  590. }
  591. } else {
  592. goToLink(item, this.mine_code)
  593. }
  594. },
  595. // 打开详情页
  596. go_detail(id) {
  597. uni.navigateTo({
  598. url: "../../index/news/news?id=" + id + "&mine_code=ningmeijituan"
  599. })
  600. },
  601. // 打开列表
  602. go_more() {
  603. uni.navigateTo({
  604. url: "../../index/news/news_list/news_list?mine_code=ningmeijituan"
  605. })
  606. },
  607. go_duty_information() {
  608. uni.navigateTo({
  609. url: "../../workbench/duty_information/duty_information"
  610. })
  611. }
  612. }
  613. }
  614. </script>
  615. <style lang="scss">
  616. page {
  617. background-color: #FFFFFF;
  618. }
  619. /deep/ .banner {
  620. background-color: #FFFFFF;
  621. }
  622. .top_bg_color {
  623. position: relative;
  624. width: 750rpx;
  625. overflow: hidden;
  626. .bg_img {
  627. width: 750rpx;
  628. height: 440rpx;
  629. position: absolute;
  630. top: 0;
  631. left: 0;
  632. z-index: 0;
  633. background-position: center;
  634. background-size: 100% 100%;
  635. filter: blur(50px);
  636. transform: scale(2);
  637. opacity: 0.9;
  638. }
  639. }
  640. .search {
  641. position: relative;
  642. z-index: 99;
  643. margin: 0 auto;
  644. margin-top: 30rpx;
  645. width: 700rpx;
  646. height: 64rpx;
  647. box-sizing: border-box;
  648. border: 2rpx solid #FFFFFF;
  649. border-radius: 30rpx;
  650. opacity: 0.5;
  651. padding: 0 30rpx;
  652. display: flex;
  653. justify-content: space-between;
  654. align-items: center;
  655. .left {
  656. display: flex;
  657. align-items: center;
  658. .icon {
  659. margin-right: 10rpx;
  660. image {
  661. width: 35rpx;
  662. height: 27rpx;
  663. }
  664. }
  665. .text {
  666. color: #DDF4FF;
  667. font-size: 27rpx;
  668. }
  669. }
  670. }
  671. .date {
  672. position: relative;
  673. z-index: 99;
  674. margin: 20rpx auto;
  675. width: 700rpx;
  676. display: flex;
  677. align-items: center;
  678. .text {
  679. font-size: 30rpx;
  680. color: #FFFFFF;
  681. }
  682. .icon {
  683. margin-left: 60rpx;
  684. image {
  685. width: 38rpx;
  686. height: 29rpx;
  687. }
  688. }
  689. }
  690. .notice {
  691. position: relative;
  692. z-index: 99;
  693. box-sizing: border-box;
  694. padding: 0rpx 25rpx;
  695. color: #FFFFFF;
  696. font-size: 30rpx;
  697. line-height: 1.8;
  698. }
  699. .fixed_system {
  700. position: relative;
  701. z-index: 10;
  702. box-sizing: border-box;
  703. padding: 25rpx 0;
  704. width: 750rpx;
  705. height: 436rpx;
  706. background-image: url(./icon/section.png);
  707. background-size: 100% 100%;
  708. background-repeat: no-repeat;
  709. .top_bg {
  710. position: absolute;
  711. top: -220rpx;
  712. right: 0rpx;
  713. image {
  714. width: 500rpx;
  715. height: 340rpx;
  716. }
  717. }
  718. .line {
  719. box-sizing: border-box;
  720. padding: 25rpx;
  721. display: flex;
  722. justify-content: center;
  723. .item {
  724. margin-right: 54rpx;
  725. .icon {
  726. image {
  727. width: 109rpx;
  728. height: 109rpx;
  729. display: block;
  730. }
  731. }
  732. .text {
  733. font-size: 28rpx;
  734. color: #171717;
  735. }
  736. }
  737. }
  738. .line:first-child {
  739. .item:nth-child(3) {
  740. margin-right: 0;
  741. }
  742. }
  743. .line:last-child {
  744. .item:nth-child(4) {
  745. margin-right: 0;
  746. }
  747. }
  748. }
  749. .todo {
  750. box-sizing: border-box;
  751. padding: 25rpx;
  752. display: flex;
  753. justify-content: space-between;
  754. align-items: center;
  755. .left {
  756. .title {
  757. display: flex;
  758. align-items: center;
  759. .icon {
  760. width: 9rpx;
  761. height: 34rpx;
  762. background-color: #04A0E8;
  763. border-radius: 5rpx;
  764. }
  765. .text {
  766. margin-left: 10rpx;
  767. color: #6A6A6A;
  768. font-size: 33rpx;
  769. font-weight: 700;
  770. }
  771. }
  772. }
  773. .right {
  774. display: flex;
  775. align-items: baseline;
  776. .tip {
  777. font-size: 25rpx;
  778. color: #6A6A6A;
  779. }
  780. .detail {
  781. margin-left: 24rpx;
  782. font-size: 25rpx;
  783. color: #B5B5B5;
  784. }
  785. }
  786. }
  787. .nav {
  788. background-color: #F7F9F7;
  789. width: 750rpx;
  790. padding: 10rpx 0;
  791. .section {
  792. background-color: #FFFFFF;
  793. box-sizing: border-box;
  794. padding: 25rpx;
  795. .title {
  796. padding: 20rpx 0;
  797. display: flex;
  798. align-items: center;
  799. .icon {
  800. width: 9rpx;
  801. height: 34rpx;
  802. background-color: #04A0E8;
  803. border-radius: 5rpx;
  804. }
  805. .text {
  806. margin-left: 10rpx;
  807. color: #6A6A6A;
  808. font-size: 33rpx;
  809. font-weight: 700;
  810. }
  811. }
  812. .list {
  813. width: 700rpx;
  814. overflow: hidden;
  815. .item {
  816. margin-top: 20rpx;
  817. float: left;
  818. margin-right: 20rpx;
  819. width: 120rpx;
  820. text-align: center;
  821. .icon {
  822. image {
  823. width: 73rpx;
  824. height: 73rpx;
  825. }
  826. }
  827. .text {
  828. color: #171717;
  829. font-size: 26rpx;
  830. white-space: nowrap;
  831. overflow: hidden;
  832. text-overflow: ellipsis;
  833. }
  834. }
  835. .item:nth-child(5n) {
  836. margin-right: 0;
  837. }
  838. }
  839. }
  840. }
  841. .news {
  842. background-color: #F7F9F7;
  843. padding-top: 20rpx;
  844. .title_box {
  845. background-color: #FFFFFF;
  846. box-sizing: border-box;
  847. padding: 25rpx;
  848. display: flex;
  849. justify-content: space-between;
  850. align-items: center;
  851. .left {
  852. .title {
  853. display: flex;
  854. align-items: center;
  855. .icon {
  856. width: 9rpx;
  857. height: 34rpx;
  858. background-color: #04A0E8;
  859. border-radius: 5rpx;
  860. }
  861. .text {
  862. margin-left: 10rpx;
  863. color: #6A6A6A;
  864. font-size: 33rpx;
  865. font-weight: 700;
  866. }
  867. }
  868. }
  869. .right {
  870. display: flex;
  871. align-items: baseline;
  872. .tip {
  873. font-size: 25rpx;
  874. color: #6A6A6A;
  875. }
  876. .detail {
  877. margin-left: 24rpx;
  878. font-size: 25rpx;
  879. color: #B5B5B5;
  880. }
  881. }
  882. }
  883. .list {
  884. box-sizing: border-box;
  885. padding: 25rpx;
  886. background-color: #FFFFFF;
  887. .item {
  888. margin-bottom: 20rpx;
  889. display: flex;
  890. justify-content: space-between;
  891. border-bottom: 1rpx solid #F5F6F7;
  892. .icon {
  893. position: relative;
  894. top: 16rpx;
  895. width: 8rpx;
  896. height: 8rpx;
  897. background: #999999;
  898. border-radius: 50%;
  899. }
  900. .inner {
  901. width: 680rpx;
  902. .new_title {
  903. color: #171717;
  904. font-size: 29rpx;
  905. line-height: 44rpx;
  906. }
  907. .tip {
  908. margin: 20rpx 0;
  909. display: flex;
  910. justify-content: space-between;
  911. .time {
  912. font-size: 26rpx;
  913. color: #999999;
  914. }
  915. .detail {
  916. color: #FD6B5C;
  917. font-size: 23rpx;
  918. image {
  919. margin-left: 8rpx;
  920. width: 19rpx;
  921. height: 16rpx;
  922. }
  923. }
  924. }
  925. }
  926. }
  927. .item:last-child {
  928. border: none;
  929. }
  930. }
  931. }
  932. .login_box {
  933. width: 500rpx;
  934. padding: 30rpx 50rpx;
  935. border-radius: 20rpx;
  936. margin: 0 auto;
  937. background-color: #FFFFFF;
  938. .input_box {
  939. margin-bottom: 30rpx;
  940. .label {
  941. color: #6C6F74;
  942. margin-bottom: 20rpx;
  943. }
  944. .box {
  945. background: #FFFFFF;
  946. border-radius: 8rpx;
  947. border: 2rpx solid #E9EBF2;
  948. box-sizing: border-box;
  949. padding: 20rpx 25rpx;
  950. }
  951. }
  952. .btn {
  953. width: 500rpx;
  954. margin: 0 auto;
  955. border-radius: 8rpx;
  956. background-color: #009FE8;
  957. line-height: 90rpx;
  958. color: #FFFFFF;
  959. text-align: center;
  960. }
  961. }
  962. </style>