StoreDetail.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915
  1. <template>
  2. <div class="store-detail mobile-content">
  3. <div class="lookjianjie" @click="activeType = 'detail'">简介<i class="iconfont icon-fanhui"></i></div>
  4. <div class="store-logo">
  5. <div class="store-logo-box">
  6. <img :src="store.logoUrl || '/images/component/default.png'"/>
  7. <i v-if="showIcon" class="iconfont icon-shoucang" :style="isFocus === 'true'?'color:#ff7800':'color: #ddd'" @click="collectStore"></i>
  8. </div>
  9. <!--<div class="store-switch-item">-->
  10. <!--<span :class="activeType=='product'?'mobile-switch-btn active':'mobile-switch-btn'" @click="activeType='product'">产品</span>-->
  11. <!--<span :class="activeType=='detail'?'mobile-switch-btn active':'mobile-switch-btn'" @click="activeType='detail'">介绍</span>-->
  12. <!--</div>-->
  13. </div>
  14. <div class="mobile-modal" @touchmove.self="preventTouchMove($event)" v-show="activeType==='detail'">
  15. <div class="mobile-modal-box mobile-link-en mobile-link-en-content">
  16. <div class="mobile-modal-header">企业信息|{{store.storeName}}<i @click="activeType = 'store'" class="icon-guanbi iconfont"></i></div>
  17. <div class="store-info" >
  18. <div class="store-description">
  19. <h4>主营产品</h4>
  20. <p class="content" v-if="store.description">
  21. {{store.description}}
  22. </p>
  23. <div class="com-none-state" v-else>
  24. <p>抱歉,暂无主营产品信息</p>
  25. </div>
  26. </div>
  27. <div class="store-description">
  28. <h4>应用领域</h4>
  29. <p class="content" v-if="store.storeApplication">
  30. {{store.storeApplication}}
  31. </p>
  32. <div class="com-none-state" v-else>
  33. <p>抱歉,暂无应用领域信息</p>
  34. </div>
  35. </div>
  36. <div class="store-description">
  37. <h4>企业介绍</h4>
  38. <p class="content" v-if="store.enterprise.description">
  39. {{store.enterprise.description}}
  40. </p>
  41. <div class="com-none-state" v-else>
  42. <p>抱歉,暂无企业介绍</p>
  43. </div>
  44. </div>
  45. <div class="contact-info">
  46. <h4>联系我们</h4>
  47. <ul class="list-unstyled clearfix">
  48. <li>
  49. <div>电&nbsp;&nbsp;话:</div>
  50. <div v-if="store.enterprise.enTel"><a :href="'tel:' + store.enterprise.enTel" @click="clickTel = true" :class="{'click-tel': clickTel}">{{store.enterprise.enTel}}</a></div>
  51. <div v-else><span>-</span></div>
  52. </li>
  53. <li>
  54. <div>传&nbsp;&nbsp;真:</div>
  55. <div v-if="store.enterprise.enFax"> {{store.enterprise.enFax}}</div>
  56. <div v-else><span>-</span></div>
  57. </li>
  58. <li>
  59. <div>手&nbsp;&nbsp;机:</div>
  60. <div v-if="store.enterprise.enPhone"> <a :href="'tel:' + store.enterprise.enPhone" @click="clickPhone = true" :class="{'click-phone': clickPhone}">{{store.enterprise.enPhone}}</a></div>
  61. <div v-else><span>-</span></div>
  62. </li>
  63. <li>
  64. <div>微&nbsp;&nbsp;信:</div>
  65. <div v-if="store.enterprise.enWeixin"> {{store.enterprise.enWeixin}}</div>
  66. <div v-else><span>-</span></div>
  67. </li>
  68. <li>
  69. <div>Q&nbsp;&nbsp;&nbsp;Q:</div>
  70. <div v-if="store.enterprise.enQQ"> {{store.enterprise.enQQ.trim()}}</div>
  71. <div v-else>-</div>
  72. </li>
  73. <!-- <li>
  74. <div>店铺地址:</div>
  75. <div v-if="store.enterprise.address">{{store.enterprise.address}}</div>
  76. <div v-else><span>-</span></div>
  77. </li>-->
  78. </ul>
  79. </div>
  80. </div>
  81. </div>
  82. </div>
  83. <!-- <div class="com-none-state" v-if="activeType=='detail'">
  84. <img src="/images/mobile/@2x/empty-collect.png">
  85. <p>抱歉,暂无店铺简介</p>
  86. <nuxt-link to="/">返回首页</nuxt-link>
  87. </div>-->
  88. <div class="product-store">
  89. <div class="search-content">
  90. <input type="text" v-model="keyword" placeholder="品牌/物料名称(类目)/型号/规格" @keyup.13="search">
  91. <span @click="search" style="height:0.5rem;line-height:0.5rem;">
  92. <i class="iconfont icon-sousuo"></i>
  93. </span>
  94. </div>
  95. <div v-if="searchLists&&searchLists.length > 0">
  96. <div v-for="(item, index) in searchLists">
  97. <div class="middle" @click="goProductDetail(item)">
  98. <div class="list">
  99. <div class="fl">
  100. <div class="name">品牌:</div>
  101. <div class="text">{{item.brandNameEn}}</div>
  102. </div>
  103. <div class="fl">
  104. <div class="name">交期(天):</div>
  105. <div class="text" style="color: #ef5042" v-if="item.b2cMaxDelivery && (item.b2cMaxDelivery != item.b2cMinDelivery)" v-text="item.b2cMinDelivery + '-'+ item.b2cMaxDelivery"></div>
  106. <div class="text" style="color: #ef5042" v-if="item.b2cMaxDelivery && (item.b2cMaxDelivery == item.b2cMinDelivery)" v-text="item.b2cMinDelivery"></div>
  107. </div>
  108. </div>
  109. <div class="list">
  110. <div class="fl">
  111. <div class="name">物料名称(类目):</div>
  112. <div class="text" style="color: #3f84f6">{{item.kindNameCn || '-'}}</div>
  113. </div>
  114. <div class="fl">
  115. <div class="name">库存:</div>
  116. <div class="text">{{item.reserve || '-'}}</div>
  117. </div>
  118. </div>
  119. <div class="list">
  120. <div class="fl">
  121. <div class="name">型号:</div>
  122. <div class="text">{{item.code || '-'}}</div>
  123. </div>
  124. <div class="fl">
  125. <div class="name">起拍:</div>
  126. <div class="text">{{item.minBuyQty || '-'}}</div>
  127. </div>
  128. </div>
  129. <div class="list">
  130. <div class="fl">
  131. <div class="name">规格:</div>
  132. <div class="text">{{item.spec || '-'}}</div>
  133. </div>
  134. <div class="fl">
  135. <div class="name">包装:</div>
  136. <div class="text">{{item.packaging || '无包装信息'}}</div>
  137. </div>
  138. </div>
  139. <div class="list">
  140. <div class="fl" @click="goAttach(item.attach)">
  141. <div class="name">规格书:</div>
  142. <div class="text">
  143. <i class="iconfont icon-pdf" :class="{'active': item.attach && item.attach !== '' && item.attach !== '1'}"></i>
  144. </div>
  145. </div>
  146. <div class="fl">
  147. <div class="name">生产日期:</div>
  148. <div class="text" :title="item.produceDate">{{item.produceDate || '-'}}</div>
  149. </div>
  150. </div>
  151. <div class="list">
  152. <div class="name left">价格梯度<p>(pcs):</p></div>
  153. <div class="table left">
  154. <ul>
  155. <li class="title">
  156. <div>分段数量/PCS</div>
  157. <div>分段单价</div>
  158. </li>
  159. <li v-for="price in item.prices">
  160. <div>{{price.start}}+</div>
  161. <div v-if="item.currencyName == 'RMB'">¥{{price.rMBPrice}}</div>
  162. <div v-else>${{price.rMBPrice}}</div>
  163. </li>
  164. </ul>
  165. </div>
  166. </div>
  167. <div class="list clearfix">
  168. <div class="pull-left cancat" @click.stop="showStoreInfo = true">
  169. <i class="iconfont icon-kefu1"></i>联系卖家
  170. </div>
  171. <div class="pull-right clearfix">
  172. <div class="pull-left" @click="buy(item, false, $event)">加入购物车</div>
  173. <div class="pull-left" @click="buy(item, true, $event)">立即购买</div>
  174. </div>
  175. </div>
  176. </div>
  177. </div>
  178. </div>
  179. <empty-status :type="isSearch ? 'search' : 'collect'"
  180. :text="isSearch ? `抱歉,暂无与“${remindKeyword}”匹配的产品信息`: '抱歉,暂无产品信息'"
  181. :showLink="false"
  182. v-else
  183. ></empty-status>
  184. </div>
  185. <!-- 联系卖买家 -->
  186. <div class="mobile-modal" v-if="showStoreInfo" @touchmove="preventTouchMove($event)">
  187. <div class="mobile-modal-box mobile-link-en">
  188. <div class="mobile-modal-header">联系方式<i @click="showStoreInfo = false" class="icon-guanbi iconfont"></i></div>
  189. <div class="mobile-modal-content">
  190. <div v-if="store.enterprise.enTel" class="clearfix"><span class="pull-left">电话:</span><a :href="'tel:' + store.enterprise.enTel" target="_blank" class="content-line link-url pull-left">{{store.enterprise.enTel}}</a></div>
  191. <div v-if="store.enterprise.enPhone" class="clearfix"><span class="pull-left">手机:</span><a :href="'tel:' + store.enterprise.enPhone" target="_blank" class="content-line link-url pull-left">{{store.enterprise.enPhone}}</a></div>
  192. <div v-if="store.enterprise.enWeixin" class="clearfix"><span class="pull-left">微信:</span><span class="content-line pull-left">{{store.enterprise.enWeixin}}</span></div>
  193. <div v-if="store.enterprise.enQQ" class="clearfix"><span class="pull-left">Q&nbsp;Q:</span><span class="content-line pull-left">{{store.enterprise.enQQ}}</span></div>
  194. <div v-if="!empty">暂无联系方式</div>
  195. </div>
  196. </div>
  197. </div>
  198. <remind-box :title="collectResult" :timeoutCount="timeoutCount"></remind-box>
  199. <login-box @onLoginBoxClose="showLoginBox = false" v-if="showLoginBox" :url="url"></login-box>
  200. <pull-up :searchMore="fetching" :allPage="allPage" :page="page" @pullUpAction="getMoreSearch"></pull-up>
  201. </div>
  202. </template>
  203. <script>
  204. import {RemindBox, LoginBox, PullUp, EmptyStatus} from '~components/mobile/common'
  205. export default {
  206. data () {
  207. return {
  208. showStoreInfo: false,
  209. activeType: '',
  210. collectResult: '收藏成功',
  211. timeoutCount: 0,
  212. clickTel: false,
  213. clickPhone: false,
  214. searchLists: [],
  215. page: 1,
  216. count: 10,
  217. showLoginBox: false,
  218. isScrollOverTab: false,
  219. url: '',
  220. keyword: '',
  221. remindKeyword: '',
  222. isChange: false,
  223. isSearch: false
  224. }
  225. },
  226. components: {
  227. RemindBox,
  228. LoginBox,
  229. PullUp,
  230. EmptyStatus
  231. },
  232. filters: {
  233. currency: function (num) {
  234. if (typeof num === 'number') {
  235. if (num <= 0.000001) {
  236. num = 0.000001
  237. } else {
  238. if (num.toString().indexOf('.') === -1) {
  239. num += '.00'
  240. } else {
  241. let inputStr = num.toString()
  242. let arr = inputStr.split('.')
  243. let floatNum = arr[1]
  244. if (floatNum) {
  245. if (floatNum.length > 6) {
  246. num = inputStr.substring(0, arr[0].length + 7)
  247. if (Number(floatNum.charAt(6)) > 4) {
  248. num = (Number(num) * 1000000 + 1) / 1000000
  249. }
  250. } else if (floatNum.length === 1) {
  251. num = num + '0'
  252. }
  253. }
  254. }
  255. }
  256. }
  257. return num
  258. }
  259. },
  260. created () {
  261. this.clickTel = false
  262. this.clickPhone = false
  263. },
  264. computed: {
  265. empty () {
  266. return this.checkInfo(this.store.enterprise.enTel) || this.checkInfo(this.store.enterprise.enPhone) || this.checkInfo(this.store.enterprise.enWeixin) || this.checkInfo(this.store.enterprise.enQQ)
  267. },
  268. store () {
  269. return this.$store.state.shop.storeInfo.store.data
  270. },
  271. commodities () {
  272. let list = this.$store.state.shop.storeInfo.storeCommodity.data
  273. if (this.isChange) {
  274. this.searchLists = []
  275. this.page = 1
  276. this.isChange = false
  277. } else {
  278. this.searchLists = [...this.searchLists, ...list.content]
  279. this.isSearchSearchingMore = false
  280. }
  281. return list
  282. },
  283. fetching () {
  284. return this.$store.state.shop.storeInfo.storeCommodity.fetching
  285. },
  286. allPage () {
  287. return this.commodities.totalPages
  288. },
  289. isFocus () {
  290. return this.$store.state.shop.storeInfo.focusList.data
  291. },
  292. user () {
  293. return this.$store.state.option.user
  294. },
  295. showIcon() {
  296. return this.store.uuid !== this.$store.state.option.storeStatus.data.uuid
  297. }
  298. },
  299. methods: {
  300. checkInfo: function (str) {
  301. return str && str.trim() !== ''
  302. },
  303. goAttach: function (url) {
  304. if (this.user.logged) {
  305. console.log(this.component)
  306. if (url && url !== '1') {
  307. window.open(url)
  308. } else {
  309. if (!url) {
  310. this.collectResult = '该产品暂无数据手册'
  311. this.timeoutCount++
  312. } else {
  313. this.collectResult = '数据手册地址错误'
  314. this.timeoutCount++
  315. }
  316. }
  317. } else {
  318. this.url = this.$route.fullPath
  319. this.showLoginBox = true
  320. }
  321. },
  322. scroll: function () {
  323. let tbodyObj = document.getElementById('product-body')
  324. let theadObj = document.getElementById('product-head')
  325. if (theadObj) {
  326. this.isScrollOverTab = tbodyObj.getBoundingClientRect().top - theadObj.getBoundingClientRect().height - 5 <= theadObj.getBoundingClientRect().height
  327. }
  328. },
  329. getMoreSearch: function () {
  330. this.page++
  331. this.pageCommodity({ page: this.page, count: this.count })
  332. },
  333. async pageCommodity (pageParams) {
  334. let params = { storeid: this.$route.params.uuid, origin: 'store', code: this.keyword }
  335. params.page = pageParams.page
  336. params.count = pageParams.count
  337. try {
  338. let { data } = await this.$http.get('/api/commodity/commodities', { params })
  339. this.$store.commit('shop/storeInfo/GET_STORE_COMMODITY_SUCCESS', data)
  340. } catch (err) {
  341. this.$store.commit('shop/storeInfo/GET_STORE_COMMODITY_FAILURE', err)
  342. }
  343. },
  344. goProductDetail: function (com) {
  345. // if (uuid) {
  346. // this.$router.push('/mobile/brand/componentDetail/' + uuid)
  347. // } else {
  348. // this.collectResult = '卖家上传的产品暂无参数,请联系卖家了解具体详情。'
  349. // this.timeoutCount ++
  350. // }
  351. if (com.batchCode) {
  352. this.$router.push('/mobile/product/' + com.batchCode)
  353. } else {
  354. this.collectResult = '产品参数错误'
  355. this.timeoutCount ++
  356. }
  357. },
  358. collectStore: function () {
  359. if (this.user.logged) {
  360. if (this.isFocus === 'false') {
  361. this.$store.dispatch('shop/StoreFocus', {storeName: this.store.storeName, storeid: this.store.id})
  362. .then(response => {
  363. this.$store.dispatch('shop/StoreFocusList', {id: this.store.id})
  364. this.collectResult = '关注成功'
  365. this.timeoutCount++
  366. })
  367. } else if (this.isFocus === 'true') {
  368. this.$http.post('/trade/storeFocus/delete/storeId', [this.store.id])
  369. .then(response => {
  370. this.$store.dispatch('shop/StoreFocusList', {id: this.store.id})
  371. this.collectResult = '取消成功'
  372. this.timeoutCount++
  373. })
  374. }
  375. } else {
  376. this.url = this.$route.fullPath
  377. this.showLoginBox = true
  378. }
  379. },
  380. setRemindText: function (str) {
  381. this.collectResult = str
  382. this.timeoutCount++
  383. },
  384. search: function () {
  385. this.page = 1
  386. this.isChange = true
  387. this.isSearch = true
  388. this.remindKeyword = this.keyword
  389. this.pageCommodity({ page: this.page, count: this.count })
  390. },
  391. buy: function (item, flag, e) {
  392. this.baseUtils.buyOrCar(flag, e, this, item, '/mobile/center/user/pay/')
  393. }
  394. }
  395. }
  396. </script>
  397. <style lang="scss" scoped>
  398. .mobile-header {
  399. border-bottom: 0px !important;
  400. }
  401. .mobile-modal .mobile-link-en-content {
  402. width: 7.04rem;
  403. margin-top: 0rem;
  404. left: 0.2rem;
  405. background: #f7f7f7;
  406. top: 5%;
  407. }
  408. .store-detail {
  409. margin: 0 auto;
  410. margin-bottom: 1.2rem;
  411. text-align: center;
  412. background: #f7f7f7;
  413. height: 100%;
  414. .store-logo {
  415. height: 3.27rem;
  416. width: 100%;
  417. display: inline-block;
  418. line-height: 2.13rem;
  419. background: #fff;
  420. text-align: center;
  421. background: url('/images/mobile/@2x/brand-bg2.png') no-repeat;
  422. background-size: cover;
  423. position: relative;
  424. .store-logo-box {
  425. border: .01rem solid #c7e5fd;
  426. border-radius: .1rem;
  427. height: 2.21rem;
  428. width: 3.73rem;
  429. margin: .5rem auto 0;
  430. background: #fff;
  431. position: relative;
  432. img {
  433. max-height: 2.1rem;
  434. max-width: 3.6rem;
  435. }
  436. >i {
  437. position: absolute;
  438. font-size: .4rem;
  439. background: #fff;
  440. width: .6rem;
  441. height: .6rem;
  442. line-height: .6rem;
  443. border-radius: 100%;
  444. box-shadow: 0 0 .05rem #aaa;
  445. right: -1.44rem;
  446. top: .75rem;
  447. text-align: center;
  448. }
  449. }
  450. }
  451. .store-switch-item {
  452. text-align: center;
  453. background: #fff;
  454. position: absolute;
  455. width: 100%;
  456. bottom: 0;
  457. left: 0;
  458. height: 0.83rem;
  459. line-height: 0.83rem;
  460. border-bottom: 1px solid #ccc;
  461. .mobile-switch-btn {
  462. background: #fff;
  463. color: #666;
  464. display: inline-block;
  465. font-size: .34rem;
  466. width: 1.4rem;
  467. height: 0.79rem;
  468. line-height: 0.79rem;
  469. &:first-child {
  470. margin-right: 1.78rem;
  471. }
  472. &.active {
  473. color: #fc5708;
  474. border-bottom: .04rem solid #fc5708;
  475. }
  476. }
  477. }
  478. .store-info {
  479. background: #f7f7f7;
  480. width: 100%;
  481. bottom: 0;
  482. overflow-y: scroll;
  483. height: 9rem;
  484. h4{
  485. width: 100%;
  486. text-align: left;
  487. font-size: 0.3rem;
  488. line-height: 0.6rem;
  489. height: 0.6rem;
  490. letter-spacing: 0px;
  491. color: #333;
  492. font-weight: normal;
  493. border-bottom: 1px solid #efeded;
  494. padding-left: 0.11rem;
  495. &:before{
  496. content: '';
  497. display: inline-block;
  498. width: 0.08rem;
  499. height: 0.26rem;
  500. background-color: #145dee;
  501. margin-right: 0.13rem;
  502. position: relative;
  503. top: 0.02rem;
  504. }
  505. }
  506. .contact-info{
  507. background: #fff;
  508. width: 6.96rem;
  509. margin: .2rem auto;
  510. border-radius: .1rem;
  511. ul{
  512. padding: 0.22rem 0rem;
  513. li{
  514. div{
  515. float: left;
  516. font-size: .28rem;
  517. color: #666;
  518. line-height: .53rem;
  519. width:80%;
  520. text-align: left;
  521. &:first-child{
  522. width: 20%;
  523. padding-left: 0.36rem;
  524. text-align: justify;
  525. }
  526. a{
  527. color: #145dee;
  528. }
  529. .click-tel, .click-phone{
  530. color: #f44336;
  531. }
  532. }
  533. /* &:last-child{
  534. div{
  535. width: 74%;
  536. padding-right:.34rem;
  537. word-wrap: break-word;
  538. &:first-child{
  539. text-align: left;
  540. padding: 0rem 0rem 0rem .36rem;
  541. width: 26%;
  542. }
  543. }
  544. }*/
  545. }
  546. }
  547. }
  548. .store-description{
  549. background: #fff;
  550. width: 6.96rem;
  551. margin: 0 auto .2rem;
  552. border-radius: .1rem;
  553. .content {
  554. text-indent:2em;
  555. background: #fff;
  556. margin: .2rem auto 0;
  557. padding: .04rem .34rem .4rem .34rem;
  558. width: 100%;
  559. font-size: .28rem;
  560. color: #666;
  561. text-align: left;
  562. height: 95%;
  563. /*box-shadow: 0 .03rem .01rem 0 #cdcbcb96;*/
  564. line-height: .5rem;
  565. word-break: break-all;
  566. }
  567. }
  568. }
  569. .middle {
  570. .order-tag {
  571. display: inline-block;
  572. font-size: .18rem;
  573. color: #fff;
  574. font-weight: bold;
  575. background: #ee1717;
  576. height: .27rem;
  577. width: .27rem;
  578. line-height: .27rem;
  579. text-align: center;
  580. border-radius: .05rem;
  581. position: relative;
  582. top: -.05rem;
  583. margin-right: .05rem;
  584. &.reserve-tag {
  585. background: #07bb1c;
  586. }
  587. }
  588. text-align: left;
  589. padding: 0.24rem 0.24rem;
  590. background: #fff;
  591. margin: 0.24rem 0.24rem 0;
  592. border-radius: 5px;
  593. border: 1px solid #e3e5e8;
  594. .pms {
  595. color: #f57710;
  596. border: 1px solid #f57710;
  597. border-radius: 0.4rem;
  598. background: #fff;
  599. font-size: 0.24rem;
  600. height: 0.4rem;
  601. line-height: 0.4rem;
  602. width: 0.8rem;
  603. text-align: center;
  604. }
  605. .list {
  606. .left {
  607. float: left;
  608. overflow: hidden;
  609. text-overflow: ellipsis;
  610. white-space: nowrap;
  611. }
  612. .textinfo {
  613. font-size: 0.18rem;
  614. margin-left: 0.1rem;
  615. display: inline-block;
  616. background: #3f84f6;
  617. color: #fff;
  618. font-weight: bold;
  619. border-radius: 3px;
  620. width: 0.8rem;
  621. height: 0.32rem;
  622. line-height: 0.32rem;
  623. text-align: center
  624. }
  625. .button {
  626. font-size: 0.3rem;
  627. color: #1a58dd;
  628. width: 0.92rem;
  629. height: 0.43rem;
  630. line-height: 0.43rem;
  631. text-align: center;
  632. border-radius: 5px;
  633. border:1px solid #1a58dd;
  634. display: inline-block;
  635. margin-right: 0.2rem;
  636. }
  637. margin-bottom: 0.18rem;
  638. &::after{
  639. clear: both;
  640. display: block;
  641. content: ' ';
  642. visibility: hidden;
  643. zoom: 1;
  644. }
  645. .fl {
  646. width: 3.2rem;
  647. float: left;
  648. overflow: hidden;
  649. text-overflow: ellipsis;
  650. white-space: nowrap;
  651. }
  652. .fr {
  653. text-align: left;
  654. width: 2.6rem;
  655. overflow: hidden;
  656. text-overflow: ellipsis;
  657. white-space: nowrap;
  658. }
  659. &.list-long {
  660. .fl {
  661. width: 100% !important;
  662. }
  663. }
  664. .name {
  665. color: #333;
  666. font-size: 0.28rem;
  667. display: inline-block;
  668. }
  669. .text {
  670. display: inline-block;
  671. color: #333;
  672. font-size: 0.28rem
  673. }
  674. .table {
  675. width: 5.25rem;
  676. margin-bottom: 0;
  677. margin-top: 0;
  678. margin-left: 0.1rem;
  679. li {
  680. height: 0.43rem;
  681. line-height: 0.43rem;
  682. border-left: .01rem solid #c5c5c5;
  683. font-size: .28rem;
  684. &::after {
  685. clear: both;
  686. display: block;
  687. content: ' ';
  688. visibility: hidden;
  689. zoom: 1;
  690. }
  691. div {
  692. text-align: center;
  693. width: 50%;
  694. float: left;
  695. border-right: .01rem solid #c5c5c5;
  696. border-bottom: .01rem solid #c5c5c5;
  697. }
  698. &:nth-child(odd) {
  699. background: #ddd;
  700. color: #333;
  701. font-size: 0.28rem;
  702. }
  703. &:nth-child(even) {
  704. background: #fcfcfc;
  705. color: #333;
  706. font-size: 0.28rem;
  707. }
  708. &:nth-last-of-type(1){
  709. color: #f31919;
  710. }
  711. &.title {
  712. font-size: 0.28rem;
  713. color: #333;
  714. }
  715. }
  716. }
  717. .pull-right {
  718. div {
  719. color: #3f84f6;
  720. font-size: 0.28rem;
  721. border-radius: 0.07rem;
  722. border: 1px solid #3f84f6;
  723. background: #fff;
  724. width: 2rem;
  725. line-height: 0.54rem;
  726. height: 0.54rem;
  727. text-align: center;
  728. }
  729. div:last-child {
  730. margin-left: 0.2rem;
  731. color: #fff;
  732. background: #3f84f6;
  733. }
  734. }
  735. i {
  736. &.icon-pdf {
  737. color: #929292;
  738. font-size: 0.4rem;
  739. }
  740. &.active {
  741. color: #eb062b;
  742. }
  743. }
  744. }
  745. }
  746. .product-store {
  747. margin: .2rem 0 0 0;
  748. table {
  749. width: 100%;
  750. font-size: .28rem;
  751. thead {
  752. background: #d5e5fb;
  753. &.active {
  754. position: fixed;
  755. top: .88rem;
  756. z-index: 2;
  757. }
  758. tr {
  759. th {
  760. text-align: center;
  761. height: .98rem;
  762. line-height: normal;
  763. font-size: .26rem;
  764. font-weight: normal;
  765. color: #333;
  766. }
  767. }
  768. }
  769. tbody {
  770. tr {
  771. background: #fff;
  772. border-bottom: 0.2rem solid #f7f7f7;
  773. td {
  774. padding: .2rem .1rem;
  775. text-align: left;
  776. &.price-level-wrap {
  777. text-align: center;
  778. }
  779. div {
  780. overflow: hidden;
  781. text-overflow: ellipsis;
  782. white-space: nowrap;
  783. margin-bottom: .2rem;
  784. max-width: 1.58rem;
  785. &:last-child {
  786. margin-bottom: 0;
  787. }
  788. }
  789. .price-level:last-child {
  790. color: #fc5708;
  791. }
  792. .price-number {
  793. display: inline-block;
  794. vertical-align: middle;
  795. margin-bottom: 0;
  796. width: .9rem;
  797. }
  798. .order-tag {
  799. display: inline-block;
  800. font-size: .18rem;
  801. color: #fff;
  802. font-weight: bold;
  803. background: #ee1717;
  804. height: .27rem;
  805. width: .27rem;
  806. line-height: .27rem;
  807. text-align: center;
  808. border-radius: .05rem;
  809. position: relative;
  810. top: -.05rem;
  811. margin-right: .05rem;
  812. &.reserve-tag {
  813. background: #07bb1c;
  814. }
  815. }
  816. }
  817. &:active {
  818. background: #e1e1e1;
  819. }
  820. }
  821. }
  822. }
  823. .no-store {
  824. background: #fff;
  825. padding-top: 1rem;
  826. img {
  827. display: block;
  828. text-align: center;
  829. margin: 0 auto;
  830. margin-bottom: .45rem;
  831. width: 3.31rem;
  832. height: 2.13rem;
  833. }
  834. div {
  835. width: 5.27rem;
  836. margin: 0 auto;
  837. text-align: center;
  838. line-height: .4rem;
  839. color: #999;
  840. .link-url {
  841. color: #01a44e;
  842. }
  843. }
  844. }
  845. }
  846. .no-product {
  847. background: #fff;
  848. padding-top: 1rem;
  849. img {
  850. display: block;
  851. text-align: center;
  852. margin: 0 auto;
  853. margin-bottom: .45rem;
  854. width: 3.31rem;
  855. height: 2.13rem;
  856. }
  857. div {
  858. width: 5.27rem;
  859. margin: 0 auto;
  860. text-align: center;
  861. line-height: .4rem;
  862. font-size: .32rem;
  863. color: #999;
  864. }
  865. }
  866. }
  867. .com-none-state {
  868. background: #fff !important;
  869. padding: .3rem;
  870. margin: 0;
  871. p {
  872. margin: 0;
  873. font-size: .28rem;
  874. }
  875. }
  876. .search-content {
  877. padding: .07rem 0;
  878. input {
  879. width: 6.37rem;
  880. border: 1px solid #376ff3;
  881. }
  882. }
  883. .cancat {
  884. height: 0.56rem;
  885. line-height: 0.56rem;
  886. border: 1px solid #3f84f6;
  887. color: #3f84f6;
  888. font-size: 0.26rem;
  889. text-align: center;
  890. border-radius: 3px;
  891. padding: 0 0.1rem;
  892. overflow: hidden;
  893. width: auto;
  894. i {
  895. font-size: 0.26rem;
  896. }
  897. }
  898. .lookjianjie {
  899. position: fixed;
  900. top: 0;
  901. right: 0.4rem;
  902. font-size: 0.28rem;
  903. color: #fff;
  904. z-index: 11;
  905. line-height: 0.88rem;
  906. i {
  907. font-size: 0.28rem;
  908. color: #fff;
  909. transform: rotate(180deg);
  910. display: inline-block;
  911. }
  912. }
  913. </style>