From 2813ea20120a1ce6f5ab6625783140d9c2cdc578 Mon Sep 17 00:00:00 2001 From: lxl <lixuliang_hd@126.com> Date: 星期三, 19 十月 2022 14:41:24 +0800 Subject: [PATCH] 控制 --- src/views/userManage/userInfoManage.vue | 924 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 698 insertions(+), 226 deletions(-) diff --git a/src/views/userManage/userInfoManage.vue b/src/views/userManage/userInfoManage.vue index 4ba9546..21a9559 100644 --- a/src/views/userManage/userInfoManage.vue +++ b/src/views/userManage/userInfoManage.vue @@ -8,30 +8,39 @@ ></My-bread> <el-divider /> <div class="inquire"> - <el-form ref="ruleForm" :model="form" :inline="true"> - <el-form-item :label="$t('operatManage.ELM.username')" prop="name"> - <el-input - v-model="form.name" - :placeholder="$t('operatManage.ELM.usernameInfo')" - /> + <el-form ref="queryForm" :model="queryForm" :inline="true"> + <el-form-item prop="uname" :label="$t('userManage.userInfoObj.uname')"> + <el-input v-model="queryForm.uname" /> </el-form-item> <el-form-item + prop="depid" :label="$t('userManage.userInfoObj.depName')" - prop="depName" > - <el-input - v-model="form.depName" - :placeholder="$t('common.pleaseInput')" - /> </el-form-item - ><el-form-item> - <el-button @click="onSubmit" + <el-cascader + v-model="queryForm.depid" + :options="treeOptions" + filterable + @change="handleChange" + :show-all-levels="false" + :props="{ + label: 'name', + value: 'id', + children: 'children', + checkStrictly: true, + emitPath: false, + }" + > + </el-cascader> + </el-form-item> + <el-form-item> + <el-button @click="queryInfo()" ><i class="el-icon-search"></i> {{ $t("operatManage.ELM.search") }}</el-button > </el-form-item> <el-form-item> - <el-button @click="resetForm('ruleForm')" + <el-button @click="resetInfo('queryForm')" ><i class="el-icon-delete"></i> {{ $t("operatManage.ELM.reset") }}</el-button @@ -46,10 +55,15 @@ > </el-form-item> <el-form-item> - <el-button type="danger" size="small" @click="showAddDialog" + <el-button type="danger" size="small" @click="deleteUserInfo" ><i class="el-icon-delete"></i> {{ $t("common.delete") }}</el-button + > + </el-form-item> + <el-form-item> + <el-button type="danger" size="small" @click="editPwd" + ><i class="el-icon-unlock"></i> 閲嶇疆瀵嗙爜</el-button > </el-form-item> </el-form> @@ -61,7 +75,9 @@ border style="width: 100%" height="99%" + @selection-change="handleSelectionChange" > + <el-table-column type="selection" width="55" /> <el-table-column align="center" type="index" @@ -69,6 +85,7 @@ width="70px" fixed /> + <el-table-column align="center" prop="uname" @@ -76,7 +93,12 @@ :label="$t('userManage.userInfoObj.uname')" fixed /> - + <el-table-column + align="center" + prop="uid" + width="150px" + :label="$t('userManage.userInfoObj.uid')" + /> <el-table-column align="center" prop="sex" @@ -158,21 +180,17 @@ /> <el-table-column :label="$t('common.operate')" - width="200px" + width="80px" fixed="right" > <template slot-scope="scope"> <!-- <el-button type="primary" size="small">淇敼</el-button> --> - <el-button type="warning" @click="editInfo(scope.row)" size="mini" >{{ $t("common.edit") }}</el-button > - <el-button type="danger" @click="editPwd(scope.row)" size="mini"> - 閲嶇疆瀵嗙爜 - </el-button> </template> </el-table-column> </el-table> @@ -181,8 +199,8 @@ @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" - :page-sizes="[10, 20, 30, 40]" - :page-size="10" + :page-sizes="[1, 2, 5, 10]" + :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="count" > @@ -190,109 +208,236 @@ </div> </div> <el-dialog - width="500px" - top="7vh" - title="淇敼淇℃伅" + width="910px" + top="15vh" + :title="behavior" :visible.sync="dialogFormVisible" :before-close="handleClose" > - <el-form :model="ruleForm" ref="ruleForm" :rules="rules"> - <el-form-item prop="name" label="鐢ㄦ埛鍚�" :label-width="formLabelWidth"> - <el-input v-model="ruleForm.uname" autocomplete="off"></el-input> - </el-form-item> - <el-form-item label="鎬у埆" :label-width="formLabelWidth"> - <!-- <el-input v-model="ruleForm.sex" autocomplete="off"></el-input> --> - <el-select v-model="ruleForm.sex" clearable placeholder="璇烽�夋嫨"> - <el-option - v-for="item in sexOpt" - :key="item.value" - :label="item.label" - :value="item.value" - > - </el-option> - </el-select> - </el-form-item> - <el-form-item label="绫嶈疮" :label-width="formLabelWidth"> - <el-input v-model="ruleForm.natives" autocomplete="off"></el-input> - </el-form-item> - <el-form-item label="鍗曚綅鍚嶇О" :label-width="formLabelWidth"> - <el-input - v-model="ruleForm.depName" - disabled - autocomplete="off" - ></el-input> - - <el-button type="primary" size="mini" @click="showDep" - >閫夋嫨</el-button + <el-form + :model="editForm" + ref="editForm" + :rules="rules" + style="display: flex" + > + <div> + <el-form-item + prop="uid" + label="鐧诲綍璐﹀彿" + v-if="behavior == '鏂板鐢ㄦ埛'" + :label-width="formLabelWidth" > - <el-card v-if="showDepTree" shadow="hover" class="box-card"> - <div slot="header" class="clearfix"> - <span>璇烽�夋嫨閮ㄩ棬</span> - <el-button - style="float: right; padding: 3px 0" - type="text" - @click="sendNode" - >纭畾</el-button - > + <el-input v-model="editForm.uid" autocomplete="off"></el-input> + <div class="isNewUser" v-if="isNewUser"> + <img src="../../assets/img/success.png" /> + 璐﹀彿鍙敤 </div> - <div class="depTreeBox"> - <el-tree - ref="tree" - :props="defaultProps" - node-key="id" - :data="depList" - :expand-on-click-node="false" - :default-expand-all="true" - @node-click="handleNodeClick" + </el-form-item> + <el-form-item + v-if="behavior == '淇敼淇℃伅'" + label="鐧诲綍璐﹀彿" + :label-width="formLabelWidth" + > + <el-input + v-model="editForm.uid" + autocomplete="off" + disabled + ></el-input> + </el-form-item> + <el-form-item + v-if="behavior == '淇敼淇℃伅'" + prop="oldPwd" + label="鍘熷瘑鐮�" + :label-width="formLabelWidth" + > + <el-input + type="password" + v-model="editForm.oldPwd" + autocomplete="off" + show-password + ></el-input> + </el-form-item> + <el-form-item prop="pwd" label="瀵嗙爜" :label-width="formLabelWidth"> + <el-input + type="password" + v-model="editForm.pwd" + autocomplete="off" + show-password + ></el-input> + </el-form-item> + <el-form-item + prop="checkPass" + label="纭瀵嗙爜" + :label-width="formLabelWidth" + > + <el-input + type="password" + show-password + v-model="editForm.checkPass" + autocomplete="off" + ></el-input> + </el-form-item> + <el-form-item + prop="uname" + label="鐢ㄦ埛鍚嶇О" + :label-width="formLabelWidth" + > + <el-input v-model="editForm.uname" autocomplete="off"></el-input> + </el-form-item> + <el-form-item prop="sex" label="鎬у埆" :label-width="formLabelWidth"> + <el-select v-model="editForm.sex" clearable placeholder="璇烽�夋嫨"> + <el-option + v-for="item in sexOpt" + :key="item.value" + :label="item.label" + :value="item.value" > - <span class="custom-tree-node" slot-scope="{ node, data }"> - <span>{{ node.label }}</span> - </span> - </el-tree> - </div> - </el-card> - </el-form-item> - <el-form-item label="璇佷欢鍙�" :label-width="formLabelWidth"> - <el-input v-model="ruleForm.idcard" autocomplete="off"></el-input> - </el-form-item> - <el-form-item label="宸ヤ綔" :label-width="formLabelWidth"> - <el-input v-model="ruleForm.job" autocomplete="off"></el-input> - </el-form-item> - <el-form-item label="鏁欒偛" :label-width="formLabelWidth"> - <el-input v-model="ruleForm.edu" autocomplete="off"></el-input> - </el-form-item> - <el-form-item label="鍦板潃" :label-width="formLabelWidth"> - <el-input v-model="ruleForm.addr" autocomplete="off"></el-input> - </el-form-item> - <el-form-item label="鐢靛瓙閭欢" :label-width="formLabelWidth"> - <el-input v-model="ruleForm.email" autocomplete="off"></el-input> - </el-form-item> - <el-form-item label="鑱旂郴鏂瑰紡" :label-width="formLabelWidth"> - <el-input v-model="ruleForm.contact" autocomplete="off"></el-input> - </el-form-item> - <el-form-item label="鐘舵��" :label-width="formLabelWidth"> - <el-select v-model="ruleForm.status" clearable placeholder="璇烽�夋嫨"> - <el-option - v-for="item in statusOpt" - :key="item.value" - :label="item.label" - :value="item.value" + </el-option> + </el-select> + </el-form-item> + <el-form-item + prop="natives" + label="绫嶈疮" + :label-width="formLabelWidth" + > + <el-input v-model="editForm.natives" autocomplete="off"></el-input> + </el-form-item> + <el-form-item + prop="depid" + :label-width="formLabelWidth" + :label="$t('userManage.userInfoObj.depName')" + > + <el-cascader + v-model="editForm.depid" + :options="treeOptions" + filterable + clearable + @change="editChange" + :show-all-levels="false" + :props="{ + label: 'name', + value: 'id', + children: 'children', + checkStrictly: true, + emitPath: false, + }" > - </el-option> - </el-select> + </el-cascader> + </el-form-item> + <el-form-item + prop="idcard" + label="璇佷欢鍙�" + :label-width="formLabelWidth" + > + <el-input v-model="editForm.idcard" autocomplete="off"></el-input> + </el-form-item> + </div> + <div style="width: 45%"> + <el-form-item prop="job" label="宸ヤ綔" :label-width="formLabelWidth"> + <el-input v-model="editForm.job" autocomplete="off"></el-input> + </el-form-item> + <el-form-item prop="edu" label="鏁欒偛" :label-width="formLabelWidth"> + <el-input v-model="editForm.edu" autocomplete="off"></el-input> + </el-form-item> + <el-form-item prop="addr" label="鍦板潃" :label-width="formLabelWidth"> + <el-input v-model="editForm.addr" autocomplete="off"></el-input> + </el-form-item> + <el-form-item + prop="email" + label="鐢靛瓙閭欢" + :label-width="formLabelWidth" + > + <el-input v-model="editForm.email" autocomplete="off"></el-input> + </el-form-item> + <el-form-item + prop="contact" + label="鑱旂郴鏂瑰紡" + :label-width="formLabelWidth" + > + <el-input v-model="editForm.contact" autocomplete="off"></el-input> + </el-form-item> + <el-form-item + prop="status" + label="鐘舵��" + :label-width="formLabelWidth" + > + <el-select v-model="editForm.status" clearable placeholder="璇烽�夋嫨"> + <el-option + v-for="item in statusOpt" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + <el-form-item prop="bak" label="澶囨敞" :label-width="formLabelWidth"> + <el-input v-model="editForm.bak" autocomplete="off"></el-input> + </el-form-item> + </div> + </el-form> + <div v-if="behavior == '淇敼淇℃伅'" slot="footer" class="dialog-footer"> + <el-button size="medium" @click="cancelEdit()">閲嶇疆</el-button> + <el-button + size="medium" + type="primary" + @click="sendEdit('editForm')" + v-loading.fullscreen.lock="fullscreenLoading" + >鎻愪氦</el-button + > + </div> + <div v-else slot="footer" class="dialog-footer"> + <el-button size="medium" @click="cancelAdd('editForm')">閲嶇疆</el-button> + <el-button + size="medium" + type="primary" + @click="sendAdd('editForm')" + v-loading.fullscreen.lock="fullscreenLoading" + >鎻愪氦</el-button + > + </div> + </el-dialog> + <el-dialog + width="520px" + top="30vh" + title="鎵归噺閲嶇疆瀵嗙爜" + :visible.sync="resetPwd" + :before-close="handleClose" + > + <el-form :model="pwdForm" ref="pwdForm" :rules="rules"> + <el-form-item prop="adminPwd" label="绠$悊鍛樺瘑鐮�" label-width="140px"> + <el-input + type="password" + v-model="pwdForm.adminPwd" + autocomplete="off" + show-password + ></el-input> </el-form-item> - <el-form-item label="澶囨敞" :label-width="formLabelWidth"> - <el-input v-model="ruleForm.bak" autocomplete="off"></el-input> + <el-form-item prop="newPwd" label="鏂板瘑鐮�" label-width="140px"> + <el-input + type="password" + v-model="pwdForm.newPwd" + autocomplete="off" + show-password + ></el-input> + </el-form-item> + <el-form-item prop="checkPwd" label="纭瀵嗙爜" label-width="140px"> + <el-input + type="password" + v-model="pwdForm.checkPwd" + autocomplete="off" + show-password + ></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> - <el-button size="medium" @click="cancelEdit('ruleForm')" - >鍙栨秷</el-button + <el-button size="medium" @click="cancelReset - 'pwdForm'" + >閲嶇疆</el-button > <el-button size="medium" type="primary" - @click="sendEdit('ruleForm')" + @click="sendReset('pwdForm')" v-loading.fullscreen.lock="fullscreenLoading" >鎻愪氦</el-button > @@ -302,6 +447,8 @@ </template> <script> +var encrypt = new JSEncrypt(); +import { mapActions } from "vuex"; import MyBread from "../../components/MyBread.vue"; import { queryDepTree, @@ -309,7 +456,8 @@ insertUser, deleteUser, updateUser, - updateUserPwd, + updatePwd, + selectByUserid, } from "../../api/api"; export default { //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� @@ -319,48 +467,78 @@ data() { let validName = (rule, value, callback) => { if (value === "" || value === null || value === undefined) { - return callback(new Error("鍚嶇О涓嶈兘涓虹┖")); + return callback(new Error("璇疯緭鍏ュ瘑鐮�")); + } else { + callback(); + } + }; + let validatePass = (rule, value, callback) => { + if (value === "" || value === undefined) { + callback(new Error("璇峰啀娆¤緭鍏ュ瘑鐮�")); + } else if (value !== this.editForm.pwd) { + callback(new Error("涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!")); + } else { + callback(); + } + }; + let resetPass = (rule, value, callback) => { + if (value === "" || value === undefined) { + callback(new Error("璇峰啀娆¤緭鍏ュ瘑鐮�")); + } else if (value !== this.pwdForm.newPwd) { + callback(new Error("涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!")); } else { callback(); } }; return { + isNewUser: false, currentPage: 1, + pageSize: 10, + pageIndex: 1, defaultProps: { children: "children", label: "name", }, - form: { - username: "", - // userStatus: "all", + queryForm: { + uname: "", + depid: null, depName: "", }, - showDepTree: true, tableData: [], fullscreenLoading: false, - newDep: { - name: "", - id: null, - }, count: 0, formLabelWidth: "100px", dialogFormVisible: false, - ruleForm: { + initialForm: "", + behavior: "", + multipleSelection: [], + resetPwd: false, + editForm: { + uid: "", uname: "", + oldPwd: "", pwd: "", - sex: "", + checkPass: "", + sex: null, natives: "", - depName: "", + depid: null, idcard: "", job: "", edu: "", addr: "", email: "", contact: "", - status: "", + status: null, bak: "", - depid: null, + salt: "", }, + pwdForm: { + adminPwd: "", + newPwd: "", + checkPwd: "", + ids: [], + }, + treeOptions: [], statusOpt: [ { value: 0, @@ -399,36 +577,140 @@ }, ], rules: { - name: [{ validator: validName, trigger: "blur" }], + uid: [ + { required: true, validator: validName, trigger: "blur" }, + { + trigger: "blur", + validator: (rule, value, callback) => { + var reg = new RegExp(/^[a-zA-Z0-9_]{0,15}$/); //瀛楃涓叉鍒欒〃杈惧紡 4鍒�14浣嶏紙瀛楁瘝锛屾暟瀛楋紝涓嬪垝绾匡紝鍑忓彿锛� + if (!reg.test(value)) { + callback( + new Error("璐﹀彿蹇呴』鐢卞瓧姣嶏紝鏁板瓧鎴栦笅鍒掔嚎,闀垮害涓嶅緱瓒呰繃16浣�") + ); + } else { + selectByUserid({ uid: value }).then((res) => { + if (res.result != null) { + this.isNewUser = false; + callback(new Error("璐﹀彿宸插瓨鍦�")); + } else { + this.isNewUser = true; + callback(); + } + }); + } + }, + }, + ], + pwd: [ + { + required: true, + message: "璇疯緭鍏ュ瘑鐮�", + transform: (value) => value, + trigger: "blur", + }, + { + type: "string", + message: "璇疯緭鍏ヤ笉鍖呭惈绌烘牸鐨勫瓧绗�", + trigger: "blur", + transform(value) { + if (value && value.indexOf(" ") === -1) { + return value; + } else { + return false; + } + }, + }, + { + trigger: "blur", + validator: (rule, value, callback) => { + var regex = new RegExp(""); + var passwordreg = + /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![a-z0-9]+$)(?![a-z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![0-9\W!@#$%^&*`~()\\-_+=,.?;<>]+$)[a-zA-Z0-9\W!@#$%^&*`~()\\-_+=,.?;<>]{8,20}$/; + if (!passwordreg.test(value)) { + callback( + new Error("瀵嗙爜蹇呴』鐢辨暟瀛椼�佸瓧姣嶃�佺壒娈婂瓧绗︾粍鍚�,璇疯緭鍏�8-20浣�") + ); + } else { + callback(); + } + }, + }, + ], + checkPass: [ + { required: true, validator: validatePass, trigger: "blur" }, + ], + adminPwd: [{ validator: validName, trigger: "blur" }], + newPwd: [ + { + message: "璇疯緭鍏ュ瘑鐮�", + transform: (value) => value, + trigger: "blur", + }, + { + type: "string", + message: "璇疯緭鍏ヤ笉鍖呭惈绌烘牸鐨勫瓧绗�", + trigger: "blur", + transform(value) { + if (value && value.indexOf(" ") === -1) { + return value; + } else { + return false; + } + }, + }, + { + trigger: "blur", + validator: (rule, value, callback) => { + var regex = new RegExp(""); + var passwordreg = + /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![a-z0-9]+$)(?![a-z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![0-9\W!@#$%^&*`~()\\-_+=,.?;<>]+$)[a-zA-Z0-9\W!@#$%^&*`~()\\-_+=,.?;<>]{8,20}$/; + if (!passwordreg.test(value)) { + callback( + new Error("瀵嗙爜蹇呴』鐢辨暟瀛椼�佸瓧姣嶃�佺壒娈婂瓧绗︾粍鍚�,璇疯緭鍏�8-20浣�") + ); + } else { + callback(); + } + }, + }, + ], + checkPwd: [{ validator: resetPass, trigger: "blur" }], }, }; }, methods: { + ...mapActions(["login", "getpublickey"]), getUserInfo(params) { - // queryMaxId().then((res) => { - // this.id = res.data; - // }); - queryDepTree().then((res) => { - if (res.code == 200) { - this.depList = this.treeData(res.result); - } else { - this.$notify.error({ - title: res.code, - message: "鏃犳硶鑾峰彇鍗曚綅鍒楄〃", - }); - } - }); + queryDepTree() + .then((res) => { + if (res.code == 200) { + this.depList = this.treeData(res.result); + this.treeOptions = this.treeData(res.result); + } else { + this.$notify.error({ + title: res.code, + message: res.result, + }); + } + }) + .catch((res) => {}); + queryPageUser({ pageIndex: 1, pageSize: 10, - }).then((res) => { - if (res.code == 200) { - this.tableData = res.result; - this.count = res.count; - } else { - console.log("鎺ュ彛鎶ラ敊"); - } - }); + }) + .then((res) => { + if (res.code == 200) { + this.tableData = res.result; + this.count = res.count; + } else { + this.$notify.error({ + title: res.code, + message: res.result, + }); + } + }) + .catch((res) => {}); }, treeData(source) { let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕 @@ -439,55 +721,280 @@ return father.pid == 0; // 杩斿洖涓�绾ц彍鍗� }); }, - showDep() { - this.showDepTree = true; + //鏌ヨ閫夋嫨鍗曚綅 + handleChange(value) { + this.queryForm.depid = value; }, - handleNodeClick(data) { - this.newDep.name = data.name; - this.newDep.id = data.id; + //鎼滅储鎸夐挳 + queryInfo() { + let searchData = { + uname: this.queryForm.uname, + depid: this.queryForm.depid, + pageIndex: this.pageIndex, + pageSize: this.pageSize, + }; + queryPageUser(searchData).then((res) => { + if (res.code == 200) { + this.tableData = res.result; + this.count = res.count; + } else { + console.log("鏌ヨ鎺ュ彛鎶ラ敊"); + this.$notify.error({ + title: res.code, + message: res.result, + }); + } + }); }, - handleSizeChange(val) { - console.log(`姣忛〉 ${val} 鏉); - }, - handleCurrentChange(val) { - console.log(`褰撳墠椤�: ${val}`); - }, - onSubmit() { - console.log("submit!"); - }, - resetForm(formName) { + //閲嶇疆鎸夐挳 + resetInfo(formName) { this.$refs[formName].resetFields(); }, + //鏂板鎸夐挳 + showAddDialog() { + this.behavior = "鏂板鐢ㄦ埛"; + this.editForm = {}; + this.dialogFormVisible = true; + }, + cancelAdd(formName) { + this.editForm = {}; + this.isNewUser = false; + this.$refs[formName].resetFields(); + }, + sendAdd(formName) { + this.$refs[formName].validate((valid) => { + if (valid) { + // console.log(this.$store.state.key); + encrypt.setPublicKey(this.$store.state.key); + this.editForm.uid = encrypt.encrypt(this.editForm.uid); + this.editForm.pwd = encrypt.encrypt(this.editForm.pwd); + this.fullscreenLoading = true; + delete this.editForm.checkPass; + delete this.editForm.oldPwd; + insertUser(this.editForm) + .then((res) => { + setTimeout(() => { + this.fullscreenLoading = false; + if (res.code == 200) { + this.getUserInfo(1, 10); + this.$message({ + message: "娣诲姞鎴愬姛", + type: "success", + }); + this.editForm = {}; + this.dialogFormVisible = false; + } + }, 500); + }) + .catch((res) => { + alert("淇敼澶辫触锛岃閲嶈瘯锛�"); + this.fullscreenLoading = false; + }); + } else { + console.log("error submit!!"); + return false; + } + }); + }, + //鍒犻櫎鎸夐挳 + deleteUserInfo() { + this.$confirm("姝ゆ搷浣滃皢鍒犻櫎宸查�変腑鐨勭敤鎴�, 鏄惁缁х画?", "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .then(() => { + var std = []; + for (var i in this.multipleSelection) { + std.push(this.multipleSelection[i].id); + } + deleteUser({ ids: std.toString() }) + .then((res) => { + if (res.code == 200) { + this.$message({ + type: "success", + message: "鍒犻櫎鎴愬姛!", + }); + this.multipleSelection = []; + this.getUserInfo(1, 10); + } else { + this.$message.error("鍒犻櫎澶辫触"); + } + }) + .catch(() => { + this.$message.error("鍒犻櫎澶辫触"); + this.multipleSelection = []; + }); + }) + .catch(() => { + this.$message("宸插彇娑堝垹闄�"); + }); + }, + //閲嶇疆瀵嗙爜 + editPwd() { + var std = []; + for (var i in this.multipleSelection) { + std.push(this.multipleSelection[i].id); + } + if (std.length == 0) { + alert("璇峰厛閫夋嫨鐢ㄦ埛"); + return; + } + this.pwdForm.ids = std; + this.resetPwd = true; + }, + cancelReset(formName) { + this.$refs[formName].resetFields(); + this.pwdForm.ids = []; + }, + sendReset(formName) { + this.$refs[formName].validate((valid) => { + if (valid) { + encrypt.setPublicKey(this.$store.state.key); + var data = { + adminPwd: encrypt.encrypt(this.pwdForm.adminPwd), + newPwd: encrypt.encrypt(this.pwdForm.newPwd), + ids: this.pwdForm.ids, + }; + this.fullscreenLoading = true; + updatePwd(data) + .then((res) => { + setTimeout(() => { + this.fullscreenLoading = false; + if (res.code == 200) { + this.getUserInfo(1, 10); + this.$message({ + message: "淇敼鎴愬姛", + type: "success", + }); + this.pwdForm = { + adminPwd: "", + newPwd: "", + checkPwd: "", + ids: [], + }; + this.multipleSelection = []; + this.resetPwd = false; + } + }, 500); + }) + .catch((res) => { + alert("淇敼澶辫触锛岃閲嶈瘯锛�"); + this.fullscreenLoading = false; + }); + } else { + return false; + } + }); + }, + //缂栬緫鎸夐挳 editInfo(row) { delete row.updateTime; delete row.updateUser; - this.ruleForm = row; + row.pwd = ""; + this.initialForm = JSON.stringify(row); + this.behavior = "淇敼淇℃伅"; + this.editForm = JSON.parse(JSON.stringify(row)); this.dialogFormVisible = true; }, - editPwd(row) { - console.log(row.id + "---" + row.pwd); + //缂栬緫閫夋嫨鍗曚綅 + editChange(value) { + this.editForm.depid = value; }, - sendNode() { - this.showDepTree = false; - this.ruleForm.depName = this.newDep.name; - this.ruleForm.depid = this.newDep.id; - }, + //鍏抽棴寮瑰嚭妗� handleClose(done) { this.$confirm("纭鍏抽棴锛�") .then((_) => { + this.editForm = { + uid: "", + uname: "", + oldPwd: "", + pwd: "", + checkPass: "", + sex: null, + natives: "", + depid: null, + idcard: "", + job: "", + edu: "", + addr: "", + email: "", + contact: "", + status: null, + bak: "", + salt: "", + }; + this.pwdForm = { + adminPwd: "", + newPwd: "", + checkPwd: "", + ids: [], + }; + done(); }) .catch((_) => {}); }, - sendEdit(){ - + //鎻愪氦缂栬緫 + sendEdit(formName) { + this.$refs[formName].validate((valid) => { + if (valid) { + encrypt.setPublicKey(this.$store.state.key); + this.editForm.uid = encrypt.encrypt(this.editForm.uid); + this.editForm.salt = encrypt.encrypt(this.editForm.pwd); + this.editForm.pwd = encrypt.encrypt(this.editForm.oldPwd); + this.fullscreenLoading = true; + delete this.editForm.checkPass; + delete this.editForm.oldPwd; + updateUser(this.editForm) + .then((res) => { + setTimeout(() => { + this.fullscreenLoading = false; + if (res.code == 200) { + this.getUserInfo(1, 10); + this.$message({ + message: "淇敼鎴愬姛", + type: "success", + }); + this.editForm = {}; + this.dialogFormVisible = false; + } + }, 500); + }) + .catch((res) => { + alert("淇敼澶辫触锛岃閲嶈瘯锛�"); + this.fullscreenLoading = false; + }); + } else { + console.log("error submit!!"); + return false; + } + }); }, - showAddDialog() { - this.dialogTableVisible = true; + cancelEdit() { + this.$nextTick(() => { + this.editForm = JSON.parse(this.initialForm); + }); + }, + //澶氶�� + handleSelectionChange(val) { + this.multipleSelection = val; + }, + handleSizeChange(val) { + // console.log(`姣忛〉 ${val} 鏉); + this.pageSize = val; + this.queryInfo(); + }, + handleCurrentChange(val) { + // console.log(`褰撳墠椤�: ${val}`); + this.pageIndex = val; + this.currentPage = val; + this.queryInfo(); }, }, mounted() { this.getUserInfo(1, 10); + this.getpublickey(); }, }; </script> @@ -508,6 +1015,7 @@ width: 300px; } .inquire { + position: relative; height: 110px; overflow: auto; padding: 8px; @@ -529,63 +1037,27 @@ } .el-dialog { .el-form-item { - margin-bottom: 12px; - width: 100%; - } - .box-card { - position: absolute; - z-index: 100; - top: -243px; - left: 450px; - height: 800px; - width: 350px; - /deep/ .el-card__body { - height: 85%; - overflow: auto; + margin-bottom: 20px; + // width: 48%; + /deep/.el-form-item__error { + width: 300px; } - - // background-color: #bfa; - } - .depTreeBox { - overflow: hidden; - - .el-tree { - background: transparent; - font-size: 15px; - font-family: Microsoft YaHei; - font-weight: 400; - color: #000000; - /deep/ .el-tree-node { - padding-top: 10px; - // padding-bottom: 10px; + .isNewUser { + display: inline-block; + width: 75px; + margin-left: 5px; + img { + width: 1em; } - /deep/ .el-tree-node:focus > .el-tree-node__content { - background-color: #b9b9b9; - } - /deep/ .el-tree-node__content:hover { - background-color: rgb(153, 153, 153); - } - .btnBox { - margin: 0 10px 0 5px; - .el-button + .el-button { - margin-left: 5px; - } - } + } + .el-cascader, + .el-select { + width: 300px; } } } /deep/ .el-dialog__body { - padding: 30px 0 0 0; + padding: 10px 0 0 0; } } - -// /deep/ .el-card__header { -// padding: 10px 10px !important; -// } -// /deep/ .el-dialog { -// margin-top: 2vh !important; -// } -// /deep/ .el-dialog__wrapper { -// overflow: hidden !important; -// } </style> -- Gitblit v1.9.3