攻心小虫 1 месяц назад
Родитель
Сommit
9afa1cda76

+ 2 - 6
package.json

@@ -1,8 +1,8 @@
 {
-  "name": "ruoyi",
+  "name": "toid",
   "version": "3.8.9",
   "description": "传染病溯源预测系统",
-  "author": "若依",
+  "author": "浙大启真",
   "license": "MIT",
   "scripts": {
     "dev": "vue-cli-service serve",
@@ -19,10 +19,6 @@
     "admin-template",
     "management-system"
   ],
-  "repository": {
-    "type": "git",
-    "url": "https://gitee.com/y_project/RuoYi-Vue.git"
-  },
   "dependencies": {
     "@amap/amap-jsapi-loader": "^1.0.1",
     "@riophae/vue-treeselect": "0.4.0",

+ 44 - 0
src/api/data/dataReportByt.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询病原体历史统计列表
+export function listDataReportByt(query) {
+  return request({
+    url: '/data/dataReportByt/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询病原体历史统计详细
+export function getDataReportByt(id) {
+  return request({
+    url: '/data/dataReportByt/' + id,
+    method: 'get'
+  })
+}
+
+// 新增病原体历史统计
+export function addDataReportByt(data) {
+  return request({
+    url: '/data/dataReportByt',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改病原体历史统计
+export function updateDataReportByt(data) {
+  return request({
+    url: '/data/dataReportByt',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除病原体历史统计
+export function delDataReportByt(id) {
+  return request({
+    url: '/data/dataReportByt/' + id,
+    method: 'delete'
+  })
+}

+ 3 - 1
src/api/sample/sampleExperiment.js

@@ -52,9 +52,11 @@ export function pullSampleExperiment(id) {
 }
 
 // 生成解读报告
-export function generateSampleExperiment(id) {
+export function generatorSampleExperiment(id) {
   return request({
     url: '/sample/sampleExperiment/generator/' + id,
     method: 'post'
   })
 }
+
+

+ 44 - 0
src/api/system/systemConfig.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询诊断统计设置列表
+export function listSystemConfig(query) {
+  return request({
+    url: '/system/systemConfig/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询诊断统计设置详细
+export function getSystemConfig(id) {
+  return request({
+    url: '/system/systemConfig/' + id,
+    method: 'get'
+  })
+}
+
+// 新增诊断统计设置
+export function addSystemConfig(data) {
+  return request({
+    url: '/system/systemConfig',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改诊断统计设置
+export function updateSystemConfig(data) {
+  return request({
+    url: '/system/systemConfig',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除诊断统计设置
+export function delSystemConfig(id) {
+  return request({
+    url: '/system/systemConfig/' + id,
+    method: 'delete'
+  })
+}

BIN
src/assets/images/login-background.jpg


+ 1 - 1
src/assets/styles/ruoyi.scss

@@ -1,6 +1,6 @@
 /**
 * 通用css样式布局处理
-* Copyright (c) 2019 ruoyi
+
 */
 
 /** 基础通用 **/

+ 1 - 1
src/directive/dialog/drag.js

@@ -1,6 +1,6 @@
 /**
 * v-dialogDrag 弹窗拖拽
-* Copyright (c) 2019 ruoyi
+
 */
 
 export default {

+ 1 - 1
src/directive/dialog/dragHeight.js

@@ -1,6 +1,6 @@
 /**
  * v-dialogDragWidth 可拖动弹窗高度(右下角)
- * Copyright (c) 2019 ruoyi
+
  */
 
 export default {

+ 1 - 1
src/directive/dialog/dragWidth.js

@@ -1,6 +1,6 @@
 /**
  * v-dialogDragWidth 可拖动弹窗宽度(右侧边)
- * Copyright (c) 2019 ruoyi
+
  */
 
 export default {

+ 1 - 1
src/directive/module/clipboard.js

@@ -1,6 +1,6 @@
 /**
 * v-clipboard 文字复制剪贴
-* Copyright (c) 2021 ruoyi
+
 */
 
 import Clipboard from 'clipboard'

+ 1 - 1
src/directive/permission/hasPermi.js

@@ -1,6 +1,6 @@
  /**
  * v-hasPermi 操作权限处理
- * Copyright (c) 2019 ruoyi
+
  */
 
 import store from '@/store'

+ 1 - 1
src/directive/permission/hasRole.js

@@ -1,6 +1,6 @@
  /**
  * v-hasRole 角色权限处理
- * Copyright (c) 2019 ruoyi
+
  */
 
 import store from '@/store'

+ 0 - 14
src/router/index.js

@@ -153,20 +153,6 @@ export const dynamicRoutes = [
         meta: { title: '字典数据', activeMenu: '/system/dict' }
       }
     ]
-  },
-  {
-    path: '/tool/gen-edit',
-    component: Layout,
-    hidden: true,
-    permissions: ['tool:gen:edit'],
-    children: [
-      {
-        path: 'index/:tableId(\\d+)',
-        component: () => import('@/views/tool/gen/editTable'),
-        name: 'GenEdit',
-        meta: { title: '修改生成配置', activeMenu: '/tool/gen' }
-      }
-    ]
   }
 ]
 

+ 15 - 1
src/store/modules/tagsView.js

@@ -114,7 +114,15 @@ const mutations = {
       }
       return false
     })
-  }
+  },
+  EDIT_VISITED_VIEWS: (state, view) => {
+		for (var Index in state.visitedViews) {        
+			console.log(state.visitedViews[Index].path)        
+			if (state.visitedViews[Index].path == view.path) {       
+				state.visitedViews[Index].title = view.meta.title        
+			}        
+		}        
+	}
 }
 
 const actions = {
@@ -218,6 +226,12 @@ const actions = {
       resolve([...state.visitedViews])
     })
   },
+  editVisitedViews({ commit, state }, view) {
+		return new Promise((resolve) => {
+			commit('EDIT_VISITED_VIEWS', view)
+			resolve([...state.visitedViews])
+		})
+	}
 }
 
 export default {

+ 336 - 0
src/views/data/dataReportByt/index.vue

@@ -0,0 +1,336 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="唯一注册号" prop="assemblyAccession">
+        <el-input
+          v-model="queryParams.assemblyAccession"
+          placeholder="请输入唯一注册号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="病原体名称" prop="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入病原体名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="统计时间" prop="reportDate">
+        <el-date-picker clearable
+          v-model="queryParams.reportDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择统计时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="区域编号" prop="areaId">
+        <el-input
+          v-model="queryParams.areaId"
+          placeholder="请输入区域编号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="区域名称" prop="areaName">
+        <el-input
+          v-model="queryParams.areaName"
+          placeholder="请输入区域名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="数量" prop="num">
+        <el-input
+          v-model="queryParams.num"
+          placeholder="请输入数量"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['data:dataReportByt:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['data:dataReportByt:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['data:dataReportByt:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['data:dataReportByt:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="dataReportBytList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="编号" align="center" prop="id" />
+      <el-table-column label="唯一注册号" align="center" prop="assemblyAccession" />
+      <el-table-column label="病原体名称" align="center" prop="name" />
+      <el-table-column label="统计时间" align="center" prop="reportDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.reportDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="区域类型;" align="center" prop="areaType" />
+      <el-table-column label="区域编号" align="center" prop="areaId" />
+      <el-table-column label="区域名称" align="center" prop="areaName" />
+      <el-table-column label="数量" align="center" prop="num" />
+      <el-table-column label="备注" align="center" prop="remark" />
+      <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)"
+            v-hasPermi="['data:dataReportByt:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['data:dataReportByt:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改病原体历史统计对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="唯一注册号" prop="assemblyAccession">
+          <el-input v-model="form.assemblyAccession" placeholder="请输入唯一注册号" />
+        </el-form-item>
+        <el-form-item label="病原体名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入病原体名称" />
+        </el-form-item>
+        <el-form-item label="统计时间" prop="reportDate">
+          <el-date-picker clearable
+            v-model="form.reportDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择统计时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="区域编号" prop="areaId">
+          <el-input v-model="form.areaId" placeholder="请输入区域编号" />
+        </el-form-item>
+        <el-form-item label="区域名称" prop="areaName">
+          <el-input v-model="form.areaName" placeholder="请输入区域名称" />
+        </el-form-item>
+        <el-form-item label="数量" prop="num">
+          <el-input v-model="form.num" placeholder="请输入数量" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listDataReportByt, getDataReportByt, delDataReportByt, addDataReportByt, updateDataReportByt } from "@/api/data/dataReportByt"
+
+export default {
+  name: "DataReportByt",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 病原体历史统计表格数据
+      dataReportBytList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        assemblyAccession: null,
+        name: null,
+        reportDate: null,
+        areaType: null,
+        areaId: null,
+        areaName: null,
+        num: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    }
+  },
+  created() {
+    this.getList()
+  },
+  methods: {
+    /** 查询病原体历史统计列表 */
+    getList() {
+      this.loading = true
+      listDataReportByt(this.queryParams).then(response => {
+        this.dataReportBytList = response.rows
+        this.total = response.total
+        this.loading = false
+      })
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false
+      this.reset()
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        assemblyAccession: null,
+        name: null,
+        reportDate: null,
+        areaType: null,
+        areaId: null,
+        areaName: null,
+        num: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      }
+      this.resetForm("form")
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1
+      this.getList()
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm")
+      this.handleQuery()
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset()
+      this.open = true
+      this.title = "添加病原体历史统计"
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset()
+      const id = row.id || this.ids
+      getDataReportByt(id).then(response => {
+        this.form = response.data
+        this.open = true
+        this.title = "修改病原体历史统计"
+      })
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateDataReportByt(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功")
+              this.open = false
+              this.getList()
+            })
+          } else {
+            addDataReportByt(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功")
+              this.open = false
+              this.getList()
+            })
+          }
+        }
+      })
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids
+      this.$modal.confirm('是否确认删除病原体历史统计编号为"' + ids + '"的数据项?').then(function() {
+        return delDataReportByt(ids)
+      }).then(() => {
+        this.getList()
+        this.$modal.msgSuccess("删除成功")
+      }).catch(() => {})
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('data/dataReportByt/export', {
+        ...this.queryParams
+      }, `dataReportByt_${new Date().getTime()}.xlsx`)
+    }
+  }
+}
+</script>

+ 3 - 13
src/views/index.vue

@@ -5,18 +5,8 @@
     </div>
     <div class="button-container">
 
-      <el-button
-        size="mini"
-        icon="el-icon-s-home"
-        plain
-        @click="godata"
-        >基础数据维护</el-button>
-        <el-button
-        type="primary"
-        size="mini"
-        icon="el-icon-cloudy"
-        plain @click="godata2"
-        >实验管理</el-button>
+      <el-button size="mini" plain @click="godata" >样本管理</el-button>
+      <el-button size="mini" plain @click="godata2" >解读中心</el-button>
     </div>
   </div>
 </template>
@@ -31,7 +21,7 @@ export default {
   methods: {
     godata() {
       this.$router.push({
-        path: '/data/dataBase1'
+        path: '/sample/sampleInfo'
       });
     },
     godata2() {

+ 1 - 1
src/views/login.vue

@@ -56,7 +56,7 @@
     </el-form>
     <!--  底部  -->
     <div class="el-login-footer">
-      <span>Copyright © 2018-2025 ruoyi.vip All Rights Reserved.</span>
+      <span>Copyright © 2021 浙大启真未来城市科技(杭州)有限公司版权所有</span>
     </div>
   </div>
 </template>

+ 37 - 13
src/views/sample/sampleExperiment/filterReport.vue

@@ -1,6 +1,17 @@
 <template>
   <div class="filter-report">
     <!-- 患者基本信息 -->
+      <el-button
+        type="primary"
+        size="mini"
+        @click="saveFilterInfo"
+      >保存并生成报告</el-button>
+       <el-button
+          plain
+          size="mini"
+          @click="handleBack"
+        >返回</el-button>
+
     <el-card class="patient-info" shadow="hover">
       <h3>患者基本信息</h3>
       <div>
@@ -9,11 +20,6 @@
         <span style="margin-left: 20px;">年龄:{{ patient.age }}</span>
       </div>
       <div>
-        <el-button
-          type="primary"
-          @click="saveFilterInfo"
-          style="margin-top: 10px;"
-        >保存过滤信息</el-button>
       </div>
     </el-card>
 
@@ -30,6 +36,7 @@
               <el-button
                 type="primary"
                 @click="handleFilter('pathogen')"
+                size="mini"
                 style="margin-left: 20px;"
               >过滤</el-button>
             </div>
@@ -188,6 +195,7 @@
                 type="primary"
                 @click="handleFilter('resistance')"
                 style="margin-left: 20px;"
+                size="mini"
               >过滤</el-button>
             </div>
             <el-table
@@ -345,6 +353,7 @@
                 type="primary"
                 @click="handleFilter('virulence')"
                 style="margin-left: 20px;"
+                size="mini"
               >过滤</el-button>
             </div>
             <el-table
@@ -502,6 +511,7 @@
                 type="primary"
                 @click="handleFilter('mutation')"
                 style="margin-left: 20px;"
+                size="mini"
               >过滤</el-button>
             </div>
             <el-table
@@ -746,13 +756,8 @@ export default {
         jcz: ''
       },
       dataList: [],
-    }
-  },
-  watch: {
-    '$route.params.reportId'(newVal) {
-      if (!newVal) return;
-      this.experimentId = newVal;
-      this.init();
+      sampleInfoId:null,
+      baseid:null
     }
   },
   computed: {
@@ -772,8 +777,24 @@ export default {
   async created() {
     await this.getList();
     this.init();
+    this.sampleInfoId = this.$route.query.id;
+    this.baseid = this.$route.query.baseid;
+
+    // this.$route.meta.title = '过滤设置【实验编码:】'
+    // this.$store.dispatch('tagsView/editVisitedViews', this.$route)
   },
   methods: {
+    handleBack(){
+      let query = '';
+      if(this.baseid){
+        query += "baseid="+this.baseid+"&"
+      }
+      if(this.sampleInfoId){
+        query += "id="+this.sampleInfoId
+      }
+      const obj = { path: "/read/sampleExperiment/?"+query }
+      this.$tab.closeOpenPage(obj);
+    },
     formatValue(value) {
       if (!value || this.dataList.length === 0) return '';
       let name = '';
@@ -803,7 +824,7 @@ export default {
         readremark: this.readremark,
       };
       postsaveData(params).then(res=>{
-        console.log(res);
+        this.$modal.msgSuccess("保存过滤信息并重新生成报告")
       })
     },
     init(){
@@ -961,6 +982,9 @@ export default {
 </script>
 
 <style scoped>
+.patient-info{
+  margin-top:10px;
+}
 .filter-report {
   padding: 20px;
 }

+ 16 - 21
src/views/sample/sampleExperiment/index.vue

@@ -9,9 +9,9 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="样本编码" prop="sampleInfoId" v-if="sampleInfoId == null">
+      <el-form-item label="样本编码" prop="sampleInfoCode" v-if="sampleInfoId == null">
         <el-input
-          v-model="queryParams.sampleInfoId"
+          v-model="queryParams.sampleInfoCode"
           placeholder="请输入样本编码"
           clearable
           @keyup.enter.native="handleQuery"
@@ -78,13 +78,7 @@
             @click="openpdf(scope.row)"
           >查看报告</el-button>
           <el-button
-           v-if="scope.row.status !== 1"
-            size="mini"
-            type="text"
-            @click="handlePull(scope.row)"
-          >重新生成</el-button>
-          <el-button
-           v-if="scope.row.status === 1"
+           v-if="scope.row.generatorStatus !== 2"
             size="mini"
             type="text"
             @click="handlePull(scope.row)"
@@ -198,6 +192,18 @@ export default {
     this.getList()
   },
   methods: {
+     // 过滤按钮操作
+    handleFilter(row) {
+      const id = row.id
+      let query = '';
+      if(this.baseid){
+        query += "baseid="+this.baseid+"&"
+      }
+      if(this.sampleInfoId){
+        query += "id="+this.sampleInfoId
+      }
+      this.$router.push("/read/sampleExperiment-filter/report/" + id+"?"+query)
+    },
     handleBack(){
       const obj = { path: "/sample/sampleInfo/" + this.baseid }
       this.$tab.closeOpenPage(obj);
@@ -297,13 +303,6 @@ export default {
         }
       })
     },
-    // 查看报告按钮操作
-    handleRead(row) {
-      const id = row.id
-      generateSampleExperiment(id).then(response => {
-       console.log(response)
-      }).catch(() => {})
-    },
     // 生成报告按钮操作
     handlePull(row) {
       const ids = row.id
@@ -321,11 +320,7 @@ export default {
       }).catch(() => {})
     },
 
-    // 过滤按钮操作
-    handleFilter(row) {
-      const id = row.id
-      this.$router.push("/read/sampleExperiment-filter/report/" + id)
-    },
+   
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids

+ 275 - 0
src/views/system/systemConfig/index.vue

@@ -0,0 +1,275 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="关键字" prop="keyword">
+        <el-input
+          v-model="queryParams.keyword"
+          placeholder="请输入关键字"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="展示" prop="defaultShow">
+        <el-select v-model="queryParams.defaultShow" placeholder="请选择展示" clearable>
+          <el-option
+            v-for="dict in dict.type.sys_yes_no"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="数值" prop="isNum">
+        <el-select v-model="queryParams.isNum" placeholder="请选择数值" clearable>
+          <el-option
+            v-for="dict in dict.type.sys_yes_no"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:systemConfig:add']"
+        >新增</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+    <el-table v-loading="loading" :data="systemConfigList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="关键字" align="center" prop="keyword" />
+      <el-table-column label="展示" align="center" prop="defaultShow">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.defaultShow"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="数值" align="center" prop="isNum">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isNum"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+      <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)"
+            v-hasPermi="['system:systemConfig:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:systemConfig:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改诊断统计设置对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="关键字" prop="keyword">
+          <el-input v-model="form.keyword" placeholder="请输入关键字" />
+        </el-form-item>
+        <el-form-item label="是否展示" prop="defaultShow">
+          <el-select v-model="form.defaultShow" placeholder="请选择是否展示">
+            <el-option
+              v-for="dict in dict.type.sys_yes_no"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="是否数值" prop="isNum">
+          <el-select v-model="form.isNum" placeholder="请选择是否数值">
+            <el-option
+              v-for="dict in dict.type.sys_yes_no"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listSystemConfig, getSystemConfig, delSystemConfig, addSystemConfig, updateSystemConfig } from "@/api/system/systemConfig"
+
+export default {
+  name: "SystemConfig",
+  dicts: ['sys_yes_no'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 诊断统计设置表格数据
+      systemConfigList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        keyword: null,
+        defaultShow: null,
+        isNum: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    }
+  },
+  created() {
+    this.getList()
+  },
+  methods: {
+    /** 查询诊断统计设置列表 */
+    getList() {
+      this.loading = true
+      listSystemConfig(this.queryParams).then(response => {
+        this.systemConfigList = response.rows
+        this.total = response.total
+        this.loading = false
+      })
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false
+      this.reset()
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        keyword: null,
+        defaultShow: null,
+        isNum: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      }
+      this.resetForm("form")
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1
+      this.getList()
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm")
+      this.handleQuery()
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset()
+      this.open = true
+      this.title = "添加诊断统计设置"
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset()
+      const id = row.id || this.ids
+      getSystemConfig(id).then(response => {
+        this.form = response.data
+        this.open = true
+        this.title = "修改诊断统计设置"
+      })
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateSystemConfig(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功")
+              this.open = false
+              this.getList()
+            })
+          } else {
+            addSystemConfig(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功")
+              this.open = false
+              this.getList()
+            })
+          }
+        }
+      })
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids
+      this.$modal.confirm('是否确认删除诊断统计设置编号为"' + ids + '"的数据项?').then(function() {
+        return delSystemConfig(ids)
+      }).then(() => {
+        this.getList()
+        this.$modal.msgSuccess("删除成功")
+      }).catch(() => {})
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/systemConfig/export', {
+        ...this.queryParams
+      }, `systemConfig_${new Date().getTime()}.xlsx`)
+    }
+  }
+}
+</script>

