|
4 | 4 | <el-col> |
5 | 5 | <div class="mb-2 float-right"> |
6 | 6 | <el-button size="small" type="primary" @click="showJson">生成 JSON</el-button> |
7 | | - <el-button size="small" type="success" @click="showOption">生成O ptions</el-button> |
| 7 | + <el-button size="small" type="success" @click="showOption">生成 Options</el-button> |
8 | 8 | <el-button size="small" type="danger" @click="showTemplate">生成组件</el-button> |
9 | 9 | </div> |
10 | 10 | </el-col> |
11 | 11 | <!-- 表单设计器 --> |
12 | 12 | <el-col> |
13 | | - <fc-designer ref="designer" height="780px" /> |
| 13 | + <FcDesigner ref="designer" height="780px" /> |
14 | 14 | </el-col> |
15 | 15 | </el-row> |
16 | 16 | </ContentWrap> |
|
22 | 22 | {{ t('common.copy') }} |
23 | 23 | </el-button> |
24 | 24 | <el-scrollbar height="580"> |
25 | | - <div v-highlight> |
26 | | - <code class="hljs"> |
27 | | - {{ formData }} |
28 | | - </code> |
| 25 | + <div> |
| 26 | + <pre><code class="hljs" v-html="highlightedCode(formData)"></code></pre> |
29 | 27 | </div> |
30 | 28 | </el-scrollbar> |
31 | 29 | </div> |
32 | 30 | </Dialog> |
33 | 31 | </template> |
34 | 32 | <script setup lang="ts" name="InfraBuild"> |
35 | | -import formCreate from '@form-create/element-ui' |
| 33 | +import FcDesigner from '@form-create/designer' |
36 | 34 | import { useClipboard } from '@vueuse/core' |
| 35 | +import { isString } from '@/utils/is' |
37 | 36 | const { t } = useI18n() // 国际化 |
38 | 37 | const message = useMessage() // 消息 |
39 | 38 |
|
@@ -109,4 +108,32 @@ const copy = async (text: string) => { |
109 | 108 | } |
110 | 109 | } |
111 | 110 | } |
| 111 | +
|
| 112 | +/** |
| 113 | + * 代码高亮 |
| 114 | + */ |
| 115 | +import hljs from 'highlight.js' // 导入代码高亮文件 |
| 116 | +import 'highlight.js/styles/github.css' // 导入代码高亮样式 |
| 117 | +import xml from 'highlight.js/lib/languages/java' |
| 118 | +import json from 'highlight.js/lib/languages/json' |
| 119 | +const highlightedCode = (code) => { |
| 120 | + // 处理语言和代码 |
| 121 | + let language = 'json' |
| 122 | + if (formType.value === 2) { |
| 123 | + language = 'xml' |
| 124 | + } |
| 125 | + if (!isString(code)) { |
| 126 | + code = JSON.stringify(code) |
| 127 | + } |
| 128 | + // 高亮 |
| 129 | + const result = hljs.highlight(language, code, true) |
| 130 | + return result.value || ' ' |
| 131 | +} |
| 132 | +
|
| 133 | +/** 初始化 **/ |
| 134 | +onMounted(async () => { |
| 135 | + // 注册代码高亮的各种语言 |
| 136 | + hljs.registerLanguage('xml', xml) |
| 137 | + hljs.registerLanguage('json', json) |
| 138 | +}) |
112 | 139 | </script> |
0 commit comments