|
@@ -2,23 +2,25 @@
|
|
|
<div style="background-color:#F2F3F6;display:flex;align-items: center;justify-content: center;">
|
|
|
<el-container>
|
|
|
<el-header class="bgborder" style=" margin: 1%;height: 7vh;display: flex; justify-content: space-between; align-items: center;">
|
|
|
- <el-tooltip class="item" effect="dark" content="爱啥啥" placement="bottom">
|
|
|
- <span style="float: left;">项目名称:"cmckldmcklmdcklmdsklcmklmckldklcmdsdcklmdklcdsklcmkldsmcklm"</span>
|
|
|
- </el-tooltip>
|
|
|
- <span style="float: right;">
|
|
|
- <el-dropdown>
|
|
|
- <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>进行中</el-dropdown-item>
|
|
|
- <el-dropdown-item>已完成</el-dropdown-item>
|
|
|
+ <span style="display: flex; justify-content: space-between; align-items: center;">
|
|
|
+ <el-tooltip effect="dark" :content="form_query.name" placement="bottom">
|
|
|
+ <div style="float: left;font-weight: 600;margin-right:8%;white-space: nowrap; ">{{ form_query.name | ellipsis }}</div>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-dropdown @command="handleCommand">
|
|
|
+ <el-button size="mini" type="primary" class="el-dropdown-link drop_down" style="cursor: pointer;">{{ form_query.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 arr_status" :key="item.value" :command="{value:item.value,label:item.name}">{{ item.name }}</el-dropdown-item>
|
|
|
</el-dropdown-menu>
|
|
|
</el-dropdown>
|
|
|
+ </span>
|
|
|
+ <span style="float: right;">
|
|
|
+ <el-button size="mini" type="primary" @click="centerDialogVisible = true">删除项目</el-button>
|
|
|
<el-dropdown>
|
|
|
<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>新建需求</el-dropdown-item>
|
|
|
- <el-dropdown-item>新建任务</el-dropdown-item>
|
|
|
+ <el-dropdown-item @click.native="reated_task()">新建任务</el-dropdown-item>
|
|
|
</el-dropdown-menu>
|
|
|
</el-dropdown>
|
|
|
</span>
|
|
@@ -27,157 +29,100 @@
|
|
|
<el-aside class="bgborder" style=" margin:0 1%;minWidth: 55%;">
|
|
|
<div style="margin: 5%; font-weight: 600; white-space: nowrap;">
|
|
|
<b style="color: #409EFF;margin: 0 0.5%; font-size: 20px; ">I</b>数据统计
|
|
|
- <el-button size="mini" type="primary" style="float: right;" @click="centerDialogVisible = true">删除项目</el-button>
|
|
|
</div>
|
|
|
<div style="display: flex; justify-content: space-between; align-items: center;">
|
|
|
<span style="text-align: center; margin-left: 10%">
|
|
|
<p>需求数量</p>
|
|
|
- <p style="font-size: 44px;">0</p>
|
|
|
- <p>
|
|
|
- <el-button size="mini" type="primary">提需求</el-button>
|
|
|
- </p>
|
|
|
+ <p style="font-size: 44px;">{{ form_query.requirementCount }}</p>
|
|
|
+ <p><el-button size="mini" type="primary">提需求</el-button></p>
|
|
|
</span>
|
|
|
<span style="text-align: center;">
|
|
|
<p>任务数量</p>
|
|
|
- <p style="font-size: 44px;">0</p>
|
|
|
- <p>
|
|
|
- <el-button size="mini" type="primary">建任务</el-button>
|
|
|
- </p>
|
|
|
+ <p style="font-size: 44px;">{{ form_query.taskCount }}</p>
|
|
|
+ <p><el-button size="mini" type="primary" @click="reated_task()">建任务</el-button></p>
|
|
|
</span>
|
|
|
<span style="text-align: center;margin-right:10%;">
|
|
|
<p>Bug数量</p>
|
|
|
- <p style="font-size: 44px;">0</p>
|
|
|
- <p>
|
|
|
- <el-button size="mini" type="primary">提bug</el-button>
|
|
|
- </p>
|
|
|
+ <p style="font-size: 44px;">{{ form_query.bugCount }}</p>
|
|
|
+ <p><el-button size="mini" type="primary">提bug</el-button></p>
|
|
|
</span>
|
|
|
</div>
|
|
|
</el-aside>
|
|
|
<el-container>
|
|
|
- <el-main class="bgborder" style="margin: 0 2.1% 0 0;min-height: 50vh;">
|
|
|
- <div style="margin: 2.5%; font-weight: 600; white-space: nowrap;">
|
|
|
- <b style="color: #409EFF;margin: 0 0.5%; font-size: 20px; ">I</b>基础信息
|
|
|
- </div>
|
|
|
- <el-form
|
|
|
- label-position="left"
|
|
|
- label-width="100px"
|
|
|
- style="margin: 0 8%"
|
|
|
- :model="formLabelAlign"
|
|
|
- >
|
|
|
+ <el-main class="bgborder" style="margin: 0 2.1% 0 0;min-height: 50vh;overflow-x: hidden;">
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12"><div style="margin: 2.5%; font-weight: 600; white-space: nowrap;"><b style="color: #409EFF;margin: 0 0.5%; font-size: 20px; ">I</b>基础信息</div></el-col>
|
|
|
+ <el-col :span="12" :push="7"><div style="margin: 3%; font-weight: 600; white-space: nowrap;"><el-button size="mini" type="primary" @click="project_modifica(form_query)">修改</el-button></div></el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-form label-position="left" label-width="100px" style="margin: 0 8%" :model="form_query">
|
|
|
<el-row :gutter="20">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="项目类型:">
|
|
|
- <div class="grid-content bg-purple">1</div>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12" :push="7">
|
|
|
- <el-button
|
|
|
- size="mini"
|
|
|
- type="primary"
|
|
|
- @click="project_modifica(formLabelAlign.describe)"
|
|
|
- >修改</el-button>
|
|
|
- </el-col>
|
|
|
+ <el-col :span="24" style="word-break: break-all;"><el-form-item label="项目类型:">{{ form_query.priorityStr }}</el-form-item></el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="20">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="业务线:">
|
|
|
- <div class="grid-content bg-purple">1</div>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="优先级:">
|
|
|
- <div class="grid-content bg-purple">2</div>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
+ <el-col :span="12" style="word-break: break-all;"><el-form-item label="业务线:">{{ form_query.bizStr }}</el-form-item></el-col>
|
|
|
+ <el-col :span="12" style="word-break: break-all;"><el-form-item label="优先级:">{{ form_query.projectTypeStr }}</el-form-item></el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="20">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="项目负责人:">
|
|
|
- <div class="grid-content bg-purple">1</div>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="产品负责人:">
|
|
|
- <div class="grid-content bg-purple">2</div>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
+ <el-col :span="12" style="word-break: break-all;"><el-form-item label="项目负责人:">{{ form_query.projectOwner }}</el-form-item></el-col>
|
|
|
+ <el-col :span="12"><el-form-item label="产品负责人:">{{ form_query.pmOwner }}</el-form-item></el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="20">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="开发负责人:">
|
|
|
- <div class="grid-content bg-purple">1</div>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="测试负责人:">
|
|
|
- <div class="grid-content bg-purple">2</div>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
+ <el-col :span="12" style="word-break: break-all;"><el-form-item label="开发负责人:">{{ form_query.rdOwner }}</el-form-item></el-col>
|
|
|
+ <el-col :span="12" style="word-break: break-all;"><el-form-item label="测试负责人:">{{ form_query.testOwner }}</el-form-item></el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="20">
|
|
|
- <el-col :span="24">
|
|
|
- <el-form-item label="项目描述:">
|
|
|
- <el-input
|
|
|
- v-show="describe"
|
|
|
- ref="describe"
|
|
|
- v-model="formLabelAlign.describe"
|
|
|
- rows="3"
|
|
|
- type="textarea"
|
|
|
- placeholder="请输入内容"
|
|
|
- show-word-limit
|
|
|
- @blur="blur_describe(formLabelAlign.describe)"
|
|
|
- />
|
|
|
- <span v-show="describe1">{{ formLabelAlign.describe }}</span>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
+ <el-col :span="24" style="word-break: break-all;"><el-form-item label="项目描述:">{{ form_query.description }}</el-form-item></el-col>
|
|
|
</el-row>
|
|
|
</el-form>
|
|
|
</el-main>
|
|
|
</el-container>
|
|
|
</el-container>
|
|
|
- <el-header class="bgborder" style="margin: 1%;min-height: 70vh;">
|
|
|
- <el-tabs tab-position="top" @tab-click="handleClick">
|
|
|
+ <el-header class="bgborder" style="margin: 1%;height: auto;overflow-y: hidden;">
|
|
|
+ <el-tabs tab-position="top">
|
|
|
<el-tab-pane label="项目总目标" style="position: relative;">
|
|
|
<div v-show="Addition" class="test">您还没有设定目标请<el-button type="text" @click="ImmediateAddition">立即添加</el-button></div>
|
|
|
<div v-show="Addition1">
|
|
|
-
|
|
|
- <el-input ref="textarea" v-model="textarea" rows="10" type="textarea" placeholder="请输入内容" show-word-limit style="margin: 5% 0;" @blur="blur_textarea(textarea)" />
|
|
|
+ <el-col :span="24" :push="21" style="margin-bottom: 1.5%;">
|
|
|
+ <el-button v-show="button_num.btn2" size="mini" type="primary" @click="blur_textarea(form_query.target)">确定</el-button>
|
|
|
+ <el-button v-show="button_num.btn2" size="mini" type="primary" @click="ImmediateAddition">取消</el-button>
|
|
|
+ </el-col>
|
|
|
+ <el-input ref="textarea" v-model="form_query.target" rows="10" type="textarea" placeholder="请输入内容" show-word-limit style="margin: 5% 0;" />
|
|
|
</div>
|
|
|
<div v-show="Addition2">
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="24" :push="22" style="margin-bottom: 1.5%;">
|
|
|
- <el-button size="mini" type="primary" @click="ImmediateAddition">编辑</el-button>
|
|
|
+ <el-button v-show="button_num.btn1" size="mini" type="primary" @click="ImmediateAddition">编辑</el-button>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
- {{ textarea }}
|
|
|
+ <pre style="white-space:pre-line">{{ form_query.target }}</pre>
|
|
|
</div>
|
|
|
</el-tab-pane>
|
|
|
- <el-tab-pane label="项目里程碑" style="overflow: auto;width: 100%;">
|
|
|
+ <el-tab-pane label="项目里程碑" style="width: 100%;">
|
|
|
<div>
|
|
|
<el-divider style="position: absolute;" content-position="right">
|
|
|
<el-tooltip class="item" effect="dark" content="温馨提示:点击添加可以新建里程碑" placement="bottom-end">
|
|
|
- <el-button style="z-index: 999999;" size="mini" type="primary" icon="el-icon-plus" circle @click="dialogFormVisible = true" />
|
|
|
+ <el-button style="z-index: 999999;" size="mini" type="primary" icon="el-icon-plus" circle @click="details_projectMilepost" />
|
|
|
</el-tooltip>
|
|
|
</el-divider>
|
|
|
- <ul class="time-horizontal" style="margin-top:15%;">
|
|
|
+ <ul class="time-horizontal" style="margin-top:21%;">
|
|
|
<li v-for="(item, index) in project_Milepost" :key="index">
|
|
|
<i>
|
|
|
<div>
|
|
|
<el-popover class="popover" placement="top" width="200" trigger="click" style="border-radius: 10px;">
|
|
|
<p style="text-align: center">
|
|
|
- <el-button size="mini">删除</el-button>
|
|
|
- <el-button size="mini" type="primary" @click="dialogFormVisible = true">编辑</el-button>
|
|
|
+ <el-button size="mini" @click="dalete_Milepost = true">删除</el-button>
|
|
|
+ <el-button size="mini" type="primary" @click="query_date">编辑</el-button>
|
|
|
</p>
|
|
|
- <b slot="reference">一 </b>
|
|
|
+ <b slot="reference" @click="get_Milepost(item)">一 </b>
|
|
|
</el-popover>
|
|
|
</div>
|
|
|
</i>
|
|
|
<div>
|
|
|
- {{ item.name }}
|
|
|
+ {{ item.title | ellipsis_title }}
|
|
|
<br>
|
|
|
- {{ item.date }}
|
|
|
+ {{ item.mtime }}
|
|
|
</div>
|
|
|
- <p>{{ item.code }}</p>
|
|
|
+ <p style="white-space:pre-line">{{ item.description }}</p>
|
|
|
</li>
|
|
|
</ul>
|
|
|
</div>
|
|
@@ -189,33 +134,30 @@
|
|
|
<div style="margin: 5%; font-weight: 600; white-space: nowrap;">
|
|
|
<b style="color: #409EFF;margin: 0 0.5%; font-size: 20px; ">I</b>任务筛选
|
|
|
</div>
|
|
|
- <div class="aside">全部任务</div>
|
|
|
- <div class="aside" @click="show2 = !show2">归属需求任务</div>
|
|
|
+ <div class="aside" @click="get_allTask">全部任务</div>
|
|
|
+ <div class="aside" @click="show2 = !show2,AttributionDemand()">归属需求任务</div>
|
|
|
<transition name="el-zoom-in-top">
|
|
|
<div v-show="show2" class="transition-box">
|
|
|
- <el-table :data="tableData" style="width: 100%;" size="mini" :header-cell-style="{ background: '#6AB4FF', color: '#FFFFFF' }" show-overflow-tooltip="true" :row-class-name="tableRowClassName">
|
|
|
- <el-table-column label="需求名称" min-width="100" align="center">
|
|
|
+ <el-table :data="tableData" style="width: 100%;" size="mini" :header-cell-style="{ background: '#6AB4FF', color: '#FFFFFF' }" show-overflow-tooltip="true">
|
|
|
+ <el-table-column label="需求名称" min-width="100" align="center" show-overflow-tooltip>
|
|
|
<template slot-scope="scope">
|
|
|
- <el-tag size="mini" :type="random(scope.row)" effect="dark">{{ scope.row.teamName }}</el-tag>
|
|
|
+ <span @click="click_name(scope.row.id)">{{ scope.row.name }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="PM" min-width="100" align="center" show-overflow-tooltip>
|
|
|
- <template slot-scope="scope">{{ scope.row.address }}</template>
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div v-for="item of scope.row.pm" :key="item" @click="click_name(scope.row.id)">{{ item.name }}</div>
|
|
|
+ </template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="状态" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.teamName }}</template>
|
|
|
+ <el-table-column label="状态" min-width="100" align="center" show-overflow-tooltip>
|
|
|
+ <template slot-scope="scope" @click="click_name(scope.row.id)">{{ scope.row.status }}</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
</div>
|
|
|
</transition>
|
|
|
- <div class="aside">
|
|
|
+ <div class="aside" @click="NoOwnership()">
|
|
|
无归属需求任务
|
|
|
- <el-tooltip
|
|
|
- class="item"
|
|
|
- effect="dark"
|
|
|
- content="点击“无归属需求的任务”,右边任务列表区域展示当前项目下所有无归属需求的任务。"
|
|
|
- placement="bottom"
|
|
|
- >
|
|
|
+ <el-tooltip class="item" effect="dark" content="点击“无归属需求的任务”,右边任务列表区域展示当前项目下所有无归属需求的任务。" placement="bottom">
|
|
|
<i style="color: red;" class="el-icon-warning-outline" />
|
|
|
</el-tooltip>
|
|
|
</div>
|
|
@@ -225,283 +167,382 @@
|
|
|
<div style="margin: 2.5%; font-weight: 600; white-space: nowrap;">
|
|
|
<b style="color: #409EFF;margin: 0 0.5%; font-size: 20px; ">I</b>任务列表
|
|
|
</div>
|
|
|
- <el-table
|
|
|
- :data="tableData"
|
|
|
- style="width: 100%;"
|
|
|
- size="mini"
|
|
|
- :header-cell-style="{ background: '#6AB4FF', color: '#FFFFFF' }"
|
|
|
- show-overflow-tooltip="true"
|
|
|
- :row-class-name="tableRowClassName"
|
|
|
- >
|
|
|
+ <el-table :data="all_task" style="width: 100%;" size="mini" :header-cell-style="{ background: '#6AB4FF', color: '#FFFFFF' }" show-overflow-tooltip="true">
|
|
|
<el-table-column label="任务名称" min-width="100" align="center" show-overflow-tooltip>
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-tag
|
|
|
- size="mini"
|
|
|
- :type="random(scope.row)"
|
|
|
- effect="dark"
|
|
|
- >{{ scope.row.teamName }}</el-tag>
|
|
|
- </template>
|
|
|
+ <template slot-scope="scope">{{ scope.row.name }}</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="所属需求" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.address }}</template>
|
|
|
+ <el-table-column label="所属需求" min-width="100" align="center" show-overflow-tooltip>
|
|
|
+ <template slot-scope="scope">{{ scope.row.requireName }}</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="状态" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.teamName }}</template>
|
|
|
+ <template slot-scope="scope">{{ scope.row.statusString }}</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="任务健康状态" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.teamName }}</template>
|
|
|
+ <template slot-scope="scope">{{ scope.row.stageString }}</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="开发负责人" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.teamName }}</template>
|
|
|
+ <el-table-column label="开发负责人" min-width="100" align="center" show-overflow-tooltip>
|
|
|
+ <template slot-scope="scope">{{ scope.row.rdObject.name }}</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="测试负责人" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.teamName }}</template>
|
|
|
+ <el-table-column label="测试负责人" min-width="100" align="center" show-overflow-tooltip>
|
|
|
+ <template slot-scope="scope">{{ scope.row.qaObject.name }}</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="任务进度" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.teamName }}</template>
|
|
|
+ <template slot-scope="scope"><el-progress :percentage="scope.row.rate" color="#409eff" /></template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
<div style="marign-top:3%;display:flex;align-items: center;justify-content: flex-end;">
|
|
|
- <el-pagination
|
|
|
- background
|
|
|
- :current-page="currentPage"
|
|
|
- :page-sizes="[15, 20, 25, 30]"
|
|
|
- :page-size="100"
|
|
|
- layout="total, prev, pager, next, jumper"
|
|
|
- :total="100"
|
|
|
- @size-change="handleSizeChange"
|
|
|
- @current-change="handleCurrentChange"
|
|
|
- />
|
|
|
+ <el-pagination background :page-sizes="[15, 20, 25, 30]" :page-size="100" layout="total, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
|
|
</div>
|
|
|
</el-main>
|
|
|
</el-container>
|
|
|
</el-container>
|
|
|
</el-container>
|
|
|
- <el-dialog :visible.sync="dialogFormVisible" class="dialog">
|
|
|
+ <el-dialog :visible.sync="dialogFormVisible" class="dialog" @close="close_dialog">
|
|
|
<div style="margin:0 0 2% 3%; font-weight: 600; white-space: nowrap;font-size: 20px;">
|
|
|
- <b style="color: #409EFF;margin: 0 0.5%;">I</b>编辑里程碑
|
|
|
+ <b style="color: #409EFF;margin: 0 0.5%;">I</b>{{ title_name }}
|
|
|
</div>
|
|
|
- <el-form :model="form" label-position="right">
|
|
|
- <el-form-item label="标题" :label-width="formLabelWidth1">
|
|
|
- <el-input v-model="form.name" autocomplete="off" placeholder="请输入标题" />
|
|
|
+ <el-form ref="form" :model="form" :rules="formRules" :label-width="formLabelWidth1" label-position="right">
|
|
|
+ <el-form-item label="标题" prop="title">
|
|
|
+ <el-input v-model="form.title" autocomplete="off" placeholder="请输入标题" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="时间" :label-width="formLabelWidth1">
|
|
|
- <el-date-picker v-model="form.date" type="date" placeholder="请选择日期" />
|
|
|
+ <el-form-item label="时间" prop="mtime">
|
|
|
+ <el-date-picker v-model="form.mtime" type="date" format="yyyy 年 MM 月 dd 日" placeholder="请选择日期" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="详情" :label-width="formLabelWidth1">
|
|
|
- <el-input
|
|
|
- v-model="textarea"
|
|
|
- rows="3"
|
|
|
- maxlength="200"
|
|
|
- type="textarea"
|
|
|
- placeholder="请输入详情内容,详情内容不可超过200字符"
|
|
|
- show-word-limit
|
|
|
- />
|
|
|
+ <el-form-item label="详情">
|
|
|
+ <el-input v-model="form.description" rows="3" maxlength="200" type="textarea" placeholder="请输入详情内容,详情内容不可超过200字符" show-word-limit />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="dialogFormVisible = false">取 消</el-button>
|
|
|
- <el-button type="primary" @click="dialogFormVisible = false">确 定</el-button>
|
|
|
+ <el-button @click="dialogFormVisible = false">关 闭</el-button>
|
|
|
+ <el-button type="primary" @click="Milepost_Submission(form)">提 交</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
- <el-dialog title="新建项目" :visible.sync="dialog_FormVisible" width="70%">
|
|
|
- <el-form :model="form" label-position="left" style="margin: 0 3%;">
|
|
|
- <el-form-item label="项目名称" :label-width="formLabelWidth">
|
|
|
- <el-input v-model="form.name" autocomplete="off" placeholder="请输入项目名称" />
|
|
|
+ <el-dialog title="修改项目" :visible.sync="modify_project" width="70%">
|
|
|
+ <el-form ref="project_from" :model="project_from" :rules="rules_form" :label-width="formLabelWidth" label-position="left" style="margin: 0 3%;">
|
|
|
+ <el-form-item label="项目名称" prop="name">
|
|
|
+ <el-input v-model="project_from.name" autocomplete="off" placeholder="请输入项目名称" />
|
|
|
</el-form-item>
|
|
|
<div style="display: flex;">
|
|
|
<div style="flex; 1;">
|
|
|
- <el-form-item label="项目类型" :label-width="formLabelWidth">
|
|
|
- <el-select v-model="form.value" clearable placeholder="业务/产品" style="width: 100%">
|
|
|
- <el-option v-for="item in options1" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ <el-form-item label="项目类型" prop="bizType">
|
|
|
+ <el-select v-model="project_from.bizType" clearable placeholder="业务/产品" style="width: 100%">
|
|
|
+ <el-option v-for="item in arr_prjectType" :key="item.value" :label="item.name" :value="item.value" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="业务线" :label-width="formLabelWidth">
|
|
|
- <el-select v-model="form.value" clearable placeholder="请选择" style="width:20vw">
|
|
|
- <el-option v-for="item in options1" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ <el-form-item label="业务线" prop="bizId">
|
|
|
+ <el-select v-model="project_from.bizId" clearable placeholder="请选择" style="width:20vw">
|
|
|
+ <el-option v-for="item in all_bizId" :key="item.id" :label="item.bizName" :value="item.id" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="产品负责人" :label-width="formLabelWidth">
|
|
|
- <el-select v-model="form.value1" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" clearable placeholder="请输入姓名或邮箱前缀" style="width: 100%">
|
|
|
- <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ <el-form-item label="产品负责人">
|
|
|
+ <el-select v-model="project_from.pmOwner" filterable remote reserve-keyword 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)">
|
|
|
+ <span style="float: left">{{ item.name }}</span>
|
|
|
+ <span style="float: right; color: #8492a6; font-size: 13px,">{{ item.idap }}</span>
|
|
|
+ </el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="测试负责人" :label-width="formLabelWidth">
|
|
|
- <el-select v-model="form.value1" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" clearable placeholder="请输入姓名或邮箱前缀" style="width: 100%">
|
|
|
- <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ <el-form-item label="测试负责人">
|
|
|
+ <el-select v-model="project_from.testOwner" filterable remote reserve-keyword 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)">
|
|
|
+ <span style="float: left">{{ item.name }}</span>
|
|
|
+ <span style="float: right; color: #8492a6; font-size: 13px,">{{ item.idap }}</span>
|
|
|
+ </el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
<div style="flex; 1; margin: 0 0 0 auto;">
|
|
|
- <el-form-item label="优先级" :label-width="formLabelWidth">
|
|
|
- <el-select v-model="form.value" clearable placeholder="请选择" style="width:20vw">
|
|
|
- <el-option v-for="item in options1" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ <el-form-item label="优先级" prop="priority">
|
|
|
+ <el-select v-model="project_from.priority" clearable placeholder="请选择" style="width:20vw">
|
|
|
+ <el-option v-for="item in arr_priority" :key="item.value" :label="item.name" :value="item.value" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="项目负责人" :label-width="formLabelWidth">
|
|
|
- <el-select v-model="form.value1" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" clearable placeholder="请输入姓名或邮箱前缀" style="width: 100%">
|
|
|
- <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ <el-form-item label="项目负责人" prop="projectOwner">
|
|
|
+ <el-select v-model="project_from.projectOwner" filterable remote reserve-keyword 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)">
|
|
|
+ <span style="float: left">{{ item.name }}</span>
|
|
|
+ <span style="float: right; color: #8492a6; font-size: 13px,">{{ item.idap }}</span>
|
|
|
+ </el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="开发负责人" :label-width="formLabelWidth">
|
|
|
- <el-select v-model="form.value1" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" clearable placeholder="请输入姓名或邮箱前缀" style="width: 100%">
|
|
|
- <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ <el-form-item label="开发负责人">
|
|
|
+ <el-select v-model="project_from.rdOwner" filterable remote reserve-keyword 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)">
|
|
|
+ <span style="float: left">{{ item.name }}</span>
|
|
|
+ <span style="float: right; color: #8492a6; font-size: 13px,">{{ item.idap }}</span>
|
|
|
+ </el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <el-form-item label="项目描述" :label-width="formLabelWidth">
|
|
|
- <el-input v-model="form.textarea" type="textarea" placeholder="请输入" show-word-limit />
|
|
|
+ <el-form-item label="项目描述">
|
|
|
+ <el-input v-model="project_from.description" type="textarea" placeholder="请输入" show-word-limit />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="dialog_FormVisible = false">取 消</el-button>
|
|
|
- <el-button type="primary" @click="dialog_FormVisible = false">创 建</el-button>
|
|
|
+ <el-button @click="modify_project = false">关 闭</el-button>
|
|
|
+ <el-button type="primary" @click="modifyProject(project_from)">保 存</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
+ <!-- 删除 -->
|
|
|
<el-dialog :visible.sync="centerDialogVisible" width="30%" center>
|
|
|
- <div align="center">确定要删除此项目吗?</div>
|
|
|
- <spn slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="centerDialogVisible = false">取 消</el-button>
|
|
|
- <el-button type="primary" @click="centerDialogVisible = false">确 定</el-button>
|
|
|
- </spn>
|
|
|
+ <div align="center">确定要删除此 {{ form_query.name }} 项目吗?</div>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="centerDialogVisible = false">关 闭</el-button>
|
|
|
+ <el-button type="primary" @click="delete_project()">确 定</el-button>
|
|
|
+ </span>
|
|
|
</el-dialog>
|
|
|
+ <el-dialog :visible.sync="dalete_Milepost" width="30%" center>
|
|
|
+ <div align="center">确定要删除 {{ get_Milepost_data.title }} 项目吗?</div>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="dalete_Milepost = false">关 闭</el-button>
|
|
|
+ <el-button type="primary" @click="select_Milepost">确 定</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
+ <!-- 弹窗 -->
|
|
|
+ <openDialog v-if="dialog_open" ref="task_createdUpdata" />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import { projectList, memberQueryMemberInfoByIDAPorName, projectUpdate, mileStoneList, projectBizList, mileStoneCreate, mileStoneUpdate, mileStoneDelete, projectDelete, taskList, requirementQueryRequirementInfoList } from '@/api/projectIndex'
|
|
|
+import openDialog from '@/views/projectManage/dialog_vue'
|
|
|
export default {
|
|
|
+ components: {
|
|
|
+ openDialog
|
|
|
+ },
|
|
|
+ filters: {
|
|
|
+ ellipsis(value) {
|
|
|
+ if (!value) return ''
|
|
|
+ if (value.length > 20) {
|
|
|
+ return value.slice(0, 20) + '...'
|
|
|
+ }
|
|
|
+ return value
|
|
|
+ },
|
|
|
+ ellipsis_title(value) {
|
|
|
+ if (!value) return ''
|
|
|
+ if (value.length > 10) {
|
|
|
+ return value.slice(0, 10) + '...'
|
|
|
+ }
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ },
|
|
|
data() {
|
|
|
+ var validatePass = (rule, value, callback) => {
|
|
|
+ if (value === undefined || value === '') {
|
|
|
+ callback(new Error('标题不能为空'))
|
|
|
+ } else {
|
|
|
+ if (this.form.title !== '') {
|
|
|
+ this.project_Milepost.map(item => {
|
|
|
+ if (item.title === this.form.title) { callback(new Error('该里程碑标题已存在,请重新设置')) } else { this.$refs.form.validateField('checkPass') }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var validate = (rule, value, callback) => {
|
|
|
+ console.log(value, 'o')
|
|
|
+ if (value === undefined || value === '') {
|
|
|
+ callback(new Error('时间不能为空'))
|
|
|
+ } else {
|
|
|
+ if (this.form.mtime !== '') {
|
|
|
+ this.project_Milepost.map(item => {
|
|
|
+ console.log(item.mtime, 'j')
|
|
|
+ if (item.mtime === this.form.mtime) { callback(new Error('该日期已设置其他里程碑')) } else { this.$refs.form.validateField('checkPass') }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
return {
|
|
|
+ loading: false,
|
|
|
+ dialog_open: false,
|
|
|
+ options: [],
|
|
|
+ test: [],
|
|
|
+ button_num: {}, // 项目总目标(编辑啊)
|
|
|
+ formRules: {
|
|
|
+ title: [{ required: true, validator: validatePass, trigger: 'blur' }],
|
|
|
+ mtime: [{ required: true, validator: validate, trigger: 'blur' }]
|
|
|
+ },
|
|
|
+ rules_form: {
|
|
|
+ name: [{ required: true, message: '请输入项目名称', trigger: 'blur' }],
|
|
|
+ bizType: [{ required: true, message: '项目类型不能为空', trigger: 'blur' }],
|
|
|
+ bizId: [{ required: true, message: '业务线不能为空', trigger: 'blur' }],
|
|
|
+ priority: [{ required: true, message: '优先级不能为空', trigger: 'blur' }],
|
|
|
+ projectOwner: [{ required: true, message: '项目负责人不能为空', trigger: 'blur' }]
|
|
|
+ },
|
|
|
+ arr_status: [{ value: 0, name: '未开始' }, { value: 1, name: '进行中' }, { value: 2, name: '已完成' }],
|
|
|
+ arr_priority: [{ value: 0, name: 'p0' }, { value: 1, name: 'p1' }, { value: 2, name: 'p2' }, { value: 3, name: 'p3' }, { value: 4, name: 'p4' }, { value: 5, name: 'p5' }, { value: 6, name: 'p6' }],
|
|
|
+ arr_prjectType: [{ value: 0, name: '业务/产品' }, { value: 1, name: '技术升级/技术优化/技术FT' }, { value: 2, name: '测试优化/测试FT' }],
|
|
|
+ userInformation: localStorage.getItem('username'),
|
|
|
+ userNames: localStorage.getItem('realname'),
|
|
|
Addition: false,
|
|
|
Addition1: false,
|
|
|
Addition2: false,
|
|
|
+ dalete_Milepost: false, // 里程碑dialog(删除)
|
|
|
textarea: '', // 项目总目标
|
|
|
+ project_from: {}, // 修改项目
|
|
|
+ all_bizId: [], // 业务线
|
|
|
+ projectId: '', // 项目id
|
|
|
+ all_task: [], // 全部任务数据
|
|
|
+ form_query: {},
|
|
|
+ curIndex: 1,
|
|
|
+ pageSize: 15,
|
|
|
total: 0,
|
|
|
tableData: [],
|
|
|
- formLabelAlign: {
|
|
|
- describe: ''
|
|
|
- },
|
|
|
- show2: true,
|
|
|
- describe: false,
|
|
|
- describe1: false,
|
|
|
+ show2: false,
|
|
|
+ modify_project: false,
|
|
|
dialogFormVisible: false,
|
|
|
- dialog_FormVisible: false,
|
|
|
centerDialogVisible: false,
|
|
|
formLabelWidth: '120px',
|
|
|
- form: {
|
|
|
- name: '',
|
|
|
- region: '',
|
|
|
- date1: '',
|
|
|
- date2: '',
|
|
|
- delivery: false,
|
|
|
- type: [],
|
|
|
- resource: '',
|
|
|
- desc: ''
|
|
|
- },
|
|
|
+ form: {},
|
|
|
+ title_name: '', // 里程碑title
|
|
|
formLabelWidth1: '60px',
|
|
|
- project_Milepost: [
|
|
|
- {
|
|
|
- name: '第一阶段',
|
|
|
- date: '2019/12/06',
|
|
|
- code: '你丹江口市内存卡就是你的错'
|
|
|
- },
|
|
|
- {
|
|
|
- name: '第一阶段',
|
|
|
- date: '2019/12/06',
|
|
|
- code: '你丹江口市内存卡就是你的错'
|
|
|
- },
|
|
|
- {
|
|
|
- name: '第一阶段',
|
|
|
- date: '2019/12/06',
|
|
|
- code: '你丹江口市内存卡就是你的错'
|
|
|
- },
|
|
|
- {
|
|
|
- name: '第一阶段',
|
|
|
- date: '2019/12/06',
|
|
|
- code: '你丹江口市内存卡就是你的错'
|
|
|
- },
|
|
|
- {
|
|
|
- name: '第一阶段',
|
|
|
- date: '2019/12/06',
|
|
|
- code: '你丹江口市内存卡就是你的错'
|
|
|
- },
|
|
|
- {
|
|
|
- name: '第一阶段',
|
|
|
- date: '2019/12/06',
|
|
|
- code: '你丹江口市内存卡就是你的错'
|
|
|
- },
|
|
|
- {
|
|
|
- name: '第一阶段',
|
|
|
- date: '2019/12/06',
|
|
|
- code: '你丹江口市内存卡就是你的错'
|
|
|
- },
|
|
|
- {
|
|
|
- name: '第一阶段',
|
|
|
- date: '2019/12/06',
|
|
|
- code: '你丹江口市内存卡就是你的错'
|
|
|
- },
|
|
|
- {
|
|
|
- name: '第一阶段',
|
|
|
- date: '2019/12/06',
|
|
|
- code: '你丹江口市内存卡就是你的错'
|
|
|
- },
|
|
|
- {
|
|
|
- name: '第一阶段',
|
|
|
- date: '2019/12/06',
|
|
|
- code: '你丹江口市内存卡就是你的错'
|
|
|
- },
|
|
|
- {
|
|
|
- name: '第一阶段',
|
|
|
- date: '2019/12/06',
|
|
|
- code: '你丹江口市内存卡就是你的错'
|
|
|
- }
|
|
|
- ]
|
|
|
+ project_Milepost: [],
|
|
|
+ get_Milepost_data: {} // 点击原点数据
|
|
|
}
|
|
|
},
|
|
|
created() {
|
|
|
this.get_list()
|
|
|
},
|
|
|
methods: {
|
|
|
- get_list() {
|
|
|
- if (this.textarea === '') {
|
|
|
- this.Addition = true
|
|
|
- } else {
|
|
|
- this.Addition2 = true
|
|
|
- }
|
|
|
- if (this.formLabelAlign.describe !== '') {
|
|
|
- this.describe1 = true
|
|
|
- } else {
|
|
|
- this.describe = false
|
|
|
+ test2(item, e) { // 获取团队人员信息
|
|
|
+ if (typeof this.test[item.idap] === 'undefined') {
|
|
|
+ item.role = e
|
|
|
+ this.test[item.idap] = item
|
|
|
}
|
|
|
+ return item.idap
|
|
|
+ },
|
|
|
+ get_list() { // 获取项目ID(查询)
|
|
|
+ this.textarea === '' ? this.Addition = true : this.Addition2 = true
|
|
|
+ var url = window.location.href // 获取url中"?"符后的字串
|
|
|
+ this.projectId = url.split('?id=')
|
|
|
+ projectList({ id: Number(this.projectId[1]), curIndex: 1, pageSize: 15 }).then(res => {
|
|
|
+ this.form_query = res.data[0]
|
|
|
+ this.project_from = res.data[0]
|
|
|
+ if (this.form_query.target !== null) {
|
|
|
+ this.Addition1 = false
|
|
|
+ this.Addition = false
|
|
|
+ this.Addition2 = true
|
|
|
+ this.button_num.btn1 = true
|
|
|
+ this.button_num.btn2 = false
|
|
|
+ } else {
|
|
|
+ this.button_num.btn1 = false
|
|
|
+ this.button_num.btn2 = true
|
|
|
+ this.Addition1 = false
|
|
|
+ this.Addition2 = false
|
|
|
+ this.Addition = true
|
|
|
+ }
|
|
|
+ this.form_query.status === 0 ? this.$set(this.form_query, 'statusString', '未开始') : ''
|
|
|
+ this.form_query.status === 1 ? this.$set(this.form_query, 'statusString', '进行中') : ''
|
|
|
+ this.form_query.status === 2 ? this.$set(this.form_query, 'statusString', '已完成') : ''
|
|
|
+ })
|
|
|
+ projectBizList({}).then(res => {
|
|
|
+ this.all_bizId = res.data
|
|
|
+ })
|
|
|
+ mileStoneList({ projectId: this.projectId[1] }).then(res => {
|
|
|
+ this.project_Milepost = res.data
|
|
|
+ })
|
|
|
+ },
|
|
|
+ delete_project() {
|
|
|
+ projectDelete(this.form_query.id, {}).then(res => {
|
|
|
+ this.centerDialogVisible = false
|
|
|
+ this.$router.push({ name: '项目', query: {}})
|
|
|
+ })
|
|
|
+ },
|
|
|
+ click_name(e) { // 需求下任务
|
|
|
+ taskList({ requireId: e, curIndex: this.curIndex, pageSize: this.pageSize }).then(res => {
|
|
|
+ this.all_task = res.data
|
|
|
+ this.total = res.total
|
|
|
+ })
|
|
|
},
|
|
|
project_modifica(e) {
|
|
|
- this.dialog_FormVisible = true
|
|
|
- // this.describe = true
|
|
|
- // this.describe1 = false
|
|
|
- // this.$set(this.formLabelAlign, 'describe', e)
|
|
|
- // setTimeout(() => {
|
|
|
- // this.$refs.describe.focus()
|
|
|
- // }, 100)
|
|
|
+ this.modify_project = true
|
|
|
+ },
|
|
|
+ close_dialog() { // 关闭弹窗
|
|
|
+ this.get_list()
|
|
|
+ },
|
|
|
+ get_Milepost(e) { // 点击原点
|
|
|
+ this.get_Milepost_data = e
|
|
|
},
|
|
|
- blur_describe(e) {
|
|
|
- this.describe = false
|
|
|
- this.describe1 = true
|
|
|
- this.$set(this.formLabelAlign, 'describe', e)
|
|
|
+ query_date() { // 编辑里程碑
|
|
|
+ this.title_name = '编辑里程碑'
|
|
|
+ this.dialogFormVisible = true
|
|
|
+ this.form = this.get_Milepost_data
|
|
|
},
|
|
|
- click_b() {
|
|
|
- console.log('v')
|
|
|
+ details_projectMilepost() { // 创建里程碑
|
|
|
+ this.title_name = '创建里程碑'
|
|
|
+ this.form = {}
|
|
|
+ this.dialogFormVisible = true
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs['form'].clearValidate()
|
|
|
+ })
|
|
|
},
|
|
|
- handleClick(tab, event) {
|
|
|
- console.log(tab, event)
|
|
|
+ select_Milepost() { // 删除里程碑
|
|
|
+ mileStoneDelete(this.get_Milepost_data.id, {}).then(res => {
|
|
|
+ this.dalete_Milepost = false
|
|
|
+ this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
|
|
|
+ this.get_list()
|
|
|
+ })
|
|
|
},
|
|
|
- tableRowClassName({ row, rowIndex }) {
|
|
|
- if (rowIndex === 1) {
|
|
|
- return 'warning-row'
|
|
|
- } else if (rowIndex === 3) {
|
|
|
- return 'success-row'
|
|
|
+ Milepost_Submission(e) { // 里程碑(提交)
|
|
|
+ this.$refs['form'].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ var milestone = e
|
|
|
+ milestone.projectId = this.projectId[1]
|
|
|
+ var user = { name: this.userNames, ename: this.userInformation, id: '' }
|
|
|
+ if (this.title_name === '创建里程碑') {
|
|
|
+ mileStoneCreate({ milestone, user }).then(res => {
|
|
|
+ this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
|
|
|
+ this.dialogFormVisible = false
|
|
|
+ })
|
|
|
+ } else if (this.title_name === '编辑里程碑') {
|
|
|
+ mileStoneUpdate({ milestone, user }).then(res => {
|
|
|
+ this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
|
|
|
+ this.dialogFormVisible = false
|
|
|
+ })
|
|
|
+ }
|
|
|
+ this.get_list()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ modifyProject(e) { // 修改(提交)
|
|
|
+ this.$refs['project_from'].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ var projectInfo = e
|
|
|
+ var user = { name: this.userNames, ename: this.userInformation, id: '' }
|
|
|
+ projectUpdate({ projectInfo, user }).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.modify_project = false
|
|
|
+ this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ remoteMethod(query) { // 人员查询
|
|
|
+ if (query !== '') {
|
|
|
+ this.loading = true
|
|
|
+ setTimeout(() => {
|
|
|
+ this.loading = false
|
|
|
+ memberQueryMemberInfoByIDAPorName({ memberIDAP: query }).then(res => {
|
|
|
+ this.options = res.data
|
|
|
+ })
|
|
|
+ }, 200)
|
|
|
+ } else {
|
|
|
+ this.options = []
|
|
|
}
|
|
|
- return ''
|
|
|
+ },
|
|
|
+ handleCommand(command) { // 修改状态
|
|
|
+ this.$set(this.form_query, 'statusString', command.label)
|
|
|
+ this.project_from.status = command.value
|
|
|
+ var projectInfo = this.project_from
|
|
|
+ var user = { name: this.userNames, ename: this.userInformation, id: '' }
|
|
|
+ projectUpdate({ projectInfo, user }).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
|
|
|
ImmediateAddition() { // 立即添加(编辑)
|
|
@@ -509,26 +550,58 @@ export default {
|
|
|
this.Addition = false
|
|
|
this.Addition1 = true
|
|
|
this.Addition2 = false
|
|
|
+ this.button_num.btn1 = false
|
|
|
+ this.button_num.btn2 = true
|
|
|
},
|
|
|
blur_textarea(e) { // 项目总目标失去焦点
|
|
|
if (e !== '') {
|
|
|
- this.textarea = e
|
|
|
+ this.form_query.target = e
|
|
|
this.Addition2 = true
|
|
|
this.Addition1 = false
|
|
|
this.Addition = false
|
|
|
+ this.button_num.btn1 = true
|
|
|
+ this.button_num.btn2 = false
|
|
|
} else {
|
|
|
+ this.button_num.btn1 = false
|
|
|
+ this.button_num.btn2 = true
|
|
|
this.Addition2 = false
|
|
|
this.Addition1 = false
|
|
|
this.Addition = true
|
|
|
}
|
|
|
+ var projectInfo = this.form_query
|
|
|
+ var user = { name: this.userNames, ename: this.userInformation, id: '' }
|
|
|
+ projectUpdate({ projectInfo, user }).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ get_allTask() { // 获取全部任务
|
|
|
+ taskList({ projectId: Number(this.projectId[1]), curIndex: this.curIndex, pageSize: this.pageSize }).then(res => {
|
|
|
+ this.all_task = res.data
|
|
|
+ this.total = res.total
|
|
|
+ })
|
|
|
+ },
|
|
|
+ NoOwnership() {
|
|
|
+ taskList({ projectId: Number(this.projectId[1]), noRequire: true, curIndex: this.curIndex, pageSize: this.pageSize }).then(res => {
|
|
|
+ this.all_task = res.data
|
|
|
+ this.total = res.total
|
|
|
+ })
|
|
|
+ },
|
|
|
+ AttributionDemand() { // 归属需求任务
|
|
|
+ requirementQueryRequirementInfoList({ projectId: Number(this.projectId[1]), curIndex: this.curIndex, pageSize: this.pageSize }).then(res => {
|
|
|
+ this.tableData = res.data.list
|
|
|
+ })
|
|
|
+ },
|
|
|
+ reated_task(e) { // 建任务
|
|
|
+ this.dialog_open = true
|
|
|
+ this.$nextTick(() => { this.$refs.task_createdUpdata.init(2) })
|
|
|
},
|
|
|
handleSizeChange(size) { // 分页
|
|
|
this.pageSize = size
|
|
|
- // this.get_list()
|
|
|
},
|
|
|
handleCurrentChange(curIndex) { // 分页
|
|
|
this.curIndex = curIndex
|
|
|
- // this.get_list()
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -644,4 +717,10 @@ export default {
|
|
|
position: absolute !important;
|
|
|
margin: 0 !important;
|
|
|
}
|
|
|
+
|
|
|
+.bgborder .el-table .el-table__body tr:hover td { /*hover时字体, 背景颜色*/
|
|
|
+ color: #409EFF;
|
|
|
+ background: #EEF0F5;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
</style>
|