index.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661
  1. <template>
  2. <div class="user-content mobile-content">
  3. <div class="user-name">
  4. <img src="/images/component/default.png"/>
  5. <div class="user-info">
  6. <p v-text="userInfo.data.userName"></p>
  7. <p>{{enterpriseInfo.enName}}<a @click="setShowEnterpriseToggle(!showEnterpriseToggle, $event)">切换</a></p>
  8. <ul class="en-list" v-show="showEnterpriseToggle">
  9. <li class="menu-item"
  10. v-for="en in sortEnterprises"
  11. v-if="en.uu != enterpriseInfo.uu"
  12. v-bind:key="en.uu">
  13. <a @click="switchEnterprise(en)">{{ en.enName }}</a>
  14. </li>
  15. <li class="menu-item" v-if="enterpriseInfo.uu">
  16. <a @click="switchEnterprise({uu: 0})"><span v-text="userInfo.data.userName"></span>(个人账户)</a>
  17. </li>
  18. </ul>
  19. </div>
  20. <a v-if="isVendor" v-text="userType === 'saler' ? '切换至买家中心' : '切换至卖家中心'" @click="switchType"></a>
  21. </div>
  22. <ul class="switch-list" v-if="userType !== 'saler'">
  23. <li :class="{active: activeType == 'seek'}" @click="activeType = 'seek'" v-text="userType === 'saler' ? '求购询价' : '我的求购'"></li>
  24. <li :class="{active: activeType == 'comp'}" @click="activeType = 'comp'">器件收藏</li>
  25. <li :class="{active: activeType == 'store'}" @click="activeType = 'store'">店铺关注</li>
  26. </ul>
  27. <div v-if="activeType == 'seek'">
  28. <div class="seek" v-if="userType !== 'saler'">
  29. <ul class="seek-type">
  30. <li :class="{active: seekType == 'wait'}" @click="switchSeek('wait')"><div>待报价</div></li>
  31. <li :class="{active: seekType == 'done'}" @click="switchSeek('done')"><div>已报价</div></li>
  32. <!--<li :class="{active: seekType == 'accept'}" @click="switchSeek('accept')"><div>已采纳</div></li>-->
  33. </ul>
  34. </div>
  35. <ul class="switch-list vendor-switch" v-if="userType === 'saler'">
  36. <li :class="{active: seekType == 'wait'}" @click="switchSeek('wait')"><div>全部</div></li>
  37. <li :class="{active: seekType == 'done'}" @click="switchSeek('done')"><div>已报价</div></li>
  38. </ul>
  39. <div class="search-content">
  40. <input type="text" placeholder="请输入您要查找的型号或品牌" v-model="seekKeyword" @keyup.13="searchSeek">
  41. <span @click="searchSeek">
  42. <i class="iconfont icon-sousuo"></i>
  43. </span>
  44. </div>
  45. <seek-list :userType="userType" :seekType="seekType" :purchaseManList="purchaseManListData" :isDataChange="isDataChange"></seek-list>
  46. </div>
  47. <div class="shop-list" v-bind:key="item.id" v-if="activeType == 'store'" v-for="item in focusPage.content" @click="goStoreDetail(item.storeInfo.uuid)">
  48. <h3>{{item.storeName}}</h3>
  49. <div class="list-item">
  50. <div class="item-img">
  51. <img :src="getBackground(item.storeInfo.type)" />
  52. <img :src="item.storeInfo.logoUrl || '/images/component/default.png'">
  53. </div>
  54. <div class="list-item-phone">
  55. <p>电话:<span>{{item.storeInfo.enterprise ? item.storeInfo.enterprise.enTel : '-'}}</span></p>
  56. <p>传真:<span>{{item.storeInfo.enterprise ? item.storeInfo.enterprise.enFax : '-'}}</span></p>
  57. <p>联系商家:<a @click="selectStoreInfo(item, $event)">点击查看</a></p>
  58. <i class="iconfont icon-shoucang" @click="cancelFocus('store', item, $event)"></i>
  59. </div>
  60. </div>
  61. </div>
  62. <div class="detail-brand" v-bind:key="index" v-for="(item, index) in collectSave.content" v-if="activeType == 'comp'" @click="goComponentDetail(item.componentinfo.uuid)">
  63. <a>
  64. <div class="brand-item">
  65. <p>型号:<span>{{item.componentinfo.code}}</span></p>
  66. <p>品牌:<span>{{item.componentinfo.brand.nameCn}}</span></p>
  67. <p>产品描述:<span>{{item.componentinfo.kind.nameCn}}</span></p>
  68. <i class="iconfont icon-shoucang" @click="cancelFocus('product', item, $event)"></i>
  69. </div>
  70. </a>
  71. </div>
  72. <div class="none-state" v-if="(activeType != 'seek') && ((collectSave.totalElements == 0 && activeType == 'comp') || (focusPage.totalElements == 0 && activeType == 'store') || (collectSave.totalElements == 0 && focusPage.totalElements == 0))">
  73. <img src="/images/mobile/@2x/empty-collect.png">
  74. <p v-text="getRemindText()"></p>
  75. <nuxt-link to="/">返回首页</nuxt-link>
  76. </div>
  77. <remind-box :title="collectResult" :timeoutCount="timeoutCount"></remind-box>
  78. <div class="mobile-modal" v-if="showStoreInfo">
  79. <div class="mobile-modal-box">
  80. <div class="mobile-modal-header">联系方式<i @click="showStoreInfo = false" class="icon-guanbi iconfont"></i></div>
  81. <div class="mobile-modal-content">
  82. <div v-if="checkInfo(storeInfo.enAddress || storeInfo.address)">商家地址:{{storeInfo.enAddress || storeInfo.address}}</div>
  83. <!--<div class="content-line link-url">在线咨询</div>-->
  84. <div v-if="checkInfo(storeInfo.enTel)">致电:<a :href="'tel:' + storeInfo.enTel" target="_blank" class="content-line link-url">{{storeInfo.enTel}}</a></div>
  85. <div v-if="checkInfo(storeInfo.enEmail)">邮件:<a :href="'mailto:' + storeInfo.enEmail" target="_blank" class="content-line link-url">{{storeInfo.enEmail}}</a></div>
  86. </div>
  87. </div>
  88. </div>
  89. <page-loading v-show="showLoading"></page-loading>
  90. <loading v-show="isSearchSearchingMore"></loading>
  91. <div v-if="purchaseManList && false"></div>
  92. <div v-if="purchaseManListFetching && false"></div>
  93. </div>
  94. </template>
  95. <script>
  96. import SeekList from '~components/mobile/applyPurchase/SeekList.vue'
  97. import {RemindBox, Loading} from '~components/mobile/common'
  98. import PageLoading from '~components/common/loading/PageLoading.vue'
  99. export default {
  100. layout: 'mobile',
  101. data () {
  102. return {
  103. userName: '',
  104. count: '',
  105. page: '',
  106. type: '',
  107. activeType: 'seek',
  108. collectResult: '取消成功',
  109. timeoutCount: 0,
  110. showStoreInfo: false,
  111. storeInfo: {},
  112. seekType: 'wait',
  113. showLoading: false,
  114. seekKeyword: '',
  115. isSearchSearchingMore: false,
  116. isChange: false,
  117. seekPage: 1,
  118. seekSize: 10,
  119. purchaseManListData: [],
  120. isDataChange: false,
  121. showEnterpriseToggle: false
  122. }
  123. },
  124. components: {
  125. RemindBox,
  126. SeekList,
  127. PageLoading,
  128. Loading
  129. },
  130. fetch ({ store, route }) {
  131. let user = store.state.option.user.data
  132. let params = {
  133. pageNumber: 1,
  134. pageSize: 10,
  135. state: (!route.query.type || route.query.type === 'buyer') ? 'todo' : null
  136. }
  137. if (user.enterprise.uu) {
  138. params.enUU = user.enterprise.uu
  139. } else {
  140. params.userUU = user.userUU
  141. }
  142. // console.log(params)
  143. return Promise.all([
  144. store.dispatch('product/saveStores', { count: 100, page: 1, type: 'component' }),
  145. store.dispatch('shop/StoreFocusPage', { count: 100, page: 1 }),
  146. store.dispatch(route.query.type === 'saler' ? 'applyPurchase/loadPurchaseManList' : 'applyPurchase/loadBuyerUnSayPricePurchaseManList', params)
  147. ])
  148. },
  149. mounted: function () {
  150. this.$nextTick(() => {
  151. window.addEventListener('scroll', this.scroll, false)
  152. document.body.addEventListener('click', () => {
  153. this.setShowEnterpriseToggle(false)
  154. }, false)
  155. })
  156. },
  157. methods: {
  158. // 切换当前企业
  159. switchEnterprise (en) {
  160. this.showEnterpriseToggle = false
  161. this.$http.get(`/user/authentication/${en.uu}`).then(() => {
  162. this.isChange = true
  163. this.$store.dispatch('loadUserInfo').then(() => {
  164. if (this.userType === 'saler') {
  165. this.$router.push('/mobile/user?type=buyer')
  166. } else {
  167. this.reloadData()
  168. }
  169. })
  170. })
  171. },
  172. setShowEnterpriseToggle (flag, e) {
  173. if (e) {
  174. e.stopPropagation()
  175. }
  176. this.showEnterpriseToggle = flag
  177. },
  178. cancelFocus: function (type, item, event) {
  179. event.stopPropagation()
  180. if (type === 'store') {
  181. this.$http.post('/trade/storeFocus/delete/storeId', [item.storeid])
  182. .then(response => {
  183. this.$store.dispatch('shop/StoreFocusPage', { count: 100, page: 1 })
  184. this.timeoutCount++
  185. })
  186. } else {
  187. // /trade/collection/
  188. this.$http.delete('/trade/collection/' + item.id)
  189. .then(response => {
  190. this.$store.dispatch('product/saveStores', { count: 100, page: 1, type: 'component' })
  191. this.timeoutCount++
  192. })
  193. }
  194. },
  195. getBackground: function (type) {
  196. let url = ''
  197. if (type === 'AGENCY') {
  198. url += '/images/mobile/@2x/shop/agency.png'
  199. } else if (type === 'DISTRIBUTION') {
  200. url += '/images/mobile/@2x/shop/distribution.png'
  201. } else if (type === 'ORIGINAL_FACTORY') {
  202. url += '/images/mobile/@2x/shop/original_factory.png'
  203. } else if (type === 'CONSIGNMENT') {
  204. url = '/images/mobile/@2x/shop/consignment.png'
  205. }
  206. return url
  207. },
  208. goStoreDetail: function (uuid) {
  209. this.$router.push('/mobile/shop/' + uuid)
  210. },
  211. goComponentDetail: function (uuid) {
  212. this.$router.push('/mobile/brand/componentDetail/' + uuid)
  213. },
  214. getRemindText: function () {
  215. if (this.activeType === 'comp') {
  216. return '抱歉,暂无器件收藏'
  217. } else if (this.activeType === 'store') {
  218. return '抱歉,暂无店铺关注'
  219. }
  220. },
  221. selectStoreInfo: function (store, event) {
  222. event.stopPropagation()
  223. this.storeInfo = store.storeInfo.enterprise || {}
  224. this.showStoreInfo = true
  225. },
  226. checkInfo: function (str) {
  227. return str && str.trim() !== ''
  228. },
  229. switchSeek: function (type) {
  230. this.seekType = type
  231. this.showLoading = true
  232. this.seekKeyword = ''
  233. this.isChange = true
  234. this.seekPage = 1
  235. this.reloadData()
  236. },
  237. switchType: function () {
  238. this.activeType = 'seek'
  239. this.seekType = 'wait'
  240. this.seekKeyword = ''
  241. this.$router.push('/mobile/user' + (this.userType === 'saler' ? '?type=buyer' : '?type=saler'))
  242. this.reloadData()
  243. },
  244. searchSeek: function () {
  245. this.isChange = true
  246. this.reloadData()
  247. },
  248. reloadData: function () {
  249. let type = this.seekType
  250. let user = this.$store.state.option.user.data
  251. let params = {
  252. pageNumber: 1,
  253. pageSize: 10,
  254. keyword: this.seekKeyword || null
  255. }
  256. if (user.enterprise.uu) {
  257. params.enUU = user.enterprise.uu
  258. } else {
  259. params.userUU = user.userUU
  260. }
  261. if (this.userType !== 'saler') {
  262. if (type === 'wait') {
  263. params.state = 'todo'
  264. this.$store.dispatch('applyPurchase/loadBuyerUnSayPricePurchaseManList', params)
  265. } else if (type === 'done') {
  266. params._state = 'done'
  267. this.$store.dispatch('applyPurchase/loadBuyerPurchaseManList', params)
  268. } else {
  269. params._state = 'done'
  270. this.$store.dispatch('applyPurchase/loadBuyerPurchaseManList', params)
  271. }
  272. } else {
  273. if (type === 'wait') {
  274. this.$store.dispatch('applyPurchase/loadPurchaseManList', {pageNumber: this.seekPage, pageSize: this.seekSize, enUU: this.$store.state.option.user.data.enterprise.uu, keyword: this.seekKeyword})
  275. } else if (type === 'done') {
  276. this.$store.dispatch('applyPurchase/loadVendorPurchaseManList', {pageNumber: this.seekPage, pageSize: this.seekSize, _state: 'done', filter: {vendUU: this.$store.state.option.user.data.enterprise.uu, fromDate: null, endDate: null, keyword: this.seekKeyword}, overdue: 1})
  277. } else {
  278. this.$store.dispatch('applyPurchase/loadVendorPurchaseManList', {pageNumber: this.seekPage, pageSize: this.seekSize, _state: 'done', filter: {vendUU: this.$store.state.option.user.data.enterprise.uu, fromDate: null, endDate: null, keyword: this.seekKeyword}, overdue: 1})
  279. }
  280. }
  281. },
  282. scroll: function () {
  283. let scrolled = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop
  284. if (Math.ceil(scrolled + window.screen.availHeight) >= document.body.scrollHeight && !this.isSearchSearchingMore && this.seekPage < this.allPage) {
  285. this.getMoreSearch()
  286. }
  287. },
  288. getMoreSearch: function () {
  289. this.seekPage++
  290. this.isSearchSearchingMore = true
  291. this.reloadData()
  292. }
  293. },
  294. computed: {
  295. collectSave () {
  296. return this.$store.state.product.common.collectList.data
  297. },
  298. userInfo () {
  299. return this.$store.state.option.user
  300. },
  301. enterpriseInfo () {
  302. if (this.userInfo.data.enterprises) {
  303. let ens = this.userInfo.data.enterprises.slice()
  304. if (ens && ens.length) {
  305. for (let i = 0; i < ens.length; i++) {
  306. if (ens[i].current) {
  307. return ens[i]
  308. }
  309. }
  310. }
  311. return {enName: this.userInfo.data.userName + '(个人账户)'}
  312. } else {
  313. return ''
  314. }
  315. },
  316. sortEnterprises () {
  317. if (this.user.data.enterprises) {
  318. let ens = this.user.data.enterprises.slice()
  319. if (ens && ens.length) {
  320. ens.sort(function (a, b) {
  321. return b.lastLoginTime - a.lastLoginTime
  322. })
  323. }
  324. return ens
  325. } else {
  326. return ''
  327. }
  328. },
  329. isVendor () {
  330. return this.enterpriseInfo.isVendor === 313
  331. },
  332. userType () {
  333. return this.$route.query.type
  334. },
  335. focusPage () {
  336. return this.$store.state.shop.storeInfo.focusPage.data
  337. },
  338. purchase () {
  339. return this.$store.state.applyPurchase.purchaseManList.purchaseManList
  340. },
  341. purchaseManList () {
  342. let list = this.purchase.data.content.slice()
  343. if (this.isChange) {
  344. this.purchaseManListData = []
  345. this.seekPage = 1
  346. this.isChange = false
  347. this.isDataChange = true
  348. } else {
  349. this.purchaseManListData = this.purchaseManListData.concat(list)
  350. this.isSearchSearchingMore = false
  351. this.isDataChange = false
  352. }
  353. // console.log(this.purchaseManListData)
  354. return this.purchase.data.content
  355. },
  356. allPage () {
  357. return Math.floor(this.purchase.data.totalElements / this.purchase.data.size) + Math.floor(this.purchase.data.totalElements % this.purchase.data.size > 0 ? 1 : 0)
  358. },
  359. purchaseManListFetching () {
  360. this.showLoading = false
  361. return this.purchase.fetching
  362. }
  363. }
  364. }
  365. </script>
  366. <style scoped lang="scss">
  367. .user-content{
  368. margin-bottom: .98rem;
  369. .none-state{
  370. text-align: center;
  371. padding:1.5rem 0;
  372. background: #fff;
  373. margin-top:.1rem;
  374. width:100%;
  375. img{
  376. margin:0 auto;
  377. width: 4.08rem;
  378. height: 2.62rem;
  379. }
  380. p {
  381. font-size: .32rem;
  382. color: #999;
  383. margin: 1.19rem 0 0 0;
  384. }
  385. a {
  386. display: block;
  387. font-size: .28rem;
  388. color: #fff;
  389. width: 1.88rem;
  390. height: .54rem;
  391. line-height: .54rem;
  392. background: #418bf6;
  393. margin: .7rem auto 0;
  394. border-radius: .05rem;
  395. }
  396. }
  397. .user-name{
  398. height: 1.8rem;
  399. padding: .28rem 0 .28rem .34rem;
  400. background: #fff;
  401. width: 100%;
  402. position: relative;
  403. img{
  404. display: inline-block;
  405. width: 1.25rem;
  406. height: 1.25rem;
  407. border: 1px solid #c5dbfc;
  408. border-radius: .05rem;
  409. vertical-align: middle;
  410. }
  411. .user-info {
  412. margin-left:.25rem;
  413. display: inline-block;
  414. vertical-align: middle;
  415. position: relative;
  416. p{
  417. font-size:.3rem;
  418. margin:0;
  419. display: block;
  420. overflow: hidden;
  421. text-overflow: ellipsis;
  422. white-space: nowrap;
  423. max-width: 3.92rem;
  424. &:nth-child(2) {
  425. position: relative;
  426. margin-top: .2rem;
  427. padding-right: .7rem;
  428. a {
  429. position: absolute;
  430. right: 0;
  431. }
  432. }
  433. }
  434. .en-list {
  435. position: absolute;
  436. max-width: 8rem;
  437. max-height: 3rem;
  438. overflow-y: auto;
  439. border-radius: .05rem;
  440. .menu-item {
  441. height: .6rem;
  442. line-height: .6rem;
  443. font-size: .3rem;
  444. padding: 0 .2rem;
  445. overflow: hidden;
  446. white-space: nowrap;
  447. text-overflow: ellipsis;
  448. background: rgba(0, 0, 0, .4);
  449. &:active, &:focus, &:hover {
  450. background: #7d7d7d;
  451. }
  452. a {
  453. color: #fff;
  454. }
  455. }
  456. }
  457. }
  458. > a {
  459. font-size: .24rem;
  460. position: absolute;
  461. top: .45rem;
  462. right: .1rem;
  463. color: #3f84f6;
  464. border: 1px solid #3f84f6;
  465. border-radius: .2rem;
  466. padding: .06rem .12rem;
  467. }
  468. }
  469. .shop-list {
  470. background:#fff;
  471. border-bottom: .1rem solid #dfe2e4;
  472. padding: .14rem 0 .14rem 0;
  473. h3{
  474. font-size: .32rem;
  475. line-height: .4rem;
  476. margin: 0 0 0 .27rem;
  477. overflow: hidden;
  478. text-overflow: ellipsis;
  479. white-space: nowrap;
  480. padding-top: .1rem;
  481. position: relative;
  482. top: .1rem;
  483. }
  484. .list-item{
  485. width:6.77rem;
  486. margin-left:.39rem;
  487. .item-img{
  488. width:2.4rem;
  489. vertical-align: middle;
  490. display: inline-block;
  491. img{
  492. &:nth-child(2) {
  493. width:2.4rem;
  494. height:1.69rem;
  495. border: 1px solid #eee;
  496. }
  497. &:nth-child(1) {
  498. position:absolute;
  499. width:.65rem;
  500. height:.33rem;
  501. }
  502. }
  503. }
  504. .list-item-phone{
  505. width:3.95rem;
  506. padding:.18rem 0;
  507. position:relative;
  508. display: inline-block;
  509. vertical-align: middle;
  510. margin-left: .26rem;
  511. p{
  512. font-size:.28rem;
  513. line-height: .67rem;
  514. margin:0;
  515. overflow: hidden;
  516. text-overflow: ellipsis;
  517. white-space: nowrap;
  518. width: 3.2rem;
  519. }
  520. i{
  521. display:block;
  522. position:absolute;
  523. top: -.06rem;
  524. right: -.18rem;
  525. font-size:.5rem;
  526. color:#ff7800;
  527. width: .6rem;
  528. height: .6rem;
  529. text-align: center;
  530. line-height: .6rem;
  531. }
  532. }
  533. }
  534. &:active {
  535. background: #e1e1e1;
  536. }
  537. }
  538. .detail-brand{
  539. background: #fff;
  540. width:100%;
  541. min-height:1.5rem;
  542. padding:.2rem 0;
  543. border-bottom: .1rem solid #dfe2e4;
  544. &:nth-child(1) {
  545. margin-top:.1rem;
  546. }
  547. .brand-item{
  548. width:7rem;
  549. margin:0 auto;
  550. border-radius:.1rem;
  551. background: #fff;
  552. padding:.2rem;
  553. position:relative;
  554. &:active{
  555. background: #e1e1e1;
  556. }
  557. p{
  558. font-size:.28rem;
  559. line-height:.4rem;
  560. color:#333;
  561. margin:0;
  562. }
  563. i{
  564. display:block;
  565. position:absolute;
  566. top:.2rem;
  567. right:.1rem;
  568. font-size:.5rem;
  569. color:#ff7800;
  570. width: .6rem;
  571. height: .6rem;
  572. line-height: .6rem;
  573. text-align: center;
  574. }
  575. }
  576. div.active{
  577. background: #d4d;
  578. }
  579. }
  580. .collect-list-type {
  581. background: #fff;
  582. border-bottom: 1px solid #acacac;
  583. p {
  584. font-size: .32rem;
  585. margin: 0 0 0 .13rem;
  586. width: .92rem;
  587. text-align: center;
  588. line-height: .5rem;
  589. border-bottom: .06rem solid #418bf6;
  590. }
  591. }
  592. ul.switch-list {
  593. li {
  594. display: inline-block;
  595. width: 2.5rem;
  596. height: .63rem;
  597. line-height: .63rem;
  598. text-align: center;
  599. font-size: .28rem;
  600. color: #666;
  601. background: #fff;
  602. border: 1px solid #b4b4b4;
  603. border-right: none;
  604. &.active {
  605. background: #0067e7;
  606. border: 1px solid #0067e7;
  607. color: #fff;
  608. }
  609. &:first-child {
  610. border-left: none;
  611. }
  612. &:last-child {
  613. border-right: none;
  614. }
  615. }
  616. &.vendor-switch {
  617. li {
  618. width: 50%;
  619. }
  620. }
  621. }
  622. .seek {
  623. .seek-type {
  624. margin-top: .15rem;
  625. li {
  626. font-size: .28rem;
  627. color: #666;
  628. display: inline-block;
  629. width: 50%;
  630. text-align: center;
  631. div {
  632. border-bottom: 1px solid #c1c4c9;
  633. margin: 0 auto;
  634. height: .46rem;
  635. line-height: .46rem;
  636. }
  637. &.active {
  638. color: #3f84f6;
  639. div {
  640. border-color: #3f84f6;
  641. }
  642. }
  643. }
  644. }
  645. }
  646. .search-content {
  647. text-align: center;
  648. padding: .25rem 0 0 0;
  649. input {
  650. border: 1px solid #376ff3;
  651. }
  652. span {
  653. height: .46rem;
  654. line-height: .46rem;
  655. }
  656. }
  657. }
  658. </style>