Browse Source

班主任计划场地设置

zs 9 months ago
parent
commit
98e31faf57

+ 8 - 2
src/views/new-plan/arrange/arrange/new-table.vue

@@ -326,7 +326,10 @@ export default {
       if (r1) {
       if (r1) {
         style = { cursor: 'not-allowed' };
         style = { cursor: 'not-allowed' };
         style['pointer-events'] = 'none';
         style['pointer-events'] = 'none';
-        if (date !== '') style['background'] = 'red';
+        if (date !== '') {
+          style['background'] = 'red';
+          style.color = '#fff';
+        }
       }
       }
 
 
       const v2s = _.get(this.batchList, `${month}.${batch}`);
       const v2s = _.get(this.batchList, `${month}.${batch}`);
@@ -336,7 +339,10 @@ export default {
           const place = _.get(v2, 'place');
           const place = _.get(v2, 'place');
           if (place) {
           if (place) {
             const p = this.placeList.find(f => f._id === place);
             const p = this.placeList.find(f => f._id === place);
-            if (p) style.background = _.get(p, 'color', '#ffffff');
+            if (p) {
+              style.background = _.get(p, 'color', '#ffffff');
+              style.color = '#fff';
+            }
           }
           }
         }
         }
       }
       }

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

@@ -12,7 +12,11 @@
       <el-row>
       <el-row>
         <el-table :data="list" border :span-method="objectSpanMethod" @row-click="rowBtn">
         <el-table :data="list" border :span-method="objectSpanMethod" @row-click="rowBtn">
           <el-table-column label="期数" prop="term" align="center"> </el-table-column>
           <el-table-column label="期数" prop="term" align="center"> </el-table-column>
-          <el-table-column label="场地设置" prop="address" align="center"> </el-table-column>
+          <el-table-column label="场地设置" prop="place" align="center">
+            <template v-slot="{ row }">
+              {{ getPlace(row) }}
+            </template>
+          </el-table-column>
           <el-table-column label="班级名称" prop="name" align="center"> </el-table-column>
           <el-table-column label="班级名称" prop="name" align="center"> </el-table-column>
           <el-table-column label="时间" prop="date" align="center">
           <el-table-column label="时间" prop="date" align="center">
             <template slot-scope="scope"> {{ ptc(scope.row.startdate) }}-{{ ptc(scope.row.enddate) }} </template>
             <template slot-scope="scope"> {{ ptc(scope.row.startdate) }}-{{ ptc(scope.row.enddate) }} </template>
@@ -52,6 +56,19 @@
         <el-button type="primary" @click="onSubmit">保 存</el-button>
         <el-button type="primary" @click="onSubmit">保 存</el-button>
       </el-col>
       </el-col>
     </el-drawer>
     </el-drawer>
+    <el-drawer :visible.sync="place" direction="rtl" title="选择培训场地" @close="toClose">
+      <el-form :model="form">
+        <el-form-item label="培训场地" prop="place" label-width="120px">
+          <el-select v-model="form.place" placeholder="请选择培训场地">
+            <el-option v-for="i in placeList" :key="i._id" :label="i.name" :value="i._id"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <el-col :span="24" style="text-align:center">
+        <el-button @click="toClose">取 消</el-button>
+        <el-button type="primary" @click="onSubmit">保 存</el-button>
+      </el-col>
+    </el-drawer>
   </div>
   </div>
 </template>
 </template>
 
 
@@ -66,6 +83,7 @@ const { mapActions: trainplan } = createNamespacedHelpers('trainplan');
 const { mapActions: classes } = createNamespacedHelpers('classes');
 const { mapActions: classes } = createNamespacedHelpers('classes');
 const { mapActions: mapDept } = createNamespacedHelpers('dept');
 const { mapActions: mapDept } = createNamespacedHelpers('dept');
 const { mapActions: director } = createNamespacedHelpers('director');
 const { mapActions: director } = createNamespacedHelpers('director');
