deliverOrderList.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <template>
  2.  
  3. <div class="app-container">
  4. <el-card class="operate-container" shadow="never">
  5. <i class="el-icon-tickets"></i>
  6. <span>发货列表</span>
  7. </el-card>
  8. <div class="table-container">
  9. <el-table ref="deliverOrderTable" style="width: 100%" :data="list" border :row-class-name="tableRowClassName">
  10. <el-table-column label="订单编号" width="180" align="center">
  11. <template slot-scope="scope">{{ scope.row.orderSn }}</template>
  12. </el-table-column>
  13. <el-table-column label="收货人" width="180" align="center">
  14. <template slot-scope="scope">{{ scope.row.receiverName }}</template>
  15. </el-table-column>
  16. <el-table-column label="手机号码" width="160" align="center">
  17. <template slot-scope="scope">{{ scope.row.receiverPhone }}</template>
  18. </el-table-column>
  19. <el-table-column label="邮政编码" width="160" align="center">
  20. <template slot-scope="scope">{{
  21. scope.row.receiverPostCode
  22. }}</template>
  23. </el-table-column>
  24. <el-table-column label="收货地址" align="center">
  25. <template slot-scope="scope">
  26. {{ scope.row.address }}
  27. </template>
  28. </el-table-column>
  29. <el-table-column label="配送方式" width="160" align="center">
  30. <template slot-scope="scope">
  31. <el-select
  32. placeholder="请选择物流公司"
  33. v-model="scope.row.deliveryCompany"
  34. size="small"
  35. >
  36. <el-option
  37. v-for="item in companyOptions"
  38. :key="item"
  39. :label="item"
  40. :value="item"
  41. >
  42. </el-option>
  43. </el-select>
  44. </template>
  45. </el-table-column>
  46. <el-table-column label="物流单号" width="180" align="center">
  47. <template slot-scope="scope">
  48. <el-input size="small" v-model="scope.row.deliverySn"></el-input>
  49. </template>
  50. </el-table-column>
  51. <el-table-column label="操作" width="180" align="center">
  52. <template slot-scope="scope">
  53. <p class="table-btn-group">
  54. <el-button
  55. size="mini"
  56. type="danger"
  57. @click="handleViewRemove(scope.$index, scope.row)"
  58. >移除</el-button
  59. >
  60. </p>
  61. </template>
  62. </el-table-column>
  63. </el-table>
  64. <div style="margin-top: 15px; text-align: center">
  65. <el-button @click="cancel">取消</el-button>
  66. <el-button @click="confirm" :disabled="list.length <= 0" type="primary">确定</el-button>
  67. </div>
  68. </div>
  69. <el-dialog
  70. title="提示"
  71. :visible.sync="dialogVisible"
  72. width="50%">
  73. <el-table style="width: 100%" :data="listError" border>
  74. <el-table-column label="编号" width="180" align="center">
  75. <template slot-scope="scope">{{ scope.row.id }}</template>
  76. </el-table-column>
  77. <el-table-column label="内容" align="center">
  78. <template slot-scope="scope">{{ scope.row.text }}</template>
  79. </el-table-column>
  80. </el-table>
  81. </el-dialog>
  82. </div>
  83. </template>
  84. <script>
  85. import { deliveryOrder } from "@/api/order";
  86. const defaultLogisticsCompanies = [
  87. "顺丰快递",
  88. "圆通快递",
  89. "中通快递",
  90. "韵达快递",
  91. ];
  92. export default {
  93. name: "deliverOrderList",
  94. data() {
  95. return {
  96. list: [],
  97. listError: [],
  98. dialogVisible: false,
  99. companyOptions: defaultLogisticsCompanies,
  100. };
  101. },
  102. created() {
  103. this.list = this.$route.query.list;
  104. //当list不为数组时转换为数组
  105. if (this.list instanceof Array === false) {
  106. this.list = [];
  107. }
  108. console.log( this.list)
  109. },
  110. methods: {
  111. tableRowClassName(row) {
  112. if(row.row.isError) {
  113. return 'warning-row'
  114. }
  115. return ''
  116. },
  117. handleViewRemove(index, row) {
  118. console.log(this.list, index, row)
  119. this.list.splice(index, 1)
  120. },
  121. cancel() {
  122. this.$router.back();
  123. },
  124. confirm() {
  125. this.$confirm("是否要进行发货操作?", "提示", {
  126. confirmButtonText: "确定",
  127. cancelButtonText: "取消",
  128. type: "warning",
  129. })
  130. .then(() => {
  131. deliveryOrder(this.list).then((response) => {
  132. const result = response.data
  133. if(!result || Object.keys(result).length <= 0) {
  134. this.$router.back();
  135. this.$message({
  136. type: "success",
  137. message: "发货成功!",
  138. });
  139. } else {
  140. this.list.forEach((item) => {
  141. if(result[item.orderSn]) {
  142. item.isError = true
  143. }
  144. })
  145. this.dialogVisible = true;
  146. const temp = []
  147. for(let i in result) {
  148. temp.push({
  149. id: i,
  150. text: result[i]
  151. })
  152. }
  153. this.listError = temp
  154. }
  155. })
  156. })
  157. .catch(() => {
  158. this.$message({
  159. type: "info",
  160. message: "已取消发货",
  161. });
  162. });
  163. },
  164. },
  165. };
  166. </script>
  167. <style>
  168. .el-table .warning-row {
  169. background: oldlace;
  170. }</style>