From 8a06a8bc75720329a97528e2815ec4a2a8ae25e5 Mon Sep 17 00:00:00 2001
From: liulingling.177216 <liulingling@halosee.com>
Date: 星期六, 18 一月 2025 21:43:44 +0800
Subject: [PATCH] 添加了知识库页面,联调增删改查

---
 zhitan-vue/vite.config.js                                          |    6 
 zhitan-vue/src/api/policy/knowledgeBase.js                         |   48 +++++++++
 zhitan-vue/src/views/policy/knowledgebase/components/EditModal.vue |  100 ++++++++++++++++++++
 zhitan-vue/src/views/policy/knowledgebase/knowledgeBase.vue        |  130 ++++++++++++++++++++++++++
 4 files changed, 281 insertions(+), 3 deletions(-)

diff --git a/zhitan-vue/src/api/policy/knowledgeBase.js b/zhitan-vue/src/api/policy/knowledgeBase.js
new file mode 100644
index 0000000..0b7bbd2
--- /dev/null
+++ b/zhitan-vue/src/api/policy/knowledgeBase.js
@@ -0,0 +1,48 @@
+import request from '@/utils/request'
+
+
+
+
+// 鑾峰彇鍒楄〃
+export function knowledgeBaseList(params) {
+    return request({
+        url: '/knowledgeBase/page',
+        method: 'get',
+        params
+    })
+}
+
+// 鏂板
+export function knowledgeBaseAdd(data) {
+    return request({
+        url: '/knowledgeBase/add',
+        method: 'post',
+        data
+    })
+}
+
+// 鏌ヨ鎯�
+export function knowledgeBaseInfo(params) {
+    return request({
+        url: `/knowledgeBase/detail/${params.id}`,
+        method: 'get',
+        params
+    })
+}
+
+// 缂栬緫
+export function knowledgeBaseEdit(data) {
+    return request({
+        url: '/knowledgeBase/edit',
+        method: 'put',
+        data
+    })
+}
+
+//鍒犻櫎
+export function knowledgeBaseDel(id) {
+    return request({
+        url: '/knowledgeBase/delete/' + id,
+        method: 'delete',
+    })
+}
\ No newline at end of file
diff --git a/zhitan-vue/src/views/policy/knowledgebase/components/EditModal.vue b/zhitan-vue/src/views/policy/knowledgebase/components/EditModal.vue
new file mode 100644
index 0000000..99ef2df
--- /dev/null
+++ b/zhitan-vue/src/views/policy/knowledgebase/components/EditModal.vue
@@ -0,0 +1,100 @@
+<template>
+    <el-dialog v-model="visible" :title="title" width="600" @close="handleClose">
+        <el-form :model="form" ref="queryRef" :rules="formRules" label-width="120px" v-loading="loading">
+            <el-form-item label="鏍囬" prop="title">
+                <el-input v-model="form.title" placeholder="璇疯緭鍏ユ爣棰�" />
+            </el-form-item>
+            <el-form-item label="鑳芥簮绫诲瀷" prop="type">
+                <el-select v-model="form.type" placeholder="璇烽�夋嫨">
+                    <el-option v-for="(item, index) in props.types" :key="index" :label="item.label"
+                        :value="item.value">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="鍐呭" prop="content">
+                <el-input v-model="form.content" placeholder="璇疯緭鍏ュ唴瀹�" />
+            </el-form-item>
+        </el-form>
+        <div slot="footer" class="text-right">
+            <el-button type="primary" @click="submitForm" :loading="loading">纭� 瀹�</el-button>
+            <el-button @click="handleClose">鍙� 娑�</el-button>
+        </div>
+    </el-dialog>
+</template>
+
+<script setup>
+import { knowledgeBaseAdd, knowledgeBaseEdit } from '@/api/policy/knowledgeBase'
+const { proxy } = getCurrentInstance();
+let props = defineProps(['types'])
+
+
+let visible = ref(false)
+let title = ref('')
+let loading = ref(false)
+let form = ref({
+    title: '',
+    content: '',
+    type: 0,
+    url:[]
+})
+let emit = defineEmits(['getList'])
+const formRules = {
+    title: [{ required: true, trigger: "blur", message: "璇疯緭鍏ユ爣棰�" }],
+    content: [{ required: true, trigger: "blur", message: "璇疯緭鍏ュ唴瀹�" }],
+}
+
+function submitForm() {
+    proxy.$refs.queryRef.validate(valid => {
+        if (valid) {
+            loading.value = true;
+            let obj = form.value.id ? knowledgeBaseEdit(form.value) : knowledgeBaseAdd(form.value)
+            obj.then((res) => {
+                if (res.code == 200) {
+                    proxy.$modal.msgSuccess(res.msg);
+                    emit('getList')
+                } else {
+                    proxy.$modal.msgError(res.msg);
+                }
+
+            }).catch((err) => {
+
+            }).finally(() => {
+                handleClose()
+            });
+        }
+    })
+}
+
+
+
+
+
+function handleOpen(row) {
+    if (row && row.id) {
+        title.value = "缂栬緫鐭ヨ瘑搴�"
+        form.value = JSON.parse(JSON.stringify(row))
+    } else {
+        title.value = "娣诲姞鐭ヨ瘑搴�"
+    }
+    visible.value = true
+}
+
+function handleClose(value) {
+    visible.value = false
+    loading.value = false
+    proxy.$refs.queryRef.resetFields()
+    form.value = {
+        title: '',
+        content: '',
+        type: 0,
+        url:[]
+    }
+}
+
+defineExpose({ handleOpen })
+
+</script>
+
+
+
+<style lang="scss" scoped></style>
diff --git a/zhitan-vue/src/views/policy/knowledgebase/knowledgeBase.vue b/zhitan-vue/src/views/policy/knowledgebase/knowledgeBase.vue
new file mode 100644
index 0000000..508ca50
--- /dev/null
+++ b/zhitan-vue/src/views/policy/knowledgebase/knowledgeBase.vue
@@ -0,0 +1,130 @@
+<template>
+  <div class="page">
+    <div class="form-card">
+      <el-form :model="queryParams" ref="queryRef" :inline="true" label-width="120px">
+        <el-form-item label="鏍囬">
+          <el-input v-model="queryParams.title" placeholder="璇疯緭鍏ユ爣棰�" />
+        </el-form-item>
+        <el-form-item label="鑳芥簮绫诲瀷">
+              <el-select v-model="queryParams.type" placeholder="璇烽�夋嫨鑳芥簮绫诲瀷" style="width: 100%">
+                  <el-option v-for="dict in types" :key="dict.value"
+                      :label="dict.label" :value="dict.value" />
+              </el-select>
+          </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="Search" @click="handleQuery">鎼滅储</el-button>
+          <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button>
+        </el-form-item>
+      </el-form>
+    </div>
+
+    <div class="table-bg-style">
+      <div class="theme-dark-mt20 mb20 ml20">
+        <el-button type="primary" icon="plus" @click="handleAdd">鏂板</el-button>
+        <!-- <el-button type="primary" icon="Delete">鍒犻櫎</el-button> -->
+      </div>
+      <div class="table-box">
+        <el-table :data="tableData" v-loading="loading">
+          <el-table-column prop="title" label="鏍囬" show-overflow-tooltip align="center" />
+          <el-table-column prop="typeDesc" label="鑳芥簮绫诲瀷" show-overflow-tooltip align="center" />
+          <el-table-column prop="content" label="鍐呭" show-overflow-tooltip align="center" />
+          <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" show-overflow-tooltip align="center" />
+          <el-table-column label="鎿嶄綔" width="300" align="center">
+            <template #default="scope">
+              <el-button link type="primary" icon="Edit" @click="handleAdd(scope.row)"> 淇敼 </el-button>
+              <el-button link type="primary" icon="Delete" @click="handleDel(scope.row)"> 鍒犻櫎 </el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <pagination
+          v-show="total > 0"
+          :total="total"
+          v-model:page="queryParams.pageNum"
+          v-model:limit="queryParams.pageSize"
+          @pagination="getList"
+        />
+      </div>
+    </div>
+    <edit-modal ref="EditModalRef" @getList="getList"  :types="types" />
+  </div>
+</template>
+
+<script setup>
+ import EditModal from "./components/EditModal.vue"
+import { knowledgeBaseList, knowledgeBaseDel } from "@/api/policy/knowledgeBase"
+let { proxy } = getCurrentInstance()
+const types = ref([
+  { label: "鐢�", value: 0 },
+  { label: "姘�", value: 1 },
+  { label: "澶╃劧姘�", value: 2 },
+  { label: "钂告苯", value: 3 },
+]);
+let loading = ref(false)
+let total = ref(0)
+let tableData = ref([])
+let queryParams = ref({
+  title: "",
+  type:0,
+  pageNum: 1,
+  pageSize: 10,
+})
+
+function getList() {
+  loading.value = true
+  knowledgeBaseList(queryParams.value).then((res) => {
+    console.log(res.rows)
+    tableData.value = res.rows
+    total.value = res.total
+    loading.value = false
+  })
+}
+
+getList()
+
+let EditModalRef = ref("")
+function handleAdd(row) {
+  if (EditModalRef.value) {
+    EditModalRef.value.handleOpen(row)
+  }
+}
+
+function handleDel(row) {
+  proxy.$modal
+    .confirm("鏄惁纭鍒犻櫎鏁版嵁椤�?")
+    .then(function () {
+      return knowledgeBaseDel(row.id)
+    })
+    .then(() => {
+      getList()
+      proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛")
+    })
+    .catch(() => {})
+}
+
+function handleQuery() {
+  queryParams.value.pageNum = 1
+  getList()
+}
+
+function resetQuery() {
+  queryParams.value = {
+    title: "",
+    type:0 ,
+    pageNum: 1,
+    pageSize: 10,
+  }
+  getList()
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/styles/page.scss";
+
+.header-box {
+  :deep .el-form-item__content {
+    color: #fff;
+    font-size: 16px;
+  }
+}
+</style>
diff --git a/zhitan-vue/vite.config.js b/zhitan-vue/vite.config.js
index dcba260..7d7f8c7 100644
--- a/zhitan-vue/vite.config.js
+++ b/zhitan-vue/vite.config.js
@@ -30,10 +30,10 @@
       open: true,
       proxy: {
         // https://cn.vitejs.dev/config/#server-proxy
-        '/dev-api': {
-          target: 'http://127.0.0.1:8080',
+        '/prod-api': {
+          target: 'https://demo-ems.zhitancloud.com/prod-api',
           changeOrigin: true,
-          rewrite: (p) => p.replace(/^\/dev-api/, '')
+          rewrite: (p) => p.replace(/^\/prod-api/, '')
         }
       }
     },

--
Gitblit v1.9.3