send.vue 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929
  1. <template>
  2. <app-layout>
  3. <view class="title">
  4. 选择发货商品
  5. <text>
  6. 默认全选
  7. </text>
  8. </view>
  9. <view class="goods-list" v-if="detail.detail.length > 0">
  10. <view :key="item.id" class="dir-left-nowrap cross-center goods-item" v-for="item in detail.detail">
  11. <image class="active-icon" src="/static/image/icon/form-er.png" style="background-color: #E2E2E2" v-if="item.choose == 2 && order_refund_id == 0">
  12. </image>
  13. <image @click="chooseAddress(item)" class="active-icon" src="./../image/active.png" v-else-if="item.choose">
  14. </image>
  15. <image @click="chooseAddress(item)" class="active-icon" src="/static/image/icon/form-er.png" v-else="">
  16. </image>
  17. <view class="dir-left-nowrap goods">
  18. <image :src="item.goods_info.goods_attr.pic_url ? item.goods_info.goods_attr.pic_url : item.goods_info.goods_attr.cover_pic" class="goods-img">
  19. </image>
  20. <view class="goods-info">
  21. <view class="t-omit-two goods-name">
  22. {{item.goods_info.goods_attr.name}}
  23. </view>
  24. <view class="goods-attr t-omit">
  25. <text :key="index" v-for="(attr,index) in item.goods_info.attr_list">
  26. {{attr.attr_group_name}}:{{attr.attr_name}}
  27. </text>
  28. </view>
  29. <view class="main-between cross-bottom">
  30. <view class="goods-num">
  31. x{{item.num}}
  32. </view>
  33. <view>
  34. ¥{{item.total_price}}
  35. </view>
  36. </view>
  37. </view>
  38. </view>
  39. </view>
  40. </view>
  41. <view class="title">
  42. 填写物流信息
  43. </view>
  44. <view class="input-list">
  45. <template v-if="detail.send_type == 2">
  46. <view class="main-between input-item">
  47. <view class="label">
  48. 选择配送方式
  49. </view>
  50. <view class="type dir-left-nowrap city-type">
  51. <view :class="is_express == 2 ? 'active': ''" @click="toggleExpress(2)">
  52. 商家自己配送
  53. </view>
  54. <view :class="is_express == 1 ? 'active': ''" @click="toggleExpress(1)">
  55. 第三方配送
  56. </view>
  57. </view>
  58. </view>
  59. <!-- 商家配送列表 -->
  60. <view class="dir-left-nowrap input-item" v-if="is_express == 2">
  61. <view class="label">
  62. 配送员
  63. </view>
  64. <view @click="toPick" class="dir-right-nowrap cross-center" width="width:30%;">
  65. <image class="to-more" src="/static/image/icon/arrow-right.png">
  66. </image>
  67. <text>
  68. {{city.delivery}}
  69. </text>
  70. </view>
  71. </view>
  72. <!-- 第三方配送列表 -->
  73. <template v-else>
  74. <view class="dir-left-nowrap input-item">
  75. <view class="label">
  76. 选择配送
  77. </view>
  78. <view @click="toPick" class="dir-right-nowrap cross-center" width="width:30%;">
  79. <image class="to-more" src="/static/image/icon/arrow-right.png">
  80. </image>
  81. <text class="t-omit">
  82. {{city.cityService}}
  83. </text>
  84. </view>
  85. </view>
  86. <template v-if="city.isPreview">
  87. <view class="dir-left-nowrap input-item" style="padding: 12rpx 0;border-top: 0;height: 60rpx">
  88. <view class="preview-fee">
  89. {{city.name}}可接单
  90. </view>
  91. </view>
  92. <view class="dir-left-nowrap input-item" style="padding:0;border-top: 0;height: 60rpx;margin-bottom: 24rpx;">
  93. <view>
  94. 预订单费用
  95. </view>
  96. <view class="dir-right-nowrap cross-center">
  97. ¥{{city.fee}}
  98. </view>
  99. </view>
  100. </template>
  101. </template>
  102. </template>
  103. <!-- 快递发货信息 -->
  104. <template v-else-if="is_express > -2">
  105. <view class="main-between input-item">
  106. <view class="label">
  107. 选择发货方式
  108. </view>
  109. <view class="type dir-left-nowrap">
  110. <view :class="is_express == 1 ? 'active': ''" @click="toggleExpress(1)">
  111. 快递配送
  112. </view>
  113. <view :class="is_express == 0 ? 'active': ''" @click="toggleExpress(0)">
  114. 无需物流
  115. </view>
  116. </view>
  117. </view>
  118. <view class="dir-left-nowrap input-item" v-if="is_express == 1">
  119. <view class="label">
  120. 快递公司
  121. </view>
  122. <view @click="toPick(1)" class="dir-right-nowrap cross-center" width="width:30%;">
  123. <image class="to-more" src="/static/image/icon/arrow-right.png">
  124. </image>
  125. <text>
  126. {{express}}
  127. </text>
  128. </view>
  129. </view>
  130. <view class="dir-left-nowrap input-item" style="position:relative" v-if="is_express == 1">
  131. <view class="label">
  132. 快递单号
  133. </view>
  134. <input class="express-no" v-model="express_no" />
  135. <text @click="getExpressNo" class="get" v-if="id > 0">
  136. 获取面单
  137. </text>
  138. </view>
  139. <view class="dir-left-nowrap input-item" v-if="is_express == 1">
  140. <view class="label">
  141. 收件人邮编
  142. </view>
  143. <input type="number" v-model="code" />
  144. </view>
  145. <view class="dir-left-nowrap input-item" v-if="is_express == 1">
  146. <view class="label">
  147. 商家留言
  148. </view>
  149. <input v-model="words" />
  150. </view>
  151. <view class="dir-left-nowrap input-item" v-if="is_express == 0">
  152. <view class="label">
  153. 物流内容
  154. </view>
  155. <input placeholder="请输入物流内容" v-model="express_content" />
  156. </view>
  157. </template>
  158. </view>
  159. <!-- 同城配送发货 -->
  160. <template v-if="detail.send_type == 2">
  161. <!-- 第三方配送发货 -->
  162. <button v-if="is_express == 1" @click="citySend()" class="address-bottom">
  163. {{city.isPreview == 0 ? '下单' : '确认发货'}}
  164. </button>
  165. <!-- 商家配送发货 -->
  166. <button v-else @click="citySend()" class="address-bottom">
  167. 确认发货
  168. </button>
  169. </template>
  170. <!-- 快递发货 -->
  171. <template v-else>
  172. <button @click="saveAddress" class="address-bottom">
  173. 确认发货
  174. </button>
  175. </template>
  176. <!-- 统一选择列表 -->
  177. <view class="dialog" v-if="dialog">
  178. <view :class="['picker-list', `${iphone_x? 'iphone_x':''}`]">
  179. <view class="main-between picker-header">
  180. <view @click="closeDialog(2)">
  181. 取消
  182. </view>
  183. <view @click="closeDialog(1)">
  184. 确定
  185. </view>
  186. </view>
  187. <picker-view :value="[index]" @change="bindChange" class="pick" indicator-style="height: 36px;">
  188. <picker-view-column>
  189. <view :key="item.name" v-for="(item,idx) in list"
  190. :class="[`picker-view t-omit`,{
  191. 'sure-color': newIndex === idx,
  192. 'cardinal-color': newIndex === idx + 1 || newIndex === idx - 1,
  193. 'even-color': newIndex === idx + 2 || newIndex === idx - 2
  194. }]">
  195. {{item.name}}
  196. </view>
  197. </picker-view-column>
  198. </picker-view>
  199. </view>
  200. </view>
  201. </app-layout>
  202. </template>
  203. <script>
  204. import { mapState } from "vuex";
  205. export default {
  206. data() {
  207. return {
  208. express_no: '',
  209. express: '',
  210. customer_name: '',
  211. express_content: '',
  212. code: '',
  213. words: '',
  214. list: [],
  215. detail: {},
  216. dialog: false,
  217. iphone_x: false,
  218. id: '',
  219. index: 0,
  220. newIndex: 0,
  221. value: 0,
  222. is_express: -2,
  223. is_send: 0,
  224. order_refund_id: 0,
  225. express_single: {},
  226. city: {
  227. cityList: [],
  228. deliveryId: null,
  229. delivery: '',
  230. cityServiceList: [],
  231. cityServiceId: null,
  232. cityService: '',
  233. isPreview: 0,
  234. fee: 0,
  235. name: '',
  236. delivery_no: '',
  237. }
  238. }
  239. },
  240. computed: {
  241. ...mapState({
  242. userInfo: state => state.user.info,
  243. adminImg: state => state.mallConfig.__wxapp_img.app_admin,
  244. })
  245. },
  246. methods: {
  247. chooseAddress(item) {
  248. item.choose = !item.choose;
  249. this.$forceUpdate();
  250. },
  251. toggleExpress(item) {
  252. this.is_express = item;
  253. if (this.detail.send_type == 2) {
  254. this.list = item == 2 ? this.city.cityList : this.city.cityServiceList;
  255. for(let index in this.list) {
  256. if(this.is_express == 2) {
  257. if(this.list[index].id == this.city.deliveryId) {
  258. this.index = +index;
  259. this.newIndex = +index;
  260. }
  261. }else {
  262. if(this.list[index].id == this.city.cityServiceId) {
  263. this.index = +index;
  264. this.newIndex = +index;
  265. }
  266. }
  267. }
  268. }
  269. },
  270. bindChange(e) {
  271. this.newIndex = e.detail.value[0];
  272. },
  273. toPick(num) {
  274. let that = this;
  275. if(num == 1) {
  276. that.customer_name = '';
  277. that.newIndex = that.index;
  278. }else {
  279. that.newIndex = that.index;
  280. }
  281. setTimeout(()=>{
  282. that.dialog = !that.dialog;
  283. })
  284. },
  285. closeDialog(num) {
  286. if(num == 1) {
  287. this.index = this.newIndex;
  288. // 即时配送
  289. if (this.detail.send_type == 2) {
  290. if (this.is_express == 2) {
  291. this.city.delivery = "(" + this.list[this.index].id + ")" + this.list[this.index].name
  292. this.city.deliveryId = this.list[this.index].id
  293. } else {
  294. this.city.cityService = "(" + this.list[this.index].id + ")" + this.list[this.index].name;
  295. this.city.cityServiceId = this.list[this.index].id
  296. this.city.isPreview = 0;
  297. }
  298. }else {
  299. this.express = this.list[this.newIndex].name
  300. }
  301. }else {
  302. this.newIndex = this.index;
  303. }
  304. this.dialog = !this.dialog;
  305. },
  306. getExpressNo() {
  307. let that = this;
  308. uni.showLoading({
  309. title: '加载中...'
  310. });
  311. that.$request({
  312. url: that.$api.app_admin.print,
  313. data: {
  314. express: that.express,
  315. code: that.code,
  316. order_id: that.id
  317. },
  318. }).then(response => {
  319. uni.hideLoading();
  320. if (response.code == 0) {
  321. that.express_no = response.data.Order.LogisticCode;
  322. that.express_single = response.data.express_single
  323. } else {
  324. uni.showToast({
  325. title: response.msg,
  326. icon: 'none',
  327. duration: 1000
  328. });
  329. }
  330. }).catch(response => {
  331. uni.hideLoading();
  332. });
  333. },
  334. getExpress() {
  335. let that = this;
  336. uni.showLoading({
  337. title: '加载中...'
  338. });
  339. that.$request({
  340. url: that.$api.app_admin.express
  341. }).then(response => {
  342. uni.hideLoading();
  343. if (response.code == 0) {
  344. that.list = response.data.list;
  345. that.getList();
  346. } else {
  347. uni.showToast({
  348. title: response.msg,
  349. icon: 'none',
  350. duration: 1000
  351. });
  352. }
  353. }).catch(response => {
  354. uni.hideLoading();
  355. });
  356. },
  357. getList() {
  358. let that = this;
  359. uni.showLoading({
  360. title: '加载中...'
  361. });
  362. that.$request({
  363. url: that.$api.app_admin.detail,
  364. data: {
  365. order_id: that.id
  366. },
  367. method: 'post'
  368. }).then(response => {
  369. uni.hideLoading();
  370. if (response.code == 0) {
  371. that.detail = response.data.order;
  372. if(this.detail.send_type == 2) {
  373. that.getDelivery();
  374. that.is_express = 2;
  375. }else {
  376. that.is_express = 1;
  377. }
  378. for (let i in that.detail.detail) {
  379. that.detail.detail[i].choose = true;
  380. }
  381. if (that.detail.detailExpress.length > 0) {
  382. that.detail.detail.forEach(row => {
  383. for (let i in that.detail.detailExpress) {
  384. for (let x in that.detail.detailExpress[i].expressRelation) {
  385. if (that.detail.detailExpress[i].expressRelation[x].order_detail_id == row.id) {
  386. row.choose = 2;
  387. }
  388. }
  389. }
  390. })
  391. }
  392. if (that.is_send > 0) {
  393. that.express = response.data.order.express;
  394. that.express_no = response.data.order.express_no;
  395. that.customer_name = response.data.order.customer_name;
  396. that.code = '';
  397. that.words = response.data.order.merchant_remark;
  398. if (response.data.order.code > 0) {
  399. that.code = response.data.order.code
  400. }
  401. } else {
  402. that.express = that.list[0].name
  403. }
  404. } else {
  405. uni.showToast({
  406. title: response.msg,
  407. icon: 'none',
  408. duration: 1000
  409. });
  410. }
  411. }).catch(response => {
  412. uni.hideLoading();
  413. });
  414. },
  415. saveAddress: function(e) {
  416. let that = this;
  417. if (that.is_express == 1 && !that.express_no) {
  418. uni.showToast({
  419. title: '快递单号不得为空',
  420. icon: 'none',
  421. duration: 1000,
  422. });
  423. return;
  424. }
  425. let id_list = that.getIdList();
  426. if (id_list.length == 0 && that.order_refund_id == 0) {
  427. uni.showToast({
  428. title: '请选择发货商品',
  429. icon: 'none',
  430. duration: 1000,
  431. });
  432. return;
  433. }
  434. uni.showLoading({
  435. title: '提交中...'
  436. });
  437. let para = {
  438. is_express: 1,
  439. order_id: that.id,
  440. express_no: that.express_no,
  441. express: that.express,
  442. code: that.code,
  443. customer_name: that.customer_name,
  444. merchant_remark: that.words,
  445. express_content: '',
  446. order_detail_id: JSON.stringify(id_list),
  447. express_single_id: that.express_single.id ? that.express_single.id : 0,
  448. }
  449. if (that.is_express == 0) {
  450. para = {
  451. is_express: 2,
  452. order_id: that.id,
  453. express_content: that.express_content,
  454. order_detail_id: JSON.stringify(id_list)
  455. }
  456. }
  457. if (that.order_refund_id > 0) {
  458. that.$request({
  459. url: that.$api.app_admin.refund_handle,
  460. method: "POST",
  461. data: {
  462. is_express: 1,
  463. type: 2,
  464. is_agree: 1,
  465. order_refund_id: that.order_refund_id,
  466. express_no: that.express_no,
  467. express: that.express,
  468. merchant_remark: that.words,
  469. }
  470. }).then(response => {
  471. uni.hideLoading();
  472. if (response.code == 0) {
  473. let msg = response.msg;
  474. uni.showToast({
  475. title: msg,
  476. duration: 1000,
  477. icon: 'success',
  478. mask: false
  479. });
  480. setTimeout(function() {
  481. uni.navigateBack();
  482. }, 500)
  483. } else {
  484. uni.showToast({
  485. title: response.msg,
  486. icon: 'none',
  487. duration: 1000
  488. });
  489. }
  490. }).catch(response => {
  491. uni.hideLoading();
  492. uni.showToast({
  493. title: response,
  494. icon: 'none',
  495. duration: 1000
  496. });
  497. });
  498. } else {
  499. that.$request({
  500. url: that.$api.app_admin.send,
  501. method: "POST",
  502. data: para
  503. }).then(response => {
  504. uni.hideLoading();
  505. if (response.code == 0) {
  506. let msg = response.msg;
  507. if (that.is_send == 2) {
  508. msg = '修改成功'
  509. }
  510. uni.showToast({
  511. title: msg,
  512. duration: 1000,
  513. icon: 'success',
  514. mask: false
  515. });
  516. setTimeout(function() {
  517. uni.navigateBack();
  518. }, 500)
  519. } else {
  520. uni.showToast({
  521. title: response.msg,
  522. icon: 'none',
  523. duration: 1000
  524. });
  525. }
  526. }).catch(response => {
  527. uni.hideLoading();
  528. uni.showToast({
  529. title: response,
  530. icon: 'none',
  531. duration: 1000
  532. });
  533. });
  534. }
  535. },
  536. getIdList() {
  537. let that = this;
  538. let id_list = [];
  539. for (let i in that.detail.detail) {
  540. if (that.detail.detail[i].choose && that.detail.detail[i].choose != 2) {
  541. id_list.push(that.detail.detail[i].id)
  542. }
  543. }
  544. return id_list;
  545. },
  546. getDelivery() {
  547. let that = this;
  548. that.$request({
  549. url: that.$api.app_admin.delivery
  550. }).then(response => {
  551. if (response.code === 0) {
  552. this.city.cityList = response.data.list;
  553. this.city.deliveryId = response.data.list[0].id;
  554. this.city.delivery = "(" + response.data.list[0].id + ")" + response.data.list[0].name;
  555. let city_service_list = response.data.city_service_list;
  556. let new_city_service_list = [];
  557. city_service_list.forEach(function(item, index) {
  558. if (item.service_type == '第三方') {
  559. new_city_service_list.push(item)
  560. } else if (that.detail.platform == 'wxapp' && item.service_type == '微信') {
  561. new_city_service_list.push(item)
  562. }
  563. })
  564. this.city.cityServiceList = new_city_service_list;
  565. this.city.cityServiceId = new_city_service_list[0].id;
  566. this.city.cityService = "(" + new_city_service_list[0].id + ")" + new_city_service_list[0].name;
  567. // 同城配送配送员列表数据
  568. if (this.detail.send_type == 2) {
  569. this.list = this.city.cityList;
  570. this.is_express = 2;
  571. }
  572. } else {
  573. uni.showToast({
  574. title: response.msg,
  575. icon: 'none',
  576. duration: 1000
  577. });
  578. }
  579. }).catch(response => {
  580. uni.hideLoading();
  581. });
  582. },
  583. citySend() {
  584. let that = this;
  585. let para;
  586. if (that.detail.send_type == 2) {
  587. uni.showLoading({
  588. title: '加载中...'
  589. });
  590. let id_list = that.getIdList();
  591. if (id_list.length == 0 && that.order_refund_id == 0) {
  592. uni.showToast({
  593. title: '请选择发货商品',
  594. icon: 'none',
  595. duration: 1000,
  596. });
  597. return;
  598. }
  599. para = {
  600. is_express: that.is_express,
  601. words: '',
  602. order_id: that.detail.id,
  603. order_detail_id: JSON.stringify(id_list),
  604. city_service: that.city.cityService,
  605. is_preview: that.city.isPreview ? 0 : 1,
  606. delivery_no: that.city.delivery_no
  607. };
  608. if (that.detail.send_type == 2) {
  609. para.man = that.city.delivery;
  610. }
  611. that.$request({
  612. url: that.$api.app_admin.send,
  613. data: para,
  614. method: 'post'
  615. }).then(response => {
  616. uni.hideLoading();
  617. if (response.code === 0) {
  618. let resultData = response.data;
  619. if (resultData && resultData.preview_success == 1) {
  620. that.city.fee = resultData.fee;
  621. that.city.isPreview = 1;
  622. that.city.name = resultData.name;
  623. that.city.isPreview = 1;
  624. that.city.delivery_no = resultData.delivery_no;
  625. } else {
  626. setTimeout(function() {
  627. uni.navigateBack();
  628. }, 500);
  629. }
  630. uni.showToast({
  631. title: response.msg,
  632. type: 'success',
  633. mask: false,
  634. duration: 2000
  635. });
  636. } else {
  637. uni.showToast({
  638. title: response.msg,
  639. icon: 'none',
  640. duration: 1000
  641. });
  642. }
  643. }).catch(response => {
  644. uni.hideLoading();
  645. uni.showToast({
  646. title: response,
  647. icon: 'none',
  648. duration: 1000
  649. });
  650. });
  651. }
  652. }
  653. },
  654. onLoad(options) {
  655. let that = this;
  656. uni.getSystemInfo({
  657. success: function(res) {
  658. if (res.model.indexOf('iPhone X') > -1 || res.model.indexOf('iPhone 11') > -1 || res.model.indexOf('iPhone11') > -1 || res.model.indexOf('iPhone12') > -1 || res.model.indexOf('Unknown Device') > -1) {
  659. that.iphone_x = true;
  660. }
  661. }
  662. })
  663. if (options.id > 0) {
  664. that.id = options.id
  665. }
  666. if (options.order_refund_id > 0) {
  667. that.order_refund_id = options.order_refund_id
  668. }
  669. if(options.send_type == 0) {
  670. that.getExpress();
  671. }else {
  672. uni.showLoading({
  673. title: '加载中...'
  674. });
  675. that.getList();
  676. }
  677. if (options.is_send > 0) {
  678. that.is_send = options.is_send
  679. }
  680. }
  681. }
  682. </script>
  683. <style lang="scss" scoped="">
  684. .title {
  685. padding: #{28rpx} #{24rpx} #{24rpx};
  686. font-size: #{28rpx};
  687. color: #353535;
  688. text {
  689. margin-left: #{16rpx};
  690. color: #999999;
  691. }
  692. }
  693. .goods-list {
  694. background-color: #fff;
  695. margin: 0 #{24rpx} #{28rpx};
  696. padding: #{32rpx} #{24rpx};
  697. border-radius: #{16rpx};
  698. .goods-item {
  699. margin-top: #{24rpx};
  700. }
  701. .goods-item:first-of-type {
  702. margin-top: 0;
  703. }
  704. .active-icon {
  705. height: #{36rpx};
  706. width: #{36rpx};
  707. border-radius: #{18rpx};
  708. margin-right: #{24rpx};
  709. }
  710. .goods {
  711. width: #{600rpx};
  712. }
  713. .goods-img {
  714. flex-shrink: 0;
  715. width: #{160rpx};
  716. height: #{160rpx};
  717. margin-right: #{20rpx};
  718. }
  719. .goods-info {
  720. font-size: #{24rpx};
  721. width: #{414rpx};
  722. color: #353535;
  723. .goods-name {
  724. height: #{64rpx};
  725. margin-top: #{5rpx};
  726. width: #{414rpx};
  727. }
  728. .goods-attr {
  729. color: #999999;
  730. width: 95%;
  731. margin-top: #{18rpx};
  732. margin-bottom: #{12rpx};
  733. text {
  734. margin-right: #{5rpx};
  735. }
  736. }
  737. .goods-num {
  738. color: #999999;
  739. }
  740. }
  741. }
  742. .pick {
  743. width: 100%;
  744. height: #{440rpx}
  745. }
  746. .pick-view {
  747. line-height: #{72rpx};
  748. text-align: center;
  749. color: #446dfd;
  750. font-size: #{32rpx};
  751. }
  752. .express-no {
  753. padding-right: #{180rpx};
  754. }
  755. .address-bottom {
  756. width: #{702rpx};
  757. height: #{80rpx};
  758. line-height: #{80rpx};
  759. border-radius: #{40rpx};
  760. padding: 0;
  761. text-align: center;
  762. margin: #{40rpx} auto;
  763. color: #fff;
  764. z-index: 7;
  765. font-size: #{28rpx};
  766. background-color: #446dfd;
  767. }
  768. .to-more {
  769. height: #{24rpx};
  770. width: #{12rpx};
  771. margin-left: #{10rpx};
  772. }
  773. .input-list {
  774. background-color: #fff;
  775. margin: 0 #{24rpx};
  776. border-radius: #{16rpx};
  777. padding: 0 #{24rpx};
  778. .input-item {
  779. border-top: #{1rpx} solid #eee;
  780. padding: #{24rpx} 0;
  781. height: #{96rpx};
  782. font-size: #{28rpx};
  783. color: #495060;
  784. view {
  785. width: #{550rpx};
  786. height: #{48rpx};
  787. line-height: #{48rpx};
  788. font-size: #{28rpx};
  789. }
  790. .type {
  791. width: #{328rpx};
  792. view {
  793. padding: 0 #{20rpx};
  794. height: #{48rpx};
  795. line-height: #{48rpx};
  796. margin-left: #{16rpx};
  797. background-color: #fff;
  798. border-radius: #{26rpx};
  799. border: #{2rpx} solid #e2e2e2;
  800. color: #666666;
  801. display: inline-block;
  802. width: auto;
  803. font-size: #{26rpx};
  804. }
  805. .active {
  806. background-color: #446dfd;
  807. border: 0;
  808. color: #fff;
  809. }
  810. }
  811. .city-type {
  812. width: #{410rpx};
  813. }
  814. .label {
  815. width: #{200rpx};
  816. height: #{48rpx};
  817. line-height: #{48rpx};
  818. }
  819. input {
  820. width: #{550rpx};
  821. height: #{48rpx};
  822. line-height: #{48rpx};
  823. font-size: #{28rpx};
  824. }
  825. .preview-fee {
  826. color: #63be72;
  827. }
  828. }
  829. .input-item:first-of-type {
  830. border-top: 0;
  831. }
  832. }
  833. .dialog {
  834. position: fixed;
  835. height: 100%;
  836. width: 100%;
  837. bottom: 0;
  838. left: 0;
  839. z-index: 10;
  840. background-color: rgba(0, 0, 0, .3);
  841. }
  842. .picker-list {
  843. background-color: #fff;
  844. padding-top: #{20rpx};
  845. position: fixed;
  846. bottom: 0;
  847. left: 0;
  848. width: 100%;
  849. .picker-view {
  850. line-height: #{72rpx};
  851. font-size: #{32rpx};
  852. text-align: center;
  853. }
  854. .picker-view.sure-color {
  855. color: #446dfd;
  856. }
  857. .picker-view.cardinal-color {
  858. color: #999999;
  859. }
  860. .picker-view.even-color {
  861. color: #cdcdcd;
  862. }
  863. &.iphone_x {
  864. bottom: #{96rpx};
  865. }
  866. }
  867. .picker-header {
  868. padding: 0 #{24rpx};
  869. color: #446dfd;
  870. font-size: #{32rpx};
  871. }
  872. .get {
  873. width: #{160rpx};
  874. height: #{48rpx};
  875. line-height: #{48rpx};
  876. text-align: center;
  877. border: #{1rpx} solid #446dfd;
  878. border-radius: #{24rpx};
  879. position: absolute;
  880. top: #{20rpx};
  881. right: 0;
  882. display: block;
  883. color: #446dfd;
  884. }
  885. </style>