deliver.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <template>
  2. <div class="app-container">
  3. <el-card class="box-card" style="margin: 0 auto;">
  4. <div class="refund-item">
  5. <el-row :gutter="24" class="box-row">
  6. <el-col :span="4"><b>收货人:</b> {{ orderInfo.receiver }} </el-col>
  7. <el-col :span="4"><b>手机号:</b> {{ orderInfo.mobile }} </el-col>
  8. <el-col :span="16"><b>收货地址:</b> {{ orderInfo.address }} </el-col>
  9. </el-row>
  10. <el-row :gutter="24" class="box-row">
  11. <el-col :span="24"><b>买家留言:</b>
  12. <span v-for="(msg,index) in orderInfo.notes" :key="index">
  13. 【{{ `${index+1}.${msg}` }}】
  14. </span>
  15. </el-col>
  16. </el-row>
  17. </div>
  18. <div class="refund-item">
  19. <el-row :gutter="24" class="box-row">
  20. <el-table :data="orderInfo.orderProduct" border fit highlight-current-row :header-cell-style="{background:'#eef1f6',color:'#606266'}" @selection-change="handleSelectionChange">
  21. <el-table-column type="selection" width="50" />
  22. <el-table-column label="商品名" align="center" prop="name" />
  23. <el-table-column label="商品图片" align="center" prop="productImage">
  24. <template slot-scope="{row}">
  25. <el-popover
  26. placement="top-start"
  27. title=""
  28. width="120"
  29. trigger="hover"
  30. >
  31. <img :src="row.productImage" alt="" style="width:100px;height:100px;">
  32. <img slot="reference" :src="row.productImage" alt="" style="width:50px;height:50px;">
  33. </el-popover>
  34. </template>
  35. </el-table-column>
  36. <el-table-column label="规格" align="center" prop="unit" />
  37. <el-table-column label="供应商" align="center" prop="shopName" />
  38. <el-table-column label="购买数量" align="center" prop="num" />
  39. <el-table-column label="未发数量" align="center" prop="notOutStore" />
  40. <el-table-column label="发货数量" align="center" prop="deliveryNum">
  41. <template slot-scope="{row}">
  42. <el-input v-model="row.deliveryNum" :maxlength="4" size="mini" />
  43. </template>
  44. </el-table-column>
  45. </el-table>
  46. </el-row>
  47. </div>
  48. </el-card>
  49. <div class="filter-container" style="text-align: center;margin-top: 20px;">
  50. <el-button type="primary" :disabled="disabled" @click="hanldeConfirm">发货</el-button>
  51. </div>
  52. </div>
  53. </template>
  54. <script>
  55. import { orderTodeliver } from '@/api/order'
  56. export default {
  57. name: 'PaymentDetails',
  58. filters: {
  59. },
  60. data() {
  61. return {
  62. orderInfo: {},
  63. productRadio: null
  64. }
  65. },
  66. computed: {
  67. orderId: function() {
  68. return this.$route.query.orderId * 1
  69. },
  70. disabled() {
  71. return this.productRadio === null
  72. }
  73. },
  74. created() {
  75. this.orderTodeliver(this.orderId)
  76. },
  77. methods: {
  78. // 付款单详情
  79. async orderTodeliver(orderId) {
  80. try {
  81. const res = await orderTodeliver(orderId)
  82. console.log('res', res)
  83. this.orderInfo = res.data
  84. this.orderInfo.orderProduct.map((elem) => {
  85. elem.deliveryNum = elem.num
  86. return elem
  87. })
  88. } catch (error) {
  89. console.log('error', error)
  90. }
  91. },
  92. // 多选商品
  93. handleSelectionChange(row) {
  94. this.productRadio = row
  95. console.log('productRadio', row)
  96. },
  97. hanldeConfirm() {
  98. // 发货去添加物流
  99. this.$confirm('确认去发货吗?', '提示', {
  100. confirmButtonText: '确定',
  101. cancelButtonText: '取消',
  102. type: 'warning'
  103. }).then(() => {
  104. this.$router.push({ path: '/order/addLogistics', query: { orderId: this.orderId, products: JSON.stringify(this.productRadio) }})
  105. })
  106. },
  107. backToList() {
  108. this.$store.dispatch('tagsView/delView', this.$route).then(() => {
  109. this.$nextTick(() => {
  110. this.$router.replace({
  111. path: '/finance/payment-list'
  112. })
  113. })
  114. })
  115. }
  116. }
  117. }
  118. </script>
  119. <style scoped>
  120. .app-title{
  121. line-height: 36px;
  122. font-size: 26px;
  123. font-weight: bold;
  124. color: #409EFF;
  125. text-align: center;
  126. margin: 0;
  127. }
  128. .box-card{
  129. margin-top: 20px;
  130. font-size: 14px;
  131. }
  132. .box-row{
  133. padding: 10px 0;
  134. }
  135. .box-row .dropdown{
  136. margin-top: -10px;
  137. }
  138. .refund-item{
  139. padding: 10px 0;
  140. }
  141. .order-item{
  142. background:#f7f7f7;
  143. margin-bottom: 20px;
  144. padding: 10px 15px;
  145. border-radius: 5px;
  146. }
  147. .product-row{
  148. padding: 10px 0;
  149. background: #EBEEF5;
  150. border-top: 1px dashed #DCDFE6;
  151. }
  152. .op-item{
  153. padding: 5px 0;
  154. }
  155. .el-span-warning{
  156. color: #E6A23C;
  157. }
  158. .el-span-success{
  159. color: #67C23A;
  160. }
  161. .el-span-danger{
  162. color: #F56C6C;
  163. }
  164. </style>