|
@@ -11,23 +11,31 @@
|
|
|
<dept-user-tree ref="dut" :userList="userList" :multiple="true"
|
|
<dept-user-tree ref="dut" :userList="userList" :multiple="true"
|
|
|
@selected="(val)=>queryParams.executors=val"></dept-user-tree>
|
|
@selected="(val)=>queryParams.executors=val"></dept-user-tree>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item prop="rangeDate">
|
|
|
|
|
|
|
+ <el-form-item prop="startDate">
|
|
|
<el-date-picker
|
|
<el-date-picker
|
|
|
- v-model="queryParams.rangeDate"
|
|
|
|
|
- type="daterange"
|
|
|
|
|
|
|
+ v-model="queryParams.startDate"
|
|
|
|
|
+ type="date"
|
|
|
value-format="yyyy-MM-dd"
|
|
value-format="yyyy-MM-dd"
|
|
|
- range-separator="至"
|
|
|
|
|
- start-placeholder="开始日期"
|
|
|
|
|
- end-placeholder="结束日期"
|
|
|
|
|
|
|
+ placeholder="开始日期"
|
|
|
clearable
|
|
clearable
|
|
|
- style="width: 220px">
|
|
|
|
|
|
|
+ style="width: 128px">
|
|
|
|
|
+ </el-date-picker>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item prop="endDate">
|
|
|
|
|
+ <el-date-picker
|
|
|
|
|
+ v-model="queryParams.endDate"
|
|
|
|
|
+ type="date"
|
|
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
|
|
+ placeholder="结束日期"
|
|
|
|
|
+ clearable
|
|
|
|
|
+ style="width: 128px">
|
|
|
</el-date-picker>
|
|
</el-date-picker>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item prop="status">
|
|
<el-form-item prop="status">
|
|
|
<el-select
|
|
<el-select
|
|
|
v-model="queryParams.status"
|
|
v-model="queryParams.status"
|
|
|
placeholder="任务状态"
|
|
placeholder="任务状态"
|
|
|
- style="width: 100px">
|
|
|
|
|
|
|
+ style="width: 85px">
|
|
|
<el-option
|
|
<el-option
|
|
|
v-for="dict in dict.type.task_status"
|
|
v-for="dict in dict.type.task_status"
|
|
|
:key="dict.value"
|
|
:key="dict.value"
|
|
@@ -154,7 +162,8 @@
|
|
|
<el-row :gutter="20">
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
<el-form-item label="所属项目" prop="projectId" class="mini-treeselect">
|
|
<el-form-item label="所属项目" prop="projectId" class="mini-treeselect">
|
|
|
- <treeselect v-model="form.projectId" :options="projectOptions" :normalizer="normalizer"
|
|
|
|
|
|
|
+ <treeselect v-model="form.projectId" :options="projectOptions"
|
|
|
|
|
+ :normalizer="normalizer"
|
|
|
placeholder="请选择"/>
|
|
placeholder="请选择"/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
@@ -167,21 +176,23 @@
|
|
|
</el-row>
|
|
</el-row>
|
|
|
<el-row :gutter="20">
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="起止时间" prop="rangeDate">
|
|
|
|
|
|
|
+ <el-form-item label="开始时间" prop="beginDate">
|
|
|
<el-date-picker
|
|
<el-date-picker
|
|
|
- v-model="form.rangeDate"
|
|
|
|
|
- type="daterange"
|
|
|
|
|
|
|
+ v-model="form.beginDate"
|
|
|
|
|
+ type="date"
|
|
|
value-format="yyyy-MM-dd"
|
|
value-format="yyyy-MM-dd"
|
|
|
- range-separator="至"
|
|
|
|
|
- start-placeholder="开始日期"
|
|
|
|
|
- end-placeholder="结束日期"
|
|
|
|
|
- style="width: 255px">
|
|
|
|
|
|
|
+ placeholder="开始日期">
|
|
|
</el-date-picker>
|
|
</el-date-picker>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="计划工时(小时)" prop="planHours">
|
|
|
|
|
- <el-input-number v-model="form.planHours" :min="1" :max="2000"></el-input-number>
|
|
|
|
|
|
|
+ <el-form-item label="结束时间" prop="endDate">
|
|
|
|
|
+ <el-date-picker
|
|
|
|
|
+ v-model="form.endDate"
|
|
|
|
|
+ type="date"
|
|
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
|
|
+ placeholder="开始日期">
|
|
|
|
|
+ </el-date-picker>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
@@ -205,12 +216,21 @@
|
|
|
<task-detail :detail-form="detailForm"></task-detail>
|
|
<task-detail :detail-form="detailForm"></task-detail>
|
|
|
<div v-if="detailTitle=='审核任务'" style="margin-top: 10px">
|
|
<div v-if="detailTitle=='审核任务'" style="margin-top: 10px">
|
|
|
<el-form ref="auditForm" :model="auditForm" :rules="auditRules" size="mini" label-width="100px">
|
|
<el-form ref="auditForm" :model="auditForm" :rules="auditRules" size="mini" label-width="100px">
|
|
|
- <el-form-item label="审核意见" prop="auditResult">
|
|
|
|
|
- <el-radio-group v-model="auditForm.auditResult">
|
|
|
|
|
- <el-radio label="1">确认完成</el-radio>
|
|
|
|
|
- <el-radio label="0">驳回</el-radio>
|
|
|
|
|
- </el-radio-group>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
|
|
+ <el-row>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="审核意见" prop="auditResult">
|
|
|
|
|
+ <el-radio-group v-model="auditForm.auditResult">
|
|
|
|
|
+ <el-radio label="1">确认完成</el-radio>
|
|
|
|
|
+ <el-radio label="0">驳回</el-radio>
|
|
|
|
|
+ </el-radio-group>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item v-if="auditForm.auditResult==='0'" label="进度(%)" prop="value">
|
|
|
|
|
+ <el-input-number v-model="auditForm.value" :min="1" :max="99"></el-input-number>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ </el-row>
|
|
|
<el-form-item label="审核备注" prop="auditOpinion">
|
|
<el-form-item label="审核备注" prop="auditOpinion">
|
|
|
<el-input v-model="auditForm.auditOpinion" type="textarea"/>
|
|
<el-input v-model="auditForm.auditOpinion" type="textarea"/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -223,15 +243,18 @@
|
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
|
|
|
<!-- 分解任务对话框 -->
|
|
<!-- 分解任务对话框 -->
|
|
|
- <el-dialog title="分解任务" :visible.sync="splitOpen" :fullscreen="true" class="add-dialog" append-to-body>
|
|
|
|
|
|
|
+ <el-dialog title="分解任务" :visible.sync="splitOpen" width="90%" class="add-dialog" append-to-body>
|
|
|
<el-form ref="splitForm" class="split-form" size="mini">
|
|
<el-form ref="splitForm" class="split-form" size="mini">
|
|
|
<el-form-item label="任务名称:">
|
|
<el-form-item label="任务名称:">
|
|
|
<div>{{ splitForm.taskName }}</div>
|
|
<div>{{ splitForm.taskName }}</div>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="所属项目:">
|
|
<el-form-item label="所属项目:">
|
|
|
<span>{{ splitForm.projectName }}</span>
|
|
<span>{{ splitForm.projectName }}</span>
|
|
|
- <el-button type="primary" plain circle icon="el-icon-plus"
|
|
|
|
|
- style="float: right; padding: -1px 3px" @click="addChild"></el-button>
|
|
|
|
|
|
|
+ <div style="float: right; padding: -1px 3px">
|
|
|
|
|
+ <el-button type="primary" plain circle icon="el-icon-plus"
|
|
|
|
|
+ @click="addChild"></el-button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<div style="display: flex;justify-content: flex-start;flex-wrap:wrap">
|
|
<div style="display: flex;justify-content: flex-start;flex-wrap:wrap">
|
|
|
<el-card shadow="always" v-for="(child,index) in splitForm.children" :key="index" class="split-card">
|
|
<el-card shadow="always" v-for="(child,index) in splitForm.children" :key="index" class="split-card">
|
|
@@ -245,30 +268,34 @@
|
|
|
</div>
|
|
</div>
|
|
|
<el-form ref="splitChild" :model="child" :rules="rules" size="mini">
|
|
<el-form ref="splitChild" :model="child" :rules="rules" size="mini">
|
|
|
<el-form-item label="任务名称" prop="taskName" label-width="80px">
|
|
<el-form-item label="任务名称" prop="taskName" label-width="80px">
|
|
|
- <el-input v-model="child.taskName" style="width: 350px"/>
|
|
|
|
|
|
|
+ <el-input v-model="child.taskName"/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-row :gutter="20">
|
|
<el-row :gutter="20">
|
|
|
- <el-col :span="14">
|
|
|
|
|
- <el-form-item label="起止时间" prop="rangeDate" label-width="80px">
|
|
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="开始时间" prop="beginDate" label-width="80px">
|
|
|
<el-date-picker
|
|
<el-date-picker
|
|
|
- v-model="child.rangeDate"
|
|
|
|
|
- type="daterange"
|
|
|
|
|
|
|
+ v-model="child.beginDate"
|
|
|
|
|
+ type="date"
|
|
|
value-format="yyyy-MM-dd"
|
|
value-format="yyyy-MM-dd"
|
|
|
- style="width: 250px"
|
|
|
|
|
- range-separator="至"
|
|
|
|
|
- start-placeholder="开始日期"
|
|
|
|
|
- end-placeholder="结束日期">
|
|
|
|
|
|
|
+ style="width: 130px"
|
|
|
|
|
+ start-placeholder="开始日期">
|
|
|
</el-date-picker>
|
|
</el-date-picker>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
- <el-col :span="10">
|
|
|
|
|
- <el-form-item label="计划工时(小时)" prop="planHours" label-width="115px">
|
|
|
|
|
- <el-input-number v-model="child.planHours" :min="1" :max="2000"></el-input-number>
|
|
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="结束时间" prop="endDate">
|
|
|
|
|
+ <el-date-picker
|
|
|
|
|
+ v-model="child.endDate"
|
|
|
|
|
+ type="date"
|
|
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
|
|
+ style="width: 130px"
|
|
|
|
|
+ start-placeholder="结束日期">
|
|
|
|
|
+ </el-date-picker>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
<el-form-item label="执行人" prop="executor" label-width="80px">
|
|
<el-form-item label="执行人" prop="executor" label-width="80px">
|
|
|
- <dept-user-tree ref="dutSplit" :userList="userList" style="width: 350px"
|
|
|
|
|
|
|
+ <dept-user-tree ref="dutSplit" :userList="userList"
|
|
|
@selected="(val)=>selectExecutor(val,'splitForm',index)"/>
|
|
@selected="(val)=>selectExecutor(val,'splitForm',index)"/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="任务附件" label-width="80px">
|
|
<el-form-item label="任务附件" label-width="80px">
|
|
@@ -283,9 +310,9 @@
|
|
|
</el-card>
|
|
</el-card>
|
|
|
</div>
|
|
</div>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
- <div slot="footer" class="dialog-footer">
|
|
|
|
|
- <el-button type="primary" size="mini" @click="submitSplit">确 定</el-button>
|
|
|
|
|
- <el-button size="mini" @click="splitCancel">取 消</el-button>
|
|
|
|
|
|
|
+ <div v-if="splitForm.children&&splitForm.children.length>0" style=" position: fixed; bottom: 10px;left: 49%">
|
|
|
|
|
+ <el-button type="primary" size="mini" @click="submitSplit">保存</el-button>
|
|
|
|
|
+ <!-- <el-button size="mini" @click="splitCancel">取消</el-button>-->
|
|
|
</div>
|
|
</div>
|
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
|
|
@@ -364,7 +391,8 @@ export default {
|
|
|
pageSize: 10,
|
|
pageSize: 10,
|
|
|
executors: [],
|
|
executors: [],
|
|
|
projectId: undefined,
|
|
projectId: undefined,
|
|
|
- rangeDate: [],
|
|
|
|
|
|
|
+ startDate: undefined,
|
|
|
|
|
+ endDate: undefined,
|
|
|
status: '0'
|
|
status: '0'
|
|
|
},
|
|
},
|
|
|
// 表单参数
|
|
// 表单参数
|
|
@@ -383,8 +411,11 @@ export default {
|
|
|
projectId: [
|
|
projectId: [
|
|
|
{required: true, message: "所属项目不能为空", trigger: "blur"}
|
|
{required: true, message: "所属项目不能为空", trigger: "blur"}
|
|
|
],
|
|
],
|
|
|
- rangeDate: [
|
|
|
|
|
- {required: true, message: "起止时间不能为空", trigger: "change"}
|
|
|
|
|
|
|
+ beginDate: [
|
|
|
|
|
+ {required: true, message: "开始时间不能为空", trigger: "change"}
|
|
|
|
|
+ ],
|
|
|
|
|
+ endDate: [
|
|
|
|
|
+ {required: true, message: "结束时间不能为空", trigger: "change"}
|
|
|
],
|
|
],
|
|
|
planHours: [
|
|
planHours: [
|
|
|
{required: true, message: "计划工时不能为空", trigger: "blur"}
|
|
{required: true, message: "计划工时不能为空", trigger: "blur"}
|
|
@@ -396,6 +427,9 @@ export default {
|
|
|
auditRules: {
|
|
auditRules: {
|
|
|
auditResult: [
|
|
auditResult: [
|
|
|
{required: true, message: "审核意见不能为空", trigger: "change"}
|
|
{required: true, message: "审核意见不能为空", trigger: "change"}
|
|
|
|
|
+ ],
|
|
|
|
|
+ value: [
|
|
|
|
|
+ {required: true, message: "进度不能为空", trigger: "blur"}
|
|
|
]
|
|
]
|
|
|
},
|
|
},
|
|
|
confirmOpen: false,
|
|
confirmOpen: false,
|
|
@@ -414,12 +448,7 @@ export default {
|
|
|
},
|
|
},
|
|
|
/** 查询项目列表 */
|
|
/** 查询项目列表 */
|
|
|
getList() {
|
|
getList() {
|
|
|
- let data = _.cloneDeep(this.queryParams)
|
|
|
|
|
- if (data.rangeDate && data.rangeDate.length === 2) {
|
|
|
|
|
- data.startDate = data.rangeDate[0]
|
|
|
|
|
- data.endDate = data.rangeDate[1]
|
|
|
|
|
- }
|
|
|
|
|
- listTask(data).then(res => {
|
|
|
|
|
|
|
+ listTask(this.queryParams).then(res => {
|
|
|
this.taskList = res.data.records;
|
|
this.taskList = res.data.records;
|
|
|
this.total = res.data.total;
|
|
this.total = res.data.total;
|
|
|
}
|
|
}
|
|
@@ -596,6 +625,7 @@ export default {
|
|
|
this.auditForm = {
|
|
this.auditForm = {
|
|
|
taskId: row.id,
|
|
taskId: row.id,
|
|
|
auditResult: undefined,
|
|
auditResult: undefined,
|
|
|
|
|
+ value: undefined,
|
|
|
auditOpinion: undefined
|
|
auditOpinion: undefined
|
|
|
}
|
|
}
|
|
|
this.detailOpen = true;
|
|
this.detailOpen = true;
|
|
@@ -624,8 +654,6 @@ export default {
|
|
|
}
|
|
}
|
|
|
this.$refs["form"].validate(valid => {
|
|
this.$refs["form"].validate(valid => {
|
|
|
if (valid) {
|
|
if (valid) {
|
|
|
- this.form.beginDate = this.form.rangeDate[0]
|
|
|
|
|
- this.form.endDate = this.form.rangeDate[1]
|
|
|
|
|
if (this.form.files) {
|
|
if (this.form.files) {
|
|
|
let tempFiles = this.form.files.map(item => item.name);
|
|
let tempFiles = this.form.files.map(item => item.name);
|
|
|
this.form.fileUrl = JSON.stringify(tempFiles)
|
|
this.form.fileUrl = JSON.stringify(tempFiles)
|
|
@@ -825,7 +853,7 @@ export default {
|
|
|
|
|
|
|
|
.split-card {
|
|
.split-card {
|
|
|
width: 49%;
|
|
width: 49%;
|
|
|
- padding: 10px;
|
|
|
|
|
|
|
+ padding: 5px 10px;
|
|
|
margin: 5px;
|
|
margin: 5px;
|
|
|
}
|
|
}
|
|
|
|
|
|