bill 5 months ago
parent
commit
be89931947

+ 22 - 1
src/api/animation.ts

@@ -7,7 +7,20 @@ import {
   DELETE_AM_MODEL,
 } from "./constant";
 
-type ServiceAnimationModel = AnimationModel;
+type ServiceAnimationModel = {
+  key?: string
+  id: string;
+  title: string;
+  url: string;
+  showTitle: boolean;
+  fontSize: number;
+  globalVisibility: boolean;
+  visibilityRange: number;
+  frames: string
+  actions: string
+  subtitles: string
+  paths: string
+}
 
 export interface AnimationAction {
   id: string;
@@ -73,10 +86,18 @@ export type AnimationModels = AnimationModel[];
 
 const serviceToLocal = (serviceAM: ServiceAnimationModel): AnimationModel => ({
   ...serviceAM,
+  frames: JSON.parse(serviceAM.frames),
+  actions: JSON.parse(serviceAM.actions),
+  subtitles: JSON.parse(serviceAM.subtitles),
+  paths: JSON.parse(serviceAM.paths)
 });
 
 const localToService = (am: AnimationModel): ServiceAnimationModel => ({
   ...am,
+  frames: JSON.stringify(am.frames),
+  actions: JSON.stringify(am.actions),
+  subtitles: JSON.stringify(am.subtitles),
+  paths: JSON.stringify(am.paths)
 });
 
 export const fetchAnimationModels = async () => {

+ 2 - 2
src/sdk/association/animation.ts

@@ -188,9 +188,9 @@ export const addAction = (
 
   const stopAttrib = mergeFuns(
     watchEffect(() => amMap[key].actions[data.id]?.changeTime(data.time)),
-    watchEffect(() =>
+    watchEffect(() => {
       amMap[key].actions[data.id]?.changeAmplitude(data.amplitude)
-    ),
+    }),
     watchEffect(() => amMap[key].actions[data.id]?.changeSpeed(data.speed)),
     watchEffect(() =>
       amMap[key].actions[data.id]?.changeDuration(data.duration)

+ 3 - 3
src/views/animation/right/action.vue

@@ -17,12 +17,12 @@
         </ui-group-option>
         <ui-group-option>
           <SignItem label="幅度" not-apply>
-            <Slider v-model:value="data.amplitude" :min="12" :max="60" :step="0.1" />
+            <Slider v-model:value="data.amplitude" :min="0.5" :max="60" :step="0.1" />
           </SignItem>
         </ui-group-option>
         <ui-group-option>
           <SignItem label="速度" not-apply>
-            <Slider v-model:value="data.speed" :min="12" :max="60" :step="0.1" />
+            <Slider v-model:value="data.speed" :min="0.5" :max="60" :step="0.1" />
           </SignItem>
         </ui-group-option>
 
@@ -51,7 +51,7 @@ import { AnimationModelAction } from "@/api";
 import SignItem from "@/views/tagging-position/sign-item.vue";
 
 defineProps<{ data: AnimationModelAction }>();
-defineEmits<{ (e: 'updateDuration', dur: number): void }>()
+defineEmits<{ (e: "updateDuration", dur: number): void }>();
 </script>
 
 <style scoped lang="scss">

+ 1 - 1
src/views/animation/right/am.vue

@@ -79,7 +79,7 @@
             <ui-icon
               type="add_a"
               ctrl
-              @click="$emit('addAction', { key: action.action, name: action.title })"
+              @click="$emit('addAction', { amplitude: 1, speed: 1, key: action.action, name: action.title })"
             />
           </span>
         </ui-group-option>