OrderDishes.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <template>
  2. <el-dialog :visible.sync="visible" v-bind="modalOptions">
  3. <div>
  4. <div style="display: flex;justify-content: flex-end;padding: 0 0 10px;">
  5. <el-button
  6. v-if="!listLoading && list && list.length"
  7. type="danger" size="medium"
  8. @click="handleEmptyDishes()"
  9. >
  10. 菜品清空
  11. </el-button>
  12. </div>
  13. <!-- 查询结果 -->
  14. <div>
  15. <el-table
  16. v-loading="listLoading" max-height="600" element-loading-text="正在查询中。。。" :data="list"
  17. :header-cell-style="{ background: '#EEF3FF', color: '#333333' }" tooltip-effect="dark"
  18. v-bind="{ stripe: true, size: 'small', border: true, fit: true, highlightCurrentRow: true }"
  19. >
  20. <el-table-column align="center" min-width="80" prop="id" label="ID" />
  21. <el-table-column align="center" width="120" prop="orderId" label="订单ID" show-overflow-tooltip />
  22. <el-table-column align="center" min-width="120" label="菜品ID" prop="dishId">
  23. <template slot-scope="{ row }">
  24. <div>
  25. <span>{{ row.dishId }}</span>
  26. <el-button
  27. v-if="row.productId"
  28. style="margin-left: 14px;"
  29. type="warning" size="mini"
  30. @click="$refs.DetailModal && $refs.DetailModal.handleOpen({ productId: row.productId })"
  31. >
  32. 详情
  33. </el-button>
  34. </div>
  35. </template>
  36. </el-table-column>
  37. <el-table-column align="center" width="120" prop="quantity" label="商品数量" show-overflow-tooltip />
  38. <el-table-column align="center" min-width="100" prop="amount" label="商品金额" show-overflow-tooltip />
  39. <el-table-column align="center" width="150" label="创建时间" prop="createTime" />
  40. <el-table-column label="操作" width="140" fixed="right" class-name="small-padding fixed-width">
  41. <template slot-scope="{ row }">
  42. <el-button
  43. type="warning" size="mini" @click="handleAddDishes(row)"
  44. >
  45. 菜品+1
  46. </el-button>
  47. <el-button
  48. v-if="row.quantity"
  49. type="danger" size="mini" @click="handleSubtractDishes(row)"
  50. >
  51. 菜品-1
  52. </el-button>
  53. </template>
  54. </el-table-column>
  55. </el-table>
  56. </div>
  57. <!-- 查看详情 -->
  58. <DetailModal ref="DetailModal" />
  59. </div>
  60. </el-dialog>
  61. </template>
  62. <script>
  63. import { getDishShopLaOrders, dishIncShopLaOrdersDish, dishDecShopLaOrdersDish, toEmptyShopLaOrdersDish } from '@/api/mealManagement/mealOrders'
  64. import DetailModal from '../../../commodity/commoditySystem/components/DetailModal'
  65. export default {
  66. name: 'OrderDishes',
  67. components: {
  68. DetailModal
  69. },
  70. data() {
  71. return {
  72. modalOptions: {
  73. closeOnClickModal: false,
  74. width: '1000px',
  75. title: '查看点餐订单详情'
  76. },
  77. visible: false,
  78. formData: {
  79. id: ''
  80. },
  81. list: [],
  82. // total: 0,
  83. listLoading: true,
  84. listQuery: {
  85. // page: 1,
  86. // pageSize: 10,
  87. id: ''
  88. }
  89. }
  90. },
  91. methods: {
  92. handleClose() {
  93. this.visible = false
  94. },
  95. handleOpen(params = {}) {
  96. this.formData = Object.assign(this.$options.data().formData, params)
  97. this.listQuery.id = params.id
  98. if (params.id) {
  99. // this.getInfo(params.id)
  100. this.getList()
  101. }
  102. this.visible = true
  103. },
  104. async getInfo(id) {
  105. const loading = this.$loading({ text: '加载中' })
  106. try {
  107. const res = await xxx({ id })
  108. this.formData = Object.assign(this.$options.data().formData, res.data, {
  109. xxx: res.data.xxx || ''
  110. })
  111. } finally {
  112. loading.close()
  113. }
  114. },
  115. async getList() {
  116. this.listLoading = true
  117. try {
  118. const res = await getDishShopLaOrders(this.listQuery)
  119. this.list = res.data.list
  120. // this.total = res.data.total
  121. } finally {
  122. this.listLoading = false
  123. }
  124. },
  125. handleEmptyDishes() {
  126. this.$confirm('确定尝试菜品清空?', '菜品清空')
  127. .then(async () => {
  128. await toEmptyShopLaOrdersDish({ id: this.formData.id })
  129. this.$message({ message: '操作成功!', type: 'success' })
  130. this.getList()
  131. // this.$emit('success')
  132. // this.visible = false
  133. })
  134. .catch(() => { })
  135. },
  136. handleAddDishes(row) {
  137. this.$confirm('确定将该菜品数量+1?')
  138. .then(async () => {
  139. await dishIncShopLaOrdersDish({ id: row.dishId })
  140. this.$message({ message: '+1成功!', type: 'success' })
  141. this.getList()
  142. })
  143. .catch(() => { })
  144. },
  145. handleSubtractDishes(row) {
  146. this.$confirm('确定将该菜品数量-1?')
  147. .then(async () => {
  148. await dishDecShopLaOrdersDish({ id: row.dishId })
  149. this.$message({ message: '-1成功!', type: 'success' })
  150. this.getList()
  151. })
  152. .catch(() => { })
  153. }
  154. }
  155. }
  156. </script>
  157. <style lang="scss" scoped>
  158. .small-padding {
  159. .cell {
  160. padding-left: 5px;
  161. padding-right: 5px;
  162. }
  163. }
  164. .fixed-width {
  165. .el-button--mini {
  166. padding: 7px 10px;
  167. }
  168. }
  169. </style>