new changes

This commit is contained in:
bitbucket 2023-08-05 10:40:19 +05:30
parent 01ed337967
commit ac400e2618
21 changed files with 16222 additions and 1467 deletions

View File

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
<widget id="io.ionic.starter" version="0.0.19" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<widget id="io.ionic.starter" version="0.0.35" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>vnms</name>
<description>An awesome Ionic/Cordova app.</description>
<author email="hi@ionicframework.com" href="http://ionicframework.com/">Ionic Framework Team</author>

17288
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -26,6 +26,7 @@
"@ionic/angular": "^6.1.9",
"@ionic/cli": "^7.1.1",
"@ionic/cordova-builders": "^7.0.0",
"@ionic/storage": "^4.0.0",
"@ionic/storage-angular": "^3.0.6",
"ionicons": "^6.0.3",
"ng2-charts": "^4.1.1",
@ -86,4 +87,4 @@
"android"
]
}
}
}

View File

@ -68,7 +68,7 @@
<ion-col > <span class="content">
{{user}}<br />
<span class="content-min content-sm">
<span class="content-min content-sm" style="text-transform:initial;">
{{user_email}}</span>
</span></ion-col>
@ -127,7 +127,7 @@
</ion-card>
<ion-row>
<ion-col style="text-align: center;"> v1.0</ion-col>
<ion-col style="text-align: center;"> v0.0.23</ion-col>
</ion-row>

View File

