From 8460d91255f5ff11a6c9a8199c313226b21f815a Mon Sep 17 00:00:00 2001 From: lxl <lixuliang_hd@126.com> Date: 星期四, 13 十月 2022 18:03:57 +0800 Subject: [PATCH] 11 --- src/views/userManage/userInfoManage.vue | 441 ++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 340 insertions(+), 101 deletions(-) diff --git a/src/views/userManage/userInfoManage.vue b/src/views/userManage/userInfoManage.vue index 3d3de5d..4ba9546 100644 --- a/src/views/userManage/userInfoManage.vue +++ b/src/views/userManage/userInfoManage.vue @@ -1,5 +1,5 @@ <template> - <div class="logLog_box"> + <div class="userInfo_box"> <My-bread :list="[ `${$t('userManage.userManage')}`, @@ -15,37 +15,6 @@ :placeholder="$t('operatManage.ELM.usernameInfo')" /> </el-form-item> - <!-- <el-form-item - :label="$t('userManage.userInfoObj.userStatus')" - prop="userStatus" - > - <el-select - v-model="form.userStatus" - :placeholder="$t('userManage.userInfoObj.userStatus')" - > - <el-option :label="$t('userManage.userInfoObj.all')" value="all" /> - <el-option - :label="$t('userManage.userInfoObj.normal')" - value="normal" - /> - <el-option - :label="$t('userManage.userInfoObj.disable')" - value="disable" - /> - <el-option - :label="$t('userManage.userInfoObj.delete')" - value="delete" - /> - <el-option - :label="$t('userManage.userInfoObj.apply')" - value="apply" - /> - <el-option - :label="$t('userManage.userInfoObj.rejection')" - value="rejection" - /> - </el-select> - </el-form-item> --> <el-form-item :label="$t('userManage.userInfoObj.depName')" prop="depName" @@ -53,7 +22,20 @@ <el-input v-model="form.depName" :placeholder="$t('common.pleaseInput')" - /> + /> </el-form-item + ><el-form-item> + <el-button @click="onSubmit" + ><i class="el-icon-search"></i> {{ + $t("operatManage.ELM.search") + }}</el-button + > + </el-form-item> + <el-form-item> + <el-button @click="resetForm('ruleForm')" + ><i class="el-icon-delete"></i> {{ + $t("operatManage.ELM.reset") + }}</el-button + > </el-form-item> <br /> <el-form-item> @@ -63,17 +45,10 @@ }}</el-button > </el-form-item> - <el-form-item style="margin-left: 60%"> - <el-button @click="onSubmit" size="mini" - ><i class="el-icon-search"></i> {{ - $t("operatManage.ELM.search") - }}</el-button - > - </el-form-item> <el-form-item> - <el-button @click="resetForm('ruleForm')" size="mini" + <el-button type="danger" size="small" @click="showAddDialog" ><i class="el-icon-delete"></i> {{ - $t("operatManage.ELM.reset") + $t("common.delete") }}</el-button > </el-form-item> @@ -85,29 +60,27 @@ stripe border style="width: 100%" - max-height="99%" + height="99%" > <el-table-column align="center" type="index" :label="$t('common.index')" + width="70px" fixed /> <el-table-column align="center" prop="uname" + width="150px" :label="$t('userManage.userInfoObj.uname')" fixed - /> - <el-table-column - align="center" - prop="pwd" - :label="$t('userManage.userInfoObj.pwd')" /> <el-table-column align="center" prop="sex" + width="80px" :label="$t('userManage.userInfoObj.sex')" > <template slot-scope="scope"> @@ -119,40 +92,48 @@ <el-table-column align="center" prop="natives" + width="100px" :label="$t('userManage.userInfoObj.natives')" /> <el-table-column align="center" prop="depName" + width="200px" :label="$t('userManage.userInfoObj.depName')" /> <el-table-column align="center" prop="idcard" + width="200px" :label="$t('userManage.userInfoObj.idcard')" /><el-table-column align="center" prop="job" + width="200px" :label="$t('userManage.userInfoObj.job')" /> <el-table-column align="center" prop="edu" + width="200px" :label="$t('userManage.userInfoObj.edu')" /> <el-table-column align="center" prop="addr" + width="200px" :label="$t('userManage.userInfoObj.addr')" /> <el-table-column align="center" prop="email" + width="200px" :label="$t('userManage.userInfoObj.email')" /> <el-table-column align="center" prop="contact" + width="200px" :label="$t('userManage.userInfoObj.contact')" /> @@ -172,22 +153,30 @@ <el-table-column align="center" prop="bak" + width="200px" :label="$t('userManage.userInfoObj.bak')" /> - <el-table-column :label="$t('common.operate')" fixed="right"> - <template #default> + <el-table-column + :label="$t('common.operate')" + width="200px" + fixed="right" + > + <template slot-scope="scope"> <!-- <el-button type="primary" size="small">淇敼</el-button> --> - <el-button type="warning" size="mini">{{ - $t("common.edit") - }}</el-button> - <el-button type="danger" size="mini">{{ - $t("common.delete") - }}</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> - <div style="margin-top: 40px" class="pagination_box"> + <div style="margin-top: 25px" class="pagination_box"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" @@ -195,17 +184,133 @@ :page-sizes="[10, 20, 30, 40]" :page-size="10" layout="total, sizes, prev, pager, next, jumper" - :total="1" + :total="count" > </el-pagination> </div> </div> + <el-dialog + width="500px" + top="7vh" + title="淇敼淇℃伅" + :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-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 + > + </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" + > + <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 label="澶囨敞" :label-width="formLabelWidth"> + <el-input v-model="ruleForm.bak" autocomplete="off"></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" + type="primary" + @click="sendEdit('ruleForm')" + v-loading.fullscreen.lock="fullscreenLoading" + >鎻愪氦</el-button + > + </div> + </el-dialog> </div> </template> <script> import MyBread from "../../components/MyBread.vue"; -import { queryPageUser } from "../../api/api"; +import { + queryDepTree, + queryPageUser, + insertUser, + deleteUser, + updateUser, + updateUserPwd, +} from "../../api/api"; export default { //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� components: { @@ -213,32 +318,86 @@ }, data() { let validName = (rule, value, callback) => { - if (value === "") { - return callback(new Error("鐩綍鍚嶇О涓嶈兘涓虹┖")); + if (value === "" || value === null || value === undefined) { + return callback(new Error("鍚嶇О涓嶈兘涓虹┖")); } else { callback(); } }; return { currentPage: 1, + defaultProps: { + children: "children", + label: "name", + }, form: { username: "", - userStatus: "all", - requestIp: "", + // userStatus: "all", + depName: "", }, + showDepTree: true, tableData: [], fullscreenLoading: false, - itemdetail: {}, - formLabelWidth: "170px", + newDep: { + name: "", + id: null, + }, + count: 0, + formLabelWidth: "100px", dialogFormVisible: false, ruleForm: { - level: null, - orderNum: null, - pid: null, - name: "", - descr: "", + uname: "", + pwd: "", + sex: "", + natives: "", + depName: "", + idcard: "", + job: "", + edu: "", + addr: "", + email: "", + contact: "", + status: "", bak: "", + depid: null, }, + statusOpt: [ + { + value: 0, + label: "姝e父", + }, + { + value: 1, + label: "绂佺敤", + }, + { + value: 2, + label: "鍒犻櫎", + }, + { + value: 3, + label: "鐢宠", + }, + { + value: 4, + label: "鎷掓壒", + }, + ], + depList: [], + sexOpt: [ + { + value: 0, + label: "濂�", + }, + { + value: 1, + label: "鐢�", + }, + { + value: -1, + label: "鏈煡", + }, + ], rules: { name: [{ validator: validName, trigger: "blur" }], }, @@ -249,33 +408,44 @@ // 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: "鏃犳硶鑾峰彇鍗曚綅鍒楄〃", + }); + } + }); queryPageUser({ pageIndex: 1, pageSize: 10, }).then((res) => { if (res.code == 200) { this.tableData = res.result; + this.count = res.count; } else { console.log("鎺ュ彛鎶ラ敊"); } }); }, - // getUserInfo() { - // //鑾峰彇鐩綍鏍戞渶澶D锛屾柊寤鸿妭鐐逛娇鐢� - // // queryMaxId().then((res) => { - // // this.id = res.data; - // // }); - // queryDepTree().then((res) => { - // if (res.status == 200) { - // this.depList = this.treeData(res.data.result); - // this.oriData = res.data.result; - // this.newData = res.data.result; - // } else { - // console.log("鎺ュ彛鎶ラ敊"); - // } - // }); - // }, - + treeData(source) { + let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕 + return cloneData.filter((father) => { + // 寰幆鎵�鏈夐」 + let branchArr = cloneData.filter((child) => father.id == child.pid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁 + branchArr.length > 0 ? (father.children = branchArr) : ""; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊� + return father.pid == 0; // 杩斿洖涓�绾ц彍鍗� + }); + }, + showDep() { + this.showDepTree = true; + }, + handleNodeClick(data) { + this.newDep.name = data.name; + this.newDep.id = data.id; + }, handleSizeChange(val) { console.log(`姣忛〉 ${val} 鏉); }, @@ -287,6 +457,30 @@ }, resetForm(formName) { this.$refs[formName].resetFields(); + }, + editInfo(row) { + delete row.updateTime; + delete row.updateUser; + this.ruleForm = row; + this.dialogFormVisible = true; + }, + editPwd(row) { + console.log(row.id + "---" + row.pwd); + }, + sendNode() { + this.showDepTree = false; + this.ruleForm.depName = this.newDep.name; + this.ruleForm.depid = this.newDep.id; + }, + handleClose(done) { + this.$confirm("纭鍏抽棴锛�") + .then((_) => { + done(); + }) + .catch((_) => {}); + }, + sendEdit(){ + }, showAddDialog() { this.dialogTableVisible = true; @@ -304,7 +498,7 @@ </style> <style lang="less" scoped> //@import url(); 寮曞叆鍏叡css绫� -.logLog_box { +.userInfo_box { background: rgb(240, 242, 245); border-radius: 10px; height: 100%; @@ -327,26 +521,71 @@ } } .table_box { - height: 65%; + height: 70%; padding: 10px; background: #fff; border-radius: 5px; border: 1px solid rgb(202, 201, 204); } - .text-center { - text-align: center; + .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; + } + + // 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; + } + /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; + } + } + } + } } - .select { - width: 300px; + /deep/ .el-dialog__body { + padding: 30px 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; -} + +// /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