applyRefund.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912
  1. <template>
  2. <view class="container">
  3. <!-- 商品信息 -->
  4. <view class="product-block">
  5. <view class="refund-title">退款商品</view>
  6. <view class="product-detail">
  7. <view class="profuct-info">
  8. <image mode="aspectFit" class="product-img" :src="orderInfo.picUrl"></image>
  9. <view class="info-right">
  10. <view class="info-main">
  11. <view class="product-name">{{ orderInfo.goodsName }}</view>
  12. <view class="price">
  13. ¥
  14. <text style="font-size: 24rpx">{{ orderInfo.actualPrice }}</text>
  15. </view>
  16. </view>
  17. <view class="other-info">服务{{ orderInfo.serviceTimes }}次</view>
  18. </view>
  19. </view>
  20. </view>
  21. <view class="real-price">
  22. 实际付款:
  23. <text>¥{{ orderInfo.actualPrice }}</text>
  24. </view>
  25. </view>
  26. <!--
  27. <view class="card">
  28. <view class="module-title">订单明细</view>
  29. <view class="tt-cell">
  30. <view>商品总价</view>
  31. <view>¥{{orderInfo.goodsPrice}}元</view>
  32. </view>
  33. <view class="tt-cell">
  34. <view>优 惠</view>
  35. <view>-¥{{orderInfo.couponPrice}}元</view>
  36. </view>
  37. <view class="tt-cell">
  38. <view>订单实付</view>
  39. <view>-¥{{orderInfo.actualPrice}}元</view>
  40. </view>
  41. </view>
  42. -->
  43. <view class="card">
  44. <view class="refund-title">退款信息</view>
  45. <!-- <view class="refund-tips">
  46. 退款发起时间距离服务时间小于(含)24小时,将收取60元退改费
  47. </view> -->
  48. <view class="tt-cell">
  49. <view>退款金额</view>
  50. <view class="refund-price">¥{{ aftersale.amount }}</view>
  51. </view>
  52. <!-- <view class="comment-tips">不可更改,即订单实付</view> -->
  53. <!-- <picker value="{{index}}" range="{{columns}}" bindchange="bindPickerChange"> -->
  54. <view class="tt-cell" @tap="showReason">
  55. <view style="width: 150rpx">
  56. <text class="need">*</text>
  57. 退款原因
  58. </view>
  59. <view class="cell-right default" v-if="reasonActive.id == ''">请选择</view>
  60. <view class="cell-right" v-else>{{ reasonActive.name }}</view>
  61. <view class="arrow-wrapper">
  62. <image src="https://mall.zhaijieshi.cc/file/wx-dy/arrow-grey.png" mode="aspectFit" class="arrow-img"></image>
  63. </view>
  64. </view>
  65. <!-- </picker> -->
  66. <view class="tt-cell">
  67. <view style="width: 150rpx">补充描述</view>
  68. <input :value="aftersale.reason" placeholder="补充描述,有助于更好的处理售后问题。" placeholder-style="font-size:24rpx;color:#ACADB1;" @input="onReasonChange" />
  69. </view>
  70. <!-- <view class="comment-wrapper">
  71. <view class="tt-cell comment-cell">
  72. <view>退款说明</view>
  73. <input value="{{ aftersale.comment}}" placeholder="请输入" placeholder-style="font-size:26rpx;color:#999;"
  74. bindinput="onCommentChange">
  75. </input>
  76. </view>
  77. </view> -->
  78. <view class="upload-text">上传凭证</view>
  79. <view class="comment-tips">最多上传3张</view>
  80. <!-- 图片上传 -->
  81. <view class="upload-wrapper">
  82. <view class="img-item" v-for="(item, index) in imgList" :key="index">
  83. <image mode="aspectFill" :src="item" class="user-upload" @tap="previewImg" :data-img="item"></image>
  84. <image class="close-img" mode="aspectFill" src="/static/images/icon-close.png" @tap="delImg" :data-index="index"></image>
  85. </view>
  86. <view class="upload" @tap="uploadImg">
  87. <image mode="aspectFill" src="/static/images/icon-add.png"></image>
  88. <view>上传照片</view>
  89. </view>
  90. </view>
  91. </view>
  92. <view class="submit-btn" @tap="submit">申请退款</view>
  93. <!-- 备注退款原因 -->
  94. <view class="appoint-overlay-wrapper remark-overlay" v-if="reasonPopupShow" @tap="onReasonPopupClose">
  95. <view class="remark-select" @tap.stop.prevent="onReasonClick">
  96. <view class="title">选择退款原因</view>
  97. <view class="remark-list">
  98. <view class="remark-item" :data-reason="item" @tap.stop.prevent="reasonItemSelect" v-for="(item, index) in reasonList" :key="index">
  99. <view class="remark-value">{{ item.name }}</view>
  100. <image
  101. mode="aspectFit"
  102. src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-select-popup.png"
  103. class="radio-img"
  104. v-if="reasonActive.id == item.id"
  105. ></image>
  106. <image mode="aspectFit" src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-unselect-popup.png" class="radio-img" v-else></image>
  107. </view>
  108. </view>
  109. <view class="remark-conf-btn" @tap.stop.prevent="reasonItemConfirm">确定</view>
  110. </view>
  111. </view>
  112. </view>
  113. </template>
  114. <script>
  115. var util = require('../../../utils/util.js');
  116. var api = require('../../../config/api.js');
  117. export default {
  118. data() {
  119. return {
  120. index: '',
  121. orderId: 0,
  122. orderInfo: {
  123. picUrl: '',
  124. goodsName: '',
  125. actualPrice: '',
  126. serviceTimes: ''
  127. },
  128. orderGoods: [],
  129. aftersale: {
  130. pictures: [],
  131. typeDesc: '',
  132. reason: '',
  133. amount: '',
  134. comment: '',
  135. type: ''
  136. },
  137. reasonActive: {
  138. id: '',
  139. name: ''
  140. },
  141. reasonPopupShow: false,
  142. reasonList: [],
  143. columns: ['地址约错', '约不到想要的服务时间', '活动/优惠未享受', '服务质量问题'],
  144. contentLength: 0,
  145. fileList: [],
  146. imgList: [],
  147. showPicker: false
  148. };
  149. },
  150. onLoad: function (options) {
  151. // 页面初始化 options为页面跳转所带来的参数
  152. this.setData({
  153. orderId: options.id
  154. });
  155. this.getOrderDetail();
  156. this.getRefudnType();
  157. this.getAmount();
  158. },
  159. onReady: function () {
  160. // 页面渲染完成
  161. },
  162. onShow: function () {
  163. // 页面显示
  164. },
  165. onHide: function () {
  166. // 页面隐藏
  167. },
  168. onUnload: function () {
  169. // 页面关闭
  170. },
  171. methods: {
  172. getRefudnType() {
  173. let that = this;
  174. util.request(api.AftersaleRefundType).then(function (res) {
  175. if (res.errno === 0) {
  176. that.setData({
  177. reasonList: res.data,
  178. columns: res.data.map((obj) => obj.name)
  179. });
  180. console.info(that.refundTypes);
  181. }
  182. });
  183. },
  184. getAmount: function () {
  185. util.request(api.AftersaleAmount, {
  186. orderId: this.orderId
  187. }).then((res) => {
  188. if (res.errno === 0) {
  189. console.log(res.data);
  190. this.setData({
  191. 'aftersale.amount': res.data.refundAmount
  192. });
  193. }
  194. });
  195. },
  196. getOrderDetail: function () {
  197. uni.showLoading({
  198. title: '加载中'
  199. });
  200. setTimeout(function () {
  201. uni.hideLoading();
  202. }, 2000);
  203. let that = this;
  204. util.request(api.OrderDetail, {
  205. orderId: that.orderId
  206. }).then(function (res) {
  207. if (res.errno === 0) {
  208. console.log(res.data);
  209. that.setData({
  210. orderInfo: res.data
  211. // orderGoods: res.data.orderGoods,
  212. // 'aftersale.orderId': that.data.orderId,
  213. // 'aftersale.amount': res.data.orderInfo.actualPrice - res.data.orderInfo.freightPrice
  214. });
  215. }
  216. uni.hideLoading();
  217. });
  218. },
  219. deleteImage(event) {
  220. const { fileList = [] } = this;
  221. fileList.splice(event.detail.index, 1);
  222. this.setData({
  223. fileList: fileList
  224. });
  225. let urls = [];
  226. fileList.forEach(function (e) {
  227. urls.push(e.url);
  228. });
  229. this.setData({
  230. 'aftersale.pictures': urls
  231. });
  232. },
  233. afterRead(event) {
  234. const { file } = event.detail;
  235. let that = this;
  236. const uploadTask = uni.uploadFile({
  237. url: api.StorageUpload,
  238. filePath: file.path,
  239. name: 'file',
  240. success: function (res) {
  241. var _res = JSON.parse(res.data);
  242. if (_res.errno === 0) {
  243. var url = _res.data.url;
  244. that.aftersale.pictures.push(url);
  245. const { fileList = [] } = that;
  246. fileList.push({
  247. ...file,
  248. url: url
  249. });
  250. that.setData({
  251. fileList: fileList
  252. });
  253. }
  254. },
  255. fail: function (e) {
  256. uni.showModal({
  257. title: '错误',
  258. content: '上传失败',
  259. showCancel: false
  260. });
  261. }
  262. });
  263. },
  264. previewImage: function (e) {
  265. uni.previewImage({
  266. current: e.currentTarget.id,
  267. // 当前显示图片的http链接
  268. urls: this.files // 需要预览的图片http链接列表
  269. });
  270. },
  271. contentInput: function (e) {
  272. this.setData({
  273. contentLength: e.detail.cursor,
  274. 'aftersale.comment': e.detail.value
  275. });
  276. },
  277. onReasonChange: function (e) {
  278. console.log(e);
  279. this.setData({
  280. 'aftersale.reason': e.detail.value
  281. });
  282. },
  283. onCommentChange: function (e) {
  284. console.log(e);
  285. this.setData({
  286. 'aftersale.comment': e.detail.value
  287. });
  288. },
  289. showTypePicker: function () {
  290. this.setData({
  291. showPicker: true
  292. });
  293. },
  294. onCancel: function () {
  295. this.setData({
  296. showPicker: false
  297. });
  298. },
  299. bindPickerChange: function (event) {
  300. console.log(event);
  301. this.setData({
  302. 'aftersale.type': event.detail.value,
  303. 'aftersale.typeDesc': this.columns[event.detail.value]
  304. });
  305. },
  306. submit: function () {
  307. let that = this;
  308. if (that.reasonActive.id == '') {
  309. util.showErrorToast('请选择退款原因');
  310. return false;
  311. }
  312. // let name = that.data.aftersale.typeDesc;
  313. // let vals = this.data.refundTypes.filter(item =>item.name == name);
  314. // that.setData({
  315. // type:vals[0].id
  316. // })
  317. // console.log(that.data.aftersale);
  318. // if (that.data.aftersale.reason == '') {
  319. // util.showErrorToast('请输入退款原因');
  320. // return false;
  321. // }
  322. uni.showLoading({
  323. title: '提交中...',
  324. mask: true,
  325. success: function () {}
  326. });
  327. // this.setData({
  328. // "aftersale.pictures": this.data.imgList
  329. // });
  330. let params = {
  331. orderId: this.orderId,
  332. pictures: this.imgList,
  333. type: this.reasonActive.id,
  334. typeDesc: this.reasonActive.name,
  335. reason: this.aftersale.reason,
  336. amount: this.aftersale.amount
  337. };
  338. util.request(api.AftersaleSubmit, params, 'POST').then(function (res) {
  339. uni.hideLoading();
  340. if (res.errno === 0) {
  341. uni.showToast({
  342. title: '申请售后成功',
  343. icon: 'success',
  344. duration: 2000,
  345. complete: function () {
  346. uni.navigateBack({
  347. delta: 1
  348. });
  349. // wx.redirectTo({
  350. // url: '/pages/ucenter/aftersaleList/aftersaleList'
  351. // });
  352. }
  353. });
  354. } else {
  355. util.showErrorToast(res.errmsg);
  356. }
  357. });
  358. },
  359. previewImg(e) {
  360. let img = e.currentTarget.dataset.img;
  361. let imgs = this.imgList;
  362. uni.previewImage({
  363. current: img,
  364. // 当前显示图片的http链接
  365. urls: imgs // 需要预览的图片http链接列表
  366. });
  367. },
  368. delImg(e) {
  369. let imgs = this.imgList;
  370. let index = e.currentTarget.dataset.index;
  371. imgs.splice(index, 1);
  372. this.setData({
  373. imgList: imgs
  374. });
  375. },
  376. uploadImg() {
  377. if (this.imgList.length >= 3) {
  378. uni.showToast({
  379. title: '最多上传3张图片',
  380. icon: 'none',
  381. duration: 2000
  382. });
  383. return false;
  384. }
  385. let that = this;
  386. let count = 3 - that.imgList.length;
  387. uni.chooseImage({
  388. count: count,
  389. sizeType: ['original', 'compressed'],
  390. sourceType: ['album', 'camera'],
  391. success: function (res) {
  392. console.log(res);
  393. let tempFilePaths = res.tempFilePaths;
  394. uni.showLoading({
  395. title: '上传中...'
  396. });
  397. for (let i = 0; i < tempFilePaths.length; i++) {
  398. let imgs = that.imgList;
  399. if (imgs.length >= 3) {
  400. that.setData({
  401. imgList: imgs
  402. });
  403. return false;
  404. } else {
  405. uni.uploadFile({
  406. url: api.StorageUpload,
  407. filePath: tempFilePaths[i],
  408. name: 'file',
  409. success(res) {
  410. console.log(res);
  411. let data = JSON.parse(res.data);
  412. if (data.errno == 0) {
  413. imgs.push(data.data.url);
  414. that.setData({
  415. imgList: imgs
  416. });
  417. } else {
  418. console.log('上传失败');
  419. }
  420. }
  421. });
  422. }
  423. }
  424. uni.hideLoading();
  425. }
  426. });
  427. },
  428. showReason() {
  429. this.setData({
  430. reasonPopupShow: true
  431. });
  432. },
  433. onReasonPopupClose() {
  434. this.setData({
  435. reasonPopupShow: false
  436. });
  437. },
  438. onReasonClick() {
  439. //阻止事件冒泡,不要删
  440. },
  441. reasonItemSelect(e) {
  442. let reason = e.currentTarget.dataset.reason;
  443. this.setData({
  444. reasonActive: reason
  445. });
  446. },
  447. reasonItemConfirm() {
  448. if (this.reasonActive.id === '') {
  449. util.showErrorToast('请选择退款原因');
  450. return false;
  451. }
  452. this.setData({
  453. reasonPopupShow: false
  454. });
  455. }
  456. }
  457. };
  458. </script>
  459. <style>
  460. page {
  461. /* height: 100%; */
  462. width: 100%;
  463. background: #f4f4f4;
  464. padding: 0 0 80rpx;
  465. }
  466. .container {
  467. padding: 0 30rpx;
  468. }
  469. .order-goods {
  470. margin-top: 30rpx;
  471. background: #fff;
  472. border-radius: 10rpx;
  473. width: 690rpx;
  474. padding: 30rpx 20rpx;
  475. }
  476. .order-goods .h {
  477. height: 30rpx;
  478. line-height: 30rpx;
  479. margin-bottom: 30rpx;
  480. font-size: 30rpx;
  481. color: #333;
  482. }
  483. .order-goods .h .label {
  484. float: left;
  485. font-size: 30rpx;
  486. color: #333;
  487. }
  488. .order-goods .h .status {
  489. float: right;
  490. font-size: 30rpx;
  491. color: #b4282d;
  492. }
  493. .order-goods .item {
  494. display: flex;
  495. align-items: center;
  496. height: 190rpx;
  497. }
  498. .order-goods .item:last-child {
  499. border-bottom: none;
  500. }
  501. .order-goods .item .img {
  502. height: 190rpx;
  503. width: 190rpx;
  504. background: #f4f4f4;
  505. margin-right: 20rpx;
  506. border-radius: 10rpx;
  507. }
  508. .order-goods .item .img image {
  509. height: 190rpx;
  510. border-radius: 10rpx;
  511. width: 190rpx;
  512. }
  513. .order-goods .item .info {
  514. flex: 1;
  515. height: 190rpx;
  516. }
  517. .order-goods .item .t {
  518. margin-top: 10rpx;
  519. /* height: 33rpx; */
  520. line-height: 34rpx;
  521. margin-bottom: 30rpx;
  522. display: flex;
  523. justify-content: space-between;
  524. }
  525. .order-goods .item .t .name {
  526. max-height: 68rpx;
  527. line-height: 34rpx;
  528. color: #333;
  529. font-size: 30rpx;
  530. width: 360rpx;
  531. margin-right: 40rpx;
  532. /* text-overflow: ellipsis;
  533. white-space: nowrap;*/
  534. overflow: hidden;
  535. }
  536. .order-goods .item .t .number {
  537. line-height: 36rpx;
  538. color: #666;
  539. font-size: 26rpx;
  540. }
  541. .order-goods .item .attr {
  542. height: 26rpx;
  543. line-height: 26rpx;
  544. color: #666;
  545. font-size: 26rpx;
  546. }
  547. .order-goods .item .price {
  548. height: 26rpx;
  549. line-height: 26rpx;
  550. color: #666;
  551. font-size: 26rpx;
  552. margin-top: 16rpx;
  553. }
  554. .module-title {
  555. height: 80rpx;
  556. padding: 0 8rpx;
  557. line-height: 80rpx;
  558. font-size: 30rpx;
  559. color: #333;
  560. border-bottom: 1rpx solid #efefef;
  561. }
  562. .tt-cell {
  563. display: flex;
  564. /* padding:0 4rpx 0 8rpx; */
  565. align-items: flex-end;
  566. justify-content: space-between;
  567. background: #fff;
  568. height: 78rpx;
  569. padding-bottom: 12rpx;
  570. /* border-bottom:2rpx solid #ebedf0; */
  571. }
  572. .tt-cell view {
  573. font-size: 26rpx;
  574. color: #191919;
  575. font-weight: bold;
  576. }
  577. .tt-cell view.cell-right {
  578. font-family: normal;
  579. flex: 1;
  580. border-bottom: 2rpx solid #e0e0e0;
  581. padding-bottom: 8rpx;
  582. }
  583. .arrow-wrapper {
  584. border-bottom: 2rpx solid #e0e0e0;
  585. height: 40rpx;
  586. }
  587. .arrow-img {
  588. width: 28rpx;
  589. height: 28rpx;
  590. }
  591. .tt-cell view.cell-right.default {
  592. color: #acadb1;
  593. font-size: 24rpx;
  594. font-weight: normal;
  595. }
  596. .tt-cell input {
  597. flex: 1;
  598. border-bottom: 2rpx solid #e0e0e0;
  599. }
  600. .need {
  601. color: red;
  602. }
  603. .comment-wrapper {
  604. /* border-bottom:2rpx solid #ebedf0; */
  605. }
  606. .tt-cell.comment-cell {
  607. border: none;
  608. }
  609. .tt-cell.comment-cell view {
  610. padding-left: 14rpx;
  611. }
  612. .comment-tips {
  613. /* padding-left:22rpx; */
  614. height: 50rpx;
  615. line-height: 30rpx;
  616. color: #777;
  617. font-size: 20rpx;
  618. background: #fff;
  619. }
  620. .submit-btn {
  621. text-align: center;
  622. color: #fff;
  623. margin: 120rpx 26rpx 60rpx;
  624. width: 650rpx;
  625. height: 90rpx;
  626. line-height: 90rpx;
  627. background: #ff8219;
  628. border-radius: 90rpx;
  629. font-size: 34rpx;
  630. }
  631. .upload-text {
  632. height: 88rpx;
  633. line-height: 88rpx;
  634. /* padding-left:22rpx; */
  635. background: #fff;
  636. font-size: 26rpx;
  637. color: #191919;
  638. font-weight: bold;
  639. }
  640. .upload-wrapper {
  641. /* margin:18rpx -20rpx 56rpx 0; */
  642. display: flex;
  643. flex-wrap: wrap;
  644. background: #fff;
  645. padding: 0 24rpx 40rpx 0;
  646. }
  647. .upload {
  648. width: 160rpx;
  649. height: 160rpx;
  650. background: #fafafa;
  651. border-radius: 4rpx;
  652. border: 1rpx solid #d9d9d9;
  653. display: flex;
  654. align-items: center;
  655. flex-direction: column;
  656. justify-content: center;
  657. margin-right: 16rpx;
  658. box-sizing: border-box;
  659. }
  660. .upload image {
  661. width: 38rpx;
  662. height: 38rpx;
  663. margin-bottom: 22rpx;
  664. }
  665. .upload view {
  666. font-weight: 400;
  667. color: #c5c3c3;
  668. line-height: 48rpx;
  669. font-size: 26rpx;
  670. }
  671. .img-item {
  672. width: 160rpx;
  673. height: 160rpx;
  674. background: #fff;
  675. border-radius: 2rpx;
  676. border: 1rpx solid #d9d9d9;
  677. margin: 0 20rpx 24rpx 0;
  678. padding: 8rpx;
  679. position: relative;
  680. box-sizing: border-box;
  681. }
  682. .img-item .user-upload {
  683. width: 144rpx;
  684. height: 144rpx;
  685. }
  686. .img-item .close-img {
  687. width: 28rpx;
  688. height: 28rpx;
  689. position: absolute;
  690. top: 0;
  691. right: 0;
  692. }
  693. .refund-tips {
  694. color: #ee0a24;
  695. font-size: 22rpx;
  696. line-height: 40rpx;
  697. padding-left: 8rpx;
  698. margin: 4rpx 0 8rpx;
  699. }
  700. .card {
  701. background: #fff;
  702. border-radius: 24rpx;
  703. padding: 30rpx 24rpx;
  704. }
  705. .tt-cell input {
  706. flex: 1;
  707. font-size: 26rpx;
  708. color: #666;
  709. }
  710. /* 产品订单信息 */
  711. .product-block {
  712. background: #ffffff;
  713. border-radius: 24rpx;
  714. padding: 24rpx;
  715. margin: 28rpx 0 30rpx;
  716. }
  717. .product-block .title {
  718. height: 88rpx;
  719. line-height: 78rpx;
  720. }
  721. .profuct-info {
  722. height: 190rpx;
  723. display: flex;
  724. align-items: flex-start;
  725. }
  726. .product-img {
  727. width: 190rpx;
  728. height: 190rpx;
  729. border-radius: 10rpx;
  730. margin-right: 20rpx;
  731. }
  732. .info-right {
  733. /* padding-top: 10rpx; */
  734. flex: 1;
  735. }
  736. .info-main {
  737. display: flex;
  738. height: 40rpx;
  739. align-items: center;
  740. justify-content: space-between;
  741. margin-bottom: 58rpx;
  742. }
  743. .product-name {
  744. line-height: 40rpx;
  745. font-size: 28rpx;
  746. /* padding-left: 20rpx;
  747. text-indent: -16rpx; */
  748. overflow: hidden;
  749. text-overflow: ellipsis;
  750. white-space: nowrap;
  751. width: 328rpx;
  752. font-weight: bold;
  753. color: rgba(0, 0, 0, 0.9);
  754. }
  755. .info-main .price {
  756. color: rgba(0, 0, 0, 0.9);
  757. font-size: 18rpx;
  758. font-weight: bold;
  759. }
  760. .info-right .other-info {
  761. font-size: 24rpx;
  762. color: rgba(0, 0, 0, 0.9);
  763. line-height: 34rpx;
  764. }
  765. .refund-title {
  766. color: #191919;
  767. font-size: 30rpx;
  768. font-weight: bold;
  769. margin-bottom: 28rpx;
  770. height: 30rpx;
  771. line-height: 30rpx;
  772. }
  773. .real-price {
  774. display: flex;
  775. align-items: center;
  776. height: 36rpx;
  777. justify-content: flex-end;
  778. font-size: 26rpx;
  779. font-weight: bold;
  780. margin: 20rpx 0 12rpx;
  781. }
  782. .real-price text {
  783. color: #ff004e;
  784. font-size: 26rpx;
  785. }
  786. .tt-cell view.refund-price {
  787. color: #ff004e;
  788. }
  789. /* 选择备注 */
  790. .appoint-overlay-wrapper {
  791. position: fixed;
  792. top: 0;
  793. left: 0;
  794. width: 100%;
  795. height: 100%;
  796. background-color: rgba(0, 0, 0, 0.7);
  797. z-index: 999;
  798. }
  799. .appoint-overlay-wrapper.remark-overlay {
  800. display: flex;
  801. align-items: flex-end;
  802. justify-content: center;
  803. }
  804. .remark-select {
  805. width: 750rpx;
  806. padding: 0 24rpx 56rpx;
  807. background: #ffffff;
  808. border-radius: 24rpx 24rpx 0 0;
  809. }
  810. .remark-select .title {
  811. font-weight: 600;
  812. color: #191919;
  813. font-size: 30rpx;
  814. height: 90rpx;
  815. line-height: 90rpx;
  816. text-align: center;
  817. border-bottom: 2rpx solid #e0e0e0;
  818. }
  819. .remark-list {
  820. height: 340rpx;
  821. overflow-y: scroll;
  822. }
  823. .remark-item .remark-value {
  824. color: #191919;
  825. font-size: 26rpx;
  826. font-weight: bold;
  827. flex: 1;
  828. text-align: left;
  829. }
  830. .remark-list .remark-item {
  831. height: 84rpx;
  832. display: flex;
  833. border-bottom: 2rpx solid #e0e0e0;
  834. align-items: center;
  835. }
  836. .remark-item .radio-img {
  837. width: 26rpx;
  838. height: 26rpx;
  839. }
  840. .remark-conf-btn {
  841. width: 652rpx;
  842. height: 90rpx;
  843. line-height: 90rpx;
  844. border-radius: 90rpx;
  845. border: 4rpx solid #ff8219;
  846. text-align: center;
  847. font-size: 36rpx;
  848. color: #ff8219;
  849. margin: 0 auto;
  850. margin-top: 54rpx;
  851. }
  852. </style>