cargoTerminal.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838
  1. <!-- 货源 -->
  2. <template>
  3. <view :class="{popupShow:isShowAlert}" class="content">
  4. <view class="banner">
  5. <view class="head flex">
  6. <view class="text flex" @click="goCity(0)">{{startPlace.sendCity}} {{startPlace.sendArea}}
  7. <u-icon name="arrow-down" color="##fff" size="20"></u-icon>
  8. </view>
  9. <image class="jt-icon item2" src="@/static/images/goodSource/jt.png" mode='widthFix'>
  10. </image>
  11. <view class="text flex" @click="goCity(1)">{{endPlace.unloadCity}} {{endPlace.unloadArea}}
  12. <u-icon name="arrow-down" color="#fff" size="20"></u-icon>
  13. </view>
  14. </view>
  15. </view>
  16. <mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :up="upOption"
  17. :down="downOption">
  18. <view v-for="(good,index) in goods" :key="index" @click="toDetail(good.id)">
  19. <view v-if="good.peripheralInfo==1&&isFirstIndex==index" class="other-goods">周边货源</view>
  20. <view class="good-list">
  21. <view class="good-view">
  22. <!-- <image src="@/static/images/goodSource/xf.png" mode="widthFix" class="xf-iamge"
  23. v-if="good.freightAdvance==1"></image> -->
  24. <view class="list-left">
  25. <view class="flex align-center">
  26. <view class="item1">
  27. <!-- <view class="ssx">
  28. {{$helper.getProvinceAbbreviation(good.sendPrivate?good.sendPrivate:good.sendCity)}}
  29. </view> -->
  30. <view class="level2-title">{{$helper.filterUrban(good.sendCity)}}
  31. {{$helper.filterArea(good.sendArea)}}
  32. </view>
  33. </view>
  34. <image class="jt-icon item2" src="@/static/images/goodSource/jt.png" mode='widthFix'>
  35. </image>
  36. <view class="item3">
  37. <!-- <view class="ssx">
  38. {{$helper.getProvinceAbbreviation(good.unloadPrivate?good.unloadPrivate:good.unloadCity)}}
  39. </view> -->
  40. <view class="level2-title">{{$helper.filterUrban(good.unloadCity)}}
  41. {{$helper.filterArea(good.unloadArea)}}
  42. </view>
  43. </view>
  44. </view>
  45. <view class="flex flex-space-between row row2">
  46. <view class="left">
  47. 距离约{{good.cargoDistance}}公里
  48. </view>
  49. <view class="right">
  50. {{good.updateDate}}发布
  51. </view>
  52. </view>
  53. <view class="flex flex-space-between row row3">
  54. <view class="left">
  55. <text>¥{{good.freightPrice}}</text>
  56. <text v-if="good.billingMethod==0">元/吨</text>
  57. <text v-if="good.billingMethod==1">元/车</text>
  58. <text v-if="good.billingMethod==2">元/方</text>
  59. </view>
  60. <view class="right">
  61. {{good.packageType}}{{good.goodsName}}
  62. </view>
  63. </view>
  64. <view class="row-content">
  65. {{good.content}}
  66. </view>
  67. </view>
  68. </view>
  69. <view class="flex flex-space-between item-bottom">
  70. <view class="left flex row">
  71. <u--image :src="good.headSculpture?good.headSculpture:'../../static/images/mine/tx.png'"
  72. width='57rpx' height='57rpx' shape="circle">
  73. </u--image>
  74. <view class="name">{{good.freightStationName}}·{{good.contacts}}</view>
  75. </view>
  76. <view class="right">
  77. <view @click.native.stop="toCaLL(good)" class="qd" v-if='hasLogin'><u-icon name="phone-fill"
  78. color="#F5BA3C"></u-icon>去电</view>
  79. </view>
  80. </view>
  81. </view>
  82. </view>
  83. </mescroll-body>
  84. <u-toast ref="uToast"></u-toast>
  85. </view>
  86. </template>
  87. <script>
  88. var that
  89. import permision from "@/js_sdk/wa-permission/permission.js"
  90. import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
  91. import {
  92. mapState
  93. } from 'vuex';
  94. export default {
  95. mixins: [MescrollMixin], // 使用mixin
  96. data() {
  97. return {
  98. isToday: false,
  99. downOption: {
  100. auto: false,
  101. textColor: '#bbb'
  102. },
  103. upOption: {
  104. page: {
  105. size: 10 // 每页数据的数量,默认10
  106. },
  107. auto: false,
  108. noMoreSize: 1,
  109. textNoMore: '没有更多了~',
  110. textColor: '#bbb'
  111. },
  112. confirmText: '确定',
  113. showCancelButton: true,
  114. isFirstIndex: null,
  115. ObjSelect: {},
  116. isShowAlert: false,
  117. alertTitle: '确定抢单?',
  118. show: false,
  119. columns: [
  120. ['全部类型', '运费先付']
  121. ],
  122. startPlace: {},
  123. endPlace: {},
  124. otherGoods: [], // 数据列表
  125. goods: [], // 数据列表
  126. src: 'https://cdn.uviewui.com/uview/album/1.jpg',
  127. height: "", // 需要固定swiper的高度
  128. tabList: [
  129. // {
  130. // name: '全部'
  131. // },
  132. {
  133. name: '推荐'
  134. }, {
  135. name: '按时间'
  136. }, {
  137. name: '按距离'
  138. },
  139. // {
  140. // name: '运费先付'
  141. // },
  142. ],
  143. pickerSelect: '全部类型',
  144. tabIndex: 0,
  145. scrollTop: 0,
  146. isdblclick: 0,
  147. count: 0,
  148. lng: '',
  149. lat: '',
  150. bool: false,
  151. showMenu: false,
  152. driverCommonId: "",
  153. driverPhone: "",
  154. driverName: ""
  155. }
  156. },
  157. onTabItemTap(e) {
  158. this.isdblclick++
  159. // tab 点击时执行,此处直接接收单击事件
  160. if (this.scrollTop > 1200) {
  161. if (this.isdblclick > 1) {
  162. uni.pageScrollTo({
  163. scrollTop: 0,
  164. duration: 300
  165. });
  166. }
  167. }
  168. },
  169. created() {
  170. },
  171. computed: {
  172. ...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
  173. },
  174. watch: {
  175. // startPlace(){
  176. // console.log(this.startPlace)
  177. // this.upCallback({page});
  178. // },
  179. },
  180. onLoad() {
  181. that = this
  182. // this.checkOpenGPSServiceByAndroidIOS()
  183. },
  184. onHide() {
  185. this.isdblclick = 0
  186. },
  187. async onShow() {
  188. // if (this.scrollTop > 1200) {
  189. // uni.setTabBarItem({
  190. // index: 0,
  191. // text: '返回顶部',
  192. // iconPath: 's',
  193. // selectedIconPath: 'static/images/common/top@2x.png'
  194. // })
  195. // }
  196. uni.setTabBarItem({
  197. index: 2,
  198. text: '订单',
  199. iconPath: 'static/images/common/dingdan@2x(1).png',
  200. selectedIconPath: 'static/images/common/dingdan@2x.png'
  201. })
  202. var that = this
  203. //获取上一次起始位置
  204. if (uni.getStorageSync('fHzPlaceObj')) {
  205. that.startPlace = uni.getStorageSync('fHzPlaceObj');
  206. } else {
  207. that.startPlace = {
  208. sendPrivate: '辽宁省',
  209. sendCity: '营口市',
  210. sendArea: '鲅鱼圈区',
  211. selected: '营口市'
  212. }
  213. }
  214. if (uni.getStorageSync('sHzPlaceObj')) {
  215. that.endPlace = uni.getStorageSync('sHzPlaceObj');
  216. } else {
  217. that.endPlace = {
  218. unloadPrivate: '吉林省',
  219. unloadCity: '齐齐哈尔市',
  220. unloadArea: '富拉尔基',
  221. selected: '齐齐哈尔市'
  222. }
  223. // uni.setStorageSync('sPlaceObj', {
  224. // schoosearea: '请选择区',
  225. // schoosecity: '请选择市',
  226. // schooseprovince: '全国',
  227. // selected: '全国'
  228. // })
  229. }
  230. that.upCallback({
  231. size: 10,
  232. num: 1
  233. })
  234. that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
  235. reCommonId: this.userInfo.id,
  236. }).then(res3 => {
  237. if (res3.data || res3.data == 0) {
  238. let name = 'myTip';
  239. let value = res3.data
  240. if (value == 0) {
  241. uni.removeTabBarBadge({
  242. index: 3
  243. })
  244. }
  245. that.$store.commit('$uStore', {
  246. name,
  247. value
  248. });
  249. if (value != 0 && value) {
  250. uni.setTabBarBadge({
  251. index: 3,
  252. text: value + ""
  253. })
  254. }
  255. }
  256. })
  257. // this.mescroll.resetUpScroll()
  258. },
  259. // async onLoad() {
  260. // that = this
  261. // // #ifdef APP-PLUS
  262. // let _status = await that.$request.baseRequest('get', '/driverInfo/firstAuthentication', {
  263. // driverPhone: this.userInfo.phone,
  264. // }).then(res => {
  265. // return res.data.authenticationStatus
  266. // })
  267. // // if (_status == '已禁用') {
  268. // // this.isShowAlert = true
  269. // // this.alertTitle = '账号审核中'
  270. // // this.confirmText = '退出APP'
  271. // // this.showCancelButton = false
  272. // // } else {
  273. // // console.log(1231233212332312312213)
  274. // // }
  275. // // #endif
  276. // },
  277. onPageScroll(res) {
  278. this.scrollTop = res.scrollTop
  279. // console.log("页面滚动了", res.scrollTop)
  280. if (this.scrollTop > 1200) {
  281. uni.setTabBarItem({
  282. index: 0,
  283. text: '返回顶部',
  284. iconPath: 'static/images/common/top@2x.png',
  285. selectedIconPath: 'static/images/common/top@2x.png'
  286. })
  287. } else {
  288. uni.setTabBarItem({
  289. index: 0,
  290. text: '货源',
  291. iconPath: 'static/images/common/huoyuan@2x(1).png',
  292. selectedIconPath: 'static/images/common/huoyuan@2x.png'
  293. })
  294. }
  295. },
  296. methods: {
  297. stopRoll() {
  298. },
  299. async get_localtion_permission() {
  300. var photol = await permision.checkSystemEnableLocation()
  301. if (photol == true) {
  302. this.getLngLat()
  303. } else {
  304. // that.$refs.uToast.show({
  305. // type: 'error',
  306. // message: "未获取定位权限!",
  307. // })
  308. this.checkOpenGPSServiceByAndroidIOS()
  309. }
  310. },
  311. async getLngLat() {
  312. await uni.getLocation({
  313. type: 'gcj02',
  314. geocode: true,
  315. success: res => {
  316. if (res.latitude) {
  317. if (res.address.city) {
  318. if (res.address.city.indexOf('市') != -1) {
  319. res.address.city = res.address.city.substring(0, res.address.city
  320. .length - 1)
  321. }
  322. }
  323. if (res.address.province) {
  324. if (res.address.province.indexOf('省') != -1) {
  325. res.address.province = res.address.province.substring(0, res.address
  326. .province.length - 1)
  327. }
  328. }
  329. uni.setStorageSync('fPlaceObj', {
  330. fchoosearea: '全部',
  331. fchoosecity: res.address.city,
  332. fchooseprovince: res.address.province,
  333. selected: res.address.city
  334. })
  335. uni.setStorageSync('sPlaceObj', {
  336. schoosearea: '请选择区',
  337. schoosecity: '请选择市',
  338. schooseprovince: '全国',
  339. selected: '全国'
  340. })
  341. uni.setStorageSync('longitudeAndLatitude', res.longitude + ',' + res.latitude)
  342. that.upCallback({
  343. size: 10,
  344. num: 1
  345. })
  346. }
  347. }
  348. })
  349. },
  350. checkOpenGPSServiceByAndroidIOS() {
  351. let system = uni.getSystemInfoSync(); // 获取系统信息
  352. // console.log(system);
  353. if (system.platform === 'android') { // 判断平台
  354. var context = plus.android.importClass("android.content.Context");
  355. var locationManager = plus.android.importClass("android.location.LocationManager");
  356. var main = plus.android.runtimeMainActivity();
  357. var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
  358. if (!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)) {
  359. uni.showModal({
  360. title: '提示',
  361. content: '请打开定位服务功能',
  362. // showCancel: false, // 不显示取消按钮
  363. success(res) {
  364. if (res.confirm) {
  365. uni.setStorageSync('confirm_location', 1)
  366. if (!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)) {
  367. var Intent = plus.android.importClass('android.content.Intent');
  368. var Settings = plus.android.importClass('android.provider.Settings');
  369. var intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
  370. main.startActivity(intent); // 打开系统设置GPS服务页面
  371. console.log()
  372. }
  373. // else {
  374. // uni.setStorageSync('fPlaceObj', {
  375. // fchoosearea: '全部',
  376. // fchoosecity: '市辖区',
  377. // fchooseprovince: '北京',
  378. // selected: '东城'
  379. // })
  380. // uni.setStorageSync('sPlaceObj', {
  381. // schoosearea: '请选择区',
  382. // schoosecity: '请选择市',
  383. // schooseprovince: '全国',
  384. // selected: '全国'
  385. // })
  386. // uni.setStorageSync('longitudeAndLatitude', '116.3972,39.9096')
  387. // }
  388. } else {
  389. // uni.setStorageSync('fPlaceObj', {
  390. // fchoosearea: '全部',
  391. // fchoosecity: '市辖区',
  392. // fchooseprovince: '北京',
  393. // selected: '东城'
  394. // })
  395. // uni.setStorageSync('sPlaceObj', {
  396. // schoosearea: '请选择区',
  397. // schoosecity: '请选择市',
  398. // schooseprovince: '全国',
  399. // selected: '全国'
  400. // })
  401. // uni.setStorageSync('longitudeAndLatitude', '116.3972,39.9096')
  402. }
  403. }
  404. });
  405. // uni.setStorageSync('fPlaceObj', {
  406. // fchoosearea: '全部',
  407. // fchoosecity: '市辖区',
  408. // fchooseprovince: '北京',
  409. // selected: '东城'
  410. // })
  411. // uni.setStorageSync('sPlaceObj', {
  412. // schoosearea: '请选择区',
  413. // schoosecity: '请选择市',
  414. // schooseprovince: '全国',
  415. // selected: '全国'
  416. // })
  417. if (uni.getStorageSync('fPlaceObj')) {
  418. that.startPlace = uni.getStorageSync('fPlaceObj');
  419. }
  420. if (uni.getStorageSync('sPlaceObj')) {
  421. that.endPlace = uni.getStorageSync('sPlaceObj');
  422. }
  423. uni.setStorageSync('longitudeAndLatitude', '116.3972,39.9096')
  424. } else {
  425. this.getLngLat()
  426. }
  427. } else if (system.platform === 'ios') {
  428. // console.log("苹果");
  429. var cllocationManger = plus.ios.import("CLLocationManager");
  430. var enable = cllocationManger.locationServicesEnabled();
  431. var status = cllocationManger.authorizationStatus();
  432. plus.ios.deleteObject(cllocationManger);
  433. if (enable && status != 2) {
  434. this.getLngLat()
  435. console.log("手机系统的定位已经打开");
  436. } else {
  437. console.log("手机系统的定位没有打开");
  438. uni.showModal({
  439. title: '提示',
  440. content: '请前往设置-隐私-定位服务打开定位服务功能',
  441. // showCancel: false, // 不显示取消按钮
  442. success(res) {
  443. if (res.confirm) {
  444. var UIApplication = plus.ios.import("UIApplication");
  445. var application2 = UIApplication.sharedApplication();
  446. var NSURL2 = plus.ios.import("NSURL");
  447. // var setting2 = NSURL2.URLWithString("prefs:root=LOCATION_SERVICES");
  448. // var setting2 = NSURL2.URLWithString("App-Prefs:root=LOCATION_SERVICES");
  449. // var setting2 = NSURL2.URLWithString("app-settings");
  450. var setting2 = NSURL2.URLWithString("App-Prefs:root=Privacy&path=LOCATION");
  451. // var setting2 = NSURL2.URLWithString("App-Prefs:root=Privacy&path=LOCATION_SERVICES");
  452. application2.openURL(setting2);
  453. plus.ios.deleteObject(setting2);
  454. plus.ios.deleteObject(NSURL2);
  455. plus.ios.deleteObject(application2);
  456. this.getLngLat()
  457. }
  458. }
  459. });
  460. }
  461. }
  462. },
  463. mescrollInit(mescroll) {
  464. this.mescroll = mescroll;
  465. },
  466. cancelClick() {
  467. this.isShowAlert = false
  468. },
  469. getdate() {
  470. var date = new Date()
  471. var year = date.getFullYear() //获取完整的年份(4位)
  472. var mouth = date.getMonth() + 1 //获取当前月份(0-11,0代表1月)
  473. var datetime = date.getDate() //获取当前日(1-31)
  474. if (mouth < 10) {
  475. mouth = '0' + mouth
  476. }
  477. if (datetime < 10) {
  478. datetime = '0' + datetime
  479. }
  480. return String(year) + String(mouth) + String(datetime)
  481. },
  482. toCaLL(item) {
  483. let that = this
  484. this.$request.baseRequest('get', '/driverInfo/firstAuthentication', {
  485. driverPhone: this.userInfo.phone,
  486. }).then(res2 => {
  487. if (res2.data.authenticationStatus == '已过期') {
  488. that.$refs.uToast.show({
  489. type: 'error',
  490. message: '证件已过期,请上传新证件!',
  491. })
  492. return
  493. } else if (res2.data.authenticationStatus == '未认证' || res2.data.authenticationStatus ==
  494. '已驳回') {
  495. that.$refs.uToast.show({
  496. type: 'error',
  497. message: '请先完成司机认证!',
  498. })
  499. return
  500. } else if (res2.data.authenticationStatus == '审核中') {
  501. that.$refs.uToast.show({
  502. type: 'error',
  503. message: '司机审核中!',
  504. })
  505. return
  506. } else if (res2.data.authenticationStatus == '已认证') {
  507. uni.makePhoneCall({
  508. phoneNumber: item.contactsPhone
  509. });
  510. }
  511. })
  512. },
  513. toDetail(id) {
  514. uni.navigateTo({
  515. url: "/pages/cargoTerminal/cargoTerminalDetail?id=" + id
  516. })
  517. },
  518. getData(time) {
  519. let _todayDate = new Date().setHours(0, 0, 0, 0)
  520. if (_todayDate == time) return true
  521. return false
  522. },
  523. upCallback(page) {
  524. console.log(this.startPlace)
  525. console.log(this.endPlace)
  526. this.$request.baseRequest('get', '/hyReleaseGoodsInfo/selectTask', {
  527. currentPage: page.num,
  528. pageSize: page.size,
  529. searchType: this.tabIndex + 1,
  530. loadingPlaceCity: this.startPlace.sendCity,
  531. unLoadingPlaceCity: this.endPlace.unloadCity,
  532. driverFlag: 1
  533. }).then(res => {
  534. uni.hideLoading()
  535. let curPageData = res.data.records;
  536. let totalPage = res.data.total;
  537. let curPageLen = curPageData.length;
  538. this.mescroll.endByPage(curPageLen, totalPage);
  539. console.log(res.data)
  540. if (page.num == 1) this.goods = [];
  541. this.goods = this.goods.concat(curPageData);
  542. for (let i = 0; i < this.goods.length; i++) {
  543. let _updateDate = new Date(this.goods[i].updateDate.split(' ')[0]).setHours(0, 0, 0, 0)
  544. this.isToday = this.getData(_updateDate)
  545. console.log("this.isToday",this.isToday)
  546. if(this.isToday){
  547. this.goods[i].updateDate=this.goods[i].updateDate.split(' ')[1]
  548. }else{
  549. this.goods[i].updateDate=this.goods[i].updateDate.split(' ')[0]
  550. }
  551. let _text3 = ''
  552. let _textList = this.goods[i].measuringMethod.split(',')
  553. for (let i = 0; i < _textList.length; i++) {
  554. if (_textList[i] == '重量(吨)') {
  555. _text3 += this.goods[i].weight + '吨/'
  556. } else {
  557. _text3 += this.goods[i].weight + '方/'
  558. }
  559. }
  560. _text3 = _text3.substring(0, _text3.length - 1)
  561. this.goods[i].content = this.goods[i].carModel.replace(',', '/') + '、' + this
  562. .goods[i].carLength.replace(',', '/') + '米、' + _text3 + '、' + this.goods[i]
  563. .expectedNum + '车、' + this.goods[i].goodsName + '、' + this.goods[i]
  564. .packageType + '、' + this.goods[i].cargoDistance + 'km'
  565. }
  566. for (let i = 0; i < that.goods.length; i++) {
  567. if (that.goods[i].peripheralInfo == 1) {
  568. that.isFirstIndex = i
  569. return
  570. }
  571. }
  572. })
  573. .catch(res => {
  574. uni.hideLoading()
  575. uni.$u.toast(res.message);
  576. this.mescroll.endErr();
  577. });
  578. },
  579. goCity(type) {
  580. uni.$u.route('/pages/cargoTerminal/hzSelectCity', {
  581. startPlace: JSON.stringify(this.startPlace),
  582. endPlace: JSON.stringify(this.endPlace),
  583. type: type
  584. });
  585. }
  586. }
  587. }
  588. </script>
  589. <style scoped lang="scss">
  590. .popupShow {
  591. overflow: hidden;
  592. position: fixed;
  593. height: 100vh;
  594. width: 100%;
  595. }
  596. .content {
  597. background: #F2F4F7;
  598. }
  599. .banner {
  600. width: 100%;
  601. position: relative;
  602. }
  603. .u-flex-wrap {
  604. flex-wrap: wrap;
  605. }
  606. .fixed,
  607. .fixed1 {
  608. background: linear-gradient(97deg, #F5BA3C 0%, #F5BA3C 100%);
  609. position: fixed;
  610. top: var(--status-bar-height);
  611. z-index: 999;
  612. // width: calc(100% - 40rpx);
  613. width: 100%;
  614. // margin:0 20rpx;
  615. }
  616. .fixed1 {
  617. top: 0;
  618. height: var(--status-bar-height);
  619. background: linear-gradient(97deg, #F5BA3C 0%, #F5BA3C 100%);
  620. }
  621. .banner-img {
  622. width: 100%;
  623. }
  624. .head {
  625. background: #F5BA3C;
  626. padding: 20rpx;
  627. box-sizing: border-box;
  628. display: flex;
  629. .text {
  630. color: #fff;
  631. text-overflow: ellipsis;
  632. overflow: hidden;
  633. white-space: nowrap;
  634. }
  635. }
  636. .change-btn {
  637. width: 86rpx;
  638. height: 86rpx;
  639. }
  640. .good-list {
  641. background-color: white;
  642. margin: 10px 10px 15px 10px;
  643. // padding: 10px 0px 0px 0;
  644. border-radius: 30rpx;
  645. box-shadow: 0px 5rpx 20rpx #E3E3E3;
  646. .good-view {
  647. padding: 10rpx 35rpx 10rpx 35rpx;
  648. position: relative;
  649. }
  650. .item1,
  651. .item3 {
  652. // width: 40%;
  653. display: flex;
  654. .text {
  655. text-overflow: ellipsis;
  656. overflow: hidden;
  657. white-space: nowrap;
  658. }
  659. }
  660. .item1 .text {
  661. text-align: left;
  662. }
  663. .item3 .text {
  664. text-align: right;
  665. }
  666. .row2 {
  667. color: rgb(153, 153, 153)
  668. }
  669. .row3 {
  670. .left {
  671. color: rgb(255, 134, 0);
  672. }
  673. .right {
  674. color: rgb(153, 153, 153)
  675. }
  676. }
  677. }
  678. .jt-icon {
  679. position: relative;
  680. // top: 6rpx;
  681. width: 60rpx;
  682. margin: 0 20rpx;
  683. }
  684. .row {
  685. margin: 10rpx 0;
  686. align-items: center;
  687. }
  688. .item-bottom {
  689. // background: #F0F5FF;
  690. padding: 23rpx 30rpx;
  691. border-radius: 0px 0px 18px 18px;
  692. .name {
  693. font-size: 26rpx;
  694. font-weight: 700;
  695. color: #000000;
  696. margin-left: 30rpx;
  697. }
  698. .hp {
  699. margin: 30rpx;
  700. }
  701. .number-color {
  702. margin: 0 10rpx;
  703. }
  704. .qd {
  705. // background: linear-gradient(97deg, #F5BA3C 0%, #F5BA3C 100%);
  706. border-radius: 13rpx;
  707. font-size: 29rpx;
  708. font-weight: 400;
  709. color: #F5BA3C;
  710. padding: 15rpx 35rpx;
  711. display: flex;
  712. align-items: center;
  713. border: 1px solid #F5BA3C;
  714. }
  715. }
  716. .dw {
  717. align-items: center;
  718. }
  719. .place {
  720. height: var(--status-bar-height);
  721. }
  722. .tab-view {
  723. display: flex;
  724. align-items: center;
  725. justify-content: space-between;
  726. // padding-left: 20rpx;
  727. }
  728. .tab-right {
  729. display: flex;
  730. margin-right: 39rpx;
  731. align-items: center;
  732. }
  733. .other-goods {
  734. // background: red;
  735. color: #999999;
  736. margin: 40rpx 0;
  737. display: flex;
  738. justify-content: center;
  739. font-size: 36rpx;
  740. }
  741. .level2-title {
  742. // font-size: 28rpx;
  743. }
  744. .yf-style {
  745. position: relative;
  746. .left {
  747. font-size: 25.39rpx;
  748. .text-space {
  749. margin-right: 20rpx;
  750. }
  751. .line {
  752. margin: 0 10rpx;
  753. }
  754. }
  755. .h-color {
  756. // position: absolute;
  757. // right: 0;
  758. // top: -30rpx;
  759. }
  760. }
  761. .xf-iamge {
  762. width: 74rpx;
  763. height: 43rpx;
  764. position: absolute;
  765. top: -20rpx;
  766. right: 0;
  767. }
  768. .place-title {
  769. margin-bottom: 11rpx;
  770. }
  771. .btn-color {
  772. margin-top: 52rpx;
  773. padding: 30rpx 0;
  774. }
  775. .row-content {
  776. color: rgb(153, 153, 153);
  777. text-overflow: ellipsis;
  778. white-space: nowrap;
  779. overflow: hidden;
  780. }
  781. </style>