+ 0 - 60
src/views/tool/gen/basicInfoForm.vue

@@ -1,60 +0,0 @@
-<template>
-  <el-form ref="basicInfoForm" :model="info" :rules="rules" label-width="150px">
-    <el-row>
-      <el-col :span="12">
-        <el-form-item label="表名称" prop="tableName">
-          <el-input placeholder="请输入仓库名称" v-model="info.tableName" />
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item label="表描述" prop="tableComment">
-          <el-input placeholder="请输入" v-model="info.tableComment" />
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item label="实体类名称" prop="className">
-          <el-input placeholder="请输入" v-model="info.className" />
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item label="作者" prop="functionAuthor">
-          <el-input placeholder="请输入" v-model="info.functionAuthor" />
-        </el-form-item>
-      </el-col>
-      <el-col :span="24">
-        <el-form-item label="备注" prop="remark">
-          <el-input type="textarea" :rows="3" v-model="info.remark"></el-input>
-        </el-form-item>
-      </el-col>
-    </el-row>
-  </el-form>
-</template>
-
-<script>
-export default {
-  props: {
-    info: {
-      type: Object,
-      default: null
-    }
-  },
-  data() {
-    return {
-      rules: {
-        tableName: [
-          { required: true, message: "请输入表名称", trigger: "blur" }
-        ],
-        tableComment: [
-          { required: true, message: "请输入表描述", trigger: "blur" }
-        ],
-        className: [
-          { required: true, message: "请输入实体类名称", trigger: "blur" }
-        ],
-        functionAuthor: [
-          { required: true, message: "请输入作者", trigger: "blur" }
-        ]
-      }
-    }
-  }
-}
-</script>

