feat:Add model management mock (#1795)

This commit is contained in:
lichunn 2026-03-31 19:04:09 +08:00 committed by GitHub
parent ab2f9baac2
commit 06b9cd8bfe
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 211 additions and 54 deletions

View File

@ -529,4 +529,4 @@
"current": 1,
"pages": 1
}
}
}

View File

@ -0,0 +1,2 @@
{"_id":1,"id":5,"createdBy":"1","lastUpdatedBy":"1","tenantId":null,"renterId":null,"siteId":null,"appId":null,"platformId":1,"nameCn":"员工","nameEn":"staff","version":"1.0.0","modelUrl":"https://agent-alpha.opentiny.design/platform-center/api/model-data","parameters":[{"prop":"id","isModel":false,"type":"Number","required":true,"description":"主键","_RID":"row_1"},{"prop":"name","isModel":false,"type":"String","required":true,"description":"姓名","_RID":"row_2"},{"prop":"status","isModel":false,"type":"Enum","options":"[{\"value\":\"1\",\"label\":\"已转正\"},{\"value\":\"0\",\"label\":\"未转正\"}]","required":true,"description":"状态","_RID":"row_3"},{"prop":"test","type":"String","required":false,"description":"","isModel":false,"_RID":"row_4"}],"method":[{"name":"新增方法","nameEn":"insertApi","requestParameters":[{"prop":"nameEn","type":"String"},{"prop":"params","type":"Object","children":[{"prop":"id","isModel":false,"type":"Number","required":true,"description":"主键"},{"prop":"name","isModel":false,"type":"String","required":true,"description":"姓名"},{"prop":"status","isModel":false,"type":"Enum","options":"[{\"value\":\"1\",\"label\":\"已转正\"},{\"value\":\"0\",\"label\":\"未转正\"}]","required":true,"description":"状态"},{"prop":"test","type":"String","required":false,"description":""}]}],"responseParameters":[{"prop":"code","type":"Number"},{"prop":"message","type":"String"},{"prop":"data","type":"Enum"}]},{"name":"修改方法","nameEn":"updateApi","requestParameters":[{"prop":"nameEn","type":"String"},{"prop":"data","type":"Object","children":[{"prop":"id","isModel":false,"type":"Number","required":true,"description":"主键"},{"prop":"name","isModel":false,"type":"String","required":true,"description":"姓名"},{"prop":"status","isModel":false,"type":"Enum","options":"[{\"value\":\"1\",\"label\":\"已转正\"},{\"value\":\"0\",\"label\":\"未转正\"}]","required":true,"description":"状态"},{"prop":"test","type":"String","required":false,"description":""}]},{"prop":"params","type":"Object","children":[{"prop":"id","isModel":false,"type":"Number","required":true,"description":"主键"},{"prop":"name","isModel":false,"type":"String","required":true,"description":"姓名"},{"prop":"status","isModel":false,"type":"Enum","options":"[{\"value\":\"1\",\"label\":\"已转正\"},{\"value\":\"0\",\"label\":\"未转正\"}]","required":true,"description":"状态"},{"prop":"test","type":"String","required":false,"description":""}]}],"responseParameters":[{"prop":"code","type":"Number"},{"prop":"message","type":"String"},{"prop":"data","type":"Enum"}]},{"name":"查询方法","nameEn":"queryApi","requestParameters":[{"prop":"nameEn","type":"String"},{"prop":"currentPage","type":"Number"},{"prop":"pageSize","type":"Number"},{"prop":"nameCn","type":"String"},{"prop":"params","type":"Object","children":[{"prop":"id","isModel":false,"type":"Number","required":true,"description":"主键"},{"prop":"name","isModel":false,"type":"String","required":true,"description":"姓名"},{"prop":"status","isModel":false,"type":"Enum","options":"[{\"value\":\"1\",\"label\":\"已转正\"},{\"value\":\"0\",\"label\":\"未转正\"}]","required":true,"description":"状态"},{"prop":"test","type":"String","required":false,"description":""}]}],"responseParameters":[{"prop":"total","type":"Number"},{"prop":"code","type":"Number"},{"prop":"message","type":"String"},{"prop":"data","type":"Enum"}]},{"name":"删除方法","nameEn":"deleteApi","requestParameters":[{"prop":"nameEn","type":"String"},{"prop":"id","type":"Number"}],"responseParameters":[{"prop":"code","type":"Number"},{"prop":"message","type":"String"},{"prop":"data","type":"Enum"}]}],"description":"1112","created_at":"2026-01-27 10:41:10","updated_at":"2026-01-27 10:41:10"}
{"_id":2,"id":6,"createdBy":"11","lastUpdatedBy":"11","tenantId":null,"renterId":null,"siteId":null,"appId":null,"platformId":1,"nameCn":"用户","nameEn":"user","version":"1.0.0","modelUrl":"https://agent-alpha.opentiny.design/platform-center/api","parameters":[{"prop":"name","type":"String","required":false,"description":""},{"prop":"age","type":"Number","required":false,"description":""}],"method":[{"name":"新增方法","nameEn":"insertApi","requestParameters":[{"prop":"nameEn","type":"String"},{"prop":"params","type":"Object","children":[{"prop":"name","type":"String","required":false,"description":""},{"prop":"age","type":"Number","required":false,"description":""}]}],"responseParameters":[{"prop":"code","type":"Number"},{"prop":"message","type":"String"},{"prop":"data","type":"Enum"}]},{"name":"修改方法","nameEn":"updateApi","requestParameters":[{"prop":"nameEn","type":"String"},{"prop":"data","type":"Object","children":[{"prop":"name","type":"String","required":false,"description":""},{"prop":"age","type":"Number","required":false,"description":""}]},{"prop":"params","type":"Object","children":[{"prop":"name","type":"String","required":false,"description":""},{"prop":"age","type":"Number","required":false,"description":""}]}],"responseParameters":[{"prop":"code","type":"Number"},{"prop":"message","type":"String"},{"prop":"data","type":"Enum"}]},{"name":"查询方法","nameEn":"queryApi","requestParameters":[{"prop":"nameEn","type":"String"},{"prop":"currentPage","type":"Number"},{"prop":"pageSize","type":"Number"},{"prop":"nameCn","type":"String"},{"prop":"params","type":"Object","children":[{"prop":"name","type":"String","required":false,"description":""},{"prop":"age","type":"Number","required":false,"description":""}]}],"responseParameters":[{"prop":"total","type":"Number"},{"prop":"code","type":"Number"},{"prop":"message","type":"String"},{"prop":"data","type":"Enum"}]},{"name":"删除方法","nameEn":"deleteApi","requestParameters":[{"prop":"nameEn","type":"String"},{"prop":"id","type":"Number"}],"responseParameters":[{"prop":"code","type":"Number"},{"prop":"message","type":"String"},{"prop":"data","type":"Enum"}]}],"description":"","created_at":"2026-01-29 03:00:21","updated_at":"2026-01-29 03:00:21"}

