Преглед на файлове

fix 面试日历,邀约日历

he2802 преди 4 години
родител
ревизия
8f6e9dfaa6

Файловите разлики са ограничени, защото са твърде много
+ 16156 - 1
package-lock.json


+ 4 - 2
src/api/api.js

@@ -20,6 +20,7 @@ import appuser from './appuser'//客户端用户管理
 
 import recruitmentTemplate from './recruitmentTemplate'//招聘模板管理
 import recruitmentManagem from './recruitmentManagem'//招聘需求管理
+import recruitmentCalendar from './recruitmentCalendar'
 import companyMsg from './companyMsg'//公司管理列表
 import advertising from './advertising'//广告发布储存管理
 import operationLog from './operationLog'//操作日志记录
@@ -72,5 +73,6 @@ export default {
     ...taskManagement,
     ...recruitmentTemplate,
     ...recruitmentManagem,
-    ...companyMsg
-}
+    ...companyMsg,
+    ...recruitmentCalendar
+}

+ 11 - 0
src/api/recruitmentCalendar.js

@@ -0,0 +1,11 @@
+import request from '@/utils/request' //引入axios请求及拦截器
+export default {
+    //查询招聘面试日历列表
+    recruitinterviewlist(data) {
+        return request({
+            url: '/recruit/interview/list',
+            method: 'get',
+            params: data
+        })
+    }
+}

+ 5 - 5
src/components/tableList.vue

@@ -79,6 +79,7 @@
       @select="select"
       :row-key="rowKey"
       :load="load"
+      :cell-style="timeStyle"
       lazy
       ref="pagerset"
       v-loading="loading"
@@ -452,13 +453,12 @@ export default {
     this.initTR();
   },
   mounted(){
-    var lis = document.getElementsByClassName("el-table__expand-icon")
-    console.log(lis)
-  for(let i = 0; i < lis.length; i++){
-    lis[i].parentNode.style.cssText = 'text-align:left!important;'
-  }
   },
   methods: {
+    timeStyle(column) {
+      if(column.columnIndex === 0) {
+        return "text-align:left!important;  padding-left: 40px;"
+      }},
     //初始化
     initTR() {
       this.cities = [];

+ 3 - 1
src/view/courseQuestionBank/professionalManagement/index.vue

@@ -215,6 +215,7 @@ export default {
           categoryName: "主类型",
         });
         this.optionsCascader = this.arrayChangeType(setObj);
+        console.log(this.optionsCascader ,66)
       });
     },
     // 表单列添加下级
@@ -413,11 +414,12 @@ export default {
             item.hasChildren = true;
           });
           self.tableData = res.rows;
+          console.log(self.tableData,33)
           self.tableData.sort(self.sortBy("sort", true));
           self.navText.index = res.total;
           self.total = res.total;
           self.loading = false;
