From d3a7b64c6855523c1d4b4978df09eda788c0064c Mon Sep 17 00:00:00 2001 From: value <z1292839451@163.com> Date: 星期三, 24 四月 2024 18:20:41 +0800 Subject: [PATCH] 检验模板调整 --- src/components/view/role-manage.vue | 206 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 190 insertions(+), 16 deletions(-) diff --git a/src/components/view/role-manage.vue b/src/components/view/role-manage.vue index 03dd0f3..9bc9e85 100644 --- a/src/components/view/role-manage.vue +++ b/src/components/view/role-manage.vue @@ -42,15 +42,15 @@ <el-row class="title"> <el-col :span="12" style="padding-left: 20px;">瑙掕壊绠$悊</el-col> <el-col :span="12" style="text-align: right;"> - <el-button size="medium" type="primary" @click="opeaAdd">鏂板瑙掕壊</el-button> + <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">鏂板瑙掕壊</el-button> </el-col> </el-row> </div> <div class="search"> <div class="search_thing"> <div class="search_label">瑙掕壊鍚嶇О锛�</div> - <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable - v-model="componentData.entity.name" @keyup.enter.native="refreshTable()"></el-input></div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="componentData.entity.name" + @keyup.enter.native="refreshTable()"></el-input></div> </div> <div class="search_thing" style="padding-left: 30px;"> <el-button size="small" @click="refresh()">閲� 缃�</el-button> @@ -58,9 +58,56 @@ </div> </div> <div class="table"> - <ValueTable ref="ValueTable" :url="$api.user.selectRoleLists" :delUrl="$api.user.delRole" :componentData="componentData" :key="upIndex" - @upRole="upRole" @selectRole="selectRole"/> + <ValueTable ref="ValueTable" :url="$api.user.selectRoleLists" :delUrl="$api.user.delRole" + :componentData="componentData" :key="upIndex" @upRole="upRole" @selectRole="selectRole" /> </div> + <el-dialog :title="type" :visible.sync="addDia" width="500px" @closed="closed"> + <div style="max-height: 500px;overflow-y: auto;padding: 8px;" v-if="addDia"> + <el-row style="line-height: 40px;margin-bottom: 15px;"> + <el-col :span="8"><span class="required-span">* </span>瑙掕壊鍚�</el-col> + <el-col :span="16"> + <el-input v-model="addData.roleName" size="medium" placeholder="闇�鍞竴瑙掕壊鍚�" clearable :disabled="type=='鏌ョ湅'"></el-input> + </el-col> + </el-row> + <el-divider content-position="left">鏉冮檺鍒嗛厤</el-divider> + <el-collapse style="margin-top: 10px;"> + <el-collapse-item title="鏌ヨ"> + <el-row style="padding: 3px 30px;" v-for="(a, ai) in menu" :key="ai" v-if="a.type=='鏌ヨ'"> + <el-col :span="18"> + <el-checkbox :disabled="type=='鏌ョ湅'" v-model="a.isClick">{{a.remark}}</el-checkbox> + </el-col> + <el-col :span="6"> + <el-checkbox :disabled="type=='鏌ョ湅'" v-model="a.look">鍙湅鎴�</el-checkbox> + </el-col> + </el-row> + </el-collapse-item> + <el-collapse-item title="娣诲姞"> + <div style="padding: 3px 30px;" v-for="(a, ai) in menu" :key="ai" v-if="a.type=='娣诲姞'"><el-checkbox + v-model="a.isClick" :disabled="type=='鏌ョ湅'">{{a.remark}}</el-checkbox></div> + </el-collapse-item> + <el-collapse-item title="淇敼"> + <div style="padding: 3px 30px;" v-for="(a, ai) in menu" :key="ai" v-if="a.type=='淇敼'"><el-checkbox + v-model="a.isClick" :disabled="type=='鏌ョ湅'">{{a.remark}}</el-checkbox></div> + </el-collapse-item> + <el-collapse-item title="鍒犻櫎"> + <div style="padding: 3px 30px;" v-for="(a, ai) in menu" :key="ai" v-if="a.type=='鍒犻櫎'"><el-checkbox + v-model="a.isClick" :disabled="type=='鏌ョ湅'">{{a.remark}}</el-checkbox></div> + </el-collapse-item> + <el-collapse-item title="瀵煎叆"> + <div style="padding: 3px 30px;" v-for="(a, ai) in menu" :key="ai" v-if="a.type=='瀵煎叆'"><el-checkbox + v-model="a.isClick" :disabled="type=='鏌ョ湅'">{{a.remark}}</el-checkbox></div> + </el-collapse-item> + <el-collapse-item title="瀵煎嚭"> + <div style="padding: 3px 30px;" v-for="(a, ai) in menu" :key="ai" v-if="a.type=='瀵煎嚭'"><el-checkbox + v-model="a.isClick" :disabled="type=='鏌ョ湅'">{{a.remark}}</el-checkbox></div> + </el-collapse-item> + </el-collapse> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="addDia = false">鍙� 娑�</el-button> + <el-button type="primary" @click="saveAddData" :loading="addLoad" v-if="type!='鏌ョ湅'">纭� 瀹�</el-button> + </span> + </el-dialog> </div> </template> @@ -80,32 +127,46 @@ order: 'asc' } }, - isIndex: true, - showSelect: true, + showSelect: false, select: true, + isIndex: true, do: [{ font: '缂栬緫', type: 'text', method: 'upRole', - },{ + field: [] + }, { id: 'delete', font: '鍒犻櫎', type: 'text', method: 'doDiy', - },{ + }, { font: '鏌ョ湅', type: 'text', method: 'selectRole', }], - tagField: {} + tagField: {}, + selectField: {} }, entityCopy: {}, upIndex: 0, - addDia: false + addDia: false, + addLoad: false, + addData: { + roleId2: null, + roleName: null, + powers: [] + }, + menu: [], + menuCopy: [], + type: '鏂板', + addPower: true } }, mounted() { this.entityCopy = this.HaveJson(this.componentData.entity) + this.selectMenuList() + this.getPower() }, methods: { refreshTable() { @@ -115,14 +176,127 @@ this.componentData.entity = this.HaveJson(this.entityCopy) this.upIndex++ }, + selectMenuList() { + this.$axios.get(this.$api.user.selectMenuList).then(res => { + res.data.forEach(a => { + a.isClick = false + a.look = false + }) + this.menu = res.data + this.menuCopy = this.HaveJson(res.data) + }) + }, upRole(row) { - console.log(row); + this.type = '淇敼' + this.addData.roleName = row.name + this.selectPowerByRoleId(row.id) }, - selectRole(row){ - console.log(row); + selectRole(row) { + this.type = '鏌ョ湅' + this.addData.roleName = row.name + this.selectPowerByRoleId(row.id) }, - opeaAdd() { - + openAdd() { + this.type = '鏂板' + this.addDia = true + }, + saveAddData() { + if (this.addData.roleName == '' || this.addData.roleName == null) { + this.$message.error('璇峰~鍐欒鑹插悕') + return + } + this.addLoad = true + let url = '' + if (this.type == '鏂板') { + url = this.$api.user.addRole + } else { + url = this.$api.user.upRole + } + this.addData.powers = [] + this.menu.forEach(a => { + if (a.isClick) { + let str = 0 + if (a.look) { + str = 1 + } + this.addData.powers.push({ + menuMethod: a.method, + look: str + }) + } + }) + this.$axios.post(url, { + str: JSON.stringify(this.addData) + }).then(res => { + if(res.code == 201){ + if (this.type == '鏂板') { + this.$message.error('娣诲姞澶辫触') + } else { + this.$message.error('淇敼澶辫触') + } + this.addLoad = false + return + } + if (this.type == '鏂板') { + this.$message.success('娣诲姞鎴愬姛') + } else { + this.$message.success('淇敼鎴愬姛') + } + this.addLoad = false + this.addDia = false + this.refreshTable() + }).catch(e => { + this.addLoad = false + }) + }, + selectPowerByRoleId(id) { + this.$axios.post(this.$api.user.selectPowerByRoleId, { + id: id + }).then(res => { + res.data.forEach(a => { + this.menu.forEach(b => { + if (a.menuMethod == b.method) { + b.isClick = true + b.look = (a.look == 1 ? true : false) + } + }) + }) + this.addData.roleId2 = id + this.addDia = true + }) + }, + closed() { + this.addData = { + roleId2: null, + roleName: null, + powers: [] + } + this.menu = this.HaveJson(this.menuCopy) + }, + // 鏉冮檺鍒嗛厤 + getPower(){ + let power = JSON.parse(sessionStorage.getItem('power')) + let up = false + let del = false + let add = false + for (var i = 0; i < power.length; i++) { + if(power[i].menuMethod=='upRole'){ + up = true + } + if(power[i].menuMethod=='delRole'){ + del = true + } + if(power[i].menuMethod=='addRole'){ + add = true + } + } + if(!del){ + this.componentData.do.splice(1, 1) + } + if(!up){ + this.componentData.do.splice(0, 1) + } + this.addPower = add } } } -- Gitblit v1.9.3