mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-04-06 03:57:56 +08:00
106 lines
2.1 KiB
Vue
106 lines
2.1 KiB
Vue
<template>
|
|
<div style="width: 100%">
|
|
<nav-menu :data="menu"></nav-menu>
|
|
<div class="table-content">
|
|
<m-table class="left-panel" :columns="columns" :data="data" :show-header="true"></m-table>
|
|
<el-tabs class="right-panel" modelValue="columns">
|
|
<el-tab-pane label="columns" name="columns">
|
|
<magic-code-editor class="code-editor-content" :init-values="columns" @save="change"></magic-code-editor>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="data" name="data">
|
|
<magic-code-editor class="code-editor-content" :init-values="data" @save="changeData"></magic-code-editor>
|
|
</el-tab-pane>
|
|
</el-tabs>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
import { ref } from 'vue';
|
|
import { useRouter } from 'vue-router';
|
|
import { ElMessage } from 'element-plus';
|
|
|
|
import { MenuButton } from '@tmagic/editor';
|
|
|
|
import NavMenu from '../components/NavMenu.vue';
|
|
|
|
const router = useRouter();
|
|
|
|
const columns = ref([
|
|
{
|
|
type: 'expand',
|
|
prop: 'b',
|
|
table: [
|
|
{
|
|
prop: 'a',
|
|
label: '1',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
prop: 'a',
|
|
label: '1231',
|
|
},
|
|
]);
|
|
|
|
const data = ref([
|
|
{
|
|
a: 'a1',
|
|
b: [
|
|
{
|
|
a: 1,
|
|
},
|
|
],
|
|
},
|
|
]);
|
|
|
|
const menu: MenuButton[] = [
|
|
{
|
|
type: 'button',
|
|
text: 'Editor Playground',
|
|
handler: () => router.push('/'),
|
|
},
|
|
{
|
|
type: 'button',
|
|
text: 'Form Playground',
|
|
handler: () => router.push('form'),
|
|
},
|
|
];
|
|
|
|
function change(value: string) {
|
|
try {
|
|
// eslint-disable-next-line no-eval
|
|
columns.value = eval(value);
|
|
ElMessage.success('更新成功');
|
|
} catch (e: any) {
|
|
ElMessage.error(e.message);
|
|
}
|
|
}
|
|
|
|
function changeData(value: string) {
|
|
try {
|
|
// eslint-disable-next-line no-eval
|
|
data.value = eval(value);
|
|
ElMessage.success('更新成功');
|
|
} catch (e: any) {
|
|
ElMessage.error(e.message);
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.table-content {
|
|
display: flex;
|
|
height: calc(100% - 35px);
|
|
|
|
.right-panel,
|
|
.left-panel {
|
|
width: 50%;
|
|
}
|
|
|
|
.code-editor-content {
|
|
height: calc(100vh - 100px);
|
|
}
|
|
}
|
|
</style>
|