1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <template>
- <div class="working-area">
- <img
- class="effect effect-begin"
- src="@/assets/images/step-0-final.png"
- alt=""
- draggable="false"
- >
- <video
- v-show="workState === 'working' || workState === 'done'"
- ref="videoRef"
- src="@/assets/videos/step-1.mp4"
- playsinline
- webkit-playsinline="true"
- muted
- @ended="workState = 'done'"
- />
- </div>
- </template>
- <script setup>
- import { ref, computed, watch } from "vue"
- import { toolList, selectedToolNum, workState } from "@/store/index.js"
- const {
- windowSizeInCssForRef,
- windowSizeWhenDesignForRef,
- } = useSizeAdapt()
- const props = defineProps(['requiredToolList'])
- const requiredToolList = computed(() => {
- return props.requiredToolList
- })
- watch(selectedToolNum, (vNew) => {
- if (vNew === requiredToolList.value.length) {
- setTimeout(() => {
- workState.value = 'working'
- }, 500)
- }
- })
- const videoRef = ref(null)
- watch(workState, (vNew) => {
- if (vNew === 'working') {
- videoRef.value.play()
- }
- })
- </script>
- <style lang="less" scoped>
- .working-area{
- position: absolute;
- left: 50%;
- top: calc(314 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
- transform: translate(-50%, -50%);
- width: calc(328 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
- height: calc(438 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));;
- >img.effect{
- position: absolute;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- }
- >video{
- position: absolute;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- }
- }
- </style>
|