lrf402788946 5 years ago
parent
commit
e576ac3421

+ 38 - 0
src/store/bedroom.js

@@ -0,0 +1,38 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  interface: `/api/bedroom`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit = this.$limit, ...info }) {
+    const res = await this.$axios.$get(`${api.interface}`, { skip, limit, ...info });
+    return res;
+  },
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.interface}`, payload);
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.interface}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...data }) {
+    const res = await this.$axios.$post(`${api.interface}/update/${id}`, data);
+    return res;
+  },
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.interface}/${payload}`);
+    return res;
+  },
+};
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 2 - 0
src/store/index.js

@@ -2,12 +2,14 @@ import Vue from 'vue';
 import Vuex from 'vuex';
 import classes from './classes';
 import location from './location';
+import bedroom from './bedroom';
 Vue.use(Vuex);
 
 export default new Vuex.Store({
   modules: {
     classes,
     location,
+    bedroom,
   },
   state: {},
   mutations: {},

+ 34 - 6
src/views/bedroom/detail.vue

@@ -19,6 +19,8 @@
 <script>
 import detailFrame from '@frame/layout/admin/detail-frame';
 import dataForm from '@frame/components/form';
+import { createNamespacedHelpers } from 'vuex';
+const { mapActions } = createNamespacedHelpers('bedroom');
 export default {
   metaInfo: { title: '寝室信息' },
   name: 'detail',
@@ -30,15 +32,15 @@ export default {
   data: () => ({
     info: {},
     fields: [
-      { label: '寝室号', required: true, model: 'no' },
-      { label: '人数', required: true, model: 'num' },
+      { label: '寝室号', required: true, model: 'code' },
+      { label: '人数', required: true, model: 'number' },
       { label: '批次', required: true, model: 'batch' },
       { label: '男女限制', required: true, model: 'gender', type: 'radio' },
       { label: '楼层', required: true, model: 'floor', type: 'radio' },
     ],
     rules: {
-      no: [{ required: true, message: '请输入寝室号' }],
-      num: [{ required: true, message: '请输入人数' }],
+      code: [{ required: true, message: '请输入寝室号' }],
+      number: [{ required: true, message: '请输入人数' }],
       batch: [{ required: true, message: '请输入批次' }],
       gender: [{ required: true, message: '请选择男女限制' }],
       floor: [{ required: true, message: '请选择楼层' }],
@@ -46,14 +48,40 @@ export default {
   }),
   created() {},
   computed: {
+    id() {
+      return this.$route.query.id;
+    },
     isNew() {
       return this.$route.query.id ? false : true;
     },
   },
+  watch: {
+    isNew: {
+      immediate: true,
+      handler(val) {
+        if (val) this.loading = false;
+        else this.search();
+      },
+    },
+  },
   methods: {
+    ...mapActions(['fetch', 'create', 'update']),
+    async search() {
+      const res = await this.fetch(this.id);
+      if (this.$checkRes(res)) this.$set(this, `info`, res.data);
+      this.loading = false;
+    },
     async handleSave({ isNew, data }) {
-      console.log(isNew);
-      console.log(data);
+      let res;
+      let msg;
+      if (isNew) {
+        res = this.create(data);
+        msg = '寝室添加成功';
+      } else {
+        res = this.update(data);
+        msg = '寝室修改成功';
+      }
+      if (this.$checkRes(res, msg)) this.$router.push({ path: '/bedroom/index' });
     },
   },
 };

+ 23 - 17
src/views/bedroom/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div id="index">
-    <list-frame title="寝室管理" @query="search" :needFilter="false" @add="$router.push({ path: '/bedroom/detail' })">
-      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @deltet="toDelete"></data-table>
+    <list-frame title="寝室管理" @query="search" :total="total" :needFilter="false" @add="$router.push({ path: '/bedroom/detail' })">
+      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @delete="toDelete"></data-table>
     </list-frame>
   </div>
 </template>
@@ -9,6 +9,8 @@
 <script>
 import listFrame from '@frame/layout/admin/list-frame';
 import dataTable from '@frame/components/data-table';
+import { createNamespacedHelpers } from 'vuex';
+const { mapActions } = createNamespacedHelpers('bedroom');
 export default {
   metaInfo: { title: '寝室管理' },
   name: 'index',
@@ -31,8 +33,8 @@ export default {
       },
     ],
     fields: [
-      { label: '寝室号', prop: 'no' },
-      { label: '人数', prop: 'num' },
+      { label: '寝室号', prop: 'code' },
+      { label: '人数', prop: 'number' },
       { label: '批次', prop: 'batch' },
       {
         label: '男女限制',
@@ -43,25 +45,29 @@ export default {
       },
       { label: '楼层', prop: 'floor' },
     ],
-    list: [
-      { id: 1, no: '501', batch: '1', num: 6, gender: '1', floor: '5楼' },
-      { id: 2, no: '502', batch: '2', num: 4, gender: '0', floor: '1楼' },
-    ],
+    list: [],
+    total: 0,
   }),
-  created() {},
+  created() {
+    this.search();
+  },
   computed: {},
   methods: {
-    search({ skip = 0, limit = 15, ...info } = {}) {
-      console.log(`in search`);
+    ...mapActions(['query', 'delete']),
+    async search({ skip = 0, limit = 15, ...info } = {}) {
+      const res = await this.query({ skip, limit, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `list`, res.data);
+        this.$set(this, `total`, res.total);
+      }
     },
     toEdit(data) {
-      console.log(`in toEdit`);
-      console.log(data);
-      this.$router.push({ path: '/place/detail', query: { id: data.id } });
+      this.$router.push({ path: '/bedroom/detail', query: { id: data.id } });
     },
-    toDelete(data) {
-      console.log(`in toDelete`);
-      console.log(data);
+    async toDelete(data) {
+      const res = await this.delete(data.id);
+      this.$checkRes(res, '删除成功', '删除失败');
+      this.search();
     },
   },
 };

+ 0 - 1
src/views/classes/detail.vue

@@ -55,7 +55,6 @@ export default {
     ...mapActions(['fetch', 'create', 'update']),
     async search() {
       const res = await this.fetch(this.id);
-      console.log(res);
       if (this.$checkRes(res)) this.$set(this, `info`, res.data);
       this.loading = false;
     },

+ 1 - 1
src/views/dept/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div id="index">
     <list-frame title="部门管理" @query="search" :needFilter="false" @add="$router.push({ path: '/dept/detail' })">
-      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @deltet="toDelete"></data-table>
+      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @delete="toDelete"></data-table>
     </list-frame>
   </div>
 </template>

+ 1 - 1
src/views/director/index.vue

@@ -7,7 +7,7 @@
           <el-option label="办公室" value="0"></el-option>
         </template>
       </template>
-      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @deltet="toDelete"></data-table>
+      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @delete="toDelete"></data-table>
     </list-frame>
   </div>
 </template>

+ 31 - 3
src/views/location/detail.vue

@@ -9,6 +9,8 @@
 <script>
 import detailFrame from '@frame/layout/admin/detail-frame';
 import dataForm from '@frame/components/form';
+import { createNamespacedHelpers } from 'vuex';
+const { mapActions } = createNamespacedHelpers('location');
 export default {
   metaInfo: { title: '地点信息' },
   name: 'detail',
@@ -19,21 +21,47 @@ export default {
   },
   data: () => ({
     info: {},
-    fields: [{ label: '地点', required: true, model: 'placename' }],
+    fields: [{ label: '地点', required: true, model: 'name' }],
     rules: {
       placename: [{ required: true, message: '请输入地点' }],
     },
   }),
   created() {},
   computed: {
+    id() {
+      return this.$route.query.id;
+    },
     isNew() {
       return this.$route.query.id ? false : true;
     },
   },
+  watch: {
+    isNew: {
+      immediate: true,
+      handler(val) {
+        if (val) this.loading = false;
+        else this.search();
+      },
+    },
+  },
   methods: {
+    ...mapActions(['fetch', 'create', 'update']),
+    async search() {
+      const res = await this.fetch(this.id);
+      if (this.$checkRes(res)) this.$set(this, `info`, res.data);
+      this.loading = false;
+    },
     async handleSave({ isNew, data }) {
-      console.log(isNew);
-      console.log(data);
+      let res;
+      let msg;
+      if (isNew) {
+        res = this.create(data);
+        msg = '地点添加成功';
+      } else {
+        res = this.update(data);
+        msg = '地点修改成功';
+      }
+      if (this.$checkRes(res, msg)) this.$router.push({ path: '/location/index' });
     },
   },
 };

+ 7 - 2
src/views/location/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div id="index">
     <list-frame title="地点管理" @query="search" :total="total" :needFilter="false" @add="$router.push({ path: '/location/detail' })">
-      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @deltet="toDelete"></data-table>
+      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @delete="toDelete"></data-table>
     </list-frame>
   </div>
 </template>
@@ -30,6 +30,8 @@ export default {
         label: '删除',
         icon: 'el-icon-delete',
         method: 'delete',
+        confirm: true,
+        methodZh: '删除',
       },
     ],
     fields: [{ label: '地点', prop: 'name' }],
@@ -53,9 +55,12 @@ export default {
     toEdit(data) {
       this.$router.push({ path: '/location/detail', query: { id: data.id } });
     },
-    toDelete(data) {
+    async toDelete(data) {
       console.log(`in toDelete`);
       console.log(data);
+      const res = await this.delete(data.id);
+      this.$checkRes(res, '删除成功', '删除失败');
+      this.search();
     },
   },
 };

+ 1 - 1
src/views/student/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div id="index">
     <list-frame title="学生管理" @query="search" :needFilter="false" @add="$router.push({ path: '/student/detail' })">
-      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @deltet="toDelete"></data-table>
+      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @delete="toDelete"></data-table>
     </list-frame>
   </div>
 </template>