@ -4,7 +4,7 @@ import { Component } from '@angular/core';
import { Platform, NavController, MenuController } from '@ionic/angular';
import { SplashScreen } from '@awesome-cordova-plugins/splash-screen/ngx';
import { StatusBar } from '@awesome-cordova-plugins/status-bar/ngx';
import { Storage } from '@ionic/storage-angular';
import { Pages } from './interfaces/pages';
import { VnmsService } from './pages/vnms/vnms.service';
@Component({
@ -21,10 +21,10 @@ export class AppComponent {
constructor(
private platform: Platform,private menuCtrl: MenuController,
private splashScreen: SplashScreen,
private statusBar: StatusBar,
private statusBar: StatusBar,private storage: Storage,
public navCtrl: NavController,public _api:VnmsService,
) {
this.initStorage();
this._api.sideDetails_observable$.subscribe((res:any) => {
console.log('menu', res);
@ -118,7 +118,7 @@ export class AppComponent {
{
title: 'Our Services',
url: '/settings',
url: '/vnms-list',
direct: 'forward',
icon: 'cog',
src:'assets/assets/icon/menu/service-col.png',
@ -230,7 +230,7 @@ export class AppComponent {
{
title: 'Our Services',
url: '/settings',
url: '/vnms-list',
direct: 'forward',
icon: 'cog',
src:'assets/assets/icon/menu/service-col.png',
@ -248,27 +248,35 @@ export class AppComponent {
}
this.initializeApp();
console.log(this.user_role, this.appPages)
console.log(this.user_role, this.appPages )
}
initializeApp() {
this.platform.ready().then(() => {
this.statusBar.styleDefault();
this.splashScreen.hide();
}).catch(() => {});
}
async initStorage() {
await this.storage.create();
// Now the storage is ready for use
}
goToEditProgile() {
this.navCtrl.navigateForward('edit-profile');
}
logout() {
async logout() {
localStorage.clear();
await this.storage.clear();
this.navCtrl.navigateRoot('/authentication/login');
}
getImg(i:any,title:any){
console.log(title)
if(title =="Our Services"){
window.open("https://vnms.in/services/")
}
this.imgVal = i
this.imgVal = -10
this.closeMenu()

View File

@ -41,11 +41,7 @@ import { TokenInterceptor } from './guard/token.interceptor';
BrowserAnimationsModule,
HttpClientModule,
IonicStorageModule.forRoot({
name: '_mydb',
driverOrder: ['indexeddb', 'sqlite', 'websql'],
}),
IonicStorageModule.forRoot(),
// CacheModule.forRoot(),
// ImageNameModule,
LoginModule,

View File

@ -87,7 +87,7 @@
<ion-grid>
<ion-row>
<ion-col size="1"><ion-checkbox> </ion-checkbox></ion-col>
<ion-col size="1"><ion-checkbox (ionChange)="onCheckboxChange($event)"> </ion-checkbox></ion-col>
<ion-col size="10"> <span>Remember Me</span></ion-col>
</ion-row>

View File

@ -3,6 +3,8 @@ import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms'
import { AlertController, IonIcon, LoadingController, MenuController, NavController, ToastController } from '@ionic/angular';
import { AuthService } from '../auth.service';
import { VnmsService } from '../../vnms/vnms.service';
import { Storage } from '@ionic/storage-angular';
@Component({
selector: 'app-login',
@ -10,12 +12,12 @@ import { VnmsService } from '../../vnms/vnms.service';
styleUrls: ['./login.component.scss'],
})
export class LoginPage implements OnInit {
isChecked:any = false;
public onLoginForm: FormGroup;
showPassword: boolean = true;
passwordType: string = 'password';
passwordIcon: string = 'eye-off';
@ViewChild('eyeIcon', { static: false }) eyeIcon: ElementRef;
constructor(private renderer: Renderer2,
public navCtrl: NavController,
@ -23,15 +25,25 @@ export class LoginPage implements OnInit {
public toastCtrl: ToastController,
public alertCtrl: AlertController,
public loadingCtrl: LoadingController,
private formBuilder: FormBuilder,
private formBuilder: FormBuilder,public storage:Storage,
public _ser:AuthService,public _api:VnmsService
) { }
) {
this.initStorage();
}
ionViewWillEnter() {
this.menuCtrl.enable(false);
}
async initStorage() {
await this.storage.create();
// Now the storage is ready for use
}
async ngOnInit() {
ngOnInit() {
// this.storage = storage;
// this.onLoginForm = this.formBuilder.group({
// 'email': [null, Validators.compose([
@ -52,6 +64,82 @@ export class LoginPage implements OnInit {
// '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*_=+-]).{8,12}$'
// )])
});
let token = localStorage.getItem('user_token');
this.getItem('remember').then(tmp => {
if(tmp instanceof Object){
if(tmp.hasOwnProperty('email') && tmp.hasOwnProperty('password')){
this._ser.getLoginToken(tmp).subscribe(async (res:any) => {
console.log(res)
if(res.status == 200 || res.status == 'Logged in'){
if (res.token !== '') {
localStorage.setItem('user_token',res.token);
localStorage.setItem('user_role',res.role);
localStorage.setItem('user_name',res.userName);
localStorage.setItem('email',res.email);
localStorage.setItem('roleId',res.roleId);
localStorage.setItem('rolePk',res.rolePk);
this._api.sideDetails.next(res)
// localStorage.setItem('email',JSON.stringify(auth))
this.navCtrl.navigateRoot(['vnms-list']);
const toast = this.toastCtrl.create({
message: 'Welcome Back ..!',
duration: 1000,
position: 'bottom',
// closeButtonText: 'OK',
//showCloseButton: true
});
(await toast).present();
}
}else{
console.log('123')
const toast = this.toastCtrl.create({
message: res.message,
duration: 3000,
position: 'bottom',
// closeButtonText: 'OK',
//showCloseButton: true
});
(await toast).present();
// this.showToast('warning', 'Somthing is Wrong...!',res.message);
}
})
}
}
// console.log(tmp)
// tmp.login
// localStorage.setItem('user_token', tmp.login.token);
// localStorage.setItem('user_role', tmp.login.role);
// localStorage.setItem('user_name', tmp.login.userName);
// localStorage.setItem('email', tmp.login.email);
// localStorage.setItem('roleId', tmp.login.roleId);
// localStorage.setItem('rolePk', tmp.login.rolePk);
// localStorage.setItem('user_token',tmp.token);
// let remember:any = this.getItem('remember');
// console.log(token,tmp,remember)
// if(tmp.token != null && tmp.remember == true || tmp.token !="" && tmp.remember == true){
// this.navCtrl.navigateRoot(['vnms-list']);
// }
})
}
@ -60,7 +148,17 @@ export class LoginPage implements OnInit {
this.passwordType = this.passwordType === 'text' ? 'password' : 'text';
this.passwordIcon = this.passwordIcon === 'eye-off' ? 'eye' : 'eye-off';
}
onCheckboxChange(event: any) {
this.isChecked = event.detail.checked;
// Do something with the isChecked value
if (this.isChecked ) {
console.log('Checkbox is checked');
// Perform actions when checkbox is checked
} else {
console.log('Checkbox is unchecked');
// Perform actions when checkbox is unchecked
}
}
togglePasswordVisibility() {
this.showPassword = !this.showPassword;
// const eyeIconElement: ElementRef<HTMLElement> = this.eyeIcon;
@ -117,7 +215,8 @@ export class LoginPage implements OnInit {
}
goToHome() {
console.log("enter", this.onLoginForm.value)
console.log("enter", this.onLoginForm.value , )
let auth = { 'email': this.onLoginForm.value.email, 'password': this.onLoginForm.value.password};
localStorage.clear();
this._ser.getLoginToken(auth).subscribe(async (res:any) => {
@ -130,6 +229,22 @@ export class LoginPage implements OnInit {
localStorage.setItem('email',res.email);
localStorage.setItem('roleId',res.roleId);
localStorage.setItem('rolePk',res.rolePk);
localStorage.setItem('remember',this.isChecked);
const data = {
name: res.token,
remember: this.isChecked,
login:res
};
if(this.isChecked == true){
this.setItem('remember',auth)
this.storeData(auth)
}
this._api.sideDetails.next(res)
// localStorage.setItem('email',JSON.stringify(auth))
this.navCtrl.navigateRoot(['vnms-list']);
@ -168,8 +283,38 @@ export class LoginPage implements OnInit {
dismiss(){
}
async storeData(data:any) {
await this.storage.set('remember',data);
}
forget(){
this.navCtrl.navigateRoot(['authentication/forgetpass']);
}
async getItem(storage_key:any){
return this.storage.get(storage_key).then((res:any)=>{
return res
})
}
async setItem(data:any,storage_key:any){
// this.getItem(storage_key).then(old_data=>{
// let value
// if(old_data){
// value=old_data+data
// }
// else{
// value=data
// }
// this.storage.set(storage_key,value)
// })
await this.storage.set(storage_key,data);
}
clearItem(storage_key:any){
this.storage.remove(storage_key)
}
}

View File

@ -7,8 +7,8 @@ import { IonicModule } from '@ionic/angular';
import { MaterialModuleModule } from 'src/app/shared/material-module/material-module.module';
import { LoginPage } from './login.component';
import { OtpPageComponent } from '../otp-page/otp-page.component';
import { IonicStorageModule } from '@ionic/storage-angular';
@NgModule({
// declarations: [],
// imports: [
@ -19,6 +19,7 @@ import { OtpPageComponent } from '../otp-page/otp-page.component';
CommonModule,
FormsModule,
IonicModule.forRoot({}),
IonicStorageModule.forRoot(),
LoginRoutingModule,
MaterialModuleModule
],

View File

@ -71,8 +71,14 @@
<ion-row>
<ion-col class="title-text" >
<span class="title-text" style="text-transform: capitalize;"> +91 97909 42270 <br />
+91 91500 86990</span>
<span class="title-text" style="text-transform: capitalize;"> <a href="tel:+919790942270" style="color: #BA0404;">
+91 97909 42270</a> <br />
<a href="tel:+919150086990" style="color: #BA0404;">
+91 91500 86990</a>
</span>
</ion-col>
</ion-row>
@ -99,8 +105,8 @@
<ion-row>
<ion-col class="title-text" >
<span class="title-text" style="text-transform: capitalize;"> vnmedicals2k6@gmail.com<br />
vnmedicals@hotmail.com</span>
<span class="title-text" > <a style="text-transform: initial;" href="mailto:vnmedicals2k6@gmail.com">vnmedicals2k6@gmail.com</a><br />
<a href="mailto:vnmedicals@hotmail.com" style="text-transform: initial;">vnmedicals@hotmail.com</a> </span>
</ion-col>
</ion-row>

View File

@ -6,7 +6,9 @@ font-style: normal;
font-weight: 500;
line-height: 30px;
}
a {
text-decoration: none !important;
}
.title-text{
color: #BA0404;
font-size: 16px;

View File

@ -18,7 +18,7 @@ export class ReturnOrderComponent implements OnInit {
quantity:any =[];
deliveredData :any =[];
inputFieldGroups: {product:string, qty: string, productSpec: string }[] = [{product:'', qty: '0', productSpec: '' }];
inputFieldGroups: {product:string, qty: any, productSpec: string }[] = [{product:'', qty: '0', productSpec: '' }];
constructor(
public navCtrl: NavController,private modalController: ModalController,private route: ActivatedRoute,
public loadingCtrl: LoadingController, public alertCtrl: AlertController,
@ -205,9 +205,38 @@ incrementQty(data:any,i:any){
console.log(data)
}
addInputFieldGroup() {
async addInputFieldGroup() {
let tmp =[]
this.inputFieldGroups.forEach(element => {
if(element.productSpec == "" || element.product == ""){
tmp.push(1)
}
});
console.log( this.inputFieldGroups)
if(tmp.length==0){
this.inputFieldGroups.push({product:'', qty: 1, productSpec: '' });
}else{
const alert = await this.alertCtrl.create({
header: 'Alert',
// subHeader: 'Subtitle',
message: 'Please Fill Mandatory Fields',
buttons: ['OK']
});
await alert.present();
}
console.log( this.inputFieldGroups)
this.inputFieldGroups.push({product:'', qty: '0', productSpec: '' }); // Add a new input field group to the array
//this.inputFieldGroups.push({product:'', qty: '0', productSpec: '' }); // Add a new input field group to the array
// this.childButtonEvent.emit( this.inputFieldGroups);
}
@ -223,8 +252,9 @@ val(data:any){
console.log('enter')
this.inputFieldGroups
let product= this.inputFieldGroups.filter((arr:any)=>{return arr.qty != 0})
let product= this.inputFieldGroups.filter((arr:any)=>{return arr.qty != "" && arr.qty != 0 && arr.productSpec != ""})
console.log(product)
let temp:any =[]
this.orderId = localStorage.getItem('orderId')
let cus = localStorage.getItem('cusId')
@ -254,13 +284,17 @@ val(data:any){
if (res.status == 200) {
console.log(res)
let paramData ={product:temp}
this._api.CreateReturn (paramData).subscribe(async res => {
if(temp.length>0){
} this._api.CreateReturn (paramData).subscribe(async res => {
if (res.status == 200) {
console.log(res)
}
})
this.navCtrl.navigateRoot(['/driver-list/list/return/placed']);
const toast = this.toastCtrl.create({
message: 'Your Order '+this.orderId+' has been Delivered...!',

View File

@ -60,12 +60,15 @@
<ion-item>
<ion-label color="dark" position="stacked">New Password:</ion-label>
<ion-input inputmode="text" type="password" formControlName="password" placeholder="New Password"></ion-input>
<ion-input inputmode="text" type="text" formControlName="password" placeholder="New Password" (keyup)="check()"></ion-input>
</ion-item>
<ion-item>
<ion-label color="dark" position="stacked">Confirm Password:</ion-label>
<ion-input inputmode="text" type="password" formControlName="password2" placeholder="Confirm Password"></ion-input>
<ion-input inputmode="text" type="text" formControlName="password2" placeholder="Confirm Password" ></ion-input>
<p *ngIf="userForm.get('password2').value !='' && userForm.get('password2').value != userForm.get('password').value" (keyup)="check2()" style="color:red">
Passwords do not match
</p>
</ion-item>
<ion-item>
@ -127,7 +130,8 @@
</ion-row>
</ion-grid>
</form>
<ion-button size="large" expand="full" color="dark" [disabled]="!userForm.valid" (click)="sendData()" no-margin>Update</ion-button>
<ion-button size="large" expand="full" color="dark" [disabled]="!userForm.valid " (click)="sendData()" no-margin>Update</ion-button>
</ion-card>
<div padding>

View File

@ -14,6 +14,7 @@ export class EditProfilePage implements OnInit {
user_role:any =[];
userForm:any =[];
formData:any =[];
checkType:any = false;
constructor(
public navCtrl: NavController,public _api:VnmsService,
public loadingCtrl: LoadingController,
@ -39,10 +40,10 @@ export class EditProfilePage implements OnInit {
'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,63}$',
)]),
// password: new FormControl('', [Validators.required, Validators.minLength(6)]),
password: new FormControl('', [Validators.pattern(
password: new FormControl('', [ Validators.pattern(
'^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*_=+-]).{8,16}$'
)]),
password2: new FormControl('', [Validators.pattern(
password2: new FormControl('', [ Validators.pattern(
'^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*_=+-]).{8,16}$'
)]),
});
@ -79,6 +80,8 @@ export class EditProfilePage implements OnInit {
if(tmp.password != null && tmp.password2 != null){
if(tmp.password == tmp.password2){
this.formData.append('password', tmp.password);
}else{
return
}
}
@ -93,7 +96,8 @@ export class EditProfilePage implements OnInit {
this._api.addUserFormDetails (this.formData).subscribe((res:any) => {
if (res.status == 200) {
console.log(res)
this.navCtrl.navigateForward('/vnms-list');
}else{
}
@ -113,12 +117,45 @@ console.log(res)
// });
// toast.present();
this.navCtrl.navigateForward('/home-results');
});
}
onSubmit(){
console.log(this.userForm.value)
}
check(){
let ans = this.userForm.value
if(ans.password !=""){
this.userForm.controls["password2"].setValidators(Validators.required);
this.userForm.controls["password2"].updateValueAndValidity();
}else{
this.userForm.controls['password2'].clearValidators();
this.userForm.controls['password2'].updateValueAndValidity();
}
// this.userForm.get('password2').addValidators(Validators.required);
}
check2(){
// let ans = this.userForm.value
// if(ans.password !=ans.password2){
// this.userForm.controls["password2"].setValidators(Validators.required,Validators.maxLength(8));
// this.userForm.controls["password2"].updateValueAndValidity();
// }else{
// this.userForm.controls['password2'].clearValidators();
// this.userForm.controls['password2'].updateValueAndValidity();
// }
// this.userForm.get('password2').addValidators(Validators.required);
}
}

View File

@ -77,13 +77,15 @@
<ion-row>
<ion-col size="6">
<ion-card>
<a href="https://vnms.in/services/">
<ion-card-content (mouseover)="changeImageSrc3(true)" (mouseout)="changeImageSrc3(false)">
<img [src]="imageSrc3"> <br />
Our <br />
Services
<!-- Card 3 content here -->
</ion-card-content>
</a>
</ion-card>
</ion-col>
<ion-col size="6">

View File

@ -59,7 +59,9 @@
font-size: 22px;
margin-top: 5px;
}
a {
text-decoration: none !important;
}
ion-content #background-content {
background: none !important;
}

View File

@ -267,6 +267,27 @@ onChange(data:any,index:any){
async viewData(){
this.inputFieldGroups
console.log(this.inputFieldGroups )
let tmp =[]
this.inputFieldGroups.forEach(element => {
if(element.json.productName != "Mixed Gas"){
this.filterProduct.push(element.json.productName)
}else{
if(element.productSpec == ""){
tmp.push(1)
}
}
});
console.log( this.inputFieldGroups, this.filterProduct)
if(tmp.length==0){
let product= this.inputFieldGroups.filter((arr:any)=>{return arr.qty != 0})
let product2= product.filter((arr:any)=>{return arr.json != ''})
@ -284,8 +305,26 @@ onChange(data:any,index:any){
message: 'Please Select this Fields',
buttons: ['OK']
});
await alert.present();
}
}else{
// const alert = await this.alertCtrl.create({
// header: 'Alert',
// subHeader: 'Subtitle',
// message: 'Please Enter Specification Fields',
// buttons: ['OK']
// });
const alert = await this.alertCtrl.create({
header: 'Alert',
subHeader: 'Important message',
message: 'Please Enter Specification Fields',
buttons: ['OK'],
});
await alert.present();
}
}
check(param:any){
//console.log(param['product'].productName)

View File

@ -40,6 +40,10 @@
<ion-col size="12" class="tex-wm" >
<span style="text-transform: capitalize;"> Placed on {{createdAt }}</span>
</ion-col>
<ion-col size="12" class="tex-wm" >
<span style="text-transform: capitalize;"> Customer Name {{customer }}</span>
</ion-col>
</ion-row>
</ion-grid>
@ -98,14 +102,14 @@
<span class="stepper-line"></span>
</li>
<li class="stepper-item" [class.complete]="isProcessingOrder">
<!-- <li class="stepper-item" [class.complete]="isProcessingOrder">
<span class="stepper-counter"></span>
<span href="#" class="stepper-link" [class.complete]="!isProcessingOrder">
<span>Processing your order <br />
<span *ngIf="isProcessingOrder" class="info-date">{{updateAt }}</span></span>
</span>
<span class="stepper-line"></span>
</li>
</li> -->
<li class="stepper-item" [class.complete]="isOutForDelivery">
<span class="stepper-counter"></span>
<span href="#" class="stepper-link">

View File

@ -18,6 +18,7 @@ export class ViewOrderComponent implements OnInit {
isProcessingOrder: boolean = false;
isOutForDelivery: boolean = false;
isDelivered: boolean = false;
customer:any =[];
constructor( public alertCtrl: AlertController,public _api:VnmsService, public navCtrl: NavController,private _formBuilder: FormBuilder, public toastCtrl: ToastController,) { }
firstFormGroup: FormGroup = this._formBuilder.group({firstCtrl: ['']});
secondFormGroup: FormGroup = this._formBuilder.group({secondCtrl: ['']});
@ -25,8 +26,13 @@ export class ViewOrderComponent implements OnInit {
this.orderId = localStorage.getItem('orderId')
this.orderPrimaryId = localStorage.getItem('orderPrimaryId')
this.customer = localStorage.getItem('customerName')
this.orderStatus = localStorage.getItem('orderStatus')
console.log(this.orderStatus)
if(this.orderStatus == null){
this.orderStatus = "ordered"
localStorage.setItem('orderStatus',"ordered")
}
if(this.orderStatus == "ordered"){
this.isOrderPlaced = true; // Set the completion status based on your condition
@ -148,12 +154,13 @@ export class ViewOrderComponent implements OnInit {
let tmp:any =[];
this.orderId = localStorage.getItem('orderId')
this.product.forEach((element:any) => {
tmp.push({orderId:element.this.orderId , status: 'Cancelled'})
tmp.push({orderId:this.orderId , status: 'Cancelled'})
});
let param = {driver: tmp}
this.orderId = localStorage.getItem('orderId')
let param = {driver: tmp , orderId: this.orderId }

View File

@ -79,6 +79,7 @@ handleRefresh(event:any) {
console.log(data)
localStorage.setItem('orderId',data.orderId)
localStorage.setItem('orderStatus',data.status)
localStorage.setItem('customerName',data.cusName)

View File

@ -4,8 +4,8 @@
export const environment = {
production: false,
// apiEndpoint:'https://dev.venbait.in/vnms/api/',
apiEndpoint:'http://192.168.1.17:8081/api/',
apiEndpoint:'https://dev.venbait.in/vnms/api/',
// apiEndpoint:'http://192.168.1.17:8081/api/',
// apiEndpoint:'http://192.168.1.5:8081/api/',
};