reloaded 5 лет назад
Родитель
Сommit
b010af2edd
7 измененных файлов с 208 добавлено и 24 удалено
  1. 1 1
      src/store/department.js
  2. 45 0
      src/store/expert.js
  3. 6 0
      src/store/index.js
  4. 1 1
      src/store/level.js
  5. 45 0
      src/store/staff.js
  6. 45 0
      src/store/user.js
  7. 65 22
      src/views/pcenter/pinfo.vue

+ 1 - 1
src/store/department.js

@@ -26,7 +26,7 @@ const actions = {
     return res;
   },
   async update({ commit }, { id, ...info } = {}) {
-    const res = await this.$axios.$post(`${api.departmentInfo}/${id}`, {
+    const res = await this.$axios.$post(`${api.departmentInfo}/update/${id}`, {
       ...info,
     });
     return res;

+ 45 - 0
src/store/expert.js

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

+ 6 - 0
src/store/index.js

@@ -5,7 +5,10 @@ import * as umutations from './user/mutations';
 import registers from './registers';
 import department from './department';
 import level from './level';
+import staff from './staff';
+import expert from './expert';
 import login from './login';
+import user from './user';
 
 Vue.use(Vuex);
 
@@ -18,5 +21,8 @@ export default new Vuex.Store({
     login,
     department,
     level,
+    staff,
+    expert,
+    user,
   },
 });

+ 1 - 1
src/store/level.js

@@ -26,7 +26,7 @@ const actions = {
     return res;
   },
   async update({ commit }, { id, ...info } = {}) {
-    const res = await this.$axios.$post(`${api.levelInfo}/${id}`, {
+    const res = await this.$axios.$post(`${api.levelInfo}/update/${id}`, {
       ...info,
     });
     return res;

+ 45 - 0
src/store/staff.js

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

+ 45 - 0
src/store/user.js

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

+ 65 - 22
src/views/pcenter/pinfo.vue

@@ -12,74 +12,74 @@
               ><i class="el-icon-warning" style="margin-right:5px;"></i>如果您修改手机号,那么登录时使用的手机号也会发生变更,请谨慎修改!</span
             >
           </el-form-item>
-          <el-form-item label="身份证号:" prop="id_number">
+          <el-form-item v-if="this.user.type != '3'" label="身份证号:" prop="id_number">
             <el-input v-model="form.id_number" @input="inputIdnumber()"></el-input>
           </el-form-item>
-          <el-form-item label="出生年月" prop="birthday">
+          <el-form-item v-if="this.user.type != '3'" label="出生年月" prop="birthday">
             <el-date-picker disabled v-model="form.birthday" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="请选择选择日期">
             </el-date-picker>
           </el-form-item>
-          <el-form-item label="性别" prop="gender">
+          <el-form-item v-if="this.user.type != '3'" label="性别" prop="gender">
             <el-radio-group disabled v-model="form.gender">
               <el-radio label="男">男</el-radio>
               <el-radio label="女">女</el-radio>
             </el-radio-group>
           </el-form-item>
-          <el-form-item label="家庭住址:">
+          <el-form-item v-if="this.user.type != '3'" label="家庭住址:">
             <el-input v-model="form.address"></el-input>
           </el-form-item>
-          <el-form-item label="部门:">
+          <el-form-item v-if="this.user.type === '0' || this.user.type === '1'" label="部门:">
             <el-select v-model="form.dept_id" filterable placeholder="请选择部门">
               <el-option v-for="(item, index) in deptList" :key="index" :label="item.name" :value="item._id"></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="职务:">
+          <el-form-item v-if="this.user.type === '0' || this.user.type === '1'" label="职务:">
             <el-select v-model="form.level_id" filterable placeholder="请选择职务">
               <el-option v-for="(item, index) in levelList" :key="index" :label="item.name" :value="item._id"></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="邮箱" prop="email">
+          <el-form-item v-if="this.user.type === '2'" label="邮箱" prop="email">
             <el-input v-model="form.email"></el-input>
           </el-form-item>
-          <el-form-item label="头像" prop="img_url">
+          <el-form-item v-if="this.user.type === '2'" label="头像" prop="img_url">
             <upload :limit="1" :data="form.img_url" type="img_url" :url="'/files/count/upload'" @upload="uploadSuccess"></upload>
           </el-form-item>
-          <el-form-item label="职称级别">
+          <el-form-item v-if="this.user.type === '2'" label="职称级别">
             <el-input v-model="form.level"></el-input>
           </el-form-item>
-          <el-form-item label="职称名称">
+          <el-form-item v-if="this.user.type === '2'" label="职称名称">
             <el-input v-model="form.levelname"></el-input>
           </el-form-item>
-          <el-form-item label="院校">
+          <el-form-item v-if="this.user.type === '2'" label="院校">
             <el-input v-model="form.school"></el-input>
           </el-form-item>
-          <el-form-item label="学历">
+          <el-form-item v-if="this.user.type === '2'" label="学历">
             <el-select v-model="form.education" placeholder="请选择学历">
               <el-option v-for="(item, index) in educationList" :key="index" :label="item.name" :value="item.name"> </el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="学位">
+          <el-form-item v-if="this.user.type === '2'" label="学位">
             <el-select v-model="form.degree" placeholder="请选择学位">
               <el-option v-for="(item, index) in degreeList" :key="index" :label="item.name" :value="item.name"> </el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="专业">
+          <el-form-item v-if="this.user.type === '2'" label="专业">
             <el-input v-model="form.major"></el-input>
           </el-form-item>
-          <el-form-item label="从事专业">
+          <el-form-item v-if="this.user.type === '2'" label="从事专业">
             <el-input v-model="form.profession"></el-input>
           </el-form-item>
-          <el-form-item label="工作简历">
+          <el-form-item v-if="this.user.type === '2'" label="工作简历">
             <el-input v-model="form.resume" type="textarea"></el-input>
           </el-form-item>
-          <el-form-item label="项目">
+          <el-form-item v-if="this.user.type === '2'" label="项目">
             <el-input v-model="form.project" type="textarea"></el-input>
           </el-form-item>
-          <el-form-item label="学术成就">
+          <el-form-item v-if="this.user.type === '2'" label="学术成就">
             <el-input v-model="form.academic" type="textarea"></el-input>
           </el-form-item>
           <el-form-item>
-            <el-button type="primary" @click="onSubmit">提交</el-button>
+            <el-button type="primary" @click="onSubmit()">提交</el-button>
           </el-form-item>
         </el-form>
       </el-col>
@@ -89,6 +89,10 @@
 
 <script>
 import upload from '@/components/uploadone.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: staff } = createNamespacedHelpers('staff');
+const { mapActions: expert } = createNamespacedHelpers('expert');
+const { mapActions: user } = createNamespacedHelpers('user');
 export default {
   name: 'pinfo',
   props: {},
@@ -117,9 +121,27 @@ export default {
       email: [{ required: false }, { pattern: /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/, message: '请输入有效的邮箱' }],
     },
   }),
-  created() {},
-  computed: {},
+  created() {
+    this.search();
+  },
+  computed: {
+    ...mapState(['user']),
+  },
   methods: {
+    ...user(['update']),
+    ...staff({ staffQuery: 'query', staffUpdate: 'update', staffFetch: 'fetch' }),
+    ...expert({ expertQuery: 'query', expertUpdate: 'update', expertFetch: 'fetch' }),
+    async search() {
+      if (this.user.type === '3') {
+        this.$set(this, `form`, this.user);
+      } else if (this.user.type === '2') {
+        const expert = this.expertFetch(this.user.userid);
+        this.$set(this, `form`, expert.data);
+      } else if (this.user.type === '1' || this.user.type === '0') {
+        const staff = this.staffFetch(this.user.userid);
+        this.$set(this, `form`, staff.data);
+      }
+    },
     inputIdnumber() {
       let card = this.form.id_number;
       if (card.length == 18) {
@@ -136,7 +158,28 @@ export default {
         this.form.gender = gender;
       }
     },
-    onSubmit() {},
+    async onSubmit(from) {
+      let res = {};
+      let data = JSON.parse(JSON.stringify(this.form));
+      if (this.user.type === '3') {
+        data.id = this.user.uid;
+        res = await this.update(data);
+      } else if (this.user.type === '2') {
+        data.id = this.user.userid;
+        res = await this.expertUpdate(data);
+      } else if (this.user.type === '1' || this.user.type === '0') {
+        data.id = this.user.userid;
+        res = await this.staffUpdate(data);
+      }
+      if (res.errcode === 0) {
+        this.$message({
+          message: '信息修改成功',
+          type: 'success',
+        });
+      } else {
+        this.$message.error('信息修改失败');
+      }
+    },
     uploadSuccess({ type, data }) {
       this.$set(this.form, `${type}`, data.uri);
     },