소스 검색

Merge branch 'master' of http://39.98.38.2:13000/dumingliang/sh-model-platform

ZhuDeKang 6 달 전
부모
커밋
2d138567a8

+ 1 - 0
ruoyi-api-patform/src/main/java/com/ruoyi/interfaces/controller/MdModelInfoController.java

@@ -75,6 +75,7 @@ public class MdModelInfoController extends BaseController {
     @Log(title = "模型信息", businessType = BusinessType.INSERT)
     @Log(title = "模型信息", businessType = BusinessType.INSERT)
     @PostMapping
     @PostMapping
     public AjaxResult add(@RequestBody MdModelInfo mdModelInfo) {
     public AjaxResult add(@RequestBody MdModelInfo mdModelInfo) {
+        System.out.println(1);
         return AjaxResult.success(mdModelInfoService.insertMdModelInfo(mdModelInfo));
         return AjaxResult.success(mdModelInfoService.insertMdModelInfo(mdModelInfo));
     }
     }
 
 

+ 29 - 4
ruoyi-ui/src/api/register/regCom.js

@@ -1,7 +1,11 @@
 import request from "@/utils/request";
 import request from "@/utils/request";
 
 
-export function getModelList(data) {
-  return request.get("model/info/list", data);
+export function getModelList(query) {
+  return request({
+    url: '/model/info/list',
+    method: 'get',
+    params: query
+  })
 }
 }
 
 
 export function addModel(data) {
 export function addModel(data) {
@@ -18,6 +22,27 @@ export function delMdid(id) {
     method: 'delete'
     method: 'delete'
   })
   })
 }
 }
-export function getModelFile(id) {
-  return request.get(`/model/file//${id}`);
+
+export function modelFile(data) {
+  return request({
+    url: '/model/file',
+    method: 'post',
+    data: data
+  })
+}
+
+export function getModelFile(data) {
+  return request.post("common/upload", data);
+}
+
+export function getModelDetail(id) {
+  return request.get(`/model/info/${id}`);
+}
+
+export function updateModel(data) {
+  return request({
+    url: '/model/info',
+    method: 'put',
+    data: data
+  })
 }
 }

+ 46 - 82
ruoyi-ui/src/views/index.vue

@@ -1,92 +1,56 @@
 <template>
 <template>
-  <!-- <el-table :data="tableData" row-key="id" class="draggable-table" height="500">
-    <el-table-column width="80">
-      <template #default>
-        <el-icon class="drag-handle"><Sort /></el-icon>
-      </template>
-    </el-table-column>
-    <el-table-column prop="date1" label="操作名称"></el-table-column>
-  </el-table>
-
-  <el-table :data="tableData1" row-key="id" class="draggable-table" height="500">
-    <el-table-column width="80">
-      <template #default>
-        <el-icon class="drag-handle"><Sort /></el-icon>
-      </template>
-    </el-table-column>
-    <el-table-column prop="task" label="任务名称"></el-table-column>
-  </el-table> -->
+  
 </template>
 </template>
-
 <script setup>
 <script setup>
-import { ref, onMounted, onUnmounted, nextTick } from 'vue';
-import Sortable from 'sortablejs';
-
-// 表格1数据
-const tableData = ref([
-  { id: '1', date1: '流域拓扑' },
-  { id: '2', date1: '雨量站' },
-  { id: '3', date1: '水库' }
-]);
+import { ref } from 'vue';
+import axios from 'axios';
+import { ElMessage } from 'element-plus';
+
+const uploadRef = ref(null);
+const fileList = ref([]); // 存储文件列表
+
+// 文件选择时触发
+const handleChange = (file, files) => {
+  // 验证文件类型和大小
+  const validTypes = ['image/jpeg', 'video/mp4'];
+  const isTypeValid = validTypes.includes(file.raw.type);
+  const isSizeValid = file.size / 1024 / 1024 < 100; // 限制100MB
+
+  if (!isTypeValid) {
+    ElMessage.error('仅支持 JPG/MP4 格式');
+    uploadRef.value.remove(file); // 移除无效文件
+  } else if (!isSizeValid) {
+    ElMessage.error('文件大小超过100MB');
+    uploadRef.value.remove(file);
+  }
+};
 
 
-// 表格2数据
-const tableData1 = ref([
-  { id: '101', task: '需求分析' },
-  { id: '102', task: 'UI设计' },
-  { id: '103', task: '接口文档' }
-]);
+// 手动提交上传
+const submitUpload = () => {
+  if (fileList.value.length === 0) {
+    ElMessage.warning('请先选择文件');
+    return;
+  }
 
 
-let sortableInstance1 = null;
-let sortableInstance2 = null;
+  const formData = new FormData();
+  fileList.value.forEach(file => {
+    formData.append('files', file.raw); // 添加所有文件[3,9](@ref)
+  });
 
 
-// 初始化表格拖拽
-const initSortable = (tableClass, dataRef) => {
-  const tbody = document.querySelector(`${tableClass} .el-table__body-wrapper tbody`);
-  if (!tbody) return;
+  // 添加额外参数(可选)
+  formData.append('userId', '123');
 
 
-  return Sortable.create(tbody, {
-    handle: '.drag-handle',
-    animation: 150,
-    ghostClass: 'ghost',
-    onEnd: (event) => {
-      const { oldIndex, newIndex } = event;
-      const newData = [...dataRef.value]; // 深拷贝避免数据污染
-      const [movedItem] = newData.splice(oldIndex, 1);
-      newData.splice(newIndex, 0, movedItem);
-      dataRef.value = newData; // 响应式更新
+  // 发送请求
+  axios.post('https://api.example.com/upload', formData, {
+    headers: { 'Content-Type': 'multipart/form-data' },
+    onUploadProgress: (e) => {
+      console.log(`进度: ${Math.round((e.loaded / e.total) * 100)}%`);
     }
     }
+  }).then(res => {
+    ElMessage.success('上传成功');
+    uploadRef.value.clearFiles(); // 清空文件列表[8](@ref)
+  }).catch(err => {
+    ElMessage.error('上传失败');
   });
   });
 };
 };
