index.vue 24 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004
  1. <!-- 货源 -->
  2. <template>
  3. <view class="content">
  4. <view class="fixed1"></view>
  5. <!-- <view v-if="!isSearch"> -->
  6. <!-- <view class="fixed">
  7. <view class='title flex flex-center'>
  8. <view>订单</view>
  9. <u-icon class="search" name="search" color="" size="28" @click="search"></u-icon>
  10. </view>
  11. <u-tabs :list="tabList" @click="clickTab" lineColor='#2772FB' :current='tabIndex' :activeStyle="{
  12. color: '#2772FB',
  13. fontWeight: 'bold',
  14. transform: 'scale(1.05)'
  15. }"></u-tabs>
  16. </view> -->
  17. <view class="top-content">
  18. <u-search placeholder="搜索订单" v-model="searchKeyWord" bgColor='white' :actionStyle='searchStyle'
  19. @custom="getSearch" @search="getSearch" :clearabled="true"></u-search>
  20. <view class="tab-content">
  21. <u-tabs :list="tabList" @click="clickTab" lineColor='transparent' :current='tabIndex'
  22. :inactiveStyle="{color:'white'}" :activeStyle="{
  23. color: '#2772FB',
  24. fontWeight: 'bold',
  25. transform: 'scale(1.05)',
  26. background:'white',
  27. padding:'10rpx 20rpx',
  28. 'border-radius':'40rpx'
  29. }" class="tabs"></u-tabs>
  30. <view class="right-btn" @click="showMenu=true">
  31. <u-icon name="grid-fill" color="white" size="28"></u-icon>
  32. <view class="">
  33. 全部
  34. </view>
  35. </view>
  36. </view>
  37. </view>
  38. <view class="all-menu">
  39. <u-transition :show="showMenu" mode="fade">
  40. <view class="transition">
  41. <view v-for="(item,index) in tabList" :key='index' class="transition-item-style"
  42. :class="tabIndex==index?'menu-active':''" @click="clickTab({index:index})">
  43. {{item.name}}
  44. </view>
  45. </view>
  46. </u-transition>
  47. <view class="modal-black" v-show="showMenu" @click="closeMenu"></view>
  48. </view>
  49. <mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" class="mescroll">
  50. <view class="evaluatePage flex flex-space-between" v-show="tabIndex == 10" @click="evaluationRecord">
  51. <view class="left flex flex-space-between">
  52. <u-icon size="20" name="edit-pen"></u-icon>
  53. <view style="margin-left: 20prx;">我的评价</view>
  54. </view>
  55. <view class="right">
  56. <u-icon size="20" name="arrow-right"></u-icon>
  57. </view>
  58. </view>
  59. <view :id="'good'+good.id" class="good-list" v-for="good in goods" :key="good.id"
  60. @click="toDetail(good.id)">
  61. <view style="padding: 0 35rpx 20rpx 35rpx;">
  62. <view class="flex flex-space-between row1">
  63. <view class="item1">
  64. {{good.orderNo}}
  65. <!-- {{good.goodsName}} -->
  66. </view>
  67. <view class="item2">
  68. {{good.cargoOwnerStatus}}
  69. </view>
  70. </view>
  71. <view class="flex row2">
  72. <view class="left">
  73. <view class="top">
  74. <view class="ssx">{{$helper.getProvinceAbbreviation(good.sendPrivate?good.sendPrivate:good.sendCity)}}</view>
  75. <view class="level2-title">{{$helper.filterUrban(good.sendCity)}}</view>
  76. </view>
  77. <view class="bottom">{{$helper.filterArea(good.sendArea)}}</view>
  78. </view>
  79. <view class="jt-image">
  80. <image class="jt-icon" src="@/static/images/order/jt.png" mode='widthFix'>
  81. </image>
  82. </view>
  83. <view class="right">
  84. <view class="top">
  85. <view class="ssx">
  86. {{$helper.getProvinceAbbreviation(good.unloadPrivate?good.unloadPrivate:good.unloadCity)}}
  87. </view>
  88. <view class="level2-title">{{$helper.filterUrban(good.unloadCity)}}</view>
  89. </view>
  90. <view class="bottom">
  91. {{$helper.filterArea(good.unloadArea)}}
  92. </view>
  93. </view>
  94. </view>
  95. <view class="flex row3 s-row">
  96. <view class="flex align-center">
  97. <image class="hz" src="@/static/images/news/sj.png"></image>
  98. <view style="margin-right: 20rpx;" @click.stop="goTodriverDetail(good)">{{good.driverName}}</view>
  99. <!-- <view style="margin-right: 20rpx;">{{good.driverCall}}</view> -->
  100. <image class="hz-good" src="@/static/images/order/good-img.png"></image>
  101. <view>{{good.goodsName}}</view>
  102. </view>
  103. <view class="flex align-center">
  104. <view style="margin-right: 20rpx;">运距 {{good.distance}}km</view>
  105. <view class="car">{{good.freight?good.freight:good.freightInfo.freight}}{{good.billingMethod==0?'元/吨':'元/车'}}</view>
  106. </view>
  107. <!-- <view class="right">
  108. <view class="flex fontsize-26 row">
  109. <view>{{good.compName}}</view>
  110. <view class="sline"></view>
  111. <view>{{good.cargoOwner}}</view>
  112. </view>
  113. <view class="flex align-center">
  114. <view class="fontsize-26 ">运距 {{good.distance}}km</view>
  115. </view>
  116. </view> -->
  117. </view>
  118. <view class="row4 flex align-center">
  119. <view class="time">{{good.updateDate}}</view>
  120. </view>
  121. <view class="row5 flex flex-end">
  122. <!-- <image class="jt-icon" src="@/static/images/order/position.png" mode='widthFix'
  123. @click.stop="toMap(good)">
  124. </image> -->
  125. <view v-if="good.cargoOwnerStatus=='运输中'" class="start normal look-map" @click.stop="toMap(good)">
  126. 查看轨迹</view>
  127. <view class="stop" @click.stop="accept(good,1)" v-if="good.cargoOwnerStatus=='待接单'">接受
  128. </view>
  129. <!-- <view class="stop active" @click.stop="accept(good,1)">接受</view> -->
  130. <view class="normal" @click.stop="accept(good,2)" v-if="good.cargoOwnerStatus=='待接单'">拒绝
  131. </view>
  132. <view class="normal" @click.stop="stop(good)" v-if="good.cargoOwnerStatus=='未装车'">终止</view>
  133. <!-- <view class="stop active" @click.stop="stop(good)">终止</view> -->
  134. <!-- confirmLoading(good,3) -->
  135. <view v-if="good.cargoOwnerStatus=='待确认装车'" class="start normal" @click.stop="toDetail(good.id)"
  136. >确认装车</view>
  137. <!-- <view class="start normal" @click.stop="confirmLoading(good,1)">确认装车</view> -->
  138. <view class="start normal" v-if="good.cargoOwnerStatus!='待接单'&&good.cargoOwnerStatus!='未装车'">
  139. 联系客服</view>
  140. <view class="start normal" @click.stop="toDetail(good.id)"
  141. v-if="good.cargoOwnerStatus=='待收货'">确认卸车</view>
  142. <!-- <view class="start normal" @click.stop="confirmLoading(good,4)"
  143. v-if="good.cargoOwnerStatus=='待收货'">确认卸车</view> -->
  144. <!-- <view class="start normal" @click.stop="confirmLoading(good,2)">确认卸车</view> -->
  145. <!-- <view class="normal" @click.stop="stop(good)" v-if="good.cargoOwnerStatus=='已结算'">付款</view> -->
  146. <!-- <view class="normal" @click.stop="stop(good)"
  147. v-if="good.cargoOwnerStatus=='待还款'||good.cargoOwnerStatus=='已还款'">还款</view> -->
  148. <!-- <view class="start normal" @click.stop="addevaluation(good)" v-if="good.cargoOwnerStatus=='已完结'">评价</view> --><!-- driverEvaluated 为1是已评价过-->
  149. <view class="start normal" @click.stop="addevaluation(good)" v-if="good.cargoOwnerStatus=='已完结' && good.ownerEvaluated != 1" >评价</view>
  150. </view>
  151. </view>
  152. </view>
  153. </mescroll-body>
  154. <!-- </view> -->
  155. <!-- <view v-else class="search-view">
  156. <view class="flex">
  157. <u-icon name="arrow-left" color="" size="20" class="back-icon" @click="back()"></u-icon>
  158. <u-search placeholder="可按编号、货主、收发地查找" placeholderColor="#AFB3BF" :actionStyle="textColor"
  159. bgColor="#F5F6FA" v-model="searchKeyWord" actionText='取消' @custom="cancel" @search="getSearch">
  160. </u-search>
  161. </view>
  162. <view class="near-search">
  163. <view class="flex flex-space-between">
  164. <view class="near-search-text">最近搜索</view>
  165. <u-icon name="trash-fill" color="#AFB3BF" size="20" class="back-icon" @click="del"></u-icon>
  166. </view>
  167. <view class="">
  168. <view v-for="(item,index) in useSearchList" :key="index" class="item-style inline-block">
  169. {{item}}
  170. </view>
  171. </view>
  172. </view>
  173. </view> -->
  174. <u-modal :show="isShowAlert" :title="alertTitle" :content='alertContent' :confirmText='confirmText'
  175. :closeOnClickOverlay='true' :showCancelButton='showCancelButton' @confirm="confirmClick"
  176. @close="cancelClick" @cancel="cancelClick" class="modal">
  177. <u-radio-group v-model="radiovalue1" placement="" v-if='isShowTerminationReason' class='row'>
  178. <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in radiolist1" :key="index"
  179. :label="item.name" :name="item.name" @change="radioChange">
  180. </u-radio>
  181. </u-radio-group>
  182. <u--textarea class="row" v-model="value2" placeholder="终止原因描述" count maxlength='50'
  183. v-if='isShowTerminationReason'>
  184. </u--textarea>
  185. </u-modal>
  186. <u-toast ref="uToast"></u-toast>
  187. </view>
  188. </template>
  189. <script>
  190. var that
  191. import {
  192. mapState
  193. } from 'vuex';
  194. import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
  195. import {
  196. apiGoods
  197. } from "@/api/mock.js"
  198. export default {
  199. mixins: [MescrollMixin], // 使用mixin
  200. data() {
  201. return {
  202. confirmText: '',
  203. showCancelButton: true,
  204. type: null,
  205. objData: {},
  206. showMenu: false,
  207. searchStyle: {
  208. background: "#317AFE",
  209. color: 'white',
  210. position: "absolute",
  211. right: "30rpx",
  212. padding: "6rpx 20rpx",
  213. "border-radius": '30rpx'
  214. },
  215. searchKeyWord: '',
  216. useSearchList: [],
  217. mescroll: null,
  218. isShowTerminationReason: false,
  219. id: '',
  220. value2: '',
  221. radiolist1: [{
  222. name: '已与货主协商',
  223. disabled: false
  224. },
  225. {
  226. name: '货主原因终止',
  227. disabled: false
  228. },
  229. {
  230. name: '司机个人原因终止',
  231. disabled: false
  232. }, {
  233. name: '其他',
  234. disabled: false
  235. }
  236. ],
  237. radiovalue1: '已与货主协商',
  238. confirmText: '终止',
  239. alertTitle: '确定终止订单?',
  240. alertContent: "",
  241. isShowAlert: false,
  242. textColor: {
  243. "color": "#AFB3BF"
  244. },
  245. isSearch: false,
  246. startPlace: '齐齐哈尔齐齐哈尔',
  247. endPlace: '全国',
  248. goods: [], // 数据列表
  249. src: 'https://cdn.uviewui.com/uview/album/1.jpg',
  250. height: "", // 需要固定swiper的高度
  251. tabList: [{
  252. name: '全部'
  253. }, {
  254. name: '待接单'
  255. }, {
  256. name: '未发运'
  257. }, {
  258. name: '运输中'
  259. }, {
  260. name: '待收货'
  261. },
  262. {
  263. name: '待结算'
  264. },
  265. {
  266. name: '已结算'
  267. },
  268. {
  269. name: '待还款'
  270. },
  271. {
  272. name: '已还款'
  273. },
  274. {
  275. name: '已完结'
  276. },
  277. {
  278. name: '评价'
  279. },
  280. ],
  281. tabIndex: 0,
  282. scrollTop: 0
  283. }
  284. },
  285. computed: {
  286. ...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
  287. },
  288. onTabItemTap(e) {
  289. // tab 点击时执行,此处直接接收单击事件
  290. uni.pageScrollTo({
  291. scrollTop: 0,
  292. duration: 300
  293. });
  294. },
  295. created() {
  296. //#ifdef APP-PLUS
  297. // this.getLngLat();
  298. //#endif
  299. },
  300. async onLoad() {
  301. that = this
  302. // #ifdef APP-PLUS
  303. let _status = await that.$request.baseRequest('get', '/cargoOwnerInfo/firstAuthentication', {
  304. phone: this.userInfo.phone,
  305. }).then(res => {
  306. return res.data.authenticationStatus
  307. })
  308. if (_status == '已禁用') {
  309. this.isShowAlert = true
  310. this.alertTitle = '账号审核中'
  311. this.confirmText = '退出APP'
  312. this.showCancelButton = false
  313. } else {
  314. console.log(1231233212332312312213)
  315. }
  316. // #endif
  317. },
  318. onShow() {
  319. this.upCallback({
  320. size: 10,
  321. num: 1
  322. })
  323. that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
  324. reCommonId: this.userInfo.id,
  325. }).then(res3 => {
  326. if (res3.data) {
  327. let name = 'myTip';
  328. let value = res3.data
  329. if (value == 0) {
  330. uni.removeTabBarBadge({
  331. index: 2
  332. })
  333. }
  334. that.$store.commit('$uStore', {
  335. name,
  336. value
  337. });
  338. if (value != 0 && value) {
  339. uni.setTabBarBadge({
  340. index: 2,
  341. text: value + ""
  342. })
  343. }
  344. }
  345. })
  346. },
  347. // onPageScroll(res) {
  348. // this.scrollTop = res.scrollTop
  349. // console.log("页面滚动了", res.scrollTop)
  350. // if (this.scrollTop > 1200) {
  351. // uni.setTabBarItem({
  352. // index: 1,
  353. // text: '返回顶部',
  354. // iconPath: 'static/images/common/top@2x.png',
  355. // selectedIconPath: 'static/images/common/top@2x.png'
  356. // })
  357. // } else {
  358. // uni.setTabBarItem({
  359. // index: 1,
  360. // text: '订单',
  361. // iconPath: 'static/images/common/dingdan@2x(1).png',
  362. // selectedIconPath: 'static/images/common/dingdan@2x.png'
  363. // })
  364. // }
  365. // },
  366. methods: {
  367. goTodriverDetail(val){
  368. uni.$u.route('/pages/order/driverDetail',{
  369. driver:JSON.stringify(val)
  370. });
  371. },
  372. addevaluation(val){
  373. uni.$u.route('/pages/order/addEvaluation',{val:JSON.stringify(val)});
  374. },
  375. evaluationRecord(){
  376. uni.$u.route('/pages/order/evaluationRecord');
  377. },
  378. toMap(val) {
  379. uni.$u.route('/pages/order/map', val);
  380. },
  381. closeMenu() {
  382. this.showMenu = false
  383. },
  384. accept(item, type) {
  385. this.objData = item
  386. this.type = type
  387. if (type == 1) {
  388. this.alertTitle = '确定接受订单?'
  389. this.confirmText = '确定'
  390. } else if (type == 2) {
  391. this.alertTitle = '确定拒绝订单?'
  392. this.confirmText = '确定'
  393. } else {
  394. this.alertTitle = '确定终止订单?'
  395. this.confirmText = '终止'
  396. }
  397. this.isShowAlert = true
  398. },
  399. // 完结
  400. closed(item) {
  401. let that = this
  402. this.$request.baseRequest('post', '/orderInfo/api/editEnd', {
  403. id: item.id,
  404. }).then(res => {
  405. if (res.code == 200) {
  406. this.$refs.uToast.show({
  407. type: 'success',
  408. message: "提交成功",
  409. complete() {
  410. that.upCallback({
  411. size: 10,
  412. num: 1
  413. })
  414. }
  415. })
  416. }
  417. })
  418. .catch(res => {
  419. uni.$u.toast(res.message);
  420. });
  421. },
  422. confirmLoading(item, type) {
  423. this.objData = item
  424. this.type = type
  425. if (type == 3) {
  426. this.alertTitle = '确认装车?'
  427. this.confirmText = '确定'
  428. } else if (type == 4) {
  429. this.alertTitle = '确认卸车?'
  430. this.confirmText = '确定'
  431. }
  432. this.isShowAlert = true
  433. // uni.$u.route('/pages/order/confirmLoading', item);
  434. },
  435. // confirmUnLoading(item) {
  436. // uni.$u.route('/pages/order/confirmUnloading', item);
  437. // },
  438. back() {
  439. uni.navigateBack(-1)
  440. },
  441. mescrollInit(mescroll) {
  442. this.mescroll = mescroll;
  443. },
  444. radioChange(n) {
  445. console.log('radioChange', n);
  446. },
  447. stop(item) {
  448. // // 货主接单
  449. // if (item.orderStatusKey == 1) {
  450. // this.isShowTerminationReason = false
  451. // } else {
  452. // this.isShowTerminationReason = true
  453. // }
  454. this.id = item.id
  455. this.isShowAlert = true
  456. },
  457. init() {
  458. },
  459. del() {
  460. this.isShowAlert = true
  461. },
  462. confirmClick() {
  463. // #ifdef APP-PLUS
  464. if (this.alertTitle == '账号审核中') {
  465. if (uni.getSystemInfoSync().platform == 'ios') {
  466. plus.ios.import("UIApplication").sharedApplication().performSelector("exit")
  467. } else if (uni.getSystemInfoSync().platform == 'android') {
  468. plus.runtime.quit();
  469. }
  470. return
  471. }
  472. // #endif
  473. that.isShowAlert = false
  474. if (this.type == 1 || this.type == 2) {
  475. let _title = ''
  476. this.$request.baseRequest('post', '/orderInfo/api/orderReceiving', {
  477. id: this.objData.id,
  478. flag: this.type
  479. }).then(res => {
  480. if (res.code == 200) {
  481. if (this.type == 1) {
  482. _title = '接单成功!'
  483. } else {
  484. _title = '拒绝订单成功!'
  485. }
  486. this.$refs.uToast.show({
  487. type: 'success',
  488. message: _title,
  489. complete() {
  490. that.mescroll.resetUpScroll()
  491. }
  492. })
  493. } else {
  494. if (this.type == 1) {
  495. _title = '接单失败'
  496. } else {
  497. _title = '拒绝订单失败'
  498. }
  499. this.$refs.uToast.show({
  500. type: 'success',
  501. message: _title,
  502. complete() {
  503. that.mescroll.resetUpScroll()
  504. }
  505. })
  506. }
  507. })
  508. .catch(res => {
  509. uni.$u.toast(res.message);
  510. });
  511. } else if (this.type == 3 || this.type == 4) {
  512. let _flag = ''
  513. if (this.type == 3) _flag = 1
  514. if (this.type == 4) _flag = 2
  515. this.$request.baseRequest('post', '/carrierInfo/cargoOwnerLoadingAdd', {
  516. id: this.objData.id,
  517. loadingFlag: _flag,
  518. flag: 1
  519. }).then(res => {
  520. if (res.code == 200) {
  521. this.$refs.uToast.show({
  522. type: 'success',
  523. message: "提交成功",
  524. complete() {
  525. that.upCallback({
  526. size: 10,
  527. num: 1
  528. })
  529. }
  530. })
  531. }
  532. })
  533. .catch(res => {
  534. uni.$u.toast(res.message);
  535. });
  536. } else {
  537. this.$request.baseRequest('post', '/orderInfo/api/end', {
  538. id: this.id,
  539. terminator: 2,
  540. }).then(res => {
  541. if (res.code == 200) {
  542. this.$refs.uToast.show({
  543. type: 'success',
  544. message: '终止订单成功',
  545. })
  546. } else {
  547. this.$refs.uToast.show({
  548. type: 'success',
  549. message: '终止订单失败',
  550. })
  551. }
  552. that.mescroll.resetUpScroll()
  553. })
  554. .catch(res => {
  555. uni.$u.toast(res.message);
  556. });
  557. }
  558. },
  559. cancelClick() {
  560. this.isShowAlert = false
  561. },
  562. getSearch(e) {
  563. // = uni.getStorageSync('useSearchList')
  564. // this.useSearchList.unshift(e)
  565. // uni.setStorageSync("useSearchList", this.useSearchList)
  566. console.log("点击搜索", e)
  567. this.upCallback({
  568. size: 10,
  569. num: 1
  570. })
  571. },
  572. cancel() {
  573. this.isSearch = false
  574. },
  575. toDetail(id) {
  576. uni.$u.route('/pages/order/orderDetails', {
  577. id: id,
  578. });
  579. },
  580. upCallback(page) {
  581. if (this.searchType == 0) this.searchType = ''
  582. this.$request.baseRequest('get', '/orderInfo/selectCargoOwnerOrder', {
  583. cargoCommonId: this.userInfo.id,
  584. searchKeyWord: this.searchKeyWord,
  585. searchType: this.searchType,
  586. pageSize: page.size,
  587. currentPage: page.num
  588. }).then(res => {
  589. this.isSearch = false
  590. if (page.num == 1) this.goods = [];
  591. this.goods = this.goods.concat(res.data.records); //追加新数据
  592. this.mescroll.endBySize(res.data.records.length, res.data.total);
  593. uni.hideLoading()
  594. })
  595. .catch(res => {
  596. uni.$u.toast(res.message);
  597. });
  598. },
  599. clickTab(val) {
  600. uni.showLoading({
  601. mask: true
  602. })
  603. console.log(val)
  604. this.searchType = val.index
  605. this.tabIndex = val.index
  606. this.upCallback({
  607. size: 10,
  608. num: 1
  609. })
  610. this.showMenu = false
  611. },
  612. search() {
  613. this.isSearch = true
  614. //获取缓存搜索数据
  615. this.useSearchList = uni.getStorageSync('useSearchList')
  616. if (!this.useSearchList) this.useSearchList = [];
  617. }
  618. }
  619. }
  620. </script>
  621. <style scoped lang="scss">
  622. .top-content {
  623. background: url(../../static/images/order/bg.png) no-repeat;
  624. background-size: cover;
  625. padding: 20rpx;
  626. padding-bottom: 320rpx;
  627. }
  628. // .banner {
  629. // width: 100%;
  630. // position: relative;
  631. // }
  632. // .fixed,
  633. // .fixed1 {
  634. // background: #2772FB;
  635. // position: fixed;
  636. // top: var(--status-bar-height);
  637. // z-index: 999;
  638. // width: 100%;
  639. // }
  640. // .fixed {
  641. // .title {
  642. // background: white;
  643. // position: relative;
  644. // font-size: 36rpx;
  645. // font-weight: 500;
  646. // color: rgba(0, 0, 0, 0.85);
  647. // .search {
  648. // position: absolute;
  649. // right: 20rpx;
  650. // }
  651. // }
  652. // }
  653. .fixed1 {
  654. top: 0;
  655. height: var(--status-bar-height);
  656. background: #317AFE;
  657. }
  658. // .banner-img {
  659. // width: 100%;
  660. // }
  661. // .head {
  662. // position: absolute;
  663. // width: calc(100% - 108rpx);
  664. // bottom: 0;
  665. // background: white;
  666. // margin: 0 20rpx;
  667. // border-radius: 20rpx;
  668. // .item1,
  669. // .item3 {
  670. // width: 40%;
  671. // .text {
  672. // text-overflow: ellipsis;
  673. // overflow: hidden;
  674. // white-space: nowrap;
  675. // }
  676. // }
  677. // .item1 .text {
  678. // text-align: left;
  679. // }
  680. // .item3 .text {
  681. // text-align: right;
  682. // }
  683. // }
  684. .change-btn {
  685. width: 86rpx;
  686. height: 86rpx;
  687. }
  688. .good-list {
  689. background-color: white;
  690. margin: 20rpx;
  691. padding: 20rpx 0rpx 0 0;
  692. border-radius: 20rpx;
  693. .row1 {
  694. .item1 {
  695. color: #333333;
  696. }
  697. .item2 {
  698. color: #FE6300;
  699. }
  700. }
  701. .row2 {
  702. margin: 30rpx 0;
  703. display: flex;
  704. justify-content: center;
  705. .left {
  706. float: left;
  707. width: 40%;
  708. display: flex;
  709. flex-direction: column;
  710. align-items: center;
  711. .top {
  712. display: flex;
  713. justify-content: flex-start;
  714. }
  715. .bottom {
  716. display: flex;
  717. justify-content: flex-start;
  718. font-size: 24rpx;
  719. color: #878787;
  720. margin-top: 10rpx;
  721. }
  722. }
  723. .right {
  724. float: right;
  725. display: flex;
  726. flex-direction: column;
  727. align-items: center;
  728. width: 40%;
  729. .top {
  730. display: flex;
  731. justify-content: flex-end;
  732. }
  733. .bottom {
  734. display: flex;
  735. justify-content: flex-end;
  736. font-size: 24rpx;
  737. color: #878787;
  738. margin-top: 10rpx;
  739. }
  740. }
  741. }
  742. .row3 {
  743. background: #F5F6FA;
  744. padding: 20rpx;
  745. border-radius: 10rpx;
  746. color: #333333;
  747. .hz {
  748. width: 74rpx;
  749. height: 74rpx;
  750. margin-right: 30rpx;
  751. }
  752. .hz-good {
  753. width: 44rpx;
  754. height: 44rpx;
  755. margin: 0 30rpx;
  756. }
  757. }
  758. .row4 {
  759. margin: 20rpx 0;
  760. .time {
  761. color: #999999;
  762. margin-right: 20rpx;
  763. }
  764. .car {
  765. font-size: 28rpx;
  766. color: #000000;
  767. }
  768. }
  769. .row5 {
  770. margin: 20rpx 0;
  771. font-size: 28rpx;
  772. .stop {
  773. border-radius: 33px;
  774. border: 1px solid #FE6300;
  775. padding: 13rpx 31rpx;
  776. margin-right: 20rpx;
  777. color: #FE6300;
  778. }
  779. .normal {
  780. border-radius: 33px;
  781. border: 1px solid #CDCDCD;
  782. padding: 6px 15px;
  783. margin-right: 10px;
  784. }
  785. }
  786. }
  787. .jt-icon {
  788. position: relative;
  789. top: 6rpx;
  790. width: 60rpx;
  791. margin: 0 20rpx;
  792. }
  793. .row {
  794. margin: 10rpx 0;
  795. align-items: center;
  796. }
  797. // .item-bottom {
  798. // background: #F0F5FF;
  799. // padding: 0 30rpx;
  800. // .name {
  801. // font-size: 26rpx;
  802. // font-weight: 700;
  803. // color: #000000;
  804. // margin-left: 30rpx;
  805. // }
  806. // .hp {
  807. // margin: 30rpx;
  808. // }
  809. // .number-color {
  810. // margin: 0 10rpx;
  811. // }
  812. // .qd {
  813. // background: linear-gradient(97deg, #4FABFD 0%, #2772FB 100%);
  814. // border-radius: 13px;
  815. // font-size: 29rpx;
  816. // font-weight: 400;
  817. // color: #FFFFFF;
  818. // padding: 10rpx 35rpx;
  819. // }
  820. // }
  821. .dw {
  822. align-items: center;
  823. }
  824. .mescroll {
  825. // margin-top: calc(var(--status-bar-height) + 140rpx);
  826. top: -320rpx;
  827. }
  828. .sline {
  829. height: 28rpx;
  830. width: 1px;
  831. background: black;
  832. margin: 0 20rpx;
  833. }
  834. .search-view {
  835. margin-top: var(--status-bar-height);
  836. background: white;
  837. padding: 0 20rpx;
  838. }
  839. .back-icon {
  840. margin-right: 20rpx;
  841. }
  842. .near-search-text {
  843. margin: 20rpx 0;
  844. }
  845. .item-style {
  846. background: #F5F6FA;
  847. padding: 11rpx 24rpx;
  848. margin-right: 20rpx;
  849. border-radius: 10px;
  850. font-size: 26rpx;
  851. color: #333333;
  852. }
  853. /deep/.u-modal__content {
  854. flex-direction: column;
  855. }
  856. .tab-content {
  857. position: relative;
  858. padding-right: 100rpx;
  859. }
  860. .right-btn {
  861. position: absolute;
  862. width: 88rpx;
  863. height: 88rpx;
  864. background: #317AFE;
  865. box-shadow: -14px 0px 8px -8px rgba(0, 53, 149, 0.21);
  866. display: flex;
  867. flex-direction: column;
  868. right: 0;
  869. top: 0;
  870. bottom: 0;
  871. margin: auto;
  872. color: white;
  873. align-items: center;
  874. justify-content: center;
  875. }
  876. .tabs {
  877. // background: red;
  878. margin-top: 20rpx;
  879. overflow-x: scroll;
  880. }
  881. /deep/.u-transition {
  882. border-radius: 0 0 50rpx 50rpx;
  883. }
  884. .transition {
  885. background: white;
  886. padding-bottom: 40rpx;
  887. .transition-item-style {
  888. display: inline-block;
  889. width: calc(25% - 40rpx);
  890. text-align: center;
  891. box-sizing: border-box;
  892. background: #F7F8FA;
  893. border-radius: 40px;
  894. margin: 20rpx 20rpx 0 20rpx;
  895. padding: 16rpx 0;
  896. }
  897. .menu-active {
  898. background: #2772FB;
  899. color: white;
  900. }
  901. }
  902. .modal-black {
  903. background: black;
  904. height: 100vh;
  905. width: 100vw;
  906. position: absolute;
  907. z-index: 999;
  908. opacity: 0.3;
  909. }
  910. .all-menu {
  911. position: absolute;
  912. z-index: 99;
  913. top: 260rpx;
  914. }
  915. .look-map {
  916. background: #2772FB;
  917. border:1px solid #2772FB;
  918. color: white;
  919. }
  920. .evaluatePage{
  921. background: white;
  922. margin: 20rpx;
  923. padding: 20rpx;
  924. border-radius: 20rpx;
  925. }
  926. </style>