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