diff --git a/src/api/model_policy.ts b/src/api/model_policy.ts new file mode 100644 index 0000000..f6c86a9 --- /dev/null +++ b/src/api/model_policy.ts @@ -0,0 +1,62 @@ +import request from '@/utils/user_center_request'; + +export const GetModelPolicyService = (req) =>{ + const params = new URLSearchParams(); + for (const key in req) { + // 处理值为数组的情况(如多选参数) + if (Array.isArray(req[key])) { + req[key].forEach(value => { + params.append(key, value); // 数组参数会以 key=val1&key=val2 形式拼接 + }); + } else { + params.append(key, req[key]); // 普通键值对 + } + } + let url = `/model_policy/get_policy?${params.toString()}`; + let token = localStorage.getItem("token") || ""; + return request.get(url, + { + headers: { + 'token': token, //token + } + } + ) +} + +export const UpdateModelPolicyService = (Data: any) => { + // 将 Data 转换为 JSON 字符串 + const jsonData = JSON.stringify(Data); + const token = localStorage.getItem("token") || ""; + + return request.post('/model_policy/update_policy', jsonData, { + headers: { + 'token': token, + 'Content-Type': 'application/json' // 必须指定 JSON 格式的 Content-Type + } + }); +}; + + +export const AddModelPolicyService = (Data: any) => { + const jsonData = JSON.stringify(Data); + const token = localStorage.getItem("token") || ""; + return request.post('/model_policy/add_policy', jsonData,{ + headers: { + 'token': token, //token + 'Content-Type': 'application/json' // 必须指定 JSON 格式的 Content-Type + } + }) +} + +export const DelModelPolicyService = (Data: any) => { + const params = new URLSearchParams(); + for (let key in Data) { + params.append(key, Data[key]) + } + let token = localStorage.getItem("token") || ""; + return request.post('/model_policy/del_policy', params,{ + headers: { + 'token': token, //token + } + }) +} diff --git a/src/components/menu.ts b/src/components/menu.ts index 03a0578..8b8d4d6 100644 --- a/src/components/menu.ts +++ b/src/components/menu.ts @@ -37,6 +37,12 @@ export const menuData: Menus[] = [ pid: '1', index: '/manage-permiss-policy', title: '权限策略管理', + }, + { + id: '74', + pid: '1', + index: '/manage-model-policy', + title: '模型策略管理', } ], diff --git a/src/router/index.ts b/src/router/index.ts index ee7f6ea..992c6b5 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -59,16 +59,6 @@ const routes: RouteRecordRaw[] = [ }, component: () => import(/* webpackChunkName: "system-user" */ '../views/system/manage-file.vue'), }, - { - path: '/manage-permiss-policy', - name: 'manage-permiss-policy', - meta: { - title: '权限策略管理', - permiss: '73', - }, - component: () => import(/* webpackChunkName: "system-user" */ '../views/system/manage-permiss-policy.vue'), - - }, { path: '/manage-session', name: 'manage-session', @@ -116,6 +106,26 @@ const routes: RouteRecordRaw[] = [ }, component: () => import(/* webpackChunkName: "project-select" */ '../views/system/db-manage.vue'), + }, + { + path: '/manage-permiss-policy', + name: 'manage-permiss-policy', + meta: { + title: '权限策略管理', + permiss: '73', + }, + component: () => import(/* webpackChunkName: "system-user" */ '../views/system/manage-permiss-policy.vue'), + + }, + { + path: '/manage-model-policy', + name: 'manage-model-policy', + meta: { + title: '模型策略管理', + permiss: '74', + }, + component: () => import(/* webpackChunkName: "system-user" */ '../views/system/manage-model-policy.vue'), + }, { path: '/callback', diff --git a/src/store/permiss.ts b/src/store/permiss.ts index 1d7f8ff..105168c 100644 --- a/src/store/permiss.ts +++ b/src/store/permiss.ts @@ -59,6 +59,7 @@ export const usePermissStore = defineStore("permiss", { "71", //用户功能管理 "72", //数据库管理工具 "73", //权限策略管理 + "74", //模型策略管理 ], user: ["0", "8", "7", "9", "51" ,"53","55" ,"56", "57", "58", "59", "61", "71"], }, diff --git a/src/types/model_policy.ts b/src/types/model_policy.ts new file mode 100644 index 0000000..ff06d8e --- /dev/null +++ b/src/types/model_policy.ts @@ -0,0 +1,29 @@ +import { Range } from "./permiss_policy"; +// 策略信息结构体 +export interface ModelPolicy { + ID: number; + CreatedAt: string; // 日期时间格式,如 "2025-11-03T20:09:59.455+08:00" + UpdatedAt: string; // 日期时间格式 + DeletedAt: null | string; // 可能为 null 或日期时间格式 + name: string; + info: string; + model_id: string; + range: Range[]; // 范围信息数组 +} + +export interface ModelPolicyUserRange { + ID: number; + CreatedAt: string; + UpdatedAt: string; // 日期时间格式 + DeletedAt: null | string; // 可能为 null 或日期时间格式 + name: string; + info: string; + model_id: number[]; + range: number[]; // 范围信息数组 +} + +// 完整响应结构体 +export interface ModelPolicyResponseData { + policy: ModelPolicy; + range: Range[]; // 范围信息数组 +} \ No newline at end of file diff --git a/src/views/system/manage-model-policy.vue b/src/views/system/manage-model-policy.vue new file mode 100644 index 0000000..ab5c968 --- /dev/null +++ b/src/views/system/manage-model-policy.vue @@ -0,0 +1,443 @@ + + \ No newline at end of file diff --git a/src/views/system/manage-permiss-policy.vue b/src/views/system/manage-permiss-policy.vue index b8b9081..d982368 100644 --- a/src/views/system/manage-permiss-policy.vue +++ b/src/views/system/manage-permiss-policy.vue @@ -148,13 +148,12 @@ const GetAllDefaultUsers = async () => { user_select_opts.value.length = 0; for (let i = 0; i < response.data.length; i++) { let user = response.data[i]; - console.log("user:", user); user_select_opts.value.push({ value: user.id, label: (user.type === 0 ? "user":"group" )+ ":"+user.name }); } - console.log("user_select_opts:", user_select_opts.value); + //console.log("user_select_opts:", user_select_opts.value); } catch (error) { console.error('获取默认用户失败:', error); } @@ -256,8 +255,6 @@ const GetOnePermissPolicy = async () => { range: temp.range.map(item => item.id), }; permiss_policy_check_res.value = temp_; - - console.log("alldata 1:", addData[0]) } catch (error) { console.error('获取权限策略失败:', error); @@ -314,7 +311,6 @@ const GetPermissPolicy = async () => { start = page.total; } tableData.value = allData.value.slice(start, end); - console.log("allData:", allData.value); loading.value = false; } catch (error) { console.error('获取权限策略失败:', error); @@ -323,64 +319,13 @@ const GetPermissPolicy = async () => { }; const handleEdit = async (row) => { let data = row; - console.log("edit_row_data:", data); + //console.log("edit_row_data:", data); rowData.value = data; isEdit.value = true; visible.value = true; }; -const addData = async (data) => { - console.log("add_data:", data); - let result ={} - try{ - let req={ - policy_name: data.name, - policy_info: data.info - } - result = await AddPermissPolicyService(req); - if (result['code'] === 0) { - ElMessage.success("新增成功"); - } else { - ElMessage.error("新增失败:"+result['message']); - } - - }catch(e){ - console.log(e); - } - closeDialog(); -}; - -const updateData = async (data) => { - - let result ={} - try{ - let req={ - token:localStorage.getItem("token"), - id: data.ID, - }; - result = await UpdatePermissPolicyService(req); - if (result['code'] === 0) { - ElMessage.success("更新成功"); - } else { - ElMessage.error("更新失败"); - } - - }catch(e){ - console.log(e); - } - closeDialog(); -}; const handleSearch = async () => { - // query.name是否是数字 - if (isNaN(Number(query.name))) { - ElMessage.error('请输入数字'); - return; - } - let req={ - token: localStorage.getItem('token'), - type: "ID", - id: parseInt(query.name) || 1 - } await GetPermissPolicy(); page.total = allData.value.length; page.index = 1;