|
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