1
lzhe
2024-05-13 2c841bc48f45eec08b41feebfa03de79666f940c
src/views/console/system/meta-object-type/index.vue
@@ -15,47 +15,99 @@
      <div class="aposcope-right">
         <div class="right-content">
            <div class="content-title"><span>*</span>所在物理表</div>
            <el-select v-model="metaForm.tableName" style="width: 30%" :disabled="isDis">
            <el-select v-model="metaForm.tableName" :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">
            <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 v-model="metaForm.refCode" :disabled="isDis">
               <el-option v-for="item in refCodeList" :key="item.columnName" :label="item.columnName" :value="item.columnName"/>
            </el-select>
         </div>
         <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 v-model="metaForm.refName" :disabled="isDis">
               <el-option v-for="item in refCodeList" :key="item.columnName" :label="item.columnName" :value="item.columnName"/>
            </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 v-model="metaForm.test">
               <el-option v-for="item in refCodeList" :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>
            <el-button type="primary" @click="addParameter" :disabled="isAdd">添加参数</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 prop="fcode" label="字段编码">
               <template #default="scope">
                  <el-select v-if="scope.row.isEdit" v-model="tableForm.fcode">
                     <el-option v-for="item in refCodeList" :key="item.columnName" :label="item.columnName" :value="item.columnName"/>
                  </el-select>
                  <div v-else>{{scope.row.fcode}}</div>
               </template>
            </el-table-column>
            <el-table-column prop="fname" label="字段标题">
               <template #default="scope">
                  <el-input v-if="scope.row.isEdit" v-model="tableForm.fname"></el-input>
                  <div v-else>{{scope.row.fname}}</div>
               </template>
            </el-table-column>
            <el-table-column prop="field" label="实体属性">
               <template #default="scope">
                  <el-input v-if="scope.row.isEdit" v-model="tableForm.field"></el-input>
                  <div v-else>{{scope.row.field}}</div>
               </template>
            </el-table-column>
            <el-table-column prop="elementTypeName" label="元素类型">
               <template #default="scope">
                  <el-select v-if="scope.row.isEdit" v-model="tableForm.elementTypeName">
                     <el-option v-for="item in dictionaryType" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
                  </el-select>
                  <div v-else>{{scope.row.elementTypeName}}</div>
               </template>
            </el-table-column>
            <el-table-column prop="enumType" label="枚举类型">
               <template #default="scope">
                  <el-select v-if="scope.row.isEdit" v-model="tableForm.enumType" disabled>
                     <el-option v-for="item in testList" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
                  </el-select>
                  <div v-else>{{scope.row.enumType}}</div>
               </template>
            </el-table-column>
            <el-table-column prop="seq" label="字段顺序">
               <template #default="scope">
                  <el-input-number v-if="scope.row.isEdit" scope.row.isEdit v-model="tableForm.seq" :min="0" :max="99" style="width:100%;"/>
                  <div v-else>{{scope.row.seq}}</div>
               </template>
            </el-table-column>
            <el-table-column prop="refObjectTypeId" label="引用关系">
               <template #default="scope">
                  <el-select v-if="scope.row.isEdit" v-model="tableForm.refObjectTypeId" disabled>
                     <el-option v-for="item in testList" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
                  </el-select>
                  <div v-else>{{scope.row.refObjectTypeId}}</div>
               </template>
            </el-table-column>
            <el-table-column label="操作">
               <template #default="scope">
                  <el-icon><Edit /></el-icon>
                  <el-icon><Edit /></el-icon>
                  <div v-if="scope.row.isEdit">
                     <el-button size="small" type="primary" @click="comfirmTable">确定</el-button>
                     <el-button size="small" @click="cancelTable">取消</el-button>
                  </div>
                  <div v-else>
                     <el-icon class="operationIcon"><Edit /></el-icon>
                     <el-icon class="operationIcon"><Delete /></el-icon>
                  </div>
               </template>
            </el-table-column>
         </el-table>
         <div class="saveBtn">
            <el-button type="primary" @click="saveBtn">保存</el-button>
         </div>
      </div>
   </div>
</template>
@@ -69,9 +121,21 @@
      name: "metaObject",
      data(){
         return {
            isDis: true,
            testList: [],
            tableForm: {
               fcode: "",
               fname: "",
               field: "",
               elementTypeName: "",
               enumType: "",
               seq: 0,
               refObjectTypeId: ""
            },
            inputValue: "",
            isAdd: false,
            isDis: true,
            tableNameList: [],
            refCodeList: [],
            metaForm: {
               tableName: "",
               refCode: "",
@@ -109,6 +173,21 @@
         ...ElementPlusIconsVue
      },
      methods: {
         saveBtn() {
         },
         comfirmTable() {
            this.cancelTable();  //还原
            this.searchDataList.unshift(this.tableForm);
         },
         cancelTable() {
            this.searchDataList.splice(0,1);
            this.isAdd = false;
         },
         addParameter() {
            this.isAdd = true;
            this.searchDataList.unshift({isEdit: true});
         },
         getDictionary() {  //字典类型
            this.$HTTP.get("/api/blade-system/dict/dictionary?code=element_type").then(res=> {  //物理表
               if(res.code == 200) {
@@ -129,7 +208,7 @@
            })
            this.$HTTP.get("/api/blade-system/meta-object-type/tableDetail").then(res=> {  //物理表
               if(res.code == 200) {
                  this.tableNameList = res.data;
                  this.tableNameList = res.data;
                  this.gettableName();  //获取字段
               }
            })
@@ -138,6 +217,12 @@
         gettableName() {
            this.$HTTP.get(`/api/blade-system/meta-object-type/detail?fId=${this.dictKey}`).then(res=> {  //物理表数据
               if(res.code == 200) {
                  this.tableNameList.forEach(item=> {
                     if(res.data.tableName == item.tableName) {
                        this.refCodeList = item.tableColumns;
                     }
                  })
                  console.log(this.refCodeList,111)
                  this.metaForm.tableName = res.data.tableName;
                  this.metaForm.refCode = res.data.refCode;
                  this.metaForm.refName = res.data.refName;
@@ -151,12 +236,10 @@
                  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)
               }
            })
         },
@@ -190,9 +273,9 @@
         },
         handleNodeClick(data) {
            if(!this.firstChild.includes(data.id)) {
               console.log(data,234);
               this.dictKey = data.dictKey;
               this.getList();  //所在物理表、是否可选
               this.isAdd = false;
            }
            // this.drawerPath = data.name;
            // this.$HTTP.get("/api/blade-system/api-scope/list",this.searchData).then(res=> {
@@ -277,4 +360,13 @@
   margin-right: 4px;
   color: red;
}
.operationIcon {
   font-size: 16px;
   margin-right:4px;
   cursor: pointer;
}
.saveBtn {
   margin-top: 20px;
   text-align: right;
}
</style>