refundDetail.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664
  1. <template>
  2. <view class="box">
  3. <view class="cont">
  4. <view class="topBox goodsBox" v-if="data.openSheetRefund.refundState == 1 ">
  5. <view class="topState" >
  6. <view class="tsTop" v-if="data.openSheetRefund.refundState == 1">
  7. <view class="tsYd"></view>
  8. <view class="tsHx"></view>
  9. <view class="tsYd"></view>
  10. <view class="tsHx tsHx2"></view>
  11. <view class="tsYd tsYd2"></view>
  12. <view class="tsHx tsHx2"></view>
  13. <view class="tsYd tsYd2"></view>
  14. </view>
  15. <view class="tsM" v-if="data.openSheetRefund.refundState == 1">
  16. <view class="tsMline">发起退款</view>
  17. <view class="tsMline">商家处理</view>
  18. <view class="tsMline tsMline2">商家退款</view>
  19. <view class="tsMline tsMline2">退款结束</view>
  20. </view>
  21. <view class="txTxt" v-if="data.openSheetRefund.refundState == 1">
  22. <span>请等待</span><span style="color: #EC0F0A;">商家处理</span>
  23. </view>
  24. <view class="txTxt2" v-if="data.openSheetRefund.refundState == 1">已发起退款申请</view>
  25. </view>
  26. </view>
  27. <view class="goodsBox topBox" v-if="data.openSheetRefund.refundState == 3">
  28. <view class="txTxt" style="padding-top: 0;">
  29. <span>商家</span><span style="color: #EC0F0A;">拒绝退款</span>
  30. </view>
  31. <view class="txTxt2">
  32. 您的退款申请已被商家拒绝
  33. </view>
  34. </view>
  35. <view class="goodsBox topBox" v-if="data.openSheetRefund.refundState == 2">
  36. <view class="tkTopTitle">退款成功</view>
  37. <view class="tksuccess">
  38. <view class="tksuccessYx">
  39. <view class="tksuccessTxt">原路退回</view>
  40. <view class="tksuccessPrice">¥<span style="font-size: 36rpx;">{{data.openSheetRefund.realMoney}}</span> </view>
  41. </view>
  42. <view class="tksuccessTime">{{data.openSheetRefund.reAccountTime}}</view>
  43. </view>
  44. </view>
  45. <!-- 退款关闭-->
  46. <view class="goodsBox topBox" v-if="data.openSheetRefund.refundState == 4||data.openSheetRefund.refundState == 5">
  47. <view class="tkTopTitle" v-if="data.openSheetRefund.refundState == 4">退款失败</view>
  48. <view class="tkTopTitle" v-if="data.openSheetRefund.refundState == 5">退款关闭</view>
  49. <view class="tkErr" v-if="data.openSheetRefund.refundState == 4">退款失败</view>
  50. <view class="tkErr" v-if="data.openSheetRefund.refundState == 5">您的退款申请已关闭</view>
  51. </view>
  52. <!-- 退款关闭-->
  53. <view class="goodsBox topBox" v-if="data.openSheetRefund.refundState ==6">
  54. <view class="tkTopTitle" >待退款到账</view>
  55. <view class="tkErr" >等待商家退款</view>
  56. </view>
  57. <view class="itemBox flex">
  58. <image :src="ImgUrl" class="itemIMg" v-if="ImgUrl"/>
  59. <image class="itemIMg" v-else src="../../static/timg/noimg.png" mode=""></image>
  60. <view class="itemRight">
  61. <view class="itemName" v-if="data.openSheet.sheetType!=5">{{data.openSheetRefund.itemName}}</view>
  62. <view class="itemName" v-if="data.openSheet.sheetType==5">钣喷</view>
  63. <view class="priceBox">
  64. <view class="price">¥{{data.openSheetRefund.money}}</view>
  65. </view>
  66. </view>
  67. </view>
  68. <view class="goodsBox" v-if="data">
  69. <view class="goodsline flex" v-if="data.openSheetRefund.couponCount==1" >
  70. <view class="goodsLeft">退款券号</view>
  71. <view class="goodRight" style="display: flex;">
  72. <image @click="copy(data.openSheetRefund.couponCode)" src="../../static/img2/copy.png" mode="" class="copyIcon"></image>
  73. <span v-if="data.openSheetRefund.couponCode">{{data.openSheetRefund.couponCode}}</span>
  74. </view>
  75. </view>
  76. <view class="goodsline flex" v-if="data.openSheetRefund.couponCount!=1">
  77. <view class="goodsLeft">退款券号</view>
  78. <view class="goodRight" style="display: flex;" @click="codeFn">
  79. <span>共{{data.openSheetRefund.couponCount}}份券号</span>
  80. <image src="../../static/img2/hjt.png" mode="" class="jtIcon"></image>
  81. </view>
  82. </view>
  83. <view class="goodsline flex" >
  84. <view class="goodsLeft">退款份数</view>
  85. <view class="goodRight" >
  86. {{data.openSheetRefund.couponCount}}份
  87. </view>
  88. </view>
  89. <view class="goodsline flex" >
  90. <view class="tkPrice">
  91. <view class="tkPrice1">退款金额</view>
  92. <view class="tkPrice2">实际退款金额以到账金额为准</view>
  93. </view>
  94. <view class="tkPriceNum">¥{{data.openSheetRefund.money}}</view>
  95. </view>
  96. <view class="goodsline flex" >
  97. <view class="goodsLeft">退款方式</view>
  98. <view class="goodRight" style="font-size: 26rpx;color: #222222;">原路退回</view>
  99. </view>
  100. <view class="goodsline flex" >
  101. <view class="goodsLeft">商品是否已使用</view>
  102. <view class="goodRight" >{{data.openSheetRefund.hType==1?'未使用':'已使用'}}</view>
  103. </view>
  104. <view class="goodsline flex" >
  105. <view class="goodsLeft">退款原因</view>
  106. <view class="goodRight" >{{data.openSheetRefund.refundReason}}</view>
  107. </view>
  108. <view class="goodsline flex" >
  109. <view class="goodsLeft">退款说明</view>
  110. <view class="goodRight" style="width: 400rpx;text-align: right;">{{data.openSheetRefund.content}}</view>
  111. </view>
  112. <view class="goodsline flex" >
  113. <view class="goodsLeft">退款凭证</view>
  114. <view class="goodRight tkImgBox" >
  115. <image class="tkImg" @click="previewImage(index)" v-for="(item,index) in data.evidenceList" :src="item.url" mode="aspectFit"></image>
  116. </view>
  117. </view>
  118. </view>
  119. <view class="goodsBox2">
  120. <view class="goodsline flex" >
  121. <view class="goodsLeft">订单编号</view>
  122. <view class="goodRight" style="display: flex;">
  123. <image @click="copy(data.openSheetRefund.sheetCode)" src="../../static/img2/copy.png" mode="" class="copyIcon"></image>
  124. <span v-if="data">{{data.openSheetRefund.sheetCode}}</span>
  125. </view>
  126. </view>
  127. <view class="goodsline flex" >
  128. <view class="goodsLeft">退款编号</view>
  129. <view class="goodRight" style="display: flex;">
  130. <image @click="copy(data.openSheetRefund.code)" src="../../static/img2/copy.png" mode="" class="copyIcon"></image>
  131. <span v-if="data">{{data.openSheetRefund.code}}</span>
  132. </view>
  133. </view>
  134. </view>
  135. </view>
  136. <view class="reasonBox" v-if="codeShow" @click="qdTkclose">
  137. <view class="codeCont" @click.stop="">
  138. <view class="reasonTop">
  139. <view class="chahao"></view>
  140. <view class="tkTitle">退款券号</view>
  141. <image @click="qdTkclose" class="chahao" src="../../static/img2/chahao.png" mode=""></image>
  142. </view>
  143. <view class="codeLineBox">
  144. <view class="codeLine" v-for="(v,i) in data.openSheetRefund.couponCode.split(',')">
  145. <span style="padding-right: 10rpx;">{{v}}</span>
  146. <image src="../../static/img2/copy.png" mode="" @click="copy(v)" class="copyIcon"></image>
  147. </view>
  148. </view>
  149. </view>
  150. </view>
  151. <view style="height: 40rpx;"></view>
  152. </view>
  153. </template>
  154. <script>
  155. export default {
  156. components: {
  157. },
  158. data() {
  159. return {
  160. themeColor:'',
  161. ext:'',
  162. userInfo:'',
  163. carInfo:'',
  164. customerInfo:'',
  165. codeShow:false,
  166. id:'09ee0273-d2b2-4204-a1db-f0555ec2ea10',
  167. data:'',
  168. ImgUrl:'',
  169. }
  170. },
  171. onLoad(opt) {
  172. if(opt.id){
  173. this.id=opt.id
  174. }
  175. //this.id='CC691F61-C7BF-44F2-8F50-4F69480DB599'
  176. this.userInfo=this.$store.state.userInfo;
  177. this.ext=this.$common.getExtStoreId();
  178. if(this.userInfo){
  179. this.getData()
  180. }else{
  181. this.$common.automaticlogin().then(val => {
  182. this.userInfo=this.$store.state.userInfo;
  183. if (this.id) {
  184. this.getData();
  185. }
  186. if(!this.userInfo){
  187. //this.authorizShow=true
  188. }
  189. })
  190. }
  191. },
  192. onShow() {
  193. },
  194. methods: {
  195. previewImage(index){
  196. // 预览图片
  197. var arr=[]
  198. this.data.evidenceList.forEach(item=>{
  199. arr.push(item.url)
  200. })
  201. uni.previewImage({
  202. urls: arr,
  203. current: index,
  204. longPressActions: {
  205. itemList: ['发送给朋友', '保存图片', '收藏'],
  206. success: function(data) {
  207. console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
  208. },
  209. fail: function(err) {
  210. console.log(err.errMsg);
  211. }
  212. }
  213. });
  214. },
  215. getData(){
  216. uni.showLoading({
  217. title: '加载中'
  218. })
  219. this.$http('openOrderManagement/openSheetRefundDetail', {
  220. id: this.id,
  221. }, 'GET').then(res => {
  222. uni.hideLoading();
  223. this.data=res.data
  224. if(this.data.openSheetRefund.ImgUrl){
  225. var arr=this.data.openSheetRefund.ImgUrl.split(",")
  226. this.ImgUrl=arr[0]
  227. }
  228. })
  229. },
  230. qdTkclose(){
  231. this.codeShow=false;
  232. },
  233. codeFn(){
  234. this.codeShow=true;
  235. },
  236. copy(txt) {
  237. uni.setClipboardData({
  238. data: txt,
  239. success: function() {
  240. uni.showToast({
  241. title: '复制成功',
  242. icon: 'none',
  243. duration: 2000
  244. });
  245. }
  246. });
  247. },
  248. },
  249. onPullDownRefresh() {
  250. this.getData()
  251. setTimeout(function() {
  252. uni.stopPullDownRefresh();
  253. }, 1000);
  254. },
  255. }
  256. </script>
  257. <style scoped lang="less">
  258. .box {
  259. width: 100vw;
  260. min-height: 100vh;
  261. background: #F4F4F4;
  262. }
  263. .tkTopTitle{
  264. font-weight: 500;
  265. font-size: 32rpx;
  266. color: #222222;
  267. line-height: 50rpx;
  268. padding-top: 12rpx;
  269. }
  270. .tksuccess{
  271. background: #F7F7F7;
  272. border-radius: 16rpx;
  273. padding: 20rpx;
  274. margin-top: 20rpx;
  275. }
  276. .tksuccessYx{
  277. display: flex;justify-content: space-between;
  278. }
  279. .tksuccessTxt{
  280. font-weight: 500;
  281. font-size: 28rpx;
  282. color: #222222;
  283. line-height: 40rpx;
  284. }
  285. .tksuccessPrice{
  286. font-weight: 500;
  287. font-size: 26rpx;
  288. color: #EC0F0A;
  289. }
  290. .tksuccessTime{
  291. font-size: 26rpx;
  292. color: #9A9A9A;
  293. }
  294. .tsTop{
  295. display: flex;justify-content: center;
  296. }
  297. .tsM{
  298. display: flex;justify-content: center;
  299. }
  300. .tsMline{
  301. font-size: 26rpx;
  302. color: #666666;
  303. line-height: 33rpx;
  304. text-align: center;
  305. width: 210rpx;
  306. padding-top: 8rpx;
  307. }
  308. .txTxt{
  309. font-weight: 500;
  310. font-size: 36rpx;
  311. color: #222222;
  312. line-height: 50rpx;
  313. padding-top: 30rpx;
  314. }
  315. .txTxt2{
  316. font-size: 24rpx;
  317. color: #9A9A9A;
  318. line-height: 33rpx;
  319. padding-top: 8rpx;
  320. /* padding-bottom: 20rpx; */
  321. }
  322. .tsYd{
  323. width: 12rpx;
  324. height: 12rpx;
  325. border: 3rpx solid #88888A;
  326. border-radius: 50%;
  327. }
  328. .tsHx{
  329. width: 135rpx;
  330. height: 4rpx;
  331. background: #5B5B5C;
  332. border-radius: 2rpx;
  333. margin-left: 9rpx;
  334. margin-right: 9rpx;
  335. margin-top: 6rpx;
  336. }
  337. .tsYd2{
  338. border: 3rpx solid #eeeeee;
  339. }
  340. .tsHx2{
  341. background: #eeeeee;
  342. }
  343. .tsMline2{
  344. color: #9A9A9A;
  345. }
  346. .topState{
  347. padding-top: 20rpx;
  348. }
  349. .topBox{
  350. margin-bottom: 20rpx;
  351. }
  352. .copyIcon{
  353. width: 30rpx;height: 30rpx;
  354. margin-top: 4rpx;margin-right: 6rpx;
  355. }
  356. .tkImg{
  357. width: 148rpx;height: 148rpx;
  358. margin-left: 10rpx;
  359. margin-bottom: 10rpx;
  360. }
  361. .tkImgBox{
  362. display: flex;flex-wrap: wrap;
  363. width: 484rpx;
  364. }
  365. .reasonTop{
  366. display: flex;justify-content: space-between;
  367. padding: 32rpx 42rpx;
  368. }
  369. .chahao{
  370. width: 21rpx;height: 21rpx;
  371. padding-top: 10rpx;
  372. padding-left: 10rpx;
  373. padding-right: 10rpx;
  374. padding-bottom: 10rpx;
  375. }
  376. .tkTitle{
  377. font-weight: 500;
  378. font-size: 28rpx;
  379. color: #222222;
  380. line-height: 40rpx;
  381. }
  382. .reasonBox{
  383. position: fixed;
  384. left: 0;
  385. top: 0;
  386. height: 100vh;
  387. width: 750rpx;
  388. background: rgba(0, 0, 0, 0.5);
  389. }
  390. .codeCont{
  391. width: 750rpx;
  392. background: #FFFFFF;
  393. border-radius: 28rpx 28rpx 0rpx 0rpx;
  394. position: absolute;
  395. left: 0;
  396. bottom: 0;
  397. height: 383rpx;
  398. }
  399. .reasonCont{
  400. height: 70vh;
  401. width: 750rpx;
  402. background: #FFFFFF;
  403. border-radius: 28rpx 28rpx 0rpx 0rpx;
  404. position: absolute;
  405. left: 0;
  406. bottom: 0;
  407. }
  408. .reasonContLine{
  409. display: flex;justify-content: space-between;
  410. padding: 20rpx 0;
  411. }
  412. .reasonContLineTitle{
  413. font-weight: 500;
  414. font-size: 28rpx;
  415. color: #222222;
  416. }
  417. .reasonContLineTxt{
  418. font-weight: 400;
  419. font-size: 28rpx;
  420. color: #222222;
  421. line-height: 40rpx;
  422. }
  423. .reasonContLineCk{
  424. width: 28rpx;
  425. height: 28rpx;
  426. border: 2rpx solid #9A9A9A;
  427. border-radius: 16rpx;
  428. margin-top: 6rpx;
  429. }
  430. .reasonContLineBox{
  431. padding: 0 33rpx;
  432. height: calc(70vh - 270rpx);
  433. overflow-y: scroll;
  434. }
  435. .ckLine{
  436. display: flex;color: #9A9A9A;
  437. font-size: 26rpx;
  438. }
  439. .xinghao{
  440. color: #EC0F0A;
  441. }
  442. .jtIcon{
  443. width: 10rpx;height: 20rpx;
  444. margin-top: 8rpx;
  445. margin-left: 10rpx;
  446. }
  447. .tkPrice1{
  448. font-size: 26rpx;
  449. color: #222222;
  450. }
  451. .tkPrice2{
  452. font-size: 24rpx;
  453. color: #9A9A9A;
  454. padding-top: 8rpx;
  455. }
  456. .tkPriceNum{
  457. font-size: 26rpx;
  458. color: #222222;
  459. line-height: 50rpx;
  460. }
  461. .textareaNum{
  462. padding-bottom: 18rpx;
  463. }
  464. .tkSm{
  465. font-size: 26rpx;
  466. color: #222222;
  467. padding-top: 18rpx;
  468. }
  469. .tktextarea{
  470. font-size: 26rpx;
  471. background: #F7F7F7;
  472. border-radius: 14rpx;
  473. margin-top: 20rpx;
  474. width: 600rpx;padding: 20rpx 30rpx;
  475. margin-bottom: 10rpx;
  476. }
  477. .textareaNum{
  478. font-size: 24rpx;
  479. color: #9A9A9A;
  480. display: flex;justify-content: flex-end;
  481. }
  482. .cont{
  483. padding: 20rpx 24rpx;
  484. }
  485. .itemBox{
  486. background: #FFFFFF;
  487. border-radius: 16rpx;padding: 24rpx;
  488. }
  489. .itemIMg{
  490. width: 128rpx;
  491. height: 128rpx;border-radius: 10rpx;
  492. }
  493. .flex{
  494. display: flex;
  495. }
  496. .itemRight{
  497. width: 450rpx;padding-left: 24rpx;
  498. }
  499. .itemName{
  500. font-weight: 500;
  501. font-size: 28rpx;
  502. color: #222222;
  503. line-height: 40rpx;
  504. }
  505. .buyType{
  506. padding: 0 8rpx;text-align: center;
  507. height: 32rpx;line-height: 34rpx;
  508. border-radius: 5rpx;
  509. border: 1px solid #FF0035;font-size: 22rpx;
  510. color: #FF0035;
  511. margin-top: 10rpx;
  512. }
  513. .priceBox{
  514. display: flex;justify-content: space-between;padding-top: 40rpx;
  515. }
  516. .price{
  517. font-size: 28rpx;
  518. color: #222222;
  519. line-height: 50rpx;
  520. }
  521. .itemNum{
  522. font-size: 34rpx;line-height: 50rpx;
  523. color: #686868;
  524. }
  525. .itemnotes{
  526. font-size: 24rpx;padding-top: 12rpx;
  527. color: #FFC107;
  528. }
  529. .mealBox{
  530. background: #FFFFFF;
  531. padding: 20rpx 24rpx;
  532. margin-top: 20rpx;
  533. font-size: 26rpx;
  534. color: #666666;
  535. border-radius: 16rpx;
  536. }
  537. .fwlcTitle{
  538. color: #333333;font-size: 30rpx;font-weight: 500;
  539. padding-bottom: 20rpx;
  540. }
  541. .mealTop{
  542. display: flex;
  543. justify-content: space-between;
  544. height: 72rpx;
  545. line-height: 72rpx;
  546. font-weight: 500;
  547. font-size: 26rpx;
  548. color: #222222;
  549. font-size: 26rpx;
  550. padding: 0 20rpx;
  551. }
  552. .mealNum{
  553. text-align: center;
  554. width: 120rpx;
  555. }
  556. .mealexpire{
  557. text-align: center; width: 120rpx;
  558. }
  559. .mealName{
  560. width: 460rpx;
  561. }
  562. .mealTop2{
  563. display: flex;
  564. justify-content: space-between;
  565. height: 72rpx;
  566. line-height: 72rpx;
  567. font-weight: 500;
  568. font-size: 26rpx;
  569. color: #222222;
  570. font-size: 26rpx;
  571. padding: 0 20rpx;
  572. background: #FFF6DB;
  573. }
  574. .mealXj{
  575. background: #FFFCF3;
  576. }
  577. .xjLine{
  578. display: flex;
  579. font-weight: 500;
  580. font-size: 26rpx;
  581. color: #222222;
  582. padding: 20rpx 20rpx;
  583. }
  584. .xjyd{
  585. width: 8rpx;
  586. height: 8rpx;
  587. background: #FABF1B;
  588. border-radius: 50rpx;
  589. margin-top: 12rpx;
  590. margin-right: 10rpx;
  591. }
  592. .mealMs{
  593. background: #FFFFFF;
  594. padding: 20rpx;
  595. font-weight: 400;
  596. font-size: 24rpx;
  597. color: #9A9A9A;
  598. line-height: 38rpx;
  599. }
  600. .goodsBox{
  601. padding:18rpx 24rpx 24rpx 24rpx;font-size: 28rpx;
  602. color: #222222;background: #FFFFFF;margin-top: 20rpx;
  603. border-radius: 16rpx;
  604. }
  605. .goodsBox2{
  606. padding:18rpx 24rpx 18rpx 24rpx;font-size: 28rpx;
  607. color: #222222;background: #FFFFFF;margin-top: 20rpx;
  608. border-radius: 16rpx;
  609. }
  610. .goodsline{
  611. justify-content: space-between;
  612. padding: 18rpx 0;
  613. }
  614. .mealBox img{
  615. width: 100%;
  616. }
  617. .mealBox image{
  618. width: 100%;
  619. }
  620. .tkErr{
  621. font-size: 26rpx;
  622. color: #9A9A9A;
  623. /* padding-bottom: 10rpx;
  624. padding-bottom: 20rpx; */
  625. }
  626. .codeLine{
  627. font-size: 26rpx;
  628. color: #222222;
  629. display: flex;
  630. justify-content: center;
  631. padding-bottom: 30rpx;
  632. }
  633. </style>