nanjingliujinyu 5 月之前
父節點
當前提交
b4fdb735ea

+ 1 - 0
ruoyi-api-patform/src/main/resources/mapper/interfaces/MdDataSetMapper.xml

@@ -22,6 +22,7 @@
         <include refid="selectMdDataSetVo"/>
         <where>
             <if test="dcCode != null  and dcCode != ''"> and DC_CODE = #{dcCode} </if>
+            <if test="cateId != null  and cateId != ''"> and CATE_ID = #{cateId} </if>
             <if test="dcName != null  and dcName != ''"> and DC_NAME like concat('%', #{dcName}, '%')</if>
             <if test="dcType != null  and dcType != ''"> and DC_TYPE = #{dcType}</if>
             <if test="dcSort != null "> and DC_SORT = #{dcSort}</if>

+ 74 - 144
ruoyi-ui/src/views/register/modelData/dataJi.vue

@@ -112,7 +112,19 @@
         <el-input v-model="formZu.dcNote" style="width: 75%;" placeholder="" type="textarea" :row="2" resize="none"/>
       </el-form-item>
       <el-form-item label="数据集类型:" prop="dcType" style="">
-        <el-input v-model="formZu.dcType" style="width: 75%;" placeholder="" type="" :row="2" resize="none"/>
+        <el-select
+          v-model="formZu.dcType"
+          class="noBorSel"
+          placeholder=""
+          style="width: 75%;margin-left: 0%;"
+          >
+              <el-option
+              v-for="item in optionsShuLei"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+              />
+        </el-select>
       </el-form-item>
       <el-form-item label="排序:" prop="dcSort">
         <el-input-number v-model="formZu.dcSort" :min="1" style="width: 50%;"/>
@@ -130,7 +142,7 @@
       </span>
     </template>
   </el-dialog>
-  <el-dialog @close=""  v-model="dialogVisibleTree" title="配置管理" width="60%" destroy-on-close :key="tableKey" @opened="refreshEditor">
+  <el-dialog @close=""  v-model="dialogVisibleTree" title="sql配置管理" width="60%" destroy-on-close :key="tableKey" @opened="refreshEditor">
     <div style="display: flex;align-items: center;width: 100%;">
       <div>
         数据源:
@@ -347,7 +359,7 @@
       </span>
     </template>
   </el-dialog>
-  <el-dialog @close=""  v-model="dialogVisibleApi" title="配置管理" width="60%" destroy-on-close :key="tableKey">
+  <el-dialog @close=""  v-model="dialogVisibleApi" title="api配置管理" width="60%" destroy-on-close :key="tableKey">
     <div style="display: flex;align-items: center;width: 100%;">
       <div>
         API:
@@ -528,7 +540,7 @@
       </span>
     </template>
   </el-dialog>
-  <el-dialog @close=""  v-model="dialogVisibleFile" title="配置管理" width="60%" destroy-on-close :key="tableKey">
+  <el-dialog @close=""  v-model="dialogVisibleFile" title="文件配置管理" width="60%" destroy-on-close :key="tableKey">
     <div style="display: flex;align-items: center;width: 100%;">
       <div>
         文件类型:
@@ -540,7 +552,7 @@
         style="width: 100%;margin-left: 1%;"
         >
             <el-option
-            v-for="item in optionsDs"
+            v-for="item in optionsFileTy"
             :key="item.value"
             :label="item.label"
             :value="item.value"
@@ -557,7 +569,7 @@
         style="width: 100%;margin-left: 1%;"
         >
             <el-option
-            v-for="item in optionsDs"
+            v-for="item in optionsFilege"
             :key="item.value"
             :label="item.label"
             :value="item.value"
@@ -583,138 +595,22 @@
       >
         
         <el-tab-pane label="参数" name="first">
-          <div style="display: flex;width: 100%;margin-top: 0%;">
-            <el-button  @click="addCanAdd" style="margin-top: 0%;" type="success" size="mini" plain>新增字段</el-button>
-          </div>
-          <el-table 
-          style="margin-top: 1%;width: 98%;"
-          :data="tableDataCanAdd" 
-          :cell-style="{ textAlign: 'center',padding:'2px 0' }"
-          :header-cell-style="{ textAlign: 'center'}"
-          :row-style="{ height: heightAll*0.01+'px',fontSize: '16px',textAlign:'center'  }"
-          border >
-              <el-table-column prop="itemName" label="字段编码" width="200">
-                  <template #default="scope">
-                      <el-input placeholder="(必填)" type="primary" class="noBor" v-model="scope.row.fieldCode" size="mini" text style="margin-left: 0%;"></el-input>
-                  </template>
-              </el-table-column>
-              <el-table-column prop="itemName" label="字段名称">
-                  <template #default="scope">
-                      <div style="width: 100%;">
-                          <el-input placeholder="" type="primary" class="noBor" v-model="scope.row.fieldName" size="mini" text style="margin-left: 0%;"></el-input>
-                      </div>
-                  </template>
-              </el-table-column>
-              <el-table-column prop="itemName" label="字段类型">
-                  <template #default="scope">
-                      <div style="width: 100%;">
-                          <el-input placeholder="" type="primary" class="noBor" v-model="scope.row.metaType" size="mini" text style="margin-left: 0%;"></el-input>
-                      </div>
-                  </template>
-              </el-table-column>
-              <el-table-column prop="itemName" label="长度" >
-                  <template #default="scope">
-                      <div style="width: 100%;">
-                          <el-input type="primary" class="noBor" v-model="scope.row.fieldLength" size="mini" text style="margin-left: 0%;"></el-input>
-                      </div>
-                  </template>
-              </el-table-column>
-              <el-table-column prop="itemName" label="默认值" >
-                  <template #default="scope">
-                      <div style="width: 100%;">
-                          <el-input type="primary" class="noBor" v-model="scope.row.fieldDefault" size="mini" text style="margin-left: 0%;"></el-input>
-                      </div>
-                  </template>
-              </el-table-column>
-              <el-table-column prop="itemName" label="说明" >
-                  <template #default="scope">
-                      <div style="width: 100%;">
-                          <el-input type="primary" class="noBor" v-model="scope.row.fieldDesc" size="mini" text style="margin-left: 0%;"></el-input>
-                      </div>
-                  </template>
-              </el-table-column>
-              <el-table-column prop="itemName" label="主键" width="80">
-                  <template #default="scope">
-                      <div style="width: 100%;">
-                          <el-checkbox v-model="scope.row.fieldIspri" label="" size="large" />
-                      </div>
-                  </template>
-              </el-table-column>
-              <el-table-column prop="address" label="操作" width="100">
-                  <template #default="scope">
-                      <div style="width: 100%;">
-                          <el-button type="danger" @click="delCanAdd(scope.$index)" size="mini" text style="margin-left: 0%;">删除</el-button>
-                      </div>
-                  </template>
-              </el-table-column>
-          </el-table>
-        </el-tab-pane>
-        <el-tab-pane label="结果集" name="second">
-          <div style="display: flex;width: 100%;margin-top: 0%;">
-            <el-button  @click="addCanAdd" style="margin-top: 0%;" type="success" size="mini" plain>新增字段</el-button>
-          </div>
-          <el-table 
-          style="margin-top: 1%;width: 98%;"
-          :data="tableDataCanAdd" 
-          :cell-style="{ textAlign: 'center',padding:'2px 0' }"
-          :header-cell-style="{ textAlign: 'center'}"
-          :row-style="{ height: heightAll*0.01+'px',fontSize: '16px',textAlign:'center'  }"
-          border >
-              <el-table-column prop="itemName" label="字段编码" width="200">
-                  <template #default="scope">
-                      <el-input placeholder="(必填)" type="primary" class="noBor" v-model="scope.row.fieldCode" size="mini" text style="margin-left: 0%;"></el-input>
-                  </template>
-              </el-table-column>
-              <el-table-column prop="itemName" label="字段名称">
-                  <template #default="scope">
-                      <div style="width: 100%;">
-                          <el-input placeholder="" type="primary" class="noBor" v-model="scope.row.fieldName" size="mini" text style="margin-left: 0%;"></el-input>
-                      </div>
-                  </template>
-              </el-table-column>
-              <el-table-column prop="itemName" label="字段类型">
-                  <template #default="scope">
-                      <div style="width: 100%;">
-                          <el-input placeholder="" type="primary" class="noBor" v-model="scope.row.metaType" size="mini" text style="margin-left: 0%;"></el-input>
-                      </div>
-                  </template>
-              </el-table-column>
-              <el-table-column prop="itemName" label="长度" >
-                  <template #default="scope">
-                      <div style="width: 100%;">
-                          <el-input type="primary" class="noBor" v-model="scope.row.fieldLength" size="mini" text style="margin-left: 0%;"></el-input>
-                      </div>
-                  </template>
-              </el-table-column>
-              <el-table-column prop="itemName" label="默认值" >
-                  <template #default="scope">
-                      <div style="width: 100%;">
-                          <el-input type="primary" class="noBor" v-model="scope.row.fieldDefault" size="mini" text style="margin-left: 0%;"></el-input>
-                      </div>
-                  </template>
-              </el-table-column>
-              <el-table-column prop="itemName" label="说明" >
-                  <template #default="scope">
-                      <div style="width: 100%;">
-                          <el-input type="primary" class="noBor" v-model="scope.row.fieldDesc" size="mini" text style="margin-left: 0%;"></el-input>
-                      </div>
-                  </template>
-              </el-table-column>
-              <el-table-column prop="itemName" label="主键" width="80">
-                  <template #default="scope">
-                      <div style="width: 100%;">
-                          <el-checkbox v-model="scope.row.fieldIspri" label="" size="large" />
-                      </div>
-                  </template>
-              </el-table-column>
-              <el-table-column prop="address" label="操作" width="100">
-                  <template #default="scope">
-                      <div style="width: 100%;">
-                          <el-button type="danger" @click="delCanAdd(scope.$index)" size="mini" text style="margin-left: 0%;">删除</el-button>
-                      </div>
-                  </template>
-              </el-table-column>
-          </el-table>
+          <el-upload
+              ref="uploadRef"
+              :limit="1"
+              accept=".xlsx, .xls"
+              :headers="upload.headers"
+              :on-change="handleChange"
+              :file-list="fileList"
+              :action="upload.url + '?file=' + upload.updateSupport"
+              :on-progress="handleFileUploadProgress"
+              :on-success="handleFileSuccess"
+              :auto-upload="false"
+              drag
+          >
+              <el-icon class="el-icon--upload"><upload-filled /></el-icon>
+              <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+          </el-upload>
         </el-tab-pane>
         <el-tab-pane label="预览" name="third">
           <div style="overflow: auto;height: 20vh;margin-top: -1%;">
@@ -728,7 +624,7 @@
       </div>
   </div>
     <template #footer>
-      <span class="dialog-footer">
+      <span class="dialog-footer"> 
         <el-button size="mini" @click="dialogVisibleTree = false">取消</el-button>
         <el-button type="primary" @click="addPei" size="mini">
           提交
@@ -744,6 +640,7 @@ import { modelTreeSelect } from "@/api/service/info";
 import { cateTree,addCate,delCate,fieldAll,addSet,dataSetList,editSet,fieldAdd,delField,getDataSourceList,delSet  } from "@/api/register/regCom.js";
 import { ref, onMounted, onUnmounted, nextTick } from 'vue';
 import Codemirror from 'codemirror-editor-vue3';
+import { getToken } from "@/utils/auth";
 import 'codemirror/lib/codemirror.css'; // 核心样式
 import 'codemirror/theme/dracula.css';  // 主题
 import 'codemirror/mode/sql/sql.js'; 
@@ -759,9 +656,35 @@ const cmOptions = {
     }
   }
 };
