coupon.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
  2. var Controller = {
  3. index: () => {
  4. const { reactive, onMounted } = Vue
  5. const index = {
  6. setup() {
  7. const state = reactive({
  8. coupon_id: new URLSearchParams(location.search).get('coupon_id'),
  9. data: [],
  10. order: '',
  11. sort: '',
  12. filter: {
  13. drawer: false,
  14. data: {
  15. user: { field: 'user_id', value: '' },
  16. 'order.order_sn': '',
  17. status: '',
  18. createtime: [],
  19. use_time: [],
  20. },
  21. tools: {
  22. user: {
  23. type: 'tinputprepend',
  24. label: '用户信息',
  25. placeholder: '请输入查询内容',
  26. value: {
  27. field: 'user_id',
  28. value: '',
  29. },
  30. options: {
  31. data: [{
  32. label: '用户ID',
  33. value: 'user_id',
  34. },
  35. {
  36. label: '用户昵称',
  37. value: 'user.nickname',
  38. },
  39. {
  40. label: '用户手机号',
  41. value: 'user.mobile',
  42. }]
  43. }
  44. },
  45. 'order.order_sn': {
  46. type: 'tinput',
  47. label: '订单号',
  48. placeholder: '请输入订单号',
  49. value: '',
  50. },
  51. status: {
  52. type: 'tselect',
  53. label: '状态',
  54. value: '',
  55. options: {
  56. data: [{
  57. label: '未使用',
  58. value: 'geted',
  59. },
  60. {
  61. label: '已使用',
  62. value: 'used',
  63. },
  64. {
  65. label: '已过期',
  66. value: 'expired',
  67. }],
  68. },
  69. },
  70. createtime: {
  71. type: 'tdatetimerange',
  72. label: '领取时间',
  73. value: [],
  74. },
  75. use_time: {
  76. type: 'tdatetimerange',
  77. label: '使用时间',
  78. value: [],
  79. },
  80. },
  81. condition: {},
  82. },
  83. statusClass: {
  84. geted: 'info',
  85. used: 'success',
  86. expired: 'error',
  87. },
  88. })
  89. function getData() {
  90. let tempSearch = JSON.parse(JSON.stringify(state.filter.data));
  91. let search = composeFilter(tempSearch, {
  92. 'user.nickname': 'like',
  93. 'user.mobile': 'like',
  94. createtime: 'range',
  95. use_time: 'range',
  96. });
  97. Fast.api.ajax({
  98. url: 'shopro/user/coupon',
  99. type: 'GET',
  100. data: {
  101. page: pagination.page,
  102. list_rows: pagination.list_rows,
  103. order: state.order,
  104. sort: state.sort,
  105. coupon_id: state.coupon_id,
  106. ...search,
  107. },
  108. }, function (ret, res) {
  109. state.data = res.data.data
  110. pagination.total = res.data.total
  111. return false
  112. }, function (ret, res) { })
  113. }
  114. function onChangeSort({ prop, order }) {
  115. state.order = order == 'ascending' ? 'asc' : 'desc';
  116. state.sort = prop;
  117. getData();
  118. }
  119. function onOpenFilter() {
  120. state.filter.drawer = true
  121. }
  122. function onChangeFilter() {
  123. pagination.page = 1
  124. getData()
  125. state.filter.drawer && (state.filter.drawer = false)
  126. }
  127. const pagination = reactive({
  128. page: 1,
  129. list_rows: 10,
  130. total: 0,
  131. })
  132. onMounted(() => {
  133. getData()
  134. })
  135. return {
  136. state,
  137. getData,
  138. onChangeSort,
  139. onOpenFilter,
  140. onChangeFilter,
  141. pagination,
  142. }
  143. }
  144. }
  145. createApp('index', index);
  146. },
  147. };
  148. return Controller;
  149. });