qinzhipeng_v 5 년 전
부모
커밋
0bbd49cefd

+ 2 - 2
src/apiConfig/api.js

@@ -1,6 +1,6 @@
 /*eslint-disable*/   //规避eslint的检查,如没有eslint可不写
-// export const mockUrl = 'http://10.179.24.176:8980' // 线下
-export const mockUrl = 'http://10.179.24.123:8980' // 线上
+export const mockUrl = 'http://10.179.24.176:8980' // 线下
+// export const mockUrl = 'http://10.179.24.123:8980' // 线上
 
 // export const mockUrl = 'http://172.23.162.226:8980' // 舒宁本地
 

+ 1 - 0
src/views/projectManage/dialog_vue.vue

@@ -150,6 +150,7 @@ export default {
               that.$set(that.task_form, 'followVersion', '')
               that.ascription_project = true
               that.$set(that.task_form, 'requireId', res.data[0].name)
+              that.$set(that.task_form, 'projectId', res.data[0].name)
               that.task_form.followVersion === '' ? that.show_Client = false : ''
             }, 300)
           })

+ 7 - 2
src/views/projectManage/projectList/projectViewDetails.vue

@@ -44,7 +44,7 @@
             <span style="text-align: center;margin-right:10%;">
               <p>Bug数量</p>
               <p style="font-size: 44px;">{{ form_query.bugCount }}</p>
-              <p><el-button size="mini" type="primary">提bug</el-button></p>
+              <p><el-button size="mini" type="primary" @click="created_bug">提bug</el-button></p>
             </span>
           </div>
         </el-aside>
@@ -138,7 +138,7 @@
           <div class="aside" @click="show2 = !show2,AttributionDemand()">归属需求任务</div>
           <transition name="el-zoom-in-top">
             <div v-show="show2" class="transition-box">
-              <el-table :data="tableData" style="width: 100%;" size="mini" :header-cell-style="{ background: '#6AB4FF', color: '#FFFFFF' }" show-overflow-tooltip="true">
+              <el-table v-loading="loading" :data="tableData" style="width: 100%;" size="mini" :header-cell-style="{ background: '#6AB4FF', color: '#FFFFFF' }" show-overflow-tooltip="true">
                 <el-table-column label="需求名称" min-width="100" align="center" show-overflow-tooltip>
                   <template slot-scope="scope">
                     <span @click="click_name(scope.row.id)">{{ scope.row.name }}</span>
@@ -506,6 +506,9 @@ export default {
         }
       })
     },
