Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="fr">
- <head>
- <meta charset="utf-8"/>
- <!-- Vue material (+ Roboto Font and Icons) -->
- <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic|Material+Icons">
- <link rel="stylesheet" href="https://unpkg.com/vue-material/dist/vue-material.min.css">
- <link rel="stylesheet" href="https://unpkg.com/vue-material/dist/theme/default.css">
- <link rel="stylesheet" href="css/main.css">
- <title>Assurance Sim</title>
- </head>
- <body>
- <div id="app">
- <form novalidate class="md-layout" @submit.prevent="validateUser" style="display: flex; justify-content: center;">
- <md-card class="md-layout-item md-size-40 md-small-size-100">
- <!-- Main covers -->
- <md-card-header class="md-title">
- Your RC PRO main covers
- </md-card-header>
- <md-card-content class="md-layout md-gutter">
- <!-- List of main covers -->
- <div class="md-layout-item md-small-size-100" v-for="cover in mainCovers" :key="cover.name">
- <md-card v-bind:class="{ card_selected: cover.selected }">
- <!-- Tooltip -->
- <md-tooltip style="font-size: 12px" md-direction="top" v-if="cover.details && cover.details != ''">{{ cover.details }}</md-tooltip>
- <!-- Title and content -->
- <md-card-header class="md-title">
- {{ cover.name }}
- <md-icon class="icon_check" v-if="cover.selected">check</md-icon>
- </md-card-header>
- <md-card-content>{{ cover.price }} €</md-card-content>
- <!-- Selection button -->
- <md-button class="select_button" v-bind:class="{ button_selected: cover.selected}" @click="cover.selected = !cover.selected">
- <div v-if="cover.selected">Deselect</div>
- <div v-else>Select</div>
- </md-button>
- </md-card>
- </div>
- </md-card-content>
- <!-- Additional covers -->
- <md-card-header class="md-title">
- Additional covers
- </md-card-header>
- <md-card-content>
- <!-- List of main covers -->
- <div class="md-layout-item md-small-size-100" v-for="cover in additionalCovers" :key="cover.name">
- <!-- Tooltip -->
- <md-tooltip style="font-size: 12px" md-direction="top" v-if="cover.details && cover.details != ''">{{ cover.details }}</md-tooltip>
- <!-- Content of the cover -->
- <md-chip
- id="checkbox_1"
- v-bind:class="{ chip_selected: cover.selected }"
- @click="cover.selected = !cover.selected"
- class="clickable_chip"
- md-clickable
- >
- <table style="table-layout: fixed; width: 200px;">
- <tr>
- <td style="width: 25px; margin: 0; padding: 0"><input type="checkbox" v-model="cover.selected"></td>
- <td style="width: 100px;">{{ cover.name }}</td>
- <td style="width: 25px;"><md-icon>arrow_right</md-icon></td>
- <td style="width: 25px;">{{ cover.price }} €</td>
- </tr>
- </table>
- </md-chip>
- </div>
- </md-card-content>
- <!-- Deductible -->
- <md-card-content>
- <div>
- Deductible:
- </div>
- </md-card-content>
- <!-- Coverage ceiling -->
- <md-card-content>
- <div>
- Coverage ceiling:
- </div>
- </md-card-content>
- <!-- Total -->
- <md-card-header class="md-title price_total">
- Total: {{ totalPrice }} €
- </md-card-header>
- </md-card>
- </form>
- </div>
- <script src="https://unpkg.com/vue@2.5.22"></script><!-- J'utilise la version 2.5 car la plupart des librairies ne sont pas prêtes pour Vue3-->
- <script src="https://unpkg.com/vue-material"></script>
- <script>
- Vue.use(VueMaterial.default)
- const app = new Vue({
- el: '#app',
- data: {
- // Main covers
- mainCovers: [
- {
- selected: true,
- name: "Pro indemnity",
- price: 290
- },
- {
- selected: false,
- name: "Public liability",
- price: 130
- }
- ],
- // Additional covers
- additionalCovers: [
- {
- selected: false,
- name: "Entrusted objects",
- details: "The Entrusted objects cover is here to...",
- price: 53
- },
- {
- selected: false,
- name: "Legal expenses",
- details: "The legal expenses cover is used in case of...",
- price: 13
- },
- {
- selected: true,
- name: "After delivery",
- details: "After delivery's cover cover the cost of...",
- price: 20
- }
- ],
- // Misc.
- deductible: "small",
- coverageCeiling: "large",
- },
- computed: {
- totalPrice() {
- let sum = 0
- for(let i = 0; i < this.mainCovers.length; i++) {
- if(this.mainCovers[i].selected) {
- sum += this.mainCovers[i].price
- }
- }
- for(let i = 0; i < this.additionalCovers.length; i++) {
- if(this.additionalCovers[i].selected) {
- sum += this.additionalCovers[i].price
- }
- }
- return sum
- },
- },
- mounted() {
- this.getQuote()
- },
- methods: {
- // Call the API
- getQuote() {
- const requestOptions = {
- method: "POST",
- headers: { "Content-Type": "application/json" , "X-Api-Key": "ABCD1NGkfn5fpHuJHrbvG3niQX6A1C123ftF9ABC"},
- body: JSON.stringify({
- "annualRevenue": 80000,
- "enterpriseNumber": "0649885171",
- "legalName": "example SA",
- "naturalPerson": true,
- "nacebelCodes": ["62010", "62020", "62030", "62090", "63110"]
- })
- };
- fetch("https://mon.api.be/quotes/professional-liability", requestOptions)
- .then(response => response.json())
- .then(promise => {
- console.log(promise.data)
- this.coverageCeiling = promise.data.coverageCeiling
- });
- }
- }
- })
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement