From 3350b56a1d143eb12c987cd6cf07eea2119294e5 Mon Sep 17 00:00:00 2001 From: lzhe <lzhe@example.com> Date: 星期一, 13 五月 2024 16:29:24 +0800 Subject: [PATCH] 1 --- src/views/console/system/meta-object-type/index.vue | 336 +++++++++++++++++++++++++------------------------------ 1 files changed, 152 insertions(+), 184 deletions(-) diff --git a/src/views/console/system/meta-object-type/index.vue b/src/views/console/system/meta-object-type/index.vue index cb4edaf..f705868 100644 --- a/src/views/console/system/meta-object-type/index.vue +++ b/src/views/console/system/meta-object-type/index.vue @@ -2,7 +2,7 @@ * @Author: lzhe lzhe@example.com * @Date: 2024-03-26 10:28:33 * @LastEditors: lzhe lzhe@example.com - * @LastEditTime: 2024-05-13 12:15:04 + * @LastEditTime: 2024-05-13 16:28:30 * @FilePath: /smart-web/src/views/master/person/main/index.vue * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE --> @@ -10,96 +10,73 @@ <div class="aposcope-main"> <div class="aposcope-left"> <div class="left-title">涓氬姟鍒楄〃</div> - <el-tree :data="tableData" row-key="id" :props="defalutProps" @node-click="handleNodeClick" ref="treeRef" default-expand-all :highlight-current="true" :expand-on-click-node="false" :default-checked-keys="treeCheck"/> + <el-tree :data="tableData" node-key="id" :props="defalutProps" @node-click="handleNodeClick" ref="treeRef" default-expand-all :highlight-current="true" :expand-on-click-node="false"/> </div> <div class="aposcope-right"> - <div class="right-top"> - <div> - <el-button type="primary" @click="addData">+ 娣诲姞瑙勫垯</el-button> - <el-button type="danger" plain @click="delData" disabled>鍒犻櫎</el-button> - </div> - <el-button @click="openVisible">寮�鍚鍒欏垎绫�</el-button> + <div class="right-content"> + <div class="content-title"><span>*</span>鎵�鍦ㄧ墿鐞嗚〃</div> + <el-select v-model="metaForm.tableName" style="width: 30%" :disabled="isDis"> + <el-option v-for="item in tableNameList" :key="item.tableName" :label="item.tableName" :value="item.tableName"/> + </el-select> </div> - <div class="right-content" v-if="searchDataList.length == 0"> - <!-- <img src="./quesheng.bd026700.png" /> --> - <div> - <span>鏆傛棤鏁版嵁</span> - <!-- <span @click="addData">娣诲姞瑙勫垯</span> --> - </div> + <div class="right-content"> + <div class="content-title"><span>*</span>瀛楁1</div> + <el-select v-model="metaForm.refCode" style="width: 30%"> + <el-option v-for="item in testList" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/> + </el-select> </div> - <el-table v-if="searchDataList.length != 0" ref="searchDataListRef" :data="searchDataList" border style="width: 100%;margin-top: 20px;" class="multipleTableRef" @selection-change="searchHandleSelectionChange"> - <el-table-column type="selection" width="55" /> - <el-table-column prop="moduleCode" label="鎺ュ彛妯″潡"></el-table-column> - <el-table-column prop="controllerCode" label="Controller"></el-table-column> - <el-table-column prop="scopeName" label="action"></el-table-column> - <el-table-column prop="httpMethod" label="Http鏂规硶"></el-table-column> - <el-table-column prop="scopePath" label="api鍦板潃"></el-table-column> + <div class="right-content"> + <div class="content-title"><span>*</span>瀛楁2</div> + <el-select v-model="metaForm.refName" style="width: 30%"> + <el-option v-for="item in testList" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/> + </el-select> + </div> + <div class="right-content"> + <div class="content-title">缂栫爜瀛楁</div> + <el-select v-model="metaForm.test" style="width: 30%"> + <el-option v-for="item in testList" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/> + </el-select> + </div> + <div class="right-content"> + <div class="content-title">鍙傛暟璁剧疆</div> + <el-button type="primary">娣诲姞鍙傛暟</el-button> + </div> + <el-table ref="searchDataListRef" :data="searchDataList" border style="width: 100%;margin-top: 20px;" class="multipleTableRef"> + <el-table-column prop="fcode" label="瀛楁缂栫爜"></el-table-column> + <el-table-column prop="fname" label="瀛楁鏍囬"></el-table-column> + <el-table-column prop="field" label="瀹炰綋灞炴��"></el-table-column> + <el-table-column prop="elementTypeName" label="鍏冪礌绫诲瀷"></el-table-column> + <el-table-column prop="enumType" label="鏋氫妇绫诲瀷"></el-table-column> + <el-table-column prop="seq" label="瀛楁椤哄簭"></el-table-column> + <el-table-column prop="refObjectTypeId" label="寮曠敤鍏崇郴"></el-table-column> + <el-table-column label="鎿嶄綔"> + <template #default="scope"> + <el-icon><Edit /></el-icon> + <el-icon><Edit /></el-icon> + </template> + </el-table-column> </el-table> </div> - <el-drawer :title="'褰撳墠閫変腑鑿滃崟璺緞'+drawerPath" v-model="drawer" :direction="direction" :before-close="handleClose" size="780" class="drawerClass"> - <el-form :inline="true" :model="drawerSearchData" abel-width="120px"> - <el-form-item label="鎺ュ彛妯″潡"> - <el-select v-model="drawerSearchData.moduleCode" style="width: 100%"> - <el-option v-for="item in aList" :key="item.id" :label="item.title" :value="item.id"/> - </el-select> - </el-form-item> - <el-form-item label="鎺ュ彛Controller"> - <el-select v-model="drawerSearchData.controllerCode" style="width: 100%"> - <el-option v-for="item in aList" :key="item.id" :label="item.title" :value="item.id"/> - </el-select> - </el-form-item> - <el-form-item> - <el-button type="primary" @click="drawerSearchclick">鎼滅储</el-button> - </el-form-item> - </el-form> - <div> - <div class="dict-table"> - <el-table ref="multipleTableRef" :data="drawerTableData" border style="width: 100%" class="multipleTableRef" @selection-change="drawerHandleSelectionChange"> - <el-table-column type="selection" width="55" /> - <el-table-column prop="className" label="鎺ュ彛妯″潡"></el-table-column> - <el-table-column prop="controllerCode" label="Controller"></el-table-column> - <el-table-column prop="name" label="action"></el-table-column> - <el-table-column prop="httpMethod" label="Http鏂规硶"></el-table-column> - <el-table-column prop="url" label="api鍦板潃"></el-table-column> - </el-table> - </div> - </div> - <div class="drawer-foot"> - <el-button type="primary" @click="drawerConfirm" disabled>娣诲姞</el-button> - <el-button @click="closeDrawer">鍙栨秷</el-button> - </div> - </el-drawer> - <el-dialog title="瑙勫垯鍒嗙被" v-model="visible" :width="600" @closed="closeVisible('closed')"> - <el-form :model="classificationForm" :rules="classificationRules" ref="dialogForm" label-width="120px" - label-position="center"> - <el-row> - <el-col :span="12"> - <el-form-item label="鍒嗙被瀛楁" prop="classify"> - <el-select v-model="classificationForm.classify" style="width: 100%" placeholder="璇烽�夋嫨"> - <el-option v-for="item in aList" :key="item.id" :label="item.title" :value="item.id"/> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="鍒嗙被瀛楀吀"> - <el-input v-model="classificationForm.dictionary" placeholder="鍒嗙被瀛楀吀" clearable></el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <el-button @click="visible = false">鍙栨秷</el-button> - <el-button type="primary" :loading="isSaveing" @click="classificationSubmit">纭畾</el-button> - </template> - </el-dialog> </div> </template> <script> + import * as ElementPlusIconsVue from '@element-plus/icons-vue' + let icons = [] + for (const [key, component] of Object.entries(ElementPlusIconsVue)) { + icons.push(key) + } export default { - name: "apiscope", + name: "metaObject", data(){ return { - treeCheck: [], + isDis: true, + testList: [], + tableNameList: [], + metaForm: { + tableName: "", + refCode: "", + refName: "" + }, classificationRules: { classify: [ { required: true, message: "璇烽�夋嫨鍒嗙被瀛楁" } @@ -110,42 +87,79 @@ dictionary: "" }, isSaveing: false, - visible: false, - drawerPath: "", - searchData: { - size: "15", - current: "1" - }, searchDataList: [], //鍙充晶鏁版嵁list - aList: [], - drawerSearchData: { - moduleCode: "", - controllerCode: "", - menuId: "", - size: "-1" - }, - direction: "rtl", - drawer: false, defalutProps: { label: 'dictValue', children: 'children', isLeaf: 'hasChildren' }, - parentId: "0", tableData: [], - searchSelection: [] + firstChild: [], //涓�绾ц彍鍗� + dictKey: "", + dictionaryType: [] //瀛楀吀绫诲瀷 } }, created(){ }, mounted(){ - this.getMenuList(); + this.getDictionary(); //瀛楀吀绫诲瀷 }, components: { - - }, + ...ElementPlusIconsVue + }, methods: { + getDictionary() { //瀛楀吀绫诲瀷 + this.$HTTP.get("/api/blade-system/dict/dictionary?code=element_type").then(res=> { //鐗╃悊琛� + if(res.code == 200) { + this.dictionaryType = res.data; + this.getMenuList(); + } + }) + }, + getList() { + this.$HTTP.get(`/api/blade-system/bascoderule/count?type=${this.dictKey}`).then(res=> { //鏄惁鍙�� + if(res.code == 200) { + if(res.data == 1) { + this.isDis = true; + }else { + this.isDis = false; + } + } + }) + this.$HTTP.get("/api/blade-system/meta-object-type/tableDetail").then(res=> { //鐗╃悊琛� + if(res.code == 200) { + this.tableNameList = res.data; + this.gettableName(); //鑾峰彇瀛楁 + } + }) + this.getSearchDataList(); //琛ㄦ牸鏁版嵁 + }, + gettableName() { + this.$HTTP.get(`/api/blade-system/meta-object-type/detail?fId=${this.dictKey}`).then(res=> { //鐗╃悊琛ㄦ暟鎹� + if(res.code == 200) { + this.metaForm.tableName = res.data.tableName; + this.metaForm.refCode = res.data.refCode; + this.metaForm.refName = res.data.refName; + } + }) + }, + getSearchDataList() { + this.$HTTP.get(`/api/blade-system/meta-object-type-field/list?objectId=${this.dictKey}`).then(res=> { //琛ㄦ牸鏁版嵁 + if(res.code == 200) { + this.searchDataList = res.data; + this.dictionaryType.forEach(item=> { + this.searchDataList.forEach(item1=> { + if(item1.elementType == item.dictKey) { + console.log(item.code,99) + item1.elementTypeName = item.dictValue; + } + }) + }) + console.log(this.searchDataList,12345) + } + }) + }, closeVisible(flag) { if(flag == "closed") { this.classificationForm = { @@ -174,85 +188,57 @@ } }) }, - openVisible() { - this.visible = true; - }, - closeDrawer() { - this.drawer = false; - }, - drawerConfirm() { - this.drawer = false; - }, - searchHandleSelectionChange(selection) { - this.searchSelection = selection; - }, - drawerHandleSelectionChange() { - - }, - drawerSearchclick() { - this.drawerSearchData.menuId = this.searchData.menuId; - var obj = {}; - for(var key in this.drawerSearchData) { - if(this.drawerSearchData[key]) { - obj[key] = this.drawerSearchData[key]; - } - } - this.$HTTP.get("/api/blade-system/resource-definition/page",obj).then(res=> { - if(res.code == 200) { - this.drawerTableData = res.data.records; - } - }) - }, - handleClose(done) { - done(); - }, handleNodeClick(data) { + if(!this.firstChild.includes(data.id)) { + console.log(data,234); + this.dictKey = data.dictKey; + this.getList(); //鎵�鍦ㄧ墿鐞嗚〃銆佹槸鍚﹀彲閫� + } // this.drawerPath = data.name; - // console.log(data,data.name,222) - // this.searchData.menuId = data.id; // this.$HTTP.get("/api/blade-system/api-scope/list",this.searchData).then(res=> { // if(res.code == 200) { // this.searchDataList = res.data.records; // } // }) }, + extractLastLevelIds(array) { //閫掑綊鑾峰彇children鏈�鍚庝竴绾х殑id鐨勬暟缁� + let ids = []; + for (let i = 0; i < array.length; i++) { + const obj = array[i]; + if (obj.children) { + // 閫掑綊璋冪敤浠ユ彁鍙栨洿娣卞眰绾х殑children涓殑id + ids = ids.concat(this.extractLastLevelIds(obj.children)); + } else { + // 濡傛灉娌℃湁children灞炴�э紝鍒欏亣瀹氬綋鍓嶅璞℃槸鏈�鍚庝竴绾� + if (obj.id) { + ids.push(obj); + } + } + } + return ids; + }, getMenuList() { this.$HTTP.get("/api/blade-system/dict/dictionary-tree?code=code_rule_for_biz_objects").then(res=> { if(res.code == 200) { this.tableData = res.data; - // this.treeCheck = idarr; //鑾峰彇閫変腑鏁版嵁 + var menuGrantList = res.data.filter(item=> { //杩囨护鎺夋病鏈塩hildren鐨� + return item.children; + }); + var lastId = this.extractLastLevelIds(menuGrantList[0].children); //鑾峰彇鏈�鍚庝竴绾d + this.firstChild = res.data.map(item=> { + return item.id; + }) + this.$nextTick(()=> { + this.dictKey = lastId[0].dictKey; + this.$refs.treeRef.setCurrentKey(lastId[0].id); //璁剧疆閫変腑鏁版嵁 + this.getList(); //鎵�鍦ㄧ墿鐞嗚〃銆佹槸鍚﹀彲閫� + }) } }) - }, - addData() { - // this.drawerSearchclick(); - // this.drawer = true; - }, - delData() { - if(this.searchSelection.length == 0) { - this.$message({ - message: '璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�', - type: 'warning' - }); - return; - } - var selStr = ""; - this.searchSelection.map(item=> { - selStr += item.id + "," - }) - selStr = selStr.replace(/,$/, ''); - var that = this; - // this.$HTTP.post("/api/blade-system/data-scope/remove?ids="+selStr).then(res=> { - // if(res.code == 200) { - // that.$message.success("鎿嶄綔鎴愬姛"); - // that.drawerSearchclick(); - // } - // }) } } } </script> - <style scoped> .aposcope-main { display: flex; @@ -282,31 +268,13 @@ margin-bottom: 12px; } .right-content { - text-align: center; + margin-bottom: 12px; } -.right-content img { - width: 350px; - height: 350px; +.content-title { + margin-bottom: 12px; } -.right-content > div { - font-size: 14px;; -} -.right-content > div span:nth-child(2) { - margin-left: 8px; - color: #409eff; - cursor: pointer; -} -/deep/ .drawerClass { - padding: 8px; -} -.datascope-drawer-btn { - margin-bottom: 8px; -} -.drawer-foot { - margin-top: 20px; -} -.right-top { - display: flex; - justify-content: space-between; +.content-title span { + margin-right: 4px; + color: red; } </style> -- Gitblit v1.9.3