Browse Source

:zap: 优化字典显示,用户管理增加左树右表

smallchill 6 years ago
parent
commit
6588d5953d

+ 4 - 2
src/api/system/user.js

@@ -1,16 +1,18 @@
 import request from '@/router/axios';
 
-export const getList = (current, size, params) => {
+export const getList = (current, size, params, deptId) => {
   return request({
-    url: '/api/blade-user/list',
+    url: '/api/blade-user/page',
     method: 'get',
     params: {
       ...params,
       current,
       size,
+      deptId,
     }
   })
 }
+
 export const remove = (ids) => {
   return request({
     url: '/api/blade-user/remove',

+ 1 - 0
src/const/system/dict.js

@@ -44,6 +44,7 @@ export const optionParent = {
       type: "number",
       align: "right",
       width: 80,
+      hide: true,
       rules: [
         {
           required: true,

+ 1 - 0
src/const/system/dictbiz.js

@@ -44,6 +44,7 @@ export const optionParent = {
       type: "number",
       align: "right",
       width: 80,
+      hide: true,
       rules: [
         {
           required: true,

+ 1 - 1
src/const/user/info.js

@@ -13,7 +13,7 @@ export default {
           url: 'link',
         },
         canvasOption: {
-          text: '',
+          text: ' ',
           ratio: 0.1
         },
         action: '/api/blade-resource/oss/endpoint/put-file',

+ 95 - 97
src/views/system/dict.vue

@@ -1,101 +1,99 @@
 <template>
-  <div>
-    <el-row>
-      <el-col :span="11">
-        <basic-container>
-          <el-card class="box-card">
-            <div slot="header" class="clearfix">
-              <span>字典列表</span>
-            </div>
-            <div class="clearfix">
-              <avue-crud
-                :option="optionParent"
-                :table-loading="loading"
-                :data="dataParent"
-                :page="pageParent"
-                ref="crud"
-                v-model="formParent"
-                :permission="permissionList"
-                :before-open="beforeOpen"
-                @row-del="rowDel"
-                @row-update="rowUpdate"
-                @row-save="rowSave"
-                @row-click="handleRowClick"
-                @search-change="searchChange"
-                @search-reset="searchReset"
-                @selection-change="selectionChange"
-                @current-change="currentChange"
-                @size-change="sizeChange"
-                @refresh-change="refreshChange"
-                @on-load="onLoadParent"
-              >
-                <template slot="menuLeft">
-                  <el-button
-                    type="danger"
-                    size="small"
-                    icon="el-icon-delete"
-                    v-if="permission.dict_delete"
-                    plain
-                    @click="handleDelete"
-                  >删 除
-                  </el-button>
-                </template>
-                <template slot-scope="{row}" slot="isSealed">
-                  <el-tag>{{row.isSealed===0?'否':'是'}}</el-tag>
-                </template>
-              </avue-crud>
-            </div>
-          </el-card>
-        </basic-container>
-      </el-col>
-      <el-col :span="13">
-        <basic-container>
-          <el-card class="box-card">
-            <div slot="header" class="clearfix">
-              <span>[{{dictValue}}] 字典详情</span>
-            </div>
-            <div class="clearfix">
-              <avue-crud
-                :option="optionChild"
-                :table-loading="loading"
-                :data="dataChild"
-                :page="pageChild"
-                ref="crudChild"
-                v-model="formChild"
-                :permission="permissionList"
-                :before-open="beforeOpenChild"
-                @row-del="rowDelChild"
-                @row-update="rowUpdateChild"
-                @row-save="rowSaveChild"
-                @search-change="searchChangeChild"
-                @search-reset="searchResetChild"
-                @selection-change="selectionChangeChild"
-                @current-change="currentChangeChild"
-                @size-change="sizeChangeChild"
-                @refresh-change="refreshChangeChild"
-                @on-load="onLoadChild"
-              >
-                <template slot="menuLeft">
-                  <el-button
-                    type="danger"
-                    size="small"
-                    icon="el-icon-delete"
-                    v-if="permission.dict_delete"
-                    plain
-                    @click="handleDelete"
-                  >删 除
-                  </el-button>
-                </template>
-                <template slot-scope="{row}" slot="isSealed">
-                  <el-tag>{{row.isSealed===0?'否':'是'}}</el-tag>
-                </template>
-              </avue-crud>
-            </div>
-          </el-card>
-        </basic-container>
-      </el-col>
-    </el-row>
-  </div>
+  <el-row>
+    <el-col :span="11">
+      <basic-container>
+        <el-card class="box-card">
+          <div slot="header" class="clearfix">
+            <span>字典列表</span>
+          </div>
+          <div class="clearfix">
+            <avue-crud
+              :option="optionParent"
+              :table-loading="loading"
+              :data="dataParent"
+              :page="pageParent"
+              ref="crud"
+              v-model="formParent"
+              :permission="permissionList"
+              :before-open="beforeOpen"
+              @row-del="rowDel"
+              @row-update="rowUpdate"
+              @row-save="rowSave"
+              @row-click="handleRowClick"
+              @search-change="searchChange"
+              @search-reset="searchReset"
+              @selection-change="selectionChange"
+              @current-change="currentChange"
+              @size-change="sizeChange"
+              @refresh-change="refreshChange"
+              @on-load="onLoadParent"
+            >
+              <template slot="menuLeft">
+                <el-button
+                  type="danger"
+                  size="small"
+                  icon="el-icon-delete"
+                  v-if="permission.dict_delete"
+                  plain
+                  @click="handleDelete"
+                >删 除
+                </el-button>
+              </template>
+              <template slot-scope="{row}" slot="isSealed">
+                <el-tag>{{row.isSealed===0?'否':'是'}}</el-tag>
+              </template>
+            </avue-crud>
+          </div>
+        </el-card>
+      </basic-container>
+    </el-col>
+    <el-col :span="13">
+      <basic-container>
+        <el-card class="box-card">
+          <div slot="header" class="clearfix">
+            <span>[{{dictValue}}] 字典详情</span>
+          </div>
+          <div class="clearfix">
+            <avue-crud
+              :option="optionChild"
+              :table-loading="loading"
+              :data="dataChild"
+              :page="pageChild"
+              ref="crudChild"
+              v-model="formChild"
+              :permission="permissionList"
+              :before-open="beforeOpenChild"
+              @row-del="rowDelChild"
+              @row-update="rowUpdateChild"
+              @row-save="rowSaveChild"
+              @search-change="searchChangeChild"
+              @search-reset="searchResetChild"
+              @selection-change="selectionChangeChild"
+              @current-change="currentChangeChild"
+              @size-change="sizeChangeChild"
+              @refresh-change="refreshChangeChild"
+              @on-load="onLoadChild"
+            >
+              <template slot="menuLeft">
+                <el-button
+                  type="danger"
+                  size="small"
+                  icon="el-icon-delete"
+                  v-if="permission.dict_delete"
+                  plain
+                  @click="handleDelete"
+                >删 除
+                </el-button>
+              </template>
+              <template slot-scope="{row}" slot="isSealed">
+                <el-tag>{{row.isSealed===0?'否':'是'}}</el-tag>
+              </template>
+            </avue-crud>
+          </div>
+        </el-card>
+      </basic-container>
+    </el-col>
+  </el-row>
 </template>
 
 <script>

+ 95 - 97
src/views/system/dictbiz.vue

@@ -1,101 +1,99 @@
 <template>
-  <div>
-    <el-row>
-      <el-col :span="11">
-        <basic-container>
-          <el-card class="box-card">
-            <div slot="header" class="clearfix">
-              <span>业务字典列表</span>
-            </div>
-            <div class="clearfix">
-              <avue-crud
-                :option="optionParent"
-                :table-loading="loading"
-                :data="dataParent"
-                :page="pageParent"
-                ref="crud"
-                v-model="formParent"
-                :permission="permissionList"
-                :before-open="beforeOpen"
-                @row-del="rowDel"
-                @row-update="rowUpdate"
-                @row-save="rowSave"
-                @row-click="handleRowClick"
-                @search-change="searchChange"
-                @search-reset="searchReset"
-                @selection-change="selectionChange"
-                @current-change="currentChange"
-                @size-change="sizeChange"
-                @refresh-change="refreshChange"
-                @on-load="onLoadParent"
-              >
-                <template slot="menuLeft">
-                  <el-button
-                    type="danger"
-                    size="small"
-                    icon="el-icon-delete"
-                    v-if="permission.dict_delete"
-                    plain
-                    @click="handleDelete"
-                  >删 除
-                  </el-button>
-                </template>
-                <template slot-scope="{row}" slot="isSealed">
-                  <el-tag>{{row.isSealed===0?'否':'是'}}</el-tag>
-                </template>
-              </avue-crud>
-            </div>
-          </el-card>
-        </basic-container>
-      </el-col>
-      <el-col :span="13">
-        <basic-container>
-          <el-card class="box-card">
-            <div slot="header" class="clearfix">
-              <span>[{{dictValue}}] 业务字典详情</span>
-            </div>
-            <div class="clearfix">
-              <avue-crud
-                :option="optionChild"
-                :table-loading="loading"
-                :data="dataChild"
-                :page="pageChild"
-                ref="crudChild"
-                v-model="formChild"
-                :permission="permissionList"
-                :before-open="beforeOpenChild"
-                @row-del="rowDelChild"
-                @row-update="rowUpdateChild"
-                @row-save="rowSaveChild"
-                @search-change="searchChangeChild"
-                @search-reset="searchResetChild"
-                @selection-change="selectionChangeChild"
-                @current-change="currentChangeChild"
-                @size-change="sizeChangeChild"
-                @refresh-change="refreshChangeChild"
-                @on-load="onLoadChild"
-              >
-                <template slot="menuLeft">
-                  <el-button
-                    type="danger"
-                    size="small"
-                    icon="el-icon-delete"
-                    v-if="permission.dict_delete"
-                    plain
-                    @click="handleDelete"
-                  >删 除
-                  </el-button>
-                </template>
-                <template slot-scope="{row}" slot="isSealed">
-                  <el-tag>{{row.isSealed===0?'否':'是'}}</el-tag>
-                </template>
-              </avue-crud>
-            </div>
-          </el-card>
-        </basic-container>
-      </el-col>
-    </el-row>
-  </div>
+  <el-row>
+    <el-col :span="11">
+      <basic-container>
+        <el-card class="box-card">
+          <div slot="header" class="clearfix">
+            <span>业务字典列表</span>
+          </div>
+          <div class="clearfix">
+            <avue-crud
+              :option="optionParent"
+              :table-loading="loading"
+              :data="dataParent"
+              :page="pageParent"
+              ref="crud"
+              v-model="formParent"
+              :permission="permissionList"
+              :before-open="beforeOpen"
+              @row-del="rowDel"
+              @row-update="rowUpdate"
+              @row-save="rowSave"
+              @row-click="handleRowClick"
+              @search-change="searchChange"
+              @search-reset="searchReset"
+              @selection-change="selectionChange"
+              @current-change="currentChange"
+              @size-change="sizeChange"
+              @refresh-change="refreshChange"
+              @on-load="onLoadParent"
+            >
+              <template slot="menuLeft">
+                <el-button
+                  type="danger"
+                  size="small"
+                  icon="el-icon-delete"
+                  v-if="permission.dict_delete"
+                  plain
+                  @click="handleDelete"
+                >删 除
+                </el-button>
+              </template>
+              <template slot-scope="{row}" slot="isSealed">
+                <el-tag>{{row.isSealed===0?'否':'是'}}</el-tag>
+              </template>
+            </avue-crud>
+          </div>
+        </el-card>
+      </basic-container>
+    </el-col>
+    <el-col :span="13">
+      <basic-container>
+        <el-card class="box-card">
+          <div slot="header" class="clearfix">
+            <span>[{{dictValue}}] 业务字典详情</span>
+          </div>
+          <div class="clearfix">
+            <avue-crud
+              :option="optionChild"
+              :table-loading="loading"
+              :data="dataChild"
+              :page="pageChild"
+              ref="crudChild"
+              v-model="formChild"
+              :permission="permissionList"
+              :before-open="beforeOpenChild"
+              @row-del="rowDelChild"
+              @row-update="rowUpdateChild"
+              @row-save="rowSaveChild"
+              @search-change="searchChangeChild"
+              @search-reset="searchResetChild"
+              @selection-change="selectionChangeChild"
+              @current-change="currentChangeChild"
+              @size-change="sizeChangeChild"
+              @refresh-change="refreshChangeChild"
+              @on-load="onLoadChild"
+            >
+              <template slot="menuLeft">
+                <el-button
+                  type="danger"
+                  size="small"
+                  icon="el-icon-delete"
+                  v-if="permission.dict_delete"
+                  plain
+                  @click="handleDelete"
+                >删 除
+                </el-button>
+              </template>
+              <template slot-scope="{row}" slot="isSealed">
+                <el-tag>{{row.isSealed===0?'否':'是'}}</el-tag>
+              </template>
+            </avue-crud>
+          </div>
+        </el-card>
+      </basic-container>
+    </el-col>
+  </el-row>
 </template>
 
 <script>

+ 4 - 4
src/views/system/param.vue

@@ -47,8 +47,8 @@
           total: 0
         },
         option: {
-          height:'auto',
-          calcHeight:350,
+          height: 'auto',
+          calcHeight: 350,
           tip: false,
           border: true,
           index: true,
@@ -189,10 +189,10 @@
             this.$refs.crud.toggleSelection();
           });
       },
-      currentChange(currentPage){
+      currentChange(currentPage) {
         this.page.currentPage = currentPage;
       },
-      sizeChange(pageSize){
+      sizeChange(pageSize) {
         this.page.pageSize = pageSize;
       },
       refreshChange() {

+ 100 - 55
src/views/system/user.vue

@@ -1,49 +1,58 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option"
-               :table-loading="loading"
-               :data="data"
-               ref="crud"
-               v-model="form"
-               :permission="permissionList"
-               @row-del="rowDel"
-               @row-update="rowUpdate"
-               @row-save="rowSave"
-               :before-open="beforeOpen"
-               :page="page"
-               @search-change="searchChange"
-               @search-reset="searchReset"
-               @selection-change="selectionChange"
-               @current-change="currentChange"
-               @size-change="sizeChange"
-               @refresh-change="refreshChange"
-               @on-load="onLoad">
-      <template slot="menuLeft">
-        <el-button type="danger"
-                   size="small"
-                   icon="el-icon-delete"
-                   plain
-                   v-if="permission.user_delete"
-                   @click="handleDelete">删 除
-        </el-button>
-        <el-button type="primary"
-                   size="small"
-                   plain
-                   v-if="permission.user_reset"
-                   icon="el-icon-refresh"
-                   @click="handleReset">密码重置
-        </el-button>
-      </template>
-      <template slot-scope="{row}"
-                slot="roleId">
-        <el-tag>{{row.roleName}}</el-tag>
-      </template>
-      <template slot-scope="{row}"
-                slot="deptId">
-        <el-tag>{{row.deptName}}</el-tag>
-      </template>
-    </avue-crud>
-  </basic-container>
+  <el-row>
+    <el-col :span="5">
+      <basic-container>
+        <avue-tree :option="treeOption" :data="treeData" @node-click="nodeClick"/>
+      </basic-container>
+    </el-col>
+    <el-col :span="19">
+      <basic-container>
+        <avue-crud :option="option"
+                   :table-loading="loading"
+                   :data="data"
+                   ref="crud"
+                   v-model="form"
+                   :permission="permissionList"
+                   @row-del="rowDel"
+                   @row-update="rowUpdate"
+                   @row-save="rowSave"
+                   :before-open="beforeOpen"
+                   :page="page"
+                   @search-change="searchChange"
+                   @search-reset="searchReset"
+                   @selection-change="selectionChange"
+                   @current-change="currentChange"
+                   @size-change="sizeChange"
+                   @refresh-change="refreshChange"
+                   @on-load="onLoad">
+          <template slot="menuLeft">
+            <el-button type="danger"
+                       size="small"
+                       icon="el-icon-delete"
+                       plain
+                       v-if="permission.user_delete"
+                       @click="handleDelete">删 除
+            </el-button>
+            <el-button type="primary"
+                       size="small"
+                       plain
+                       v-if="permission.user_reset"
+                       icon="el-icon-refresh"
+                       @click="handleReset">密码重置
+            </el-button>
+          </template>
+          <template slot-scope="{row}"
+                    slot="roleId">
+            <el-tag>{{row.roleName}}</el-tag>
+          </template>
+          <template slot-scope="{row}"
+                    slot="deptId">
+            <el-tag>{{row.deptName}}</el-tag>
+          </template>
+        </avue-crud>
+      </basic-container>
+    </el-col>
+  </el-row>
 </template>
 
 <script>
@@ -92,6 +101,27 @@
           roleTree: [],
           deptTree: [],
         },
+        treeDeptId: '',
+        treeData: [],
+        treeOption: {
+          nodeKey: 'id',
+          addBtn: false,
+          menu: false,
+          size: 'small',
+          formOption: {
+            labelWidth: 100,
+            column: [{
+              label: '自定义项',
+              prop: 'test'
+            }],
+          },
+          props: {
+            labelText: '标题',
+            label: 'title',
+            value: 'value',
+            children: 'children'
+          }
+        },
         option: {
           height: 'auto',
           calcHeight: 350,
@@ -153,7 +183,7 @@
             {
               label: "用户昵称",
               prop: "name",
-              search: true,
+              hide: true,
               rules: [{
                 required: true,
                 message: "请输入用户昵称",
@@ -163,6 +193,7 @@
             {
               label: "用户姓名",
               prop: "realName",
+              search: true,
               rules: [{
                 required: true,
                 message: "请输入用户姓名",
@@ -287,7 +318,28 @@
         return ids.join(",");
       },
     },
+    created() {
+      this.initData();
+    },
     methods: {
+      nodeClick(data) {
+        this.treeDeptId = data.id;
+        this.page.currentPage = 1;
+        this.onLoad(this.page);
+      },
+      initData() {
+        getDeptTree().then(res => {
+          this.treeData = res.data.data;
+        });
+        getDeptTree(this.form.tenantId).then(res => {
+          const index = this.$refs.crud.findColumnIndex("deptId");
+          this.option.column[index].dicData = res.data.data;
+        });
+        getRoleTree(this.form.tenantId).then(res => {
+          const index = this.$refs.crud.findColumnIndex("roleId");
+          this.option.column[index].dicData = res.data.data;
+        });
+      },
       rowSave(row, loading, done) {
         row.deptId = row.deptId.join(",");
         row.roleId = row.roleId.join(",");
@@ -337,6 +389,7 @@
       },
       searchReset() {
         this.query = {};
+        this.treeDeptId = '';
         this.onLoad(this.page);
       },
       searchChange(params) {
@@ -421,21 +474,13 @@
       },
       onLoad(page, params = {}) {
         this.loading = true;
-        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query), this.treeDeptId).then(res => {
           const data = res.data.data;
           this.page.total = data.total;
           this.data = data.records;
           this.loading = false;
           this.selectionClear();
         });
-        getDeptTree(this.form.tenantId).then(res => {
-          const index = this.$refs.crud.findColumnIndex("deptId");
-          this.option.column[index].dicData = res.data.data;
-        });
-        getRoleTree(this.form.tenantId).then(res => {
-          const index = this.$refs.crud.findColumnIndex("roleId");
-          this.option.column[index].dicData = res.data.data;
-        });
       }
     }
   };