detail.vue 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359
  1. <template>
  2. <div class="app-content">
  3. <div class="page-top">
  4. <div class="page-top-img">
  5. <img :src="`${constant.imgUrl}/retail/order/bg.png`" alt />
  6. </div>
  7. <div class="page-top-det">
  8. <div>
  9. <div class="page-status">{{ data.status | constantfilter('ORDER_STATUS') }}</div>
  10. <!-- <div class="page-prompt">请尽快支付哟~</div> -->
  11. </div>
  12. <div class="page-status-img">
  13. <img :src="data.status == 0 ? waitPayImg : waitDeliveryImg" alt />
  14. </div>
  15. </div>
  16. </div>
  17. <!-- 订单详情 -->
  18. <div class="page-det">
  19. <!-- 商品信息 -->
  20. <div class="module-com">
  21. <div class="module-tit">商品信息</div>
  22. <div class="module-det">
  23. <block v-if="!$util.isEmpty(data.goodsInfoList)">
  24. <list-module v-for="(items, subIndex) in data.goodsInfoList" :key="subIndex" :info="items" />
  25. </block>
  26. </div>
  27. </div>
  28. <!-- 订单信息 -->
  29. <div class="module-com order-msg">
  30. <div class="module-tit">订单信息</div>
  31. <div class="module-det">
  32. <!-- -->
  33. <div class="order-msg-blo">
  34. <div class="msg-list">
  35. <div class="label">收花人</div>
  36. <div class="value">{{ data.receiveUserName }}</div>
  37. </div>
  38. <div class="msg-list">
  39. <div class="label">电话</div>
  40. <div class="value">{{ data.receiveMobile }}</div>
  41. </div>
  42. <div class="msg-list">
  43. <div class="label">地址</div>
  44. <div class="value">{{ data.receiveFullAddress }}</div>
  45. </div>
  46. </div>
  47. <!-- -->
  48. <div class="order-msg-blo">
  49. <div class="msg-list">
  50. <div class="label">送达时间</div>
  51. <div class="value">{{ data.reachDate || '暂无' }}</div>
  52. </div>
  53. <div class="msg-list">
  54. <div class="label">贺卡</div>
  55. <div class="value">{{ data.needCard == 1 ? "需要" : '不需要' }}</div>
  56. </div>
  57. <div class="msg-list">
  58. <div class="label">祝福语</div>
  59. <div class="value">{{ data.cardInfo || '暂无' }}</div>
  60. </div>
  61. </div>
  62. <!-- -->
  63. <!-- <div class="order-msg-blo">
  64. <div class="msg-list">
  65. <div class="label">订花人</div>
  66. <div class="value">{{ data.bookName }}</div>
  67. </div>
  68. <div class="msg-list">
  69. <div class="label">微信</div>
  70. <div class="value">{{ data.bookName }}</div>
  71. </div>
  72. <div class="msg-list">
  73. <div class="label">手机</div>
  74. <div class="value">{{ data.bookMobile }}</div>
  75. </div>
  76. </div>-->
  77. <!-- -->
  78. <div class="order-msg-blo">
  79. <div class="msg-list">
  80. <div class="label">客户评分</div>
  81. <div class="value">
  82. <!-- <span>{{ data.totalFlow }}</span> -->
  83. <rate-module :current="Number(data.totalFlow) || 0" :disabled="true"></rate-module>
  84. </div>
  85. </div>
  86. <div class="msg-list">
  87. <div class="label">客户留言</div>
  88. <div class="value">{{ data.evaluate || '暂无' }}</div>
  89. </div>
  90. </div>
  91. <!-- -->
  92. <div class="order-msg-blo">
  93. <div class="msg-list">
  94. <div class="label">订单号</div>
  95. <div class="value">{{ data.orderSn }}</div>
  96. </div>
  97. <div class="msg-list">
  98. <div class="label">时间</div>
  99. <div class="value">{{ data.addTime | formatTime }}</div>
  100. </div>
  101. <div class="msg-list">
  102. <div class="label">总价</div>
  103. <div class="value">¥{{ data.prePrice }}</div>
  104. </div>
  105. <div class="msg-list">
  106. <div class="label">运费</div>
  107. <div class="value">¥{{ data.sendCost }}</div>
  108. </div>
  109. </div>
  110. </div>
  111. </div>
  112. <!-- 优惠信息 -->
  113. <div class="module-com coupon-wrap" v-if="data.discountAmount && data.discountAmount != '0.00'">
  114. <div class="module-det flex-center-between">
  115. <div class="app-color-3">{{ data.discountType == 0 ? '使用优惠券' : data.discountType == 1 ? '会员打折' : '付款随机优惠' }}</div>
  116. <div class="app-price">-¥{{ data.discountAmount }}</div>
  117. </div>
  118. </div>
  119. </div>
  120. <!-- 按钮 -->
  121. <div class="page-btn app-footer">
  122. <div class="flex-center">
  123. <span>应付款</span>
  124. <span class="app-price">
  125. <span>¥</span>
  126. <span class="app-size-40">{{ data.prePrice }}</span>
  127. </span>
  128. </div>
  129. <template v-if="data.status == 0">
  130. <button class="admin-button-com middle" @click="updatePriceFn">修改价格</button>
  131. </template>
  132. <template v-else-if="data.status == 1 || data.status == 2">
  133. <div class="operate-btn-wrap">
  134. <block v-if="data.status == 2">
  135. <button class="admin-button-com middle" @click="seeSendFn">查看配送</button>
  136. </block>
  137. <block v-else>
  138. <button class="admin-button-com middle" @click="freeShippingFn">免发货</button>
  139. <button class="admin-button-com middle" @click="pageTo({
  140. url: '/admin/order/ship',
  141. query: {
  142. id: data.id,
  143. pageStatus: 0
  144. }
  145. })">发货</button>
  146. </block>
  147. </div>
  148. </template>
  149. <!-- <template v-if="data.status == 5">
  150. <button class="admin-button-com middle">退款</button>
  151. </template>-->
  152. </div>
  153. <!-- 修改价格 -->
  154. <modal-module :show="updatePriceModal" @cancel="modalCancel" @click="updateModalClick" title="修改价格" padding="30rpx 30rpx">
  155. <template v-slot:content>
  156. <div class="app-modal-input-wrap">
  157. <div class="inp-list-line required">
  158. <!-- <div class="line-label">角色名称</div> -->
  159. <div class="line-input">
  160. <input v-model="form.price" type="text" :adjust-position="false" class="inp-input" placeholder="请输入价格" />
  161. </div>
  162. </div>
  163. </div>
  164. </template>
  165. </modal-module>
  166. <!-- 免发货弹窗 -->
  167. <modal-module :show="freeShipModal" @cancel="modalCancel" @click="freeShipModalClick" content="确认不需要发货?" color="#333" :size="32" padding="30rpx 30rpx"></modal-module>
  168. </div>
  169. </template>
  170. <script>
  171. import ListModule from '@/components/module/app-order-list'
  172. import AppCoupon from '@/components/app-coupon-sel'
  173. import ModalModule from '@/components/plugin/modal'
  174. import RateModule from '@/components/plugin/rate'
  175. // api
  176. import { getDetB, freeShipping, orderUpdatePrice } from '@/api/order'
  177. export default {
  178. name: 'order-detail',
  179. components: {
  180. ListModule,
  181. AppCoupon,
  182. ModalModule,
  183. RateModule
  184. },
  185. data() {
  186. return {
  187. constant: this.$constant,
  188. // img
  189. waitPayImg: `${this.$constant.imgUrl}/retail/order/wait-pay.png`,
  190. waitDeliveryImg: `${this.$constant.imgUrl}/retail/order/wait-delivery.png`,
  191. data: {},
  192. // 修改价格
  193. updatePriceModal: false,
  194. form: {
  195. price: ''
  196. },
  197. // 免发货
  198. freeShipModal: false
  199. }
  200. },
  201. onLoad() {
  202. // this.init()
  203. },
  204. methods: {
  205. init() {
  206. this._getDet()
  207. },
  208. _getDet() {
  209. return getDetB({ id: this.option.id }).then(res => {
  210. this.data = res.data
  211. })
  212. },
  213. // 免发货
  214. freeShippingFn() {
  215. this.freeShipModal = true
  216. },
  217. // 免发货
  218. freeShipModalClick(e) {
  219. if (e.index === 0) {
  220. this.modalCancel()
  221. } else {
  222. this.data.status = 2
  223. freeShipping({ id: this.data.id }).then(res => {
  224. this.$msg('操作成功!')
  225. this.modalCancel()
  226. })
  227. }
  228. },
  229. // 查看配送
  230. seeSendFn() {
  231. this.$util.pageTo({
  232. url: '/admin/order/ship',
  233. query: {
  234. id: this.data.id,
  235. pageStatus: 5
  236. }
  237. })
  238. },
  239. // 修改价格
  240. updatePriceFn() {
  241. this.form.price = this.data.prePrice
  242. this.updatePriceModal = true
  243. },
  244. updateModalClick(e) {
  245. if (e.index === 0) {
  246. this.modalCancel()
  247. } else {
  248. orderUpdatePrice({ id: this.data.id, price: this.form.price }).then(res => {
  249. this.modalCancel()
  250. this.$msg('修改成功!')
  251. setTimeout(() => {
  252. this._getDet()
  253. }, 1000)
  254. })
  255. }
  256. },
  257. // 关闭弹窗
  258. modalCancel() {
  259. this.form.price = ''
  260. this.freeShipModal = false
  261. this.updatePriceModal = false
  262. }
  263. }
  264. }
  265. </script>
  266. <style lang="scss" scoped>
  267. .app-content {
  268. padding-bottom: 80px;
  269. }
  270. .page-top {
  271. position: relative;
  272. .page-top-det {
  273. position: absolute;
  274. top: 22px;
  275. @include disFlex(center, space-between);
  276. width: 84%;
  277. padding: 0 48px;
  278. color: #fff;
  279. .page-status {
  280. font-size: 36px;
  281. font-weight: bold;
  282. margin-bottom: 16px;
  283. }
  284. .page-prompt {
  285. color: #ffdede;
  286. }
  287. .page-status-img {
  288. width: 180px;
  289. }
  290. }
  291. }
  292. .page-det {
  293. width: 94%;
  294. margin: 0 auto;
  295. position: relative;
  296. top: -40px;
  297. .order-msg {
  298. .order-msg-blo {
  299. font-size: 28px;
  300. padding: 20px 0;
  301. border-top: 1px solid $borderColor;
  302. .msg-list {
  303. @include disFlex(flex-start, space-between);
  304. margin: 16px 0;
  305. .label {
  306. width: 40%;
  307. color: $fontColor3;
  308. }
  309. }
  310. }
  311. & .order-msg-blo:first-child {
  312. border-top: none;
  313. }
  314. }
  315. .coupon-wrap {
  316. .module-det {
  317. padding: 20px 0;
  318. }
  319. }
  320. }
  321. // 底部按钮
  322. .page-btn {
  323. width: calc(100% - 60px);
  324. @include disFlex(center, space-between);
  325. padding: 0 30px;
  326. .app-price {
  327. margin-bottom: 8px;
  328. margin-left: 4px;
  329. }
  330. .red {
  331. width: 270px;
  332. }
  333. .default {
  334. width: 260px;
  335. }
  336. .operate-btn-wrap {
  337. .admin-button-com {
  338. margin-left: 30px;
  339. padding: 20px 30px;
  340. }
  341. }
  342. }
  343. // 公共模块
  344. .module-com {
  345. border-radius: 10px;
  346. background-color: #fff;
  347. padding: 0 20px;
  348. box-shadow: 0px 6px 16px #ddd;
  349. margin-bottom: 20px;
  350. .module-tit {
  351. padding: 20px 0;
  352. font-size: 28px;
  353. font-weight: 600;
  354. border-bottom: 1px solid $borderColor;
  355. }
  356. }
  357. </style>