Browse Source

Merge branch 'http_mock'

qinzhipeng_v 5 năm trước cách đây
mục cha
commit
7849278732

+ 32 - 6
src/router/index.js

@@ -74,17 +74,43 @@ export const constantRoutes = [
   {
     path: '/Platform',
     component: Layout,
-    redirect: '/Platform/workbench',
+    redirect: '/Platform/Workbench/PersonalWorkbench',
     name: '流程管控',
     meta: { title: '流程管控', icon: 'env' },
     children: [
       {
-        path: 'workbench',
-        name: 'workbench',
-        // hidden: true,
-        component: () => import('@/views/Platform/workbench'),
-        meta: { title: '我的工作台' }
+        path: '/Platform/Workbench',
+        name: '工作台',
+        component: () => import('@/views/Platform/presentation/testa'),
+        redirect: '/Platform/Workbench/PersonalWorkbench',
+        meta: { title: '工作台' },
+        children: [
+          {
+            path: 'PersonalWorkbench',
+            name: '个人工作台',
+            component: () => import('@/views/Platform/Workbench/PersonalWorkbench'),
+            meta: { title: '个人工作台' }
+          },
+          {
+            path: 'TeamWorkbench',
+            name: '团队工作台'
+          }
+          // {
+          //   path: 'TeamWorkbench',
+          //   name: '团队工作台',
+          //   hidden: true,
+          //   component: () => import('@/views/Platform/Workbench/TeamWorkbench'),
+          //   meta: { title: '团队工作台' }
+          // }
+        ]
       },
+      // {
+      //   path: 'workbench',
+      //   name: 'workbench',
+      //   // hidden: true,
+      //   component: () => import('@/views/Platform/workbench'),
+      //   meta: { title: '我的工作台' }
+      // },
       {
         path: '/Platform/projectManage',
         name: '项目管理',

+ 529 - 0
src/views/Platform/Workbench/PersonalWorkbench.vue

@@ -0,0 +1,529 @@
+<template>
+  <!-- -------------------------- 待处理 ----------------------------- -->
+  <div class="bgColorSz">
+    <el-tabs v-model="activeName" class="abc" @tab-click="handleClick">
+      <el-tab-pane label="待处理" name="first">
+        <div class="titStyle">近期代办</div>
+        <div style="height:6em;margin: 1% 0% 0% 2%;">
+          <el-button v-show="show1" type="primary" class="itemName" size="small" plain @click="clickNum(1)">{{ oneData.name }}</el-button>
+          <el-button v-show="show2" type="primary" class="itemName" size="small" plain @click="clickNum(2)">{{ oneData1.name }}</el-button>
+          <el-button v-show="show3" type="primary" class="itemName" size="small" plain @click="clickNum(3)">{{ oneData2.name }}</el-button>
+          <el-button v-show="show1" style="margin-bottom:24px;" type="primary" size="mini" @click="clickNum(4)"> · · · </el-button>
+        </div>
+        <div style="background:#F2F3F6; padding: 0.5%;" />
+        <div style="height:64vh; text-align:center; border-radius:8px;">
+          <div align="center" style="height:55vh;">
+            类型
+            <el-select v-model="bugOrTask1.isBugOrTask" size="medium" style="width: 13%;margin: 2% 5% 2% 1%;" clearable placeholder="类型" @change="getstatus(bugOrTask1.isBugOrTask)">
+              <el-option v-for="item in bugTask" :key="item.value" :label="item.name" :value="item.value" />
+            </el-select>
+            状态
+            <el-select v-model="bugOrTask1.status" size="medium" multiple collapse-tags style="width: 13%;margin: 2% 5% 2% 1%;" clearable placeholder="状态">
+              <el-option v-for="item in bugStatusStr1" :key="item.code" :label="item.name" :value="item.code" />
+            </el-select>
+            优先级
+            <el-select v-model="bugOrTask1.priority" size="medium" style="width: 13%;margin: 2% 5% 2% 1%;" clearable placeholder="优先级">
+              <el-option v-for="item in bugLevelStr" :key="item.code" :label="item.name" :value="item.code" />
+            </el-select>
+            主题 <el-input v-model="bugOrTask1.titles" size="medium" placeholder="主题" clearable style="width: 14%; margin: 2% 5% 2% 1%;" />
+
+            <el-button type="primary" size="small" style="margin:2% 0%;" @click="clickQuery(bugOrTask1)">查询</el-button>
+
+            <el-table v-if="bug" :data="tableType" border max-height="335" :header-cell-style="getRowClass" style="width:95%;cursor:pointer" align="center" @row-click="clickQueryTableTask">
+              <el-table-column type="index" label="序号" width="150" align="center" />
+              <el-table-column label="类型" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.isBugOrTask }}</template></el-table-column>
+              <el-table-column label="主题" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.bugName }}</template></el-table-column>
+              <el-table-column label="优先级" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.priorityName }}</template></el-table-column>
+              <el-table-column label="状态" min-width="100" align="center"><template slot-scope="scope"><el-tag type="success">{{ scope.row.bugStatusName }}</el-tag></template></el-table-column>
+              <el-table-column label="最近更新时间" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.gmtModify }}</template></el-table-column>
+            </el-table>
+            <el-table v-if="task" :data="tableType" border max-height="335" :header-cell-style="getRowClass" style="width: 95%;cursor:pointer" align="center" @row-click="clickQueryTableTask">
+              <el-table-column type="index" label="序号" width="150" align="center" />
+              <el-table-column label="类型" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.isBugOrTask }}</template></el-table-column>
+              <el-table-column label="主题" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.name }}</template></el-table-column>
+              <el-table-column label="优先级" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.priorityString }}</template></el-table-column>
+              <el-table-column label="状态" min-width="100" align="center"><template slot-scope="scope"><el-tag type="success">{{ scope.row.statusString }}</el-tag></template></el-table-column>
+              <el-table-column label="最近更新时间" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.modifyTime }}</template></el-table-column>
+            </el-table>
+          </div>
+
+        </div>
+      </el-tab-pane>
+
+      <!-- ------------------------- 工作统计 ------------------------------ -->
+
+      <el-tab-pane label="工作统计" name="second">
+        <div style="white-space:nowrap;"><img v-show="img" style="width:10px;height:10px;margin: 0 1% 0.45% 0" :src="imgUrl"><span class="titStyle">本周统计</span></div>
+        <div style=" margin: 2% 0 0 2%;">
+          <el-badge :value="HashSet" class="item"><el-button type="primary" class="itemName" size="small" plain @click="queryClickTable(1)">任务进行中</el-button></el-badge>
+          <el-badge :value="HashSet1" class="item"><el-button type="primary" class="itemName" size="small" plain @click="queryClickTable(2)">任务已上线</el-button></el-badge>
+          <el-badge :value="Vector" class="item"><el-button type="primary" class="itemName" size="small" plain @click="queryClickTable(3)">bug待解决</el-button></el-badge>
+          <el-badge :value="Vector1" class="item"><el-button type="primary" class="itemName" size="small" plain @click="queryClickTable(4)">bug已解决</el-button></el-badge>
+        </div>
+        <div style="height:55vh; text-align:center;">
+          <div style="white-space:nowrap; padding: 0 2.5%;">
+            时间
+            <el-date-picker v-model="bugOrTask.value2" size="medium" style="margin: 2% 6% 2% 1%;" type="datetimerange" :picker-options="pickerOptions" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" align="right" />
+            类型
+            <el-select v-model="bugOrTask.isBugOrTask" size="medium" style="width: 13%;  margin: 2% 6% 2% 1%;" clearable placeholder="类型" @change="Setstatus(bugOrTask.isBugOrTask)">
+              <el-option v-for="item in bugTask" :key="item.value" :label="item.name" :value="item.value" />
+            </el-select>
+            状态
+            <el-select v-model="bugOrTask.status" size="medium" multiple collapse-tags style="width: 13%;margin: 2% 6% 2% 1%;" clearable placeholder="状态">
+              <el-option v-for="item in bugStatusStr" :key="item.code" :label="item.name" :value="item.code" />
+            </el-select>
+            <el-button type="primary" size="small" @click="clickQueryTaskAndBug(bugOrTask)">查询</el-button>
+          </div>
+          <div align="center" style="height:auto;">
+            <el-table v-if="taskShow" :data="tableData" :header-cell-style="getRowClass" border max-height="335" style="width: 95%;cursor:pointer" align="center" @row-click="clickQueryTableTask">
+              <el-table-column type="index" label="序号" width="150" align="center" />
+              <el-table-column label="主题" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.name }}</template></el-table-column>
+              <el-table-column label="类型" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.isBugOrTask }}</template></el-table-column>
+              <el-table-column label="状态" min-width="100" align="center"><template slot-scope="scope"><el-tag type="success">{{ scope.row.statusString }}</el-tag></template></el-table-column>
+              <el-table-column label="最近更新时间" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.modifyTime }}</template></el-table-column>
+            </el-table>
+
+            <el-table v-if="bugShow" :data="tableData" :header-cell-style="getRowClass" border max-height="335" style="width: 95%;cursor:pointer" align="center" @row-click="clickQueryTableTask">
+              <el-table-column type="index" label="序号" width="150" align="center" />
+              <el-table-column label="主题" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.bugName }}</template></el-table-column>
+              <el-table-column label="进展" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.stageName }}</template></el-table-column>
+              <el-table-column label="优先级" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.priorityName }}</template></el-table-column>
+              <el-table-column label="状态" min-width="100" align="center"><template slot-scope="scope"><el-tag type="success">{{ scope.row.bugStatusName }}</el-tag></template></el-table-column>
+              <el-table-column label="最近更新时间" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.gmtModify }}</template></el-table-column>
+            </el-table>
+          </div>
+        </div>
+      </el-tab-pane>
+    </el-tabs>
+
+    <!-- 项目展示 -->
+    <el-dialog tltle="详情" :visible.sync="dialogTableVisible" width="70%">
+      <el-table :data="gridData" max-height="390" style="cursor:pointer" @row-click="clickQueryTable">
+        <el-table-column type="index" label="序号" min-width="120" align="center" />
+        <el-table-column label="任务" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.name }}</template></el-table-column>
+        <el-table-column label="进展" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.stageString }}</template></el-table-column>
+        <el-table-column label="优先级" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.priorityString }}</template></el-table-column>
+        <el-table-column label="状态" min-width="120" align="center"><template slot-scope="scope"><el-tag type="success">{{ scope.row.statusString }}</el-tag></template></el-table-column>
+        <el-table-column label="最近更新时间" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.modifyTime }}</template></el-table-column>
+      </el-table>
+    </el-dialog>
+
+    <!-- 项目转任务 -->
+    <el-dialog tltle="详情" :visible.sync="dialogTableVisible0" width="70%">
+      <el-table :data="gridData3" max-height="390" style="cursor:pointer" @row-click="clickQueryTable1">
+        <el-table-column type="index" label="序号" min-width="120" align="center" />
+        <el-table-column label="项目" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.name }}</template></el-table-column>
+        <el-table-column label="进展" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.stageString }}</template></el-table-column>
+        <el-table-column label="优先级" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.priorityString }}</template></el-table-column>
+        <el-table-column label="状态" min-width="120" align="center"><template slot-scope="scope"><el-tag type="success">{{ scope.row.statusString }}</el-tag></template></el-table-column>
+        <el-table-column label="最近更新时间" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.modifyTime }}</template></el-table-column>
+      </el-table>
+    </el-dialog>
+
+    <!-- 任务展示 -->
+    <el-dialog tltle="详情" :visible.sync="dialogTableVisible1" width="70%">
+      <el-table :data="gridData1" max-height="390" style="cursor:pointer" :header-cell-style="getRowClass" @row-click="clickQueryTable2">
+        <el-table-column type="index" label="序号" min-width="120" align="center" />
+        <el-table-column label="任务" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.name }}</template></el-table-column>
+        <el-table-column label="进展" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.stageString }}</template></el-table-column>
+        <el-table-column label="平台类型" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.typeString }}</template></el-table-column>
+        <el-table-column label="优先级" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.priorityString }}</template></el-table-column>
+        <el-table-column label="状态" min-width="120" align="center"><template slot-scope="scope"><el-tag type="success">{{ scope.row.statusString }}</el-tag></template></el-table-column>
+        <el-table-column label="最近更新时间" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.modifyTime }}</template></el-table-column>
+      </el-table>
+    </el-dialog>
+
+    <!-- 缺陷展示 -->
+    <el-dialog tltle="详情" :visible.sync="dialogTableVisibleTow" width="70%">
+      <el-table :data="gridData2" max-height="390" style="cursor:pointer" :header-cell-style="getRowClass" @row-click="clickQueryTable3">
+        <el-table-column type="index" label="序号" min-width="120" align="center" />
+        <el-table-column label="缺陷" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.bugName }}</template></el-table-column>
+        <el-table-column label="类型" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.bugTypeName }}</template></el-table-column>
+        <el-table-column label="优先级" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.priorityName }}</template></el-table-column>
+        <el-table-column label="状态" min-width="120" align="center"><template slot-scope="scope"><el-tag type="success">{{ scope.row.bugStatusName }}</el-tag></template></el-table-column>
+        <el-table-column label="最近更新时间" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.gmtModify }}</template></el-table-column>
+      </el-table>
+    </el-dialog>
+
+  </div>
+</template>
+<script>
+
+import { personalworkstationQueryBackLog, personalworkstationQueryBackLogBugAndTask, personalworkstationQueryStatusAndPriority, personalworkstationQueryPeriodBugAndTask } from '@/api/workbench'
+
+export default {
+  name: 'PersonalWorkbench',
+  data() {
+    return {
+      imgUrl: require('@/assets/1566993017042.jpg'),
+      bugTask: [{ name: '缺陷', value: 0 }, { name: '任务', value: 1 }],
+      taskStatus: [{ name: '进行中', value: 0 }, { name: '已上线', value: 1 }],
+      bugStatus: [{ name: '待解决', value: 0 }, { name: '已解决', value: 1 }],
+      userInformation: localStorage.getItem('username'),
+      bizJson: localStorage.getItem('key'),
+      dialogTableVisible: false,
+      dialogTableVisible1: false,
+      dialogTableVisible0: false,
+      dialogTableVisibleTow: false,
+      img: false,
+      clievent: '{ background:#409EFF; color: #FFFFFF;}',
+      Vector1Arry: '',
+      VectorArry: '',
+      HashSetArray: '',
+      HashSet1Array: '',
+      activeName: 'first',
+      bugOrTask: {},
+      bugOrTask1: {},
+      value2: '',
+      userName: '',
+      Informationen: {},
+      tableData: [],
+      tableType: [],
+      bugLevelStr: [],
+      bugStatusStr: [],
+      bugStatusStr1: [],
+      gridData: [],
+      gridData1: [],
+      gridData2: [],
+      gridData3: [],
+      isBugOrTask: '',
+      oneData: {},
+      oneData1: {},
+      oneData2: {},
+      oneData3: {},
+      show1: false,
+      show2: false,
+      show3: false,
+      task: true,
+      bug: false,
+      bugShow: false,
+      taskShow: true,
+      HashSet: '',
+      HashSet1: '',
+      Vector: '',
+      Vector1: '',
+      selectData: '',
+      pickerOptions: {
+        shortcuts: [{
+          text: '最近一周',
+          onClick(picker) {
+            localStorage.setItem('selectData', 0)
+            const end = new Date()
+            const start = new Date()
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
+            picker.$emit('pick', [start, end])
+          }
+        }, {
+          text: '最近一个月',
+          onClick(picker) {
+            localStorage.setItem('selectData', 1)
+            const end = new Date()
+            const start = new Date()
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+            picker.$emit('pick', [start, end])
+          }
+        }]
+      }
+    }
+  },
+  created() {
+    this.getTopShowData(localStorage.getItem('key'))
+    this.Setstatus(1)
+  },
+  methods: {
+    // 待处理  list
+    getTopShowData(e) {
+      this.userName = { bizId: e, ename: this.userInformation }
+      personalworkstationQueryBackLog(this.userName).then(res => {
+        if (res.code === 200) {
+          this.getAllData = res.data.list
+          if (res.data.list[0]) {
+            this.oneData = res.data.list[0]
+            this.show1 = true
+          }
+          if (res.data.list[1]) {
+            this.oneData1 = res.data.list[1]
+            this.show2 = true
+          }
+          if (res.data.list[2]) {
+            this.oneData2 = res.data.list[2]
+            this.show3 = true
+          }
+          this.oneData3 = res.data.list
+        }
+      })
+    },
+
+    // 表头样式
+    getRowClass({ row, rowIndex }) {
+      if (rowIndex === 0) {
+        return 'background:#F0F2F4;color:#333B4A;'
+      }
+    },
+
+    // 展示项目和任务table
+    clickNum(e) {
+      switch (e) {
+        case 1:
+          this.gridData = this.oneData.taskInfoDOList
+          this.dialogTableVisible = true
+          break
+        case 2:
+          this.gridData = this.oneData1.taskInfoDOList
+          this.dialogTableVisible = true
+          break
+        case 3:
+          this.gridData = this.oneData2.taskInfoDOList
+          this.dialogTableVisible = true
+          break
+        case 4:
+          this.gridData3 = this.oneData3
+          this.dialogTableVisible0 = true
+      }
+    },
+
+    // 待处理 查询
+    clickQuery(e) {
+      console.log(this.bizJson)
+      e.status === '' ? e.status = [] : ''
+      if (e.isBugOrTask === 0 || e.isBugOrTask === 1) {
+        this.isBugOrTask = e.isBugOrTask
+        this.userName = e
+        this.userName.status = e.status
+        this.userName.bizId = localStorage.getItem('key')
+        this.userName.handlerPerson = this.userInformation
+        this.userName.title = e.titles
+        personalworkstationQueryBackLogBugAndTask(this.userName).then(res => {
+          if (e.isBugOrTask === 0) {
+            res.data.bugBaseInfoList.list === null ? this.total = 0 : this.total = res.data.bugBaseInfoList.list.length
+            res.data.bugBaseInfoList.list === null ? this.tableType = [] : this.tableType = res.data.bugBaseInfoList.list
+          }
+          if (e.isBugOrTask === 1) {
+            res.data.taskInfoList === null ? this.total = 0 : this.total = res.data.taskInfoList.length
+            res.data.taskInfoList === null ? this.tableType = [] : this.tableType = res.data.taskInfoList
+          }
+          for (var a of this.tableType) {
+            e.isBugOrTask === 1 ? a.isBugOrTask = '任务' : a.isBugOrTask = '缺陷'
+          }
+          res.data.taskInfoList === null ? this.task = false : this.task = true
+          res.data.bugBaseInfoList === null ? this.bug = false : this.bug = true
+        })
+      } else {
+        this.$message({ message: '请选择类型', type: 'success', center: true })
+      }
+    },
+
+    // 待处理的缺陷和任务切换
+    getstatus(e) {
+      this.$set(this.bugOrTask1, 'status', '')
+      this.tableType = []
+      this.Informationen.isBugOrTask = e
+      this.Informationen.bizId = localStorage.getItem('key')
+      this.Informationen.handlerPerson = this.userInformation
+      personalworkstationQueryStatusAndPriority(this.Informationen).then(res => {
+        var backLogStatusList = res.data.backLogStatusList
+        var arr = []
+        for (var a in backLogStatusList) {
+          arr.push({ 'code': a, 'name': backLogStatusList[a] })
+        }
+        var priorityList = res.data.priorityList
+        var brr = []
+        for (var b in priorityList) {
+          brr.push({ 'code': b, 'name': priorityList[b] })
+        }
+        this.bugLevelStr = brr
+        this.bugStatusStr1 = arr
+      })
+    },
+
+    // 工作统计全局list
+    handleClick(tab) {
+      this.total = 0
+      this.$set(this.bugOrTask, 'isBugOrTask', 1)
+      if (tab.label === '工作统计') {
+        this.userName = { bizId: localStorage.getItem('key'), handlerPerson: this.userInformation, timeType: 0 }
+        personalworkstationQueryPeriodBugAndTask(this.userName).then(res => {
+          this.HashSet = res.data.taskInfoDoingList.length
+          this.HashSetArray = res.data.taskInfoDoingList
+          this.HashSet1 = res.data.taskInfoDoneList.length
+          this.HashSet1Array = res.data.taskInfoDoneList
+          this.Vector = res.data.bugBaseInfoDoingList.length
+          this.VectorArray = res.data.bugBaseInfoDoingList
+          this.Vector1 = res.data.bugBaseInfoDoneList.length
+          this.Vector1Arry = res.data.bugBaseInfoDoneList
+        })
+      }
+    },
+
+    // 工作统计展示task,bug
+    queryClickTable(e) {
+      switch (e) {
+        case 1:
+          this.gridData1 = this.HashSetArray
+          this.dialogTableVisible1 = true
+          break
+        case 2:
+          this.gridData1 = this.HashSet1Array
+          this.dialogTableVisible1 = true
+          break
+        case 3:
+          this.gridData2 = this.VectorArray
+          this.dialogTableVisibleTow = true
+          break
+        case 4:
+          this.gridData2 = this.Vector1Arry
+          this.dialogTableVisibleTow = true
+      }
+    },
+
+    // 工作统计查询
+    clickQueryTaskAndBug(e) {
+      this.selectData = localStorage.getItem('selectData')
+      if (this.selectData === null) {
+        this.selectData = 2
+      }
+      e.status === '' ? e.status = [] : ''
+      this.isBugOrTask = e.isBugOrTask
+      if (e.value2) {
+        if (e.value2 !== '') {
+          var obj = {
+            bizId: localStorage.getItem('key'),
+            timeType: this.selectData,
+            status: e.status,
+            isBugOrTask: e.isBugOrTask,
+            startTime: e.value2[0],
+            endTime: e.value2[1],
+            handlerPerson: this.userInformation
+          }
+          personalworkstationQueryPeriodBugAndTask(obj).then(res => {
+            localStorage.removeItem('selectData')
+            if (obj.isBugOrTask === 0) {
+              this.tableData = res.data.bugBaseInfoList.list
+              this.bugShow = true
+              this.taskShow = false
+            } else {
+              this.tableData = res.data.taskInfoList
+              this.bugShow = false
+              this.taskShow = true
+            }
+            this.total = this.tableData.length
+            for (var a of this.tableData) {
+              this.isBugOrTask === 1 ? a.isBugOrTask = '任务' : a.isBugOrTask = '缺陷'
+            }
+          })
+        } else {
+          this.$message({ message: '请选择想要查看的时间段或日期', type: 'success', center: true })
+        }
+      } else {
+        this.$message({ message: '请选择想要查看的时间段或日期', type: 'success', center: true })
+      }
+    },
+
+    // 工作统计状态切换
+    Setstatus(e) {
+      this.$set(this.bugOrTask, 'status', '')
+      this.Informationen.isBugOrTask = e
+      this.Informationen.bizId = localStorage.getItem('key')
+      this.Informationen.handlerPerson = this.userInformation
+      personalworkstationQueryStatusAndPriority(this.Informationen).then(res => {
+        if (res.code === 200) {
+          var periodStatusList = res.data.periodStatusList
+          var arr = []
+          for (var a in periodStatusList) {
+            arr.push({ 'code': a, 'name': periodStatusList[a] })
+          }
+          this.bugStatusStr = arr
+        // e === 0 ? this.bugStatusStr = arr : this.bugStatusStr = brr
+        }
+      })
+      e === 1 ? this.tableData.isBugOrTask = '任务' : this.tableData.isBugOrTask = '缺陷'
+    },
+
+    clickQueryTable1(e) {
+      for (var el of this.getAllData) {
+        el.id === e.id ? this.gridData = el.taskInfoDOList : ''
+      }
+      this.dialogTableVisible = true
+      this.dialogTableVisible0 = false
+      // this.$router.push({ path: '/Platform/presentation/projectQuery', query: { id: e.id }})
+    },
+    clickQueryTable(e) {
+      this.$router.push({ path: '/Platform/projectManage/taskPreview', query: { id: e.id }})
+    },
+    clickQueryTable2(e) {
+      this.$router.push({ path: '/Platform/projectManage/taskPreview', query: { id: e.id }})
+    },
+    clickQueryTable3(e) {
+      this.$router.push({ path: '/Platform/defectManagement/bugQuery', query: { id: e.id }})
+    },
+    clickQueryTableTask(e) {
+      if (e.isBugOrTask === '任务') {
+        this.$router.push({ path: '/Platform/projectManage/taskPreview', query: { id: e.id }})
+      }
+      if (e.isBugOrTask === '缺陷') {
+        this.$router.push({ path: '/Platform/defectManagement/bugQuery', query: { id: e.id }})
+      }
+    }
+  }
+}
+</script>
+<style lang="scss">
+  .abc .el-tabs__nav-wrap::after {
+    background-color:#FFFFFF !important;
+  }
+  .bgColorSz .el-tabs__nav-scroll {
+    padding: 1% 2% !important;
+  }
+  .item .el-badge__content.is-fixed {
+    right: 50px;
+  }
+</style>
+<style scoped>
+  .abc {
+    background:#FFFFFF;
+    border-radius:8px;
+    margin: 0 1%;
+    width: 100%;
+  }
+
+  .titStyle {
+    font-size: 20px;
+    color: #333B4A;
+    font-weight: bold;
+    margin-left: 2%;
+  }
+
+  .bgColorSz {
+    width: 100%;
+    height: 96vh;
+    background: #F2F3F6;
+    font-size: 0.9rem;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
+
+.itemName {
+  margin-right: 2.5em;
+  width: 13em;
+  height: 3.25em;
+  font-size: 1em;
+  border: 1px solid #BFC6DC;
+  border-radius:  0.25em;
+  background: #FFFFFF;
+  color:#6F7C93;
+  margin-bottom: 24%;
+  overflow: hidden;
+  text-overflow:ellipsis;
+  }
+
+  .item {
+  margin-top: 10px;
+  margin-right: 4%;
+}
+
+.itemName:hover {
+    background:#409EFF;
+    color: #FFFFFF;
+  }
+</style>

+ 51 - 0
src/views/Platform/Workbench/TeamWorkbench.vue

@@ -0,0 +1,51 @@
+<template>
+  <!-- -------------------------- 待处理 ----------------------------- -->
+  <div class="bgColorSz">
+    <el-calendar>
+      <!-- 这里使用的是 2.5 slot 语法,对于新项目请使用 2.6 slot 语法-->
+      <template
+        slot="dateCell"
+        slot-scope="{date, data}"
+      >
+        <p :class="data.isSelected ? 'is-selected' : ''">
+          {{ data.day.split('-').slice(1).join('-') }} {{ data.isSelected ? '✔️' : '' }}
+        </p>
+      </template>
+    </el-calendar>
+
+  </div>
+</template>
+<script>
+
+import { } from '@/api/workbench'
+
+export default {
+  name: 'TeamWorkbench',
+  data() {
+    return {
+
+    }
+  },
+  created() {
+
+  },
+  methods: {
+
+  }
+}
+</script>
+<style scoped>
+ .is-selected {
+    color: #1989FA;
+  }
+  .bgColorSz {
+    width: 100%;
+    height: 96vh;
+    background: #F2F3F6;
+    font-size: 0.9rem;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
+
+</style>

+ 3 - 0
src/views/Platform/Workbench/testa.vue

@@ -0,0 +1,3 @@
+<template>
+  <router-view />
+</template>

+ 29 - 28
src/views/Platform/presentation/ResultPageyL.vue

@@ -202,9 +202,9 @@
       </div>
     </div>
 
-    <el-dialog title="邮件预览" width="70%" center :visible.sync="dialogTableVisible" @open="idGet()">
+    <el-dialog title="邮件预览" width="80%" center :visible.sync="dialogTableVisible" @open="idGet()">
       <div align="center">
-        <el-button type="primary" size="mini" @click="promptEmail(ClientDatayl)">确定发送</el-button>
+        <el-button type="primary" size="mini" @click="dialogFormVisible_one = true">确定发送</el-button>
         <el-button size="mini" @click="download()">确定下载</el-button>
       </div>
       <div id="resumeId" class="eleStyle">
@@ -401,6 +401,22 @@
         </div>
       </div>
     </el-dialog>
+
+    <!-- 发送报告 -->
+    <el-dialog title="发送邮件" width="30%" :visible.sync="dialogFormVisible_one">
+      <el-form label-position="center" :model="form" label-width="80px">
+        <el-form-item label="发送 : ">
+          <el-input v-model="form.name" placeholder="请填写邮箱前缀,邮箱名以 , 分割" />
+        </el-form-item>
+        <el-form-item label="抄送 : ">
+          <el-input v-model="form.names" placeholder="请填写邮箱前缀,邮箱名以 , 分割" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormVisible_one = false">取 消</el-button>
+        <el-button type="primary" @click="sendReport(form)">确 定</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -427,6 +443,7 @@ export default {
       moniterResultChange: { color: '' },
       showData: false,
       dialogTableVisible: false,
+      dialogFormVisible_one: false,
       status: '',
       acceptanceResult: '',
       sctResult: '',
@@ -456,7 +473,8 @@ export default {
       fctResult: '',
       moniterResult: '',
       rqtResult: '',
-      safeResult: ''
+      safeResult: '',
+      form: {}
     }
   },
   created() {
@@ -580,49 +598,32 @@ export default {
     download1() {
       this.getPdf('resumeId1', this.name)
     },
-
-    promptEmail(e) {
-      this.$prompt('请输入邮箱', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消'
-      }).then(({ value }) => {
-        this.sendReport(value, e)
-      }).catch(() => {
-        this.$message({ type: 'info', message: '取消输入' })
-      })
-    },
-    promptEmail1(e) {
-      this.$prompt('请输入邮箱', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消'
-      }).then(({ value }) => {
-        this.sendReport1(value, e)
-      }).catch(() => {
-        this.$message({ type: 'info', message: '取消输入' })
-      })
-    },
-    sendReport(e, ele) {
+    sendReport(e) {
+      var ele = this.ClientDatayl
       setTimeout(() => {
         var that = this
         html2canvas(document.getElementById('resumeId'), { useCORS: true }).then(function(canvas) {
           var imgData = canvas.toDataURL('image/png')
           var sendImgData = imgData.substring(imgData.indexOf(',') + 1)
-          var postData = { 'reportId': ele.id, 'imgStr': sendImgData, 'url': window.location.href, 'emailUser': e }
+          var postData = { 'reportId': ele.id, 'imgStr': sendImgData, 'url': window.location.href, 'emailUser': e.name, 'copyTo': e.names }
           projectTestReportSendmail(postData).then(res => {
+            that.dialogFormVisible_one = false
             res.code === 200 ? that.$message.success('发送测试报告成功') : that.$message.error('发送测试报告失败,请联系管理员!')
           })
         })
       }, 500)
     },
 
-    sendReport1(e, ele) {
+    sendReport1(e) {
+      var ele = this.ClientDatayl
       setTimeout(() => {
         var that = this
         html2canvas(document.getElementById('resumeId1'), { useCORS: true }).then(function(canvas) {
           var imgData = canvas.toDataURL('image/png')
           var sendImgData = imgData.substring(imgData.indexOf(',') + 1)
-          var postData = { 'reportId': ele.id, 'imgStr': sendImgData, 'url': window.location.href, 'emailUser': e }
+          var postData = { 'reportId': ele.id, 'imgStr': sendImgData, 'url': window.location.href, 'emailUser': e.name, 'copyTo': e.names }
           projectTestReportSendmail(postData).then(res => {
+            that.dialogFormVisible_one = false
             res.code === 200 ? that.$message.success('发送测试报告成功') : that.$message.error('发送测试报告失败,请联系管理员!')
           })
         })

+ 22 - 16
src/views/Platform/presentation/acceptTheReport.vue

@@ -96,7 +96,7 @@
 
     <el-dialog title="邮件预览" width="70%" center :visible.sync="dialogTableVisible" @open="dasd()">
       <div align="center">
-        <el-button type="primary" size="mini" @click="promptEmail(fromCreateData)">确定发送</el-button>
+        <el-button type="primary" size="mini" @click="dialogFormVisible = true">确定发送</el-button>
         <el-button size="mini" @click="download()">确定下载</el-button>
       </div>
       <div id="resumeId" class="eleStyle">
@@ -191,6 +191,21 @@
         </div>
       </div>
     </el-dialog>
+    <!-- 发送报告 -->
+    <el-dialog title="发送邮件" width="30%" :visible.sync="dialogFormVisible">
+      <el-form label-position="center" :model="form" label-width="80px">
+        <el-form-item label="发送 : ">
+          <el-input v-model="form.name" placeholder="请填写邮箱前缀,邮箱名以 , 分割" />
+        </el-form-item>
+        <el-form-item label="抄送 : ">
+          <el-input v-model="form.names" placeholder="请填写邮箱前缀,邮箱名以 , 分割" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormVisible = false">取 消</el-button>
+        <el-button type="primary" @click="sendReport(form)">确 定</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -208,6 +223,8 @@ export default {
       lateStatus1: { color: 'red' },
       safeStatus1: { color: 'green' },
       dialogTableVisible: false,
+      dialogFormVisible: false,
+      form: {},
       dependentCom: '',
       config: '',
       showDelay: false,
@@ -235,16 +252,6 @@ export default {
     download() {
       this.getPdf('resumeId', this.name)
     },
-    promptEmail(e) {
-      this.$prompt('请输入邮箱', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消'
-      }).then(({ value }) => {
-        this.sendReport(value, e)
-      }).catch(() => {
-        this.$message({ type: 'info', message: '取消输入' })
-      })
-    },
     idGet() {
       launchTest({ id: this.$route.query.id }).then((res) => {
         this.fromCreateData = res.data
@@ -294,14 +301,16 @@ export default {
       })
     },
     open() { this.$router.push({ path: '/Platform/presentation/Assumptions' }) },
-    sendReport(e, ele) {
+    sendReport(e) {
+      var ele = this.fromCreateData
       setTimeout(() => {
         var that = this
         html2canvas(document.getElementById('resumeId'), { useCORS: true }).then(function(canvas) {
           var imgData = canvas.toDataURL('image/png')
           var sendImgData = imgData.substring(imgData.indexOf(',') + 1)
-          var postData = { 'reportId': ele.id, 'imgStr': sendImgData, 'url': window.location.href, 'emailUser': e }
+          var postData = { 'reportId': ele.id, 'imgStr': sendImgData, 'url': window.location.href, 'emailUser': e.name, 'copyTo': e.names }
           launchTestSendmail(postData).then(res => {
+            that.dialogFormVisible = false
             that.dialogTableVisible = false
             res.code === 200 ? that.$message.success('发送测试报告成功') : that.$message.error('发送测试报告失败,请联系管理员!')
           })
@@ -324,9 +333,6 @@ export default {
     font-size: 14px;
     color: #606266;
   }
-  .el-form-item {
-    margin: -5px 0;
-  }
   .titleStyle {
     color: #333B4A;
     margin: 1% 0;

+ 23 - 18
src/views/Platform/presentation/testPresenyL.vue

@@ -12,10 +12,6 @@
             </span>
           </div>
           <div style="font-size:15px;color:#606266;" class="rich" v-html="projectProgress" />
-          <!-- <div class="titleStyle">一. 进度和风险</div> -->
-          <!-- <div class="titleStyle">二. 测试情况</div> -->
-          <!-- <div style="font-size:15px;color:#606266;" class="rich" v-html="TestProgress" /> -->
-
           <div class="titleStyle">三. bug情况</div>
           <div style="border: 1px,solid #ccc;font-size:14px;color:#606266;">
             <div style="margin: 1%;">1、bug统计</div>
@@ -33,7 +29,7 @@
     </div>
     <el-dialog title="邮件预览" width="70%" center :visible.sync="dialogTableVisible" @open="dasd()">
       <div align="center">
-        <el-button type="primary" size="mini" @click="promptEmail(fromCreat)">确定发送</el-button>
+        <el-button type="primary" size="mini" @click="dialogFormVisible = true">确定发送</el-button>
         <el-button size="mini" @click="download()">确定下载</el-button>
       </div>
       <div id="Gambol" class="eleStyle">
@@ -62,6 +58,21 @@
         </div>
       </div>
     </el-dialog>
+    <!-- 发送报告 -->
+    <el-dialog title="发送邮件" width="30%" :visible.sync="dialogFormVisible">
+      <el-form label-position="center" :model="form" label-width="80px">
+        <el-form-item label="发送 : ">
+          <el-input v-model="form.name" placeholder="请填写邮箱前缀,邮箱名以 , 分割" />
+        </el-form-item>
+        <el-form-item label="抄送 : ">
+          <el-input v-model="form.names" placeholder="请填写邮箱前缀,邮箱名以 , 分割" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormVisible = false">取 消</el-button>
+        <el-button type="primary" @click="sendReport(form)">确 定</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -70,7 +81,7 @@ import echarts from 'echarts'
 import { bugDailyList, dailyReport } from '@/api/testPresentetion'
 import { dailyReportSendmail } from '@/api/ResultPage'
 import html2canvas from 'html2canvas'
-// import domtoimage from 'dom-to-image'
+
 export default {
   name: 'TestPresenyL',
   data() {
@@ -78,6 +89,7 @@ export default {
       userInformation: localStorage.getItem('username'),
       userNames: localStorage.getItem('realname'),
       dialogTableVisible: false,
+      dialogFormVisible: false,
       bugshow: '',
       postData: {},
       fromCreat: {},
@@ -89,6 +101,7 @@ export default {
       statusMap: [],
       statusList: [],
       pro: '',
+      form: {},
       name: '',
       btn: true
     }
@@ -163,26 +176,18 @@ export default {
     download() {
       this.getPdf('Gambol', this.name)
     },
-    promptEmail(e) {
-      this.$prompt('请输入邮箱', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消'
-      }).then(({ value }) => {
-        this.sendReport(value, e)
-      }).catch(() => {
-        this.$message({ type: 'info', message: '取消输入' })
-      })
-    },
 
-    sendReport(e, ele) {
+    sendReport(e) {
+      var ele = this.fromCreat
       var node = document.getElementById('Gambol')
       setTimeout(() => {
         var that = this
         html2canvas(node, { useCORS: true }).then(function(canvas) {
           var url = canvas.toDataURL('image/png', 1)
           url = url.toString().substring(url.indexOf(',') + 1)
-          var postData = { 'reportId': ele.id, 'imgStr': url, 'url': window.location.href, 'emailUser': e }
+          var postData = { 'reportId': ele.id, 'imgStr': url, 'url': window.location.href, 'emailUser': e.name, 'copyTo': e.names }
           dailyReportSendmail(postData).then(res => {
+            that.dialogFormVisible = false
             that.dialogTableVisible = false
             res.code === 200 ? that.$message({ type: 'success', message: '发送测试报告成功' }) : that.$message({ type: 'error', message: '发送测试报告失败,请联系管理员!' })
           })

+ 1 - 1
src/views/Platform/testPage.vue

@@ -28,7 +28,7 @@
           <el-container>
             <el-header style="background:#ffffff; height: auto; width: 98%; margin: 1%; font-size: 13px; border-radius: 8px;">
               <el-row>
-                <el-col :span="24" style="white-space:nowrap; display: flex; justify-content: center; align-items: center;">
+                <el-col :span="24" style="white-space:nowrap; display: flex; justify-content: left; align-items: center;">
                   序列号
                   <el-input v-model="test_plan.id" clearable placeholder="请填写" style="width: 20%; margin: 3% 2%" />
                   测试计划状态

+ 4 - 5
src/views/Platform/useCase/updateUse.vue

@@ -149,11 +149,10 @@ export default {
     },
 
     deleteURL(vel) {
-      for (var i = 0; i < this.uptataKey.length; i++) {
-        if (this.uptataKey[i].name === vel.name) {
-          this.uptataKey.splice(i, 1)
-        }
-      }
+      var arr = this.uptataKey.filter(item => {
+        return vel.url !== item.url
+      })
+      this.uptataKey = arr
     },
 
     // 编辑_数据

+ 3 - 4
src/views/Platform/useCasePage.vue

@@ -371,10 +371,9 @@ export default {
     clickAllData(rows) {
       queryCasesData({ caseFolderId: this.startId }).then(res => {
         var table_Data = res.data.list
-        for (var el of table_Data) {
-          this.tableData.push(el.id)
-          console.log(this.tableData)
-        }
+        this.tableData = table_Data.map(item => {
+          return item.id
+        })
       })
     },
 

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

@@ -322,7 +322,7 @@ export default {
           this.$router.push({ name: 'jar包管理' })
           break
         case '4' :
-          this.$router.push({ name: 'workbench' })
+          this.$router.push({ name: '个人工作台' })
           break
         case '6':
           this.$router.push({ name: '单车' })