|
@@ -2,8 +2,10 @@
|
|
|
<div class="app-container">
|
|
|
<el-form size="mini" :inline="true">
|
|
|
<el-form-item label="关联会议">
|
|
|
- <el-select size="small" style="width: 350px" placeholder="请选择会议" clearable filterable v-model="meetingWeek" @change="changeWeekData()">
|
|
|
- <el-option v-for="(item,index) in meetingData" :label="item.meetingName" :key="item.id" :value="item.id"></el-option>
|
|
|
+ <el-select size="small" style="width: 350px" placeholder="请选择会议" clearable filterable v-model="meetingWeek"
|
|
|
+ @change="changeWeekData()">
|
|
|
+ <el-option v-for="(item,index) in meetingData" :label="item.meetingName" :key="item.id"
|
|
|
+ :value="item.id"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
@@ -18,30 +20,30 @@
|
|
|
stripe
|
|
|
size="mini"
|
|
|
style="width: 100%" v-model="workContents" :data="workContents"
|
|
|
- @row-click="rowClick" :span-method="objectSpanMethod" :highlight-current-row="true">
|
|
|
+ @row-click="rowClick" :span-method="objectSpanMethod" :highlight-current-row="true">
|
|
|
<el-table-column type="index" label="序号" width="50">
|
|
|
</el-table-column>
|
|
|
-<!-- <el-table-column label="分类" prop="classifyName" width="120" v-show="false">
|
|
|
- </el-table-column>-->
|
|
|
+ <!-- <el-table-column label="分类" prop="classifyName" width="120" v-show="false">
|
|
|
+ </el-table-column>-->
|
|
|
<el-table-column label="项目" prop="projectName" width="180">
|
|
|
</el-table-column>
|
|
|
-<!-- <el-table-column label="模块" prop="moduleName" width="120" v-show="false">
|
|
|
- </el-table-column>-->
|
|
|
+ <!-- <el-table-column label="模块" prop="moduleName" width="120" v-show="false">
|
|
|
+ </el-table-column>-->
|
|
|
<el-table-column label="任务名称" prop="taskName" width="400">
|
|
|
<template slot-scope="scope">
|
|
|
- <span class="underline-on-hover"> {{scope.row.taskName}}</span>
|
|
|
+ <span class="underline-on-hover"> {{ scope.row.taskName }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="工作反馈" prop="description" :show-overflow-tooltip="true">
|
|
|
<template slot-scope="scope">
|
|
|
<span v-if="scope.row.description!==''" v-for="(item,index) in scope.row.description.split('$') ">
|
|
|
- {{index+1}}.{{item}}<br/>
|
|
|
+ {{ index + 1 }}.{{ item }}<br/>
|
|
|
</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="最新进度" prop="scheduleValue" width="100">
|
|
|
<template slot-scope="scope">
|
|
|
- {{scope.row.scheduleValue}}%
|
|
|
+ {{ scope.row.scheduleValue }}%
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -57,15 +59,17 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column label="工作计划" prop="workPlan" min-width="250">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-input size="mini" v-if="scope.row.taskId!==undefined && scope.row.taskId!==''" :disabled="true" v-model="scope.row.planContent" placeholder="请填写工作计划信息" ></el-input>
|
|
|
- <el-input size="mini" v-else v-model="scope.row.planContent" @input="updateWorkPlans(scope.row)" placeholder="请填写工作计划信息" ></el-input>
|
|
|
+ <el-input size="mini" v-if="scope.row.taskId!==undefined && scope.row.taskId!==''" :disabled="true"
|
|
|
+ v-model="scope.row.planContent" placeholder="请填写工作计划信息"></el-input>
|
|
|
+ <el-input size="mini" v-else v-model="scope.row.planContent" @input="updateWorkPlans(scope.row)"
|
|
|
+ placeholder="请填写工作计划信息"></el-input>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="优先级" prop="priority" width="180">
|
|
|
<template slot-scope="scope">
|
|
|
<el-select
|
|
|
v-model="scope.row.priority"
|
|
|
- placeholder="事项优先级" @change="updateWorkPlans(scope.row)">
|
|
|
+ placeholder="事项优先级" @change="updateWorkPlans(scope.row)">
|
|
|
<el-option
|
|
|
v-for="dict in dict.type.task_priority"
|
|
|
:key="dict.value"
|
|
@@ -88,12 +92,12 @@
|
|
|
placeholder="选择日期" style="width: 150px">
|
|
|
</el-date-picker>
|
|
|
<el-date-picker v-else
|
|
|
- v-model="scope.row.beginDate"
|
|
|
- type="date"
|
|
|
- size="mini"
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
- format="yyyy-MM-dd"
|
|
|
- placeholder="选择日期" style="width: 150px" @change="updateWorkPlans(scope.row)">
|
|
|
+ v-model="scope.row.beginDate"
|
|
|
+ type="date"
|
|
|
+ size="mini"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ format="yyyy-MM-dd"
|
|
|
+ placeholder="选择日期" style="width: 150px" @change="updateWorkPlans(scope.row)">
|
|
|
</el-date-picker>
|
|
|
|
|
|
</template>
|
|
@@ -101,7 +105,8 @@
|
|
|
<el-table-column label="预计完成时间" prop="completionTimes" width="180">
|
|
|
<template slot-scope="scope">
|
|
|
<el-date-picker
|
|
|
- v-model="scope.row.completionTimes" style="width: 150px" v-if="scope.row.taskId!==undefined && scope.row.taskId!==''"
|
|
|
+ v-model="scope.row.completionTimes" style="width: 150px"
|
|
|
+ v-if="scope.row.taskId!==undefined && scope.row.taskId!==''"
|
|
|
type="date"
|
|
|
size="mini"
|
|
|
value-format="yyyy-MM-dd"
|
|
@@ -121,7 +126,8 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column label="所属项目" prop="projectId" width="220">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-select :disabled="true" v-model="scope.row.projectId" placeholder="请选择" size="mini" v-if="scope.row.taskId!==undefined && scope.row.taskId!==''">
|
|
|
+ <el-select :disabled="true" v-model="scope.row.projectId" placeholder="请选择" size="mini"
|
|
|
+ v-if="scope.row.taskId!==undefined && scope.row.taskId!==''">
|
|
|
<el-option
|
|
|
v-for="item in projects"
|
|
|
:key="item.id"
|
|
@@ -129,7 +135,8 @@
|
|
|
:value="item.id">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
- <el-select v-model="scope.row.projectId" placeholder="请选择" size="mini" v-else @change="updateWorkPlans(scope.row)">
|
|
|
+ <el-select v-model="scope.row.projectId" placeholder="请选择" size="mini" v-else
|
|
|
+ @change="updateWorkPlans(scope.row)">
|
|
|
<el-option
|
|
|
v-for="item in projects"
|
|
|
:key="item.id"
|
|
@@ -141,12 +148,18 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column label="操作" prop="op" width="100" v-if="currentWeek===weeks" center>
|
|
|
<template slot-scope="scope">
|
|
|
- <el-button size="mini" type="danger" v-if="scope.row.taskId===undefined || scope.row.taskId===null" @click="deleteRow(scope.$index, scope.row)">删除</el-button>
|
|
|
+ <el-button size="mini" type="danger" plain v-if="scope.row.confirmFlag==='0'&&scope.row.taskId"
|
|
|
+ @click="removePlan(scope.$index, scope.row)">移出
|
|
|
+ </el-button>
|
|
|
+
|
|
|
+ <el-button size="mini" type="danger" v-if="scope.row.taskId===undefined || scope.row.taskId===null"
|
|
|
+ @click="deleteRow(scope.$index, scope.row)">删除
|
|
|
+ </el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
- <div style="margin-top: 15px;width: 100%;text-align: right" >
|
|
|
- <el-button size="mini" type="success" @click="addRow()" v-if="currentWeek===weeks">添加</el-button>
|
|
|
+ <div style="margin-top: 15px;width: 100%;text-align: right">
|
|
|
+ <el-button size="mini" type="success" @click="addRow()" v-if="currentWeek===weeks">添加</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -175,18 +188,19 @@ import {
|
|
|
} from '@/api/meeting/work'
|
|
|
import {getTask} from "@/api/task/task";
|
|
|
import TaskDetail from "../task/components/taskDetail"
|
|
|
+import {delProject} from "@/api/task/project";
|
|
|
|
|
|
|
|
|
export default {
|
|
|
name: 'weekly',
|
|
|
components: {TaskDetail},
|
|
|
- dicts: [ 'task_priority'],
|
|
|
+ dicts: ['task_priority'],
|
|
|
data() {
|
|
|
return {
|
|
|
meetingWeek: null,
|
|
|
meetingData: [],
|
|
|
workContents: [],
|
|
|
- projects:[],
|
|
|
+ projects: [],
|
|
|
workPlans: [{
|
|
|
planContent: '请填写工作计划信息',
|
|
|
id: null,
|
|
@@ -194,16 +208,16 @@ export default {
|
|
|
completionTimes: null,
|
|
|
completionTime: null,
|
|
|
projectId: null,
|
|
|
- priority:'4'
|
|
|
+ priority: '4'
|
|
|
}],
|
|
|
meetingStatus: null,
|
|
|
weeks: null,
|
|
|
currentWeek: null,
|
|
|
meetingId: null,
|
|
|
taskOpen: false,
|
|
|
- taskForm:{},
|
|
|
+ taskForm: {},
|
|
|
mergeObj: {}, // 用来记录需要合并行的下标
|
|
|
- mergeArr: ['classifyName','projectName','moduleName'], // 表格中的列名
|
|
|
+ mergeArr: ['classifyName', 'projectName', 'moduleName'], // 表格中的列名
|
|
|
}
|
|
|
},
|
|
|
mounted() {
|
|
@@ -221,19 +235,19 @@ export default {
|
|
|
const date = new Date();
|
|
|
// 获取当前第几周
|
|
|
let week = this.getYearWeek(date.getFullYear(), Number(date.getMonth()) + 1, date.getDate());
|
|
|
- let currentWeek = week ;
|
|
|
+ let currentWeek = week;
|
|
|
//this.meetingWeek = currentWeek
|
|
|
//默认选择当前周的周会议
|
|
|
- for(let i=0;i<this.meetingData.length;i++){
|
|
|
- if(this.meetingData[i].week===week){
|
|
|
- this.meetingWeek=this.meetingData[i].id
|
|
|
+ for (let i = 0; i < this.meetingData.length; i++) {
|
|
|
+ if (this.meetingData[i].week === week) {
|
|
|
+ this.meetingWeek = this.meetingData[i].id
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
this.getMeetingsAndWorkPlansByWeeksData(currentWeek)
|
|
|
})
|
|
|
- getProjects().then(res=>{
|
|
|
- this.projects=res.data
|
|
|
+ getProjects().then(res => {
|
|
|
+ this.projects = res.data
|
|
|
});
|
|
|
},
|
|
|
getMeetingsAndWorkPlansByWeeksData(currentWeek) {
|
|
@@ -243,23 +257,23 @@ export default {
|
|
|
this.getSpanArr(this.workContents);
|
|
|
if (response.data.workPlan != null && response.data.workPlan.length > 0) {
|
|
|
this.workPlans = response.data.workPlan
|
|
|
- }else{
|
|
|
- this.workPlans=[{
|
|
|
+ } else {
|
|
|
+ this.workPlans = [{
|
|
|
planContent: '',
|
|
|
id: null,
|
|
|
meetingId: null,
|
|
|
completionTimes: null,
|
|
|
completionTime: null,
|
|
|
projectId: null,
|
|
|
- beginDate:null,
|
|
|
- priority:'4'
|
|
|
+ beginDate: null,
|
|
|
+ priority: '4'
|
|
|
}]
|
|
|
}
|
|
|
this.weeks = response.data.weeks
|
|
|
const date = new Date();
|
|
|
// 获取当前第几周
|
|
|
let week = this.getYearWeek(date.getFullYear(), Number(date.getMonth()) + 1, date.getDate());
|
|
|
- let currentWeek = week ;
|
|
|
+ let currentWeek = week;
|
|
|
this.currentWeek = currentWeek;
|
|
|
if (weekss !== currentWeek) {
|
|
|
this.workPlans = response.data.workPlan
|
|
@@ -269,15 +283,15 @@ export default {
|
|
|
return item.id === response.data.meetingId;
|
|
|
});
|
|
|
|
|
|
- this.meetingId =obj.id
|
|
|
- this.meetingWeek=this.meetingId
|
|
|
+ this.meetingId = obj.id
|
|
|
+ this.meetingWeek = this.meetingId
|
|
|
})
|
|
|
},
|
|
|
getYearWeek(a, b, c) {
|
|
|
- let date1 = new Date(a, parseInt(b) - 1, c),
|
|
|
+ let date1 = new Date(a, parseInt(b) - 1, c),
|
|
|
date2 = new Date(a, 0, 1),
|
|
|
d = Math.round((date1.valueOf() - date2.valueOf()) / 86400000);
|
|
|
- return Math.ceil((d + (date2.getDay() + 1 - 1)) / 7);
|
|
|
+ return Math.ceil((d + (date2.getDay() + 1 - 1)) / 7);
|
|
|
},
|
|
|
getWorkData() {
|
|
|
|
|
@@ -293,36 +307,36 @@ export default {
|
|
|
this.$PDFSave(this.$refs.exportPdf, "我的工作周报");
|
|
|
},
|
|
|
//添加下周周计划权限认证
|
|
|
- validateWorkPlanFlag(){
|
|
|
+ validateWorkPlanFlag() {
|
|
|
//已经确认的工作不能继续编辑工作计划,临时增加就去任务系统手动添加
|
|
|
- let meetingId=this.meetingId
|
|
|
- let userId=this.$store.getters.userId
|
|
|
- let data={
|
|
|
- weeks:this.weeks,
|
|
|
- userId:userId,
|
|
|
- meetingId:meetingId
|
|
|
+ let meetingId = this.meetingId
|
|
|
+ let userId = this.$store.getters.userId
|
|
|
+ let data = {
|
|
|
+ weeks: this.weeks,
|
|
|
+ userId: userId,
|
|
|
+ meetingId: meetingId
|
|
|
}
|
|
|
- getWorkPlanConfirmFlags(data).then(res=> {
|
|
|
+ getWorkPlanConfirmFlags(data).then(res => {
|
|
|
if (res.success !== true) {
|
|
|
this.$message.warning(res.data)
|
|
|
return false
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
return true
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
saveWorkPlan() {
|
|
|
- let meetingId=this.meetingId
|
|
|
- let userId=this.$store.getters.userId
|
|
|
- let datas={
|
|
|
- weeks:this.weeks,
|
|
|
- userId:userId,
|
|
|
- meetingId:meetingId
|
|
|
+ let meetingId = this.meetingId
|
|
|
+ let userId = this.$store.getters.userId
|
|
|
+ let datas = {
|
|
|
+ weeks: this.weeks,
|
|
|
+ userId: userId,
|
|
|
+ meetingId: meetingId
|
|
|
}
|
|
|
- getWorkPlanConfirmFlags(datas).then(res=> {
|
|
|
+ getWorkPlanConfirmFlags(datas).then(res => {
|
|
|
if (res.success !== true) {
|
|
|
this.$message.warning(res.data)
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
if (this.meetingWeek === null || this.meetingWeek === undefined || this.meetingWeek === '') {
|
|
|
this.$message({
|
|
|
message: '请选择会议信息!',
|
|
@@ -331,24 +345,24 @@ export default {
|
|
|
return
|
|
|
}
|
|
|
//判断是否存在周会信息,无周会信息,就不保存工作计划
|
|
|
- if(meetingId===undefined || meetingId===null){
|
|
|
+ if (meetingId === undefined || meetingId === null) {
|
|
|
this.$message.warning("请选择周会会议,再填写工作计划!")
|
|
|
return
|
|
|
}
|
|
|
let workPlanss = this.workPlans;
|
|
|
let newWorkPlans = []
|
|
|
- for(let i = 0; i < workPlanss.length; i++){
|
|
|
- if(workPlanss[i].taskId===undefined || workPlanss[i].taskId==null){
|
|
|
+ for (let i = 0; i < workPlanss.length; i++) {
|
|
|
+ if (workPlanss[i].taskId === undefined || workPlanss[i].taskId == null) {
|
|
|
newWorkPlans.push(workPlanss[i])
|
|
|
}
|
|
|
}
|
|
|
- if(newWorkPlans.length===0){
|
|
|
+ if (newWorkPlans.length === 0) {
|
|
|
this.$message.warning("请填写新的工作计划在做保存!")
|
|
|
return
|
|
|
}
|
|
|
for (let i = 0; i < newWorkPlans.length; i++) {
|
|
|
- if(newWorkPlans[i].planContent==='' || newWorkPlans[i].beginDate===undefined ||
|
|
|
- newWorkPlans[i].completionTimes===undefined || newWorkPlans[i].projectId===undefined){
|
|
|
+ if (newWorkPlans[i].planContent === '' || newWorkPlans[i].beginDate === undefined ||
|
|
|
+ newWorkPlans[i].completionTimes === undefined || newWorkPlans[i].projectId === undefined) {
|
|
|
this.$message({
|
|
|
message: '请将工作计划填写完整!',
|
|
|
type: 'warning'
|
|
@@ -357,7 +371,7 @@ export default {
|
|
|
}
|
|
|
|
|
|
newWorkPlans[i].completionTime = null;
|
|
|
- newWorkPlans[i].beginDate = new Date(newWorkPlans[i].beginDate).getTime()
|
|
|
+ newWorkPlans[i].beginDate = new Date(newWorkPlans[i].beginDate).getTime()
|
|
|
|
|
|
}
|
|
|
let data = {
|
|
@@ -378,41 +392,52 @@ export default {
|
|
|
|
|
|
},
|
|
|
addRow() {
|
|
|
- let meetingId=this.meetingId
|
|
|
- let userId=this.$store.getters.userId
|
|
|
- let data={
|
|
|
- weeks:this.weeks,
|
|
|
- userId:userId,
|
|
|
- meetingId:meetingId
|
|
|
+ let meetingId = this.meetingId
|
|
|
+ let userId = this.$store.getters.userId
|
|
|
+ let data = {
|
|
|
+ weeks: this.weeks,
|
|
|
+ userId: userId,
|
|
|
+ meetingId: meetingId
|
|
|
}
|
|
|
- getWorkPlanConfirmFlags(data).then(res=> {
|
|
|
+ getWorkPlanConfirmFlags(data).then(res => {
|
|
|
if (res.success !== true) {
|
|
|
this.$message.warning(res.data)
|
|
|
- }else{
|
|
|
- let row = {planContent: '', 'op': '', id: null, completionTimes: null,beginDate:null,priority:'4'}
|
|
|
+ } else {
|
|
|
+ let row = {planContent: '', 'op': '', id: null, completionTimes: null, beginDate: null, priority: '4'}
|
|
|
this.workPlans.push(row)
|
|
|
}
|
|
|
})
|
|
|
|
|
|
},
|
|
|
+
|
|
|
+ removePlan(index, row) {
|
|
|
+ this.$confirm('是否从下周工作计划中移除名称为"' + row.planContent + '"的数据项?').then(() => {
|
|
|
+ return updateWorkPlan({id: row.id, confirmFlag: '1'});
|
|
|
+ }).then(() => {
|
|
|
+ this.getData()
|
|
|
+ this.$message.success("操作成功");
|
|
|
+ }).catch(() => {
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
deleteRow(index, row) {
|
|
|
- let meetingId=this.meetingId
|
|
|
- let userId=this.$store.getters.userId
|
|
|
- let data={
|
|
|
- weeks:this.weeks,
|
|
|
- userId:userId,
|
|
|
- meetingId:meetingId
|
|
|
+ let meetingId = this.meetingId
|
|
|
+ let userId = this.$store.getters.userId
|
|
|
+ let data = {
|
|
|
+ weeks: this.weeks,
|
|
|
+ userId: userId,
|
|
|
+ meetingId: meetingId
|
|
|
}
|
|
|
- getWorkPlanConfirmFlags(data).then(res=> {
|
|
|
+ getWorkPlanConfirmFlags(data).then(res => {
|
|
|
if (res.success !== true) {
|
|
|
this.$message.warning(res.data)
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
if (index == 0) {
|
|
|
- /* this.$message({
|
|
|
- message: '不能删除此条数据',
|
|
|
- type: 'warning'
|
|
|
- });
|
|
|
- return; */
|
|
|
+ /* this.$message({
|
|
|
+ message: '不能删除此条数据',
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ return; */
|
|
|
}
|
|
|
this.workPlans.splice(index, 1)
|
|
|
let id = row.id;
|
|
@@ -474,18 +499,18 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
|
|
|
- updateWorkPlans(row){
|
|
|
- let data=row;
|
|
|
- if(row.id!==undefined && row.id!==null){
|
|
|
- let datas={
|
|
|
- id:row.id,
|
|
|
- planContent:data.planContent,
|
|
|
- beginDate:new Date(data.beginDate).getTime(),
|
|
|
- projectId:row.projectId,
|
|
|
- completionTime:new Date(row.completionTimes).getTime(),
|
|
|
- priority:row.priority
|
|
|
+ updateWorkPlans(row) {
|
|
|
+ let data = row;
|
|
|
+ if (row.id !== undefined && row.id !== null) {
|
|
|
+ let datas = {
|
|
|
+ id: row.id,
|
|
|
+ planContent: data.planContent,
|
|
|
+ beginDate: new Date(data.beginDate).getTime(),
|
|
|
+ projectId: row.projectId,
|
|
|
+ completionTime: new Date(row.completionTimes).getTime(),
|
|
|
+ priority: row.priority
|
|
|
}
|
|
|
- updateWorkPlan(datas).then(res=>{
|
|
|
+ updateWorkPlan(datas).then(res => {
|
|
|
})
|
|
|
}
|
|
|
|