-
-// 生命周期管理
-onMounted(() => {
-  nextTick(() => {
-    // 分别初始化两个表格
-    sortableInstance1 = initSortable('.draggable-table:first-child', tableData);
-    sortableInstance2 = initSortable('.draggable-table:last-child', tableData1);
-  });
-});
-
-onUnmounted(() => {
-  // 销毁所有实例
-  sortableInstance1?.destroy();
-  sortableInstance2?.destroy();
-});
-</script>
-
-<style scoped>
-.drag-handle {
-  cursor: move;
-}
-
-.ghost {
-  opacity: 0.5;
-  background: #c8ebfb;
-}
-
-/* 防止文字选中 */
-:deep(.el-table__row) {
-  user-select: none;
-  -webkit-user-select: none;
-}
-</style>
+</script>

+ 188 - 152
ruoyi-ui/src/views/register/componentReg/index.vue

@@ -44,7 +44,7 @@
         </div>
         </div>
         <div style="display: flex;width: 20%;align-items: center;margin-left: 20%;">
         <div style="display: flex;width: 20%;align-items: center;margin-left: 20%;">
             <el-button type="primary" style="margin-left: 5%;" @click="getModelListTable" :icon="Search">查询</el-button>
             <el-button type="primary" style="margin-left: 5%;" @click="getModelListTable" :icon="Search">查询</el-button>
-            <el-button type="primary" style="margin-left: 5%;" @click="submit" icon="Refresh">重置</el-button>
+            <el-button type="primary" style="margin-left: 5%;" icon="Refresh">重置</el-button>
             <el-button type="primary" style="margin-left:5%;" @click="reg" icon="Plus">注册</el-button>
             <el-button type="primary" style="margin-left:5%;" @click="reg" icon="Plus">注册</el-button>
             <!-- <el-button type="" style="margin-left:5%;" plain icon="Plus">切换展示模式</el-button> -->
             <!-- <el-button type="" style="margin-left:5%;" plain icon="Plus">切换展示模式</el-button> -->
         </div>
         </div>
@@ -69,7 +69,7 @@
         :header-cell-style="{ textAlign: 'center'}"
         :header-cell-style="{ textAlign: 'center'}"
         :row-style="{ height: heightAll*0.01+'px',fontSize: '16px',textAlign:'center'  }"
         :row-style="{ height: heightAll*0.01+'px',fontSize: '16px',textAlign:'center'  }"
         border 
         border 
-        :max-height="tableheight">
+        :height="tableheight">
         <el-table-column type="selection" width="55"></el-table-column>
         <el-table-column type="selection" width="55"></el-table-column>
         <el-table-column type="index" label="序号" width="80"></el-table-column>
         <el-table-column type="index" label="序号" width="80"></el-table-column>
         <el-table-column prop="name" label="组件名称">
         <el-table-column prop="name" label="组件名称">
@@ -105,9 +105,9 @@
                 <div style="display: flex;justify-content: space-between;width: 80%;">
                 <div style="display: flex;justify-content: space-between;width: 80%;">
                     <el-button type="primary" size="mini" text style="margin-left: -2%;">发布</el-button>
                     <el-button type="primary" size="mini" text style="margin-left: -2%;">发布</el-button>
                     <el-button type="primary" text size="mini" style="margin-left: -5%;">测试</el-button>
                     <el-button type="primary" text size="mini" style="margin-left: -5%;">测试</el-button>
-                    <el-button type="primary" size="mini" text style="margin-left: -5%;">编辑</el-button>
+                    <el-button type="primary" @click="showEdit(scope.row)" size="mini" text style="margin-left: -5%;">编辑</el-button>
                     <!-- <el-button type="danger" text size="mini" style="margin-left: -5%;" @click="handleDelete(scope.row)">注销</el-button> -->
                     <!-- <el-button type="danger" text size="mini" style="margin-left: -5%;" @click="handleDelete(scope.row)">注销</el-button> -->
-                    <el-button type="primary" text size="mini" style="margin-left: -5%;">查看</el-button>
+                    <el-button @click="showDe(scope.row)" type="primary" text size="mini" style="margin-left: -5%;">查看</el-button>
                     <el-button type="primary" text size="mini" style="margin-left: -5%;">API管理</el-button>
                     <el-button type="primary" text size="mini" style="margin-left: -5%;">API管理</el-button>
                 </div>
                 </div>
             </template>
             </template>
@@ -117,47 +117,47 @@
           <el-pagination
           <el-pagination
             small
             small
             v-model='currentPage'
             v-model='currentPage'
-            @update = changePage
+            @current-change="changePage"
             background
             background
             layout="prev, pager, next"
             layout="prev, pager, next"
             :total="totalComReg"
             :total="totalComReg"
             class="mt-4"
             class="mt-4"
           />
           />
         </div>
         </div>
-        <el-dialog v-model="dialogVisible" title="组件注册" width="50%" @close="clearForm">
+        <el-dialog v-model="dialogVisible" title="组件注册" width="50%" @close="clearForm" destroy-on-close :key="tableKey">
           <el-steps :active="active" finish-status="success" simple style="margin-top: 20px">
           <el-steps :active="active" finish-status="success" simple style="margin-top: 20px">
             <el-step title="第一步"></el-step>
             <el-step title="第一步"></el-step>
             <el-step title="第二步"></el-step>
             <el-step title="第二步"></el-step>
             <el-step title="第三步"></el-step>
             <el-step title="第三步"></el-step>
           </el-steps>
           </el-steps>
-            <div v-if="active==0">
-              <div v-if="active==0" style="margin-left: 1%;margin-top: 1%;display: flex;align-items: center;">
+            <div v-show="active==0">
+              <div style="margin-left: 1%;margin-top: 1%;display: flex;align-items: center;">
                 <div style="background-color: blue;width: 2px;height: 16px;"></div>
                 <div style="background-color: blue;width: 2px;height: 16px;"></div>
                 <div style="font-weight: bold;font-size: 16px;margin-left: 0.5%;">基本信息</div>
                 <div style="font-weight: bold;font-size: 16px;margin-left: 0.5%;">基本信息</div>
               </div>
               </div>
