From e26e02fd97880a30b48a6fe086c1b3298903b970 Mon Sep 17 00:00:00 2001 From: lixuliang <lixuliang_hd@126.com> Date: 星期五, 22 十一月 2024 11:04:43 +0800 Subject: [PATCH] 后台管理更新 --- se-ui/src/views/system/user/index.vue | 218 ++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 171 insertions(+), 47 deletions(-) diff --git a/se-ui/src/views/system/user/index.vue b/se-ui/src/views/system/user/index.vue index 6b2a0aa..2951b32 100644 --- a/se-ui/src/views/system/user/index.vue +++ b/se-ui/src/views/system/user/index.vue @@ -29,7 +29,14 @@ </el-col> <!--鐢ㄦ埛鏁版嵁--> <el-col :span="20" :xs="24"> - <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> + <el-form + :model="queryParams" + ref="queryForm" + size="small" + :inline="true" + v-show="showSearch" + label-width="68px" + > <el-form-item label="鐢ㄦ埛鍚嶇О" prop="userName"> <el-input v-model="queryParams.userName" @@ -138,11 +145,45 @@ <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="50" align="center" /> - <el-table-column label="鐢ㄦ埛缂栧彿" align="center" key="userId" prop="userId" v-if="columns[0].visible" /> - <el-table-column label="鐢ㄦ埛鍚嶇О" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" /> - <el-table-column label="鐢ㄦ埛鏄电О" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" /> - <el-table-column label="閮ㄩ棬" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" /> - <el-table-column label="鎵嬫満鍙风爜" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" /> + <el-table-column + label="鐢ㄦ埛缂栧彿" + align="center" + key="userId" + prop="userId" + v-if="columns[0].visible" + /> + <el-table-column + label="鐢ㄦ埛鍚嶇О" + align="center" + key="userName" + prop="userName" + v-if="columns[1].visible" + :show-overflow-tooltip="true" + /> + <el-table-column + label="鐢ㄦ埛鏄电О" + align="center" + key="nickName" + prop="nickName" + v-if="columns[2].visible" + :show-overflow-tooltip="true" + /> + <el-table-column + label="閮ㄩ棬" + align="center" + key="deptName" + prop="dept.deptName" + v-if="columns[3].visible" + :show-overflow-tooltip="true" + /> + <el-table-column + label="鎵嬫満鍙风爜" + align="center" + key="phonenumber" + prop="phonenumber" + v-if="columns[4].visible" + width="120" + /> <el-table-column label="鐘舵��" align="center" key="status" v-if="columns[5].visible"> <template slot-scope="scope"> <el-switch @@ -153,7 +194,13 @@ ></el-switch> </template> </el-table-column> - <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" v-if="columns[6].visible" width="160"> + <el-table-column + label="鍒涘缓鏃堕棿" + align="center" + prop="createTime" + v-if="columns[6].visible" + width="160" + > <template slot-scope="scope"> <span>{{ parseTime(scope.row.createTime) }}</span> </template> @@ -179,13 +226,23 @@ @click="handleDelete(scope.row)" v-hasPermi="['system:user:remove']" >鍒犻櫎</el-button> - <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:user:resetPwd', 'system:user:edit']"> + <el-dropdown + size="mini" + @command="(command) => handleCommand(command, scope.row)" + v-hasPermi="['system:user:resetPwd', 'system:user:edit']" + > <el-button size="mini" type="text" icon="el-icon-d-arrow-right">鏇村</el-button> <el-dropdown-menu slot="dropdown"> - <el-dropdown-item command="handleResetPwd" icon="el-icon-key" - v-hasPermi="['system:user:resetPwd']">閲嶇疆瀵嗙爜</el-dropdown-item> - <el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check" - v-hasPermi="['system:user:edit']">鍒嗛厤瑙掕壊</el-dropdown-item> + <el-dropdown-item + command="handleResetPwd" + icon="el-icon-key" + v-hasPermi="['system:user:resetPwd']" + >閲嶇疆瀵嗙爜</el-dropdown-item> + <el-dropdown-item + command="handleAuthRole" + icon="el-icon-circle-check" + v-hasPermi="['system:user:edit']" + >鍒嗛厤瑙掕壊</el-dropdown-item> </el-dropdown-menu> </el-dropdown> </template> @@ -213,7 +270,12 @@ </el-col> <el-col :span="12"> <el-form-item label="褰掑睘閮ㄩ棬" prop="deptId"> - <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="璇烽�夋嫨褰掑睘閮ㄩ棬" /> + <treeselect + v-model="form.deptId" + :options="deptOptions" + :show-count="true" + placeholder="璇烽�夋嫨褰掑睘閮ㄩ棬" + /> </el-form-item> </el-col> </el-row> @@ -237,7 +299,13 @@ </el-col> <el-col :span="12"> <el-form-item v-if="form.userId == undefined" label="鐢ㄦ埛瀵嗙爜" prop="password"> - <el-input v-model="form.password" placeholder="璇疯緭鍏ョ敤鎴峰瘑鐮�" type="password" maxlength="20" show-password/> + <el-input + v-model="form.password" + placeholder="璇疯緭鍏ョ敤鎴峰瘑鐮�" + type="password" + maxlength="20" + show-password + /> </el-form-item> </el-col> </el-row> @@ -323,13 +391,21 @@ drag > <i class="el-icon-upload"></i> - <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> + <div class="el-upload__text"> + 灏嗘枃浠舵嫋鍒版澶勶紝鎴� + <em>鐐瑰嚮涓婁紶</em> + </div> <div class="el-upload__tip text-center" slot="tip"> <div class="el-upload__tip" slot="tip"> - <el-checkbox v-model="upload.updateSupport" /> 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹� + <el-checkbox v-model="upload.updateSupport" />鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹� </div> <span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span> - <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">涓嬭浇妯℃澘</el-link> + <el-link + type="primary" + :underline="false" + style="font-size:12px;vertical-align: baseline;" + @click="importTemplate" + >涓嬭浇妯℃澘</el-link> </div> </el-upload> <div slot="footer" class="dialog-footer"> @@ -341,14 +417,23 @@ </template> <script> -import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus, deptTreeSelect } from "@/api/system/user"; +import { + listUser, + getUser, + delUser, + addUser, + updateUser, + resetUserPwd, + changeUserStatus, + deptTreeSelect +} from "@/api/system/user"; import { getToken } from "@/utils/auth"; import Treeselect from "@riophae/vue-treeselect"; import "@riophae/vue-treeselect/dist/vue-treeselect.css"; export default { name: "User", - dicts: ['sys_normal_disable', 'sys_user_sex'], + dicts: ["sys_normal_disable", "sys_user_sex"], components: { Treeselect }, data() { return { @@ -426,15 +511,29 @@ rules: { userName: [ { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }, - { min: 2, max: 20, message: '鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿', trigger: 'blur' } + { + min: 2, + max: 20, + message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿", + trigger: "blur" + } ], nickName: [ { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" } ], password: [ { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" }, - { min: 5, max: 20, message: '鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿', trigger: 'blur' }, - { pattern: /^[^<>"'|\\]+$/, message: "涓嶈兘鍖呭惈闈炴硶瀛楃锛�< > \" ' \\\ |", trigger: "blur" } + { + min: 5, + max: 20, + message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿", + trigger: "blur" + }, + { + pattern: /^[^<>"'|\\]+$/, + message: "涓嶈兘鍖呭惈闈炴硶瀛楃锛�< > \" ' \\ |", + trigger: "blur" + } ], email: [ { @@ -470,7 +569,8 @@ /** 鏌ヨ鐢ㄦ埛鍒楄〃 */ getList() { this.loading = true; - listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => { + listUser(this.addDateRange(this.queryParams, this.dateRange)).then( + response => { this.userList = response.rows; this.total = response.total; this.loading = false; @@ -496,13 +596,17 @@ // 鐢ㄦ埛鐘舵�佷慨鏀� handleStatusChange(row) { let text = row.status === "0" ? "鍚敤" : "鍋滅敤"; - this.$modal.confirm('纭瑕�"' + text + '""' + row.userName + '"鐢ㄦ埛鍚楋紵').then(function() { - return changeUserStatus(row.userId, row.status); - }).then(() => { - this.$modal.msgSuccess(text + "鎴愬姛"); - }).catch(function() { - row.status = row.status === "0" ? "1" : "0"; - }); + this.$modal + .confirm('纭瑕�"' + text + '""' + row.userName + '"鐢ㄦ埛鍚楋紵') + .then(function() { + return changeUserStatus(row.userId, row.status); + }) + .then(() => { + this.$modal.msgSuccess(text + "鎴愬姛"); + }) + .catch(function() { + row.status = row.status === "0" ? "1" : "0"; + }); }, // 鍙栨秷鎸夐挳 cancel() { @@ -593,16 +697,18 @@ closeOnClickModal: false, inputPattern: /^.{5,20}$/, inputErrorMessage: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿", - inputValidator: (value) => { + inputValidator: value => { if (/<|>|"|'|\||\\/.test(value)) { - return "涓嶈兘鍖呭惈闈炴硶瀛楃锛�< > \" ' \\\ |" + return "涓嶈兘鍖呭惈闈炴硶瀛楃锛�< > \" ' \\ |"; } - }, - }).then(({ value }) => { + } + }) + .then(({ value }) => { resetUserPwd(row.userId, value).then(response => { this.$modal.msgSuccess("淇敼鎴愬姛锛屾柊瀵嗙爜鏄細" + value); }); - }).catch(() => {}); + }) + .catch(() => {}); }, /** 鍒嗛厤瑙掕壊鎿嶄綔 */ handleAuthRole: function(row) { @@ -613,6 +719,7 @@ submitForm: function() { this.$refs["form"].validate(valid => { if (valid) { + if (this.form.userId != undefined) { updateUser(this.form).then(response => { this.$modal.msgSuccess("淇敼鎴愬姛"); @@ -632,18 +739,26 @@ /** 鍒犻櫎鎸夐挳鎿嶄綔 */ handleDelete(row) { const userIds = row.userId || this.ids; - this.$modal.confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�').then(function() { - return delUser(userIds); - }).then(() => { - this.getList(); - this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); - }).catch(() => {}); + this.$modal + .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�') + .then(function() { + return delUser(userIds); + }) + .then(() => { + this.getList(); + this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); + }) + .catch(() => {}); }, /** 瀵煎嚭鎸夐挳鎿嶄綔 */ handleExport() { - this.download('system/user/export', { - ...this.queryParams - }, `user_${new Date().getTime()}.xlsx`) + this.download( + "system/user/export", + { + ...this.queryParams + }, + `user_${new Date().getTime()}.xlsx` + ); }, /** 瀵煎叆鎸夐挳鎿嶄綔 */ handleImport() { @@ -652,8 +767,11 @@ }, /** 涓嬭浇妯℃澘鎿嶄綔 */ importTemplate() { - this.download('system/user/importTemplate', { - }, `user_template_${new Date().getTime()}.xlsx`) + this.download( + "system/user/importTemplate", + {}, + `user_template_${new Date().getTime()}.xlsx` + ); }, // 鏂囦欢涓婁紶涓鐞� handleFileUploadProgress(event, file, fileList) { @@ -664,7 +782,13 @@ this.upload.open = false; this.upload.isUploading = false; this.$refs.upload.clearFiles(); - this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "瀵煎叆缁撴灉", { dangerouslyUseHTMLString: true }); + this.$alert( + "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + + response.msg + + "</div>", + "瀵煎叆缁撴灉", + { dangerouslyUseHTMLString: true } + ); this.getList(); }, // 鎻愪氦涓婁紶鏂囦欢 -- Gitblit v1.9.3