From 566c35444def62d13f0c76c3a8e642cd234b2b45 Mon Sep 17 00:00:00 2001 From: doum <doum> Date: 星期五, 19 九月 2025 14:16:52 +0800 Subject: [PATCH] ss --- admin/src/views/system/user.vue | 140 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 140 insertions(+), 0 deletions(-) diff --git a/admin/src/views/system/user.vue b/admin/src/views/system/user.vue new file mode 100644 index 0000000..6e4d01b --- /dev/null +++ b/admin/src/views/system/user.vue @@ -0,0 +1,140 @@ +<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> + <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 + :height="tableHeightNew" + 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 ? '/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="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> +</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' + +export default { + name: 'SystemUser', + extends: BaseTable, + components: { ResetPwdWindow, RoleConfigWindow, OperaUserWindow, TableLayout, Pagination }, + data () { + return { + // 鎼滅储 + searchForm: { + username: '', // 鍚嶅瓧 + realname: '', // 濮撳悕 + mobile: '' // 鎵嬫満鍙风爜 + } + } + }, + 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; + } +} +</style> -- Gitblit v1.9.3