-              <div v-if="active==0" style="margin-left: 1%;margin-top: 1%;">
-                  <el-form style="margin-left: 5%;"  :model="formJi" label-position="left" ref="formRefJi" class="demo-form-inline" :rules="rulesJi">
+              <div style="margin-left: 1%;margin-top: 1%;">
+                  <el-form :key="tableKey" style="margin-left: 5%;"  :model="formJi" label-position="left" ref="formRefJi" class="demo-form-inline" :rules="rulesJi">
                       <el-row :gutter="40">
                       <el-row :gutter="40">
                       <el-col :span="9">
                       <el-col :span="9">
                           <el-form-item label="组件名称:" prop="name" style="margin-left: -3%;">
                           <el-form-item label="组件名称:" prop="name" style="margin-left: -3%;">
-                            <el-input v-model="formJi.name" />
+                            <el-input v-model="formJi.name" :disabled="isEdit"/>
                           </el-form-item>
                           </el-form-item>
                       </el-col>
                       </el-col>
                       <el-col :span="9">
                       <el-col :span="9">
                           <el-form-item label="版本号:" prop="version" style="margin-left: -3%;">
                           <el-form-item label="版本号:" prop="version" style="margin-left: -3%;">
-                              <el-input v-model="formJi.version" />
+                              <el-input v-model="formJi.version" :disabled="isEdit"/>
                           </el-form-item>
                           </el-form-item>
                       </el-col>
                       </el-col>
                       </el-row>
                       </el-row>
                       <el-row :gutter="40" style="margin-top: 1%;">
                       <el-row :gutter="40" style="margin-top: 1%;">
                       <el-col :span="9" >
                       <el-col :span="9" >
                           <el-form-item label="组件英文名称:" prop="enname" style="margin-left: -3%;"> 
                           <el-form-item label="组件英文名称:" prop="enname" style="margin-left: -3%;"> 
-                            <el-input v-model="formJi.enname" />
+                            <el-input v-model="formJi.enname" :disabled="isEdit"/>
                           </el-form-item>
                           </el-form-item>
                       </el-col>
                       </el-col>
                       <el-col :span="9">
                       <el-col :span="9">
                           <el-form-item label="排序:" prop="">
                           <el-form-item label="排序:" prop="">
-                              <el-input v-model="formJi.region" />
+                              <el-input v-model="formJi.region" :disabled="isEdit"/>
                           </el-form-item>
                           </el-form-item>
                       </el-col>
                       </el-col>
                       </el-row>
                       </el-row>
@@ -166,6 +166,7 @@
                           <el-form-item label="模型分类:" prop="type">
                           <el-form-item label="模型分类:" prop="type">
                               <el-select
                               <el-select
                               v-model="formJi.type"
                               v-model="formJi.type"
+                               :disabled="isEdit"
                               style="width: 100%;margin-left: 1%;"
                               style="width: 100%;margin-left: 1%;"
                           >
                           >
                               <el-option
                               <el-option
@@ -179,7 +180,7 @@
                       </el-col>
                       </el-col>
                       <el-col :span="9">
                       <el-col :span="9">
                           <el-form-item label="开发语言:">
                           <el-form-item label="开发语言:">
-                              <el-radio-group v-model="formJi.devlang" class="ml-4" size="small" style="margin-top: -10%;">
+                              <el-radio-group v-model="formJi.devlang" class="ml-4" size="small" style="margin-top: -10%;" :disabled="isEdit">
                                   <el-radio label="C++" size="large">C++</el-radio>
                                   <el-radio label="C++" size="large">C++</el-radio>
                                   <el-radio label=".net" size="large">.net</el-radio>    
                                   <el-radio label=".net" size="large">.net</el-radio>    
                                   <el-radio label="java" size="large">java</el-radio>
                                   <el-radio label="java" size="large">java</el-radio>
@@ -190,20 +191,20 @@
                       </el-col>
                       </el-col>
                       </el-row>
                       </el-row>
                       <el-form-item label="组件简介:">
                       <el-form-item label="组件简介:">
-                          <el-input v-model="formJi.intro" style="width: 30%;" :rows="2" resize="none" type="textarea"/>
+                          <el-input v-model="formJi.intro" style="width: 30%;" :disabled="isEdit" :rows="2" resize="none" type="textarea"/>
                       </el-form-item>
                       </el-form-item>
                   </el-form>
                   </el-form>
               </div>
               </div>
-              <div v-if="active==0" style="margin-left: 1%;margin-top: 1%;display: flex;align-items: center;">
+              <div style="margin-left: 1%;margin-top: 1%;display: flex;align-items: center;">
                   <div style="background-color: blue;width: 2px;height: 16px;"></div>
                   <div style="background-color: blue;width: 2px;height: 16px;"></div>
                   <div style="font-weight: bold;font-size: 16px;margin-left: 0.5%;">提供单位信息</div>
                   <div style="font-weight: bold;font-size: 16px;margin-left: 0.5%;">提供单位信息</div>
               </div>
               </div>
-              <div v-if="active==0" style="margin-left: 1%;margin-top: 1%;">
-                  <el-form style="margin-left: 5%;margin-top: 2%;"  :model="formTi" ref="formRefTi" class="demo-form-inline" :rules="rulesTi">
+              <div style="margin-left: 1%;margin-top: 1%;">
+                  <el-form style="margin-left: 5%;margin-top: 2%;" :disabled="isEdit" :model="formTi" ref="formRefTi" class="demo-form-inline" :rules="rulesTi">
                       <el-row :gutter="40">
                       <el-row :gutter="40">
                       <el-col :span="12">
                       <el-col :span="12">
-                          <el-form-item label="提供单位:" prop="ti">
-                          <el-input v-model="formTi.ti" style="width: 65%;margin-left: 1%;" placeholder="" />
+                          <el-form-item label="提供单位:" prop="mdUnit">
+                          <el-input v-model="formTi.mdUnit" style="width: 65%;margin-left: 1%;" placeholder="" />
                           <!-- <el-button type="primary" style="margin-left: 1%;">选择</el-button>
                           <!-- <el-button type="primary" style="margin-left: 1%;">选择</el-button>
                             <el-button type="" style="margin-left:1%;">清空</el-button> -->
                             <el-button type="" style="margin-left:1%;">清空</el-button> -->
                           </el-form-item>
                           </el-form-item>
