free-shipping-rules.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <?php
  2. ?>
  3. <style>
  4. @media screen and (max-width: 1500px) {
  5. #app {
  6. min-width: 1270px;
  7. }
  8. }
  9. </style>
  10. <div id="app" v-cloak>
  11. <el-card shadow="never" body-style="background-color: #f3f3f3;padding: 10px 0 0;">
  12. <div slot="header">
  13. <span>包邮规则</span>
  14. <div style="float: right; margin: -5px 0">
  15. <el-button type="primary" size="small" @click="handle('edit')">添加规则</el-button>
  16. </div>
  17. </div>
  18. <div class="table-body">
  19. <el-form :inline="true" size="small" class="demo-form-inline">
  20. <el-form-item>
  21. <el-input @keyup.enter.native="search" size="small" placeholder="请输入搜索内容" v-model="keyword" clearable @clear="getList">
  22. <el-button slot="append" icon="el-icon-search" @click="search"></el-button>
  23. </el-input>
  24. </el-form-item>
  25. </el-form>
  26. <el-table v-loading="listLoading" :data="list" stripe style="width: 100%">
  27. <el-table-column label="ID" prop="id" align="center"></el-table-column>
  28. <el-table-column label="规则名称" prop="name" align="center">
  29. <template slot-scope="scope">
  30. <div size="small">{{scope.row.name}}</div>
  31. </template>
  32. </el-table-column>
  33. <el-table-column label="订单金额" prop="money" align="center">
  34. <template slot-scope="scope">
  35. <div size="small">{{scope.row.money}}</div>
  36. </template>
  37. </el-table-column>
  38. <el-table-column label="操作" min-width="300" align="center">
  39. <template slot-scope="scope">
  40. <el-button type="text" @click="handle('edit',scope.row)">编辑</el-button>
  41. <el-button type="text" @click="handle('destroy',scope.row)">删除</el-button>
  42. </template>
  43. </el-table-column>
  44. </el-table>
  45. <div style="text-align: right;margin: 20px 0;">
  46. <el-pagination @current-change="pagination" background layout="prev, pager, next" :page-count="pageCount"></el-pagination>
  47. </div>
  48. </div>
  49. </el-card>
  50. </div>
  51. <script>
  52. const app = new Vue({
  53. el: '#app',
  54. data() {
  55. return {
  56. keyword: '',
  57. list: [{
  58. title: "测试标题"
  59. }],
  60. listLoading: false,
  61. page: 1,
  62. pageCount: 0
  63. };
  64. },
  65. mounted: function() {
  66. this.getList();
  67. },
  68. methods: {
  69. search() {
  70. this.page = 1;
  71. this.getList();
  72. },
  73. pagination(currentPage) {
  74. let self = this;
  75. self.page = currentPage;
  76. self.getList();
  77. },
  78. // 获取广告列表
  79. getList() {
  80. let self = this;
  81. if (self.listLoading == false) {
  82. self.listLoading = true;
  83. let params = {
  84. r: 'mall/freight/free-shipping-rules',
  85. page: self.page
  86. }
  87. let keyword = this.keyword;
  88. if (keyword) params.keyword = keyword;
  89. request({
  90. params:params,
  91. method: 'get',
  92. }).then(e => {
  93. self.listLoading = false;
  94. if (e.data.code == 0) {
  95. self.list = e.data.data.list;
  96. self.pageCount = e.data.data.page_count;
  97. } else {
  98. self.$message.error(e.data.msg);
  99. }
  100. }).catch(e => {
  101. self.$message.error(e.data.msg);
  102. self.listLoading = false;
  103. });
  104. }
  105. },
  106. handle(type, data = null) {
  107. switch (type) {
  108. case 'edit':
  109. id = data ? parseInt(data.id) : '';
  110. param = {
  111. r: 'mall/freight/free-shipping-edit'
  112. };
  113. if (id) param = Object.assign(param, {
  114. id: id
  115. });
  116. navigateTo(param);
  117. break;
  118. case 'default':
  119. for (let i in this.list) {
  120. this.list[i].is_default = 0;
  121. }
  122. data.is_default = 1;
  123. param = {
  124. id: data.id,
  125. is_default: data.is_default,
  126. type
  127. };
  128. this.send(param)
  129. break;
  130. case 'destroy':
  131. this.$confirm('删除该条数据后不可以恢复, 是否继续?', '警告', {
  132. type: 'warning'
  133. }).then(() => {
  134. let self = this;
  135. request({
  136. params: {
  137. r: 'mall/freight/free-shipping-rules',
  138. },
  139. method: 'post',
  140. data: {
  141. id: data.id,
  142. type
  143. }
  144. }).then(e => {
  145. if (e.data.code == 0) {
  146. self.$message.success(e.data.msg);
  147. self.getList();
  148. } else {
  149. self.$message.error(e.data.msg);
  150. }
  151. }).catch(e => {
  152. console.log(e);
  153. });
  154. })
  155. break;
  156. }
  157. },
  158. send(params) {
  159. let self = this;
  160. request({
  161. params: {
  162. r: 'mall/freight/rules',
  163. },
  164. method: 'post',
  165. data: params
  166. }).then(e => {
  167. if (e.data.code == 0) {
  168. self.$message.success(e.data.msg);
  169. self.getList();
  170. } else {
  171. self.$message.error(e.data.msg);
  172. }
  173. }).catch(e => {
  174. console.log(e);
  175. });
  176. }
  177. }
  178. });
  179. </script>