!115 czh-20260725-更新测试页面为sendBatch风格
* czh-20260725-更新测试页面为sendBatch风格 * czh-20260724-增补意见即时通推送前端回显
This commit is contained in:
@@ -4,8 +4,8 @@
|
||||
<a-form :label-col="{ span: 4 }" :wrapper-col="{ span: 18 }">
|
||||
<a-divider orientation="left">即时通连接配置</a-divider>
|
||||
<a-form-item label="API 地址(host)">
|
||||
<a-input v-model:value="formData.host" placeholder="http://localhost:17072" />
|
||||
<span style="color: #8c8c8c; font-size: 12px; margin-left: 8px">即时通服务器地址,含端口号</span>
|
||||
<a-input v-model:value="formData.host" placeholder="http://localhost:19010" />
|
||||
<span style="color: #8c8c8c; font-size: 12px; margin-left: 8px">即时通 sendBatch 接口地址,含端口号</span>
|
||||
</a-form-item>
|
||||
<a-form-item label="应用ID(appId)">
|
||||
<a-input v-model:value="formData.appId" placeholder="test-app" />
|
||||
@@ -16,18 +16,18 @@
|
||||
|
||||
<a-divider orientation="left">消息内容</a-divider>
|
||||
<a-form-item label="用户标识类型">
|
||||
<a-input v-model:value="formData.toUserKeyType" placeholder="Email" />
|
||||
<span style="color: #8c8c8c; font-size: 12px; margin-left: 8px">如 Email、Phone 等,对应即时通用户关联类型</span>
|
||||
<a-input v-model:value="formData.toUserKeyType" placeholder="Account" />
|
||||
<span style="color: #8c8c8c; font-size: 12px; margin-left: 8px">Account(工号)/ Email 等,对应即时通用户标识类型</span>
|
||||
</a-form-item>
|
||||
<a-form-item label="用户标识值(批量)">
|
||||
<a-input v-model:value="formData.toUserValueList" placeholder="user1@x.com, user2@x.com" />
|
||||
<span style="color: #8c8c8c; font-size: 12px; margin-left: 8px">逗号分隔,支持单个或多个接收人</span>
|
||||
<a-input v-model:value="formData.toUserValueList" placeholder="sld_01, bgs_02" />
|
||||
<span style="color: #8c8c8c; font-size: 12px; margin-left: 8px">逗号分隔多个接收人工号(sendBatch)</span>
|
||||
</a-form-item>
|
||||
<a-form-item label="消息标题">
|
||||
<a-input v-model:value="formData.title" placeholder="测试消息标题" />
|
||||
<a-input v-model:value="formData.title" placeholder="批量推送消息标题" />
|
||||
</a-form-item>
|
||||
<a-form-item label="消息内容">
|
||||
<a-textarea v-model:value="formData.content" placeholder="测试消息正文" :rows="3" />
|
||||
<a-textarea v-model:value="formData.content" placeholder="批量推送消息正文" :rows="3" />
|
||||
</a-form-item>
|
||||
<a-form-item label="链接地址(可选)">
|
||||
<a-input v-model:value="formData.linkUrl" placeholder="http://localhost:3100/semri/task" />
|
||||
@@ -62,7 +62,7 @@
|
||||
</a-form>
|
||||
</a-card>
|
||||
|
||||
<a-card title="完整请求(Request)" style="margin-bottom: 16px">
|
||||
<a-card title="发送请求(sendBatch)" style="margin-bottom: 16px">
|
||||
<a-descriptions :column="1" size="small" bordered>
|
||||
<a-descriptions-item label="Token 请求 URL">
|
||||
<code>{{ requestInfo.tokenRequestUrl || '(未发送)' }}</code>
|
||||
@@ -70,16 +70,16 @@
|
||||
<a-descriptions-item label="Token 请求体">
|
||||
<pre class="json-block">{{ formatJson(requestInfo.tokenRequestBody) }}</pre>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="消息请求 URL">
|
||||
<a-descriptions-item label="sendBatch 请求 URL">
|
||||
<code>{{ requestInfo.msgRequestUrl || '(未发送)' }}</code>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="消息请求体">
|
||||
<a-descriptions-item label="sendBatch 请求体">
|
||||
<pre class="json-block">{{ formatJson(requestInfo.msgRequestBody) }}</pre>
|
||||
</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
</a-card>
|
||||
|
||||
<a-card title="完整响应(Response)" style="margin-bottom: 16px">
|
||||
<a-card title="发送响应(Response)" style="margin-bottom: 16px">
|
||||
<a-space direction="vertical" style="width: 100%">
|
||||
<div v-if="responseInfo.success === true" style="margin-bottom: 8px">
|
||||
<a-tag color="green">发送成功</a-tag>
|
||||
@@ -93,7 +93,7 @@
|
||||
<a-descriptions-item label="Token 响应">
|
||||
<pre class="json-block">{{ formatJson(responseInfo.tokenResponse) }}</pre>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="消息响应">
|
||||
<a-descriptions-item label="sendBatch 响应">
|
||||
<pre class="json-block">{{ formatJson(responseInfo.msgResponse) }}</pre>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="状态码">
|
||||
@@ -124,7 +124,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive } from 'vue';
|
||||
import { ref, reactive, onMounted } from 'vue';
|
||||
import { defHttp } from '/@/utils/http/axios';
|
||||
|
||||
const sending = ref(false);
|
||||
@@ -134,10 +134,10 @@ const formData = reactive({
|
||||
host: 'http://localhost:19010',
|
||||
appId: 'test-app',
|
||||
appSecret: 'test-secret',
|
||||
toUserKeyType: 'Email',
|
||||
toUserValueList: 'test@example.com',
|
||||
title: '测试消息',
|
||||
content: '这是一条来自督办系统的测试消息',
|
||||
toUserKeyType: 'Account',
|
||||
toUserValueList: 'test_user_01, test_user_02',
|
||||
title: '批量推送测试消息',
|
||||
content: '这是一条来自督办系统的 sendBatch 测试消息',
|
||||
linkUrl: '',
|
||||
linkTitle: '',
|
||||
linkOpenMode: 'Exe',
|
||||
@@ -168,16 +168,16 @@ function handleFillMock() {
|
||||
formData.host = 'http://localhost:19010';
|
||||
formData.appId = 'test-app';
|
||||
formData.appSecret = 'test-secret';
|
||||
formData.toUserKeyType = 'Email';
|
||||
formData.toUserValueList = 'test@example.com';
|
||||
formData.title = '测试消息';
|
||||
formData.content = '这是一条来自督办系统的测试消息';
|
||||
formData.toUserKeyType = 'Account';
|
||||
formData.toUserValueList = 'test_user_01, test_user_02';
|
||||
formData.title = '批量推送测试消息';
|
||||
formData.content = '这是一条来自督办系统的 sendBatch 测试消息';
|
||||
formData.linkUrl = '';
|
||||
formData.linkTitle = '';
|
||||
formData.linkOpenMode = 'Exe';
|
||||
formData.dataFormat = 'JsonListView';
|
||||
formData.data = '';
|
||||
addLog('info', '已填充 Mock 默认值');
|
||||
addLog('info', '已填充 Mock 默认值(sendBatch)');
|
||||
}
|
||||
|
||||
async function handleSend() {
|
||||
@@ -191,11 +191,10 @@ async function handleSend() {
|
||||
}
|
||||
|
||||
sending.value = true;
|
||||
addLog('info', `开始批量发送消息 → ${formData.host}`);
|
||||
addLog('info', `开始 sendBatch → ${formData.host}`);
|
||||
|
||||
// 清空上次结果
|
||||
Object.keys(requestInfo).forEach(k => delete requestInfo[k]);
|
||||
Object.keys(responseInfo).forEach(k => delete responseInfo[k]);
|
||||
clearDisplayData();
|
||||
|
||||
try {
|
||||
const res = await defHttp.post({
|
||||
@@ -235,20 +234,33 @@ function handleReset() {
|
||||
formData.host = 'http://localhost:19010';
|
||||
formData.appId = 'test-app';
|
||||
formData.appSecret = 'test-secret';
|
||||
formData.toUserKeyType = 'Email';
|
||||
formData.toUserValueList = 'test@example.com';
|
||||
formData.title = '测试消息';
|
||||
formData.content = '这是一条来自督办系统的测试消息';
|
||||
formData.toUserKeyType = 'Account';
|
||||
formData.toUserValueList = 'test_user_01, test_user_02';
|
||||
formData.title = '批量推送测试消息';
|
||||
formData.content = '这是一条来自督办系统的 sendBatch 测试消息';
|
||||
formData.linkUrl = '';
|
||||
formData.linkTitle = '';
|
||||
formData.linkOpenMode = 'Exe';
|
||||
formData.dataFormat = 'JsonListView';
|
||||
formData.data = '';
|
||||
Object.keys(requestInfo).forEach(k => delete requestInfo[k]);
|
||||
Object.keys(responseInfo).forEach(k => delete responseInfo[k]);
|
||||
clearDisplayData();
|
||||
eventLogs.value = [];
|
||||
addLog('info', '表单已重置');
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
clearDisplayData();
|
||||
eventLogs.value = [];
|
||||
});
|
||||
|
||||
function clearDisplayData() {
|
||||
Object.keys(requestInfo).forEach(k => delete requestInfo[k]);
|
||||
Object.keys(responseInfo).forEach(k => delete responseInfo[k]);
|
||||
responseInfo.success = undefined;
|
||||
responseInfo.messageId = undefined;
|
||||
responseInfo.errorMessage = undefined;
|
||||
responseInfo.responseCode = undefined;
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
|
||||
Reference in New Issue
Block a user