wenbobowen il y a 4 ans
Parent
commit
a4f0b2bdc0

+ 11 - 0
src/api/dataMarket.js

@@ -202,3 +202,14 @@ export function getOdinJobList(data) {
     data
   })
 }
+
+// 导出
+export function dataMarketDownload(data) {
+  return request({
+    url: TeamManagement + `/dataMarket/efficiency/export`,
+    method: 'post',
+    timeout: '1000000',
+    data,
+    responseType: 'blob' // 表明返回服务器返回的数据类型
+  })
+}

Fichier diff supprimé car celui-ci est trop grand
+ 3 - 1
src/components/newLayout/components/baseData.js


+ 2 - 2
src/components/newLayout/components/menu.vue

@@ -3,7 +3,7 @@
     <el-popover placement="right-end" trigger="hover" width="400" :open-delay="200">
       <div class="menu-wrapper">
         <div class="children-menu-wrapper borderBottom normal no-children">
-          <div v-for="(elm, index) in menuBaseData" :key="elm.key" :style="{width: elm.width}">
+          <div v-for="(elm, index) in menuBaseData" :key="elm.key" :style="elm.styles">
             <div
               v-if="index < 4"
               class="title"
@@ -11,7 +11,7 @@
               @click="switchProjects(elm)"
             >
             <!-- :style="{ display:index === 2 ? 'none' : 'auto' }" -->
-              <img width="16" height="14" :src="elm.iconData" style="position: relative; top: -2px;">
+              <img width="16" height="14" :src="elm.iconData" style="position: relative; top: -2px;" :style="elm.imageStyle">
               <span class="content">{{ elm.name }}</span>
               <span v-if="elm.key === 'thothFrontend'" style="  position: absolute; top: -5px; right: -10-px;">
                 <svg xmlns="http://www.w3.org/2000/svg" width="25.925" height="11.431" viewBox="0 0 25.925 11.431"> <g id="组_3108" data-name="组 3108" transform="translate(-1132.681 -133.742)"> <path id="标签_3_" data-name="标签 (3)" d="M10.629,0c.443,0,.8.548.8,1.224V20.483a1.328,1.328,0,0,1-.51,1.14L6.007,25.842a.55.55,0,0,1-.583,0L.511,21.623A1.328,1.328,0,0,1,0,20.483V1.224C0,.548.359,0,.8,0Z" transform="translate(1158.606 133.742) rotate(90)" fill="#409eff" /> <text id="当前" transform="translate(1140 142)" fill="#fff" font-size="8" fontFamily="PingFangSC-Regular, PingFang SC" letterSpacing="0.038em"> <tspan x="0" y="0">当前</tspan> </text> <circle id="椭圆_263" data-name="椭圆 263" cx="1.5" cy="1.5" r="1.5" transform="translate(1136 138)" fill="#fff" /> </g> </svg>

+ 10 - 0
src/views/dataBigManage/components/drawerModal/drawerModalData.js

@@ -786,3 +786,13 @@ export const taskTips = [
   }
 ]
 export const priorityColors = ['#F56C6C', '#FF8952', '#F5E300', '#7ED321', '#61D3B8', '#69B3FF', '#BDBDBD']
+
+// 是否显示导出
+export const exportTableList = {
+  isShow: [
+    '需求平均交付周期',
+    '平均需求使用人力',
+    '平均任务使用人力',
+    '任务平均交付周期'
+  ]
+}

+ 21 - 5
src/views/dataBigManage/components/drawerModal/index.vue

@@ -105,10 +105,11 @@
     </dmTable>
     <!-- 下拉 -->
     <div class="footer-laout" @click.stop>
-      <div style="line-height: 60px;">
-<!--        <el-button type="primary" size="mini" @click="exportTable">导 出</el-button>-->
+      <div v-if="exportTableList.isShow.indexOf(drawerData.label) > -1" style="margin-top: 10px;">
+        <el-button type="primary" size="mini" @click="exportTable">导出</el-button>
       </div>
       <el-pagination
+        style="line-height: 60px;"
         :current-page.sync="paging.curIndex"
         :page-size="paging.pageSize"
         :pager-count="5"