+ 0 - 45
src/views/tool/gen/createTable.vue

@@ -1,45 +0,0 @@
-<template>
-  <!-- 创建表 -->
-  <el-dialog title="创建表" :visible.sync="visible" width="800px" top="5vh" append-to-body>
-    <span>创建表语句(支持多个建表语句):</span>
-    <el-input type="textarea" :rows="10" placeholder="请输入文本" v-model="content"></el-input>
-    <div slot="footer" class="dialog-footer">
-      <el-button type="primary" @click="handleCreateTable">确 定</el-button>
-      <el-button @click="visible = false">取 消</el-button>
-    </div>
-  </el-dialog>
-</template>
-
-<script>
-import { createTable } from "@/api/tool/gen"
-export default {
-  data() {
-    return {
-      // 遮罩层
-      visible: false,
-      // 文本内容
-      content: ""
-    }
-  },
-  methods: {
-    // 显示弹框
-    show() {
-      this.visible = true
-    },
-    /** 创建按钮操作 */
-    handleCreateTable() {
-      if (this.content === "") {
-        this.$modal.msgError("请输入建表语句")
-        return
-      }
-      createTable({ sql: this.content }).then(res => {
-        this.$modal.msgSuccess(res.msg)
-        if (res.code === 200) {
-          this.visible = false
-          this.$emit("ok")
-        }
-      })
-    }
-  }
-}
-</script>

