From 06a70b6f1f24c5105b1705e892867acf488ca5dd Mon Sep 17 00:00:00 2001 From: 田源 <tianyuan@vci-tech.com> Date: 星期三, 18 十二月 2024 15:28:18 +0800 Subject: [PATCH] UI定义-页签设计&&页面设计区域按钮权限 --- Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue | 181 +++++++++++++++++++++++++++++---------------- 1 files changed, 116 insertions(+), 65 deletions(-) diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue index 88a6823..0eb440a 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue @@ -21,22 +21,22 @@ <el-main> <basic-container> <div> - <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">鍒涘缓</el-button> - <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">淇敼</el-button> - <el-button icon="el-icon-delete" plain size="small" type="danger" @click="deleteClickHandler">鍒犻櫎</el-button> - <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭</el-button> - <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">瀵煎叆</el-button> - <el-button icon="el-icon-circle-plus-outline" plain size="small" type="primary" @click="createViewClickHandler">鍒涘缓瑙嗗浘</el-button> - <el-button icon="el-icon-circle-plus-outline" plain size="small" type="primary" @click="indexClickHandler">鍒涘缓绱㈠紩</el-button> - <el-button icon="el-icon-menu" plain size="small" type="primary" @click="checkClickHandler">涓�鑷存�ф鏌�</el-button> - <el-button icon="el-icon-delete" plain size="small" type="danger" @click="checkClickHandler">鍒犻櫎鏁版嵁</el-button> - <el-button icon="el-icon-delete" plain size="small" type="danger" @click="checkClickHandler">鍒犻櫎鍏ㄩ儴绫诲瀷</el-button> - <el-button icon="el-icon-view" plain size="small" type="primary" @click="checkViewClickHandler">鏌ョ湅浣跨敤鑼冨洿</el-button> + <el-button v-if="permissionList.addBtn" icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">鍒涘缓</el-button> + <el-button v-if="permissionList.editBtn" icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">淇敼</el-button> + <el-button v-if="permissionList.delBtn" icon="el-icon-delete" plain size="small" type="danger" @click="deleteClickHandler">鍒犻櫎</el-button> + <el-button v-if="permissionList.importBtn" icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">瀵煎叆</el-button> + <el-button v-if="permissionList.exportBtn" icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭</el-button> + <el-button v-if="permissionList.createViewBtn" icon="el-icon-circle-plus-outline" plain size="small" type="primary" @click="createViewClickHandler">鍒涘缓瑙嗗浘</el-button> + <el-button v-if="permissionList.createIndexBtn" icon="el-icon-circle-plus-outline" plain size="small" type="primary" @click="indexClickHandler">鍒涘缓绱㈠紩</el-button> + <el-button v-if="permissionList.consistencyCheckBtn" icon="el-icon-menu" plain size="small" type="primary" @click="checkClickHandler">涓�鑷存�ф鏌�</el-button> + <el-button v-if="permissionList.deleteDataBtn" icon="el-icon-delete" plain size="small" type="danger" @click="checkClickHandler">鍒犻櫎鏁版嵁</el-button> + <el-button v-if="permissionList.deleteEveryTypeBtn" icon="el-icon-delete" plain size="small" type="danger" @click="checkClickHandler">鍒犻櫎鍏ㄩ儴绫诲瀷</el-button> + <el-button v-if="permissionList.viewTheScopeBtn" icon="el-icon-view" plain size="small" type="primary" @click="checkViewClickHandler">鏌ョ湅浣跨敤鑼冨洿</el-button> </div> <div style="display: flex;justify-content:left;margin-top: 15px;"> <div class="descBox" style="width: 40%"> - <el-descriptions :column="1" border class="margin-top" size="medium" title="灞炴�т俊鎭�"> - <el-descriptions-item :contentStyle="descriptionOption.contentStyle" + <el-descriptions :column="2" border class="margin-top" size="medium" title="灞炴�т俊鎭�"> + <el-descriptions-item :span="12" :contentStyle="descriptionOption.contentStyle" :labelStyle="descriptionOption.labelStyle"> <template slot="label"> 鍚嶇О @@ -50,7 +50,16 @@ </template> <el-tag v-if="nodeRow.name">{{ nodeRow.name }}</el-tag> </el-descriptions-item> - <el-descriptions-item :contentStyle="descriptionOption.contentStyle" + <el-descriptions-item :contentStyle="descriptionOption.contentStyle+';min-width: 100px;'" + :labelStyle="descriptionOption.labelStyle"> + <template slot="label"> + 鍥炬爣 + </template> + <span class="avue-icon avue-icon--small" style="display: block"> + <span v-html="svgHtml(nodeRow.imageName )"></span> + </span> + </el-descriptions-item> + <el-descriptions-item :span="12" :contentStyle="descriptionOption.contentStyle" :labelStyle="descriptionOption.labelStyle"> <template slot="label"> 瀹炵幇绫� @@ -60,7 +69,7 @@ <el-tag style="max-width: 100%;overflow: hidden;display: block">{{ nodeRow.implClass }}</el-tag> </el-tooltip> </el-descriptions-item> - <el-descriptions-item :contentStyle="descriptionOption.contentStyle" + <el-descriptions-item :span="12" :contentStyle="descriptionOption.contentStyle" :labelStyle="descriptionOption.labelStyle"> <template slot="label"> 鎻忚堪 @@ -69,7 +78,7 @@ </el-descriptions-item> </el-descriptions> </div> - <div class="descBox" style="width: 25%;"> + <div class="descBox" style="width: 24%;"> <el-descriptions :column="1" border class="margin-top" size="medium" title="鐗堟湰瑙勫垯"> <el-descriptions-item :contentStyle="descriptionOption.contentStyle" :labelStyle="descriptionOption.labelStyle"> @@ -121,7 +130,7 @@ </el-descriptions> </div> - <div class="descBox" style="width: calc(35% - 40px);margin-right: 0"> + <div class="descBox" style="width: calc(36% - 40px);margin-right: 0"> <el-descriptions :column="1" border class="margin-top" size="medium" title="鐢熷懡鍛ㄦ湡"> <el-descriptions-item :contentStyle="descriptionOption.contentStyle" :labelStyle="descriptionOption.labelStyle"> @@ -129,6 +138,16 @@ 鐢熷懡鍛ㄦ湡 </template> <el-tag v-if="nodeRow.lifeCycleId">{{ nodeRow.lifeCycleId }}</el-tag> + </el-descriptions-item> + <el-descriptions-item :contentStyle="descriptionOption.contentStyle" + :labelStyle="descriptionOption.labelStyle"> + <template slot="label"> + 澶囬�夌敓鍛藉懆鏈� + </template> + <div v-if="nodeRow.lifeCycleIds"> + <el-tag v-for="item in nodeRow.lifeCycleIds.split(',')" style="margin-right: 5px;">{{ item }}</el-tag> + </div> + </el-descriptions-item> </el-descriptions> </div> @@ -158,20 +177,29 @@ <el-form-item label="绫诲瀷鍚嶇О锛�" prop="id"> <el-input v-model="form.id" :readOnly="title === 'edit'"></el-input> </el-form-item> - <el-form-item label="鏍囩锛�"> - <el-input v-model="form.name"></el-input> - </el-form-item> - <el-form-item label="缁ф壙鑷細"> + <el-row :span="24"> + <el-col :span="12"> + <el-form-item label="鏍囩锛�" prop="name"> + <el-input v-model="form.name"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍥炬爣锛�" prop="imageName"> + <input-icon v-model="form.imageName" placeholder="璇烽�夋嫨鍥炬爣"></input-icon> + </el-form-item> + </el-col> + </el-row> + <el-form-item label="缁ф壙鑷細" prop="fName"> <avue-input-tree :disabled="title === 'add'" v-model="form.fName" placeholder="璇烽�夋嫨涓氬姟绫诲瀷" :props="{label: 'id', value: 'id',children: 'children'}" :dic="inheritTreeData"></avue-input-tree> </el-form-item> - <el-form-item label="瀹炵幇绫伙細"> + <el-form-item label="瀹炵幇绫伙細" prop="implClass"> <el-input v-model="form.implClass"></el-input> </el-form-item> - <el-form-item label="鎻忚堪"> + <el-form-item label="鎻忚堪" prop="description"> <el-input v-model="form.description" :rows="2" type="textarea"></el-input> </el-form-item> </div> @@ -215,7 +243,7 @@ :props="{label: 'id', value: 'id'}" :dic="lifeData"></avue-select> </el-form-item> - <el-form-item label="澶囬�夌敓鍛藉懆鏈熷垪琛細" label-width="138px"> + <el-form-item label="澶囬�夌敓鍛藉懆鏈熷垪琛細" label-width="138px" prop="subLifeCycleIdList"> <avue-select multiple :filterable="true" v-model="form.subLifeCycleIdList" @@ -229,17 +257,18 @@ </div> </el-form> <div class="bottomForm"> - <h3 style="margin-bottom: 10px;">灞炴�ф睜鍒楄〃</h3> <avue-crud + size="mini" :data="dialogAttrData" :option="dialogAttrOption" @row-del="dialogBottomAttrDel"> <template slot="menuLeft"> - <el-button icon="el-icon-plus" size="small" type="primary" @click="addDialogClickHandler">鍒涘缓</el-button> + <h3 style="display: inline-block;margin-right: 20px;margin-bottom: 10px;">灞炴�ф睜鍒楄〃</h3> + <el-button icon="el-icon-plus" size="mini" type="primary" @click="addDialogClickHandler">鍒涘缓</el-button> </template> </avue-crud> </div> - <span slot="footer" class="dialog-footer avue-dialog__footer"> + <span slot="footer" class="dialog-footer"> <el-button type="primary" @click="addDialogSavaHandler">纭� 瀹�</el-button> <el-button @click="addDialogClose">鍙� 娑�</el-button> </span> @@ -271,8 +300,8 @@ > </avue-crud> <span slot="footer" class="dialog-footer"> - <el-button @click="dialogAttrClose">鍙� 娑�</el-button> <el-button type="primary" @click="dialogAttrAddClickHandler">纭� 瀹�</el-button> + <el-button @click="dialogAttrClose">鍙� 娑�</el-button> </span> </el-dialog> @@ -409,6 +438,7 @@ import func from "@/util/func"; import {getUsedVersionRuleList, getVersionRuleAllList} from "@/api/modeling/version/api"; import {gridLifeCycle} from "@/api/modeling/lifeCycle/api"; +import {mapGetters} from "vuex"; export default { name: "index", @@ -496,6 +526,7 @@ index: false, selection: false, refreshBtn: false, + header:false, column: [ { label: '绫诲瀷鍚�', @@ -577,12 +608,16 @@ height: 450, searchMenuSpan: 8, header: false, + selectable:function(row){ + return row.selectable; + }, column: [ { label: '灞炴�у悕', prop: 'id', sortable: true, search: true, + width:260 }, { label: '灞炴�х被鍨�', @@ -594,6 +629,7 @@ label: '鍒濆鍊�', prop: 'defaultValue', sortable: true, + width: 200 }, { label: '璇存槑', @@ -610,6 +646,9 @@ {required: true, message: '璇疯緭绫诲瀷鍚嶇О', trigger: 'blur'}, {validator: this.validateEnglishOnly, trigger: 'blur'} ], + imageName:[ + {required: true, message: '璇烽�夋嫨鍥炬爣', trigger: 'submit'}, + ], revLevel: [ {required: true, message: '璇烽�夋嫨鐗堟湰瑙勫垯', trigger: 'blur'}, ], @@ -623,8 +662,10 @@ editBtn: false, refreshBtn: false, selection: false, - height: 210, + height: 220, addBtn: false, + gridBtn:false, + columnBtn:false, menuWidth:100, // index:false, column: [ @@ -632,12 +673,14 @@ label: '灞炴�у悕', prop: 'id', sortable: true, + width:260, }, { prop: 'btmTypeId', label: '涓氬姟绫诲瀷', - sortable: true + sortable: true, + width: 200 }, { label: '灞炴�х被鍨�', @@ -649,7 +692,7 @@ label: '鍒濆鍊�', prop: 'defaultValue', sortable: true, - width:150, + width:200, }, { label: '璇存槑', @@ -673,22 +716,26 @@ { prop: 'id', label: '灞炴�у悕', - sortable: true + sortable: true, + width:260 }, { prop: 'btmTypeId', label: '涓氬姟绫诲瀷', - sortable: true + sortable: true, + width:200 }, { prop: 'attributeDataType', label: '灞炴�х被鍨�', - sortable: true + sortable: true, + width:150 }, { prop: 'defaultValue', label: '榛樿鍊�', - sortable: true + sortable: true, + width: 200 }, { prop: 'description', @@ -734,8 +781,8 @@ } ], descriptionOption: { - labelStyle: 'text-align:center;width:100px;', - contentStyle: 'max-width:200px;text-align:center;word-break;break-all;' + labelStyle: 'text-align:center;width:110px;', + contentStyle: 'min-width:200px;text-align:center;word-break:break-all;' }, icons: { id: 'el-icon-finished', @@ -750,7 +797,23 @@ this.getVersionList(); this.getLifeCycle(); }, - mounted() { + computed:{ + ...mapGetters(["permission"]), + permissionList() { + return { + addBtn: this.vaildData(this.permission[this.$route.query.id].ADD, false), + delBtn: this.vaildData(this.permission[this.$route.query.id].DELETE, false), + editBtn: this.vaildData(this.permission[this.$route.query.id].EDIT, false), + exportBtn: this.vaildData(this.permission[this.$route.query.id].EXPORT, false), + importBtn: this.vaildData(this.permission[this.$route.query.id].IMPORT, false), + consistencyCheckBtn: this.vaildData(this.permission[this.$route.query.id].consistencyCheck, false), + createIndexBtn: this.vaildData(this.permission[this.$route.query.id].createIndex, false), + createViewBtn: this.vaildData(this.permission[this.$route.query.id].createView, false), + deleteDataBtn: this.vaildData(this.permission[this.$route.query.id].deleteData, false), + deleteEveryTypeBtn: this.vaildData(this.permission[this.$route.query.id].deleteEveryType, false), + viewTheScopeBtn: this.vaildData(this.permission[this.$route.query.id].viewTheScope, false), + }; + }, }, watch:{ 'form.lifeCycleId':{ @@ -766,6 +829,9 @@ } }, methods: { + svgHtml(svgName){ + return func.getSVGByName(svgName); + }, //鏍戣〃鏌ヨ getTreeList() { this.treeLoading = true; @@ -880,7 +946,7 @@ this.form = {...this.nodeRow}; this.form.inputRevisionFlag = JSON.parse(this.form.inputRevisionFlag); // 瀛楃涓瞗alse杞崲涓哄竷灏斿�� // this.form.fName = this.nodeRow.id === 'topNode' ? "" : this.nodeRow.id; - this.form.subLifeCycleIdList = this.nodeRow.lifeCycleIds.split(','); + this.form.subLifeCycleIdList = this.nodeRow.lifeCycleIds?this.nodeRow.lifeCycleIds.split(','):[]; this.dialogAttrData = this.nodeRow.attributes ? JSON.parse(this.nodeRow.attributes) : []; function processChildren(item,fName) { if (item.children && item.children.length > 0) { @@ -929,8 +995,11 @@ // 鏌ヨ灞炴�ф睜鍒楄〃鏁版嵁 getAttrDialogDta() { gridAttribute(this.attrPage.currentPage, this.attrPage.pageSize, this.searchAttrParams).then(res => { - const data = res.data.data; - this.dialogAttrSaveData = data; + const data = res.data.data.map(item=>{ + item.selectable=!this.dialogAttrData.some(existingItem => existingItem.id === item.id); + return item; + }); + this.dialogAttrSaveData=data; this.attrPage.total = res.data.total; this.dialogAttrLoading = false; }).catch(err => { @@ -951,7 +1020,9 @@ // 娣诲姞灞炴�ф睜 琛岀偣鍑� dialogAttrRowClickHandler(row) { - + if(!row.selectable){ + return; + } func.rowClickHandler( row, this.$refs.dialogAttrCrud, @@ -999,35 +1070,15 @@ // 娣诲姞灞炴�ф睜 淇濆瓨 dialogAttrAddClickHandler() { - let hasDuplicate = false; - - // 鍏堝垱寤轰竴涓复鏃舵暟缁勬潵瀛樺偍涓嶉噸澶嶇殑椤� - const newItems = []; - this.dialogAttrSelectList.forEach(item => { - const exists = this.dialogAttrData.some(existingItem => existingItem.id === item.id); - - if (exists) { - hasDuplicate = true; - return; - } - - // 濡傛灉娌℃湁閲嶅椤癸紝鍒欏皢璇ラ」娣诲姞鍒颁复鏃舵暟缁勪腑 - newItems.push({ + this.dialogAttrData.push({ id: item.id, attributeDataType: item.attributeDataType, defaultValue: item.defaultValue, description: item.description }); }); - - if (hasDuplicate) { - this.$message.error('璇锋鏌ユ槸鍚︽湁娣诲姞閲嶅椤癸紒'); - } else { - // 濡傛灉娌℃湁閲嶅椤癸紝灏嗘柊椤规坊鍔犲埌 dialogAttrData - this.dialogAttrData.push(...newItems); - this.attrPollDialogVisible = false; - } + this.attrPollDialogVisible = false; }, // 灞炴�ф睜鍒犻櫎 @@ -1411,7 +1462,7 @@ .dialogForm > div { border: 1px solid #EBEEF5; border-radius: 2px; - padding: 25px 20px 5px 10px; /* 涓� 鍙� 涓� 宸� */ + padding: 15px 20px 0 10px; /* 涓� 鍙� 涓� 宸� */ box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1); /* 娣诲姞闃村奖鏁堟灉 */ } -- Gitblit v1.9.3