Преглед изворни кода

feat: add dimension and knowledge base API and Vuex store

Ultraworked with Sisyphus

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Sisyphus пре 3 месеци
родитељ
комит
176726efca
2 измењених фајлова са 254 додато и 0 уклоњено
  1. 114 0
      cfc-web/src/api/dimension.js
  2. 140 0
      cfc-web/src/store/modules/dimension.js

+ 114 - 0
cfc-web/src/api/dimension.js

@@ -0,0 +1,114 @@
+import request from '@/utils/request'
+
+// 维度配置 API
+export function getDimensionList(params) {
+  return request({
+    url: '/api/admin/dimension-config/list',
+    method: 'post',
+    data: params
+  })
+}
+
+export function getDimension(id) {
+  return request({
+    url: '/api/admin/dimension-config/get',
+    method: 'post',
+    params: { id }
+  })
+}
+
+export function saveDimension(data) {
+  return request({
+    url: '/api/admin/dimension-config/save',
+    method: 'post',
+    data
+  })
+}
+
+export function deleteDimension(id) {
+  return request({
+    url: '/api/admin/dimension-config/delete',
+    method: 'post',
+    params: { id }
+  })
+}
+
+export function getDimensionTree() {
+  return request({
+    url: '/api/admin/dimension-config/tree',
+    method: 'post'
+  })
+}
+
+// 知识库 API
+export function getKnowledgeList(params) {
+  return request({
+    url: '/api/admin/knowledge-base/list',
+    method: 'post',
+    data: params
+  })
+}
+
+export function getKnowledge(id) {
+  return request({
+    url: '/api/admin/knowledge-base/get',
+    method: 'post',
+    params: { id }
+  })
+}
+
+export function saveKnowledge(data) {
+  return request({
+    url: '/api/admin/knowledge-base/save',
+    method: 'post',
+    data
+  })
+}
+
+export function deleteKnowledge(id) {
+  return request({
+    url: '/api/admin/knowledge-base/delete',
+    method: 'post',
+    params: { id }
+  })
+}
+
+export function bindKnowledgeDimensions(data) {
+  return request({
+    url: '/api/admin/knowledge-base/bind-dimensions',
+    method: 'post',
+    data
+  })
+}
+
+export function bindKnowledgeTags(data) {
+  return request({
+    url: '/api/admin/knowledge-base/bind-tags',
+    method: 'post',
+    data
+  })
+}
+
+// 标签 API
+export function getTagList() {
+  return request({
+    url: '/api/admin/knowledge-tag/list',
+    method: 'post'
+  })
+}
+
+export function saveTag(data) {
+  return request({
+    url: '/api/admin/knowledge-tag/save',
+    method: 'post',
+    data
+  })
+}
+
+export function deleteTag(id) {
+  return request({
+    url: '/api/admin/knowledge-tag/delete',
+    method: 'post',
+    params: { id }
+  })
+}

+ 140 - 0
cfc-web/src/store/modules/dimension.js

@@ -0,0 +1,140 @@
+import {
+  getDimensionList,
+  getDimensionTree,
+  saveDimension,
+  deleteDimension,
+  getKnowledgeList,
+  getKnowledge,
+  saveKnowledge,
+  deleteKnowledge,
+  getTagList,
+  saveTag,
+  deleteTag
+} from '@/api/dimension'
+
+export default {
+  namespaced: true,
+  state: {
+    // 维度
+    dimensions: [],
+    dimensionTree: [],
+    dimensionLoading: false,
+    // 知识库
+    knowledgeList: [],
+    knowledgeTotal: 0,
+    knowledgeLoading: false,
+    // 标签
+    tags: [],
+    tagLoading: false
+  },
+  mutations: {
+    SET_DIMENSIONS(state, list) {
+      state.dimensions = list
+    },
+    SET_DIMENSION_TREE(state, tree) {
+      state.dimensionTree = tree
+    },
+    SET_DIMENSION_LOADING(state, val) {
+      state.dimensionLoading = val
+    },
+    SET_KNOWLEDGE_LIST(state, data) {
+      state.knowledgeList = data.records || []
+      state.knowledgeTotal = data.total || 0
+    },
+    SET_KNOWLEDGE_LOADING(state, val) {
+      state.knowledgeLoading = val
+    },
+    SET_TAGS(state, list) {
+      state.tags = list
+    },
+    SET_TAG_LOADING(state, val) {
+      state.tagLoading = val
+    }
+  },
+  actions: {
+    // 维度
+    async fetchDimensions({ commit }, params = {}) {
+      commit('SET_DIMENSION_LOADING', true)
+      try {
+        const res = await getDimensionList(params)
+        if (res.code === 200) {
+          commit('SET_DIMENSIONS', res.data.records || [])
+        }
+      } finally {
+        commit('SET_DIMENSION_LOADING', false)
+      }
+    },
+    async fetchDimensionTree({ commit }) {
+      const res = await getDimensionTree()
+      if (res.code === 200) {
+        commit('SET_DIMENSION_TREE', res.data || [])
+      }
+    },
+    async saveDimension({ dispatch }, data) {
+      const res = await saveDimension(data)
+      if (res.code === 200) {
+        await dispatch('fetchDimensionTree')
+      }
+      return res
+    },
+    async deleteDimension({ dispatch }, id) {
+      const res = await deleteDimension(id)
+      if (res.code === 200) {
+        await dispatch('fetchDimensionTree')
+      }
+      return res
+    },
+    // 知识库
+    async fetchKnowledgeList({ commit }, params = {}) {
+      commit('SET_KNOWLEDGE_LOADING', true)
+      try {
+        const res = await getKnowledgeList(params)
+        if (res.code === 200) {
+          commit('SET_KNOWLEDGE_LIST', res.data || { records: [], total: 0 })
+        }
+      } finally {
+        commit('SET_KNOWLEDGE_LOADING', false)
+      }
+    },
+    async saveKnowledge({ dispatch }, data) {
+      const res = await saveKnowledge(data)
+      if (res.code === 200) {
+        await dispatch('fetchKnowledgeList', { page: 1, size: 20 })
+      }
+      return res
+    },
+    async deleteKnowledge({ dispatch }, id) {
+      const res = await deleteKnowledge(id)
+      if (res.code === 200) {
+        await dispatch('fetchKnowledgeList', { page: 1, size: 20 })
+      }
+      return res
+    },
+    // 标签
+    async fetchTags({ commit }) {
+      commit('SET_TAG_LOADING', true)
+      try {
+        const res = await getTagList()
+        if (res.code === 200) {
+          commit('SET_TAGS', res.data || [])
+        }
+      } finally {
+        commit('SET_TAG_LOADING', false)
+      }
+    },
+    async saveTag({ dispatch }, data) {
+      const res = await saveTag(data)
+      if (res.code === 200) {
+        await dispatch('fetchTags')
+      }
+      return res
+    },
+    async deleteTag({ dispatch }, id) {
+      const res = await deleteTag(id)
+      if (res.code === 200) {
+        await dispatch('fetchTags')
+      }
+      return res
+    }
+  }
+}