-          self.getCascader();
+  //        self.getCascader();
         })
         .catch((err) => {
           this.loading = false;

+ 205 - 14
src/view/jobSearchManagement/interviewCalendar/index.vue

@@ -1,30 +1,221 @@
 <template>
   <!-- 面试日历 -->
-  <div id="interviewCalendar">
-    <full-calendar :events="fcEvents" locale="en"></full-calendar>
+  <div id="interviewCalendar" class="box">
+   <div  class="interviewCalendar">
+     <el-calendar v-model="dayValue">
+     </el-calendar>
+   </div>
+    <div style="min-width: 1050px">
+      <div style="display: flex;justify-content: center;font-weight: bold;padding: 25px;font-size: 18px;letter-spacing: 5px">
+        <div><i class="el-icon-arrow-left" style="cursor: pointer"  @click="changeWeek(-1)"></i>{{weekDay1.getFullYear()}}年{{weekDay1.getMonth()+1}}月{{weekDay1.getDate()}}日-{{weekDay2.getMonth()+1}}月{{weekDay2.getDate()}}日
+          <i class="el-icon-arrow-right" style="cursor: pointer" @click="changeWeek(1)"></i></div>
+      </div>
+      <div class="week_box" >
+        <div v-if="weekDayList.length>0" v-for="(item, index) in weekDay" :key="index" :class="dayValue.getDate()==weekDayList[index].num?'selColor card_date':'card_date'">
+          <div>{{ item }}</div>
+          <div  :class="dayValue.getDate()==weekDayList[index].num?'selCircle':'selNone'">{{ weekDayList[index].num }}</div>
+        </div>
+      </div>
+      <div class="week_box week_container" id="weekContainer">
+        <div v-if="dayInterviewVos.length>0" v-for="(item, index) in dayInterviewVos" :key="index" class="day_row">
+          <div  v-for="(item_c, index_c) in item.quantumList" :key="index_c" :class="index==0?'day_col day_row0':'day_col'">
+            <div v-if="index==0" class="timeLine">
+              {{timeline[index_c]}}
+            </div>
+            <div  v-for="(item_cc, index_cc) in item_c.recruitInterviewList" :key="index_cc" class="day_col_item">
+              <div> {{item_cc.realName}} - {{item_cc.job}}</div>
+            </div>
+          </div>
+        </div>
+      </div>
+
+
+    </div>
+
   </div>
 </template>
 
 <script>
 export default {
-  components: { 
-    'full-calendar': require('vue-fullcalendar')
-   },
   data() {
     return {
-      fcEvents: [
-        {
-          title: "Sunny Out of Office",
-          start: "2021-08-11",
-          end: "2021-08-13",
-        },
-      ],
-      
+      dayValue: new Date(),
+      loading: false, //当前表单加载是否加载动画
+      weekDay:['周一','周二','周三','周四','周五','周六','周日'],
+      weekDayList:[],
+      date_num: [],
+      currIndex:0,
+      dayInterviewVos:[],
+      timeline:['凌晨0点','凌晨1点','凌晨2点','凌晨3点','凌晨4点','凌晨5点','上午6点','上午7点','上午8点','上午9点','上午10点','上午11点','中午12点','下午1点',
+        '下午2点','下午3点','下午4点','下午5点','下午6点','晚上7点','晚上8点','晚上9点','晚上10点','晚上11点'],
+      weekDay1:new Date(),
+      weekDay2:new Date(),
     };
   },
-  methods: {},
+  mounted() {
+    this.search();
+  },
+  methods: {
+    changeWeek(index){
+      if(index==-1){
+        this.dayValue.setTime(this.dayValue.getTime()-7*24*60*60*1000)
+      }
+      if(index==1){
+        this.dayValue.setTime(this.dayValue.getTime()+7*24*60*60*1000)
+      }
+      let d = new Date()
+      d.setTime(this.dayValue.getTime())
+      this.dayValue = d
+      this.search()
+
+    },
+    search() {
+      let that = this
+      this.loading = true;
+      var data = {
+        year: this.dayValue.getFullYear(),
+        month: this.dayValue.getMonth()+1,
+        day: this.dayValue.getDate()
+      };
+      this.$api.recruitinterviewlist(data).then((res) => {
+        if(res.code==200){
+          that.dayInterviewVos = res.data.dayInterviewVos
+          that.weekDayList = []
+          for(let i = 0; i < that.dayInterviewVos.length; i++) {
+            if(res.data.dayInterviewVos[i].date==that.dayValue.getDate()){
+              that.currIndex = i
+            }
+            let weekDay = {
+              num:that.dayInterviewVos[i].date
+            }
+            that.weekDayList.push(weekDay)
+          }
+          for(let i = 0; i < that.weekDayList.length; i++) {
+            var d=new Date();
+            d.setTime(that.dayValue.getTime()+(i-that.currIndex)*24*60*60*1000)
+            that.weekDayList[i].day = d
+            if(i==0){
+              that.weekDay1 = d
+            }
+            if(i==6){
+              that.weekDay2 = d
+            }
+          }
+          that.$nextTick(function(){
+            console.log(document.getElementById('weekContainer'),333)
+            document.getElementById('weekContainer').scrollTop = 479
+          });
+
+        }
+      });
+      this.loading = false;
+    },
+  },
+  watch:{
+    dayValue(val, oldVal){//普通的watch监听
+      console.log("a: "+val, oldVal);
+      console.log("a: "+this.dayValue.getDate());
+      this.search()
+    }
+  }
 };
 </script>
+<style >
 
+.interviewCalendar .el-calendar-table .el-calendar-day{
+  height: auto;
+}
+.interviewCalendar .el-calendar-table tr:first-child td{
+  border-top: none;
+}
+.interviewCalendar .el-calendar-table td{
+  border-bottom: none;
+  border-right: none;
+}
+.interviewCalendar .el-calendar-table tr td:first-child{
+  border-left: none;
+}
+.interviewCalendar .el-button--mini, .el-button--mini.is-round{
+  padding: 7px;
+}
+</style>
 <style lang="less" scoped>
+.day_col_item{
+  color: #666666;
+  font-size: 14px;
+}
+.timeLine{
+  position: absolute;
+  left: -55px;
+  top: 20px;
+  color: #666666;
+  font-size: 12px;
+}
+.day_row0{
+  border-left: 1px solid #EBEEF5;
+}
+
+
+.day_col:first-child{
+  border-top: 1px solid #EBEEF5;
+}
+.day_col{
+  width: 100%;
+  height: 60px;
+  border-bottom: 1px solid #EBEEF5;
+  border-right: 1px solid #EBEEF5;
+  position: relative;
+}
+.day_row{
+  width: 14%;
+  text-align: center;
+}
+.selNone {
+  margin-top: 20px
+}
+.selCircle {
+  border-radius: 50%;
+  width: 50px;
+  height: 50px;
+  color: #ffffff !important;
+  background-color: #3494F7;
+  text-align: center;
+  line-height: 50px;
+  margin: 0 auto;
+}
+.selColor{
+  color: #3494F7 !important;
+}
+.week_container{
+  height: 600px;
+  overflow-y: auto;
+  margin-bottom: 50px;
+}
+.week_container::-webkit-scrollbar {
+  display: none; /* Chrome Safari */
+}
+.week_box{
+  min-width: 1050px;
+  display: flex;
+  justify-content:center;
+  margin-top: 20px;
+  padding-left: 50px;
+
+}
+.card_date {
+  width: 14%;
+  text-align: center;
+  color: #000;
+
+}
+.box{
+  display: flex;
+  width: 100%;
+  min-width: 1350px;
+
+}
+.interviewCalendar{
+  width: 300px;
+  height: 350px;
+}
 </style>

+ 171 - 0
src/view/jobSearchManagement/resumeCenter/index.vue

@@ -89,6 +89,56 @@
         >
       </span>
     </el-dialog>
+    <el-dialog
+      :visible.sync="calendarDialogVisible"
+      width="30%"
+      center>
+     <div>
+        <div class="d_title">
+          <div>当前共有 {{peopleNum}}  人需要面试</div>
+          <div class="d_title_r">查看全部</div>
+        </div>
+       <div class="week_box">
+         <i class="el-icon-arrow-left" style="cursor: pointer;margin-top: 5px"  @click="changeWeek(-1)"></i>
+         <div  v-for="(item, index) in weekDay" :key="index" class="card_date">
+           <div>{{ item }}</div>
+           <div v-if="weekDayList.length>0" :class="dayValue.getDate()==weekDayList[index].num?'selCircle':'selNone'" @click="selDay(weekDayList[index],index)">{{ weekDayList[index].num }}</div>
+         </div>
+         <i class="el-icon-arrow-right" style="cursor: pointer;margin-top: 5px" @click="changeWeek(1)"></i>
+       </div>
+       <div v-for="(item, index) in recruitList" style="display: flex;padding: 20px">
+         <div>{{item.timeStr}}</div>
+         <div style="display: flex;margin-left: 30px">
+           <div v-for="(item_c, index_c) in item.list">
+             {{item_c.job}}-{{item_c.realName}}<span v-if="index_c<item.list.length-1">,</span>
+           </div>
+         </div>
+       </div>
+       <div>
+         <el-form ref="form" :model="form" label-width="80px">
+           <el-form-item label="公司">
+             <el-input v-model="form.company_name"></el-input>
+           </el-form-item>
+           <el-form-item label="时间">
+             <el-date-picker type="datetime" placeholder="选择时间" v-model="form.date" value-format="timestamp"></el-date-picker>
+           </el-form-item>
+           <el-form-item label="地点">
+             <el-input v-model="form.company_name"></el-input>
+           </el-form-item>
+           <el-form-item label="电话">
+             <el-input v-model="form.company_name"></el-input>
+           </el-form-item>
+           <el-form-item label="联系人">
+             <el-input v-model="form.company_name"></el-input>
+           </el-form-item>
+         </el-form>
+       </div>
+     </div>
+      <span slot="footer" class="dialog-footer">
+    <el-button @click="calendarDialogVisible = false">取 消</el-button>
+    <el-button type="primary" @click="calendarDialogVisible = false">发送邀请</el-button>
+  </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -100,6 +150,19 @@ export default {
   components: { searchBox, tableList, pagination },
   data() {
     return {
+      dayValue: new Date(),
+      calendarDialogVisible: false,
+      weekDay:['一','二','三','四','五','六','日'],
+      weekDayList:[],
+      weekDay1:new Date(),
+      weekDay2:new Date(),
+      recruitList:[],
+      dayInterviewVos:[],
+      form:{
+        company_name:'',
+        date:''
+      },
+      peopleNum:0,
       loading: false, //当前表单加载是否加载动画
       navText: {
         title: "简历中心",
@@ -293,8 +356,73 @@ export default {
   },
   mounted() {
     this.search();
+    this.searchCalendar()
   },
   methods: {
+    makeRecruitList(quantumList){
+      this.recruitList = []
+      this.peopleNum = 0
+      for(let i =0;i<quantumList.length;i++){
+        let item = quantumList[i]
+        if(item.recruitInterviewList.length>0){
+          this.peopleNum+=item.recruitInterviewList.length
+          let timeStr = item.timingStart+"点 ~ "+item.timingEnd+"点"
+          let newItem = {timeStr:timeStr,list:item.recruitInterviewList}
+          this.recruitList.push(newItem)
+        }
+      }
+    },
+    changeWeek(index){
+      if(index==-1){
+        this.dayValue.setTime(this.dayValue.getTime()-7*24*60*60*1000)
+      }
+      if(index==1){
+        this.dayValue.setTime(this.dayValue.getTime()+7*24*60*60*1000)
+      }
+      this.searchCalendar()
+    },
+    selDay(day,index){
+      this.dayValue = day.day
+      this.makeRecruitList(this.dayInterviewVos[index].quantumList)
+    },
+    searchCalendar() {
+      let that = this
+      this.loading = true;
+      var data = {
+        year: this.dayValue.getFullYear(),
+        month: this.dayValue.getMonth()+1,
+        day: this.dayValue.getDate()
+      };
+      this.$api.recruitinterviewlist(data).then((res) => {
+        if(res.code==200){
+          that.dayInterviewVos = res.data.dayInterviewVos
+          that.weekDayList = []
+          for(let i = 0; i < that.dayInterviewVos.length; i++) {
+            if(res.data.dayInterviewVos[i].date==that.dayValue.getDate()){
+              that.currIndex = i
+              that.makeRecruitList(res.data.dayInterviewVos[i].quantumList)
+            }
+            let weekDay = {
+              num:that.dayInterviewVos[i].date
+            }
+            that.weekDayList.push(weekDay)
+          }
+          for(let i = 0; i < that.weekDayList.length; i++) {
+            var d=new Date();
+            d.setTime(that.dayValue.getTime()+(i-that.currIndex)*24*60*60*1000)
+            that.weekDayList[i].day = d
+            if(i==0){
+              that.weekDay1 = d
+            }
+            if(i==6){
+              that.weekDay2 = d
+            }
+          }
+
+        }
+      });
+      this.loading = false;
+    },
     companyGM(){
       var arays = []
       var newArrays = []
@@ -390,6 +518,8 @@ export default {
         });
     },
     addClick(v, int) {
+      this.calendarDialogVisible = true
+      return
       if (v === undefined) {
         this.statusPop = 1;
         this.listData = {};
@@ -462,6 +592,47 @@ export default {
 </script>
 
 <style lang="less" scoped>
+.selNone {
+  margin: 13px auto;
+  cursor: pointer;
+  border-radius: 50%;
+  border:1px solid #000000;
+  width: 30px;
+  height: 30px;
+  text-align: center;
+  line-height: 30px;
+}
+.selCircle {
+  border-radius: 50%;
+  width: 30px;
+  height: 30px;
+  color: #ffffff !important;
+  background-color: #3494F7;
+  text-align: center;
+  line-height: 30px;
+  margin: 13px auto;
+  cursor: pointer;
+}
+.card_date {
+  width: 14%;
+  text-align: center;
+  color: #000;
+}
+.week_box{
+  width: 100%;
+  display: flex;
+  justify-content:center;
+  margin-top: 20px;
+}
+.d_title_r{
+  color: #3494F7;
+  cursor: pointer;
+}
+.d_title{
+  display: flex;
+  justify-content: space-between;
+  margin-top: 30px;
+}
 /deep/.el-button {
   border-radius: 8px;
 }

Някои файлове не бяха показани, защото твърде много файлове са промени