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