|
@@ -1,8 +1,8 @@
|
|
<template>
|
|
<template>
|
|
<div>
|
|
<div>
|
|
- <van-nav-bar title="填写日报(测试)" left-text="返回" @click-left="back" fixed left-arrow/>
|
|
|
|
|
|
+ <van-nav-bar title="填写日报(测试)" left-text="返回" @click-left="back" fixed left-arrow/>
|
|
|
|
|
|
- <van-form class="login_form" @submit="register">
|
|
|
|
|
|
+ <van-form class="login_form" @submit="submitReport">
|
|
<van-field readonly clickable name="datetimePicker" :value="form.createDate" label="时间选择" placeholder="点击选择时间"
|
|
<van-field readonly clickable name="datetimePicker" :value="form.createDate" label="时间选择" placeholder="点击选择时间"
|
|
@click="showPicker = true" :rules="rules.createDate" />
|
|
@click="showPicker = true" :rules="rules.createDate" />
|
|
<van-popup v-model="showPicker" position="bottom">
|
|
<van-popup v-model="showPicker" position="bottom">
|
|
@@ -31,16 +31,53 @@
|
|
<van-cell-group :title="'项目' + (index+1)">
|
|
<van-cell-group :title="'项目' + (index+1)">
|
|
<!-- <div>请选择投入项目</div> -->
|
|
<!-- <div>请选择投入项目</div> -->
|
|
<van-field readonly name="projectId" clickable :value="item.projectName" label="投入项目" placeholder="请选择投入项目" @click="clickPicker(index, item)"
|
|
<van-field readonly name="projectId" clickable :value="item.projectName" label="投入项目" placeholder="请选择投入项目" @click="clickPicker(index, item)"
|
|
- :rules="[{ required: true, message: '请选择项目' }]" /><!--
|
|
|
|
- <van-popup v-model="showPickerProject" position="bottom">
|
|
|
|
- <van-picker show-toolbar :columns="project" value-key="projectName" @confirm="choseProject" @cancel="showPickerProject = false" />
|
|
|
|
- </van-popup> -->
|
|
|
|
|
|
+ :rules="[{ required: true, message: '请选择项目' }]" />
|
|
|
|
+
|
|
|
|
+ <van-field readonly name="projectAuditorId" v-if="item.auditUserList != null && item.auditUserList.length > 0" clickable
|
|
|
|
+ :value="item.projectAuditorName" label="项目审核人" placeholder="请选择审核人"
|
|
|
|
+ @click="clickPickAuditor(index, item)" />
|
|
|
|
+ <van-popup v-model="item.showPickerAuditor" position="bottom">
|
|
|
|
+ <van-picker show-toolbar :columns="item.auditUserList" value-key="auditorName" @confirm="choseAuditor"
|
|
|
|
+ @cancel="item.showPickerAuditor = false;$forceUpdate();" />
|
|
|
|
+ </van-popup>
|
|
|
|
+
|
|
|
|
+ <van-field readonly name="subProjectId" v-if="item.subProjectList != null && item.subProjectList.length > 0" clickable
|
|
|
|
+ :value="item.subProjectName" label="子项目" placeholder="请选择子项目"
|
|
|
|
+ @click="clickPickSubProject(index, item)" />
|
|
|
|
+
|
|
|
|
+ <van-popup v-model="item.showPickerSubProject" position="bottom">
|
|
|
|
+ <van-picker show-toolbar :columns="item.subProjectList" value-key="name" @confirm="choseSubProject"
|
|
|
|
+ @cancel="item.showPickerSubProject = false;$forceUpdate();" />
|
|
|
|
+ </van-popup>
|
|
|
|
+ <!--任务分组 -->
|
|
|
|
+ <van-field readonly name="groupId" v-if="user.company.packageProject==1&&item.taskGroups != null && item.taskGroups.length > 0" clickable
|
|
|
|
+ :value="item.groupName" label="任务分组" placeholder="请选择任务分组"
|
|
|
|
+ @click="clickPickTaskGroup(index, item)" />
|
|
|
|
+
|
|
|
|
+ <van-popup v-model="item.showPickerTaskGroup" position="bottom">
|
|
|
|
+ <van-picker show-toolbar :columns="item.taskGroups" value-key="name" @confirm="choseTaskGroup"
|
|
|
|
+ @cancel="item.showPickerTaskGroup = false;$forceUpdate();" />
|
|
|
|
+ </van-popup>
|
|
|
|
+ <!--任务阶段 -->
|
|
|
|
+ <van-field readonly name="stage" v-if="user.company.packageProject==1&&item.stages != null && item.stages.length > 0" clickable
|
|
|
|
+ :value="item.stage" label="投入阶段" placeholder="请选择投入阶段"
|
|
|
|
+ @click="clickPickStage(index, item)" />
|
|
|
|
+
|
|
|
|
+ <van-popup v-model="item.showPickerStage" position="bottom">
|
|
|
|
+ <van-picker show-toolbar :columns="item.stages" value-key="stagesName" @confirm="choseStage"
|
|
|
|
+ @cancel="item.showPickerStage = false;$forceUpdate();" />
|
|
|
|
+ </van-popup>
|
|
|
|
+
|
|
<!-- 相关维度 -->
|
|
<!-- 相关维度 -->
|
|
<van-field :value="item.weiduName" v-if="item.projectId && user.timeType.customDegreeActive == 1" readonly name="id" clickable :label="user.timeType.customDegreeName" placeholder="请选择" @click="clickPickers(index)"/>
|
|
<van-field :value="item.weiduName" v-if="item.projectId && user.timeType.customDegreeActive == 1" readonly name="id" clickable :label="user.timeType.customDegreeName" placeholder="请选择" @click="clickPickers(index)"/>
|
|
- <van-popup v-model="showPickerProjects" position="bottom">
|
|
|
|
- <van-picker show-toolbar :columns="item.wuduList" value-key="name" @confirm="choseProjects" @cancel="showPickerProjects = false" />
|
|
|
|
|
|
+ <van-popup v-model="item.showPickDegree" position="bottom">
|
|
|
|
+ <van-picker show-toolbar :columns="item.wuduList" value-key="name" @confirm="choseProjects" @cancel="item.showPickDegree = false;$forceUpdate()" />
|
|
</van-popup>
|
|
</van-popup>
|
|
|
|
|
|
|
|
+ <!-- 自定义数值 -->
|
|
|
|
+ <van-field v-if="user.timeType.customDataActive==1" type="number" :disabled="!canEdit" v-model="item.customData" :label="user.timeType.customDataName"
|
|
|
|
+ placeholder="请输入数字" ></van-field>
|
|
|
|
+
|
|
<van-cell title="专业进度" v-if="user.company.packageEngineering == 1">
|
|
<van-cell title="专业进度" v-if="user.company.packageEngineering == 1">
|
|
</van-cell>
|
|
</van-cell>
|
|
<van-field :disabled="!canEdit"
|
|
<van-field :disabled="!canEdit"
|
|
@@ -54,8 +91,8 @@
|
|
</van-field>
|
|
</van-field>
|
|
<van-field v-if="user.company.packageProject == 1" readonly name="taskId" :value="item.taskName" label="关联任务" placeholder="请选择关联任务" @click="clickPickerTask(index)"
|
|
<van-field v-if="user.company.packageProject == 1" readonly name="taskId" :value="item.taskName" label="关联任务" placeholder="请选择关联任务" @click="clickPickerTask(index)"
|
|
/>
|
|
/>
|
|
- <van-popup v-model="showPickerTask" position="bottom">
|
|
|
|
- <van-picker show-toolbar :columns="item.taskList" value-key="taskName" @confirm="choseTask" @cancel="showPickerTask = false" />
|
|
|
|
|
|
+ <van-popup v-model="item.showPickerTask" position="bottom">
|
|
|
|
+ <van-picker show-toolbar :columns="item.taskList" value-key="taskName" @confirm="choseTask" @cancel="item.showPickerTask = false;$forceUpdate()" />
|
|
</van-popup>
|
|
</van-popup>
|
|
<!-- <van-field readonly clickable class="form_input" :value="item.workingTime" name="workingTime" label="工作时长" placeholder="请输入工作时长(单位:小时)"
|
|
<!-- <van-field readonly clickable class="form_input" :value="item.workingTime" name="workingTime" label="工作时长" placeholder="请输入工作时长(单位:小时)"
|
|
:rules="[{ required: true, message: '请输入工作时长(单位:小时)' }]" @touchstart.native.stop="showNumberKey = true"/>
|
|
:rules="[{ required: true, message: '请输入工作时长(单位:小时)' }]" @touchstart.native.stop="showNumberKey = true"/>
|
|
@@ -79,7 +116,9 @@
|
|
|
|
|
|
<!-- 时间段选择模式 -->
|
|
<!-- 时间段选择模式 -->
|
|
<van-field readonly v-if="reportTimeType.type == 2" clickable name="datetimePicker" :value="item.startTime" label="开始时间" placeholder="点击选择时间"
|
|
<van-field readonly v-if="reportTimeType.type == 2" clickable name="datetimePicker" :value="item.startTime" label="开始时间" placeholder="点击选择时间"
|
|
- @click="canEdit?showStartTime = true:''" :disabled="!canEdit" />
|
|
|
|
|
|
+ @click="canEdit?showStartTime = true:''" :disabled="!canEdit"
|
|
|
|
+ :rules="[{ required: true, message: '请选择开始时间' }]"
|
|
|
|
+ />
|
|
<van-popup v-model="showStartTime" position="bottom">
|
|
<van-popup v-model="showStartTime" position="bottom">
|
|
<van-datetime-picker
|
|
<van-datetime-picker
|
|
v-model="startTime"
|
|
v-model="startTime"
|
|
@@ -92,7 +131,8 @@
|
|
<!-- :filter="filter" 原本这个属性在里面 -->
|
|
<!-- :filter="filter" 原本这个属性在里面 -->
|
|
</van-popup>
|
|
</van-popup>
|
|
<van-field v-if="reportTimeType.type == 2" readonly clickable name="datetimePicker" :value="item.endTime" label="结束时间" placeholder="点击选择时间"
|
|
<van-field v-if="reportTimeType.type == 2" readonly clickable name="datetimePicker" :value="item.endTime" label="结束时间" placeholder="点击选择时间"
|
|
- @click="canEdit?showEndTime = true:''" :disabled="!canEdit" />
|
|
|
|
|
|
+ @click="canEdit?showEndTime = true:''" :disabled="!canEdit"
|
|
|
|
+ :rules="[{ required: true, message: '请选择结束时间' }]" />
|
|
<van-popup v-model="showEndTime" position="bottom" >
|
|
<van-popup v-model="showEndTime" position="bottom" >
|
|
<van-datetime-picker
|
|
<van-datetime-picker
|
|
v-model="endTime"
|
|
v-model="endTime"
|
|
@@ -179,6 +219,7 @@
|
|
<div class="overtime" >
|
|
<div class="overtime" >
|
|
<van-checkbox :disabled="!canEdit" v-model="item.isOvertime" v-if="reportTimeType.multiWorktime !=1">加班</van-checkbox>
|
|
<van-checkbox :disabled="!canEdit" v-model="item.isOvertime" v-if="reportTimeType.multiWorktime !=1">加班</van-checkbox>
|
|
<van-tag style="position:absolute;right:10px;" v-if="isCorpWX&&canEdit" type="primary" size="large" @click="takePhoto(index)">拍照上传</van-tag>
|
|
<van-tag style="position:absolute;right:10px;" v-if="isCorpWX&&canEdit" type="primary" size="large" @click="takePhoto(index)">拍照上传</van-tag>
|
|
|
|
+ <!-- <van-tag style="position:absolute;right:10px;" type="primary" size="large" @click="takePhoto(index)">拍照上传</van-tag> -->
|
|
</div>
|
|
</div>
|
|
<div style="padding:5px;text-align:center;" v-if="!isIOSystem">
|
|
<div style="padding:5px;text-align:center;" v-if="!isIOSystem">
|
|
<span v-for="(p, index) in item.pics" :key="p" style="margin-right:15px;">
|
|
<span v-for="(p, index) in item.pics" :key="p" style="margin-right:15px;">
|
|
@@ -230,7 +271,16 @@
|
|
<van-button v-if="canCancel" block type="default" @click="cancel"> 撤销 </van-button>
|
|
<van-button v-if="canCancel" block type="default" @click="cancel"> 撤销 </van-button>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
- <div class="form_tip" v-if="!canEdit && !canCancel"> 已审核无法修改 </div>
|
|
|
|
|
|
+ <div class="form_tip" v-if="!canEdit && !canCancel"> 已审核无法修改 </div>
|
|
|
|
+
|
|
|
|
+ <!-- 选择项目弹窗 -->
|
|
|
|
+ <van-popup v-model="showPickerUserddp" position="bottom" style="height: 80%">
|
|
|
|
+ <!-- <van-search v-model="userName" placeholder="输入项目名称搜索" @clear="sea()" @blur="sea()" @search="sea()"></van-search> -->
|
|
|
|
+ <van-search v-model="userName" placeholder="请输入项目名称" @clear="sea()" @blur="sea()" @search="sea()"/>
|
|
|
|
+ <div style="minHeight:300px;">
|
|
|
|
+ <div v-for="(item, index) in projectss" :key="item.id" class="ryuan" @click="fZr(item, index)">{{item.projectName}}</div>
|
|
|
|
+ </div>
|
|
|
|
+ </van-popup>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
<script src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
|
|
<script src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
|
|
@@ -240,6 +290,10 @@
|
|
export default {
|
|
export default {
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
|
|
+
|
|
|
|
+ showPickerStage: false,
|
|
|
|
+ showPickerTaskGroup: false,
|
|
|
|
+ showPickerSubProject: false,
|
|
isDraft:0,
|
|
isDraft:0,
|
|
showWorkStartTime:false,
|
|
showWorkStartTime:false,
|
|
showWorkEndTime:false,
|
|
showWorkEndTime:false,
|
|
@@ -267,7 +321,7 @@
|
|
showPickerTime: false,
|
|
showPickerTime: false,
|
|
showPicker: false,
|
|
showPicker: false,
|
|
showPickerProject: false,
|
|
showPickerProject: false,
|
|
- showPickerProjects: false,
|
|
|
|
|
|
+ showPickDegree: false,
|
|
clickIndex: 0,
|
|
clickIndex: 0,
|
|
clickTimeIndex: 0,
|
|
clickTimeIndex: 0,
|
|
showNumberKey: false,
|
|
showNumberKey: false,
|
|
@@ -300,7 +354,12 @@
|
|
finished: false,
|
|
finished: false,
|
|
// isOvertime: false
|
|
// isOvertime: false
|
|
tmpPics:[],
|
|
tmpPics:[],
|
|
- dateAr: []
|
|
|
|
|
|
+ dateAr: [],
|
|
|
|
+ showPickerUserddp: false, // 选择项目弹窗
|
|
|
|
+ projectss: [],
|
|
|
|
+ proads: [],
|
|
|
|
+ userName: '',
|
|
|
|
+ proIdx: ''
|
|
};
|
|
};
|
|
},
|
|
},
|
|
|
|
|
|
@@ -309,6 +368,108 @@
|
|
},
|
|
},
|
|
|
|
|
|
methods: {
|
|
methods: {
|
|
|
|
+ //获取项目审核人
|
|
|
|
+ getProjectAuditorList(domainItem) {
|
|
|
|
+ this.$axios.post("/project-auditor/getList", {projectId: domainItem.projectId})
|
|
|
|
+ .then(res => {
|
|
|
|
+ if(res.code == "ok") {
|
|
|
|
+ domainItem.auditUserList = res.data;
|
|
|
|
+ if (res.data.length==1) {
|
|
|
|
+ domainItem.projectAuditorId = domainItem.auditUserList[0].auditorId;
|
|
|
|
+ domainItem.projectAuditorName = domainItem.auditUserList[0].auditorName;
|
|
|
|
+ }
|
|
|
|
+ this.$forceUpdate();
|
|
|
|
+ } else {
|
|
|
|
+ this.$toast.fail('获取失败:'+res.msg);
|
|
|
|
+ }
|
|
|
|
+ }).catch(err=> {toast.clear();});
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ updateTxt() {
|
|
|
|
+ this.$forceUpdate();
|
|
|
|
+ },
|
|
|
|
+ // 获取项目
|
|
|
|
+ getPeoject() {
|
|
|
|
+ this.$axios.post("/project/getProjectList", {})
|
|
|
|
+ .then(res => {
|
|
|
|
+ if(res.code == "ok") {
|
|
|
|
+ this.projectss = res.data;
|
|
|
|
+ this.projectss = this.projectss.filter(p=>p.status == 1);
|
|
|
|
+ this.proads = res.data
|
|
|
|
+ } else {
|
|
|
|
+ this.$toast.fail('获取失败:'+res.msg);
|
|
|
|
+ }
|
|
|
|
+ }).catch(err=> {toast.clear();});
|
|
|
|
+ },
|
|
|
|
+ sea() {
|
|
|
|
+ console.log(this.userName.length)
|
|
|
|
+ if(this.userName.length > 0) {
|
|
|
|
+ console.log(123)
|
|
|
|
+ let text = this.userName
|
|
|
|
+ let reg = new RegExp(text)
|
|
|
|
+ let data = this.projectss.filter(item => reg.test(item.projectName)) //返回
|
|
|
|
+ this.projectss = data
|
|
|
|
+ } else {
|
|
|
|
+ console.log(456)
|
|
|
|
+ this.project = this.proads
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ fZr(item,index) {
|
|
|
|
+ var domainItem = this.form.domains[this.proIdx];
|
|
|
|
+ domainItem.projectId = item.id;
|
|
|
|
+ domainItem.projectName = item.projectName;
|
|
|
|
+
|
|
|
|
+ //清空子项目
|
|
|
|
+ domainItem.subProjectId = null;
|
|
|
|
+ domainItem.subProjectName = null;
|
|
|
|
+ //清空任务
|
|
|
|
+ domainItem.taskId = null;
|
|
|
|
+ domainItem.taskName = null;
|
|
|
|
+ //清空分组和阶段
|
|
|
|
+ domainItem.stage = null;
|
|
|
|
+ domainItem.groupId = null;
|
|
|
|
+
|
|
|
|
+ this.showPickerUserddp = false;
|
|
|
|
+ //获取子项目
|
|
|
|
+ this.getSubprojectList(this.form.domains[this.proIdx]);
|
|
|
|
+
|
|
|
|
+ //加载项目相关的工程进度
|
|
|
|
+ if (this.user.company.packageEngineering == 1){
|
|
|
|
+ this.getProjectProfessions(this.form.domains[this.proIdx],index);
|
|
|
|
+ }
|
|
|
|
+ //获取任务分组
|
|
|
|
+ this.getTaskGroups(this.form.domains[this.proIdx], this.proIdx);
|
|
|
|
+
|
|
|
|
+ // 获取1相关维度
|
|
|
|
+ this.getTaskList(domainItem.projectId)
|
|
|
|
+
|
|
|
|
+ //获取相关日报提交选择人
|
|
|
|
+ domainItem.projectAuditorId = null;
|
|
|
|
+ domainItem.projectAuditorName = null;
|
|
|
|
+ domainItem.auditUserList = null;
|
|
|
|
+ this.getProjectAuditorList(domainItem);
|
|
|
|
+ },
|
|
|
|
+ //获取项目下的任务分组
|
|
|
|
+ getTaskGroups(domainItem, index) {
|
|
|
|
+ domainItem.groupId=null;
|
|
|
|
+ this.$axios.post("/task-group/list", {projectId: domainItem.projectId})
|
|
|
|
+ .then(res => {
|
|
|
|
+ if(res.code == "ok") {
|
|
|
|
+ domainItem.taskGroups = res.data;
|
|
|
|
+ }
|
|
|
|
+ this.$forceUpdate();
|
|
|
|
+ }).catch(err=> {toast.clear();});
|
|
|
|
+ },
|
|
|
|
+ getSubprojectList(domainItem) {
|
|
|
|
+ domainItem.subProjectList = [];
|
|
|
|
+ this.$axios.post("/sub-project/list", {projectId: domainItem.projectId})
|
|
|
|
+ .then(res => {
|
|
|
|
+ if(res.code == "ok") {
|
|
|
|
+ domainItem.subProjectList = res.data;
|
|
|
|
+ }
|
|
|
|
+ this.$forceUpdate();
|
|
|
|
+ }).catch(err=> {toast.clear();});
|
|
|
|
+ },
|
|
showEndDialog(timeItem) {
|
|
showEndDialog(timeItem) {
|
|
this.curWorktime = timeItem;
|
|
this.curWorktime = timeItem;
|
|
this.showWorkEndTime = true;
|
|
this.showWorkEndTime = true;
|
|
@@ -659,7 +820,10 @@
|
|
serverPicArray = JSON.parse(list[i].picStr.replace(/@/g,","));
|
|
serverPicArray = JSON.parse(list[i].picStr.replace(/@/g,","));
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
|
|
+ var subProjectName = null;
|
|
|
|
+ if (list[i].subProjectId) {
|
|
|
|
+ subProjectName = list[i].subProjectList.filter(s=>s.id==list[i].subProjectId)[0].name;
|
|
|
|
+ }
|
|
array.push({
|
|
array.push({
|
|
id: list[i].id,
|
|
id: list[i].id,
|
|
projectId: list[i].projectId,
|
|
projectId: list[i].projectId,
|
|
@@ -684,7 +848,19 @@
|
|
worktimeList:list[i].worktimeList,
|
|
worktimeList:list[i].worktimeList,
|
|
wuduList: list[i].degreeList,
|
|
wuduList: list[i].degreeList,
|
|
weiduName: wuduName,
|
|
weiduName: wuduName,
|
|
- degreeId: list[i].degreeId
|
|
|
|
|
|
+ degreeId: list[i].degreeId,
|
|
|
|
+ subProjectId: list[i].subProjectId,
|
|
|
|
+ subProjectName: subProjectName,
|
|
|
|
+ subProjectList: list[i].subProjectList,
|
|
|
|
+ groupId: list[i].groupId == 0?null:list[i].groupId,
|
|
|
|
+ groupName: list[i].groupName,
|
|
|
|
+ taskGroups:list[i].taskGroups,
|
|
|
|
+ stages:list[i].stages,
|
|
|
|
+ stage:list[i].stage == '-'?null:list[i].stage,
|
|
|
|
+ customData: list[i].customData,
|
|
|
|
+ projectAuditorId: list[i].projectAuditorId,
|
|
|
|
+ projectAuditorName: list[i].projectAuditorName,
|
|
|
|
+ auditUserList: list[i].auditUserList,
|
|
})
|
|
})
|
|
if (list[i].state >= 2) {
|
|
if (list[i].state >= 2) {
|
|
this.canEdit = true;
|
|
this.canEdit = true;
|
|
@@ -733,25 +909,63 @@
|
|
this.getReport();
|
|
this.getReport();
|
|
},
|
|
},
|
|
|
|
|
|
|
|
+ //点击选择审核人
|
|
|
|
+ clickPickAuditor(i, item) {
|
|
|
|
+ if (!this.canEdit) return;
|
|
|
|
+ if (item.auditUserList.length<=1) return;
|
|
|
|
+ this.clickIndex = i;
|
|
|
|
+ item.showPickerAuditor = true;
|
|
|
|
+ this.$forceUpdate();
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ choseAuditor(value, index) {
|
|
|
|
+ this.form.domains[this.clickIndex].projectAuditorId = value.auditorId;
|
|
|
|
+ this.form.domains[this.clickIndex].projectAuditorName = value.auditorName;
|
|
|
|
+ this.form.domains[this.clickIndex].showPickerAuditor = false;
|
|
|
|
+ this.$forceUpdate();
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ //点击选择子项目
|
|
|
|
+ clickPickSubProject(i, item) {
|
|
|
|
+ if (!this.canEdit) return;
|
|
|
|
+ this.clickIndex = i;
|
|
|
|
+ item.showPickerSubProject = true;
|
|
|
|
+ this.$forceUpdate();
|
|
|
|
+ },
|
|
|
|
+ clickPickTaskGroup(i, item) {
|
|
|
|
+ if (!this.canEdit) return;
|
|
|
|
+ this.clickIndex = i;
|
|
|
|
+ item.showPickerTaskGroup = true;
|
|
|
|
+ this.$forceUpdate();
|
|
|
|
+ },
|
|
|
|
+ clickPickStage(i, item) {
|
|
|
|
+ if (!this.canEdit) return;
|
|
|
|
+ this.clickIndex = i;
|
|
|
|
+ item.showPickerStage = true;
|
|
|
|
+ this.$forceUpdate();
|
|
|
|
+ },
|
|
|
|
+
|
|
// 选择项目
|
|
// 选择项目
|
|
clickPicker(i, item) {
|
|
clickPicker(i, item) {
|
|
if (!this.canEdit) return;
|
|
if (!this.canEdit) return;
|
|
// this.clickIndex = i;
|
|
// this.clickIndex = i;
|
|
// this.showPickerProject = true;
|
|
// this.showPickerProject = true;
|
|
console.log(i, item, this.form)
|
|
console.log(i, item, this.form)
|
|
- this.$router.push({
|
|
|
|
- path: '/search',
|
|
|
|
- query: {
|
|
|
|
- // from: JSON.stringify(this.form)
|
|
|
|
- from: this.form,
|
|
|
|
- idx: i
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
|
|
+ this.proIdx = i
|
|
|
|
+ this.showPickerUserddp = true
|
|
|
|
+ // this.$router.push({
|
|
|
|
+ // path: '/search',
|
|
|
|
+ // query: {
|
|
|
|
+ // // from: JSON.stringify(this.form)
|
|
|
|
+ // from: this.form,
|
|
|
|
+ // idx: i
|
|
|
|
+ // }
|
|
|
|
+ // });
|
|
},
|
|
},
|
|
clickPickers(i) {
|
|
clickPickers(i) {
|
|
if (!this.canEdit) return;
|
|
if (!this.canEdit) return;
|
|
this.clickIndex = i;
|
|
this.clickIndex = i;
|
|
- this.showPickerProjects = true;
|
|
|
|
|
|
+ this.form.domains[this.clickIndex].showPickDegree = true;
|
|
var proId = this.form.domains[this.clickIndex].projectId
|
|
var proId = this.form.domains[this.clickIndex].projectId
|
|
this.dimension(proId)
|
|
this.dimension(proId)
|
|
},
|
|
},
|
|
@@ -759,41 +973,75 @@
|
|
clickPickerTask(i) {
|
|
clickPickerTask(i) {
|
|
if (!this.canEdit) return;
|
|
if (!this.canEdit) return;
|
|
this.clickIndex = i;
|
|
this.clickIndex = i;
|
|
- var proId = this.form.domains[this.clickIndex].projectId
|
|
|
|
- this.getTaskList(proId)
|
|
|
|
- this.showPickerTask = true;
|
|
|
|
|
|
+ // var proId = this.form.domains[this.clickIndex].projectId
|
|
|
|
+ // this.getTaskList(proId)
|
|
|
|
+ this.form.domains[this.clickIndex].showPickerTask = true;
|
|
|
|
+ this.$forceUpdate();
|
|
},
|
|
},
|
|
choseTask(value, index) {
|
|
choseTask(value, index) {
|
|
this.form.domains[this.clickIndex].taskId = value.taskId;
|
|
this.form.domains[this.clickIndex].taskId = value.taskId;
|
|
this.form.domains[this.clickIndex].taskName = value.taskName;
|
|
this.form.domains[this.clickIndex].taskName = value.taskName;
|
|
- this.showPickerTask = false;
|
|
|
|
|
|
+ this.form.domains[this.clickIndex].showPickerTask = false;
|
|
|
|
+ this.$forceUpdate();
|
|
},
|
|
},
|
|
|
|
|
|
choseProjects(value, index) {
|
|
choseProjects(value, index) {
|
|
// console.log(value)
|
|
// console.log(value)
|
|
this.form.domains[this.clickIndex].weiduName = value.name;
|
|
this.form.domains[this.clickIndex].weiduName = value.name;
|
|
this.form.domains[this.clickIndex].degreeId = value.id;
|
|
this.form.domains[this.clickIndex].degreeId = value.id;
|
|
- this.showPickerProjects = false;
|
|
|
|
|
|
+ this.form.domains[this.clickIndex].showPickDegree = false;
|
|
|
|
+ this.$forceUpdate();
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ choseSubProject(value, index) {
|
|
|
|
+ this.form.domains[this.clickIndex].subProjectId = value.id;
|
|
|
|
+ this.form.domains[this.clickIndex].subProjectName = value.name;
|
|
|
|
+ this.form.domains[this.clickIndex].showPickerSubProject = false;
|
|
|
|
+ this.$forceUpdate();
|
|
},
|
|
},
|
|
|
|
|
|
- choseProject(value, index) {
|
|
|
|
- this.form.domains[this.clickIndex].projectId = value.id;
|
|
|
|
- this.form.domains[this.clickIndex].projectName = value.projectName;
|
|
|
|
- this.showPickerProject = false;
|
|
|
|
- this.getTaskList(value.id);
|
|
|
|
- this.dimension(value.id) // 获取维度
|
|
|
|
|
|
+ choseTaskGroup(value, index) {
|
|
|
|
+ this.form.domains[this.clickIndex].groupId = value.id;
|
|
|
|
+ this.form.domains[this.clickIndex].groupName = value.name;
|
|
|
|
+ this.form.domains[this.clickIndex].showPickerTaskGroup = false;
|
|
|
|
|
|
- //加载项目相关的工程进度
|
|
|
|
- if (this.user.company.packageEngineering == 1) {
|
|
|
|
- this.getProjectProfessions(this.form.domains[this.clickIndex], index);
|
|
|
|
- }
|
|
|
|
|
|
+ this.getGroupStages(this.form.domains[this.clickIndex], index);
|
|
|
|
+ // this.getTaskList(value.id);
|
|
|
|
+ // this.dimension(value.id) // 获取维度
|
|
|
|
+
|
|
|
|
+ // //加载项目相关的工程进度
|
|
|
|
+ // if (this.user.company.packageEngineering == 1) {
|
|
|
|
+ // this.getProjectProfessions(this.form.domains[this.clickIndex], index);
|
|
|
|
+ // }
|
|
|
|
+ },
|
|
|
|
+ choseStage(value, index) {
|
|
|
|
+ this.form.domains[this.clickIndex].stage = value.stagesName;
|
|
|
|
+ this.form.domains[this.clickIndex].showPickerStage = false;
|
|
|
|
+ this.$forceUpdate();
|
|
|
|
+
|
|
},
|
|
},
|
|
|
|
|
|
|
|
+ getGroupStages(domain, index) {
|
|
|
|
+ this.$axios.post("/stages/getProjectStagesByGroup", {groupId: domain.groupId})
|
|
|
|
+ .then(res => {
|
|
|
|
+ if(res.code == "ok") {
|
|
|
|
+ domain.stage = '';
|
|
|
|
+ domain.stages = res.data;
|
|
|
|
+ this.$forceUpdate();
|
|
|
|
+ } else {
|
|
|
|
+ this.$toast.fail('获取失败');
|
|
|
|
+ }
|
|
|
|
+ }).catch(err=> {toast.clear();});
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+
|
|
getProjectProfessions(domain, index) {
|
|
getProjectProfessions(domain, index) {
|
|
|
|
+ console.log(domain, '数据')
|
|
this.$axios.post("/project-profession/getMyProfession", {projectId: domain.projectId})
|
|
this.$axios.post("/project-profession/getMyProfession", {projectId: domain.projectId})
|
|
.then(res => {
|
|
.then(res => {
|
|
if(res.code == "ok") {
|
|
if(res.code == "ok") {
|
|
this.form.domains[this.clickIndex].professionProgress = res.data;
|
|
this.form.domains[this.clickIndex].professionProgress = res.data;
|
|
|
|
+ console.log(this.form.domains)
|
|
this.$forceUpdate();
|
|
this.$forceUpdate();
|
|
} else {
|
|
} else {
|
|
this.$toast.fail('获取失败');
|
|
this.$toast.fail('获取失败');
|
|
@@ -813,6 +1061,7 @@
|
|
}).catch(err=> {toast.clear();});
|
|
}).catch(err=> {toast.clear();});
|
|
},
|
|
},
|
|
|
|
|
|
|
|
+
|
|
getTaskList(projectId) {
|
|
getTaskList(projectId) {
|
|
//如果是专业版,需要列出任务列表
|
|
//如果是专业版,需要列出任务列表
|
|
if (this.user.company.packageProject == 1) {
|
|
if (this.user.company.packageProject == 1) {
|
|
@@ -820,7 +1069,8 @@
|
|
.then(res => {
|
|
.then(res => {
|
|
if(res.code == "ok") {
|
|
if(res.code == "ok") {
|
|
this.form.domains[this.clickIndex].taskList = res.data;
|
|
this.form.domains[this.clickIndex].taskList = res.data;
|
|
- this.$forceUpdate();
|
|
|
|
|
|
+ this.form = this.form;
|
|
|
|
+ // this.$forceUpdate();
|
|
} else {
|
|
} else {
|
|
this.$toast.fail('获取失败');
|
|
this.$toast.fail('获取失败');
|
|
}
|
|
}
|
|
@@ -896,7 +1146,7 @@
|
|
},
|
|
},
|
|
|
|
|
|
// 提交日报
|
|
// 提交日报
|
|
- register() {
|
|
|
|
|
|
+ submitReport() {
|
|
this.dateAr = []
|
|
this.dateAr = []
|
|
let alp = []
|
|
let alp = []
|
|
if(this.user.timeType.multiWorktime == 1) {
|
|
if(this.user.timeType.multiWorktime == 1) {
|
|
@@ -978,19 +1228,36 @@
|
|
} else {
|
|
} else {
|
|
formData.append("degreeId", -1);
|
|
formData.append("degreeId", -1);
|
|
}
|
|
}
|
|
|
|
+ } else {
|
|
|
|
+ formData.append("degreeId", -1);
|
|
|
|
+ }
|
|
|
|
+ if(this.form.domains[i].customData) {
|
|
|
|
+ formData.append("customData", this.form.domains[i].customData);
|
|
|
|
+ } else {
|
|
|
|
+ formData.append("customData", "0");
|
|
}
|
|
}
|
|
|
|
|
|
- if (this.form.domains[i].id != null) {
|
|
|
|
|
|
+ if (this.form.domains[i].id) {
|
|
formData.append("id", this.form.domains[i].id);
|
|
formData.append("id", this.form.domains[i].id);
|
|
} else {
|
|
} else {
|
|
formData.append("id", -1);
|
|
formData.append("id", -1);
|
|
}
|
|
}
|
|
formData.append("projectId", parseFloat(this.form.domains[i].projectId));
|
|
formData.append("projectId", parseFloat(this.form.domains[i].projectId));
|
|
- if (this.form.domains[i].subProjectId != null) {
|
|
|
|
|
|
+ if (this.form.domains[i].subProjectId) {
|
|
formData.append("subProjectId", this.form.domains[i].subProjectId);
|
|
formData.append("subProjectId", this.form.domains[i].subProjectId);
|
|
} else {
|
|
} else {
|
|
formData.append("subProjectId", 0);
|
|
formData.append("subProjectId", 0);
|
|
}
|
|
}
|
|
|
|
+ if (this.form.domains[i].groupId) {
|
|
|
|
+ formData.append("groupId", this.form.domains[i].groupId);
|
|
|
|
+ } else {
|
|
|
|
+ formData.append("groupId", 0);
|
|
|
|
+ }
|
|
|
|
+ if (this.form.domains[i].stage) {
|
|
|
|
+ formData.append("stage", this.form.domains[i].stage);
|
|
|
|
+ } else {
|
|
|
|
+ formData.append("stage", '-');
|
|
|
|
+ }
|
|
formData.append("reportTimeType", this.reportTimeType.type);
|
|
formData.append("reportTimeType", this.reportTimeType.type);
|
|
formData.append("multiWorktime", this.reportTimeType.multiWorktime);
|
|
formData.append("multiWorktime", this.reportTimeType.multiWorktime);
|
|
if (this.reportTimeType.type == 0) {
|
|
if (this.reportTimeType.type == 0) {
|
|
@@ -1006,17 +1273,16 @@
|
|
formData.append("workingTime",this.form.domains[i].workingTime);
|
|
formData.append("workingTime",this.form.domains[i].workingTime);
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
- if (this.form.domains[i].taskId == null) {
|
|
|
|
- formData.append("taskId", 0);
|
|
|
|
- } else {
|
|
|
|
|
|
+ if (this.form.domains[i].taskId) {
|
|
formData.append("taskId", this.form.domains[i].taskId);
|
|
formData.append("taskId", this.form.domains[i].taskId);
|
|
|
|
+ } else {
|
|
|
|
+ formData.append("taskId", 0);
|
|
}
|
|
}
|
|
formData.append("createDate", this.form.createDate);
|
|
formData.append("createDate", this.form.createDate);
|
|
formData.append("isOvertime", this.form.domains[i].isOvertime?1:0);
|
|
formData.append("isOvertime", this.form.domains[i].isOvertime?1:0);
|
|
|
|
|
|
//项目专业进度
|
|
//项目专业进度
|
|
- if (this.form.domains[i].professionProgress != null) {
|
|
|
|
|
|
+ if (this.form.domains[i].professionProgress) {
|
|
let m = JSON.stringify(this.form.domains[i].professionProgress);
|
|
let m = JSON.stringify(this.form.domains[i].professionProgress);
|
|
m = m.replace(/,/g,"@");//replaceAll(',','@');企业微信不兼容replaceAll
|
|
m = m.replace(/,/g,"@");//replaceAll(',','@');企业微信不兼容replaceAll
|
|
formData.append("professionProgress", m);
|
|
formData.append("professionProgress", m);
|
|
@@ -1024,7 +1290,7 @@
|
|
formData.append("professionProgress", "[]");
|
|
formData.append("professionProgress", "[]");
|
|
}
|
|
}
|
|
//图片的处理,serverPic是当前所有的照片
|
|
//图片的处理,serverPic是当前所有的照片
|
|
- if (this.form.domains[i].serverPics!= null && this.form.domains[i].serverPics.length > 0) {
|
|
|
|
|
|
+ if (this.form.domains[i].serverPics) {
|
|
let m = JSON.stringify(this.form.domains[i].serverPics);
|
|
let m = JSON.stringify(this.form.domains[i].serverPics);
|
|
m = m.replace(/,/g,"@");//replaceAll(',','@');企业微信不兼容replaceAll
|
|
m = m.replace(/,/g,"@");//replaceAll(',','@');企业微信不兼容replaceAll
|
|
formData.append("pics", m);
|
|
formData.append("pics", m);
|
|
@@ -1064,32 +1330,32 @@
|
|
m = m.replace(/,/g,"@");//replaceAll(',','@');企业微信不兼容replaceAll
|
|
m = m.replace(/,/g,"@");//replaceAll(',','@');企业微信不兼容replaceAll
|
|
formData.append("content", m);
|
|
formData.append("content", m);
|
|
} else {
|
|
} else {
|
|
- if (this.form.domains[i].content == null || this.form.domains[i].content == '') {
|
|
|
|
- formData.append("content", '-');
|
|
|
|
- } else {
|
|
|
|
|
|
+ if (this.form.domains[i].content) {
|
|
formData.append("content", this.form.domains[i].content);
|
|
formData.append("content", this.form.domains[i].content);
|
|
|
|
+ } else {
|
|
|
|
+ formData.append("content", '-');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- }
|
|
|
|
- var valjdk = ''
|
|
|
|
- for (var key of formData.keys()) {undefined
|
|
|
|
- console.log(key + "-------" + formData.get(key));
|
|
|
|
- valjdk = valjdk + key + "-------" + formData.get(key) + ' '
|
|
|
|
|
|
+
|
|
|
|
+ //审核人
|
|
|
|
+ if (this.form.domains[i].projectAuditorId) {
|
|
|
|
+ formData.append("projectAuditorId", this.form.domains[i].projectAuditorId);
|
|
|
|
+ } else {
|
|
|
|
+ this.$toast.fail("请指定["+this.form.domains[i].projectName+']项目的审核人');
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
|
|
- alert(valjdk)
|
|
|
|
- // return
|
|
|
|
|
|
+
|
|
this.$axios.post("/report/editReport", formData)
|
|
this.$axios.post("/report/editReport", formData)
|
|
.then(res => {
|
|
.then(res => {
|
|
if(res.code == "ok") {
|
|
if(res.code == "ok") {
|
|
toast.clear();
|
|
toast.clear();
|
|
this.$toast.success(this.isDraft==0?'提交成功':'暂存成功');
|
|
this.$toast.success(this.isDraft==0?'提交成功':'暂存成功');
|
|
- if (this.isDraft==0) {
|
|
|
|
- // this.$router.push("/index");
|
|
|
|
- }
|
|
|
|
|
|
+ this.$router.push("/index");
|
|
} else {
|
|
} else {
|
|
toast.clear();
|
|
toast.clear();
|
|
- this.$toast.fail((this.isDraft==0?'提交失败':'暂存成功')+':'+res.msg);
|
|
|
|
|
|
+ this.$toast.fail((this.isDraft==0?'提交失败':'暂存失败')+':'+res.msg);
|
|
}
|
|
}
|
|
}).catch(err=> {toast.clear();});
|
|
}).catch(err=> {toast.clear();});
|
|
},
|
|
},
|
|
@@ -1151,6 +1417,7 @@
|
|
} else if (ua.indexOf("micromessenger") > 0) {
|
|
} else if (ua.indexOf("micromessenger") > 0) {
|
|
this.isWX = true;
|
|
this.isWX = true;
|
|
}
|
|
}
|
|
|
|
+ this.getPeoject() // 获取项目
|
|
//获取传递过来的日期
|
|
//获取传递过来的日期
|
|
var passDate = this.$route.query.date;
|
|
var passDate = this.$route.query.date;
|
|
if (passDate != null) {
|
|
if (passDate != null) {
|
|
@@ -1266,8 +1533,19 @@
|
|
position: absolute;
|
|
position: absolute;
|
|
top: -8px;
|
|
top: -8px;
|
|
right: -6px;
|
|
right: -6px;
|
|
- z-index: 1;
|
|
|
|
|
|
+ z-index: 999;
|
|
}
|
|
}
|
|
|
|
+ .ryuan {
|
|
|
|
+ padding: 0 20px;
|
|
|
|
+ line-height: 40px;
|
|
|
|
+ height: 40px;
|
|
|
|
+ color: #333;
|
|
|
|
+ border-bottom: 2px solid #f6f6f6;
|
|
|
|
+ width: 100%;
|
|
|
|
+ overflow: hidden;
|
|
|
|
+ text-overflow:ellipsis;
|
|
|
|
+ white-space: nowrap;
|
|
|
|
+ }
|
|
</style>
|
|
</style>
|
|
|
|
|
|
|
|
|