dispense-order-management.php 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. <?php
  2. use common\helpers\ComponentHelper;
  3. ComponentHelper::loadComponentView('com-list-page');
  4. ComponentHelper::loadComponentView('com-list-table');
  5. ComponentHelper::loadComponentView('com-user-info');
  6. ComponentHelper::loadComponentView('com-export-dialog');
  7. $diyPath = dirname(__DIR__) . '/components';
  8. ?>
  9. <com-list-page :crumbs="crumbs" id="application">
  10. <com-list-table
  11. ref="table"
  12. :api="'cloud-stock/agent/dispense-order-management'"
  13. @selection-change="handleSelectionChange"
  14. :search-list="searchList"
  15. @search="handleSearch"
  16. >
  17. <el-table-column prop="user" align="center" min-width="180" label="代理商">
  18. <template slot-scope="scope">
  19. <com-user-info :user="scope.row.user"></com-user-info>
  20. </template>
  21. </el-table-column>
  22. <el-table-column align="center" prop="counts" label="配货总次数"></el-table-column>
  23. <el-table-column align="center" prop="num" label="配货商品数量">
  24. <template slot-scope="scope">
  25. {{scope.row.num}}
  26. <el-button circle size="mini" type="text" @click="showDetail(scope.row)" v-if="scope.row.num>0">
  27. 查看详情
  28. </el-button>
  29. </template>
  30. </el-table-column>
  31. <el-table-column align="center" prop="money" label="配货商品总金额(元)"></el-table-column>
  32. <el-table-column label="操作" width="180" align="center">
  33. <template slot-scope="scope">
  34. <el-button circle size="mini" type="text" @click="toDispenseOrderManagement(scope.row)">
  35. 配货明细
  36. </el-button>
  37. </template>
  38. </el-table-column>
  39. <template slot="header-left">
  40. <com-export-dialog
  41. style="margin-left: 20px "
  42. :field_list='exportList'
  43. :action_url='export_url'
  44. :params="searchInfo">
  45. </com-export-dialog>
  46. </template>
  47. </com-list-table>
  48. <el-dialog title="商品详情" :visible.sync="dialogTableVisible" center width="30%">
  49. <el-table :data="gridData">
  50. <el-table-column prop="name" label="商品信息">
  51. <template slot-scope="scope">
  52. <div style="display: flex;align-items: center;">
  53. <div style="margin-right:10px;"><img :src="scope.row.goods.cover_pic"
  54. style="width: 40px;height: 40px;display: block;"/>
  55. </div>
  56. <div>
  57. <div style="text-align: left;line-height: 16px;">
  58. {{scope.row.goods.goods_name}}
  59. </div>
  60. </div>
  61. </div>
  62. </template>
  63. </el-table-column>
  64. <el-table-column prop="num" label="商品数量" align="center"></el-table-column>
  65. </el-table>
  66. </el-dialog>
  67. </com-list-page>
  68. <script>
  69. const application = new Vue({
  70. el: '#application',
  71. data: {
  72. crumbs: [
  73. {
  74. title: '配货管理',
  75. router: '',
  76. }
  77. ],
  78. searchList: [
  79. {
  80. key: 'keyword',
  81. title: '请输入用户昵称/手机号搜索',
  82. type: 'text',
  83. },
  84. {
  85. key: 'date',
  86. title: '日期',
  87. type: 'date-picker',
  88. valueFormat: 'yyyy-MM-dd',
  89. },
  90. ],
  91. btnLoad: false,
  92. apply_edit: false,
  93. dialogTableVisible: false,
  94. id: 0,
  95. start: '',
  96. end: '',
  97. gridData: [],
  98. export_url: 'cloud-stock/agent/dispense-order-management', // 导出路径
  99. exportList: {},
  100. searchInfo: {
  101. keyword: '',
  102. date: [],
  103. },
  104. },
  105. mounted() {
  106. this.getExportList();
  107. },
  108. methods: {
  109. toDispenseOrderManagement(row) {
  110. let params = {
  111. r: 'cloud-stock/order/index',
  112. keyword: row.user_id,
  113. type: 1,
  114. list_type: 'dispense_order',
  115. start: this.start,
  116. end: this.end,
  117. };
  118. navigateTo(params, true);
  119. },
  120. showDetail(row) {
  121. this.dialogTableVisible = true;
  122. let self = this;
  123. request({
  124. params: {
  125. r: 'cloud-stock/agent/get-detail',
  126. user_id: row.user_id,
  127. start: self.start,
  128. end: self.end,
  129. },
  130. method: 'get',
  131. }).then(e => {
  132. self.listLoading = false;
  133. if (e.data.code === 0) {
  134. self.gridData = e.data.data;
  135. } else {
  136. self.$message.error(e.data.msg);
  137. }
  138. }).catch(e => {
  139. console.log(e);
  140. });
  141. },
  142. handleSelectionChange(val) {
  143. console.log(val);
  144. this.multipleSelection = val;
  145. },
  146. handleSearch(keyword) {
  147. this.searchInfo.keyword = keyword.keyword;
  148. this.searchInfo.date.push(keyword.date[0]);
  149. this.searchInfo.date.push(keyword.date[1]);
  150. },
  151. handle(type, data = null) {
  152. let id = data ? parseInt(data.id) : '';
  153. let status = data ? parseInt(data.status) : '';
  154. switch (type) {
  155. case 'status':
  156. let self = this;
  157. self.listLoading = true;
  158. request({
  159. params: {
  160. r: 'cloud-stock/price-difference-gift-package/switch-status',
  161. },
  162. method: 'post',
  163. data: {
  164. id: id,
  165. status: status,
  166. }
  167. }).then(e => {
  168. self.listLoading = false;
  169. if (e.data.code === 0) {
  170. self.$message.success(e.data.msg);
  171. } else {
  172. self.$message.error(e.data.msg);
  173. }
  174. self.getList();
  175. }).catch(e => {
  176. console.log(e);
  177. });
  178. break;
  179. default:
  180. break;
  181. }
  182. },
  183. getList() {
  184. this.$refs.table.handleSearch();
  185. },
  186. batchActivation(status) {
  187. if (!this.multipleSelection || this.multipleSelection.length == 0) {
  188. this.$message.error('请选择要操作的数据');
  189. return;
  190. }
  191. var ids = [];
  192. for (var i = 0; i < this.multipleSelection.length; i++) {
  193. ids.push(this.multipleSelection[i].id);
  194. }
  195. let self = this;
  196. self.$confirm('选中的数据,是否批量启用?', '提示', {
  197. confirmButtonText: '确定',
  198. cancelButtonText: '取消',
  199. type: 'warning'
  200. }).then(() => {
  201. self.listLoading = true;
  202. request({
  203. params: {
  204. r: 'cloud-stock/price-difference-gift-package/switch-status',
  205. },
  206. method: 'post',
  207. data: {
  208. id: ids,
  209. status: status,
  210. }
  211. }).then(e => {
  212. self.listLoading = false;
  213. if (e.data.code === 0) {
  214. self.$message.success(e.data.msg);
  215. this.getList();
  216. } else {
  217. self.$message.error(e.data.msg);
  218. }
  219. }).catch(e => {
  220. console.log(e);
  221. });
  222. }).catch(() => {
  223. self.$message.info('已取消删除')
  224. });
  225. },
  226. getExportList() {
  227. this.listLoading = true;
  228. let params = {
  229. r: 'cloud-stock/agent/get-export-list',
  230. };
  231. request({
  232. params: params,
  233. method: 'get',
  234. }).then(e => {
  235. if (e.data.code == 0) {
  236. this.exportList = e.data.data;
  237. } else {
  238. this.$message.error(e.data.msg);
  239. }
  240. }).catch(e => {
  241. this.loading = false;
  242. });
  243. },
  244. }
  245. })
  246. </script>