@@ -225,65 +226,15 @@
                   </el-form>
                   </el-form>
               </div>
               </div>
             </div>
             </div>
-            <div v-if="active==1">
-              <!-- <div style="margin-left: 1%;margin-top: 1%;display: flex;align-items: center;">
-                <div style="background-color: blue;width: 2px;height: 16px;"></div>
-                <div style="font-weight: bold;font-size: 16px;margin-left: 0.5%;">示例数据</div>
-              </div>
-              <div style="margin-left: 1%;margin-top: 1%;">
-                  <el-form style="margin-left: 5%;margin-top: 2%;"  :model="form" class="demo-form-inline" :rules="rules">
-                      <el-row :gutter="40">
-                      <el-col :span="12">
-                          <el-form-item label="输入示例数据:" prop="name">
-                            <el-upload
-                                class="upload-demo"
-                                drag
-                                action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
-                                multiple
-                              >
-                                <el-icon class="el-icon--upload"><upload-filled /></el-icon>
-                                <div class="el-upload__text">
-                                  Drop file here or <em>click to upload</em>
-                                </div>
-                                <template #tip>
-                                  <div class="el-upload__tip">
-                                  </div>
-                                </template>
-                              </el-upload>
-                              <el-input v-model="form.region" style="width: 75%;" placeholder="请输入示例" :rows="2" type="textarea"/>
-                          </el-form-item>
-                      </el-col>
-                      <el-col :span="12">
-                          <el-form-item label="输入示例数据:" prop="name">
-                            <el-upload
-                                class="upload-demo"
-                                drag
-                                action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
-                                multiple
-                              >
-                                <el-icon class="el-icon--upload"><upload-filled /></el-icon>
-                                <div class="el-upload__text">
-                                  Drop file here or <em>click to upload</em>
-                                </div>
-                                <template #tip>
-                                  <div class="el-upload__tip">
-                                  </div>
-                                </template>
-                              </el-upload>
-                              <el-input v-model="form.region" style="width: 75%;" placeholder="请输入示例" :rows="2" type="textarea"/>
-                          </el-form-item>
-                      </el-col>
-                      </el-row>
-                  </el-form>
-              </div> -->
+            <div v-show="active==1">
               <div style="margin-left: 1%;margin-top: 1%;display: flex;align-items: center;">
               <div style="margin-left: 1%;margin-top: 1%;display: flex;align-items: center;">
                   <div style="background-color: blue;width: 2px;height: 16px;"></div>
                   <div style="background-color: blue;width: 2px;height: 16px;"></div>
                   <div style="font-weight: bold;font-size: 16px;margin-left: 0.5%;">模型组件上传</div>
                   <div style="font-weight: bold;font-size: 16px;margin-left: 0.5%;">模型组件上传</div>
               </div>
               </div>
               <div style="margin-left: 1%;margin-top: 1%;">
               <div style="margin-left: 1%;margin-top: 1%;">
-                  <el-form style="margin-left: 5%;margin-top: 2%;"  :model="formZu" class="demo-form-inline" ref="formRefZu" :rules="rulesZu">
-                    <el-form-item label="组件执行路径:" prop="name" style="margin-left: -1%;">
-                      <el-input v-model="rulesZu.mirrorImageEurl" style="width: 75%;" placeholder="请输入组件执行路径" :rows="2" type="textarea" resize="none"/>
+                  <el-form :disabled="isEdit" style="margin-left: 5%;margin-top: 2%;"  :model="formZu" class="demo-form-inline" ref="formRefZu" :rules="rulesZu">
+                    <el-form-item label="组件执行路径:" prop="mirrorImageEurl" style="margin-left: -1%;">
+                      <el-input v-model="formZu.mirrorImageEurl" style="width: 75%;" placeholder="请输入组件执行路径" :rows="2" type="textarea" resize="none"/>
                     </el-form-item>
                     </el-form-item>
                     <el-form-item label="组件说明文档:" prop="">
                     <el-form-item label="组件说明文档:" prop="">
                       <div style="width: 60%;">
                       <div style="width: 60%;">
@@ -292,7 +243,7 @@
                             :limit="1"
                             :limit="1"
                             accept=".xlsx, .xls"
                             accept=".xlsx, .xls"
                             :headers="upload.headers"
                             :headers="upload.headers"
-                            :action="upload.url + '?updateSupport=' + upload.updateSupport"
+                            :action="upload.url + '?file=' + upload.updateSupport"
                             :on-progress="handleFileUploadProgress"
                             :on-progress="handleFileUploadProgress"
                             :on-success="handleFileSuccess"
                             :on-success="handleFileSuccess"
                             :auto-upload="false"
                             :auto-upload="false"
@@ -313,7 +264,7 @@
                 <div style="font-weight: bold;font-size: 16px;margin-left: 0.5%;">资源需求</div>
                 <div style="font-weight: bold;font-size: 16px;margin-left: 0.5%;">资源需求</div>
               </div>
               </div>
               <div style="margin-left: 1%;margin-top: 1%;">
               <div style="margin-left: 1%;margin-top: 1%;">
-                  <el-form style="margin-left: 5%;margin-top: 2%;"  :model="formZu" class="demo-form-inline" ref="formRefZu" :rules="rulesZu">
+                  <el-form :disabled="isEdit" style="margin-left: 5%;margin-top: 2%;"  :model="formZu" class="demo-form-inline" ref="formRefZu" :rules="rulesZu">
                       <el-row :gutter="40">
                       <el-row :gutter="40">
                       <el-col :span="12">
                       <el-col :span="12">
                           <el-form-item label="CPU核心数:" prop="mdCPU" style="margin-left: -2%;">
                           <el-form-item label="CPU核心数:" prop="mdCPU" style="margin-left: -2%;">