+ 0 - 229
src/views/tool/gen/editTable.vue

@@ -1,229 +0,0 @@
-<template>
-  <el-card>
-    <el-tabs v-model="activeName">
-      <el-tab-pane label="基本信息" name="basic">
-        <basic-info-form ref="basicInfo" :info="info" />
-      </el-tab-pane>
-      <el-tab-pane label="字段信息" name="columnInfo">
-        <el-table ref="dragTable" :data="columns" row-key="columnId" :max-height="tableHeight">
-          <el-table-column label="序号" type="index" min-width="5%" class-name="allowDrag"/>
-          <el-table-column label="字段列名" prop="columnName" min-width="10%" :show-overflow-tooltip="true" class-name="allowDrag"/>
-          <el-table-column label="字段描述" min-width="10%">
-            <template slot-scope="scope">
-              <el-input v-model="scope.row.columnComment"></el-input>
-            </template>
-          </el-table-column>
-          <el-table-column
-            label="物理类型"
-            prop="columnType"
-            min-width="10%"
-            :show-overflow-tooltip="true"
-          />
-          <el-table-column label="Java类型" min-width="11%">
-            <template slot-scope="scope">
-              <el-select v-model="scope.row.javaType">
-                <el-option label="Long" value="Long" />
-                <el-option label="String" value="String" />
-                <el-option label="Integer" value="Integer" />
-                <el-option label="Double" value="Double" />
-                <el-option label="BigDecimal" value="BigDecimal" />
-                <el-option label="Date" value="Date" />
-                <el-option label="Boolean" value="Boolean" />
-              </el-select>
-            </template>
-          </el-table-column>
-          <el-table-column label="java属性" min-width="10%">
-            <template slot-scope="scope">
-              <el-input v-model="scope.row.javaField"></el-input>
-            </template>
-          </el-table-column>
-
-          <el-table-column label="插入" min-width="5%">
-            <template slot-scope="scope">
-              <el-checkbox true-label="1" false-label="0" v-model="scope.row.isInsert"></el-checkbox>
-            </template>
-          </el-table-column>
-          <el-table-column label="编辑" min-width="5%">
-            <template slot-scope="scope">
-              <el-checkbox true-label="1" false-label="0" v-model="scope.row.isEdit"></el-checkbox>
-            </template>
-          </el-table-column>
-          <el-table-column label="列表" min-width="5%">
-            <template slot-scope="scope">
-              <el-checkbox true-label="1" false-label="0" v-model="scope.row.isList"></el-checkbox>
-            </template>
-          </el-table-column>
-          <el-table-column label="查询" min-width="5%">
-            <template slot-scope="scope">
-              <el-checkbox true-label="1" false-label="0" v-model="scope.row.isQuery"></el-checkbox>
-            </template>
-          </el-table-column>
-          <el-table-column label="查询方式" min-width="10%">
-            <template slot-scope="scope">
-              <el-select v-model="scope.row.queryType">
-                <el-option label="=" value="EQ" />
-                <el-option label="!=" value="NE" />
-                <el-option label=">" value="GT" />
-                <el-option label=">=" value="GTE" />
-                <el-option label="<" value="LT" />
-                <el-option label="<=" value="LTE" />
-                <el-option label="LIKE" value="LIKE" />
-                <el-option label="BETWEEN" value="BETWEEN" />
-              </el-select>
-            </template>
-          </el-table-column>
-          <el-table-column label="必填" min-width="5%">
-            <template slot-scope="scope">
-              <el-checkbox true-label="1" false-label="0" v-model="scope.row.isRequired"></el-checkbox>
-            </template>
-          </el-table-column>
-          <el-table-column label="显示类型" min-width="12%">
-            <template slot-scope="scope">
-              <el-select v-model="scope.row.htmlType">
-                <el-option label="文本框" value="input" />
-                <el-option label="文本域" value="textarea" />
-                <el-option label="下拉框" value="select" />
-                <el-option label="单选框" value="radio" />
-                <el-option label="复选框" value="checkbox" />
-                <el-option label="日期控件" value="datetime" />
-                <el-option label="图片上传" value="imageUpload" />
-                <el-option label="文件上传" value="fileUpload" />
-                <el-option label="富文本控件" value="editor" />
-              </el-select>
-            </template>
-          </el-table-column>
-          <el-table-column label="字典类型" min-width="12%">
-            <template slot-scope="scope">
-              <el-select v-model="scope.row.dictType" clearable filterable placeholder="请选择">
-                <el-option
-                  v-for="dict in dictOptions"
-                  :key="dict.dictType"
-                  :label="dict.dictName"
-                  :value="dict.dictType">
-                  <span style="float: left">{{ dict.dictName }}</span>
-                  <span style="float: right; color: #8492a6; font-size: 13px">{{ dict.dictType }}</span>
-              </el-option>
-              </el-select>
-            </template>
-          </el-table-column>
-        </el-table>
-      </el-tab-pane>
-      <el-tab-pane label="生成信息" name="genInfo">
-        <gen-info-form ref="genInfo" :info="info" :tables="tables" :menus="menus"/>
-      </el-tab-pane>
-    </el-tabs>
-    <el-form label-width="100px">
-      <el-form-item style="text-align: center;margin-left:-100px;margin-top:10px;">
-        <el-button type="primary" @click="submitForm()">提交</el-button>
-        <el-button @click="close()">返回</el-button>
-      </el-form-item>
-    </el-form>
-  </el-card>
-</template>
-
-<script>
-import { getGenTable, updateGenTable } from "@/api/tool/gen"
-import { optionselect as getDictOptionselect } from "@/api/system/dict/type"
-import { listMenu as getMenuTreeselect } from "@/api/system/menu"
-import basicInfoForm from "./basicInfoForm"
-import genInfoForm from "./genInfoForm"
-import Sortable from 'sortablejs'
-
-export default {
-  name: "GenEdit",
-  components: {
-    basicInfoForm,
-    genInfoForm
-  },
-  data() {
-    return {
-      // 选中选项卡的 name
-      activeName: "columnInfo",
-      // 表格的高度
-      tableHeight: document.documentElement.scrollHeight - 245 + "px",
-      // 表信息
-      tables: [],
-      // 表列信息
-      columns: [],
-      // 字典信息
-      dictOptions: [],
-      // 菜单信息
-      menus: [],
-      // 表详细信息
-      info: {}
-    }
-  },
-  created() {
-    const tableId = this.$route.params && this.$route.params.tableId
-    if (tableId) {
-      // 获取表详细信息
-      getGenTable(tableId).then(res => {
-        this.columns = res.data.rows
-        this.info = res.data.info
-        this.tables = res.data.tables
-      })
-      /** 查询字典下拉列表 */
-      getDictOptionselect().then(response => {
-        this.dictOptions = response.data
-      })
-      /** 查询菜单下拉列表 */
-      getMenuTreeselect().then(response => {
-        this.menus = this.handleTree(response.data, "menuId")
-      })
-    }
-  },
-  methods: {
-    /** 提交按钮 */
-    submitForm() {
-      const basicForm = this.$refs.basicInfo.$refs.basicInfoForm
-      const genForm = this.$refs.genInfo.$refs.genInfoForm
-      Promise.all([basicForm, genForm].map(this.getFormPromise)).then(res => {
-        const validateResult = res.every(item => !!item)
-        if (validateResult) {
-          const genTable = Object.assign({}, basicForm.model, genForm.model)
-          genTable.columns = this.columns
-          genTable.params = {
-            treeCode: genTable.treeCode,
-            treeName: genTable.treeName,
-            treeParentCode: genTable.treeParentCode,
-            parentMenuId: genTable.parentMenuId
-          }
-          updateGenTable(genTable).then(res => {
-            this.$modal.msgSuccess(res.msg)
-            if (res.code === 200) {
-              this.close()
-            }
-          })
-        } else {
-          this.$modal.msgError("表单校验未通过,请重新检查提交内容")
-        }
-      })
-    },
-    getFormPromise(form) {
-      return new Promise(resolve => {
-        form.validate(res => {
-          resolve(res)
-        })
-      })
-    },
-    /** 关闭按钮 */
-    close() {
-      const obj = { path: "/tool/gen", query: { t: Date.now(), pageNum: this.$route.query.pageNum } }
-      this.$tab.closeOpenPage(obj)
-    }
-  },
-  mounted() {
-    const el = this.$refs.dragTable.$el.querySelectorAll(".el-table__body-wrapper > table > tbody")[0]
-    const sortable = Sortable.create(el, {
-      handle: ".allowDrag",
-      onEnd: evt => {
-        const targetRow = this.columns.splice(evt.oldIndex, 1)[0]
-        this.columns.splice(evt.newIndex, 0, targetRow)
-        for (let index in this.columns) {
-          this.columns[index].sort = parseInt(index) + 1
-        }
-      }
-    })
-  }
-}
-</script>

