Browse Source

日历添加休息日 今天

qinzhipeng_v@didiglobal.com 4 years ago
parent
commit
d6ce099f42

+ 8 - 0
src/api/workSchedule.js

@@ -266,3 +266,11 @@ export function settingQueryBizAndTeamInfo() {
     method: 'get'
     method: 'get'
   })
   })
 }
 }
+
+// 获取日期的节假日
+export function settingGetCalendar() {
+  return request({
+    url: TeamManagement + `/setting/getCalendar`,
+    method: 'get'
+  })
+}

+ 1 - 0
src/icons/svg/筛选.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="32px" height="32.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#444444" d="M129.02058125 195.55661622L357.60708125 425.61391396a8.17109912 8.17109912 0 0 1 2.41047422 5.76062491v376.15655039c0 25.77981797 13.48231377 49.68028301 35.54428096 62.9991747l134.16944853 80.89388262a73.53989297 73.53989297 0 0 0 111.5355041-62.99917471V433.1313248a8.17109912 8.17109912 0 0 1 2.77817344-6.12832412l260.90319727-227.89195664A73.53989297 73.53989297 0 0 0 856.53439737 70.17109912H181.19304951a73.53989297 73.53989297 0 0 0-52.17246826 125.38551709zM175.39156865 149.43076104a8.17109912 8.17109912 0 0 1 5.80148086-13.93172403h675.34134786a8.17109912 8.17109912 0 0 1 5.39292568 14.29942413L601.06498086 377.77212793a73.53989297 73.53989297 0 0 0-25.16698565 55.40005283v455.33450215a8.17109912 8.17109912 0 0 1-12.42007031 7.02714462l-134.16944853-80.89388173a8.17109912 8.17109912 0 0 1-3.92212793-7.02714551V431.41539395a73.53989297 73.53989297 0 0 0-21.36742383-51.84562413L175.35071357 149.471617z"  /><path fill="#444444" d="M736.70522802 584.95034815h163.42198331a32.68439648 32.68439648 0 1 0 0-65.36879385h-163.4219833a32.68439648 32.68439648 0 1 0-1e-8 65.36879385zM735.15271836 707.51683584h163.42198418a32.68439648 32.68439648 0 1 0-1e-8-65.36879385h-163.42198417a32.68439648 32.68439648 0 1 0 0 65.36879385zM728.0438627 830.08332354h163.42198329a32.68439648 32.68439648 0 1 0 0-65.36879385h-163.42198329a32.68439648 32.68439648 0 1 0 0 65.36879385z"  /></svg>

+ 69 - 30
src/views/projectManage/bugList/details/bugTableDialog.vue

@@ -11,55 +11,55 @@
           <div class="bug-queryTitle"> 筛选项 </div>
           <div class="bug-queryTitle"> 筛选项 </div>
           <span class="el-icon-close" />
           <span class="el-icon-close" />
         </div>
         </div>
-        <el-form label-position="left" :model="bugFormQuery" :rules="rules" label-width="100px">
+        <el-form label-position="left" :model="bugFormQuery" label-width="100px">
           <el-form-item label="优先级" prop="discoveryStage">
           <el-form-item label="优先级" prop="discoveryStage">
-            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" style="width:100%;">
-              <el-option v-for="item in statusList" :key="item.code" :label="item.name" :value="item.code" />
+            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" size="medium" style="width:100%;">
+              <el-option v-for="item in statusObj.priorityLevelEnumList" :key="item.code" :label="item.name" :value="item.code" />
             </el-select>
             </el-select>
           </el-form-item>
           </el-form-item>
           <el-form-item label="缺陷状态" prop="discoveryStage">
           <el-form-item label="缺陷状态" prop="discoveryStage">
-            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" style="width:100%;">
-              <el-option v-for="item in statusList" :key="item.code" :label="item.name" :value="item.code" />
+            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" size="medium" style="width:100%;">
+              <el-option v-for="item in statusObj.bugEnumList" :key="item.code" :label="item.name" :value="item.code" />
             </el-select>
             </el-select>
           </el-form-item>
           </el-form-item>
           <el-form-item label="缺陷等级" prop="discoveryStage">
           <el-form-item label="缺陷等级" prop="discoveryStage">
-            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" style="width:100%;">
-              <el-option v-for="item in statusList" :key="item.code" :label="item.name" :value="item.code" />
+            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" size="medium" style="width:100%;">
+              <el-option v-for="item in statusObj.priorityEnumList" :key="item.code" :label="item.name" :value="item.code" />
             </el-select>
             </el-select>
           </el-form-item>
           </el-form-item>
-          <el-form-item label="提报人" prop="discoveryStage">
-            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" style="width:100%;">
-              <el-option v-for="item in statusList" :key="item.code" :label="item.name" :value="item.code" />
-            </el-select>
+          <el-form-item label="提报人">
+            <searchPeople :value.sync="bugFormQuery.creator" :multiple="true" :size="'medium'" style="width: 100%;" />
           </el-form-item>
           </el-form-item>
