From 56edbd80963acea41d9b9737bb9264f57a6e4ae2 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期二, 19 十一月 2024 09:13:41 +0800
Subject: [PATCH] 优化

---
 company/src/views/system/user.vue |  125 ++++++++++++++++++++++++-----------------
 1 files changed, 73 insertions(+), 52 deletions(-)

diff --git a/company/src/views/system/user.vue b/company/src/views/system/user.vue
index 5e4d7f5..ddd8f3f 100644
--- a/company/src/views/system/user.vue
+++ b/company/src/views/system/user.vue
@@ -2,20 +2,11 @@
   <TableLayout :permissions="['system:user:query']">
     <!-- 鎼滅储琛ㄥ崟 -->
     <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline>
-      <el-form-item label="鐢ㄦ埛鍚�" prop="username">
-        <el-input v-model="searchForm.username" v-trim placeholder="璇疯緭鍏ョ敤鎴峰悕" @keypress.enter.native="search"/>
-      </el-form-item>
       <el-form-item label="濮撳悕" prop="realname">
-        <el-input v-model="searchForm.realname" v-trim placeholder="璇疯緭鍏ュ鍚�" @keypress.enter.native="search"/>
+        <el-input v-model="searchForm.realname" v-trim placeholder="璇疯緭鍏�" @keypress.enter.native="search"/>
       </el-form-item>
-      <el-form-item label="鎵嬫満鍙风爜" prop="mobile">
-        <el-input v-model="searchForm.mobile" v-trim placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�" @keypress.enter.native="search"/>
-      </el-form-item>
-            <el-form-item label="鎵�灞為儴闂�" prop="rootDeptId">
-        <DepartmentSelect v-model="searchForm.rootDeptId" placeholder="璇烽�夋嫨鎵�灞為儴闂�" clearable/>
-      </el-form-item>
-      <el-form-item label="宀椾綅" prop="positionId">
-        <PositionSelect v-model="searchForm.positionId" placeholder="璇烽�夋嫨宀椾綅" clearable/>
+      <el-form-item label="鎵�灞為儴闂�" prop="companyDepartmentPathName">
+        <el-input v-model="searchForm.companyDepartmentPathName" v-trim placeholder="璇疯緭鍏�" @keypress.enter.native="search"/>
       </el-form-item>
       <section>
         <el-button type="primary" icon="el-icon-search" @click="search">鎼滅储</el-button>
@@ -25,44 +16,38 @@
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['system:user:create', 'system:user:delete']">
-        <li v-permissions="['system:user:create']"><el-button icon="el-icon-plus" type="primary" @click="$refs.operaUserWindow.open('鏂板缓鐢ㄦ埛')">鏂板缓</el-button></li>
-        <li v-permissions="['system:user:delete']"><el-button icon="el-icon-delete" @click="deleteByIdInBatch">鍒犻櫎</el-button></li>
+        <li v-permissions="['system:user:create']"><el-button type="primary" @click="$refs.operaUserWindow.open('鏂板璐﹀彿')">鏂板璐﹀彿</el-button></li>
+<!--        <li v-permissions="['system:user:delete']"><el-button icon="el-icon-delete" @click="deleteByIdInBatch">鍒犻櫎</el-button></li>-->
       </ul>
+<!--      @selection-change="handleSelectionChange"-->
       <el-table
         v-loading="isWorking.search"
         :data="tableData.list"
         :default-sort = "{prop: 'createTime', order: 'descending'}"
         stripe
