From 0d9c8915b4c9deef17459f886ef136ad3d3b9440 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期四, 04 七月 2024 16:50:04 +0800
Subject: [PATCH] 成员管理 分配部门 部门搜索 添加 修改 导入人员 下载导入模板
---
Source/plt-web/plt-web-ui/src/App.vue | 2
/dev/null | 158 --------------
Source/plt-web/plt-web-ui/src/views/system/user/index.vue | 258 ++++++++++++++++++++++-
Source/plt-web/plt-web-ui/src/util/basic-option.js | 3
Source/plt-web/plt-web-ui/src/api/system/user/api.js | 32 ++
Source/plt-web/plt-web-ui/src/components/actions/base/uploadFile.vue | 13
Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue | 146 +++++++++++++
Source/plt-web/plt-web-ui/src/main.js | 4
Source/plt-web/plt-web-ui/src/views/system/user/option.js | 17 -
9 files changed, 441 insertions(+), 192 deletions(-)
diff --git a/Source/plt-web/plt-web-ui/src/App.vue b/Source/plt-web/plt-web-ui/src/App.vue
index 4b2c36e..32b2829 100644
--- a/Source/plt-web/plt-web-ui/src/App.vue
+++ b/Source/plt-web/plt-web-ui/src/App.vue
@@ -32,7 +32,7 @@
margin: 50px auto;
}
.avue-dialog .el-dialog{
- top:43%;
+ top:50%;
max-height: calc(100% - 100px);
-webkit-transform: translate(-50%, 0);
transform: translate(-50%, -50%);
diff --git a/Source/plt-web/plt-web-ui/src/api/system/user/api.js b/Source/plt-web/plt-web-ui/src/api/system/user/api.js
index b24c646..ce644b2 100644
--- a/Source/plt-web/plt-web-ui/src/api/system/user/api.js
+++ b/Source/plt-web/plt-web-ui/src/api/system/user/api.js
@@ -25,7 +25,7 @@
// 瑙掕壊鍏ㄦ煡璇�
export function gridRoles(page,limit) {
return request({
- url: "/api/roleQueryController/gridRoles",
+ url: "/api/roleQueryController/refDataGrid",
method: "get",
params:{
page,limit
@@ -101,3 +101,33 @@
data:formData
});
}
+
+// 涓嬭浇妯℃澘鎺ュ彛
+export const download = (params) => {
+ return request({
+ url: '/api/userQueryController/downloadImportTemplate',
+ method: 'get',
+ headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'},
+ responseType: 'blob',
+ params
+ })
+}
+
+//鑾峰彇瀵嗙爜绛栫暐
+export function departmentQueryController(params) {
+ return request({
+ url: "/api/departmentQueryController/refTree",
+ method: "get",
+ params
+ });
+}
+
+//鑾峰彇瀵嗙爜绛栫暐
+export function saveUsersDepts(params) {
+ return request({
+ url: "/api/departmentQueryController/saveUsersDepts",
+ method: "post",
+ params
+ });
+}
+
diff --git a/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/Upload-files.vue b/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/Upload-files.vue
deleted file mode 100644
index 35b1b6d..0000000
--- a/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/Upload-files.vue
+++ /dev/null
@@ -1,158 +0,0 @@
-<template>
- <el-dialog
- :visible.sync="dialogVisible"
- append-to-body
- title="涓婁紶鏂囦欢"
- >
- <Divider left="30px" text="瀵煎叆鎻愮ず"></Divider>
- <ul>
- <li>
- 1.绾㈣壊瀛椾綋琛ㄧず蹇呰緭椤�
- </li>
- <li>
- 2.姣忔浠呰兘鏈�澶氬鍏�10000鏉℃暟鎹�
- </li>
- </ul>
- <Divider left="30px" text="excel鏂囦欢锛岄�夋嫨鏂囦欢鍚庝細鑷姩涓婁紶"></Divider>
- <el-upload
- :before-upload="beforeUpload"
- :headers="uploadHeaders"
- :on-change="uploadChange"
- :on-error="onError"
- :on-success="onSuccess"
- :show-file-list="false"
- accept=".xlsx, .xls"
- action="/api/ubcs-code/codeClassify/importClassify"
- class="upload-demo">
- <el-button size="small" style="margin: 15px 35px" type="primary">娴忚鏂囦欢</el-button>
- </el-upload>
- <template #footer>
- <el-button
- :loading="downloadLoading"
- size="small"
- type="primary"
- @click="downloadTemplateFun"
- >涓嬭浇瀵煎叆妯℃澘
- </el-button
- >
- <el-button size="small" @click="dialogVisible = false">鍏抽棴</el-button>
- </template>
- </el-dialog>
-</template>
-
-<script>
-// import {downloadErrorFile,downloadBatchImportApplyTemplate} from '@/api/template/templateAttr'
-import {getToken} from "@/util/auth";
-import func from "@/util/func";
-
-export default {
- name: "Upload-files",
- props: {
- visible: {
- type: Boolean,
- default: false,
- },
- codeClassifyOid: {
- type: String,
- default: "",
- },
- },
- data() {
- return {
- flga: true,
- pageLoading: null,
- downloadLoading: false,
- }
- },
- watch: {
- visible: {
- handler(newval, oldval) {
- // console.log('newval',newval)
- }
- }
- },
- computed: {
- uploadHeaders() {
- return {
- "Blade-Auth": "bearer " + getToken(),
- };
- },
- dialogVisible: {
- get() {
- return this.visible;
- },
- set(val) {
- this.$emit("update:visible", val);
- },
- },
- },
- methods: {
- //鏂囦欢涓婁紶鍓�
- async beforeUpload(file) {
- const fileType = file.name.split(".").pop();
- if (fileType !== "xlsx" && fileType !== "xls") {
- // 涓婁紶鏍煎紡涓嶇鍚堣姹傦紝鎻愮ず閿欒淇℃伅骞跺彇娑堜笂浼�
- this.$message.error("鍙厑璁镐笂浼爔lsx銆亁ls鏍煎紡鐨勬枃浠�");
- return Promise.reject(false);
- }
- this.pageLoading = this.$loading({
- lock: true,
- text: "鏂囦欢涓婁紶涓�",
- spinner: "el-icon-loading",
- background: "rgba(0, 0, 0, 0.7)",
- });
- return true;
- },
- // 鏂囦欢涓婁紶鎴愬姛
- onSuccess(resbonse) {
- if (Object.keys(resbonse.data).length === 0) {
- this.$message.success("涓婁紶鎴愬姛锛�");
- this.dialogVisible = false;
- return;
- }
- if (resbonse.data.fileOid) {
- const fileName = resbonse.data.filePath.split("/").pop();
- this.$message.error("璇蜂笅杞介敊璇俊鎭枃浠惰繘琛屾煡鐪嬶紒");
- downloadErrorFile({uuid: resbonse.data.fileOid}).then((res) => {
- func.downloadFileByBlobHandler(res);
- });
- }
- },
- //鐐瑰嚮涓嬭浇妯℃澘
- downloadTemplateFun() {
- this.downloadLoading = true;
- downloadBatchImportApplyTemplate({codeClassifyOid: this.codeClassifyOid}).then(res => {
- this.$utilFunc.downloadFileByBlob(res.data, "妯℃澘鏂囦欢.xls");
- this.downloadLoading = false;
- }).catch((res) => {
- this.$message.warning(res)
- this.downloadLoading = false;
- })
- },
- //鏂囦欢涓婁紶澶辫触
- onError(res) {
- this.pageLoading.close();
- },
- //鏂囦欢鐘舵�佹敼鍙�
- uploadChange(file) {
- if (file.status === "success" || file.status === "error") {
- this.pageLoading.close();
- }
- }
- }
-}
-</script>
-
-<style lang="scss" scoped>
-ul {
- color: rgb(188, 188, 188);
- margin: 20px 0 20px 0;
- padding: 0 0 0 30px;
- list-style: none;
-
- li {
- margin-bottom: 5px;
- font-size: 13px;
- }
-}
-</style>
diff --git a/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue b/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue
new file mode 100644
index 0000000..d75110c
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue
@@ -0,0 +1,146 @@
+<template>
+ <el-dialog
+ v-dialogDrag
+ :close-on-click-modal="false"
+ :destroy-on-close="true"
+ :title="title"
+ :visible.sync="visible"
+ width="40%"
+ append-to-body
+ class="avue-dialog"
+ style="margin-top: -20vh !important;"
+ >
+ <Divider left="30px" text="瀵煎叆鎻愮ず"></Divider>
+ <ul>
+ <li>
+ 璇风偣鍑绘祻瑙堟枃浠惰繘琛屼笂浼�
+ </li>
+ </ul>
+ <Divider left="30px" text="閫夋嫨鏂囦欢鍚庝細鑷姩涓婁紶"></Divider>
+ <el-upload
+ :action="fileUrl"
+ :before-upload="beforeUpload"
+ :data="fileData"
+ :headers="uploadHeaders"
+ :on-change="uploadChange"
+ :on-error="onError"
+ :on-success="onSuccess"
+ :show-file-list="false"
+ class="upload-demo">
+ <el-button size="small" style="margin: 15px 35px" type="primary">娴忚鏂囦欢</el-button>
+ </el-upload>
+ <template #footer>
+ <el-button size="small" @click="visible = false">鍏抽棴</el-button>
+ </template>
+ </el-dialog>
+</template>
+
+<script>
+import {getToken} from "@/util/auth";
+import func from "@/util/func";
+import {validatenull} from "@/util/validate";
+
+export default {
+ name: "upload-file",
+ props: {
+ fileType: {
+ type: Array,
+ default: () => []
+ },
+ title: {
+ type: String,
+ default: '涓婁紶鏂囦欢'
+ },
+ fileUrl: {
+ type: String,
+ default: ''
+ },
+ fileData: {
+ type: Array,
+ default: () => []
+ }
+ },
+ data() {
+ return {
+ flga: true,
+ pageLoading: null,
+ downloadLoading: false,
+ visible: false,
+ }
+ },
+ created() {
+ },
+ watch: {
+ visible: {
+ handler(newval, oldval) {
+ // console.log('newval',newval)
+ }
+ }
+ },
+ computed: {
+ uploadHeaders() {
+ return {
+ "Authorizationtoken": getToken(),
+ };
+ },
+ },
+ methods: {
+ //鏂囦欢涓婁紶鍓�
+ async beforeUpload(file) {
+ // 鑾峰彇鏂囦欢鎵╁睍鍚�
+ const fileExtension = file.name.split(".").pop().toLowerCase(); // 杞崲涓哄皬鍐欎互閬垮厤澶у皬鍐欎笉鍖归厤鐨勯棶棰�
+ if (this.fileType) {
+ if (!this.fileType.includes(fileExtension)) {
+ // 涓婁紶鏍煎紡涓嶇鍚堣姹傦紝鎻愮ず閿欒淇℃伅骞跺彇娑堜笂浼�
+ this.$message.error(`鍙厑璁镐笂浼�${this.fileType.toString()}鏍煎紡鐨勬枃浠禶);
+ return Promise.reject(false);
+ }
+ }
+ this.pageLoading = this.$loading({
+ lock: true,
+ text: "鏂囦欢涓婁紶涓�",
+ spinner: "el-icon-loading",
+ background: "rgba(0, 0, 0, 0.7)",
+ });
+
+ return true;
+ },
+ // 鏂囦欢涓婁紶鎴愬姛
+ onSuccess(resbonse) {
+ console.log(resbonse);
+ if (resbonse.code === 200) {
+ this.$message.success("瀵煎叆鎴愬姛锛�");
+ this.visible = false;
+ } else {
+ this.$message.error(resbonse.msg);
+ }
+ },
+ //鏂囦欢涓婁紶澶辫触
+ onError(res) {
+ this.pageLoading.close();
+ this.$message.error(res);
+ },
+ //鏂囦欢鐘舵�佹敼鍙�
+ uploadChange(file) {
+ console.log( this.pageLoading);
+ if (file.status === "success" || file.status === "error") {
+ this.pageLoading.close();
+ }
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+ul {
+ color: rgb(188, 188, 188);
+ margin: 20px 0 20px 0;
+ padding: 0 0 0 30px;
+ list-style: none;
+
+ li {
+ margin-bottom: 5px;
+ font-size: 13px;
+ }
+}
+</style>
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFile.vue b/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFile.vue
index dc1c5b1..6b73c7c 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFile.vue
+++ b/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFile.vue
@@ -118,14 +118,13 @@
async beforeUpload(file) {
// 鑾峰彇鏂囦欢鎵╁睍鍚�
const fileExtension = file.name.split(".").pop().toLowerCase(); // 杞崲涓哄皬鍐欎互閬垮厤澶у皬鍐欎笉鍖归厤鐨勯棶棰�
- const allowedExtensions = this.paramVOS.fileType || ['css', 'csv', 'doc', 'gif', 'html', 'jpe', 'jpg', 'jpeg', 'png', 'js', 'json',
- 'mp3', 'mp4', 'xlsx', 'xml', 'zip', 'xhtml', 'wps', 'ppt', 'xls', 'word', 'pdf', 'txt'];
- // 妫�鏌ユ枃浠舵墿灞曞悕鏄惁鍦ㄥ厑璁哥殑鏂囦欢鎵╁睍鍚嶆暟缁勪腑
- if (!allowedExtensions.includes(fileExtension)) {
- // 涓婁紶鏍煎紡涓嶇鍚堣姹傦紝鎻愮ず閿欒淇℃伅骞跺彇娑堜笂浼�
- this.$message.error(`鍙厑璁镐笂浼�${allowedExtensions.toString()}鏍煎紡鐨勬枃浠禶);
- return Promise.reject(false);
+ if(this.paramVOS.fileType){
+ if (!this.paramVOS.fileType.includes(fileExtension)) {
+ // 涓婁紶鏍煎紡涓嶇鍚堣姹傦紝鎻愮ず閿欒淇℃伅骞跺彇娑堜笂浼�
+ this.$message.error(`鍙厑璁镐笂浼�${this.paramVOS.fileType.toString()}鏍煎紡鐨勬枃浠禶);
+ return Promise.reject(false);
+ }
}
this.pageLoading = this.$loading({
diff --git a/Source/plt-web/plt-web-ui/src/main.js b/Source/plt-web/plt-web-ui/src/main.js
index 5471b03..05e9ed2 100644
--- a/Source/plt-web/plt-web-ui/src/main.js
+++ b/Source/plt-web/plt-web-ui/src/main.js
@@ -39,7 +39,7 @@
// 瀵屾枃鏈粍浠�
import richText from '@/components/PLT-basic-component/richText'
// 涓婁紶鏂囦欢缁勪欢
-import UploadFiles from '@/components/PLT-basic-component/Upload-files'
+import uploadFile from '@/components/PLT-basic-component/upload-file'
// 琛ㄥ崟涓婁紶鏂囦欢缁勪欢
import formUpload from "@/components/PLT-basic-component/formUpload";
// 绌挎妗嗙粍浠�
@@ -56,7 +56,7 @@
Vue.component('dynamicTableForm', dynamicTableForm);
Vue.component('dynamicForm', dynamicForm);
Vue.component('richText', richText);
-Vue.component('UploadFiles', UploadFiles);
+Vue.component('uploadFile', uploadFile);
Vue.component('formUpload', formUpload);
Vue.component('Divider', Divider);
Vue.component('transfer', transfer);
diff --git a/Source/plt-web/plt-web-ui/src/util/basic-option.js b/Source/plt-web/plt-web-ui/src/util/basic-option.js
index aa2feb4..1c2b03c 100644
--- a/Source/plt-web/plt-web-ui/src/util/basic-option.js
+++ b/Source/plt-web/plt-web-ui/src/util/basic-option.js
@@ -7,8 +7,11 @@
searchIcon:true,
selection:true,
stripe:true,
+ headerAlign: 'center',
+ align: 'center',
// selection 鏄惁鏈夐�夋嫨妗�
// indexFixed:true/left/right, 鍥哄畾鍒�
// menu:false, 鏄惁鏈夋搷浣滄爮
// menuTitle:xxx, 鎿嶄綔鏍忔爣棰�
+ // stripe 鏉$汗
}
diff --git a/Source/plt-web/plt-web-ui/src/views/system/user/index.vue b/Source/plt-web/plt-web-ui/src/views/system/user/index.vue
index f584d62..1970aa3 100644
--- a/Source/plt-web/plt-web-ui/src/views/system/user/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/system/user/index.vue
@@ -2,6 +2,7 @@
<basic-container>
<avue-crud
ref="userCrud"
+ :before-open="beforeOpen"
:data="tableData"
:option="option"
:page.sync="page"
@@ -16,8 +17,27 @@
@row-click="rowClickHandler"
@row-save="rowSaveHandler"
@row-update="rowUpdateHandler"
- @row-del="rowDelHandler"
>
+ <!-- 閮ㄩ棬澶撮儴鎼滅储鎻掓Ы -->
+ <template slot-scope="{disabled,size}" slot="pkDepartmentNameSearch">
+ <div style="display: flex;gap: 5px">
+ <el-select v-model="departSearchValue" clearable placeholder="璇烽�夋嫨閮ㄩ棬">
+ <el-option :label="departSearchObj.name" :value="departSearchObj.oid"></el-option>
+ </el-select>
+ <el-button size="small" type="success" @click="dialogDepartSearchHandler">閫夋嫨閮ㄩ棬</el-button>
+ </div>
+ </template>
+
+ <!-- 瀵硅瘽妗嗛儴闂ㄦ彃妲� -->
+ <template slot="pkDepartmentNameForm" slot-scope="scope">
+ <div style="display: flex;gap: 5px">
+ <el-select v-model="departValue" clearable placeholder="璇烽�夋嫨閮ㄩ棬">
+ <el-option :label="departObj.name" :value="departObj.oid"></el-option>
+ </el-select>
+ <el-button size="small" type="success" @click="dialogDepartHandler">閫夋嫨閮ㄩ棬</el-button>
+ </div>
+ </template>
+
<template slot="status" slot-scope="{row}">
<el-tag v-if="row.status === 0" type="success">鍚敤</el-tag>
<el-tag v-if="row.status === 1" type="danger">鍋滅敤</el-tag>
@@ -29,7 +49,9 @@
</template>
<template #menu="{row,index,size}">
- <el-button size="small" type="text" @click="stopUserHandler(row)">
+ <el-button icon="el-icon-edit" size="small" type="text" @click.stop="rowEditHandler(row,index)">缂栬緫</el-button>
+ <el-button icon="el-icon-delete" size="small" type="text" @click.stop="rowDeleteHandler(row)">鍒犻櫎</el-button>
+ <el-button size="small" type="text" @click.stop="stopUserHandler(row)">
<span v-if="row.status === 0" style="color: #fa3434"><i class="el-icon-video-pause"></i> 鍋滅敤</span>
<span v-if="row.status === 1" style="color: #55b61d"><i class="el-icon-video-pause"></i> 鍚敤</span>
</el-button>
@@ -38,12 +60,13 @@
<template slot="menuLeft" slot-scope="scope">
<el-button icon="el-icon-delete" plain size="small" type="danger" @click="allDelHandler">鍒犻櫎</el-button>
<el-button icon="el-icon-user" plain size="small" type="primary" @click="roleHandler">鍒嗛厤瑙掕壊</el-button>
- <el-button icon="el-icon-school" plain size="small" type="primary">鍒嗛厤閮ㄩ棬</el-button>
+ <el-button icon="el-icon-school" plain size="small" type="primary" @click="departmentHandler">鍒嗛厤閮ㄩ棬</el-button>
<el-button icon="el-icon-key" plain size="small" type="success" @click="setPwsHandler">璁剧疆瀵嗙爜绛栫暐</el-button>
- <el-button icon="el-icon-upload2" plain size="small" type="primary">瀵煎叆浜哄憳</el-button>
- <el-button icon="el-icon-download" plain size="small" type="primary">涓嬭浇瀵煎叆妯℃澘</el-button>
+ <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="uploadRole">瀵煎叆浜哄憳</el-button>
+ <el-button icon="el-icon-download" plain size="small" type="primary" @click="downloadHandler">涓嬭浇瀵煎叆妯℃澘</el-button>
</template>
</avue-crud>
+
<!-- 鍒嗛厤瑙掕壊绌挎妗� -->
<transfer ref="transfer" :left-role-data="leftRoleData" :right-role-data="rightRoleData"
:transferTitle="transferTitle" title="鍒嗛厤瑙掕壊"
@@ -58,7 +81,7 @@
:visible.sync="pwdVisible"
append-to-body="true"
class="avue-dialog"
- style="margin-top: -20vh !important;"
+ style="margin-top: -15vh !important;"
title="璁剧疆瀵嗙爜绛栫暐"
width="30%"
>
@@ -73,6 +96,33 @@
<div slot="footer" class="dialog-footer">
<el-button size="small" @click="pwdVisible = false">鍙� 娑�</el-button>
<el-button size="small" type="primary" @click="savePwdHandler">纭� 瀹�</el-button>
+ </div>
+ </el-dialog>
+
+ <!-- 瀵煎叆浜哄憳 -->
+ <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" title="瀵煎叆浜哄憳"></upload-file>
+
+ <!-- 鍒嗛厤閮ㄩ棬瀵硅瘽妗� -->
+ <el-dialog
+ v-dialogDrag
+ v-loading="departLoading"
+ :destroy-on-close="true"
+ :visible.sync="departVisible"
+ append-to-body="true"
+ class="avue-dialog"
+ title="鍒嗛厤閮ㄩ棬"
+ width="50%"
+ >
+ <avue-crud
+ ref="departCrud"
+ :data="departData"
+ :option="departOption"
+ @current-row-change="handleCurrentRowChange"
+ >
+ </avue-crud>
+ <div slot="footer" class="dialog-footer">
+ <el-button size="small" @click="departVisible = false">鍙� 娑�</el-button>
+ <el-button size="small" type="primary" @click="saveDepartHandler">纭� 瀹�</el-button>
</div>
</el-dialog>
</basic-container>
@@ -90,15 +140,55 @@
updateUser,
deleteUser,
selectPwdStrategyMap,
- saveUserPasswordStrateg
+ saveUserPasswordStrateg,
+ download,
+ departmentQueryController,
+ saveUsersDepts
} from '@/api/system/user/api'
import {column} from "./option"
import func from '@/util/func'
export default {
name: "userManage",
- data() {
+ data: function () {
return {
+ departSearchObj:{},
+ departSearchValue:'',
+ loadKey: 0,
+ departStatus: '', // 鍖哄垎涓嶅悓鏂瑰紡鎵撳紑閮ㄩ棬瀵硅瘽妗�
+ departValue: '', // 閮ㄩ棬瀵硅瘽妗嗕笅鎷夋缁戝畾鍊�
+ departObj: {}, // 閮ㄩ棬瀵硅瘽妗嗕笅鎷夋閫夐」缁戝畾鍊�
+ departCurrenRow: {},
+ departOption: {
+ ...basicOption,
+ rowKey: 'oid',
+ rowParentKey: 'parentId',
+ selection: false,
+ highlightCurrentRow: true,
+ stripe: false,
+ menu: false,
+ refreshBtn: false,
+ gridBtn: false,
+ column: [
+ {
+ label: '鍚嶇О',
+ prop: 'name',
+ },
+ {
+ label: '缂栧彿',
+ prop: 'id',
+ },
+ {
+ label: '鎻忚堪',
+ prop: 'description',
+ },
+ ]
+ },
+ departData: [],
+ departLoading: false,
+ departVisible: false,
+ upFileType: ['xls', 'xlsx'],
+ fileUrl: 'api/userQueryController/importUser',
pwdVisible: false,
pwdLoading: false,
pwdValue: '',
@@ -107,6 +197,8 @@
tableData: [],
option: {
...basicOption,
+ editBtn: false,
+ delBtn: false,
dialogWidth: '50%',
calcHeight: -60,
column: column
@@ -127,6 +219,14 @@
created() {
},
methods: {
+ // 鏂板鎴栦慨鏀瑰璇濇鎵撳紑鍓�
+ beforeOpen(done, type) {
+ if(type == 'add'){
+ this.departObj = {};
+ this.departValue = "";
+ }
+ done();
+ },
// 琛ㄦ牸璇锋眰
getTableList() {
this.tableLoading = true;
@@ -147,6 +247,11 @@
// 鎼滅储鏌ヨ
handleSearch(params, done) {
+ this.searchParams = {};
+ if(this.departSearchObj && this.departSearchValue){
+ this.searchParams['conditionMap["pkDepartment"]'] = this.departSearchValue;
+ }
+
if (!func.isEmptyObject(params)) {
for (let key in params) {
if (params.hasOwnProperty(key)) {
@@ -155,15 +260,20 @@
this.searchParams[`conditionMap["${newKey}"]`] = params[key];
}
}
- } else {
+ }
+
+ if (func.isEmptyObject(params) && !this.departSearchValue) {
this.searchParams = {};
}
+
this.getTableList();
done();
},
// 閲嶇疆鎼滅储鏉′欢
handleReset() {
+ this.departSearchObj = {};
+ this.departSearchValue = "";
this.searchParams = {};
this.getTableList();
},
@@ -282,6 +392,7 @@
this.$message.error('璇锋鏌ヤ袱娆″瘑鐮佹槸鍚﹁緭鍏ヤ竴鑷达紒')
return this.$refs.userCrud.$refs.dialogForm.$refs.tableForm.allDisabled = false;
}
+ row.pkDepartment = this.departValue; // 灏嗗綋鍓嶈鐨勯儴闂ㄥ弬鏁皃kDepartment 璧嬪�间负涓嬫媺妗嗙粦瀹氱殑鍊�
addUser(row).then(res => {
if (res.data.code === 200) {
this.$message.success(res.data.obj);
@@ -293,12 +404,25 @@
done()
},
+ // 鎿嶄綔鏍忕紪杈�
+ rowEditHandler(row, index) {
+ let obj = { name: row.pkDepartmentName, oid: row.pkDepartment, rowOid: row.oid };
+ this.departValue = row.pkDepartment;
+ this.departObj = obj;
+
+ if (this.departObj.rowOid) {
+ this.$refs.userCrud.rowEdit(row, index);
+ }
+
+ },
+
// 缂栬緫
rowUpdateHandler(row, index, done) {
if (row.password != row.confirmPassword) {
this.$message.error('璇锋鏌ヤ袱娆″瘑鐮佹槸鍚﹁緭鍏ヤ竴鑷达紒')
return this.$refs.userCrud.$refs.dialogForm.$refs.tableForm.allDisabled = false;
}
+ row.pkDepartment = this.departValue; // 灏嗗綋鍓嶈鐨勯儴闂ㄥ弬鏁皃kDepartment 璧嬪�间负涓嬫媺妗嗙粦瀹氱殑鍊�
updateUser(row).then(res => {
if (res.data.code === 200) {
this.$message.success(res.data.obj);
@@ -311,7 +435,7 @@
},
// 鍒犻櫎
- rowDelHandler(row) {
+ rowDeleteHandler(row) {
let params = {
ids: row.oid
}
@@ -351,7 +475,119 @@
message: '宸插彇娑堝垹闄�'
});
});
- }
+ },
+
+ // 涓嬭浇瀵煎叆妯℃澘
+ downloadHandler() {
+ download().then(res => {
+ console.log(res);
+ func.downloadFileByBlobHandler(res);
+ this.$message.success('涓嬭浇鎴愬姛')
+ }).catch(err => {
+ this.$message.error(err);
+ })
+ },
+
+ // 瀵煎叆浜哄憳
+ uploadRole() {
+ this.$refs.upload.visible = true;
+ },
+
+ // 鍒嗛厤閮ㄩ棬
+ departmentHandler() {
+ if (this.selectList.length <= 0) {
+ this.$message.warning('娓呭厛閫夋嫨浜哄憳鍐嶈繘琛屾搷浣滐紒')
+ return;
+ }
+ this.departStatus = 'default'; // 鍖哄垎涓嶅悓鏂瑰紡鎵撳紑閮ㄩ棬瀵硅瘽妗�
+ this.departmentQueryOnLoad();
+ },
+
+ // 鍒嗛厤閮ㄩ棬琛ㄦ牸鍒濆鍖栬姹�
+ departmentQueryOnLoad() {
+ departmentQueryController({queryAllLevel: true}).then(res => {
+ const data = res.data.treeData;
+ this.departData = this.departDtaFormAtter(data);
+ this.departVisible = true;
+ }).catch(err => {
+ this.$message.error(err);
+ })
+ },
+
+ // 鍒嗛厤閮ㄩ棬鏁版嵁杞崲
+ departDtaFormAtter(items) {
+ return items.map(item => {
+ // 杞崲褰撳墠鑺傜偣鐨勫睘鎬�
+ const formList = {
+ oid: item.oid,
+ id: item.attributes.id,
+ name: item.attributes.name,
+ description: item.attributes.description,
+ parentId: item.parentId,
+ parentName: item.parentName,
+ parentBtmName: item.parentBtmName,
+ // 濡傛灉children瀛樺湪涓斾笉涓虹┖锛屽垯閫掑綊杞崲children
+ children: item.children && item.children.length > 0 ? this.departDtaFormAtter(item.children) : undefined
+ };
+ return formList;
+ });
+ },
+
+ // 鍒嗛厤閮ㄩ棬 琛屽崟閫�
+ handleCurrentRowChange(row) {
+ this.departCurrenRow = row;
+ },
+
+ // 鍒嗛厤閮ㄩ棬 淇濆瓨
+ saveDepartHandler() {
+ if (func.isEmptyObject(this.departCurrenRow)) {
+ this.$message.warning('璇烽�夋嫨閮ㄩ棬鑺傜偣锛�')
+ return;
+ }
+
+ if (this.departStatus == 'default') {
+ let params = {
+ userOIds: this.selectList.map(item => item.oid).join(','),
+ deptId: this.departCurrenRow.oid,
+ };
+ saveUsersDepts(params).then(res => {
+ if (res.data.code === 200) {
+ this.departVisible = false;
+ this.getTableList();
+ this.$message.success('鍒嗛厤鎴愬姛锛�')
+ }
+ }).catch(err => {
+ console.log(err);
+ })
+ return;
+ }
+
+ if (this.departStatus == 'handle') {
+ this.departObj = this.departCurrenRow;
+ this.departValue = this.departCurrenRow.oid;
+ this.departVisible = false;
+ return;;
+ }
+
+ if(this.departStatus == 'search'){
+ this.departSearchObj = this.departCurrenRow;
+ this.departSearchValue = this.departCurrenRow.oid;
+ this.departVisible = false;
+ return;
+ }
+ },
+
+ // 瀵硅瘽妗嗗垎閰嶉儴闂ㄦ寜閽�
+ dialogDepartHandler() {
+ this.departmentQueryOnLoad();
+ this.departStatus = 'handle'; // 鍖哄垎涓嶅悓鏂瑰紡鎵撳紑閮ㄩ棬瀵硅瘽妗�
+ },
+
+ // 鎼滅储瀵硅瘽妗嗗垎閰嶉儴闂ㄦ寜閽�
+ dialogDepartSearchHandler(){
+ this.departmentQueryOnLoad();
+ this.departStatus = 'search'; // 鍖哄垎涓嶅悓鏂瑰紡鎵撳紑閮ㄩ棬瀵硅瘽妗�
+ },
}
}
diff --git a/Source/plt-web/plt-web-ui/src/views/system/user/option.js b/Source/plt-web/plt-web-ui/src/views/system/user/option.js
index 58c46e3..07f7c2b 100644
--- a/Source/plt-web/plt-web-ui/src/views/system/user/option.js
+++ b/Source/plt-web/plt-web-ui/src/views/system/user/option.js
@@ -2,7 +2,6 @@
{
label: '璐﹀彿',
prop: 'id',
- align:'center',
search:true,
sortable:true,
rules: [
@@ -16,7 +15,6 @@
{
label: '濮撳悕',
prop: 'name',
- align:'center',
search:true,
sortable:true,
rules: [
@@ -61,7 +59,6 @@
{
label: '鐘舵��',
prop: 'status',
- align: 'center',
display:false,
sortable:true,
slot: true,
@@ -75,7 +72,6 @@
{
label: '閿佸畾鐘舵��',
prop: 'lockFlag',
- align:'center',
sortable:true,
display:false,
},
@@ -86,20 +82,18 @@
search:true,
sortable:true,
searchslot:true,
- row:true,
+ formslot:true,
},
{
label: '涓撲笟',
prop: 'specialties',
- align:'center',
sortable:true,
},
{
label: '瑙掕壊',
prop: 'pkPersonName',
- align:'center',
type:'select',
- dicUrl: 'api/roleQueryController/gridRoles',
+ dicUrl: 'api/roleQueryController/refDataGrid',
props: {
label: 'name',
value: 'oid'
@@ -112,27 +106,26 @@
{
label: '鐢靛瓙閭欢',
prop: 'email',
- align:'center',
sortable:true,
+ overHidden: true,
+ row:true
},
{
label: '鎻忚堪',
type:'textarea',
prop: 'description',
- align:'center',
sortable:true,
+ overHidden: true,
},
{
label: '閮ㄩ棬棰嗗',
prop: 'isDeptLeader',
- align:'center',
sortable:true,
display:false,
},
{
label: '鎵�灞炲瘑绾�',
prop: 'secretGradeText',
- align:'center',
sortable:true,
display:false,
},
--
Gitblit v1.9.3