+const upload = reactive({
+  // 是否显示弹出层(用户导入)
+  open: false,
+  // 弹出层标题(用户导入)
+  title: "",
+  // 是否禁用上传
+  isUploading: false,
+  // 是否更新已经存在的用户数据
+  updateSupport: '',
+  // 设置上传的请求头部 
+  headers: { Authorization: "Bearer " + getToken() },
+  // 上传的地址
+  url: import.meta.env.VITE_APP_BASE_API + "/common/upload"
+});
+const optionsShuLei = ref([
+  {label:"SQL数据集",
+    value:'SQL数据集'
+  },
+  {label:"API数据集",
+    value:'API数据集'
+  },
+  {label:"文件数据集",
+    value:'文件数据集'
+  },
+])
 const activeName = ref('first')
+const uploadRef = ref(null);
 const dialogVisibleApi = ref(false)
-const dialogVisibleFile = ref(true)
+const dialogVisibleFile = ref(false)
 const valueSel = ref('')
 const { proxy } = getCurrentInstance();
 const data =  ref([])
@@ -778,7 +701,7 @@ const dialogVisibleTree = ref(false)
 const isAdd = ref(false)
 const isAddTa = ref(false)
 const treeId = ref('');
-const dcName =ref()
+const dcName =ref() 
 const parDel = ref({})
 const parTree = ref(null)
 const formZu = ref({
@@ -923,9 +846,16 @@ tableDataCanAdd.value.forEach((item, index, array)=>{
   
 }
 function showPei(row){
-
-  dialogVisibleTree.value = true
-  
+  // dialogVisibleTree.value = true
+  if(row.dcType==='SQL数据集'){
+    dialogVisibleTree.value = true
+  }
+  if(row.dcType==='API数据集'){
+    dialogVisibleApi.value = true
+  }
+  if(row.dcType==='文件数据集'){
+    dialogVisibleFile.value = true
+  }
   parMeta.value = row
   var par = {
     dsCode:parDscode.value,