liveh5-nuxt/app/pages/collectCode/signature/panel/index.vue

70 lines
1.9 KiB
Vue
Raw Normal View History

<script setup>
2025-02-20 07:17:04 +00:00
import {VueSignaturePad} from 'vue-signature-pad';
import { showToast } from 'vant';
import {codeAuthStore} from "~/stores-collect-code/auth/index.js";
import {signOffline} from "~/api/goods/index.js";
2025-02-25 09:00:07 +00:00
import {useI18n} from "vue-i18n";
const {t} = useI18n();
const {formData,number}=codeAuthStore()
const signaturePad = ref(null);
definePageMeta({
layout: ''
});
const router = useRouter();
const imgUrl = ref('');
const goBack = () => {
router.back()
};
const submitSignature = () => {
if (signaturePad.value?.isEmpty()) {
2025-02-25 09:00:07 +00:00
showToast(t('collectCode.signature.pleaseSign'));
return;
}
2025-02-25 09:00:07 +00:00
const { data } = signaturePad.value?.saveSignature();
imgUrl.value = data;
confirm()
};
const clearSignature = () => {
signaturePad.value?.clearSignature();
};
2025-02-25 09:00:07 +00:00
const confirm=async ()=>{
const res=await signOffline({
userInfo:formData.value,
signOrder:Number(number.value),
signImgFileData:imgUrl.value,
})
if (res.status===0){
2025-02-25 09:00:07 +00:00
router.push('/collectCode/signature/result')
}
}
</script>
<template>
<div class="signature-container">
<div class="flex flex-col h-100vh px-20px py-20px bg-gray w-100vw">
2025-02-20 07:17:04 +00:00
<client-only>
<VueSignaturePad
width="100%"
height="93%"
2025-02-20 07:17:04 +00:00
class="signature bg-#fff rounded-10px mb-10px"
ref="signaturePad"
/>
</client-only>
<div class="flex justify-evenly">
<van-button class="!h-40px mr-15px" type="primary" @click="goBack">
2025-02-25 09:00:07 +00:00
{{ $t('collectCode.signature.back') }}
</van-button>
<van-button class="!h-40px" type="warning" @click="clearSignature">
2025-02-25 09:00:07 +00:00
{{ $t('collectCode.signature.clear') }}
</van-button>
<van-button class="!h-40px" type="primary" @click="submitSignature">
2025-02-25 09:00:07 +00:00
{{ $t('collectCode.signature.confirm') }}
</van-button>
</div>
</div>
</div>
</template>