-          <el-form-item label="责任人" prop="discoveryStage">
-            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" style="width:100%;">
-              <el-option v-for="item in statusList" :key="item.code" :label="item.name" :value="item.code" />
-            </el-select>
+          <el-form-item label="责任人">
+            <search-people :value.sync="bugFormQuery.assigner" :multiple="true" :size="'medium'" style="width: 100%;" />
           </el-form-item>
           </el-form-item>
-          <el-form-item label="修复人" prop="discoveryStage">
-            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" style="width:100%;">
-              <el-option v-for="item in statusList" :key="item.code" :label="item.name" :value="item.code" />
-            </el-select>
+          <el-form-item label="修复人">
+            <searchPeople :value.sync="bugFormQuery.currentHandler" :multiple="true" :size="'medium'" style="width: 100%;" />
           </el-form-item>
           </el-form-item>
           <el-form-item label="是否发生Reopen" prop="discoveryStage">
           <el-form-item label="是否发生Reopen" prop="discoveryStage">
-            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" style="width:100%;">
-              <el-option v-for="item in statusList" :key="item.code" :label="item.name" :value="item.code" />
+            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" size="medium" style="width:100%;">
+              <el-option v-for="item in reopens" :key="item.code" :label="item.name" :value="item.code" />
             </el-select>
             </el-select>
           </el-form-item>
           </el-form-item>
           <el-form-item label="所属任务" prop="discoveryStage">
           <el-form-item label="所属任务" prop="discoveryStage">
-            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" style="width:100%;">
-              <el-option v-for="item in statusList" :key="item.code" :label="item.name" :value="item.code" />
+            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" size="medium" style="width:100%;">
+              <el-option v-for="item in taskEnumList" :key="item.id" :label="item.name" :value="item.id">
+                <div class="belong-task">
+                  <div class="task-id">{{ item.taskId }}</div>
+                  <div class="modules-name">
+                    <span class="name">{{ item.name }}</span>
+                    <span v-if="item.moduleInfoName" class="modules">{{ item.moduleInfoName }}</span>
+                  </div>
+                </div>
+              </el-option>
             </el-select>
             </el-select>
           </el-form-item>
           </el-form-item>
         </el-form>
         </el-form>
         <div class="bug-footer">
         <div class="bug-footer">
-          <svg-icon icon-class="member" />
-          <el-button class="bug-botton">重置</el-button>
+          <el-button class="bug-botton" @click="bugFormQuery = {}">重置</el-button>
           <el-button class="bug-botton" style="margin-left: 20px;" type="primary">筛选</el-button>
           <el-button class="bug-botton" style="margin-left: 20px;" type="primary">筛选</el-button>
         </div>
         </div>
-
-        <svg-icon slot="reference" icon-class="member" class="bug-Status" />
+        <div slot="reference" class="bug-Status"><svg-icon icon-class="筛选" /></div>
       </el-popover>
       </el-popover>
     </div>
     </div>
     <el-table
     <el-table
@@ -131,14 +131,16 @@
 const _ = require('lodash')
 const _ = require('lodash')
 import { mapGetters } from 'vuex'
 import { mapGetters } from 'vuex'
 import statusChange from '@/views/projectManage/bugList/details/statusChange'
 import statusChange from '@/views/projectManage/bugList/details/statusChange'
-import { bugList, bugGetEnum } from '@/api/defectManage'
+import { bugList, bugGetEnum, taskListCreate } from '@/api/defectManage'
 import BugDetails from './index'
 import BugDetails from './index'
 import '@/styles/PublicStyle/index.scss'
 import '@/styles/PublicStyle/index.scss'