+ 0 - 312
src/views/tool/gen/genInfoForm.vue

@@ -1,312 +0,0 @@
-<template>
-  <el-form ref="genInfoForm" :model="info" :rules="rules" label-width="150px">
-    <el-row>
-      <el-col :span="12">
-        <el-form-item prop="tplCategory">
-          <span slot="label">生成模板</span>
-          <el-select v-model="info.tplCategory" @change="tplSelectChange">
-            <el-option label="单表(增删改查)" value="crud" />
-            <el-option label="树表(增删改查)" value="tree" />
-            <el-option label="主子表(增删改查)" value="sub" />
-          </el-select>
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item prop="tplWebType">
-          <span slot="label">前端类型</span>
-          <el-select v-model="info.tplWebType">
-            <el-option label="Vue2 Element UI 模版" value="element-ui" />
-            <el-option label="Vue3 Element Plus 模版" value="element-plus" />
-          </el-select>
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item prop="packageName">
-          <span slot="label">
-            生成包路径
-            <el-tooltip content="生成在哪个java包下,例如 com.ruoyi.system" placement="top">
-              <i class="el-icon-question"></i>
-            </el-tooltip>
-          </span>
-          <el-input v-model="info.packageName" />
-        </el-form-item>
-      </el-col>
-
-      <el-col :span="12">
-        <el-form-item prop="moduleName">
-          <span slot="label">
-            生成模块名
-            <el-tooltip content="可理解为子系统名,例如 system" placement="top">
-              <i class="el-icon-question"></i>
-            </el-tooltip>
-          </span>
-          <el-input v-model="info.moduleName" />
-        </el-form-item>
-      </el-col>
-
-      <el-col :span="12">
-        <el-form-item prop="businessName">
-          <span slot="label">
-            生成业务名
-            <el-tooltip content="可理解为功能英文名,例如 user" placement="top">
-              <i class="el-icon-question"></i>
-            </el-tooltip>
-          </span>
-          <el-input v-model="info.businessName" />
-        </el-form-item>
-      </el-col>
-
-      <el-col :span="12">
-        <el-form-item prop="functionName">
-          <span slot="label">
-            生成功能名
-            <el-tooltip content="用作类描述,例如 用户" placement="top">
-              <i class="el-icon-question"></i>
-            </el-tooltip>
-          </span>
-          <el-input v-model="info.functionName" />
-        </el-form-item>
-      </el-col>
-
-      <el-col :span="12">
-        <el-form-item prop="genType">
-          <span slot="label">
-            生成代码方式
-            <el-tooltip content="默认为zip压缩包下载,也可以自定义生成路径" placement="top">
-              <i class="el-icon-question"></i>
-            </el-tooltip>
-          </span>
-          <el-radio v-model="info.genType" label="0">zip压缩包</el-radio>
-          <el-radio v-model="info.genType" label="1">自定义路径</el-radio>
-        </el-form-item>
-      </el-col>
-
-      <el-col :span="12">
-        <el-form-item>
-          <span slot="label">
-            上级菜单
-            <el-tooltip content="分配到指定菜单下,例如 系统管理" placement="top">
-              <i class="el-icon-question"></i>
-            </el-tooltip>
-          </span>
-          <treeselect
-            :append-to-body="true"
-            v-model="info.parentMenuId"
-            :options="menus"
-            :normalizer="normalizer"
-            :show-count="true"
-            placeholder="请选择系统菜单"
-          />
-        </el-form-item>
-      </el-col>
-
-      <el-col :span="24" v-if="info.genType == '1'">
-        <el-form-item prop="genPath">
-          <span slot="label">
-            自定义路径
-            <el-tooltip content="填写磁盘绝对路径,若不填写,则生成到当前Web项目下" placement="top">
-              <i class="el-icon-question"></i>
-            </el-tooltip>
-          </span>
-          <el-input v-model="info.genPath">
-            <el-dropdown slot="append">
-              <el-button type="primary">
-                最近路径快速选择
-                <i class="el-icon-arrow-down el-icon--right"></i>
-              </el-button>
-              <el-dropdown-menu slot="dropdown">
-                <el-dropdown-item @click.native="info.genPath = '/'">恢复默认的生成基础路径</el-dropdown-item>
-              </el-dropdown-menu>
-            </el-dropdown>
-          </el-input>
-        </el-form-item>
-      </el-col>
-    </el-row>
-
-    <el-row v-show="info.tplCategory == 'tree'">
-      <h4 class="form-header">其他信息</h4>
-      <el-col :span="12">
-        <el-form-item>
-          <span slot="label">
-            树编码字段
-            <el-tooltip content="树显示的编码字段名, 如:dept_id" placement="top">
-              <i class="el-icon-question"></i>
-            </el-tooltip>
-          </span>
-          <el-select v-model="info.treeCode" placeholder="请选择">
-            <el-option
-              v-for="(column, index) in info.columns"
-              :key="index"
-              :label="column.columnName + ':' + column.columnComment"
-              :value="column.columnName"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item>
-          <span slot="label">
-            树父编码字段
-            <el-tooltip content="树显示的父编码字段名, 如:parent_Id" placement="top">
-              <i class="el-icon-question"></i>
-            </el-tooltip>
-          </span>
-          <el-select v-model="info.treeParentCode" placeholder="请选择">
-            <el-option
-              v-for="(column, index) in info.columns"
-              :key="index"
-              :label="column.columnName + ':' + column.columnComment"
-              :value="column.columnName"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item>
-          <span slot="label">
-            树名称字段
-            <el-tooltip content="树节点的显示名称字段名, 如:dept_name" placement="top">
-              <i class="el-icon-question"></i>
-            </el-tooltip>
-          </span>
-          <el-select v-model="info.treeName" placeholder="请选择">
-            <el-option
-              v-for="(column, index) in info.columns"
-              :key="index"
-              :label="column.columnName + ':' + column.columnComment"
-              :value="column.columnName"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-      </el-col>
-    </el-row>
-    <el-row v-show="info.tplCategory == 'sub'">
-      <h4 class="form-header">关联信息</h4>
-      <el-col :span="12">
-        <el-form-item>
-          <span slot="label">
-            关联子表的表名
-            <el-tooltip content="关联子表的表名, 如:sys_user" placement="top">
-              <i class="el-icon-question"></i>
-            </el-tooltip>
-          </span>
-          <el-select v-model="info.subTableName" placeholder="请选择" @change="subSelectChange">
-            <el-option
-              v-for="(table, index) in tables"
-              :key="index"
-              :label="table.tableName + ':' + table.tableComment"
-              :value="table.tableName"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item>
-          <span slot="label">
-            子表关联的外键名
-            <el-tooltip content="子表关联的外键名, 如:user_id" placement="top">
-              <i class="el-icon-question"></i>
-            </el-tooltip>
-          </span>
-          <el-select v-model="info.subTableFkName" placeholder="请选择">
-            <el-option
-              v-for="(column, index) in subColumns"
-              :key="index"
-              :label="column.columnName + ':' + column.columnComment"
-              :value="column.columnName"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-      </el-col>
-    </el-row>
-  </el-form>
-</template>
-
-<script>
-import Treeselect from "@riophae/vue-treeselect"
-import "@riophae/vue-treeselect/dist/vue-treeselect.css"
-
-export default {
-  components: { Treeselect },
-  props: {
-    info: {
-      type: Object,
-      default: null
-    },
-    tables: {
-      type: Array,
-      default: null
-    },
-    menus: {
-      type: Array,
-      default: []
-    }
-  },
-  data() {
-    return {
-      subColumns: [],
-      rules: {
-        tplCategory: [
-          { required: true, message: "请选择生成模板", trigger: "blur" }
-        ],
-        packageName: [
-          { required: true, message: "请输入生成包路径", trigger: "blur" }
-        ],
-        moduleName: [
-          { required: true, message: "请输入生成模块名", trigger: "blur" }
-        ],
-        businessName: [
-          { required: true, message: "请输入生成业务名", trigger: "blur" }
-        ],
-        functionName: [
-          { required: true, message: "请输入生成功能名", trigger: "blur" }
-        ]
-      }
-    }
-  },
-  watch: {
-    'info.subTableName': function(val) {
-      this.setSubTableColumns(val)
-    },
-    'info.tplWebType': function(val) {
-      if (val === '') {
-        this.info.tplWebType = "element-ui"
-      }
-    }
-  },
-  methods: {
-    /** 转换菜单数据结构 */
-    normalizer(node) {
-      if (node.children && !node.children.length) {
-        delete node.children
-      }
-      return {
-        id: node.menuId,
-        label: node.menuName,
-        children: node.children
-      }
-    },
-    /** 选择子表名触发 */
-    subSelectChange(value) {
-      this.info.subTableFkName = ''
-    },
-    /** 选择生成模板触发 */
-    tplSelectChange(value) {
-      if(value !== 'sub') {
-        this.info.subTableName = ''
-        this.info.subTableFkName = ''
-      }
-    },
-    /** 设置关联外键 */
-    setSubTableColumns(value) {
-      for (var item in this.tables) {
-        const name = this.tables[item].tableName
-        if (value === name) {
-          this.subColumns = this.tables[item].columns
-          break
-        }
-      }
-    }
-  }
-}
-</script>

