index.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892
  1. <template>
  2. <view class="deliver-goods">
  3. <header>
  4. <view class="order-num acea-row row-between-wrapper">
  5. <view class="num line1">订单号:{{ order_id }}</view>
  6. <view class="name line1">
  7. <span class="iconfont icon-yonghu2"></span>{{ delivery.nickname }}
  8. </view>
  9. </view>
  10. <view class="address">
  11. <view class="name">
  12. {{ delivery.real_name
  13. }}<span class="phone">{{ delivery.user_phone }}</span>
  14. </view>
  15. <view>{{ delivery.user_address }}</view>
  16. </view>
  17. <view class="line">
  18. <image src="@/static/images/line.jpg" />
  19. </view>
  20. </header>
  21. <view class="wrapper">
  22. <view class="item acea-row row-between-wrapper">
  23. <view>发货方式</view>
  24. <view class="mode acea-row row-middle row-right">
  25. <template v-for="(item, index) in types">
  26. <view v-show="item.status" class="goods" :class="(active === index || productType==3) ? 'on' : ''"
  27. :key="index" @click="changeType(item, index)">
  28. {{ item.title }}<span class="iconfont icon-xuanzhong2"></span>
  29. </view>
  30. </template>
  31. </view>
  32. </view>
  33. <block v-if="logistics.length>0">
  34. <view class="list" v-show="active === 0">
  35. <view class="item acea-row row-between-wrapper" v-if="delivery.config_export_open == 1">
  36. <view>发货类型</view>
  37. <view class="mode acea-row row-middle row-right">
  38. <view class="goods" :class="curExpress === item.key ? 'on' : ''"
  39. v-for="(item, index) in expressType" :key="index" @click="changeExpTpe(item, index)">
  40. {{ item.title }}<span class="iconfont icon-xuanzhong2"></span>
  41. </view>
  42. </view>
  43. </view>
  44. <block v-if="curExpress == 1">
  45. <view class="item acea-row row-between-wrapper">
  46. <view>快递公司</view>
  47. <view class="select-box">
  48. <picker class="pickerBox" @change="bindPickerChange" :value="seIndex" :range="logistics"
  49. range-key="name">
  50. <!-- <view></view> -->
  51. <view class="uni-input"><span class="marr">{{logistics[seIndex].name}}</span> <span class="iconfont icon-xiangyou size"></span></view>
  52. </picker>
  53. </view>
  54. </view>
  55. <view class="item acea-row row-between-wrapper">
  56. <view>快递单号</view>
  57. <input type="text" placeholder="填写快递单号" v-model="delivery_id" class="mode size" />
  58. <!-- #ifdef MP -->
  59. <text class="iconfont icon-xiangji" @click="scanCode"></text>
  60. <!-- #endif -->
  61. <!-- #ifdef H5 -->
  62. <text v-if="isWeixin" class="iconfont icon-xiangji" @click="scanCode"></text>
  63. <!-- #endif -->
  64. </view>
  65. <view class="item">
  66. <p class="trip" v-if="curExpress == 1">顺丰请输入单号 :收件人或寄件人手机号后四位</p>
  67. <p class="trip" v-if="curExpress == 1">例如:0080890707090</p>
  68. </view>
  69. </block>
  70. <block v-if="curExpress == 2">
  71. <view class="item acea-row row-between-wrapper">
  72. <view>快递公司</view>
  73. <view class="select-box">
  74. <picker class="pickerBox" @change="bindPickerChange" :value="seIndex" :range="logistics"
  75. range-key="name">
  76. <!-- <view></view> -->
  77. <view class="uni-input">{{logistics[seIndex].name}}</view>
  78. </picker>
  79. </view>
  80. </view>
  81. <view class="item acea-row row-between-wrapper" v-if="expTemp.length>0">
  82. <view>电子面单</view>
  83. <div class="picker-add">
  84. <picker class="pickerBox" @change="bindTempChange" :value="expIndex" :range="expTemp"
  85. range-key="title">
  86. <view class="uni-input">{{expTemp[expIndex].title}}</view>
  87. </picker>
  88. <div class="look" @click="previewImage">预览</div>
  89. </div>
  90. </view>
  91. <view class="item acea-row row-between-wrapper">
  92. <view>寄件人姓名:</view>
  93. <input type="text" placeholder="填写寄件人姓名" v-model="to_name" class="mode" />
  94. </view>
  95. <view class="item acea-row row-between-wrapper">
  96. <view>寄件人电话:</view>
  97. <input type="text" placeholder="填写寄件人电话" v-model="to_tel" class="mode" />
  98. </view>
  99. <view class="item acea-row row-between-wrapper">
  100. <view>寄件人地址:</view>
  101. <input type="text" placeholder="填写寄件人地址" v-model="to_addr" class="mode" />
  102. </view>
  103. </block>
  104. </view>
  105. </block>
  106. <view class="list" v-show="active === 1">
  107. <view class="item acea-row row-between-wrapper">
  108. <view>配送类型</view>
  109. <view class="mode acea-row row-middle row-right">
  110. <template v-for="item in deliveryTypeList">
  111. <view v-if="item.status" :key="item.key" :class="{ on: item.key === deliveryType }" class="goods" @click="deliveryTypeChange(item)">
  112. {{ item.title }}
  113. <text class="iconfont icon-xuanzhong2"></text>
  114. </view>
  115. </template>
  116. </view>
  117. </view>
  118. <view v-show="deliveryType === 2" class="item acea-row row-between-wrapper">
  119. <view>配送平台</view>
  120. <view class="mode acea-row row-middle row-right">
  121. <template v-for="item in deliveryPlatformList">
  122. <view v-if="item.status" :key="item.key" :class="{ on: item.key === station_type }" class="goods" @click="deliveryPlatformChange(item)">
  123. {{ item.title }}
  124. <text class="iconfont icon-xuanzhong2"></text>
  125. </view>
  126. </template>
  127. </view>
  128. </view>
  129. <view v-show="deliveryType === 2" class="item acea-row row-between-wrapper">
  130. <view>包裹重量</view>
  131. <input v-model="cargo_weight" type="digit" placeholder="填写包裹重量" class="mode size" />kg
  132. </view>
  133. <view v-show="deliveryType === 2" class="item acea-row textarea-wrapper">
  134. <view>配送备注</view>
  135. <textarea v-model="remark" class="mode textarea" placeholder="请在此处填写配送备注" :maxlength="500" auto-height />
  136. </view>
  137. <view v-show="deliveryType === 1" class="item acea-row row-between-wrapper">
  138. <view>送货人</view>
  139. <view class="select-box" v-if="postPeople.length>0">
  140. <picker class="pickerBox" @change="bindPostChange" :value="postIndex" :range="postPeople"
  141. range-key="wx_name">
  142. <!-- <view></view> -->
  143. <view class="uni-input">{{postPeople[postIndex].wx_name}}</view>
  144. </picker>
  145. </view>
  146. </view>
  147. </view>
  148. <view v-show="active === 2 || (active === 1 && deliveryType === 2)" class="item acea-row textarea-wrapper">
  149. <view>订单备注</view>
  150. <textarea v-model="fictitious_content" class="mode textarea" @blur="bindTextAreaBlur"
  151. placeholder="请在此处填写订单备注" :maxlength="500" auto-height />
  152. </view>
  153. <view class="item acea-row row-between-wrapper" v-if="totalNum>1&&active !== 2">
  154. <view>分单发货</view>
  155. <view class="mode acea-row row-middle row-right">
  156. <view class="goods" :class="curGoods === item.key ? 'on' : ''"
  157. v-for="(item, index) in orderGoods" :key="item.key" @click="changeGoods(item)">
  158. {{ item.title }}<span class="iconfont icon-xuanzhong2"></span>
  159. </view>
  160. </view>
  161. </view>
  162. <splitOrder :splitGoods="splitGoods" @getList="getList" v-if="curGoods"></splitOrder>
  163. </view>
  164. <view class="height-add"></view>
  165. <view class="button">
  166. <view class="box" @click="saveInfo">
  167. 确认提交
  168. </view>
  169. </view>
  170. </view>
  171. </template>
  172. <script>
  173. import {
  174. getOrderDeliveryinfoApi,
  175. getOrderExportApi,
  176. getOrderExportTemp,
  177. setOrderDelivery,
  178. getOrderDelivery,
  179. storeSplitInfo,
  180. storeSplitDelivery
  181. } from "@/api/admin";
  182. import {
  183. checkPhone
  184. } from '@/utils/validate.js'
  185. import splitOrder from '@/components/splitOrder';
  186. export default {
  187. name: "GoodsDeliver",
  188. components: {
  189. splitOrder
  190. },
  191. props: {},
  192. data: function() {
  193. return {
  194. types: [{
  195. type: "express",
  196. title: "发货",
  197. key: 1,
  198. status: true
  199. },
  200. {
  201. type: "send",
  202. title: "送货",
  203. key: 2,
  204. status: true
  205. },
  206. {
  207. type: "fictitious",
  208. title: "无需物流",
  209. key: 3,
  210. status: true
  211. }
  212. ],
  213. expressType: [{
  214. title: '手动填写',
  215. key: 1
  216. },
  217. {
  218. title: '电子面单打印',
  219. key: 2
  220. },
  221. ],
  222. orderGoods: [
  223. {
  224. title:'开启',
  225. key: 1
  226. },
  227. {
  228. title:'关闭',
  229. key: 0
  230. }
  231. ],
  232. curExpress: 1,
  233. active: 0,
  234. order_id: "",
  235. delivery: [],
  236. logistics: [],
  237. delivery_type: "1",
  238. delivery_name: "",
  239. delivery_id: "",
  240. seIndex: 0,
  241. expIndex: 0,
  242. expTemp: [], // 快递模板
  243. to_name: '', // 发货人名称
  244. to_tel: '', // 发货人电话
  245. to_addr: "", // 发货人地址
  246. postPeople: [], //配送人
  247. postIndex: 0,
  248. fictitious_content: '',
  249. listId:0,
  250. curGoods:0,
  251. splitGoods:[],
  252. cartIds:[],
  253. totalNum:0,
  254. productType:0,
  255. // #ifdef H5
  256. isWeixin: this.$wechat.isWeixin(),
  257. // #endif
  258. deliveryTypeList: [
  259. {
  260. title: '商家配送',
  261. key: 1,
  262. status: false
  263. },
  264. {
  265. title: '第三方配送',
  266. key: 2,
  267. status: false
  268. }
  269. ],
  270. deliveryPlatformList: [
  271. {
  272. title: '达达',
  273. key: 1,
  274. status: false
  275. },
  276. {
  277. title: 'UU跑腿',
  278. key: 2,
  279. status: false
  280. }
  281. ],
  282. deliveryType: 0,
  283. station_type: 0,
  284. cargo_weight: 0,
  285. remark: '',
  286. };
  287. },
  288. watch: {
  289. "$route.params.oid": function(newVal) {
  290. let that = this;
  291. if (newVal != undefined) {
  292. that.order_id = newVal;
  293. that.getIndex();
  294. }
  295. },
  296. active() {
  297. this.curGoods = 0;
  298. }
  299. },
  300. onLoad: function(option) {
  301. this.order_id = option.id;
  302. this.listId = option.listId;
  303. this.totalNum = option.totalNum;
  304. this.comeType = option.comeType;
  305. this.productType = option.productType
  306. if(this.productType==3){
  307. this.types.splice(0,2);
  308. this.delivery_type = 3;
  309. this.active = 2;
  310. }
  311. if(option.orderStatus == 8 || option.orderStatus == 4 || option.orderStatus == 9){
  312. this.curGoods = 1;
  313. this.orderGoods.pop();
  314. this.splitList();
  315. }
  316. this.getIndex();
  317. this.getLogistics();
  318. this.geTorderOrderDelivery()
  319. },
  320. methods: {
  321. getList(val){
  322. let that = this;
  323. that.splitGoods = val;
  324. let cartIds = [];
  325. val.forEach((item)=>{
  326. if(item.checked){
  327. let i = {
  328. cart_id:item.cart_id,
  329. cart_num:item.surplus_num
  330. }
  331. cartIds.push(i)
  332. }
  333. })
  334. this.cartIds = cartIds;
  335. },
  336. splitList(){
  337. storeSplitInfo(this.listId).then(res=>{
  338. let list = res.data;
  339. list.forEach((item)=>{
  340. item.checked = false
  341. item.numShow = item.surplus_num
  342. })
  343. this.splitGoods = list;
  344. }).catch(err=>{
  345. return this.$util.Tips({
  346. title: err
  347. });
  348. })
  349. },
  350. // 点击获取拆单列表
  351. changeGoods(item){
  352. this.curGoods = item.key;
  353. if(item.key){
  354. this.splitList();
  355. }
  356. },
  357. // 扫描快递单号一维码
  358. scanCode() {
  359. // #ifdef MP
  360. let that = this;
  361. uni.scanCode({
  362. scanType: ['barCode'],
  363. success(res) {
  364. that.delivery_id = res.result;
  365. }
  366. })
  367. // #endif
  368. // #ifdef H5
  369. if (this.$wechat.isWeixin()) {
  370. this.$wechat.wechatEvevt('scanQRCode', {
  371. needResult: 1,
  372. scanType: ['barCode']
  373. }).then(res => {
  374. let result = res.resultStr.split(",");
  375. this.delivery_id = result[1];
  376. });
  377. }
  378. // #endif
  379. },
  380. // 预览图片
  381. previewImage() {
  382. uni.previewImage({
  383. urls: [this.expTemp[this.expIndex].pic],
  384. success: function() {
  385. },
  386. fail: function(error) {
  387. }
  388. });
  389. },
  390. // 获取配送员列表
  391. geTorderOrderDelivery() {
  392. getOrderDelivery().then(res => {
  393. this.postPeople = res.data
  394. })
  395. },
  396. // 配送员选择
  397. bindPostChange(e) {
  398. this.postIndex = e.detail.value
  399. },
  400. // 选择发货类型
  401. changeExpTpe(item, index) {
  402. this.curExpress = item.key
  403. this.getLogistics(index || '');
  404. },
  405. changeType: function(item, index) {
  406. this.active = index;
  407. this.delivery_type = item.key;
  408. },
  409. getIndex: function() {
  410. let that = this;
  411. getOrderDeliveryinfoApi(that.order_id).then(
  412. res => {
  413. that.delivery = res.data;
  414. that.to_name = res.data.to_name;
  415. that.to_tel = res.data.to_tel;
  416. that.to_addr = res.data.to_add;
  417. if (res.data.city_delivery_status) {
  418. that.deliveryTypeList.forEach(item => {
  419. if (item.key === 1) {
  420. item.status = res.data.self_delivery_status;
  421. } else if (item.key === 2) {
  422. item.status = res.data.dada_delivery_status || res.data.uu_delivery_status;
  423. }
  424. if (item.status && !that.deliveryType) {
  425. that.deliveryType = item.key;
  426. }
  427. });
  428. that.deliveryPlatformList.forEach(item => {
  429. if (item.key === 1) {
  430. item.status = res.data.dada_delivery_status;
  431. } else if (item.key === 2) {
  432. item.status = res.data.uu_delivery_status;
  433. }
  434. if (item.status && !that.station_type) {
  435. that.station_type = item.key;
  436. }
  437. });
  438. } else{
  439. const index = that.types.findIndex(item => item.key === 2);
  440. if (index !== -1) {
  441. that.types[index].status = false;
  442. }
  443. }
  444. },
  445. error => {
  446. that.$util.Tips({
  447. title: error
  448. })
  449. }
  450. );
  451. },
  452. getLogistics(status) {
  453. let that = this;
  454. getOrderExportApi({
  455. status
  456. }).then(
  457. res => {
  458. that.logistics = res.data;
  459. that.getExpTemp(res.data[0].code)
  460. },
  461. error => {
  462. that.$util.Tips({
  463. title: error
  464. })
  465. }
  466. );
  467. },
  468. async saveInfo() {
  469. let that = this,
  470. delivery_type = that.delivery_type,
  471. delivery_name = that.logistics[that.seIndex].name,
  472. delivery_id = that.delivery_id,
  473. userName = that.delivery_name,
  474. save = {};
  475. save.delivery_type = delivery_type;
  476. save.delivery_code = that.logistics[that.seIndex].code
  477. save.delivery_name = that.logistics[that.seIndex].name
  478. save.type = that.active + 1
  479. if (delivery_type == 1 && this.curExpress == 1) {
  480. if (!delivery_id) {
  481. return this.$util.Tips({
  482. title: '请填写快递单号'
  483. })
  484. }
  485. save.express_record_type = that.curExpress
  486. save.delivery_id = delivery_id
  487. if(that.curGoods){
  488. that.setSplitInfo(save)
  489. }else{
  490. that.setInfo(save);
  491. }
  492. }
  493. if (delivery_type == 1 && this.curExpress == 2) {
  494. if (!that.to_name) {
  495. return this.$util.Tips({
  496. title: '请填写寄件人姓名'
  497. })
  498. }
  499. if (!that.to_tel) {
  500. return this.$util.Tips({
  501. title: '请填写寄件人手机号码'
  502. })
  503. }
  504. if (!(/^1[3456789]\d{9}$/.test(that.to_tel))) {
  505. return this.$util.Tips({
  506. title: '请填写寄件人手机号码'
  507. })
  508. }
  509. if (!that.to_addr) {
  510. return this.$util.Tips({
  511. title: '请填写寄件人地址'
  512. })
  513. }
  514. if (that.expTemp.length == 0) {
  515. return this.$util.Tips({
  516. title: '请选择电子面单'
  517. })
  518. }
  519. save.express_record_type = that.curExpress
  520. save.to_name = that.to_name
  521. save.to_tel = that.to_tel
  522. save.to_addr = that.to_addr
  523. save.express_temp_id = that.expTemp[that.expIndex].temp_id
  524. if(that.curGoods){
  525. that.setSplitInfo(save)
  526. }else{
  527. that.setInfo(save);
  528. }
  529. }
  530. if (delivery_type == 2) {
  531. let params = {}
  532. if (that.deliveryType === 1) {
  533. if(!that.postPeople.length){
  534. return this.$util.Tips({
  535. title: '请在门店后台添加送货人'
  536. })
  537. }
  538. let obj = this.postPeople[this.postIndex]
  539. params.sh_delivery_name = obj.wx_name
  540. params.sh_delivery_id = obj.phone
  541. params.sh_delivery_uid = obj.uid
  542. } else if (that.deliveryType === 2) {
  543. if(!that.cargo_weight){
  544. return this.$util.Tips({
  545. title: '请输入有效的重量'
  546. })
  547. }
  548. params.station_type = that.station_type
  549. params.cargo_weight = that.cargo_weight
  550. params.remark = that.remark
  551. params.mark = that.fictitious_content
  552. }
  553. params.type = that.delivery_type
  554. params.delivery_type = that.deliveryType
  555. if(that.curGoods){
  556. that.setSplitInfo(params)
  557. }else{
  558. that.setInfo(params);
  559. }
  560. }
  561. if (delivery_type == 3) {
  562. let params = {}
  563. params.type = that.delivery_type;
  564. params.fictitious_content = that.fictitious_content;
  565. if(that.curGoods){
  566. that.setSplitInfo(params)
  567. }else{
  568. that.setInfo(params);
  569. }
  570. }
  571. },
  572. setInfo: function(item) {
  573. let that = this;
  574. setOrderDelivery(that.delivery.id, item).then(
  575. res => {
  576. that.$util.Tips({
  577. title: res.msg,
  578. icon: 'success',
  579. mask: true
  580. })
  581. setTimeout(res => {
  582. if(this.comeType == 2){
  583. uni.navigateTo({
  584. url:'/pages/admin/store/orderDetail/index?id='+this.listId
  585. })
  586. }else{
  587. uni.navigateTo({
  588. url:'/pages/admin/store/order/index?type=1'
  589. })
  590. }
  591. }, 2000)
  592. },
  593. error => {
  594. that.$util.Tips({
  595. title: error
  596. })
  597. }
  598. );
  599. },
  600. setSplitInfo(item){
  601. if(!this.cartIds.length){
  602. return this.$util.Tips({
  603. title: '请选择发货商品'
  604. })
  605. }
  606. item.cart_ids = this.cartIds
  607. storeSplitDelivery(this.delivery.id, item).then(res=>{
  608. this.$util.Tips({
  609. title: res.msg,
  610. icon: 'success',
  611. mask: true
  612. })
  613. setTimeout(res => {
  614. if(this.comeType == 2){
  615. uni.navigateTo({
  616. url:'/pages/admin/store/orderDetail/index?id='+this.listId
  617. })
  618. }else{
  619. uni.navigateTo({
  620. url:'/pages/admin/store/order/index?type=1'
  621. })
  622. }
  623. }, 2000)
  624. }).catch(err=>{
  625. this.$util.Tips({
  626. title: err
  627. })
  628. })
  629. },
  630. bindPickerChange(e) {
  631. this.seIndex = e.detail.value
  632. this.getExpTemp(this.logistics[e.detail.value].code)
  633. },
  634. bindTempChange(e) {
  635. this.expIndex = e.detail.value
  636. },
  637. getExpTemp(code) {
  638. getOrderExportTemp({
  639. com: code
  640. }).then(res => {
  641. this.expTemp = res.data.data
  642. })
  643. },
  644. // 配送类型
  645. deliveryTypeChange(item) {
  646. this.deliveryType = item.key;
  647. },
  648. // 配送平台
  649. deliveryPlatformChange(item) {
  650. this.station_type = item.key;
  651. }
  652. }
  653. };
  654. </script>
  655. <style lang="scss" scoped>
  656. .picker-add {
  657. display: flex;
  658. align-items: center;
  659. }
  660. .height-add {
  661. height:124rpx;
  662. }
  663. /deep/.splitOrder{
  664. margin-bottom: 100rpx;
  665. }
  666. /deep/.splitOrder .items .picTxt{
  667. width: 560rpx;
  668. }
  669. /deep/.splitOrder .items .picTxt .text{
  670. width: 380rpx;
  671. }
  672. /deep/.splitOrder .items .picTxt .name{
  673. width: 292rpx;
  674. }
  675. .marr{display: inline-block;margin-right: 24upx;}
  676. .size{font-size: 28upx;}
  677. .trip {
  678. font-size: 22upx;
  679. color: #ccc;
  680. padding: 6upx 0upx;
  681. }
  682. .button{
  683. position: fixed;
  684. height: 80upx;
  685. bottom: 44upx;
  686. // width: 100%;
  687. .box{
  688. text-align: center;
  689. font-size: 30upx;
  690. color: #FFFFFF;
  691. line-height: 80upx;
  692. width: 690upx;
  693. margin: 0 auto;
  694. height: 80upx;
  695. background: #1890FF;
  696. border-radius: 40upx;
  697. }
  698. }
  699. </style>
  700. <style lang="scss">
  701. /*发货*/
  702. .deliver-goods{
  703. padding: 20upx 30upx;
  704. }
  705. .deliver-goods header {
  706. width: 100%;
  707. background-color: #fff;
  708. margin-top: 10upx;
  709. }
  710. .deliver-goods header .order-num {
  711. padding: 18upx 24upx;
  712. border-bottom: 1px solid #f5f5f5;
  713. height: 67upx;
  714. }
  715. .deliver-goods header .order-num .num {
  716. width: 430upx;
  717. font-size: 26upx;
  718. color: #282828;
  719. position: relative;
  720. }
  721. .deliver-goods header .order-num .num:after {
  722. position: absolute;
  723. content: '';
  724. width: 1px;
  725. height: 30upx;
  726. background-color: #ddd;
  727. top: 50%;
  728. margin-top: -15upx;
  729. right: 0;
  730. }
  731. .deliver-goods header .order-num .name {
  732. font-size: 26upx;
  733. color: #282828;
  734. text-align: center;
  735. width: 200upx;
  736. }
  737. .deliver-goods header .order-num .name .iconfont {
  738. font-size: 35upx;
  739. color: #477ef3;
  740. vertical-align: middle;
  741. margin-right: 10upx;
  742. }
  743. .deliver-goods header .address {
  744. font-size: 26upx;
  745. color: #868686;
  746. background-color: #fff;
  747. padding: 30upx;
  748. }
  749. .deliver-goods header .address .name {
  750. font-size: 34upx;
  751. color: #282828;
  752. margin-bottom: 10upx;
  753. }
  754. .deliver-goods header .address .name .phone {
  755. margin-left: 40upx;
  756. }
  757. .deliver-goods header .line {
  758. width: 100%;
  759. height: 3upx;
  760. }
  761. .deliver-goods header .line image {
  762. width: 100%;
  763. height: 100%;
  764. display: block;
  765. }
  766. .deliver-goods .wrapper {
  767. width: 100%;
  768. background-color: #fff;
  769. margin-top: 20upx;
  770. border-radius: 12upx;
  771. }
  772. .deliver-goods .wrapper .item {
  773. border-bottom: 1px solid #f0f0f0;
  774. padding: 0 30upx;
  775. height: 96upx;
  776. font-size: 28upx;
  777. color: #282828;
  778. position: relative;
  779. &.textarea-wrapper {
  780. height: auto;
  781. padding: 30rpx;
  782. }
  783. }
  784. .deliver-goods .wrapper .item .mode {
  785. width: 460upx;
  786. height: 100%;
  787. text-align: right;
  788. }
  789. .deliver-goods .wrapper .item .mode .iconfont {
  790. font-size: 30upx;
  791. margin-left: 13upx;
  792. }
  793. .deliver-goods .wrapper .item .mode .goods~.goods {
  794. margin-left: 30upx;
  795. }
  796. .deliver-goods .wrapper .item .mode .goods {
  797. color: #bbb;
  798. }
  799. .deliver-goods .wrapper .item .mode .goods.on {
  800. color: #477ef3;
  801. }
  802. .deliver-goods .wrapper .item .icon-up {
  803. position: absolute;
  804. font-size: 35upx;
  805. color: #2c2c2c;
  806. right: 30upx;
  807. }
  808. .deliver-goods .wrapper .item select {
  809. direction: rtl;
  810. padding-right: 60upx;
  811. position: relative;
  812. z-index: 2;
  813. }
  814. .deliver-goods .wrapper .item input::placeholder {
  815. color: #bbb;
  816. }
  817. .deliver-goods .confirm {
  818. font-size: 30upx;
  819. color: #fff;
  820. width: 100%;
  821. height: 80upx;
  822. background-color: #477ef3;
  823. text-align: center;
  824. line-height: 100upx;
  825. position: fixed;
  826. bottom: 0;
  827. }
  828. .select-box {
  829. flex: 1;
  830. height: 100%;
  831. .pickerBox {
  832. display: flex;
  833. align-items: center;
  834. justify-content: flex-end;
  835. width: 100%;
  836. height: 100%;
  837. }
  838. }
  839. .look {
  840. margin-left: 20rpx;
  841. color: #1890FF;
  842. }
  843. .textarea {
  844. // display: block;
  845. min-height: 102rpx;
  846. padding: 0 0 0 30rpx;
  847. flex: 1;
  848. // border-bottom: 1px solid #f0f0f0;
  849. font-size: 30rpx;
  850. box-sizing: border-box;
  851. }
  852. .icon-xiangji {
  853. font-size: 35rpx;
  854. color: #477ef3;
  855. }
  856. </style>