-        @selection-change="handleSelectionChange"
         @sort-change="handleSortChange"
       >
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="avatar" label="澶村儚" width="80px" class-name="table-column-avatar" fixed="left">
-          <template slot-scope="{row}">
-            <img :src="row.avatar == null ? '/static/avatar/man.png' : row.avatar">
+        <el-table-column label="搴忓彿" width="80px">
+          <template slot-scope="scope">
+            <span>{{scope.$index + 1}}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="realname" label="濮撳悕" min-width="100px" fixed="left"></el-table-column>
-        <el-table-column prop="username" label="鐢ㄦ埛鍚�" min-width="120px"></el-table-column>
-        <el-table-column prop="empNo" label="宸ュ彿" sortable="custom" sort-by="EMP_NO" min-width="80px"></el-table-column>
-        <el-table-column prop="department" label="閮ㄩ棬" min-width="120px">
-          <template slot-scope="{row}">{{row.department == null ? '' : row.department.name}}</template>
+        <el-table-column prop="username" label="璐﹀彿" min-width="120px"></el-table-column>
+        <el-table-column prop="realname" label="濮撳悕" min-width="100px"></el-table-column>
+        <el-table-column prop="mobile" label="鑱旂郴鏂瑰紡" min-width="100px"></el-table-column>
+        <el-table-column label="涓荤" min-width="100px">
+            <template slot-scope="{ row }">
+                <el-switch
+                    v-model="row.headStatus"
+                    @change="setHeadStatus($event, row)"
+                    active-color="#13ce66"
+                    inactive-color="#ff4949"
+                    :active-value="1"
+                    :inactive-value="0">
+                </el-switch>
+            </template>
         </el-table-column>
-        <el-table-column prop="position" label="宀椾綅" min-width="160px" class-name="table-column-strings">
-          <template slot-scope="{row}">
-            <ul>
-              <li v-for="position in row.positions" :key="position.id">{{position.name}}</li>
-            </ul>
-          </template>
-        </el-table-column>
-        <el-table-column prop="sex" label="鎬у埆" sortable="custom" sort-by="SEX" min-width="80px">
-          <template slot-scope="{row}">
-            {{row.sex | sex}}
-          </template>
-        </el-table-column>
-        <el-table-column prop="mobile" label="鎵嬫満鍙风爜" min-width="100px"></el-table-column>
-        <el-table-column prop="email" label="閭" min-width="180px"></el-table-column>
-        <el-table-column prop="birthday" label="鐢熸棩" sortable="custom" sort-by="BIRTHDAY" min-width="100px"></el-table-column>
+        <el-table-column prop="companyDepartmentPathName" label="鎵�鍦ㄩ儴闂�" min-width="100px"></el-table-column>
         <el-table-column prop="roles" label="瑙掕壊" min-width="160px" class-name="table-column-strings">
           <template slot-scope="{row}">
             <ul>
@@ -70,25 +55,32 @@
             </ul>
           </template>
         </el-table-column>
-        <el-table-column prop="createUser" label="鍒涘缓浜�" min-width="100px">
-          <template slot-scope="{row}">{{row.createUserInfo == null ? '' : row.createUserInfo.username}}</template>
+        <el-table-column label="鍚敤鐘舵��" min-width="100px">
+          <template slot-scope="{row}">
+            <el-switch
+              v-if="!row.fixed"
+              @change="changeStatus($event, row)"
+              v-model="row.status"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              :active-value="0"
+              :inactive-value="1">
+            </el-switch>
+          </template>
         </el-table-column>
-        <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" sortable="custom" sort-by="CREATE_TIME" min-width="140px"></el-table-column>
-        <el-table-column prop="updateUser" label="鏇存柊浜�" min-width="100px">
-          <template slot-scope="{row}">{{row.updateUserInfo == null ? '' : row.updateUserInfo.username}}</template>
-        </el-table-column>
-        <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" sortable="custom" sort-by="UPDATE_TIME" min-width="140px"></el-table-column>
         <el-table-column
           v-if="containPermissions(['system:user:update', 'system:user:createUserRole', 'system:user:resetPwd', 'system:user:delete'])"
           label="鎿嶄綔"
           width="270"
           fixed="right"
         >