+ 0 - 120
src/views/tool/gen/importTable.vue

@@ -1,120 +0,0 @@
-<template>
-  <!-- 导入表 -->
-  <el-dialog title="导入表" :visible.sync="visible" width="800px" top="5vh" append-to-body>
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
-      <el-form-item label="表名称" prop="tableName">
-        <el-input
-          v-model="queryParams.tableName"
-          placeholder="请输入表名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="表描述" prop="tableComment">
-        <el-input
-          v-model="queryParams.tableComment"
-          placeholder="请输入表描述"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-    <el-row>
-      <el-table @row-click="clickRow" ref="table" :data="dbTableList" @selection-change="handleSelectionChange" height="260px">
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="tableName" label="表名称" :show-overflow-tooltip="true"></el-table-column>
-        <el-table-column prop="tableComment" label="表描述" :show-overflow-tooltip="true"></el-table-column>
-        <el-table-column prop="createTime" label="创建时间"></el-table-column>
-        <el-table-column prop="updateTime" label="更新时间"></el-table-column>
-      </el-table>
-      <pagination
-        v-show="total>0"
-        :total="total"
-        :page.sync="queryParams.pageNum"
-        :limit.sync="queryParams.pageSize"
-        @pagination="getList"
-      />
-    </el-row>
-    <div slot="footer" class="dialog-footer">
-      <el-button type="primary" @click="handleImportTable">确 定</el-button>
-      <el-button @click="visible = false">取 消</el-button>
-    </div>
-  </el-dialog>
-</template>
-
-<script>
-import { listDbTable, importTable } from "@/api/tool/gen"
-export default {
-  data() {
-    return {
-      // 遮罩层
-      visible: false,
-      // 选中数组值
-      tables: [],
-      // 总条数
-      total: 0,
-      // 表数据
-      dbTableList: [],
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        tableName: undefined,
-        tableComment: undefined
-      }
-    }
-  },
-  methods: {
-    // 显示弹框
-    show() {
-      this.getList()
-      this.visible = true
-    },
-    clickRow(row) {
-      this.$refs.table.toggleRowSelection(row)
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.tables = selection.map(item => item.tableName)
-    },
-    // 查询表数据
-    getList() {
-      listDbTable(this.queryParams).then(res => {
-        if (res.code === 200) {
-          this.dbTableList = res.rows
-          this.total = res.total
-        }
-      })
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1
-      this.getList()
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm")
-      this.handleQuery()
-    },
-    /** 导入按钮操作 */
-    handleImportTable() {
-      const tableNames = this.tables.join(",")
-      if (tableNames == "") {
-        this.$modal.msgError("请选择要导入的表")
-        return
-      }
-      importTable({ tables: tableNames }).then(res => {
-        this.$modal.msgSuccess(res.msg)
-        if (res.code === 200) {
-          this.visible = false
-          this.$emit("ok")
-        }
-      })
-    }
-  }
-}
-</script>

