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