Merge branch 'master' of gitlab.com:CIEFWorldwideSdnBhd/exchange into deployment/staging

This commit is contained in:
Jack Goh
2018-07-17 17:31:09 +08:00
25 changed files with 28272 additions and 334 deletions
+80
View File
@@ -0,0 +1,80 @@
APP_NAME=IZYIM
APP_ENV=local
APP_KEY=base64:Fu2YulXExzm9HJ5LgVmZUmcbRkchHkc82q02MorN5GQ=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
APP_NAME=exchange
APP_ENV=local
APP_KEY=base64:Fu2YulXExzm9HJ5LgVmZUmcbRkchHkc82q02MorN5GQ=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
JWT_SECRET=FwYZ3SPFgjpEDqAwcaSIV6eEmQiMtGWt
@@ -768,4 +768,23 @@ class BookingController extends Controller
}
}
public function adminShowCompletedOrders()
{
$bookings = Booking::select('id','created_at','user_id','rate','amount', 'bia', 'admin_status')
->where('admin_status', 7)
->orderBy('id', 'desc')
->get();
foreach ($bookings as $booking) {
$booking->id;
$booking->created_at;
$booking->marking = $booking->user->marking;
$booking->rate;
$booking->amount;
$booking->bia;
$booking->admin_status = "(". $booking->admin_status ."/7)";;
}
return $bookings;
}
}
+22965
View File
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -19,11 +19,11 @@
## Installation
- `git clone git@gitlab.com:CIEFWorldwideSdnBhd/exchange.git`
- `cd` in your working folder
- Copy `.env-example` to `.env`
- Edit `.env` and set your database connection details
- `Comp` run `php artisan key:generate` and `php artisan jwt:secret`)
- `php artisan migrate`
- `yarn` / `npm install`
- Run `docker-compose up`
- Open another git bash run `yarn install`
- Run `yarn run watch`
## Usage
@@ -13,24 +13,31 @@
</a>
</div>
</li> -->
<ul class="navbar-nav mr-auto">
<li v-if="(user && role == 'admin')" class="nav-item">
<el-popover placement="top" width="300" v-model="UpdateRatePopoverVisible">
<div align="center">
<p>Today's Rate</p>
<p>X1 : Cash: {{rate.x1_cash}} Cheque: {{rate.x1_cheque}} BA: {{rate.x1_ba}}</p>
<p>X2 : Cash: {{rate.x2_cash}} Cheque: {{rate.x2_cheque}} BA: {{rate.x2_ba}}</p>
</div>
<div style="text-align: center; margin: 0">
<el-button type="primary" size="mini" @click="UpdateRatePopoverVisible = false; UpdateRateDialogVisible = true">Update rate</el-button>
</div>
<a class="nav-link" href="#" role="button" slot="reference">Update Rate</a>
<ul class="navbar-nav">
<li v-if="(user && role == 'admin')" class="nav-item">
<el-popover placement="top" width="300" v-model="UpdateRatePopoverVisible">
<div align="center">
<p>Today's Rate</p>
<p>X1 : Cash: {{rate.x1_cash}} Cheque: {{rate.x1_cheque}} BA: {{rate.x1_ba}}</p>
<p>X2 : Cash: {{rate.x2_cash}} Cheque: {{rate.x2_cheque}} BA: {{rate.x2_ba}}</p>
</div>
<div style="text-align: center; margin: 0">
<el-button type="primary" size="mini" @click="UpdateRatePopoverVisible = false; UpdateRateDialogVisible = true">Update rate</el-button>
</div>
<a class="nav-link" href="#" role="button" slot="reference">Update Rate</a>
</el-popover>
</li></ul>
<!-- <li v-if="(user && role == 'admin')" class="nav-item"><router-link :to="{ name: 'admin.complete' }" class="nav-link">{{ $t('Complete Order') }}</router-link></li> -->
<li v-if="(user && role == 'admin')" class="nav-item"><router-link :to="{ name: 'admin.transaction-history' }" class="nav-link">{{ $t('Transaction History') }}</router-link></li>
<!-- <li v-if="(user && role == 'admin')" class="nav-item"><router-link :to="{ name: 'admin.upload-supplier-bank-slip' }" class="nav-link">{{ $t('Upload Supplier Bank Slip to System') }}</router-link></li> -->
</li>
</ul>
<li v-if="(user && role == 'admin')" class="nav-item">
<router-link :to="{ name: 'admin.transaction-history' }" class="nav-link">
{{ $t('Transaction History') }}
</router-link>
</li>
<li v-if="(user && role == 'admin')" class="nav-item">
<router-link :to="{ name: 'admin.complete' }" class="nav-link">
{{ $t('Completed Orders') }}
</router-link>
</li>
</ul>
<!-- update rate dialog start -->
<el-dialog align="center" :visible.sync="UpdateRateDialogVisible" width="900px">
+32 -3
View File
@@ -10,7 +10,7 @@
</button>
<div id="navbarToggler" class="collapse navbar-collapse">
<ul class="navbar-nav">
<ul class="navbar-nav ml-auto">
<locale-dropdown/>
<!-- <li class="nav-item">
<a class="nav-link" href="#">Link</a>
@@ -19,7 +19,25 @@
<ul class="navbar-nav ml-auto">
<!-- Authenticated -->
<li v-if="user" class="nav-item dropdown">
<template v-if="user">
<!-- <el-badge :value="12" class="item">
<el-button size="share-button"><i class="el-icon-bell"></i></el-button>
</el-badge> -->
<!-- <el-dropdown trigger="click">
<el-badge :value="12" class="item">
<el-button icon="el-icon-bell" circle></el-button>
</el-badge>
<el-dropdown-menu slot="dropdown" style="max-width: 30%" id="notification">
<a v-for="item in notification" :href="item.link">
<el-dropdown-item>
{{item.message}}
</el-dropdown-item>
</a>
</el-dropdown-menu>
</el-dropdown> -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle text-dark"
href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img :src="user.photo_url" class="rounded-circle profile-photo mr-1">
@@ -38,6 +56,8 @@
</a>
</div>
</li>
</template>
</li>
<!-- Guest -->
<template v-else>
<li class="nav-item">
@@ -67,7 +87,16 @@ export default {
},
data: () => ({
appName: window.config.appName
appName: window.config.appName,
notification:[{
message : "You have an unread message",
link : "http://www.google.com"
},
{
message : "There are 10 booking for your approval",
link : "http://www.yahoo.com"
}]
}),
computed: mapGetters({
@@ -1,37 +0,0 @@
<template>
<div>
<span align="center"><h2>Complete Order</h2></span><br>
<el-table :data="tableData" stripe style="width: 100%">
<el-table-column prop="order_no" label="Order No" sortable></el-table-column>
<el-table-column prop="cust_marking" label="Customer Marking" sortable></el-table-column>
<el-table-column prop="order_date" label="Order Date" sortable></el-table-column>
<el-table-column prop="transfer_amount" label="Transfer Amount (RMB)" sortable></el-table-column>
<el-table-column prop="status" label="Status"></el-table-column>
</el-table><br><br>
<div align="right">
<el-pagination background layout="prev, pager, next" :total="30"></el-pagination>
</div>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [{
order_no: '001',
cust_marking: 'CIEF/155ECE',
order_date: '27/6/2018',
transfer_amount: '1200',
status: 'Complete',
}, {
order_no: '002',
cust_marking: 'CIEF/143EDR',
order_date: '23/6/2018',
transfer_amount: '14000',
status: 'Complete',
}]
}
}
}
</script>
@@ -0,0 +1,107 @@
<template>
<div>
<div align="right">
<el-button icon="el-icon-refresh" type="primary" size="mini" @click="RefreshCompletedOrders()">Refresh</el-button>
</div>
<h1 align="center" style="margin-bottom:50px;">Completed Orders</h1>
<el-table :data="tableData" stripe height="500" style="width: 100%">
<el-table-column label="No." prop="id" sortable></el-table-column>
<el-table-column label="Order Date" prop="created_at" width="180" sortable></el-table-column>
<el-table-column label="Marking" width="120" prop="marking"></el-table-column>
<el-table-column label="Rate" prop="rate" width="74"></el-table-column>
<el-table-column label="Amount" prop="amount" sortable></el-table-column>
<el-table-column :filters="[{text: 'RMB', value: 'RMB'}, {text: 'USD', value: 'USD'}]" :filter-method="filterHandler" label="Transfer Amount" prop="bia"></el-table-column>
<el-table-column label="Status" width="106" prop="admin_status">
<template slot-scope="scope">
<el-tag size="medium" type="success">{{ scope.row.admin_status }}</el-tag>
</template>
</el-table-column>
<el-table-column :filters="[{ text: 'Success', value: 'Success' }, { text: 'Pending', value: 'Pending' }]" :filter-method="filterTag" width="180" filter-placement="bottom-end">
<el-button slot-scope="scope" type="text" @click="(event) => { BookingStatus(scope.row.admin_status, scope.row.id) }"> View Status </el-button>
</el-table-column>
</el-table>
</div>
</template>
<script>
import axios from 'axios'
export default {
data() {
return {
tableData: [],
url: '/api/admin/complete-orders',
}
},
mounted () {
this.RefreshCompletedOrders()
},
methods: {
RefreshCompletedOrders() {
let $this = this
axios.get(this.url).then(response => {
this.tableData = response.data
})
},
filterTag (value, row) {
return row.tag === value
},
filterHandler (value, row, column) {
const property = column['property']
return row[property] === value
},
BookingStatus (status, booking_id) {
// TODO : Get booking status from server
this.status = status
console.log(this.status)
switch (this.status) {
case 1:
this.$router.push({
name: 'booking.admin.pending',
params: {id: booking_id }
})
break
case 2:
this.$router.push({
name: 'booking.admin.verification',
params: {id: booking_id }
})
break
case 3:
this.$router.push({
name: 'booking.admin.supplier',
params: {id: booking_id }
})
break
case 4:
this.$router.push({
name: 'booking.admin.supplier.report',
params: {id: booking_id }
})
break
case 5:
this.$router.push({
name: 'booking.admin.cnslip',
params: {id: booking_id }
})
break
case 6:
this.$router.push({
name: 'booking.admin.invoice',
params: {id: booking_id }
})
break
case 7:
this.$router.push({
name: 'booking.admin.complete',
params: {id: booking_id }
})
break
default:
break
}
}
}
}
</script>
+2 -1
View File
@@ -1,7 +1,8 @@
<template>
<div>
<div align="right">
<el-button icon="el-icon-refresh" type="primary" size="mini" @click="RefreshBooking()">Refresh</el-button></div>
<el-button icon="el-icon-refresh" type="primary" size="mini" @click="RefreshBooking()">Refresh</el-button>
</div>
<!-- Booking Table -->
<el-row :gutter="20">
<div>
+43 -41
View File
@@ -1,55 +1,57 @@
<template>
<div class="row">
<div class="col-lg-8 m-auto">
<card :title="$t('login')">
<form @submit.prevent="login" @keydown="form.onKeydown($event)">
<!-- Email -->
<div class="form-group row">
<label class="col-md-3 col-form-label text-md-right">{{ $t('email') }}</label>
<div class="col-md-7">
<input v-model="form.email" :class="{ 'is-invalid': form.errors.has('email') }" class="form-control" type="email" name="email">
<has-error :form="form" field="email"/>
<div class="container">
<div class="row">
<div class="col-lg-8 m-auto">
<card :title="$t('login')">
<form @submit.prevent="login" @keydown="form.onKeydown($event)">
<!-- Email -->
<div class="form-group row">
<label class="col-md-3 col-form-label text-md-right">{{ $t('email') }}</label>
<div class="col-md-7">
<input v-model="form.email" :class="{ 'is-invalid': form.errors.has('email') }" class="form-control" type="email" name="email">
<has-error :form="form" field="email"/>
</div>
</div>
</div>
<!-- Password -->
<div class="form-group row">
<label class="col-md-3 col-form-label text-md-right">{{ $t('password') }}</label>
<div class="col-md-7">
<input v-model="form.password" :class="{ 'is-invalid': form.errors.has('password') }" class="form-control" type="password" name="password">
<has-error :form="form" field="password"/>
<!-- Password -->
<div class="form-group row">
<label class="col-md-3 col-form-label text-md-right">{{ $t('password') }}</label>
<div class="col-md-7">
<input v-model="form.password" :class="{ 'is-invalid': form.errors.has('password') }" class="form-control" type="password" name="password">
<has-error :form="form" field="password"/>
</div>
</div>
</div>
<!-- Remember Me -->
<div class="form-group row">
<div class="col-md-3"/>
<div class="col-md-7 d-flex">
<checkbox v-model="remember" name="remember">
{{ $t('remember_me') }}
</checkbox>
<!-- Remember Me -->
<div class="form-group row">
<div class="col-md-3"/>
<div class="col-md-7 d-flex">
<checkbox v-model="remember" name="remember">
{{ $t('remember_me') }}
</checkbox>
<router-link :to="{ name: 'password.request' }" class="small ml-auto my-auto">
{{ $t('forgot_password') }}
</router-link>
<router-link :to="{ name: 'password.request' }" class="small ml-auto my-auto">
{{ $t('forgot_password') }}
</router-link>
</div>
</div>
</div>
<div class="form-group row">
<div class="col-md-7 offset-md-3 d-flex">
<!-- Submit Button -->
<v-button :loading="form.busy">
{{ $t('login') }}
</v-button>
<div class="form-group row">
<div class="col-md-7 offset-md-3 d-flex">
<!-- Submit Button -->
<v-button :loading="form.busy">
{{ $t('login') }}
</v-button>
<!-- <el-button type="primary" @click="openFullScreen2">As a service</el-button> -->
<!-- <el-button type="primary" @click="openFullScreen2">As a service</el-button> -->
<!-- GitHub Login Button -->
<login-with-github/>
<!-- GitHub Login Button -->
<login-with-github/>
</div>
</div>
</div>
</form>
</card>
</form>
</card>
</div>
</div>
</div>
</template>
@@ -1,29 +1,31 @@
<template>
<div class="row">
<div class="col-lg-8 m-auto">
<card :title="$t('reset_password')">
<form @submit.prevent="send" @keydown="form.onKeydown($event)">
<alert-success :form="form" :message="status"/>
<div class="container">
<div class="row">
<div class="col-lg-8 m-auto">
<card :title="$t('reset_password')">
<form @submit.prevent="send" @keydown="form.onKeydown($event)">
<alert-success :form="form" :message="status"/>
<!-- Email -->
<div class="form-group row">
<label class="col-md-3 col-form-label text-md-right">{{ $t('email') }}</label>
<div class="col-md-7">
<input v-model="form.email" :class="{ 'is-invalid': form.errors.has('email') }" class="form-control" type="email" name="email">
<has-error :form="form" field="email"/>
<!-- Email -->
<div class="form-group row">
<label class="col-md-3 col-form-label text-md-right">{{ $t('email') }}</label>
<div class="col-md-7">
<input v-model="form.email" :class="{ 'is-invalid': form.errors.has('email') }" class="form-control" type="email" name="email">
<has-error :form="form" field="email"/>
</div>
</div>
</div>
<!-- Submit Button -->
<div class="form-group row">
<div class="col-md-9 ml-md-auto">
<v-button :loading="form.busy">
{{ $t('send_password_reset_link') }}
</v-button>
<!-- Submit Button -->
<div class="form-group row">
<div class="col-md-9 ml-md-auto">
<v-button :loading="form.busy">
{{ $t('send_password_reset_link') }}
</v-button>
</div>
</div>
</div>
</form>
</card>
</form>
</card>
</div>
</div>
</div>
</template>
@@ -1,47 +1,49 @@
<template>
<div class="row">
<div class="col-lg-8 m-auto">
<card :title="$t('reset_password')">
<form @submit.prevent="reset" @keydown="form.onKeydown($event)">
<alert-success :form="form" :message="status"/>
<div class="container">
<div class="row">
<div class="col-lg-8 m-auto">
<card :title="$t('reset_password')">
<form @submit.prevent="reset" @keydown="form.onKeydown($event)">
<alert-success :form="form" :message="status"/>
<!-- Email -->
<div class="form-group row">
<label class="col-md-3 col-form-label text-md-right">{{ $t('email') }}</label>
<div class="col-md-7">
<input v-model="form.email" :class="{ 'is-invalid': form.errors.has('email') }" class="form-control" type="email" name="email" readonly>
<has-error :form="form" field="email"/>
<!-- Email -->
<div class="form-group row">
<label class="col-md-3 col-form-label text-md-right">{{ $t('email') }}</label>
<div class="col-md-7">
<input v-model="form.email" :class="{ 'is-invalid': form.errors.has('email') }" class="form-control" type="email" name="email" readonly>
<has-error :form="form" field="email"/>
</div>
</div>
</div>
<!-- Password -->
<div class="form-group row">
<label class="col-md-3 col-form-label text-md-right">{{ $t('password') }}</label>
<div class="col-md-7">
<input v-model="form.password" :class="{ 'is-invalid': form.errors.has('password') }" class="form-control" type="password" name="password">
<has-error :form="form" field="password"/>
<!-- Password -->
<div class="form-group row">
<label class="col-md-3 col-form-label text-md-right">{{ $t('password') }}</label>
<div class="col-md-7">
<input v-model="form.password" :class="{ 'is-invalid': form.errors.has('password') }" class="form-control" type="password" name="password">
<has-error :form="form" field="password"/>
</div>
</div>
</div>
<!-- Password Confirmation -->
<div class="form-group row">
<label class="col-md-3 col-form-label text-md-right">{{ $t('confirm_password') }}</label>
<div class="col-md-7">
<input v-model="form.password_confirmation" :class="{ 'is-invalid': form.errors.has('password_confirmation') }" class="form-control" type="password" name="password_confirmation">
<has-error :form="form" field="password_confirmation"/>
<!-- Password Confirmation -->
<div class="form-group row">
<label class="col-md-3 col-form-label text-md-right">{{ $t('confirm_password') }}</label>
<div class="col-md-7">
<input v-model="form.password_confirmation" :class="{ 'is-invalid': form.errors.has('password_confirmation') }" class="form-control" type="password" name="password_confirmation">
<has-error :form="form" field="password_confirmation"/>
</div>
</div>
</div>
<!-- Submit Button -->
<div class="form-group row">
<div class="col-md-9 ml-md-auto">
<v-button :loading="form.busy">
{{ $t('reset_password') }}
</v-button>
<!-- Submit Button -->
<div class="form-group row">
<div class="col-md-9 ml-md-auto">
<v-button :loading="form.busy">
{{ $t('reset_password') }}
</v-button>
</div>
</div>
</div>
</form>
</card>
</form>
</card>
</div>
</div>
</div>
</template>
+65 -63
View File
@@ -1,77 +1,79 @@
<template>
<div class="row">
<div class="col-lg-8 m-auto">
<card :title="$t('register')">
<form @submit.prevent="register" @keydown="form.onKeydown($event)">
<!-- Marking -->
<div class="form-group row" :class="{'has-error': errors.has('marking') }">
<label class="col-md-3 col-form-label text-md-right">{{ $t('Marking') }}</label>
<div class="col-md-7">
<el-input v-model="form.marking" v-validate="'required|max:255'" type="text" name="marking" placeholder="Marking Number">
</el-input>
<span class="text-danger" v-if="errors.has('marking')">{{ errors.first('marking') }}<br/></span>
<div class="container">
<div class="row">
<div class="col-lg-8 m-auto">
<card :title="$t('register')">
<form @submit.prevent="register" @keydown="form.onKeydown($event)">
<!-- Marking -->
<div class="form-group row" :class="{'has-error': errors.has('marking') }">
<label class="col-md-3 col-form-label text-md-right">{{ $t('Marking') }}</label>
<div class="col-md-7">
<el-input v-model="form.marking" v-validate="'required|max:255'" type="text" name="marking" placeholder="Marking Number">
</el-input>
<span class="text-danger" v-if="errors.has('marking')">{{ errors.first('marking') }}<br/></span>
</div>
</div>
</div>
<!-- Email -->
<div class="form-group row" :class="{'has-error': errors.has('email') }">
<label class="col-md-3 col-form-label text-md-right">{{ $t('email') }}</label>
<div class="col-md-7">
<el-input v-model="form.email" v-validate="'required|max:255'" type="email" name="email" placeholder="Email">
</el-input>
<span class="text-danger" v-if="errors.has('email')">{{ errors.first('email') }}</span>
<!-- Email -->
<div class="form-group row" :class="{'has-error': errors.has('email') }">
<label class="col-md-3 col-form-label text-md-right">{{ $t('email') }}</label>
<div class="col-md-7">
<el-input v-model="form.email" v-validate="'required|max:255'" type="email" name="email" placeholder="Email">
</el-input>
<span class="text-danger" v-if="errors.has('email')">{{ errors.first('email') }}</span>
</div>
</div>
</div>
<!-- Password -->
<div class="form-group row" :class="{'has-error': errors.has('password') }">
<label class="col-md-3 col-form-label text-md-right">{{ $t('password') }}</label>
<div class="col-md-7">
<el-input v-if="password_visible" v-model="form.password" v-validate="'required|min:6|max:255'" type="text" name="password" placeholder="Password">
<template slot="append">
<el-button type="primary" @click="password_visible = !password_visible"><i class="fas fa-eye"></i></el-button>
</template>
</el-input>
<el-input v-else v-model="form.password" v-validate="'required|min:6|max:255'" type="password" name="password" placeholder="Password">
<template slot="append">
<el-button type="primary" @click="password_visible = !password_visible"><i class="fas fa-eye-slash"></i></el-button>
</template>
</el-input>
<span class="text-danger" v-if="errors.has('password')">{{ errors.first('password') }}</span>
<!-- Password -->
<div class="form-group row" :class="{'has-error': errors.has('password') }">
<label class="col-md-3 col-form-label text-md-right">{{ $t('password') }}</label>
<div class="col-md-7">
<el-input v-if="password_visible" v-model="form.password" v-validate="'required|min:6|max:255'" type="text" name="password" placeholder="Password">
<template slot="append">
<el-button type="primary" @click="password_visible = !password_visible"><i class="fas fa-eye"></i></el-button>
</template>
</el-input>
<el-input v-else v-model="form.password" v-validate="'required|min:6|max:255'" type="password" name="password" placeholder="Password">
<template slot="append">
<el-button type="primary" @click="password_visible = !password_visible"><i class="fas fa-eye-slash"></i></el-button>
</template>
</el-input>
<span class="text-danger" v-if="errors.has('password')">{{ errors.first('password') }}</span>
</div>
</div>
</div>
<!-- Password Confirmation -->
<div class="form-group row" :class="{'has-error': errors.has('confirm_password') }">
<label class="col-md-3 col-form-label text-md-right">{{ $t('confirm_password') }}</label>
<div class="col-md-7">
<el-input v-if="password_confirmation_visible" v-model="form.password_confirmation" v-validate="'required|min:6|max:255'" type="text" name="password_confirmation" placeholder="Confirm Password">
<template slot="append">
<el-button type="primary" @click="password_confirmation_visible = !password_confirmation_visible"><i class="fas fa-eye"></i></el-button>
</template>
</el-input>
<el-input v-else v-model="form.password_confirmation" v-validate="'required|min:6|max:255'" type="password" name="password_confirmation" placeholder="Confirm Password">
<template slot="append">
<el-button type="primary" @click="password_confirmation_visible = !password_confirmation_visible"><i class="fas fa-eye-slash"></i></el-button>
</template>
</el-input>
<span class="text-danger" v-if="errors.has('password_confirmation')">{{ errors.first('password_confirmation') }}<br/></span>
<!-- Password Confirmation -->
<div class="form-group row" :class="{'has-error': errors.has('confirm_password') }">
<label class="col-md-3 col-form-label text-md-right">{{ $t('confirm_password') }}</label>
<div class="col-md-7">
<el-input v-if="password_confirmation_visible" v-model="form.password_confirmation" v-validate="'required|min:6|max:255'" type="text" name="password_confirmation" placeholder="Confirm Password">
<template slot="append">
<el-button type="primary" @click="password_confirmation_visible = !password_confirmation_visible"><i class="fas fa-eye"></i></el-button>
</template>
</el-input>
<el-input v-else v-model="form.password_confirmation" v-validate="'required|min:6|max:255'" type="password" name="password_confirmation" placeholder="Confirm Password">
<template slot="append">
<el-button type="primary" @click="password_confirmation_visible = !password_confirmation_visible"><i class="fas fa-eye-slash"></i></el-button>
</template>
</el-input>
<span class="text-danger" v-if="errors.has('password_confirmation')">{{ errors.first('password_confirmation') }}<br/></span>
</div>
</div>
</div>
<div class="form-group row">
<div class="col-md-7 offset-md-3 d-flex">
<!-- Submit Button -->
<v-button :loading="form.busy" :disabled="errors.any() || form.password=='' || form.password_confirmation=='' || form.email=='' || form.marking=='' ? true : false">
{{ $t('register') }}
</v-button>
<div class="form-group row">
<div class="col-md-7 offset-md-3 d-flex">
<!-- Submit Button -->
<v-button :loading="form.busy" :disabled="errors.any() || form.password=='' || form.password_confirmation=='' || form.email=='' || form.marking=='' ? true : false">
{{ $t('register') }}
</v-button>
<!-- GitHub Register Button -->
<login-with-github/>
<!-- GitHub Register Button -->
<login-with-github/>
</div>
</div>
</div>
</form>
</card>
</form>
</card>
</div>
</div>
</div>
</template>
+10 -8
View File
@@ -1,13 +1,15 @@
<template>
<card class="text-center">
<h3 class="mb-4">{{ $t('page_not_found') }}</h3>
<div class="container">
<card class="text-center">
<h3 class="mb-4">{{ $t('page_not_found') }}</h3>
<div class="links">
<router-link :to="{ name: 'home' }">
{{ $t('go_home') }}
</router-link>
</div>
</card>
<div class="links">
<router-link :to="{ name: 'home' }">
{{ $t('go_home') }}
</router-link>
</div>
</card>
</div>
</template>
<script>
-2
View File
@@ -1,7 +1,5 @@
<template>
<el-main>
<!-- Input-Amount -->
<el-row :gutter="20" type="flex" justify="center" align="middle">
<el-col :span="20">
@@ -44,10 +44,7 @@
</template>
<script type="text/javascript">
var axios = require('axios');
var client = axios.create({
baseURL: 'http://localhost:8000'
});
import axios from 'axios'
export default {
// TODO : update credit limit and timeout
@@ -71,12 +68,12 @@ export default {
methods :{
UpdateMalaysiaBankOption : function(){
var malaysiaBankData;
client.get('api/setting-malaysia-bank')
axios.get('/api/setting-malaysia-bank')
.then((response) => {
malaysiaBankData = response.data;
this.options_CIEF = malaysiaBankData.map(function(item){
return {
value : item.acc_no,
value : item.id,
label : item.acc_no,
};
});
@@ -93,12 +90,12 @@ export default {
},
UpdateChinaBankOption : function(){
var chinaBankData;
client.get('api/setting-beneficiary')
axios.get('/api/setting-beneficiary')
.then((response) => {
chinaBankData = response.data;
this.options_china_bank = chinaBankData.map(function(item){
return {
value : item.acc_no,
value : item.id,
label : item.acc_no,
};
});
@@ -114,7 +111,7 @@ export default {
});
},
UpdateActiveBankSetting : function(){
client.get('api/setting-active-bank')
axios.get('/api/setting-active-bank')
.then((response) => {
this.active_bank_setting = response.data;
})
@@ -130,7 +127,7 @@ export default {
},
EditActiveBankSetting : function(){
this.loading_btn = true;
client.put('/api/setting-active-bank', this.active_bank_setting)
axios.put('/api/setting-active-bank', this.active_bank_setting)
.then((response) => {
this.loading_btn = false;
this.$message({
@@ -125,10 +125,7 @@
</template>
<script>
var axios = require('axios');
var client = axios.create({
baseURL: 'http://localhost:8000'
});
import axios from 'axios'
export default {
data() {
@@ -157,7 +154,7 @@
methods: {
CreateBeneficiaries : function(){
this.AddDatadialogVisible = false;
client.post('api/setting-beneficiary', this.beneficiariesForm)
axios.post('/api/setting-beneficiary', this.beneficiariesForm)
.then((response) => {
this.DoneAddDatadialogVisible = true;
this.ClearBeneficiariesForm();
@@ -175,7 +172,7 @@
});
},
UpdateTableData : function(){
client.get('api/setting-beneficiary', this.beneficiariesForm)
axios.get('/api/setting-beneficiary', this.beneficiariesForm)
.then((response) => {
this.tableData = response.data;
})
@@ -191,7 +188,7 @@
},
DeleteBeneficiaries : function(beneficiaries_id){
this.DeleteAdddialogVisible = true;
client.delete('api/setting-beneficiary/' + beneficiaries_id)
axios.delete('/api/setting-beneficiary/' + beneficiaries_id)
.then((response) => {
this.UpdateTableData();
})
@@ -209,7 +206,7 @@
this.EditDatadialogVisible = false;
this.DoneUpdateDatadialogVisible = true;
client.put('api/setting-beneficiary/' + this.currentEdit, this.beneficiariesForm)
axios.put('/api/setting-beneficiary/' + this.currentEdit, this.beneficiariesForm)
.then((response) => {
this.UpdateTableData();
})
@@ -125,10 +125,7 @@
</template>
<script>
var axios = require('axios');
var client = axios.create({
baseURL: 'http://localhost:8000'
});
import axios from 'axios'
export default {
data() {
@@ -157,7 +154,7 @@
methods: {
CreateMalaysiaBank : function(){
this.AddDatadialogVisible = false;
client.post('api/setting-malaysia-bank', this.malaysiaBankForm)
axios.post('/api/setting-malaysia-bank', this.malaysiaBankForm)
.then((response) => {
this.DoneAddDatadialogVisible = true;
this.ClearMalaysiaBankForm();
@@ -175,7 +172,7 @@
});
},
UpdateTableData : function(){
client.get('api/setting-malaysia-bank', this.malaysiaBankForm)
axios.get('/api/setting-malaysia-bank', this.malaysiaBankForm)
.then((response) => {
this.tableData = response.data;
})
@@ -191,7 +188,7 @@
},
DeleteMalaysiaBank : function(malaysiaBank_id){
this.DeleteAdddialogVisible = true;
client.delete('api/setting-malaysia-bank/' + malaysiaBank_id)
axios.delete('/api/setting-malaysia-bank/' + malaysiaBank_id)
.then((response) => {
this.UpdateTableData();
})
@@ -208,7 +205,7 @@
EditMalaysiaBank : function(){
this.EditDatadialogVisible = false;
this.DoneUpdateDatadialogVisible = true;
client.put('api/setting-malaysia-bank/' + this.currentEdit, this.malaysiaBankForm)
axios.put('/api/setting-malaysia-bank/' + this.currentEdit, this.malaysiaBankForm)
.then((response) => {
this.UpdateTableData();
})
@@ -18,10 +18,7 @@
</template>
<script>
var axios = require('axios');
var client = axios.create({
baseURL: 'http://localhost:8000'
});
import axios from 'axios'
export default {
data() {
@@ -35,7 +32,7 @@
},
methods: {
CreateMarking : function(){
client.post('api/setting-marking', this.markingForm)
axios.post('/api/setting-marking', this.markingForm)
.then((response) => {
this.loading_btn = false
this.$message({
@@ -32,11 +32,11 @@
<el-input v-model="supplierForm.gst_no" v-validate="'required|max:191'" name="gst_no"></el-input>
<span class="error-message text-danger" v-if="errors.has('gst_no')">{{ errors.first('gst_no') }}<br/></span>
</el-form-item>
<el-form-item label="Bank Name":class="{'has-error': errors.has('bank_name') }">
<el-form-item label="Bank Name" :class="{'has-error': errors.has('bank_name') }">
<el-input v-model="supplierForm.bank_name" v-validate="'required|max:191'" name="bank_name"></el-input>
<span class="error-message text-danger" v-if="errors.has('bank_name')">{{ errors.first('bank_name') }}<br/></span>
</el-form-item>
<el-form-item label="Account No":class="{'has-error': errors.has('acc_no') }">
<el-form-item label="Account No" :class="{'has-error': errors.has('acc_no') }">
<el-input v-model="supplierForm.acc_no" v-validate="'required|max:191'" name="acc_no"></el-input>
<span class="error-message text-danger" v-if="errors.has('acc_no')">{{ errors.first('acc_no') }}<br/></span>
</el-form-item>
@@ -68,11 +68,11 @@
<el-input v-model="supplierForm.gst_no" v-validate="'required|max:191'" name="gst_no"></el-input>
<span class="error-message text-danger" v-if="errors.has('gst_no')">{{ errors.first('gst_no') }}<br/></span>
</el-form-item>
<el-form-item label="Bank Name":class="{'has-error': errors.has('bank_name') }">
<el-form-item label="Bank Name" :class="{'has-error': errors.has('bank_name') }">
<el-input v-model="supplierForm.bank_name" v-validate="'required|max:191'" name="bank_name"></el-input>
<span class="error-message text-danger" v-if="errors.has('bank_name')">{{ errors.first('bank_name') }}<br/></span>
</el-form-item>
<el-form-item label="Account No":class="{'has-error': errors.has('acc_no') }">
<el-form-item label="Account No" :class="{'has-error': errors.has('acc_no') }">
<el-input v-model="supplierForm.acc_no" v-validate="'required|max:191'" name="acc_no"></el-input>
<span class="error-message text-danger" v-if="errors.has('acc_no')">{{ errors.first('acc_no') }}<br/></span>
</el-form-item>
@@ -101,10 +101,7 @@
</template>
<script>
var axios = require('axios');
var client = axios.create({
baseURL: 'http://localhost:8000'
});
import axios from 'axios'
export default {
data() {
+26 -24
View File
@@ -1,34 +1,36 @@
<template>
<card :title="$t('your_info')">
<form @submit.prevent="update" @keydown="form.onKeydown($event)">
<alert-success :form="form" :message="$t('info_updated')"/>
<div class="container">
<card :title="$t('your_info')">
<form @submit.prevent="update" @keydown="form.onKeydown($event)">
<alert-success :form="form" :message="$t('info_updated')"/>
<!-- Name -->
<div class="form-group row">
<label class="col-md-3 col-form-label text-md-right">{{ $t('name') }}</label>
<div class="col-md-7">
<input v-model="form.name" :class="{ 'is-invalid': form.errors.has('name') }" class="form-control" type="text" name="name">
<has-error :form="form" field="name"/>
<!-- Name -->
<div class="form-group row">
<label class="col-md-3 col-form-label text-md-right">{{ $t('name') }}</label>
<div class="col-md-7">
<input v-model="form.name" :class="{ 'is-invalid': form.errors.has('name') }" class="form-control" type="text" name="name">
<has-error :form="form" field="name"/>
</div>
</div>
</div>
<!-- Email -->
<div class="form-group row">
<label class="col-md-3 col-form-label text-md-right">{{ $t('email') }}</label>
<div class="col-md-7">
<input v-model="form.email" :class="{ 'is-invalid': form.errors.has('email') }" class="form-control" type="email" name="email">
<has-error :form="form" field="email" />
<!-- Email -->
<div class="form-group row">
<label class="col-md-3 col-form-label text-md-right">{{ $t('email') }}</label>
<div class="col-md-7">
<input v-model="form.email" :class="{ 'is-invalid': form.errors.has('email') }" class="form-control" type="email" name="email">
<has-error :form="form" field="email" />
</div>
</div>
</div>
<!-- Submit Button -->
<div class="form-group row">
<div class="col-md-9 ml-md-auto">
<v-button :loading="form.busy" type="success">{{ $t('update') }}</v-button>
<!-- Submit Button -->
<div class="form-group row">
<div class="col-md-9 ml-md-auto">
<v-button :loading="form.busy" type="success">{{ $t('update') }}</v-button>
</div>
</div>
</div>
</form>
</card>
</form>
</card>
</div>
</template>
<script>
+23 -37
View File
@@ -1,5 +1,5 @@
<template>
<div>
<div class="container">
<div class="top-right links">
<template v-if="authenticated">
<router-link :to="{ name: 'home' }">
@@ -15,52 +15,38 @@
</router-link>
</template>
</div>
<div class="text-center">
<div class="title mb-4">
{{ title }}
</div>
<div class="links">
<a href="https://laravel.com/docs">Documentation</a>
<a href="https://laracasts.com">Laracasts</a>
<a href="https://laravel-news.com">News</a>
<a href="https://forge.laravel.com">Forge</a>
<a href="https://github.com/laravel/laravel">GitHub</a>
</div>
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import { mapGetters } from 'vuex'
export default {
middleware: 'guest',
layout: 'basic',
export default {
middleware: 'guest',
layout: 'basic',
metaInfo () {
return { title: this.$t('home') }
},
metaInfo () {
return { title: this.$t('home') }
},
data: () => ({
title: window.config.appName
}),
data: () => ({
title: window.config.appName
}),
computed: mapGetters({
authenticated: 'auth/check'
})
}
computed: mapGetters({
authenticated: 'auth/check'
})
}
</script>
<style scoped>
.top-right {
position: absolute;
right: 10px;
top: 18px;
}
.top-right {
position: absolute;
right: 10px;
top: 18px;
}
.title {
font-size: 85px;
}
.title {
font-size: 85px;
}
</style>
+2 -2
View File
@@ -36,7 +36,7 @@ const adminCompleted = () => import('~/pages/admin/booking/completed').then(m =>
// Admin pages
const AdminHome = () => import('~/pages/admin/home').then(m => m.default || m)
const AdminCompleteOrder = () => import('~/pages/admin/complete-order').then(m => m.default || m)
const AdminCompleteOrder = () => import('~/pages/admin/complete-orders').then(m => m.default || m)
const TransactionHistory = () => import('~/pages/admin/transaction-history').then(m => m.default || m)
const UploadSupplierBankSlip = () => import('~/pages/admin/upload-supplier-bank-slip').then(m => m.default || m)
@@ -81,7 +81,7 @@ export default [
// Admin pages
{ path: '/admin', name: 'admin.home', component: AdminHome },
{ path: '/admin/complete-order', name: 'admin.complete', component: AdminCompleteOrder },
{ path: '/admin/complete-orders', name: 'admin.complete', component: AdminCompleteOrder },
{ path: '/admin/transaction-history', name: 'admin.transaction-history', component: TransactionHistory },
{ path: '/admin/upload-supplier-bank-slip', name: 'admin.upload-supplier-bank-slip', component: UploadSupplierBankSlip },
{ path: '*', name: 'notfound', component: NotFound }
+1
View File
@@ -109,6 +109,7 @@ Route::group(['middleware' => ['role:admin']], function() {
Route::post('booking/{id}/upload-invoice', 'BookingController@uploadInvoice');
Route::post('booking/{id}/confirm-invoice', 'BookingController@confirmInvoice');
Route::get('admin/complete-orders', 'BookingController@adminShowCompletedOrders');
// for both user and admin
Route::get('setting-active-bank', 'SettingActiveBankController@index');
Route::get('setting-malaysia-bank/{malaysiaBank}', 'SettingMalaysiaBankController@show');
File diff suppressed because it is too large Load Diff