diff --git a/route/api.php b/route/api.php index b92a844..9607d3e 100644 --- a/route/api.php +++ b/route/api.php @@ -9,6 +9,8 @@ use app\controller\admin\{auth, system\CacheController, system\CacheDataController, system\ConfigController, + system\dev\CommandController, + system\dev\ComposerController, system\DictionaryController, system\DictionaryDataController, system\FileController, @@ -17,8 +19,7 @@ use app\controller\admin\{auth, system\OperateRecordController, system\RequestRecordController, system\RoleController, - system\UserController -}; + system\UserController}; use app\http\middleware\AuthMiddleware; use think\facade\Route; use think\middleware\AllowCrossDomain; @@ -70,6 +71,11 @@ Route::group("adminapi", function () { Route::group("system", function () { + Route::get('composer/package', [ComposerController::class, "list"])->name("system.composerPackageList"); + Route::get('command', [CommandController::class, "list"])->name("system.commandList"); + + + Route::get('login-record/page', [LoginRecordController::class, "page"])->name("system.pageLoginRecords"); Route::get('operate-record/page', [OperateRecordController::class, "page"])->name("system.pageOperateRecords"); Route::get('request-record/page', [RequestRecordController::class, "page"])->name("system.pageRequestRecords"); diff --git a/z_ele/src/api/system/composer/index.ts b/z_ele/src/api/system/composer/index.ts new file mode 100644 index 0000000..9abb810 --- /dev/null +++ b/z_ele/src/api/system/composer/index.ts @@ -0,0 +1,19 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { Package, PackageParam } from './model'; + +/** + * 查询引入的包列表 + */ +export async function listPackage(params?: PackageParam) { + const res = await request.get>( + '/system/composer/package', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/z_ele/src/api/system/composer/model/index.ts b/z_ele/src/api/system/composer/model/index.ts new file mode 100644 index 0000000..bcdc8b6 --- /dev/null +++ b/z_ele/src/api/system/composer/model/index.ts @@ -0,0 +1,5 @@ +import type { PageParam } from '@/api'; + +export interface Package {} + +export interface PackageParam extends PageParam {} diff --git a/z_ele/src/plugins/websocket/core/instance.ts b/z_ele/src/plugins/websocket/core/instance.ts index f890e76..fa4c21c 100644 --- a/z_ele/src/plugins/websocket/core/instance.ts +++ b/z_ele/src/plugins/websocket/core/instance.ts @@ -7,9 +7,9 @@ import { WsEvent, WsSendEventType } from '../types'; -import {computed, ref} from 'vue'; -import {wsEventManager} from './event-manager'; -import {scriptEvent, systemEvent} from '@/plugins/websocket/core/event'; +import { computed, ref } from 'vue'; +import { wsEventManager } from './event-manager'; +import { scriptEvent, systemEvent } from '@/plugins/websocket/core/event'; // 创建WebSocket实例 export function createWsInstance(config: WsConfig): WsInstance { @@ -30,7 +30,7 @@ export function createWsInstance(config: WsConfig): WsInstance { // 内部方法 const addMessage = (content: string, type: WsMessageType) => { - messages.value.push({content, type, timestamp: new Date()}); + messages.value.push({ content, type, timestamp: new Date() }); }; const addSystemMessage = (content: string) => @@ -52,6 +52,9 @@ export function createWsInstance(config: WsConfig): WsInstance { * 解析后数据格式应该统一为 @{type: "system", event: "事件名称", data: {}} */ switch (jsonData.type) { + case WsMessageType.PING: + sendMessage(JSON.stringify({ type: 'pong' })); + break; case WsMessageType.SCRIPT: scriptEvent.trigger(jsonData.event, jsonData.data); break; @@ -123,28 +126,29 @@ export function createWsInstance(config: WsConfig): WsInstance { addSystemMessage('Connection closed'); }; - const sendMessage = (event: WsSendEventType, data: any) => { - if (!socket.value || !isConnected.value || !data) return; - - const payload = JSON.stringify({event, data}); - socket.value.send(payload); - addMessage(payload, WsMessageType.OUTGOING); - }; /** - * 推送系统消息 + * Ws.推送消息 + * @param payload + */ + const sendMessage = (payload: string): boolean => { + if (!socket.value || !isConnected.value || !payload) return false; + socket.value.send(payload); + // addMessage(payload, WsMessageType.OUTGOING); + return true; + }; + + /** + * Ws.推送系统消息 * @param event * @param data */ - const sendSystemMessage = (event: WsSendEventType, data: any) => { - if (!socket.value || !isConnected.value || !data) return; - const payload = JSON.stringify({type: 'system', event, data}); - socket.value.send(payload); + const sendSystemMessage = (event: WsSendEventType, data: any): boolean => { + return sendMessage(JSON.stringify({ type: 'system', event, data })); }; const clearMessages = () => (messages.value = []); // 自动连接 - console.log('autoConnect->'); config.autoConnect && connectSocket(); return { diff --git a/z_ele/src/plugins/websocket/types.ts b/z_ele/src/plugins/websocket/types.ts index 3f81b1e..74e942d 100644 --- a/z_ele/src/plugins/websocket/types.ts +++ b/z_ele/src/plugins/websocket/types.ts @@ -10,10 +10,9 @@ export enum WsSystemEvent { LOCK_CLIENT = 'lockClient' } - export enum WsSendEventType { BIND_CONNECT_ID = 'bind_connect_id', - LOCK_CLIENT_SCREEN = 'lock_client_screen', + LOCK_CLIENT_SCREEN = 'lock_client_screen' } export enum WsConnectionStatus { @@ -27,7 +26,8 @@ export enum WsMessageType { INCOMING = 'incoming', OUTGOING = 'outgoing', SYSTEM = 'system', - SCRIPT = 'script' + SCRIPT = 'script', + PING = 'ping' } export interface WsMessage { @@ -68,7 +68,7 @@ export interface WsInstance { connectSocket: () => void; disconnectSocket: () => void; /** 发送系统消息(跟踪系统事件) **/ - sendSystemMessage: (event: WsSystemEvent, data: any) => void; + sendSystemMessage: (event: WsSendEventType, data: any) => boolean; sendMessage: (event: WsSendEventType, data: any) => void; clearMessages: () => void; diff --git a/z_ele/src/views/system/composer/package/index.vue b/z_ele/src/views/system/composer/package/index.vue new file mode 100644 index 0000000..7bb0639 --- /dev/null +++ b/z_ele/src/views/system/composer/package/index.vue @@ -0,0 +1,87 @@ + + +