From a1f78d5809d624cd7e4cd3352d9ece858cad2090 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期三, 03 七月 2024 16:31:31 +0800
Subject: [PATCH] 成员管管增删改接口调试
---
Source/plt-web/plt-web-ui/src/App.vue | 2
Source/plt-web/plt-web-ui/src/views/system/user/index.vue | 182 ++++++++++++++++++++++++-
Source/plt-web/plt-web-ui/src/api/system/user/api.js | 34 ++++
Source/plt-web/plt-web-ui/README-AVUE.md | 90 ++++++++++++
Source/plt-web/plt-web-ui/src/views/system/user/option.js | 65 ++++++++-
5 files changed, 349 insertions(+), 24 deletions(-)
diff --git a/Source/plt-web/plt-web-ui/README-AVUE.md b/Source/plt-web/plt-web-ui/README-AVUE.md
new file mode 100644
index 0000000..44a3145
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/README-AVUE.md
@@ -0,0 +1,90 @@
+## AVUE-CRUD 琛ㄦ牸閰嶇疆
+
+```javascript
+<avue-crud :option="option" //琛ㄦ牸閰嶇疆灞炴��
+ :table-loading="loading" //琛ㄦ牸绛夊緟妗嗙殑鎺у埗锛屽姞杞界殑鏃跺�欒浆鍦堝湀锛岃缃畉rue/false
+ :search.sync="search" //鎼滅储鐨勫彉閲�(闇�瑕乻ync淇グ绗�)
+ :visible.sync="changeInfo" //鏄惁鏄剧ず锛岃缃畉rue/false
+ :data="data" //琛ㄦ牸鏄剧ず鐨勬暟鎹�
+ :page.sync="page" //琛ㄦ牸鍒嗛〉閰嶇疆閫夐」(闇�瑕乻ync淇グ绗�)
+ :permission="permissionList" //鏉冮檺鎺у埗
+ :before-open="beforeOpen" //鎵撳紑鍓嶇殑鍥炶皟function(file,column)
+ v-model="form" //鏁版嵁妯″瀷 鐢ㄦ潵瀛樺彇椤甸潰鍊肩殑
+ ref="crud" //鍦ㄦ櫘閫氱殑 DOM 鍏冪礌涓婁娇鐢紝寮曠敤鎸囧悜鐨勫氨鏄� DOM 鍏冪礌锛�
+ @cell-click="pageto" //琛ㄦ牸鐐瑰嚮杩愯鏂规硶 onclick鏂规硶瀹氫箟
+ @row-update="rowUpdate" //淇敼鏁版嵁鍚庣偣鍑荤‘瀹氳Е鍙戣浜嬩欢
+ @row-save="rowSave" //鏂板鏁版嵁鍚庣偣鍑荤‘瀹氳Е鍙戣浜嬩欢
+ @row-del="rowDel" //琛屾暟鎹垹闄ゆ椂瑙﹀彂璇ヤ簨浠�
+ @row-click="handleRowClick" //鍗曞嚮琛岃繍琛岀殑鏂规硶
+ @search-change="searchChange" //鎼滅储鏍忓彉鍖栦簨浠�
+ @search-reset="searchReset" //娓呯┖鎼滅储鏍忓彉鍖栦簨浠�
+ @selection-change="selectionChange"//閫夋嫨妗嗗彉鍖栧彉鍖栦簨浠�
+ @current-change="currentChange" //鐐瑰嚮椤电爜浼氳皟鐢╟urrent-change鏂规硶鍥炶皟褰撳墠椤垫暟锛岃繑鍥炲綋鍓嶇鍑犻〉
+ @size-change="sizeChange" //鐐瑰嚮姣忛〉澶氬皯鏉′細璋僺ize-change鏂规硶鍥炶皟
+ @refresh-change="refreshChange" //鐐瑰嚮鍒锋柊鎸夐挳瑙﹀彂璇ヤ簨浠�
+ @on-load="onLoad"> //鎵撳紑琛ㄦ牸椤甸潰鐨勬柟娉曪紝涓�鑸敤鏉ュ垵濮嬪寲锛岃繑鍥為〉闈㈡暟鎹�
+ </avue-crud>
+
+option: {
+ height:'auto', //琛ㄦ牸楂樺害
+ emptyText: "鏆傛棤鏁版嵁鍝", //鏁版嵁涓虹┖鐨勬彁绀�
+ calcHeight: 30, //琛ㄦ牸楂樺害宸紙涓昏鐢ㄤ簬鍑忓幓鍏朵粬閮ㄥ垎璁╄〃鏍奸珮搴﹁嚜閫傚簲锛�
+ tip: false, //鎻愮ず淇℃伅
+ searchShow: true, //棣栨鍔犺浇鏄惁鏄剧ず鎼滅储
+ searchMenuSpan: 4, //鎼滅储鎸夐挳闀垮害
+ searchSpan:6, //鎼滅储妗嗛暱搴� 鏈�澶ч暱搴�24
+ border: true, //琛ㄦ牸杈规鏄惁鏄剧ず
+ index: true, //鏄惁鏄剧ず搴忓彿
+ viewBtn: true, //鏄惁鏄剧ず鏌ョ湅鎸夐挳
+ selection: true, //鎼滅储妗嗘樉绀�
+ addBtn:false, //鏄惁鏄剧ず娣诲姞鎸夐挳
+ editBtn:false, //鏄惁鏄剧ず缂栬緫鎸夐挳
+ delBtn:false, //鏄惁鏄剧ず鍒犻櫎鎸夐挳
+ excelBtn:false, //琛ㄦ牸瀵煎嚭鎸夐挳鏄惁鏄剧ず
+ labelWidth:120, //琛ㄥ崟鍓嶉潰鐨勬爣棰橀暱搴�
+ refreshBtn: false, //琛ㄦ牸涓婇潰灏忕殑 鍒锋柊鎸夐挳
+ columnBtn: false, //琛ㄦ牸涓婇潰灏忕殑 鍒楄〃鎸夐挳
+ searchBtn: false, //琛ㄦ牸涓婇潰灏忕殑 鎼滅储鎸夐挳
+ menu: true, //鏄惁鏄剧ず鎿嶄綔鏍�
+ defaultExpandAll:true, //鏍戦粯璁ゅ睍寮�
+ column:[
+ {
+ label: "", //琛ㄥ崟灞炴�у悕绉�
+ prop: "", //灞炴�у搴斿疄浣撶被瀛楁
+ type: "", //杈撳叆妗嗙被鍨�
+ addDisplay: false, //鏂板鏃舵槸鍚︽樉绀�
+ editDisplay: false, //缂栬緫鏃舵槸鍚︽樉绀�
+ viewDisplay: true, //璇︽儏鏃舵槸鍚︽樉绀�
+ hide: true, //琛ㄥ崟鏌ヨ鏃舵槸鍚︽樉绀�
+ display: true, //鍦ㄦ煡鐪嬶紝鏂板锛岀紪杈戦〉闈㈡槸鍚︽樉绀�
+ labelWidth:'100', //鏍囬鍚嶇О瀹藉害
+ span: 24, //24涓�鏉℃暟鎹崰涓�琛岋紝8涓�琛�3鏉℃暟鎹�
+ gutter:20, //椤归棿璺�
+ addDisabled: true, //娣诲姞鐨勬椂鍊欎笉鑳戒慨鏀�
+ editDisabled: true, //缂栬緫鐨勬椂鍊欎笉鑳戒慨鏀�
+ sortable:true, //鎺掑簭鏂瑰紡鍒囨崲锛屽�掑簭銆佹搴忓垏鎹�
+ maxlength: 30, //瀛楁暟闄愬埗
+ showWordLimit:true, //鏄剧ず瀛楁暟闄愬埗
+ defaultExpandAll:true, //鏍戦粯璁ゅ睍寮�
+ search锛歵rue, //鏌ヨ鏄惁鏄剧ず
+ searchFilterable:true, //select閫夋嫨妗嗗尮閰�
+ showColumn:false, //鍒楁樉闅愪腑鏄惁鏈�
+ addDisplay: false, // 娣诲姞寮圭獥涓嶆樉绀�
+ editDisplay: false, // 缂栬緫寮圭獥涓嶆樉绀�
+ viewDisplay: false // 鏌ョ湅寮圭獥涓嶆樉绀�
+ disabled:true, //琛ㄥ崟item绂佺敤
+ row:'false/true', //鏄惁鍗曠嫭鎴愯
+ rules:Obj, //楠岃瘉瑙勫垯
+ dicData:[], //瀛楀吀
+ dicUrl:'', //杩滅▼瀛楀吀鍦板潃
+ dicMethod:'get/post' //瀛楀吀璇锋眰鏂瑰紡
+ dicQuery:obj, //瀛楀吀璇锋眰鏂瑰紡
+ props:{
+ lable:'瀛楀吀鐨勫悕绉板睘鎬у��',
+ value:'瀛楀吀鐨勫�煎睘鎬у��',
+ children:'瀛楀吀鐨勫瓙灞炴�у��'
+ },
+
+ }
+```
+
diff --git a/Source/plt-web/plt-web-ui/src/App.vue b/Source/plt-web/plt-web-ui/src/App.vue
index 32b2829..4b2c36e 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:50%;
+ top:43%;
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 3e042a6..b24c646 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
@@ -54,19 +54,19 @@
}
// 鏂板鎴愬憳
-export function addUser(data) {
+export function addUser(row) {
return request({
- url: "/api/roleQueryController/addUser",
+ url: "/api/userQueryController/addUser",
method: "post",
- data:data
+ data:row
});
}
// 淇敼鎴愬憳
export function updateUser(data) {
return request({
- url: "/api/roleQueryController/updateUser",
- method: "post",
+ url: "/api/userQueryController/updateUser",
+ method: "put",
data:data
});
}
@@ -74,8 +74,30 @@
// 鍒犻櫎鎴愬憳
export function deleteUser(params) {
return request({
- url: "/api/roleQueryController/deleteUser",
+ url: "/api/userQueryController/deleteUser",
method: "delete",
params
});
}
+
+//鑾峰彇瀵嗙爜绛栫暐
+export function selectPwdStrategyMap(params) {
+ return request({
+ url: "/api/passwordStrategyQueryController/selectPwdStrategyMap",
+ method: "get",
+ params
+ });
+}
+
+//淇濆瓨瀵嗙爜绛栫暐
+export function saveUserPasswordStrateg(params) {
+ let formData = new FormData()
+ for (let key in params){
+ formData.append(key,params[key])
+ }
+ return request({
+ url: "/api/passwordStrategyQueryController/saveUserPasswordStrateg",
+ method: "post",
+ data:formData
+ });
+}
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 ab0c3d1..f584d62 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
@@ -14,6 +14,9 @@
@current-change="currentChange"
@selection-change="selectChange"
@row-click="rowClickHandler"
+ @row-save="rowSaveHandler"
+ @row-update="rowUpdateHandler"
+ @row-del="rowDelHandler"
>
<template slot="status" slot-scope="{row}">
<el-tag v-if="row.status === 0" type="success">鍚敤</el-tag>
@@ -33,22 +36,62 @@
</template>
<template slot="menuLeft" slot-scope="scope">
- <el-button icon="el-icon-delete" plain size="small" type="danger">鍒犻櫎</el-button>
+ <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-key" plain size="small" type="success">璁剧疆瀵嗙爜绛栫暐</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>
</template>
</avue-crud>
- <transfer ref="transfer" :left-role-data="leftRoleData" :right-role-data="rightRoleData" :transferTitle="transferTitle" title="鍒嗛厤瑙掕壊"
- @transferSend="roleSendHandler"></transfer>
+ <!-- 鍒嗛厤瑙掕壊绌挎妗� -->
+ <transfer ref="transfer" :left-role-data="leftRoleData" :right-role-data="rightRoleData"
+ :transferTitle="transferTitle" title="鍒嗛厤瑙掕壊"
+ @transferSend="roleSendHandler">
+ </transfer>
+
+ <!-- 璁剧疆瀵嗙爜绛栫暐瀵硅瘽妗� -->
+ <el-dialog
+ v-dialogDrag
+ v-loading="pwdLoading"
+ :destroy-on-close="true"
+ :visible.sync="pwdVisible"
+ append-to-body="true"
+ class="avue-dialog"
+ style="margin-top: -20vh !important;"
+ title="璁剧疆瀵嗙爜绛栫暐"
+ width="30%"
+ >
+
+ <div class="password-strategy-container">
+ <div><i class="el-icon-setting"/>璁剧疆瀵嗙爜绛栫暐锛�</div>
+ <el-select v-model="pwdValue" placeholder="璇烽�夋嫨瀵嗙爜绛栫暐">
+ <el-option v-for="(item,index) in pwdList" :key="index" :label="item.name" :value="item.id"></el-option>
+ </el-select>
+ </div>
+
+ <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>
</basic-container>
</template>
<script>
import basicOption from '@/util/basic-option'
-import {getDataUsers, stopUser, gridRoles, listRoleByUserOid, saveRights, addUser, updateUser, deleteUser} from '@/api/system/user/api'
+import {
+ getDataUsers,
+ stopUser,
+ gridRoles,
+ listRoleByUserOid,
+ saveRights,
+ addUser,
+ updateUser,
+ deleteUser,
+ selectPwdStrategyMap,
+ saveUserPasswordStrateg
+} from '@/api/system/user/api'
import {column} from "./option"
import func from '@/util/func'
@@ -56,10 +99,15 @@
name: "userManage",
data() {
return {
+ pwdVisible: false,
+ pwdLoading: false,
+ pwdValue: '',
+ pwdList: [],
tableLoading: false,
tableData: [],
option: {
...basicOption,
+ dialogWidth: '50%',
calcHeight: -60,
column: column
},
@@ -73,7 +121,7 @@
selectList: [],
leftRoleData: [], // 鍒嗛厤瑙掕壊绌挎妗嗗乏渚у垵濮嬫暟鎹�
rightRoleData: [], // 鍒嗛厤瑙掕壊绌挎妗嗗彸渚у垵濮嬫暟鎹�
- transferTitle:['鐜版湁瑙掕壊', '鎷ユ湁瑙掕壊']
+ transferTitle: ['鐜版湁瑙掕壊', '鎷ユ湁瑙掕壊']
}
},
created() {
@@ -183,7 +231,7 @@
// 绌挎妗嗙粍浠跺洖濉�
roleSendHandler(row) {
let params = {
- userOid: this.selectList[0].oid,
+ userOids: this.selectList[0].oid,
roleIds: row.join(',')
}
saveRights(params).then(res => {
@@ -192,12 +240,130 @@
}).catch(err => {
this.$message.error(err)
})
+ },
+
+ // 璁剧疆瀵嗙爜绛栫暐
+ setPwsHandler() {
+ if (this.selectList.length <= 0) {
+ this.$message.warning('娓呭厛閫夋嫨浜哄憳鍐嶈繘琛屾搷浣滐紒')
+ return;
+ }
+ this.pwdLoading = false;
+ selectPwdStrategyMap().then(res => {
+ if (res.data.code === 200) {
+ this.pwdList = res.data.data;
+ this.pwdValue = res.data.data[0].id;
+ console.log(res.data)
+ this.pwdVisible = true;
+ this.pwdLoading = false;
+ } else {
+ this.$message.error(res.data.msg);
+ }
+ })
+ },
+
+ // 淇濆瓨瀵嗙爜绛栫暐
+ savePwdHandler() {
+ let params = {
+ userIds: this.selectList.map(item => item.oid).join(','),
+ passwordStrategId: this.pwdValue
+ }
+ saveUserPasswordStrateg(params).then(res => {
+ this.pwdVisible = false;
+ this.$message.success(res.data.obj)
+ }).catch(err => {
+ this.$message.error(err)
+ })
+ },
+
+ // 鏂板
+ rowSaveHandler(row, done) {
+ if (row.password != row.confirmPassword) {
+ this.$message.error('璇锋鏌ヤ袱娆″瘑鐮佹槸鍚﹁緭鍏ヤ竴鑷达紒')
+ return this.$refs.userCrud.$refs.dialogForm.$refs.tableForm.allDisabled = false;
+ }
+ addUser(row).then(res => {
+ if (res.data.code === 200) {
+ this.$message.success(res.data.obj);
+ this.getTableList();
+ }
+ }).catch(err => {
+ console.log(err);
+ })
+ done()
+ },
+
+ // 缂栬緫
+ rowUpdateHandler(row, index, done) {
+ if (row.password != row.confirmPassword) {
+ this.$message.error('璇锋鏌ヤ袱娆″瘑鐮佹槸鍚﹁緭鍏ヤ竴鑷达紒')
+ return this.$refs.userCrud.$refs.dialogForm.$refs.tableForm.allDisabled = false;
+ }
+ updateUser(row).then(res => {
+ if (res.data.code === 200) {
+ this.$message.success(res.data.obj);
+ this.getTableList();
+ }
+ }).catch(err => {
+ console.log(err);
+ });
+ done()
+ },
+
+ // 鍒犻櫎
+ rowDelHandler(row) {
+ let params = {
+ ids: row.oid
+ }
+ deleteUser(params).then(res => {
+ if (res.data.code === 200) {
+ this.$message.success(res.data.obj);
+ this.getTableList();
+ }
+ }).catch(err => {
+ console.log(err);
+ })
+ },
+
+ // 澶氶�夊垹闄�
+ allDelHandler() {
+ let params = {
+ ids: this.selectList.map(item => item.oid).join(',')
+ }
+ if (this.selectList.length <= 0) {
+ this.$message.warning('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹繘琛屽垹闄わ紒')
+ return;
+ }
+ this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎鎵�閫夋嫨鐨勬垚鍛樺悧锛�', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ deleteUser(params).then(res => {
+ if (res.data.code === 200) {
+ this.$message.success(res.data.obj);
+ this.getTableList();
+ }
+ });
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '宸插彇娑堝垹闄�'
+ });
+ });
}
}
}
</script>
-<style scoped>
+<style lang="scss" scoped>
+.password-strategy-container {
+ padding-left: 20px;
+ display: flex;
+ //justify-content: center;
+ align-items: center;
+ gap: 10px;
+}
</style>
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 0602863..58c46e3 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
@@ -1,16 +1,62 @@
-export const column = [
+export let column = [
+ {
+ label: '璐﹀彿',
+ prop: 'id',
+ align:'center',
+ search:true,
+ sortable:true,
+ rules: [
+ {
+ required: true,
+ message: '璇疯緭鍏ュ鍚�',
+ trigger: 'blur'
+ }
+ ]
+ },
{
label: '濮撳悕',
prop: 'name',
align:'center',
search:true,
- sortable:true
- }, {
- label: '璐﹀彿',
- prop: 'id',
- align:'center',
- search:true,
- sortable:true
+ sortable:true,
+ rules: [
+ {
+ required: true,
+ message: '璇疯緭鍏ュ鍚�',
+ trigger: 'blur'
+ }
+ ]
+ },
+ {
+ label: '瀵嗙爜',
+ prop: 'password',
+ hide:true,
+ type:'password',
+ change: (val)=>{
+ const confirmPasswordColumn = column.find(item => item.prop === 'confirmPassword');
+ confirmPasswordColumn.disabled = val.value === "";
+ },
+ rules: [
+ {
+ required: true,
+ message: '璇疯緭鍏ュ瘑鐮�',
+ trigger: 'blur'
+ }
+ ]
+ },
+ {
+ label: '纭瀵嗙爜',
+ prop: 'confirmPassword',
+ hide:true,
+ type:'password',
+ disabled:true,
+ rules: [
+ {
+ required: true,
+ message: '璇峰啀娆$‘璁ゅ瘑鐮�',
+ trigger: 'blur'
+ }
+ ]
},
{
label: '鐘舵��',
@@ -40,6 +86,7 @@
search:true,
sortable:true,
searchslot:true,
+ row:true,
},
{
label: '涓撲笟',
@@ -88,5 +135,5 @@
align:'center',
sortable:true,
display:false,
- }
+ },
];
--
Gitblit v1.9.3