index.vue 39 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360
  1. <template>
  2. <view :data-theme="theme">
  3. <!-- #ifndef APP-PLUS -->
  4. <view class='cart_nav'>
  5. <nav-bar :navTitle='navTitle' iconColor='#fff' :isBackgroundColor="true" ref="navBarRef"></nav-bar>
  6. </view>
  7. <!-- #endif -->
  8. <view class='order-submission' @touchstart="touchStart">
  9. <!-- 拼团切换样式 -->
  10. <view class="allAddress" v-if="Number(orderInfoVo.secondType)<5 && Number(orderInfoVo.secondType)!==2&&orderInfoVo.type==2">
  11. <view class="h-96 relative" v-if="orderInfoVo.merchantInfoList[0].deliveryMethodMer.split(',').length==2">
  12. <view class="w-full abs-lb rd-t-24rpx flex bg--w111-fff">
  13. <view class="flex-center w-50p h-76 fs-28 rd-lt-24rpx z-2" :class="shippingType == 1 ? 'bg--w111-fff font_color' : 'bg-primary-light'"
  14. @tap="addressType(1)">商家配送</view>
  15. <view class="flex-center w-50p h-76 fs-28 rd-rt-24rpx z-2" :class="shippingType == 2 ? 'bg--w111-fff font_color' : 'bg-primary-light'"
  16. @tap="addressType(2)">到店自提</view>
  17. </view>
  18. <view class="w-50p rd-t-24rpx bg--w111-fff h-96" :class="shippingType == 1 ? 'abs-lt' : 'abs-rt'">
  19. <view class="w-full h-full relative active-card"></view>
  20. </view>
  21. </view>
  22. <view class='address group acea-row row-between-wrapper' :class="orderInfoVo.merchantInfoList[0].deliveryMethodMer.split(',').length == 1?'bd-r-14':'' "
  23. @tap='onAddress' v-if='shippingType == 1'>
  24. <view class='addressCon' v-if="addressInfo.realName">
  25. <view class='name acea-row'>
  26. <view class="line1 select-name">{{addressInfo.realName}}</view>
  27. <view class='phone'>{{addressInfo.phone}}</view>
  28. </view>
  29. <view class="acea-row">
  30. <view class="line1"><text class='default font_color' v-if="addressInfo.isDefault">[默认]</text>{{addressInfo.province}}{{addressInfo.city}}{{addressInfo.district}}{{ addressInfo.street}}{{addressInfo.detail}}</view>
  31. </view>
  32. </view>
  33. <view class='addressCon' v-else>
  34. <view class='setaddress'>设置收货地址</view>
  35. </view>
  36. <view class='iconfont icon-jiantou mt30'></view>
  37. </view>
  38. <view class='address group acea-row row-between-wrapper' v-if='shippingType == 2' :class="orderInfoVo.merchantInfoList[0].deliveryMethodMer.split(',').length == 1?'bd-r-14':'' ">
  39. <view class='addressCon' v-for="(item, index) in merchantOrderVoList" :key="index" @click="goMap(item)">
  40. <view class='name acea-row'>
  41. <view class="line1 select-name">{{item.merName}}</view>
  42. <view class='phone'>{{item.phone}}</view>
  43. </view>
  44. <view class="acea-row">
  45. <view class="line1">{{item.addressDetail}}</view>
  46. </view>
  47. </view>
  48. <view class='iconfont icon-jiantou mt30'></view>
  49. </view>
  50. <view class='line'>
  51. <image src='../static/images/line.png'></image>
  52. </view>
  53. </view>
  54. <view v-if="Number(orderInfoVo.secondType)<5 && Number(orderInfoVo.secondType)!==2&&orderInfoVo.type!=2" class="allAddress">
  55. <view class='address acea-row row-between-wrapper' @tap='onAddress'>
  56. <view class='addressCon' v-if="addressInfo.realName">
  57. <view class='name'>{{addressInfo.realName}}
  58. <text class='phone'>{{addressInfo.phone}}</text>
  59. </view>
  60. <view class="acea-row line2">
  61. <text class='default font_color' v-if="addressInfo.isDefault">[默认]</text>
  62. <text>{{addressInfo.province}}{{addressInfo.city}}{{addressInfo.district}}{{ addressInfo.street}}{{addressInfo.detail}}</text>
  63. </view>
  64. </view>
  65. <view class='addressCon' v-else>
  66. <view class='setaddress'>设置收货地址</view>
  67. </view>
  68. <view class='iconfont icon-jiantou'></view>
  69. </view>
  70. <view class='line'>
  71. <image src='../static/images/line.png'></image>
  72. </view>
  73. </view>
  74. <view class="borderPad">
  75. <view v-for="(item, index) in merchantOrderVoList" :key="index" class='wrapper borRadius14'>
  76. <orderGoods :cartInfo="item.orderInfoList" :orderInfo="item" :secondType="secondType" :orderProNum="orderProNum"
  77. :isShowBtn="false">
  78. </orderGoods>
  79. <view v-show="Number(orderInfoVo.secondType)===0&&orderInfoVo.type!=2" class="boxs">
  80. <view class='item acea-row row-between-wrapper'>
  81. <view>配送方式</view>
  82. <view v-if="item.deliveryMethodMer.length===3 && item.takeTheirSwitch" class='discount acea-row row-middle'>
  83. <text @tap="openShowBox(item,index)">{{item.shippingType === 1 ? '商家配送' : '到店自提'}}</text>
  84. <text @tap="openShowBox(item,index)" class='iconfont icon-jiantou'></text>
  85. </view>
  86. <view v-else class='discount'>
  87. {{item.shippingType === 1 ? '商家配送' : '到店自提'}}
  88. </view>
  89. </view>
  90. <view v-if="item.shippingType == 2 && item.takeTheirSwitch" class="store-address acea-row">
  91. <view>
  92. <view class="name phone">{{item.phone}}</view>
  93. <view class="name w-480px">{{item.addressDetail}}</view>
  94. </view>
  95. <view class="map" @click="goMap(item)">
  96. <text class="iconfont icon-chakanditu"></text>
  97. <view class="map_text">查看地图</view>
  98. </view>
  99. </view>
  100. </view>
  101. <view v-show="item.shippingType === 1 && Number(orderInfoVo.secondType)===0" class='item acea-row row-between-wrapper'>
  102. <view>快递费用</view>
  103. <view v-if='!item.freightFee || item.freightFee == 0' class="noCoupon">免运费</view>
  104. <view v-else class='money'>¥{{item.freightFee}}</view>
  105. </view>
  106. <view v-show="item.svipDiscountPrice != 0&&orderInfoVo.type!=2" class='item acea-row row-between-wrapper'>
  107. <view>会员优惠</view>
  108. <view class='money'>-¥{{item.svipDiscountPrice}}</view>
  109. </view>
  110. <view v-if="isProductType" class='item acea-row row-between-wrapper'>
  111. <view>店铺优惠</view>
  112. <view v-if="item.merCouponUserList && item.merCouponUserList.length" @tap='couponTap(item.merCouponUserList,item.merId, index)'>
  113. <view class='discount acea-row row-between-wrapper'>
  114. <text class="couponTitle line1">{{item.couponFee==0?`有${item.merCouponUserList.length}张优惠券可选`:`-¥${item.couponFee}`}}</text>
  115. <text class='iconfont icon-jiantou'></text>
  116. </view>
  117. </view>
  118. <view v-else class="noCoupon">暂无优惠券</view>
  119. </view>
  120. <view class='item acea-row row-between-wrapper' v-if="textareaStatus" style="height: auto;">
  121. <view>买家留言</view>
  122. <input placeholder-class='placeholder' value="" name="mark" placeholder='选填买家留言' v-model="item.remark" @input='bindHideKeyboard(item.remark,index)'
  123. style="width: 484rpx;text-align: right;"></input>
  124. </view>
  125. </view>
  126. <!--商品关联系统表单-->
  127. <view v-if="orderInfoVo.systemFormValue && orderInfoVo.systemFormValue.length" class='wrapper borRadius14'>
  128. <systemFrom v-model="orderInfoVo.systemFormValue"></systemFrom>
  129. <!-- <systemFrom :orderForm="orderInfoVo.systemFormValue" ></systemFrom>-->
  130. </view>
  131. <view class='moneyList borRadius14'>
  132. <view v-show="secondType !== ProductTypeEnum.Integral" class='item acea-row row-between-wrapper'>
  133. <view>商品总价</view>
  134. <view class='money'>¥{{orderInfoVo.proTotalFee || 0}}</view>
  135. </view>
  136. <view class='item acea-row row-between-wrapper' v-if="parseInt(orderInfoVo.freightFee) > 0">
  137. <view>运费:</view>
  138. <view class='money'>+¥{{orderInfoVo.freightFee}}</view>
  139. </view>
  140. <view v-show="orderInfoVo.svipDiscountPrice != 0 &&orderInfoVo.type!=2" class='item acea-row row-between-wrapper'>
  141. <view>会员优惠</view>
  142. <view class='money'>-¥{{orderInfoVo.svipDiscountPrice}}</view>
  143. </view>
  144. <view class='item acea-row row-between-wrapper' v-if="parseInt(merCouponFee) > 0 && isProductType">
  145. <view>店铺优惠</view>
  146. <view class='money'>-¥{{merCouponFee}}</view>
  147. </view>
  148. <view v-if="isProductType" class='item acea-row row-between-wrapper'>
  149. <view>平台优惠</view>
  150. <view v-if="orderInfoVo.platCouponUserList && orderInfoVo.platCouponUserList.length" class='discount acea-row row-between-wrapper'
  151. @tap='couponTap(orderInfoVo.platCouponUserList,0)'>
  152. <text class="couponTitle line1">{{platCouponFee==0?`有${orderInfoVo.platCouponUserList.length}张优惠券可选`:`-¥${platCouponFee}`}}</text>
  153. <text class='iconfont icon-jiantou'></text>
  154. </view>
  155. <view v-else class="noCoupon">暂无优惠券</view>
  156. </view>
  157. <view class='item acea-row row-between-wrapper' v-if="orderInfoVo.integralDeductionSwitch && isProductType">
  158. <view>积分抵扣</view>
  159. <view class='discount acea-row row-middle'>
  160. <view class="mr14"> {{isUseIntegral ? "使用积分":"当前积分"}}
  161. <text class='num font_color'>{{ isUseIntegral ? orderInfoVo.surplusIntegral : orderInfoVo.userIntegral}}</text>
  162. </view>
  163. <checkbox-group @change="ChangeIntegral">
  164. <checkbox :checked='isUseIntegral ? true : false' :disabled="orderInfoVo.userIntegral==0 && !isUseIntegral" />
  165. </checkbox-group>
  166. </view>
  167. </view>
  168. <view class='item acea-row row-between-wrapper' v-if="Number(orderInfoVo.deductionPrice) > 0">
  169. <view>抵扣金额</view>
  170. <view class='money'>-¥{{orderInfoVo.deductionPrice}}</view>
  171. </view>
  172. </view>
  173. <view style='height:120rpx;'></view>
  174. </view>
  175. <view class='footer acea-row row-between-wrapper'>
  176. <view class="acea-row row-middle">合计:
  177. <!-- 积分价格 -->
  178. <PointsPrice v-if="orderInfoVo.secondType === ProductTypeEnum.Integral" :pointsPrice="orderInfoVo"
  179. :pointsGoodsStyle="hotPointsStyle"></PointsPrice>
  180. <!-- 其他价格 -->
  181. <text v-else class='price_color'>¥{{orderInfoVo.payFee || 0}}</text>
  182. </view>
  183. <view class='settlement' style='z-index:100' @tap="SubOrder">
  184. {{secondType === ProductTypeEnum.Integral?"确认兑换":"立即下单"}}
  185. </view>
  186. </view>
  187. </view>
  188. <couponListWindow :coupon='coupon' @ChangCouponsClone="ChangCouponsClone" :openType='openType' @ChangCoupons="ChangCoupons"
  189. :orderShow="orderShow" :surplusFee="surplusFee"></couponListWindow>
  190. <view v-if="isShowBox">
  191. <checkDelivery :isShowBox="isShowBox" :activeObj="activeObj" @close="boxClose" @confirmBtn="getShippingType">
  192. </checkDelivery>
  193. </view>
  194. <!-- 满员提示 -->
  195. <uni-popup ref="sh_popup" background-color="#fff" borderRadius="10px">
  196. <view class="sh_popup-content">
  197. <view class="sh_popup_title">
  198. 提示
  199. </view>
  200. <view class="sh_popup_text">
  201. 该团已拼成,是否自行开团?
  202. </view>
  203. <view class="sh_popup_btn">
  204. <view class="no_btn btn font_color" @click="popupClose">返回首页</view>
  205. <view class="yes_btn btn" @click="toAudit">去开团</view>
  206. </view>
  207. </view>
  208. </uni-popup>
  209. </view>
  210. </template>
  211. <script>
  212. // +----------------------------------------------------------------------
  213. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  214. // +----------------------------------------------------------------------
  215. // | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
  216. // +----------------------------------------------------------------------
  217. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  218. // +----------------------------------------------------------------------
  219. // | Author: CRMEB Team <admin@crmeb.com>
  220. // +----------------------------------------------------------------------
  221. import {
  222. getCouponsOrderPrice,
  223. orderCreate,
  224. postOrderComputed,
  225. loadPreOrderApi
  226. } from '@/api/order.js';
  227. import {
  228. getAddressDetail,
  229. getAddressDefault
  230. } from '@/api/user.js';
  231. // import {
  232. // openPaySubscribe
  233. // } from '@/utils/SubscribeMessage.js';
  234. import {
  235. takeTheirApi
  236. } from '@/api/merchant.js';
  237. import {
  238. CACHE_LONGITUDE,
  239. CACHE_LATITUDE
  240. } from '@/config/cache.js';
  241. import dayjs from "@/plugin/dayjs/dayjs.min.js";
  242. import couponListWindow from '../components/couponListWindow';
  243. import orderGoods from '../components/orderGoods'
  244. import navBar from '@/components/navBar';
  245. import checkDelivery from '../components/checkDelivery/index.vue';
  246. import systemFrom from '../components/systemFrom/index.vue';
  247. import PointsPrice from '@/components/PointsPrice.vue';
  248. import {
  249. toLogin
  250. } from '@/libs/login.js';
  251. import {
  252. mapGetters
  253. } from "vuex";
  254. import {
  255. Debounce
  256. } from '@/utils/validate.js'
  257. import {
  258. ProductTypeEnum,
  259. ProductMarketingTypeEnum
  260. } from "../../../enums/productEnums";
  261. import orderPay from "@/mixins/OrderPay.js";
  262. let app = getApp();
  263. /**
  264. * 积分商品推荐样式
  265. */
  266. const hotPointsStyle = {
  267. iconStyle: {
  268. width: '28rpx',
  269. height: '28rpx'
  270. },
  271. priceStyle: {
  272. fontSize: '28rpx',
  273. },
  274. unitStyle: {
  275. fontSize: '26rpx',
  276. },
  277. }
  278. export default {
  279. mixins: [orderPay],
  280. components: {
  281. navBar,
  282. couponListWindow,
  283. orderGoods,
  284. checkDelivery,
  285. systemFrom,
  286. PointsPrice
  287. },
  288. computed: {
  289. // 是否可以使用优惠券、积分抵扣。 基础订单/云盘订单,卡密,虚拟,可以使用优惠券、积分抵扣
  290. isProductType() {
  291. return this.type === ProductMarketingTypeEnum.Normal && this.secondType !== this.ProductTypeEnum
  292. .Integral && this.secondType !== this.ProductTypeEnum.Video
  293. },
  294. ...mapGetters(['productType', 'isLogin'])
  295. },
  296. data() {
  297. return {
  298. hotPointsStyle: hotPointsStyle,
  299. ProductMarketingTypeEnum: ProductMarketingTypeEnum,
  300. ProductTypeEnum: ProductTypeEnum,
  301. navTitle: '提交订单',
  302. homeTop: 20,
  303. orderShow: 'orderShow', //下单页面使用优惠券组件不展示tab切换页
  304. textareaStatus: true,
  305. openType: 1, //优惠券打开方式 1=使用
  306. couponShow: false,
  307. coupon: {
  308. coupon: false,
  309. list: [], //商户优惠券
  310. statusTile: '立即使用',
  311. couponMoney: 0
  312. }, //优惠券组件
  313. addressInfo: {}, //地址信息
  314. addressId: 0, //地址id
  315. orderMerchantRequestList: [], //商户属性集合
  316. cartId: '', //购物车id
  317. userInfo: {}, //用户信息
  318. mark: '', //买家留言
  319. couponFee: '请选择', //优惠券
  320. coupon_price: 0, //优惠券抵扣金额
  321. isUseIntegral: false, //是否使用积分
  322. integral_price: 0, //积分抵扣金额
  323. integral: 0,
  324. ChangePrice: 0, //使用积分抵扣变动后的金额
  325. formIds: [], //收集formid
  326. status: 0,
  327. is_address: false,
  328. toPay: false, //修复进入支付时页面隐藏从新刷新页面
  329. shippingType: 1,
  330. storePostage: 0,
  331. contacts: '',
  332. contactsTel: '',
  333. mydata: {},
  334. merchantOrderVoList: [],
  335. priceGroup: {},
  336. animated: false,
  337. totalPrice: 0,
  338. integralRatio: "0",
  339. orderKey: "",
  340. // usableCoupon: {},
  341. offlinePostage: "",
  342. news: true,
  343. again: false,
  344. addAgain: false,
  345. bargain: false, //是否是砍价
  346. combination: false, //是否是拼团
  347. secKill: false, //是否是秒杀
  348. orderInfoVo: {},
  349. addressList: [], //地址列表数据
  350. orderProNum: 0,
  351. orderNo: '', //预下单订单号
  352. theme: app.globalData.theme,
  353. addressChangeId: 0,
  354. isShowBox: false,
  355. activeObj: {},
  356. activeIndex: 0, // 选中店铺索引
  357. type: 0, // 0-基础订单,1-秒杀订单,2-拼团订单
  358. secondType: 0, //订单二级类型:0-普通订单,1-积分订单,2-虚拟订单,4-视频号订单,5-云盘订单,6-卡密订单
  359. merId: 0, //商户id,用于判断商户优惠券还是平台优惠券,平台优惠券商户id为0
  360. platUserCouponObj: {}, //平台优惠券对象,用于缓存数据使用
  361. platUserCouponId: 0, //平台优惠券id
  362. platCouponFee: '', //平台优惠券金额
  363. merCouponFee: '', //店铺优惠券总金额
  364. surplusFee: 0, //商品总金额-商户优惠券金额=平台端可使用优惠券的门槛
  365. merUserCouponId: 0, //店铺使用优惠券的id
  366. tempCouponObj: {}, //临时优惠券数据
  367. merchangtInfo: {}, //商户信息
  368. orderForm: [], //系统表单配置的数据
  369. orderExtend: {}, //提交接口表单的数据
  370. productId: '',
  371. groupActivityId: ''
  372. };
  373. },
  374. watch: {
  375. isLogin: {
  376. handler: function(newV, oldV) {
  377. if (newV) {
  378. this.getloadPreOrder();
  379. }
  380. },
  381. deep: true
  382. },
  383. },
  384. onLoad(options) {
  385. this.orderNo = options.orderNo || 0;
  386. this.addressChangeId = parseInt(options.addressId) || 0;
  387. this.is_address = options.is_address ? true : false;
  388. console.log('11111111111111111111111')
  389. if (this.isLogin) {
  390. this.getloadPreOrder();
  391. } else {
  392. toLogin();
  393. }
  394. },
  395. /**
  396. * 生命周期函数--监听页面显示
  397. */
  398. onShow: function() {
  399. let _this = this
  400. this.textareaStatus = true;
  401. },
  402. methods: {
  403. //滚动
  404. touchStart() {
  405. this.$refs.navBarRef.currentPage = false;
  406. },
  407. popupClose() {
  408. this.$refs.sh_popup.close()
  409. uni.switchTab({
  410. url: '/pages/index/index'
  411. });
  412. },
  413. //去开团
  414. toAudit() {
  415. this.$refs.sh_popup.close()
  416. uni.navigateTo({
  417. url: `/pages/goods/goods_details/index?id=${this.productId}&mt=2&gd=${this.groupActivityId}`
  418. })
  419. },
  420. addressType(type) {
  421. this.merchantOrderVoList[0].shippingType = type
  422. this.getShippingType(this.merchantOrderVoList[0])
  423. if (type == 2) {
  424. setTimeout(() => {
  425. this.shippingType = type
  426. }, 300)
  427. } else {
  428. this.shippingType = type
  429. }
  430. },
  431. //选择配送方式回调
  432. getShippingType(item) {
  433. this.orderMerchantRequestList[this.activeIndex].shippingType = item.shippingType;
  434. this.$set(this.merchantOrderVoList[this.activeIndex], 'shippingType', item.shippingType);
  435. if (item.shippingType === 2) this.getTakeTheir(item.merId);
  436. this.computedPrice();
  437. this.isShowBox = false;
  438. },
  439. getTakeTheir(id) {
  440. takeTheirApi(id).then(res => {
  441. this.merchangtInfo = res.data; //商户信息
  442. this.$set(this.merchantOrderVoList[this.activeIndex], 'addressDetail', res.data.addressDetail);
  443. this.$set(this.merchantOrderVoList[this.activeIndex], 'phone', res.data.phone);
  444. this.$set(this.merchantOrderVoList[this.activeIndex], 'latitude', res.data.latitude);
  445. this.$set(this.merchantOrderVoList[this.activeIndex], 'longitude', res.data.longitude);
  446. }).catch(err => {
  447. return this.$util.Tips({
  448. title: err
  449. });
  450. })
  451. },
  452. //查看内置地图
  453. goMap(item) {
  454. let that = this;
  455. //#ifdef H5
  456. if (that.$wechat.isWeixin() === true) {
  457. that.$wechat.seeLocation({
  458. latitude: parseFloat(this.merchantOrderVoList[this.activeIndex].latitude),
  459. longitude: parseFloat(this.merchantOrderVoList[this.activeIndex].longitude),
  460. name: item.merName,
  461. address: item.addressDetail ? item.addressDetail : '',
  462. }).then(res => {
  463. console.log('success');
  464. })
  465. } else {
  466. //#endif
  467. uni.openLocation({
  468. latitude: parseFloat(this.merchantOrderVoList[this.activeIndex].latitude),
  469. longitude: parseFloat(this.merchantOrderVoList[this.activeIndex].longitude),
  470. scale: 8,
  471. name: item.merName,
  472. address: item.addressDetail ? item.addressDetail : '',
  473. success: function(res) {
  474. that.go_map = true
  475. },
  476. });
  477. // #ifdef H5
  478. }
  479. //#endif
  480. },
  481. // 打开配送方式弹窗
  482. openShowBox(item, index) {
  483. this.activeObj = item
  484. this.activeIndex = index
  485. this.isShowBox = true
  486. },
  487. boxClose() {
  488. this.isShowBox = false
  489. },
  490. // 订单详情
  491. getloadPreOrder: function() {
  492. loadPreOrderApi(this.orderNo).then(res => {
  493. let orderInfoVo = res.data;
  494. if (orderInfoVo.merchantInfoList[0].orderInfoList[0].groupBuyActivityId) {
  495. this.groupActivityId = orderInfoVo.merchantInfoList[0].orderInfoList[0].groupBuyActivityId
  496. this.productId = orderInfoVo.merchantInfoList[0].orderInfoList[0].productId
  497. }
  498. if (orderInfoVo.merchantInfoList[0].deliveryMethodMer.split(',').length == 1) {
  499. this.shippingType = orderInfoVo.merchantInfoList[0].deliveryMethodMer
  500. }
  501. this.orderInfoVo = {
  502. ...orderInfoVo,
  503. systemFormValue: orderInfoVo.systemFormValue ? this.$util.objToArr(JSON.parse(
  504. orderInfoVo.systemFormValue)) : []
  505. };
  506. console.log(orderInfoVo.merchantInfoList, '0000000000000000000000000000000')
  507. this.merchantOrderVoList = orderInfoVo.merchantInfoList; //商户端数据
  508. this.platCouponFee = orderInfoVo.platCouponFee; //平台优惠券总金额
  509. this.platUserCouponId = orderInfoVo.platUserCouponId;
  510. this.merCouponFee = orderInfoVo.merCouponFee; //店铺优惠券总金额
  511. orderInfoVo.merchantInfoList.map(item => {
  512. this.orderMerchantRequestList.push({
  513. shippingType: item.shippingType,
  514. merId: item.merId,
  515. remark: '',
  516. userCouponId: item.userCouponId
  517. })
  518. if (item.shippingType === 2) this.getTakeTheir(item.merId)
  519. item.addressDetail = this.merchangtInfo.addressDetail;
  520. item.phone = this.merchangtInfo.phone;
  521. item.latitude = this.merchangtInfo.latitude;
  522. item.longitude = this.merchangtInfo.longitude;
  523. });
  524. this.type = orderInfoVo.type; //订单类型
  525. this.secondType = orderInfoVo
  526. .secondType; //订单二级类型:0-普通订单,1-积分订单,2-虚拟订单,4-视频号订单,5-云盘订单,6-卡密订单
  527. this.orderProNum = orderInfoVo.orderProNum;
  528. if (orderInfoVo.addressId && this.addressChangeId === 0) {
  529. this.addressId = orderInfoVo.addressId;
  530. } else {
  531. this.addressId = this.addressChangeId;
  532. if (orderInfoVo.addressId != this.addressChangeId && this.addressChangeId > 0)
  533. this.computedPrice();
  534. }
  535. this.getaddressInfo();
  536. }).catch(err => {
  537. uni.navigateTo({
  538. url: '/pages/goods/order_list/index'
  539. });
  540. })
  541. },
  542. // 计算订单价格
  543. computedPrice: function() {
  544. uni.showLoading({
  545. title: '加载中...'
  546. });
  547. let shippingType = this.shippingType;
  548. postOrderComputed({
  549. addressId: this.addressId,
  550. isUseIntegral: this.isUseIntegral,
  551. orderMerchantRequestList: this.orderMerchantRequestList,
  552. preOrderNo: this.orderNo,
  553. platUserCouponId: this.platUserCouponId
  554. }).then(res => {
  555. let data = res.data;
  556. //usedIntegral 使用的积分,surplusIntegral 剩余积分
  557. data.merOrderResponseList.map((item, i) => {
  558. this.merchantOrderVoList[i].freightFee = item.freightFee
  559. this.merchantOrderVoList[i].couponFee = item.couponFee
  560. });
  561. this.orderInfoVo.platCouponUserList = data.platCouponUserList; //平台优惠券数据
  562. this.merCouponFee = data.merCouponFee; //店铺优惠券总金额
  563. this.orderInfoVo.couponFee = data.couponFee; //优惠券优惠金额
  564. this.orderInfoVo.userIntegral = data.surplusIntegral; //使用的积分
  565. this.orderInfoVo.deductionPrice = data.deductionPrice;
  566. this.orderInfoVo.freightFee = data.freightFee;
  567. this.orderInfoVo.payFee = data.payFee;
  568. this.orderInfoVo.proTotalFee = data.proTotalFee;
  569. this.orderInfoVo.surplusIntegral = data.usedIntegral; //剩余积分
  570. this.platCouponFee = data.platCouponFee; //平台优惠金额
  571. this.orderInfoVo.integralDeductionSwitch = data.integralDeductionSwitch //积分抵扣开关
  572. //选中商户优惠券的值
  573. this.merchantOrderVoList[this.activeIndex].merCouponUserList = data.merOrderResponseList[
  574. this.activeIndex].merCouponUserList; //商户数据
  575. this.merUserCouponId = data.merOrderResponseList[this.activeIndex]
  576. .userCouponId //店铺使用优惠券的id
  577. uni.hideLoading();
  578. }).catch(err => {
  579. uni.hideLoading();
  580. return this.$util.Tips({
  581. title: err
  582. });
  583. });
  584. },
  585. bindPickerChange: function(e) {
  586. let value = e.detail.value;
  587. this.shippingType = value;
  588. this.computedPrice();
  589. },
  590. /**
  591. * 使用积分抵扣
  592. */
  593. ChangeIntegral: function() {
  594. this.isUseIntegral = !this.isUseIntegral;
  595. this.computedPrice();
  596. },
  597. bindHideKeyboard: function(e, i) {
  598. this.orderMerchantRequestList[i].remark = e;
  599. },
  600. /*
  601. * 获取默认收货地址或者获取某条地址信息
  602. */
  603. getaddressInfo: function() {
  604. if (this.addressId) {
  605. getAddressDetail(this.addressId).then(res => {
  606. if (res.data) {
  607. res.data.isDefault = res.data.isDefault;
  608. this.addressInfo = res.data || {};
  609. }
  610. })
  611. }
  612. },
  613. //关闭优惠券弹窗
  614. ChangCouponsClone: function(coupon) {
  615. this.coupon.list = [];
  616. this.coupon.coupon = false;
  617. },
  618. //点击优惠券弹窗确定后
  619. ChangCoupons: function(item) {
  620. this.coupon.list = [];
  621. if (item.merId === 0) {
  622. this.platUserCouponId = item.isChecked ? item.id : 0;
  623. } else {
  624. this.$set(this.orderMerchantRequestList[this.activeIndex], 'userCouponId', item.isChecked ? item
  625. .id : 0);
  626. }
  627. this.coupon.coupon = false;
  628. this.computedPrice();
  629. },
  630. /**
  631. * 选择优惠券
  632. * @param {Object} item优惠券对象
  633. * @param {Number} merId商户id
  634. * @param {Number} index索引
  635. */
  636. couponTap: function(item, merId, index) {
  637. this.$set(this.coupon, 'list', item);
  638. this.$set(this.coupon, 'couponMoney', item);
  639. this.coupon.coupon = true;
  640. this.merId = merId; //商户id
  641. if (merId !== 0) this.activeIndex = index;
  642. this.coupon.loading = false;
  643. },
  644. /**
  645. * 获取当前金额可用优惠券
  646. *
  647. */
  648. getCouponList: function(item, merId) {
  649. this.$set(this.coupon, 'list', item);
  650. this.openType = 1;
  651. uni.hideLoading();
  652. },
  653. onAddress: function() {
  654. uni.navigateTo({
  655. url: '/pages/address/user_address_list/index?orderNo=' + this.orderNo
  656. });
  657. },
  658. realName: function(e) {
  659. this.contacts = e.detail.value;
  660. },
  661. phone: function(e) {
  662. this.contactsTel = e.detail.value;
  663. },
  664. payment: function(data) {
  665. let that = this;
  666. // #ifdef MP
  667. uni.checkBeforeAddOrder({
  668. success(res) {
  669. console.log("下单前置检查 成功:", JSON.stringify(res));
  670. const traceId = res.data.traceId;
  671. data.traceId = traceId;
  672. that.onCreate(data);
  673. },
  674. fail(res) {
  675. console.log("下单前置检查 失败:", JSON.stringify(res));
  676. }
  677. });
  678. // #endif
  679. // #ifndef MP
  680. that.onCreate(data);
  681. // #endif
  682. },
  683. onCreate(data) {
  684. orderCreate(data).then(res => {
  685. if (res.data.groupBuyIsFull == 1) {
  686. uni.hideLoading();
  687. return this.$refs.sh_popup.open('center')
  688. }
  689. if (this.secondType === this.ProductTypeEnum.Integral && this.orderInfoVo.payFee == 0) {
  690. // 积分商品并且支付金额为0时,直接默认走余额支付的逻辑,订单支付成功跳转到支付结果页
  691. this.changeOrderPay(res.data.orderNo, 'yue', 'yue', 'integral', 'integral', '0')
  692. } else {
  693. // 其他商品走正常流程,去支付收银台页面
  694. this.getToPayment(this.secondType, res.data)
  695. }
  696. uni.hideLoading();
  697. }).catch(err => {
  698. uni.hideLoading();
  699. return this.$util.Tips({
  700. title: err
  701. });
  702. });
  703. },
  704. //立即下单
  705. SubOrder: Debounce(function(e) {
  706. let that = this,
  707. data = {};
  708. let flag = false;
  709. that.orderMerchantRequestList.map(function(v) {
  710. if (v.shippingType === 1 && !that.addressId && that.orderInfoVo.secondType !== 2) {
  711. flag = true;
  712. }
  713. });
  714. if (flag) {
  715. that.$util.Tips({
  716. title: '请选择收货地址'
  717. });
  718. return;
  719. }
  720. let systemFormValue = Array.from(this.orderInfoVo.systemFormValue)
  721. let systemFormData = []
  722. for (var i = 0; i < systemFormValue.length; i++) {
  723. let curdata = systemFormValue[i]
  724. if (['radios'].indexOf(curdata.name) == -1 && (curdata.titleShow.val || (['uploadPicture',
  725. 'dateranges'
  726. ].indexOf(curdata.name) == -1 && curdata.value && curdata.value.trim()))) {
  727. if ((curdata.name === 'texts' && curdata.valConfig.tabVal == 0) || ['dates', 'times',
  728. 'selects', 'citys', 'checkboxs'
  729. ].indexOf(curdata.name) != -1) {
  730. if (!curdata.value || (curdata.value && !curdata.value.trim())) {
  731. return that.$util.Tips({
  732. title: `请填写${curdata.titleConfig.val}`
  733. });
  734. }
  735. }
  736. if (curdata.name === 'timeranges') {
  737. if (!curdata.value) {
  738. return that.$util.Tips({
  739. title: `请选择${curdata.titleConfig.val}`
  740. });
  741. }
  742. }
  743. if (curdata.name === 'dateranges') {
  744. if (!curdata.value.length) {
  745. return that.$util.Tips({
  746. title: `请选择${curdata.titleConfig.val}`
  747. });
  748. }
  749. }
  750. if (curdata.name === 'texts' && curdata.valConfig.tabVal == 4) {
  751. if (curdata.value <= 0) {
  752. return that.$util.Tips({
  753. title: `请填写大于0的${curdata.titleConfig.val}`
  754. });
  755. }
  756. }
  757. if (curdata.name === 'texts' && curdata.valConfig.tabVal == 3) {
  758. if (!/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(curdata.value)) {
  759. return that.$util.Tips({
  760. title: `请填写正确的${curdata.titleConfig.val}`
  761. });
  762. }
  763. }
  764. if (curdata.name === 'texts' && curdata.valConfig.tabVal == 1) {
  765. if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(curdata.value)) {
  766. return that.$util.Tips({
  767. title: `请填写正确的${curdata.titleConfig.val}`
  768. });
  769. }
  770. }
  771. if (curdata.name === 'texts' && curdata.valConfig.tabVal == 2) {
  772. if (!
  773. /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/i
  774. .test(curdata.value)) {
  775. return that.$util.Tips({
  776. title: `请填写正确的${curdata.titleConfig.val}`
  777. });
  778. }
  779. }
  780. if (curdata.name === 'uploadPicture') {
  781. if (!curdata.value.length) {
  782. return that.$util.Tips({
  783. title: `请上传${curdata.titleConfig.val}`
  784. });
  785. }
  786. }
  787. }
  788. this.orderExtend[curdata.key] = curdata.value
  789. systemFormData.push({
  790. title: curdata.titleConfig.val,
  791. value: curdata.value,
  792. })
  793. }
  794. data = {
  795. addressId: that.addressId,
  796. orderMerchantRequestList: that.orderMerchantRequestList,
  797. isUseIntegral: that.isUseIntegral,
  798. preOrderNo: that.orderNo,
  799. platUserCouponId: this.platUserCouponId,
  800. systemFormId: this.orderInfoVo.systemFormId,
  801. orderExtend: JSON.stringify(systemFormData)
  802. };
  803. uni.showLoading({
  804. title: '订单提交中'
  805. });
  806. that.payment(data);
  807. //// #ifdef MP
  808. // openPaySubscribe().then(() => {
  809. // that.payment(data);
  810. // });
  811. // // #endif
  812. // // #ifndef MP
  813. // that.payment(data);
  814. // // #endif
  815. })
  816. }
  817. }
  818. </script>
  819. <style lang="scss" scoped>
  820. .w-480px {
  821. width: 480rpx;
  822. }
  823. .noCoupon {
  824. color: #999999;
  825. }
  826. .icon-jiantou {
  827. font-size: 26rpx;
  828. color: #515151;
  829. margin-left: 14rpx;
  830. }
  831. .mr14 {
  832. margin-right: 14rpx;
  833. }
  834. .couponTitle {
  835. width: 430rpx;
  836. display: inline-block;
  837. text-align: right;
  838. @include main_color(theme);
  839. }
  840. .store-address {
  841. padding: 20rpx;
  842. margin: 0 24rpx;
  843. background: #F6F6F6;
  844. border-radius: 8rpx;
  845. font-size: 24rpx;
  846. /*垂直居中*/
  847. -webkit-box-align: center;
  848. /*旧版本*/
  849. -moz-box-align: center;
  850. /*旧版本*/
  851. -ms-flex-align: center;
  852. /*混合版本*/
  853. -webkit-align-items: center;
  854. /*新版本*/
  855. align-items: center;
  856. /*新版本*/
  857. .phone {
  858. margin-bottom: 10rpx;
  859. color: #282828;
  860. font-weight: bold;
  861. }
  862. .name {
  863. padding-right: 20rpx;
  864. }
  865. .info {
  866. flex: 1;
  867. }
  868. .line2 {
  869. width: 456rpx !important;
  870. }
  871. .map {
  872. text-align: center;
  873. padding-left: 36rpx;
  874. position: relative;
  875. @include main_color(theme);
  876. &::before {
  877. content: '';
  878. display: inline-block;
  879. width: 2rpx;
  880. height: 42rpx;
  881. background-color: #DDDDDD;
  882. position: absolute;
  883. left: 0;
  884. top: 18rpx;
  885. }
  886. .iconfont {
  887. color: var(--view-theme);
  888. }
  889. .map_text {
  890. color: var(--view-theme);
  891. }
  892. }
  893. }
  894. .font_color {
  895. @include main_color(theme);
  896. }
  897. .price_color {
  898. @include price_color(theme);
  899. }
  900. .line2 {
  901. width: 624rpx;
  902. }
  903. .textR {
  904. text-align: right;
  905. }
  906. .order-submission .line {
  907. width: 100%;
  908. height: 3rpx;
  909. }
  910. .order-submission .line image {
  911. width: 100%;
  912. height: 100%;
  913. display: block;
  914. }
  915. .order-submission .address {
  916. padding: 40rpx 24rpx;
  917. background-color: #fff;
  918. box-sizing: border-box;
  919. }
  920. .order-submission .address .addressCon {
  921. width: 596rpx;
  922. font-size: 26rpx;
  923. color: #666;
  924. }
  925. .order-submission .address .addressCon .name {
  926. font-size: 30rpx;
  927. color: #282828;
  928. font-weight: bold;
  929. // margin-bottom: 10rpx;
  930. }
  931. .order-submission .address .addressCon .name .phone {
  932. margin-left: 50rpx;
  933. }
  934. .order-submission .address .addressCon .default {
  935. margin-right: 12rpx;
  936. }
  937. .order-submission .address .addressCon .setaddress {
  938. color: #333;
  939. font-size: 28rpx;
  940. }
  941. .order-submission .address .iconfont {
  942. color: #707070;
  943. }
  944. .order-submission .allAddress {
  945. width: 100%;
  946. @include index-gradient(theme);
  947. padding: 30rpx 24rpx 0 24rpx;
  948. }
  949. .order-submission .allAddress .address.group {
  950. border-radius: 0;
  951. }
  952. .order-submission .allAddress .address {
  953. max-height: 180rpx;
  954. margin: -2rpx auto 0 auto;
  955. border-radius: 14rpx 14rpx 0 0;
  956. }
  957. .order-submission .allAddress .line {
  958. width: 100%;
  959. margin: 0 auto;
  960. }
  961. .order-submission .wrapper .item .discount .placeholder {
  962. color: #ccc;
  963. }
  964. .order-submission .wrapper {
  965. background-color: #fff;
  966. margin-top: 24rpx;
  967. }
  968. .order-submission .wrapper .item {
  969. padding: 28rpx 24rpx;
  970. font-size: 30rpx;
  971. color: #333333;
  972. }
  973. .order-submission .wrapper .item .discount {
  974. font-size: 30rpx;
  975. color: #333;
  976. }
  977. .order-submission .wrapper .item .discount .iconfont {
  978. color: #515151;
  979. }
  980. .order-submission .wrapper .item .discount .num {
  981. font-size: 32rpx;
  982. margin-right: 20rpx;
  983. }
  984. .order-submission .wrapper .item .shipping {
  985. font-size: 30rpx;
  986. color: #999;
  987. position: relative;
  988. padding-right: 58rpx;
  989. }
  990. .order-submission .wrapper .item .shipping .iconfont {
  991. font-size: 35rpx;
  992. color: #707070;
  993. position: absolute;
  994. right: 0;
  995. top: 50%;
  996. transform: translateY(-50%);
  997. margin-left: 30rpx;
  998. }
  999. .order-submission .wrapper .item textarea {
  1000. background-color: #f9f9f9;
  1001. width: auto !important;
  1002. height: 140rpx;
  1003. border-radius: 14rpx;
  1004. margin-top: 30rpx;
  1005. padding: 15rpx;
  1006. box-sizing: border-box;
  1007. font-weight: 400;
  1008. }
  1009. .order-submission .wrapper .item .placeholder {
  1010. color: #ccc;
  1011. }
  1012. .order-submission .wrapper .item .list {
  1013. margin-top: 35rpx;
  1014. }
  1015. .order-submission .wrapper .item .list .payItem {
  1016. border: 1px solid #eee;
  1017. border-radius: 14rpx;
  1018. height: 86rpx;
  1019. width: 100%;
  1020. box-sizing: border-box;
  1021. margin-top: 20rpx;
  1022. font-size: 28rpx;
  1023. color: #282828;
  1024. }
  1025. .order-submission .wrapper .item .list .payItem.on {
  1026. // border-color: #fc5445;
  1027. @include coupons_border_color(theme);
  1028. color: $theme-color;
  1029. }
  1030. .order-submission .wrapper .item .list .payItem .name {
  1031. width: 50%;
  1032. text-align: center;
  1033. border-right: 1px solid #eee;
  1034. }
  1035. .order-submission .wrapper .item .list .payItem .name .iconfont {
  1036. width: 44rpx;
  1037. height: 44rpx;
  1038. border-radius: 50%;
  1039. text-align: center;
  1040. line-height: 44rpx;
  1041. background-color: #fe960f;
  1042. color: #fff;
  1043. font-size: 30rpx;
  1044. margin-right: 15rpx;
  1045. }
  1046. .order-submission .wrapper .item .list .payItem .name .iconfont.icon-weixin2 {
  1047. background-color: #41b035;
  1048. }
  1049. .order-submission .wrapper .item .list .payItem .name .iconfont.icon-zhifubao {
  1050. background-color: #00AAEA;
  1051. }
  1052. .order-submission .wrapper .item .list .payItem .tip {
  1053. width: 49%;
  1054. text-align: center;
  1055. font-size: 26rpx;
  1056. color: #aaa;
  1057. }
  1058. .order-submission .moneyList {
  1059. margin-top: 15rpx;
  1060. background-color: #fff;
  1061. padding: 0 30rpx;
  1062. margin-bottom: calc(constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
  1063. margin-bottom: calc(env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
  1064. }
  1065. .order-submission .moneyList .item {
  1066. font-size: 30rpx;
  1067. color: #282828;
  1068. height: 96rpx;
  1069. }
  1070. .order-submission .moneyList .item~.item {
  1071. // margin-top: 20rpx;
  1072. }
  1073. .order-submission .moneyList .item .money {
  1074. color: #666666;
  1075. }
  1076. .order-submission .footer {
  1077. width: 100%;
  1078. height: 100rpx;
  1079. background-color: #fff;
  1080. padding: 0 30rpx;
  1081. font-size: 28rpx;
  1082. color: #333;
  1083. box-sizing: border-box;
  1084. position: fixed;
  1085. bottom: 0;
  1086. left: 0;
  1087. height: calc(100rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
  1088. height: calc(100rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
  1089. z-index: 999;
  1090. }
  1091. .order-submission .footer .settlement {
  1092. background-color: #fff;
  1093. font-size: 30rpx;
  1094. color: #fff;
  1095. width: 240rpx;
  1096. height: 70rpx;
  1097. @include main_bg_color(theme);
  1098. border-radius: 50rpx;
  1099. text-align: center;
  1100. line-height: 70rpx;
  1101. }
  1102. .footer .transparent {
  1103. opacity: 0
  1104. }
  1105. /deep/ checkbox .uni-checkbox-input.uni-checkbox-input-checked {
  1106. @include main_bg_color(theme);
  1107. border: none !important;
  1108. color: #fff !important
  1109. }
  1110. /deep/ checkbox .wx-checkbox-input.wx-checkbox-input-checked {
  1111. @include main_bg_color(theme);
  1112. border: none !important;
  1113. color: #fff !important;
  1114. margin-right: 0 !important;
  1115. }
  1116. // 切换
  1117. /deep/.uni-date-x--border {
  1118. border: 0;
  1119. }
  1120. /deep/.uni-icons {
  1121. font-size: 0 !important;
  1122. }
  1123. /deep/.uni-date-x {
  1124. color: #999;
  1125. font-size: 15px;
  1126. }
  1127. /deep/.uni-date__x-input {
  1128. font-size: 15px;
  1129. }
  1130. /deep/uni-checkbox[disabled] .uni-checkbox-input {
  1131. background-color: #eee;
  1132. }
  1133. .abs-lt .active-card {
  1134. &:after {
  1135. right: -67rpx;
  1136. }
  1137. }
  1138. .abs-rt .active-card {
  1139. &:after {
  1140. left: -67rpx;
  1141. -moz-transform: scaleX(-1);
  1142. -webkit-transform: scaleX(-1);
  1143. -o-transform: scaleX(-1);
  1144. transform: scaleX(-1);
  1145. }
  1146. }
  1147. .active-card {
  1148. &:after {
  1149. content: "";
  1150. width: 67rpx;
  1151. height: 76rpx;
  1152. background-image: url('../static/images/nav_circle_left.png');
  1153. background-size: contain;
  1154. background-repeat: no-repeat;
  1155. position: absolute;
  1156. bottom: 0;
  1157. z-index: 4;
  1158. }
  1159. }
  1160. .line {
  1161. width: 680rpx;
  1162. margin: auto;
  1163. height: 3rpx;
  1164. }
  1165. .line image {
  1166. width: 100%;
  1167. height: 100%;
  1168. display: block;
  1169. }
  1170. .address {
  1171. background-color: #fff;
  1172. box-sizing: border-box;
  1173. }
  1174. .footer .transparent {
  1175. opacity: 0
  1176. }
  1177. .w-322 {
  1178. width: 322rpx;
  1179. }
  1180. .w-450 {
  1181. width: 450rpx;
  1182. }
  1183. .w-50p {
  1184. width: 50%;
  1185. }
  1186. .h-auto {
  1187. height: auto;
  1188. }
  1189. .bd-r-14 {
  1190. border-radius: 14rpx 14rpx 0 0 !important;
  1191. }
  1192. .mt30 {
  1193. margin-top: 30rpx;
  1194. }
  1195. .bg-primary-light {
  1196. @include main_rgba_color(theme);
  1197. }
  1198. .rd-lt-24rpx {
  1199. border-radius: 24rpx 0 0 0;
  1200. }
  1201. .rd-rt-24rpx {
  1202. border-radius: 0 24rpx 0 0;
  1203. }
  1204. .z-2 {
  1205. z-index: 2;
  1206. }
  1207. .gold {
  1208. color: #DCA658;
  1209. }
  1210. .select-name {
  1211. max-width: 300rpx;
  1212. }
  1213. .font-color {
  1214. font-weight: 500 !important;
  1215. }
  1216. /deep/ .uni-popup__wrapper {
  1217. background: #FFFFFF;
  1218. border-radius: 32rpx;
  1219. }
  1220. .sh_popup-content {
  1221. padding: 40rpx;
  1222. .sh_popup_title {
  1223. font-weight: 500;
  1224. font-size: 32rpx;
  1225. color: #333333;
  1226. text-align: center;
  1227. }
  1228. .sh_popup_text {
  1229. font-weight: 400;
  1230. font-size: 30rpx;
  1231. color: #666666;
  1232. text-align: center;
  1233. margin-top: 36rpx;
  1234. }
  1235. .sh_popup_btn {
  1236. display: flex;
  1237. margin-top: 60rpx;
  1238. justify-content: space-between;
  1239. .btn {
  1240. width: 244rpx;
  1241. height: 72rpx;
  1242. border-radius: 50rpx;
  1243. text-align: center;
  1244. line-height: 72rpx;
  1245. }
  1246. .no_btn {
  1247. @include coupons_border_color(theme);
  1248. color: $theme-color;
  1249. margin-right: 32rpx;
  1250. }
  1251. .yes_btn {
  1252. @include main_bg_color(theme);
  1253. color: #FFFFFF;
  1254. }
  1255. }
  1256. }
  1257. </style>