From 102f2220365de7cd04d7cd07d8ff8ef03ca2c460 Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期三, 19 二月 2025 08:49:38 +0800 Subject: [PATCH] 修改跳转和双向绑定 --- src/views/system/dept/index.vue | 105 +++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 86 insertions(+), 19 deletions(-) diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue index e502b4e..46d38d1 100644 --- a/src/views/system/dept/index.vue +++ b/src/views/system/dept/index.vue @@ -1,16 +1,16 @@ <template> <div class="app-container"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"> - <el-form-item label="部门名称" prop="deptName"> + <el-form-item label="组织架构名称" prop="deptName"> <el-input v-model="queryParams.deptName" - placeholder="请输入部门名称" + placeholder="请输入组织架构名称" clearable @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="状态" prop="status"> - <el-select v-model="queryParams.status" placeholder="部门状态" clearable> + <el-select v-model="queryParams.status" placeholder="组织架构状态" clearable> <el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" @@ -56,9 +56,9 @@ :default-expand-all="isExpandAll" :tree-props="{children: 'children', hasChildren: 'hasChildren'}" > - <el-table-column prop="deptName" label="部门名称" width="260"></el-table-column> + <el-table-column prop="deptName" label="组织架构名称"></el-table-column> <el-table-column prop="orderNum" label="排序" width="200"></el-table-column> - <el-table-column prop="status" label="状态" width="100"> + <el-table-column prop="status" label="状态" width="200"> <template slot-scope="scope"> <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/> </template> @@ -68,7 +68,7 @@ <span>{{ parseTime(scope.row.createTime) }}</span> </template> </el-table-column> - <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> + <el-table-column label="操作" align="center" class-name="small-padding" width="200"> <template slot-scope="scope"> <el-button size="mini" @@ -88,6 +88,7 @@ v-if="scope.row.parentId != 0" size="mini" type="text" + style="color: #f56c6c" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:dept:remove']" @@ -97,19 +98,19 @@ </el-table> <!-- 添加或修改部门对话框 --> - <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body> - <el-form ref="form" :model="form" :rules="rules" label-width="80px"> + <el-dialog :title="title" :visible.sync="open" width="650px" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-row> <el-col :span="24" v-if="form.parentId !== 0"> - <el-form-item label="上级部门" prop="parentId"> - <treeselect v-model="form.parentId" :options="deptOptions" :normalizer="normalizer" placeholder="选择上级部门" /> + <el-form-item label="上级组织架构" prop="parentId"> + <treeselect v-model="form.parentId" :options="deptOptions" :normalizer="normalizer" placeholder="选择上级组织架构" @input="getDistrict"/> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> - <el-form-item label="部门名称" prop="deptName"> - <el-input v-model="form.deptName" placeholder="请输入部门名称" /> + <el-form-item label="组织架构名称" prop="deptName"> + <el-input v-model="form.deptName" placeholder="请输入组织架构名称" /> </el-form-item> </el-col> <el-col :span="12"> @@ -132,12 +133,26 @@ </el-row> <el-row> <el-col :span="12"> + <el-form-item label="所辖行政区划" prop="districtCode"> + <el-select v-model="form.districtCode" placeholder="请选择" style="width: 100%;" :disabled="disableChange"> + <el-option + v-for="item in areaList" + :key="item.id" + :label="item.name" + :value="item.code"> + </el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> <el-form-item label="邮箱" prop="email"> <el-input v-model="form.email" placeholder="请输入邮箱" maxlength="50" /> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="部门状态"> + <el-form-item label="组织架构状态"> <el-radio-group v-model="form.status"> <el-radio v-for="dict in dict.type.sys_normal_disable" @@ -161,6 +176,7 @@ import { listDept, getDept, delDept, addDept, updateDept, listDeptExcludeChild } from "@/api/system/dept"; import Treeselect from "@riophae/vue-treeselect"; import "@riophae/vue-treeselect/dist/vue-treeselect.css"; +import {getAreaList} from "@/api/coalMine/placeManage/train"; export default { name: "Dept", @@ -174,6 +190,7 @@ showSearch: true, // 表格树数据 deptList: [], + areaList: [], // 部门树选项 deptOptions: [], // 弹出层标题 @@ -191,17 +208,19 @@ }, // 表单参数 form: {}, + disableChange: false, // 表单校验 rules: { parentId: [ - { required: true, message: "上级部门不能为空", trigger: "blur" } + { required: true, message: "上级组织架构不能为空", trigger: "blur" } ], deptName: [ - { required: true, message: "部门名称不能为空", trigger: "blur" } + { required: true, message: "组织架构名称不能为空", trigger: "blur" } ], orderNum: [ { required: true, message: "显示排序不能为空", trigger: "blur" } ], + districtCode: [{ required: true, message: "所属地区不能为空", trigger: "blur" }], email: [ { type: "email", @@ -221,6 +240,7 @@ }, created() { this.getList(); + this.getArea() }, methods: { /** 查询部门列表 */ @@ -231,6 +251,14 @@ this.loading = false; }); }, + + async getArea() { + const res = await getAreaList(); + if(res.code == 200) { + this.areaList = res.data; + } + }, + /** 转换部门数据结构 */ normalizer(node) { if (node.children && !node.children.length) { @@ -257,7 +285,8 @@ leader: undefined, phone: undefined, email: undefined, - status: "0" + status: "0", + districtCode: undefined }; this.resetForm("form"); }, @@ -272,15 +301,29 @@ }, /** 新增按钮操作 */ handleAdd(row) { + console.log(row,'新增row') this.reset(); + if(row.deptId || row.districtCode){ + if(row.districtCode && row.districtCode !== '65'){ + this.form.districtCode = row.districtCode + this.disableChange = true + }else{ + this.disableChange = false + } + }else{ + this.disableChange = false + } if (row != undefined) { this.form.parentId = row.deptId; } this.open = true; - this.title = "添加部门"; + this.title = "添加组织架构"; listDept().then(response => { this.deptOptions = this.handleTree(response.data, "deptId"); - }); + }) + }, + changeDistrict(val){ + console.log(val,'val') }, /** 展开/折叠操作 */ toggleExpandAll() { @@ -295,8 +338,9 @@ this.reset(); getDept(row.deptId).then(response => { this.form = response.data; + console.log(this.form,'form') this.open = true; - this.title = "修改部门"; + this.title = "修改组织架构"; listDeptExcludeChild(row.deptId).then(response => { this.deptOptions = this.handleTree(response.data, "deptId"); if (this.deptOptions.length == 0) { @@ -334,6 +378,29 @@ this.getList(); this.$modal.msgSuccess("删除成功"); }).catch(() => {}); + }, + getDistrict(val){ + const t = this + t.form.districtCode = t.findCodeById(t.deptOptions,val) + if(t.form.districtCode == '65'){ + t.disableChange = false + }else{ + t.disableChange = true + } + }, + findCodeById(data,id){ + for(let node of data){ + if(node.deptId == id){ + return node.districtCode + } + if(node.children){ + const findNode = this.findCodeById(node.children,id) + if(findNode){ + return findNode + } + } + } + return null } } }; -- Gitblit v1.9.2