|
|
@@ -14,14 +14,15 @@
|
|
|
style="margin-left: 20px"/>
|
|
|
</div>
|
|
|
<div class="head-container">
|
|
|
+ <div style="height:calc(100vh - 158px);overflow: auto">
|
|
|
<el-tree
|
|
|
:data="projectData"
|
|
|
:props="defaultProps"
|
|
|
:expand-on-click-node="false"
|
|
|
:filter-node-method="filterNode"
|
|
|
+ default-expand-all
|
|
|
ref="projectTree"
|
|
|
node-key="id"
|
|
|
- default-expand-all
|
|
|
highlight-current
|
|
|
@node-click="handleNodeClick">
|
|
|
<span class="custom-tree-node" slot-scope="{ node, data }">
|
|
|
@@ -29,8 +30,7 @@
|
|
|
<div v-if="data.type!='模块'" style="font-size: 12px;color: #1c84c6">({{ data.type }})</div>
|
|
|
<el-popover
|
|
|
placement="right"
|
|
|
- trigger="hover"
|
|
|
- >
|
|
|
+ trigger="hover">
|
|
|
<el-button size="mini" type="primary" @click="handleAdd(data)"
|
|
|
v-hasPermi="['task:project:add']">新增</el-button>
|
|
|
<el-button size="mini" @click="handleUpdate(data)" v-hasPermi="['task:project:edit']">修改</el-button>
|
|
|
@@ -43,6 +43,7 @@
|
|
|
</el-popover>
|
|
|
</span>
|
|
|
</el-tree>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
|
|
|
<!-- 添加或修改项目配置对话框 -->
|
|
|
@@ -55,13 +56,6 @@
|
|
|
<treeselect v-model="form.parentId" :options="projectOptions" :normalizer="normalizer"
|
|
|
@select="treeSelectChange" placeholder="请选择"/>
|
|
|
</el-form-item>
|
|
|
- <!-- <el-form-item label="类型" prop="type">-->
|
|
|
- <!-- <el-radio-group v-model="form.type" :disabled="typeDisable">-->
|
|
|
- <!-- <el-radio label="1">分类</el-radio>-->
|
|
|
- <!-- <el-radio label="2">项目</el-radio>-->
|
|
|
- <!-- <el-radio label="3">模块</el-radio>-->
|
|
|
- <!-- </el-radio-group>-->
|
|
|
- <!-- </el-form-item>-->
|
|
|
<el-form-item label="状态" prop="status">
|
|
|
<el-radio-group v-model="form.status">
|
|
|
<el-radio label="0">正常</el-radio>
|
|
|
@@ -120,7 +114,7 @@ export default {
|
|
|
},
|
|
|
// 表单参数
|
|
|
form: {},
|
|
|
- typeDisable: false,
|
|
|
+
|
|
|
// 表单校验
|
|
|
rules: {
|
|
|
projectName: [
|
|
|
@@ -177,7 +171,7 @@ export default {
|
|
|
status: "0",
|
|
|
viewable: undefined
|
|
|
};
|
|
|
- this.typeDisable = false
|
|
|
+
|
|
|
this.resetForm("form");
|
|
|
},
|
|
|
/** 转换项目数据结构 */
|
|
|
@@ -192,6 +186,10 @@ export default {
|
|
|
};
|
|
|
},
|
|
|
treeSelectChange(val) {
|
|
|
+ if (val.id === this.form.parentId) {
|
|
|
+ this.$message.error("上级结构不能自身节点")
|
|
|
+ return
|
|
|
+ }
|
|
|
if (val.type === '1') {
|
|
|
this.form.type = '2'
|
|
|
} else {
|
|
|
@@ -211,7 +209,7 @@ export default {
|
|
|
} else {
|
|
|
this.form.type = '1'
|
|
|
}
|
|
|
- this.typeDisable = true
|
|
|
+
|
|
|
|
|
|
this.open = true;
|
|
|
this.title = "添加项目";
|
|
|
@@ -229,18 +227,19 @@ export default {
|
|
|
async handleUpdate(row) {
|
|
|
this.reset();
|
|
|
let arr = []
|
|
|
- arr.push(listProject().then(response => {
|
|
|
- this.projectOptions = this.handleTree(response.data, "id");
|
|
|
- }))
|
|
|
-
|
|
|
+ if (row.parentId != '0') {
|
|
|
+ arr.push(listProject().then(response => {
|
|
|
+ this.projectOptions = this.handleTree(response.data, "id");
|
|
|
+ }))
|
|
|
+ }
|
|
|
arr.push(getDeptUserTree('1').then(res => {
|
|
|
this.userList = res.data
|
|
|
}))
|
|
|
arr.push(getProject(row.id).then(res => {
|
|
|
this.form = res.data;
|
|
|
+ this.form.id = this.form.id
|
|
|
this.open = true;
|
|
|
this.title = "修改项目";
|
|
|
- this.typeDisable = true
|
|
|
}))
|
|
|
await Promise.all(arr)
|
|
|
this.$refs.dut.setCheckedNode(this.form.viewable)
|
|
|
@@ -251,6 +250,10 @@ export default {
|
|
|
this.$refs["form"].validate(valid => {
|
|
|
if (valid) {
|
|
|
if (this.form.id != undefined) {
|
|
|
+ if (this.form.id === this.form.parentId) {
|
|
|
+ this.$message.error("上级结构不能自身节点")
|
|
|
+ return
|
|
|
+ }
|
|
|
updateProject(this.form).then(res => {
|
|
|
this.$message.success("修改成功");
|
|
|
this.open = false;
|