@@ -130,10 +131,12 @@ import { getReportList } from '@/api/reportTemplate'
 import dmTable from '@/components/baseTable/table'
 // import timeline from '@/components/timeline/index'
 import timeline from './components/timeline'
-import { columns, timelineList } from './drawerModalData'
+import { columns, timelineList, exportTableList } from './drawerModalData'
 import { EncryptId } from '@/utils/crypto-js'
 import Clickoutside from 'element-ui/src/utils/clickoutside'
 import { requirementQueryRequirementInfoList, taskList } from '@/api/projectIndex'
+
+Object.freeze(exportTableList)
 import {
   // 质量
   getRequireAvgData, // 需求平均交付周期
@@ -147,7 +150,8 @@ import {
   getStarFlowerList, // 线上问题:半浮层 列表
   getProjectList, // 需求任务项目列表: 半浮层
   getOdinJobList, // 获取上线过程列表
-  dataMarketQualityGetImproveList // 线上问题-改进项半浮层
+  dataMarketQualityGetImproveList, // 线上问题-改进项半浮层
+  dataMarketDownload // 导出
 } from '@/api/dataMarket'
 
 export default {
@@ -191,6 +195,7 @@ export default {
       column: [],
       ids: [],
       label: '',
+      exportTableList,
       activeLabel: '',
       drawerBox: '',
       subTitle: '',
@@ -234,7 +239,7 @@ export default {
       // console.log(this.drawerData, 210)
       this.headerTitle = this.drawerData.headerTitle
       this.title = this.headerTitle.search(/质量|效率/) > -1 ? this.drawerData.label || '' : this.drawerData.activeLabel
-      console.log(this.headerTitle, this.title)
+      console.log(this.drawerData.label)
       if (this.headerTitle && this.title) {
         // console.log(this.drawerData)
         this.pagingInit()
@@ -478,6 +483,17 @@ export default {
     },
     // 导出
     exportTable() {
+      dataMarketDownload({
+        ids: this.ids,
+        title: this.drawerData.label
+      }).then(res => {
+        const aLink = document.createElement('a')
+        const blob = new Blob([res], { type: 'application/vnd.ms-excel' })
+        aLink.href = URL.createObjectURL(blob)
+        aLink.download = this.drawerData.label + '.xlsx'
+        aLink.style.display = 'none'
+        aLink.click()
+      })
     },
     // 格式化时间
     dateFomatter(date) {

+ 1 - 1
src/views/home/index.vue

@@ -404,7 +404,7 @@ export default {
           this.$router.push({ name: '测试用例' })
           break
         case 'auto':
-          window.open(automation, '_block')
+          window.open(automation, '_self')
           break
         case 'playback':
           window.open(playBackUrl, '_self')

+ 1 - 0
src/views/projectManage/projectList/projectIndex.vue

@@ -516,6 +516,7 @@ export default {
       this.$set(this.form_all, 'projectOwner', this.query_object.projectOwner)
       this.$set(this.form_all, 'bizType', '')
       this.$set(this.form_all, 'creater', '')
+      this.$set(this.form_all, 'tagIdList', [])
       this.$message({
         message: '已重置',
         type: 'success',

+ 2 - 1
src/views/projectManage/requirement/list/index.vue

@@ -796,7 +796,8 @@ export default {
         rqmtProposer: '',
         sourceTypeList: [],
         isFromDpm: '',
-        date: []
+        date: [],
+        tagIdList: []
       }
       if (this.nowTab === 'charts') {
         this.searchForm = { ...this.searchForm, name: '', statusList: [] }

+ 8 - 0
src/views/projectManage/requirement/renderData/chartSearchForm.js

@@ -97,6 +97,14 @@ const data = [
     type: 'dateStartAndEnd',
     styles: { marginBottom: '15px', width: '380px' },
     value: []
+  },
+  {
+    name: '标签',
+    key: 'tagIdList',
+    type: 'TagSearch',
+    pageType: 'REQUIRE',
+    styles: { marginBottom: '15px', width: '380px' },
+    value: []
   }
 ]
 export default data

+ 8 - 0
src/views/projectManage/taskList/renderData/chartSearchForm.js

@@ -97,6 +97,14 @@ const data = [
     type: 'dateStartAndEnd',
     styles: { marginBottom: '15px', width: '380px' },
     value: []
+  },
+  {
+    name: '标签',
+    key: 'tagIdList',
+    type: 'TagSearch',
+    pageType: 'TASK',
+    styles: { marginBottom: '15px', width: '380px' },
+    value: []
   }
 ]
 export default data

+ 2 - 1
src/views/projectManage/taskList/taskIndex.vue

@@ -923,7 +923,8 @@ export default {
         creater: '',
         isFromDpm: '',
         priority: '',
-        date: []
+        date: [],
+        tagIdList: []
       }
       if (this.nowTab === 'charts') {
         this.form_task = { ...this.form_task, name: '', statusList: [] }

+ 4 - 4
src/views/reportManagement/ReleaseReport/newReleaeTemplate.vue

@@ -180,11 +180,11 @@ export default {
     },
     templateId: {
       handler(newV) {
-        console.log(newV, '准出报告')
+        console.log(newV, '准出报告33')
         if (newV.name === '新建模版' || newV.name === '编辑模版') { // 新建、编辑模版
           this.releaseType = true
           this.from = { ...this.from, ...newV.from }
-          newV.name === '编辑模版' ? this.settingGetReportModuleById(newV.set_up) : ''
+          newV.name === '编辑模版' ? this.settingGetReportModuleById(newV.set_up || this.from.id) : ''
           return
         }
         this.releaseType = false
@@ -192,7 +192,7 @@ export default {
           this.reportId = newV.id
           this.reportreleaseGetReportById(newV.id)
         } else { // 新建
-          console.log(newV, '准出报告1')
+          console.log(newV, '准出报告122')
           this.tpsltId = newV
           this.settingGetReportModuleById(newV)
         }
@@ -265,7 +265,7 @@ export default {
     },
 
     async remoteMethod(query) { // 远程搜索任务
-      const res = await taskList({ id: query })
+      const res = await taskList({ name: query })
       if (res.code === 200) {
         this.tasksOptions = res.data
       }

+ 2 - 2
src/views/reportManagement/Testing/newTestingTemplate.vue

@@ -204,7 +204,7 @@ export default {
         if (newV.name === '新建模版' || newV.name === '编辑模版') {
           this.releaseType = true
           this.from = { ...this.from, ...newV.from }
-          newV.name === '编辑模版' ? this.settingGetReportModuleById(newV.repot_up) : ''
+          newV.name === '编辑模版' ? this.settingGetReportModuleById(newV.repot_up || this.from.id) : ''
           return
         }
         this.releaseType = false
@@ -298,7 +298,7 @@ export default {
     },
 
     async remoteMethod(query) { // 远程搜索任务
-      const res = await taskList({ id: query })
+      const res = await taskList({ name: query })
       if (res.code === 200) {
         this.tasksOptions = res.data
       }

+ 0 - 6
src/views/reportManagement/components/Custom/index.vue

@@ -160,13 +160,7 @@ export default {
   }
   .custom-index {
     width: 40px;
-    // height: 18px;
-    // background: #1890ff;
-    // border-radius: 50%;
     color: #000;
-    // display: flex;
-    // align-items: center;
-    // padding: 0 5px;
   }
   .icon-design {
     border: 1px solid #1890ff;

+ 2 - 2
src/views/reportManagement/components/ReleaseReport.vue

@@ -180,8 +180,8 @@ export default {
     },
 
     async report_return() {
-      const res = await reportreleaseGetReportById(this.dailyId)
-      this.daily_taskIds = res.data.taskIds
+      // const res = await reportreleaseGetReportById(this.dailyId)
+      // this.daily_taskIds = res.data.taskIds
       this.reportHome = '准出报告' // 步骤条
       this.showOne = true // 模版选择
       this.reportTamplate = false // 编辑区域

+ 2 - 2
src/views/reportManagement/components/TestingReport.vue

@@ -214,8 +214,8 @@ export default {
       // }
     },
     async report_return() { // 新建模版点击返回
-      const res = await reportdelivertestGetReportById(this.dailyId)
-      if (res.code === 200) this.daily_taskIds = res.data.taskIds || null
+      // const res = await reportdelivertestGetReportById(this.dailyId)
+      // if (res.code === 200) this.daily_taskIds = res.data.taskIds || null
       this.reportHome = '提测报告' // 步骤条
       this.showOne = true // 模版选择
       this.newDailyTemplate = false // 隐藏第二步

+ 2 - 2
src/views/workbench/components/searchSection.vue

@@ -41,7 +41,7 @@
         <div class="teamMember">排期类型:</div>
         <el-checkbox v-model="checkAllMember_1" :indeterminate="isIndeterminate_1" class="fromName" @change="checkAllScheduling">全选 </el-checkbox>
         <el-checkbox-group v-model="scheduling" @change="membersChange_1">
-          <el-checkbox v-for="item in taskScheduleEvent" :key="item.code" :label="item.code">
+          <el-checkbox v-for="(item, itemIndex) in taskScheduleEvent" :key="itemIndex" :label="item.code">
             <div class="check-point">
               {{ item.msg }}
               <div class="point" :style="{'background-color': mapTypeColor[item.code].bgColor}" />
@@ -263,7 +263,7 @@ export default {
     },
     updateParent() { // 刷新父组件数据
       this.$emit('change')
-      this.$emit('update:value', this.filtrate)
+      this.$emit('update:value', { ...this.filtrate })
     }
   }
 }

+ 25 - 5
src/views/workbench/team/components/ganntViews.vue

@@ -20,12 +20,21 @@
       />
     </template>
     <div class="member-list">
-      <div class="teamMember">优先级:</div>
+      <search-section
+        ref="search-section"
+        :value.sync="filtrate"
+        :search-form="searchForm"
+        type="团队"
+        style="margin: 0 30px;"
+        @change="radioChange"
+        @loading="loading = false"
+      />
+<!--      <div class="teamMember">优先级:</div>
       <el-checkbox-group v-model="priorityList" @change="PrioritysChange_1">
         <el-checkbox v-for="item in taskList" :key="item.value" :label="item.value">
           <div class="check-point"> {{ item.label }} </div>
         </el-checkbox>
-      </el-checkbox-group>
+      </el-checkbox-group>-->
     </div>
     <div v-loading="loading">
       <div v-if="ganttShow">
@@ -47,11 +56,13 @@ import GanttHeader from 'gantt-elastic-header'
 import moment from 'moment'
 import teamGanttOptions from '@/views/workbench/ganttOptions/teamGantt'
 import teamOptions from '@/views/workbench/ganttOptions/teamPersonal'
+import searchSection from '@/views/workbench/components/searchSection'
 import { queryTeamWorkListByPeople, teamQueryTeamWorkListByTask } from '@/api/workSchedule'
 export default {
   components: {
     ganttElasticHeader: GanttHeader,
-    ganttElastic: GanttElastic
+    ganttElastic: GanttElastic,
+    searchSection
   },
   props: {
     search: {
@@ -81,6 +92,7 @@ export default {
         { value: 2, label: 'P2' },
         { value: 3, label: 'P3' }
       ],
+      filtrate: {},
       pickerOptions: {
         shortcuts: [{
           text: '最近一周',
@@ -129,12 +141,18 @@ export default {
           deptCodes: this.searchForm.deptCodes
         },
         searchScheduleInfo: {
-          priorityList: this.priorityList
+          origin: this.filtrate.origin,
+          scheduleTypeList: this.filtrate.scheduleTypeList,
+          selfScheduleTypeList: this.filtrate.selfScheduleTypeList,
+          priorityList: this.filtrate.priorityList
         },
         timeInfo: {
           startTime: moment(this.timeSelectVal[0]).format('YYYY.MM.DD'),
           endTime: moment(this.timeSelectVal[1]).format('YYYY.MM.DD')
-        }
+        },
+        peoples: [
+          ...(this.filtrate.checkedMembers || [])
+        ]
       }
       this.loading = true
       if (this.radio1 === '按日程') {
@@ -159,6 +177,8 @@ export default {
       this.radioChange()
     },
     queryTeamIdleList(data) {
+      // 如果数据为空不执行
+      if (JSON.stringify(data) === '{}') return
       const today = new Date()
       const colorlist = ['#A1DEFF', '#FAB5B5', '#BCED86', '#FFA87F', '#8E44AD', '#1EBC61', '#0287D0']
       this.personal = false

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff