classification.php 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. <style>
  2. .input-item {
  3. width: 150px;
  4. margin: 0 0 20px;
  5. display: inline-block;
  6. }
  7. </style>
  8. <div id="app" v-cloak>
  9. <el-card shadow="never" style="border:0;min-width: 1000px;" body-style="background-color: #f3f3f3;padding: 10px 0 0;">
  10. <div slot="header">
  11. <span>分类</span>
  12. <div style="float: right; margin: -5px 0">
  13. <el-button type="primary" size="small" @click="handle('add')">添加分类</el-button>
  14. </div>
  15. </div>
  16. <div class="table-body">
  17. <el-table :data="list" stripe v-loading="loading" size="small" style="margin-bottom: 15px;">
  18. <el-table-column label="编号" prop="id" align="center"></el-table-column>
  19. <el-table-column label="名称" prop="name" align="center"></el-table-column>
  20. <el-table-column label="状态" prop="status" align="center">
  21. <template slot-scope="scope">
  22. <el-tag v-if="scope.row.status == 0" type="warning" >已禁用</el-tag>
  23. <el-tag v-if="scope.row.status == 1" type="success" >启用中</el-tag>
  24. </template>
  25. </el-table-column>
  26. <el-table-column label="创建时间" prop="created_at" align="center"></el-table-column>
  27. <el-table-column label="操作" width="300px" align="center">
  28. <template slot-scope="scope">
  29. <el-button v-if="scope.row.status == 0" type="text" size="small" @click="send('updateStatus', scope)">启用</el-button>
  30. <el-button v-if="scope.row.status == 1" type="text" size="small" @click="send('updateStatus', scope)">禁用</el-button>
  31. <el-button type="text" size="small" @click="send('delete', scope)">删除</el-button>
  32. </template>
  33. </el-table-column>
  34. </el-table>
  35. </div>
  36. </el-card>
  37. <!--弹出添加分类-->
  38. <el-dialog title="添加分类" :visible.sync="isAdd" width="35%">
  39. <el-form v-loading="loading" :model="addData" label-width="10rem" label-position="right">
  40. <el-form-item label="分类名称" prop="is_attr">
  41. <div class="input-item">
  42. <el-input width="20%" size="small" placeholder="请输入分类名称" v-model="addData.name"></el-input>
  43. </div>
  44. </el-form-item>
  45. <el-form-item label="是否启用" prop="status">
  46. <div class="input-item">
  47. <el-switch v-if="!loading"
  48. v-if="addData"
  49. v-model="addData.status"
  50. :active-value="1"
  51. :inactive-value="0">
  52. </el-switch>
  53. </div>
  54. </el-form-item>
  55. <el-form-item style="margin-bottom: 0">
  56. <el-button type="primary" size="small" style="float: right;width: 80px;margin-right: 20px;" :loading="loading" @click="send('addData')">提交</el-button>
  57. </el-form-item>
  58. </el-form>
  59. </el-dialog>
  60. <!--弹出添加分类-->
  61. </div>
  62. <script>
  63. const app = new Vue({
  64. el: '#app',
  65. data: {
  66. list: [],
  67. loading: false,
  68. isAdd: false,
  69. addData: {
  70. name: '',
  71. status: ''
  72. },
  73. },
  74. mounted() {
  75. this.send('getData');
  76. },
  77. methods: {
  78. send (type, param1 = null) {
  79. switch (type) {
  80. case 'getData':
  81. this.loading = true;
  82. request({
  83. params: {
  84. r : 'score-mall/default/classification'
  85. },
  86. method: 'get'
  87. }).then(e=>{
  88. this.loading = false;
  89. if (e.data.code == 0) {
  90. this.list = e.data.data;
  91. } else {
  92. this.$message.error(e.data.msg);
  93. }
  94. }).catch(e => {
  95. this.loading = false;
  96. self.$message.error(e.data.msg);
  97. });
  98. break;
  99. //提交新增
  100. case 'addData':
  101. this.loading = true;
  102. this.isAdd = false;
  103. let addData = Object.assign({type : 'add'}, this.addData);
  104. request({
  105. params: {
  106. r : 'score-mall/default/classification'
  107. },
  108. data: addData,
  109. method: 'post'
  110. }).then(e=>{
  111. this.loading = false;
  112. if (e.data.code == 0) {
  113. this.$message.success(e.data.msg);
  114. this.list.push(e.data.data);
  115. } else {
  116. this.$message.error(e.data.msg);
  117. }
  118. }).catch(e => {
  119. this.loading = false;
  120. this.$message.error(e.data.msg);
  121. });
  122. break;
  123. //变更状态
  124. case 'updateStatus':
  125. this.loading = true;
  126. let updateStatus = Object.assign({type : 'updateStatus'}, param1.row);
  127. request({
  128. params: {
  129. r : 'score-mall/default/classification'
  130. },
  131. data: updateStatus,
  132. method: 'post'
  133. }).then(e=>{
  134. this.loading = false;
  135. if (e.data.code == 0) {
  136. this.$message.success(e.data.msg);
  137. this.list[param1.$index]['status'] = param1.row.status == 1 ? 0: 1;
  138. } else {
  139. this.$message.error(e.data.msg);
  140. }
  141. }).catch(e => {
  142. this.loading = false;
  143. this.$message.error(e.data.msg);
  144. });
  145. break;
  146. case 'delete':
  147. this.$confirm('删除该分类, 是否继续?', '提示', {
  148. confirmButtonText: '确定',
  149. cancelButtonText: '取消',
  150. type: 'warning'
  151. }).then(() => {
  152. this.loading = true;
  153. let deleteCat = Object.assign({type : 'delete'}, param1.row);
  154. request({
  155. params: {
  156. r : 'score-mall/default/classification'
  157. },
  158. data: deleteCat,
  159. method: 'post'
  160. }).then(e=>{
  161. this.loading = false;
  162. if (e.data.code == 0) {
  163. this.$message.success(e.data.msg);
  164. this.list.splice(param1.$index, 1);
  165. } else {
  166. this.$message.error(e.data.msg);
  167. }
  168. }).catch(e => {
  169. this.loading = false;
  170. this.$message.error(e.data.msg);
  171. });
  172. }).catch(() => {
  173. this.$message.info('已取消删除')
  174. });
  175. break;
  176. }
  177. },
  178. handle(type, param1 = null, param2 = null) {
  179. switch (type) {
  180. //变更状态
  181. case 'updateStatus':
  182. this.list.splice(param1.$index, 1);
  183. break;
  184. //添加分类弹窗
  185. case 'add':
  186. this.isAdd = true;
  187. break;
  188. }
  189. }
  190. }
  191. })
  192. </script>