allen 2 lat temu
rodzic
commit
2fadd9aece

+ 44 - 0
src/api/knowledge/class.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询实体类管理列表
+export function listClass(query) {
+  return request({
+    url: '/knowledge/class/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询实体类管理详细
+export function getClass(entClsId) {
+  return request({
+    url: '/knowledge/class/' + entClsId,
+    method: 'get'
+  })
+}
+
+// 新增实体类管理
+export function addClass(data) {
+  return request({
+    url: '/knowledge/class',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改实体类管理
+export function updateClass(data) {
+  return request({
+    url: '/knowledge/class',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除实体类管理
+export function delClass(entClsId) {
+  return request({
+    url: '/knowledge/class/' + entClsId,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/knowledge/classAttribute.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询实体类属性列表
+export function listClassAttribute(query) {
+  return request({
+    url: '/knowledge/classAttribute/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询实体类属性详细
+export function getClassAttribute(attrClsId) {
+  return request({
+    url: '/knowledge/classAttribute/' + attrClsId,
+    method: 'get'
+  })
+}
+
+// 新增实体类属性
+export function addClassAttribute(data) {
+  return request({
+    url: '/knowledge/classAttribute',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改实体类属性
+export function updateClassAttribute(data) {
+  return request({
+    url: '/knowledge/classAttribute',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除实体类属性
+export function delClassAttribute(attrClsId) {
+  return request({
+    url: '/knowledge/classAttribute/' + attrClsId,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/knowledge/classRelation.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询实体类关系管理列表
+export function listClassRelation(query) {
+  return request({
+    url: '/knowledge/classRelation/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询实体类关系管理详细
+export function getClassRelation(relClsId) {
+  return request({
+    url: '/knowledge/classRelation/' + relClsId,
+    method: 'get'
+  })
+}
+
+// 新增实体类关系管理
+export function addClassRelation(data) {
+  return request({
+    url: '/knowledge/classRelation',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改实体类关系管理
+export function updateClassRelation(data) {
+  return request({
+    url: '/knowledge/classRelation',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除实体类关系管理
+export function delClassRelation(relClsId) {
+  return request({
+    url: '/knowledge/classRelation/' + relClsId,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/knowledge/entity.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询实体管理列表
+export function listEntity(query) {
+  return request({
+    url: '/knowledge/entity/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询实体管理详细
+export function getEntity(entId) {
+  return request({
+    url: '/knowledge/entity/' + entId,
+    method: 'get'
+  })
+}
+
+// 新增实体管理
+export function addEntity(data) {
+  return request({
+    url: '/knowledge/entity',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改实体管理
+export function updateEntity(data) {
+  return request({
+    url: '/knowledge/entity',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除实体管理
+export function delEntity(entId) {
+  return request({
+    url: '/knowledge/entity/' + entId,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/knowledge/entityAttribute.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询实体属性管理列表
+export function listEntityAttribute(query) {
+  return request({
+    url: '/knowledge/entityAttribute/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询实体属性管理详细
+export function getEntityAttribute(attrId) {
+  return request({
+    url: '/knowledge/entityAttribute/' + attrId,
+    method: 'get'
+  })
+}
+
+// 新增实体属性管理
+export function addEntityAttribute(data) {
+  return request({
+    url: '/knowledge/entityAttribute',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改实体属性管理
+export function updateEntityAttribute(data) {
+  return request({
+    url: '/knowledge/entityAttribute',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除实体属性管理
+export function delEntityAttribute(attrId) {
+  return request({
+    url: '/knowledge/entityAttribute/' + attrId,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/knowledge/entityRelation.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询实体关系管理列表
+export function listEntityRelation(query) {
+  return request({
+    url: '/knowledge/entityRelation/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询实体关系管理详细
+export function getEntityRelation(relId) {
+  return request({
+    url: '/knowledge/entityRelation/' + relId,
+    method: 'get'
+  })
+}
+
+// 新增实体关系管理
+export function addEntityRelation(data) {
+  return request({
+    url: '/knowledge/entityRelation',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改实体关系管理
+export function updateEntityRelation(data) {
+  return request({
+    url: '/knowledge/entityRelation',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除实体关系管理
+export function delEntityRelation(relId) {
+  return request({
+    url: '/knowledge/entityRelation/' + relId,
+    method: 'delete'
+  })
+}

+ 345 - 0
src/views/knowledge/class/index.vue

@@ -0,0 +1,345 @@
+<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="pid">
+        <el-input
+          v-model="queryParams.pid"
+          placeholder="请输入实体类父节点ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="实体类名称" prop="entClsName">
+        <el-input
+          v-model="queryParams.entClsName"
+          placeholder="请输入实体类名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="图标id" prop="entClsIconId">
+        <el-input
+          v-model="queryParams.entClsIconId"
+          placeholder="请输入图标id"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="实体类背景颜色" prop="backGroundColor">
+        <el-input
+          v-model="queryParams.backGroundColor"
+          placeholder="请输入实体类背景颜色"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="是否存在子类" prop="childCount">
+        <el-input
+          v-model="queryParams.childCount"
+          placeholder="请输入是否存在子类"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="待审属性节点个数" prop="noneCount">
+        <el-input
+          v-model="queryParams.noneCount"
+          placeholder="请输入待审属性节点个数"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="是否根节点" prop="isRoot">
+        <el-input
+          v-model="queryParams.isRoot"
+          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="['knowledge:class: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="['knowledge:class: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="['knowledge:class: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="['knowledge:class:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="classList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="实体类ID" align="center" prop="entClsId" />
+      <el-table-column label="实体类父节点ID" align="center" prop="pid" />
+      <el-table-column label="实体类名称" align="center" prop="entClsName" />
+      <el-table-column label="实体类描述" align="center" prop="entClsMemo" />
+      <el-table-column label="图标id" align="center" prop="entClsIconId" />
+      <el-table-column label="实体类背景颜色" align="center" prop="backGroundColor" />
+      <el-table-column label="实体类类型" align="center" prop="clsType" />
+      <el-table-column label="是否存在子类" align="center" prop="childCount" />
+      <el-table-column label="待审属性节点个数" align="center" prop="noneCount" />
+      <el-table-column label="允许的属性类型" align="center" prop="entClsAllowAttrType" />
+      <el-table-column label="是否根节点" align="center" prop="isRoot" />
+      <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="['knowledge:class:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['knowledge:class: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="pid">
+          <el-input v-model="form.pid" placeholder="请输入实体类父节点ID" />
+        </el-form-item>
+        <el-form-item label="实体类名称" prop="entClsName">
+          <el-input v-model="form.entClsName" placeholder="请输入实体类名称" />
+        </el-form-item>
+        <el-form-item label="实体类描述" prop="entClsMemo">
+          <el-input v-model="form.entClsMemo" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="图标id" prop="entClsIconId">
+          <el-input v-model="form.entClsIconId" placeholder="请输入图标id" />
+        </el-form-item>
+        <el-form-item label="实体类背景颜色" prop="backGroundColor">
+          <el-input v-model="form.backGroundColor" placeholder="请输入实体类背景颜色" />
+        </el-form-item>
+        <el-form-item label="是否存在子类" prop="childCount">
+          <el-input v-model="form.childCount" placeholder="请输入是否存在子类" />
+        </el-form-item>
+        <el-form-item label="待审属性节点个数" prop="noneCount">
+          <el-input v-model="form.noneCount" placeholder="请输入待审属性节点个数" />
+        </el-form-item>
+        <el-form-item label="是否根节点" prop="isRoot">
+          <el-input v-model="form.isRoot" 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 { listClass, getClass, delClass, addClass, updateClass } from "@/api/knowledge/class";
+
+export default {
+  name: "Class",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 实体类管理表格数据
+      classList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        pid: null,
+        entClsName: null,
+        entClsMemo: null,
+        entClsIconId: null,
+        backGroundColor: null,
+        clsType: null,
+        childCount: null,
+        noneCount: null,
+        entClsAllowAttrType: null,
+        isRoot: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询实体类管理列表 */
+    getList() {
+      this.loading = true;
+      listClass(this.queryParams).then(response => {
+        this.classList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        entClsId: null,
+        pid: null,
+        entClsName: null,
+        entClsMemo: null,
+        entClsIconId: null,
+        backGroundColor: null,
+        clsType: null,
+        childCount: null,
+        noneCount: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        entClsAllowAttrType: null,
+        isRoot: 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.entClsId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加实体类管理";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const entClsId = row.entClsId || this.ids
+      getClass(entClsId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改实体类管理";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.entClsId != null) {
+            updateClass(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addClass(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const entClsIds = row.entClsId || this.ids;
+      this.$modal.confirm('是否确认删除实体类管理编号为"' + entClsIds + '"的数据项?').then(function() {
+        return delClass(entClsIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('knowledge/class/export', {
+        ...this.queryParams
+      }, `class_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 415 - 0
src/views/knowledge/classAttribute/index.vue

@@ -0,0 +1,415 @@
+<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="attrClsName">
+        <el-input
+          v-model="queryParams.attrClsName"
+          placeholder="请输入属性类名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="属性单位" prop="attrUnit">
+        <el-input
+          v-model="queryParams.attrUnit"
+          placeholder="请输入属性单位"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="实体类id" prop="entClsId">
+        <el-input
+          v-model="queryParams.entClsId"
+          placeholder="请输入实体类id"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="属性类描述" prop="attrClsMemo">
+        <el-input
+          v-model="queryParams.attrClsMemo"
+          placeholder="请输入属性类描述"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="domainKey" prop="domainKey">
+        <el-input
+          v-model="queryParams.domainKey"
+          placeholder="请输入domainKey"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="domain" prop="domain">
+        <el-input
+          v-model="queryParams.domain"
+          placeholder="请输入domain"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="isPublic" prop="isPublic">
+        <el-input
+          v-model="queryParams.isPublic"
+          placeholder="请输入isPublic"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="最大值" prop="maxValue">
+        <el-input
+          v-model="queryParams.maxValue"
+          placeholder="请输入最大值"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="最小值" prop="minValue">
+        <el-input
+          v-model="queryParams.minValue"
+          placeholder="请输入最小值"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="是否可以为空" prop="notNull">
+        <el-input
+          v-model="queryParams.notNull"
+          placeholder="请输入是否可以为空"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="entUseCount" prop="entUseCount">
+        <el-input
+          v-model="queryParams.entUseCount"
+          placeholder="请输入entUseCount"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="isEdit" prop="isEdit">
+        <el-input
+          v-model="queryParams.isEdit"
+          placeholder="请输入isEdit"
+          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="['knowledge:classAttribute: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="['knowledge:classAttribute: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="['knowledge:classAttribute: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="['knowledge:classAttribute:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="classAttributeList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="关系id" align="center" prop="attrClsId" />
+      <el-table-column label="属性类名称" align="center" prop="attrClsName" />
+      <el-table-column label="属性单位" align="center" prop="attrUnit" />
+      <el-table-column label="属性类型" align="center" prop="entAndAttrType" />
+      <el-table-column label="属性类型" align="center" prop="attrType" />
+      <el-table-column label="实体类id" align="center" prop="entClsId" />
+      <el-table-column label="属性类描述" align="center" prop="attrClsMemo" />
+      <el-table-column label="值类型 (TEXT) " align="center" prop="valueType" />
+      <el-table-column label="值类型 (TEXT) " align="center" prop="attrValueType" />
+      <el-table-column label="domainKey" align="center" prop="domainKey" />
+      <el-table-column label="domain" align="center" prop="domain" />
+      <el-table-column label="isPublic" align="center" prop="isPublic" />
+      <el-table-column label="最大值" align="center" prop="maxValue" />
+      <el-table-column label="最小值" align="center" prop="minValue" />
+      <el-table-column label="是否可以为空" align="center" prop="notNull" />
+      <el-table-column label="entUseCount" align="center" prop="entUseCount" />
+      <el-table-column label="isEdit" align="center" prop="isEdit" />
+      <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="['knowledge:classAttribute:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['knowledge:classAttribute: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="attrClsName">
+          <el-input v-model="form.attrClsName" placeholder="请输入属性类名称" />
+        </el-form-item>
+        <el-form-item label="属性单位" prop="attrUnit">
+          <el-input v-model="form.attrUnit" placeholder="请输入属性单位" />
+        </el-form-item>
+        <el-form-item label="实体类id" prop="entClsId">
+          <el-input v-model="form.entClsId" placeholder="请输入实体类id" />
+        </el-form-item>
+        <el-form-item label="属性类描述" prop="attrClsMemo">
+          <el-input v-model="form.attrClsMemo" placeholder="请输入属性类描述" />
+        </el-form-item>
+        <el-form-item label="domainKey" prop="domainKey">
+          <el-input v-model="form.domainKey" placeholder="请输入domainKey" />
+        </el-form-item>
+        <el-form-item label="domain" prop="domain">
+          <el-input v-model="form.domain" placeholder="请输入domain" />
+        </el-form-item>
+        <el-form-item label="isPublic" prop="isPublic">
+          <el-input v-model="form.isPublic" placeholder="请输入isPublic" />
+        </el-form-item>
+        <el-form-item label="最大值" prop="maxValue">
+          <el-input v-model="form.maxValue" placeholder="请输入最大值" />
+        </el-form-item>
+        <el-form-item label="最小值" prop="minValue">
+          <el-input v-model="form.minValue" placeholder="请输入最小值" />
+        </el-form-item>
+        <el-form-item label="是否可以为空" prop="notNull">
+          <el-input v-model="form.notNull" placeholder="请输入是否可以为空" />
+        </el-form-item>
+        <el-form-item label="entUseCount" prop="entUseCount">
+          <el-input v-model="form.entUseCount" placeholder="请输入entUseCount" />
+        </el-form-item>
+        <el-form-item label="isEdit" prop="isEdit">
+          <el-input v-model="form.isEdit" placeholder="请输入isEdit" />
+        </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 { listClassAttribute, getClassAttribute, delClassAttribute, addClassAttribute, updateClassAttribute } from "@/api/knowledge/classAttribute";
+
+export default {
+  name: "ClassAttribute",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 实体类属性表格数据
+      classAttributeList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        attrClsName: null,
+        attrUnit: null,
+        entAndAttrType: null,
+        attrType: null,
+        entClsId: null,
+        attrClsMemo: null,
+        valueType: null,
+        attrValueType: null,
+        domainKey: null,
+        domain: null,
+        isPublic: null,
+        maxValue: null,
+        minValue: null,
+        notNull: null,
+        entUseCount: null,
+        isEdit: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询实体类属性列表 */
+    getList() {
+      this.loading = true;
+      listClassAttribute(this.queryParams).then(response => {
+        this.classAttributeList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        attrClsId: null,
+        attrClsName: null,
+        attrUnit: null,
+        entAndAttrType: null,
+        attrType: null,
+        entClsId: null,
+        attrClsMemo: null,
+        valueType: null,
+        attrValueType: null,
+        domainKey: null,
+        domain: null,
+        isPublic: null,
+        maxValue: null,
+        minValue: null,
+        notNull: null,
+        entUseCount: null,
+        isEdit: 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.attrClsId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加实体类属性";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const attrClsId = row.attrClsId || this.ids
+      getClassAttribute(attrClsId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改实体类属性";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.attrClsId != null) {
+            updateClassAttribute(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addClassAttribute(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const attrClsIds = row.attrClsId || this.ids;
+      this.$modal.confirm('是否确认删除实体类属性编号为"' + attrClsIds + '"的数据项?').then(function() {
+        return delClassAttribute(attrClsIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('knowledge/classAttribute/export', {
+        ...this.queryParams
+      }, `classAttribute_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 328 - 0
src/views/knowledge/classRelation/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="relClsName">
+        <el-input
+          v-model="queryParams.relClsName"
+          placeholder="请输入关系类名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="关系类描述" prop="relClsMemo">
+        <el-input
+          v-model="queryParams.relClsMemo"
+          placeholder="请输入关系类描述"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="关系类背景颜色" prop="backGroundColor">
+        <el-input
+          v-model="queryParams.backGroundColor"
+          placeholder="请输入关系类背景颜色"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="是否模板" prop="isModel">
+        <el-input
+          v-model="queryParams.isModel"
+          placeholder="请输入是否模板"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="起点实体类ID" prop="startId">
+        <el-input
+          v-model="queryParams.startId"
+          placeholder="请输入起点实体类ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="终点实体类ID" prop="endId">
+        <el-input
+          v-model="queryParams.endId"
+          placeholder="请输入终点实体类ID"
+          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="['knowledge:classRelation: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="['knowledge:classRelation: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="['knowledge:classRelation: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="['knowledge:classRelation:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="classRelationList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="关系id" align="center" prop="relClsId" />
+      <el-table-column label="关系类名称" align="center" prop="relClsName" />
+      <el-table-column label="关系类描述" align="center" prop="relClsMemo" />
+      <el-table-column label="关系类背景颜色" align="center" prop="backGroundColor" />
+      <el-table-column label="关系类类型" align="center" prop="clsType" />
+      <el-table-column label="是否模板" align="center" prop="isModel" />
+      <el-table-column label="起点实体类ID" align="center" prop="startId" />
+      <el-table-column label="终点实体类ID" align="center" prop="endId" />
+      <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="['knowledge:classRelation:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['knowledge:classRelation: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="relClsName">
+          <el-input v-model="form.relClsName" placeholder="请输入关系类名称" />
+        </el-form-item>
+        <el-form-item label="关系类描述" prop="relClsMemo">
+          <el-input v-model="form.relClsMemo" placeholder="请输入关系类描述" />
+        </el-form-item>
+        <el-form-item label="关系类背景颜色" prop="backGroundColor">
+          <el-input v-model="form.backGroundColor" placeholder="请输入关系类背景颜色" />
+        </el-form-item>
+        <el-form-item label="是否模板" prop="isModel">
+          <el-input v-model="form.isModel" placeholder="请输入是否模板" />
+        </el-form-item>
+        <el-form-item label="起点实体类ID" prop="startId">
+          <el-input v-model="form.startId" placeholder="请输入起点实体类ID" />
+        </el-form-item>
+        <el-form-item label="终点实体类ID" prop="endId">
+          <el-input v-model="form.endId" placeholder="请输入终点实体类ID" />
+        </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 { listClassRelation, getClassRelation, delClassRelation, addClassRelation, updateClassRelation } from "@/api/knowledge/classRelation";
+
+export default {
+  name: "ClassRelation",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 实体类关系管理表格数据
+      classRelationList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        relClsName: null,
+        relClsMemo: null,
+        backGroundColor: null,
+        clsType: null,
+        isModel: null,
+        startId: null,
+        endId: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        startId: [
+          { required: true, message: "起点实体类ID不能为空", trigger: "blur" }
+        ],
+        endId: [
+          { required: true, message: "终点实体类ID不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询实体类关系管理列表 */
+    getList() {
+      this.loading = true;
+      listClassRelation(this.queryParams).then(response => {
+        this.classRelationList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        relClsId: null,
+        relClsName: null,
+        relClsMemo: null,
+        backGroundColor: null,
+        clsType: null,
+        isModel: null,
+        startId: null,
+        endId: 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.relClsId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加实体类关系管理";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const relClsId = row.relClsId || this.ids
+      getClassRelation(relClsId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改实体类关系管理";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.relClsId != null) {
+            updateClassRelation(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addClassRelation(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const relClsIds = row.relClsId || this.ids;
+      this.$modal.confirm('是否确认删除实体类关系管理编号为"' + relClsIds + '"的数据项?').then(function() {
+        return delClassRelation(relClsIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('knowledge/classRelation/export', {
+        ...this.queryParams
+      }, `classRelation_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 305 - 0
src/views/knowledge/entity/index.vue

@@ -0,0 +1,305 @@
+<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="entName">
+        <el-input
+          v-model="queryParams.entName"
+          placeholder="请输入实体名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="实体描述" prop="entMemo">
+        <el-input
+          v-model="queryParams.entMemo"
+          placeholder="请输入实体描述"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="实体类id" prop="entClsId">
+        <el-input
+          v-model="queryParams.entClsId"
+          placeholder="请输入实体类id"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="是否模板" prop="isModel">
+        <el-input
+          v-model="queryParams.isModel"
+          placeholder="请输入是否模板"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="实体iconId" prop="entIconId">
+        <el-input
+          v-model="queryParams.entIconId"
+          placeholder="请输入实体iconId"
+          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="['knowledge:entity: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="['knowledge:entity: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="['knowledge:entity: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="['knowledge:entity:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="entityList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="实体id" align="center" prop="entId" />
+      <el-table-column label="实体名称" align="center" prop="entName" />
+      <el-table-column label="实体描述" align="center" prop="entMemo" />
+      <el-table-column label="实体类id" align="center" prop="entClsId" />
+      <el-table-column label="是否模板" align="center" prop="isModel" />
+      <el-table-column label="实体iconId" align="center" prop="entIconId" />
+      <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="['knowledge:entity:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['knowledge:entity: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="entName">
+          <el-input v-model="form.entName" placeholder="请输入实体名称" />
+        </el-form-item>
+        <el-form-item label="实体描述" prop="entMemo">
+          <el-input v-model="form.entMemo" placeholder="请输入实体描述" />
+        </el-form-item>
+        <el-form-item label="实体类id" prop="entClsId">
+          <el-input v-model="form.entClsId" placeholder="请输入实体类id" />
+        </el-form-item>
+        <el-form-item label="是否模板" prop="isModel">
+          <el-input v-model="form.isModel" placeholder="请输入是否模板" />
+        </el-form-item>
+        <el-form-item label="实体iconId" prop="entIconId">
+          <el-input v-model="form.entIconId" placeholder="请输入实体iconId" />
+        </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 { listEntity, getEntity, delEntity, addEntity, updateEntity } from "@/api/knowledge/entity";
+
+export default {
+  name: "Entity",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 实体管理表格数据
+      entityList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        entName: null,
+        entMemo: null,
+        entClsId: null,
+        isModel: null,
+        entIconId: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询实体管理列表 */
+    getList() {
+      this.loading = true;
+      listEntity(this.queryParams).then(response => {
+        this.entityList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        entId: null,
+        entName: null,
+        entMemo: null,
+        entClsId: null,
+        isModel: null,
+        entIconId: 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.entId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加实体管理";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const entId = row.entId || this.ids
+      getEntity(entId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改实体管理";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.entId != null) {
+            updateEntity(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addEntity(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const entIds = row.entId || this.ids;
+      this.$modal.confirm('是否确认删除实体管理编号为"' + entIds + '"的数据项?').then(function() {
+        return delEntity(entIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('knowledge/entity/export', {
+        ...this.queryParams
+      }, `entity_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 277 - 0
src/views/knowledge/entityAttribute/index.vue

@@ -0,0 +1,277 @@
+<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="attrValue">
+        <el-input
+          v-model="queryParams.attrValue"
+          placeholder="请输入实体属性值"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="实体id" prop="entId">
+        <el-input
+          v-model="queryParams.entId"
+          placeholder="请输入实体id"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="实体类id" prop="attrClsId">
+        <el-input
+          v-model="queryParams.attrClsId"
+          placeholder="请输入实体类id"
+          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="['knowledge:entityAttribute: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="['knowledge:entityAttribute: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="['knowledge:entityAttribute: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="['knowledge:entityAttribute:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="entityAttributeList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="实体属性id" align="center" prop="attrId" />
+      <el-table-column label="实体属性值" align="center" prop="attrValue" />
+      <el-table-column label="实体id" align="center" prop="entId" />
+      <el-table-column label="实体类id" align="center" prop="attrClsId" />
+      <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="['knowledge:entityAttribute:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['knowledge:entityAttribute: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="attrValue">
+          <el-input v-model="form.attrValue" placeholder="请输入实体属性值" />
+        </el-form-item>
+        <el-form-item label="实体id" prop="entId">
+          <el-input v-model="form.entId" placeholder="请输入实体id" />
+        </el-form-item>
+        <el-form-item label="实体类id" prop="attrClsId">
+          <el-input v-model="form.attrClsId" placeholder="请输入实体类id" />
+        </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 { listEntityAttribute, getEntityAttribute, delEntityAttribute, addEntityAttribute, updateEntityAttribute } from "@/api/knowledge/entityAttribute";
+
+export default {
+  name: "EntityAttribute",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 实体属性管理表格数据
+      entityAttributeList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        attrValue: null,
+        entId: null,
+        attrClsId: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询实体属性管理列表 */
+    getList() {
+      this.loading = true;
+      listEntityAttribute(this.queryParams).then(response => {
+        this.entityAttributeList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        attrId: null,
+        attrValue: null,
+        entId: null,
+        attrClsId: 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.attrId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加实体属性管理";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const attrId = row.attrId || this.ids
+      getEntityAttribute(attrId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改实体属性管理";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.attrId != null) {
+            updateEntityAttribute(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addEntityAttribute(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const attrIds = row.attrId || this.ids;
+      this.$modal.confirm('是否确认删除实体属性管理编号为"' + attrIds + '"的数据项?').then(function() {
+        return delEntityAttribute(attrIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('knowledge/entityAttribute/export', {
+        ...this.queryParams
+      }, `entityAttribute_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 291 - 0
src/views/knowledge/entityRelation/index.vue

@@ -0,0 +1,291 @@
+<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="relClsId">
+        <el-input
+          v-model="queryParams.relClsId"
+          placeholder="请输入实体关系值"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="起点实体id" prop="startEntId">
+        <el-input
+          v-model="queryParams.startEntId"
+          placeholder="请输入起点实体id"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="终点实体id" prop="endEntId">
+        <el-input
+          v-model="queryParams.endEntId"
+          placeholder="请输入终点实体id"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="是否模板" prop="isModel">
+        <el-input
+          v-model="queryParams.isModel"
+          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="['knowledge:entityRelation: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="['knowledge:entityRelation: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="['knowledge:entityRelation: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="['knowledge:entityRelation:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="entityRelationList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="实体关系id" align="center" prop="relId" />
+      <el-table-column label="实体关系值" align="center" prop="relClsId" />
+      <el-table-column label="起点实体id" align="center" prop="startEntId" />
+      <el-table-column label="终点实体id" align="center" prop="endEntId" />
+      <el-table-column label="是否模板" align="center" prop="isModel" />
+      <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="['knowledge:entityRelation:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['knowledge:entityRelation: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="relClsId">
+          <el-input v-model="form.relClsId" placeholder="请输入实体关系值" />
+        </el-form-item>
+        <el-form-item label="起点实体id" prop="startEntId">
+          <el-input v-model="form.startEntId" placeholder="请输入起点实体id" />
+        </el-form-item>
+        <el-form-item label="终点实体id" prop="endEntId">
+          <el-input v-model="form.endEntId" placeholder="请输入终点实体id" />
+        </el-form-item>
+        <el-form-item label="是否模板" prop="isModel">
+          <el-input v-model="form.isModel" 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 { listEntityRelation, getEntityRelation, delEntityRelation, addEntityRelation, updateEntityRelation } from "@/api/knowledge/entityRelation";
+
+export default {
+  name: "EntityRelation",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 实体关系管理表格数据
+      entityRelationList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        relClsId: null,
+        startEntId: null,
+        endEntId: null,
+        isModel: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询实体关系管理列表 */
+    getList() {
+      this.loading = true;
+      listEntityRelation(this.queryParams).then(response => {
+        this.entityRelationList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        relId: null,
+        relClsId: null,
+        startEntId: null,
+        endEntId: null,
+        isModel: 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.relId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加实体关系管理";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const relId = row.relId || this.ids
+      getEntityRelation(relId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改实体关系管理";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.relId != null) {
+            updateEntityRelation(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addEntityRelation(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const relIds = row.relId || this.ids;
+      this.$modal.confirm('是否确认删除实体关系管理编号为"' + relIds + '"的数据项?').then(function() {
+        return delEntityRelation(relIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('knowledge/entityRelation/export', {
+        ...this.queryParams
+      }, `entityRelation_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>