Browse Source

修改表格重置选中状态

Zt 2 years ago
parent
commit
a31da1b607

+ 91 - 41
chuanyi-admin/src/views/system/dept/dept-dist.vue

@@ -1,8 +1,21 @@
 <template>
   <!-- 新增成员 -->
-  <el-dialog title="新增成员" width="1000px" top="5vh" :visible.sync="dialogVisible" :close-on-click-modal="false" @close="close">
+  <el-dialog
+    title="新增成员"
+    width="1000px"
+    top="5vh"
+    :visible.sync="dialogVisible"
+    :close-on-click-modal="false"
+    @close="close"
+  >
     <!-- 搜索信息 -->
-    <el-form ref="queryForm" :model="queryParams" size="small" :inline="true" label-width="68px">
+    <el-form
+      ref="queryForm"
+      :model="queryParams"
+      size="small"
+      :inline="true"
+      label-width="68px"
+    >
       <el-form-item label="用户姓名" prop="userName">
         <el-input
           v-model="queryParams.userName"
@@ -13,8 +26,17 @@
         />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button
+          type="primary"
+          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>
 
@@ -41,13 +63,32 @@
       @selection-change="selectChange"
     >
       <el-table-column type="selection" reserve-selection align="center" />
-      <el-table-column label="成员姓名" prop="userName" show-overflow-tooltip align="center" />
-      <el-table-column label="成员状态" prop="state" show-overflow-tooltip align="center" />
+      <el-table-column
+        label="成员姓名"
+        prop="userName"
+        show-overflow-tooltip
+        align="center"
+      />
+      <el-table-column
+        label="成员状态"
+        prop="state"
+        show-overflow-tooltip
+        align="center"
+      />
       <el-table-column label="创建时间" prop="createTime" align="center" />
-      <el-table-column label="最后登录时间" prop="lastLoginTime" align="center" />
+      <el-table-column
+        label="最后登录时间"
+        prop="lastLoginTime"
+        align="center"
+      />
       <el-table-column label="操作" align="center">
         <template slot-scope="scope">
-          <el-button type="text" size="mini" :disabled="!multiple" @click="addUser(scope.row)">
+          <el-button
+            type="text"
+            size="mini"
+            :disabled="!multiple"
+            @click="addUser(scope.row)"
+          >
             <i class="el-icon-circle-plus-outline celBtn" /><span>新增</span></el-button>
         </template>
       </el-table-column>
@@ -106,13 +147,15 @@ export default {
     },
     /** 用户列表 */
     getUserList() {
-      getAllUserByNoDept(this.queryParams).then(res => {
+      getAllUserByNoDept(this.queryParams).then((res) => {
         if (res.code === 200) {
           const data = res.data
           this.tableData = data.userList
-          this.tableData.map(item => {
-            item.lastLoginTime === null ? item.lastLoginTime = '暂未登录' : item.lastLoginTime
-            item.state === 0 ? item.state = '正常' : item.state = '锁定'
+          this.tableData.map((item) => {
+            item.lastLoginTime === null
+              ? (item.lastLoginTime = '暂未登录')
+              : item.lastLoginTime
+            item.state === 0 ? (item.state = '正常') : (item.state = '锁定')
           })
           this.total = data.count
           this.loading = false
@@ -121,7 +164,7 @@ export default {
     },
     /** 表格多选 */
     selectChange(selection) {
-      this.addObj.userIds = selection.map(item => item.userId)
+      this.addObj.userIds = selection.map((item) => item.userId)
       this.multiple = !selection.length
     },
     /** 新增成员 */
@@ -132,15 +175,17 @@ export default {
         cancelButtonClass: 'btn_custom_cancel',
         closeOnClickModal: false,
         type: 'warning'
-      }).then(() => {
-        this.addObj.userIds.push(row.userId)
-        this.addUserByDept()
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: '已取消操作'
-        })
       })
+        .then(() => {
+          this.addObj.userIds.push(row.userId)
+          this.addUserByDept()
+        })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            message: '已取消操作'
+          })
+        })
     },
     /** 批量新增 */
     addUsers() {
@@ -150,34 +195,39 @@ export default {
         cancelButtonClass: 'btn_custom_cancel',
         closeOnClickModal: false,
         type: 'warning'
-      }).then(() => {
-        this.addUserByDept()
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: '已取消操作'
-        })
       })