@@ -324,8 +275,8 @@
                           </el-form-item>
                           </el-form-item>
                       </el-col>
                       </el-col>
                       <el-col :span="12">
                       <el-col :span="12">
-                          <el-form-item label="内存:" prop="name">
-                            <el-input v-model="formZu.region" style="width: 50%;" placeholder=""/>
+                          <el-form-item label="内存:" prop="nei">
+                            <el-input v-model="formZu.nei" style="width: 50%;" placeholder=""/>
                               <div style="margin-left: 2%;">
                               <div style="margin-left: 2%;">
                                 M
                                 M
                               </div>
                               </div>
@@ -339,9 +290,9 @@
                           </el-form-item>
                           </el-form-item>
                       </el-col>
                       </el-col>
                       <el-col :span="12">
                       <el-col :span="12">
-                          <el-form-item label="平台:" prop="name">
+                          <el-form-item label="平台:" prop="ping">
                             <el-select
                             <el-select
-                                v-model="formZu.name"
+                                v-model="formZu.ping"
                                 style="width: 50%;"
                                 style="width: 50%;"
                             >
                             >
                                 <el-option
                                 <el-option
@@ -368,7 +319,7 @@
                   </el-form>
                   </el-form>
               </div> -->
               </div> -->
             </div>
             </div>
-            <div v-if="active==2">
+            <div v-show="active==2">
               <div style="margin-left: 1%;margin-top: 1%;display: flex;align-items: center;width: 98%;">
               <div style="margin-left: 1%;margin-top: 1%;display: flex;align-items: center;width: 98%;">
                 <div style="background-color: blue;width: 2px;height: 16px;"></div>
                 <div style="background-color: blue;width: 2px;height: 16px;"></div>
                 <div style="font-weight: bold;font-size: 16px;margin-left: 0.5%;">输入参数</div>
                 <div style="font-weight: bold;font-size: 16px;margin-left: 0.5%;">输入参数</div>
@@ -566,9 +517,15 @@
                 <el-button type="primary" @click="next" v-if="active!=2">
                 <el-button type="primary" @click="next" v-if="active!=2">
                 下一步
                 下一步
                 </el-button>
                 </el-button>
-                <el-button type="primary" @click="submit" v-if="active==2">
+                <el-button type="primary" @click="subEdit" v-if="active==2&&isEdit===false&&isAdd===false">
+                提交
+                </el-button>
+                <el-button type="primary" @click="submit" v-if="active==2&&isEdit===false&&isAdd===true">
                 提交
                 提交
                 </el-button>
                 </el-button>
+                <el-button type="primary" @click="dialogVisible = false" v-if="active==2&&isEdit===true">
+                确定
+                </el-button>
             </span>
             </span>
             </template>
             </template>
         </el-dialog>
         </el-dialog>
@@ -576,9 +533,8 @@
   </div>
   </div>
 </template>
 </template>
 <script   setup>
 <script   setup>
-import { getModelList,addModel,delMdid } from "@/api/register/regCom";
+import { getModelList,addModel,delMdid,getModelFile,getModelDetail,updateModel,modelFile } from "@/api/register/regCom";
 import { ref, onMounted, onUnmounted, nextTick } from 'vue';
 import { ref, onMounted, onUnmounted, nextTick } from 'vue';
-import Sortable from 'sortablejs';
 import { Search } from '@element-plus/icons-vue'
 import { Search } from '@element-plus/icons-vue'
 import {
 import {
   ArrowLeft,
   ArrowLeft,
@@ -587,6 +543,7 @@ import {
 import { reactive } from 'vue'
 import { reactive } from 'vue'
 import { forwardRefProps } from 'element-plus/es/components/tooltip-v2/src/forward-ref.mjs';
 import { forwardRefProps } from 'element-plus/es/components/tooltip-v2/src/forward-ref.mjs';
 import { getToken } from "@/utils/auth";
 import { getToken } from "@/utils/auth";
+import { fa } from "element-plus/es/locales.mjs";
 const { proxy } = getCurrentInstance();
 const { proxy } = getCurrentInstance();
 const dragTableRef = ref()
 const dragTableRef = ref()
 const dialogVisible = ref(false)
 const dialogVisible = ref(false)
@@ -630,18 +587,18 @@ const data = reactive({
     "updateTime": "",
     "updateTime": "",
     "version": ''
     "version": ''
   },
   },
-  rules: {
-    name: [{ required: true, message: "不能为空", trigger: "blur" }],
-    version: [{ required: true, message: "不能为空", trigger: "blur" }],
-    enname: [{ required: true, message: "不能为空", trigger: "blur" }],
-    mdUnit: [{ required: true, message: "不能为空", trigger: "blur" }],
-    developer: [{ required: true, message: "不能为空", trigger: "blur" }],
-    mdContact: [{ required: true, message: "不能为空", trigger: "blur" }],
-    mdCPU: [{ required: true, message: "不能为空", trigger: "blur" }],
-  }
 });
 });
 
 
