Merge branch 'master' of gitlab.com:CIEFWorldwideSdnBhd/shipping-portal into container-profile-forms-ui

# Conflicts:
#	routes/web.php
This commit is contained in:
edmondlang
2021-09-24 19:56:07 +08:00
15 changed files with 314 additions and 33 deletions
@@ -0,0 +1,101 @@
<template>
<div class="row">
<div class="col">
<div class="row text-left" @keyup.enter="submitForm">
<div class="col">
<error-message-component class="m-b-20" :error="error"></error-message-component>
<div class="row">
<div class="col">
<div class="row" >
<div class="col">
<div class="row">
<div class="col">
<p class="bold fs-11 all-caps muted">Personal Information</p>
</div>
</div>
<div class="row m-b-15">
<div class="col p-r-5">
<validation-wrapper-component :validator="$v.parameters.name">
<label>Full Name</label>
<input class="form-control" v-model="parameters.name">
</validation-wrapper-component>
</div>
<div class="col p-l-5">
<validation-wrapper-component :validator="$v.parameters.phone">
<label>Phone</label>
<input class="form-control" v-model="parameters.phone">
</validation-wrapper-component>
</div>
</div>
<div class="row m-b-15">
<div class="col">
<validation-wrapper-component :validator="$v.parameters.email">
<label>Email</label>
<input class="form-control" v-model="parameters.email">
</validation-wrapper-component>
</div>
</div>
<div class="row m-b-15">
<div class="col p-r-5">
<validation-wrapper-component :validator="$v.parameters.password">
<label>Password</label>
<input class="form-control" type="password" v-model="parameters.password">
</validation-wrapper-component>
</div>
<div class="col p-l-5">
<validation-wrapper-component :validator="$v.parameters.password_confirmation">
<label>Password Confirmation</label>
<input class="form-control" type="password" v-model="parameters.password_confirmation">
</validation-wrapper-component>
</div>
</div>
<div class="row">
<div class="col-auto">
<button type="button" class="btn btn-sm p-t-10 p-b-10 btn-default bg-master-lighter b-rad-none" @click="$store.dispatch('toggleSection', {name: 'registrationForm', status: false})">
<div class="row align-items-center">
<div class="col-auto p-r-10">
<i class="fa fa-angle-left fs-16" style="margin-top: 1px;"></i>
</div>
<div class="col p-l-5">I already have an account</div>
</div>
</button>
</div>
<div class="col text-right">
<button type="button" class="btn btn-sm btn-block p-t-10 p-b-10 p-r-35 p-l-35 btn-primary b-rad-none p-r-30" @click="submit(route('api.account.registration.invite.register'), 'post', section, false, false)"><i class="fa fa-check fs-18 m-r-10"></i>Complete Registration</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import inviteRegistrationFormValidation from '../../../general/mixins/accounts/validation/inviteRegistrationFormValidation';
export default {
props: {
id: {
required: true,
type: Number
}
},
data() {
return {
error: '',
parameters : {
company_id: this.id,
name: '',
email: '',
phone: '',
password: '',
password_confirmation: '',
}
}
},
mixins: [inviteRegistrationFormValidation]
}
</script>
@@ -38,7 +38,6 @@
</template>
<script>
import registrationCheckEmailValidation from '../../../general/mixins/accounts/validation/registrationCheckEmailValidation';
import stepNavi from '../../../general/mixins/stepNavi';
export default {
data() {
return {
@@ -257,7 +257,6 @@
</template>
<script>
import registrationFormValidation from '../../../general/mixins/accounts/validation/registrationFormValidation';
import stepNavi from '../../../general/mixins/stepNavi';
export default {
data() {
return {
@@ -41,7 +41,7 @@
</div>
<div class="row align-items-center">
<div class="col">
<h6 class="no-margin fs-12">Account Owner</h6>
<h6 class="no-margin fs-12">Email Address</h6>
<h6 class="no-margin">{{item.employee.email}}</h6>
</div>
</div>
@@ -112,6 +112,10 @@
<div class="font-heading fs-10 all-caps p-t-5 p-b-5 p-l-10 p-r-15 b-rad-sm bg-master-lighter" v-if="item.employee">
<i class="fa fa-circle text-success m-r-5"></i>Claimed
</div>
<div class="font-heading fs-10 all-caps p-t-5 p-b-5 p-l-10 p-r-15 b-rad-sm bg-master-lighter pointer" ref="copyButton" v-if="!item.employee" @click="copyUrl">
Invitation Link <i class="fa fa-clipboard text-complete m-l-5"></i>
</div>
<textarea style="position: absolute; left: -99999px;" ref="invitationLink">{{ route('company.claim', item.hash_id) }}</textarea>
</div>
</div>
</div>
@@ -121,6 +125,19 @@
<script>
import componentHandler from '../../../general/mixins/componentHandler';
export default {
methods: {
copyUrl(event) {
this.$refs.invitationLink.select();
document.execCommand('copy');
$(this.$refs.copyButton).tooltip({
title: 'Url Copied To Clipboard!',
placement: 'left',
delay: 1000
});
$(this.$refs.copyButton).tooltip('show');
}
},
mixins: [componentHandler]
}
</script>
@@ -22,6 +22,10 @@
<p class="no-margin fs-10 all-caps">ETA</p>
<p class="no-margin">{{item.transport ? item.transport.current_schedule.eta : 'n/a'}}</p>
</div>
<div class="col-auto">
<p class="no-margin fs-10 all-caps">Loaded CBM</p>
<p class="no-margin">{{ (Math.ceil((item.packing_lists.reduce((total, obj) => total + obj.packages.reduce((total, obj) => obj.cbm + total, 0), 0)) * 1000) / 1000).toFixed(3) }}</p>
</div>
<div class="col">
<p class="no-margin fs-10 all-caps">Status</p>
<p class="no-margin bold" :class="{'text-success': item.status === 3, 'text-complete': item.status !== 3}">{{item.status === 3 ? 'Un-stuffed' : 'In Progress'}}</p>
@@ -0,0 +1,27 @@
import { required, email, numeric, sameAs, requiredUnless, requiredIf } from "vuelidate/lib/validators";
import authenticationHandler from '../authenticationHandler'
export default {
validations: {
parameters: {
name: {
required: required
},
email: {
required: required,
email
},
phone: {
required: required,
numeric
},
password: {
required: required,
},
password_confirmation: {
required: required,
sameAs: sameAs('password')
}
}
},
mixins: [authenticationHandler]
}
+4 -1
View File
@@ -5,7 +5,10 @@ export default {
(this.$store.getters.isAuthenticated && !this.isProtectedRoute()&& this.isWithTokenRoute()) ? window.location.href = this.route('dashboard') : '';
},
isProtectedRoute(){
const unprotectedRoutes = [this.route('login'), this.route('account.email.verification')];
const unprotectedRoutes = [this.route('login'), this.route('account.email.verification'), this.route('company.claim')];
if(window.location.href.indexOf(this.route('company.claim')) === 0) {
return false;
}
return !unprotectedRoutes.includes(window.location.href);
},
isWithTokenRoute(){
-22
View File
@@ -1,22 +0,0 @@
export default {
methods: {
changeStep(direction) {
this.status.direction = direction;
if (direction === 'next') {
if (this.validate()) {
//this.step += 1;
this.status.email = this.parameters.email;
this.$emit('updateStatus', this.status);
}
return;
}
this.$emit('updateStatus', this.status);
this.$v.$reset();
},
},
beforeDestroy: function (event) {
},
}
@@ -0,0 +1,23 @@
@extends('layouts.base_login')
@section('inner_content')
<div class="row h-100 no-margin align-items-center justify-content-center">
<div class="col col-md-10">
<div class="row m-b-50">
<div class="col-8 col-md-6">
<img class="w-100" src="{{asset('images/cief-izyim-logo.png')}}" alt="">
</div>
</div>
<div class="row">
<div class="col">
<loading-component style="height: 350px;" key="1" color="primary" v-show="$store.getters.isLoading('loginSection')"></loading-component>
<div class="row justify-content-center" v-show="!$store.getters.isLoading('loginSection')">
<div class="col">
<invite-registration-form-component section="loginSection" :id={{ $id }}></invite-registration-form-component>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection