!115 czh-20260725-更新测试页面为sendBatch风格

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