404 lines
15 KiB
TypeScript
404 lines
15 KiB
TypeScript
import { delay, http, HttpResponse } from '@lingshu/vite-plugin-msw/msw';
|
|
|
|
function num(limit: number, base = 1) {
|
|
return Math.floor(Math.random() * limit + base);
|
|
}
|
|
|
|
async function getPostParams(req: any) {
|
|
const reader = req.request.body.getReader();
|
|
let result = '';
|
|
while (true) {
|
|
const { done, value } = await reader.read();
|
|
if (done) {
|
|
break;
|
|
}
|
|
result += new TextDecoder().decode(value);
|
|
}
|
|
return JSON.parse(result);
|
|
}
|
|
|
|
let number = 0;
|
|
|
|
const handlers = [
|
|
// 分页获取插件列表
|
|
http.post('/api/lcdp/v1/plugin/page', () => {
|
|
const records = Array.from({ length: 50 }).map((_, i) => {
|
|
return {
|
|
id: `1917513599163318273${i}`,
|
|
pluginId: `pluginId${i}`,
|
|
pluginClass: `cn.cisidigital.lishu.lcdp.plugin.component.cuscaseguide.pluginClass${i}`,
|
|
semanticVersion: `semanticVersion${i}`,
|
|
status: num(3, 0),
|
|
fileMd5: `fileMd5${i}`,
|
|
description: {
|
|
'zh-CN': 'description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001n曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001n曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001n曾鹏业务流程001description曾鹏业务流程001descri',
|
|
},
|
|
releaseTime: new Date().valueOf() + i * 100000,
|
|
releaseBy: 'admin',
|
|
};
|
|
});
|
|
return HttpResponse.json({
|
|
code: '0',
|
|
message: null,
|
|
data: {
|
|
current: '1',
|
|
size: '99999',
|
|
total: records.length,
|
|
pages: '2',
|
|
records,
|
|
},
|
|
error: null,
|
|
success: true,
|
|
});
|
|
}),
|
|
// 解析插件
|
|
http.post('/api/lcdp/v1/plugin/parse', () => {
|
|
return HttpResponse.json({
|
|
code: '0',
|
|
message: '解析失败在当前属性下面提示“解析失败,请重新上传”',
|
|
// data:null,
|
|
data: {
|
|
pluginId: `pluginId-pluginId-pluginIdpluginId-pluginId-pluginId-pluginId${1}`, // 插件ID(插件编码)
|
|
pluginClass: `cn.cisidigital.lishu.lcdp.plugin.component.cuscaseguide.pluginClass${100}`,
|
|
semanticVersion: `semanticVersionstringsemanticVersionstringsemanticVersionstring${1}`, // 插件版本号
|
|
fileMd5: `fileMd5fileMd5fileMd5fileMd5fileMd5fileMd5fileMd5fileMd5${1}`, // 文件md5
|
|
extensions: Array.from({ length: 20 }).map((_, index) => {
|
|
return {
|
|
extensionName: { // 业务模型名称-多语言字段
|
|
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${index}`,
|
|
}, // 扩展名称
|
|
extensionId: `extensionIdextensionIdextensionIdextensionIdextensionIdextensionIdextensionIdextensionId${index}`, // 扩展编码
|
|
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
|
|
extensionClass: `extensionClassextensionClassextensionClassextensionClassextensionClass${index}`, // 扩展实现类
|
|
};
|
|
}),
|
|
},
|
|
error: null,
|
|
success: true,
|
|
});
|
|
}),
|
|
// 保存插件
|
|
http.post('/api/lcdp/v1/plugin/save', () => {
|
|
return HttpResponse.json({
|
|
code: '0',
|
|
message: null,
|
|
data: null,
|
|
error: null,
|
|
success: true,
|
|
});
|
|
}),
|
|
// 获取插件详情
|
|
http.get('/api/lcdp/v1/plugin/detail', () => {
|
|
return HttpResponse.json({
|
|
code: '0',
|
|
message: null,
|
|
data: {
|
|
jarName: 'jarName', // 插件jar包名称
|
|
fileId: '1937473726949945346', // 插件文件ID
|
|
createTime: new Date().valueOf() + 60 * 100000, // 创建时间戳
|
|
updateTime: new Date().valueOf() + 240 * 100000, // 更新时间戳
|
|
createBy: 'createBy', // 创建人
|
|
updateBy: 'updateBy', // 更新人
|
|
offlineTime: new Date().valueOf() + 20 * 100000, // 下线时间戳
|
|
offlineBy: 'offlineBy', // 下线人
|
|
extensions: [
|
|
{
|
|
extensionName: { // 扩展名称
|
|
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${1}`,
|
|
},
|
|
extensionId: 'extensionId', // 扩展编码
|
|
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
|
|
extensionClass: 'extensionClass', // 扩展实现类
|
|
},
|
|
{
|
|
extensionName: { // 扩展名称
|
|
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${2}`,
|
|
},
|
|
extensionId: 'extensionId2', // 扩展编码
|
|
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
|
|
extensionClass: 'extensionClass2', // 扩展实现类
|
|
},
|
|
{
|
|
extensionName: { // 扩展名称
|
|
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${2}`,
|
|
},
|
|
extensionId: 'extensionId2', // 扩展编码
|
|
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
|
|
extensionClass: 'extensionClass2', // 扩展实现类
|
|
},
|
|
{
|
|
extensionName: { // 扩展名称
|
|
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${2}`,
|
|
},
|
|
extensionId: 'extensionId2', // 扩展编码
|
|
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
|
|
extensionClass: 'extensionClass2', // 扩展实现类
|
|
},
|
|
{
|
|
extensionName: { // 扩展名称
|
|
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${2}`,
|
|
},
|
|
extensionId: 'extensionId2', // 扩展编码
|
|
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
|
|
extensionClass: 'extensionClass2', // 扩展实现类
|
|
},
|
|
{
|
|
extensionName: { // 扩展名称
|
|
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${2}`,
|
|
},
|
|
extensionId: 'extensionId2', // 扩展编码
|
|
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
|
|
extensionClass: 'extensionClass2', // 扩展实现类
|
|
},
|
|
], // 扩展类列表
|
|
extensionRefs: Array.from({ length: 20 }).map((_, index) => {
|
|
if (index % 2 === 0) {
|
|
return {
|
|
extensionName: { // 扩展名称
|
|
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${index}`,
|
|
},
|
|
extensionId: 'extensionId', // 扩展编码
|
|
extensionType: 1, // 扩展类型: 1-操作,2-自定义组件
|
|
extensionClass: 'extensionClass.extensionClass.extensionClass.extensionClass.extensionClass.extensionClass.extensionClassextensionClassextensionClass.extensionClass', // 扩展实现类
|
|
refJumpPath: 'string',
|
|
refPath: { // 引用位置(名称路径,用于展示),以 / 分隔
|
|
modelName: { // 业务模型名称-多语言字段
|
|
'zh-CN': '示例模型',
|
|
},
|
|
operationName: { // 业务操作名称-多语言字段
|
|
'zh-CN': '自定义',
|
|
},
|
|
action: '自定义(custom)', // 绑定动作
|
|
},
|
|
/**
|
|
* 鼠标悬停显示内容,json字符串,前端直接将json内容展示即可
|
|
例:
|
|
1、操作
|
|
{
|
|
"业务模型名称": "示例模型",
|
|
"业务模型编码": "example_model",
|
|
"业务操作名称": "自定义",
|
|
"业务操作编码": "custom",
|
|
"绑定动作": "自定义(custom)"
|
|
}
|
|
2、自定义组件
|
|
{
|
|
"组件名称": "操作指引组件",
|
|
"组件编码": "customop"
|
|
}
|
|
*/
|
|
hoverContent: JSON.stringify({
|
|
modelName: { // 业务模型名称-多语言字段
|
|
'zh-CN': '示例模型',
|
|
},
|
|
modelCode: 'example_model',
|
|
operationName: { // 业务模型名称-多语言字段
|
|
'zh-CN': '自定义',
|
|
},
|
|
operationCode: 'custom',
|
|
action: '自定义(custom)',
|
|
}),
|
|
operateBy: 'operateBy', // 配置人
|
|
operateTime: new Date().valueOf() + 200 * 100000, // 配置时间戳
|
|
pluginId: `pluginId${1}`, // 插件ID(插件编码)
|
|
pluginClass: `pluginClassstring${1}`, // 插件类
|
|
semanticVersion: `semanticVersionstring${1}`, // 插件版本号
|
|
fileMd5: `fileMd5${1}`, // 文件md5
|
|
extensions: {
|
|
extensionName: { // 扩展名称
|
|
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${index}`,
|
|
},
|
|
extensionId: `extensionId${1}`, // 扩展编码
|
|
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
|
|
extensionClass: `extensionClass${1}`, // 扩展实现类
|
|
},
|
|
};
|
|
} else {
|
|
return {
|
|
extensionName: { // 扩展名称
|
|
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${index}`,
|
|
},
|
|
extensionId: 'extensionId', // 扩展编码
|
|
extensionType: 2, // 扩展类型: 1-操作,2-自定义组件
|
|
extensionClass: 'extensionClass', // 扩展实现类
|
|
refJumpPath: 'string',
|
|
refPath: {
|
|
componentName: { // 扩展名称
|
|
'zh-CN': '操作指引组件',
|
|
},
|
|
}, // 引用位置(名称路径,用于展示),以 / 分隔
|
|
/**
|
|
* 鼠标悬停显示内容,json字符串,前端直接将json内容展示即可
|
|
例:
|
|
1、操作
|
|
{
|
|
"业务模型名称": "示例模型",
|
|
"业务模型编码": "example_model",
|
|
"业务操作名称": "自定义",
|
|
"业务操作编码": "custom",
|
|
"绑定动作": "自定义(custom)"
|
|
}
|
|
2、自定义组件
|
|
{
|
|
"组件名称": "操作指引组件",
|
|
"组件编码": "customop"
|
|
}
|
|
*/
|
|
hoverContent: JSON.stringify({
|
|
componentName: { // 业务模型名称-多语言字段
|
|
'zh-CN': '自定义',
|
|
},
|
|
componentCode: 'customop',
|
|
}),
|
|
operateBy: 'operateBy', // 配置人
|
|
operateTime: new Date().valueOf() + 200 * 100000, // 配置时间戳
|
|
pluginId: `pluginId${2}`, // 插件ID(插件编码)
|
|
pluginClass: `pluginClassstring${2}`, // 插件类
|
|
semanticVersion: `semanticVersionstring${2}`, // 插件版本号
|
|
fileMd5: `fileMd5${2}`, // 文件md5
|
|
};
|
|
}
|
|
}),
|
|
},
|
|
error: null,
|
|
success: true,
|
|
});
|
|
}),
|
|
// 编辑/热更新插件
|
|
http.post('/api/lcdp/v1/plugin/update', () => {
|
|
return HttpResponse.json({
|
|
code: '0',
|
|
message: null,
|
|
data: null,
|
|
error: null,
|
|
success: true,
|
|
});
|
|
}),
|
|
// 发布插件
|
|
http.post('/api/lcdp/v1/plugin/release', () => {
|
|
return HttpResponse.json({
|
|
code: '0',
|
|
message: null,
|
|
data: null,
|
|
error: null,
|
|
success: true,
|
|
});
|
|
}),
|
|
// 下线插件
|
|
http.post('/api/lcdp/v1/plugin/offline', () => {
|
|
return HttpResponse.json({
|
|
code: '0',
|
|
message: null,
|
|
data: null,
|
|
error: null,
|
|
success: true,
|
|
});
|
|
}),
|
|
// 删除插件
|
|
http.post('/api/lcdp/v1/plugin/delete', () => {
|
|
return HttpResponse.json({
|
|
code: '0',
|
|
message: null,
|
|
data: null,
|
|
error: null,
|
|
success: true,
|
|
});
|
|
}),
|
|
// 应用
|
|
http.post('分页获取插件下拉列表', () => {
|
|
const records = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((i) => {
|
|
return {
|
|
pluginId: `pluginId${i}`,
|
|
pluginClass: `pluginClass${i}`,
|
|
semanticVersion: `semanticVersion${i}`,
|
|
status: num(3),
|
|
extensions: {
|
|
extensionName: `extensionName${1}`, // 扩展名称
|
|
extensionId: `extensionId${1}`, // 扩展编码
|
|
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
|
|
extensionClass: `extensionClass${1}`, // 扩展实现类
|
|
},
|
|
};
|
|
});
|
|
return HttpResponse.json({
|
|
code: '0',
|
|
message: null,
|
|
data: {
|
|
current: '1',
|
|
size: '50',
|
|
total: '1',
|
|
pages: '1',
|
|
records,
|
|
},
|
|
error: null,
|
|
success: true,
|
|
});
|
|
}),
|
|
http.post('/api/lcdp/v1/file/meta', () => {
|
|
return HttpResponse.json({
|
|
code: '0',
|
|
message: null,
|
|
data: [
|
|
{
|
|
id: '1942393678339399682',
|
|
filename: 'CssImport111.zip',
|
|
module: 'component',
|
|
key: 'lingshu/lcdp/component/upload/0M8JE93KZ0MKR/CssImport.zip',
|
|
contentLength: '32481',
|
|
contentType: 'application/x-zip-compressed',
|
|
},
|
|
],
|
|
error: null,
|
|
success: true,
|
|
});
|
|
}),
|
|
// 分页获取插件列表
|
|
http.post('/api/lcdp/v1/plugin/page-select', async (req: any) => {
|
|
const params = await getPostParams(req);
|
|
number = params.current;
|
|
const records = Array.from({ length: 10 }).map((_, i) => {
|
|
const nums = i + 1 + ((number - 1) * 10);
|
|
return {
|
|
pluginId: i === 1 ? `pluginId.pluginId.pluginId.pluginId.pluginId${nums}` : `pluginId${nums}`,
|
|
pluginClass: `cn.cisidigital.lishu.lcdp.plugin.component.cuscaseguide.pluginClass${nums}`,
|
|
semanticVersion: `semanticVersion${nums}`,
|
|
status: num(3, 0),
|
|
extensions: Array.from({ length: 20 }).map((_, index) => {
|
|
return {
|
|
extensionName: { // 业务模型名称-多语言字段
|
|
'zh-CN': `extensionName${nums}-${index}`,
|
|
}, // 扩展名称
|
|
extensionId: `extensionId${nums}-${index}`, // 扩展编码
|
|
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
|
|
extensionClass: `extensionClassextensionClassextensionClassextensionClassextensionClass${index}`, // 扩展实现类
|
|
};
|
|
}),
|
|
fileMd5: `fileMd5${nums}`,
|
|
|
|
};
|
|
});
|
|
await delay(2000);
|
|
return HttpResponse.json({
|
|
code: '0',
|
|
message: null,
|
|
data: {
|
|
// current: 1,
|
|
// size: 50,
|
|
// total: 0,
|
|
// pages: 0,
|
|
// records:[],
|
|
|
|
current: number,
|
|
size: 50,
|
|
total: 0,
|
|
pages: 5,
|
|
records,
|
|
},
|
|
error: null,
|
|
success: true,
|
|
});
|
|
}),
|
|
];
|
|
|
|
export default handlers;
|