View File

@ -10,22 +10,51 @@
*
*/
import { getResponseData } from '../tool/Common'
import modelList from '../assets/json/model.json'
import DateStore from '@seald-io/nedb'
import { getDatabasePath, getResponseData } from '../tool/Common'
const defaultModel = {
createdBy: '86',
lastUpdatedBy: '86',
createdBy: '1',
lastUpdatedBy: '1',
tenantId: null,
renterId: null,
siteId: null,
appId: null,
platformId: 1,
nameCn: 'test',
nameEn: 'test',
nameCn: '',
nameEn: '',
version: '1.0.0',
modelUrl: '1',
parameters: [],
modelUrl: 'https://agent-alpha.opentiny.design/platform-center/api/model-data',
parameters: [
{
prop: 'id',
isModel: false,
type: 'Number',
required: true,
description: '主键'
},
{
prop: 'name',
isModel: false,
type: 'String',
required: true,
description: '姓名'
},
{
prop: 'status',
isModel: false,
type: 'Enum',
options: '[{"value":"1","label":"已转正"},{"value":"0","label":"未转正"}]',
required: true,
description: '状态'
},
{
prop: 'test',
type: 'String',
required: false,
description: ''
}
],
method: [
{
name: '新增方法',
@ -33,13 +62,41 @@ const defaultModel = {
requestParameters: [
{
prop: 'nameEn',
type: 'String',
children: null
type: 'String'
},
{
prop: 'params',
type: 'Object',
children: []
children: [
{
prop: 'id',
isModel: false,
type: 'Number',
required: true,
description: '主键'
},
{
prop: 'name',
isModel: false,
type: 'String',
required: true,
description: '姓名'
},
{
prop: 'status',
isModel: false,
type: 'Enum',
options: '[{"value":"1","label":"已转正"},{"value":"0","label":"未转正"}]',
required: true,
description: '状态'
},
{
prop: 'test',
type: 'String',
required: false,
description: ''
}
]
}
],
responseParameters: [
@ -63,18 +120,75 @@ const defaultModel = {
requestParameters: [
{
prop: 'nameEn',
type: 'String',
children: null
type: 'String'
},
{
prop: 'data',
type: 'Object',
children: []
children: [
{
prop: 'id',
isModel: false,
type: 'Number',
required: true,
description: '主键'
},
{
prop: 'name',
isModel: false,
type: 'String',
required: true,
description: '姓名'
},
{
prop: 'status',
isModel: false,
type: 'Enum',
options: '[{"value":"1","label":"已转正"},{"value":"0","label":"未转正"}]',
required: true,
description: '状态'
},
{
prop: 'test',
type: 'String',
required: false,
description: ''
}
]
},
{
prop: 'params',
type: 'Object',
children: []
children: [
{
prop: 'id',
isModel: false,
type: 'Number',
required: true,
description: '主键'
},
{
prop: 'name',
isModel: false,
type: 'String',
required: true,
description: '姓名'
},
{
prop: 'status',
isModel: false,
type: 'Enum',
options: '[{"value":"1","label":"已转正"},{"value":"0","label":"未转正"}]',
required: true,
description: '状态'
},
{
prop: 'test',
type: 'String',
required: false,
description: ''
}
]
}
],
responseParameters: [
@ -98,28 +212,53 @@ const defaultModel = {
requestParameters: [
{
prop: 'nameEn',
type: 'String',
children: null
type: 'String'
},
{
prop: 'currentPage',
type: 'Number',
children: null
type: 'Number'
},
{
prop: 'pageSize',
type: 'Number',
children: null
type: 'Number'
},
{
prop: 'nameCn',
type: 'String',
children: null
type: 'String'
},
{
prop: 'params',
type: 'Object',
children: []
children: [
{
prop: 'id',
isModel: false,
type: 'Number',
required: true,
description: '主键'
},
{
prop: 'name',
isModel: false,
type: 'String',
required: true,
description: '姓名'
},
{
prop: 'status',
isModel: false,
type: 'Enum',
options: '[{"value":"1","label":"已转正"},{"value":"0","label":"未转正"}]',
required: true,
description: '状态'
},
{
prop: 'test',
type: 'String',
required: false,
description: ''
}
]
}
],
responseParameters: [
@ -147,13 +286,11 @@ const defaultModel = {
requestParameters: [
{
prop: 'nameEn',
type: 'String',
children: null
type: 'String'
},
{
prop: 'id',
type: 'Number',
children: null
type: 'Number'
}
],
responseParameters: [
@ -172,49 +309,56 @@ const defaultModel = {
]
}
],
description: '',
created_at: '2026-01-30 04:34:25',
updated_at: '2026-01-30 04:34:25'
description: ''
}
export default class AppsService {
export default class ModelService {
constructor() {
this.modelList = modelList
this.db = new DateStore({
filename: getDatabasePath('model.db'),
autoload: true
})
this.db.ensureIndex({
fieldName: '_id',
unique: true
})
this.modelList = []
}
async create(params) {
let mockId =
this.modelList.data.records.length > 0 ? Math.max(...this.modelList.data.records.map((item) => item.id)) + 1 : 3
let mockId = this.modelList.length > 0 ? Math.max(...this.modelList.map((item) => item.id)) + 1 : 3
const newModel = {
...defaultModel,
id: mockId++,
created_at: new Date().toISOString(),
updated_at: new Date().toISOString(),
...params
}
this.modelList.data.records.push(newModel)
return getResponseData(newModel)
this.db.insert(newModel)
this.modelList.push(newModel)
return getResponseData({ records: this.modelList })
}
async delete(id) {
this.modelList.data.records = this.modelList.data.records.filter((item) => Number(item.id) !== Number(id))
const result = await this.db.findOneAsync({ id: Number(id) })
await this.db.removeAsync({ id: Number(id) })
return getResponseData(this.modelList.data)
return getResponseData(result)
}
async list() {
return getResponseData(this.modelList.data)
this.modelList = await this.db.findAsync()
return getResponseData({ records: this.modelList })
}
async update(id, params) {
const index = this.modelList.data.records.findIndex((item) => Number(item.id) === Number(id))
if (index === -1) {
return getResponseData({ success: false, message: '未找到应用' })
}
await this.db.updateAsync({ id: Number(id) }, { $set: params })
const result = await this.db.findOneAsync({ id: Number(id) })
this.modelList.data.records[index] = {
...this.modelList.data.records[index],
...params
}
return getResponseData(this.modelList.data.records[index])
return getResponseData(result)
}
}

View File

@ -277,7 +277,7 @@ export default {
.life-cycle-tips {
color: var(--te-component-common-text-color-weaken);
margin: 4px 0 0;
height: 16px;
height: 30px;
line-height: 16px;
}
.life-cycle-content-list {

View File

@ -61,8 +61,8 @@
</block-event>
</div>
</tiny-collapse-item>
<tiny-collapse-item title="生命周期设置" name="lifeCycle">
<div class="life-cycles-container">
<tiny-collapse-item class="life-cycles-container" title="生命周期设置" name="lifeCycle">
<div>
<life-cycles :isPage="false" :bindLifeCycles="state.bindLifeCycles" @bind="bindLifeCycles"></life-cycles>
</div>
</tiny-collapse-item>
@ -380,4 +380,9 @@ export default {
padding: 0 12px 12px;
}
}
.life-cycles-container {
:deep(.tiny-collapse-item__content) {
margin-bottom: 4px;
}
}
</style>

View File

@ -498,4 +498,10 @@ export default {
padding: 0 12px 12px;
}
}
.input-output {
:deep(.tiny-collapse-item__content) {
margin-bottom: 4px;
}
}
</style>