|
@@ -1,819 +0,0 @@
|
|
|
-<template>
|
|
|
- <div class="eleStyle">
|
|
|
-
|
|
|
- <!---------------------------查看------------------------------>
|
|
|
-
|
|
|
- <div v-show="queryLay" style="height:100%;width:80%; background:#ffffff; margin: 3% 9% 9% 9%; border-radius: 8px;">
|
|
|
- <div style="margin:0% 2%;">
|
|
|
- <div style=" padding-top:2%;font-size:18px;color:#000000;">项目管理</div>
|
|
|
- <el-divider />
|
|
|
- <div>
|
|
|
- <div style=" diaplay: flex; padding-top:30px;">
|
|
|
- <span style="flex:1;">状态</span>
|
|
|
- <el-select v-model="projectData.status" style="width: 100px;" size="mini" placeholder="状态" @change="updateData(projectData)">
|
|
|
- <el-option v-for="item in processStatusEnumList" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- <span style="flex:1;">优先级</span>
|
|
|
- <el-select v-model="projectData.priority" style="width: 100px;" size="mini" placeholder="优先级" @change="updateData(projectData)">
|
|
|
- <el-option v-for="item in priorityEnumList" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- <span style="flex:1;">进展</span>
|
|
|
- <el-select v-model="projectData.stage" placeholder="进展" style="width: 100px;" size="mini" @change="updateData(projectData)">
|
|
|
- <el-option v-for="item in stageEnumList" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- <el-button type="primary" size="small" @click="createDailyReport(projectData)">新建日报报告</el-button>
|
|
|
- <el-button type="primary" size="small" @click="createReport(projectData)">新建准出报告</el-button>
|
|
|
- <el-button type="primary" size="small" @click=" dialogFormTaskVisible = true, changeaddTaskData(projectData, 1)">新建任务</el-button>
|
|
|
- <el-button type="primary" size="small" style="float:right;margin-right:7%" @click="dialogFormVisible = true, changeData(projectData)">编辑</el-button>
|
|
|
- </div>
|
|
|
- <el-divider />
|
|
|
- <div style="display:flex;">
|
|
|
- <el-form style="flex:1; padding-left: 100px;" label="right" size="mini" label-width="110px">
|
|
|
- <el-form-item label="项目名称 :">{{ projectData.name }}</el-form-item>
|
|
|
- <el-form-item label="PM :">{{ projectData.pm }}</el-form-item>
|
|
|
- <el-form-item label="版本 :">{{ projectData.version }}</el-form-item>
|
|
|
- <!-- <el-form-item label="计划上线时间 :">{{ projectData.allOnlineTime }}</el-form-item> -->
|
|
|
- <!-- <el-form-item label="开始时间 :">{{ projectData.createTime }}</el-form-item> -->
|
|
|
- </el-form>
|
|
|
- <el-form style="flex:1; padding-left: 100px;" label="right" size="mini" label-width="110px">
|
|
|
- <el-form-item label="平台类型 :">{{ projectData.platForm }}</el-form-item>
|
|
|
- <el-form-item label="QA :">{{ projectData.qa }}</el-form-item>
|
|
|
- <el-form-item label="RD :">{{ projectData.rd }}</el-form-item>
|
|
|
- </el-form>
|
|
|
- </div>
|
|
|
- <el-form style=" padding-left: 100px;" label="right" size="mini" label-width="110px">
|
|
|
- <el-form-item label="需求文档 :">{{ projectData.mrdUrl }}</el-form-item>
|
|
|
- <el-form-item label="描述 :">{{ projectData.description }}</el-form-item>
|
|
|
- <el-form-item label="备注 :">{{ projectData.remarks }}</el-form-item>
|
|
|
- </el-form>
|
|
|
- </div>
|
|
|
- <el-button type="primary" round size="mini" icon="el-icon-arrow-down" style="cursor: pointer;" @click="show2 = !show2">详细查看</el-button>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <div v-show="show2" style="width:100%; padding-top:30px;">
|
|
|
- <div style="display: flex;">
|
|
|
- <el-form style="flex:1.7; margin-left: 100px;" label="right" size="mini" label-width="100px">
|
|
|
- <el-form-item label="UE :">{{ projectData.ue }}</el-form-item>
|
|
|
- </el-form>
|
|
|
- <el-form style="flex:1; margin-right: 130px;" label="right" size="mini" label-width="100px">
|
|
|
- <el-form-item label="UI :">{{ projectData.ui }}</el-form-item>
|
|
|
- </el-form>
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <div class="rich" v-html="projectData.timeInfo" />
|
|
|
- </div>
|
|
|
- <!-- <div style="display: flex;">
|
|
|
- <el-form style="flex:1; margin-left: 50px;" label="right" size="mini" label-width="150px">
|
|
|
- <el-form-item label="需求评审时间 :">{{ projectData.mrdTime }}</el-form-item>
|
|
|
- <el-form-item label="服务端开始开发时间 :">{{ projectData.serviceDevTime }}</el-form-item>
|
|
|
- </el-form>
|
|
|
- <el-form style="flex:1; margin-right: -50px;" label="right" size="mini" label-width="150px">
|
|
|
- <el-form-item label="全量时间 :">{{ projectData.allOnlineTime }}</el-form-item>
|
|
|
- <el-form-item label="客户端提测时间 :">{{ projectData.clientLaunchTestTime }}</el-form-item>
|
|
|
- </el-form>
|
|
|
- </div> -->
|
|
|
- <!-- <el-form style="margin-left: 95px;"><el-form-item label="开发联调时间 :">{{ projectData.joinTestTime }}</el-form-item></el-form>
|
|
|
- <div style="display: flex;">
|
|
|
- <el-form style="flex:1; margin-left: 50px;" label="right" size="mini" label-width="150px">
|
|
|
- <el-form-item label="服务端测试完成时间 :">{{ projectData.serviceFinishTestTime }}</el-form-item>
|
|
|
- <el-form-item label="服务端提测时间 :">{{ projectData.serviceLaunchTestTime }}</el-form-item>
|
|
|
- <el-form-item label="服务端上线时间 :">{{ projectData.serverOnLine }}</el-form-item>
|
|
|
- <el-form-item label="产品验收时间 :">{{ projectData.pmTestTime }}</el-form-item>
|
|
|
- </el-form>
|
|
|
- <el-form style="flex:1; margin-left: 50px;" label="right" size="mini" label-width="150px">
|
|
|
- <el-form-item label="客户端开始开发时间 :">{{ projectData.clientDevTime }}</el-form-item>
|
|
|
- <el-form-item label="客户端测试完成时间 :">{{ projectData.clientFinishTestTime }}</el-form-item>
|
|
|
- <el-form-item label="客户端上线时间 :">{{ projectData.clientOnlineTime }}</el-form-item>
|
|
|
- <el-form-item label="灰度时间 :">{{ projectData.pmTestTime }}</el-form-item>
|
|
|
- </el-form>
|
|
|
- </div> -->
|
|
|
- </div>
|
|
|
- </transition>
|
|
|
-
|
|
|
- <div style="margin-top:20px; width=100%">
|
|
|
- <el-tabs tab-position="top" style="height: 200px; width:100%;">
|
|
|
- <el-tab-pane label="任务信息">
|
|
|
- <el-table :data="listData" style="width: 100%" max-height="310">
|
|
|
- <el-table-column label="ID" prop="id" align="center" min-width="60"><template slot-scope="scope">{{ scope.row.id }}</template></el-table-column>
|
|
|
- <el-table-column label="标题" prop="name" align="center" min-width="100"><template slot-scope="scope"><el-tag style="cursor: pointer;" @click="getClickId(scope.row)">{{ scope.row.name }}</el-tag></template></el-table-column>
|
|
|
- <el-table-column label="创建时间" prop="gmtCreate" align="center" min-width="150"><template slot-scope="scope">{{ scope.row.createTime }}</template></el-table-column>
|
|
|
- <el-table-column label="状态" prop="statusString" align="center" min-width="80"><template slot-scope="scope">{{ scope.row.statusString }}</template></el-table-column>
|
|
|
- <el-table-column label="操作" align="center" min-width="150">
|
|
|
- <template slot-scope="{row}">
|
|
|
- <el-button type="primary" size="mini" @click=" dialogFormTaskVisible = true, changeaddTaskData(row, 2)">编辑</el-button>
|
|
|
- <el-button type="primary" size="mini" @click="deleteTaskDataOut1(row.id)">删除</el-button>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- </el-tab-pane>
|
|
|
- <el-tab-pane label="日报报告">
|
|
|
- <el-table :data="dailyTestReports" max-height="390" style="width: 100%">
|
|
|
- <el-table-column label="ID" prop="id" align="center" min-width="60"><template slot-scope="scope">{{ scope.row.id }}</template></el-table-column>
|
|
|
- <el-table-column label="标题" prop="name" align="center" min-width="100"><template slot-scope="scope"><el-tag style="cursor: pointer;" @click="JumpDaily(scope.row)">{{ scope.row.reportName }}</el-tag></template></el-table-column>
|
|
|
- <el-table-column label="创建时间" prop="gmtCreate" align="center" min-width="150"><template slot-scope="scope">{{ scope.row.gmtCreate }}</template></el-table-column>
|
|
|
- </el-table>
|
|
|
- </el-tab-pane>
|
|
|
- <el-tab-pane label="准出报告">
|
|
|
- <el-table :data="projectTestReports" max-height="390" style="width: 100%">
|
|
|
- <el-table-column label="ID" prop="id" align="center" min-width="60"><template slot-scope="scope">{{ scope.row.id }}</template></el-table-column>
|
|
|
- <el-table-column label="标题" prop="name" align="center" min-width="100"><template slot-scope="scope"><el-tag style="cursor: pointer;" @click="JumpOut(scope.row)">{{ scope.row.reportName }}</el-tag></template></el-table-column>
|
|
|
- <el-table-column label="创建时间" prop="gmtCreate" align="center" min-width="150"><template slot-scope="scope">{{ scope.row.gmtCreate }}</template></el-table-column>
|
|
|
- <el-table-column label="状态" prop="status" align="center" min-width="80"><template slot-scope="scope">{{ scope.row.statusString }}</template></el-table-column>
|
|
|
- </el-table>
|
|
|
- </el-tab-pane>
|
|
|
- </el-tabs>
|
|
|
- <div style="height:5%; text-align:center;">
|
|
|
- <el-button type="primary" style="margin:18% 0 3% 0;" @click="clickOut">关 闭</el-button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!------------------------- 项目编辑 ---------------------->
|
|
|
-
|
|
|
- <el-dialog title="项目编辑" width="80%" :visible.sync="dialogFormVisible" @open="openObject">
|
|
|
- <el-form ref="form" :model="form" :rules="serviceDataRules" style="width:93%;">
|
|
|
- <el-form-item label="项目名称" prop="name" :label-width="formLabelWidths">
|
|
|
- <el-input v-model="form.name" autocomplete="off" placeholder="项目名称" />
|
|
|
- </el-form-item>
|
|
|
- <div style="display: flex;">
|
|
|
- <div style="flex:1;">
|
|
|
- <el-form-item label="业务线" prop="bizId" :label-width="formLabelWidths">
|
|
|
- <el-select v-model="form.bizId" placeholder="业务线">
|
|
|
- <el-option v-for="item in bizIdEnumLists" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="状态" prop="status" :label-width="formLabelWidths">
|
|
|
- <el-select v-model="form.status" placeholder="状态">
|
|
|
- <el-option v-for="item in processStatusEnumList" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="平台类型" prop="platForm" :label-width="formLabelWidths">
|
|
|
- <el-select v-model="form.platForm" placeholder="平台类型">
|
|
|
- <el-option v-for="item in platFormString" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- <div style="flex:1;">
|
|
|
- <el-form-item label="优先级" prop="priority" :label-width="formLabelWidths">
|
|
|
- <el-select v-model="form.priority" placeholder="优先级">
|
|
|
- <el-option v-for="item in priorityEnumList" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="进展" prop="stage" :label-width="formLabelWidths">
|
|
|
- <el-select v-model="form.stage" placeholder="进展">
|
|
|
- <el-option v-for="item in stageEnumList" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- <div style="flex:1;">
|
|
|
- <el-form-item label="PM" prop="pm" :label-width="formLabelWidths">
|
|
|
- <el-input v-model="form.pm" autocomplete="off" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="版本" :label-width="formLabelWidths">
|
|
|
- <el-input v-model="form.version" autocomplete="off" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item v-show="false" label="创建人" :label-width="formLabelWidths">
|
|
|
- <el-input v-model="form.creater" autocomplete="off" />
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <el-form-item label="需求文档" :label-width="formLabelWidths">
|
|
|
- <el-input v-model="form.mrdUrl" autocomplete="off" />
|
|
|
- </el-form-item>
|
|
|
- <el-button type="primary" round size="mini" icon="el-icon-arrow-down" style="cursor: pointer;" @click="show2 = !show2">详细添加</el-button>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <div v-show="show2" style=" width:100%; margin-left:50px; padding-top:30px;">
|
|
|
- <div style="display: flex;">
|
|
|
- <div style="flex; 1;">
|
|
|
- <el-form-item label="UE " :label-width="formLabelWidths">
|
|
|
- <el-input v-model="form.ue" style="width: 220px;" autocomplete="off" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="UI " :label-width="formLabelWidths">
|
|
|
- <el-input v-model="form.ui" style="width: 220px;" autocomplete="off" />
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- <div style="flex: 1; margin-left: 135px;">
|
|
|
- <el-form-item label="RD " :label-width="formLabelWidths">
|
|
|
- <el-input v-model="form.rd" style="width: 220px;" autocomplete="off" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="QA " :label-width="formLabelWidths">
|
|
|
- <el-input v-model="form.qa" style="width: 220px;" autocomplete="off" />
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <el-form-item style="margin-left:110px;width:84%;">
|
|
|
- <div id="timeInfo" />
|
|
|
- <!-- <div id="timeInfo1" class="text" /> -->
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <!-- <div style="display: flex;">
|
|
|
- <div style="flex;1;">
|
|
|
- <el-form-item label="需求评审时间" :label-width="formLabelWidths">
|
|
|
- <el-date-picker v-model="form.mrdTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="服务端开始开发时间" :label-width="formLabelWidths">
|
|
|
- <el-date-picker v-model="form.serviceDevTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- <div style="flex:1;margin-left:135px;">
|
|
|
- <el-form-item label="全量时间" :label-width="formLabelWidths">
|
|
|
- <el-date-picker v-model="form.allOnlineTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="客户端开始开发时间" :label-width="formLabelWidths">
|
|
|
- <el-date-picker v-model="form.clientDevTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <el-form-item label="开发联调时间" :label-width="formLabelWidths">
|
|
|
- <el-date-picker v-model="form.joinTestTime" type="datetime" placeholder="选择日期" /> -->
|
|
|
- <!-- </el-form-item> -->
|
|
|
- <!-- <div style="display: flex;">
|
|
|
- <div style="flex:1;">
|
|
|
- <el-form-item label="服务端提测时间" :label-width="formLabelWidths">
|
|
|
- <el-date-picker v-model="form.serviceLaunchTestTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="服务端测试完成时间" :label-width="formLabelWidths">
|
|
|
- <el-date-picker v-model="form.serviceFinishTestTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="服务端上线时间" :label-width="formLabelWidths">
|
|
|
- <el-date-picker v-model="form.serverOnLine" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="灰度时间" :label-width="formLabelWidths">
|
|
|
- <el-date-picker v-model="form.grayscaleTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- <div style="flex:1;">
|
|
|
- <el-form-item label="客户端提测时间" :label-width="formLabelWidths">
|
|
|
- <el-date-picker v-model="form.clientLaunchTestTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="客户端测试完成时间" :label-width="formLabelWidths">
|
|
|
- <el-date-picker v-model="form.clientFinishTestTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="客户端上线时间" :label-width="formLabelWidths">
|
|
|
- <el-date-picker v-model="form.clientOnlineTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="产品验收时间" :label-width="formLabelWidths">
|
|
|
- <el-date-picker v-model="form.pmTestTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- </div> -->
|
|
|
- </div>
|
|
|
- </transition>
|
|
|
- <div style="display: flex; padding-top:30px; width: 100%;">
|
|
|
- <el-form-item label="备注" style="flex:1;" label-width="180px">
|
|
|
- <el-input v-model="form.remarks" type="textarea" :rows="4" placeholder="备注" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="描述" style="flex:1;" label-width="130px">
|
|
|
- <el-input v-model="form.description" type="textarea" :rows="4" placeholder="请输入内容" />
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- </el-form>
|
|
|
-
|
|
|
- <div slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="dialogFormVisible = false">取 消</el-button>
|
|
|
- <el-button type="primary" @click="dialogFormVisible = true, updateData1(form)">确 定</el-button>
|
|
|
- </div>
|
|
|
- </el-dialog>
|
|
|
-
|
|
|
- <!--------------------- 任务新增,编辑 --------------------->
|
|
|
-
|
|
|
- <el-dialog :title="codeTitle" width="80%" :visible.sync="dialogFormTaskVisible">
|
|
|
- <el-form ref="formTask" :model="formTask" :rules="serviceDataRules">
|
|
|
- <el-form-item label="任务名称" prop="name" label-width="100px" style="width:93%;">
|
|
|
- <el-input v-model="formTask.name" placeholder="任务名称" autocomplete="off" />
|
|
|
- </el-form-item>
|
|
|
- <div style="display: flex;">
|
|
|
- <div style="flex:1;">
|
|
|
- <el-form-item label="业务线" prop="bizId" label-width="100px">
|
|
|
- <el-select v-model="formTask.bizId" placeholder="业务线" @change="bizId(formTask.bizId)">
|
|
|
- <el-option v-for="item in bizIdEnumList" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="优先级" prop="priority" label-width="100px">
|
|
|
- <el-select v-model="formTask.priority" placeholder="优先级">
|
|
|
- <el-option v-for="item in priorityEnumList" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="进展" prop="stage" label-width="100px">
|
|
|
- <el-select v-model="formTask.stage" placeholder="进展">
|
|
|
- <el-option v-for="item in stageEnumList" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- <div style="flex:1;">
|
|
|
- <el-form-item label="平台类型" prop="type" label-width="100px">
|
|
|
- <el-select v-model="formTask.type" placeholder="平台类型" @change="changeType(formTask.type)">
|
|
|
- <el-option v-for="item in typeString" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="状态" prop="status" label-width="100px">
|
|
|
- <el-select v-model="formTask.status" placeholder="状态">
|
|
|
- <el-option v-for="item in processStatusEnumList" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="任务类型" prop="taskType" label-width="100px">
|
|
|
- <el-select v-model="formTask.taskType" placeholder="任务类型">
|
|
|
- <el-option v-for="item in taskTypeStr" :key="item.name" :label="item.name" :value="item.name" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- <div style="flex:1;">
|
|
|
- <el-form-item v-if="business" label="业务模块" prop="clientType" label-width="100px">
|
|
|
- <el-select v-model="formTask.clientType" placeholder="业务模块" @change="clientType(formTask.clientType)">
|
|
|
- <el-option v-for="item in businessTypeStr" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="是否免测" prop="notest" label-width="100px">
|
|
|
- <el-select v-model="formTask.notest" placeholder="是否免测">
|
|
|
- <el-option v-for="item in noTestEnumList" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <!-- <el-form-item v-if="osTypeShow" label="端类型" prop="osType" label-width="100px">
|
|
|
- <el-select v-model="formTask.osType" placeholder="端类型">
|
|
|
- <el-option v-for="item in osTypeEnum" :key="item.code" :label="item.name" :value="item.name" />
|
|
|
- </el-select>
|
|
|
- </el-form-item> -->
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <el-form-item label="需求文档" style="width:72vw;" label-width="100px">
|
|
|
- <el-input v-model="formTask.mrdUrl" autocomplete="off" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="技术文档" style="width:72vw;" label-width="100px">
|
|
|
- <el-input v-model="formTask.devUrl" autocomplete="off" />
|
|
|
- </el-form-item>
|
|
|
- <el-button type="primary" round size="mini" icon="el-icon-arrow-down" style="cursor: pointer;" @click="show2 = !show2">详细添加</el-button>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <div v-show="show2" style="display: flex; width:93%; padding-top:30px;">
|
|
|
- <div style="flex:1;">
|
|
|
- <el-form-item label="标签" :label-width="formLabelWidth">
|
|
|
- <el-input v-model="formTask.tag" style="width:220px;" autocomplete="off" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="RD" :label-width="formLabelWidth">
|
|
|
- <el-input v-model="formTask.rd" style="width:220px;" autocomplete="off" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="QA" :label-width="formLabelWidth">
|
|
|
- <el-input v-model="formTask.qa" style="width:220px;" autocomplete="off" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="需求评审时间" :label-width="formLabelWidth">
|
|
|
- <el-date-picker v-model="formTask.mrdTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="计划开始开发时间" :label-width="formLabelWidth">
|
|
|
- <el-date-picker v-model="formTask.startDevPlanTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="计划测试完成时间" :label-width="formLabelWidth">
|
|
|
- <el-date-picker v-model="formTask.testFinishPlanTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="计划提测时间" :label-width="formLabelWidth">
|
|
|
- <el-date-picker v-model="formTask.launchTestPlanTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="计划上线时间" :label-width="formLabelWidth">
|
|
|
- <el-date-picker v-model="formTask.onlinePlanTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- <div style="flex:1;">
|
|
|
- <el-form-item label="分组" :label-width="formLabelWidth">
|
|
|
- <el-input v-model="formTask.group" style="width:220px;" autocomplete="off" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="PM" :label-width="formLabelWidth">
|
|
|
- <el-input v-model="formTask.pm" style="width:220px;" autocomplete="off" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="关注人" prop="focusPenson" :label-width="formLabelWidth">
|
|
|
- <el-input v-model="formTask.focusPenson" style="width:220px;" autocomplete="off" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="实际开始开发时间" :label-width="formLabelWidth">
|
|
|
- <el-date-picker v-model="formTask.startDevRealTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="实际测试完成时间" :label-width="formLabelWidth">
|
|
|
- <el-date-picker v-model="formTask.testFinishRealTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="冒烟测试完成时间" :label-width="formLabelWidth">
|
|
|
- <el-date-picker v-model="formTask.smokeTestFinishTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="实际提测时间" :label-width="formLabelWidth">
|
|
|
- <el-date-picker v-model="formTask.launchTestRealTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="实际上线时间" :label-width="formLabelWidth">
|
|
|
- <el-date-picker v-model="formTask.onlineRealTime" type="datetime" placeholder="选择日期" />
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </transition>
|
|
|
- <dir style="display:flex; width:93%;">
|
|
|
- <el-form-item label="备注" style="flex:1;" label-width="60px">
|
|
|
- <el-input v-model="formTask.remark" type="textarea" :rows="4" placeholder="备注" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="描述" style="flex:1;" label-width="60px">
|
|
|
- <el-input v-model="formTask.description" type="textarea" :rows="4" placeholder="请输入内容" />
|
|
|
- </el-form-item>
|
|
|
- </dir>
|
|
|
- </el-form>
|
|
|
- <div slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="dialogFormTaskVisible = false">取 消</el-button>
|
|
|
- <el-button type="primary" @click="dialogFormTaskVisible = true, codeTitle === '任务新增'?createaddTaskData(formTask, 1):createaddTaskData(formTask, 2)">确 定</el-button>
|
|
|
- </div>
|
|
|
- </el-dialog>
|
|
|
-
|
|
|
- </div>
|
|
|
-</template>
|
|
|
-
|
|
|
-<script>
|
|
|
-import { projectInit, updateProject, getProjectData, createTaskData, deleteTaskData, updateTaskList, projectGetTypeMap } from '@/api/projectPage.js'
|
|
|
-import { bugGetEnum } from '@/api/defectManage' // 下拉菜单data
|
|
|
-import E from 'wangeditor' // 富文本
|
|
|
-
|
|
|
-export default {
|
|
|
- name: 'ProjectQuery',
|
|
|
- data() {
|
|
|
- return {
|
|
|
- bugTypeStr: [],
|
|
|
- serviceDataRules: {
|
|
|
- notest: [{ required: true, message: '是否免测不能为空', trigger: 'change' }],
|
|
|
- type: [{ required: true, message: '平台类型不能为空', trigger: 'change' }],
|
|
|
- name: [{ required: true, message: '项目名称不能为空', trigger: 'change' }],
|
|
|
- bizId: [{ required: true, message: '业务线不能为空', trigger: 'change' }],
|
|
|
- status: [{ required: true, message: '状态不能为空', trigger: 'change' }],
|
|
|
- priority: [{ required: true, message: '优先级不能为空', trigger: 'change' }],
|
|
|
- stage: [{ required: true, message: '进展不能为空', trigger: 'change' }],
|
|
|
- pm: [{ required: true, message: 'pm不能为空', trigger: 'change' }],
|
|
|
- taskType: [{ required: true, message: '任务类型不能为空', trigger: 'change' }],
|
|
|
- clientType: [{ required: true, message: '业务模块不能为空', trigger: 'change' }],
|
|
|
- // osType: [{ required: true, message: '端类型不能为空', trigger: 'change' }],
|
|
|
- platForm: [{ required: true, message: '平台类型不能为空', trigger: 'change' }]
|
|
|
- },
|
|
|
- reasonStr: [],
|
|
|
- queryLay: true,
|
|
|
- platformTypeStr: [],
|
|
|
- stageStr: [],
|
|
|
- discoveryMethodStr: [],
|
|
|
- platFormString: [],
|
|
|
- repairResultStr: [],
|
|
|
- bizIdEnumList: [],
|
|
|
- businessTypeStr: [],
|
|
|
- userInformation: localStorage.getItem('username'),
|
|
|
- userNames: localStorage.getItem('realname'),
|
|
|
- bizJson: localStorage.getItem('key'),
|
|
|
- projectData: {},
|
|
|
- statusShow: false,
|
|
|
- repairShow: false,
|
|
|
- formLabelWidth1: '160px',
|
|
|
- formLabelWidths: '160px',
|
|
|
- formLabelWidth: '160px',
|
|
|
- objData: '',
|
|
|
- userData: '',
|
|
|
- taskIdStr: '',
|
|
|
- url: '',
|
|
|
- arrurl: '',
|
|
|
- show2: false,
|
|
|
- bizIdEnumLists: [], // project优先级
|
|
|
- parameter: '', // projactId
|
|
|
- business: false, // 业务模块show
|
|
|
- osTypeEnum: [], // 端类型Data
|
|
|
- // osTypeShow: false, // 端类型show
|
|
|
- codeTitle: '', // title 任务
|
|
|
- taskTypeStr: [], // 任务类型Data
|
|
|
- dialogFormVisible: false, // 项目弹窗
|
|
|
- dialogFormTaskVisible: false, // 任务弹窗
|
|
|
- noTestEnumList: [], // 是否免测
|
|
|
- formTask: {}, // 任务新增 编辑data
|
|
|
- form: [], // 项目 新增data
|
|
|
- typeString: [], // 平台类型
|
|
|
- stageEnumList: [], // 进展
|
|
|
- priorityEnumList: [], // 优先级
|
|
|
- processStatusEnumList: [], // 状态
|
|
|
- timeInfo: [], // 富文本
|
|
|
- listData: [], // 任务data
|
|
|
- dailyTestReports: [], // 日报报告Data
|
|
|
- projectTestReports: [] // 准出报告Data
|
|
|
-
|
|
|
- }
|
|
|
- },
|
|
|
- created() {
|
|
|
- this.bugListSelect()
|
|
|
- this.getList()
|
|
|
- this.getList1()
|
|
|
- },
|
|
|
- methods: {
|
|
|
- getList1() {
|
|
|
- this.queryListData = {
|
|
|
- ename: this.userNames,
|
|
|
- bizId: this.bizJson
|
|
|
- }
|
|
|
- projectInit(this.queryListData).then(response => {
|
|
|
- this.taskTypeStr = response.query.taskAndRoutineEnumList
|
|
|
- })
|
|
|
- },
|
|
|
- getList() {
|
|
|
- if (this.$route.query.data) {
|
|
|
- this.projectData = this.$route.query.data
|
|
|
- for (var a of this.platFormString) {
|
|
|
- a.code === this.projectData.platForm ? this.projectData.platForm = a.name : ''
|
|
|
- }
|
|
|
- } else {
|
|
|
- this.url = window.location.href // 获取url中"?"符后的字串
|
|
|
- this.arrurl = this.url.split('?id=')
|
|
|
- getProjectData(this.arrurl[1]).then(res => {
|
|
|
- this.projectData = res.data
|
|
|
- this.projectTestReports = res.data.projectTestReports
|
|
|
- this.dailyTestReports = res.data.dailyTestReports
|
|
|
- this.listData = res.data.taskInfoDOList
|
|
|
- for (var a of this.platFormString) {
|
|
|
- a.code === this.projectData.platForm ? this.projectData.platForm = a.name : ''
|
|
|
- }
|
|
|
- this.form.clientType !== '' ? this.business = true : this.business = false
|
|
|
- this.business === false ? this.osTypeShow = false : this.osTypeShow = true
|
|
|
- this.parameter = res.data.id
|
|
|
- })
|
|
|
- }
|
|
|
- },
|
|
|
- getTimeInFoData() {
|
|
|
- this.projectData.timeInfo === '' ? '' : this.timeInfo.txt.html(this.projectData.timeInfo)
|
|
|
- // this.timeInfo.txt.html(this.projectData.timeInfo)
|
|
|
- },
|
|
|
- bugListSelect() {
|
|
|
- bugGetEnum().then(res => {
|
|
|
- this.platFormString = res.data.platformTypeEnumList // project 平台类型
|
|
|
- this.bizIdEnumLists = res.data.bizIdEnumList // project优先级
|
|
|
- this.stageStr = res.data.bugStageEnumList
|
|
|
- this.reasonStr = res.data.reasonEnumList
|
|
|
- this.platformTypeStr = res.data.platformTypeEnumList
|
|
|
- this.bugTypeStr = res.data.bugTypeEnumList
|
|
|
- this.priorityEnumList = res.data.priorityEnumList
|
|
|
- this.discoveryMethodStr = res.data.discoveryMethodEnumList
|
|
|
- this.repairResultStr = res.data.repairResultEnumList
|
|
|
- this.processStatusEnumList = res.data.processStatusEnumList
|
|
|
- this.stageEnumList = res.data.stageEnumList
|
|
|
- this.noTestEnumList = res.data.noTestEnumList
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- // 项目编辑提交
|
|
|
- updateData1(vel) {
|
|
|
- this.$refs['form'].validate((valid) => {
|
|
|
- if (valid) {
|
|
|
- this.bizData = vel
|
|
|
- for (var a of this.platFormString) {
|
|
|
- a.name === vel.platForm ? this.bizData.platForm = a.code : ''
|
|
|
- }
|
|
|
- typeof (this.timeInfo) === 'string' ? this.bizData.timeInfo = this.timeInfo : ''
|
|
|
- this.userData = { id: '', ename: this.userInformation, name: this.userNames }
|
|
|
- this.objData = { projectInfo: this.bizData, user: this.userData }
|
|
|
- updateProject(this.objData).then(response => {
|
|
|
- if (response.code === 200) {
|
|
|
- this.bizData = {}
|
|
|
- this.dialogFormVisible = false
|
|
|
- this.getList()
|
|
|
- this.successFun()
|
|
|
- } else {
|
|
|
- this.errorFun(response.msg)
|
|
|
- }
|
|
|
- })
|
|
|
- } else {
|
|
|
- return false
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- // 查看头部change
|
|
|
- updateData(vel) {
|
|
|
- this.bizData = vel
|
|
|
- for (var a of this.platFormString) {
|
|
|
- a.name === vel.platForm ? this.bizData.platForm = a.code : ''
|
|
|
- }
|
|
|
- this.userData = { id: '', ename: this.userInformation, name: this.userNames }
|
|
|
- this.objData = { projectInfo: this.bizData, user: this.userData }
|
|
|
- updateProject(this.objData).then(response => {
|
|
|
- if (response.code === 200) {
|
|
|
- for (var a of this.platFormString) {
|
|
|
- a.code === vel.platForm ? this.bizData.platForm = a.name : ''
|
|
|
- }
|
|
|
- this.bizData = {}
|
|
|
- this.successFun()
|
|
|
- } else {
|
|
|
- this.errorFun(response.msg)
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- // change 业务线
|
|
|
- bizId(e) {
|
|
|
- for (var a of this.bizIdEnumList) {
|
|
|
- if (e === a.code) {
|
|
|
- this.typeString = a.child
|
|
|
- }
|
|
|
- }
|
|
|
- this.business = false
|
|
|
- // this.osTypeShow = false
|
|
|
- this.$set(this.formTask, 'type', '')
|
|
|
- },
|
|
|
-
|
|
|
- // chnage 平台类型
|
|
|
- changeType(e) {
|
|
|
- for (var b of this.typeString) {
|
|
|
- if (e === b.code) {
|
|
|
- this.businessTypeStr = b.child
|
|
|
- b.child !== null ? this.business = true : this.business = false
|
|
|
- }
|
|
|
- // this.osTypeShow = false
|
|
|
- this.$set(this.formTask, 'clientType', '')
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- // 业务模块
|
|
|
- clientType(e) {
|
|
|
- for (var a of this.businessTypeStr) {
|
|
|
- if (e === a.code) {
|
|
|
- this.osTypeEnum = a.child
|
|
|
- // a.child !== null ? this.osTypeShow = true : this.osTypeShow = false
|
|
|
- }
|
|
|
- this.$set(this.formTask, 'osType', '')
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- // 弹窗添加富文本,加载DOM
|
|
|
- openObject() {
|
|
|
- this.getList()
|
|
|
- setTimeout(() => {
|
|
|
- this.timeInfo = new E('#timeInfo')
|
|
|
- this.timeInfo.customConfig.menus = ['bold', 'foreColor', 'italic', 'underline', 'list', 'justify', 'link', 'table']
|
|
|
- this.timeInfo.customConfig.onchange = (html) => { this.timeInfo = html }
|
|
|
- this.timeInfo.create()
|
|
|
- this.timeInfo.txt.html(``)
|
|
|
- this.getTimeInFoData()
|
|
|
- }, 100)
|
|
|
- },
|
|
|
-
|
|
|
- // 项目编辑
|
|
|
- changeData(vel) {
|
|
|
- this.form = vel
|
|
|
- },
|
|
|
-
|
|
|
- // 跳转任务页面 获取任务点击id
|
|
|
- getClickId(ele) {
|
|
|
- this.$router.push({ path: '/Platform/presentation/taskQuery', query: { id: ele.id }})
|
|
|
- },
|
|
|
-
|
|
|
- // 日报预览跳转
|
|
|
- JumpDaily(val) {
|
|
|
- val.projectId = this.arrurl[1]
|
|
|
- this.$router.push({ path: '/Platform/presentation/testPresenyL', query: { data: val }})
|
|
|
- },
|
|
|
-
|
|
|
- // 准出预览跳转
|
|
|
- JumpOut(val) {
|
|
|
- val.projectId = this.arrurl[1]
|
|
|
- this.$router.push({ path: '/Platform/presentation/ResultPageyL', query: { data: val }})
|
|
|
- },
|
|
|
-
|
|
|
- // 任务新增提交
|
|
|
- createaddTaskData(vel, e) {
|
|
|
- switch (e) {
|
|
|
- case 1:
|
|
|
- this.$refs['formTask'].validate((valid) => {
|
|
|
- if (valid) {
|
|
|
- this.formTask = vel
|
|
|
- this.formTask.projectId = this.parameter
|
|
|
- }
|
|
|
- this.userData = { id: '', ename: this.userInformation, name: this.userNames }
|
|
|
- this.objData = { taskInfo: this.formTask, user: this.userData }
|
|
|
- createTaskData(this.objData).then(response => {
|
|
|
- if (response.code === 200) {
|
|
|
- this.getList()
|
|
|
- this.successFun()
|
|
|
- this.dialogFormTaskVisible = false
|
|
|
- } else {
|
|
|
- this.errorFun(response.msg)
|
|
|
- }
|
|
|
- })
|
|
|
- })
|
|
|
- break
|
|
|
- case 2:
|
|
|
- this.formTask = vel
|
|
|
- this.formTask.projectId = this.parameter
|
|
|
- this.userData = { id: '', ename: this.userInformation, name: this.userNames }
|
|
|
- this.objData = { taskInfo: this.formTask, user: this.userData }
|
|
|
- updateTaskList(this.objData).then(response => {
|
|
|
- if (response.code === 200) {
|
|
|
- this.dialogFormTaskVisible = false
|
|
|
- this.getList()
|
|
|
- this.successFun(response.msg)
|
|
|
- } else {
|
|
|
- this.errorFun(response.msg)
|
|
|
- }
|
|
|
- })
|
|
|
- break
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- // 任务 1新增 2编辑
|
|
|
- changeaddTaskData(ele, vel) {
|
|
|
- projectGetTypeMap().then(res => {
|
|
|
- this.bizIdEnumList = res.data
|
|
|
- switch (vel) {
|
|
|
- case 1:
|
|
|
- this.$nextTick(() => {
|
|
|
- this.$refs['formTask'].clearValidate()
|
|
|
- })
|
|
|
- this.codeTitle = '任务新增'
|
|
|
- this.formTask = {}
|
|
|
- this.business = false
|
|
|
- this.osTypeShow = false
|
|
|
- break
|
|
|
- case 2:
|
|
|
- this.codeTitle = '任务编辑'
|
|
|
- this.formTask = ele
|
|
|
- ele.clientType !== '' ? this.business = true : this.business = false
|
|
|
- // ele.osType !== '' ? this.osTypeShow = true : this.osTypeShow = false
|
|
|
- this.business === false ? this.osTypeShow = false : ''
|
|
|
- for (var b of this.bizIdEnumList) {
|
|
|
- ele.bizId === b.code ? this.typeString = b.child : ''
|
|
|
- }
|
|
|
- for (var s of this.typeString) {
|
|
|
- ele.type === s.code ? this.businessTypeStr = s.child : ''
|
|
|
- }
|
|
|
- for (var d of this.businessTypeStr) {
|
|
|
- ele.osType === d.name ? this.osTypeEnum = d.child : ''
|
|
|
- }
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- // task delete
|
|
|
- deleteTaskDataOut1(e) {
|
|
|
- this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'warning'
|
|
|
- }).then(() => {
|
|
|
- this.deleteTaskDataOut(e)
|
|
|
- this.$message({ type: 'success', message: '删除成功!' })
|
|
|
- }).catch(() => {
|
|
|
- this.$message({ type: 'info', message: '已取消删除' })
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- // 任务删除
|
|
|
- deleteTaskDataOut(e) {
|
|
|
- this.userData = { id: '', ename: this.userInformation, name: this.userNames }
|
|
|
- deleteTaskData(e, this.userData).then(response => {
|
|
|
- if (response.code === 200) {
|
|
|
- this.getList1()
|
|
|
- } else {
|
|
|
- this.errorFun(response.msg)
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- // 新建日报报告
|
|
|
- createDailyReport(ele) {
|
|
|
- this.$router.push({ path: '/Platform/presentation/DailyNewsAdded', query: { projectId: ele }})
|
|
|
- },
|
|
|
-
|
|
|
- // 新建准出报告
|
|
|
- createReport(ele) {
|
|
|
- if (ele.platForm !== '服务端') {
|
|
|
- this.$router.push({ path: '/Platform/presentation/ClientAcceptance', query: { projectId: ele }}) // 客户端
|
|
|
- } else {
|
|
|
- this.$router.push({ path: '/Platform/presentation/Acceptance', query: { projectId: ele }}) // 服务端
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- // 返回
|
|
|
- clickOut() {
|
|
|
- this.$router.push({ path: '/Platform/projectPage' })
|
|
|
- },
|
|
|
- successFun() {
|
|
|
- this.$notify({ title: 'Success', message: 'Created Successfully', type: 'success', duration: 2000 })
|
|
|
- },
|
|
|
- errorFun(e) {
|
|
|
- this.$notify({ title: 'Failed', message: e, type: 'error', duration: 2000 })
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-</script>
|
|
|
-
|
|
|
-<style scoped>
|
|
|
- .eleStyle {
|
|
|
- width: 100%;
|
|
|
- height:100%;
|
|
|
- background:#F2F3F6;
|
|
|
- /* position:fixed; */
|
|
|
- display: inline-block;
|
|
|
- }
|
|
|
- .el-divider--horizontal {
|
|
|
- margin: 3px;
|
|
|
- background: #F2F3F6;
|
|
|
- }
|
|
|
- .toolbar {
|
|
|
- border: 2px solid #ccc;
|
|
|
- }
|
|
|
- .text {
|
|
|
- font-size: 15px;
|
|
|
- color: #606266;
|
|
|
- border: 2px solid #ccc;
|
|
|
- height: auto;
|
|
|
- }
|
|
|
- .rich>>> table tr td{border:1px solid #ccc;font-size: 15px; color: #606266}
|
|
|
- .rich>>> table th{border:1px solid #ccc; font-size: 15px; color: #606266}
|
|
|
- .rich>>> table {border:1px solid #ccc; border-collapse: collapse;line-height: 30px; text-align: center;font-size: 15px; color: #606266}
|
|
|
-</style>
|