Jelajahi Sumber

dev extract

allen 2 tahun lalu
induk
melakukan
a5751277ca

+ 44 - 0
src/api/extract/subTask.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询知识抽取子任务列表
+export function listSubTask(query) {
+  return request({
+    url: '/extract/subTask/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询知识抽取子任务详细
+export function getSubTask(id) {
+  return request({
+    url: '/extract/subTask/' + id,
+    method: 'get'
+  })
+}
+
+// 新增知识抽取子任务
+export function addSubTask(data) {
+  return request({
+    url: '/extract/subTask',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改知识抽取子任务
+export function updateSubTask(data) {
+  return request({
+    url: '/extract/subTask',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除知识抽取子任务
+export function delSubTask(id) {
+  return request({
+    url: '/extract/subTask/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/extract/subTaskDetail.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询知识抽取子任务明细列表
+export function listSubTaskDetail(query) {
+  return request({
+    url: '/extract/subTaskDetail/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询知识抽取子任务明细详细
+export function getSubTaskDetail(id) {
+  return request({
+    url: '/extract/subTaskDetail/' + id,
+    method: 'get'
+  })
+}
+
+// 新增知识抽取子任务明细
+export function addSubTaskDetail(data) {
+  return request({
+    url: '/extract/subTaskDetail',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改知识抽取子任务明细
+export function updateSubTaskDetail(data) {
+  return request({
+    url: '/extract/subTaskDetail',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除知识抽取子任务明细
+export function delSubTaskDetail(id) {
+  return request({
+    url: '/extract/subTaskDetail/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/extract/task.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询知识抽取任务列表
+export function listTask(query) {
+  return request({
+    url: '/extract/task/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询知识抽取任务详细
+export function getTask(id) {
+  return request({
+    url: '/extract/task/' + id,
+    method: 'get'
+  })
+}
+
+// 新增知识抽取任务
+export function addTask(data) {
+  return request({
+    url: '/extract/task',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改知识抽取任务
+export function updateTask(data) {
+  return request({
+    url: '/extract/task',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除知识抽取任务
+export function delTask(id) {
+  return request({
+    url: '/extract/task/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/upload/dataManage.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询数据管理列表
+export function listDataManage(query) {
+  return request({
+    url: '/upload/dataManage/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询数据管理详细
+export function getDataManage(id) {
+  return request({
+    url: '/upload/dataManage/' + id,
+    method: 'get'
+  })
+}
+
+// 新增数据管理
+export function addDataManage(data) {
+  return request({
+    url: '/upload/dataManage',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改数据管理
+export function updateDataManage(data) {
+  return request({
+    url: '/upload/dataManage',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除数据管理
+export function delDataManage(id) {
+  return request({
+    url: '/upload/dataManage/' + id,
+    method: 'delete'
+  })
+}

+ 55 - 0
src/api/upload/uploadManage.js

@@ -0,0 +1,55 @@
+import request from '@/utils/request'
+
+// 查询上传管理列表
+export function listUploadManage(query) {
+  return request({
+    url: '/upload/uploadManage/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询上传管理详细
+export function getUploadManage(id) {
+  return request({
+    url: '/upload/uploadManage/' + id,
+    method: 'get'
+  })
+}
+
+// 新增上传管理
+export function addUploadManage(data) {
+  return request({
+    url: '/upload/uploadManage',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改上传管理
+export function updateUploadManage(data) {
+  return request({
+    url: '/upload/uploadManage',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除上传管理
+export function delUploadManage(id) {
+  return request({
+    url: '/upload/uploadManage/' + id,
+    method: 'delete'
+  })
+}
+
+// 查询上传管理详细
+export function getOptionByName(name) {
+  return request({
+    url: '/upload/uploadManage/getOptionByName',
+    method: 'get',
+    params: {
+      name
+    }
+  })
+}

+ 2 - 1
src/assets/knowledge/config/config.js

@@ -2,7 +2,8 @@ window.global = {
 	env: 'dev',
 	baseUrl: function() {
 		return {
-			dev: 'http://47.108.150.237:10083/prod-api',
+			dev: 'http://localhost:11082',
+			// dev: 'http://47.108.150.237:10083/prod-api',
 			test: 'http://10.10.12.85:2004/graph',
 			local: 'http://localhost:2004',
 			prod: 'http://unigraph.xian.algmarket.com',

+ 9 - 0
src/assets/styles/ruoyi.scss

@@ -295,3 +295,12 @@
    background: #303133;
    color: #ffffff;
  }
+
+ .el-range-editor--small .el-range-input {
+	background-color: #232B4C;
+	color: #bfcbd9;
+ }
+
+ .el-tabs__item {
+	color: #888a8e;
+ }

+ 7 - 1
src/components/FileUpload/index.vue

@@ -111,6 +111,12 @@ export default {
     },
   },
   methods: {
+    reset() {
+      this.number = 0
+      this.uploadList = []
+      this.fileList = []
+      this.$refs.fileUpload.clearFiles()
+    },
     // 上传前校检格式和大小
     handleBeforeUpload(file) {
       // 校检文件类型
@@ -147,7 +153,7 @@ export default {
     // 上传成功回调
     handleUploadSuccess(res, file) {
       if (res.code === 200) {
-        this.uploadList.push({ name: res.fileName, url: res.fileName });
+        this.uploadList.push({ name: res.fileName, url: res.fileName, originalFilename: res.originalFilename});
         this.uploadedSuccessfully();
       } else {
         this.number--;

+ 1 - 1
src/layout/components/Settings/index.vue

@@ -111,7 +111,7 @@ export default {
           value: val
         })
         if (!val) {
-          this.$store.dispatch('app/toggleSideBarHide', false);
+          this.$store.dispatch('app/toggleSideBarHide', true);
           this.$store.commit("SET_SIDEBAR_ROUTERS", this.$store.state.permission.defaultRoutes);
         }
       }

+ 349 - 0
src/views/extract/subTask/index.vue

@@ -0,0 +1,349 @@
+<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="抽取任务id" prop="taskId">
+        <el-input
+          v-model="queryParams.taskId"
+          placeholder="请输入抽取任务id"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="子任务类型" prop="type">
+        <el-select v-model="queryParams.type" placeholder="请选择子任务类型" clearable>
+          <el-option
+            v-for="dict in dict.type.extract_sub_task_list"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="任务状态" prop="status">
+        <el-select v-model="queryParams.status" placeholder="请选择任务状态" clearable>
+          <el-option
+            v-for="dict in dict.type.extract_sub_task_status"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="完成时间" prop="completedDate">
+        <el-date-picker clearable
+          v-model="queryParams.completedDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择完成时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="花费时间(s)" prop="costTime">
+        <el-input
+          v-model="queryParams.costTime"
+          placeholder="请输入花费时间(s)"
+          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="['extract:subTask: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="['extract:subTask: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="['extract:subTask: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="['extract:subTask:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="subTaskList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="编号" align="center" prop="id" />
+      <el-table-column label="抽取任务id" align="center" prop="taskId" />
+      <el-table-column label="子任务类型" align="center" prop="type">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.extract_sub_task_list" :value="scope.row.type"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="任务状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.extract_sub_task_status" :value="scope.row.status"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="日志" align="center" prop="log" />
+      <el-table-column label="完成时间" align="center" prop="completedDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.completedDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="花费时间(s)" align="center" prop="costTime" />
+      <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="['extract:subTask:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['extract:subTask: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="抽取任务id" prop="taskId">
+          <el-input v-model="form.taskId" placeholder="请输入抽取任务id" />
+        </el-form-item>
+        <el-form-item label="子任务类型" prop="type">
+          <el-select v-model="form.type" placeholder="请选择子任务类型">
+            <el-option
+              v-for="dict in dict.type.extract_sub_task_list"
+              :key="dict.value"
+              :label="dict.label"
+:value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="任务状态">
+          <el-radio-group v-model="form.status">
+            <el-radio
+              v-for="dict in dict.type.extract_sub_task_status"
+              :key="dict.value"
+:label="dict.value"
+            >{{dict.label}}</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="日志" prop="log">
+          <el-input v-model="form.log" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="完成时间" prop="completedDate">
+          <el-date-picker clearable
+            v-model="form.completedDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择完成时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="花费时间(s)" prop="costTime">
+          <el-input v-model="form.costTime" placeholder="请输入花费时间(s)" />
+        </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 { listSubTask, getSubTask, delSubTask, addSubTask, updateSubTask } from "@/api/extract/subTask";
+
+export default {
+  name: "SubTask",
+  dicts: ['extract_sub_task_status', 'extract_sub_task_list'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 知识抽取子任务表格数据
+      subTaskList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        taskId: null,
+        type: null,
+        status: null,
+        log: null,
+        completedDate: null,
+        costTime: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        taskId: [
+          { required: true, message: "抽取任务id不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询知识抽取子任务列表 */
+    getList() {
+      this.loading = true;
+      listSubTask(this.queryParams).then(response => {
+        this.subTaskList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        taskId: null,
+        type: null,
+        status: "0",
+        log: null,
+        completedDate: null,
+        costTime: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: 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
+      getSubTask(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) {
+            updateSubTask(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addSubTask(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 delSubTask(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('extract/subTask/export', {
+        ...this.queryParams
+      }, `subTask_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 278 - 0
src/views/extract/subTaskDetail/index.vue

@@ -0,0 +1,278 @@
+<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="子任务id" prop="subTaskId">
+        <el-input
+          v-model="queryParams.subTaskId"
+          placeholder="请输入子任务id"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="关系" prop="relation">
+        <el-input
+          v-model="queryParams.relation"
+          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="['extract:subTaskDetail: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="['extract:subTaskDetail: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="['extract:subTaskDetail: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="['extract:subTaskDetail:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="subTaskDetailList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="编号" align="center" prop="id" />
+      <el-table-column label="子任务id" align="center" prop="subTaskId" />
+      <el-table-column label="起点实体" align="center" prop="start" />
+      <el-table-column label="关系" align="center" prop="relation" />
+      <el-table-column label="终点实体" align="center" prop="end" />
+      <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="['extract:subTaskDetail:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['extract:subTaskDetail: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="子任务id" prop="subTaskId">
+          <el-input v-model="form.subTaskId" placeholder="请输入子任务id" />
+        </el-form-item>
+        <el-form-item label="起点实体" prop="start">
+          <el-input v-model="form.start" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="关系" prop="relation">
+          <el-input v-model="form.relation" placeholder="请输入关系" />
+        </el-form-item>
+        <el-form-item label="终点实体" prop="end">
+          <el-input v-model="form.end" 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 { listSubTaskDetail, getSubTaskDetail, delSubTaskDetail, addSubTaskDetail, updateSubTaskDetail } from "@/api/extract/subTaskDetail";
+
+export default {
+  name: "SubTaskDetail",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 知识抽取子任务明细表格数据
+      subTaskDetailList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        subTaskId: null,
+        start: null,
+        relation: null,
+        end: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        subTaskId: [
+          { required: true, message: "子任务id不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询知识抽取子任务明细列表 */
+    getList() {
+      this.loading = true;
+      listSubTaskDetail(this.queryParams).then(response => {
+        this.subTaskDetailList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        subTaskId: null,
+        start: null,
+        relation: null,
+        end: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: 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
+      getSubTaskDetail(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) {
+            updateSubTaskDetail(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addSubTaskDetail(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 delSubTaskDetail(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('extract/subTaskDetail/export', {
+        ...this.queryParams
+      }, `subTaskDetail_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 336 - 0
src/views/extract/task/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="上传管理id" prop="uploadId">
+        <el-input
+          v-model="queryParams.uploadId"
+          placeholder="请输入上传管理id"
+          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="status">
+        <el-select v-model="queryParams.status" placeholder="请选择任务状态" clearable>
+          <el-option
+            v-for="dict in dict.type.kg_extract_status"
+            :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="['extract:task: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="['extract:task: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="['extract:task: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="['extract:task:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="taskList" @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="name" />
+      <el-table-column label="文件名称" align="center" prop="uploadName" />
+      <!-- <el-table-column label="选择需要执行的子任务" align="center" prop="selectSubTask">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.extract_sub_task_list" :value="scope.row.selectSubTask ? scope.row.selectSubTask.split(',') : []"/>
+        </template>
+      </el-table-column> -->
+      <el-table-column label="任务状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.kg_extract_status" :value="scope.row.status"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="创建人" align="center" prop="updateBy" />
+      <el-table-column label="创建时间" align="center" prop="createTime" width="180" />
+      <el-table-column label="完成时间" align="center" prop="completedDate" width="180" />
+      <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="['extract:task:edit']"
+          >修改</el-button> -->
+          <!-- <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['extract:task:remove']"
+          >删除</el-button> -->
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleView(scope.row)"
+            v-hasPermi="['extract:task:query']"
+          >详情</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="name">
+          <el-input v-model="form.name" placeholder="自动生成" />
+        </el-form-item>
+        <el-form-item label="上传任务" prop="uploadId">
+          <el-select v-model="form.uploadId" placeholder="请选择" @change="changeUpload" clearable>
+            <el-option
+              v-for="item in uploadOption"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="子任务" prop="selectSubTaskArray">
+          <el-checkbox-group v-model="form.selectSubTaskArray">
+            <el-checkbox
+              v-for="dict in dict.type.extract_sub_task_list"
+              :key="dict.value"
+              :label="dict.value">
+              {{dict.label}}
+            </el-checkbox>
+          </el-checkbox-group>
+        </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 { listTask, getTask, delTask, addTask, updateTask } from "@/api/extract/task";
+import { getOptionByName } from "@/api/upload/uploadManage";
+
+export default {
+  name: "Task",
+  dicts: ['kg_extract_status', 'extract_sub_task_list'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 知识抽取任务表格数据
+      taskList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        uploadId: null,
+        name: null,
+        status: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        uploadId: [
+          {required: true, message: "请选择上传任务", trigger: 'blur'},
+        ],
+        selectSubTaskArray: [
+          {required: true, message: "请选择子任务", trigger: 'blur'},
+        ],
+      },
+      uploadOption: []
+    };
+  },
+  created() {
+    this.getList();
+    this.getOption();
+  },
+  methods: {
+    /** 查询知识抽取任务列表 */
+    getList() {
+      this.loading = true;
+      listTask(this.queryParams).then(response => {
+        this.taskList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    getOption(){
+      getOptionByName(null).then(resp => {
+        this.uploadOption = resp.data
+      })
+    },
+    changeUpload(item){
+      console.info(item)
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        uploadId: null,
+        name: null,
+        selectSubTaskArray: ["1"],
+        status: "0",
+        createBy: null,
+        createTime: null,
+        completedDate: null,
+        updateBy: null,
+        updateTime: 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
+      getTask(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改知识抽取任务";
+      });
+    },
+    handleView(row){
+      //todo view
+      alert("开发ing")
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateTask(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addTask(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 delTask(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('extract/task/export', {
+        ...this.queryParams
+      }, `task_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 2 - 2
src/views/knowledge/graphEntity/relationClsAttrEditor.vue

@@ -147,7 +147,7 @@
         if (this.direction === 'START') {
           startEntId = this.entId
           endEntId = data
-          
+
         } else {
           startEntId = data
           endEntId = this.entId
@@ -255,4 +255,4 @@
 
 <style scoped>
 
-</style>
+</style>

+ 372 - 0
src/views/upload/dataManage/index.vue

@@ -0,0 +1,372 @@
+<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="tUploadId">
+        <el-input
+          v-model="queryParams.tUploadId"
+          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="['upload:dataManage: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="['upload:dataManage: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="['upload:dataManage: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="['upload:dataManage:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="dataManageList" @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="tUploadId" />
+      <el-table-column label="额外存储1" align="center" prop="extra1" />
+      <el-table-column label="额外存储2" align="center" prop="extra2" />
+      <el-table-column label="额外存储3" align="center" prop="extra3" />
+      <el-table-column label="额外存储4" align="center" prop="extra4" />
+      <el-table-column label="额外存储5" align="center" prop="extra5" />
+      <el-table-column label="额外存储6" align="center" prop="extra6" />
+      <el-table-column label="额外存储7" align="center" prop="extra7" />
+      <el-table-column label="额外存储8" align="center" prop="extra8" />
+      <el-table-column label="额外存储9" align="center" prop="extra9" />
+      <el-table-column label="额外存储10" align="center" prop="extra10" />
+      <el-table-column label="额外存储11" align="center" prop="extra11" />
+      <el-table-column label="额外存储12" align="center" prop="extra12" />
+      <el-table-column label="额外存储13" align="center" prop="extra13" />
+      <el-table-column label="额外存储14" align="center" prop="extra14" />
+      <el-table-column label="额外存储15" align="center" prop="extra15" />
+      <el-table-column label="额外存储16" align="center" prop="extra16" />
+      <el-table-column label="额外存储17" align="center" prop="extra17" />
+      <el-table-column label="额外存储18" align="center" prop="extra18" />
+      <el-table-column label="额外存储19" align="center" prop="extra19" />
+      <el-table-column label="额外存储20" align="center" prop="extra20" />
+      <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="['upload:dataManage:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['upload:dataManage: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="tUploadId">
+          <el-input v-model="form.tUploadId" placeholder="请输入上传管理主键" />
+        </el-form-item>
+        <el-form-item label="额外存储1" prop="extra1">
+          <el-input v-model="form.extra1" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储2" prop="extra2">
+          <el-input v-model="form.extra2" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储3" prop="extra3">
+          <el-input v-model="form.extra3" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储4" prop="extra4">
+          <el-input v-model="form.extra4" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储5" prop="extra5">
+          <el-input v-model="form.extra5" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储6" prop="extra6">
+          <el-input v-model="form.extra6" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储7" prop="extra7">
+          <el-input v-model="form.extra7" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储8" prop="extra8">
+          <el-input v-model="form.extra8" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储9" prop="extra9">
+          <el-input v-model="form.extra9" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储10" prop="extra10">
+          <el-input v-model="form.extra10" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储11" prop="extra11">
+          <el-input v-model="form.extra11" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储12" prop="extra12">
+          <el-input v-model="form.extra12" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储13" prop="extra13">
+          <el-input v-model="form.extra13" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储14" prop="extra14">
+          <el-input v-model="form.extra14" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储15" prop="extra15">
+          <el-input v-model="form.extra15" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储16" prop="extra16">
+          <el-input v-model="form.extra16" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储17" prop="extra17">
+          <el-input v-model="form.extra17" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储18" prop="extra18">
+          <el-input v-model="form.extra18" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储19" prop="extra19">
+          <el-input v-model="form.extra19" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="额外存储20" prop="extra20">
+          <el-input v-model="form.extra20" 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 { listDataManage, getDataManage, delDataManage, addDataManage, updateDataManage } from "@/api/upload/dataManage";
+
+export default {
+  name: "DataManage",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 数据管理表格数据
+      dataManageList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        tUploadId: null,
+        extra1: null,
+        extra2: null,
+        extra3: null,
+        extra4: null,
+        extra5: null,
+        extra6: null,
+        extra7: null,
+        extra8: null,
+        extra9: null,
+        extra10: null,
+        extra11: null,
+        extra12: null,
+        extra13: null,
+        extra14: null,
+        extra15: null,
+        extra16: null,
+        extra17: null,
+        extra18: null,
+        extra19: null,
+        extra20: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        tUploadId: [
+          { required: true, message: "上传管理主键不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询数据管理列表 */
+    getList() {
+      this.loading = true;
+      listDataManage(this.queryParams).then(response => {
+        this.dataManageList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        tUploadId: null,
+        extra1: null,
+        extra2: null,
+        extra3: null,
+        extra4: null,
+        extra5: null,
+        extra6: null,
+        extra7: null,
+        extra8: null,
+        extra9: null,
+        extra10: null,
+        extra11: null,
+        extra12: null,
+        extra13: null,
+        extra14: null,
+        extra15: null,
+        extra16: null,
+        extra17: null,
+        extra18: null,
+        extra19: null,
+        extra20: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: 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
+      getDataManage(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) {
+            updateDataManage(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addDataManage(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 delDataManage(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('upload/dataManage/export', {
+        ...this.queryParams
+      }, `dataManage_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 328 - 0
src/views/upload/uploadManage/index.vue

@@ -0,0 +1,328 @@
+<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="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入文件名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="模板类型" prop="templateType">
+        <el-select v-model="queryParams.templateType" placeholder="请选择模板类型" clearable>
+          <el-option
+            v-for="dict in dict.type.kg_upload_template"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="数据类型" prop="dataType">
+        <el-select v-model="queryParams.dataType" placeholder="请选择数据类型" clearable>
+          <el-option
+            v-for="dict in dict.type.kg_upload_type"
+            :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="['upload:uploadManage: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="['upload:uploadManage: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="['upload:uploadManage: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="['upload:uploadManage:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="uploadManageList" @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="name" />
+      <el-table-column label="模板类型" align="center" prop="templateType">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.kg_upload_template" :value="scope.row.templateType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="数据类型" align="center" prop="dataType">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.kg_upload_type" :value="scope.row.dataType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.file_upload_status" :value="scope.row.status"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="数量" align="center" prop="amount" />
+      <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="['upload:uploadManage:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['upload:uploadManage: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="1000px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <!-- <el-form-item label="文件名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入文件名称" />
+        </el-form-item> -->
+        <el-form-item label="模板类型">
+          <el-radio-group v-model="form.templateType">
+            <el-radio
+              v-for="dict in dict.type.kg_upload_template"
+              :key="dict.value"
+              :label="dict.value"
+            >{{dict.label}}</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="数据类型" prop="dataType">
+          <el-radio-group v-model="form.dataType">
+            <el-radio
+              v-for="dict in dict.type.kg_upload_type"
+              :key="dict.value"
+              :label="dict.value"
+            >{{dict.label}}</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="文件地址" prop="filePath">
+          <!-- <el-input v-model="form.filePath" placeholder="请输入文件地址" /> -->
+          <FileUpload ref="upload" v-model="form.filePath" :value="form.filePath" :limit=1 :fileSize=100 />
+        </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 { listUploadManage, getUploadManage, delUploadManage, addUploadManage, updateUploadManage } from "@/api/upload/uploadManage";
+import FileUpload from '@/components/FileUpload'
+export default {
+  name: "UploadManage",
+  components: { FileUpload },
+  dicts: ['kg_upload_type', 'kg_upload_template', 'file_upload_status'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 上传管理表格数据
+      uploadManageList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        name: null,
+        templateType: null,
+        dataType: null,
+        fileType: null,
+        status: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        dataType: [
+          {required: true, message: "数据类型不能为空", trigger: 'blur'},
+        ],
+        filePath: [
+          {required: true, message: "文件不能为空", trigger: 'blur'},
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询上传管理列表 */
+    getList() {
+      this.loading = true;
+      listUploadManage(this.queryParams).then(response => {
+        this.uploadManageList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        name: null,
+        templateType: "0",
+        dataType: "0",
+        fileType: null,
+        filePath: null,
+        status: "0",
+        amount: 1,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null
+      };
+      if(this.$refs.upload){
+        this.$refs.upload.reset()
+      }
+      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
+      getUploadManage(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) {
+            updateUploadManage(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addUploadManage(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 delUploadManage(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('upload/uploadManage/export', {
+        ...this.queryParams
+      }, `uploadManage_${new Date().getTime()}.xlsx`)
+    },
+  }
+};
+</script>

+ 2 - 1
vue.config.js

@@ -35,7 +35,8 @@ module.exports = {
     proxy: {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
-        target: `http://47.108.150.237:11082`,
+        // target: `http://47.108.150.237:11082`,
+        target: `http://localhost:11082`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''