combo.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <div id="app" v-cloak>
  2. <el-card shadow="never" style="border:0" body-style="background-color: #f3f3f3;padding: 10px 0 0;">
  3. <div slot="header">
  4. <span>套餐列表</span>
  5. <div style="float: right;margin-top: -5px">
  6. <el-button type="primary"
  7. @click="handle('edit')"
  8. size="small">创建套餐
  9. </el-button>
  10. </div>
  11. </div>
  12. <div class="table-body">
  13. <div class="search-box">
  14. <!-- 搜索 -->
  15. <el-form :inline="true" :model="searchForm" size="small" class="demo-form-inline">
  16. <el-form-item label="套餐名称">
  17. <el-input placeholder="请输入套餐名称" v-model="searchForm.title"></el-input>
  18. </el-form-item>
  19. <el-form-item label="创建时间">
  20. <el-date-picker
  21. v-model="searchForm.datetime"
  22. type="datetimerange"
  23. value-format="yyyy-MM-dd HH:mm:ss"
  24. range-separator="至"
  25. start-placeholder="开始日期"
  26. end-placeholder="结束日期">
  27. </el-date-picker>
  28. </el-form-item>
  29. <el-form-item>
  30. <el-button type="primary" @click="handle('search')">搜索</el-button>
  31. <el-button type="danger" @click="resetSearch" v-if="show_clear_search_btn">清除条件</el-button>
  32. </el-form-item>
  33. </el-form>
  34. </div>
  35. <el-tabs>
  36. <el-table :data="list" stripe v-loading="loading" size="small" style="margin-bottom: 15px;">
  37. <el-table-column prop="id" min-width="30" label="序号" align="center"></el-table-column>
  38. <el-table-column prop="title" label="套餐名称" align="center"></el-table-column>
  39. <el-table-column prop="description" label="套餐说明" align="center"></el-table-column>
  40. <el-table-column prop="mall_num" label="店铺数量" min-width="60" align="center"></el-table-column>
  41. <el-table-column prop="scope" label="创建时间">
  42. <template slot-scope="scope">
  43. {{scope.row.created_at|dateTimeFormat('Y-m-d H:i:s')}}
  44. </template>
  45. </el-table-column>
  46. <el-table-column label="操作" align="center">
  47. <template slot-scope="scope">
  48. <el-button type="text" @click="handle('edit',scope.row)">编辑</el-button>
  49. <el-button type="text" @click="handle('delete',scope.row)">删除</el-button>
  50. </template>
  51. </el-table-column>
  52. </el-table>
  53. <div style="text-align: right;margin: 20px 0;">
  54. <el-pagination @current-change="pagination" background layout="prev, pager, next" :page-count="pageCount"></el-pagination>
  55. </div>
  56. </el-tabs>
  57. </div>
  58. </el-card>
  59. </div>
  60. <script>
  61. const app = new Vue({
  62. el: '#app',
  63. data: {
  64. loading: false,
  65. delLoading: false,
  66. page: 1,
  67. pageCount: 0,
  68. list: [],
  69. searchForm:{
  70. title:null,
  71. datetime:null,
  72. },
  73. },
  74. mounted() {
  75. this.getList();
  76. },
  77. computed: {
  78. show_clear_search_btn: function() {
  79. return this.searchForm.title != null ||
  80. this.searchForm.datetime != null;
  81. },
  82. },
  83. methods: {
  84. pagination(currentPage) {
  85. let self = this;
  86. self.page = currentPage;
  87. self.getList();
  88. },
  89. resetSearch() {// 清空查询条件
  90. this.searchForm = {
  91. title: null,
  92. datetime: null,
  93. };
  94. this.page = 1;
  95. this.getList();
  96. },
  97. handle(type, data = null) {
  98. let id = data ? parseInt(data.id) : '';
  99. switch (type) {
  100. case 'edit':
  101. let params = {
  102. r: 'admin/addons/combo-edit'
  103. };
  104. if (id) params = Object.assign(params, {
  105. id: id
  106. });
  107. navigateTo(params);
  108. break;
  109. case 'delete':
  110. param = {id: data.id,status:-1};
  111. this.$confirm('删除该条数据后不可以恢复, 是否继续?', '警告', {type: 'warning'}).then(() => {this.send('admin/addons/handle-combo',param)})
  112. break;
  113. case 'search':
  114. this.page = 1;
  115. this.getList(this.searchForm);
  116. break;
  117. }
  118. },
  119. send(url, params) {
  120. let self = this;
  121. request({
  122. params: {
  123. r: url,
  124. },
  125. method: 'post',
  126. data: params
  127. }).then(e => {
  128. if (e.data.code == 0) {
  129. self.$message.success(e.data.msg);
  130. self.getList();
  131. } else {
  132. self.$message.error(e.data.msg);
  133. }
  134. }).catch(e => {
  135. console.log(e);
  136. });
  137. },
  138. getList(search = {}) {
  139. let self = this;
  140. self.loading = true;
  141. let basic_params = {
  142. page: self.page,
  143. };
  144. params = Object.assign(basic_params, search);
  145. console.log(params,'----')
  146. request({
  147. params: {
  148. r:'admin/addons/combo',
  149. },
  150. method: 'post',
  151. data: params
  152. }).then(e => {
  153. this.loading = false;
  154. if (e.data.code == 0) {
  155. self.list = e.data.data.list;
  156. self.pageCount = e.data.data.page_count;
  157. } else {
  158. self.$message.error(e.data.msg);
  159. }
  160. }).catch(e => {
  161. self.loading = false;
  162. });
  163. },
  164. }
  165. });
  166. </script>
  167. <style>
  168. .table-body {
  169. padding: 20px;
  170. background-color: #fff;
  171. }
  172. </style>