parent
eeb9c839f9
commit
249179ce44
@ -1,3 +1,16 @@ |
|||||||
|
/* |
||||||
|
* @Author: 卜启缘 |
||||||
|
* @Date: 2021-04-22 02:10:31 |
||||||
|
* @LastEditTime: 2021-06-27 14:58:03 |
||||||
|
* @LastEditors: 卜启缘 |
||||||
|
* @Description: 按需导入element-plus |
||||||
|
* @FilePath: \vite-vue3-lowcode\src\plugins\element-plus.ts |
||||||
|
*/ |
||||||
import 'element-plus/packages/theme-chalk/src/base.scss' |
import 'element-plus/packages/theme-chalk/src/base.scss' |
||||||
// import 'element-plus/lib/theme-chalk/index.css'
|
// import 'element-plus/lib/theme-chalk/index.css'
|
||||||
// import 'element-plus/lib/theme-chalk/el-popper.css'
|
// import 'element-plus/lib/theme-chalk/el-popper.css'
|
||||||
|
import type { App } from 'vue' |
||||||
|
import { ElInfiniteScroll } from 'element-plus' |
||||||
|
export const setupElementPlus = (app: App) => { |
||||||
|
app.use(ElInfiniteScroll) |
||||||
|
} |
||||||
|
@ -0,0 +1,113 @@ |
|||||||
|
/* |
||||||
|
* @Author: 卜启缘 |
||||||
|
* @Date: 2021-06-27 13:15:19 |
||||||
|
* @LastEditTime: 2021-06-27 14:17:31 |
||||||
|
* @LastEditors: 卜启缘 |
||||||
|
* @Description: |
||||||
|
* @FilePath: \vite-vue3-lowcode\src\visual-editor\components\left-aside\components\data-source\utils.tsx |
||||||
|
*/ |
||||||
|
import { generateUUID } from '@/visual-editor/utils' |
||||||
|
import type { FetchApiItem } from '@/visual-editor/visual-editor.utils' |
||||||
|
import { RequestEnum } from '@/enums/httpEnum' |
||||||
|
import MonacoEditor from '@/visual-editor/components/common/monaco-editor/MonacoEditor' |
||||||
|
import { useVisualData } from '@/visual-editor/hooks/useVisualData' |
||||||
|
import type { VisualEditorModel } from '@/visual-editor/visual-editor.utils' |
||||||
|
import { useModal } from '@/visual-editor/hooks/useModal' |
||||||
|
import { ElMessage } from 'element-plus' |
||||||
|
|
||||||
|
/** |
||||||
|
* @description 导入丝袜哥 |
||||||
|
* @param {object} swagger 丝袜哥JSON字符串 |
||||||
|
* @returns { apis, models } |
||||||
|
*/ |
||||||
|
export const importSwaggerJson = (swagger: any) => { |
||||||
|
swagger = typeof swagger == 'string' ? JSON.parse(swagger) : swagger |
||||||
|
const models: VisualEditorModel[] = [] |
||||||
|
Object.keys(swagger.definitions).forEach((model) => { |
||||||
|
const properties = swagger.definitions[model].properties |
||||||
|
const modelItem: VisualEditorModel = { |
||||||
|
name: model, |
||||||
|
key: generateUUID(), |
||||||
|
entitys: [] |
||||||
|
} |
||||||
|
Object.keys(properties).forEach((field) => { |
||||||
|
modelItem.entitys.push({ |
||||||
|
key: field, |
||||||
|
name: properties[field].description || field, |
||||||
|
type: properties[field].type, |
||||||
|
value: '' |
||||||
|
}) |
||||||
|
}) |
||||||
|
models.push(modelItem) |
||||||
|
}) |
||||||
|
const apis: FetchApiItem[] = [] |
||||||
|
Object.keys(swagger.paths).forEach((url) => { |
||||||
|
Object.keys(swagger.paths[url]).forEach((method) => { |
||||||
|
const apiUrlObj = swagger.paths[url][method] |
||||||
|
const model = apiUrlObj.parameters?.[0]?.schema?.$ref?.split('/').pop() |
||||||
|
const bindTarget = model ? models.find((item) => item.name == model) : undefined |
||||||
|
typeof bindTarget == 'object' && (bindTarget.name = apiUrlObj.summary) |
||||||
|
const api: FetchApiItem = { |
||||||
|
key: generateUUID(), |
||||||
|
name: apiUrlObj.summary, |
||||||
|
options: { |
||||||
|
url: url, // 请求的url
|
||||||
|
method: method.toLocaleUpperCase() as RequestEnum, // 请求的方法
|
||||||
|
contentType: apiUrlObj.produces[0] || apiUrlObj.consumes[0] // 请求的内容类型
|
||||||
|
}, |
||||||
|
data: { |
||||||
|
bind: bindTarget?.key || '', // 请求绑定对应的某个实体
|
||||||
|
recv: '' // 响应的结果绑定到某个实体上
|
||||||
|
} |
||||||
|
} |
||||||
|
apis.push(api) |
||||||
|
}) |
||||||
|
}) |
||||||
|
return { apis, models } |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @description 显示导入swagger JSON模态框 |
||||||
|
*/ |
||||||
|
export const useImportSwaggerJsonModal = () => { |
||||||
|
const { updateModel, updateFetchApi } = useVisualData() |
||||||
|
|
||||||
|
const shema = {} |
||||||
|
const handleSchemaChange = (val) => { |
||||||
|
try { |
||||||
|
const newObj = JSON.parse(val) |
||||||
|
Object.assign(shema, newObj) |
||||||
|
} catch (e) { |
||||||
|
console.log('JSON格式有误:', e) |
||||||
|
} |
||||||
|
} |
||||||
|
return { |
||||||
|
showImportSwaggerJsonModal: () => |
||||||
|
useModal({ |
||||||
|
title: '导入swagger JSON (导入swagger: 2.0)', |
||||||
|
props: { |
||||||
|
width: 760 |
||||||
|
}, |
||||||
|
content: () => ( |
||||||
|
<MonacoEditor |
||||||
|
code={''} |
||||||
|
layout={{ width: 700, height: 600 }} |
||||||
|
vid={-1} |
||||||
|
onChange={handleSchemaChange} |
||||||
|
title="" |
||||||
|
/> |
||||||
|
), |
||||||
|
onConfirm: () => { |
||||||
|
try { |
||||||
|
const { models, apis } = importSwaggerJson(shema) |
||||||
|
updateModel(models, true) |
||||||
|
updateFetchApi(apis, true) |
||||||
|
ElMessage.success('导入成功!') |
||||||
|
console.log({ models, apis }, '导入的swagger') |
||||||
|
} catch (e) { |
||||||
|
ElMessage.success('导入失败!请检查swagger JSON是否有误!') |
||||||
|
} |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue