113 lines
2.0 KiB
TypeScript
113 lines
2.0 KiB
TypeScript
![]() |
import { defineStore } from 'pinia'
|
||
|
|
||
|
/**
|
||
|
* 表结构信息
|
||
|
*/
|
||
|
export interface Structure {
|
||
|
field: string
|
||
|
label: string
|
||
|
form_component: string
|
||
|
list: boolean
|
||
|
form: boolean
|
||
|
search: boolean
|
||
|
search_op: string
|
||
|
validates: string[]
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* CodeGen
|
||
|
*/
|
||
|
export interface CodeGen {
|
||
|
module: string
|
||
|
controller: string
|
||
|
model: string
|
||
|
paginate: true
|
||
|
schema: string
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* generate
|
||
|
*/
|
||
|
interface generate {
|
||
|
schemaId: number
|
||
|
structures: Structure[]
|
||
|
codeGen: CodeGen
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* useGenerateStore
|
||
|
*/
|
||
|
export const useGenerateStore = defineStore('generateStore', {
|
||
|
state(): generate {
|
||
|
return {
|
||
|
// schema id
|
||
|
schemaId: 0,
|
||
|
// structures
|
||
|
structures: [] as Structure[],
|
||
|
// codeGen
|
||
|
codeGen: Object.assign({
|
||
|
module: '',
|
||
|
controller: '',
|
||
|
model: '',
|
||
|
paginate: true,
|
||
|
schema: '',
|
||
|
}),
|
||
|
}
|
||
|
},
|
||
|
|
||
|
// store getters
|
||
|
getters: {
|
||
|
getSchemaId(): any {
|
||
|
return this.schemaId
|
||
|
},
|
||
|
|
||
|
getStructures(): Structure[] {
|
||
|
return this.structures
|
||
|
},
|
||
|
|
||
|
getCodeGen(): CodeGen {
|
||
|
return this.codeGen
|
||
|
},
|
||
|
},
|
||
|
|
||
|
// store actions
|
||
|
actions: {
|
||
|
// set schema
|
||
|
setSchemaId(schemaId: any): void {
|
||
|
this.schemaId = schemaId
|
||
|
},
|
||
|
// reset
|
||
|
resetStructures(): void {
|
||
|
this.structures = []
|
||
|
},
|
||
|
// filter structures
|
||
|
filterStructures(field: string) {
|
||
|
this.structures = this.structures.filter((s: Structure) => {
|
||
|
return !(s.field === field)
|
||
|
})
|
||
|
},
|
||
|
|
||
|
// init structure
|
||
|
initStructures(fields: Array<any>): void {
|
||
|
const unSupportFields = ['deleted_at', 'creator_id']
|
||
|
|
||
|
fields.forEach(field => {
|
||
|
if (!unSupportFields.includes(field.name)) {
|
||
|
this.structures.push(
|
||
|
Object.assign({
|
||
|
field: field.name,
|
||
|
label: '',
|
||
|
form_component: 'input',
|
||
|
list: true,
|
||
|
form: true,
|
||
|
search: false,
|
||
|
search_op: '',
|
||
|
validates: [],
|
||
|
}),
|
||
|
)
|
||
|
}
|
||
|
})
|
||
|
},
|
||
|
},
|
||
|
})
|