|  | @@ -6,6 +6,8 @@ import { Button, Field, showToast } from 'vant';
 | 
	
		
			
				|  |  |  import MUploader from '@/components/m-uploader';
 | 
	
		
			
				|  |  |  import { api_userMusicDetail, api_userMusicSave } from '../api';
 | 
	
		
			
				|  |  |  import { useRoute, useRouter } from 'vue-router';
 | 
	
		
			
				|  |  | +import videoBg from '../images/video-bg.png';
 | 
	
		
			
				|  |  | +import { postMessage } from '@/helpers/native-message';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export default defineComponent({
 | 
	
		
			
				|  |  |    name: 'creation-edit',
 | 
	
	
		
			
				|  | @@ -36,6 +38,24 @@ export default defineComponent({
 | 
	
		
			
				|  |  |          //
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 截图
 | 
	
		
			
				|  |  | +    const onCropper = () => {
 | 
	
		
			
				|  |  | +      postMessage(
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +          api: 'videoCrop',
 | 
	
		
			
				|  |  | +          content: {
 | 
	
		
			
				|  |  | +            url: state.musicDetail.videoUrl
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        res => {
 | 
	
		
			
				|  |  | +          if (res?.content.videoCover) {
 | 
	
		
			
				|  |  | +            state.videoImg = res.content.videoCover;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      onMounted(async () => {
 | 
	
		
			
				|  |  |        try {
 | 
	
		
			
				|  |  |          const { data } = await api_userMusicDetail(state.id);
 | 
	
	
		
			
				|  | @@ -53,6 +73,25 @@ export default defineComponent({
 | 
	
		
			
				|  |  |            <MHeader border={false} />
 | 
	
		
			
				|  |  |          </MSticky>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        <div class={[styles.section, styles.sectionVideo]}>
 | 
	
		
			
				|  |  | +          <img src={state.videoImg || videoBg} class={styles.videoBg} />
 | 
	
		
			
				|  |  | +          <div class={styles.btnGroup}>
 | 
	
		
			
				|  |  | +            <MUploader
 | 
	
		
			
				|  |  | +              class={styles.btnImg}
 | 
	
		
			
				|  |  | +              cropper
 | 
	
		
			
				|  |  | +              deletable={false}
 | 
	
		
			
				|  |  | +              onUploadChange={img => {
 | 
	
		
			
				|  |  | +                if (img.length > 0) {
 | 
	
		
			
				|  |  | +                  state.videoImg = img[0];
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +              }}
 | 
	
		
			
				|  |  | +            />
 | 
	
		
			
				|  |  | +            <div class={styles.btnCropper} onClick={onCropper}>
 | 
	
		
			
				|  |  | +              视频截取封面
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          <div class={styles.section}>
 | 
	
		
			
				|  |  |            <Field
 | 
	
		
			
				|  |  |              rows={4}
 |