+import searchPeople from '@/components/select/searchPeople' // 人员select
 
 
 export default {
 export default {
   components: {
   components: {
     statusChange,
     statusChange,
-    BugDetails
+    BugDetails,
+    searchPeople
   },
   },
   filters: {
   filters: {
     naspOut(value) {
     naspOut(value) {
@@ -161,8 +163,10 @@ export default {
   data() {
   data() {
     return {
     return {
       bugFormQuery: {},
       bugFormQuery: {},
+      reopens: [{ code: 1, name: '是' }, { code: 0, name: '否' }],
       statusList: [{ value: 0, name: '全部' }, { value: 1, name: '未完成' }, { value: 2, name: '待修复' }, { value: 3, name: '待测试' }, { value: 4, name: '已完成' }],
       statusList: [{ value: 0, name: '全部' }, { value: 1, name: '未完成' }, { value: 2, name: '待修复' }, { value: 3, name: '待测试' }, { value: 4, name: '已完成' }],
       tableData: [], // tableData
       tableData: [], // tableData
+      taskEnumList: [], // 所属任务
       pageSize: 15, // 分页
       pageSize: 15, // 分页
       curIndex: 1, // 分页
       curIndex: 1, // 分页
       currentPage: 1,
       currentPage: 1,
@@ -201,18 +205,27 @@ export default {
       },
       },
       immediate: true
       immediate: true
     }
     }
+  },
+  mounted() {
+
   },
   },
   methods: {
   methods: {
     async getBugSelect() { //  获取下拉菜单option
     async getBugSelect() { //  获取下拉菜单option
       const res = await bugGetEnum()
       const res = await bugGetEnum()
       if (res.code === 200) {
       if (res.code === 200) {
         this.statusObj = {
         this.statusObj = {
+          priorityLevelEnumList: res.data.priorityLevelEnumList, // 优先级
           bugEnumList: res.data.bugEnumList, // status
           bugEnumList: res.data.bugEnumList, // status
           repairResultEnumList: res.data.repairResultEnumList, // 修复结果
           repairResultEnumList: res.data.repairResultEnumList, // 修复结果
           bugReasonEnumList: res.data.bugReasonEnumList, // 缺陷原因
           bugReasonEnumList: res.data.bugReasonEnumList, // 缺陷原因
-          theBugTypeEnumList: this.deleteChild(res.data.theBugTypeEnumList) // 缺陷类型
+          theBugTypeEnumList: this.deleteChild(res.data.theBugTypeEnumList), // 缺陷类型
+          priorityEnumList: res.data.priorityEnumList // 缺陷等级
         }
         }
       }
       }
+      const res1 = await taskListCreate({ bizId: this.bizId })
+      if (res1.code === 200) {
+        this.taskEnumList = res1.data || []
+      }
     },
     },
     deleteChild(arr) { // 删除无用子属性
     deleteChild(arr) { // 删除无用子属性
       const bfs = arr => {
       const bfs = arr => {
@@ -316,6 +329,10 @@ export default {
     line-height: 60px;
     line-height: 60px;
     padding: 0 30px;
     padding: 0 30px;
   }
   }
+  .bug-statusList:hover {
+    color: #409eff;
+    cursor: pointer;
+  }
   .bug-statusList {
   .bug-statusList {
     margin: 0 10px;
     margin: 0 10px;
   }
   }
@@ -336,4 +353,26 @@ export default {
   .bug-botton {
   .bug-botton {
     margin:10px 0 0;
     margin:10px 0 0;
   }
   }
+  .belong-task {
+    max-width: 500px;
+    display: flex;
+    .modules-name {
+    width: calc(100% - 100px);
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .modules {
+    color: #999999;
+  }
+  .task-id {
+    color: #999999;
+    width: 80px;
+    margin-right: 20px;
+  }
+  .name {
+    color: #333333;
+    margin-right: 20px;
+  }
+  }
 </style>
 </style>

+ 35 - 0
src/views/workbench/person/components/myFullCalendar.vue

@@ -65,6 +65,7 @@
 
 
 <script>
 <script>
 // import moment from 'moment'
 // import moment from 'moment'
+import { settingGetCalendar } from '@/api/workSchedule.js'
 import FullCalendar from '@fullcalendar/vue'
 import FullCalendar from '@fullcalendar/vue'
 import dayGridPlugin from '@fullcalendar/daygrid'
 import dayGridPlugin from '@fullcalendar/daygrid'
 import timeGridPlugin from '@fullcalendar/timegrid'
 import timeGridPlugin from '@fullcalendar/timegrid'
@@ -104,6 +105,7 @@ export default {
   },
   },
   data() {
   data() {
     return {
     return {
+      dateList: [],
       activeName: '1',
       activeName: '1',
       today: new Date(),
       today: new Date(),
       todayClassName: 'today',
       todayClassName: 'today',
@@ -151,9 +153,32 @@ export default {
     }
     }
   },
   },
   mounted() {
   mounted() {
+    this.settingGetCalendar()
     this.callCalendarApi()
     this.callCalendarApi()
   },
   },
   methods: {
   methods: {
+    async settingGetCalendar() {
+      const res = await settingGetCalendar()
+      if (res.code === 200) {
+        this.dateList = res.data
+      }
+    },
+    setDate() {
+      const Div = document.getElementsByClassName('fc-day-top')
+      const arr = Array.from(Div)
+      arr.filter(items => {
+        if (this.dateList.includes(items.dataset.date)) {
+          const code = document.createElement('div')
+          code.innerHTML = '休'
+          code.className = 'addStyle'
+          items.appendChild(code)
+        }
+      })
+      if (document.getElementsByClassName('fc-today')[1]) {
+        document.getElementsByClassName('fc-today')[1].childNodes[0].innerHTML = '今天'
+        document.getElementsByClassName('fc-today')[1].childNodes[0].style.color = '#409eff'
+      }
+    },
     expand() {
     expand() {
       this.$emit('expand', true)
       this.$emit('expand', true)
     },
     },
@@ -178,6 +203,9 @@ export default {
       } else {
       } else {
         this.todayClassName = 'today'
         this.todayClassName = 'today'
       }
       }
+      this.$nextTick(() => {
+        this.setDate()
+      })
     },
     },
     setIcon() {
     setIcon() {
       const eleList = document.getElementsByClassName('fc-title')
       const eleList = document.getElementsByClassName('fc-title')
@@ -228,6 +256,13 @@ export default {
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">
+>>>.addStyle {
+  width: 20px;
+  text-align: center;
+  font-size: 12px;
+  color: #FFF;
+  background-color: #409eff;
+}
 >>>.el-tabs__nav-scroll{
 >>>.el-tabs__nav-scroll{
   margin: 0 35px;
   margin: 0 35px;
 }
 }