Browse Source

Merge branch 'master' of http://git.cc-lotus.info/new_train/train-center

lrf402788946 5 years ago
parent
commit
90b12080e9
5 changed files with 103 additions and 19 deletions
  1. 38 0
      src/store/dept.js
  2. 2 0
      src/store/index.js
  3. 34 4
      src/views/dept/detail.vue
  4. 23 9
      src/views/dept/index.vue
  5. 6 6
      src/views/director/detail.vue

+ 38 - 0
src/store/dept.js

@@ -0,0 +1,38 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  interface: `/api//department`,
+};
+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

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

+ 34 - 4
src/views/dept/detail.vue

@@ -9,6 +9,9 @@
 <script>
 import detailFrame from '@frame/layout/admin/detail-frame';
 import dataForm from '@frame/components/form';
+import { mapActions, mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: mapClass } = createNamespacedHelpers('dept');
+
 export default {
   metaInfo: { title: '部门信息' },
   name: 'detail',
@@ -19,21 +22,48 @@ export default {
   },
   data: () => ({
     info: {},
-    fields: [{ label: '所属部门', required: true, model: 'deptname' }],
+    fields: [{ label: '所属部门', required: true, model: 'name' }],
     rules: {
-      deptname: [{ required: true, message: '请输入部门名称' }],
+      name: [{ 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: {
+    ...mapClass(['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;
+    },
     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: '/dept/index' });
     },
   },
 };

+ 23 - 9
src/views/dept/index.vue

@@ -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('dept');
 export default {
   metaInfo: { title: '部门管理' },
   name: 'index',
@@ -27,29 +29,41 @@ export default {
       {
         label: '删除',
         icon: 'el-icon-delete',
+
         method: 'delete',
+        confirm: true,
+        methodZh: '删除',
       },
     ],
-    fields: [{ label: '部门名称', prop: 'deptname' }],
-    list: [
-      { id: 1, deptname: '信息部' },
-      { id: 2, deptname: '办公室' },
-    ],
+    fields: [{ label: '部门名称', prop: 'name' }],
+    list: [],
   }),
-  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: '/dept/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();
     },
   },
 };

+ 6 - 6
src/views/director/detail.vue

@@ -36,24 +36,24 @@ export default {
     info: { name: 'tes' },
     fields: [
       { label: '姓名', required: true, model: 'name' },
-      { label: '所属部门', required: true, model: 'dept', type: 'select' },
+      { label: '所属部门', required: true, model: 'department', type: 'select' },
       { label: '性别', required: true, model: 'gender', type: `select` },
-      { label: '电话', required: true, model: 'tel', options: { maxlength: 11, minlength: 11 } },
+      { label: '电话', required: true, model: 'phone', options: { maxlength: 11, minlength: 11 } },
       { label: '出生日期', required: true, model: 'birthday', type: 'date' },
       { label: '年龄', required: true, model: 'age' },
-      { label: '礼仪课教师', required: true, model: 'is_ly', type: 'radio' },
+      { label: '礼仪课教师', required: true, model: 'is_etiquette_teacher', type: 'radio' },
     ],
     rules: {
       name: [{ required: true, message: '请输入姓名' }],
-      dept: [{ required: true, message: '请选择部门' }],
+      department: [{ required: true, message: '请选择部门' }],
       gender: [{ required: true, message: '请选择性别' }],
-      tel: [
+      phone: [
         { required: true, message: '请输入电话' },
         { min: 11, max: 11, message: '请输入11位电话号码', trigger: 'blur' },
       ],
       birthday: [{ required: true, message: '请选择出生日期' }],
       age: [{ required: true, message: '请输入年龄' }],
-      is_ly: [{ required: true, message: '请选择是否是礼仪课教师' }],
+      is_lis_etiquette_teacher: [{ required: true, message: '请选择是否是礼仪课教师' }],
     },
   }),
   created() {},