From 7472f1fdd76506657ecb906cac2b56bb08e9f943 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=86=E5=85=89LG?= Date: Tue, 21 Oct 2025 14:23:38 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BF=AE=E6=94=B9=E3=80=91=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=99=BD=E5=90=8D=E5=8D=95=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/appControl/index.ts | 8 +++++-- src/views/examPaper/index.vue | 41 +++++++++++++++++++++++++++-------- 2 files changed, 38 insertions(+), 11 deletions(-) diff --git a/src/api/appControl/index.ts b/src/api/appControl/index.ts index 03dcd3a..8a1c72a 100644 --- a/src/api/appControl/index.ts +++ b/src/api/appControl/index.ts @@ -1,4 +1,5 @@ import axios from 'axios' +import request from '@/config/axios' /** * @description @@ -50,6 +51,9 @@ export const AppAllApi = () => { * @description 用于获取获取关闭应用的白名单 * @returns */ -export const AppCloseWhitelistApi = (taskId, ip) => { - return axios.get('http://localhost:48081/white?taskId=' + taskId + '&ip=' + ip) +// export const AppCloseWhitelistApi = (taskId, ip) => { +// return axios.get('http://localhost:48081/white?taskId=' + taskId + '&ip=' + ip) +// } +export const AppCloseWhitelistApi = () => { + return request.get({ url: '/exam/white/getAppWhiteList' }) } diff --git a/src/views/examPaper/index.vue b/src/views/examPaper/index.vue index 80cd5e6..0fe9246 100644 --- a/src/views/examPaper/index.vue +++ b/src/views/examPaper/index.vue @@ -842,11 +842,7 @@ const handleConfirm = async () => { }) .then(async () => { try { - const res = await AppCloseWhitelistApi( - examStore.setExamId, - localStorage.getItem('serverIP') - ) - const whitelist = JSON.parse(res.data.data) + const whitelist = await AppCloseWhitelistApi() AppAllApi().then(({ data: { data } }) => { // 将data过滤掉checkCloseWhitelist中的值 const newData = JSON.parse(data) @@ -854,7 +850,21 @@ const handleConfirm = async () => { console.log('获取到的应用列表:', newData) console.log('白名单列表:', whitelist) - const filteredData = newData.filter((item) => !whitelist.includes(item)) + const filteredData = newData.filter((item) => { + // 获取项的可匹配文本(优先 message、name,其次整个项的字符串化) + const text = ( + typeof item === 'string' + ? item + : item && (item.message || item.name) + ? item.message || item.name + : JSON.stringify(item) || '' + ).toLowerCase() + + // 只匹配开头(不区分大小写),若 whitelist 中任一项是 text 的前缀则过滤掉 + return !whitelist.some((whiteItem) => + text.startsWith(String(whiteItem || '').toLowerCase()) + ) + }) console.log('过滤后的应用列表:', filteredData) let { process, number } = formatProcessList(filteredData) @@ -1692,8 +1702,7 @@ const checkCloseWhitelist = ref([]) // 返回主窗口 const handleBackView = async () => { try { - const res = await AppCloseWhitelistApi(examStore.setExamId, localStorage.getItem('serverIP')) - const whitelist = JSON.parse(res.data.data) + const whitelist = await AppCloseWhitelistApi() AppAllApi().then(({ data: { data } }) => { // 将data过滤掉checkCloseWhitelist中的值 const newData = JSON.parse(data) @@ -1701,7 +1710,21 @@ const handleBackView = async () => { console.log('获取到的应用列表:', newData) console.log('白名单列表:', whitelist) - const filteredData = newData.filter((item) => !whitelist.includes(item)) + const filteredData = newData.filter((item) => { + // 获取项的可匹配文本(优先 message、name,其次整个项的字符串化) + const text = ( + typeof item === 'string' + ? item + : item && (item.message || item.name) + ? item.message || item.name + : JSON.stringify(item) || '' + ).toLowerCase() + + // 只匹配开头(不区分大小写),若 whitelist 中任一项是 text 的前缀则过滤掉 + return !whitelist.some((whiteItem) => + text.startsWith(String(whiteItem || '').toLowerCase()) + ) + }) console.log('过滤后的应用列表:', filteredData) let { process, number } = formatProcessList(filteredData)