Browse Source

feat: 页面增加

sunxiao 11 months ago
parent
commit
558ae40588

+ 44 - 0
src/api/business/assistant.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询信义智能体助手配置列表
+export function listAssistant(query) {
+  return request({
+    url: '/business/assistant/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询信义智能体助手配置详细
+export function getAssistant(id) {
+  return request({
+    url: '/business/assistant/' + id,
+    method: 'get'
+  })
+}
+
+// 新增信义智能体助手配置
+export function addAssistant(data) {
+  return request({
+    url: '/business/assistant',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改信义智能体助手配置
+export function updateAssistant(data) {
+  return request({
+    url: '/business/assistant',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除信义智能体助手配置
+export function delAssistant(id) {
+  return request({
+    url: '/business/assistant/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/business/qa.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询信义推荐问答列列表
+export function listQa(query) {
+  return request({
+    url: '/business/qa/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询信义推荐问答列详细
+export function getQa(id) {
+  return request({
+    url: '/business/qa/' + id,
+    method: 'get'
+  })
+}
+
+// 新增信义推荐问答列
+export function addQa(data) {
+  return request({
+    url: '/business/qa',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改信义推荐问答列
+export function updateQa(data) {
+  return request({
+    url: '/business/qa',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除信义推荐问答列
+export function delQa(id) {
+  return request({
+    url: '/business/qa/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/business/record.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询信义大模型问答记录列表
+export function listRecord(query) {
+  return request({
+    url: '/business/record/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询信义大模型问答记录详细
+export function getRecord(id) {
+  return request({
+    url: '/business/record/' + id,
+    method: 'get'
+  })
+}
+
+// 新增信义大模型问答记录
+export function addRecord(data) {
+  return request({
+    url: '/business/record',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改信义大模型问答记录
+export function updateRecord(data) {
+  return request({
+    url: '/business/record',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除信义大模型问答记录
+export function delRecord(id) {
+  return request({
+    url: '/business/record/' + id,
+    method: 'delete'
+  })
+}

+ 12 - 1
src/assets/styles/index.scss

@@ -125,6 +125,13 @@ aside {
 //main-container全局样式
 //main-container全局样式
 .app-container {
 .app-container {
   padding: 20px;
   padding: 20px;
+  background: #fff;
+}
+
+.page-container {
+  padding: 20px;
+  min-height: calc(100vh - 84px);
+  background: #f3f2f7;
 }
 }
 
 
 .components-container {
 .components-container {
@@ -133,7 +140,11 @@ aside {
 }
 }
 
 
 .pagination-container {
 .pagination-container {
-  margin-top: 30px;
+  padding: 20px 0px !important;
+  display: flex;
+  justify-content: flex-end;
+  // padding-top: 20px;
+  // margin-top: 30px;
 }
 }
 
 
 .text-center {
 .text-center {

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

@@ -102,11 +102,11 @@
 
 
 /** 表格布局 **/
 /** 表格布局 **/
 .pagination-container {
 .pagination-container {
-    position: relative;
-    height: 25px;
-    margin-bottom: 10px;
-    margin-top: 15px;
-    padding: 10px 20px !important;
+    // position: relative;
+    // height: 25px;
+    // margin-bottom: 10px;
+    // margin-top: 15px;
+    // padding: 10px 20px !important;
 }
 }
 
 
 .el-dialog .pagination-container {
 .el-dialog .pagination-container {
@@ -123,8 +123,8 @@
 }
 }
 
 
 .pagination-container .el-pagination {
 .pagination-container .el-pagination {
-	right: 0;
-	position: absolute;
+	// right: 0;
+	// position: absolute;
 }
 }
 
 
 @media ( max-width : 768px) {
 @media ( max-width : 768px) {
@@ -137,8 +137,8 @@
 }
 }
 
 
 .el-table .fixed-width .el-button--small {
 .el-table .fixed-width .el-button--small {
-	padding-left: 0;
-	padding-right: 0;
+	// padding-left: 0;
+	// padding-right: 0;
 	width: inherit;
 	width: inherit;
 }
 }
 
 
@@ -279,3 +279,25 @@
 .top-right-btn {
 .top-right-btn {
 	margin-left: auto;
 	margin-left: auto;
 }
 }
+
+.dialog-footer {
+	display: flex;
+	justify-content: flex-end;
+}
+
+.search-form_container {
+	padding-top: 20px;
+	margin-bottom: 16px;
+  background: #fff;
+}
+
+.singe-line {
+  text-overflow: ellipsis;
+  overflow: hidden;
+  word-break: break-all;
+  white-space: nowrap;
+}
+
+.card-table_container {
+	padding-bottom: 0px !important;
+}

+ 2 - 0
src/layout/components/AppMain.vue

@@ -25,6 +25,8 @@ const tagsViewStore = useTagsViewStore()
   width: 100%;
   width: 100%;
   position: relative;
   position: relative;
   overflow: hidden;
   overflow: hidden;
+  // background: #f3f2f7;
+  background: #fff;
 }
 }
 
 
 .fixed-header + .app-main {
 .fixed-header + .app-main {

+ 307 - 0
src/views/business/assistant/index.vue

@@ -0,0 +1,307 @@
+<template>
+  <div class="page-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px" class="search-form_container">
+      <el-form-item label="助手标题" prop="title">
+        <el-input
+          v-model="queryParams.title"
+          placeholder="请输入标题"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="类型" prop="category">
+        <el-input
+          v-model="queryParams.category"
+          placeholder="请输入分类"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="search" size="small" @click="handleQuery">搜索</el-button>
+        <el-button icon="refresh" size="small" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+    
+    <el-card shadow="Never" body-class="card-table_container">
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button
+            type="primary"
+            plain
+            icon="plus"
+            size="small"
+            @click="handleAdd"
+          >新增</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="success"
+            plain
+            icon="edit"
+            size="small"
+            :disabled="single"
+            @click="handleUpdate"
+          >修改</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="danger"
+            plain
+            icon="delete"
+            size="small"
+            :disabled="multiple"
+            @click="handleDelete"
+          >删除</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="warning"
+            plain
+            icon="download"
+            size="small"
+            @click="handleExport"
+          >导出</el-button>
+        </el-col>
+        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      </el-row>
+
+      <el-table v-loading="loading" :data="assistantList" @selection-change="handleSelectionChange">
+        <el-table-column type="selection" width="55" align="center" />
+        <el-table-column label="icon" align="center" prop="id">
+          <template #default="scope">
+            <img :src="scope.row.banner" alt="" style="width: 20px;">
+          </template>
+        </el-table-column>
+        <el-table-column label="助手标题" align="center" prop="title" />
+        <el-table-column label="提示词" align="center" prop="content" width="300">
+          <template #default="scope">
+            <el-popover effect="light" trigger="hover" placement="top" width="600">
+              <template #default>
+                <div>{{ scope.row.content }}</div>
+              </template>
+              <template #reference>
+                <el-tag style="display: block;">
+                  <p class="singe-line">{{ scope.row.content }}</p>
+                </el-tag>
+              </template>
+            </el-popover>
+          </template>
+        </el-table-column>
+        <el-table-column label="类型" align="center" prop="category" />
+        <el-table-column label="添加时间" align="center" prop="createTime" />
+        <el-table-column label="权重值" align="center" prop="sort" />
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
+          <template #default="scope">
+            <el-button
+              size="small"
+              icon="edit"
+              @click="handleUpdate(scope.row)"
+            >修改</el-button>
+            <el-button
+              size="small"
+              type="danger"
+              icon="delete"
+              @click="handleDelete(scope.row)"
+            >删除</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-card>
+    
+    <!-- 添加或修改信义智能体助手配置对话框 -->
+    <el-dialog :title="title" v-model="open" width="900px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-form-item label="类型" prop="category">
+          <el-input v-model="form.category" placeholder="请输入类型" />
+        </el-form-item>
+        <el-form-item label="助手标题" prop="title">
+          <el-input v-model="form.title" placeholder="请输入标题" />
+        </el-form-item>
+        <el-form-item label="提示词内容">
+          <editor v-model="form.content" :min-height="192"/>
+        </el-form-item>
+        <el-form-item label="banner地址" prop="banner">
+          <el-input v-model="form.banner" placeholder="请输入banner地址" />
+        </el-form-item>
+        <el-form-item label="排序" prop="sort">
+          <el-input v-model="form.sort" 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 { listAssistant, getAssistant, delAssistant, addAssistant, updateAssistant } from "@/api/business/assistant";
+
+export default {
+  name: "Assistant",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 信义智能体助手配置表格数据
+      assistantList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        category: null,
+        title: null,
+        content: null,
+        banner: null,
+        sort: null,
+        revision: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询信义智能体助手配置列表 */
+    getList() {
+      this.loading = true;
+      listAssistant(this.queryParams).then(response => {
+        this.assistantList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        category: null,
+        title: null,
+        content: null,
+        banner: null,
+        sort: null,
+        delFlag: null,
+        revision: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加智能体助手配置";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getAssistant(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) {
+            updateAssistant(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addAssistant(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 delAssistant(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('business/assistant/export', {
+        ...this.queryParams
+      }, `assistant_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
+
+<style>
+.singe-line {
+  line-height: 22px;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  word-break: break-all;
+  white-space: nowrap;
+}
+</style>

+ 294 - 0
src/views/business/qa/index.vue

@@ -0,0 +1,294 @@
+<template>
+  <div class="page-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px" class="search-form_container">
+      <el-form-item label="问题" prop="question">
+        <el-input
+          v-model="queryParams.question"
+          placeholder="请输入问题"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="类型" prop="type">
+        <el-select v-model="queryParams.type">
+          <el-option
+            :key="item.label"
+            :value="item.value"
+            :label="item.label"
+            v-for="item in selectOptions"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="search" size="small" @click="handleQuery">搜索</el-button>
+        <el-button icon="refresh" size="small" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-card shadow="Never" body-class="card-table_container">
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button
+            type="primary"
+            plain
+            icon="plus"
+            size="small"
+            @click="handleAdd"
+          >新增</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="success"
+            plain
+            icon="edit"
+            size="small"
+            :disabled="single"
+            @click="handleUpdate"
+          >修改</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="danger"
+            plain
+            icon="delete"
+            size="small"
+            :disabled="multiple"
+            @click="handleDelete"
+          >删除</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="warning"
+            plain
+            icon="download"
+            size="small"
+            @click="handleExport"
+          >导出</el-button>
+        </el-col>
+        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      </el-row>
+
+      <el-table v-loading="loading" :data="qaList" @selection-change="handleSelectionChange">
+        <el-table-column type="selection" width="55" align="center" />
+        <el-table-column label="类型" align="center" prop="type">
+          <template #default="scope">
+            <el-tag :type="scope.row.color">
+              {{ scope.row.label }}
+            </el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column label="问题" align="center" prop="question" width="400px">
+          <template #default="scope">
+            <el-popover effect="light" trigger="hover" placement="top" width="600">
+              <template #default>
+                <div style="font-weight: bold;">问题:</div>
+                <div>{{ scope.row.question }}</div>
+              </template>
+              <template #reference>
+                <p class="singe-line" style="text-align: left;">{{ scope.row.content }}</p>
+              </template>
+            </el-popover>
+          </template>
+        </el-table-column>
+        <el-table-column label="用户名" align="center" prop="unknown"/>
+        <el-table-column label="手机号" align="center" prop="unknown"/>
+        <el-table-column label="点赞" align="center" prop="sort" />
+        <el-table-column label="发起时间" align="center" prop="revision" />
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
+          <template #default="scope">
+            <el-button type="primary" size="small" icon="view">查看记录</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-card>
+    <!-- 添加或修改信义推荐问答列对话框 -->
+    <el-dialog :title="title" v-model="open" width="900px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="问题" prop="question">
+          <el-input v-model="form.question" placeholder="请输入问题" />
+        </el-form-item>
+        <el-form-item label="提示词">
+          <editor v-model="form.content" :min-height="192"/>
+        </el-form-item>
+        <el-form-item label="排序" prop="sort">
+          <el-input v-model="form.sort" 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 { listQa, getQa, delQa, addQa, updateQa } from "@/api/business/qa";
+
+export default {
+  name: "Qa",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 信义推荐问答列表格数据
+      qaList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        type: null,
+        question: null,
+        content: null,
+        sort: null,
+        revision: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      },
+      selectOptions: [
+        { value: '', label: '全部' },
+        { value: 0, label: '专家问答', },
+        { value: 1, label: '水质报警', },
+        { value: 2, label: '生化报警', },
+        { value: 3, label: '预测预警',}
+      ]
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询信义推荐问答列列表 */
+    getList() {
+      this.loading = true;
+      const enumType = {
+        '0': {color: 'primary', label: '专家问答'},
+        '1': {color: 'success', label: '水质报警'},
+        '2': {color: 'warning', label: '生化报警'},
+        '3': {color: 'danger', label: '预测预警'}
+      }
+      listQa(this.queryParams).then(response => {
+        this.qaList = response.rows.map(item => ({ ...item, ...enumType[item.type]  }));
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        type: null,
+        question: null,
+        content: null,
+        sort: null,
+        delFlag: null,
+        revision: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加推荐问答列";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getQa(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) {
+            updateQa(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addQa(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 delQa(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('business/qa/export', {
+        ...this.queryParams
+      }, `qa_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 391 - 0
src/views/business/record/index.vue

@@ -0,0 +1,391 @@
+<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="sessionId">
+        <el-input
+          v-model="queryParams.sessionId"
+          placeholder="请输入会话ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="隶属哪个模块" prop="module">
+        <el-input
+          v-model="queryParams.module"
+          placeholder="请输入隶属哪个模块"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="用户ID" prop="userId">
+        <el-input
+          v-model="queryParams.userId"
+          placeholder="请输入用户ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="告警记录ID" prop="warningId">
+        <el-input
+          v-model="queryParams.warningId"
+          placeholder="请输入告警记录ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="问答次数" prop="counts">
+        <el-input
+          v-model="queryParams.counts"
+          placeholder="请输入问答次数"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="是否使用搜索增强" prop="isStrong">
+        <el-input
+          v-model="queryParams.isStrong"
+          placeholder="请输入是否使用搜索增强"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="回复是否满意" prop="isSatisfied">
+        <el-input
+          v-model="queryParams.isSatisfied"
+          placeholder="请输入回复是否满意"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="是否中断问答" prop="isShutdown">
+        <el-input
+          v-model="queryParams.isShutdown"
+          placeholder="请输入是否中断问答"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="乐观锁" prop="revision">
+        <el-input
+          v-model="queryParams.revision"
+          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="['business:record: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="['business:record: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="['business:record: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="['business:record:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="recordList" @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="sessionId" />
+      <el-table-column label="类型" align="center" prop="type" />
+      <el-table-column label="隶属哪个模块" align="center" prop="module" />
+      <el-table-column label="用户ID" align="center" prop="userId" />
+      <el-table-column label="显示内容" align="center" prop="showVal" />
+      <el-table-column label="用户提问" align="center" prop="question" />
+      <el-table-column label="大模型回答" align="center" prop="answer" />
+      <el-table-column label="告警记录ID" align="center" prop="warningId" />
+      <el-table-column label="问答次数" align="center" prop="counts" />
+      <el-table-column label="是否使用搜索增强" align="center" prop="isStrong" />
+      <el-table-column label="回复是否满意" align="center" prop="isSatisfied" />
+      <el-table-column label="是否中断问答" align="center" prop="isShutdown" />
+      <el-table-column label="乐观锁" align="center" prop="revision" />
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:record:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['business:record: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="sessionId">
+          <el-input v-model="form.sessionId" placeholder="请输入会话ID" />
+        </el-form-item>
+        <el-form-item label="隶属哪个模块" prop="module">
+          <el-input v-model="form.module" placeholder="请输入隶属哪个模块" />
+        </el-form-item>
+        <el-form-item label="用户ID" prop="userId">
+          <el-input v-model="form.userId" placeholder="请输入用户ID" />
+        </el-form-item>
+        <el-form-item label="显示内容" prop="showVal">
+          <el-input v-model="form.showVal" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="用户提问" prop="question">
+          <el-input v-model="form.question" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="大模型回答" prop="answer">
+          <el-input v-model="form.answer" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="告警记录ID" prop="warningId">
+          <el-input v-model="form.warningId" placeholder="请输入告警记录ID" />
+        </el-form-item>
+        <el-form-item label="问答次数" prop="counts">
+          <el-input v-model="form.counts" placeholder="请输入问答次数" />
+        </el-form-item>
+        <el-form-item label="是否使用搜索增强" prop="isStrong">
+          <el-input v-model="form.isStrong" placeholder="请输入是否使用搜索增强" />
+        </el-form-item>
+        <el-form-item label="回复是否满意" prop="isSatisfied">
+          <el-input v-model="form.isSatisfied" placeholder="请输入回复是否满意" />
+        </el-form-item>
+        <el-form-item label="是否中断问答" prop="isShutdown">
+          <el-input v-model="form.isShutdown" placeholder="请输入是否中断问答" />
+        </el-form-item>
+        <el-form-item label="删除标志" prop="delFlag">
+          <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
+        </el-form-item>
+        <el-form-item label="乐观锁" prop="revision">
+          <el-input v-model="form.revision" placeholder="请输入乐观锁" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" 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 { listRecord, getRecord, delRecord, addRecord, updateRecord } from "@/api/business/record";
+
+export default {
+  name: "Record",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 信义大模型问答记录表格数据
+      recordList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        sessionId: null,
+        type: null,
+        module: null,
+        userId: null,
+        showVal: null,
+        question: null,
+        answer: null,
+        warningId: null,
+        counts: null,
+        isStrong: null,
+        isSatisfied: null,
+        isShutdown: null,
+        revision: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询信义大模型问答记录列表 */
+    getList() {
+      this.loading = true;
+      listRecord(this.queryParams).then(response => {
+        this.recordList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        sessionId: null,
+        type: null,
+        module: null,
+        userId: null,
+        showVal: null,
+        question: null,
+        answer: null,
+        warningId: null,
+        counts: null,
+        isStrong: null,
+        isSatisfied: null,
+        isShutdown: null,
+        delFlag: null,
+        revision: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加信义大模型问答记录";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getRecord(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) {
+            updateRecord(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addRecord(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 delRecord(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('business/record/export', {
+        ...this.queryParams
+      }, `record_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 1 - 1
src/views/daily/index.vue

@@ -99,7 +99,7 @@ onMounted(async () => {
 </script>
 </script>
 
 
 <template>
 <template>
-  <div class="app-container daily-container">
+  <div class="page-container daily-container">
     <el-card shadow="never" header="选择日报填写日期" class="pre-form" v-show="!isVisible">
     <el-card shadow="never" header="选择日报填写日期" class="pre-form" v-show="!isVisible">
       <el-form :inline="true">
       <el-form :inline="true">
         <div class="pre-form_inner">
         <div class="pre-form_inner">