|
@@ -76,11 +76,11 @@
|
|
|
|
|
|
<!-- {{timelabel}}{{mileageCup}} -->
|
|
<!-- {{timelabel}}{{mileageCup}} -->
|
|
<el-form-item :label="!timelabel ? $t('starttimes') : $t('jie-zhi-shi-jian')" prop="startDate">
|
|
<el-form-item :label="!timelabel ? $t('starttimes') : $t('jie-zhi-shi-jian')" prop="startDate">
|
|
- <el-date-picker v-model="addForm.startDate" type="date" style="width:40%;" value-format="yyyy-MM-dd"
|
|
|
|
- :placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !permissions.editAnyTask && !(groupResponsibleId == user.id)" @change="DateChange()" v-if="!timelabel"></el-date-picker>
|
|
|
|
|
|
+ <el-date-picker v-model="addForm.startDate" type="datetime" style="width:40%;" value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
|
+ default-time="09:00:00" :placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !permissions.editAnyTask && !(groupResponsibleId == user.id)" @change="DateChange()" v-if="!timelabel"></el-date-picker>
|
|
<span style="margin-left:30px;margin-right:10px;" v-if="!timelabel">{{ $t('deadline') }}</span>
|
|
<span style="margin-left:30px;margin-right:10px;" v-if="!timelabel">{{ $t('deadline') }}</span>
|
|
- <el-date-picker style="width:40%;" v-model="addForm.endDate" type="date" value-format="yyyy-MM-dd"
|
|
|
|
- :placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !permissions.editAnyTask && !(groupResponsibleId == user.id)" @change="DateChange()"></el-date-picker>
|
|
|
|
|
|
+ <el-date-picker style="width:40%;" v-model="addForm.endDate" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
|
+ default-time="17:30:00" :placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !permissions.editAnyTask && !(groupResponsibleId == user.id)" @change="DateChange()"></el-date-picker>
|
|
<span style="margin-left:30px;margin-right:10px;" v-if="timelabel && mileageCup">{{ $t('wan-cheng-shi-jian') }}</span>
|
|
<span style="margin-left:30px;margin-right:10px;" v-if="timelabel && mileageCup">{{ $t('wan-cheng-shi-jian') }}</span>
|
|
<el-date-picker style="width:40%;" v-if="timelabel && mileageCup" v-model="addForm.finishDate" type="date" value-format="yyyy-MM-dd"
|
|
<el-date-picker style="width:40%;" v-if="timelabel && mileageCup" v-model="addForm.finishDate" type="date" value-format="yyyy-MM-dd"
|
|
:placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !permissions.editAnyTask && !(groupResponsibleId == user.id)" @change="DateChange()"></el-date-picker>
|
|
:placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !permissions.editAnyTask && !(groupResponsibleId == user.id)" @change="DateChange()"></el-date-picker>
|
|
@@ -97,8 +97,7 @@
|
|
<span style="float: right; color: #8492a6; font-size: 13px;margin-left: 20px" v-if="item.jobNumber">{{ item.jobNumber }}</span>
|
|
<span style="float: right; color: #8492a6; font-size: 13px;margin-left: 20px" v-if="item.jobNumber">{{ item.jobNumber }}</span>
|
|
</el-option>
|
|
</el-option>
|
|
</el-select>
|
|
</el-select>
|
|
- <selectCat v-if="user.userNameNeedTranslate == 1" :size="'mini'" :filterable="true" :subject="users" :subjectId="executorItem.executorId" :distinction="'1'" @selectCal="selectCal" :index="executorItem.indexList" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !permissions.editAnyTask && !(groupResponsibleId == user.id)" :key="executorItem.indexList"></selectCat>
|
|
|
|
- <!-- <selectPersonnel v-if="user.userNameNeedTranslate == 1" v-model="executorItem.executorId" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !permissions.editAnyTask && !(groupResponsibleId == user.id)" @change="$forceUpdate()" :key="executorItem.indexList" /> -->
|
|
|
|
|
|
+ <el-link v-if="executorItem.executorId && addForm.startDate && addForm.endDate" style="margin-left:5px;" @click.stop="viewTaskTimeList(executorItem.executorId, executorItem.indexList)" type="primary" :underline="false">查看/修改</el-link>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- 计划工时 -->
|
|
<!-- 计划工时 -->
|
|
@@ -606,6 +605,41 @@
|
|
</div>
|
|
</div>
|
|
</span>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
+
|
|
|
|
+ <!-- 修改工时弹窗 -->
|
|
|
|
+ <el-dialog title="修改计划" :visible.sync="modifyWorkingHoursRowVisable" width="840px" top="6.5vh" :before-close="handleClose" append-to-body>
|
|
|
|
+ <div>
|
|
|
|
+ <div class="modifyPlanTitle">
|
|
|
|
+ <div class="modifyPlanTitle-item">
|
|
|
|
+ <div>执行人:</div>
|
|
|
|
+ <el-select v-model="modifyWorkingHoursRow.userId" placeholder="请选择" filterable size="small" style="width: 180px;" @change="getViewTaskTimeList()">
|
|
|
|
+ <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id">
|
|
|
|
+ <span style="float: left">{{ item.name }}</span>
|
|
|
|
+ <span style="float: right; color: #8492a6; font-size: 13px;margin-left: 20px" v-if="item.jobNumber">{{ item.jobNumber }}</span>
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="modifyPlanTitle-item">
|
|
|
|
+ <div>时间段:</div>
|
|
|
|
+ <el-date-picker v-model="modifyWorkingHoursRow.startDate" type="datetime" style="width: 200px;" value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
|
+ default-time="09:00:00" :placeholder="$t('pleaseselectadate')" size="small" @change="getViewTaskTimeList()" :clearable="false"></el-date-picker>
|
|
|
|
+ <span style="margin:0 10px;">至</span>
|
|
|
|
+ <el-date-picker style="width: 200px;" v-model="modifyWorkingHoursRow.endDate" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
|
+ default-time="17:30:00" :placeholder="$t('pleaseselectadate')" size="small" @change="getViewTaskTimeList()" :clearable="false"></el-date-picker>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <el-table :data="modifyWorkingHoursList" style="width: 100%" border v-loading="modifyWorkingHoursListLoading" height="58vh">
|
|
|
|
+ <el-table-column prop="name" label="项目名称"></el-table-column>
|
|
|
|
+ <el-table-column prop="typeName" label="计划名称"></el-table-column>
|
|
|
|
+ <el-table-column prop="startDate" label="开始时间" width="180"></el-table-column>
|
|
|
|
+ <el-table-column prop="endDate" label="截止时间" width="180"></el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ </div>
|
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
|
+ <el-button @click="modifyWorkingHoursRowVisable = false">取 消</el-button>
|
|
|
|
+ <el-button type="primary" @click="confirmArrangement()">确认安排</el-button>
|
|
|
|
+ </span>
|
|
|
|
+ </el-dialog>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
@@ -687,8 +721,8 @@ export default {
|
|
taskTypeList:[{id:0,name:this.$t('other.task'), icon:"iconfont firerock-iconrenwu"},{id:1,name:this.$t('other.milestone'),icon:"iconfont firerock-iconicon-"},{id:2,name:this.$t('risk'),icon:"iconfont firerock-iconfengxian"}],
|
|
taskTypeList:[{id:0,name:this.$t('other.task'), icon:"iconfont firerock-iconrenwu"},{id:1,name:this.$t('other.milestone'),icon:"iconfont firerock-iconicon-"},{id:2,name:this.$t('risk'),icon:"iconfont firerock-iconfengxian"}],
|
|
taskTypeColor:[getThemeColor(),'#8613ad','#bf0404'],
|
|
taskTypeColor:[getThemeColor(),'#8613ad','#bf0404'],
|
|
taskTypeIcon:['iconfont firerock-iconrenwu','iconfont firerock-iconicon-','iconfont firerock-iconfengxian'],
|
|
taskTypeIcon:['iconfont firerock-iconrenwu','iconfont firerock-iconicon-','iconfont firerock-iconfengxian'],
|
|
- taskStatusList:[this.$t('ongoing'),this.$t('state.completed'),this.$t('state.undone'),'待第一审核人审核','待第二审核人审核','已驳回'],
|
|
|
|
- taskStatusColorList:['#20a0ff','#E6A23C','#a0a0a0','#f7863b','#262626','#FF0000'],
|
|
|
|
|
|
+ taskStatusList:[this.$t('ongoing'),this.$t('state.completed'),this.$t('state.undone'),'待第一审核人审核','待第二审核人审核','第一审核人驳回','第二审核人驳回'],
|
|
|
|
+ taskStatusColorList:['#20a0ff','#E6A23C','#a0a0a0','#f7863b','#262626','#FF0000','#FF0000'],
|
|
|
|
|
|
//优先级
|
|
//优先级
|
|
taskLevelColor:['#262626','#E6A23C','#F56C6C'],
|
|
taskLevelColor:['#262626','#E6A23C','#F56C6C'],
|
|
@@ -877,6 +911,11 @@ export default {
|
|
},
|
|
},
|
|
pmUserList: [],
|
|
pmUserList: [],
|
|
millerSReviewer: [],
|
|
millerSReviewer: [],
|
|
|
|
+
|
|
|
|
+ modifyWorkingHoursRow: {},
|
|
|
|
+ modifyWorkingHoursList: [],
|
|
|
|
+ modifyWorkingHoursListLoading: false,
|
|
|
|
+ modifyWorkingHoursRowVisable: false,
|
|
};
|
|
};
|
|
},
|
|
},
|
|
computed: {
|
|
computed: {
|
|
@@ -924,6 +963,51 @@ export default {
|
|
onTypeChange(e) {
|
|
onTypeChange(e) {
|
|
this.selectType = this.typeList.filter(a=>a.id == e)[0];
|
|
this.selectType = this.typeList.filter(a=>a.id == e)[0];
|
|
},
|
|
},
|
|
|
|
+ confirmArrangement() {
|
|
|
|
+ const { index, userId, startDate, endDate } = this.modifyWorkingHoursRow
|
|
|
|
+ const userList = (this.addForm.executorListFront || []).filter(item => item.executorId == userId)
|
|
|
|
+ const row = this.addForm.executorListFront[index].executorId
|
|
|
|
+
|
|
|
|
+ if(userList.length > 0 && row != userId) {
|
|
|
|
+ this.$message({ message: '执行人已存在', type: "error" });
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ const name = this.users.find(item => item.id == userId).name
|
|
|
|
+
|
|
|
|
+ this.addForm.executorListFront[index].executorId = userId
|
|
|
|
+ this.addForm.executorListFront[index].executorName = name
|
|
|
|
+
|
|
|
|
+ this.addForm.startDate = startDate
|
|
|
|
+ this.addForm.endDate = endDate
|
|
|
|
+
|
|
|
|
+ this.modifyWorkingHoursRowVisable = false
|
|
|
|
+
|
|
|
|
+ this.$message({ message: '修改成功', type: "success" });
|
|
|
|
+ },
|
|
|
|
+ viewTaskTimeList(executorId, index) {
|
|
|
|
+ this.modifyWorkingHoursRow = { taskId: this.addForm.id, userId: executorId, startDate: this.addForm.startDate, endDate: this.addForm.endDate, index}
|
|
|
|
+ this.modifyWorkingHoursRowVisable = true
|
|
|
|
+ this.getViewTaskTimeList()
|
|
|
|
+ },
|
|
|
|
+ getViewTaskTimeList() {
|
|
|
|
+ this.modifyWorkingHoursListLoading = true
|
|
|
|
+ let obj = { ...this.modifyWorkingHoursRow }
|
|
|
|
+ delete obj.index
|
|
|
|
+ this.http.post('/task/viewUserTaskSchedule', { ...obj },
|
|
|
|
+ res => {
|
|
|
|
+ this.modifyWorkingHoursListLoading = false
|
|
|
|
+ if (res.code == "ok") {
|
|
|
|
+ this.modifyWorkingHoursList = res.data;
|
|
|
|
+ } else {
|
|
|
|
+ this.$message({ message: res.msg, type: "error" });
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ error => {
|
|
|
|
+ this.modifyWorkingHoursListLoading = false
|
|
|
|
+ this.$message({ message: error, type: "error" });
|
|
|
|
+ });
|
|
|
|
+ },
|
|
getTaskTypeList() {
|
|
getTaskTypeList() {
|
|
this.http.post('/task-type/list', { companyId: this.user.companyId },
|
|
this.http.post('/task-type/list', { companyId: this.user.companyId },
|
|
res => {
|
|
res => {
|
|
@@ -1115,7 +1199,7 @@ export default {
|
|
projectId: obj.stage.projectId,
|
|
projectId: obj.stage.projectId,
|
|
groupId: obj.stage.groupId,
|
|
groupId: obj.stage.groupId,
|
|
stagesId: obj.stage.id,
|
|
stagesId: obj.stage.id,
|
|
- startDate: obj.addForm.startDate,
|
|
|
|
|
|
+ startDate: obj.addForm.startDate + ' 08:00:00',
|
|
taskLevel:0,
|
|
taskLevel:0,
|
|
planHours: 8,
|
|
planHours: 8,
|
|
taskType: 0
|
|
taskType: 0
|
|
@@ -1675,14 +1759,14 @@ export default {
|
|
if(this.addForm.startDate != undefined && this.addForm.endDate != undefined){
|
|
if(this.addForm.startDate != undefined && this.addForm.endDate != undefined){
|
|
let stdate = Date.parse(this.addForm.startDate)
|
|
let stdate = Date.parse(this.addForm.startDate)
|
|
let eddate = Date.parse(this.addForm.endDate)
|
|
let eddate = Date.parse(this.addForm.endDate)
|
|
- if(stdate <= eddate){
|
|
|
|
- let days = (eddate - stdate) / (1*24*60*60*1000) + 1
|
|
|
|
- for (let i=0;i<this.gstimday.length;i++) {
|
|
|
|
- this.gstimday[i] = days
|
|
|
|
- this.gstimhour[i] = days * this.user.timeType.allday
|
|
|
|
- }
|
|
|
|
- this.$forceUpdate()
|
|
|
|
- }
|
|
|
|
|
|
+ // if(stdate <= eddate){
|
|
|
|
+ // let days = (eddate - stdate) / (1*24*60*60*1000) + 1
|
|
|
|
+ // for (let i=0;i<this.gstimday.length;i++) {
|
|
|
|
+ // this.gstimday[i] = days
|
|
|
|
+ // this.gstimhour[i] = days * this.user.timeType.allday
|
|
|
|
+ // }
|
|
|
|
+ // this.$forceUpdate()
|
|
|
|
+ // }
|
|
}
|
|
}
|
|
|
|
|
|
},
|
|
},
|
|
@@ -2006,23 +2090,6 @@ export default {
|
|
this.timelabel = false
|
|
this.timelabel = false
|
|
}
|
|
}
|
|
},
|
|
},
|
|
- DateChange(){
|
|
|
|
- if(this.addForm.startDate != undefined && this.addForm.endDate != undefined){
|
|
|
|
- let stdate = Date.parse(this.addForm.startDate)
|
|
|
|
- let eddate = Date.parse(this.addForm.endDate)
|
|
|
|
- if(stdate <= eddate){
|
|
|
|
- let days = (eddate - stdate) / (1*24*60*60*1000) + 1
|
|
|
|
- for (let i=0;i<this.gstimday.length;i++) {
|
|
|
|
- this.gstimday[i] = days
|
|
|
|
- this.gstimhour[i] = days * this.user.timeType.allday
|
|
|
|
- }
|
|
|
|
- this.$forceUpdate()
|
|
|
|
- }
|
|
|
|
- // console.log("gstimday",this.gstimday);
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- },
|
|
|
|
kkk(el){
|
|
kkk(el){
|
|
var k = this.checkLists.indexOf(el.id)
|
|
var k = this.checkLists.indexOf(el.id)
|
|
if (k == -1) {
|
|
if (k == -1) {
|
|
@@ -2709,4 +2776,15 @@ export default {
|
|
margin-right: 10px;
|
|
margin-right: 10px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+.modifyPlanTitle {
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ margin-bottom: 20px;
|
|
|
|
+}
|
|
|
|
+.modifyPlanTitle-item {
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ margin-right: 20px;
|
|
|
|
+}
|
|
</style>
|
|
</style>
|