|
@@ -1,1507 +0,0 @@
|
|
|
-<template>
|
|
|
- <div @click="display = false">
|
|
|
- <div class="bgbugTa" style="background-color:#F2F3F6;display:flex;align-items: center;justify-content: center;">
|
|
|
- <el-container>
|
|
|
- <el-header class="bgborder bgborderButton" style=" margin: 15px 1%; height:60px;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: bgStyle, color:colorStyle } " class="timeStyle">
|
|
|
- {{ task_form.stageString }}
|
|
|
- <br>
|
|
|
- {{ task_form.lateMsg }}
|
|
|
- </span>
|
|
|
- <el-tooltip :disabled="task_form.name && task_form.name.length < 19 ? true : false" class="item" effect="dark" :content="task_form.name" placement="bottom">
|
|
|
- <span style="font-size:20px;font-family:MicrosoftYaHei;color:rgba(51,51,51,1);">任务 : {{ task_form.name | ellipsis }}</span>
|
|
|
- </el-tooltip>
|
|
|
- <el-dropdown trigger="click" placement="bottom" @command="handleCommand">
|
|
|
- <el-button size="mini" style="cursor: pointer;margin-left:15px">
|
|
|
- {{ 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}"
|
|
|
- :disabled="task_form.statusString === item.msg? true: false"
|
|
|
- >{{ item.msg }}</el-dropdown-item>
|
|
|
- </el-dropdown-menu>
|
|
|
- </el-dropdown>
|
|
|
- </div>
|
|
|
- <span style="float: right;">
|
|
|
- <span style="display: inline-flex;vertical-align: middle; cursor: pointer; color: #6F7C93;" @click.stop="setChild(), display = true"><img style="width: 24px; display: inline-block;" :src="image_url"><span style="margin-left: 10px;">{{ num }}</span></span>
|
|
|
- <el-button style="margin: 0 10px;" size="mini" @click="centerDialogVisible_task = true">删除任务</el-button>
|
|
|
- <el-dropdown trigger="click" placement="bottom">
|
|
|
- <el-button size="mini" type="primary">
|
|
|
- 新建
|
|
|
- <i class="el-icon-arrow-down el-icon--right" />
|
|
|
- </el-button>
|
|
|
- <el-dropdown-menu slot="dropdown">
|
|
|
- <el-dropdown-item @click.native="createReport(4, task_form)">新建Bug</el-dropdown-item>
|
|
|
- <el-dropdown-item @click.native="createReport(1, task_form)">新建提测报告</el-dropdown-item>
|
|
|
- <el-dropdown-item @click.native="createReport(2, task_form)">新建测试报告</el-dropdown-item>
|
|
|
- <el-dropdown-item @click.native="createReport(3, task_form)">新建准出报告</el-dropdown-item>
|
|
|
- </el-dropdown-menu>
|
|
|
- </el-dropdown>
|
|
|
- </span>
|
|
|
- </el-header>
|
|
|
- <el-container>
|
|
|
- <el-aside class="bgborder" style="overflow: hidden; margin:0 1%;minWidth: 55%;">
|
|
|
- <div style="display:flex;align-items: center;margin-bottom:20px;margin: 20px 0 50px 20px;">
|
|
|
- <div style="width:4px;height:17px;background:#409EFF;border-radius:1px;" />
|
|
|
- <div style="width:83px;height:20px;font-size:16px;font-family:MicrosoftYaHei;color:rgba(51,59,74,1);margin-left:6px">数据统计</div>
|
|
|
- </div>
|
|
|
- <div style="display: flex; justify-content: space-between; align-items: center;">
|
|
|
- <span style="text-align: center; margin-left: 8%; border-right:1px solid #BBBBBB; padding-right: 8%;">
|
|
|
- <p style="width: 70px;">bug数量</p>
|
|
|
- <p style="font-size: 70px;">{{ totalCount }}</p>
|
|
|
- <p v-show="fixInFutureCount <= 0? false: true">
|
|
|
- <span style="color: #F56C6C; width: 100px;">暂不修复bug{{ fixInFutureCount }}个</span>
|
|
|
- </p>
|
|
|
- </span>
|
|
|
- <div id="div1" style="width:100%;height:300px;margin-bottom: 3%;" />
|
|
|
- </div>
|
|
|
- </el-aside>
|
|
|
- <el-container>
|
|
|
- <el-main class="bgborder form_e special-button" style="overflow: hidden;margin: 0 2.1% 0 0;min-height: 50vh;">
|
|
|
- <div style="display:flex;align-items: center;margin-bottom:20px;margin: 20px 0 0 20px;">
|
|
|
- <div style="width:4px;height:17px;background:#409EFF;border-radius:1px;" />
|
|
|
- <div style="width:83px;height:20px;font-size:16px;font-family:MicrosoftYaHei;color:rgba(51,59,74,1);margin-left:6px">基础信息</div>
|
|
|
- </div>
|
|
|
- <el-form label-position="left" label-width="150px" style="margin: 0 4%;font-size: 14px;color: rgb(102, 102, 102);" :model="task_form">
|
|
|
- <div style="text-align: right;">
|
|
|
- <el-button size="mini" @click="open_created(task_form.describe)">修改</el-button>
|
|
|
- </div>
|
|
|
- <el-row :gutter="20">
|
|
|
- <el-col :span="19">
|
|
|
- <el-form-item label="所属项目:" style="word-break: break-all;">
|
|
|
- <span v-show="task_form.projectName !== '无归属项目'" style="color: #409EFF;cursor: pointer;" @click="devUrl_tow(1, task_form.projectId)">{{ task_form.projectName }}</span>
|
|
|
- <span v-show="task_form.projectName === '无归属项目'">{{ task_form.projectName }}</span>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <el-form-item label="所属需求:" label-width="150px">
|
|
|
- <span v-show="task_form.requireName !== '无归属需求'" style="color: #409EFF;cursor: pointer;" @click="devUrl_tow(3, task_form.requireId)">{{ task_form.requireName }}</span>
|
|
|
- <span v-show="task_form.requireName === '无归属需求'">{{ task_form.requireName }}</span>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="模块:">{{ task_form.moduleInfoName }}</el-form-item>
|
|
|
- <el-form-item label="是否免测:">{{ task_form.noTestString }}</el-form-item>
|
|
|
- <el-form-item label="开发负责人:">{{ task_form.rdObject === null? '' : task_form.rdObject.name }}</el-form-item>
|
|
|
- <el-form-item label="测试负责人:">{{ task_form.qaObject === null? '' : task_form.qaObject.name }}</el-form-item>
|
|
|
- <el-form-item label="涉及的客户端:">{{ task_form.involveAppString }}</el-form-item>
|
|
|
- <el-form-item label="技术文档:" 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>
|
|
|
- </el-container>
|
|
|
- </el-container>
|
|
|
- <el-header class="bgborder" style="margin: 1%;height: auto; padding: 0;">
|
|
|
- <div style="display:flex;align-items: center;margin-bottom:20px;margin: 20px 0 20px 20px;">
|
|
|
- <div style="width:4px;height:17px;background:#409EFF;border-radius:1px;" />
|
|
|
- <div style="width:83px;height:20px;font-size:16px;font-family:MicrosoftYaHei;color:rgba(51,59,74,1);margin-left:6px">排期事件</div>
|
|
|
- </div>
|
|
|
- <div style="margin: 2% 20px; display: flex; align-items: center; justify-content: space-between;">
|
|
|
- <el-button size="mini" type="primary" plain icon="el-icon-plus" @click="add_Event">添加事件</el-button>
|
|
|
- <el-radio-group v-model="radio" size="mini" style="margin-left: 5%">
|
|
|
- <el-radio-button label="列表" @click.native="GanttChart(1)" />
|
|
|
- <el-radio-button label="甘特图" @click.native="GanttChart(2)" />
|
|
|
- </el-radio-group>
|
|
|
- </div>
|
|
|
- <div style=" margin: 0 20px; color: #333B4A;">
|
|
|
- <div v-show="Gantt" style="padding:0 46px">
|
|
|
- <gantt v-if="ganttData" :table-data="ganttData" string-type="事件" :versions="appVersion" />
|
|
|
- </div>
|
|
|
- <el-table v-show="table_show" :data="arr_event" style="width: 100%;" size="small" :header-cell-style="{ background: '#E9E9E9', color: '#333B4A' }" show-overflow-tooltip="true">
|
|
|
- <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="200" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.desc }}</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="排期" min-width="200" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.startTime | naspOut }} - {{ scope.row.endTime | naspOut }}</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="人员" min-width="200" align="center">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div v-for="item of scope.row.peopleObject" :key="item.idapId">{{ item.name }}</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="操作" min-width="200">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-button size="mini" type="primary" plain @click="event_query(scope.row.id)">编辑</el-button>
|
|
|
- <el-button v-if="scope.row.canDelete === 1? false : true" size="mini" type="primary" plain @click="event_delete(scope.row.id)">删除</el-button>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- <div class="dateSet">排期汇总:{{ tiem_date.startTime | naspOut }} ~ {{ tiem_date.endTime | naspOut }}</div>
|
|
|
- <div class="dateSet" style="border-bottom:1px solid #E9E9E9;">预计上线版本:{{ task_form.preOnlineVersion }}</div>
|
|
|
- <div class="dateSet" style=" display: flex; justify-content: start; align-items: center;">
|
|
|
- <div style="flex:1">实际提测时间:{{ task_form.launchTestRealTime | naspOut }}</div>
|
|
|
- <div style="flex:1">实际准出时间:{{ task_form.testFinishRealTime | naspOut }}</div>
|
|
|
- <div style="flex:1">实际上线完成时间:{{ task_form.onlineRealTime | naspOut }}</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </el-header>
|
|
|
- <el-footer class="footer" style=" height: auto;">
|
|
|
- <span style="text-align: right; margin: 1% 0 -3% 0;float:right;">
|
|
|
- <el-button size="mini" type="primary" plain icon="el-icon-plus" @click="createReport(4, task_form)">提Bug</el-button>
|
|
|
- <el-dropdown>
|
|
|
- <el-button size="mini" type="primary" plain>
|
|
|
- 新建
|
|
|
- <i class="el-icon-arrow-down el-icon--right" />
|
|
|
- </el-button>
|
|
|
- <el-dropdown-menu slot="dropdown">
|
|
|
- <el-dropdown-item @click.native="createReport(1, task_form)">新建提测报告</el-dropdown-item>
|
|
|
- <el-dropdown-item @click.native="createReport(2, task_form)">新建测试报告</el-dropdown-item>
|
|
|
- <el-dropdown-item @click.native="createReport(3, task_form)">新建准出报告</el-dropdown-item>
|
|
|
- </el-dropdown-menu>
|
|
|
- </el-dropdown>
|
|
|
- </span>
|
|
|
- <el-tabs tab-position="top" @tab-click="click_launchTestInfoDOS">
|
|
|
- <el-tab-pane label="Bug" style="position: relative;">
|
|
|
- <div style="padding: 1.5% 0;font-family: MicrosoftYaHei;color: rgba(51,51,51,1);font-size: 14px;align-items: center;display: flex; justify-content: space-start; align-items: center;border-top: 1px solid #E9E9E9;">
|
|
|
- <span>快速筛选:</span>
|
|
|
- <span v-for="(item, code) of bugStatus" :key="code" class="status" @click="bug_list(item.code)">
|
|
|
- <span :class="[item.code === codeCache ? 'selected' :'']">{{ item.msg }}</span>
|
|
|
- </span>
|
|
|
- </div>
|
|
|
- <el-table size="mini" :data="bugBaseInfoDOList" min-height="200" style="width: 100%; font-size: 14px; color:rgba(102,102,102,1);" show-overflow-tooltip="true" :default-sort="{prop: 'priorityCode'}" :header-cell-style="{ background: '#E9E9E9', color: '#333B4A', fontSize: '14px', fontWeight: '500',borderTop: '0.5px solid #EEF0F5'}">
|
|
|
- <el-table-column label="优先级" prop="priorityCode" sortable align="center">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div class="div_priority" :style="{background: priorityColors[scope.row.priorityCode]}">{{ scope.row.priorityLevel | oneA }}</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="bugName" label="缺陷标题" min-width="360" align="left" show-overflow-tooltip>
|
|
|
- <template slot-scope="scope">
|
|
|
- <span style=" color: #A7AEBC; font-size; 12px;">{{ 'BUG-' + scope.row.id }}</span><br>
|
|
|
- <span class="bugNameSty" @click.stop="click_bugName(scope.row.id)">{{ scope.row.bugName }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="bizName" label="业务线" align="center" />
|
|
|
- <el-table-column prop="priorityName" label="缺陷等级" align="center" />
|
|
|
- <el-table-column prop="bugStatusName" label="状态" min-width="110" align="center">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-select
|
|
|
- v-model="scope.row.status"
|
|
|
- :class="{
|
|
|
- 'item-color': scope.row.status === 0 || scope.row.status === 1,
|
|
|
- 'item': scope.row.status === 3,
|
|
|
- 'item1': scope.row.status === 2,
|
|
|
- 'item2': scope.row.status === 4,
|
|
|
- 'item3': scope.row.status === 5
|
|
|
- }"
|
|
|
- class="btns"
|
|
|
- size="mini"
|
|
|
- @change="blurEvent(scope.row, scope.row.status)"
|
|
|
- >
|
|
|
- <el-option v-for="item in bugEnumList" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="creatorList" label="提报人" align="center" />
|
|
|
- <el-table-column prop="assignerList" label="责任人" align="center" />
|
|
|
- <el-table-column prop="currentHandlerList" label="修复人" align="center" />
|
|
|
- <el-table-column prop="gmtCreate" label="创建日期" align="center">
|
|
|
- <template slot-scope="scope">
|
|
|
- {{ scope.row.gmtCreate | naspOut }}
|
|
|
- </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="[10, 20, 25]" :page-size="10" layout="total, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
|
|
- </div>
|
|
|
- </el-tab-pane>
|
|
|
- <el-tab-pane label="提测报告">
|
|
|
- <el-table :data="launchTestInfoDOS" size="small" :header-cell-style="{ background: '#E9E9E9', color: '#333B4A' }" show-overflow-tooltip="true">
|
|
|
- <el-table-column label="标题名称" min-width="150">
|
|
|
- <template slot-scope="scope">
|
|
|
- <span class="btn" @click="toReportView(scope.row, 2)">{{ scope.row.name }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="状态" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">
|
|
|
- <span :style="{color: stColors[scope.row.status]}"> {{ scope.row.statusString }} </span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="创建人" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.createrObject.name }}</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="创建日期" min-width="150" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.gmtCreate }}</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="操作" width="200">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div v-if="scope.row.status === 1 ? false : true">
|
|
|
- <span v-if="scope.row.status === 3 ? true : false" class="btn" @click="back(1,scope.row.id, scope.row)">通过</span>
|
|
|
- <span v-if="scope.row.status === 3 ? true : false" style="margin-left: 30px;" class="btn" @click="back(2,scope.row.id, scope.row)">打回</span>
|
|
|
- <span v-if="scope.row.status === 0 ? true : false" class="btn" @click="back(5,scope.row.id, scope.row)">发送</span>
|
|
|
- <span v-if="scope.row.status === 0 ? true : false" style="margin: 0 30px;" class="btn" @click="back(6,scope.row.id, scope.row)">编辑</span>
|
|
|
- <span v-if="scope.row.status === 0 ? true : false" class="btn" @click="back(4,scope.row.id, scope.row )">删除</span>
|
|
|
- <span v-if="scope.row.status === 2 ? true : false" class="btn" @click="back(3,scope.row.id, scope.row)">重新提测</span>
|
|
|
- <el-dialog :title="titName" :visible.sync="dialog_launchTestInfoDOS" width="30%" :close-on-click-modal="false">
|
|
|
- <div style="position: absolute; top: 23px; left: 12px;width:4px;height:17px;background:#409EFF;border-radius:1px;" />
|
|
|
- <div align="center">
|
|
|
- <div>是否{{ Str }}以下提测?</div>
|
|
|
- <div style="color: #f79232;">{{ requireName }}</div>
|
|
|
- </div>
|
|
|
- <el-input v-show="Str === '打回'" v-model="CallBackTheReason" type="textarea" placeholder="请输入打回原因..." :rows="3" />
|
|
|
- <span slot="footer" class="dialog-footer">
|
|
|
- <el-button type="primary" size="mini" @click="passOrBackSend()">确 定</el-button>
|
|
|
- <el-button type="danger" size="mini" @click="endDialog">取 消</el-button>
|
|
|
- </span>
|
|
|
- </el-dialog>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- <div align="right">
|
|
|
- <el-pagination background :current-page="currentPage" :page-sizes="[15, 20, 25]" :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="测试报告">
|
|
|
- <el-table :data="dailyTestReports" size="small" :header-cell-style="{ background: '#E9E9E9', color: '#333B4A' }" show-overflow-tooltip="true">
|
|
|
- <el-table-column label="标题名称" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">
|
|
|
- <a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView(scope.row, 0)">{{ scope.row.reportName }}</a>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="状态" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.statusString }}</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="创建人" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.createrObject.name }}</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="创建日期" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.gmtCreate }}</template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- <div align="right">
|
|
|
- <el-pagination background :current-page="currentPage" :page-sizes="[15, 20, 25]" :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="准出报告">
|
|
|
- <el-table :data="projectTestReportDOS" size="small" :header-cell-style="{ background: '#E9E9E9', color: '#333B4A' }" show-overflow-tooltip="true">
|
|
|
- <el-table-column label="标题名称" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">
|
|
|
- <a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView(scope.row, 1)">{{ scope.row.reportName }}</a>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="状态" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.reportStatusString }}</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="创建人" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.createrObject.name }}</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="创建日期" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.gmtCreate }}</template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- <div align="right">
|
|
|
- <el-pagination background :current-page="currentPage" :page-sizes="[15]" :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="评论">
|
|
|
- <p v-show="commentShow" style="color:#9B9B9B">还没有评论,快来评论吧!</p>
|
|
|
- <div v-for="(item, value) of commentTxt" :key="value" class="animated bounceInRight">
|
|
|
- <span style="color: #333B4A; font-size:14px;margin-left:1%;">{{ item.commentInfo.name }}</span>
|
|
|
- <span style="color: #9B9B9B; font-size:12px;margin-left:1%;">{{ item.commentInfo.gmtCreater }}</span>
|
|
|
- <p style="color: #333B4A; font-size:14px;margin-left:2%;">{{ item.commentInfo.content }}</p>
|
|
|
- </div>
|
|
|
- <el-input v-model="content" rows="6" type="textarea" placeholder="请输入评论内容..." show-word-limit />
|
|
|
- <p style="text-align: right;">
|
|
|
- <el-button size="small" type="primary" @click="comment(content)">发表评论</el-button>
|
|
|
- </p>
|
|
|
- </el-tab-pane>
|
|
|
- </el-tabs>
|
|
|
- </el-footer>
|
|
|
- </el-container>
|
|
|
- <el-dialog :visible.sync="centerDialogVisible" width="30%" center :close-on-click-modal="false">
|
|
|
- <div align="center">确定要删除此项目吗?</div>
|
|
|
- <span slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="centerDialogVisible = false">取 消</el-button>
|
|
|
- <el-button type="primary" @click="centerDialogVisible = false">确 定</el-button>
|
|
|
- </span>
|
|
|
- </el-dialog>
|
|
|
- <el-dialog :visible.sync="dialogFormVisible" :close-on-click-modal="false">
|
|
|
- <div style="display:flex;align-items: center;margin: -4% 7% 3% 4.5%;">
|
|
|
- <div style="width:4px;height:17px;background:#409EFF;border-radius:1px;" />
|
|
|
- <div style="width:83px;height:20px;font-size:18px;font-family:MicrosoftYaHei;color:rgba(51,59,74,1);margin-left:6px">{{ even }}</div>
|
|
|
- </div>
|
|
|
- <el-form ref="form" :model="form" :rules="form_rules" label-width="100px">
|
|
|
- <el-form-item label="事件类型" prop="type">
|
|
|
- <el-select v-show="even === '新建事件'" v-model="form.type" :loading="loading" clearable placeholder="请选择" style="width: 100%">
|
|
|
- <el-option v-for="item in taskScheduleEvent" :key="item.code" :label="item.msg" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- <el-input v-show="even === '编辑事件'" v-model="form.name" :disabled="fal_se" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="事件描述">
|
|
|
- <el-input v-model="form.desc" autocomplete="off" placeholder="请输入描述信息" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="排期" prop="date_start">
|
|
|
- <el-date-picker v-model="form.date_start" type="daterange" range-separator="~" start-placeholder="请选择开始日期" end-placeholder="请选择结束日期" value-format="yyyy-MM-dd HH:mm:ss" />
|
|
|
- <el-checkbox v-model="form.noHoliday" style="margin-left: 10px;">排除周末</el-checkbox>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="参与人员">
|
|
|
- <el-select v-model="form.peoples" multiple filterable remote placeholder="请输入姓名或者邮箱前缀" :remote-method="remoteMethod" :loading="loading" style="width: 100%">
|
|
|
- <el-option v-for="item in options" :key="item.idap" :label="item.name" :value="test2(item, 0)">
|
|
|
- <div style="display: flex;justify-content: start;">
|
|
|
- <div style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden">{{ item.deptName }}</div>
|
|
|
- <div style="min-width:80px">{{ item.name }}</div>
|
|
|
- <div style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden">{{ item.idap }}</div>
|
|
|
- </div>
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="排期" prop="date_start">
|
|
|
- <sel-date-picker :start-end="form.date_start" />
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- <div slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="dialogFormVisible = false">取 消</el-button>
|
|
|
- <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 :close-on-click-modal="false">
|
|
|
- <div align="center" style="margin-bottom: 8%; font-weight: 600;">状态变更:已上线</div>
|
|
|
- <div style=" margin: 2% 3%; display: flex; justify-content: space-between; align-items: center; white-space:nowrap;">
|
|
|
- <span>实际上线时间:</span>
|
|
|
- <el-date-picker v-model="NewDate" type="date" style="width:100%;" placeholder="选择日期" format="yyyy 年 MM 月 dd 日" />
|
|
|
- </div>
|
|
|
- <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
|
|
|
- :close-on-click-modal="false"
|
|
|
- title="提示"
|
|
|
- top="35vh"
|
|
|
- >
|
|
|
- <div align="center">
|
|
|
- 确定要删除<span style="color:red;">{{ task_form.name }}</span> 的任务吗?
|
|
|
- </div>
|
|
|
- <span slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="centerDialogVisible_task = false">关 闭</el-button>
|
|
|
- <el-button type="primary" @click="task_delete(task_form.id )">确 定</el-button>
|
|
|
- </span>
|
|
|
- </el-dialog>
|
|
|
- <el-dialog
|
|
|
- v-if="statusDialogVisible"
|
|
|
- :visible.sync="statusDialogVisible"
|
|
|
- width="33%"
|
|
|
- class="bug_manage_dialog"
|
|
|
- :append-to-body="true"
|
|
|
- :close-on-click-modal="false"
|
|
|
- @close="modalClose"
|
|
|
- >
|
|
|
- <template v-slot:title>
|
|
|
- <div style="display:flex;align-items: center;">
|
|
|
- <div style="width:4px;height:15px;background:#409EFF;border-radius:1px;" />
|
|
|
- <div style="width:83px;height:18px;font-size:16px;font-family:MicrosoftYaHei;color:rgba(51,59,74,1);margin-left:6px">{{ statusDialogTitle }}</div>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- <el-form label-width="110px" label-position="left" :model="statusDialogForm" :rules="rules">
|
|
|
- <el-form-item v-if="statusDialogTitle === '待测试' || statusDialogTitle === '已完成'" label="缺陷原因" prop="bugReason">
|
|
|
- <el-select v-model="statusDialogForm.bugReason" style="width: 100%">
|
|
|
- <el-option v-for="item in bugReasonEnumList" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item v-if="statusDialogTitle === '待测试'" label="修复方式" class="bug_manage_dialog bug_manage_dialog_fixMethod">
|
|
|
- <el-input v-model="statusDialogForm.reasonOrDesc" type="textarea" placeholder="请输入具体原因和修复方式" maxlength="300" show-word-limit rows="4" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item v-if="statusDialogTitle === '已完成'" label="修复结果" prop="repairResult" class="bug_manage_dialog">
|
|
|
- <el-select v-model="statusDialogForm.repairResult" style="width: 100%">
|
|
|
- <el-option v-for="item in repairResultEnumList" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item v-if="statusDialogTitle === 'Reopen'" label="Reopen原因" prop="reasonOrDesc">
|
|
|
- <el-input v-model="statusDialogForm.reasonOrDesc" type="textarea" placeholder="请输入Reopen" maxlength="300" show-word-limit rows="4" />
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- <template v-slot:footer>
|
|
|
- <el-button @click="get_list(),statusDialogVisible = false">取 消</el-button>
|
|
|
- <el-button type="primary" @click="statusDialogConfirm">确 定</el-button>
|
|
|
- </template>
|
|
|
- </el-dialog>
|
|
|
- <!-- 弹窗 -->
|
|
|
- <openDialog v-if="dialog_open" ref="task_createdUpdata" @updateIteration="setChild()" />
|
|
|
- <createdBug v-if="modalShow" ref="createdBug" @reloadList="bug_list(codeCache)" />
|
|
|
- <TestReport v-if="dialogVisible1" ref="TestReport" />
|
|
|
- <DailyReport v-if="dialogDaily" ref="DailyReport" />
|
|
|
- <ClientReport v-if="dialogClient" ref="ClientReport" />
|
|
|
- </div>
|
|
|
- <el-drawer :visible.sync="drawerShow" :modal="false" :with-header="false" size="50%" class="bug_manage_drawer" @click.stop>
|
|
|
- <div @click.stop>
|
|
|
- <bug-details :id="bugId + ''" ref="bugDetails" :init-count="initCount + ''" :type="'drawer'" @close="drawerShow = false" @delete="drawerShow = false;bug_list(codeCache)" @update="bug_list(codeCache)" />
|
|
|
- </div>
|
|
|
- </el-drawer>
|
|
|
- <drawer
|
|
|
- ref="drawer"
|
|
|
- title="任务成员"
|
|
|
- center
|
|
|
- :display.sync="display"
|
|
|
- width="28%"
|
|
|
- :delete="task_form"
|
|
|
- :types="true"
|
|
|
- :inner="true"
|
|
|
- :mask="false"
|
|
|
- @childValInput="childVal"
|
|
|
- @click.stop
|
|
|
- />
|
|
|
- <task-dialog :show.sync="showTaskDialog" :task-id="taskId" :status-name="statusName" @getList="get_list" />
|
|
|
- </div>
|
|
|
-</template>
|
|
|
-
|
|
|
-<script>
|
|
|
-import selDatePicker from '@/components/picker/SelDatePicker'
|
|
|
-const _ = require('lodash')
|
|
|
-import BugDetails from '@/views/projectManage/bugList/details/index.vue'
|
|
|
-import {
|
|
|
- taskGet,
|
|
|
- memberQueryMemberInfoByIDAPorName,
|
|
|
- bugGetBugStatusMapInfo,
|
|
|
- configShowTaskEnum,
|
|
|
- ScheduleCreate,
|
|
|
- tasktaskDelete,
|
|
|
- taskUpdate,
|
|
|
- ScheduleUpdate,
|
|
|
- commentCreate,
|
|
|
- commentList,
|
|
|
- deleteEvent,
|
|
|
- projectTestReport,
|
|
|
- dailyReport,
|
|
|
- launchTest
|
|
|
-} from '@/api/taskIndex' // ajax
|
|
|
-import openDialog from '@/views/projectManage/dialog_vue'
|
|
|
-import Utils from '../../../util.js'
|
|
|
-import { launchTestUpdate } from '@/api/projectPage.js'
|
|
|
-import { bugList, bugGetEnum, bugUpdate } from '@/api/defectManage'
|
|
|
-import { launchTestDelete } from '@/api/InterfaceReport'
|
|
|
-import echarts from 'echarts'
|
|
|
-import moment from 'moment'
|
|
|
-moment.locale('zh-cn')
|
|
|
-import { releaseScheduleList } from '@/api/teamBench'
|
|
|
-import Gantt from '@/views/gantta/gantta'
|
|
|
-import createdBug from '@/views/projectManage/bugList/file/createdBug' // bug缺陷
|
|
|
-import TestReport from '@/views/Platform/presentation/Templates/TestReport' // 提测
|
|
|
-import DailyReport from '@/views/Platform/presentation/Templates/DailyReport' // 日报
|
|
|
-import ClientReport from '@/views/Platform/presentation/Templates/ClientReport' // 准出
|
|
|
-import drawer from '@/views/projectManage/Drawer'
|
|
|
-import image_url from '@/assets/home_images/home_u.png'
|
|
|
-import taskDialog from '@/views/projectManage/taskList/dialog/taskDialog'
|
|
|
-
|
|
|
-export default {
|
|
|
- components: {
|
|
|
- openDialog,
|
|
|
- Gantt,
|
|
|
- createdBug,
|
|
|
- TestReport,
|
|
|
- BugDetails,
|
|
|
- DailyReport,
|
|
|
- ClientReport,
|
|
|
- selDatePicker,
|
|
|
- drawer,
|
|
|
- taskDialog
|
|
|
- },
|
|
|
- filters: {
|
|
|
- ellipsis(value) {
|
|
|
- if (!value) return ''
|
|
|
- if (value.length > 20) {
|
|
|
- return value.slice(0, 20) + '...'
|
|
|
- }
|
|
|
- return value
|
|
|
- },
|
|
|
- oneA(value) {
|
|
|
- if (!value) return ''
|
|
|
- const da = value.substring(0, 1)
|
|
|
- return da
|
|
|
- },
|
|
|
- naspOut(value) {
|
|
|
- if (!value) return ''
|
|
|
- const da = value.split(/\s+/)
|
|
|
- return da[0]
|
|
|
- }
|
|
|
- },
|
|
|
- data() {
|
|
|
- return {
|
|
|
- num: '',
|
|
|
- image_url: image_url,
|
|
|
- stColors: ['#409EFF', '#07BCA4', '#F56C6C', '#07BCA4'],
|
|
|
- codeCache: null,
|
|
|
- display: false,
|
|
|
- bugId: 0,
|
|
|
- initCount: 0,
|
|
|
- drawerShow: false,
|
|
|
- dialog_open: false,
|
|
|
- priorityColors: ['#F56C6C', '#FF8952', '#7ED321'],
|
|
|
- statusColors: ['#6AB4FF', '#6AB4FF', '#FFCC66', '#7ED321', '#F56C6C'],
|
|
|
- curIndex: 1,
|
|
|
- pageSize: 10,
|
|
|
- statusName: '',
|
|
|
- task_form: {
|
|
|
- statusString: '未开始',
|
|
|
- describe: '',
|
|
|
- qaObject: {
|
|
|
- name: ''
|
|
|
- },
|
|
|
- rdObject: {
|
|
|
- name: ''
|
|
|
- }
|
|
|
- },
|
|
|
- dialogVisible1: false, // 提测弹窗
|
|
|
- showTaskDialog: false, // 状态弹窗
|
|
|
- radio: '列表',
|
|
|
- modalShow: false, // 弹窗(新建)
|
|
|
- CallBackTheReason: '', // 打回原因
|
|
|
- NewDate: new Date(),
|
|
|
- content: '', // 评论
|
|
|
- // comment_content: '', // 评论内容
|
|
|
- commentTxt: [],
|
|
|
- commentShow: true, // 评论为空默认显示
|
|
|
- dialog_launchTestInfoDOS: false, // 打回弹窗
|
|
|
- currentPage: 0,
|
|
|
- tiem_date: { // 排期汇总
|
|
|
- startTime: '',
|
|
|
- endTime: ''
|
|
|
- },
|
|
|
- userInformation: localStorage.getItem('username'),
|
|
|
- userNames: localStorage.getItem('realname'),
|
|
|
- form_rules: {
|
|
|
- type: [{ required: true, message: '事件类型不能为空', trigger: 'blur' }],
|
|
|
- date_start: [{ required: true, message: '排期不能为空', trigger: 'blur' }]
|
|
|
- },
|
|
|
- fal_se: true,
|
|
|
- arr_event: [], // 事件table
|
|
|
- options: [], // 人员信息
|
|
|
- bugBaseInfoDOList: [], // bug
|
|
|
- launchTestInfoDOS: [], // 提测
|
|
|
- dailyTestReports: [], // 测试
|
|
|
- projectTestReportDOS: [], // 准出
|
|
|
- loading: false,
|
|
|
- table_show: true, // 表格(显示)
|
|
|
- Gantt: false, // 甘特图(显示)
|
|
|
- taskScheduleEvent: [], // 事件类型
|
|
|
- total: 0,
|
|
|
- show2: true,
|
|
|
- describe: false,
|
|
|
- describe1: false,
|
|
|
- dialogFormVisible: false,
|
|
|
- centerDialogVisible: false,
|
|
|
- centerDialogVisible_task: false, // 任务dialog
|
|
|
- options1: [],
|
|
|
- pauseName: '', // gantta
|
|
|
- ganttData: null,
|
|
|
- colorSty: '#6AB4FF',
|
|
|
- appVersion: {},
|
|
|
- even: '', // 添加事件
|
|
|
- form: {
|
|
|
- name: '',
|
|
|
- region: '',
|
|
|
- date1: '',
|
|
|
- date2: '',
|
|
|
- delivery: false,
|
|
|
- type: [],
|
|
|
- resource: '',
|
|
|
- desc: '',
|
|
|
- date_start: []
|
|
|
- },
|
|
|
- taskId: this.$route.query.id,
|
|
|
- echarts_name: [], // echarts_name
|
|
|
- echarts_value: [], // echats_value
|
|
|
- fixInFutureCount: '', // 已延期
|
|
|
- totalCount: '', // bug总数
|
|
|
- bugStatus: [],
|
|
|
- test: {},
|
|
|
- taskStatus: [],
|
|
|
- userData: {},
|
|
|
- requireName: '',
|
|
|
- Str: '',
|
|
|
- CallBackStatus: '',
|
|
|
- CallBackId: '',
|
|
|
- bgStyle: '',
|
|
|
- colorStyle: '',
|
|
|
- titName: '',
|
|
|
- dialogDaily: false,
|
|
|
- rules: {
|
|
|
- bugReason: [
|
|
|
- { required: true, message: '请选择缺陷原因', trigger: 'change' }
|
|
|
- ],
|
|
|
- repairResult: [
|
|
|
- { required: true, message: '请选择修复结果', trigger: 'change' }
|
|
|
- ],
|
|
|
- reasonOrDesc: [
|
|
|
- { required: true, message: '请输入Reopen原因', trigger: 'blur' }
|
|
|
- ]
|
|
|
- },
|
|
|
- statusDialogForm: {},
|
|
|
- repairResultEnumList: [],
|
|
|
- bugReasonEnumList: [],
|
|
|
- staData: {},
|
|
|
- statusId: '',
|
|
|
- statusDialogVisible: false,
|
|
|
- dialogClient: false
|
|
|
- }
|
|
|
- },
|
|
|
- computed: {
|
|
|
- clickCount() {
|
|
|
- return this.$store.state.app.clickCount
|
|
|
- }
|
|
|
- },
|
|
|
- watch: {
|
|
|
- clickCount(newVal, oldVal) {
|
|
|
- this.drawerShow = false
|
|
|
- }
|
|
|
- },
|
|
|
- created() {
|
|
|
- this.get_list()
|
|
|
- this.$store.state.data.status = true
|
|
|
- this.$store.state.data.bizId = true
|
|
|
- },
|
|
|
- mounted() {
|
|
|
- this.get_echarts()
|
|
|
- },
|
|
|
- destroyed() {
|
|
|
- this.$store.state.data.status = false
|
|
|
- this.$store.state.data.bizId = false
|
|
|
- },
|
|
|
- methods: {
|
|
|
- childVal(val) {
|
|
|
- this.num = val
|
|
|
- },
|
|
|
- modalClose() {
|
|
|
- this.get_list()
|
|
|
- },
|
|
|
- async blurEvent(row, status) {
|
|
|
- this.staData = row
|
|
|
- this.statusId = status
|
|
|
- if (status === 0 || status === 1 || status === 5) {
|
|
|
- const userData = { id: '', ename: this.userInformation, name: this.userNames }
|
|
|
- row.status = status
|
|
|
- const objData = { bugBaseInfo: row, user: userData }
|
|
|
- const res = await bugUpdate(objData)
|
|
|
- row.isSelected = !row.isSelected
|
|
|
- if (res.code === 200) {
|
|
|
- this.bug_list(this.codeCache)
|
|
|
- this.$message({ showClose: true, message: res.msg, type: 'success' })
|
|
|
- } else {
|
|
|
- this.get_list()
|
|
|
- this.$message({ showClose: true, message: res.msg, type: 'error' })
|
|
|
- }
|
|
|
- return
|
|
|
- }
|
|
|
- let data = ''
|
|
|
- this.bugEnumList.map(item => {
|
|
|
- item.code === status ? data = item.name : ''
|
|
|
- })
|
|
|
- this.statusDialogTitle = data
|
|
|
- this.statusDialogVisible = true
|
|
|
- },
|
|
|
- statusDialogConfirm() {
|
|
|
- if (this.statusDialogTitle === '待测试') {
|
|
|
- if (this.statusDialogForm.bugReason === 'undefined' || this.statusDialogForm.bugReason === null) {
|
|
|
- this.$message.warning('请选择缺陷原因')
|
|
|
- }
|
|
|
- } else if (this.statusDialogTitle === '已完成') {
|
|
|
- if (this.statusDialogForm.bugReason === 'undefined' || this.statusDialogForm.bugReason === null) {
|
|
|
- this.$message.warning('请选择缺陷原因')
|
|
|
- return
|
|
|
- }
|
|
|
- if (this.statusDialogForm.repairResult === 'undefined' || this.statusDialogForm.repairResult === null) {
|
|
|
- this.$message.warning('请选择修复结果')
|
|
|
- return
|
|
|
- }
|
|
|
- } else if (this.statusDialogTitle === 'Reopen') {
|
|
|
- if (!this.statusDialogForm.reasonOrDesc) {
|
|
|
- this.$message.warning('请输入Reopen原因')
|
|
|
- return
|
|
|
- }
|
|
|
- this.statusDialogVisible = false
|
|
|
- }
|
|
|
- this.postDialogForm()
|
|
|
- },
|
|
|
- async postDialogForm() {
|
|
|
- const userData = { id: '', ename: this.userInformation, name: this.userNames }
|
|
|
- this.staData.status = this.statusId
|
|
|
- this.staData.reasonOrDesc = this.statusDialogForm.reasonOrDesc
|
|
|
- this.staData.repairResult = this.statusDialogForm.repairResult
|
|
|
- this.staData.bugReason = this.statusDialogForm.bugReason
|
|
|
- const objData = { bugBaseInfo: this.staData, user: userData }
|
|
|
- const res = await bugUpdate(objData)
|
|
|
- if (res.code === 200) {
|
|
|
- this.bug_list(this.codeCache)
|
|
|
- this.statusDialogVisible = false
|
|
|
- this.statusDialogForm = {}
|
|
|
- this.$message({ showClose: true, message: res.msg, type: 'success' })
|
|
|
- } else if (res.code !== 200) {
|
|
|
- this.$message({ showClose: true, message: res.msg, type: 'error' })
|
|
|
- this.get_list()
|
|
|
- }
|
|
|
- },
|
|
|
- async click_launchTestInfoDOS(e) {
|
|
|
- let res = null
|
|
|
- const params = { taskId: this.taskId, curIndex: this.curIndex, pageSize: this.pageSize }
|
|
|
- switch (e.index) {
|
|
|
- case '1':
|
|
|
- res = await launchTest(params)
|
|
|
- this.launchTestInfoDOS = res.data.list // 准出
|
|
|
- break
|
|
|
- case '2':
|
|
|
- res = await dailyReport(params)
|
|
|
- this.dailyTestReports = res.data.list
|
|
|
- break
|
|
|
- case '3':
|
|
|
- res = await projectTestReport(params)
|
|
|
- this.projectTestReportDOS = res.data.list
|
|
|
- break
|
|
|
- default:
|
|
|
- this.total = res && res.data.total
|
|
|
- }
|
|
|
- },
|
|
|
- toReportView(ele, index) {
|
|
|
- switch (index) {
|
|
|
- case 0:
|
|
|
- this.dialogDaily = true
|
|
|
- this.$nextTick(() => {
|
|
|
- this.$refs.DailyReport.init(3, ele)
|
|
|
- })
|
|
|
- break
|
|
|
- case 1:
|
|
|
- this.dialogClient = true
|
|
|
- this.$nextTick(() => {
|
|
|
- this.$refs.ClientReport.init(3, ele)
|
|
|
- })
|
|
|
- break
|
|
|
- case 2:
|
|
|
- this.dialogVisible1 = true
|
|
|
- this.$nextTick(() => {
|
|
|
- this.$refs.TestReport.init(3, ele)
|
|
|
- })
|
|
|
- break
|
|
|
- }
|
|
|
- },
|
|
|
- click_bugName(id) {
|
|
|
- this.bugId = id
|
|
|
- this.initCount++
|
|
|
- this.drawerShow = true
|
|
|
- },
|
|
|
- test2(item, e) {
|
|
|
- // 获取团队人员信息
|
|
|
- if (typeof this.test[item.idap] === 'undefined') {
|
|
|
- item.role = e
|
|
|
- this.test[item.idap] = item
|
|
|
- }
|
|
|
- return item.idap
|
|
|
- },
|
|
|
- async get_list() {
|
|
|
- const resEnum = await configShowTaskEnum()
|
|
|
- if (resEnum.code === 200) {
|
|
|
- this.taskScheduleEvent = resEnum.data.taskScheduleEvent
|
|
|
- this.taskStatus = resEnum.data.taskStatus
|
|
|
- this.bugStatus = resEnum.data.bugStatus
|
|
|
- this.bugStatus.unshift({ code: -1, msg: '全部' })
|
|
|
- }
|
|
|
- const resTask = await taskGet(this.taskId)
|
|
|
- if (resTask.code === 200) {
|
|
|
- if (resTask.data.bizId !== Number(localStorage.getItem('bizId'))) {
|
|
|
- Utils.$emit('demo', resTask.data.bizId)
|
|
|
- }
|
|
|
- this.pauseName = resTask.data.involveAppString === null ? '' : resTask.data.involveAppString
|
|
|
- this.task_form = resTask.data
|
|
|
- this.total = resTask.total
|
|
|
- this.tiem_date.startTime = resTask.data.scheduleListResponse.startTime // 开始时间
|
|
|
- this.tiem_date.endTime = resTask.data.scheduleListResponse.endTime // 结束时间
|
|
|
- this.arr_event = resTask.data.scheduleListResponse.schedulDetailResponseList
|
|
|
- this.table_loading = false
|
|
|
- this.bug_list(-1)
|
|
|
- this.task_form.bugBaseInfoDOList !== null ? (this.bugBaseInfoDOList = resTask.date.bugBaseInfoDOList) : (this.bugBaseInfoDOList = []) // bug
|
|
|
- const param = {
|
|
|
- appType: Number(resTask.data.involveApp),
|
|
|
- startTime: resTask.data.scheduleListResponse.startTime,
|
|
|
- endTime: resTask.data.scheduleListResponse.endTime
|
|
|
- }
|
|
|
- this.ganttData = this.tableDeal(
|
|
|
- resTask.data.scheduleListResponse.schedulDetailResponseList
|
|
|
- )
|
|
|
- if (this.task_form.stageString === '未知') {
|
|
|
- this.bgStyle = '#f4f4f5'
|
|
|
- this.colorStyle = '#909399'
|
|
|
- }
|
|
|
- this.task_form.stageString === '正常' ? this.bgStyle = '#69B3FF' : ''
|
|
|
- this.task_form.stageString === '延期' ? this.bgStyle = '#FF8952' : ''
|
|
|
- this.task_form.stageString === '已延期' ? this.bgStyle = '#F56C6C' : ''
|
|
|
- const resSchedule = await releaseScheduleList(param)
|
|
|
- if (resSchedule.code === 200) {
|
|
|
- this.appVersion = this.versionDeal(resSchedule.data)
|
|
|
- }
|
|
|
- }
|
|
|
- const resComment = await commentList({ type: 3, joinId: this.taskId })
|
|
|
- this.commentTxt = resComment.data
|
|
|
- this.commentTxt !== '' ? this.commentShow = false : this.commentShow = true
|
|
|
- },
|
|
|
- tableDeal(arr) {
|
|
|
- if (arr) {
|
|
|
- return arr.map(eachData => ({
|
|
|
- task: { description: eachData.name || '' },
|
|
|
- schedules: [
|
|
|
- {
|
|
|
- taskName: eachData.name || '', event: eachData.desc,
|
|
|
- schedule: moment(eachData.startTime).format('YYYY.MM.DD') + ' - ' + moment(eachData.endTime).format('YYYY.MM.DD'),
|
|
|
- startDate: moment(eachData.startTime).format('YYYY-MM-DD'),
|
|
|
- length: (moment(eachData.endTime) - moment(eachData.startTime)) / 86400000 + 1,
|
|
|
- owners: eachData.peopleObject === null ? [] : eachData.peopleObject.map(eachMember => eachMember.name),
|
|
|
- taskId: eachData.taskId
|
|
|
- }
|
|
|
- ]
|
|
|
- }))
|
|
|
- }
|
|
|
- },
|
|
|
- versionDeal(arr) {
|
|
|
- if (!arr) {
|
|
|
- return false
|
|
|
- }
|
|
|
- const result = {}
|
|
|
- for (let i = 0; i < arr.length; i++) {
|
|
|
- let pauseTime = moment(arr[i].startTime).format('YYYY-MM-DD')
|
|
|
- while (pauseTime <= moment(arr[i].endTime).format('YYYY-MM-DD')) {
|
|
|
- if (this.pauseName !== null && this.pauseName !== '') {
|
|
|
- result[pauseTime] = this.pauseName + arr[i].version + arr[i].name
|
|
|
- } else {
|
|
|
- result[pauseTime] = ''
|
|
|
- }
|
|
|
- // result[pauseTime] = (this.pauseName || '') + arr[i].version + arr[i].name
|
|
|
- pauseTime = moment(pauseTime).add(1, 'day').format('YYYY-MM-DD')
|
|
|
- }
|
|
|
- }
|
|
|
- return result
|
|
|
- },
|
|
|
- setChild() {
|
|
|
- this.$refs.drawer.getRoleList()
|
|
|
- },
|
|
|
- open_created(e) {
|
|
|
- // 打开弹窗
|
|
|
- this.dialog_open = true
|
|
|
- this.$nextTick(() => {
|
|
|
- this.$refs.task_createdUpdata.init(3, [null, this.taskId])
|
|
|
- })
|
|
|
- },
|
|
|
- async get_echarts() {
|
|
|
- const resBug = await bugGetBugStatusMapInfo({ taskId: this.taskId })
|
|
|
- if (resBug.code === 200) {
|
|
|
- this.fixInFutureCount = resBug.data.fixInFutureCount
|
|
|
- this.totalCount = resBug.data.totalCount
|
|
|
- resBug.data.statusInfoList.map(item => {
|
|
|
- this.echarts_name.push(item.statusString)
|
|
|
- this.echarts_value.push(item.count)
|
|
|
- })
|
|
|
- }
|
|
|
- this.$nextTick(() => {
|
|
|
- const myChart = echarts.init(document.getElementById('div1'))
|
|
|
- myChart.setOption({
|
|
|
- tooltip: {
|
|
|
- trigger: 'axis',
|
|
|
- axisPointer: {
|
|
|
- type: 'shadow'
|
|
|
- }
|
|
|
- },
|
|
|
- xAxis: { type: 'category', data: this.echarts_name,
|
|
|
- axisTick: { alignWithLabel: true, show: false },
|
|
|
- axisLine: { show: true, lineStyle: { type: 'dashed' }}
|
|
|
- },
|
|
|
- yAxis: [
|
|
|
- {
|
|
|
- gridIndex: 0,
|
|
|
- axisTick: { show: false },
|
|
|
- axisLabel: { show: false },
|
|
|
- splitLine: { show: false },
|
|
|
- axisLine: { show: false }
|
|
|
- }
|
|
|
- ],
|
|
|
- series: [
|
|
|
- {
|
|
|
- data: this.echarts_value,
|
|
|
- barWidth: '60%',
|
|
|
- type: 'bar',
|
|
|
- itemStyle: { normal: { color: '#409EFF' }},
|
|
|
- label: {
|
|
|
- show: true,
|
|
|
- position: 'inside',
|
|
|
- formatter: function(params) {
|
|
|
- // 如果值大于0 正常显示,否则不显示
|
|
|
- if (params.value > 0) {
|
|
|
- return params.value
|
|
|
- } else {
|
|
|
- return ''
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- })
|
|
|
- window.onresize = myChart.resize
|
|
|
- })
|
|
|
- },
|
|
|
- async handleCommand(command) {
|
|
|
- if (command.label === '已提测' || command.label === '已准出' || command.label === '已上线') {
|
|
|
- this.statusName = command.label
|
|
|
- this.showTaskDialog = true
|
|
|
- return
|
|
|
- } else {
|
|
|
- this.task_form.statusString = command.label
|
|
|
- const taskInfoDO = this.task_form
|
|
|
- taskInfoDO.status = command.value
|
|
|
- const user = { name: this.userNames, ename: this.userInformation, id: '' }
|
|
|
- const resTask = await taskUpdate({ taskInfoDO, user })
|
|
|
- if (resTask.code === 200) {
|
|
|
- this.$message({ message: resTask.msg, type: 'success', offset: 150 })
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- // 事件删除
|
|
|
- event_delete(id) {
|
|
|
- const user = { name: this.userNames, ename: this.userInformation, id: '' }
|
|
|
- deleteEvent(id, user).then(res => {
|
|
|
- if (res.code === 200) {
|
|
|
- this.get_list()
|
|
|
- this.$message({ message: res.msg, type: 'success', offset: 150 })
|
|
|
- } else {
|
|
|
- this.$message({ message: res.msg + '请联系开发人员', type: 'error', offset: 150 })
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- event_query(e) {
|
|
|
- // 编辑事件(添加事件)
|
|
|
- this.even = '编辑事件'
|
|
|
- let eventID = {}
|
|
|
- this.arr_event.map(item => {
|
|
|
- item.id === e ? (eventID = item) : ''
|
|
|
- })
|
|
|
- this.dialogFormVisible = true
|
|
|
-
|
|
|
- this.form = _.cloneDeep(eventID)
|
|
|
- if (eventID.startTime !== null) {
|
|
|
- this.$set(this.form, 'date_start', [eventID.startTime, eventID.endTime])
|
|
|
- } else {
|
|
|
- this.$set(this.form, 'date_start', [])
|
|
|
- }
|
|
|
- this.options = this.form.peopleObject
|
|
|
- if (this.form.peopleObject !== null && this.form.peopleObject !== '') {
|
|
|
- const peopleArr = this.form.peopleObject.map((eachPeople) => eachPeople.idap)
|
|
|
- this.$set(this.form, 'peoples', peopleArr)
|
|
|
- }
|
|
|
- this.form.noHoliday === 1 ? (this.form.noHoliday = false) : (this.form.noHoliday = true)
|
|
|
- },
|
|
|
- blur_describe(e) {
|
|
|
- this.describe = false
|
|
|
- this.describe1 = true
|
|
|
- this.$set(this.task_form, 'describe', e)
|
|
|
- },
|
|
|
- remoteMethod(query) {
|
|
|
- // 人员查询
|
|
|
- if (query !== '') {
|
|
|
- this.loading = true
|
|
|
- setTimeout(() => {
|
|
|
- this.loading = false
|
|
|
- memberQueryMemberInfoByIDAPorName({ memberIDAP: query }).then(res => {
|
|
|
- const obj = {}
|
|
|
- this.options = res.data.reduce((cur, next) => {
|
|
|
- obj[next.idap] ? '' : obj[next.idap] = true && cur.push(next)
|
|
|
- return cur
|
|
|
- }, [])
|
|
|
- })
|
|
|
- }, 200)
|
|
|
- } else {
|
|
|
- this.options = []
|
|
|
- }
|
|
|
- },
|
|
|
- task_delete(e) {
|
|
|
- // 删除任务
|
|
|
- const user = { name: this.userNames, ename: this.userInformation, id: '' }
|
|
|
- tasktaskDelete(user, e).then(res => {
|
|
|
- if (res.code === 200) {
|
|
|
- this.$router.push({ name: '任务', query: {}})
|
|
|
- this.$message({
|
|
|
- message: res.msg,
|
|
|
- type: 'success',
|
|
|
- duration: 1000,
|
|
|
- offset: 150
|
|
|
- })
|
|
|
- } else {
|
|
|
- this.$message({
|
|
|
- message: res.msg + '请联系开发人员',
|
|
|
- type: 'error',
|
|
|
- duration: 1000,
|
|
|
- offset: 150
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- event_update(e) {
|
|
|
- // 编辑事件
|
|
|
- this.even = '编辑事件'
|
|
|
- this.$refs['form'].validate(valid => {
|
|
|
- if (valid) {
|
|
|
- const schedule = e
|
|
|
- e.noHoliday === true ? (schedule.noHoliday = 0) : (schedule.noHoliday = 1)
|
|
|
- schedule.peopleObject = e.peoples
|
|
|
- schedule.startTime = e.date_start[0]
|
|
|
- schedule.endTime = e.date_start[1]
|
|
|
- schedule.taskId = Number(this.taskId)
|
|
|
- this.taskScheduleEvent.map(item => {
|
|
|
- item.code === e.type ? (schedule.name = item.msg) : ''
|
|
|
- })
|
|
|
- this.ScheduleUpdate(schedule)
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- async ScheduleUpdate(schedule) {
|
|
|
- const user = { name: this.userNames, ename: this.userInformation, id: '' }
|
|
|
- const res = await ScheduleUpdate({ schedule, user })
|
|
|
- if (res.code === 200) {
|
|
|
- this.dialogFormVisible = false
|
|
|
- this.setChild()
|
|
|
- this.$message({
|
|
|
- message: res.msg,
|
|
|
- type: 'success',
|
|
|
- duration: 1000,
|
|
|
- offset: 150
|
|
|
- })
|
|
|
- this.get_list()
|
|
|
- }
|
|
|
- },
|
|
|
- event_created(e) {
|
|
|
- // 添加事件
|
|
|
- this.even = '新建事件'
|
|
|
- this.$refs['form'].validate(valid => {
|
|
|
- if (valid) {
|
|
|
- const schedule = _.cloneDeep(e)
|
|
|
- e.noHoliday ? (schedule.noHoliday = 0) : (schedule.noHoliday = 1)
|
|
|
- schedule.startTime = e.date_start[0]
|
|
|
- schedule.endTime = e.date_start[1]
|
|
|
- schedule.taskId = Number(this.taskId)
|
|
|
- delete schedule.date_start
|
|
|
- this.taskScheduleEvent.map(item => {
|
|
|
- item.code === e.type ? (schedule.name = item.msg) : ''
|
|
|
- })
|
|
|
- this.ScheduleCreate(schedule)
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- async ScheduleCreate(schedule) {
|
|
|
- const user = {
|
|
|
- name: this.userNames,
|
|
|
- ename: this.userInformation,
|
|
|
- id: ''
|
|
|
- }
|
|
|
- const res = await ScheduleCreate({ schedule, user })
|
|
|
- if (res.code === 200) {
|
|
|
- this.setChild()
|
|
|
- this.dialogFormVisible = false
|
|
|
- this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
|
|
|
- this.get_list()
|
|
|
- }
|
|
|
- },
|
|
|
- async bug_list(e) {
|
|
|
- this.codeCache = _.cloneDeep(e)
|
|
|
- // bug查询
|
|
|
- const resEnum = await bugGetEnum()
|
|
|
- if (resEnum.code === 200) {
|
|
|
- this.bugEnumList = resEnum.data.bugEnumList // status
|
|
|
- this.priorityLevelEnumList = resEnum.data.priorityLevelEnumList // 优先级
|
|
|
- this.repairResultEnumList = resEnum.data.repairResultEnumList // 修复结果
|
|
|
- this.bugReasonEnumList = resEnum.data.bugReasonEnumList
|
|
|
- }
|
|
|
- let params
|
|
|
- if (e === -1) {
|
|
|
- params = { taskId: this.taskId, pageSize: this.pageSize, curIndex: this.curIndex }
|
|
|
- } else {
|
|
|
- params = { status: e, taskId: Number(this.taskId), pageSize: this.pageSize, curIndex: this.curIndex }
|
|
|
- }
|
|
|
- const resList = await bugList(params)
|
|
|
- if (resList.code === 200) {
|
|
|
- if (resList.data) {
|
|
|
- this.colorSty = e === -1 ? '#6AB4FF' : ''
|
|
|
- this.bugBaseInfoDOList = resList.data
|
|
|
- this.total = resList.total
|
|
|
- this.bugBaseInfoDOList.map(item1 => {
|
|
|
- this.priorityLevelEnumList.map(item => {
|
|
|
- item1.priorityLevel !== null ? item1.priorityLevel === item.name ? item1.priorityCode = item.code : '' : ''
|
|
|
- })
|
|
|
- })
|
|
|
- } else {
|
|
|
- this.bugBaseInfoDOList = []
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- async comment(e) {
|
|
|
- this.content = ''
|
|
|
- this.commentShow = false
|
|
|
- const commentInfo = {
|
|
|
- joinId: this.taskId,
|
|
|
- content: e,
|
|
|
- type: 3,
|
|
|
- fatherId: 0,
|
|
|
- name: this.userNames,
|
|
|
- email: this.userInformation
|
|
|
- }
|
|
|
- const user = { name: this.userNames, ename: this.userInformation, id: '' }
|
|
|
- const res = await commentCreate({ commentInfo, user })
|
|
|
- if (res.code === 200) {
|
|
|
- this.get_list()
|
|
|
- this.$message({ message: res.msg, type: 'success', offset: 150 })
|
|
|
- }
|
|
|
- },
|
|
|
- GanttChart(e) {
|
|
|
- switch (e) {
|
|
|
- case 1:
|
|
|
- this.table_show = true
|
|
|
- this.Gantt = false
|
|
|
- break
|
|
|
- case 2:
|
|
|
- this.table_show = false
|
|
|
- this.Gantt = true
|
|
|
- break
|
|
|
- }
|
|
|
- },
|
|
|
- add_Event() {
|
|
|
- // 添加事件(排期)
|
|
|
- this.even = '新建事件'
|
|
|
- this.dialogFormVisible = true
|
|
|
- this.form = {}
|
|
|
- this.$nextTick(() => { 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: '需求详情', params: { id: ele + '' }})
|
|
|
- break
|
|
|
- }
|
|
|
- },
|
|
|
- endDialog() {
|
|
|
- this.dialog_launchTestInfoDOS = false
|
|
|
- this.$message({ type: 'success', message: '已取消' })
|
|
|
- },
|
|
|
- // 打回
|
|
|
- back(e, ele, data) {
|
|
|
- this.requireName = data.name
|
|
|
- this.CallBackStatus = e
|
|
|
- this.CallBackId = ele
|
|
|
- switch (e) {
|
|
|
- case 1:
|
|
|
- this.dialog_launchTestInfoDOS = true
|
|
|
- this.titName = '提测确认'
|
|
|
- this.Str = '通过'
|
|
|
- break
|
|
|
- case 2:
|
|
|
- this.dialog_launchTestInfoDOS = true
|
|
|
- this.titName = '提测确认'
|
|
|
- this.Str = '打回'
|
|
|
- break
|
|
|
- case 3:
|
|
|
- data.taskIds = [Number(this.taskId)]
|
|
|
- this.dialogVisible1 = true
|
|
|
- this.$nextTick(() => {
|
|
|
- this.$refs.TestReport.init(4, data)
|
|
|
- })
|
|
|
- break
|
|
|
- case 4:
|
|
|
- this.dialog_launchTestInfoDOS = true
|
|
|
- this.titName = '删除确认'
|
|
|
- this.Str = '删除'
|
|
|
- break
|
|
|
- case 5:
|
|
|
- this.dialogVisible1 = true
|
|
|
- this.$nextTick(() => {
|
|
|
- this.$refs.TestReport.init(3, data)
|
|
|
- })
|
|
|
- break
|
|
|
- case 6:
|
|
|
- this.dialogVisible1 = true
|
|
|
- this.$nextTick(() => {
|
|
|
- this.$refs.TestReport.init(2, data)
|
|
|
- })
|
|
|
- break
|
|
|
- }
|
|
|
- },
|
|
|
- async passOrBackSend() {
|
|
|
- this.dialog_launchTestInfoDOS = false
|
|
|
- const launchTestInfo = { status: this.CallBackStatus, id: this.CallBackId }
|
|
|
- const userData = { id: '', ename: this.userInformation, name: this.userNames }
|
|
|
- const objData = { launchTestInfo: launchTestInfo, user: userData }
|
|
|
- if (this.Str === '通过' || this.Str === '打回') {
|
|
|
- const res1 = await launchTestUpdate(objData)
|
|
|
- res1.code === 200 ? this.$message({ message: res1.msg, type: 'success', offset: 150 }) : this.$message({ message: res1.msg, type: 'error', offset: 150 })
|
|
|
- const res2 = await launchTest({ taskId: this.taskId, curIndex: this.curIndex, pageSize: this.pageSize })
|
|
|
- this.launchTestInfoDOS = res2.data.list
|
|
|
- this.total = res2.data.total
|
|
|
- } else if (this.Str === '删除') {
|
|
|
- const res3 = await launchTestDelete(userData, this.CallBackId)
|
|
|
- if (res3.code === 200) {
|
|
|
- this.$message({ type: 'success', message: '已删除' })
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- handleSizeChange(size) { // 分页
|
|
|
- this.pageSize = size
|
|
|
- this.get_list()
|
|
|
- },
|
|
|
- handleCurrentChange(curIndex) { // 分页
|
|
|
- this.curIndex = curIndex
|
|
|
- this.get_list()
|
|
|
- },
|
|
|
- createReport(e, ele) {
|
|
|
- switch (e) {
|
|
|
- case 1: // 提测
|
|
|
- this.dialogVisible1 = true
|
|
|
- this.$nextTick(() => { this.$refs.TestReport.init(1, ele) })
|
|
|
- break
|
|
|
- case 2: // 日报
|
|
|
- this.dialogDaily = true
|
|
|
- this.$nextTick(() => { this.$refs.DailyReport.init(1) })
|
|
|
- break
|
|
|
- case 3:
|
|
|
- this.dialogClient = true
|
|
|
- this.$nextTick(() => { this.$refs.ClientReport.init(1, ele) })
|
|
|
- break
|
|
|
- case 4:
|
|
|
- this.modalShow = true
|
|
|
- this.$nextTick(() => { this.$refs.createdBug.init(1, ele) })
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-</script>
|
|
|
-
|
|
|
-<style lang="scss">
|
|
|
-.footer .el-tabs__nav-wrap::after {
|
|
|
- background-color: #FFFFFF !important;
|
|
|
-}
|
|
|
-.footer .el-tabs__header {
|
|
|
- padding: 0;
|
|
|
- position: relative;
|
|
|
- margin: 0 0 15px;
|
|
|
- width: 80%;
|
|
|
-}
|
|
|
-</style>
|
|
|
-<style lang="stylus" scoped>
|
|
|
-.btn {
|
|
|
- cursor: pointer;
|
|
|
-}
|
|
|
-.btn:hover {
|
|
|
- color:#409EFF
|
|
|
-}
|
|
|
-.selected {
|
|
|
- color: rgb(106, 180, 255)
|
|
|
-}
|
|
|
-.bgborderButton .el-button--info.is-plain:hover {
|
|
|
- background: #3f9eff !important;
|
|
|
- border-color: #3f9eff !important;
|
|
|
-}
|
|
|
-
|
|
|
-.special-button .el-button--info.is-plain:hover {
|
|
|
- background: #3f9eff !important;
|
|
|
- border-color: #3f9eff !important;
|
|
|
-}
|
|
|
-
|
|
|
-.special-button .el-button--info.is-plain {
|
|
|
- background: white !important;
|
|
|
-}
|
|
|
-
|
|
|
-.bgborder {
|
|
|
- background-color: #FFFFFF;
|
|
|
- border-radius: 4px;
|
|
|
-}
|
|
|
-
|
|
|
-.footer {
|
|
|
- margin: 0 1% 1% 1%;
|
|
|
- background-color: #FFFFFF;
|
|
|
- border-radius: 4px;
|
|
|
-}
|
|
|
-
|
|
|
-.aside {
|
|
|
- font-size: 14px;
|
|
|
- margin: 5%;
|
|
|
- cursor: pointer;
|
|
|
-}
|
|
|
-
|
|
|
-.aside:hover {
|
|
|
- color: #409EFF;
|
|
|
-}
|
|
|
-
|
|
|
-.bgbugTa .el-main {
|
|
|
- padding: 0 !important;
|
|
|
-}
|
|
|
-
|
|
|
-.el-tooltip__popper {
|
|
|
- max-width: 200px;
|
|
|
-}
|
|
|
-
|
|
|
-.test {
|
|
|
- height: 50vh;
|
|
|
- color: #666666;
|
|
|
- font-size: 14px;
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: center;
|
|
|
-}
|
|
|
-
|
|
|
-.el-dropdown-menu__item:not(.is-disabled):hover {
|
|
|
- background-color: #f6f7fa;
|
|
|
- color: #606266;
|
|
|
-}
|
|
|
-
|
|
|
-.bgbugTa .el-divider--horizontal {
|
|
|
- display: block;
|
|
|
- height: 1px;
|
|
|
- width: 100%;
|
|
|
- position: absolute !important;
|
|
|
- margin: 0 !important;
|
|
|
-}
|
|
|
-
|
|
|
-.form_e .el-form-item {
|
|
|
- margin-bottom: 0px;
|
|
|
-}
|
|
|
-
|
|
|
-.form_e label{
|
|
|
- font-weight 400
|
|
|
-}
|
|
|
-
|
|
|
-.status {
|
|
|
- margin-left: 2%;
|
|
|
- cursor: pointer;
|
|
|
-}
|
|
|
-
|
|
|
-.status:hover {
|
|
|
- color: #6AB4FF;
|
|
|
-}
|
|
|
-
|
|
|
-.timeStyle {
|
|
|
- text-align: center;
|
|
|
- padding: 5px;
|
|
|
- border-radius: 4px;
|
|
|
- min-height: 34px;
|
|
|
- min-width: 74px;
|
|
|
- display: flex;
|
|
|
- justify-content: center;
|
|
|
- align-items: center;
|
|
|
- color: #FFF;
|
|
|
- font-size:14px;
|
|
|
- margin-right:20px;
|
|
|
- font-family:MicrosoftYaHei;
|
|
|
- color:rgba(255,255,255,1);
|
|
|
-}
|
|
|
-
|
|
|
-.dateSet {
|
|
|
- font-size: 14px;
|
|
|
- color: #333B4A;
|
|
|
- margin: 1.5% 0;
|
|
|
- padding-bottom:1.5%;
|
|
|
-}
|
|
|
-.div_priority {
|
|
|
- color: #ffffff;
|
|
|
- width: 35px;
|
|
|
- padding: 0 12px;
|
|
|
- border-radius: 4px;
|
|
|
- margin: auto;
|
|
|
- margin-right: 46%;
|
|
|
-}
|
|
|
-.bgborder >>> .el-table .cell {
|
|
|
- margin: -2px 0 -2px 0 !important
|
|
|
-}
|
|
|
-.drop_down {
|
|
|
- color: #606266
|
|
|
-}
|
|
|
-</style>
|
|
|
-<style lang="scss">
|
|
|
-.btns .el-input--suffix .el-input__inner {
|
|
|
- padding-right: 10px;
|
|
|
- padding-left: 10px;
|
|
|
- width: 73px;
|
|
|
-}
|
|
|
-.item{
|
|
|
- /deep/ input {
|
|
|
- color: rgb(126, 211, 33);
|
|
|
- border: 1px solid rgb(126, 211, 33);
|
|
|
- border-color: rgb(126, 211, 33) !important;
|
|
|
- font-weight: 900;
|
|
|
- }
|
|
|
- /deep/ .el-input__suffix {
|
|
|
- color: rgb(126, 211, 33) !important;
|
|
|
- right: 1px;
|
|
|
- }
|
|
|
- /deep/ .el-select__caret {
|
|
|
- color: rgb(126, 211, 33) !important;
|
|
|
- }
|
|
|
-}
|
|
|
-.item1 {
|
|
|
- /deep/ input {
|
|
|
- color: rgb(255, 204, 102);
|
|
|
- border: 1px solid rgb(255, 204, 102);
|
|
|
- border-color: rgb(255, 204, 102) !important;
|
|
|
- font-weight: 900;
|
|
|
- }
|
|
|
- /deep/ .el-input__suffix {
|
|
|
- color: rgb(255, 204, 102) !important;
|
|
|
- right: 1px;
|
|
|
- }
|
|
|
- /deep/ .el-select__caret {
|
|
|
- color: rgb(255, 204, 102) !important;
|
|
|
- }
|
|
|
-}
|
|
|
-.item2 {
|
|
|
- /deep/ input {
|
|
|
- color: rgb(245, 108, 108);
|
|
|
- border: 1px solid rgb(245, 108, 108);
|
|
|
- border-color: rgb(245, 108, 108) !important;
|
|
|
- font-weight: 900;
|
|
|
- }
|
|
|
- /deep/ .el-input__suffix {
|
|
|
- color: rgb(245, 108, 108) !important;
|
|
|
- right: 1px;
|
|
|
- }
|
|
|
- /deep/ .el-select__caret {
|
|
|
- color: rgb(245, 108, 108) !important;
|
|
|
- }
|
|
|
-}
|
|
|
-.item3 {
|
|
|
- /deep/ input {
|
|
|
- color: #D675F0;
|
|
|
- border: 1px solid #D675F0;
|
|
|
- border-color: #D675F0 !important;
|
|
|
- font-weight: 900;
|
|
|
- }
|
|
|
- /deep/ .el-input__suffix {
|
|
|
- color: #D675F0 !important;
|
|
|
- right: 1px;
|
|
|
- }
|
|
|
- /deep/ .el-select__caret {
|
|
|
- color: #D675F0 !important;
|
|
|
- }
|
|
|
-}
|
|
|
-.item-color {
|
|
|
- /deep/ input {
|
|
|
- color: rgb(106, 180, 255);
|
|
|
- border: 1px solid rgb(106, 180, 255);
|
|
|
- border-color: rgb(106, 180, 255) !important;
|
|
|
- font-weight: 900;
|
|
|
- }
|
|
|
- /deep/ .el-input__suffix {
|
|
|
- color: rgb(106, 180, 255) !important;
|
|
|
- right: 1px;
|
|
|
- }
|
|
|
- /deep/ .el-select__caret {
|
|
|
- color: rgb(106, 180, 255) !important;
|
|
|
- }
|
|
|
-}
|
|
|
-</style>
|