table.vue 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. <template>
  2. <scTable ref="table" :apiObj="list.apiObj" :params="searchKey" @selectionChange="selectionChange" row-key="id">
  3. <el-table-column type="selection" width="50" fixed="left"></el-table-column>
  4. <el-table-column label="订单编号" width="260" fixed="left" prop="goods_id">
  5. <template #default="scope">
  6. <div class="order-name">
  7. <span>{{ scope.row.order_sn }}</span>
  8. <span class="dec">系统单号:{{ scope.row.out_order_no }}</span>
  9. </div>
  10. </template>
  11. </el-table-column>
  12. <el-table-column label="所属商家" prop="id" width="260">
  13. <template #default="scope">
  14. <div class="goods-img">
  15. <div class="name" v-if="scope.row.poi">
  16. <span>{{ scope.row.poi.poi_name }}</span>
  17. <span class="dec">{{ scope.row.poi.poi_address }}</span>
  18. </div>
  19. <div v-else>-</div>
  20. </div>
  21. </template>
  22. </el-table-column>
  23. <el-table-column label="商品类型" prop="types" width="100">
  24. <template #default="scope">
  25. {{ scope.row.product?scope.row.product.types:'-' }}
  26. </template>
  27. </el-table-column>
  28. <el-table-column label="商品信息" width="340" prop="name">
  29. <template #default="scope">
  30. <div class="goods-img">
  31. <div class="img">
  32. <el-image
  33. style="width: 54px; height: 54px"
  34. :src="scope.row.img"
  35. :zoom-rate="1.2"
  36. :max-scale="7"
  37. :min-scale="0.2"
  38. :preview-src-list="[scope.row.img]"
  39. preview-teleported
  40. z-index="999"
  41. fit="cover"></el-image>
  42. </div>
  43. <div class="name">
  44. <span>{{ scope.row.product.product_name }}</span>
  45. <span class="dec">商品编码:{{ scope.row.product.product_id }}</span>
  46. </div>
  47. </div>
  48. </template>
  49. </el-table-column>
  50. <el-table-column label="商品售价" prop="types" width="120" align="right">
  51. <template #default="scope">
  52. <div class="order-name">
  53. <span>{{ scope.row.price?$TOOL.money(scope.row.price):'-' }}</span>
  54. <span class="dec">{{ scope.row.number }}份</span>
  55. </div>
  56. </template>
  57. </el-table-column>
  58. <el-table-column label="顾客支付" prop="types" width="120" align="right">
  59. <template #default="scope">
  60. {{ scope.row.pay_money?$TOOL.money(scope.row.pay_money):'-' }}
  61. </template>
  62. </el-table-column>
  63. <el-table-column label="订单状态" prop="types" width="160" align="left">
  64. <template #default="scope">
  65. <div class="order-name" v-if="scope.row.status == 0">
  66. <span>待支付</span>
  67. <span class="dec" v-if="scope.row.end_time.min == 0 && scope.row.end_time.sec == 0">已超时,取消支付</span>
  68. <span class="dec" v-else>剩余{{ scope.row.end_time.min }}:{{ scope.row.end_time.sec }}</span>
  69. </div>
  70. <div class="order-name" v-if="scope.row.status == 1">
  71. <span>待使用</span>
  72. </div>
  73. <div class="order-name" v-if="scope.row.status == 2">
  74. <span>已完成</span>
  75. </div>
  76. <div class="order-name" v-if="scope.row.status == 3">
  77. <span>已退款</span>
  78. <span class="dec">款项已原路退回</span>
  79. </div>
  80. <div class="order-name" v-if="scope.row.status == 4">
  81. <span>退款中</span>
  82. <span class="dec">款项已原路退回</span>
  83. </div>
  84. <div class="order-name" v-if="scope.row.status == 5">
  85. <span>已关闭</span>
  86. <span class="dec">用户已取消</span>
  87. </div>
  88. </template>
  89. </el-table-column>
  90. <el-table-column label="下单时间" prop="create_at" width="160"></el-table-column>
  91. <el-table-column label="支付时间" prop="pay_at" width="160">
  92. <template #default="scope">
  93. {{ scope.row.pay_at?scope.row.pay_at:'未支付' }}
  94. </template>
  95. </el-table-column>
  96. <el-table-column label="操作" width="140" align="left" fixed="right">
  97. <template #default="scope">
  98. <el-button-group>
  99. <el-button size="small" text @click="table_view(scope.row)">详情</el-button>
  100. <el-button type="danger" text size="small" @click="table_del(scope.row)">删除</el-button>
  101. </el-button-group>
  102. </template>
  103. </el-table-column>
  104. </scTable>
  105. <orderDetail ref="orderDetail" @success="orderSuccess"></orderDetail>
  106. </template>
  107. <script>
  108. import orderDetail from "@/components/imFloat/order";
  109. export default {
  110. components:{
  111. orderDetail
  112. },
  113. data(){
  114. return {
  115. list: {
  116. apiObj: this.$API.order.list
  117. },
  118. dataSelect:[],
  119. dataSelectFull:[],
  120. searchKey:{}
  121. }
  122. },
  123. methods: {
  124. orderSuccess(){
  125. this.$refs.table.refresh()
  126. },
  127. table_view(data){
  128. this.$nextTick(() => {
  129. data.order = data.out_order_no
  130. this.$refs.orderDetail.open("edit").setData(data)
  131. })
  132. },
  133. table_del(data){
  134. },
  135. refresh(){
  136. this.$refs.table.refresh()
  137. },
  138. upData(data){
  139. this.$refs.table.upData(data)
  140. },
  141. handleSuccess(){
  142. this.$refs.table.refresh()
  143. },
  144. sortChange(event){
  145. if (event.order) {
  146. var data = {
  147. "field":event.prop,
  148. "order":event.order
  149. }
  150. this.$refs.table.upData(data)
  151. } else {
  152. this.$refs.table.reload(this.searchKey)
  153. }
  154. return ;
  155. },
  156. selectionChange(event){
  157. this.dataSelect = [];
  158. var arr = [];
  159. var arrCompany = [];
  160. event.forEach(function(val,index){
  161. arr[index] = val.id;
  162. arrCompany[index] = val;
  163. });
  164. this.dataSelectFull = arrCompany;
  165. this.dataSelect = arr;
  166. this.$emit("success",this.dataSelect);
  167. this.$emit("successFull",this.dataSelectFull);
  168. },
  169. }
  170. }
  171. </script>
  172. <style>
  173. .order-name span{display: block;}
  174. .order-name span.dec{color: #999;font-size: 12px;}
  175. .goods-img{display: flex;gap: 5px;}
  176. .goods-img .name span{display: block;}
  177. .goods-img .name span.dec{color: #999;font-size: 12px;}
  178. .goods-price,.price{display: flex;align-items: center;gap: 5px;font-size: 14px;}
  179. .goods-price .del{text-decoration: line-through;}
  180. .goods-price span{background-color: #fff !important;
  181. border: 1px solid #d3d9e0 !important;
  182. border-radius: 4px;
  183. box-sizing: border-box;
  184. color: #6c737a !important;
  185. display: inline-flex;
  186. flex: none;
  187. font-size: 12px;
  188. line-height: 18px !important;
  189. padding: 1px 6px !important;text-decoration: none;}
  190. </style>