index.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726
  1. <template>
  2. <view class="content">
  3. <view class="">
  4. <!-- 头部 -->
  5. <u-navbar :border-bottom="false" :background="background" :is-back="false" title=" ">
  6. <view class="slot-wrap">
  7. <view class="padding-left-20 flex" >
  8. <u-icon size="34" name="map-fill" color="#FFFFFF"></u-icon>
  9. <text class="text-cut-1 text-white" style="font-size: 32rpx;padding: 0 10rpx;">{{gander?gander:'暂无园区信息'}}</text>
  10. </view>
  11. </view>
  12. </u-navbar>
  13. <!-- banner -->
  14. <swiper class="screen-swiper square-dot " :indicator-dots="true" :circular="true"
  15. :autoplay="true" interval="5000" duration="500">
  16. <swiper-item v-for="(item,index) in bannerList" :key="index">
  17. <image :src="item.banners" mode="aspectFill" ></image>
  18. </swiper-item>
  19. </swiper>
  20. <!-- 公告 -->
  21. <view v-if="!$isEmpty(noticeList)" class="">
  22. <view class="bg-white" style="height: 10rpx;"></view>
  23. <hotConsult @onTap="jump('/pages/index/notice/notice')" @detailTap="goNoticeDetail" :swiperTexts="noticeList"></hotConsult>
  24. </view>
  25. <!-- 园区信息 -->
  26. <view class="bg-white" v-if="loginType=='agency'">
  27. <view class="flex" style="padding: 30rpx; ">
  28. <image style="width: 35rpx;height: 35rpx;display: block;padding-top: 6rpx;padding-right: 10rpx;" src="../../static/icon/tag1.png" mode=""></image>
  29. <text class="text-lg text-black">园区信息</text>
  30. </view>
  31. <view class="cu-list grid col-4 no-border" :key="index">
  32. <view class="cu-item" @click="jump(item.url)" v-for="(item,index) in statistical" :key="index">
  33. <view class="grid-icon" >
  34. <image style="width: 70rpx;height: 70rpx;" :src="item.icon"/>
  35. </view>
  36. <text style="color: #333333;font-size: 26rpx;" >{{item.title}}</text>
  37. <view class="cu-tag bg-red badge" v-if="item.count>0">{{item.count}}</view>
  38. </view>
  39. </view>
  40. </view>
  41. <!-- 园区服务 -->
  42. <view class="bg-white">
  43. <view class="flex" style="padding: 30rpx; ">
  44. <image style="width: 35rpx;height: 35rpx;display: block;padding-top: 6rpx;padding-right: 10rpx;" src="../../static/icon/tag1.png" mode=""></image>
  45. <text class="text-lg text-black">园区服务</text>
  46. </view>
  47. <view class="cu-list grid col-4 no-border">
  48. <view class="cu-item" v-if="item.show" @click="jump(item.url)" v-for="(item,index) in elements" :key="index">
  49. <view class="grid-icon" >
  50. <image style="width: 70rpx;height: 70rpx;" :src="item.icon"/>
  51. </view>
  52. <text style="color: #333333;font-size: 26rpx;" >{{item.title}}</text>
  53. <view class="cu-tag bg-red badge" v-if="item.count>0">{{item.count}}</view>
  54. </view>
  55. </view>
  56. <!-- <view class="nav-list padding-top-30" >
  57. <view
  58. v-if="item.show"
  59. hover-class="none"
  60. @click="jump(item.url)"
  61. class="nav-li light" :style="{backgroundColor:item.color}"
  62. v-for="(item,index) in elements" :key="index">
  63. <view class="nav-title" style="color: #000000;font-size: 28rpx;">{{item.title}}</view>
  64. <view class="" style="padding-top: 10rpx;font-size: 24rpx;color: #acacac;">{{item.name}}{{item.show}}</view>
  65. <image :src="item.icon" mode=""></image>
  66. <u-badge :is-center="true" type="error" :count="item.count"></u-badge>
  67. </view>
  68. </view> -->
  69. </view>
  70. <view class="bg-white" v-if="loginType!='staff'">
  71. <view class="flex" style="padding: 30rpx; ">
  72. <image style="width: 35rpx;height: 35rpx;display: block;padding-top: 6rpx;padding-right: 10rpx;" src="../../static/icon/tag1.png" mode=""></image>
  73. <text class="text-lg">消防服务</text>
  74. </view>
  75. <view class="cu-list grid col-4 no-border">
  76. <view class="cu-item" @click="jump(item.url)" v-for="(item,index) in fireList" :key="index">
  77. <view class="grid-icon" >
  78. <image style="width: 70rpx;height: 70rpx;" :src="item.icon"/>
  79. </view>
  80. <text style="color: #333333;font-size: 26rpx;" >{{item.title}}</text>
  81. <view class="cu-tag bg-red badge" v-if="item.count>0">{{item.count}}</view>
  82. </view>
  83. </view>
  84. <!-- <view class="nav-list padding-top-30" >
  85. <view hover-class="none"
  86. @click="jump(item.url)"
  87. class="nav-li light" :style="{backgroundColor:item.color}"
  88. v-for="(item,index) in fireList" :key="index">
  89. <view class="nav-title" style="color: #000000;font-size: 28rpx;">{{item.title}}</view>
  90. <view class="" style="padding-top: 10rpx;font-size: 24rpx;color: #acacac;">{{item.name}}</view>
  91. <image :src="item.icon" mode=""></image>
  92. </view>
  93. </view> -->
  94. </view>
  95. <view class="bg-white padding-bottom-20" v-if="newsList.length>0">
  96. <view class="flex justify-between" style="padding: 30rpx;">
  97. <view class="flex">
  98. <image style="width: 35rpx;height: 35rpx;display: block;padding-top: 6rpx;padding-right: 10rpx;" src="../../static/icon/tag1.png" mode=""></image>
  99. <text class="text-lg text-black">园区动态</text>
  100. </view>
  101. <view @click="jump('/pages/news/list')" style="padding-top: 6rpx;font-size: 26rpx;color: #676767;">
  102. <text style="font-size: 24rpx;color: #676767;margin-top: 5rpx;">查看更多</text>
  103. <text class="cuIcon-right "></text>
  104. </view>
  105. </view>
  106. <infomation :newList="newsList"></infomation>
  107. </view>
  108. <u-action-sheet @click="ganderChange" :list="ganderArray" v-model="ganderShow"></u-action-sheet>
  109. </view>
  110. <u-tabbar v-model="tabbarCurr"
  111. :icon-size="tabbar.iconSize"
  112. :active-color="tabbar.activeColor"
  113. :mid-button-size="tabbar.MinButtonSize"
  114. :list="tabbar.list" :mid-button="true">
  115. </u-tabbar>
  116. </view>
  117. </template>
  118. <script>
  119. import {tabbar} from "@/assets/js/tabbar.js"
  120. import hotConsult from "@/components/hot-consult/hot-consult.vue"
  121. import infomation from "@/components/infomation/infomation.vue"
  122. let plugin = requirePlugin("subway");
  123. export default {
  124. components:{
  125. hotConsult,infomation
  126. },
  127. data() {
  128. return {
  129. background:{
  130. backgroundColor:'#5064eb'
  131. },
  132. //登陆类型
  133. loginType:this.$cache.get('loginType') || '',
  134. //tabbar
  135. tabbarCurr:0,
  136. tabbar:tabbar,
  137. //园区 label
  138. ganderShow:false,
  139. //园区列表
  140. ganderArray:[],
  141. gander:'',
  142. //banner
  143. bannerList: [
  144. {
  145. 'banners': "http://139.9.103.171:1888/miniofile/xlyq/banner.jpg"
  146. },
  147. ],
  148. // 公告
  149. noticeList:[],
  150. //消防服务
  151. fireList:[],
  152. //园区服务
  153. elements: [],
  154. //园区统计
  155. statistical:[],
  156. //园区动态
  157. newsList:[],
  158. //是否为党员
  159. isPartMember:false
  160. };
  161. },
  162. onShow() {
  163. if (this.loginType!=this.$loginType.STAFF) {
  164. this.fetchWaitAuditNum()
  165. this.fetchWaitAuditGuestNum()
  166. }
  167. },
  168. // onReady() {
  169. // if (this.$cache.get('loginType')!=this.$loginType.STAFF) {
  170. // let tmp=this.$u.deepClone(tabbar)
  171. // tmp.list.splice(1,1)
  172. // this.tabbar=tmp
  173. // }else{
  174. // this.tabbar=tabbar
  175. // }
  176. // },
  177. onLoad() {
  178. //判断员工是否为党员
  179. this.checkIsPartMember()
  180. //加载静态数据
  181. this.fetchStaticData()
  182. //加载用户数据
  183. this.fetchUserInfo()
  184. //加载园区动态
  185. this.fetchNewsList()
  186. //加载通知公告
  187. this.fetchNoticeList()
  188. //缓存字段值
  189. this.cacheDict()
  190. },
  191. methods:{
  192. async checkIsPartMember(){
  193. if (this.$cache.get('loginType')==this.$loginType.STAFF) {
  194. let id=this.$cache.get('userId')
  195. let res=await this.$api.party.isPartyMember({id})
  196. this.isPartMember=!this.$isEmpty(res.data)
  197. this.$u.vuex('vuex_party_person',res.data)
  198. }
  199. },
  200. fetchBanner(){
  201. let params={
  202. tenantId:this.$cache.get('agencyTenantId')
  203. }
  204. this.$api.banner.page(params).then(res=>{
  205. if (!this.$isEmpty(res.data.records)) {
  206. this.bannerList=res.data.records
  207. }
  208. })
  209. },
  210. /**
  211. * 获取园区动态
  212. */
  213. fetchNewsList(){
  214. let params={
  215. size:5,
  216. agencyId:this.$cache.get('agencyId').toString()
  217. }
  218. this.$api.CMS.page(params).then(res=>{
  219. this.newsList=res.data.records
  220. })
  221. },
  222. /**
  223. * 加载用户数据
  224. */
  225. fetchUserInfo(){
  226. if (this.loginType==this.$loginType.STAFF) {
  227. //员工
  228. let phone=this.$cache.get('phone')
  229. this.$api.enterprisestaff.page({phone:phone,examine:1}).then(res=>{
  230. let userInfo=res.data.records[0]
  231. getApp().globalData.userInfo=userInfo
  232. this.$cache.put("residentialId",userInfo.residentialId)
  233. this.gander=userInfo.enterpriseName
  234. })
  235. }else if (this.loginType==this.$loginType.ENTERPRISE) {
  236. let creditCode=this.$cache.get('creditCode')
  237. this.$api.enterprise.detail({creditCode:creditCode}).then(res=>{
  238. this.gander=res.data.enterpriseName
  239. getApp().globalData.userInfo=res.data
  240. this.$cache.put('enterpriseName',res.data.enterpriseName)
  241. this.$cache.put("residentialId",res.data.residentialId)
  242. })
  243. }else if (this.loginType==this.$loginType.AGENCY) {
  244. this.gander=this.$cache.get('agency')
  245. }
  246. },
  247. /**
  248. * 加载待审核员工的数量
  249. */
  250. fetchWaitAuditNum(){
  251. let that=this
  252. let params={
  253. size:200,
  254. examine:0
  255. }
  256. if (this.loginType==this.$loginType.ENTERPRISE) {
  257. params.enterpriseId=this.$cache.get('enterpriseId')
  258. }
  259. if (this.loginType==this.$loginType.AGENCY) {
  260. params.agencyId=this.$cache.get('agencyId')
  261. }
  262. this.$api.enterprisestaff.page(params).then(res=>{
  263. this.elements.forEach(item=>{
  264. if (item.url=='/pages/index/staffAudit/list') {
  265. item.count=res.data.total
  266. }
  267. })
  268. })
  269. },
  270. fetchWaitAuditGuestNum(){
  271. let params={
  272. checkState:0
  273. }
  274. //企业
  275. if (this.loginType==this.$loginType.ENTERPRISE) {
  276. params.enterpriseId=this.$cache.get('enterpriseId')
  277. }
  278. //园区
  279. if (this.loginType==this.$loginType.AGENCY) {
  280. params.agencyId=this.$cache.get('agencyId')
  281. }
  282. this.$api.guest.page(params).then(res=>{
  283. this.elements.forEach(item=>{
  284. if (item.url=='/pages/guest/records/records') {
  285. item.count=res.data.total
  286. }
  287. })
  288. })
  289. },
  290. /**
  291. * @param {Object} index更改园区
  292. */
  293. ganderChange(index){
  294. this.gander=this.ganderArray[index].text
  295. },
  296. /**
  297. * 跳转
  298. * @param {Object} url
  299. */
  300. jump(url){
  301. if (url=='/party/pages/home/home') {
  302. //智慧党建
  303. if (!this.isPartMember) {
  304. url='/party/pages/empty/empty'
  305. }
  306. }
  307. //地铁图
  308. if (url=='subway') {
  309. let key='WAGBZ-EFIKU-2W2VF-4UX5F-ATB3F-HKBFU'
  310. let referer='新邻园区'
  311. uni.navigateTo({
  312. url: 'plugin://subway/index?key=' + key + '&referer=' + referer
  313. })
  314. return
  315. }
  316. if (!this.$isEmpty(url)) {
  317. uni.navigateTo({
  318. url:url,
  319. fail(err) {
  320. console.log(err);
  321. }
  322. })
  323. }
  324. },
  325. /**
  326. * 加载通知列表
  327. */
  328. fetchNoticeList(){
  329. let params={
  330. agencyId:this.$cache.get('agencyId')
  331. }
  332. this.$api.notice.page(params).then(res=>{
  333. this.noticeList=res.data.records
  334. })
  335. },
  336. /**
  337. * 跳转到通知详情
  338. */
  339. goNoticeDetail(item){
  340. console.log(item);
  341. getApp().globalData.noticeDetail=item
  342. uni.navigateTo({
  343. url:"/pages/index/notice/detail",
  344. })
  345. },
  346. //缓存字典的值
  347. async cacheDict(){
  348. let dictCacheData=this.$cache.get('dict')
  349. if (dictCacheData&&
  350. dictCacheData.carTypeList&&
  351. dictCacheData.carPropertiesList&&
  352. dictCacheData.fuelCategoryList&&
  353. dictCacheData.partyMeetingClass&&
  354. dictCacheData.partyInfoClass) {
  355. return
  356. }
  357. //有效时间
  358. let validTime=1*24*60*60*3
  359. //车辆类型
  360. let carTypeList=[]
  361. //车辆性质
  362. let carPropertiesList=[]
  363. //燃油类别
  364. let fuelCategoryList=[]
  365. //三会一课
  366. let partyMeetingClass=[]
  367. //党内资讯
  368. let partyInfoClass=[]
  369. // 请求字典begin
  370. let res1=await this.$api.dict({code:'car_type'})
  371. res1.data.forEach((item)=>{
  372. let tmp={
  373. value:item.dictKey,
  374. label:item.dictValue
  375. }
  376. carTypeList.push(tmp)
  377. })
  378. let res2=await this.$api.dict({code:'car_properties'})
  379. res2.data.forEach((item)=>{
  380. let tmp={
  381. value:item.dictKey,
  382. label:item.dictValue
  383. }
  384. carPropertiesList.push(tmp)
  385. })
  386. let res3=await this.$api.dict({code:'fuel_category'})
  387. res3.data.forEach((item)=>{
  388. let tmp={
  389. value:item.dictKey,
  390. label:item.dictValue
  391. }
  392. fuelCategoryList.push(tmp)
  393. })
  394. //三会一课分类
  395. let res4=await this.$api.dict({code:'party_meeting_class'})
  396. res4.data.forEach((item)=>{
  397. let tmp={
  398. value:item.dictKey,
  399. label:item.dictValue
  400. }
  401. partyMeetingClass.push(tmp)
  402. })
  403. //党内资讯
  404. let res5=await this.$api.dict({code:'party_new_class'})
  405. res5.data.forEach((item)=>{
  406. let tmp={
  407. value:item.dictKey,
  408. label:item.dictValue
  409. }
  410. partyInfoClass.push(tmp)
  411. })
  412. // 请求字典end
  413. //缓存字典的值begin
  414. let dict={
  415. carTypeList,
  416. carPropertiesList,
  417. fuelCategoryList,
  418. partyMeetingClass,
  419. partyInfoClass
  420. }
  421. this.$cache.put('dict',dict,validTime)
  422. //缓存字典的值end
  423. },
  424. /**
  425. * 加载静态数据
  426. */
  427. fetchStaticData(){
  428. this.statistical=[
  429. {
  430. title: '园区信息',
  431. name: 'Campus information',
  432. color: '#e3f5ff',
  433. icon:'../../static/icon/yuanqu.png',
  434. url:'/pages/agency/agency',
  435. count:0,
  436. },
  437. {
  438. title: '数据统计',
  439. icon:'../../static/icon/data-service.png',
  440. url:'/pages/agency/agency?current=1',
  441. },
  442. {
  443. title: '消防统计',
  444. icon:'../../static/icon/fire-service.png',
  445. url:'/pages/agency/agency?current=2',
  446. },
  447. ]
  448. this.elements=[
  449. {
  450. title: '我的企业',
  451. name: 'My business',
  452. color: '#e3f5ff',
  453. icon:'../../static/icon/yuanqu.png',
  454. url:'/pages/company/company',
  455. count:0,
  456. show:this.loginType!=this.$loginType.AGENCY
  457. },
  458. {
  459. title: '我的资料',
  460. name: 'My profile',
  461. color: '#ecf3f9',
  462. icon:'../../static/icon/info.png',
  463. url:'/pages/index/myinfo/myinfo',
  464. count:0,
  465. show:this.loginType==this.$loginType.STAFF
  466. },
  467. {
  468. title: '员工审核',
  469. name: 'Staff certification',
  470. color: '#eaebf9',
  471. icon:'../../static/icon/info.png',
  472. url:'/pages/index/staffAudit/list',
  473. count:0,
  474. show:this.loginType!=this.$loginType.STAFF
  475. },
  476. {
  477. title: '访客审核',
  478. icon:'../../static/icon/guest-gl.png',
  479. url:'/pages/guest/records/records',
  480. count:0,
  481. show:this.loginType!=this.$loginType.STAFF
  482. },
  483. {
  484. title: '我的测温',
  485. name: 'My temperature',
  486. color: '#e5eef9',
  487. icon:'../../static/icon/cewen.png',
  488. url:'/pages/index/staff-temperature/list',
  489. count:0,
  490. show:this.loginType==this.$loginType.STAFF
  491. },
  492. {
  493. title: '测温记录',
  494. name: 'Staff temperature',
  495. color: '#e5eef9',
  496. icon:'../../static/icon/cewen.png',
  497. url:'/pages/index/staff-temperature/list',
  498. count:0,
  499. show:this.loginType!=this.$loginType.STAFF
  500. },
  501. {
  502. title: '通行记录',
  503. name: 'Access records',
  504. color: '#e9f9f3',
  505. icon:'../../static/icon/jilu.png',
  506. url:'/pages/index/access-record/access-record',
  507. count:0,
  508. show:true
  509. },
  510. {
  511. title: this.loginType==this.$loginType.STAFF?'我的车辆':'车辆管理',
  512. name: 'Notice managerment',
  513. color: '#eaebf9',
  514. icon:'../../static/icon/car.png',
  515. url:this.loginType==this.$loginType.STAFF?'/pages/index/car/my-car/my-car':'/pages/index/car/car-manager/car-manager',
  516. count:0,
  517. show:true
  518. },
  519. {
  520. title: '车辆记录',
  521. name: 'The vehicle record',
  522. color: '#fcf5f3',
  523. icon:'../../static/icon/car-records.png',
  524. url:'/pages/index/car/list',
  525. count:0,
  526. show:this.loginType==this.$loginType.AGENCY
  527. },
  528. {
  529. title: '企业项目',
  530. icon:'../../static/icon/project1.png',
  531. url:'/pages/management/product/product',
  532. count:0,
  533. show:this.loginType==this.$loginType.ENTERPRISE
  534. },
  535. {
  536. title: '打卡',
  537. icon:'../../static/icon/dk1.png',
  538. url:'/punch/pages/index/index',
  539. count:0,
  540. show:this.loginType==this.$loginType.STAFF
  541. },
  542. {
  543. title: '智慧党建',
  544. icon:'../../static/icon/dang.png',
  545. url:'/party/pages/home/home',
  546. count:0,
  547. show:this.loginType==this.$loginType.STAFF
  548. },
  549. {
  550. title: '视频监控',
  551. icon:'../../static/icon/live.png',
  552. url:'/pages/live/live',
  553. count:0,
  554. show:false
  555. // show:this.loginType==this.$loginType.AGENCY
  556. },
  557. {
  558. title: '地铁图',
  559. icon:'../../static/icon/subway.png',
  560. url:'subway',
  561. count:0,
  562. show:this.loginType==this.$loginType.STAFF
  563. },
  564. {
  565. title: '公告管理',
  566. name: 'Notice managerment',
  567. color: '#eaebf9',
  568. icon:'../../static/icon/tongzhi.png',
  569. url:'/pages/index/notice/list',
  570. count:0,
  571. show:this.loginType==this.$loginType.AGENCY
  572. },
  573. ]
  574. this.fireList=[
  575. {
  576. title: '烟感报警',
  577. name: 'Smoke alarm',
  578. color: '#e5eef9',
  579. icon:'../../static/icon/yangan.png',
  580. url:"/pages/index/fire/list/list?fireType=0"
  581. },
  582. {
  583. title: '消防水压',
  584. name: 'Fire water pressure',
  585. color: '#e9f9f3',
  586. icon: '../../static/icon/xiaofang.png',
  587. url:"/pages/index/fire/list/list?fireType=2"
  588. },
  589. {
  590. title: '燃气告警',
  591. name: 'Gas alarm',
  592. color: '#ffefef',
  593. icon: '../../static/icon/ranqi.png',
  594. url:"/pages/index/fire/list/list?fireType=1"
  595. },
  596. {
  597. title: '电表设备',
  598. name: 'Metering equipment',
  599. color: '#e3f5ff',
  600. icon:'../../static/icon/dianbiao.png',
  601. // icon: '../../static/index/fire/dianbiao.png',
  602. url:"/pages/index/fire/list/list?fireType=3"
  603. },
  604. ]
  605. }
  606. }
  607. };
  608. </script>
  609. <style lang="scss" scoped>
  610. page,.content{
  611. background-color: #FFFFFF;
  612. min-height: 100vh;
  613. }
  614. //四宫格 begin
  615. .nav-list {
  616. display: flex;
  617. flex-wrap: wrap;
  618. justify-content: flex-start;
  619. }
  620. .nav-li {
  621. padding: 30upx 30rpx;
  622. border-radius: 12upx;
  623. width: 44%;
  624. margin: 10rpx 2% 10upx;
  625. background-size: cover;
  626. background-position: center;
  627. position: relative;
  628. z-index: 1;
  629. }
  630. .nav-li::after {
  631. content: "";
  632. position: absolute;
  633. z-index: -1;
  634. background-color: inherit;
  635. width: 100%;
  636. height: 100%;
  637. left: 0;
  638. bottom: -10%;
  639. border-radius: 10upx;
  640. opacity: 0.2;
  641. transform: scale(0.9, 0.9);
  642. }
  643. .nav-li.cur {
  644. color: #fff;
  645. background: rgb(94, 185, 94);
  646. box-shadow: 4upx 4upx 6upx rgba(94, 185, 94, 0.4);
  647. }
  648. .nav-title {
  649. font-size: 32upx;
  650. font-weight: 300;
  651. }
  652. .nav-title::first-letter {
  653. font-size: 40upx;
  654. margin-right: 4upx;
  655. }
  656. .nav-name {
  657. font-size: 28upx;
  658. text-transform: Capitalize;
  659. margin-top: 20upx;
  660. position: relative;
  661. }
  662. .nav-name::before {
  663. content: "";
  664. position: absolute;
  665. display: block;
  666. width: 40upx;
  667. height: 6upx;
  668. background: #fff;
  669. bottom: 0;
  670. right: 0;
  671. opacity: 0.5;
  672. }
  673. .nav-name::after {
  674. content: "";
  675. position: absolute;
  676. display: block;
  677. width: 100upx;
  678. height: 1px;
  679. background: #fff;
  680. bottom: 0;
  681. right: 40upx;
  682. opacity: 0.3;
  683. }
  684. .nav-name::first-letter {
  685. font-weight: bold;
  686. font-size: 36upx;
  687. margin-right: 1px;
  688. }
  689. .nav-li image {
  690. position: absolute;
  691. right: 30upx;
  692. top: 22upx;
  693. width: 66upx;
  694. height: 66upx;
  695. }
  696. //四宫格 end
  697. </style>