+ 0 - 347
src/views/tool/gen/index.vue

@@ -1,347 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="表名称" prop="tableName">
-        <el-input
-          v-model="queryParams.tableName"
-          placeholder="请输入表名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="表描述" prop="tableComment">
-        <el-input
-          v-model="queryParams.tableComment"
-          placeholder="请输入表描述"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="创建时间">
-        <el-date-picker
-          v-model="dateRange"
-          style="width: 240px"
-          value-format="yyyy-MM-dd"
-          type="daterange"
-          range-separator="-"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
-        ></el-date-picker>
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          :disabled="multiple"
-          @click="handleGenTable"
-          v-hasPermi="['tool:gen:code']"
-        >生成</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="openCreateTable"
-          v-hasRole="['admin']"
-        >创建</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="info"
-          plain
-          icon="el-icon-upload"
-          size="mini"
-          @click="openImportTable"
-          v-hasPermi="['tool:gen:import']"
-        >导入</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleEditTable"
-          v-hasPermi="['tool:gen:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['tool:gen:remove']"
-        >删除</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table ref="tables" v-loading="loading" :data="tableList" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange">
-      <el-table-column type="selection" align="center" width="55"></el-table-column>
-      <el-table-column label="序号" type="index" width="50" align="center">
-        <template slot-scope="scope">
-          <span>{{(queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="表名称" align="center" prop="tableName" :show-overflow-tooltip="true" width="120" />
-      <el-table-column label="表描述" align="center" prop="tableComment" :show-overflow-tooltip="true" width="120" />
-      <el-table-column label="实体" align="center" prop="className" :show-overflow-tooltip="true" width="120" />
-      <el-table-column label="创建时间" align="center" prop="createTime" sortable="custom" :sort-orders="['descending', 'ascending']" width="160" />
-      <el-table-column label="更新时间" align="center" prop="updateTime" sortable="custom" :sort-orders="['descending', 'ascending']" width="160" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            type="text"
-            size="small"
-            icon="el-icon-view"
-            @click="handlePreview(scope.row)"
-            v-hasPermi="['tool:gen:preview']"
-          >预览</el-button>
-          <el-button
-            type="text"
-            size="small"
-            icon="el-icon-edit"
-            @click="handleEditTable(scope.row)"
-            v-hasPermi="['tool:gen:edit']"
-          >编辑</el-button>
-          <el-button
-            type="text"
-            size="small"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['tool:gen:remove']"
-          >删除</el-button>
-          <el-button
-            type="text"
-            size="small"
-            icon="el-icon-refresh"
-            @click="handleSynchDb(scope.row)"
-            v-hasPermi="['tool:gen:edit']"
-          >同步</el-button>
-          <el-button
-            type="text"
-            size="small"
-            icon="el-icon-download"
-            @click="handleGenTable(scope.row)"
-            v-hasPermi="['tool:gen:code']"
-          >生成代码</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
-    <!-- 预览界面 -->
-    <el-dialog :title="preview.title" :visible.sync="preview.open" width="80%" top="5vh" append-to-body class="scrollbar">
-      <el-tabs v-model="preview.activeName">
-        <el-tab-pane
-          v-for="(value, key) in preview.data"
-          :label="key.substring(key.lastIndexOf('/')+1,key.indexOf('.vm'))"
-          :name="key.substring(key.lastIndexOf('/')+1,key.indexOf('.vm'))"
-          :key="key"
-        >
-          <el-link :underline="false" icon="el-icon-document-copy" v-clipboard:copy="value" v-clipboard:success="clipboardSuccess" style="float:right">复制</el-link>
-          <pre><code class="hljs" v-html="highlightedCode(value, key)"></code></pre>
-        </el-tab-pane>
-      </el-tabs>
-    </el-dialog>
-    <import-table ref="import" @ok="handleQuery" />
-    <create-table ref="create" @ok="handleQuery" />
-  </div>
-</template>
-
-<script>
-import { listTable, previewTable, delTable, genCode, synchDb } from "@/api/tool/gen"
-import importTable from "./importTable"
-import createTable from "./createTable"
-import hljs from "highlight.js/lib/highlight"
-import "highlight.js/styles/github-gist.css"
-hljs.registerLanguage("java", require("highlight.js/lib/languages/java"))
-hljs.registerLanguage("xml", require("highlight.js/lib/languages/xml"))
-hljs.registerLanguage("html", require("highlight.js/lib/languages/xml"))
-hljs.registerLanguage("vue", require("highlight.js/lib/languages/xml"))
-hljs.registerLanguage("javascript", require("highlight.js/lib/languages/javascript"))
-hljs.registerLanguage("sql", require("highlight.js/lib/languages/sql"))
-
-export default {
-  name: "Gen",
-  components: { importTable, createTable },
-  data() {
-    return {
-      // 遮罩层
-      loading: true,
-      // 唯一标识符
-      uniqueId: "",
-      // 选中数组
-      ids: [],
-      // 选中表数组
-      tableNames: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 表数据
-      tableList: [],
-      // 日期范围
-      dateRange: "",
-      // 默认排序
-      defaultSort: { prop: "createTime", order: "descending" },
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        tableName: undefined,
-        tableComment: undefined
-      },
-      // 预览参数
-      preview: {
-        open: false,
-        title: "代码预览",
-        data: {},
-        activeName: "domain.java"
-      }
-    }
-  },
-  created() {
-    this.queryParams.orderByColumn = this.defaultSort.prop
-    this.queryParams.isAsc = this.defaultSort.order
-    this.getList()
-  },
-  activated() {
-    const time = this.$route.query.t
-    if (time != null && time != this.uniqueId) {
-      this.uniqueId = time
-      this.queryParams.pageNum = Number(this.$route.query.pageNum)
-      this.getList()
-    }
-  },
-  methods: {
-    /** 查询表集合 */
-    getList() {
-      this.loading = true
-      listTable(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
-          this.tableList = response.rows
-          this.total = response.total
-          this.loading = false
-        }
-      )
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1
-      this.getList()
-    },
-    /** 生成代码操作 */
-    handleGenTable(row) {
-      const tableNames = row.tableName || this.tableNames
-      if (tableNames == "") {
-        this.$modal.msgError("请选择要生成的数据")
-        return
-      }
-      if(row.genType === "1") {
-        genCode(row.tableName).then(response => {
-          this.$modal.msgSuccess("成功生成到自定义路径:" + row.genPath)
-        })
-      } else {
-        this.$download.zip("/tool/gen/batchGenCode?tables=" + tableNames, "ruoyi.zip")
-      }
-    },
-    /** 同步数据库操作 */
-    handleSynchDb(row) {
-      const tableName = row.tableName
-      this.$modal.confirm('确认要强制同步"' + tableName + '"表结构吗?').then(function() {
-        return synchDb(tableName)
-      }).then(() => {
-        this.$modal.msgSuccess("同步成功")
-      }).catch(() => {})
-    },
-    /** 打开导入表弹窗 */
-    openImportTable() {
-      this.$refs.import.show()
-    },
-    /** 打开创建表弹窗 */
-    openCreateTable() {
-      this.$refs.create.show()
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.dateRange = []
-      this.resetForm("queryForm")
-      this.queryParams.pageNum = 1
-      this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order)
-    },
-    /** 预览按钮 */
-    handlePreview(row) {
-      previewTable(row.tableId).then(response => {
-        this.preview.data = response.data
-        this.preview.open = true
-        this.preview.activeName = "domain.java"
-      })
-    },
-    /** 高亮显示 */
-    highlightedCode(code, key) {
-      const vmName = key.substring(key.lastIndexOf("/") + 1, key.indexOf(".vm"))
-      var language = vmName.substring(vmName.indexOf(".") + 1, vmName.length)
-      const result = hljs.highlight(language, code || "", true)
-      return result.value || '&nbsp;'
-    },
-    /** 复制代码成功 */
-    clipboardSuccess() {
-      this.$modal.msgSuccess("复制成功")
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.tableId)
-      this.tableNames = selection.map(item => item.tableName)
-      this.single = selection.length != 1
-      this.multiple = !selection.length
-    },
-    /** 排序触发事件 */
-    handleSortChange(column, prop, order) {
-      this.queryParams.orderByColumn = column.prop
-      this.queryParams.isAsc = column.order
-      this.getList()
-    },
-    /** 修改按钮操作 */
-    handleEditTable(row) {
-      const tableId = row.tableId || this.ids[0]
-      const tableName = row.tableName || this.tableNames[0]
-      const params = { pageNum: this.queryParams.pageNum }
-      this.$tab.openPage("修改[" + tableName + "]生成配置", '/tool/gen-edit/index/' + tableId, params)
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const tableIds = row.tableId || this.ids
-      this.$modal.confirm('是否确认删除表编号为"' + tableIds + '"的数据项?').then(function() {
-        return delTable(tableIds)
-      }).then(() => {
-        this.getList()
-        this.$modal.msgSuccess("删除成功")
-      }).catch(() => {})
-    }
-  }
-}
-</script>