-const formJi = ref({});
+const isEdit = ref(true)
+const isAdd = ref(true)
+const formJi = ref({
+  name:'',
+  version:'',
+  enname:'',
+  devlang:'',
+  intro:'',
+  type:''
+});
 const rulesJi = reactive({
 const rulesJi = reactive({
   name: [{ required: true, message: '必填', trigger: 'blur' }],
   name: [{ required: true, message: '必填', trigger: 'blur' }],
   version: [{ required: true, message: '必填', trigger: 'blur' }],
   version: [{ required: true, message: '必填', trigger: 'blur' }],
@@ -649,20 +606,26 @@ const rulesJi = reactive({
 });
 });
 const formRefJi = ref();
 const formRefJi = ref();
 
 
-const formTi = ref({});
+const formTi = ref({
+  developer:'',
+  mdContact:'',
+  mdUnit:''
+});
 const rulesTi = reactive({
 const rulesTi = reactive({
-  ti: [{ required: true, message: '必填', trigger: 'blur' }],
+  mdUnit: [{ required: true, message: '必填', trigger: 'blur' }],
   developer: [{ required: true, message: '必填', trigger: 'blur' }],
   developer: [{ required: true, message: '必填', trigger: 'blur' }],
   mdContact: [{ required: true, message: '必填', trigger: 'blur' }],
   mdContact: [{ required: true, message: '必填', trigger: 'blur' }],
 });
 });
 const formRefTi = ref();
 const formRefTi = ref();
 
 
-const formZu = ref({});
+const formZu = ref({
+  mirrorImageEurl:'',
+  mdCPU:'',
+  mdGPU:''
+});
 const rulesZu = reactive({
 const rulesZu = reactive({
-  name: [{ required: true, message: '必填', trigger: 'blur' }],
-  developer: [{ required: true, message: '必填', trigger: 'blur' }],
+  mirrorImageEurl: [{ required: true, message: '必填', trigger: 'blur' }],
   mdCPU: [{ required: true, message: '必填', trigger: 'blur' }],
   mdCPU: [{ required: true, message: '必填', trigger: 'blur' }],
-  mdContact: [{ required: true, message: '必填', trigger: 'blur' }],
 });
 });
 const formRefZu = ref();
 const formRefZu = ref();
 
 
@@ -674,12 +637,13 @@ const upload = reactive({
   // 是否禁用上传
   // 是否禁用上传
   isUploading: false,
   isUploading: false,
   // 是否更新已经存在的用户数据
   // 是否更新已经存在的用户数据
-  updateSupport: 0,
+  updateSupport: '',
   // 设置上传的请求头部
   // 设置上传的请求头部
   headers: { Authorization: "Bearer " + getToken() },
   headers: { Authorization: "Bearer " + getToken() },
   // 上传的地址
   // 上传的地址
-  url: import.meta.env.VITE_APP_BASE_API + "/system/user/importData"
+  url: import.meta.env.VITE_APP_BASE_API + "/common/upload"
 });
 });
+const tableKey = ref(0);
 const totalComReg = ref()
 const totalComReg = ref()
 const currentPage = ref(1)
 const currentPage = ref(1)
 const { queryParams, form, rules } = toRefs(data);
 const { queryParams, form, rules } = toRefs(data);
@@ -734,58 +698,129 @@ const options = [
     value: 'Option1',
     value: 'Option1',
     label: 'Option1',
     label: 'Option1',
   },
   },
-  {
-    value: 'Option2',
-    label: 'Option2',
-  },
-  {
-    value: 'Option3',
-    label: 'Option3',
-  },
-  {
-    value: 'Option4',
-    label: 'Option4',
-  },
-  {
-    value: 'Option5',
-    label: 'Option5',
-  },
 ]
 ]
+const uploadRef = ref(null);
+const parForm = ref('')
 onMounted(() => {
 onMounted(() => {
   getModelListTable()
   getModelListTable()
   // addNewModel()
   // addNewModel()
 });
 });
-function submit(){
-  const data = ref({ user:1 });
-  data.value = { ...data.value, ...{ age: 20 } };
-  console.log(data.value)
-  const formTotal = { ...formJi.value,...formTi.value,...formZu.value, };
-  addModel(formTotal).then(res=>{
-    
+function updateSameProperties(target, source) {
+  Object.keys(target).forEach(key => {
+    if (source.hasOwnProperty(key)) {
+      target[key] = source[key]; // 仅更新同名属性
+    }
+  });
+  return target;
+}
+function showDe(row){
+  dialogVisible.value = true
+  isEdit.value = true
+  getModelDetail(row.mdid).then(res=>{
+    parForm.value = res.data
+    formJi.value = updateSameProperties(formJi.value,res.data)
+    formTi.value = updateSameProperties(formTi.value,res.data)
+    formZu.value = updateSameProperties(formZu.value,res.data)
   })
   })
 }
 }
-function clearForm(){
-  formJi.value = {}
-  formTi.value = {}
-  formZu.value = {}
+async function showEdit(row){
+  isAdd.value = false
+  dialogVisible.value = true
+  await nextTick()
+  isEdit.value = false
+  getModelDetail(row.mdid).then(res=>{
+    parForm.value = res.data
+    formJi.value = updateSameProperties(formJi.value,res.data)
+    formTi.value = updateSameProperties(formTi.value,res.data)
+    formZu.value = updateSameProperties(formZu.value,res.data)
+  })
 }
 }
-function addNewModel(){
-  addModel(form).then(res=>{
-
+function mergeObjects(...objects) {
+    return { ...objects.reduce((acc, obj) => ({ ...acc, ...obj }), {}) };
+}
+function subEdit(){
+  const formTotal = { ...formJi.value,...formTi.value,...formZu.value,...parForm.value };
+  const par = mergeObjects(parForm.value, formJi.value, formTi.value,formZu.value)
+  console.log(par)
+  updateModel(par).then(res=>{
+    if(res.code===200){
+      proxy.$modal.msgSuccess("修改成功");
+      dialogVisible.value = false
+    }
+  })
+}
+async function submit(){
+  const formTotal = { ...formJi.value,...formTi.value,...formZu.value,};
+  // debugger
+  await addModel(formTotal).then(res=>{
+    upload.updateSupport = res.msg
   })
   })
+  if(uploadRef.value?.uploadFiles?.length > 0){
+    uploadRef.value?.submit()
+  }
+  else{
+    proxy.$modal.msgSuccess("保存成功");
+    dialogVisible.value = false
+  }
+  getModelList()
+}
+async function handleFileSuccess(response, file, fileList){
+  console.log(response)
+  var par = {
+    filename: response.originalFilename,
+    isDocument: '',
+    isMainLibrary: '',
+    mdid: upload.updateSupport,
+    relativePath: response.fileName,
+    signature:''
+  }
+  console.log(par)
+  await modelFile(par).then(res=>{
+    if(res.code===200){
+      proxy.$modal.msgSuccess("保存成功");
+      dialogVisible.value = false
+    }
+  })
+  getModelListTable()
+};
+function clearForm(){
+  formJi.value = {
+    name:'',
+    version:'',
+    enname:'',
+    devlang:'',
+    intro:'',
+    type:''
+  }
+  formTi.value = {
+    developer:'',
+    mdContact:'',
+    mdUnit:''
+  }
+  formZu.value = {
+    developer:'',
+    mdContact:'',
+    mdUnit:''
+  }
+  active.value = 0
 }
 }
 function reg(){
 function reg(){
+  isAdd.value = true
+  isEdit.value = false
   dialogVisible.value = true
   dialogVisible.value = true
 }
 }
