index.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768
  1. <template>
  2. <view>
  3. <!-- #ifdef MP || APP-PLUS -->
  4. <NavBar titleText="售后详情" :iconColor="iconColor" :textColor="iconColor" :isScrolling="isScrolling" showBack>
  5. </NavBar>
  6. <!-- #endif -->
  7. <view class="headerBg">
  8. <view :style="{ height: `${getHeight.barTop}px` }"></view>
  9. <view :style="{ height: `${getHeight.barHeight}px` }"></view>
  10. <view class="inner"></view>
  11. </view>
  12. <view class="order-details pos-order-details">
  13. <view class="header">
  14. <view class="state">{{statusArr[refundInfo.refundStatus]}}</view>
  15. <view class="data">
  16. <span v-if="refundInfo.refundStatus==0">用户提交退款申请,请您及时处理哦~</span>
  17. <span v-if="refundInfo.refundStatus==4">您已同意此退款申请,等待用户退货中~</span>
  18. <span v-if="refundInfo.refundStatus==5">用户已经填写退货信息,请您耐心等待~</span>
  19. <span v-if="refundInfo.refundStatus==2">退款金额原支付路径返回中!</span>
  20. <span v-if="refundInfo.refundStatus==3">退款金额已返还用户账户!</span>
  21. <span v-if="refundInfo.refundStatus==6">用户已经撤销此退款申请!</span>
  22. <span v-if="refundInfo.refundStatus==1">{{refundInfo.refundReason}}</span>
  23. </view>
  24. </view>
  25. <view class='wrapper'>
  26. <view class='item acea-row title'>
  27. <view>退款明细</view>
  28. </view>
  29. <view class='item acea-row row-between'>
  30. <view>退款金额</view>
  31. <view class='conter'>¥{{refundInfo.refundPrice}}</view>
  32. </view>
  33. <view class='item acea-row row-between'>
  34. <view>退回运费</view>
  35. <view class='conter'>¥{{refundInfo.refundFreightFee}}</view>
  36. </view>
  37. <view class='item acea-row row-between'>
  38. <view>退回抵扣积分</view>
  39. <view class='conter'>{{refundInfo.refundUseIntegral}}</view>
  40. </view>
  41. <view class='item acea-row row-between'>
  42. <view>收回赠送积分</view>
  43. <view class='conter'>{{refundInfo.refundGainIntegral}}</view>
  44. </view>
  45. </view>
  46. <!-- 商品信息 -->
  47. <view class='wrapper'>
  48. <view class="acea-row row-between productInfo-box">
  49. <image class="productImg" :src="refundInfo.image" mode=""></image>
  50. <view class="product-right">
  51. <view class="product-name prodyct-item">{{refundInfo.productName}}</view>
  52. <view class="product-sku prodyct-item">{{refundInfo.sku}}</view>
  53. <view class="product-price prodyct-item">¥{{refundInfo.price}}</view>
  54. </view>
  55. </view>
  56. <view class="item acea-row row-between">
  57. <view>退款件数</view>
  58. <view class="conter">{{ refundInfo.applyRefundNum }}</view>
  59. </view>
  60. <view class="item acea-row row-between">
  61. <view>售后类型</view>
  62. <view class="conter">{{ refundInfo.afterSalesType==1?'仅退款':'退货退款' }}</view>
  63. </view>
  64. <view class="item acea-row row-between">
  65. <view>退货方式</view>
  66. <view class="conter">{{ refundInfo.returnGoodsType==0?'不退货':refundInfo.returnGoodsType==1?'快递退回':'到店退货' }}</view>
  67. </view>
  68. <view class="item acea-row row-between">
  69. <view>退款原因</view>
  70. <view class="conter">{{ refundInfo.refundReasonWap }}</view>
  71. </view>
  72. <view class="item acea-row row-between">
  73. <view>备注说明</view>
  74. <view class="conter">{{ refundInfo.refundReasonWapExplain }}</view>
  75. </view>
  76. <view class="item acea-row row-between">
  77. <view>退款凭证</view>
  78. <view class="conter">
  79. <scroll-view class="picTxt scroll-view" scroll-x="true" v-if="refundInfo.refundReasonWapImg">
  80. <view class="pictrue" v-for="(val, key) in refundInfo.refundReasonWapImg.split(',')" :key="key">
  81. <image class="scroll-img" :src="val" />
  82. </view>
  83. </scroll-view>
  84. </view>
  85. </view>
  86. </view>
  87. <view class="wrapper">
  88. <view class="item acea-row row-between">
  89. <view>订单编号</view>
  90. <view class="conter">
  91. {{ orderInfoVo.orderNo}}
  92. <!-- #ifdef H5 -->
  93. <text class="copy copy-data" :data-clipboard-text="orderInfoVo.orderNo">复制</text>
  94. <!-- #endif -->
  95. <!-- #ifdef MP -->
  96. <text class="copy copy-data" @click="copyNum(orderInfoVo.orderNo)">复制</text>
  97. <!-- #endif -->
  98. </view>
  99. </view>
  100. <view class="item acea-row row-between">
  101. <view>退款编号</view>
  102. <view class="conter">
  103. {{ refundInfo.refundOrderNo }}
  104. <!-- #ifdef H5 -->
  105. <text class="copy copy-data" :data-clipboard-text="refundInfo.refundOrderNo">复制</text>
  106. <!-- #endif -->
  107. <!-- #ifdef MP -->
  108. <text class="copy copy-data" @click="copyNum(refundInfo.refundOrderNo)">复制</text>
  109. <!-- #endif -->
  110. </view>
  111. </view>
  112. <view class="item acea-row row-between">
  113. <view>申请时间</view>
  114. <view class="conter">{{ orderInfoVo.createTime }}</view>
  115. </view>
  116. <view class="item acea-row row-between">
  117. <view>退款方式</view>
  118. <view class="conter">{{ payType[`${orderInfoVo.payType}`] }}</view>
  119. </view>
  120. <view class="item acea-row row-between">
  121. <view>退一级返佣</view>
  122. <view class="conter">{{ refundInfo.refundFirstBrokerageFee }}</view>
  123. </view>
  124. <view class="item acea-row row-between">
  125. <view>退二级返佣</view>
  126. <view class="conter">{{ refundInfo.refundSecondBrokerageFee }}</view>
  127. </view>
  128. <view class="item acea-row row-between">
  129. <view>平台备注</view>
  130. <view class="conter">{{ refundInfo.platformRemark||'' }}</view>
  131. </view>
  132. <view class="item acea-row row-between">
  133. <view>商家备注</view>
  134. <view class="conter">{{ refundInfo.merRemark||''}}</view>
  135. </view>
  136. </view>
  137. <view class="height-add"></view>
  138. <view class="footer acea-row row-right row-middle" v-if="goname != 'looks'">
  139. <view class="btn" @click="modify(refundInfo, 7)">退款单备注</view>
  140. <view class="btn on" v-if="(refundInfo.returnGoodsType==0||refundInfo.returnGoodsType==2)&&refundInfo.refundStatus==0" @click="modify(refundInfo,'2',1,0)">
  141. 退款审核
  142. </view>
  143. <view class="btn on" v-if="refundInfo.returnGoodsType==1&&refundInfo.refundStatus==0" @click="modify(refundInfo,'2',0,1)">
  144. 退款审核
  145. </view>
  146. <view class="btn on" v-if="refundInfo.refundStatus==5" @click="modify(refundInfo, 2, 1,2)">确认收货</view>
  147. </view>
  148. <PriceChange :change="change" :orderInfo="orderInfo" :isRefund="isRefund"
  149. v-on:statusChange="statusChange($event)" v-on:closechange="changeclose($event)" v-on:savePrice="savePrice"
  150. :status="status"></PriceChange>
  151. </view>
  152. </view>
  153. </template>
  154. <script>
  155. import {refundOrderDetail} from'@/api/work.js'
  156. import PriceChange from "../components/PriceChange/index.vue";
  157. // #ifdef MP || APP-PLUS
  158. import NavBar from "../components/NavBar.vue";
  159. // #endif
  160. // #ifdef H5
  161. import ClipboardJS from "@/plugin/clipboard/clipboard.js";
  162. // #endif
  163. import {
  164. isMoney
  165. } from '@/utils/validate.js'
  166. import {refundOrderList,refundOrderMark,refundStatusNum,refundOrderAudit,refundReceiving,refundReceivingReject} from '@/api/work.js'
  167. export default {
  168. name: "AdminOrder",
  169. components: {
  170. PriceChange,
  171. // #ifdef MP || APP-PLUS
  172. NavBar,
  173. // #endif
  174. },
  175. props: {},
  176. data: function() {
  177. return {
  178. payType: {
  179. 'public': '公众号支付',
  180. 'mini': '小程序支付',
  181. 'h5': '网页支付支付',
  182. 'yue': '余额支付',
  183. 'wechatIos': '微信Ios支付',
  184. 'wechatAndroid': '微信Android支付',
  185. 'alipay': '支付宝支付',
  186. 'alipayApp': '支付宝App支付'
  187. },
  188. statusArr:['待审核','商家拒绝','退款中','已退款','用户退货','商家待收货','已撤销'],
  189. openErp: false,
  190. order: false,
  191. change: false,
  192. status: "",
  193. types: "",
  194. statusType: -3,
  195. clickNum: 1,
  196. goname: '',
  197. isRefund: 0, //1是仅退款;0是同意退货退款
  198. // #ifdef MP || APP-PLUS
  199. iconColor: '#FFFFFF',
  200. isScrolling: false,
  201. // #endif
  202. getHeight: this.$util.getWXStatusHeight(),
  203. refundInfo: '',
  204. refundOrderNo:'',
  205. apiModalType:'',
  206. orderInfo:{},
  207. orderInfoVo:''
  208. };
  209. },
  210. onLoad: function(option) {
  211. this.refundOrderNo=option.refundOrderNo
  212. this.getIndex();
  213. // #ifdef H5
  214. this.$nextTick(function() {
  215. var clipboard = new ClipboardJS('.copy-data');
  216. clipboard.on('success', function(e) {
  217. this.$util.Tips({
  218. title: '复制成功'
  219. })
  220. });
  221. clipboard.on('error', function(e) {
  222. this.$util.Tips({
  223. title: '复制失败'
  224. })
  225. });
  226. });
  227. // #endif
  228. },
  229. onShow() {
  230. this.getIndex();
  231. },
  232. onPageScroll(e) {
  233. // #ifdef MP || APP-PLUS
  234. if (e.scrollTop > 50) {
  235. this.iconColor = '#333333';
  236. this.isScrolling = true;
  237. } else {
  238. this.iconColor = '#FFFFFF';
  239. this.isScrolling = false;
  240. }
  241. // #endif
  242. },
  243. methods: {
  244. //0-仅退款 1-退货退款 2-确认收货
  245. modify: function(item, status, type,apiType) {
  246. this.apiModalType=apiType
  247. if (this.openErp && status != 1) return
  248. this.change = true;
  249. this.status = status.toString();
  250. this.orderInfo = item;
  251. if (status == 2) {
  252. this.isRefund = type
  253. }
  254. },
  255. changeclose: function(msg) {
  256. this.change = msg;
  257. },
  258. getIndex: function() {
  259. refundOrderDetail(this.refundOrderNo).then(res=>{
  260. this.refundInfo=res.data
  261. this.orderInfoVo=res.data.orderInfoVo
  262. })
  263. },
  264. async savePrice(opt) {
  265. let that = this,
  266. data = {};
  267. data.refundOrderNo = that.orderInfo.refundOrderNo;
  268. if (that.apiModalType == 0) {
  269. if(opt.type==2&&!opt.refuse_reason){
  270. return this.$util.Tips({
  271. title: '请输入拒绝理由'
  272. })
  273. }
  274. let requestObj = {
  275. refundOrderNo:that.orderInfo.refundOrderNo,
  276. auditType:opt.type==1?'success':'refuse',
  277. reason:opt.refuse_reason?opt.refuse_reason:''
  278. }
  279. refundOrderAudit(requestObj).then(res=>{
  280. if(res.code==200){
  281. this.$util.Tips({
  282. title: '审核成功'
  283. })
  284. this.init();
  285. this.change = false
  286. }else{
  287. this.$util.Tips({
  288. title:res.message
  289. })
  290. }
  291. })
  292. } else if (that.apiModalType == 1) {
  293. //退货退款审核
  294. if(opt.type==2&&!opt.refuse_reason){
  295. return this.$util.Tips({
  296. title: '请输入拒绝理由'
  297. })
  298. }
  299. if(opt.type==1&&!opt.merAddressId){
  300. return this.$util.Tips({
  301. title: '请选择退货地址'
  302. })
  303. }
  304. //退货退款拒绝
  305. if(opt.type==2){
  306. let requestObj = {
  307. refundOrderNo:that.orderInfo.refundOrderNo,
  308. auditType:opt.type==1?'success':'refuse',
  309. reason:opt.refuse_reason?opt.refuse_reason:''
  310. }
  311. refundOrderAudit(requestObj).then(res=>{
  312. if(res.code==200){
  313. this.$util.Tips({
  314. title: '操作成功'
  315. })
  316. this.init();
  317. this.change = false
  318. }else{
  319. this.$util.Tips({
  320. title:res.message
  321. })
  322. }
  323. })
  324. }
  325. //退货退款同意
  326. if(opt.type==1){
  327. let requestObj = {
  328. refundOrderNo:that.orderInfo.refundOrderNo,
  329. auditType:opt.type==1?'success':'refuse',
  330. merAddressId:opt.merAddressId
  331. }
  332. refundOrderAudit(requestObj).then(res=>{
  333. if(res.code==200){
  334. this.$util.Tips({
  335. title: '操作成功'
  336. })
  337. this.init();
  338. this.change = false
  339. }else{
  340. this.$util.Tips({
  341. title:res.message
  342. })
  343. }
  344. })
  345. }
  346. }else if(that.apiModalType == 2){
  347. //确认收货
  348. if(opt.type==2&&!opt.refuse_reason){
  349. return this.$util.Tips({
  350. title: '请输入拒绝理由'
  351. })
  352. }
  353. if(opt.type==1){
  354. // 同意
  355. refundReceiving(that.orderInfo.refundOrderNo).then(res=>{
  356. if(res.code==200){
  357. this.$util.Tips({
  358. title: '操作成功'
  359. })
  360. this.init();
  361. this.change = false
  362. }else{
  363. this.$util.Tips({
  364. title:res.message
  365. })
  366. }
  367. })
  368. }
  369. if(opt.type==2){
  370. let requestObj = {
  371. refundOrderNo:that.orderInfo.refundOrderNo,
  372. reason:opt.refuse_reason?opt.refuse_reason:''
  373. }
  374. // 拒绝
  375. refundReceivingReject(requestObj).then(res=>{
  376. if(res.code==200){
  377. this.$util.Tips({
  378. title: '操作成功'
  379. })
  380. this.init();
  381. this.change = false
  382. }else{
  383. this.$util.Tips({
  384. title:res.message
  385. })
  386. }
  387. })
  388. }
  389. }else{
  390. data.remark=opt.remark
  391. if (!data.remark) {
  392. return this.$util.Tips({
  393. title: '请输入备注'
  394. })
  395. }
  396. refundOrderMark(data).then(res=>{
  397. if(res.code==200){
  398. this.$util.Tips({
  399. title: '备注成功'
  400. })
  401. this.getIndex();
  402. this.change = false
  403. }else{
  404. this.$util.Tips({
  405. title:res.message
  406. })
  407. }
  408. })
  409. }
  410. },
  411. init(){
  412. uni.navigateBack()
  413. },
  414. // #ifdef MP
  415. copyNum(id) {
  416. uni.setClipboardData({
  417. data: id,
  418. success: function() {}
  419. });
  420. },
  421. // #endif
  422. // #ifdef H5
  423. webCopy(item, index) {
  424. let items = item
  425. let indexs = index
  426. let self = this
  427. if (self.clickNum == 1) {
  428. self.clickNum += 1
  429. self.webCopy(items, indexs)
  430. }
  431. },
  432. // #endif
  433. }
  434. };
  435. </script>
  436. <style lang="scss" scoped>
  437. .headerBg {
  438. position: absolute;
  439. top: 0;
  440. left: 0;
  441. width: 100%;
  442. background-image: linear-gradient(360deg, #F5F5F5 0%, rgba(245, 245, 245, 0) 100%),
  443. linear-gradient(270deg, #01ABF8 0%, #2A7EFB 100%);
  444. background-position: left bottom, left top;
  445. background-repeat: no-repeat;
  446. background-size: 100% 120rpx, 100% 100%;
  447. .inner {
  448. height: 356rpx;
  449. }
  450. }
  451. .order-details {
  452. position: absolute;
  453. width: 100%;
  454. padding: 0 20rpx;
  455. }
  456. .height-add {
  457. height: calc(120rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
  458. height: calc(120rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
  459. }
  460. .pos-order-details .footer .more {
  461. font-size: 27upx;
  462. color: #aaa;
  463. width: 100upx;
  464. height: 64upx;
  465. text-align: center;
  466. line-height: 64upx;
  467. margin-right: 25upx;
  468. position: relative;
  469. }
  470. .pos-order-details .footer .delivery {
  471. border-color: #2A7EFB !important;
  472. background: #2A7EFB;
  473. color: #FFFFFF !important;
  474. }
  475. .pos-order-details .footer .more .order .arrow {
  476. width: 0;
  477. height: 0;
  478. border-left: 11upx solid transparent;
  479. border-right: 11upx solid transparent;
  480. border-top: 20upx solid #e5e5e5;
  481. position: absolute;
  482. left: 15upx;
  483. bottom: -18upx;
  484. }
  485. .pos-order-details .footer .more .order .arrow:before {
  486. content: '';
  487. width: 0;
  488. height: 0;
  489. border-left: 9upx solid transparent;
  490. border-right: 9upx solid transparent;
  491. border-top: 19upx solid #fff;
  492. position: absolute;
  493. left: -10upx;
  494. bottom: 0;
  495. }
  496. .pos-order-details .footer .more .order {
  497. width: 200upx;
  498. background-color: #fff;
  499. border: 1px solid #eee;
  500. border-radius: 10upx;
  501. position: absolute;
  502. top: -200upx;
  503. z-index: 9;
  504. }
  505. .pos-order-details .footer .more .order .item {
  506. height: 77upx;
  507. line-height: 77upx;
  508. }
  509. .pos-order-details .footer .more .order .item~.item {
  510. border-top: 1px solid #f5f5f5;
  511. }
  512. /*订单详情*/
  513. .order-details .header {
  514. padding: 48rpx 0 30rpx 12rpx;
  515. }
  516. .order-details .header.on {
  517. background-color: #666 !important;
  518. }
  519. .order-details .header .state {
  520. font-weight: 500;
  521. font-size: 36rpx;
  522. line-height: 50rpx;
  523. color: #FFFFFF;
  524. }
  525. .order-details .header .data {
  526. margin-top: 8rpx;
  527. font-size: 26rpx;
  528. line-height: 36rpx;
  529. color: #FFFFFF;
  530. }
  531. .order-details .header.on .data {
  532. margin-left: 0;
  533. }
  534. .order-details .header .data .state {
  535. font-size: 30upx;
  536. font-weight: bold;
  537. color: #fff;
  538. margin-bottom: 7upx;
  539. }
  540. /* .order-details .header .data .time{margin-left:20upx;} */
  541. .order-details .nav {
  542. background-color: #fff;
  543. font-size: 26upx;
  544. color: #282828;
  545. padding: 25upx 0;
  546. }
  547. .order-details .nav .navCon {
  548. padding: 0 40upx;
  549. }
  550. .order-details .nav .navCon .on {
  551. font-weight: bold;
  552. color: #e93323;
  553. }
  554. .order-details .nav .progress {
  555. padding: 0 65upx;
  556. margin-top: 10upx;
  557. }
  558. .order-details .nav .progress .line {
  559. width: 100upx;
  560. height: 2upx;
  561. background-color: #939390;
  562. }
  563. .order-details .nav .progress .iconfont {
  564. font-size: 25upx;
  565. color: #939390;
  566. margin-top: -2upx;
  567. width: 30upx;
  568. height: 30upx;
  569. line-height: 33upx;
  570. text-align: center;
  571. margin-right: 0 !important;
  572. }
  573. .order-details .line {
  574. position: absolute;
  575. bottom: 0;
  576. left: 0;
  577. width: 100%;
  578. height: 4rpx;
  579. }
  580. .order-details .line image {
  581. width: 100%;
  582. height: 100%;
  583. display: block;
  584. }
  585. .order-details .wrapper {
  586. padding: 32rpx 24rpx;
  587. border-radius: 24rpx;
  588. margin-top: 20rpx;
  589. background: #FFFFFF;
  590. .title{
  591. font-weight: 600;
  592. font-size: 28rpx;
  593. color: #333333;
  594. border-bottom: 1px solid #EEEEEE;
  595. padding-bottom: 30rpx;
  596. }
  597. }
  598. .order-details .wrapper .item {
  599. font-size: 28rpx;
  600. line-height: 40rpx;
  601. color: #333333;
  602. }
  603. .order-details .wrapper .item~.item {
  604. margin-top: 24rpx;
  605. }
  606. .order-details .wrapper .item .conter .copy {
  607. height: 36rpx;
  608. padding: 0 12rpx;
  609. border: 0;
  610. border-radius: 18rpx;
  611. margin-left: 8rpx;
  612. background: #F5F5F5;
  613. font-size: 22rpx;
  614. line-height: 36rpx;
  615. color: #333333;
  616. }
  617. .order-details .wrapper .actualPay {
  618. margin-top: 26rpx;
  619. }
  620. .order-details .wrapper .actualPay .money {
  621. font-weight: bold;
  622. font-size: 30upx;
  623. color: #e93323;
  624. }
  625. .order-details .footer {
  626. width: 100%;
  627. height: 100upx;
  628. position: fixed;
  629. bottom: 0;
  630. left: 0;
  631. background-color: #fff;
  632. padding: 0 30upx;
  633. border-top: 1px solid #eee;
  634. height: calc(100rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
  635. height: calc(100rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
  636. padding-bottom: calc(0rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
  637. padding-bottom: calc(0rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
  638. }
  639. .order-details .footer .wait {
  640. color: #2a7efb;
  641. margin-right: 30rpx;
  642. }
  643. .order-details .footer .btn {
  644. width: 144rpx;
  645. height: 56rpx;
  646. border: 1rpx solid #CCCCCC;
  647. line-height: 54rpx;
  648. text-align: center;
  649. border-radius: 28rpx;
  650. font-size: 24rpx;
  651. color: #333333;
  652. transform: rotateZ(360deg);
  653. }
  654. .order-details .footer .btn.default {
  655. color: #444;
  656. border: 1px solid #444;
  657. }
  658. .order-details .footer .btn~.btn {
  659. margin-left: 16rpx;
  660. }
  661. .copy-data {
  662. font-size: 10px;
  663. color: #333;
  664. -webkit-border-radius: 1px;
  665. border-radius: 1px;
  666. border: 1px solid #666;
  667. padding: 0px 7px;
  668. margin-left: 12px;
  669. height: 20px;
  670. }
  671. .productImg{
  672. width: 140rpx;
  673. height: 140rpx;
  674. border-radius: 16rpx;
  675. }
  676. .productInfo-box{
  677. padding-bottom: 32rpx;
  678. margin-bottom: 24rpx;
  679. border-bottom: 1px solid #eee;
  680. .product-right{
  681. display: flex;
  682. flex-direction: column;
  683. justify-content: space-between;
  684. }
  685. .prodyct-item{
  686. width: 500rpx;
  687. overflow: hidden;//(文字长度超出限定宽度,则隐藏超出的内容)
  688. white-space: nowrap;//(设置文字在一行显示,不能换行)
  689. text-overflow: ellipsis;//(规定当文本溢出时,显示省略符号来代表被修剪的文本
  690. }
  691. .product-name{
  692. font-size: 28rpx;
  693. color: #333333;
  694. }
  695. .product-sku{
  696. font-size: 22rpx;
  697. color: #999999;
  698. }
  699. .product-price{
  700. font-size: 22rpx;
  701. color: #333333;
  702. }
  703. }
  704. .scroll-view {
  705. box-sizing: border-box;
  706. white-space: nowrap;
  707. .pictrue {
  708. display: inline-block;
  709. +.pictrue {
  710. margin-left: 16rpx;
  711. }
  712. }
  713. }
  714. .on {
  715. border-color: #2A7EFB !important;
  716. background: #2A7EFB !important;
  717. color: #fff !important;
  718. }
  719. .scroll-img{
  720. width: 88rpx;
  721. height: 88rpx;
  722. margin-left: 12rpx;
  723. }
  724. </style>