From 9ce29c536ba2a636416c618761985e2b9a711ee6 Mon Sep 17 00:00:00 2001 From: lxl <lixuliang_hd@126.com> Date: 星期四, 27 十月 2022 14:17:45 +0800 Subject: [PATCH] user --- src/views/userManage/resourceManage.vue | 416 +++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 361 insertions(+), 55 deletions(-) diff --git a/src/views/userManage/resourceManage.vue b/src/views/userManage/resourceManage.vue index b7a3294..5ec2010 100644 --- a/src/views/userManage/resourceManage.vue +++ b/src/views/userManage/resourceManage.vue @@ -23,14 +23,14 @@ size="small" >{{ $t('common.empty') }}</el-button > - <el-button + <el-button v-if="menuStatus.insert" @click="InsertFormdialog = true" icon="el-icon-edit" type="success" size="small" >{{ $t('common.append') }}</el-button > - <el-button + <el-button v-if="menuStatus.delete" @click="DelFromData" icon="el-icon-delete" type="danger" @@ -73,13 +73,13 @@ > </el-table-column> <el-table-column - prop="depid" + prop="depName" align="center" :label="$t('userManage.resManageObj.depid')" > </el-table-column> <el-table-column - prop="dirid" + prop="dirName" align="center" :label="$t('userManage.resManageObj.dirid')" > @@ -91,19 +91,19 @@ > </el-table-column> - <el-table-column + <!-- <el-table-column prop="img" align="center" :label="$t('userManage.resManageObj.img')" > - </el-table-column> - <el-table-column + </el-table-column> --> + <!-- <el-table-column prop="createUser" align="center" :label="$t('userManage.resManageObj.createUser')" > - </el-table-column> - <el-table-column + </el-table-column> --> + <!-- <el-table-column prop="createTime" align="center" :label="$t('userManage.resManageObj.createTime')" @@ -122,7 +122,7 @@ :label="$t('userManage.resManageObj.updateTime')" :formatter="formatTime" > - </el-table-column> + </el-table-column>--> <el-table-column prop="bak" align="center" @@ -142,7 +142,7 @@ size="small" >{{ $t('common.see') }}</el-button > - <el-button + <el-button v-if="menuStatus.update" @click="handleEdit(scope.$index, scope.row)" type="warning" size="small" @@ -175,39 +175,68 @@ </div> <div class="contentBox"> <p> - <label> {{ $t('userManage.userInfoObj.name') }}:</label> + <label> {{ $t('userManage.resManageObj.name') }}:</label> <label class="boxlabel">{{ itemdetail.name }}</label> </p> <el-divider></el-divider> <p> <p> - <label> {{ $t('userManage.userInfoObj.tag') }}:</label> - <label class="boxlabel">{{ itemdetail.tag }}</label> + <label> {{ $t('userManage.resManageObj.server') }}:</label> + <label class="boxlabel">{{ itemdetail.server }}</label> </p> </p> <el-divider></el-divider> <p> - <label> {{ $t('userManage.userInfoObj.createUser') }}:</label> - <label class="boxlabel">{{ itemdetail.createUser }}</label> + <label> {{ $t('userManage.resManageObj.source') }}:</label> + <label class="boxlabel">{{ itemdetail.source }}</label> </p> <el-divider></el-divider> <p> - <label> {{ $t('userManage.userInfoObj.createTime') }}:</label> + <label> {{ $t('userManage.resManageObj.depid') }}:</label> + <label class="boxlabel">{{ itemdetail.depName }}</label> + </p> + <el-divider></el-divider> + <p> + <label> {{ $t('userManage.resManageObj.dirid') }}:</label> + <label class="boxlabel">{{ itemdetail.dirName }}</label> + </p> + <el-divider></el-divider> + <p> + <label> {{ $t('userManage.resManageObj.descr') }}:</label> + <label class="boxlabel">{{ itemdetail.descr }}</label> + </p> + <el-divider></el-divider> + <p> + <label> {{ $t('userManage.resManageObj.img') }}:</label> + <label class="boxlabel"> + <div style="width:440px;height:200px;"> + <img style="width:100%; height:100%" :src="itemdetail.imageFile" alt=""/> + </div> + </label> + </p> + <el-divider></el-divider> + <p> + <label> {{ $t('userManage.resManageObj.createUser') }}:</label> + <label class="boxlabel">{{ itemdetail.createUser }}</label> + </p> + <el-divider></el-divider> + <p> + <label> {{ $t('userManage.resManageObj.createTime') }}:</label> <label class="boxlabel">{{ itemdetail.createTime }}</label> </p> - <el-divider></el-divider> - <p> - <label> {{ $t('userManage.userInfoObj.updateUser') }}:</label> + <el-divider></el-divider> + <p> + <label> {{ $t('userManage.resManageObj.updateUser') }}:</label> <label class="boxlabel">{{ itemdetail.updateUser }}</label> </p> - <el-divider></el-divider> - <p> - <label> {{ $t('userManage.userInfoObj.updateTime') }}:</label> + <el-divider></el-divider> + <p> + <label> {{ $t('userManage.resManageObj.updateTime') }}:</label> <label class="boxlabel">{{ itemdetail.updateTime }}</label> </p> - <el-divider></el-divider> - <p> - <label> {{ $t('userManage.userInfoObj.bak') }}:</label> + <el-divider></el-divider> + <p> + <label> {{ $t('userManage.resManageObj.bak') }}:</label> <label class="boxlabel">{{ itemdetail.bak }}</label> </p> <el-divider></el-divider> @@ -263,7 +292,7 @@ :label="$t('userManage.resManageObj.depid')" :label-width="formLabelWidth" > - <el-input v-model="insertform.depid" disabled autocomplete="off"></el-input> + <el-input v-model="insertform.depValue" disabled autocomplete="off"></el-input> <el-link :underline="false" @click="showDepTree(0)" @@ -275,10 +304,10 @@ :label="$t('userManage.resManageObj.dirid')" :label-width="formLabelWidth" > - <el-input v-model="insertform.dirid" disabled autocomplete="off"></el-input> + <el-input v-model="insertform.dirValue" disabled autocomplete="off"></el-input> <el-link :underline="false" - @click="showDepTree(0)" + @click="showDirTree(0)" style="margin-left: 10px" ><i class="el-icon-plus"></i ></el-link> @@ -289,16 +318,32 @@ > <el-input v-model="insertform.descr" autocomplete="off"></el-input> </el-form-item> - <el-form-item + <el-form-item :label="$t('userManage.resManageObj.img')" :label-width="formLabelWidth" - > - <el-input v-model="insertform.img" autocomplete="off"></el-input> + > <el-input v-model="insertform.img" disabled autocomplete="off"></el-input> + <input + name="file1" + :accept="'.jpg,.png'" + type="file" + id="imageFile" + multiple="multiple" + style="display: none" + @change="insertFile" + /> <el-link + :title="$t('common.append')" :underline="false" - + @click="getIsertFile" style="margin-left: 10px" ><i class="el-icon-plus"></i + ></el-link> + <el-link + :title="$t('common.upload')" + :underline="false" + @click="setUploadFile(0)" + style="margin-left: 10px" + ><i class="el-icon-upload2"></i ></el-link> </el-form-item> <el-form-item @@ -323,26 +368,90 @@ style="overflow: hidden" :visible.sync="EditFormdialog" :before-close="EditFromDataClose" - width="30%" > - <el-form :model="upform"> + <el-form :model="upform"> <el-form-item - :label="$t('userManage.userInfoObj.name')" + :label="$t('userManage.resManageObj.name')" :label-width="formLabelWidth" > - <el-input v-model="upform.name" ></el-input> + <el-input v-model="upform.name" autocomplete="off"></el-input> </el-form-item> <el-form-item - :label="$t('userManage.userInfoObj.tag')" + :label="$t('userManage.resManageObj.server')" :label-width="formLabelWidth" > - <el-input v-model="upform.tag" ></el-input> + <el-input v-model="upform.server" autocomplete="off"></el-input> </el-form-item> <el-form-item - :label="$t('userManage.userInfoObj.bak')" + :label="$t('userManage.resManageObj.source')" :label-width="formLabelWidth" > - <el-input v-model="upform.bak" ></el-input> + <el-input v-model="upform.source" autocomplete="off"></el-input> + </el-form-item> + <el-form-item + :label="$t('userManage.resManageObj.depid')" + :label-width="formLabelWidth" + > + <el-input v-model="upform.depValue" disabled autocomplete="off"></el-input> + <el-link + :underline="false" + @click="showDepTree(1)" + style="margin-left: 10px" + ><i class="el-icon-plus"></i + ></el-link> + </el-form-item> + <el-form-item + :label="$t('userManage.resManageObj.dirid')" + :label-width="formLabelWidth" + > + <el-input v-model="upform.dirValue" disabled autocomplete="off"></el-input> + <el-link + :underline="false" + @click="showDirTree(1)" + style="margin-left: 10px" + ><i class="el-icon-plus"></i + ></el-link> + </el-form-item> + <el-form-item + :label="$t('userManage.resManageObj.descr')" + :label-width="formLabelWidth" + > + <el-input v-model="upform.descr" autocomplete="off"></el-input> + </el-form-item> + <el-form-item + :label="$t('userManage.resManageObj.img')" + :label-width="formLabelWidth" + > + <el-input v-model="upform.img" disabled autocomplete="off"></el-input> + <input + name="file1" + :accept="'.jpg,.png'" + type="file" + id="editimageFile" + multiple="multiple" + style="display: none" + @change="updateFile" + /> + <el-link + :underline="false" + @click="getupdateFile" + style="margin-left: 10px" + ><i class="el-icon-plus"></i + ></el-link> + <el-link v-if="menuStatus.upload" + :title="$t('common.upload')" + :underline="false" + @click="setUploadFile(1)" + style="margin-left: 10px" + ><i class="el-icon-upload2"></i + ></el-link> + </el-form-item> + <el-form-item + :label="$t('userManage.resManageObj.bak')" + :label-width="formLabelWidth" + > + <el-input v-model="upform.bak" autocomplete="off"></el-input> + </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> @@ -354,17 +463,56 @@ }}</el-button> </div> </el-dialog> + <div class="leftTree" v-if="showDirCata"> + <div class="treeBox"> + <style-dir-tree></style-dir-tree> + </div> + <div class="btnBox"> + <el-button type="primary" size="small" @click="selectDirCataName">{{ + $t('common.confirm') + }}</el-button> + <el-button type="primary" size="small" @click="showDirCata = false">{{ + $t('common.close') + }}</el-button> + </div> + </div> + <div class="leftTree" v-if="showDepCata"> + <div class="treeBox"> + <style-dep-tree></style-dep-tree> + </div> + <div class="btnBox"> + <el-button type="primary" size="small" @click="selectDepCataName">{{ + $t('common.confirm') + }}</el-button> + <el-button type="primary" size="small" @click="showDepCata = false">{{ + $t('common.close') + }}</el-button> + </div> + </div> </div> </template> <script> +import $ from 'jquery'; +import { + getToken +} from '../../utils/auth.js' import moment from 'moment'; import MyBread from '../../components/MyBread.vue'; -import { select_Res_ByPageAndCount, insertAuth, updateAuth, deleteAuths } from '../../api/api.js'; +import { select_Res_ByPageAndCount, insertRes, updateRes, deleteRess, upload_res } + from '../../api/api.js'; +import styleDirTree from '../datamanage/styleDirTree.vue'; +import styleDepTree from '../datamanage/styleDepTree.vue'; export default { - components: { MyBread }, + components: { MyBread, styleDirTree, styleDepTree }, data() { return { + menuStatus: { + delete: false, + insert: false, + update: false, + upload:false, + }, formLabelWidth: '130px', ruleForm: {}, isTransfer: false, @@ -373,10 +521,18 @@ InsertFormdialog: false, showinfoBox: false, EditFormdialog: false, - insertform: {}, + showDirCata: false, + showDepCata: false, + dirFlag: null, + depFlag: null, + ImageFile: null, + uploadFile: null, + insertform: { + img: '' + }, tableData: [], itemdetail: {}, - upform: {}, + upform: { img: '' }, multipleSelection: [], count: 0, listData: { @@ -391,15 +547,116 @@ label: 'label', }, created() { - this.getRoleTabelData(); + var val = this.$store.state.currentPerms; + var permsEntity = this.$store.state.permsEntity; + for (var i = 0; i < permsEntity.length; i++) { + if (permsEntity[i].perms == val) { + this.showPermsMenu(permsEntity[i]); + } + } + this.getRoleTabelData(); }, methods: { + showPermsMenu(res) { + switch (res.tag) { + case '/delete': + this.menuStatus.delete = true; + break; + case '/insert': + this.menuStatus.insert = true; + break; + case '/update': + this.menuStatus.update = true; + break; + case '/upload': + this.menuStatus.upload = true; + break; + } + }, + getIsertFile() { + $('#imageFile').click(); + }, + getupdateFile() { + $('#editimageFile').click(); + }, + async setUploadFile(res) { + var fs; + if (res == 0) { + fs = document.getElementById("imageFile"); + + }else if (res ==1) { + fs = document.getElementById("editimageFile"); + if(fs.files.length == 0){ + return; + } + } + var formData = new FormData(); + formData.append("file", fs.files[0]); + var val_data = await upload_res(formData); + if (val_data.code == 200) { + this.uploadFile = val_data.result; + this.$message({ + message: '涓婁紶鎴愬姛锛�', + type: 'success', + }); + } else { + this.$message({ + message: '涓婁紶澶辫触锛�', + type: 'warning', + }); + } + }, + insertFile() { + var val = document.getElementById('imageFile').files; + if (!val || !val.length) return; + this.insertform.img = val[0].name; + }, + updateFile() { + var val = document.getElementById('editimageFile').files; + if (!val || !val.length) return; + this.upform.img = val[0].name; + }, + showDirTree(res) { + this.dirFlag = res; + this.showDirCata = true; + }, + showDepTree(res) { + this.depFlag = res; + this.showDepCata = true; + }, + selectDepCataName() { + this.showDepCata = false; + switch (this.depFlag) { + case 0: + this.insertform.depValue = this.$store.state.styleDepCateNodes.name; + this.insertform.depid = this.$store.state.styleDepCateNodes.id; + break; + case 1: + this.upform.depValue = this.$store.state.styleDepCateNodes.name; + this.upform.depid = this.$store.state.styleDepCateNodes.id; + break; + } + }, + selectDirCataName() { + this.showDirCata = false; + switch (this.dirFlag) { + case 0: + // var data = this.$store.state.styleDirCateNodes; + this.insertform.dirValue = this.$store.state.styleDirCateNodes.name; + this.insertform.dirid = this.$store.state.styleDirCateNodes.id; + break; + case 1: + this.upform.dirValue = this.$store.state.styleDirCateNodes.name; + this.upform.dirid = this.$store.state.styleDirCateNodes.id; + break; + } + }, async DelFromData() { var std = []; for (var i in this.multipleSelection) { std.push(this.multipleSelection[i].id); } - const data = await deleteAuths({ ids: std.toString() }); + const data = await deleteRess({ ids: std.toString() }); if (data.code == 200) { this.$message({ message: '鍒犻櫎鎴愬姛锛�', @@ -429,10 +686,16 @@ this.upform = {}; }, async EditFromData() { - const data = await updateAuth(this.upform); + + + if (this.uploadFile != null) { + this.upform.img = this.uploadFile; + } + const data = await updateRes(this.upform); if (data.code == 200) { this.EditFormdialog = false; this.upform = {}; + this.uploadFile = null; this.$message({ message: '淇敼鎴愬姛锛�', type: 'success', @@ -448,11 +711,17 @@ }, showDetail(index, row) { this.showinfoBox = true; + var token = getToken(); this.itemdetail = row; + this.itemdetail.createTime = this.formomentTime(this.itemdetail.createTime); + this.itemdetail.updateTime = this.formomentTime(this.itemdetail.updateTime); + this.itemdetail.imageFile = BASE_URL + "/res/download?guid=" + row.img + "&token=" + token }, handleEdit(index, row) { this.EditFormdialog = true; this.upform = row; + this.upform.depValue = row.depName; + this.upform.dirValue = row.dirName; }, closeDetial() { this.showinfoBox = false; @@ -471,10 +740,23 @@ this.insertform = {}; }, async insertFromData() { - const data = await insertAuth(this.insertform); + if (this.insertform.dirid == null || this.insertform.depid == null) { + this.$message({ + message: '璇烽�夋嫨璧勬簮鎵�灞炵殑鐩綍鎴栧崟浣�', + type: 'warning', + }); + return; + } + if (this.uploadFile != null) { + this.insertform.img = this.uploadFile; + } + const data = await insertRes(this.insertform); if (data.code == 200) { this.InsertFormdialog = false; - this.insertform = {}; + this.insertform= { + img: '' + }; + this.uploadFile = null; this.$message({ message: '娣诲姞鎴愬姛锛�', type: 'success', @@ -493,10 +775,11 @@ } this.listData.name = this.ruleForm.name; const data = await select_Res_ByPageAndCount(this.listData); + if (data.code != 200) { this.$message.error('鍒楄〃璋冪敤澶辫触'); } - console.log(data.result); + this.tableData = data.result; this.count = data.count; }, @@ -526,15 +809,15 @@ padding: 10px; box-sizing: border-box; .el-input { - width: 745px; + width: 730px; } .power_quire { - margin: 10px auto; + margin: 10px auto; background: #fff; border-radius: 5px; border: 1px solid rgb(202, 201, 204); margin-bottom: 10px; - .el-form-item { + .el-form-item { margin: 5px; } .el-input { @@ -542,7 +825,7 @@ } } .table_box { - height:76%; + height: 76%; padding: 10px; background: #fff; border-radius: 5px; @@ -551,6 +834,29 @@ .pagination_box { margin-top: 20px; } + .leftTree { + position: absolute; + z-index: 10; + z-index: 9999; + top: 100px; + left: 800px; + width: 400px; + height: 600px; + background: #f0f2f5; + border: 1px solid #000; + .treeBox { + height: 550px; + overflow: auto; + /deep/ .el-tree-node__content:hover { + background-color: rgb(153, 153, 153); + } + } + .btnBox { + width: 160px; + margin: 10px auto 0; + // background-color: red; + } + } .infoBox { width: 500px; border: 1px solid #eee; -- Gitblit v1.9.3