-          <template v-if="isAdmin || (row.id !== userInfo.id && row.roles.findIndex(r => r.code === adminCode) === -1)" slot-scope="{row}">
-            <el-button type="text" icon="el-icon-edit" @click="$refs.operaUserWindow.open('缂栬緫鐢ㄦ埛', row)" v-permissions="['system:user:update']">缂栬緫</el-button>
+<!--          row.id !== userInfo.id &&-->
+          <template v-if="isAdmin || (row.roles.findIndex(r => r.code === adminCode) === -1)" slot-scope="{row}">
+            <el-button type="text" icon="el-icon-edit" @click="$refs.operaUserWindow.open('缂栬緫鐢ㄦ埛', {...row, departmentId: [row.departmentId]})" v-permissions="['system:user:update']">缂栬緫</el-button>
+            <el-button type="text" @click="$refs.allocationEnterprises.open('鍒嗛厤浼佷笟', row)" v-if="userInfo.type === 0">鍒嗛厤浼佷笟</el-button>
             <el-button type="text" icon="el-icon-s-custom" @click="$refs.roleConfigWindow.open(row)" v-permissions="['system:user:createUserRole']">閰嶇疆瑙掕壊</el-button>
             <el-button type="text" @click="$refs.resetPwdWindow.open(row)" v-permissions="['system:user:resetPwd']">閲嶇疆瀵嗙爜</el-button>
-            <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:user:delete']">鍒犻櫎</el-button>
+<!--            <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:user:delete']">鍒犻櫎</el-button>-->
           </template>
         </el-table-column>
       </el-table>
@@ -104,6 +96,8 @@
     <RoleConfigWindow ref="roleConfigWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/>
     <!-- 閲嶇疆瀵嗙爜 -->
     <ResetPwdWindow ref="resetPwdWindow"/>
+    <!--  鍒嗛厤浼佷笟  -->
+    <allocationEnterprises ref="allocationEnterprises" @success="handlePageChange(tableData.pagination.pageIndex)"/>
   </TableLayout>
 </template>
 
@@ -112,15 +106,20 @@
 import TableLayout from '@/layouts/TableLayout'
 import BaseTable from '@/components/base/BaseTable'
 import OperaUserWindow from '@/components/system/user/OperaUserWindow'
+import allocationEnterprises from '@/components/system/user/allocationEnterprises'
 import RoleConfigWindow from '@/components/system/user/RoleConfigWindow'
 import ResetPwdWindow from '@/components/system/user/ResetPwdWindow'
 import DepartmentSelect from '@/components/common/DepartmentSelect'
 import PositionSelect from '@/components/common/PositionSelect'
-
+import { updUserStatus, updateHead } from '@/api/system/user'
+import { mapState } from 'vuex'
 export default {
   name: 'SystemUser',
   extends: BaseTable,
-  components: { PositionSelect, DepartmentSelect, ResetPwdWindow, RoleConfigWindow, OperaUserWindow, TableLayout, Pagination },
+  computed: {
+    ...mapState(['userInfo'])
+  },
+  components: { allocationEnterprises, PositionSelect, DepartmentSelect, ResetPwdWindow, RoleConfigWindow, OperaUserWindow, TableLayout, Pagination },
   data () {
     return {
       // 鎼滅储
@@ -129,7 +128,9 @@
         realname: '', // 濮撳悕
         rootDeptId: null, // 閮ㄩ棬ID
         positionId: null, // 宀椾綅ID
-        mobile: '' // 鎵嬫満鍙风爜
+        mobile: '', // 鎵嬫満鍙风爜
+        type: '',
+        companyDepartmentPathName: ''   // 閮ㄩ棬鍚嶇О
       }
     }
   },
@@ -143,7 +144,27 @@
         direction: 'DESC'
       }]
     })
+    this.searchForm.type = this.userInfo.type
     this.search()
+  },
+  methods: {
+    // 璁剧疆鍙栨秷涓荤
+    setHeadStatus(e, row) {
+      updateHead({ id: row.id, headStatus: row.headStatus })
+        .then(res => {
+          this.search()
+        })
+    },
+    changeStatus(status, row) {
+      updUserStatus({
+        id: row.id,
+        status
+      }).then(res => {
+        this.search()
+      }).catch(err => {
+        row.status = row.status === 0 ? 1 : 0
+      })
+    }
   }
 }
 </script>

--
Gitblit v1.9.3