mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
174 lines
6.1 KiB
Vue
174 lines
6.1 KiB
Vue
<template>
|
|
<div>
|
|
<b-row>
|
|
<b-col xl="12" md="12">
|
|
<base-button icon type="primary" size="lg" v-b-toggle.collapse-1>
|
|
<span class="btn-inner--icon"><i class="ni ni-curved-next"></i></span>
|
|
<span class="btn-inner--text">{{ $t('site.overview.send_gradido') }} </span>
|
|
</base-button>
|
|
<b-collapse id="collapse-1" class="mt-2">
|
|
<b-card>
|
|
<p class="card-text">
|
|
<b-row>
|
|
<b-col>
|
|
|
|
<qrcode-capture @detect="onDetect" capture="user" ></qrcode-capture>
|
|
</b-col>
|
|
<b-col>
|
|
<span v-if="scan">
|
|
<qrcode-stream @decode="onDecode" @detect="onDetect" ></qrcode-stream>
|
|
<b-iconstack font-scale="5" @click="scan=false">
|
|
<b-icon stacked icon="upc-scan" variant="info" scale="0.75"></b-icon>
|
|
<b-icon stacked icon="slash-circle" variant="danger"></b-icon>
|
|
</b-iconstack>
|
|
</span>
|
|
<span v-else >
|
|
<img src="img/icons/gradido/qr-scan-pure.png" width="90" @click="scan=true"/>
|
|
scan jetzt
|
|
</span>
|
|
</b-col>
|
|
</b-row>
|
|
<b-form @submit="onSubmit" @reset="onReset" v-if="show">
|
|
<br>
|
|
<qrcode-drop-zone id="input-0" v-model="form.img" ></qrcode-drop-zone>
|
|
<br>
|
|
<div>
|
|
<b-input-group
|
|
id="input-group-1"
|
|
label="Empfänger:"
|
|
label-for="input-1"
|
|
description="We'll never share your email with anyone else.">
|
|
|
|
<b-form-input
|
|
id="input-1"
|
|
v-model="form.email"
|
|
type="email"
|
|
placeholder="E-Mail"
|
|
required></b-form-input>
|
|
|
|
<b-input-group-append>
|
|
<b-button variant="outline-primary" @click="adressbook">Adressbuch</b-button>
|
|
</b-input-group-append>
|
|
|
|
</b-input-group>
|
|
</div>
|
|
<br>
|
|
<div>
|
|
<b-input-group id="input-group-2" label="Betrag:" label-for="input-2">
|
|
<b-form-input id="input-2"
|
|
v-model="form.amount1"
|
|
type="number"
|
|
required
|
|
min="0" placeholder="0">
|
|
</b-form-input>.<h1>GDD.</h1>
|
|
<b-form-input id="input-3"
|
|
v-model="form.amount2"
|
|
type="number"
|
|
min="00" placeholder="00">
|
|
</b-form-input>
|
|
</b-input-group>
|
|
</div>
|
|
<br>
|
|
<b-button type="submit" variant="primary">jetzt versenden</b-button>
|
|
<b-button type="reset" variant="danger">Cancel</b-button>
|
|
<br>
|
|
</b-form>
|
|
</p>
|
|
</b-card>
|
|
</b-collapse>
|
|
</b-col>
|
|
</b-row>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { QrcodeStream, QrcodeDropZone, QrcodeCapture } from 'vue-qrcode-reader'
|
|
import { BIcon } from 'bootstrap-vue'
|
|
|
|
export default {
|
|
name: 'GddSent',
|
|
components: {
|
|
QrcodeStream,
|
|
QrcodeDropZone,
|
|
QrcodeCapture,
|
|
BIcon
|
|
},
|
|
data(){
|
|
return {
|
|
scan: false,
|
|
show: true,
|
|
form: {
|
|
img: '',
|
|
email: '',
|
|
amount1: '',
|
|
amount2: ''
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
async onDecode (decodedString) {
|
|
console.log('JSON.parse(decodedString)',JSON.parse(decodedString) )
|
|
const arr = JSON.parse(decodedString)
|
|
console.log('arr',arr[0].email )
|
|
this.modal.h4 = 'Scan erfolgreich'
|
|
this.modal.p = arr
|
|
this.form.email = arr[0].email
|
|
this.form.amount1 = arr[0].amount
|
|
console.log('arr mail',arr.email)
|
|
console.log('arr mail',arr.amount)
|
|
|
|
this.modals2 = true
|
|
},
|
|
async onDetect (promise) {
|
|
try {
|
|
const {
|
|
imageData, // raw image data of image/frame
|
|
content, // decoded String
|
|
location // QR code coordinates
|
|
} = await promise
|
|
console.log('promise',promise)
|
|
console.log('JSON.parse(decodedString)',JSON.parse(promise) )
|
|
const arr = JSON.parse(decodedString)
|
|
console.log('arr',arr)
|
|
|
|
} catch (error) {
|
|
// ...
|
|
}
|
|
},
|
|
onSubmit(event) {
|
|
event.preventDefault()
|
|
alert(JSON.stringify(this.form))
|
|
this.modal = true
|
|
this.modal.h4 = 'TODO 1'
|
|
},
|
|
onReset(event) {
|
|
event.preventDefault()
|
|
// Reset our form values
|
|
this.form.email = ''
|
|
this.form.amount1 = ''
|
|
this.form.amount2 = ''
|
|
// Trick to reset/clear native browser form validation state
|
|
this.show = false
|
|
this.$nextTick(() => {
|
|
this.show = true
|
|
})
|
|
},
|
|
adressbook() {
|
|
this.modal = true
|
|
this.modaldata.h4 = 'Adressbuch'
|
|
this.modaldata.p = 'TODO ADRESSBUCH LISTE'
|
|
}
|
|
},
|
|
computed: {
|
|
state() {
|
|
return this.name.length >= 4
|
|
},
|
|
invalidFeedback() {
|
|
if (this.name.length > 0) {
|
|
return 'Geben Sie mindestens 4 Zeichen ein.'
|
|
}
|
|
return 'Bitte geben Sie eine GDD Adresse ein.'
|
|
}
|
|
}
|
|
};
|
|
</script> |