index.vue 39 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148
  1. <template>
  2. <view :style="colorStyle">
  3. <view class="w-full relative z-99" :style="{'padding-top': sysHeight + 'px'}">
  4. <view class="w-full px-20 pl-20 h-80 flex-between-center relative z-80">
  5. <text class="iconfont icon-ic_leftarrow fs-40 text--w111-fff" @tap="goPage(3)"></text>
  6. <text class="fs-34 fw-500 text--w111-fff">订单详情</text>
  7. <text></text>
  8. </view>
  9. <view class="px-20 relative z-80">
  10. <view class="flex-between-center h-160 mt-12">
  11. <view class="flex-1 text--w111-fff pl-12">
  12. <view class="fs-36 fw-500 lh-50rpx">{{orderInfo._status._title}}</view>
  13. <view class="fs-26 lh-36rpx mt-8">{{orderInfo._status._msg}}</view>
  14. </view>
  15. <image :src="orderInfo.status_pic" class="w-140 h-140"></image>
  16. </view>
  17. <view class="bg--w111-fff rd-24rpx p-32 relative z-1"
  18. v-if="[1,3].includes(orderInfo.shipping_type) && orderInfo.product_type==0">
  19. <view class="flex-between-center">
  20. <view class="flex-y-center fw-500 fs-30 lh-42rpx">
  21. <text class="iconfont icon-ic_location4 fs-30"></text>
  22. <text class="pl-12">{{orderInfo.real_name}}</text>
  23. <text class="pl-20">{{orderInfo.user_phone}}</text>
  24. </view>
  25. <view class="w-154 h-56 rd-28rpx flex-center bg--w111-f5f5f5 fs-24 lh-34rpx"
  26. v-if="orderInfo.delivery_type == 'send' && orderInfo.verify_code"
  27. @tap="showQrcode = true">
  28. <text class="iconfont icon-ic_QRcode fs-24"></text>
  29. <text class="pl-10">自提码</text>
  30. </view>
  31. </view>
  32. <view class="fs-24 text--w111-999 lh-34rpx mt-12 w-full line2 pb-8">{{orderInfo.user_address}}</view>
  33. <view class="bt pt-32 flex-between-center mt-32"
  34. v-if="orderInfo.delivery_type == 'send' && orderInfo.verify_code">
  35. <view class="fs-26 text--w111-666 lh-34rpx flex-col">
  36. <text>配送员: {{orderInfo.delivery_name}}</text>
  37. <text class="pt-14">联系电话: {{orderInfo.delivery_id}}</text>
  38. </view>
  39. <view class="w-144 h-56 rd-30rpx flex-center fs-24 border bg--w111-fff"
  40. @tap="makePhone(orderInfo.delivery_id)">拨打电话</view>
  41. </view>
  42. <image src="/static/images/line.jpg" class="bt_line abs-lb"></image>
  43. </view>
  44. <view class="bg--w111-fff rd-24rpx p-32 relative z-1"
  45. v-if="orderInfo.shipping_type === 2 && [0,4].includes(orderInfo.product_type)">
  46. <view class="flex-between-center">
  47. <view class="h-128 flex-col justify-between">
  48. <view class="flex-y-center">
  49. <view class="w-48 h-48 rd-50-p111- flex-center bg-primary-light font-num">
  50. <text class="iconfont icon-a-ic_user1 fs-28"></text>
  51. </view>
  52. <view class="fs-28 fw-500 lh-40rpx pl-16">
  53. <text>{{orderInfo.real_name}}</text>
  54. <text class="pl-20">{{orderInfo.user_phone}}</text>
  55. </view>
  56. </view>
  57. <view class="flex-y-center">
  58. <view class="w-48 h-48 rd-50-p111- flex-center bg-primary-light font-num">
  59. <text class="iconfont icon-ic_mall fs-28"></text>
  60. </view>
  61. <view class="fs-28 fw-500 lh-40rpx pl-16">
  62. <text>{{orderInfo.system_store.name}}</text>
  63. </view>
  64. </view>
  65. </view>
  66. <image :src="system_store.image" class="w-128 h-128 rd-16rpx"></image>
  67. </view>
  68. <view class="mt-24 pb-24 border_bb flex justify-between">
  69. <view class="w-578 fs-24 text--w111-999">
  70. <view class="lh-34rpx line2">
  71. 地址: {{orderInfo.system_store.address}}{{orderInfo.system_store.detailed_address}}
  72. </view>
  73. <view class="mt-12">营业时间:每日{{orderInfo.system_store.day_time}} </view>
  74. </view>
  75. <text class="inline-block copy_btn fs-22 ml-32"
  76. @tap="copy(orderInfo.system_store.detailed_address)">复制</text>
  77. </view>
  78. <view class="flex-between-center pt-24 fs-24">
  79. <view class="flex-y-center" @tap="showCodeChange">
  80. <text class="iconfont icon-ic_QRcode"></text>
  81. <text class="pl-8">出示自提码</text>
  82. </view>
  83. <view class="flex-y-center" @tap="makePhone(orderInfo.system_store.phone)">
  84. <text class="iconfont icon-ic_phone"></text>
  85. <text class="pl-8">联系自提点</text>
  86. </view>
  87. <view class="flex-y-center" @tap="showMaoLocation">
  88. <text class="iconfont icon-ic_location"></text>
  89. <text class="pl-8">导航自提点</text>
  90. </view>
  91. </view>
  92. </view>
  93. </view>
  94. <view class="w-full bg-gradient abs-lt" :style="{height: 213 + sysHeight + 'px'}">
  95. <view class="w-full abs-lb white_jianbian z-20"></view>
  96. </view>
  97. </view>
  98. <view class="px-20 mt-20">
  99. <view class="bg--w111-fff rd-24rpx pt-32 pr-24 pl-24 pb-32 relative z-80">
  100. <view class="acea-row row-between row-middle mb-26">
  101. <view class="fs-28 lh-40rpx">{{orderInfo.add_time_y}} {{orderInfo.add_time_h}}</view>
  102. <view class="fs-24 lh-40rpx text--w111-999"
  103. v-if="orderInfo.shipping_type === 2"
  104. @tap="goPage(1,`/pages/admin/writeRecordList/index?id=${orderInfo.id}`)">核销记录<text class="iconfont icon-ic_rightarrow fs-24 ml-4"></text></view>
  105. </view>
  106. <view class="order_goods" v-for="(item,index) in cartInfo" :key="index">
  107. <view class="flex" @tap="goPage(1,`/pages/goods_details/index?id=${item.product_id}`)">
  108. <image class="w-136 h-136 rd-16rpx" :src='item.productInfo.attrInfo.image' v-if="item.productInfo.attrInfo"></image>
  109. <image class="w-136 h-136 rd-16rpx" :src='item.productInfo.image' v-else></image>
  110. <view class="flex-1 flex justify-between pl-20">
  111. <view class="w-360rpx">
  112. <view class="w-full line1 fs-28 lh-40rpx">{{item.productInfo.store_name}}</view>
  113. <view class="w-full line1 fs-24 text--w111-999 lh-34rpx mt-8">{{item.productInfo.attrInfo.suk}}</view>
  114. <view class="flex items-end flex-wrap mt-12 w-full">
  115. <BaseTag
  116. :text="label.label_name"
  117. :color="label.color"
  118. :background="label.bg_color"
  119. :borderColor="label.border_color"
  120. :circle="label.border_color ? true : false"
  121. :imgSrc="label.icon"
  122. v-for="(label, idx) in item.productInfo.store_label" :key="idx"></BaseTag>
  123. </view>
  124. </view>
  125. <view class="flex-1 flex-col items-end">
  126. <baseMoney :money="item.productInfo.attrInfo ? item.productInfo.attrInfo.price : item.productInfo.price" symbolSize="20" integerSize="36" decimalSize="20" color="#333" weight></baseMoney>
  127. <view class="fs-24 text--w111-999 lh-40rpx mt-10">共{{item.cart_num}}件</view>
  128. </view>
  129. </view>
  130. </view>
  131. <!-- 订单商品操作按钮 核销状态文字 退款状态文字 -->
  132. <view class="flex-between-center mt-32">
  133. <view class="fs-24" v-if="[5,1,2,3].includes(status.type) && (orderInfo.shipping_type==2 || orderInfo.delivery_type=='send' || orderInfo.product_type == 4)">
  134. <text v-if="item.is_writeoff">已核销</text>
  135. <text v-if="!item.is_writeoff && item.write_surplus_times < item.write_times">已核销{{parseInt(item.write_times)-parseInt(item.write_surplus_times)}}件</text>
  136. <text v-if="!item.is_writeoff && item.write_surplus_times == item.write_times">未核销</text>
  137. </view>
  138. <text class="fs-24" v-if="item.refund_num && status.type !=-2">{{item.refund_num}}件退款中</text>
  139. <view class="flex-1 flex-y-center justify-end">
  140. <view class="btn w-144 h-56 rd-30rpx flex-center fs-24 border bg--w111-fff"
  141. v-if="orderInfo.is_apply_refund && orderInfo.refund_status === 0 && item.refund_num !=item.cart_num && Number(orderInfo.paid) && item.is_support_refund && orderInfo.type != 8 && orderInfo.type != 10"
  142. @tap.stop="openSubcribe(item,orderInfo.product_type)">申请退款</view>
  143. <view class="btn w-144 h-56 rd-30rpx flex-center fs-24 text--w111-fff bg-color"
  144. v-if='evaluate==3 && item.is_reply==0 && pid != -1' @tap.stop="evaluateTap(item.unique,order_id)">立即评价</view>
  145. </view>
  146. </view>
  147. </view>
  148. <view class="cell flex justify-between mt-32" v-if="giftCount > 0">
  149. <text class="fs-28">赠品</text>
  150. <view class="w-460 flex-y-center justify-end" @tap="showGiftDrawer = true">
  151. <view class="flex">
  152. <view class="w-64 h-64 mr-8" v-for="(item, index) in giveCartInfo" :key="item.id">
  153. <image class="h-full w-full rd-8rpx" :src="item.productInfo.attrInfo.image" v-if="item.productInfo.attrInfo"></image>
  154. <image class="h-full w-full rd-8rpx" :src="item.productInfo.image" v-else></image>
  155. </view>
  156. <view class="w-64 h-64 rd-8rpx bg--w111-f5f5f5 flex-center mr-8" v-if="giveData.give_coupon.length">
  157. <text class="gold iconfont icon-a-ic_discount1"></text>
  158. </view>
  159. <view class="w-64 h-64 rd-8rpx bg--w111-f5f5f5 flex-center mr-8" v-if="giveData.give_integral>0">
  160. <text class="gold iconfont icon-ic_badge11"></text>
  161. </view>
  162. </view>
  163. <view class="fs-26 text--w111-666">共{{giftCount}}件 <text class="iconfont icon-ic_rightarrow"></text> </view>
  164. </view>
  165. </view>
  166. <view class="cell flex justify-between mt-32" v-if="orderInfo.mark || orderInfo.refund_explain">
  167. <text class="fs-28">{{isGoodsReturn ? '退款留言' : '买家备注'}}</text>
  168. <text class=" fs-28 w-544 text-right">{{!isGoodsReturn?orderInfo.mark:orderInfo.refund_explain}}</text>
  169. </view>
  170. <view class="cell flex justify-between mt-32" v-if="orderInfo.refund_goods_explain">
  171. <text class="fs-28">退货留言</text>
  172. <text class="fs-28 w-544 text-right">{{orderInfo.refund_goods_explain}}</text>
  173. </view>
  174. <view class="pt-32 bt mt-32" v-if="orderInfo.product_type == 1 && Array.isArray(orderInfo.virtual_info)">
  175. <view class="flex-between-center">
  176. <text class="fs-28">卡密发货</text>
  177. <text class="fs-28 card-pasd" @tap="copyCard()">复制全部</text>
  178. </view>
  179. <view class="mt-16 bg--w111-f5f5f5 rd-16rpx p-24 lh-36rpx" v-for="(item,index) in orderInfo.virtual_info" :key="index">
  180. <view class="flex-between-center">
  181. <text class="fs-28">卡号:</text>
  182. <text class="fs-36 card-pasd iconfont icon-ic_copy" @tap="copy(item.card_no)"></text>
  183. </view>
  184. <view class="fs-26 text--w111-999 mt-8">{{item.card_no}}</view>
  185. <view class="flex-between-center mt-24">
  186. <text class="fs-28">密码:</text>
  187. <text class="fs-36 card-pasd iconfont icon-ic_copy" @tap="copy(item.card_pwd)"></text>
  188. </view>
  189. <view class="fs-26 text--w111-999 mt-8">{{item.card_pwd}}</view>
  190. </view>
  191. </view>
  192. <view class="mt-32" v-else-if="orderInfo.product_type == 1">
  193. <view class="flex-between-center mt-32">
  194. <text class="fs-28">卡密发货</text>
  195. <text class="fs-28 card-pasd" @tap="copy(orderInfo.virtual_info)">复制文本</text>
  196. </view>
  197. <view class="mt-16 bg--w111-f5f5f5 text--w111-999 rd-16rpx p-24 lh-36rpx"
  198. >{{orderInfo.virtual_info}}</view>
  199. </view>
  200. </view>
  201. <!-- #ifdef MP -->
  202. <!-- 桌码 -->
  203. <view class="mt-20 bg--w111-fff rd-16rpx pt-32 pr-24 pl-24 pb-32" v-if="orderInfo.type == 10">
  204. <view class="cell flex-between-center">
  205. <text class="fs-28">桌台号</text>
  206. <text class="fs-28">{{tableCode.category.name}}{{tableCode.table_number}}</text>
  207. </view>
  208. <view class="cell flex-between-center">
  209. <text class="fs-28">就餐人数</text>
  210. <text class="fs-28">{{tableCode.number_diners}}</text>
  211. </view>
  212. </view>
  213. <!-- #endif -->
  214. <view class="mt-20 bg--w111-fff rd-16rpx pt-32 pr-24 pl-24 pb-32">
  215. <view class="cell flex-between-center">
  216. <text class="fs-28">商品总价</text>
  217. <text class="fs-28">¥{{(parseFloat(orderInfo.total_price)+parseFloat(orderInfo.vip_true_price)).toFixed(2)}}</text>
  218. </view>
  219. <view class="cell flex-between-center" v-if="orderInfo.pay_postage > 0">
  220. <text class="fs-28">运费</text>
  221. <text class="fs-28">¥{{parseFloat(orderInfo.pay_postage).toFixed(2)}}</text>
  222. </view>
  223. <view class="cell flex-between-center" v-if="orderInfo.vip_true_price > 0">
  224. <text class="fs-28">会员优惠</text>
  225. <text class="fs-28">-¥{{parseFloat(orderInfo.vip_true_price).toFixed(2)}}</text>
  226. </view>
  227. <view class="cell flex-between-center" v-if='orderInfo.coupon_id'>
  228. <text class="fs-28">优惠券抵扣</text>
  229. <text class="fs-28">-¥{{parseFloat(orderInfo.coupon_price).toFixed(2)}}</text>
  230. </view>
  231. <view class="cell flex-between-center" v-if="orderInfo.use_integral > 0">
  232. <text class="fs-28">积分抵扣</text>
  233. <text class="fs-28">-¥{{parseFloat(orderInfo.deduction_price).toFixed(2)}}</text>
  234. </view>
  235. <!-- 积分订单需要展示的抵扣积分数量 -->
  236. <view class="cell flex-between-center" v-if="orderInfo.type == 4">
  237. <text class="fs-28">实付积分</text>
  238. <text class="fs-28">-{{orderInfo.pay_integral}}</text>
  239. </view>
  240. <!-- 抵扣积分 -->
  241. <view class="cell flex-between-center"
  242. v-for="(item,index) in orderInfo.promotions_detail" :key="index"
  243. v-show="parseFloat(item.promotions_price)">
  244. <text class="fs-28">{{item.title}}</text>
  245. <text class="fs-28">-¥{{parseFloat(item.promotions_price).toFixed(2)}}</text>
  246. </view>
  247. <view class="cell flex-between-center">
  248. <text class="fs-28">实付款</text>
  249. <text class="fs-28">¥{{parseFloat(orderInfo.pay_price).toFixed(2)}}</text>
  250. </view>
  251. </view>
  252. <!-- 自定义表单内容 -->
  253. <view class="mt-20 bg--w111-fff rd-16rpx pt-32 pr-24 pl-24 pb-32" v-if="orderInfo.custom_form && orderInfo.custom_form.length">
  254. <view class="cell flex justify-between" v-for="(item,index) in orderInfo.custom_form" :key="index">
  255. <text class=" fs-28">{{item.titleConfig.value}}</text>
  256. <view v-if="item.name == 'uploadPicture' && item.value.length < 5" class="w-462 flex justify-end">
  257. <view class='pictrue mr-8' v-for="(items,indexs) in item.value" :key="indexs">
  258. <image class="w-88 h-88 rd-8rpx" :src='items' mode="aspectFill"></image>
  259. </view>
  260. </view>
  261. <scroll-view scroll-x="true" scroll-with-animation
  262. class="white-nowrap vertical-middle w-462" show-scrollbar="false"
  263. v-else-if="item.name == 'uploadPicture' && item.value.length >= 5">
  264. <view class="inline-block mr-12" v-for="(items,indexs) in item.value" :key="index">
  265. <image class="w-88 h-88 rd-8rpx" :src="items"></image>
  266. </view>
  267. </scroll-view>
  268. <view v-else-if="item.name == 'dateranges'" class=" fs-28">
  269. <text v-if="item.value.length">{{item.value[0]+'/'+item.value[1]}}</text>
  270. </view>
  271. <text v-else class="fs-28">{{item.value}}</text>
  272. </view>
  273. </view>
  274. <view class="mt-20 bg--w111-fff rd-16rpx pt-32 pr-24 pl-24 pb-32">
  275. <view class="cell flex-between-center">
  276. <text class="fs-28">订单编号</text>
  277. <view>
  278. <text class="fs-28 pr-12">{{orderInfo.order_id}}</text>
  279. <text class="inline-block copy_btn fs-22 " @tap="copy(orderInfo.order_id)">复制</text>
  280. </view>
  281. </view>
  282. <view class="cell flex-between-center" v-if="orderInfo.refunded_price">
  283. <text class="fs-28">退款金额</text>
  284. <text class="fs-28">¥{{orderInfo.refunded_price}}</text>
  285. </view>
  286. <view class="cell flex-between-center">
  287. <text class="fs-28">下单时间</text>
  288. <text class="fs-28">{{(orderInfo.add_time_y || '') +' '+(orderInfo.add_time_h || 0)}}</text>
  289. </view>
  290. <view class="cell flex-between-center">
  291. <text class="fs-28">支付状态</text>
  292. <text class="fs-28">{{ orderInfo.paid ? '已支付' : '未支付' }}</text>
  293. </view>
  294. <view class="cell flex-between-center">
  295. <text class="fs-28">支付方式</text>
  296. <text class="fs-28">{{orderInfo._status._payType}}</text>
  297. </view>
  298. </view>
  299. <view v-if="orderInfo.status !=0">
  300. <view class="mt-20 bg--w111-fff rd-16rpx pt-32 pr-24 pl-24 pb-32" v-if='orderInfo.delivery_type=="express"'>
  301. <view class="cell flex-between-center">
  302. <text class="fs-28">配送方式</text>
  303. <text class="fs-28">发货</text>
  304. </view>
  305. <view class="cell flex-between-center">
  306. <text class="fs-28">快递公司</text>
  307. <text class="fs-28">{{orderInfo.delivery_name || ''}}</text>
  308. </view>
  309. <view class="cell flex-between-center">
  310. <text class="fs-28">快递单号</text>
  311. <text class="fs-28">{{orderInfo.delivery_id || ''}}</text>
  312. </view>
  313. </view>
  314. <view class="mt-20 bg--w111-fff rd-16rpx pt-32 pr-24 pl-24 pb-32" v-if='orderInfo.delivery_type=="send"'>
  315. <view class="cell flex-between-center">
  316. <text class="fs-28">配送方式</text>
  317. <text class="fs-28">送货</text>
  318. </view>
  319. <view class="cell flex-between-center">
  320. <text class="fs-28">配送人姓名</text>
  321. <text class="fs-28">{{orderInfo.delivery_name || ''}}</text>
  322. </view>
  323. <view class="cell flex-between-center">
  324. <text class="fs-28">联系电话</text>
  325. <text class="fs-28" @tap="makePhone(orderInfo.delivery_id)">{{orderInfo.delivery_id || ''}}</text>
  326. </view>
  327. </view>
  328. <view class="mt-20 bg--w111-fff rd-16rpx pt-32 pr-24 pl-24 pb-32" v-if='orderInfo.delivery_type=="fictitious" && orderInfo.product_type!=1'>
  329. <view class="cell flex-between-center fs-28">
  330. <text class="fs-28">虚拟发货</text>
  331. <text class="fs-28">已发货,请注意查收</text>
  332. </view>
  333. <view class="cell flex-between-center fs-28" v-if="orderInfo.fictitious_content">
  334. <text class="fs-28">虚拟备注</text>
  335. <text class="fs-28 text-right flex-1 pl-20">{{orderInfo.fictitious_content}}</text>
  336. </view>
  337. </view>
  338. </view>
  339. </view>
  340. <view class="h-200 pb-safe"></view>
  341. <view class='fixed-lb bt w-full bg--w111-fff pb-safe z-80'>
  342. <view class="h-96 px-20 flex-y-center">
  343. <view class="more-box" v-if="orderInfo.type == 9 && orderInfo.shipping_type == 1 && orderInfo._status._type == 2">
  344. <view class="more" @click="tabMore">更多</view>
  345. <view :class="{on:moreShow}" class="popover">
  346. <view class="arrow"></view>
  347. <view class="item" @tap="openAfter(`/pages/goods/${cartInfo.length > 1 ? 'goods_return_list' : 'goods_return'}/index?orderId=`+orderInfo.order_id+ '&id=' + orderInfo.id + '&store_id=' + orderInfo.store_id)"
  348. >批量退款</view>
  349. <view class="item" @tap="invoiceApply">申请开票</view>
  350. </view>
  351. </view>
  352. <view class="flex-y-center justify-end flex-1">
  353. <view class="btn w-144 h-56 rd-30rpx flex-center fs-24 border bg--w111-fff"
  354. v-if="invoice_func && !invoiceData && orderInfo.type != 8 && status.type !=-2 && (orderInfo.type != 9 || orderInfo.shipping_type == 2)" @tap="invoiceApply">申请开票</view>
  355. <view class="btn w-144 h-56 rd-30rpx flex-center fs-24 border bg--w111-fff"
  356. v-if="invoiceData" @tap="goPage(1,`/pages/users/user_invoice_order/index?order_id=${orderInfo.order_id}`)">查看发票</view>
  357. <view class="btn w-144 h-56 rd-30rpx flex-center fs-24 text--w111-fff bg-color"
  358. v-if="status.type==0" @tap='pay_open()'>立即支付</view>
  359. <view class="btn w-144 h-56 rd-30rpx flex-center fs-24 border bg--w111-fff"
  360. v-if="status.type == 0 || status.type == -9" @tap="showModalChange(3)">取消订单</view>
  361. <view class="btn w-144 h-56 rd-30rpx flex-center fs-24 border bg--w111-fff"
  362. v-if="orderInfo.type==3 && orderInfo.paid && orderInfo.refund_status==0"
  363. @tap="goJoinPink">查看拼团</view>
  364. <view class="btn w-144 h-56 rd-30rpx flex-center fs-24 border bg--w111-fff"
  365. v-if="orderInfo.delivery_type == 'express' && status.class_status==3 && status.type==2 && !split.length"
  366. @tap="goPage(1,`/pages/goods/goods_logistics/index?orderId=${orderInfo.order_id}`)">查看物流</view>
  367. <view class="btn w-144 h-56 rd-30rpx flex-center fs-24 font-num con_border bg--w111-fff"
  368. v-if="orderInfo.type == 9"
  369. @tap="goPage(1,`/pages/store/group_goods/index?collage_id=${orderInfo.activity_id}`)"
  370. >拼单详情</view>
  371. <view class="btn w-144 h-56 rd-30rpx flex-center fs-24 text--w111-fff bg-color"
  372. v-if="status.class_status==3 && !split.length" @tap='confirmOrder()'>确认收货</view>
  373. <view class="btn w-144 h-56 rd-30rpx flex-center fs-24 border bg--w111-fff"
  374. v-if="status.type==4 && !split.length ||status.type==-2" @tap='showModalChange(2)'>删除订单</view>
  375. <view class="btn w-144 h-56 rd-30rpx flex-center fs-24 font-num con_border bg--w111-fff"
  376. v-if="status.class_status==5" @tap='goOrderConfirm'>再次购买</view>
  377. <view class="btn w-144 h-56 rd-30rpx flex-center fs-24 font-num con_border bg--w111-fff"
  378. v-else-if="orderInfo.is_apply_refund && orderInfo.refund_status == 0 && cartInfo.length>1 && orderInfo.paid && orderInfo.type != 10 && (orderInfo.type != 9 || orderInfo.shipping_type == 2)"
  379. @tap="openAfter(`/pages/goods/${cartInfo.length > 1 ? 'goods_return_list' : 'goods_return'}/index?orderId=`+orderInfo.order_id+ '&id=' + orderInfo.id + '&store_id=' + orderInfo.store_id)"
  380. >批量退款</view>
  381. </view>
  382. </view>
  383. </view>
  384. <verifyModal
  385. :visible="showQrcode"
  386. :qrcode="config.qrc"
  387. :qrc="qrc"
  388. :verifyCode="orderInfo._verify_code"
  389. :writeDay="orderInfo.write_day"
  390. :writeTimes="orderInfo.write_times"
  391. :writeOff="orderInfo.write_off"
  392. :productType="orderInfo.product_type"
  393. @closeModal="()=>{showQrcode = false}"></verifyModal>
  394. <view class="mask more-mask" v-if="moreBtn" @tap="moreBtn = false"></view>
  395. <invoice-picker :inv-show="invShow" :is-special="special_invoice" :inv-checked="invChecked" :order-id='order_id'
  396. :inv-list="invList" :is-order="1" @inv-close="invClose" @inv-change="invSub" @inv-cancel="invCancel">
  397. </invoice-picker>
  398. <!-- 赠品抽屉 -->
  399. <giftDrawer :visible="showGiftDrawer" :giveCartInfo="giveCartInfo" :giveData="giveData" @closeDrawer="closeDrawer"></giftDrawer>
  400. <!-- 确认框 -->
  401. <tuiModal
  402. :show="showModal"
  403. :title="modalTitle"
  404. :content="modalContent"
  405. :maskClosable="false"
  406. @click="handleTap"
  407. @cancel="hideModal"></tuiModal>
  408. </view>
  409. </template>
  410. <script>
  411. let sysHeight = uni.getSystemInfoSync().statusBarHeight;
  412. import {
  413. getOrderDetail,
  414. getRefundOrderDetail,
  415. orderAgain,
  416. orderTake,
  417. orderDel,
  418. refundOrderDel,
  419. orderCancel,
  420. refundExpress,
  421. } from '@/api/order.js';
  422. import {
  423. openOrderRefundSubscribe
  424. } from '@/utils/SubscribeMessage.js';
  425. import {
  426. getUserInfo,
  427. invoiceList,
  428. makeUpinvoice
  429. } from '@/api/user.js';
  430. import {
  431. activityCodeApi
  432. } from '@/api/activity.js';
  433. import {
  434. getCodeData
  435. } from '@/api/store.js';
  436. import ClipboardJS from "@/plugin/clipboard/clipboard.js";
  437. import {toLogin} from '@/libs/login.js';
  438. import {mapGetters} from "vuex";
  439. import colors from "@/mixins/color";
  440. import invoicePicker from '../components/invoicePicker';
  441. import verifyModal from '../components/verifyModal/index.vue'
  442. import giftDrawer from '../components/giftDrawer/index.vue'
  443. import tuiModal from "@/components/tui-modal/index.vue"
  444. export default {
  445. components: {
  446. invoicePicker,
  447. verifyModal,
  448. giftDrawer,
  449. tuiModal
  450. },
  451. mixins: [colors],
  452. data() {
  453. return {
  454. sysHeight:sysHeight,
  455. giveData: {
  456. give_integral: 0,
  457. give_coupon: []
  458. },
  459. giveCartInfo: [],
  460. config: {
  461. qrc: {
  462. code: "",
  463. size: 360, // 二维码大小
  464. level: 4, //等级 0~4
  465. bgColor: '#FFFFFF', //二维码背景色 默认白色
  466. color: ['#333', '#333'], //边框颜色支持渐变色
  467. }
  468. },
  469. order_id: '',
  470. evaluate: 0,
  471. cartInfo: [], //购物车产品
  472. pid: 0, //上级订单ID
  473. split: [], //分单商品
  474. orderInfo: {
  475. system_store: {},
  476. _status: {}
  477. }, //订单详情
  478. system_store: {},
  479. isGoodsReturn: false, //是否为退款订单
  480. status: {}, //订单底部按钮状态
  481. refund_close: false,
  482. isClose: false,
  483. pay_close: false,
  484. pay_order_id: '',
  485. totalPrice: '0',
  486. isAuto: false, //没有授权的不会自动授权
  487. isShowAuth: false, //是否隐藏授权
  488. routineContact: 0,
  489. express_num: '',
  490. invoice_func: false,
  491. invoiceData: {},
  492. invoice_id: 0,
  493. invChecked: '',
  494. moreBtn: false,
  495. invShow: false,
  496. special_invoice: false,
  497. invList: [],
  498. userInfo: {},
  499. isReturen: '',
  500. showQrcode:false,
  501. showGiftDrawer:false,
  502. showModal:false,
  503. modalTitle:'',
  504. modalContent:'',
  505. modalType:0,
  506. orderId:'',
  507. qrc:'',
  508. // #ifdef MP
  509. tableCode:{},
  510. // #endif
  511. moreShow:false
  512. };
  513. },
  514. computed: {
  515. giftCount(){
  516. let count = 0;
  517. if(this.giveCartInfo.length){
  518. count = this.giveCartInfo.length
  519. }
  520. if(this.giveData.give_coupon.length){
  521. count = count + this.giveData.give_coupon.length
  522. }
  523. if(this.giveData.give_integral > 0){
  524. count = count + 1
  525. }
  526. return count
  527. },
  528. ...mapGetters(['isLogin']),
  529. },
  530. onLoad: function(options) {
  531. if (options.order_id) {
  532. this.$set(this, 'order_id', options.order_id);
  533. this.isReturen = options.isReturen;
  534. }
  535. if (options.invoice_id) {
  536. this.invoice_id = options.invoice_id
  537. }
  538. this.activityCodeApi();
  539. },
  540. onShow() {
  541. uni.removeStorageSync('form_type_cart');
  542. if (this.isLogin) {
  543. this.getOrderInfo();
  544. this.getUserInfo();
  545. } else {
  546. toLogin()
  547. }
  548. },
  549. methods: {
  550. onLoadFun() {
  551. this.getOrderInfo();
  552. this.getUserInfo();
  553. this.isShowAuth = false
  554. },
  555. // 授权关闭
  556. authColse: function(e) {
  557. this.isShowAuth = e
  558. },
  559. getpreviewImage: function(index, num) {
  560. uni.previewImage({
  561. urls: num ? this.orderInfo.refund_img : this.orderInfo.refund_goods_img,
  562. current: num ? this.orderInfo.refund_img[index] : this.orderInfo.refund_goods_img[index]
  563. });
  564. },
  565. showModalChange(type){
  566. this.modalType = type;
  567. if(type == 1){
  568. this.modalTitle = '确认收货';
  569. this.modalContent = '为保障权益,请收到货确认无误后,再确认收货';
  570. }else if(type == 2){
  571. this.modalTitle = '删除订单';
  572. this.modalContent = '确定删除该订单?';
  573. }else if(type == 3){
  574. this.modalTitle = '温馨提示';
  575. this.modalContent = '确认取消该订单?';
  576. }
  577. this.showModal = true;
  578. },
  579. handleTap(e){
  580. let index = e.index;
  581. if(index == 1){
  582. if(this.modalType == 1){
  583. orderTake(this.order_id).then(res => {
  584. this.showModal = false;
  585. this.getOrderInfo();
  586. return this.$util.Tips({
  587. title: '操作成功',
  588. icon: 'success'
  589. });
  590. }).catch(err => {
  591. return this.$util.Tips({
  592. title: err
  593. });
  594. })
  595. }else if(this.modalType == 2){
  596. orderDel(this.order_id).then(res=>{
  597. this.showModal = false;
  598. return this.$util.Tips({
  599. title: '删除成功',
  600. icon: 'success'
  601. }, {
  602. tab: 3,
  603. url: '/pages/goods/order_list/index'
  604. });
  605. })
  606. }else if(this.modalType == 3){
  607. this.showModal = false;
  608. orderCancel(this.order_id).then(()=>{
  609. uni.reLaunch({
  610. url:'/pages/goods/order_list/index'
  611. })
  612. })
  613. }
  614. }else{
  615. this.showModal = false;
  616. }
  617. },
  618. hideModal(){
  619. this.showModal = false;
  620. },
  621. goGoodCall() {
  622. let url = `/pages/extension/customer_list/chat?orderId=${this.order_id}&isReturen=${this.isReturen}`
  623. let obj = {
  624. store_name: this.orderInfo.order_id,
  625. path: `/pages/goods/order_details/index?order_id=${this.orderInfo.order_id}`,
  626. image: ''
  627. }
  628. this.$util.getCustomer(this.userInfo,url,obj,1)
  629. },
  630. openAfter: function(e) {
  631. let page = e;
  632. // #ifdef MP
  633. uni.showLoading({
  634. title: '正在加载',
  635. })
  636. openOrderRefundSubscribe().then(res => {
  637. uni.hideLoading();
  638. uni.navigateTo({
  639. url: page,
  640. });
  641. }).catch(() => {
  642. uni.hideLoading();
  643. });
  644. // #endif
  645. // #ifndef MP
  646. uni.navigateTo({
  647. url: page
  648. })
  649. // #endif
  650. },
  651. /**
  652. * 拨打电话
  653. */
  654. makePhone: function(phone) {
  655. let that = this;
  656. // #ifdef APP-PLUS
  657. plus.device.dial(phone, true);
  658. // #endif
  659. // #ifdef MP || H5
  660. uni.makePhoneCall({
  661. phoneNumber: phone
  662. });
  663. // #endif
  664. },
  665. showCodeChange(){
  666. if(!this.orderInfo.paid) return this.$util.Tips({
  667. title:'请支付后查看自提码'
  668. })
  669. this.showQrcode = true;
  670. },
  671. /**
  672. * 打开地图
  673. *
  674. */
  675. showMaoLocation: function() {
  676. if (!this.system_store.latitude || !this.system_store.longitude) return this.$util.Tips({
  677. title: '缺少经纬度信息无法查看地图!'
  678. });
  679. uni.openLocation({
  680. latitude: parseFloat(this.system_store.latitude),
  681. longitude: parseFloat(this.system_store.longitude),
  682. scale: 8,
  683. name: this.system_store.name,
  684. address: this.system_store.address + this.system_store.detailed_address,
  685. success: function() {
  686. },
  687. });
  688. },
  689. /**
  690. * 获取用户信息
  691. *
  692. */
  693. getUserInfo: function() {
  694. let that = this;
  695. getUserInfo().then(res => {
  696. that.userInfo = res.data;
  697. })
  698. },
  699. /**
  700. * 获取订单详细信息
  701. *
  702. */
  703. getOrderInfo: function() {
  704. let that = this;
  705. uni.showLoading({
  706. title: "正在加载中"
  707. });
  708. getOrderDetail(this.order_id).then(res => {
  709. let _type = res.data._status._type;
  710. uni.hideLoading();
  711. that.giveData.give_coupon = res.data.give_coupon;
  712. that.giveData.give_integral = res.data.give_integral;
  713. that.$set(that, 'orderInfo', res.data);
  714. that.$set(that, 'pid', res.data.pid);
  715. that.$set(that, 'split', res.data.split?res.data.split:[]);
  716. that.$set(that, 'evaluate', _type == 3 ? 3 : 0);
  717. that.$set(that, 'system_store', res.data.system_store);
  718. that.$set(that, 'invoiceData', res.data.invoice);
  719. if (that.invoiceData) {
  720. that.invoiceData.pay_price = res.data.pay_price;
  721. }
  722. that.$set(that, 'invoice_func', res.data.invoice_func);
  723. that.$set(that, 'special_invoice', res.data.special_invoice);
  724. that.$set(that, 'routineContact', Number(res.data.routine_contact_type));
  725. let cartInfo = res.data.cartInfo;
  726. let cartObj = [],
  727. giftObj = [];
  728. cartInfo.forEach(item => {
  729. if (item.is_gift == 1) {
  730. giftObj.push(item)
  731. } else {
  732. cartObj.push(item)
  733. }
  734. })
  735. that.$set(that, 'cartInfo', cartObj);
  736. that.$set(that, 'giveCartInfo', giftObj);
  737. this.$nextTick(function() {
  738. that.config.qrc.code = that.orderInfo.verify_code
  739. })
  740. if (this.orderInfo.refund_status != 0) {
  741. this.isGoodsReturn = true;
  742. } else {
  743. this.isReturen = 0
  744. }
  745. if (that.invoice_id && !that.invoiceData) {
  746. that.invChecked = that.invoice_id || '';
  747. this.invoiceApply()
  748. }
  749. // #ifdef MP
  750. if (that.orderInfo.type == 10) {
  751. that.getCodeData();
  752. }
  753. // #endif
  754. that.getOrderStatus();
  755. }).catch(err => {
  756. uni.hideLoading();
  757. if (err.status == 403) {
  758. uni.navigateTo({
  759. url: '/pages/goods/order_list/index'
  760. })
  761. } else {
  762. that.$util.Tips({
  763. title: err
  764. }, '/pages/goods/order_list/index');
  765. }
  766. });
  767. },
  768. // 不开发票
  769. invCancel() {
  770. this.invChecked = '';
  771. this.invTitle = '不开发票';
  772. this.invShow = false;
  773. },
  774. // 选择发票
  775. invSub(id) {
  776. this.invChecked = id;
  777. let data = {
  778. order_id: this.order_id,
  779. invoice_id: this.invChecked
  780. }
  781. makeUpinvoice(data).then(res => {
  782. uni.showToast({
  783. title: '申请成功',
  784. icon: 'success'
  785. });
  786. this.invShow = false;
  787. this.getOrderInfo()
  788. }).catch(err => {
  789. uni.showToast({
  790. title: err,
  791. icon: 'none'
  792. });
  793. });
  794. },
  795. // 关闭发票
  796. invClose() {
  797. this.invShow = false;
  798. this.getInvoiceList()
  799. },
  800. //申请开票
  801. invoiceApply() {
  802. this.getInvoiceList()
  803. this.moreBtn = false;
  804. this.invShow = true;
  805. },
  806. getInvoiceList() {
  807. uni.showLoading({
  808. title: '正在加载…'
  809. })
  810. invoiceList().then(res => {
  811. uni.hideLoading();
  812. this.invList = res.data.map(item => {
  813. item.id = item.id.toString();
  814. return item;
  815. });
  816. const result = this.invList.find(item => item.id == this.invChecked);
  817. if (result) {
  818. let name = '';
  819. name += result.header_type === 1 ? '个人' : '企业';
  820. name += result.type === 1 ? '普通' : '专用';
  821. name += '发票';
  822. this.invTitle = name;
  823. }
  824. }).catch(err => {
  825. uni.showToast({
  826. title: err,
  827. icon: 'none'
  828. });
  829. });
  830. },
  831. more() {
  832. this.moreBtn = !this.moreBtn
  833. },
  834. copy: function(code) {
  835. let that = this;
  836. uni.setClipboardData({
  837. data: code
  838. });
  839. },
  840. copyCard(){
  841. let that = this;
  842. let strArr = [];
  843. this.orderInfo.virtual_info.forEach((item,index)=>{
  844. strArr.push(`卡号${index+1}: ${item.card_no} 密码${index+1}:${item.card_pwd}`)
  845. })
  846. uni.setClipboardData({
  847. data: strArr.toString()
  848. });
  849. },
  850. /**
  851. * 设置底部按钮
  852. *
  853. */
  854. getOrderStatus: function() {
  855. let orderInfo = this.orderInfo || {},
  856. _status = orderInfo._status || {
  857. _type: 0
  858. },
  859. status = {};
  860. let type = parseInt(_status._type),
  861. delivery_type = orderInfo.delivery_type,
  862. seckill_id = orderInfo.seckill_id ? parseInt(orderInfo.seckill_id) : 0,
  863. bargain_id = orderInfo.bargain_id ? parseInt(orderInfo.bargain_id) : 0,
  864. discount_id = orderInfo.discount_id ? parseInt(orderInfo.discount_id) : 0,
  865. combination_id = orderInfo.combination_id ? parseInt(orderInfo.combination_id) : 0;
  866. status = {
  867. type: type == 9 ? -9 : type,
  868. class_status: 0,
  869. class_again: 0
  870. };
  871. if (type == 1 && combination_id > 0) status.class_status = 1; //查看拼团
  872. if (type == 2 && delivery_type == 'express') status.class_status = 2; //查看物流
  873. if (type == 2) status.class_status = 3; //确认收货
  874. if (type == 4 || type == 0) status.class_status = 4; //删除订单
  875. if (!seckill_id && !bargain_id && !combination_id && !discount_id && !orderInfo.type && (type == 3 ||
  876. type == 4)) status.class_status = 5; //再次购买(待评价、已完成)
  877. if (!seckill_id && !bargain_id && !combination_id && !discount_id && !orderInfo.type && (type == 1 || type == 2 ||
  878. type == 5)) status.class_again = 6; //再次购买 (待发货、待收货、部分核销)
  879. this.$set(this, 'status', status);
  880. },
  881. /**
  882. * 去拼团详情
  883. *
  884. */
  885. goJoinPink: function() {
  886. uni.navigateTo({
  887. url: '/pages/activity/goods_combination_status/index?id=' + this.orderInfo.pink_id,
  888. });
  889. },
  890. /**
  891. * 再此购买
  892. *
  893. */
  894. goOrderConfirm: function() {
  895. let that = this;
  896. orderAgain(that.orderInfo.order_id).then(res => {
  897. return uni.navigateTo({
  898. url: '/pages/goods/order_confirm/index?new=1&cartId=' + res.data.cateId + '&store_id=' + that.orderInfo.store_id
  899. });
  900. }).catch(err => {
  901. return that.$util.Tips({
  902. title: err
  903. });
  904. });
  905. },
  906. confirmOrder(orderId) {
  907. let that = this;
  908. // #ifdef MP
  909. if (wx.openBusinessView && this.orderInfo.order_shipping_open && this.orderInfo.trade_no) {
  910. uni.showLoading({
  911. title: '加载中'
  912. });
  913. wx.openBusinessView({
  914. businessType: 'weappOrderConfirm',
  915. extraData: {
  916. transaction_id: this.orderInfo.trade_no
  917. },
  918. success() {},
  919. fail(err) {
  920. uni.hideLoading();
  921. return that.$util.Tips({
  922. title: err.errMsg
  923. });
  924. },
  925. complete() {
  926. uni.hideLoading();
  927. }
  928. });
  929. } else {
  930. that.showModalChange(1);
  931. }
  932. // #endif
  933. // #ifndef MP
  934. this.showModalChange(1);
  935. // #endif
  936. },
  937. pay_open() {
  938. uni.reLaunch({
  939. url: `/pages/goods/cashier/index?order_id=${this.order_id}&from_type=order`
  940. })
  941. },
  942. goPage(type, url){
  943. if(type == 1){
  944. uni.navigateTo({
  945. url
  946. })
  947. }else if(type == 2){
  948. uni.switchTab({
  949. url
  950. })
  951. }else if(type == 3){
  952. uni.navigateBack();
  953. }
  954. },
  955. openSubcribe: function(item,productType) {
  956. let cartIds = [
  957. {
  958. cart_id:item.id,
  959. cart_num:parseInt(item.cart_num) - parseInt(item.refund_num)
  960. }
  961. ]
  962. cartIds = JSON.stringify(cartIds);
  963. let page = `/pages/goods/goods_return/index?orderId=`+this.order_id+ '&id=' + this.orderInfo.id+ '&cartIds='+ cartIds+'&productType='+productType+'&store_id='+this.orderInfo.store_id;
  964. // #ifdef MP
  965. uni.showLoading({
  966. title: '正在加载',
  967. })
  968. openOrderRefundSubscribe().then(res => {
  969. uni.hideLoading();
  970. uni.navigateTo({
  971. url: page,
  972. });
  973. }).catch(() => {
  974. uni.hideLoading();
  975. });
  976. // #endif
  977. // #ifndef MP
  978. uni.navigateTo({
  979. url: page
  980. })
  981. // #endif
  982. },
  983. evaluateTap: function(unique, orderId) {
  984. uni.navigateTo({
  985. url: "/pages/goods/goods_comment_con/index?unique=" + unique + "&uni=" + orderId
  986. })
  987. },
  988. closeDrawer(){
  989. this.showGiftDrawer = false;
  990. },
  991. activityCodeApi(){
  992. activityCodeApi(91, 0, {
  993. order_id: this.order_id
  994. }).then(res => {
  995. const {
  996. routineUrl,
  997. wechatUrl
  998. } = res.data;
  999. // #ifdef MP
  1000. this.qrc = routineUrl;
  1001. // #endif
  1002. // #ifdef H5
  1003. if (this.$wechat.isWeixin()) {
  1004. this.qrc = wechatUrl;
  1005. }
  1006. // #endif
  1007. });
  1008. },
  1009. // #ifdef MP
  1010. getCodeData() {
  1011. getCodeData({
  1012. tableId: this.orderInfo.activity_id
  1013. }).then(res => {
  1014. this.tableCode = res.data;
  1015. });
  1016. },
  1017. // #endif
  1018. tabMore() {
  1019. this.moreShow = !this.moreShow;
  1020. }
  1021. }
  1022. }
  1023. </script>
  1024. <style lang="scss" scoped>
  1025. .white_jianbian{
  1026. height:120rpx;
  1027. background: linear-gradient(0deg, #F5F5F5 0%, rgba(245,245,245,0) 100%);
  1028. }
  1029. .bt_line{
  1030. height:1px;
  1031. width:680rpx;
  1032. left:50%;
  1033. transform: translateX(-50%);
  1034. }
  1035. .h-68{
  1036. height:68rpx;
  1037. }
  1038. .order_goods ~ .order_goods{
  1039. margin-top: 32rpx;
  1040. }
  1041. .con_border{
  1042. border: 1px solid var(--view-theme);
  1043. line-height:22rpx;
  1044. }
  1045. .cell input{
  1046. width: 450rpx;
  1047. text-align:right;
  1048. }
  1049. .cell .radio {
  1050. margin: 0 22rpx;
  1051. padding: 10rpx 0;
  1052. }
  1053. .cell ~ .cell{
  1054. margin-top: 40rpx;
  1055. }
  1056. .SemiBold {
  1057. font-family: SemiBold;
  1058. }
  1059. .copy_btn{
  1060. width: 68rpx;
  1061. height: 36rpx;
  1062. background: #F5F5F5;
  1063. border-radius: 20rpx;
  1064. text-align:center;
  1065. line-height:36rpx;
  1066. }
  1067. .btn ~ .btn{
  1068. margin-left: 16rpx;
  1069. }
  1070. .border{
  1071. border: 1rpx solid #ccc;
  1072. }
  1073. .border_bb{
  1074. border-bottom: 1px solid #eee;
  1075. }
  1076. .h-128{
  1077. height:128rpx;
  1078. }
  1079. .w-578{
  1080. width:578rpx;
  1081. }
  1082. .bg-primary-light{
  1083. background: var(--view-minorColorT);
  1084. }
  1085. .mt-228{
  1086. margin-top:228rpx;
  1087. }
  1088. .virtual_info{
  1089. margin-top: -160rpx;
  1090. }
  1091. .bt{
  1092. border-top:1px solid #eee;
  1093. }
  1094. .z-1{
  1095. z-index:1;
  1096. }
  1097. .gold{
  1098. color: #DCA658;
  1099. }
  1100. .card-pasd{
  1101. color: #FF7D00;
  1102. }
  1103. .more-box{
  1104. position: relative;
  1105. .more{
  1106. font-size: 24rpx;
  1107. line-height: 34rpx;
  1108. color: #333333;
  1109. .iconfont{
  1110. font-size: 24rpx;
  1111. }
  1112. }
  1113. .popover{
  1114. position: absolute;
  1115. inset: -18rpx auto auto 20rpx;
  1116. width: 160rpx;
  1117. padding: 14rpx 0;
  1118. border-radius: 16rpx;
  1119. background: #FFFFFF;
  1120. box-shadow: 0rpx 0rpx 16rpx 0rpx rgba(0,0,0,0.08);
  1121. transform: translateY(-100%);
  1122. visibility: hidden;
  1123. opacity: 0;
  1124. z-index: 1;
  1125. transition: all .3s ease-in-out;
  1126. &.on{
  1127. visibility: visible;
  1128. opacity: 1;
  1129. z-index: 970;
  1130. }
  1131. .arrow{
  1132. position: absolute;
  1133. inset: auto auto -13rpx 8rpx;
  1134. border-width: 7rpx 13rpx;
  1135. border-style: solid;
  1136. border-color: #FFFFFF transparent transparent;
  1137. }
  1138. .item{
  1139. padding: 14rpx 24rpx;
  1140. font-size: 28rpx;
  1141. color: #333333;
  1142. }
  1143. }
  1144. }
  1145. </style>