express.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903
  1. <template>
  2. <div class="content">
  3. <!--运单号-->
  4. <div v-show="wayShow" class="sm" style="padding-top: 10px;height: 50px;">
  5. <div>
  6. <van-field maxlength="50" v-model="waybillNo" name="运单号" label="运单号" placeholder="运单号" />
  7. <img @click="wxScanCode(1)" src="../assets/images/sm.png" alt="">
  8. </div>
  9. </div>
  10. <!-- 寄件地址 -->
  11. <div class="jjinfo">
  12. <div>
  13. <div class="jj">
  14. <div class="jjaddress" style="width: 100vw;">
  15. <p style="flex: none;">寄</p>
  16. <div>
  17. <div class="address">
  18. <div class="address_label">地址</div>
  19. <div class="address_text">{{ SendInfoValue.address }}</div>
  20. </div>
  21. <van-field v-model="SendInfoValue.phone" label="手机号" name="pattern" placeholder="自动填充" />
  22. </div>
  23. </div>
  24. <!-- <div class="dzb" @click="link(1)">
  25. <img src="../assets/images/addlist.png" alt="">
  26. <p>地址簿</p>
  27. </div> -->
  28. </div>
  29. <div class="jj" style="border-top:.01rem solid #ededed">
  30. <div class="jjaddress">
  31. <p style="background: #fa9c22; flex:none;">收</p>
  32. <div>
  33. <van-field v-model="transmitMessageVlaue.addresseeName" name="" label="姓名"
  34. placeholder="自动填充" />
  35. <van-field v-model="transmitMessageVlaue.addresseePhone" label="手机号" name="pattern"
  36. placeholder="自动填充" />
  37. </div>
  38. </div>
  39. <div class="dzb" @click="link(2)">
  40. <img src="../assets/images/addlist.png" alt="">
  41. <p>地址簿</p>
  42. </div>
  43. </div>
  44. </div>
  45. </div>
  46. <!-- 快递公司 -->
  47. <div class="kdshow">
  48. <van-field readonly clickable name="picker" :value="expressInfoShow" label="快递公司" placeholder="请选择快递公司"
  49. @click="showPicker = true" />
  50. <van-popup v-model="showPicker" position="bottom">
  51. <van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="showPicker = false">
  52. <template v-slot:option="slotProps">
  53. {{ slotProps.expresCompanyName }}
  54. </template>
  55. </van-picker>
  56. </van-popup>
  57. </div>
  58. <!-- 寄件属性 -->
  59. <div class="choose">
  60. <div>
  61. <div class="type_wp">
  62. <div>
  63. <p>物品类型</p>
  64. <p v-if="wptype == ''" @click="wpshow = true">请选择</p>
  65. <p v-else @click="wpshow = true">{{ wptype }}</p>
  66. </div>
  67. <div>
  68. <p>
  69. <template>重量(公斤)</template>
  70. </p>
  71. <p>
  72. <van-field name="Kilogram" style="padding: 0px;">
  73. <template #input>
  74. <van-stepper v-model="Kilogram" max="10"></van-stepper>
  75. </template>
  76. </van-field>
  77. </p>
  78. </div>
  79. <div>
  80. <p>
  81. <template>数量(件数)</template>
  82. </p>
  83. <p>
  84. <van-field name="stepper" style="padding: 0px;">
  85. <template #input>
  86. <van-stepper v-model="stepper" max="10"></van-stepper>
  87. </template>
  88. </van-field>
  89. </p>
  90. </div>
  91. </div>
  92. <div class="type_price">
  93. <div>
  94. <p>付款方式</p>
  95. <p v-if="pricetype == ''" @click="priceshow = true">请选择</p>
  96. <p v-else @click="priceshow = true">{{ pricetype }}</p>
  97. </div>
  98. <div>
  99. <p>声明价值</p>
  100. <p style="display: flex;justify-content: center;"><input
  101. style="width: 1rem;border: none;text-align: center;" v-model="declaredValue"
  102. type="number" />元
  103. </p>
  104. </div>
  105. </div>
  106. <div class="type_price" v-show="this.accountType == 1">
  107. <div>
  108. <p>邮购类型</p>
  109. <p v-if="addresstype == ''" @click="addressshow = true">请选择</p>
  110. <p v-else @click="addressshow = true">{{ addresstype }}</p>
  111. </div>
  112. </div>
  113. </div>
  114. </div>
  115. <!-- 备注 -->
  116. <div class="bz">
  117. <div>
  118. <van-field style="font-size: 16px;" v-model="bz" name="备注" label="备注" placeholder="包装运输等要求" />
  119. </div>
  120. </div>
  121. <!-- 财务核销码 -->
  122. <div class="az" v-if="SendInfoValue.isVerification == 1">
  123. <van-field style="font-size: 16px;" v-model="authorization" name="authorization" label="财务核销码"
  124. placeholder="请输入财务核销码" />
  125. <img @click="vxSearchIcon" src="../assets/images/sm.png" alt="">
  126. </div>
  127. <!-- 我同意 -->
  128. <div class="check">
  129. <van-checkbox icon-size=".24rem" v-model="check" shape="">我同意《电子运单契约条款》</van-checkbox>
  130. </div>
  131. <!-- 寄件 -->
  132. <div class="btn-jj">
  133. <van-button type="info" color="#00c4b8" @click="save()">立即寄件</van-button>
  134. </div>
  135. <!-- 弹窗物品类型 -->
  136. <van-popup v-model="wpshow" position="bottom">
  137. <van-picker title="物品类型" show-toolbar :columns="wplist" @confirm="onConfirm1" @cancel="wpshow = false" />
  138. </van-popup>
  139. <!-- 弹窗付款方式 -->
  140. <van-popup v-model="priceshow" position="bottom">
  141. <van-picker title="付款方式" show-toolbar :columns="pricelist" @confirm="onConfirm2"
  142. @cancel="priceshow = false" />
  143. </van-popup>
  144. <!-- 弹窗地址类型类型 -->
  145. <van-popup v-model="addressshow" position="bottom">
  146. <van-picker title="邮购类型" show-toolbar :columns="addlist" @confirm="onConfirm8"
  147. @cancel="addressshow = false" />
  148. </van-popup>
  149. <!-- 打印机选择器 -->
  150. <van-popup v-model="printerShow" position="bottom">
  151. <van-picker show-toolbar :columns="getPrintersList" @confirm="onPrinter" @cancel="printerShow = false">
  152. <template v-slot:option="value">
  153. {{ value.printerName }}
  154. </template>
  155. </van-picker>
  156. </van-popup>
  157. </div>
  158. </template>
  159. <script>
  160. import areaList from "@/script/areas.js"
  161. import { Toast } from 'vant';
  162. import { saveMailDo, getSendInfo, geLogisticsList, getListOfPrinters, storagePrintSmallTab, getWxConfig } from '../api/index'
  163. export default {
  164. data() {
  165. return {
  166. titlename: "寄件",
  167. wptype: "物品",//物品类型
  168. addresstype: "顾客邮购",//地址类型
  169. youGouType: "",//邮购类型
  170. addressshow: false,//地址类型弹窗显示
  171. addlist: ['顾客邮购', '非顾客邮购'],//
  172. wpshow: false,//物品类型弹窗显示
  173. wplist: ["物品", "文件"],
  174. pricetype: "月结(公司件)",//付款类型
  175. stepper: '',//件数
  176. Kilogram: '',//公斤
  177. max: '',//最大数
  178. priceshow: false,//付款类型弹窗显示
  179. pricelist: ["到付", "自费(个人件)", "月结(公司件)",],
  180. index: "",
  181. title: "",
  182. check: false,//契约条款
  183. bz: '',//快递备注
  184. showPicker: false,//快递
  185. expressInfoShow: "顺丰快递",//快递公司展示
  186. expressPhone: "",//快递公司电话传值
  187. expressInfo: "1",//快递公司传值
  188. columns: [],//快递公司列表
  189. columns2: ["个人件", "公司件"],
  190. // transmitMessageVlaue: {},
  191. declaredValue: '0', //声明价值
  192. showPicker2: false,
  193. goodOrderNo: '',//商品订单编号
  194. waybillNo: '',//运单号
  195. wayShow: true,
  196. accountType: '',//账号类型
  197. showPicker9: false,
  198. costCenterList: [],//成本中心列表
  199. costCenterInfoShow: "",
  200. costCenterName: "",//成本中心展示
  201. costCenterId: "",//成本中心展示
  202. elvenPhone: '',//收件人输入的手机号
  203. pattern: /^\d{11}$/,
  204. SendInfoValue: {},//寄件人信息
  205. authorization: '',//财务核销码
  206. getPrintersList: [],//打印机获取数据
  207. printerShow: false,//打印机出现
  208. printerName: '',//选中的打印机名称
  209. printerId: '',//选中的打印机id
  210. }
  211. },
  212. created: function () {
  213. this.accountType = localStorage.getItem("accountType")
  214. this.geLogisticsListAPIList()
  215. },
  216. async mounted() {
  217. const res = await getSendInfo({ userId: localStorage.getItem("userId") })
  218. if (res.code == 444) {
  219. Toast(res.msg)
  220. } else {
  221. this.SendInfoValue = res
  222. }
  223. console.log(this.SendInfoValue, 'this.SendInfoValue')
  224. },
  225. methods: {
  226. // 运单号扫描
  227. wxScanCode(type) {
  228. let wx = this.$wx;
  229. this.$http.post(this.$store.state.host + "/weixin/getWxConfig", {
  230. url: window.location.href.split('#')[0]
  231. }, {
  232. emulateJSON: true
  233. })
  234. .then(res => {
  235. //发送成功
  236. var timestamp = res.wxConfig.timestamp;
  237. var noncestr = res.wxConfig.nonceStr;
  238. var signature = res.wxConfig.signature;
  239. var appId = res.wxConfig.appId;
  240. wx.config({
  241. debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  242. // debug : true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  243. appId: appId, // 必填,公众号的唯一标识
  244. timestamp: timestamp, // 必填,生成签名的时间戳
  245. nonceStr: noncestr, // 必填,生成签名的随机串
  246. signature: signature, // 必填,签名,见附录1
  247. jsApiList: [
  248. "scanQRCode",
  249. ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
  250. });
  251. wx.ready(() => {
  252. wx.scanQRCode({
  253. needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
  254. scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
  255. success: (res) => {
  256. var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
  257. if (result.indexOf(",") != -1) {
  258. let result1 = res.resultStr.split(",");
  259. result = result1[result1.length - 1];
  260. }
  261. if (type == 1) {
  262. this.waybillNo = result;
  263. } else {
  264. this.goodOrderNo = result;
  265. }
  266. },
  267. error: function (res) {
  268. console.log(res);
  269. }
  270. });
  271. });
  272. }, res => {
  273. //发送失败
  274. Toast("网络错误!")
  275. })
  276. },
  277. // 财务核销码哦icon扫描
  278. async vxSearchIcon() {
  279. console.log('123')
  280. wx.scanQRCode({
  281. needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
  282. scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
  283. success: (res) => {
  284. //alert(res)
  285. console.log(res, '==============')
  286. var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
  287. if (result.indexOf(",") != -1) {
  288. let result1 = res.resultStr.split(",");
  289. result = result1[result1.length - 1];
  290. }
  291. console.log(result, '======财务核销码返回结果')
  292. this.authorization = result
  293. },
  294. error: function (res) {
  295. console.log(res, 'error++++++++++');
  296. }
  297. });
  298. },
  299. // 快递公司
  300. async geLogisticsListAPIList() {
  301. const res = await geLogisticsList({})
  302. console.log(res, '======================')
  303. this.columns = res.list.map((item) => {
  304. return {
  305. id: item.id,
  306. expresCompanyName: item.expresCompanyName
  307. }
  308. })
  309. },
  310. // 选择快递公司
  311. onConfirm(e) {
  312. console.log(e, '=============')
  313. this.expressInfoShow = e.expresCompanyName
  314. this.expressInfo = e.id
  315. this.showPicker = false
  316. },
  317. // 选择成本中心
  318. onConfirm9(e) {
  319. this.costCenterInfoShow = e.text
  320. this.costCenterId = e.id
  321. this.costCenterName = e.costCenterName
  322. this.showPicker9 = false
  323. console.log("costCenterId:" + this.costCenterId)
  324. console.log("costCenterName:" + this.costCenterName)
  325. },
  326. onConfirm0(e) {
  327. this.mainType = e
  328. this.showPicker2 = false
  329. },
  330. // 选择物品确定
  331. onConfirm1(e) {//确定
  332. this.wptype = e
  333. // if (this.wptype == '文件') {
  334. // this.max = '10'
  335. // } else {
  336. // this.max = '1'
  337. // }
  338. this.wpshow = false
  339. },
  340. // 选择付款方式确定
  341. onConfirm2(e) {//确定
  342. this.pricetype = e
  343. this.priceshow = false
  344. },
  345. // 填写地址类型确定
  346. onConfirm8(e) {//确定
  347. this.addresstype = e
  348. this.addressshow = false
  349. },
  350. // 地址簿跳转
  351. link(obj) {
  352. this.$router.push({ path: '/Myaddressbook', query: { active: obj } })
  353. },
  354. //立即寄件交互
  355. async save() {
  356. if (this.SendInfoValue.phone == '' || this.SendInfoValue.phone == undefined) {
  357. Toast('寄件人手机号不能为空')
  358. return
  359. }
  360. if (!this.pattern.test(this.SendInfoValue.phone)) {
  361. Toast('寄件人手机号码不正确')
  362. return
  363. }
  364. if (this.transmitMessageVlaue.addresseeName == '' || this.transmitMessageVlaue.addresseeName == undefined) {
  365. Toast('收件人姓名不能为空')
  366. return
  367. }
  368. if (this.transmitMessageVlaue.addresseePhone == '' || this.transmitMessageVlaue.addresseePhone == undefined) {
  369. Toast('手机号码不能为空')
  370. return
  371. }
  372. if (!this.pattern.test(this.transmitMessageVlaue.addresseePhone)) {
  373. Toast('收件人手机号码不正确')
  374. return
  375. }
  376. if (this.expressInfo == '' || this.expressInfo == undefined) {
  377. Toast('请选择快递公司')
  378. return
  379. }
  380. if (this.wptype == '' || this.wptype == undefined) {
  381. Toast('请选择物品类型')
  382. return
  383. }
  384. if (this.stepper == '' || this.stepper == undefined) {
  385. Toast('请选择重量')
  386. return
  387. }
  388. if (this.pricetype == '' || this.pricetype == undefined) {
  389. Toast('请选择付款方式')
  390. return
  391. }
  392. // if (this.authorization == '' & this.SendInfoValue.isVerification == 1) {
  393. // Toast('请填写财务核销码')
  394. // return
  395. // }
  396. let payWay = ''
  397. let mainType = ''
  398. if (this.pricetype == "自费(个人件)") {
  399. payWay = '自费'
  400. mainType = '个人件'
  401. }
  402. if (this.pricetype == "月结(公司件)") {
  403. payWay = '月结'
  404. mainType = '公司件'
  405. }
  406. if (this.check == false) {
  407. Toast('请点击同意《电子运单契约条款》')
  408. return
  409. }
  410. const getPrinters = await getListOfPrinters({})
  411. if (getPrinters.code == 0) {
  412. // const qwe = {
  413. // IMEI: "8672970676795912",
  414. // companyId: "990b526776e74ff9ab141ff28e09f0922",
  415. // correspondingRoles: "揽件员2",
  416. // id: 72,
  417. // printerName: "禁魔石打印机2",
  418. // recordDate: "2024-04-12 15:10:12.4282",
  419. // shareCode: "9077782",
  420. // st: "12",
  421. // type: "12",
  422. // useTheId: "11392",
  423. // } //脏数据
  424. // getPrinters.data.push(qwe)
  425. this.getPrintersList = getPrinters.data.map((item) => {
  426. return { printerName: item.printerName, id: item.id }
  427. })
  428. if (this.getPrintersList.length === 1) {
  429. this.shipServe(this.getPrintersList[0].id)
  430. return
  431. }
  432. this.printerShow = true
  433. } else {
  434. Toast('系统异常')
  435. }
  436. return
  437. },
  438. async onPrinter(e) {
  439. console.log(e, 'eeeeeeeeeeeeeee')
  440. // const toask = this.$toast.loading({
  441. // duration: 0, // 持续展示 toast
  442. // forbidClick: true,
  443. // message: '加载中',
  444. // });
  445. this.printerName = e.printerName;
  446. this.printerId = e.id;
  447. await this.shipServe(e.id)
  448. // 开始走打印机面单
  449. // try {
  450. // const res = await storagePrintSmallTab({ printId: e.id })
  451. // if (res.msg == 'success') {
  452. // Toast('打印成功')
  453. // }
  454. // console.log(res, '最后')
  455. // this.printerShow = false;
  456. // } catch (error) {
  457. // }
  458. // toask.clear();
  459. },
  460. async shipServe(printId) {
  461. //先走基础打印
  462. const $toast = Toast.loading({
  463. message: '保存中...',
  464. forbidClick: true,
  465. duration: 0
  466. });
  467. let pricetypeValue = ''
  468. if (this.pricetype == '月结(公司件)') {
  469. pricetypeValue = 3
  470. } else if (this.pricetype == '自费(个人件)') {
  471. pricetypeValue = 2
  472. } else if (this.pricetype == '到付') {
  473. pricetypeValue = 1
  474. }
  475. let wptypeValue = ''
  476. if (this.wptype == "物品") {
  477. wptypeValue = 2
  478. } else {
  479. wptypeValue = 1
  480. }
  481. let parmas = {
  482. expressInfo: this.expressInfo,//快递公司1-顺丰
  483. userAddressId: this.transmitMessageVlaue.id,
  484. // userAddressId: 'ede4f065286a406dbb82064ec7524b4e',
  485. expressType: wptypeValue,//快件类型 1-文件 2-物品
  486. expressNum: this.stepper, //快递数量
  487. payInfo: pricetypeValue,//付费信息 1-到付 2-自付 3-月付
  488. expressRemark: this.bz,//快递备注
  489. expressWeight: this.Kilogram,//公斤
  490. expressPrice: this.declaredValue,//价值
  491. phone: this.SendInfoValue.phone,//寄件人手机号
  492. addresseeName: this.transmitMessageVlaue.addresseeName,//寄件人姓名
  493. addresseePhone: this.transmitMessageVlaue.addresseePhone,//收件人手机号
  494. verificationCode: this.authorization, //财务核销码
  495. printId: printId
  496. }
  497. const res = await saveMailDo({ ...parmas })
  498. if (res.msg == 'success') {
  499. Toast('寄件成功')
  500. this.$router.push('/')
  501. } else {
  502. this.$toast(res.error)
  503. }
  504. $toast.clear()
  505. }
  506. },
  507. computed: {
  508. areaList() {
  509. return areaList
  510. },
  511. transmitMessageVlaue() {
  512. return this.$store.state.transmitMessageVlaue;
  513. },
  514. }
  515. }
  516. </script>
  517. <style scoped lang="less">
  518. .content {
  519. .sm {
  520. display: flex;
  521. padding: .33rem;
  522. padding-bottom: 0;
  523. font-size: .3rem;
  524. justify-content: space-between;
  525. /deep/.van-field {
  526. width: 6.2rem;
  527. height: .76rem;
  528. .van-search__content {
  529. background-color: white;
  530. }
  531. input {
  532. text-align: right;
  533. }
  534. }
  535. img {
  536. width: .4rem;
  537. height: .4rem;
  538. position: relative;
  539. top: -.58rem;
  540. right: -6.38rem;
  541. }
  542. }
  543. .jjinfo {
  544. font-size: .24rem;
  545. color: #999999;
  546. padding: .33rem;
  547. padding-top: 0;
  548. word-break: break-word;
  549. >div {
  550. background: white;
  551. border-radius: .05rem;
  552. padding: 0rem .3rem;
  553. .jj {
  554. display: flex;
  555. // justify-content: space-between;
  556. padding: .2rem 0rem;
  557. .jjaddress {
  558. display: flex;
  559. padding: .1rem 0rem;
  560. .van-cell {
  561. padding: 0;
  562. margin: 0;
  563. .van-field__label.van-cell__title {
  564. width: 0.2em !important;
  565. }
  566. }
  567. .van-cell::after {
  568. margin-left: -16px;
  569. // width: 100%;
  570. }
  571. >p {
  572. font-size: .24rem;
  573. font-weight: bold;
  574. display: inline-block;
  575. width: .5rem;
  576. height: .5rem;
  577. background: #00c4b8;
  578. text-align: center;
  579. line-height: .5rem;
  580. color: white;
  581. border-radius: 50%;
  582. margin-right: .3rem;
  583. }
  584. div {
  585. //font-weight: bold;
  586. p:nth-of-type(1) {
  587. font-size: .24rem;
  588. color: #333;
  589. margin-bottom: .2rem;
  590. }
  591. p:nth-of-type(2) {
  592. font-size: .3rem;
  593. }
  594. }
  595. }
  596. .dzb {
  597. text-align: center;
  598. border-left: .01rem solid #ededed;
  599. padding-left: .3rem;
  600. width: 36px;
  601. img {
  602. width: .39rem;
  603. height: .42rem;
  604. padding-top: .2rem;
  605. }
  606. p {
  607. font-size: .2rem;
  608. }
  609. }
  610. }
  611. }
  612. }
  613. .kdshow {
  614. font-size: .3rem;
  615. padding: .3rem 0px;
  616. width: 6.84rem;
  617. background: white;
  618. border-radius: .05rem;
  619. margin: 0rem auto .2rem;
  620. /deep/.van-cell {
  621. padding: 0px .3rem;
  622. overflow: unset;
  623. input {
  624. text-align: right;
  625. height: .5rem;
  626. padding-right: .25rem;
  627. }
  628. }
  629. /deep/.van-cell::after {
  630. content: "";
  631. display: inline-block;
  632. border-right: .01rem solid #b0b0b0;
  633. border-bottom: .01rem solid #b0b0b0;
  634. transform: rotate(-45deg);
  635. left: unset;
  636. position: absolute;
  637. right: .3rem;
  638. bottom: .15rem;
  639. width: .2rem;
  640. height: .2rem;
  641. }
  642. }
  643. .choose {
  644. font-size: .3rem;
  645. color: #999999;
  646. font-weight: bold;
  647. padding: 0rem .33rem;
  648. >div {
  649. background: white;
  650. padding: .3rem .3rem;
  651. border-radius: .05rem;
  652. .type_wp {
  653. display: flex;
  654. justify-content: center;
  655. div {
  656. flex: 1;
  657. text-align: center;
  658. p:nth-of-type(2) {
  659. color: #333;
  660. margin-top: .2rem;
  661. font-size: .36rem;
  662. //position: relative;
  663. }
  664. }
  665. div:nth-of-type(1) {
  666. border-right: .01rem solid #ededed;
  667. p:nth-of-type(2):after {
  668. content: "";
  669. display: inline-block;
  670. width: .15rem;
  671. height: .15rem;
  672. border-bottom: .01rem solid #999;
  673. border-right: .01rem solid #999;
  674. transform: rotate(45deg);
  675. margin-left: .15rem;
  676. position: relative;
  677. top: -.08rem;
  678. }
  679. }
  680. }
  681. .type_price {
  682. display: flex;
  683. justify-content: center;
  684. border-top: .01rem solid #ededed;
  685. margin-top: .3rem;
  686. padding-top: .3rem;
  687. div {
  688. flex: 1;
  689. text-align: center;
  690. p:nth-of-type(2) {
  691. color: #333;
  692. margin-top: .2rem;
  693. font-size: .36rem;
  694. }
  695. }
  696. div:nth-of-type(1) {
  697. border-right: .01rem solid #ededed;
  698. p:nth-of-type(2):after {
  699. content: "";
  700. display: inline-block;
  701. width: .15rem;
  702. height: .15rem;
  703. border-bottom: .01rem solid #999;
  704. border-right: .01rem solid #999;
  705. transform: rotate(45deg);
  706. margin-left: .15rem;
  707. position: relative;
  708. top: -.08rem;
  709. }
  710. }
  711. }
  712. }
  713. }
  714. .bz {
  715. // margin-top: -0.53rem;
  716. padding: 0 .33rem;
  717. font-size: 16px;
  718. /deep/.van-field__value {
  719. input {
  720. text-align: right;
  721. }
  722. }
  723. }
  724. .az {
  725. margin: 0px .33rem;
  726. font-size: 16px;
  727. display: flex;
  728. align-items: center;
  729. background-color: #fff;
  730. // position: absolute;
  731. /deep/.van-field__value {
  732. input {
  733. text-align: right;
  734. }
  735. }
  736. img {
  737. width: .4rem;
  738. height: .4rem;
  739. margin-right: 6px;
  740. }
  741. }
  742. .check {
  743. font-size: .24rem;
  744. margin-top: 6px;
  745. text-align: center;
  746. /deep/.van-checkbox {
  747. justify-content: center;
  748. .van-checkbox__label {
  749. color: #999;
  750. }
  751. }
  752. }
  753. .btn-jj {
  754. padding: 0 .33rem .33rem;
  755. button {
  756. width: 100%;
  757. }
  758. }
  759. }
  760. .address {
  761. display: flex;
  762. font-size: 14px;
  763. line-height: 24px;
  764. position: relative;
  765. .address_label {
  766. flex: none;
  767. width: 6.2em;
  768. margin-right: 12px;
  769. color: #646566;
  770. text-align: left;
  771. word-wrap: break-word;
  772. }
  773. .address_text {
  774. color: #323233;
  775. }
  776. &::after {
  777. position: absolute;
  778. box-sizing: border-box;
  779. content: ' ';
  780. pointer-events: none;
  781. right: 16px;
  782. bottom: 0;
  783. left: 16px;
  784. border-bottom: 1px solid #ebedf0;
  785. -webkit-transform: scaleY(0.5);
  786. transform: scaleY(0.5);
  787. margin-left: -16px;
  788. width: 100%;
  789. }
  790. }
  791. .whrite_add {
  792. width: 6.6rem;
  793. padding: .4rem .2rem;
  794. /deep/.van-field__value {
  795. input {
  796. text-align: right;
  797. }
  798. }
  799. /deep/.van-popup__close-icon--top-right {
  800. top: 5px;
  801. right: 10px;
  802. }
  803. }
  804. </style>