+        .then(() => {
+          this.addUserByDept()
+        })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            message: '已取消操作'
+          })
+        })
     },
     /** 新增成员请求 */
     addUserByDept() {
-      addUserByDept(qs.stringify(this.addObj, { arrayFormat: 'repeat' })).then(res => {
-        if (res.code === 200) {
-          this.$message({
-            type: 'success',
-            message: '新增成功'
-          })
-          this.dialogVisible = false
-          this.$emit('update')
-        }
-      }).catch(() => {
-        this.addObj.userIds = []
-        this.$refs.table.clearSelection()
-      })
+      addUserByDept(qs.stringify(this.addObj, { arrayFormat: 'repeat' }))
+        .then((res) => {
+          if (res.code === 200) {
+            this.$message({
+              type: 'success',
+              message: '新增成功'
+            })
+            this.dialogVisible = false
+            this.$emit('update')
+          }
+        })
+        .catch(() => {
+          this.addObj.userIds = []
+          this.$refs.table.clearSelection()
+        })
     },
     /** 弹框关闭清空选择 */
     close() {
       this.$refs.table.clearSelection()
+      this.$refs.queryForm.resetFields()
     },
     /** 查询按钮 */
     handleQuery(event) {

+ 82 - 33
chuanyi-admin/src/views/system/dept/dept-personl.vue

@@ -2,7 +2,13 @@
   <div>
     <el-row :gutter="10" class="mb8 czBtns">
       <el-col :span="1.5">
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handelAdd">新增成员</el-button>
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handelAdd"
+        >新增成员</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -15,7 +21,13 @@
         >批量删除</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button type="warning" plain icon="el-icon-back" size="mini" @click="handleClose">返回</el-button>
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-back"
+          size="mini"
+          @click="handleClose"
+        >返回</el-button>
       </el-col>
     </el-row>
 
@@ -29,11 +41,35 @@
       header-row-class-name="headBackground"
       @selection-change="selectChange"
     >
-      <el-table-column type="selection" reserve-selection width="55" align="center" />
-      <el-table-column label="成员姓名" prop="userName" show-overflow-tooltip align="center" />
-      <el-table-column label="创建时间" prop="createTime" show-overflow-tooltip align="center" />
-      <el-table-column label="最后登录时间" prop="lastLoginTime" show-overflow-tooltip align="center" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column
+        type="selection"
+        reserve-selection
+        width="55"
+        align="center"
+      />
+      <el-table-column
+        label="成员姓名"
+        prop="userName"
+        show-overflow-tooltip
+        align="center"
+      />
+      <el-table-column
+        label="创建时间"
+        prop="createTime"
+        show-overflow-tooltip
+        align="center"
+      />
+      <el-table-column
+        label="最后登录时间"
+        prop="lastLoginTime"
+        show-overflow-tooltip
+        align="center"
+      />
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
         <template slot-scope="scope">
           <el-button
             type="text"
@@ -100,12 +136,14 @@ export default {
   methods: {
     /** 查看部门成员 */
     handelDetail() {
-      getPeopleById(this.queryParams).then(res => {
+      getPeopleById(this.queryParams).then((res) => {
         if (res.code === 200) {
           const data = res.data
           this.personalData = data.userList
-          this.personalData.map(item => {
-            item.lastLoginTime === null ? item.lastLoginTime = '暂未登录' : item.lastLoginTime
+          this.personalData.map((item) => {
+            item.lastLoginTime === null
+              ? (item.lastLoginTime = '暂未登录')
+              : item.lastLoginTime
           })
           this.total = data.count
           this.$refs.table && this.$refs.table.clearSelection()
@@ -124,7 +162,7 @@ export default {
     },
     /** 表格多选 */
     selectChange(selection) {
-      this.delObj.userIds = selection.map(item => item.userId)
+      this.delObj.userIds = selection.map((item) => item.userId)
       this.multiple = !selection.length
     },
     /** 删除成员 */
@@ -135,13 +173,15 @@ export default {
         cancelButtonClass: 'btn_custom_cancel',
         closeOnClickModal: false,
         type: 'warning'
-      }).then(() => {
-        this.delObj.userIds.push(row.userId)
-        if (this.personalData.length === 1 && this.queryParams.page > 1) {
-          this.queryParams.page -= 1
-        }
-        this.delUserByDept()
-      }).catch(() => { })
+      })
+        .then(() => {
+          this.delObj.userIds.push(row.userId)
+          if (this.personalData.length === 1 && this.queryParams.page > 1) {
+            this.queryParams.page -= 1
+          }
+          this.delUserByDept()
+        })
+        .catch(() => {})
     },
     /** 批量删除成员 */
     delUsers(event) {
@@ -151,25 +191,34 @@ export default {
         cancelButtonClass: 'btn_custom_cancel',
         closeOnClickModal: false,
         type: 'warning'
-      }).then(() => {
-        if (this.personalData.length === this.delObj.userIds.length && this.queryParams.page > 1) {
-          this.queryParams.page -= 1
-        }
-        this.delUserByDept()
-        this.$resetBtn(event)
-      }).catch(() => { })
+      })
+        .then(() => {
+          if (
+            this.personalData.length === this.delObj.userIds.length &&
+            this.queryParams.page > 1
+          ) {
+            this.queryParams.page -= 1
+          }
+          this.delUserByDept()
+          this.$resetBtn(event)
+        })
+        .catch(() => {
+          this.$refs.table.clearSelection()
+        })
     },
     /** 删除成员请求 */
     delUserByDept() {
-      delUserByDept(qs.stringify(this.delObj, { arrayFormat: 'repeat' })).then(res => {
-        if (res.code === 200) {
-          this.$message({
-            type: 'success',
-            message: '删除成功'
-          })
-          this.handelDetail()
+      delUserByDept(qs.stringify(this.delObj, { arrayFormat: 'repeat' })).then(
+        (res) => {
+          if (res.code === 200) {
+            this.$message({
+              type: 'success',
+              message: '删除成功'
+            })
+            this.handelDetail()
+          }
         }
-      })
+      )
     }
   }
 }

+ 181 - 73
chuanyi-admin/src/views/system/dept/index.vue

@@ -4,19 +4,43 @@
       <el-row>
         <el-col :span="24">
           <!-- 表单查询 -->
-          <el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
+          <el-form
+            ref="queryForm"
+            :model="queryParams"
+            :inline="true"
+            size="small"
+          >
             <el-form-item label="部门名称" prop="departmentName">
-              <el-input v-model="queryParams.departmentName" placeholder="请输入部门名称" clear />
+              <el-input
+                v-model="queryParams.departmentName"
+                placeholder="请输入部门名称"
+                clear
+              />
             </el-form-item>
             <el-form-item>
-              <el-button type="primary" icon="el-icon-search" size="mini" @click="handelSearch">搜索</el-button>
-              <el-button icon="el-icon-refresh" size="mini" @click="handelReset">重置</el-button>
+              <el-button
+                type="primary"
+                icon="el-icon-search"
+                size="mini"
+                @click="handelSearch"
+              >搜索</el-button>
+              <el-button
+                icon="el-icon-refresh"
+                size="mini"
+                @click="handelReset"
+              >重置</el-button>
             </el-form-item>
           </el-form>
 
           <el-row class="czBtns">
             <el-col>
-              <el-button size="mini" icon="el-icon-plus" type="primary" plain @click="handelAdd">新增</el-button>
+              <el-button
+                size="mini"
+                icon="el-icon-plus"
+                type="primary"
+                plain
+                @click="handelAdd"
+              >新增</el-button>
               <el-button
                 type="danger"
                 plain
@@ -40,16 +64,51 @@
             @selection-change="selectChange"
           >
             <el-table-column type="selection" align="center" />
-            <el-table-column label="部门名称" prop="departmentName" show-overflow-tooltip header-align="center" />
-            <el-table-column label="部门描述" prop="departmentDescribe" show-overflow-tooltip align="center" />
-            <el-table-column label="排序号" prop="departmentNum" show-overflow- align="center" />
-            <el-table-column label="更新时间" prop="updateTime" show-overflow-tooltip align="center" />
-            <el-table-column label="创建时间" prop="createTime" show-overflow-tooltip align="center" />
+            <el-table-column
+              label="部门名称"
+              prop="departmentName"
+              show-overflow-tooltip
+              header-align="center"
+            />
+            <el-table-column
+              label="部门描述"
+              prop="departmentDescribe"
+              show-overflow-tooltip
+              align="center"
+            />
+            <el-table-column
+              label="排序号"
+              prop="departmentNum"
+              show-overflow-
+              align="center"
+            />
+            <el-table-column
+              label="更新时间"
+              prop="updateTime"
+              show-overflow-tooltip
+              align="center"
+            />
+            <el-table-column
+              label="创建时间"
+              prop="createTime"
+              show-overflow-tooltip
+              align="center"
+            />
             <el-table-column label="操作" align="center">
               <template slot-scope="scope">
-                <el-button size="mini" type="text" icon="el-icon-edit" @click="handelEdit(scope.row.id)">修改
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-edit"
+                  @click="handelEdit(scope.row.id)"
+                >修改
                 </el-button>
-                <el-button size="mini" type="text" icon="el-icon-user" @click="handelDetail(scope.row.id)">查看部门成员
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-user"
+                  @click="handelDetail(scope.row.id)"
+                >查看部门成员
                 </el-button>
                 <el-button
                   size="mini"
@@ -76,26 +135,46 @@
       </el-row>
 
       <!-- 弹出框 -->
-      <el-dialog :title="title" :visible.sync="dialogVisible" width="600px" :close-on-click-modal="false">
+      <el-dialog
+        :title="title"
+        :visible.sync="dialogVisible"
+        width="600px"
+        :close-on-click-modal="false"
+      >
         <el-form ref="form" :model="form" :rules="rules" label-width="80px">
           <el-row>
             <el-col :span="24">
               <el-form-item label="上级部门" prop="parentId">
-                <selectTree :key="key" v-model="form.parentId" :options="options" placeholder="请选择上级部门" :key-name="keyName" />
+                <selectTree
+                  :key="key"
+                  v-model="form.parentId"
+                  :options="options"
+                  placeholder="请选择上级部门"
+                  :key-name="keyName"
+                />
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="24">
               <el-form-item label="部门名称" prop="departmentName">
-                <el-input v-model.trim="form.departmentName" maxlength="15" clearable placeholder="请输入部门名称" />
+                <el-input
+                  v-model.trim="form.departmentName"
+                  maxlength="15"
+                  clearable
+                  placeholder="请输入部门名称"
+                />
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="24">
               <el-form-item label="部门描述" prop="departmentDescribe">
-                <el-input v-model.trim="form.departmentDescribe" clearable placeholder="请输入部门描述" />
+                <el-input
+                  v-model.trim="form.departmentDescribe"
+                  clearable
+                  placeholder="请输入部门描述"
+                />
               </el-form-item>
             </el-col>
           </el-row>
@@ -114,7 +193,11 @@
           </el-row>
         </el-form>
         <span slot="footer" class="dialog-footer">
-          <el-button type="primary" size="mini" @click="handelSubmit('form')">确定</el-button>
+          <el-button
+            type="primary"
+            size="mini"
+            @click="handelSubmit('form')"
+          >确定</el-button>
           <el-button size="mini" @click="handelCancel('form')">取消</el-button>
         </span>
       </el-dialog>
@@ -124,7 +207,14 @@
 </template>
 
 <script>
-import { getDeptList, addDept, getDeptById, editDept, delDept, getAllSonMenuList } from '@/api/system/dept.js'
+import {
+  getDeptList,
+  addDept,
+  getDeptById,
+  editDept,
+  delDept,
+  getAllSonMenuList
+} from '@/api/system/dept.js'
 import selectTree from '@/components/SelectTree'
 import multiple from '@/views/system/mixins/multiple'
 export default {
@@ -137,7 +227,7 @@ export default {
       if (!value) {
         callback(new Error('排序号不能为空'))
       }
-      if (!(reg.test(value))) {
+      if (!reg.test(value)) {
         callback(new Error('只能输入正整数'))
       }
       callback()
@@ -198,10 +288,15 @@ export default {
   methods: {
     /** 获取表格数据 */
     getDeptList() {
-      getDeptList(this.queryParams).then(res => {
+      getDeptList(this.queryParams).then((res) => {
         if (res.code === 200) {
           const data = res.data
           this.mulData = data.departmentList
+          this.mulData.map((item) => {
+            item.updateTime === null
+              ? (item.updateTime = '暂未更新')
+              : item.updateTime
+          })
           this.total = data.count
           this.loading = false
           this.defaultExpand(this.mulData)
@@ -210,7 +305,7 @@ export default {
     },
     /** 默认收起所有行 */
     defaultExpand(data) {
-      data.forEach(item => {
+      data.forEach((item) => {
         this.$refs.table && this.$refs.table.toggleRowExpansion(item, false)
         if (item.children && item.children.length) {
           this.defaultExpand(item.children)
@@ -219,7 +314,7 @@ export default {
     },
     /** 获取上级部门 */
     getOptionsList() {
-      getAllSonMenuList().then(res => {
+      getAllSonMenuList().then((res) => {
         const data = res.data
         this.options = data
         this.keyName = 'departmentName'
@@ -247,7 +342,7 @@ export default {
     /** 修改按钮 */
     handelEdit(id) {
       this.id = id
-      getDeptById({ id }).then(res => {
+      getDeptById({ id }).then((res) => {
         this.form = res.data
       })
       this.dialogVisible = true
@@ -275,32 +370,35 @@ export default {
         cancelButtonClass: 'btn_custom_cancel',
         closeOnClickModal: false,
         type: 'warning'
-      }).then(() => {
-        if (row.children && row.children.length) {
-          this.$message({
-            type: 'warning',
-            message: '删除失败,请先删除下级部门'
-          })
-        } else {
-          if (this.mulData.length === 1 && this.queryParams.page > 1) {
-            this.queryParams.page -= 1
-          }
-          delDept([row.id]).then(res => {
-            if (res.code === 200) {
-              this.$message({
-                type: 'success',
-                message: '删除成功'
-              })
-              this.getDeptList()
+      })
+        .then(() => {
+          if (row.children && row.children.length) {
+            this.$message({
+              type: 'warning',
+              message: '删除失败,请先删除下级部门'
+            })
+            this.$refs.table.clearSelection()
+          } else {
+            if (this.mulData.length === 1 && this.queryParams.page > 1) {
+              this.queryParams.page -= 1
             }
+            delDept([row.id]).then((res) => {
+              if (res.code === 200) {
+                this.$message({
+                  type: 'success',
+                  message: '删除成功'
+                })
+                this.getDeptList()
+              }
+            })
+          }
+        })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            message: '已取消删除'
           })
-        }
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: '已取消删除'
         })
-      })
     },
     /** 批量删除 */
     handelDelAll(event) {
@@ -311,40 +409,51 @@ export default {
         cancelButtonClass: 'btn_custom_cancel',
         closeOnClickModal: false,
         type: 'warning'
-      }).then(() => {
-        if (this.depts.some(o => o.children && o.children.length)) {
-          this.$message({
-            type: 'warning',
-            message: '删除失败,请先删除下级部门'
-          })
-        } else {
-          const ids = this.depts.map(item => item.id)
-          if (ids.length === this.mulData.length && this.queryParams.page > 1) {
-            this.queryParams.page -= 1
-          }
-          delDept(ids).then(res => {
-            if (res.code === 200) {
-              this.$message({
-                type: 'success',
-                message: '删除成功'
-              })
-              this.getDeptList()
+      })
+        .then(() => {
+          if (this.depts.some((o) => o.children && o.children.length)) {
+            this.$message({
+              type: 'warning',
+              message: '删除失败,请先删除下级部门'
+            })
+            this.$refs.table.clearSelection()
+          } else {
+            const ids = this.depts.map((item) => item.id)
+            if (
+              ids.length === this.mulData.length &&
+              this.queryParams.page > 1
+            ) {
+              this.queryParams.page -= 1
             }
+            delDept(ids)
+              .then((res) => {
+                if (res.code === 200) {
+                  this.$message({
+                    type: 'success',
+                    message: '删除成功'
+                  })
+                  this.getDeptList()
+                }
+              })
+              .catch(() => {
+                this.$refs.table.clearSelection()
+              })
+          }
+        })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            message: '已取消删除'
           })
-        }
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: '已取消删除'
+          this.$refs.table.clearSelection()
         })
-      })
     },
     /** 表单提交 */
     handelSubmit(formName) {
       this.$refs[formName].validate((valid) => {
         if (valid) {
           if (this.title === '添加部门') {
-            addDept(this.form).then(res => {
+            addDept(this.form).then((res) => {
               if (res.code === 200) {
                 this.$message({
                   message: res.data,
@@ -363,7 +472,7 @@ export default {
               })
               return
             }
-            editDept(this.form).then(res => {
+            editDept(this.form).then((res) => {
               if (res.code === 200) {
                 this.$message({
                   message: res.data,
@@ -393,5 +502,4 @@ export default {
 </script>
 
 <style lang="scss" rel="stylesheet/scss" scoped>
-
 </style>

+ 12 - 0
chuanyi-admin/src/views/system/dict/dict-detail.vue

@@ -206,6 +206,16 @@ export default {
         const data = res.data
         this.mulData = data.dictPage
         this.total = data.count
+        this.defaultExpand(this.mulData)
+      })
+    },
+    /** 默认收起所有行 */
+    defaultExpand(data) {
+      data.forEach(item => {
+        this.$refs.table && this.$refs.table.toggleRowExpansion(item, false)
+        if (item.children && item.children.length) {
+          this.defaultExpand(item.children)
+        }
       })
     },
     /** 全量获取字典列表数据 */
@@ -299,6 +309,7 @@ export default {
             type: 'warning',
             message: '请先删除下级字典'
           })
+          this.$refs.table.clearSelection()
         } else {
           this.ids = this.ids.map(item => item.id)
           if (this.ids.length === this.mulData.length && this.queryParams.page > 1) {
@@ -311,6 +322,7 @@ export default {
           type: 'info',
           message: '已取消删除'
         })
+        this.$refs.table.clearSelection()
       })
     },
     /** 删除接口 */

+ 2 - 0
chuanyi-admin/src/views/system/dict/index.vue

@@ -285,6 +285,8 @@ export default {
           })
           this.getAllDictType()
         }
+      }).catch(() => {
+        this.$refs.dictTable.clearSelection()
       })
     },
     /** 表单提交 */

+ 6 - 6
chuanyi-admin/src/views/system/log/index.vue

@@ -56,13 +56,13 @@
         </el-row>
         <!-- 表格数据信息 -->
         <el-table v-loading="loading" :data="logList" border stripe header-row-class-name="headBackground">
-          <el-table-column width="50" align="center" label="序号">
+          <el-table-column width="100" align="center" label="序号">
             <template slot-scope="scope">
               {{ (queryParams.page - 1) * queryParams.limit + scope.$index + 1 }}
             </template>
           </el-table-column>
-          <el-table-column key="serverName" label="服务名称" align="center" prop="serverName" />
-          <el-table-column key="modelName" label="系统模块" align="center" prop="modelName" show-overflow-tooltip />
+          <el-table-column key="serverName" width="100" label="服务名称" align="center" prop="serverName" />
+          <el-table-column key="modelName" width="100" label="系统模块" align="center" prop="modelName" show-overflow-tooltip />
           <el-table-column key="content" label="操作内容" align="center" prop="content">
             <template slot-scope="scope">
               <div v-popover="scope.row.id" class="showOverflow">
@@ -78,11 +78,11 @@
               />
             </template>
           </el-table-column>
-          <el-table-column key="userId" label="操作人员" align="center" prop="userId" show-overflow-tooltip />
+          <el-table-column key="userId" width="120" label="操作人员" align="center" prop="userId" show-overflow-tooltip />
           <el-table-column key="methodName" label="方法名称" align="center" prop="methodName" />
-          <el-table-column key="ipAddress" label="操作地址" align="center" prop="ipAddress" />
+          <el-table-column key="ipAddress" width="200" label="操作地址" align="center" prop="ipAddress" />
           <el-table-column v-if="false" key="" label="操作地点" align="center" prop="" />
-          <el-table-column key="operationStatus" label="操作状态" align="center" prop="operationStatus">
+          <el-table-column key="operationStatus" width="120" label="操作状态" align="center" prop="operationStatus">
             <template slot-scope="scope">
               {{ scope.row.operationStatus === 1 ? '正常' : scope.row.operationStatus }}
             </template>

+ 174 - 56
chuanyi-admin/src/views/system/menu/index.vue

@@ -4,13 +4,31 @@
       <el-row>
         <el-col :span="24">
           <!-- 表单查询 -->
-          <el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
+          <el-form
+            ref="queryForm"
+            :model="queryParams"
+            :inline="true"
+            size="small"
+          >
             <el-form-item label="菜单名称" prop="menuName">
-              <el-input v-model="queryParams.menuName" placeholder="请输入菜单名称" clear />
+              <el-input
+                v-model="queryParams.menuName"
+                placeholder="请输入菜单名称"
+                clear
+              />
             </el-form-item>
             <el-form-item>
-              <el-button type="primary" icon="el-icon-search" size="mini" @click="handelSearch">搜索</el-button>
-              <el-button icon="el-icon-refresh" size="mini" @click="handelReset">重置</el-button>
+              <el-button
+                type="primary"
+                icon="el-icon-search"
+                size="mini"
+                @click="handelSearch"
+              >搜索</el-button>
+              <el-button
+                icon="el-icon-refresh"
+                size="mini"
+                @click="handelReset"
+              >重置</el-button>
             </el-form-item>
           </el-form>
 
@@ -19,7 +37,7 @@
             icon="el-icon-plus"
             type="primary"
             plain
-            style="margin-bottom:20px"
+            style="margin-bottom: 20px"
             @click="handelAdd"
           >新增</el-button>
 
@@ -33,13 +51,43 @@
             stripe
             header-row-class-name="headBackground"
           >
-            <el-table-column key="menuName" label="菜单名称" header-align="center" prop="menuName" show-overflow-tooltip />
-            <el-table-column key="menuIcon" label="菜单图标" prop="menuIcon" align="center" show-overflow-tooltip />
-            <el-table-column key="menuUrl" label="路由地址" prop="menuUrl" align="center" show-overflow-tooltip />
-            <el-table-column key="sortNum" label="排序号" prop="sortNum" align="center" show-overflow-tooltip />
-            <el-table-column key="hidden" label="显示状态" prop="hidden" align="center" show-overflow-tooltip>
+            <el-table-column
+              key="menuName"
+              label="菜单名称"
+              header-align="center"
+              prop="menuName"
+              show-overflow-tooltip
+            />
+            <el-table-column
+              key="menuIcon"
+              label="菜单图标"
+              prop="menuIcon"
+              align="center"
+              show-overflow-tooltip
+            />
+            <el-table-column
+              key="menuUrl"
+              label="路由地址"
+              prop="menuUrl"
+              align="center"
+              show-overflow-tooltip
+            />
+            <el-table-column
+              key="sortNum"
+              label="排序号"
+              prop="sortNum"
+              align="center"
+              show-overflow-tooltip
+            />
+            <el-table-column
+              key="hidden"
+              label="显示状态"
+              prop="hidden"
+              align="center"
+              show-overflow-tooltip
+            >
               <template slot-scope="scope">
-                {{ scope.row.hidden === 0 ? '显示' : '隐藏' }}
+                {{ scope.row.hidden === 0 ? "显示" : "隐藏" }}
               </template>
             </el-table-column>
             <!-- <el-table-column key="menuStatus" label="菜单状态" prop="menuStatus" align="center" show-overflow-tooltip>
@@ -64,16 +112,40 @@
               show-overflow-tooltip
             >
               <template slot-scope="scope">
-                {{ scope.row.updateTime === null ? scope.row.createTime : scope.row.updateTime }}
+                {{
+                  scope.row.updateTime === null
+                    ? (scope.row.updateTime = "暂未更新")
+                    : scope.row.updateTime
+                }}
               </template>
             </el-table-column>
-            <el-table-column label="操作" align="center" width="250" class-name="small-padding fixed-width">
+            <el-table-column
+              label="操作"
+              align="center"
+              width="250"
+              class-name="small-padding fixed-width"
+            >
               <template slot-scope="scope">
-                <el-button size="mini" type="text" icon="el-icon-edit" @click="handelEdit(scope.row.id)">修改
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-edit"
+                  @click="handelEdit(scope.row.id)"
+                >修改
                 </el-button>
-                <el-button size="mini" type="text" icon="el-icon-delete" @click="handelDel(scope.row.id)">删除
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-delete"
+                  @click="handelDel(scope.row.id)"
+                >删除
                 </el-button>
-                <el-button size="mini" type="text" icon="el-icon-zoom-in" @click="handelAuth(scope.row.id)">分配权限
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-zoom-in"
+                  @click="handelAuth(scope.row.id)"
+                >分配权限
                 </el-button>
               </template>
             </el-table-column>
@@ -92,36 +164,61 @@
       </el-row>
 
       <!-- 弹出框 -->
-      <el-dialog :title="title" :visible.sync="dialogVisible" width="800px" :close-on-click-modal="false">
+      <el-dialog
+        :title="title"
+        :visible.sync="dialogVisible"
+        width="800px"
+        :close-on-click-modal="false"
+      >
         <el-form ref="form" :model="form" :rules="rules" label-width="90px">
           <el-row>
             <el-col :span="24">
               <el-form-item label="上级菜单" prop="parentId">
-                <selectTree v-model="form.parentId" :options="options" placeholder="请选择上级菜单" key-name="menuName" />
+                <selectTree
+                  :key="key"
+                  v-model="form.parentId"
+                  :options="options"
+                  placeholder="请选择上级菜单"
+                  key-name="menuName"
+                />
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="12">
               <el-form-item label="菜单图标" prop="menuIcon">
-                <el-input v-model.trim="form.menuIcon" placeholder="请输入菜单图标" />
+                <el-input
+                  v-model.trim="form.menuIcon"
+                  placeholder="请输入菜单图标"
+                />
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item label="菜单名称" prop="menuName">
-                <el-input v-model.trim="form.menuName" placeholder="请输入菜单名称" />
+                <el-input
+                  v-model.trim="form.menuName"
+                  placeholder="请输入菜单名称"
+                />
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="12">
               <el-form-item label="路由地址" prop="menuUrl">
-                <el-input v-model.trim="form.menuUrl" placeholder="请输入路由地址" />
+                <el-input
+                  v-model.trim="form.menuUrl"
+                  placeholder="请输入路由地址"
+                />
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item label="排序号" prop="sortNum">
-                <el-input v-model.trim="form.sortNum" placeholder="请输入排序号" :minlength="1" :maxlength="5" />
+                <el-input
+                  v-model.trim="form.sortNum"
+                  placeholder="请输入排序号"
+                  :minlength="1"
+                  :maxlength="5"
+                />
               </el-form-item>
             </el-col>
           </el-row>
@@ -141,7 +238,11 @@
           </el-row>
         </el-form>
         <span slot="footer" class="dialog-footer">
-          <el-button type="primary" size="mini" @click="handelSubmit('form')">确定</el-button>
+          <el-button
+            type="primary"
+            size="mini"
+            @click="handelSubmit('form')"
+          >确定</el-button>
           <el-button size="mini" @click="handelCancel('form')">取消</el-button>
         </span>
       </el-dialog>
@@ -151,7 +252,14 @@
 </template>
 
 <script>
-import { getMenuList, addtMenuList, detailtMenuList, delMenuList, editMenuList, getAllMenuList } from '@/api/system/menu.js'
+import {
+  getMenuList,
+  addtMenuList,
+  detailtMenuList,
+  delMenuList,
+  editMenuList,
+  getAllMenuList
+} from '@/api/system/menu.js'
 import selectTree from '@/components/SelectTree'
 export default {
   components: {
@@ -163,7 +271,7 @@ export default {
       if (!value) {
         callback(new Error('排序号不能为空'))
       }
-      if (!(reg.test(value))) {
+      if (!reg.test(value)) {
         callback(new Error('只能输入正整数'))
       }
       callback()
@@ -173,7 +281,7 @@ export default {
       if (!value) {
         callback(new Error('路由地址不能为空'))
       }
-      if (!(reg.test(value))) {
+      if (!reg.test(value)) {
         callback(new Error('只能输入斜杠 横杠和英文'))
       }
       callback()
@@ -210,20 +318,28 @@ export default {
       // 表单验证
       rules: {
         menuName: [
-          { required: true, message: '菜单名称不能为空', pattern: '[^ \x22]+', trigger: 'blur' }
-        ],
-        sortNum: [
-          { required: true, validator: sortNumRule, trigger: 'blur' }
-        ],
-        menuUrl: [
-          { required: true, validator: valitatorUrl, trigger: 'blur' }
+          {
+            required: true,
+            message: '菜单名称不能为空',
+            pattern: '[^ \x22]+',
+            trigger: 'blur'
+          }
         ],
+        sortNum: [{ required: true, validator: sortNumRule, trigger: 'blur' }],
+        menuUrl: [{ required: true, validator: valitatorUrl, trigger: 'blur' }],
         menuIcon: [
-          { required: true, message: '菜单图标不能为空', pattern: '[^ \x22]+', trigger: 'blur' }
+          {
+            required: true,
+            message: '菜单图标不能为空',
+            pattern: '[^ \x22]+',
+            trigger: 'blur'
+          }
         ]
       },
       // 修改菜单id
-      id: null
+      id: null,
+      // 更新下拉树
+      key: 0
     }
   },
   created() {
@@ -234,7 +350,7 @@ export default {
   methods: {
     /** 获取表格数据 */
     getMenuList() {
-      getMenuList(this.queryParams).then(response => {
+      getMenuList(this.queryParams).then((response) => {
         const data = response.data
         this.menuList = data.menuList
         this.loading = false
@@ -244,7 +360,7 @@ export default {
     },
     /** 默认收起所有行 */
     defaultExpande(data) {
-      data.forEach(item => {
+      data.forEach((item) => {
         this.$refs.table && this.$refs.table.toggleRowExpansion(item, false)
         if (item.children && item.children.length) {
           this.defaultExpande(item.children)
@@ -253,7 +369,7 @@ export default {
     },
     /** 获取上级菜单 */
     getOptionsList() {
-      getAllMenuList().then(res => {
+      getAllMenuList().then((res) => {
         if (res.code === 200) {
           const data = res.data
           this.options = data
@@ -275,6 +391,7 @@ export default {
     handelAdd() {
       this.dialogVisible = true
       this.title = '添加菜单'
+      this.key++
       this.reset()
       this.getOptionsList()
     },
@@ -282,7 +399,7 @@ export default {
     handelEdit(id) {
       this.id = id
       this.dialogVisible = true
-      detailtMenuList({ id }).then(res => {
+      detailtMenuList({ id }).then((res) => {
         if (res.code === 200) {
           this.form = res.data
           this.getOptionsList()
@@ -298,22 +415,24 @@ export default {
         cancelButtonClass: 'btn_custom_cancel',
         closeOnClickModal: false,
         type: 'warning'
-      }).then(() => {
-        delMenuList({ id }).then(res => {
-          if (res.code === 200) {
-            this.$message({
-              type: 'success',
-              message: res.data
-            })
-            this.getMenuList()
-          }
+      })
+        .then(() => {
+          delMenuList({ id }).then((res) => {
+            if (res.code === 200) {
+              this.$message({
+                type: 'success',
+                message: res.data
+              })
+              this.getMenuList()
+            }
+          })
         })
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: '已取消删除'
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            message: '已取消删除'
+          })
         })
-      })
     },
     /** 表单提交 */
     handelSubmit(formName) {
@@ -321,7 +440,7 @@ export default {
         if (valid) {
           if (this.title === '添加菜单') {
             this.form.parentId = this.form.parentId || 0
-            addtMenuList(this.form).then(res => {
+            addtMenuList(this.form).then((res) => {
               if (res.code === 200) {
                 this.$message({
                   message: res.data,
@@ -340,7 +459,7 @@ export default {
               })
               return
             }
-            editMenuList(this.form).then(res => {
+            editMenuList(this.form).then((res) => {
               if (res.code === 200) {
                 this.$message({
                   message: res.data,
@@ -379,5 +498,4 @@ export default {
 </script>
 
 <style lang="scss" rel="stylesheet/scss" scoped>
-
 </style>

+ 9 - 5
chuanyi-admin/src/views/system/role/index.vue

@@ -273,11 +273,15 @@ export default {
     /** 删除角色请求 */
     delRolesById(ids) {
       delRolesById(ids).then(res => {
-        this.$message({
-          message: '删除角色成功!',
-          type: 'success'
-        })
-        this.getRoleList()
+        if (res.code === 200) {
+          this.$message({
+            message: '删除角色成功!',
+            type: 'success'
+          })
+          this.getRoleList()
+        }
+      }).catch(() => {
+        this.$refs.roleTable.clearSelection()
       })
     },
     /** 修改按钮操作 */

+ 2 - 1
chuanyi-admin/src/views/system/role/role-menu.vue

@@ -142,7 +142,7 @@ export default {
       })
     },
     /** 批量取消分配菜单按钮 */
-    handleDelMenus() {
+    handleDelMenus(event) {
       this.$confirm('您确定要批量取消选中的菜单吗?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
@@ -155,6 +155,7 @@ export default {
             type: 'warning',
             message: '请先取消分配下级菜单'
           })
+          this.$refs.table.clearSelection()
         } else {
           this.delDistObj.menuList = this.menus.map(item => { return { id: item.id } })
           this.delDistributionMenu()