+    created_bug() {
+      this.$router.push({ name: '新建Bug', query: { }}) // 缺陷报告
+    },
     modifyProject(e) { // 修改(提交)
       this.$refs['project_from'].validate((valid) => {
         if (valid) {
@@ -589,8 +592,10 @@ export default {
       })
     },
     AttributionDemand() { // 归属需求任务
+      this.loading = true
       requirementQueryRequirementInfoList({ projectId: Number(this.projectId[1]), curIndex: this.curIndex, pageSize: this.pageSize }).then(res => {
         this.tableData = res.data.list
+        this.loading = false
       })
     },
     reated_task(e) { // 建任务

+ 137 - 56
src/views/projectManage/taskList/taskViewDetails.vue

@@ -1,10 +1,11 @@
 <template>
   <div style="background-color:#F2F3F6;display:flex;align-items: center;justify-content: center;">
     <el-container>
-      <el-header class="bgborder" style=" margin: 1%;height: 7vh;display: flex; justify-content: space-between; align-items: center;">
-        <div style="float: left;">
-          <el-tooltip class="item" effect="dark" content="爱啥啥" placement="bottom">
-            <span style="font-weight: 600;"><span style="background: red;">未知</span>任务:{{ task_form.name }}</span>
+      <el-header class="bgborder" style=" margin: 1%; min-height:8vh;display: flex; justify-content: space-between; align-items: center;">
+        <div style="float: left;display: flex; justify-content: space-between; align-items: center;">
+          <span style="background: red; text-align:center; border-radius:8px; min-height: auto;display: flex; justify-content: space-between; align-items: center;color: #FFF; ">{{ task_form.stageString }}<br>{{ task_form.lateMsg }}</span>
+          <el-tooltip class="item" effect="dark" :content="task_form.name" placement="bottom">
+            <span style="font-weight: 600;margin-right:10px;">任务:{{ task_form.name }}</span>
           </el-tooltip>
           <el-dropdown @command="handleCommand">
             <el-button size="mini" type="primary" plain class="el-dropdown-link drop_down" style="cursor: pointer;">{{ task_form.statusString }}<i class="el-icon-arrow-down el-icon--right" /></el-button>
@@ -51,19 +52,19 @@
             <el-form label-position="left" style="margin: 0 8%" :model="task_form">
               <el-row :gutter="20">
                 <el-col :span="19">
-                  <el-form-item label="所属项目:" label-width="90px" style="word-break: break-all;">{{ task_form.projectName }}</el-form-item>
+                  <el-form-item label="所属项目:" label-width="90px" style="word-break: break-all;"><span style="color: #409EFF;cursor: pointer;" @click="devUrl_tow(1, task_form.projectId)">{{ task_form.projectName }}</span></el-form-item>
                 </el-col>
                 <el-col :span="1">
                   <el-button size="mini" type="primary" @click="open_created(task_form.describe)">修 改</el-button>
                 </el-col>
               </el-row>
-              <el-form-item label="所属需求:" label-width="90px">{{ task_form.requireName }}</el-form-item>
+              <el-form-item label="所属需求:" label-width="90px"><span style="color: #409EFF;cursor: pointer;" @click="devUrl_tow(3, task_form.requireId)">{{ task_form.requireName }}</span></el-form-item>
               <el-form-item label="业务线/平台/模块:" label-width="150px">{{ task_form.bizIdString }} / {{ task_form.typeString }} / {{ task_form.clientTypeString }}</el-form-item>
               <el-form-item label="是否免测:" label-width="90px">{{ task_form.noTestString }}</el-form-item>
               <el-form-item label="开发负责人:" label-width="100px">{{ task_form.rdObject.name }}</el-form-item>
               <el-form-item label="测试负责人:" label-width="100px">{{ task_form.qaObject.name }}</el-form-item>
               <el-form-item label="涉及的客户端:" label-width="120px">{{ task_form.involveAppString }}</el-form-item>
-              <el-form-item label="技术文档:" label-width="90px" style="word-break: break-all;">{{ task_form.devUrl }}</el-form-item>
+              <el-form-item label="技术文档:" label-width="90px" style="word-break: break-all;"><span style="color: #409EFF;cursor: pointer;" @click="devUrl_tow(2, task_form.devUrl)">{{ task_form.devUrl }}</span></el-form-item>
 
             </el-form>
           </el-main>
@@ -106,7 +107,7 @@
             <el-table-column label="操作" min-width="100" align="center">
               <template slot-scope="scope">
                 <el-button size="mini" type="primary" plain @click="event_query(scope.row.id)">编辑</el-button>
-                <el-button size="mini" type="primary" plain>删除</el-button>
+                <el-button v-if="scope.row.canDelete === 1? false : true" size="mini" type="primary" plain>删除</el-button>
               </template>
             </el-table-column>
           </el-table>
@@ -142,39 +143,29 @@
           <el-tab-pane label="Bug" style="position: relative;">
             <div style="padding: 1% 0;display: flex; justify-content: space-start; align-items: center;border-top: 1px solid #E9E9E9;">
               <span>快速筛选:</span>
-              <span style="margin-left:2%;">全部</span>
-              <span style="margin-left:2%;">待测试</span>
-              <span style="margin-left:2%;">开发中</span>
-              <span style="margin-left:2%;">待开发</span>
-              <span style="margin-left:2%;">已完成</span>
+              <span v-for="(item, code) of bugStatus" :key="code" class="status" @click="bug_list(item.code)">{{ item.msg }}</span>
             </div>
             <el-table :data="bugBaseInfoDOList" style="width: 100%;" size="mini" :header-cell-style="{ background: '#6AB4FF', color: '#FFFFFF' }" show-overflow-tooltip="true">
               <el-table-column label="标题名称" min-width="100" align="center">
-                <template slot-scope="scope">{{ scope.row.teamName }}</template>
+                <template slot-scope="scope">{{ scope.row.bugName }}</template>
               </el-table-column>
               <el-table-column label="状态" min-width="100" align="center">
-                <!-- <template slot-scope="scope"> -->
-                <el-dropdown @command="handleCommand">
-                  <el-button size="mini" type="primary" plain class="el-dropdown-link drop_down" style="cursor: pointer;">{{ task_form.statusString }}<i class="el-icon-arrow-down el-icon--right" /></el-button>
-                  <el-dropdown-menu slot="dropdown" align="center">
-                    <el-dropdown-item v-for="item in taskStatus" :key="item.value" :command="{value:item.code,label:item.msg}">{{ item.msg }}</el-dropdown-item>
-                  </el-dropdown-menu>
-                </el-dropdown>
-                <!-- {{ scope.row.teamName }} -->
-                <!-- </template> -->
+                <template slot-scope="scope">
+                  {{ scope.row.bugStatusName }}
+                </template>
               </el-table-column>
               <el-table-column label="提报人" min-width="100" align="center">
-                <template slot-scope="scope">{{ scope.row.teamName }}</template>
+                <template slot-scope="scope">{{ scope.row.creatorList }}</template>
               </el-table-column>
               <el-table-column label="责任人" min-width="100" align="center">
-                <template slot-scope="scope">{{ scope.row.teamName }}</template>
+                <template slot-scope="scope">{{ scope.row.assignerList }}</template>
               </el-table-column>
               <el-table-column label="提报日期" min-width="100" align="center">
-                <template slot-scope="scope">{{ scope.row.teamName }}</template>
+                <template slot-scope="scope">{{ scope.row.gmtCreate }}</template>
               </el-table-column>
             </el-table>
             <div style="display:flex;align-items: center;justify-content: flex-end;">
-              <el-pagination background :current-page="currentPage" :page-sizes="[15, 20, 25, 30]" :page-size="100" layout="total, prev, pager, next, jumper" :total="100" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+              <el-pagination background :current-page="currentPage" :page-sizes="[15, 20, 25, 30]" :page-size="15" layout="total, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
             </div>
           </el-tab-pane>
           <el-tab-pane label="提测报告" style="overflow: auto;width: 100%;">
@@ -286,6 +277,18 @@
         <el-button type="primary" @click="even === '新建事件'? event_created(form):event_update(form)">确 定</el-button>
       </div>
     </el-dialog>
+    <el-dialog :visible.sync="centerDialogVisible_status" width="30%" center>
+      <div align="center" style="margin-bottom: 8%; font-weight: 600;">状态变更:已上线</div>
+      <el-row :gutter="24" style="margin: 2% 3%">
+        <el-col :span="24" style="display: flex; justify-content: space-between; align-items: center; white-space:nowrap;">
+          <span>实际上线时间:</span> <el-date-picker v-model="NewDate" :default-value="new Date()" type="date" placeholder="选择日期" style="width:100%" />
+        </el-col>
+      </el-row>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="mini" @click="centerDialogVisible_status = false">关 闭</el-button>
+        <el-button size="mini" type="primary" @click="task_status_uptate(NewDate)">确 定</el-button>
+      </span>
+    </el-dialog>
     <!-- 删除 -->
     <el-dialog :visible.sync="centerDialogVisible_task" width="30%" center>
       <div align="center">确定要删除<span style="color:red;"> {{ task_form.name }} </span> 的任务吗?</div>
@@ -302,6 +305,8 @@
 <script>
 import { taskGet, memberQueryMemberInfoByIDAPorName, bugGetBugStatusMapInfo, configShowTaskEnum, ScheduleCreate, tasktaskDelete, taskUpdate, ScheduleUpdate, commentCreate, commentList } from '@/api/taskIndex' // ajax
 import openDialog from '@/views/projectManage/dialog_vue'
+import { launchTestUpdate } from '@/api/projectPage.js'
+import { bugList } from '@/api/defectManage'
 import echarts from 'echarts'
 export default {
   components: {
@@ -310,6 +315,8 @@ export default {
   data() {
     return {
       dialog_open: false,
+      curIndex: 1,
+      pageSize: 15,
       task_form: {
         statusString: '未开始',
         describe: '',
@@ -321,11 +328,13 @@ export default {
         }
       },
       CallBackTheReason: '', // 打回原因
+      NewDate: new Date(),
       content: '', // 评论
       comment_content: '', // 评论内容
       commentTxt: [],
       commentShow: true, // 评论为空默认显示
       dialog_launchTestInfoDOS: false, // 打回弹窗
+      centerDialogVisible_status: false, // status
       currentPage: 0,
       tiem_date: { // 排期汇总
         startTime: '',
@@ -371,20 +380,16 @@ export default {
         desc: ''
       },
       formLabelWidth: '100px',
-      project_Milepost: [
-        {
-          name: '第一阶段',
-          date: '2019/12/06',
-          code: '你丹江口市内存卡就是你的错'
-        }
-      ],
       tasktId: '',
       echarts_name: [], // echarts_name
       echarts_value: [], // echats_value
       fixInFutureCount: '', // 已延期
       totalCount: '', // bug总数
+      bugStatus: [],
       test: {},
-      taskStatus: []
+      taskStatus: [],
+      CallBackStatus: '',
+      CallBackId: ''
     }
   },
   created() {
@@ -407,6 +412,7 @@ export default {
       configShowTaskEnum().then(res => {
         this.taskScheduleEvent = res.data.taskScheduleEvent
         this.taskStatus = res.data.taskStatus
+        this.bugStatus = res.data.bugStatus
       })
       taskGet(this.taskId[1]).then(res => {
         this.task_form = res.data
@@ -418,14 +424,20 @@ export default {
         this.launchTestInfoDOS = res.data.launchTestInfoDOS // 提测
         this.dailyTestReports = res.data.dailyTestReports // 测试
         this.projectTestReportDOS = res.data.projectTestReportDOS // 准出
-        this.task_form.bugBaseInfoDOList !== null ? this.bugBaseInfoDOList = res.date.bugBaseInfoDOList : this.bugBaseInfoDOList = [] // bug
+        bugList({ taskId: this.taskId[1], pageSize: this.pageSize, curIndex: this.curIndex }).then(res => {
+          if (res.code === 200) {
+            if (!res.data) {
+              this.bugBaseInfoDOList = res.data
+              this.total = res.total
+            }
+          }
+        })
       })
       commentList({ type: 3, joinId: this.taskId[1] }).then(res => {
         this.commentTxt = res.data
         this.commentTxt !== '' ? this.commentShow = false : this.commentShow = true
       })
     },
-
     open_created(e) { // 打开弹窗
       var url = window.location.href // 获取url中"?"符后的字串
       this.taskId = url.split('?id=')
@@ -465,12 +477,30 @@ export default {
       }, 500)
     },
     handleCommand(command) {
-      this.task_form.statusString = command.label
+      if (command.label === '已上线') {
+        this.centerDialogVisible_status = true
+        return
+      } else {
+        this.task_form.statusString = command.label
+        var taskInfoDO = this.task_form
+        taskInfoDO.status = command.value
+        var user = { name: this.userNames, ename: this.userInformation, id: '' }
+        taskUpdate({ taskInfoDO, user }).then(res => {
+          if (res.code === 200) {
+            this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
+          }
+        })
+      }
+    },
+    task_status_uptate(e) {
+      this.task_form.statusString = '已上线'
       var taskInfoDO = this.task_form
-      taskInfoDO.status = command.value
+      taskInfoDO.status = 3
+      taskInfoDO.onlineRealTime = e
       var user = { name: this.userNames, ename: this.userInformation, id: '' }
       taskUpdate({ taskInfoDO, user }).then(res => {
         if (res.code === 200) {
+          this.centerDialogVisible_status = false
           this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
         }
       })
@@ -568,6 +598,18 @@ export default {
         }
       })
     },
+    bug_list(e) { // bug查询
+      bugList({ status: e, taskId: Number(this.taskId[1]) }).then(res => {
+        if (res.code === 200) {
+          if (res.data !== null) {
+            this.bugBaseInfoDOList = res.data
+            this.total = res.total
+          } else {
+            this.bugBaseInfoDOList = []
+          }
+        }
+      })
+    },
     comment(e) {
       this.content = ''
       this.commentShow = false
@@ -624,46 +666,69 @@ export default {
         this.$refs['form'].clearValidate()
       })
     },
+    devUrl_tow(e, ele) { // 技术文档
+      switch (e) {
+        case 1:
+          this.$router.push({ name: '项目详情', query: { id: ele }})
+          break
+        case 2:
+          window.open(ele, '_blank')
+          break
+        case 3:
+          this.$router.push({ name: '需求详情', query: { id: ele }})
+          break
+      }
+    },
     // 打回
     back(e, ele) {
       this.dialog_launchTestInfoDOS = true
-      // this.CallBackStatus = e
-      // this.CallBackId = ele
+      this.CallBackStatus = e
+      this.CallBackId = ele
     },
     // 通过
     pass(e, ele) {
-      // this.CallBackStatus = e
-      // this.CallBackId = ele
-      // this.passOrBackSend()
+      this.CallBackStatus = e
+      this.CallBackId = ele
+      this.passOrBackSend()
     },
     passOrBackSend() {
       this.dialog_launchTestInfoDOS = false
-      // const tt = { status: this.CallBackStatus, id: this.CallBackId }
-      // this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-      // this.objData = { launchTestInfo: tt, user: this.userData }
-      // launchTestUpdate(this.objData).then(res => {
-      //   res.code === 200 ? this.successFun('operate') : this.errorFun(res.msg)
-      //   this.getList()
-      // })
+      const tt = { status: this.CallBackStatus, id: this.CallBackId }
+      var userData = { id: '', ename: this.userInformation, name: this.userNames }
+      var objData = { launchTestInfo: tt, user: userData }
+      launchTestUpdate(objData).then(res => {
+        res.code === 200 ? this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 }) : this.$message({ message: res.msg, type: 'error', duration: 1000, offset: 150 })
+        this.get_List()
+      })
     },
     handleSizeChange(size) { //  分页
       this.pageSize = size
     },
     handleCurrentChange(curIndex) { //  分页
       this.curIndex = curIndex
+    },
+    dialogue() {
+
     },
     createReport(e, ele) {
-      console.log(ele)
       if (ele.typeString !== '服务端') {
         switch (e) {
           case 1:
-            this.$router.push({ path: '/Platform/presentation/PresentReport', query: { task: ele }}) // 客户端提测
+            if (this.task_form.statusString === '开发中') {
+              this.$router.push({ path: '/Platform/presentation/PresentReport', query: { task: ele }}) // 客户端提测
+            } else {
+              this.$message({ message: '该状态下不支持提测,请先将状态更改为【开发中】', type: 'success', duration: 1000, offset: 150 })
+            }
             break
           case 2:
             this.$router.push({ path: '/Platform/presentation/DailyNewsAdded', query: { task: ele, taskId: ele.id }}) // 客户端日报
             break
           case 3:
-            this.$router.push({ path: '/Platform/presentation/ClientAcceptance', query: { task: ele }}) // 客户端准出
+            if (this.task_form.statusString === '测试中') {
+              this.$router.push({ path: '/Platform/presentation/ClientAcceptance', query: { task: ele }}) // 客户端准出
+            } else {
+              this.$message({ message: '该状态下不支持提测,请先将状态更改为【测试中】', type: 'success', duration: 1000, offset: 150 })
+            }
             break
           case 4:
             this.$router.push({ name: '新建Bug', query: { id: ele.id }}) // 缺陷报告
@@ -672,13 +737,21 @@ export default {
       } else {
         switch (e) {
           case 1:
-            this.$router.push({ path: '/Platform/presentation/presentationReport', query: { task: ele }}) // 服务端提测
+            if (this.task_form.statusString === '开发中') {
+              this.$router.push({ path: '/Platform/presentation/presentationReport', query: { task: ele }}) // 服务端提测
+            } else {
+              this.$message({ message: '该状态下不支持提测,请先将状态更改为【开发中】', type: 'success', duration: 1000, offset: 150 })
+            }
             break
           case 2:
             this.$router.push({ path: '/Platform/presentation/DailyNewsAdded', query: { task: ele, taskId: ele.id }}) // 服务端日报
             break
           case 3:
-            this.$router.push({ path: '/Platform/presentation/Acceptance', query: { task: ele }}) // 服务端准出
+            if (this.task_form.statusString === '测试中') {
+              this.$router.push({ path: '/Platform/presentation/Acceptance', query: { task: ele }}) // 服务端准出
+            } else {
+              this.$message({ message: '该状态下不支持提测,请先将状态更改为【测试中】', type: 'success', duration: 1000, offset: 150 })
+            }
             break
           case 4:
             this.$router.push({ name: '新建Bug', query: { id: ele.id }}) // 缺陷报告
@@ -810,4 +883,12 @@ export default {
     margin: 0 0 15px;
     width: 80%;
 }
+.status {
+  margin-left:2%;
+ cursor: pointer;
+}
+
+.status:hover {
+  color: #6AB4FF;
+}
 </style>