+ 0 - 15
src/views/tool/swagger/index.vue

@@ -1,15 +0,0 @@
-<template>
-  <i-frame :src="url" />
-</template>
-<script>
-import iFrame from "@/components/iFrame/index"
-export default {
-  name: "Swagger",
-  components: { iFrame },
-  data() {
-    return {
-      url: process.env.VUE_APP_BASE_API + "/swagger-ui/index.html"
-    }
-  }
-}
-</script>

+ 1 - 2
vue.config.js

@@ -10,6 +10,7 @@ const CompressionPlugin = require('compression-webpack-plugin')
 const name = process.env.VUE_APP_TITLE || '传染病溯源预测系统' // 网页标题
 
 // const baseUrl = '/' // 后端接口
+// const baseUrl = 'http://127.0.0.1:8081/' // 后端接口
 const baseUrl = 'http://173.18.12.205:8081/' // 后端接口
 
 const port = process.env.port || process.env.npm_config_port || 80 // 端口
@@ -20,7 +21,6 @@ const port = process.env.port || process.env.npm_config_port || 80 // 端口
 module.exports = {
   // 部署生产环境和开发环境下的URL。
   // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上
-  // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
   publicPath: process.env.NODE_ENV === "production" ? "/" : "/",
   // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist)
   outputDir: 'dist',
@@ -66,7 +66,6 @@ module.exports = {
       }
     },
     plugins: [
-      // http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件
       new CompressionPlugin({
         cache: false,                                  // 不启用文件缓存
         test: /\.(js|css|html|jpe?g|png|gif|svg)?$/i,  // 压缩文件格式