reward-log.php 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <?php
  2. use common\helpers\ComponentHelper;
  3. ComponentHelper::loadComponentView('com-user-info');
  4. ?>
  5. <com-list-page :crumbs="crumbs" id="application">
  6. <com-list-table
  7. ref="table"
  8. :api-params="apiParams"
  9. :search-list="searchList"
  10. >
  11. <el-table-column prop="user_id" min-width="50" label="会员ID" align="center"></el-table-column>
  12. <el-table-column label="会员信息" min-width="50" align="left">
  13. <template slot-scope="scope">
  14. <com-user-info :user="scope.row.user"></com-user-info>
  15. </template>
  16. </el-table-column>
  17. <el-table-column prop="reward_title" label="奖励类型" align="center">
  18. <template slot-scope="scope">
  19. {{ scope.row.reward_title }}
  20. </template>
  21. </el-table-column>
  22. <el-table-column label="奖励内容" align="center">
  23. <template slot-scope="scope">
  24. <el-tooltip placement="top" effect="light">
  25. <div slot="content">{{ scope.row.content }}</div>
  26. <el-button type="text">{{ getByteVal(scope.row.content) }}</el-button>
  27. </el-tooltip>
  28. </template>
  29. </el-table-column>
  30. <el-table-column prop="created_at" label="奖励时间" min-width="70" align="center">
  31. <template slot-scope="scope">
  32. {{ scope.row.created_at | dateTimeFormat('Y-m-d H:i') }}
  33. </template>
  34. </el-table-column>
  35. <el-table-column prop="is_frozen_text" label="冻结状态" min-width="70" align="center"></el-table-column>
  36. <el-table-column label="操作" min-width="70" align="center">
  37. <template slot-scope="scope">
  38. <el-button type="text" @click="handle('open', scope.row)">查看</el-button>
  39. </template>
  40. </el-table-column>
  41. </com-list-table>
  42. <el-dialog title="关联订单" :visible.sync="dialogVisible" width="60%">
  43. <el-table :data="orderList" stripe v-loading="orderLoading" size="small" style="margin-bottom: 15px;">
  44. <el-table-column prop="user_id" min-width="50" label="会员ID" align="center"></el-table-column>
  45. <el-table-column label="会员信息" min-width="50" align="left">
  46. <template slot-scope="scope">
  47. <com-image style="float: left;margin-right: 10px;" class="avatar_url" mode="aspectFill" :src="scope.row.user.avatar_url ? scope.row.user.avatar_url : '/resources/img/common/default-avatar.png'"></com-image>
  48. <div>{{scope.row.user.nickname}}<br/>{{scope.row.user.mobile}}</div>
  49. </template>
  50. </el-table-column>
  51. <el-table-column prop="order_no" label="订单编号" align="center"></el-table-column>
  52. <el-table-column prop="pay_at" label="支付时间" min-width="70" align="center">
  53. <template slot-scope="scope">
  54. {{ scope.row.pay_at | dateTimeFormat('Y-m-d H:i') }}
  55. </template>
  56. </el-table-column>
  57. <el-table-column prop="updated_at" label="结算时间" min-width="70" align="center">
  58. <template slot-scope="scope">
  59. {{ scope.row.updated_at | dateTimeFormat('Y-m-d H:i') }}
  60. </template>
  61. </el-table-column>
  62. </el-table>
  63. </el-dialog>
  64. </com-list-page>
  65. <script>
  66. const application = new Vue({
  67. el: '#application',
  68. data: {
  69. apiParams: {
  70. r: 'rebate/index/reward-log',
  71. rid: getQuery('rid'),
  72. },
  73. crumbs: [
  74. {
  75. title: '首页',
  76. router: 'mall/overview/index',
  77. },
  78. {
  79. title: '推三返一',
  80. router: 'rebate/index/index',
  81. },
  82. {
  83. title: '奖励记录',
  84. },
  85. ],
  86. searchList: [
  87. {
  88. key: 'user_id',
  89. title: '会员ID',
  90. type: 'text',
  91. },
  92. {
  93. key: 'mobile',
  94. title: '手机号',
  95. type: 'text',
  96. },
  97. {
  98. key: 'btw_time',
  99. title: '奖励时间',
  100. type: 'date-time-range',
  101. }
  102. ],
  103. orderLoading: false,
  104. dialogVisible: false,
  105. orderList: [],
  106. },
  107. methods: {
  108. handle(type, data = null) {
  109. let id = data ? parseInt(data.id) : '';
  110. switch (type) {
  111. case 'edit':
  112. let params = {
  113. r: 'rebate/index/edit'
  114. };
  115. if (id) params = Object.assign(params, {
  116. id: id
  117. });
  118. navigateTo(params);
  119. break;
  120. case 'log':
  121. param = {
  122. r: 'rebate/index/reward-log'
  123. };
  124. if (id) param = Object.assign(param, {
  125. id: id
  126. });
  127. navigateTo(param);
  128. break;
  129. case 'destroy':
  130. param = {id: data.id,status: -1};
  131. this.$confirm('删除该条数据后不可以恢复, 是否继续?', '警告', {type: 'warning'}).then(() => {this.send('plugin/rebate/mall/index/handle',param)})
  132. break;
  133. case 'operate':
  134. param = {id: data.id, status:data.status};
  135. this.$confirm('是否继续'+data.name+'该活动?', '警告', {type: 'warning'}).then(() => {this.send('plugin/rebate/mall/index/handle',param)})
  136. break;
  137. case 'open':
  138. this.dialogVisible = true;
  139. this.getRewardOrder(data);
  140. break;
  141. }
  142. },
  143. send(url, params, callback = null) {
  144. let self = this;
  145. request({
  146. params: {
  147. r: url,
  148. },
  149. method: 'post',
  150. data: params
  151. }).then(e => {
  152. if (e.data.code == 0) {
  153. self.$message.success(e.data.msg);
  154. self.getList();
  155. } else {
  156. self.$message.error(e.data.msg);
  157. }
  158. }).catch(e => {
  159. console.log(e);
  160. });
  161. if(callback) return e.data;
  162. },
  163. getByteVal(val, max = 30) {
  164. var returnValue = '';
  165. var byteValLen = 0;
  166. for (var i = 0; i < val.length; i++) {
  167. if (val[i].match(/[^\x00-\xff]/ig) != null)
  168. byteValLen += 2;
  169. else
  170. byteValLen += 1;
  171. if (byteValLen > max)
  172. break;
  173. returnValue += val[i];
  174. }
  175. return returnValue;
  176. },
  177. getRewardOrder(data) {
  178. let self = this;
  179. self.orderLoading = true;
  180. request({
  181. params: {
  182. r: 'rebate/index/reward-buy-logs',
  183. pid: data.user_id,
  184. reward_id: data.id,
  185. },
  186. method: 'get',
  187. }).then(e => {
  188. this.orderLoading = false;
  189. if (e.data.code == 0) {
  190. self.orderList = e.data.data;
  191. } else {
  192. self.$message.error(e.data.msg);
  193. }
  194. }).catch(e => {
  195. self.orderLoading = false;
  196. });
  197. },
  198. updateTime(val){
  199. if(val){
  200. this.searchForm.start_at = val[0].getTime() / 1000;
  201. this.searchForm.end_at = val[1].getTime() / 1000;
  202. } else {
  203. this.searchForm.start_at = "";
  204. this.searchForm.end_at = "";
  205. }
  206. },
  207. },
  208. })
  209. </script>