From 50fb58286ed3b718c39a97e0987ee7561a295651 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期五, 04 七月 2025 17:56:41 +0800
Subject: [PATCH] git ch
---
company/src/views/system/user.vue | 317 ++++++++++++++++++++++++++++------------------------
1 files changed, 169 insertions(+), 148 deletions(-)
diff --git a/company/src/views/system/user.vue b/company/src/views/system/user.vue
index 5e4d7f5..26bceaf 100644
--- a/company/src/views/system/user.vue
+++ b/company/src/views/system/user.vue
@@ -1,159 +1,180 @@
<template>
- <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-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>
- <section>
- <el-button type="primary" icon="el-icon-search" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- </section>
- </el-form>
- <!-- 琛ㄦ牸鍜屽垎椤� -->
- <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>
- </ul>
- <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">
- </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>
- <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="roles" label="瑙掕壊" min-width="160px" class-name="table-column-strings">
- <template slot-scope="{row}">
- <ul>
- <li v-for="role in row.roles" :key="role.id">{{role.name}}</li>
- </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>
- <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>
- <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>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- ></pagination>
- </template>
- <!-- 鏂板缓/淇敼 -->
- <OperaUserWindow ref="operaUserWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/>
- <!-- 閰嶇疆瑙掕壊 -->
- <RoleConfigWindow ref="roleConfigWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/>
- <!-- 閲嶇疆瀵嗙爜 -->
- <ResetPwdWindow ref="resetPwdWindow"/>
- </TableLayout>
+ <TableLayout :permissions="['system:user:query']">
+ <!-- 鎼滅储琛ㄥ崟 -->
+ <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline>
+ <el-form-item label="濮撳悕" prop="realname">
+ <el-input v-model="searchForm.realname" v-trim placeholder="璇疯緭鍏�" @keypress.enter.native="search"/>
+ </el-form-item>
+ <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>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <ul class="toolbar" v-permissions="['system:user:create', 'system:user:delete']">
+ <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
+ @sort-change="handleSortChange"
+ >
+ <el-table-column label="搴忓彿" width="80px">
+ <template slot-scope="scope">
+ <span>{{scope.$index + 1}}</span>
+ </template>
+ </el-table-column>
+ <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="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>
+ <li v-for="role in row.roles" :key="role.id">{{role.name}}</li>
+ </ul>
+ </template>
+ </el-table-column>
+ <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
+ v-if="containPermissions(['system:user:update', 'system:user:createUserRole', 'system:user:resetPwd', 'system:user:delete'])"
+ label="鎿嶄綔"
+ width="270"
+ fixed="right"
+ >
+ <!-- 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.companyDepartmentPathId ? row.companyDepartmentPathId.substring(0, row.companyDepartmentPathId.length - 1).split('/').map(val => +val) : '' })" v-permissions="['system:user:update']">缂栬緫</el-button>
+ <el-button type="text" @click="$refs.allocationEnterprises.open('鍒嗛厤浼佷笟', row)" v-if="[0,2].includes(userInfo.type)">鍒嗛厤浼佷笟</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>-->
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ :pagination="tableData.pagination"
+ ></pagination>
+ </template>
+ <!-- 鏂板缓/淇敼 -->
+ <OperaUserWindow ref="operaUserWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/>
+ <!-- 閰嶇疆瑙掕壊 -->
+ <RoleConfigWindow ref="roleConfigWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/>
+ <!-- 閲嶇疆瀵嗙爜 -->
+ <ResetPwdWindow ref="resetPwdWindow"/>
+ <!-- 鍒嗛厤浼佷笟 -->
+ <allocationEnterprises ref="allocationEnterprises" @success="handlePageChange(tableData.pagination.pageIndex)"/>
+ </TableLayout>
</template>
<script>
-import Pagination from '@/components/common/Pagination'
-import TableLayout from '@/layouts/TableLayout'
-import BaseTable from '@/components/base/BaseTable'
-import OperaUserWindow from '@/components/system/user/OperaUserWindow'
-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'
-
-export default {
- name: 'SystemUser',
- extends: BaseTable,
- components: { PositionSelect, DepartmentSelect, ResetPwdWindow, RoleConfigWindow, OperaUserWindow, TableLayout, Pagination },
- data () {
- return {
- // 鎼滅储
- searchForm: {
- username: '', // 鍚嶅瓧
- realname: '', // 濮撳悕
- rootDeptId: null, // 閮ㄩ棬ID
- positionId: null, // 宀椾綅ID
- mobile: '' // 鎵嬫満鍙风爜
+ import Pagination from '@/components/common/Pagination'
+ 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,
+ computed: {
+ ...mapState(['userInfo'])
+ },
+ components: { allocationEnterprises, PositionSelect, DepartmentSelect, ResetPwdWindow, RoleConfigWindow, OperaUserWindow, TableLayout, Pagination },
+ data () {
+ return {
+ // 鎼滅储
+ searchForm: {
+ username: '', // 鍚嶅瓧
+ realname: '', // 濮撳悕
+ rootDeptId: null, // 閮ㄩ棬ID
+ positionId: null, // 宀椾綅ID
+ mobile: '', // 鎵嬫満鍙风爜
+ type: '',
+ companyDepartmentPathName: '' // 閮ㄩ棬鍚嶇О
+ }
+ }
+ },
+ created () {
+ this.config({
+ module: '鐢ㄦ埛',
+ api: '/system/user',
+ 'field.main': 'realname',
+ sorts: [{
+ property: 'CREATE_TIME',
+ 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
+ })
}
}
- },
- created () {
- this.config({
- module: '鐢ㄦ埛',
- api: '/system/user',
- 'field.main': 'realname',
- sorts: [{
- property: 'CREATE_TIME',
- direction: 'DESC'
- }]
- })
- this.search()
}
-}
</script>
<style scoped lang="scss">
-@import "@/assets/style/variables.scss";
-// 鍒楄〃澶村儚澶勭悊
-.table-column-avatar {
- img {
- width: 48px;
- }
-}
+ @import "@/assets/style/variables.scss";
+ // 鍒楄〃澶村儚澶勭悊
+ .table-column-avatar {
+ img {
+ width: 48px;
+ }
+ }
</style>
--
Gitblit v1.9.3