guhongwei 4 سال پیش
والد
کامیت
00c5c44a46
5فایلهای تغییر یافته به همراه437 افزوده شده و 22 حذف شده
  1. 6 0
      src/router/index.js
  2. 193 0
      src/views/director/detail copy.vue
  3. 4 12
      src/views/director/detail.vue
  4. 25 10
      src/views/director/index.vue
  5. 209 0
      src/views/director/shareInfo.vue

+ 6 - 0
src/router/index.js

@@ -36,6 +36,12 @@ const system = [
     meta: { title: '班主任', sub: '详情' },
     component: () => import('@/views/director/detail.vue'),
   },
+  {
+    path: '/director/shareInfo',
+    name: 'director_shareInfo',
+    meta: { title: '班主任', sub: '审核' },
+    component: () => import('@/views/director/shareInfo.vue'),
+  },
   {
     path: '/teacher/detail',
     name: 'teacher_detail',

+ 193 - 0
src/views/director/detail copy.vue

@@ -0,0 +1,193 @@
+<template>
+  <div id="detail">
+    <detail-frame :title="mainTitle" returns="/director/index">
+      <data-form :data="info" :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew">
+        <template #options="{item}">
+          <template v-if="item.model === 'department'">
+            <el-option v-for="(item, index) in deptList" :key="index" :label="item.name" :value="item.id"></el-option>
+          </template>
+          <template v-if="item.model === 'nation'">
+            <el-option v-for="(item, index) in nationList" :key="index" :label="item.name" :value="item.name"></el-option>
+          </template>
+          <template v-if="item.model === 'politics'">
+            <el-option v-for="(item, index) in politicsList" :key="index" :label="item.name" :value="item.name"></el-option>
+          </template>
+          <template v-if="item.model === 'education'">
+            <el-option v-for="(item, index) in educationList" :key="index" :label="item.name" :value="item.name"></el-option>
+          </template>
+          <template v-if="item.model === 'degree'">
+            <el-option v-for="(item, index) in degreeList" :key="index" :label="item.name" :value="item.name"></el-option>
+          </template>
+        </template>
+        <template #radios="{item}">
+          <template v-if="item.model === 'gender'">
+            <el-radio label="男" value="男"></el-radio>
+            <el-radio label="女" value="女"></el-radio>
+          </template>
+          <template v-else>
+            <el-radio label="1">是</el-radio>
+            <el-radio label="0">否</el-radio>
+          </template>
+        </template>
+      </data-form>
+    </detail-frame>
+  </div>
+</template>
+
+<script>
+import detailFrame from '@frame/layout/admin/detail-frame';
+import dataForm from '@frame/components/form';
+import { createNamespacedHelpers } from 'vuex';
+const { mapActions } = createNamespacedHelpers('director');
+const { mapActions: mapDept } = createNamespacedHelpers('dept');
+const { mapActions: nation } = createNamespacedHelpers('nation');
+
+export default {
+  metaInfo: { title: '班主任信息' },
+  name: 'detail',
+  props: {},
+  components: {
+    detailFrame,
+    dataForm,
+  },
+  data: () => ({
+    info: {},
+    fields: [
+      { label: '姓名', required: true, model: 'name', tip: '请输入姓名' },
+      { label: '性别', required: true, model: 'gender', type: `radio` },
+      { label: '民族', required: true, model: 'nation', type: 'select' },
+      { label: '手机', required: true, model: 'phone', options: { maxlength: 11, minlength: 11 }, tip: '请输入11位电话号码' },
+      { label: '固定电话', required: true, model: 'mobile', tip: '请输入固定电话' },
+      { label: '身份证号', required: true, model: 'idnumber', tip: '请输入身份证号' },
+      { label: '政治面貌', required: true, model: 'politics', type: 'select' },
+      { label: '工作单位', required: true, model: 'jobaddress', tip: '请输入工作单位' },
+      { label: '所属部门', required: true, model: 'department', type: 'select' },
+      { label: '职务', required: true, model: 'job', tip: '请输入职务' },
+      { label: '职称', required: true, model: 'protitle', tip: '请输入职称' },
+      { label: '最后学历', required: true, model: 'education', type: 'select' },
+      { label: '最后学位', required: true, model: 'degree', type: 'select' },
+      { label: 'QQ', required: true, model: 'qq', tip: '请输入qq' },
+      { label: '礼仪课教师', required: true, model: 'islyteacher', type: 'radio' },
+    ],
+    rules: {
+      // name: [{ required: true, message: '请输入姓名' }],
+      // department: [{ required: true, message: '请选择部门' }],
+      // gender: [{ required: true, message: '请选择性别' }],
+      // phone: [
+      //   { required: true, message: '请输入电话' },
+      //   { min: 11, max: 11, message: '请输入11位电话号码', trigger: 'blur' },
+      // ],
+      // birthday: [{ required: true, message: '请选择出生日期' }],
+      // age: [{ required: true, message: '请输入年龄' }],
+      // islyteacher: [{ required: true, message: '请选择是否是礼仪课教师' }],
+    },
+    // 部门
+    deptList: [],
+    // 民族
+    nationList: [],
+    // 政治面貌
+    politicsList: [
+      { code: '01', name: '中国共产党党员' },
+      { code: '02', name: '中国共产党预备党员' },
+      { code: '03', name: '中国共产主义青年团团员' },
+      { code: '04', name: '中国国民党革命委员会会员' },
+      { code: '05', name: '中国民主同盟盟员' },
+      { code: '06', name: '中国民主建国会会员' },
+      { code: '07', name: '中国民主促进会会员' },
+      { code: '08', name: '中国农工民主党党员' },
+      { code: '09', name: '中国致公党党员' },
+      { code: '10', name: '九三学社社员' },
+      { code: '11', name: '台湾民主自治同盟盟员' },
+      { code: '12', name: '无党派民主人士' },
+      { code: '13', name: '群众' },
+      { code: '14', name: '其他' },
+    ],
+    // 最后学历
+    educationList: [
+      { code: '01', name: '博士生毕业' },
+      { code: '03', name: '博士生结业' },
+      { code: '09', name: '博士生肆业' },
+      { code: '11', name: '硕士生毕业' },
+      { code: '13', name: '硕士生结业' },
+      { code: '19', name: '硕士生肆业' },
+      { code: '21', name: '研班毕业' },
+      { code: '25', name: '双学位毕业' },
+      { code: '31', name: '本科生毕业' },
+      { code: '33', name: '本科生结业' },
+      { code: '39', name: '本科生肆业' },
+      { code: '41', name: '专科生毕业' },
+      { code: '43', name: '专科生结业' },
+      { code: '49', name: '专科生肆业' },
+      { code: '51', name: '中专生毕业' },
+      { code: '53', name: '中专生结业' },
+      { code: '59', name: '中专生肆业' },
+      { code: '61', name: '高职毕业' },
+      { code: '63', name: '高职结业' },
+    ],
+    // 最后学位
+    degreeList: [{ name: '博士学位' }, { name: '硕士学位' }, { name: '学士学位' }],
+  }),
+  created() {
+    this.otherList();
+  },
+  methods: {
+    ...mapActions(['fetch', 'create', 'update']),
+    ...mapDept({ dept: 'query' }),
+    ...nation({ nationQuery: 'query' }),
+    async search() {
+      const res = await this.fetch(this.id);
+      if (this.$checkRes(res)) this.$set(this, `info`, res.data);
+      this.loading = false;
+    },
+    async otherList() {
+      const res = await this.dept();
+      if (this.$checkRes(res)) this.$set(this, `deptList`, res.data);
+      const arr = await this.nationQuery();
+      if (this.$checkRes(arr)) this.$set(this, `nationList`, arr.data);
+    },
+    async handleSave({ isNew, data }) {
+      let res;
+      let msg;
+      if (isNew) {
+        data.openid = new Date().getTime();
+        res = await this.create(data);
+        msg = `${this.keyWord}添加成功`;
+      } else {
+        res = await this.update(data);
+        msg = `${this.keyWord}修改成功`;
+      }
+      if (this.$checkRes(res, msg)) this.$router.push({ path: '/director/index' });
+    },
+  },
+  computed: {
+    id() {
+      return this.$route.query.id;
+    },
+    isNew() {
+      return this.$route.query.id ? false : true;
+    },
+    mainTitle() {
+      let meta = this.$route.meta;
+      let main = meta.title || '';
+      let sub = meta.sub || '';
+      return `${main}${sub}`;
+    },
+    keyWord() {
+      let meta = this.$route.meta;
+      let main = meta.title || '';
+      return main;
+    },
+  },
+  watch: {
+    isNew: {
+      immediate: true,
+      handler(val) {
+        if (val) this.loading = false;
+        else this.search();
+      },
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 4 - 12
src/views/director/detail.vue

@@ -12,10 +12,6 @@
             <el-radio label="男" value="男"></el-radio>
             <el-radio label="女" value="女"></el-radio>
           </template>
-          <template v-else>
-            <el-radio label="1">是</el-radio>
-            <el-radio label="0">否</el-radio>
-          </template>
         </template>
       </data-form>
     </detail-frame>
@@ -28,6 +24,7 @@ import dataForm from '@frame/components/form';
 import { createNamespacedHelpers } from 'vuex';
 const { mapActions } = createNamespacedHelpers('director');
 const { mapActions: mapDept } = createNamespacedHelpers('dept');
+
 export default {
   metaInfo: { title: '班主任信息' },
   name: 'detail',
@@ -40,12 +37,9 @@ export default {
     info: {},
     fields: [
       { label: '姓名', required: true, model: 'name', tip: '请输入姓名' },
-      { label: '所属部门', required: true, model: 'department', type: 'select' },
       { label: '性别', required: true, model: 'gender', type: `radio` },
-      { label: '电话', required: true, model: 'phone', options: { maxlength: 11, minlength: 11 }, tip: '请输入11位电话号码' },
-      { label: '出生日期', required: true, model: 'birthday', type: 'date' },
-      { label: '年龄', required: true, model: 'age' },
-      { label: '礼仪课教师', required: true, model: 'islyteacher', type: 'radio' },
+      { label: '手机', required: true, model: 'phone', options: { maxlength: 11, minlength: 11 }, tip: '请输入11位电话号码' },
+      { label: '所属部门', required: true, model: 'department', type: 'select' },
     ],
     rules: {
       name: [{ required: true, message: '请输入姓名' }],
@@ -55,10 +49,8 @@ export default {
         { required: true, message: '请输入电话' },
         { min: 11, max: 11, message: '请输入11位电话号码', trigger: 'blur' },
       ],
-      birthday: [{ required: true, message: '请选择出生日期' }],
-      age: [{ required: true, message: '请输入年龄' }],
-      islyteacher: [{ required: true, message: '请选择是否是礼仪课教师' }],
     },
+    // 部门
     deptList: [],
   }),
   created() {

+ 25 - 10
src/views/director/index.vue

@@ -6,7 +6,7 @@
           <el-option v-for="(i, index) in deptList" :key="index" :label="i.name" :value="i._id"></el-option>
         </template>
       </template>
-      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @delete="toDelete" :toFormat="toFormat"></data-table>
+      <data-table :fields="fields" :data="list" :opera="opera" @share="toShare" @delete="toDelete" :toFormat="toFormat"></data-table>
     </list-frame>
   </div>
 </template>
@@ -28,9 +28,9 @@ export default {
   data: () => ({
     opera: [
       {
-        label: '编辑',
-        icon: 'el-icon-edit',
-        method: 'edit',
+        label: '身份确认',
+        icon: 'el-icon-check',
+        method: 'share',
       },
       {
         label: '删除',
@@ -46,11 +46,26 @@ export default {
     ],
     fields: [
       { label: '姓名', prop: 'name' },
-      { label: '所在部门', prop: 'department', format: 'emit' },
       { label: '性别', prop: 'gender' },
-      { label: '电话', prop: 'phone' },
-      { label: '年龄', prop: 'age' },
-      { label: '出生日期', prop: 'birthday' },
+      { label: '民族', prop: 'nation' },
+      { label: '手机', prop: 'phone' },
+      { label: '固定电话', prop: 'mobile' },
+      { label: '身份证号', prop: 'idnumber' },
+      { label: '政治面貌', prop: 'politics' },
+      { label: '工作单位', prop: 'jobaddress' },
+      { label: '所在部门', prop: 'department', format: 'emit' },
+      { label: '职务', prop: 'job' },
+      { label: '职称', prop: 'protitle' },
+      { label: '最后学历', prop: 'education' },
+      { label: '最后学位', prop: 'degree' },
+      { label: 'QQ', prop: 'QQ' },
+      {
+        label: '状态',
+        prop: 'status',
+        format: item => {
+          return item === '0' ? '待审核' : item === '1' ? '审核成功' : item === '2' ? '审核拒绝' : '未识别';
+        },
+      },
       {
         label: '礼仪课教师',
         prop: 'islyteacher',
@@ -94,8 +109,8 @@ export default {
       const res = await this.dept();
       if (this.$checkRes(res)) this.$set(this, `deptList`, res.data);
     },
-    toEdit({ data }) {
-      this.$router.push({ path: '/director/detail', query: { id: data.id } });
+    toShare({ data }) {
+      this.$router.push({ path: '/director/shareInfo', query: { id: data.id } });
     },
     async toDelete({ data }) {
       const res = await this.delete(data.id);

+ 209 - 0
src/views/director/shareInfo.vue

@@ -0,0 +1,209 @@
+<template>
+  <div id="detail">
+    <detail-frame :title="mainTitle" returns="/director/index">
+      <data-form :data="info" :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew">
+        <template #options="{item}">
+          <template v-if="item.model === 'department'">
+            <el-option v-for="(item, index) in deptList" :key="index" :label="item.name" :value="item.id"></el-option>
+          </template>
+          <template v-if="item.model === 'nation'">
+            <el-option v-for="(item, index) in nationList" :key="index" :label="item.name" :value="item.name"></el-option>
+          </template>
+          <template v-if="item.model === 'politics'">
+            <el-option v-for="(item, index) in politicsList" :key="index" :label="item.name" :value="item.name"></el-option>
+          </template>
+          <template v-if="item.model === 'education'">
+            <el-option v-for="(item, index) in educationList" :key="index" :label="item.name" :value="item.name"></el-option>
+          </template>
+          <template v-if="item.model === 'degree'">
+            <el-option v-for="(item, index) in degreeList" :key="index" :label="item.name" :value="item.name"></el-option>
+          </template>
+        </template>
+        <template #custom="{item, form}">
+          <template v-if="item.model == 'eduexperience'">
+            <el-table :data="form.eduexperience" style="width: 100%" border>
+              <el-table-column prop="date" label="时间" align="center"> </el-table-column>
+              <el-table-column prop="content" label="学校名称&培训内容" align="center" :show-overflow-tooltip="true"> </el-table-column>
+              <el-table-column prop="card" label="学历&培训证书" align="center" :show-overflow-tooltip="true"> </el-table-column>
+            </el-table>
+          </template>
+        </template>
+        <template #radios="{item}">
+          <template v-if="item.model === 'gender'">
+            <el-radio label="男" value="男"></el-radio>
+            <el-radio label="女" value="女"></el-radio>
+          </template>
+          <template v-else-if="item.model === 'status'">
+            <el-radio label="待审核" value="0"></el-radio>
+            <el-radio label="审核通过" value="1"></el-radio>
+            <el-radio label="审核拒绝" value="2"></el-radio>
+          </template>
+          <template v-else>
+            <el-radio label="1">是</el-radio>
+            <el-radio label="0">否</el-radio>
+          </template>
+        </template>
+      </data-form>
+    </detail-frame>
+  </div>
+</template>
+
+<script>
+import detailFrame from '@frame/layout/admin/detail-frame';
+import dataForm from '@frame/components/form';
+import { createNamespacedHelpers } from 'vuex';
+const { mapActions } = createNamespacedHelpers('director');
+const { mapActions: mapDept } = createNamespacedHelpers('dept');
+const { mapActions: nation } = createNamespacedHelpers('nation');
+
+export default {
+  metaInfo: { title: '班主任信息' },
+  name: 'detail',
+  props: {},
+  components: {
+    detailFrame,
+    dataForm,
+  },
+  data: () => ({
+    info: {},
+    fields: [
+      { label: '姓名', required: true, model: 'name', tip: '请输入姓名' },
+      { label: '性别', required: true, model: 'gender', type: `radio` },
+      { label: '民族', required: true, model: 'nation', type: 'select' },
+      { label: '手机', required: true, model: 'phone', options: { maxlength: 11, minlength: 11 }, tip: '请输入11位电话号码' },
+      { label: '固定电话', required: true, model: 'mobile', tip: '请输入固定电话' },
+      { label: '身份证号', required: true, model: 'idnumber', tip: '请输入身份证号' },
+      { label: '政治面貌', required: true, model: 'politics', type: 'select' },
+      { label: '工作单位', required: true, model: 'jobaddress', tip: '请输入工作单位' },
+      { label: '所属部门', required: true, model: 'department', type: 'select' },
+      { label: '职务', required: true, model: 'job', tip: '请输入职务' },
+      { label: '职称', required: true, model: 'protitle', tip: '请输入职称' },
+      { label: '最后学历', required: true, model: 'education', type: 'select' },
+      { label: '最后学位', required: true, model: 'degree', type: 'select' },
+      { label: 'QQ', required: true, model: 'qq', tip: '请输入qq' },
+      { label: '礼仪课教师', required: true, model: 'islyteacher', type: 'radio' },
+      { label: '教育培训经历', model: 'eduexperience', custom: true },
+      { label: '状态', required: true, model: 'status', type: 'radio' },
+    ],
+    rules: {
+      // name: [{ required: true, message: '请输入姓名' }],
+      // department: [{ required: true, message: '请选择部门' }],
+      // gender: [{ required: true, message: '请选择性别' }],
+      // phone: [
+      //   { required: true, message: '请输入电话' },
+      //   { min: 11, max: 11, message: '请输入11位电话号码', trigger: 'blur' },
+      // ],
+      // birthday: [{ required: true, message: '请选择出生日期' }],
+      // age: [{ required: true, message: '请输入年龄' }],
+      // islyteacher: [{ required: true, message: '请选择是否是礼仪课教师' }],
+    },
+    // 部门
+    deptList: [],
+    // 民族
+    nationList: [],
+    // 政治面貌
+    politicsList: [
+      { code: '01', name: '中国共产党党员' },
+      { code: '02', name: '中国共产党预备党员' },
+      { code: '03', name: '中国共产主义青年团团员' },
+      { code: '04', name: '中国国民党革命委员会会员' },
+      { code: '05', name: '中国民主同盟盟员' },
+      { code: '06', name: '中国民主建国会会员' },
+      { code: '07', name: '中国民主促进会会员' },
+      { code: '08', name: '中国农工民主党党员' },
+      { code: '09', name: '中国致公党党员' },
+      { code: '10', name: '九三学社社员' },
+      { code: '11', name: '台湾民主自治同盟盟员' },
+      { code: '12', name: '无党派民主人士' },
+      { code: '13', name: '群众' },
+      { code: '14', name: '其他' },
+    ],
+    // 最后学历
+    educationList: [
+      { code: '01', name: '博士生毕业' },
+      { code: '03', name: '博士生结业' },
+      { code: '09', name: '博士生肆业' },
+      { code: '11', name: '硕士生毕业' },
+      { code: '13', name: '硕士生结业' },
+      { code: '19', name: '硕士生肆业' },
+      { code: '21', name: '研班毕业' },
+      { code: '25', name: '双学位毕业' },
+      { code: '31', name: '本科生毕业' },
+      { code: '33', name: '本科生结业' },
+      { code: '39', name: '本科生肆业' },
+      { code: '41', name: '专科生毕业' },
+      { code: '43', name: '专科生结业' },
+      { code: '49', name: '专科生肆业' },
+      { code: '51', name: '中专生毕业' },
+      { code: '53', name: '中专生结业' },
+      { code: '59', name: '中专生肆业' },
+      { code: '61', name: '高职毕业' },
+      { code: '63', name: '高职结业' },
+    ],
+    // 最后学位
+    degreeList: [{ name: '博士学位' }, { name: '硕士学位' }, { name: '学士学位' }],
+  }),
+  created() {
+    this.otherList();
+  },
+  methods: {
+    ...mapActions(['fetch', 'create', 'update']),
+    ...mapDept({ dept: 'query' }),
+    ...nation({ nationQuery: 'query' }),
+    async search() {
+      const res = await this.fetch(this.id);
+      if (this.$checkRes(res)) this.$set(this, `info`, res.data);
+      this.loading = false;
+    },
+    async otherList() {
+      const res = await this.dept();
+      if (this.$checkRes(res)) this.$set(this, `deptList`, res.data);
+      const arr = await this.nationQuery();
+      if (this.$checkRes(arr)) this.$set(this, `nationList`, arr.data);
+    },
+    async handleSave({ isNew, data }) {
+      let res;
+      let msg;
+      if (isNew) {
+        data.openid = new Date().getTime();
+        res = await this.create(data);
+        msg = `${this.keyWord}添加成功`;
+      } else {
+        res = await this.update(data);
+        msg = `${this.keyWord}修改成功`;
+      }
+      if (this.$checkRes(res, msg)) this.$router.push({ path: '/director/index' });
+    },
+  },
+  computed: {
+    id() {
+      return this.$route.query.id;
+    },
+    isNew() {
+      return this.$route.query.id ? false : true;
+    },
+    mainTitle() {
+      let meta = this.$route.meta;
+      let main = meta.title || '';
+      let sub = meta.sub || '';
+      return `${main}${sub}`;
+    },
+    keyWord() {
+      let meta = this.$route.meta;
+      let main = meta.title || '';
+      return main;
+    },
+  },
+  watch: {
+    isNew: {
+      immediate: true,
+      handler(val) {
+        if (val) this.loading = false;
+        else this.search();
+      },
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>