mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange.git
synced 2026-08-24 14:54:38 +00:00
Merge branch 'master' of gitlab.com:CIEFWorldwideSdnBhd/exchange
This commit is contained in:
+11
-11
@@ -1,14 +1,14 @@
|
||||
/node_modules
|
||||
/public/hot
|
||||
/public/storage
|
||||
/public/js
|
||||
/public/css
|
||||
/public/mix-manifest.json
|
||||
/storage/*.key
|
||||
/vendor/**
|
||||
/.idea
|
||||
/.vscode
|
||||
/.vagrant
|
||||
node_modules
|
||||
public/hot
|
||||
public/storage
|
||||
public/js
|
||||
public/css
|
||||
public/mix-manifest.json
|
||||
storage/*.key
|
||||
vendor/**
|
||||
.idea
|
||||
.vscode
|
||||
.vagrant
|
||||
/data
|
||||
vendor/composer
|
||||
Homestead.json
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
# Changelog
|
||||
### 1.0.5-alpha 2018-09-03
|
||||
- Fixed 404 error on downloading PO format
|
||||
- Fixed admin step 2 404 error
|
||||
- Fixed all files 404 error
|
||||
- Updated sorting feature
|
||||
- Added marking column to admin completed table
|
||||
|
||||
### 1.0.4-alpha 2018-08-27
|
||||
- Updated bank setting dropdown list to [Beneficiary Name : bank name : bank account no]
|
||||
- Fixed some booking view status 404 error
|
||||
|
||||
@@ -23,8 +23,9 @@ class BookingController extends Controller
|
||||
|
||||
public function index(){
|
||||
$user = Auth::user();
|
||||
$bookings = Booking::select('user_id', 'id', 'created_at', 'status', 'rate', 'term', 'amount', 'bia', 'verification_status')
|
||||
$bookings = Booking::select('user_id', 'id', 'created_at', 'is_cancel', 'status', 'rate', 'term', 'amount', 'bia', 'verification_status')
|
||||
->where('user_id', Auth::user()->id)
|
||||
->where('is_cancel', 0)
|
||||
->where(function ($query) {
|
||||
$query->where(function($query){
|
||||
$query->where('status', '<', '5')
|
||||
@@ -45,6 +46,7 @@ class BookingController extends Controller
|
||||
})
|
||||
->orderby('updated_at','desc')
|
||||
->paginate(10);
|
||||
|
||||
|
||||
// reformat to fit frontend structure
|
||||
foreach ($bookings as $booking) {
|
||||
@@ -191,7 +193,7 @@ class BookingController extends Controller
|
||||
})
|
||||
|
||||
->orderby('updated_at','desc')
|
||||
->paginate(10);
|
||||
->paginate(30);
|
||||
|
||||
// reformat to fit frontend structure
|
||||
foreach ($bookings as $booking) {
|
||||
@@ -604,6 +606,7 @@ class BookingController extends Controller
|
||||
|
||||
|
||||
if($bankslip_file = $request->file('file'))
|
||||
|
||||
{
|
||||
/* End Validation */
|
||||
$filename = $bankslip_file->getClientOriginalName();
|
||||
@@ -649,7 +652,12 @@ class BookingController extends Controller
|
||||
|
||||
if(!$user_bankslip){
|
||||
return response()->json(["message"=> "not found"],400);
|
||||
}
|
||||
}
|
||||
|
||||
// validate transfer amount exist
|
||||
if(!$request->input('transfer_amount')){
|
||||
return response()->json(['message' => 'Please input amount'], 400);
|
||||
}
|
||||
|
||||
// update booking status
|
||||
$booking->status = 3;
|
||||
@@ -742,10 +750,10 @@ class BookingController extends Controller
|
||||
{
|
||||
return response()->json(['message'=>'Access denied'],403);
|
||||
}
|
||||
|
||||
|
||||
$booking->is_cancel = true;
|
||||
$booking->save();
|
||||
|
||||
|
||||
return response()->json(['message'=>'Success'],200);
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -50,8 +50,10 @@
|
||||
"eslint": "^4.19.1",
|
||||
"laravel-mix": "^2.1.14",
|
||||
"vue-template-compiler": "^2.5.16",
|
||||
"vuepress": "^0.14.2",
|
||||
"webpack": "^3.11.0",
|
||||
"webpack-bundle-analyzer": "^2.13.1",
|
||||
"webpack-cli": "^3.0.8"
|
||||
"webpack-cli": "^3.0.8",
|
||||
"webpack-dev-server": "^3.1.8"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,4 +4,4 @@
|
||||
"/js/lang-en.0f790217417404ecc662.js": "/js/lang-en.0f790217417404ecc662.js",
|
||||
"/js/app.js": "/js/app.js",
|
||||
"/css/app.css": "/css/app.css"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
<el-tab-pane label="Booking Table">
|
||||
<el-row :gutter="20">
|
||||
<div>
|
||||
<el-table :data="bookingTable">
|
||||
<el-table-column label="Ref No." width="100">
|
||||
<el-table :data="bookingTable" :default-sort = "{prop: 'date', order: 'descending'}">
|
||||
<el-table-column label="Ref No." width="100" >
|
||||
<el-button size="mini" @click="handleEdit(scope.$index, scope.row)">Update</el-button>
|
||||
<el-button slot-scope="scope" type="text" @click="(event) => { BookingStatus(scope.row.admin_status, scope.row.id, scope.row.term) }"> {{ scope.row.id }}</el-button>
|
||||
</el-table-column>
|
||||
@@ -19,9 +19,9 @@
|
||||
<el-table-column label="Marking" width="120" prop="marking" />
|
||||
<el-table-column :filters="[{text: 'X1', value: 'X1'}, {text: 'X2', value: 'X2'}]" :filter-method="filterHandlerTerm" label="Term" prop="term" width="100"/>
|
||||
<el-table-column label="Rate" width="74" prop="rate" />
|
||||
<el-table-column label="Amount" prop="amount" justify="center" width="110" />
|
||||
<el-table-column label="Amount" prop="amount" justify="center" width="110" sortable />
|
||||
<el-table-column :filters="[{text: 'RMB', value: 'RMB'}, {text: 'USD', value: 'USD'}]" :filter-method="filterHandlerTranferAmount" label="Transfer Amount"
|
||||
prop="transfer_amount" width="170" />
|
||||
prop="transfer_amount" width="180" sortable/>
|
||||
<!-- <el-table-column label="ETA" sortable width="100"/> -->
|
||||
<!-- <el-table-column label="Payment Method" :filters="[{text: 'Cash', value: 'Cash'}, {text: 'Cheque', value: 'Cheque'}, {text: 'BA', value: 'BA'}]" :filter-method="filterHandler">
|
||||
</el-table-column> -->
|
||||
@@ -62,16 +62,17 @@
|
||||
<el-row :gutter="20">
|
||||
<div>
|
||||
<el-table :data="bookingTableComplete">
|
||||
<el-table-column label="Ref No." width="100">
|
||||
<el-table-column label="Ref No." width="100" >
|
||||
<el-button size="mini" @click="handleEdit(scope.$index, scope.row)">Update</el-button>
|
||||
<el-button slot-scope="scope" type="text" @click="(event) => { BookingStatus(scope.row.admin_status, scope.row.id, scope.row.term) }"> {{ scope.row.id }}</el-button>
|
||||
</el-table-column>
|
||||
<el-table-column label="DateTime" prop="created_at" width="180" sortable/>
|
||||
<el-table-column label="Marking" width="120" prop="marking" />
|
||||
<el-table-column :filters="[{text: 'X1', value: 'X1'}, {text: 'X2', value: 'X2'}]" :filter-method="filterHandlerTerm" label="Term" prop="term" width="100"/> -->
|
||||
<el-table-column label="Rate" width="74" prop="rate" />
|
||||
<el-table-column label="Amount" prop="amount" justify="center" width="110" />
|
||||
<el-table-column label="Amount" prop="amount" justify="center" width="110" sortable/>
|
||||
<el-table-column :filters="[{text: 'RMB', value: 'RMB'}, {text: 'USD', value: 'USD'}]" :filter-method="filterHandlerTranferAmount" label="Transfer Amount"
|
||||
prop="transfer_amount" width="170" />
|
||||
prop="transfer_amount" width="180" sortable/>
|
||||
<!-- <el-table-column label="ETA" sortable width="100"/> -->
|
||||
<!-- <el-table-column label="Payment Method" :filters="[{text: 'Cash', value: 'Cash'}, {text: 'Cheque', value: 'Cheque'}, {text: 'BA', value: 'BA'}]" :filter-method="filterHandler">
|
||||
</el-table-column> -->
|
||||
|
||||
@@ -65,24 +65,23 @@
|
||||
</el-upload>
|
||||
</div>
|
||||
</div>
|
||||
<!-- upload image end -->
|
||||
<div class="row bankinAmount">
|
||||
<div class="col">
|
||||
Bankin Amount (RM) :
|
||||
<br>
|
||||
<el-form ref="user_slip_form" :model="user_slip_form" :rules="rules">
|
||||
<el-form-item prop="transfer_amount">
|
||||
<el-input class="transferAmountInput" v-model="user_slip_form.transfer_amount" type="text" placeholder="Transfer Amount"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button :loading="loading" type="primary" @click="submitUserSlip('user_slip_form')">Submit</el-button>
|
||||
<router-link :to="{ name: 'home' }" class="small ml-auto my-auto">
|
||||
Upload Later
|
||||
</router-link>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<!-- upload image end -->
|
||||
<div class="row bankinAmount">
|
||||
<div class="col">
|
||||
Bankin Amount (RM) :<br>
|
||||
<el-form ref="user_slip_form" :model="user_slip_form" :rules="rules">
|
||||
<el-form-item prop="transfer_amount">
|
||||
<el-input class="transferAmountInput" v-model="user_slip_form.transfer_amount" type="text" placeholder="Transfer Amount"/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button :loading="loading" type="primary" @click="submitUserSlip('user_slip_form')">Submit</el-button>
|
||||
<router-link :to="{ name: 'home' }" class="small ml-auto my-auto">
|
||||
Next Order
|
||||
</router-link>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</el-main>
|
||||
</template>
|
||||
@@ -217,7 +216,8 @@
|
||||
this.booking.bankin_amount = response.data.bia;
|
||||
this.booking.timeout = response.data.timeout * 1000;
|
||||
this.booking.term = response.data.term;
|
||||
this.booking.status = response.data.status; this.trackerConfig.term = response.data.term
|
||||
this.booking.status = response.data.status;
|
||||
this.trackerConfig.term = response.data.term
|
||||
|
||||
if (response.data.user_bankslip_path) {
|
||||
this.booking.user_bankslip_path = response.data.user_bankslip_path
|
||||
@@ -334,6 +334,16 @@
|
||||
},
|
||||
submitUserSlip(formName) {
|
||||
this.loading = true
|
||||
if (this.booking.amount == '') {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: 'Please key in your bankin amount first.',
|
||||
type: 'warning',
|
||||
duration: 10000
|
||||
|
||||
})
|
||||
return;
|
||||
}
|
||||
this.$refs[formName].validate((valid) => {
|
||||
if (valid) {
|
||||
let newConfirmation = {
|
||||
@@ -361,19 +371,23 @@
|
||||
this.$router.push({
|
||||
name: 'home'
|
||||
})
|
||||
|
||||
})
|
||||
.catch((error) => {
|
||||
this.loading = false
|
||||
|
||||
}).catch((error) => {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: 'Please upload your bankin slip first.',
|
||||
type: 'warning',
|
||||
duration: 10000
|
||||
|
||||
})
|
||||
|
||||
|
||||
this.loading = false
|
||||
console.log(error)
|
||||
})
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
handleTimeExpire() {
|
||||
alert('Booking expired')
|
||||
},
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="dialogFormVisible = false">Cancel</el-button>
|
||||
<!-- <el-button @click="dialogFormVisible = false">Cancel</el-button> -->
|
||||
|
||||
<el-button :loading="loading" type="primary" @click="getCalculationValue('bookingForm')">Book Now</el-button>
|
||||
</el-form-item>
|
||||
@@ -286,28 +286,28 @@
|
||||
<el-row :gutter="20">
|
||||
<div>
|
||||
<el-table :data="bookingTable">
|
||||
<el-table-column label="Ref No." width="100">
|
||||
<el-table-column label="Ref No." width="100" >
|
||||
<el-button size="mini" @click="handleEdit(scope.$index, scope.row)">Update</el-button>
|
||||
<el-button slot-scope="scope" type="text" @click="(event) => { BookingStatus(scope.row.status, scope.row.id, scope.row.term) }"> {{ scope.row.id }}</el-button>
|
||||
</el-table-column>
|
||||
<el-table-column label="DateTime" prop="created_at" width="180" sortable/>
|
||||
<el-table-column :filters="[{text: 'X1', value: 'X1'}, {text: 'X2', value: 'X2'}]" :filter-method="filterHandler" label="Term" prop="term" width="100"/> -->
|
||||
<el-table-column label="Rate" width="74" prop="rate" />
|
||||
<el-table-column label="Amount" prop="amount" justify="center" width="110" />
|
||||
<el-table-column :filters="[{text: 'RMB', value: 'RMB'}, {text: 'USD', value: 'USD'}]" :filter-method="filterHandler" label="Transfer Amount"
|
||||
prop="transfer_amount" width="170" />
|
||||
<el-table-column label="Marking" width="120" prop="marking" />
|
||||
<el-table-column :filters="[{text: 'X1 cash', value: 'x1_cash'}, {text: 'X1 ba', value: 'x1_ba'}, {text: 'X1 cheque', value: 'x1_cheque'}]" :filter-method="filterHandler" label="Term" prop="term" width="100"/> -->
|
||||
<el-table-column label="Rate" width="100" prop="rate" sortable/>
|
||||
<el-table-column label="Amount" prop="amount" justify="center" width="110" sortable/>
|
||||
<el-table-column label="Transfer Amount" prop="transfer_amount" width="170" sortable/>
|
||||
<!-- <el-table-column label="ETA" sortable width="100"/> -->
|
||||
<!-- <el-table-column label="Payment Method" :filters="[{text: 'Cash', value: 'Cash'}, {text: 'Cheque', value: 'Cheque'}, {text: 'BA', value: 'BA'}]" :filter-method="filterHandler">
|
||||
</el-table-column> -->
|
||||
<!-- <el-table-column :filters="[{text: '(1/6)', value: '(1/6) Order Done'}, {text: '(2/6)', value: '(2/6) Waiting for Upload Bank in Slip'}, {text: '(3/6)', value: '(3/6) Order Confirmation'}, {text: '(4/6)', value: '(4/6) Processing Transfer'}, {text: '(5/6)', value: '(5/6) Waiting for Upload PO'}, {text: '(6/6)', value: '(6/6) Order Complete'}]" :filter-method="filterHandler" prop="status" label="Status"/> -->
|
||||
<el-table-column label="Status" width="106">
|
||||
<el-table-column label="Status" width="106" >
|
||||
<template slot-scope="scope">
|
||||
<el-popover trigger="click" placement="top">
|
||||
<p>{{ scope.row.status_desc }}</p>
|
||||
<div slot="reference" class="name-wrapper">
|
||||
<el-tag size="medium">{{ scope.row.track_status }}</el-tag>
|
||||
</div>
|
||||
</el-popover>
|
||||
</el-popover>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="Balance" prop="transfer_amount" sortable width="100"/> -->
|
||||
@@ -315,12 +315,17 @@
|
||||
<el-table-column :filters="[{ text: 'Success', value: 'Success' }, { text: 'Pending', value: 'Pending' }]" :filter-method="filterTag"
|
||||
label="" width="180" filter-placement="bottom-end">
|
||||
<el-button slot-scope="scope" type="text" @click="(event) => { BookingStatus(scope.row.status, scope.row.id, scope.row.term) }"> View Status </el-button>
|
||||
|
||||
|
||||
<!-- <template slot-scope="scope">
|
||||
<el-button size="mini" @click="handleEdit(scope.$index, scope.row)">View Status</el-button>
|
||||
<el-button size="mini" type="danger" @click="BookingStatus(scope.$index, scope.row)">Cancel</el-button>
|
||||
</template> -->
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column :filters="[{ text: 'Success', value: 'Success' }, { text: 'Pending', value: 'Pending' }]" :filter-method="filterTag"
|
||||
label="" width="180" filter-placement="bottom-end">
|
||||
<!-- <el-button slot-scope="scope" type="text" @click="(event) => { cancelBooking(scope.row.id) }"> Cancel Booking </el-button> -->
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div align="right">
|
||||
<el-button type="primary" size="mini" @click="fetchPaginateBooking(pagination.prev_page_url)" :disabled="!pagination.prev_page_url">
|
||||
@@ -338,16 +343,15 @@
|
||||
<el-row :gutter="20">
|
||||
<div>
|
||||
<el-table :data="bookingTableComplete">
|
||||
<el-table-column label="Ref No." width="100">
|
||||
<el-table-column label="Ref No." width="100" >
|
||||
<el-button size="mini" @click="handleEdit(scope.$index, scope.row)">Update</el-button>
|
||||
<el-button slot-scope="scope" type="text" @click="(event) => { BookingStatus(scope.row.status, scope.row.id) }"> {{ scope.row.id }}</el-button>
|
||||
</el-table-column>
|
||||
<el-table-column label="DateTime" prop="created_at" width="180" sortable/>
|
||||
<el-table-column :filters="[{text: 'X1', value: 'X1'}, {text: 'X2', value: 'X2'}]" :filter-method="filterHandler" label="Term" prop="term" width="100"/> -->
|
||||
<el-table-column label="Rate" width="74" prop="rate" />
|
||||
<el-table-column label="Amount" prop="amount" justify="center" width="110" />
|
||||
<el-table-column :filters="[{text: 'RMB', value: 'RMB'}, {text: 'USD', value: 'USD'}]" :filter-method="filterHandler" label="Transfer Amount"
|
||||
prop="transfer_amount" width="170" />
|
||||
<el-table-column :filters="[{text: 'X1 cash', value: 'x1_cash'}, {text: 'X1 ba', value: 'x1_ba'}, {text: 'X1 cheque', value: 'x1_cheque'}]" :filter-method="filterHandler" label="Term" prop="term" width="100"/> -->
|
||||
<el-table-column label="Rate" width="120" prop="rate" sortable/>
|
||||
<el-table-column label="Amount" prop="amount" justify="center" width="110" sortable />
|
||||
<el-table-column label="Transfer Amount" prop="transfer_amount" width="170" sortable/>
|
||||
<!-- <el-table-column label="ETA" sortable width="100"/> -->
|
||||
<!-- <el-table-column label="Payment Method" :filters="[{text: 'Cash', value: 'Cash'}, {text: 'Cheque', value: 'Cheque'}, {text: 'BA', value: 'BA'}]" :filter-method="filterHandler">
|
||||
</el-table-column> -->
|
||||
@@ -567,6 +571,13 @@ export default {
|
||||
$this.makePagination(response.data)
|
||||
})
|
||||
},
|
||||
cancelBooking(id){
|
||||
console.log(id)
|
||||
let $this = this
|
||||
axios.post("api/booking/"+id+"/cancel").then(response => {
|
||||
this.getBooking();
|
||||
})
|
||||
},
|
||||
getBookingTableComplete(){
|
||||
let $this = this
|
||||
axios.get(this.completeBookingurl).then(response => {
|
||||
|
||||
+2
-3
@@ -34,15 +34,14 @@ Route::group(['middleware' => 'auth:api'], function () {
|
||||
Route::delete('booking/{book_id}', 'BookingController@delete');
|
||||
Route::post('booking/', 'BookingController@store');
|
||||
Route::post('booking/calculation', 'BookingController@calculation');
|
||||
Route::post('booking/{book_id}/cancel', 'BookingController@cancel');
|
||||
Route::post('booking/{id}/cancel', 'BookingController@cancel');
|
||||
Route::post('booking/{id}/upload-user-bankslip', 'BookingController@uploadbankslip');
|
||||
Route::post('booking/{id}/upload-po', 'BookingController@uploadPurchaseOrder');
|
||||
Route::post('booking/{id}/confirm-po', 'BookingController@confirmPurchaseOrder');
|
||||
Route::patch('booking/{id}/bankslip-amount', 'BookingController@updateBankSlipAmount');
|
||||
Route::post('booking/{book_id}/reject-bank-slip','BookingController@rejectBankSlip');
|
||||
Route::post('booking/{book_id}/approve-bank-slip','BookingController@approveBankSlip');
|
||||
Route::post('booking/{book_id}/cancel', 'BookingController@cancel');
|
||||
Route::get('booking/', 'BookingController@index');
|
||||
Route::get('booking/', 'BookingController@index');
|
||||
Route::get('user-complete-booking', 'BookingController@userComplete');
|
||||
|
||||
Route::get('user', 'UserController@show');
|
||||
|
||||
Reference in New Issue
Block a user