-function changePage(a){
+function changePage(a){ 
+  
   currentPage.value = a
   currentPage.value = a
   getModelListTable()
   getModelListTable()
 }
 }
 function getModelListTable(){
 function getModelListTable(){
+  tableData.value = []
   var par = {
   var par = {
-    pageNum: currentPage,
+    pageNum: currentPage.value,
     pageSize: 10,
     pageSize: 10,
   }
   }
+  console.log(par)
   getModelList(par).then(res=>{
   getModelList(par).then(res=>{
     tableData.value = res.rows
     tableData.value = res.rows
     totalComReg.value = res.total
     totalComReg.value = res.total
@@ -802,24 +837,25 @@ function handleDelete(row) {
 };
 };
 const seledMo = ['primary','plain','plain','plain','plain','plain','plain']
 const seledMo = ['primary','plain','plain','plain','plain','plain','plain']
 const next = () => {
 const next = () => {
-  active.value++
-  // if(active.value==0){
-  //   formRefJi.value.validate((valid) => {
-  //     formRefTi.value.validate((valid1) => {
-  //       if(active.value<2&&valid&&valid1){
-  //         active.value++
-  //       }
-  //     });
-  //   });
-  // }
-  // if(active.value==1){
-  //   formRefZu.value.validate((valid) => {
-  //       if(active.value<2&&valid){
-  //         active.value++
+  if(active.value==0){
+    formRefJi.value.validate((valid) => {
+      formRefTi.value.validate((valid1) => {
+        // console.log(formTi.value)
+        console.log(valid1)
+        if(active.value<2&&valid&&valid1){
+          active.value++
+        }
+      });
+    });
+  }
+  if(active.value==1){
+    formRefZu.value.validate((valid) => {
+        if(active.value<2&&valid){
+          active.value++
           
           
-  //       }
-  //   });
-  // }
+        }
+    });
+  }
 }
 }
 const forward = () => {
 const forward = () => {
   if(active.value>0){
   if(active.value>0){

+ 168 - 0
ruoyi-ui/src/views/service/data/index.vue

@@ -0,0 +1,168 @@
+<template>
+  <div style="width: 100%;background-color: #F7F7F7;padding-top: 1%;display: flex;" :style="{'height':heightAll+'px'}">
+    <el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick" style="margin-left: 1%;background-color: #F7F7F7;" default-expand-all/>
+    <el-table 
+        :data="tableData" 
+        style="width: 91%;margin-left: 2%;margin-top: 0.5%;"
+        :cell-style="{ textAlign: 'center', }"
+        :header-cell-style="{ textAlign: 'center'}"
+        :row-style="{ height: heightAll*0.01+'px',fontSize: '16px',textAlign:'center'  }"
+        border 
+        :max-height="tableheight">
+        <el-table-column type="index" label="序号" width="80"></el-table-column>
+        <el-table-column prop="name" label="字段名称:">
+
+        </el-table-column>
+        <el-table-column prop="className" label="英文名称" width="160"/>
+        <el-table-column prop="mdUnit" label="字段数据项类型" width="160"/>
+        <el-table-column prop="registrant" label="字段数据类型" width="160"/>
+        <el-table-column prop="status" label="默认值" width="140">
+        </el-table-column>
+        <el-table-column prop="st1" label="单位" width="140">
+        </el-table-column>
+        <el-table-column prop="modifyBy" label="备注" width="170"/>
+        <el-table-column prop="address" label="操作" width="300">
+            <template #default="scope">
+                <div style="display: flex;justify-content: space-between;width: 80%;">
+                    <el-button type="primary" @click="showEdit(scope.row)" size="mini" text style="margin-left: 5%;">编辑</el-button>
+                    <!-- <el-button type="danger" text size="mini" style="margin-left: -5%;" @click="handleDelete(scope.row)">注销</el-button> -->
+                    <el-button @click="showDe(scope.row)" type="primary" text size="mini" style="margin-left: 1%;">查看</el-button>
+                    <el-button type="primary" text size="mini" style="margin-left: 1%;">删除</el-button>
+                </div>
+            </template>
+        </el-table-column>
+      </el-table>
+  </div>
+  <el-dialog v-model="dialogVisible" title="" width="30%" @close="clearForm" destroy-on-close :key="tableKey">
+    <el-form :disabled="isEdit" style="margin-left: 5%;margin-top: 2%;"  :model="formZu" class="demo-form-inline" ref="formRefZu" :rules="rulesZu">
+      <el-form-item label="字段名称:" prop="mirrorImageEurl" style="margin-left: -2%;">
+        <el-input v-model="formZu.mirrorImageEurl" style="width: 75%;" placeholder=""  resize="none"/>
+      </el-form-item>
+      <el-form-item label="英文名称:" prop="mirrorImageEurl" style="margin-left: -2%;">
+        <el-input v-model="formZu.mirrorImageEurl" style="width: 75%;" placeholder=""  resize="none"/>
+      </el-form-item>
+      <el-form-item label="字段数据项类型:" prop="mirrorImageEurl" style="margin-left: -2%;">
+        <el-input v-model="formZu.mirrorImageEurl" style="width: 75%;" placeholder=""  resize="none"/>
+      </el-form-item>
+      <el-form-item label="字段数据类型:" prop="mirrorImageEurl" style="margin-left: -2%;">
+        <el-input v-model="formZu.mirrorImageEurl" style="width: 75%;" placeholder=""  resize="none"/>
+      </el-form-item>
+      <el-form-item label="默认值:" prop="">
+        <el-input v-model="formZu.mirrorImageEurl" style="width: 75%;" placeholder=""  resize="none"/>
+      </el-form-item>
+      <el-form-item label="单位:" prop="">
+        <el-input v-model="formZu.mirrorImageEurl" style="width: 75%;" placeholder=""  resize="none"/>
+      </el-form-item>
+      <el-form-item label="备注:" prop="">
+        <el-input v-model="formZu.mirrorImageEurl" style="width: 75%;" placeholder=""  resize="none"/>
+      </el-form-item>
+    </el-form>
+  </el-dialog>
+</template>
+<script   setup>
+import { reactive } from 'vue'
+const data =  [
+  {
+    label: 'Level one 1',
+    children: [
+      {
+        label: 'Level two 1-1',
+        children: [
+          {
+            label: 'Level three 1-1-1',
+          },
+        ],
+      },
+    ],
+  },
+  {
+    label: 'Level one 2',
+    children: [
+      {
+        label: 'Level two 2-1',
+        children: [
+          {
+            label: 'Level three 2-1-1',
+          },
+        ],
+      },
+      {
+        label: 'Level two 2-2',
+        children: [
+          {
+            label: 'Level three 2-2-1',
+          },
+        ],
+      },
+    ],
+  },
+  {
+    label: 'Level one 3',
+    children: [
+      {
+        label: 'Level two 3-1',
+        children: [
+          {
+            label: 'Level three 3-1-1',
+          },
+        ],
+      },
+      {
+        label: 'Level two 3-2',
+        children: [
+          {
+            label: 'Level three 3-2-1',
+          },
+        ],
+      },
+    ],
+  },
+]
+const tableData = [
+    {name:'1'}
+]
+const heightAll = window.innerHeight
+const dialogVisible = ref(true)
+
+const formZu = ref({
+  mirrorImageEurl:'',
+  mdCPU:'',
+  mdGPU:''
+});
+const rulesZu = reactive({
+  mirrorImageEurl: [{ required: true, message: '必填', trigger: 'blur' }],
+  mdCPU: [{ required: true, message: '必填', trigger: 'blur' }],
+});
+const formRefZu = ref();
+
+
+</script>
+<style scoped>
+
+.drag-handle {
+  cursor: move;
+}
+
+.ghost {
+  opacity: 0.5;
+  background: #c8ebfb;
+}
+
+/* 防止文字选中 */
+:deep(.el-table__row) {
+  user-select: none;
+  -webkit-user-select: none;
+}
+</style>
+<style scoped lang="scss">
+
+
+.el-table .el-table__row td {
+  height: 60px !important; /* 行高 */
+}
+.custom-tree-node {
+  display: flex;       /* 启用 Flex 布局 */
+  align-items: center; /* 垂直居中 */
+  gap: 8px;            /* 图标与文字间距 */
+}
+</style>

+ 5 - 5
ruoyi-ui/src/views/service/info/AeService.vue

@@ -157,21 +157,21 @@
               ></el-input>
               ></el-input>
             </el-form-item>
             </el-form-item>
             <el-row type="flex" justify="center">
             <el-row type="flex" justify="center">
-              <el-button
+              <!-- <el-button
                 icon="ArrowLeft"
                 icon="ArrowLeft"
                 size="small"
                 size="small"
                 disabled
                 disabled
                 @click="forwardStep"
                 @click="forwardStep"
                 circle
                 circle
-              ></el-button>
+              ></el-button> -->
               <el-button type="primary" @click="onSubmit"> 保存</el-button>
               <el-button type="primary" @click="onSubmit"> 保存</el-button>
-              <el-button @click="exit">退出</el-button>
-              <el-button
+              <!-- <el-button @click="exit">退出</el-button> -->
+              <!-- <el-button
                 icon="ArrowRight"
                 icon="ArrowRight"
                 size="small"
                 size="small"
                 @click="nextStep"
                 @click="nextStep"
                 circle
                 circle
-              ></el-button>
+              ></el-button> -->
             </el-row>
             </el-row>
           </el-form>
           </el-form>
           <el-tabs v-model="activeName" type="card">
           <el-tabs v-model="activeName" type="card">

+ 4 - 4
ruoyi-ui/src/views/service/info/serviceFile.vue

@@ -114,18 +114,18 @@
       />
       />
     </el-row>
     </el-row>
     <el-row type="flex" justify="center">
     <el-row type="flex" justify="center">
-      <el-button
+      <!-- <el-button
         icon="ArrowLeft"
         icon="ArrowLeft"
         @click="forwardStep"
         @click="forwardStep"
         circle
         circle
-      ></el-button>
+      ></el-button> -->
       <el-button @click="exit">退出</el-button>
       <el-button @click="exit">退出</el-button>
-      <el-button
+      <!-- <el-button
         icon="ArrowRight"
         icon="ArrowRight"
         @click="nextStep"
         @click="nextStep"
         disabled
         disabled
         circle
         circle
-      ></el-button>
+      ></el-button> -->
     </el-row>
     </el-row>
     <a ref="downloadTools" style="display: none" href="" download=""></a>
     <a ref="downloadTools" style="display: none" href="" download=""></a>
   </div>
   </div>

+ 5 - 5
ruoyi-ui/src/views/service/info/serviceParam.vue

@@ -76,21 +76,21 @@
       </tr>
       </tr>
     </table>
     </table>
     <el-row type="flex" justify="center">
     <el-row type="flex" justify="center">
-      <el-button
+      <!-- <el-button
         icon="ArrowLeft"
         icon="ArrowLeft"
         @click="forwardStep"
         @click="forwardStep"
         circle
         circle
-      ></el-button>
+      ></el-button> -->
       <el-button @click="addParam">新增参数</el-button>
       <el-button @click="addParam">新增参数</el-button>
       <el-button type="primary" @click="submitForm('serviceParamForm')">
       <el-button type="primary" @click="submitForm('serviceParamForm')">
         保存
         保存
       </el-button>
       </el-button>
-      <el-button @click="exit">退出</el-button>
-      <el-button
+      <!-- <el-button @click="exit">退出</el-button> -->
+      <!-- <el-button
         icon="ArrowRight"
         icon="ArrowRight"
         @click="nextStep"
         @click="nextStep"
         circle
         circle
-      ></el-button>
+      ></el-button> -->
     </el-row>
     </el-row>
   </el-form>
   </el-form>
 </template>
 </template>