Browse Source

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

guhongwei 4 years ago
parent
commit
f63e9a7c90

+ 1 - 1
src/views/train-plan/parts/lesson-table.vue

@@ -45,7 +45,7 @@
       </el-form-item>
     </el-form>
     <el-dialog title="选择教师" :visible.sync="dialog" :destroy-on-close="true" :append-to-body="true">
-      <teacher-select :schoolList="schoolList" :subjectList="subjectList" :subjectid="form.subid" @selTea="selTea"> </teacher-select>
+      <teacher-select :schoolList="schoolList" :subjectList="subjectList" :subjectid="form.subid" :date="form.date" @selTea="selTea"> </teacher-select>
     </el-dialog>
   </div>
 </template>

+ 13 - 3
src/views/train-plan/parts/teacher.vue

@@ -29,6 +29,8 @@ export default {
     schoolList: { type: Array, default: () => [] },
     subjectList: { type: Array, default: () => [] },
     subjectid: { type: String, default: () => '' },
+    date: { type: String },
+    termid: { type: String },
   },
   components: { filterTable },
   data: function() {
@@ -36,7 +38,7 @@ export default {
       teaTab: 'apply',
       teaFields: [
         { label: '姓名', prop: 'name', filter: 'input' },
-        { label: '学校', prop: 'schname' },
+        { label: '工作地点', prop: 'jobaddress' },
         { label: '资料评分', prop: 'zlscore' },
         { label: '面试评分', prop: 'msscore' },
       ],
@@ -63,7 +65,15 @@ export default {
       this.$set(this, `teacherList`, res.data);
     },
     async toGetApplyList({ skip = 0, limit = 10, ...info } = {}) {
-      let res = await this.getApplyTeacherList({ skip, limit, ...info, subid: this.subjectid, status: '4' });
+      let res = await this.getApplyTeacherList({
+        skip,
+        limit,
+        ...info,
+        subid: this.subjectid,
+        status: '4',
+        date: this.date,
+        termid: this.defaultOption.termid,
+      });
       this.$set(this, `applyTotal`, res.total);
       this.$set(this, `applyList`, res.data);
     },
@@ -83,7 +93,7 @@ export default {
     },
   },
   computed: {
-    ...mapState(['user']),
+    ...mapState(['user', 'defaultOption']),
     pageTitle() {
       return `${this.$route.meta.title}`;
     },

+ 88 - 38
src/views/train-plan/remind-detail.vue

@@ -1,16 +1,24 @@
 <template>
-  <div id="remind-detail">
-    <detail-frame :title="pageTitle" returns="/train/plan/remind">
-      <el-tabs v-model="activeName" type="card">
-        <el-tab-pane label="学生" name="first">
-          <data-table :fields="fields" :data="stuList" :opera="opera" :usePage="false"></data-table>
-        </el-tab-pane>
-        <el-tab-pane label="非学生" name="second">
-          <data-table :fields="fields" :data="nostuList" :opera="opera" :usePage="false"></data-table>
-        </el-tab-pane>
-      </el-tabs>
-      <!-- @msg="toSendMsg" @view="toView" -->
+  <div id="remind">
+    <detail-frame :title="pageTitle" v-if="view === 'list'" returns="/train/plan/remind">
+      <el-row type="flex" align="middle" justify="end" class="btn_bar">
+        <el-col :span="2">
+          <el-button type="primary" size="mini" @click="toSendMsg()">发送通知</el-button>
+        </el-col>
+      </el-row>
+      <data-table :fields="fields" :data="list" :opera="opera" @view="toView" :total="total" @query="search"></data-table>
     </detail-frame>
+    <detail-frame title="通知确认" v-if="view === 'result'" :returns="toReturns">
+      <el-row type="flex" align="middle" justify="end" class="btn_bar">
+        <el-col :span="3">
+          <el-button type="primary" size="mini" @click="toResend()">再次通知未确认人员</el-button>
+        </el-col>
+      </el-row>
+      <data-table :fields="resFields" :data="result.notified" :opera="[]" :usePage="false"></data-table>
+    </detail-frame>
+    <el-dialog title="通知内容" :visible.sync="dialogSend">
+      <send-form :form="form" @resetForm="resetForm" @submitForm="submitForm"></send-form>
+    </el-dialog>
   </div>
 </template>
 
@@ -18,62 +26,104 @@
 import _ from 'lodash';
 import dataTable from '@frame/components/filter-page-table';
 import detailFrame from '@frame/layout/admin/detail-frame';
+import sendForm from './parts/send-form.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: notice } = createNamespacedHelpers('notice');
 export default {
-  name: 'remind-detail',
+  name: 'remind',
   props: {},
-  components: { detailFrame, dataTable },
+  components: { detailFrame, dataTable, sendForm },
   data: function() {
     return {
-      // 学生
-      stuList: [],
-      // 非学生
-      nostuList: [],
+      view: 'list',
+      loading: false,
+      options: undefined,
+      list: [],
+      total: 0,
       opera: [
-        {
-          label: '发送确认通知',
-          icon: 'el-icon-message-solid',
-          method: 'msg',
-        },
         {
           label: '查看通知情况',
           icon: 'el-icon-view',
           method: 'view',
         },
       ],
-      fields: [
-        { label: '名称', prop: 'name' },
-        { label: '电话', prop: 'phone' },
-        { label: '邮箱', prop: 'email' },
+      fields: [{ label: '内容', prop: 'content' }],
+      dialogSend: false,
+      form: {
+        type: '0',
+      },
+      result: {},
+      resFields: [
+        { label: '通知人员', prop: 'username' },
+        { label: '状态', prop: 'status', format: i => (i == '0' ? '未确认' : '已确认') },
       ],
-      activeName: 'first',
     };
   },
   created() {
     this.search();
   },
   methods: {
-    ...notice({ getNoticeList: 'query', getClassInfo: 'classList' }),
-    async search() {
-      let t = await this.getNoticeList();
-      let res = await this.getClassInfo(this.id);
+    ...notice({ noticeCreate: 'create', getNotice: 'query', resend: 'resend' }),
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      let classid = this.classid;
+      if (!classid) return;
+      const res = await this.getNotice({ skip, limit, ...info, classid });
       if (this.$checkRes(res)) {
-        let studList = _.get(res.data, `students`, []);
-        let teaList = _.get(res.data, `teachers`, []);
-        this.$set(this, `stuList`, _.uniqBy(studList, '_id'));
-        this.$set(this, `nostuList`, _.uniqBy(teaList, '_id'));
-        // let arr = [...studList, ...teaList];
-        // this.$set(this, `list`, _.uniqBy(arr, '_id'));
+        this.$set(this, `list`, res.data);
+        this.$set(this, `total`, res.total);
       }
     },
+    // 通知打开
+    toSendMsg({ data } = {}) {
+      if (data) this.$set(this, `classid`, data.id);
+      this.dialogSend = true;
+    },
+    // 取消提交
+    resetForm() {
+      this.form = {};
+      this.dialogSend = false;
+    },
+    // 通知确定
+    async submitForm({ data }) {
+      let classid = this.classid;
+      if (classid) {
+        data.classid = classid;
+      }
+      data.noticeid = this.user.userid;
+      let { planyearid, planid, termid } = this.defaultOption;
+      data = { ...data, planyearid, planid, termid };
+      const arr = await this.noticeCreate(data);
+      if (this.$checkRes(arr)) {
+        this.$message({
+          message: '通知成功',
+          type: 'success',
+        });
+        this.search();
+        this.resetForm();
+      }
+    },
+    toView({ data }) {
+      this.$set(this, `result`, data);
+      this.view = 'result';
+    },
+    toReturns() {
+      this.view = 'list';
+    },
+    async toResend() {
+      const { _id } = this.result;
+      console.log(this.result);
+      const res = await this.resend({ id: _id });
+      if (res.errcode == '0') this.$message.success('再次通知成功');
+      else this.$message.error(res.errmsg || '通知失败');
+    },
   },
+  watch: {},
   computed: {
     ...mapState(['user', 'defaultOption']),
     pageTitle() {
       return `${this.$route.meta.title}`;
     },
-    id() {
+    classid() {
       return this.$route.query.id;
     },
   },

+ 1 - 1
src/views/train-plan/term-lesson.vue

@@ -401,7 +401,7 @@ export default {
     async getHeadTeacher(data) {
       let batchid;
       let { type } = data;
-      let { planid, termid } = this.options;
+      let { planid, termid } = this.defaultOption;
       let keys = Object.keys(data).filter(f => f.includes('classid'));
       if (keys.length <= 0) return;
       let cla = this.classList.find(f => f._id == data[keys[0]]);

+ 5 - 5
src/views/work/look.vue

@@ -54,9 +54,9 @@
           </template>
           <!-- <el-input v-model="info.answer"></el-input> -->
         </el-form-item>
-        <el-form-item label="分数" prop="score">
+        <!-- <el-form-item label="分数" prop="score">
           <el-input v-model="info.score"></el-input>
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item>
           <el-row type="flex" justify="center">
             <el-col :span="6">
@@ -124,7 +124,7 @@ export default {
           return item === '0' ? '单选' : item === '1' ? '多选' : '简答';
         },
       },
-      { label: '分数', prop: 'score' },
+      // { label: '分数', prop: 'score' },
     ],
     filFields: [
       { label: '题名', model: 'name' },
@@ -135,7 +135,7 @@ export default {
         list: [
           { label: '单选', value: 0 },
           { label: '多选', value: 1 },
-          // { label: '问答', value: 2 },
+          { label: '简答', value: 2 },
         ],
       },
       {
@@ -166,7 +166,7 @@ export default {
     radios: [
       { code: '0', name: '单选' },
       { code: '1', name: '多选' },
-      // { code: '2', name: '简答' },
+      { code: '2', name: '简答' },
     ],
     total: 0,
   }),