+const { mapActions: location } = createNamespacedHelpers('location');
 var moment = require('moment');
 var moment = require('moment');
 export default {
 export default {
   name: 'director-arrange',
   name: 'director-arrange',
@@ -91,6 +109,8 @@ export default {
       rightHeaderList: [],
       rightHeaderList: [],
       // 督导值班
       // 督导值班
       reteacherData: {},
       reteacherData: {},
+      place: false,
+      placeList: [],
     };
     };
   },
   },
   async created() {
   async created() {
@@ -102,6 +122,7 @@ export default {
     ...mapDept({ getDept: 'query', getDeptFetch: 'fetch' }),
     ...mapDept({ getDept: 'query', getDeptFetch: 'fetch' }),
     ...mapActions(['divide', 'findTeacher', 'fetch']),
     ...mapActions(['divide', 'findTeacher', 'fetch']),
     ...classes(['query', 'upHeadTea']),
     ...classes(['query', 'upHeadTea']),
+    ...location({ getLocation: 'query' }),
     ...trainplan({ trainplanFetch: 'fetch', trainplanUpdate: 'update', updateclass: 'updateclass', updatereteacher: 'updatereteacher' }),
     ...trainplan({ trainplanFetch: 'fetch', trainplanUpdate: 'update', updateclass: 'updateclass', updatereteacher: 'updatereteacher' }),
     // 查询部门加班主任
     // 查询部门加班主任
     async getOtherList() {
     async getOtherList() {
@@ -109,6 +130,8 @@ export default {
       if (this.$checkRes(res)) this.$set(this, `rightHeader`, res.data);
       if (this.$checkRes(res)) this.$set(this, `rightHeader`, res.data);
       res = await this.getDirList();
       res = await this.getDirList();
       if (this.$checkRes(res)) this.$set(this, `dirList`, res.data);
       if (this.$checkRes(res)) this.$set(this, `dirList`, res.data);
+      res = await this.getLocation({ type: '4' });
+      if (this.$checkRes(res)) this.$set(this, `placeList`, res.data);
     },
     },
     async search() {
     async search() {
       let planid = _.get(this.defaultOption, 'planid');
       let planid = _.get(this.defaultOption, 'planid');
@@ -150,6 +173,13 @@ export default {
       let data = dir.find(i => i.department == id);
       let data = dir.find(i => i.department == id);
       if (data) return data.name;
       if (data) return data.name;
     },
     },
+    // 转化场地名称
+    getPlace(row) {
+      if (row.place) {
+        let data = this.placeList.find(i => i._id == row.place);
+        if (data) return data.name;
+      }
+    },
     // 计算班级数
     // 计算班级数
     classNum(month) {
     classNum(month) {
       month = moment(month).month() + 1;
       month = moment(month).month() + 1;
@@ -259,6 +289,9 @@ export default {
           termid: row.termid,
           termid: row.termid,
         };
         };
         this.$set(this, `reteacherData`, reteacherData);
         this.$set(this, `reteacherData`, reteacherData);
+      } else if (prop === 'place') {
+        this.$set(this, `form`, row);
+        this.place = true;
       } else {
       } else {
         row.deptid = prop;
         row.deptid = prop;
         this.$set(this, `form`, row);
         this.$set(this, `form`, row);
@@ -278,12 +311,14 @@ export default {
       if (res.errcode === 0) {
       if (res.errcode === 0) {
         this.form = {};
         this.form = {};
         this.drawer = false;
         this.drawer = false;
+        this.place = false;
         this.search();
         this.search();
       }
       }
     },
     },
     //关闭抽屉函数
     //关闭抽屉函数
     toClose() {
     toClose() {
       this.form = {};
       this.form = {};
+      this.place = false;
       this.drawer = false;
       this.drawer = false;
     },
     },
   },
   },

+ 40 - 27
src/views/new-plan/arrange/parts/event.vue

@@ -1,34 +1,46 @@
 <template>
 <template>
-  <div id="event" v-loading="loading" element-loading-text="加载中,请稍后..." element-loading-spinner="el-icon-loading"
-    element-loading-background="rgba(0, 0, 0, 0.8)">
-    <el-form :model="form" ref="form" :rules="formRules" label-width="80px" size="small" @submit.native.prevent
-      style="padding: 15px;">
+  <div
+    id="event"
+    v-loading="loading"
+    element-loading-text="加载中,请稍后..."
+    element-loading-spinner="el-icon-loading"
+    element-loading-background="rgba(0, 0, 0, 0.8)"
+  >
+    <el-form :model="form" ref="form" :rules="formRules" label-width="80px" size="small" @submit.native.prevent style="padding: 15px;">
       <el-form-item label="开始时间" prop="startdate">
       <el-form-item label="开始时间" prop="startdate">
-        <el-date-picker :readonly="!isNew" v-model="form.startdate" type="date" format="yyyy-MM-dd"
-          value-format="yyyy-MM-dd" :disabled="true"> </el-date-picker>
+        <el-date-picker :readonly="!isNew" v-model="form.startdate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" :disabled="true"> </el-date-picker>
       </el-form-item>
       </el-form-item>
       <el-form-item label="结束时间" prop="enddate">
       <el-form-item label="结束时间" prop="enddate">
-        <el-date-picker :readonly="!isNew" v-model="form.enddate" type="date" format="yyyy-MM-dd"
-          value-format="yyyy-MM-dd" :picker-options="pickerOptions" :default-value="getEndTimeDefault()">
+        <el-date-picker
+          :readonly="!isNew"
+          v-model="form.enddate"
+          type="date"
+          format="yyyy-MM-dd"
+          value-format="yyyy-MM-dd"
+          :picker-options="pickerOptions"
+          :default-value="getEndTimeDefault()"
+        >
         </el-date-picker>
         </el-date-picker>
       </el-form-item>
       </el-form-item>
-      <el-form-item label="期数" prop="term" required> <el-input v-model="form.term" :readonly="!isNew"></el-input>
+      <el-form-item label="期数" prop="term">
+        <el-input v-model="form.term" :readonly="!isNew" placeholder="请输入期数"></el-input>
       </el-form-item>
       </el-form-item>
       <!-- <el-form-item label="班级类型(需要请求)" prop="type" required>
       <!-- <el-form-item label="班级类型(需要请求)" prop="type" required>
         <el-select v-model="form.type">
         <el-select v-model="form.type">
           <el-option v-for="(i, index) in classTypeList" :key="index" :label="i.name" :value="i.code"></el-option>
           <el-option v-for="(i, index) in classTypeList" :key="index" :label="i.name" :value="i.code"></el-option>
         </el-select>
         </el-select>
       </el-form-item> -->
       </el-form-item> -->
-      <el-form-item label="批次" prop="batch" required> <el-input v-model="form.batch"
-          :readonly="!isNew"></el-input></el-form-item>
-      <el-form-item label="培训场地" prop="place" required>
-        <el-select v-model="form.place" placeholder="请选择本批次的培训场地">
+      <el-form-item label="批次" prop="batch">
+        <el-input v-model="form.batch" :readonly="!isNew" placeholder="请输入批次"></el-input>
+      </el-form-item>
+      <el-form-item label="培训场地" prop="place">
+        <el-select v-model="form.place" clearable placeholder="请选择本批次的培训场地">
           <el-option v-for="i in placeList" :key="i._id" :label="i.name" :value="i._id"></el-option>
           <el-option v-for="i in placeList" :key="i._id" :label="i.name" :value="i._id"></el-option>
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
       <el-form-item label="班级">
       <el-form-item label="班级">
         <el-row>
         <el-row>
-          <el-col :span="24">
+          <el-col :span="24" style="margin: 0 0 10px 0;">
             <el-button type="primary" icon="el-icon-plus" @click="addClass()">添加班级</el-button>
             <el-button type="primary" icon="el-icon-plus" @click="addClass()">添加班级</el-button>
           </el-col>
           </el-col>
           <el-alert :closable="false" title="班级名称在同一期不可重复;(不论特殊班级,还是正常班级)" type="warning" show-icon center></el-alert>
           <el-alert :closable="false" title="班级名称在同一期不可重复;(不论特殊班级,还是正常班级)" type="warning" show-icon center></el-alert>
@@ -46,8 +58,7 @@
             <el-table-column align="center" label="类型">
             <el-table-column align="center" label="类型">
               <template v-slot="{ row }">
               <template v-slot="{ row }">
                 <el-select v-model="row.type">
                 <el-select v-model="row.type">
-                  <el-option v-for="(i, index) in classTypeList" :key="index" :label="i.name"
-                    :value="i.code"></el-option>
+                  <el-option v-for="(i, index) in classTypeList" :key="index" :label="i.name" :value="i.code"></el-option>
                 </el-select>
                 </el-select>
               </template>
               </template>
             </el-table-column>
             </el-table-column>
@@ -88,14 +99,14 @@ const moment = require('moment');
 export default {
 export default {
   name: 'event',
   name: 'event',
   props: {
   props: {
-    data: { type: Object, default: () => { } }, //数据
+    data: { type: Object, default: () => {} }, //数据
     isNew: { type: Boolean, default: true }, //是不是修改
     isNew: { type: Boolean, default: true }, //是不是修改
     predefineColors: { type: Array, default: () => [] }, //颜色列表
     predefineColors: { type: Array, default: () => [] }, //颜色列表
     year: { type: null, default: new Date().getFullYear() },
     year: { type: null, default: new Date().getFullYear() },
     vacation: { type: Array, default: () => [] },
     vacation: { type: Array, default: () => [] },
     classTypeList: { type: Array, default: () => [] },
     classTypeList: { type: Array, default: () => [] },
     loading: { type: Boolean, default: false },
     loading: { type: Boolean, default: false },
-    placeList: { type: Array, default: () => [] },// 培训场地
+    placeList: { type: Array, default: () => [] }, // 培训场地
   },
   },
   components: {},
   components: {},
   data() {
   data() {
@@ -114,7 +125,7 @@ export default {
       },
       },
     };
     };
   },
   },
-  created() { },
+  created() {},
   methods: {
   methods: {
     //保存表单函数
     //保存表单函数
     saveForm() {
     saveForm() {
@@ -149,19 +160,21 @@ export default {
     // 设置结束时间默认时间
     // 设置结束时间默认时间
     getEndTimeDefault() {
     getEndTimeDefault() {
       let result = new Date();
       let result = new Date();
-      const startTime = _.get(this.form, 'startdate')
-      if (!startTime) result = moment().toDate()
-      result = moment(startTime).add(1, 'd').toDate()
-      return result
+      const startTime = _.get(this.form, 'startdate');
+      if (!startTime) result = moment().toDate();
+      result = moment(startTime)
+        .add(1, 'd')
+        .toDate();
+      return result;
     },
     },
     //禁用时间
     //禁用时间
     setDisabledDate(time) {
     setDisabledDate(time) {
       let thisTime = time.getTime();
       let thisTime = time.getTime();
-      let startTime = _.get(this.form, 'startdate')
+      let startTime = _.get(this.form, 'startdate');
       if (startTime) {
       if (startTime) {
         // 开始时间之前的全都不能选
         // 开始时间之前的全都不能选
-        let sb = moment(thisTime).isSameOrBefore(startTime)
-        if(sb) return true;
+        let sb = moment(thisTime).isSameOrBefore(startTime);
+        if (sb) return true;
       }
       }
       // 限制在今年范围内
       // 限制在今年范围内
       let start = new Date(`${this.year}-01-01`).getTime();
       let start = new Date(`${this.year}-01-01`).getTime();
@@ -170,7 +183,7 @@ export default {
       else if (thisTime > end) return true;
       else if (thisTime > end) return true;
       else {
       else {
         // 假期不能选
         // 假期不能选
-        const res = this.vacation.find(f => moment(thisTime).isBetween(f.start, f.end, null, '[]'))
+        const res = this.vacation.find(f => moment(thisTime).isBetween(f.start, f.end, null, '[]'));
         return res;
         return res;
       }
       }
     },
     },

+ 55 - 22
src/views/new-plan/arrange/plan-arrange.vue

@@ -24,16 +24,36 @@
         </el-tooltip>
         </el-tooltip>
       </el-col>
       </el-col>
     </el-row>
     </el-row>
-
-
-    <table-cal v-if="dataReady" :year="info.year" :events="events" :vacation="vacation" :remark="remark"
-      :placeList="placeList" @cellClick="eventClick"></table-cal>
-    <div style="height:800px" v-else v-loading="!dataReady" element-loading-text="加载中,请稍后..."
-      element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.8)"></div>
+    <table-cal
+      v-if="dataReady"
+      :year="info.year"
+      :events="events"
+      :vacation="vacation"
+      :remark="remark"
+      :placeList="placeList"
+      @cellClick="eventClick"
+    ></table-cal>
+    <div
+      style="height:800px"
+      v-else
+      v-loading="!dataReady"
+      element-loading-text="加载中,请稍后..."
+      element-loading-spinner="el-icon-loading"
+      element-loading-background="rgba(0, 0, 0, 0.8)"
+    ></div>
     <el-drawer :visible.sync="drawer" direction="rtl" title="安排计划" @close="toClose">
     <el-drawer :visible.sync="drawer" direction="rtl" title="安排计划" @close="toClose">
-      <event :data="form" :year="info.year" :vacation="vacation" :isNew="formIsNew" :predefineColors="template.color"
-        :classTypeList="classTypeList" :loading.sync="eventLoading" :placeList="placeList" @save="setEvent"
-        @delete="toDelete"></event>
+      <event
+        :data="form"
+        :year="info.year"
+        :vacation="vacation"
+        :isNew="formIsNew"
+        :predefineColors="template.color"
+        :classTypeList="classTypeList"
+        :loading.sync="eventLoading"
+        :placeList="placeList"
+        @save="setEvent"
+        @delete="toDelete"
+      ></event>
     </el-drawer>
     </el-drawer>
     <el-dialog :visible.sync="dialog" title="模板计划" width="40%" :close-on-click-modal="false">
     <el-dialog :visible.sync="dialog" title="模板计划" width="40%" :close-on-click-modal="false">
       <el-form>
       <el-form>
@@ -48,8 +68,9 @@
                   <span>;每批需要 {{ template.day }} 天</span>
                   <span>;每批需要 {{ template.day }} 天</span>
                 </el-col>
                 </el-col>
                 <el-col :span="24" v-for="(b, index) in template.batchnum" :key="index">
                 <el-col :span="24" v-for="(b, index) in template.batchnum" :key="index">
-                  第{{ b.batch }}批:<el-col style="padding-left:20px" :span="24" v-for="(c, cindex) in b.classnum"
-                    :key="cindex">{{ c.class }}班:{{ c.number }}人</el-col>
+                  第{{ b.batch }}批:<el-col style="padding-left:20px" :span="24" v-for="(c, cindex) in b.classnum" :key="cindex">
+                    {{ c.class }}班:{{ c.number }}人
+                  </el-col>
                 </el-col>
                 </el-col>
               </el-row>
               </el-row>
             </el-form-item>
             </el-form-item>
@@ -66,13 +87,25 @@
               </el-select>
               </el-select>
             </el-form-item>
             </el-form-item>
             <el-form-item label="请选择开始日期">
             <el-form-item label="请选择开始日期">
-              <el-date-picker :picker-options="pickerOptions" v-model="input.start" type="date" placeholder="请选择开始日期"
-                format="yyyy-MM-dd" value-format="yyyy-MM-dd">
+              <el-date-picker
+                :picker-options="pickerOptions"
+                v-model="input.start"
+                type="date"
+                placeholder="请选择开始日期"
+                format="yyyy-MM-dd"
+                value-format="yyyy-MM-dd"
+              >
               </el-date-picker>
               </el-date-picker>
             </el-form-item>
             </el-form-item>
             <el-form-item label="请选择结束日期">
             <el-form-item label="请选择结束日期">
-              <el-date-picker :picker-options="pickerOptions" v-model="input.end" type="date" placeholder="请选择结束日期"
-                format="yyyy-MM-dd" value-format="yyyy-MM-dd">
+              <el-date-picker
+                :picker-options="pickerOptions"
+                v-model="input.end"
+                type="date"
+                placeholder="请选择结束日期"
+                format="yyyy-MM-dd"
+                value-format="yyyy-MM-dd"
+              >
               </el-date-picker>
               </el-date-picker>
             </el-form-item>
             </el-form-item>
           </el-col>
           </el-col>
@@ -111,7 +144,7 @@ export default {
     event,
     event,
     tableCal,
     tableCal,
   },
   },
-  data: function () {
+  data: function() {
     var that = this;
     var that = this;
     return {
     return {
       colors: ['#E60000', '#FF7300', '#996B1F', '#FFD700', '#AFA4E0', '#74868A', '#09A343', '#E9F1F4'],
       colors: ['#E60000', '#FF7300', '#996B1F', '#FFD700', '#AFA4E0', '#74868A', '#09A343', '#E9F1F4'],
@@ -501,15 +534,15 @@ export default {
     async getOtherList() {
     async getOtherList() {
       let res = await this.getClassType();
       let res = await this.getClassType();
       if (this.$checkRes(res)) this.$set(this, `classTypeList`, res.data);
       if (this.$checkRes(res)) this.$set(this, `classTypeList`, res.data);
-      res = await this.getLocation({ type: '4' })
+      res = await this.getLocation({ type: '4' });
       if (this.$checkRes(res)) {
       if (this.$checkRes(res)) {
         // 为每个地点随机生成颜色
         // 为每个地点随机生成颜色
         let list = res.data;
         let list = res.data;
         if (res.data && res.data.length > 0) {
         if (res.data && res.data.length > 0) {
           list = list.map(i => {
           list = list.map(i => {
-            const color = '#' + (parseInt(Math.random() * 0xffffff)).toString(16)
-            return { ...i, color }
-          })
+            const color = '#' + parseInt(Math.random() * 0xffffff).toString(16);
+            return { ...i, color };
+          });
           this.$set(this, `placeList`, list);
           this.$set(this, `placeList`, list);
         }
         }
       }
       }
@@ -518,8 +551,8 @@ export default {
       this.$router.go(-1);
       this.$router.go(-1);
     },
     },
     toTemplateView() {
     toTemplateView() {
-      this.$emit('changeView', 'template')
-    }
+      this.$emit('changeView', 'template');
+    },
   },
   },
   filters: {
   filters: {
     getBatchNum: template => _.get(template.batchnum, 'length', 0),
     getBatchNum: template => _.get(template.batchnum, 'length', 0),

+ 0 - 2
src/views/new-plan/arrange/school-arrange.vue

@@ -107,8 +107,6 @@ export default {
         headers: { 'Content-Type': 'multipart/form-data' },
         headers: { 'Content-Type': 'multipart/form-data' },
       };
       };
       forms.append('file', file);
       forms.append('file', file);
-      forms.append('token', '231231');
-
       axios.post('http://localhost:8088/api/v1/test/test', forms, configs).then(res => {
       axios.post('http://localhost:8088/api/v1/test/test', forms, configs).then(res => {
         console.log(res);
         console.log(res);
       });
       });