From 74f52677be7718d63eef89e01c367058a2e43e57 Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期一, 10 八月 2020 10:12:39 +0800 Subject: [PATCH] 表格右侧工具栏组件 --- ruoyi-ui/src/views/system/dept/index.vue | 77 ++++++++++++++++++++++---------------- 1 files changed, 45 insertions(+), 32 deletions(-) diff --git a/ruoyi-ui/src/views/system/dept/index.vue b/ruoyi-ui/src/views/system/dept/index.vue index 735c3b9..ae2aaaa 100644 --- a/ruoyi-ui/src/views/system/dept/index.vue +++ b/ruoyi-ui/src/views/system/dept/index.vue @@ -1,7 +1,7 @@ <template> <div class="app-container"> - <el-form :inline="true"> - <el-form-item label="閮ㄩ棬鍚嶇О"> + <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch"> + <el-form-item label="閮ㄩ棬鍚嶇О" prop="deptName"> <el-input v-model="queryParams.deptName" placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�" @@ -10,7 +10,7 @@ @keyup.enter.native="handleQuery" /> </el-form-item> - <el-form-item label="鐘舵��"> + <el-form-item label="鐘舵��" prop="status"> <el-select v-model="queryParams.status" placeholder="閮ㄩ棬鐘舵��" clearable size="small"> <el-option v-for="dict in statusOptions" @@ -21,23 +21,23 @@ </el-select> </el-form-item> <el-form-item> + <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button> + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-form> + + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> <el-button - class="filter-item" - type="primary" - icon="el-icon-search" - size="mini" - @click="handleQuery" - >鎼滅储</el-button> - <el-button - class="filter-item" type="primary" icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:dept:add']" >鏂板</el-button> - </el-form-item> - </el-form> + </el-col> + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> + </el-row> <el-table v-loading="loading" @@ -46,7 +46,7 @@ default-expand-all :tree-props="{children: 'children', hasChildren: 'hasChildren'}" > - <el-table-column prop="deptName" label="閮ㄩ棬鍚嶇О" width="200"></el-table-column> + <el-table-column prop="deptName" label="閮ㄩ棬鍚嶇О" width="260"></el-table-column> <el-table-column prop="orderNum" label="鎺掑簭" width="200"></el-table-column> <el-table-column prop="status" label="鐘舵��" :formatter="statusFormat" width="100"></el-table-column> <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="200"> @@ -83,12 +83,12 @@ </el-table> <!-- 娣诲姞鎴栦慨鏀归儴闂ㄥ璇濇 --> - <el-dialog :title="title" :visible.sync="open" width="600px"> + <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body> <el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-row> <el-col :span="24" v-if="form.parentId !== 0"> <el-form-item label="涓婄骇閮ㄩ棬" prop="parentId"> - <treeselect v-model="form.parentId" :options="deptOptions" placeholder="閫夋嫨涓婄骇閮ㄩ棬" /> + <treeselect v-model="form.parentId" :options="deptOptions" :normalizer="normalizer" placeholder="閫夋嫨涓婄骇閮ㄩ棬" /> </el-form-item> </el-col> <el-col :span="12"> @@ -138,20 +138,23 @@ </template> <script> -import { listDept, getDept, treeselect, delDept, addDept, updateDept } from "@/api/system/dept"; +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"; export default { + name: "Dept", components: { Treeselect }, data() { return { // 閬僵灞� loading: true, + // 鏄剧ず鎼滅储鏉′欢 + showSearch: true, // 琛ㄦ牸鏍戞暟鎹� deptList: [], - // 閮ㄩ棬閮ㄩ棬鏍戦�夐」 - deptOptions: undefined, + // 閮ㄩ棬鏍戦�夐」 + deptOptions: [], // 寮瑰嚭灞傛爣棰� title: "", // 鏄惁鏄剧ず寮瑰嚭灞� @@ -204,15 +207,20 @@ getList() { this.loading = true; listDept(this.queryParams).then(response => { - this.deptList = response.data; + this.deptList = this.handleTree(response.data, "deptId"); this.loading = false; }); }, - /** 鏌ヨ閮ㄩ棬涓嬫媺鏍戠粨鏋� */ - getTreeselect() { - treeselect().then(response => { - this.deptOptions = response.data; - }); + /** 杞崲閮ㄩ棬鏁版嵁缁撴瀯 */ + normalizer(node) { + if (node.children && !node.children.length) { + delete node.children; + } + return { + id: node.deptId, + label: node.deptName, + children: node.children + }; }, // 瀛楀吀鐘舵�佸瓧鍏哥炕璇� statusFormat(row, column) { @@ -227,7 +235,7 @@ reset() { this.form = { deptId: undefined, - parentId: 100, + parentId: undefined, deptName: undefined, orderNum: undefined, leader: undefined, @@ -241,24 +249,33 @@ handleQuery() { this.getList(); }, + /** 閲嶇疆鎸夐挳鎿嶄綔 */ + resetQuery() { + this.resetForm("queryForm"); + this.handleQuery(); + }, /** 鏂板鎸夐挳鎿嶄綔 */ handleAdd(row) { this.reset(); - this.getTreeselect(); if (row != undefined) { this.form.parentId = row.deptId; } this.open = true; this.title = "娣诲姞閮ㄩ棬"; + listDept().then(response => { + this.deptOptions = this.handleTree(response.data, "deptId"); + }); }, /** 淇敼鎸夐挳鎿嶄綔 */ handleUpdate(row) { this.reset(); - this.getTreeselect(); getDept(row.deptId).then(response => { this.form = response.data; this.open = true; this.title = "淇敼閮ㄩ棬"; + }); + listDeptExcludeChild(row.deptId).then(response => { + this.deptOptions = this.handleTree(response.data, "deptId"); }); }, /** 鎻愪氦鎸夐挳 */ @@ -271,8 +288,6 @@ this.msgSuccess("淇敼鎴愬姛"); this.open = false; this.getList(); - } else { - this.msgError(response.msg); } }); } else { @@ -281,8 +296,6 @@ this.msgSuccess("鏂板鎴愬姛"); this.open = false; this.getList(); - } else { - this.msgError(response.msg); } }); } -- Gitblit v1.9.3