|
@@ -0,0 +1,158 @@
|
|
|
+<template>
|
|
|
+ <div class="animates">
|
|
|
+ <template v-if="pen.animates.length">
|
|
|
+ <t-collapse
|
|
|
+ v-model="openedCollapses"
|
|
|
+ :borderless="true"
|
|
|
+ :expand-on-row-click="false"
|
|
|
+ >
|
|
|
+ <t-collapse-panel v-for="(item, i) in pen.animates" :value="i">
|
|
|
+ <template #header>
|
|
|
+ <input v-model="item.name" />
|
|
|
+ </template>
|
|
|
+ <template #headerRightContent>
|
|
|
+ <t-popconfirm
|
|
|
+ content="确认删除该动画吗"
|
|
|
+ @confirm="pen.animates.splice(i, 1)"
|
|
|
+ >
|
|
|
+ <t-space size="small">
|
|
|
+ <t-icon name="delete" class="hover" />
|
|
|
+ </t-space>
|
|
|
+ </t-popconfirm>
|
|
|
+ </template>
|
|
|
+ <div class="form-item">
|
|
|
+ <label>动画类型</label>
|
|
|
+ <t-select
|
|
|
+ v-model="item.animate"
|
|
|
+ clearable
|
|
|
+ placeholder="动画"
|
|
|
+ :options="animateList"
|
|
|
+ @change="changeAnimate(item)"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </t-collapse-panel>
|
|
|
+ </t-collapse>
|
|
|
+ <div class="mt-8 px-16">
|
|
|
+ <t-button class="w-full" @click="addAnimate" style="height: 30px">
|
|
|
+ 添加动画
|
|
|
+ </t-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div class="flex column center blank" v-else>
|
|
|
+ <img src="/img/blank.png" />
|
|
|
+ <div class="gray center">还没有动画</div>
|
|
|
+ <div class="mt-8">
|
|
|
+ <t-button @click="addAnimate" style="height: 30px">添加动画</t-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script lang="ts" setup>
|
|
|
+import { onBeforeMount, onUnmounted, reactive, ref } from 'vue';
|
|
|
+
|
|
|
+const { pen } = defineProps<{
|
|
|
+ pen: any;
|
|
|
+}>();
|
|
|
+
|
|
|
+const openedCollapses = ref([0]);
|
|
|
+
|
|
|
+const animateList = [
|
|
|
+ {
|
|
|
+ label: '闪烁',
|
|
|
+ value: '闪烁',
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '缩放',
|
|
|
+ value: '缩放',
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '旋转',
|
|
|
+ value: '旋转',
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '上下跳动',
|
|
|
+ value: '上下跳动',
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '左右跳动',
|
|
|
+ value: '左右跳动',
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '颜色变化',
|
|
|
+ value: '颜色变化',
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '文字变化',
|
|
|
+ value: '文字变化',
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '状态变化',
|
|
|
+ value: '状态变化',
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '翻转',
|
|
|
+ value: '翻转',
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '自定义',
|
|
|
+ value: 'custom',
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+];
|
|
|
+
|
|
|
+onBeforeMount(() => {
|
|
|
+ if (!pen.animates) {
|
|
|
+ pen.animates = [];
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+const addAnimate = () => {
|
|
|
+ openedCollapses.value.push(pen.animates.length);
|
|
|
+ pen.animates.push({
|
|
|
+ name: '动画' + (pen.animates.length + 1),
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+const changeAnimate = (item: any) => {};
|
|
|
+</script>
|
|
|
+<style lang="postcss" scoped>
|
|
|
+.animates {
|
|
|
+ height: 100%;
|
|
|
+
|
|
|
+ .blank {
|
|
|
+ height: 70%;
|
|
|
+ img {
|
|
|
+ padding: 16px;
|
|
|
+ opacity: 0.9;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(.t-collapse) {
|
|
|
+ .t-collapse-panel__header {
|
|
|
+ input {
|
|
|
+ outline: none;
|
|
|
+ border: none;
|
|
|
+ background: none;
|
|
|
+ color: var(--color);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .t-collapse-panel__icon:hover {
|
|
|
+ background: none;
|
|
|
+ svg {
|
|
|
+ color: var(--color-primary);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|