|
|
@@ -1,9 +1,5 @@
|
|
|
<template>
|
|
|
- <div style="height: 560px">
|
|
|
- <div class="header">
|
|
|
- <!-- <el-button plain icon="el-icon-back">返回</el-button>-->
|
|
|
- <div class="task-name">{{ form.taskName }}</div>
|
|
|
- </div>
|
|
|
+ <div class="task-detail">
|
|
|
<el-descriptions class="margin-top" :column="5" direction="vertical">
|
|
|
<el-descriptions-item label="负责人">
|
|
|
<div class="desc-item-content">{{ form.executorName }}</div>
|
|
|
@@ -25,170 +21,166 @@
|
|
|
<div class="desc-item-content">{{ form.endDate }}</div>
|
|
|
</el-descriptions-item>
|
|
|
</el-descriptions>
|
|
|
- <template>
|
|
|
- <el-tabs v-model="activeName">
|
|
|
- <el-tab-pane name="first">
|
|
|
- <span slot="label"><i class="el-icon-info"></i><span style="margin-left: 5px">任务信息</span></span>
|
|
|
+ <el-tabs v-model="activeName">
|
|
|
+ <el-tab-pane name="first">
|
|
|
+ <span slot="label"><i class="el-icon-info"></i><span style="margin-left: 5px">任务信息</span></span>
|
|
|
|
|
|
- <el-form :model="form" size="mini" label-width="100px">
|
|
|
- <el-form-item label="所属项目:">
|
|
|
- <div>{{ form.projectName }}</div>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="父任务:" v-if="form.parentTaskId">
|
|
|
- <div class="p-task" @click="getParentTask(form.parentTaskId)">{{ form.parentTaskName }}</div>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="附件:">
|
|
|
- <div v-if="form.fileList.length>0">
|
|
|
- <div v-for="(file,index) in form.fileList">
|
|
|
- <a :href="file.url">
|
|
|
- <span class="file">{{ file.name }}</span>
|
|
|
- </a>
|
|
|
- </div>
|
|
|
+ <el-form :model="form" size="mini" label-width="100px">
|
|
|
+ <el-form-item label="所属项目:">
|
|
|
+ <div>{{ form.projectName }}</div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="父任务:" v-if="form.parentTaskId">
|
|
|
+ <div class="p-task" @click="getParentTask(form.parentTaskId)">{{ form.parentTaskName }}</div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="附件:">
|
|
|
+ <div v-if="form.fileList.length>0">
|
|
|
+ <div v-for="(file,index) in form.fileList">
|
|
|
+ <a :href="file.url">
|
|
|
+ <span class="file">{{ file.name }}</span>
|
|
|
+ </a>
|
|
|
</div>
|
|
|
- <div v-else>无</div>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="任务描述:">
|
|
|
- <div v-if="form.description" v-html="form.description" class="description"></div>
|
|
|
- <div v-else>无</div>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
-
|
|
|
- <div class="footer">
|
|
|
- <div>
|
|
|
- <span>{{ form.createUserName }}</span>
|
|
|
- <span style="margin-left: 5px;margin-right: 5px">创建于</span>
|
|
|
- <span>{{ form.createTime }}</span>
|
|
|
- </div>
|
|
|
- <el-divider direction="vertical" v-if="form.updateUserName"></el-divider>
|
|
|
- <div v-if="form.updateUserName">
|
|
|
- <span>{{ form.updateUserName }}</span>
|
|
|
- <span style="margin-left: 5px;margin-right: 5px">更新于</span>
|
|
|
- <span>{{ form.updateTime }}</span>
|
|
|
</div>
|
|
|
+ <div v-else>无</div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="任务描述:">
|
|
|
+ <div v-if="form.description" v-html="form.description" class="description"></div>
|
|
|
+ <div v-else>无</div>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+
|
|
|
+ <div class="footer">
|
|
|
+ <div>
|
|
|
+ <span>{{ form.createUserName }}</span>
|
|
|
+ <span style="margin-left: 5px;margin-right: 5px">创建于</span>
|
|
|
+ <span>{{ form.createTime }}</span>
|
|
|
+ </div>
|
|
|
+ <el-divider direction="vertical" v-if="form.updateUserName"></el-divider>
|
|
|
+ <div v-if="form.updateUserName">
|
|
|
+ <span>{{ form.updateUserName }}</span>
|
|
|
+ <span style="margin-left: 5px;margin-right: 5px">更新于</span>
|
|
|
+ <span>{{ form.updateTime }}</span>
|
|
|
</div>
|
|
|
- </el-tab-pane>
|
|
|
- <el-tab-pane name="second">
|
|
|
- <span slot="label"><i class="el-icon-document"></i><span style="margin-left: 5px">反馈信息</span></span>
|
|
|
- <el-table :data="form.feedbacks" size="mini" max-height="300" border>
|
|
|
- <el-table-column width="75" label="反馈状态">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div>{{ getFeedbackTypeName(scope.row.feedbackType) }}</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column width="60" property="userName" label="反馈人"></el-table-column>
|
|
|
- <el-table-column width="60" label="完成度">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div v-if="scope.row.value!==undefined">{{ scope.row.value + '%' }}</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column width="120" property="createTime" label="反馈时间">
|
|
|
- <template slot-scope="scope">
|
|
|
- <span>{{ parseTime(scope.row.createTime) }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column width="70" property="hours" label="工时(h)"></el-table-column>
|
|
|
- <el-table-column label="反馈备注">
|
|
|
- <template slot-scope="scope">
|
|
|
- <span>{{ scope.row.description }}</span>
|
|
|
- <span v-for="(file,index) in scope.row.fileList">
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane name="second">
|
|
|
+ <span slot="label"><i class="el-icon-document"></i><span style="margin-left: 5px">反馈信息</span></span>
|
|
|
+ <el-table :data="form.feedbacks" size="mini" max-height="400" border>
|
|
|
+ <el-table-column width="75" label="反馈状态">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div>{{ getFeedbackTypeName(scope.row.feedbackType) }}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="60" property="userName" label="反馈人"></el-table-column>
|
|
|
+ <el-table-column width="60" label="完成度">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div v-if="scope.row.value!==undefined">{{ scope.row.value + '%' }}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="120" property="createTime" label="反馈时间">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ parseTime(scope.row.createTime) }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="70" property="hours" label="工时(h)"></el-table-column>
|
|
|
+ <el-table-column label="反馈备注">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ scope.row.description }}</span>
|
|
|
+ <span v-for="(file,index) in scope.row.fileList">
|
|
|
<a :href="file.url" style="color: darkgreen">
|
|
|
<span style="margin-left: 5px">{{ file.name }}</span>
|
|
|
</a>
|
|
|
</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="当前达成进度" width="100px">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-popover
|
|
|
- v-if="scope.row.descriptionDetail&&scope.row.descriptionDetail.length>0"
|
|
|
- placement="top"
|
|
|
- width="600"
|
|
|
- trigger="hover">
|
|
|
- <div v-html="scope.row.descriptionDetail"></div>
|
|
|
- <el-button slot="reference" type="text">详情</el-button>
|
|
|
- </el-popover>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- </el-tab-pane>
|
|
|
- <el-tab-pane label="子任务" name="third">
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="当前达成进度" width="100px">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-popover
|
|
|
+ v-if="scope.row.descriptionDetail&&scope.row.descriptionDetail.length>0"
|
|
|
+ placement="top"
|
|
|
+ width="600"
|
|
|
+ trigger="hover">
|
|
|
+ <div v-html="scope.row.descriptionDetail"></div>
|
|
|
+ <el-button slot="reference" type="text">详情</el-button>
|
|
|
+ </el-popover>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="子任务" name="third">
|
|
|
<span slot="label"><i class="el-icon-more"></i><span
|
|
|
style="margin-left: 5px">子任务({{ form.children.length }})</span></span>
|
|
|
- <el-table :data="form.children"
|
|
|
- max-height="400"
|
|
|
- size="mini"
|
|
|
- @cell-mouse-enter="cellMouseEnter"
|
|
|
- @cell-mouse-leave="cellMouseLeave"
|
|
|
- @cell-click="cellClick">
|
|
|
- <el-table-column width="70" prop="id" label="编号"></el-table-column>
|
|
|
- <el-table-column label="任务名称" prop="taskName" min-width="150" :show-overflow-tooltip="true"/>
|
|
|
- <el-table-column label="执行(负责)人" prop="executorName" width="100"/>
|
|
|
- <el-table-column label="进度" prop="progressValue" width="70">
|
|
|
- <template slot-scope="scope">
|
|
|
- <span>{{ (scope.row.progressValue ? scope.row.progressValue : 0) + '%' }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="状态" align="center" width="80">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-tag size="mini" :type="statusMap[scope.row.status].type">{{
|
|
|
- statusMap[scope.row.status].name
|
|
|
- }}
|
|
|
- </el-tag>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="优先级" prop="priority" align="center" width="80">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-tag v-if="scope.row.priority==='1'" color="#fa8888" effect="dark" :hit="false">
|
|
|
- {{ getTaskPriority(scope.row.priority) }}
|
|
|
- </el-tag>
|
|
|
- <el-tag v-else-if="scope.row.priority==='2'" color="#fb7fb7" effect="dark" :hit="false">
|
|
|
- {{ getTaskPriority(scope.row.priority) }}
|
|
|
- </el-tag>
|
|
|
- <el-tag v-else-if="scope.row.priority==='3'" color="#40e0c3" effect="dark" :hit="false">
|
|
|
- {{ getTaskPriority(scope.row.priority) }}
|
|
|
- </el-tag>
|
|
|
- <el-tag v-else color="#5dcfff" effect="dark" :hit="false">{{
|
|
|
- getTaskPriority(scope.row.priority)
|
|
|
- }}
|
|
|
- </el-tag>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="开始时间" prop="beginDate" width="100"/>
|
|
|
- <el-table-column label="结束时间" prop="endDate" width="100"/>
|
|
|
- </el-table>
|
|
|
- </el-tab-pane>
|
|
|
- <el-tab-pane label="修改日志" name="four">
|
|
|
- <span slot="label"><i class="el-icon-edit"></i><span style="margin-left: 5px">修改日志</span></span>
|
|
|
- <el-table :data="form.updateLogs"
|
|
|
- max-height="400"
|
|
|
- size="mini">
|
|
|
- <el-table-column label="修改项" prop="fieldName" width="90">
|
|
|
- <template slot-scope="scope">
|
|
|
- <span>{{ getFieldName(scope.row.field) }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="旧值" prop="oldValue" min-width="150" :show-overflow-tooltip="true">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div v-html="scope.row.oldValue"></div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="新值" prop="newValue" min-width="150" :show-overflow-tooltip="true">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div v-html="scope.row.newValue"></div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="修改人" prop="operatorName" width="90"/>
|
|
|
- <el-table-column label="修改时间" prop="createTime" width="120">
|
|
|
- <template slot-scope="scope">
|
|
|
- <span>{{ parseTime(scope.row.createTime) }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
-
|
|
|
- </el-tab-pane>
|
|
|
- </el-tabs>
|
|
|
- </template>
|
|
|
-
|
|
|
+ <el-table :data="form.children"
|
|
|
+ max-height="400"
|
|
|
+ size="mini"
|
|
|
+ @cell-mouse-enter="cellMouseEnter"
|
|
|
+ @cell-mouse-leave="cellMouseLeave"
|
|
|
+ @cell-click="cellClick">
|
|
|
+ <el-table-column width="70" prop="id" label="编号"></el-table-column>
|
|
|
+ <el-table-column label="任务名称" prop="taskName" min-width="150" :show-overflow-tooltip="true"/>
|
|
|
+ <el-table-column label="执行(负责)人" prop="executorName" width="100"/>
|
|
|
+ <el-table-column label="进度" prop="progressValue" width="70">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ (scope.row.progressValue ? scope.row.progressValue : 0) + '%' }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="状态" align="center" width="80">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tag size="mini" :type="statusMap[scope.row.status].type">{{
|
|
|
+ statusMap[scope.row.status].name
|
|
|
+ }}
|
|
|
+ </el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="优先级" prop="priority" align="center" width="80">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tag v-if="scope.row.priority==='1'" color="#fa8888" effect="dark" :hit="false">
|
|
|
+ {{ getTaskPriority(scope.row.priority) }}
|
|
|
+ </el-tag>
|
|
|
+ <el-tag v-else-if="scope.row.priority==='2'" color="#fb7fb7" effect="dark" :hit="false">
|
|
|
+ {{ getTaskPriority(scope.row.priority) }}
|
|
|
+ </el-tag>
|
|
|
+ <el-tag v-else-if="scope.row.priority==='3'" color="#40e0c3" effect="dark" :hit="false">
|
|
|
+ {{ getTaskPriority(scope.row.priority) }}
|
|
|
+ </el-tag>
|
|
|
+ <el-tag v-else color="#5dcfff" effect="dark" :hit="false">{{
|
|
|
+ getTaskPriority(scope.row.priority)
|
|
|
+ }}
|
|
|
+ </el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="开始时间" prop="beginDate" width="100"/>
|
|
|
+ <el-table-column label="结束时间" prop="endDate" width="100"/>
|
|
|
+ </el-table>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="修改日志" name="four">
|
|
|
+ <span slot="label"><i class="el-icon-edit"></i><span style="margin-left: 5px">修改日志</span></span>
|
|
|
+ <el-table :data="form.updateLogs"
|
|
|
+ max-height="400"
|
|
|
+ size="mini">
|
|
|
+ <el-table-column label="修改项" prop="fieldName" width="90">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ getFieldName(scope.row.field) }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="旧值" prop="oldValue" min-width="150" :show-overflow-tooltip="true">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div v-html="scope.row.oldValue"></div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="新值" prop="newValue" min-width="150" :show-overflow-tooltip="true">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div v-html="scope.row.newValue"></div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="修改人" prop="operatorName" width="90"/>
|
|
|
+ <el-table-column label="修改时间" prop="createTime" width="120">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ parseTime(scope.row.createTime) }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
@@ -209,7 +201,9 @@ export default {
|
|
|
watch: {
|
|
|
detailForm(val) {
|
|
|
this.activeName = 'first'
|
|
|
- this.form = val
|
|
|
+ if (val && JSON.stringify(val) != '{}') {
|
|
|
+ this.form = val
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
data() {
|
|
|
@@ -254,16 +248,8 @@ export default {
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
-.header {
|
|
|
- display: flex;
|
|
|
- justify-content: start;
|
|
|
- margin-top: -10px;
|
|
|
- margin-bottom: 15px
|
|
|
-}
|
|
|
-
|
|
|
-.task-name {
|
|
|
- font-size: 16px;
|
|
|
- width: 800px;
|
|
|
+.task-detail {
|
|
|
+ height: 500px;
|
|
|
}
|
|
|
|
|
|
.desc-item-content {
|
|
|
@@ -275,6 +261,10 @@ export default {
|
|
|
margin-bottom: 10px;
|
|
|
}
|
|
|
|
|
|
+.task-detail ::v-deep.el-tabs__header {
|
|
|
+ margin: 0 0 5px;
|
|
|
+}
|
|
|
+
|
|
|
.p-task {
|
|
|
color: #1c84c6;
|
|
|
cursor: pointer;
|
|
|
@@ -303,7 +293,7 @@ export default {
|
|
|
|
|
|
.footer {
|
|
|
margin-top: 20px;
|
|
|
- margin-left: 20px;
|
|
|
+ margin-left: 10px;
|
|
|
display: flex;
|
|
|
justify-content: start;
|
|
|
color: #aaaaaa;
|