feat: 新增管理端demo代码
feat: 补充遗漏的文件 fix: 移除license
This commit is contained in:
86
magic-admin/web/src/views/editor.vue
Normal file
86
magic-admin/web/src/views/editor.vue
Normal file
@@ -0,0 +1,86 @@
|
||||
<template>
|
||||
<m-editor
|
||||
:menu="menu"
|
||||
:runtime-url="runtimeUrl"
|
||||
:component-group-list="componentList"
|
||||
:modelValue="uiConfigs"
|
||||
:props-values="magicPresetValues"
|
||||
:props-configs="magicPresetConfigs"
|
||||
:event-method-list="magicPresetEvents"
|
||||
:default-selected="editorDefaultSelected"
|
||||
></m-editor>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { computed, defineComponent, reactive, ref } from 'vue';
|
||||
import { useRoute } from 'vue-router';
|
||||
|
||||
import { ComponentGroup } from '@tmagic/editor';
|
||||
import { asyncLoadJs } from '@tmagic/utils';
|
||||
|
||||
import editorApi from '@src/api/editor';
|
||||
import magicStore from '@src/store/index';
|
||||
import { topMenu } from '@src/use/use-menu';
|
||||
import { initConfigByActId } from '@src/use/use-publish';
|
||||
|
||||
export default defineComponent({
|
||||
name: 'App',
|
||||
|
||||
setup() {
|
||||
const route = useRoute();
|
||||
|
||||
const uiConfigs = computed(() => magicStore.get('uiConfigs'));
|
||||
const editorDefaultSelected = computed(() => magicStore.get('editorDefaultSelected'));
|
||||
const componentList = reactive<ComponentGroup[]>([]);
|
||||
|
||||
const magicPresetValues = ref<Record<string, any>>({});
|
||||
const magicPresetConfigs = ref<Record<string, any>>({});
|
||||
const magicPresetEvents = ref<Record<string, any>>({});
|
||||
// 获取编辑器左侧组件树
|
||||
const getComponentList = async () => {
|
||||
const { data: list } = await editorApi.getComponentList();
|
||||
componentList.push(...list);
|
||||
};
|
||||
// 根据活动id获取活动配置
|
||||
const getActById = async () => {
|
||||
await initConfigByActId({ actId: Number(route.params.actId) });
|
||||
};
|
||||
|
||||
asyncLoadJs('/runtime/vue3/assets/config.js').then(() => {
|
||||
magicPresetConfigs.value = (window as any).magicPresetConfigs;
|
||||
});
|
||||
asyncLoadJs('/runtime/vue3/assets/value.js').then(() => {
|
||||
magicPresetValues.value = (window as any).magicPresetValues;
|
||||
});
|
||||
asyncLoadJs('/runtime/vue3/assets/event.js').then(() => {
|
||||
magicPresetEvents.value = (window as any).magicPresetEvents;
|
||||
});
|
||||
|
||||
getComponentList();
|
||||
getActById();
|
||||
|
||||
return {
|
||||
componentList,
|
||||
menu: topMenu(),
|
||||
uiConfigs,
|
||||
runtimeUrl: '/runtime/vue3/playground.html',
|
||||
magicPresetValues,
|
||||
magicPresetConfigs,
|
||||
magicPresetEvents,
|
||||
editorDefaultSelected,
|
||||
};
|
||||
},
|
||||
});
|
||||
</script>
|
||||
<style lang="scss">
|
||||
#app {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.m-editor {
|
||||
flex: 1;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
44
magic-admin/web/src/views/list-view.vue
Normal file
44
magic-admin/web/src/views/list-view.vue
Normal file
@@ -0,0 +1,44 @@
|
||||
<!-- 活动列表视图 -->
|
||||
<template>
|
||||
<div>
|
||||
<!-- 面包屑导航 -->
|
||||
<el-breadcrumb separator="/">
|
||||
<el-breadcrumb-item v-for="item in breadCrumbData" :key="item.index">
|
||||
{{ item.text }}
|
||||
</el-breadcrumb-item>
|
||||
</el-breadcrumb>
|
||||
<!-- 活动列表 -->
|
||||
<act-list></act-list>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, ref } from 'vue';
|
||||
|
||||
import List from '@src/components/act-list.vue';
|
||||
|
||||
export default defineComponent({
|
||||
name: 'act-list-view',
|
||||
|
||||
components: { 'act-list': List },
|
||||
|
||||
setup() {
|
||||
return {
|
||||
breadCrumbData: ref([
|
||||
{
|
||||
text: '首页',
|
||||
},
|
||||
{
|
||||
text: `活动列表`,
|
||||
},
|
||||
]),
|
||||
};
|
||||
},
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.el-breadcrumb {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
</style>
|
||||
64
magic-admin/web/src/views/template-list.vue
Normal file
64
magic-admin/web/src/views/template-list.vue
Normal file
@@ -0,0 +1,64 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-breadcrumb separator="/" style="margin-bottom: 20px">
|
||||
<el-breadcrumb-item v-for="item in breadcrumb" :to="{ path: item.url }" :key="item.url">
|
||||
{{ item.text }}
|
||||
</el-breadcrumb-item>
|
||||
</el-breadcrumb>
|
||||
|
||||
<el-card class="box-card">
|
||||
<template #header>
|
||||
<div class="clearfix">
|
||||
<span>创建新活动</span>
|
||||
</div>
|
||||
</template>
|
||||
<act-create-card @add="newActHandler" />
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent } from 'vue';
|
||||
import { useRouter } from 'vue-router';
|
||||
|
||||
import ActCreateCard from '@src/components/act-created-card.vue';
|
||||
|
||||
export interface BreadCrumbItem {
|
||||
url: string;
|
||||
text: string;
|
||||
}
|
||||
|
||||
export default defineComponent({
|
||||
name: 'template-list',
|
||||
|
||||
components: { ActCreateCard },
|
||||
|
||||
setup() {
|
||||
const router = useRouter();
|
||||
const breadcrumb: BreadCrumbItem[] = [
|
||||
{
|
||||
url: '/',
|
||||
text: '首页',
|
||||
},
|
||||
{
|
||||
url: '/template/list',
|
||||
text: '模板',
|
||||
},
|
||||
];
|
||||
|
||||
const newActHandler = () => {
|
||||
router.push({
|
||||
path: '/act/my',
|
||||
query: {
|
||||
create: 'true',
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
return {
|
||||
breadcrumb,
|
||||
newActHandler,
|
||||
};
|
||||
},
|
||||
});
|
||||
</script>
|
||||
Reference in New Issue
Block a user