瀏覽代碼

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

lrf402788946 4 年之前
父節點
當前提交
57070de964

+ 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>

+ 0 - 212
src/views/new-plan/arrange/director-arrange copy.vue

@@ -1,212 +0,0 @@
-<template>
-  <div id="director-arrange">
-    <detail-frame :title="pageTitle">
-      <el-row type="flex" align="middle" justify="end" style="padding-bottom:10px" v-if="!loading">
-        <el-col :span="2">
-          <el-button type="success" size="mini" @click="toSave">保存班主任计划</el-button>
-        </el-col>
-        <el-col :span="2">
-          <el-button type="primary" size="mini" @click="toArrange">一键分配</el-button>
-        </el-col>
-      </el-row>
-      <!-- <data-table v-loading="loading" :fields="fields" :data="classList" :opera="opera" @edit="toEdit" :toFormat="toFormat"></data-table> -->
-      <el-table :data="classList" border stripe v-loading="loading">
-        <el-table-column align="center" type="expand">
-          <template v-slot="{ row }">
-            <el-table :data="row.data" border stripe>
-              <el-table-column align="center" type="expand">
-                <template v-slot="{ row: batRow }">
-                  <el-table :data="batRow.data" border stripe>
-                    <el-table-column align="center" label="班级" prop="name"></el-table-column>
-                    <el-table-column align="center" label="班主任" prop="headteacherid" :formatter="toFormat"></el-table-column>
-                    <el-table-column align="center" label="操作">
-                      <template v-slot="{ row: claRow }">
-                        <el-button type="text" size="mini" icon="el-icon-edit" @click="toEdit(claRow)"></el-button>
-                      </template>
-                    </el-table-column>
-                  </el-table>
-                </template>
-              </el-table-column>
-              <el-table-column align="center" label="批" prop="batch"></el-table-column>
-            </el-table>
-          </template>
-        </el-table-column>
-        <el-table-column align="center" label="期" prop="term"></el-table-column>
-      </el-table>
-    </detail-frame>
-    <el-dialog title="选择班主任" :visible.sync="dialog" width="20%">
-      <data-form :data="form" :fields="fields" :rules="{}" @save="handleSave" :reset="false">
-        <template #options="{item,form}">
-          <template v-if="item.model == 'headteacherid'">
-            <el-option-group v-for="(dept, index) in htList" :label="dept.name" :key="index">
-              <el-option v-for="(i, tIndex) in dept.list" :key="`${index}-${tIndex}`" :label="i.name" :value="i._id"></el-option>
-            </el-option-group>
-          </template>
-        </template>
-      </data-form>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import _ from 'lodash';
-import detailFrame from '@frame/layout/admin/detail-frame';
-import dataTable from '@frame/components/data-table';
-import dataForm from '@frame/components/form';
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions } = createNamespacedHelpers('teaPlan');
-const { mapActions: classes } = createNamespacedHelpers('classes');
-const { mapActions: mapDept } = createNamespacedHelpers('dept');
-const { mapActions: director } = createNamespacedHelpers('director');
-export default {
-  name: 'director-arrange',
-  props: {
-    // events: { type: Array, default: () => [] },
-  },
-  components: { dataForm, detailFrame }, //dataTable
-  data: function() {
-    return {
-      loading: true,
-      dialog: false,
-      form: {},
-      classList: [],
-      htList: [],
-      dirList: [],
-      deptList: [],
-      fields: [
-        { label: '期', prop: 'term', model: 'term', type: 'text' },
-        { label: '批', prop: 'batch', model: 'batch', type: 'text' },
-        { label: '班级', prop: 'name', model: 'name', type: 'text' },
-        { label: '班主任', prop: 'headteacherid', model: 'headteacherid', type: 'select', format: true }, //
-      ],
-      opera: [
-        {
-          label: '选择班主任',
-          icon: 'el-icon-edit',
-          method: 'edit',
-        },
-      ],
-    };
-  },
-  async created() {
-    await this.getOtherList();
-    this.search();
-  },
-  methods: {
-    ...director({ getDirList: 'query' }),
-    ...mapDept({ getDept: 'query' }),
-    ...mapActions(['divide', 'findTeacher']),
-    ...classes(['query', 'upHeadTea']),
-    async search() {
-      let planid = _.get(this.defaultOption, 'planid');
-      if (!planid) return;
-      let res = await this.query({ planid });
-      if (this.$checkRes(res)) {
-        let arr = this.resetList(res.data);
-        this.$set(this, `classList`, arr);
-        this.loading = false;
-      }
-    },
-    async toArrange() {
-      let msg = this.$message({ message: '正在分配班主任,请稍后', duration: 0 });
-      this.loading = true;
-      let duplicate = this.returnList();
-      let planid = _.get(this.defaultOption, `planid`);
-      let res = await this.divide({ trainplanid: planid });
-      if (this.$checkRes(res)) {
-        let arr = duplicate.map(i => {
-          let r = res.data.find(f => f.classid == i._id);
-          if (r) i.headteacherid = r.headteacherid;
-          return i;
-        });
-        arr = this.resetList(arr);
-        this.$set(this, `classList`, arr);
-      }
-      this.loading = false;
-      msg.close();
-      this.$checkRes(res, '分配完成', res.errmsg);
-    },
-    async toEdit(data) {
-      let res = await this.findTeacher({ planid: data.planid, termid: data.termid, batchid: data.batchid });
-      if (this.$checkRes(res)) {
-        let group = _.groupBy(res.data, 'department');
-        let keys = Object.keys(group);
-        let arr = keys.map(key => {
-          let r = this.deptList.find(f => f.id == key);
-          let obj = {};
-          if (r) {
-            obj.name = r.name;
-            obj.list = group[key];
-          }
-          return obj;
-        });
-        this.$set(this, `htList`, arr);
-      }
-      this.dialog = true;
-      this.$set(this, `form`, data);
-    },
-    handleSave({ data }) {
-      // let { index, ...info } = data;
-      // this.$set(this.classList, index, info);
-      this.dialog = false;
-    },
-    async toSave() {
-      let data = JSON.parse(JSON.stringify(this.returnList()));
-      let res = await this.upHeadTea(data);
-      this.$checkRes(res, '保存成功', res.errmsg || '保存失败');
-    },
-    async getOtherList() {
-      let res = await this.getDept();
-      if (this.$checkRes(res)) this.$set(this, `deptList`, res.data);
-      res = await this.getDirList();
-      if (this.$checkRes(res)) this.$set(this, `dirList`, res.data);
-    },
-    toFormat(row, column, cellValue) {
-      let model = _.get(column, 'property');
-      if (model == 'headteacherid') {
-        let r = this.dirList.find(f => f._id == cellValue);
-        if (r) return r.name;
-      }
-    },
-    resetList(data, prop = 'term') {
-      let duplicate = _.groupBy(_.cloneDeep(data), prop);
-      let keys = Object.keys(duplicate);
-      let arr = keys.map(key => {
-        let obj = {};
-        obj[prop] = key;
-        if (prop == 'term') obj.data = this.resetList(duplicate[key], 'batch');
-        else obj.data = duplicate[key];
-        return obj;
-      });
-      return arr;
-    },
-    returnList() {
-      let duplicate = _.cloneDeep(this.classList);
-      let arr = _.flattenDeep(duplicate.map(i => i.data.map(i => i.data)));
-      return arr;
-    },
-  },
-  watch: {
-    defaultOption: {
-      handler(val) {
-        this.search();
-      },
-      deep: true,
-    },
-  },
-  computed: {
-    ...mapState(['user', 'defaultOption']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-    id() {
-      return this.$route.query.id;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped></style>

+ 6 - 1
src/views/new-plan/arrange/director-arrange.vue

@@ -35,6 +35,11 @@
     </detail-frame>
     <el-drawer :visible.sync="drawer" direction="rtl" title="修改班主任" @close="toClose">
       <el-form :model="form">
+        <el-form-item label="部门" label-width="120px">
+          <el-select v-model="form.deptid" placeholder="请选择部门">
+            <el-option v-for="item in rightHeader" :key="item.id" :label="item.name" :value="item.id"></el-option>
+          </el-select>
+        </el-form-item>
         <el-form-item label="班主任" label-width="120px">
           <el-select v-model="form.rightHeader" placeholder="请选择班主任">
             <el-option v-for="item in rightHeaderList" :key="item.id" :label="item.name" :value="item.id"></el-option>
@@ -248,6 +253,7 @@ export default {
         };
         this.$set(this, `reteacherData`, reteacherData);
       } else {
+        row.deptid = prop;
         this.$set(this, `form`, row);
         this.changeRightHeader(prop);
         this.drawer = true;
@@ -255,7 +261,6 @@ export default {
     },
     changeRightHeader(deptid) {
       var arr = this.dirList.filter(item => item.department === deptid);
-      console.log(arr);
       this.$set(this, `rightHeaderList`, arr);
     },
     // 保存

+ 8 - 1
src/views/new-plan/arrange/school-arrange.vue

@@ -27,7 +27,7 @@
       </el-card>
     </detail-frame>
 
-    <el-drawer :visible.sync="drawer" direction="rtl" title="名额分配" @close="toClose">
+    <el-drawer :before-close="handleClose" :visible.sync="drawer" direction="rtl" title="名额分配" @close="toClose">
       <el-row type="flex" align="top" justify="center" style="padding:20px" :gutter="20">
         <el-col :span="12">
           <el-card>
@@ -141,6 +141,13 @@ export default {
     ...school(['query']),
     ...schPlan({ schPlanQuery: 'query', createSchPlan: 'create', updateSchPlan: 'update', setSchPlan: 'schArrange' }),
     ...classtype({ getClassType: 'query' }),
+    handleClose(done) {
+      this.$confirm('确认关闭?')
+        .then(_ => {
+          done();
+        })
+        .catch(_ => {});
+    },
     //请求,处理学校列表
     async getSchool() {
       const res = await this.query();