|
@@ -25,12 +25,12 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item prop="status">
|
|
|
<el-radio-group v-model="queryParams.status" size="mini" @change="getList">
|
|
|
- <el-radio-button label="0">全部</el-radio-button>
|
|
|
- <el-radio-button label="1">未开始</el-radio-button>
|
|
|
- <el-radio-button label="2">进行中</el-radio-button>
|
|
|
- <el-radio-button label="3">延期</el-radio-button>
|
|
|
- <el-radio-button label="4">完成</el-radio-button>
|
|
|
- <el-radio-button label="5">终止</el-radio-button>
|
|
|
+ <el-radio-button
|
|
|
+ v-for="dict in dict.type.task_status"
|
|
|
+ :key="dict.value"
|
|
|
+ :label="dict.value"
|
|
|
+ >{{ dict.label }}
|
|
|
+ </el-radio-button>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
@@ -71,6 +71,7 @@
|
|
|
<div v-else style="width: 24px;font-size: 12px">{{ item.week }}</div>
|
|
|
</template>
|
|
|
<template slot-scope="scope">
|
|
|
+ <span v-if="scope.row[item.day].comment" class="comment-badge"></span>
|
|
|
<el-popover
|
|
|
v-if="scope.row[item.day].value!=''"
|
|
|
placement="top"
|
|
@@ -96,12 +97,18 @@
|
|
|
<el-table-column label="反馈备注">
|
|
|
<template slot-scope="scope">
|
|
|
<div>
|
|
|
- <div>{{ scope.row.description }}</div>
|
|
|
+ <span>{{ scope.row.description }}</span>
|
|
|
<span v-for="(file,index) in scope.row.fileList">
|
|
|
<a :href="file.url" style="color: darkgreen">
|
|
|
<span v-html="file.fileName"></span>
|
|
|
</a>
|
|
|
</span>
|
|
|
+ <span
|
|
|
+ v-if="scope.row.feedbackType === '4'&&scope.row.executor===userId&&scope.row.commentConfirm!='1'"
|
|
|
+ style="position: absolute;right: 2px">
|
|
|
+ <el-button type="text" icon="el-icon-circle-check" size="mini"
|
|
|
+ @click="confirmComment(scope.row)">确认</el-button>
|
|
|
+ </span>
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -125,10 +132,13 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item label="反馈类型" prop="feedbackType">
|
|
|
<el-radio-group v-model="form.feedbackType" @input="feedbackTypeChange">
|
|
|
- <el-radio label="1">进度反馈</el-radio>
|
|
|
- <el-radio label="2">完成</el-radio>
|
|
|
- <el-radio label="3">终止</el-radio>
|
|
|
- <el-radio label="4">评论</el-radio>
|
|
|
+ <el-radio
|
|
|
+ v-for="dict in dict.type.feedback_type"
|
|
|
+ :key="dict.value"
|
|
|
+ :label="dict.value"
|
|
|
+ v-if="dict.value<5"
|
|
|
+ >{{ dict.label }}
|
|
|
+ </el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="工时" prop="hours">
|
|
@@ -159,12 +169,14 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import {getTask, listView, addTaskFeedback, getFeedbackList} from "@/api/task/task";
|
|
|
+import {getTask, listView, addTaskFeedback, getFeedbackList, confirmComment} from "@/api/task/task";
|
|
|
import {getProjectList, getProjectTree} from "@/api/task/project";
|
|
|
import DateUtil from "@/utils/date"
|
|
|
import TaskDetail from "./components/taskDetail"
|
|
|
import FileUpload from "@/components/FileUpload"
|
|
|
|
|
|
+import {mapGetters} from 'vuex'
|
|
|
+
|
|
|
const statusMap = {
|
|
|
'0': {name: '待查看', type: 'info'},
|
|
|
'1': {name: '未开始', type: 'info'},
|
|
@@ -176,6 +188,10 @@ const statusMap = {
|
|
|
|
|
|
export default {
|
|
|
components: {TaskDetail, FileUpload},
|
|
|
+ dicts: ['task_status', 'feedback_type'],
|
|
|
+ computed: {
|
|
|
+ ...mapGetters(['userId'])
|
|
|
+ },
|
|
|
data() {
|
|
|
let validateValue = (rule, value, callback) => {
|
|
|
if (this.form.feedbackType != '1' && this.form.feedbackType != '2') {
|
|
@@ -276,16 +292,10 @@ export default {
|
|
|
if (row[column.property]) {
|
|
|
style.background = this.cellColorMap[row[column.property].color]
|
|
|
}
|
|
|
- // if (columnIndex === 1) {
|
|
|
- // style.color = '#306FB1'
|
|
|
- // }
|
|
|
return style
|
|
|
},
|
|
|
|
|
|
cellClick(row, column, cell, event) {
|
|
|
- // if (!row[column.property].color || row[column.property].color === '1') {
|
|
|
- // return
|
|
|
- // }
|
|
|
if (!row[column.property].value || row[column.property].value === '') {
|
|
|
return;
|
|
|
}
|
|
@@ -294,13 +304,13 @@ export default {
|
|
|
return;
|
|
|
}
|
|
|
getFeedbackList(row.id, date).then(res => {
|
|
|
- this.feedbacks = res.data
|
|
|
+ this.feedbacks = res.data.map(item => {
|
|
|
+ item['executor'] = row.executor
|
|
|
+ return item
|
|
|
+ })
|
|
|
})
|
|
|
},
|
|
|
cellDbClick(row, column, cell, event) {
|
|
|
- // if (!row[column.property].color || row[column.property].color === '1') {
|
|
|
- // return
|
|
|
- // }
|
|
|
let feedbackDate = DateUtil.getFeedBackDate(this.queryParams.month, column.property)
|
|
|
if (DateUtil.unix(feedbackDate) > DateUtil.unix()) {
|
|
|
this.$message.warning("反馈时间不能超过:" + DateUtil.day())
|
|
@@ -391,6 +401,14 @@ export default {
|
|
|
return '评论'
|
|
|
}
|
|
|
return '审批'
|
|
|
+ },
|
|
|
+ /** 确认收到评论 */
|
|
|
+ confirmComment(row) {
|
|
|
+ confirmComment({feedbackId: row.id}).then(res => {
|
|
|
+ if (res.code === '2000') {
|
|
|
+ this.getList()
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -411,4 +429,17 @@ export default {
|
|
|
margin-bottom: 10px;
|
|
|
}
|
|
|
|
|
|
+.comment-badge {
|
|
|
+ height: 10px;
|
|
|
+ width: 10px;
|
|
|
+ border-radius: 5px;
|
|
|
+ background-color: #409eff;
|
|
|
+ position: absolute;
|
|
|
+ top: 1px;
|
|
|
+ right: 1px;
|
|
|
+ font-size: 8px;
|
|
|
+ color: white;
|
|
|
+ vertical-align: text-top;
|
|
|
+}
|
|
|
+
|
|
|
</style>
|