|
@@ -98,7 +98,7 @@
|
|
|
type="text"
|
|
|
icon="el-icon-coordinate"
|
|
|
@click="handleAudit(scope.row)"
|
|
|
- :disabled="scope.row.progressValue!=100||(scope.row.status!='2'&&scope.row.status!='3')||scope.row.createBy!=userId"
|
|
|
+ :disabled="scope.row.progressValue!=100||(scope.row.status!='2'&&scope.row.status!='3')"
|
|
|
v-hasPermi="['task:task:audit']"
|
|
|
>审核
|
|
|
</el-button>
|
|
@@ -116,7 +116,7 @@
|
|
|
>终止
|
|
|
</el-dropdown-item>
|
|
|
<el-dropdown-item command="handleEdit" icon="el-icon-edit"
|
|
|
- v-if="userId===scope.row.createBy"
|
|
|
+ v-if="userId==='1'||userId===scope.row.createBy"
|
|
|
v-hasPermi="['task:task:edit']"
|
|
|
>修改
|
|
|
</el-dropdown-item>
|
|
@@ -147,33 +147,45 @@
|
|
|
|
|
|
|
|
|
<!-- 添加或修改任务配置对话框 -->
|
|
|
- <el-dialog :title="title" :visible.sync="open" width="680px" class="add-dialog" append-to-body @close="cancel">
|
|
|
- <el-form ref="form" :model="form" :rules="rules" size="mini" label-width="110px">
|
|
|
+ <el-dialog :title="title" :visible.sync="open" width="800px" class="add-dialog" append-to-body @close="cancel">
|
|
|
+ <el-form ref="form" :model="form" :rules="rules" size="mini" label-width="115px">
|
|
|
<el-form-item label="任务名称" prop="taskName">
|
|
|
<el-input v-model="form.taskName" placeholder="请输入任务名称"/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="所属项目" prop="projectId" class="mini-treeselect">
|
|
|
- <treeselect v-model="form.projectId" :options="projectOptions" :normalizer="normalizer"
|
|
|
- placeholder="请选择"/>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="起止时间" prop="rangeDate">
|
|
|
- <el-date-picker
|
|
|
- v-model="form.rangeDate"
|
|
|
- type="daterange"
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="开始日期"
|
|
|
- end-placeholder="结束日期"
|
|
|
- style="width: 340px">
|
|
|
- </el-date-picker>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="执行(负责)人" prop="executor">
|
|
|
- <dept-user-tree ref="dut2" :userList="userList"
|
|
|
- @selected="(val)=>selectExecutor(val,'form')"/>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="共同执行人" prop="coExecutor">
|
|
|
- <dept-user-tree ref="dut3" :userList="userList" :multiple="true" @selected="selectCoExecutor"/>
|
|
|
- </el-form-item>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="所属项目" prop="projectId" class="mini-treeselect">
|
|
|
+ <treeselect v-model="form.projectId" :options="projectOptions" :normalizer="normalizer"
|
|
|
+ placeholder="请选择"/>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="执行(负责)人" prop="executor">
|
|
|
+ <dept-user-tree ref="dut2" :userList="userList"
|
|
|
+ @selected="(val)=>selectExecutor(val,'form')"/>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="起止时间" prop="rangeDate">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="form.rangeDate"
|
|
|
+ type="daterange"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ style="width: 255px">
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <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>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
<el-form-item label="任务附件">
|
|
|
<file-upload :files="form.fileList" @getFileUrl="getFileUrl" @removeFile="removeFile"></file-upload>
|
|
|
</el-form-item>
|
|
@@ -222,7 +234,7 @@
|
|
|
<el-button type="text" icon="el-icon-circle-plus-outline"
|
|
|
style="float: right; padding: -1px 3px" @click="addChild"></el-button>
|
|
|
</el-form-item>
|
|
|
- <div style="display: flex;justify-content: flex-start">
|
|
|
+ <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">
|
|
|
<div slot="header" class="clearfix">
|
|
|
<div class="card-header">
|
|
@@ -231,29 +243,39 @@
|
|
|
style="float: right;color: red; padding: 3px 0"></el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <el-form ref="splitChild" :model="child" :rules="rules" size="mini" label-width="80px">
|
|
|
- <el-form-item label="任务名称" prop="taskName">
|
|
|
+ <el-form ref="splitChild" :model="child" :rules="rules" size="mini">
|
|
|
+ <el-form-item label="任务名称" prop="taskName" label-width="80px">
|
|
|
<el-input v-model="child.taskName" style="width: 350px"/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="执行人" prop="executor">
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="14">
|
|
|
+ <el-form-item label="起止时间" prop="rangeDate" label-width="80px">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="child.rangeDate"
|
|
|
+ type="daterange"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ style="width: 250px"
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期">
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ </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-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-form-item label="执行人" prop="executor" label-width="80px">
|
|
|
<dept-user-tree ref="dutSplit" :userList="userList" style="width: 350px"
|
|
|
@selected="(val)=>selectExecutor(val,'splitForm',index)"/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="起止时间" prop="rangeDate">
|
|
|
- <el-date-picker
|
|
|
- v-model="child.rangeDate"
|
|
|
- type="daterange"
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="开始日期"
|
|
|
- end-placeholder="结束日期">
|
|
|
- </el-date-picker>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="任务附件">
|
|
|
+ <el-form-item label="任务附件" label-width="80px">
|
|
|
<file-upload @getFileUrl="(val)=>getChildFileUrl(child,val)"
|
|
|
@removeFile="(val)=>removeChildFile(child,val)"></file-upload>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="任务描述" prop="description">
|
|
|
+ <el-form-item label="任务描述" prop="description" label-width="80px">
|
|
|
<rich-text-editor ref="crtEditor"
|
|
|
@getHtml="(val)=>child.description=val"></rich-text-editor>
|
|
|
</el-form-item>
|
|
@@ -365,6 +387,9 @@ export default {
|
|
|
rangeDate: [
|
|
|
{required: true, message: "起止时间不能为空", trigger: "change"}
|
|
|
],
|
|
|
+ planHours: [
|
|
|
+ {required: true, message: "计划工时不能为空", trigger: "blur"}
|
|
|
+ ],
|
|
|
executor: [
|
|
|
{required: true, message: "执行人不能为空", trigger: 'change'}
|
|
|
]
|
|
@@ -428,7 +453,6 @@ export default {
|
|
|
// 取消按钮
|
|
|
cancel() {
|
|
|
this.$refs.dut2.clearText()
|
|
|
- this.$refs.dut3.clearText()
|
|
|
this.$refs.rtEditor.clear()
|
|
|
this.reset()
|
|
|
this.open = false;
|
|
@@ -439,7 +463,7 @@ export default {
|
|
|
taskName: undefined,
|
|
|
projectId: undefined,
|
|
|
executor: undefined,
|
|
|
- coExecutor: undefined,
|
|
|
+ planHours: undefined,
|
|
|
rangeDate: [],
|
|
|
description: undefined
|
|
|
};
|
|
@@ -516,7 +540,6 @@ export default {
|
|
|
await Promise.all(arr)
|
|
|
this.$set(this.form, 'rangeDate', [row.beginDate, row.endDate])
|
|
|
this.$refs.dut2.setCheckedNode(this.form.executor)
|
|
|
- this.$refs.dut3.setCheckedNode(this.form.coExecutor)
|
|
|
},
|
|
|
selectExecutor(val, form, index) {
|
|
|
if (form === 'splitForm') {
|
|
@@ -527,9 +550,6 @@ export default {
|
|
|
this.$set(this.form, 'executor', val)
|
|
|
}
|
|
|
},
|
|
|
- selectCoExecutor(val) {
|
|
|
- this.form.coExecutor = val.join();
|
|
|
- },
|
|
|
getFileUrl(val) {
|
|
|
this.form['files'] = this.form.files || []
|
|
|
this.form.files.push(val)
|
|
@@ -645,7 +665,6 @@ export default {
|
|
|
this.splitOpen = false;
|
|
|
this.confirmOpen = false;
|
|
|
this.$refs.dut2.clearText()
|
|
|
- this.$refs.dut3.clearText()
|
|
|
let dutSplit = this.$refs.dutSplit || [];
|
|
|
for (let key in dutSplit) {
|
|
|
dutSplit[key].clearText()
|
|
@@ -726,7 +745,9 @@ export default {
|
|
|
let child = {
|
|
|
taskName: undefined,
|
|
|
executor: undefined,
|
|
|
- rangeDate: []
|
|
|
+ rangeDate: [],
|
|
|
+ planHours: undefined,
|
|
|
+ description: undefined
|
|
|
}
|
|
|
this.splitForm.children.push(child)
|
|
|
},
|
|
@@ -782,6 +803,7 @@ export default {
|
|
|
|
|
|
.split-card {
|
|
|
width: 49%;
|
|
|
+ padding: 10px;
|
|
|
margin: 5px;
|
|
|
}
|
|
|
|