Ver código fonte

就差一个对比

wangshuo 1 mês atrás
pai
commit
afeae70912

+ 3 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysCompanyTemplateController.java

@@ -29,7 +29,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
 
 /**
  * 企业模板配置Controller
- * 
+ *
  * @author lixu
  * @date 2025-05-21
  */
@@ -63,11 +63,11 @@ public class SysCompanyTemplateController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:template:getTemplate')")
     @Log(title = "获取模板详情列表", businessType = BusinessType.EXPORT)
     @GetMapping("/getTemplate")
-    public AjaxResult getTemplate(String type)
+    public AjaxResult getTemplate()
     {
         Map map = new HashMap<>();
         SysRepo sysRepo = new SysRepo();
-        List<SysDictData> list = sysDictTypeServiceImpl.selectDictDataByType(type);
+        List<SysDictData> list = sysDictTypeServiceImpl.selectDictDataByType("sys_repo_group");
         if(list == null){
             return AjaxResult.warn("未找到该类型");
         }else{

+ 9 - 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRepoController.java

@@ -4,6 +4,7 @@ import java.io.IOException;
 import java.util.List;
 import java.util.Set;
 
+import com.alibaba.druid.sql.dialect.oscar.visitor.OscarPermissionOutputVisitor;
 import com.ruoyi.common.config.RuoYiConfig;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.utils.StringUtils;
@@ -33,7 +34,7 @@ import static com.ruoyi.common.config.RuoYiConfig.getProfile;
 
 /**
  * 仓库管理Controller
- * 
+ *
  * @author lixu
  * @date 2025-05-15
  */
@@ -58,6 +59,7 @@ public class SysRepoController extends BaseController
         return AjaxResult.success(getDataTable(list));
     }
 
+
     /**
      * 获取仓库详细信息
      */
@@ -170,15 +172,18 @@ public class SysRepoController extends BaseController
      * 文件下载
      */
     @GetMapping("/download")
-    public void Download(String file_path,String fileName, HttpServletRequest request, HttpServletResponse response)
+    public void Download(String url ,String fileName, HttpServletResponse response)
     {
         try
         {
             if (!FileUtils.checkAllowDownload(fileName))
             {
-                throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", file_path));
+                throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", url));
             }
-            String filePath = RuoYiConfig.getUploadPath() + file_path;
+            //去除固定前缀“/profile”
+            url = url.substring(15);
+            String filePath = RuoYiConfig.getUploadPath() + url;
+            System.out.println(filePath);
             response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
             FileUtils.setAttachmentResponseHeader(response, fileName);
             FileUtils.writeBytes(filePath, response.getOutputStream());

+ 53 - 0
ruoyi-ui/src/api/system/company.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询菜单列表
+export function listCompany(query) {
+  return request({
+    url: '/system/template/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 新增企业
+export function addCompany(data) {
+  return request({
+    url: '/system/template',
+    method: 'post',
+    data: data
+  })
+}
+
+// 查看企业信息
+export function getInfo(id) {
+  return request({
+    url: '/system/template/' + id,
+    method: 'get'
+  })
+}
+
+// 查询所有模板
+export function getTemplate() {
+  return request({
+    url: '/system/template/getTemplate',
+    method: 'get'
+  })
+}
+
+// 更新企业信息
+export function updateCompany(data) {
+  return request({
+    url: '/system/template/',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除企业
+export function delCompany(id) {
+  return request({
+    url: '/system/template/' + id,
+    method: 'delete'
+  })
+}
+

+ 31 - 3
ruoyi-ui/src/api/system/repo.js

@@ -26,6 +26,15 @@ export function addRepo(data) {
   })
 }
 
+// 新增组别
+export function addGroup(data) {
+  return request({
+    url: '/system/dict/data',
+    method: 'post',
+    data: data
+  })
+}
+
 // 修改菜单
 export function updateRepo(data) {
   return request({
@@ -44,10 +53,11 @@ export function delRepo(repoId) {
 }
 
 // 获取版本列表
-export function getVersion(repoId) {
+export function getVersion(data) {
   return request({
-    url: '/system/repo/version/' + repoId,
-    method: 'get'
+    url: '/system/repo/version/' + data.repoId,
+    method: 'get',
+    data: data
   })
 }
 
@@ -59,3 +69,21 @@ export function updateVersion(data) {
     data: data
   })
 }
+
+// 下载文件
+export function fileDownload(params) {
+  return request({
+    url: '/system/repo/download',
+    method: 'get',
+    params: params
+  })
+}
+
+// 回滚文件版本
+export function versionRollback(data) {
+  return request({
+    url: '/system/repo/back_file',
+    method: 'post',
+    data: data
+  })
+}

+ 130 - 68
ruoyi-ui/src/views/system/company/index.vue

@@ -1,9 +1,9 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
-      <el-form-item label="企业名称" prop="repoName">
+      <el-form-item label="企业名称" prop="companyName">
         <el-input
-          v-model="queryParams.repoName"
+          v-model="queryParams.companyName"
           placeholder="请输入企业名称"
           clearable
           @keyup.enter.native="handleQuery"
@@ -32,33 +32,26 @@
     <el-table
       v-if="refreshTable"
       v-loading="loading"
-      :data="repoList"
-      row-key="repoId"
+      :data="companyList"
+      row-key="companyId"
     >
-      <el-table-column type="index" label="ID" :show-overflow-tooltip="true" width="60"></el-table-column>
-      <el-table-column prop="repoName" label="名称" :show-overflow-tooltip="true" width="160"></el-table-column>
-      <el-table-column prop="version" label="版本" :show-overflow-tooltip="true" width="160"></el-table-column>
-      <el-table-column prop="groupId" label="组名" :show-overflow-tooltip="true" width="160">
-        <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_repo_group" :value="scope.row.groupId"/>
-        </template>
-      </el-table-column>
-      <el-table-column prop="repoStatus" label="状态" width="160">
-        <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_repo_status" :value="scope.row.repoStatus"/>
-        </template>
-      </el-table-column>
-      <el-table-column prop="updateBy" label="更新人" :show-overflow-tooltip="true" width="160"></el-table-column>
-      <el-table-column prop="createTime" label="更新时间" align="center" width="160">
+      <el-table-column type="index" label="ID" align="center" :show-overflow-tooltip="true" width="80"
+      ></el-table-column>
+      <el-table-column prop="companyName" label="名称" align="center" :show-overflow-tooltip="true" width="160"
+      ></el-table-column>
+      <el-table-column prop="updateBy" label="更新人" align="center" :show-overflow-tooltip="true" width="160"
+      ></el-table-column>
+      <el-table-column prop="updateTime" label="更新时间" align="center" :show-overflow-tooltip="true" width="160">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.updateTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column prop="remark" label="备注" :show-overflow-tooltip="true" width="160"></el-table-column>
+      <el-table-column prop="remark" label="备注" align="center" :show-overflow-tooltip="true" width="500"
+      ></el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
-          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">修改</el-button>
-          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button>
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleConfig(scope.row)">配置</el-button>
+          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDel(scope.row)">删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -71,29 +64,62 @@
       @pagination="getList"
     />
 
+    <!-- 添加或修改菜单对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="企业名称" prop="firmName">
+              <el-input v-model="form.companyName" placeholder="请输入企业名称"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="备注" prop="firmName">
+              <el-input v-model="form.remark" placeholder="可输入备注"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-divider>配置模板</el-divider>
+          </el-col>
+        </el-row>
+        <el-row v-for="(category, index) in Object.keys(mapData)" :key="category">
+          <el-col :span="24">
+            <el-form-item :label="category">
+              <el-select v-model="form.templateIds[index]">
+                <el-option
+                  v-for="item in mapData[category]"
+                  :key="item.repoId"
+                  :label="item.repoName"
+                  :value="item.repoId"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submit">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+
+    </el-dialog>
+
   </div>
 </template>
 
 
 <script>
-
-import {
-  addRepo,
-  delRepo,
-  fileDownload,
-  getRepo,
-  getVersion,
-  listRepo,
-  updateRepo,
-  updateVersion,
-  versionRollback
-} from '@/api/system/repo'
 import '@riophae/vue-treeselect/dist/vue-treeselect.css'
 import FileUpload from '@/components/FileUpload'
+import { addCompany, delCompany, getInfo, getTemplate, listCompany, updateCompany } from '@/api/system/company'
 
 export default {
   name: 'Repo',
-  dicts: ['sys_repo_status', 'sys_repo_type', 'sys_repo_group'],
+  dicts: [],
   components: { FileUpload },
   data() {
     return {
@@ -104,29 +130,32 @@ export default {
       // 总条数
       total: 0,
       // 角色表格数据
-      repoList: [],
+      companyList: [],
       // 弹出层标题
       title: '',
       // 是否显示弹出层
       open: false,
+      // 判断按钮
+      type: 0,
       // 重新渲染表格状态
       refreshTable: true,
-      uploadUrl: '/common/upload',
       // 查询参数
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        repoName: undefined,
+        companyName: undefined
       },
       // 表单参数
       form: {},
-      versionList: [],
+      // 企业配置
+      mapData: {},
       // 表单校验
       rules: {
-        repoName: [
-          { required: true, message: '文件名称不能为空', trigger: 'blur' }
-        ],
+        companyName: [
+          { required: true, message: '企业名称不能为空', trigger: 'blur' }
+        ]
       }
+
     }
   },
   created() {
@@ -136,29 +165,26 @@ export default {
     /** 查询菜单列表 */
     getList() {
       this.loading = true
-      listRepo(this.queryParams).then(response => {
-        this.repoList = response.data.rows
+      listCompany(this.queryParams).then(response => {
+        this.companyList = response.data.rows
         this.total = response.data.total
         this.loading = false
       })
     },
-// 取消按钮
+    // 取消按钮
     cancel() {
       this.open = false
       this.reset()
     },
-// 表单重置
+    // 表单重置
     reset() {
       this.form = {
-        repoId: undefined,
-        repoName: undefined,
-        version: undefined,
-        repoType: 'File',
-        repoStatus: 'Public',
-        description: undefined,
-        url: undefined,
-        groupId: undefined,
-        fileName: undefined
+        id: undefined,
+        companyId: undefined,
+        companyName: undefined,
+        remark: undefined,
+        templateIds: []
+
       }
       this.resetForm('form')
     },
@@ -172,17 +198,60 @@ export default {
       this.handleQuery()
     },
     /** 新增按钮操作 */
-    handleAdd(row) {
+    handleAdd() {
       this.reset()
-      if (row != null && row.repoId) {
-        this.form.parentId = row.repoId
-      } else {
-        this.form.parentId = 0
-      }
       this.open = true
       this.title = '添加菜单'
       this.type = 0
     },
+    /** 删除按钮操作 */
+    handleDel(row) {
+      this.$modal.confirm('是否确认删除:' + row.repoName).then(function() {
+        return delCompany(row.id)
+      }).then(() => {
+        this.getList()
+        this.$modal.msgSuccess('删除成功')
+      }).catch(() => {
+      })
+    },
+    /** 提交按钮 */
+    submit: function() {
+      this.$refs['form'].validate(valid => {
+        if (valid) {
+          if (this.type == 0) {
+            addCompany(this.form).then(response => {
+              this.$message('新增成功')
+              this.open = false
+              this.getList()
+            })
+          } else if (this.type == 1) {
+            updateCompany(this.form).then(response => {
+              this.$message('修改成功')
+              this.open = false
+              this.getList()
+            })
+          }
+        }
+      })
+    },
+    /** 企业配置 */
+    handleConfig(row) {
+      this.reset()
+      getInfo(row.id).then(response => {
+        this.form = response.data
+        this.form.templateIds.forEach((item, index) => {
+          if (item === 0) {
+            this.form.templateIds[index] = undefined
+          }
+        })
+      })
+      getTemplate().then(response => {
+        this.mapData = response.data
+      })
+      this.open = true
+      this.title = '企业配置'
+      this.type = 1
+    },
 
   }
 }
@@ -195,10 +264,3 @@ export default {
 
 
 
-
-
-
-
-
-
-

+ 48 - 19
ruoyi-ui/src/views/system/repo/index.vue

@@ -46,25 +46,25 @@
       row-key="repoId"
     >
       <el-table-column type="index" label="ID" :show-overflow-tooltip="true" width="60"></el-table-column>
-      <el-table-column prop="repoName" label="名称" :show-overflow-tooltip="true" width="160"></el-table-column>
-      <el-table-column prop="version" label="版本" :show-overflow-tooltip="true" width="160"></el-table-column>
-      <el-table-column prop="groupId" label="组名" :show-overflow-tooltip="true" width="160">
+      <el-table-column prop="repoName" label="名称" align="center" :show-overflow-tooltip="true" width="160"></el-table-column>
+      <el-table-column prop="version" label="版本" align="center" :show-overflow-tooltip="true" width="160"></el-table-column>
+      <el-table-column prop="groupId" label="组名" align="center" :show-overflow-tooltip="true" width="160">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_repo_group" :value="scope.row.groupId"/>
         </template>
       </el-table-column>
-      <el-table-column prop="repoStatus" label="状态" width="160">
+      <el-table-column prop="repoStatus" label="状态" align="center" width="160">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_repo_status" :value="scope.row.repoStatus"/>
         </template>
       </el-table-column>
-      <el-table-column prop="updateBy" label="更新人" :show-overflow-tooltip="true" width="160"></el-table-column>
+      <el-table-column prop="updateBy" label="更新人" align="center" :show-overflow-tooltip="true" width="160"></el-table-column>
       <el-table-column prop="createTime" label="更新时间" align="center" width="160">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.updateTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column prop="remark" label="备注" :show-overflow-tooltip="true" width="160"></el-table-column>
+      <el-table-column prop="remark" label="备注" align="center" :show-overflow-tooltip="true" width="160"></el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button size="mini" type="text" icon="el-icon-bottom" @click="handleDownload(scope.row)">下载</el-button>
@@ -95,17 +95,18 @@
             <el-form-item label="菜单类型" prop="repoType">
               <el-radio-group v-model="form.repoType" :disabled="type != 0">
                 <el-radio label="File">文件</el-radio>
+                <el-radio label="Group">组别</el-radio>
               </el-radio-group>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="12" :disabled="type == 0 || type == 3">
+          <el-col :span="12" :disabled="type == 0 || type == 3" v-if="this.form.repoType == 'File'">
             <el-form-item label="文件名称" prop="repoName">
               <el-input v-model="form.repoName" placeholder="请输入文件名称"/>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
+          <el-col :span="12" v-if="this.form.repoType == 'File'">
             <el-form-item label="状态" prop="repoStatus">
               <el-radio-group v-model="form.repoStatus">
                 <el-radio label="Private">私密</el-radio>
@@ -115,7 +116,14 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="12" :disabled="type == 1 || type == 2">
+          <el-col :span="24"  v-if="this.form.repoType == 'Group'">
+            <el-form-item label="组名" prop="dictLabel">
+              <el-input v-model="form2.dictLabel" placeholder="请输入组名"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12" :disabled="type == 1 || type == 2" v-if="this.form.repoType == 'File'">
             <el-form-item label="组名" prop="groupId">
               <el-select v-model="form.groupId" placeholder="组名" clearable>
                 <el-option
@@ -129,7 +137,7 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="12" v-if="type == 0 || type == 1">
+          <el-col :span="12" v-if="(type == 0 || type == 1) && this.form.repoType == 'File'">
             <el-form-item label="文件上传" prop="fileUpload">
               <FileUpload
                 :action="uploadUrl"
@@ -191,8 +199,8 @@
         </el-row>
         <el-row>
           <el-col :span="24">
-            <el-form-item label="备注" prop="description" v-if="type != 2">
-              <el-input v-model="form.description" placeholder="可输入备注"/>
+            <el-form-item label="备注" prop="remark" v-if="type != 2">
+              <el-input v-model="form.remark" placeholder="可输入备注"/>
             </el-form-item>
           </el-col>
         </el-row>
@@ -209,6 +217,7 @@
 <script>
 
 import {
+  addGroup,
   addRepo,
   delRepo, fileDownload,
   getRepo,
@@ -220,6 +229,7 @@ import {
 } from '@/api/system/repo'
 import '@riophae/vue-treeselect/dist/vue-treeselect.css'
 import FileUpload from '@/components/FileUpload'
+import Dict from '@/utils/dict/Dict'
 
 export default {
   name: 'Repo',
@@ -256,6 +266,7 @@ export default {
       },
       // 表单参数
       form: {},
+      form2:{},
       versionList: [],
       // 表单校验
       rules: {
@@ -264,7 +275,8 @@ export default {
         ],
         groupId: [
           { required: true, message: '组名不能为空', trigger: 'blur' }
-        ]
+        ],
+
       }
     }
   },
@@ -363,16 +375,33 @@ export default {
         if (valid) {
           if (this.type == 3) {
             updateRepo(this.form).then(response => {
-              this.$modal.msgSuccess('修改成功')
+              this.$message('修改成功')
               this.open = false
               this.getList()
             })
           } else if (this.type == 0) {
-            addRepo(this.form).then(response => {
-              this.$modal.msgSuccess('新增成功')
-              this.open = false
-              this.getList()
-            })
+            if(this.form.repoType == 'File'){
+              addRepo(this.form).then(response => {
+                this.$modal.msgSuccess('新增成功')
+                this.open = false
+                this.getList()
+              })
+            } else if(this.form.repoType == 'Group'){
+              this.form2.dictValue = 0
+              this.form2.dictType = 'sys_repo_group'
+              addGroup(this.form2).then(response => {
+                this.$modal.msgSuccess('新增成功')
+                this.open = false
+                this.getList()
+                this.form2.groupName = undefined
+                const dictInstance = new Dict()
+                dictInstance.init(this.dicts).then(() => {
+                  console.log('字典数据初始化成功')
+                }).catch(error => {
+                  console.error('字典数据初始化失败:', error)
+                })
+              })
+            }
           } else if (this.type == 1) {
             updateVersion(this.form).then(response => {
               this.$modal.msgSuccess('更新版本成功')