12 changed files with 344 additions and 3898 deletions
-
2src/main/java/com/gcc/publicgrievance/PublicgrievanceApplication.java
-
228src/main/java/com/gcc/publicgrievance/controller/ComplaintController.java
-
29src/main/java/com/gcc/publicgrievance/controller/UserController.java
-
1505src/main/resources/templates/Tradelicence/tradelicence.html
-
90src/main/resources/templates/checklistofficer/checklistofficer.html
-
275src/main/resources/templates/checklistuser/checklistuser.html
-
685src/main/resources/templates/officer/officercomplaint.html
-
217src/main/resources/templates/staff/appoinment.html
-
251src/main/resources/templates/staff/appoinmentscreen.html
-
230src/main/resources/templates/staff/createorder.html
-
186src/main/resources/templates/staff/schemegroup.html
-
316src/main/resources/templates/staff/staffenrollment.html
1505
src/main/resources/templates/Tradelicence/tradelicence.html
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -1,275 +0,0 @@ |
|||||
<!DOCTYPE html> |
|
||||
<html xmlns:th="http://www.thymeleaf.org"> |
|
||||
|
|
||||
<head> |
|
||||
<meta charset="UTF-8"> |
|
||||
<title>CheckList User</title> |
|
||||
<!-- Google Font --> |
|
||||
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" rel="stylesheet"> |
|
||||
<!-- Bootstrap CSS --> |
|
||||
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"> |
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> |
|
||||
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" /> |
|
||||
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script> |
|
||||
|
|
||||
<style> |
|
||||
/*rating style for css*/ |
|
||||
.rating { |
|
||||
direction: rtl; |
|
||||
display: inline-flex; |
|
||||
font-size: 24px; |
|
||||
} |
|
||||
|
|
||||
.rating input { |
|
||||
display: none; |
|
||||
} |
|
||||
|
|
||||
.rating label { |
|
||||
color: #ddd; |
|
||||
cursor: pointer; |
|
||||
margin: 0; |
|
||||
} |
|
||||
|
|
||||
.rating input:checked~label { |
|
||||
color: #414f69; |
|
||||
} |
|
||||
|
|
||||
.rating label:hover, |
|
||||
.rating label:hover~label { |
|
||||
color: #414f69; |
|
||||
} |
|
||||
</style> |
|
||||
</head> |
|
||||
|
|
||||
<body> |
|
||||
|
|
||||
<!-- Insert the header fragment --> |
|
||||
<div th:insert="fragments/header :: headerFragment"></div> |
|
||||
|
|
||||
<div class="container mt-4"> |
|
||||
<!-- Screen Reader Button --> |
|
||||
<div class="row align-items-center justify-content-center mt-4"> |
|
||||
<button id="screenReaderBtn" class="btn btn-info">Screen Reader</button> |
|
||||
</div> |
|
||||
<div class="mt-1"> |
|
||||
<div class="row align-items-center justify-content-center"> |
|
||||
<!--<button class="back-button" onclick="window.location.href='home';">← Back</button>--> |
|
||||
|
|
||||
<h4 class="title" style="color: #414f69;">Check Availability Status</h4> |
|
||||
</div> |
|
||||
</div> |
|
||||
<!-- Card Section --> |
|
||||
<div class="card p-3" style="margin-bottom: 8px;color: #414f69;"> |
|
||||
<div class="row" style="font-weight: bolder;"> |
|
||||
<div class="col-md-6"> |
|
||||
Complainant Number: |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
Date: |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="row" style="font-weight: bolder;color: #414f69;"> |
|
||||
<div class="col-md-6"> |
|
||||
Complainant Mode: |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
Expiry: |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="card mb-3"> |
|
||||
<div class="card-header text-white" style="background-color: #414f69;">1. Complaining Person's Details |
|
||||
</div> |
|
||||
<div class="card-body"> |
|
||||
<div class="row"> |
|
||||
<div class="col-md-6"> |
|
||||
Complainant Mobile Number: |
|
||||
<input type="text" class="form-control" value=""> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
Complainant Name: |
|
||||
<input type="text" class="form-control" value=""> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
Complainant Email: |
|
||||
<input type="email" class="form-control" value=""> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
Gender: |
|
||||
<select class="form-control"> |
|
||||
<option value="0">Select Gender</option> |
|
||||
<option value="male">Male</option> |
|
||||
<option value="femlae">Female</option> |
|
||||
<option value="transgender">Transgender</option> |
|
||||
</select> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
</div> |
|
||||
|
|
||||
<div class="card mb-3"> |
|
||||
<div class="card-header text-white" style="background-color: #414f69;">2. Complaint Location Details |
|
||||
</div> |
|
||||
<div class="card-body"> |
|
||||
<div class="row"> |
|
||||
<div class="col-md-4"> |
|
||||
Complainant Street: |
|
||||
<input type="text" class="form-control" value="Street Address"> |
|
||||
</div> |
|
||||
<div class="col-md-4"> |
|
||||
Complainant Zone: |
|
||||
<input type="text" class="form-control" value="Zone 12"> |
|
||||
</div> |
|
||||
<div class="col-md-4"> |
|
||||
Complainant Ward: |
|
||||
<input type="text" class="form-control" value="Ward 12"> |
|
||||
</div> |
|
||||
<div class="col-md-4"> |
|
||||
Complainant Area: |
|
||||
<input type="text" class="form-control" value="Chennai Central"> |
|
||||
</div> |
|
||||
<div class="col-md-4"> |
|
||||
Complainant Locality: |
|
||||
<input type="text" class="form-control" value="Periyamet"> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
</div> |
|
||||
|
|
||||
<div class="card"> |
|
||||
<div class="card-header text-white" style="background-color: #414f69;">3. Complaint Type</div> |
|
||||
<div class="card-body"> |
|
||||
<div class="row"> |
|
||||
<div class="col-md-4"> |
|
||||
Complainant Type: |
|
||||
<input type="text" class="form-control" value="Street Light"> |
|
||||
</div> |
|
||||
<div class="col-md-4"> |
|
||||
Complainant Sub-Type: |
|
||||
<input type="text" class="form-control" value="Mohamed Afridi"> |
|
||||
</div> |
|
||||
<div class="col-md-4"> |
|
||||
Complainant Title: |
|
||||
<input type="text" class="form-control" value="Male"> |
|
||||
</div> |
|
||||
<div class="col-md-12"> |
|
||||
Complainant Description: |
|
||||
<input type="text" class="form-control" |
|
||||
value="Street Light is not working. Kindly rectify it."> |
|
||||
</div> |
|
||||
|
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
|
|
||||
<div class="card mb-3"> |
|
||||
<div class="card-header text-white" style="background-color: #414f69;">Complaint Action</div> |
|
||||
<div class="card-body"> |
|
||||
<div class="row"> |
|
||||
<div class="col-md-2">Aug 24<br>7.00 pm</div> |
|
||||
<div class="col-md-8">Officer - AE Zone 15<br>Lorem ipsum dolor sit amet, consectetur adipiscing |
|
||||
elit. In sit arcu aliquet ut dui egestas.</div> |
|
||||
<div class="col-md-2"><button class="btn btn-sm" |
|
||||
style="background-color: #414f69;color: white;">Redressed</button></div> |
|
||||
</div> |
|
||||
<div class="row mt-3"> |
|
||||
<div class="col-md-2">Aug 25<br>10.00 am</div> |
|
||||
<div class="col-md-8">Citizen<br>Lorem ipsum dolor sit amet, consectetur adipiscing elit. |
|
||||
Ullamcorper ullamcorper quis.</div> |
|
||||
<div class="col-md-2"><button class="btn btn-secondary btn-sm">Reopened</button></div> |
|
||||
</div> |
|
||||
<div class="row mt-3"> |
|
||||
<div class="col-md-2">Aug 26<br>3.00 pm</div> |
|
||||
<div class="col-md-8">Officer - AE Zone 15<br>Lorem ipsum dolor sit amet, consectetur adipiscing |
|
||||
elit. In sit arcu aliquet ut dui egestas.</div> |
|
||||
<div class="col-md-2"><button class="btn btn-sm" |
|
||||
style="background-color: #414f69;color: white;">Redressed</button></div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<div class="card mb-3"> |
|
||||
<div class="card-header text-white" style="background-color: #414f69;">Update Complaint </div> |
|
||||
<div class="card-body"> |
|
||||
<div class="row"> |
|
||||
<div class="col-md-6"> |
|
||||
Change Complaint Status: |
|
||||
<select class="form-control"> |
|
||||
<option value="0">Select Complaint</option> |
|
||||
<option value="complaint1">Complaint 1</option> |
|
||||
<option value="complaint2">Complaint 2</option> |
|
||||
</select> |
|
||||
</div> |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
<div class="col-md-6"> |
|
||||
<label for="rating" style="display: block; margin-bottom: 4px;">Feedback Rating:</label> |
|
||||
<div class="rating"> |
|
||||
<input type="radio" name="star" id="star1"><label for="star1">★</label> |
|
||||
<input type="radio" name="star" id="star2"><label for="star2">★</label> |
|
||||
<input type="radio" name="star" id="star3"><label for="star3">★</label> |
|
||||
<input type="radio" name="star" id="star4"><label for="star4">★</label> |
|
||||
<input type="radio" name="star" id="star5"><label for="star5">★</label> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
</div> |
|
||||
<div class="row"> |
|
||||
<div class="col-md-12"> |
|
||||
Complainant Locality: |
|
||||
<textarea class="form-control" id="othercomplaint-details" rows="3" |
|
||||
placeholder="Enter complaint details" maxlength="400"></textarea> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="row align-items-center justify-content-center" style="margin-top: 5px;"> |
|
||||
<button class="btn btn-sm" |
|
||||
style="background-color: #414f69;color: white;">Submit</button> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
|
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<!-- Bootstrap JS --> |
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> |
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script> |
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> |
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> |
|
||||
<script> |
|
||||
document.getElementById('screenReaderBtn').addEventListener('click', function() { |
|
||||
// Get the content of the page |
|
||||
const content = document.body.innerText; // You might want to filter or customize this |
|
||||
|
|
||||
// Check if SpeechSynthesis is supported |
|
||||
if ('speechSynthesis' in window) { |
|
||||
// Create a new speech synthesis utterance |
|
||||
const utterance = new SpeechSynthesisUtterance(content); |
|
||||
|
|
||||
// Set the voice, rate, pitch, and volume if needed |
|
||||
utterance.voice = speechSynthesis.getVoices().find(voice => voice.name === 'Google UK English Male'); // Example voice |
|
||||
utterance.rate = 1; // Speed of speech |
|
||||
utterance.pitch = 1; // Pitch of speech |
|
||||
utterance.volume = 1; // Volume of speech |
|
||||
|
|
||||
// Speak the content |
|
||||
window.speechSynthesis.speak(utterance); |
|
||||
} else { |
|
||||
alert('Your browser does not support speech synthesis.'); |
|
||||
} |
|
||||
}); |
|
||||
</script> |
|
||||
|
|
||||
|
|
||||
</body> |
|
||||
|
|
||||
</html> |
|
||||
@ -1,685 +0,0 @@ |
|||||
<!DOCTYPE html> |
|
||||
<html xmlns:th="http://www.thymeleaf.org"> |
|
||||
|
|
||||
<head> |
|
||||
<meta charset="UTF-8"> |
|
||||
<title>Main Page</title> |
|
||||
<!--Google Font --> |
|
||||
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" rel="stylesheet"> |
|
||||
<!--Bootstrap CSS--> |
|
||||
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"> |
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> |
|
||||
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" /> |
|
||||
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script> |
|
||||
<style> |
|
||||
body { |
|
||||
font-family: 'Lato', sans-serif; |
|
||||
} |
|
||||
|
|
||||
.card { |
|
||||
border-radius: 15px; |
|
||||
border: none; |
|
||||
padding: 20px; |
|
||||
background-color: #f0f4ff; |
|
||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); |
|
||||
margin-top: 20px; |
|
||||
} |
|
||||
|
|
||||
.card-title { |
|
||||
font-size: 1.2rem; |
|
||||
font-weight: bold; |
|
||||
} |
|
||||
|
|
||||
.card-text { |
|
||||
color: #666; |
|
||||
margin-bottom: 20px; |
|
||||
} |
|
||||
|
|
||||
.progress { |
|
||||
height: 20px; |
|
||||
border-radius: 10px; |
|
||||
} |
|
||||
|
|
||||
.progress-bar { |
|
||||
background-color: #414f69; |
|
||||
/* New color for the progress bar */ |
|
||||
border-radius: 10px; |
|
||||
} |
|
||||
|
|
||||
|
|
||||
.form-row { |
|
||||
margin-bottom: 20px; |
|
||||
} |
|
||||
|
|
||||
.form-step { |
|
||||
display: none; |
|
||||
} |
|
||||
|
|
||||
.form-step.active { |
|
||||
display: block; |
|
||||
} |
|
||||
|
|
||||
.container { |
|
||||
max-width: 100%; |
|
||||
} |
|
||||
|
|
||||
/*css for step 3*/ |
|
||||
.complaint-icons { |
|
||||
display: flex; |
|
||||
justify-content: space-around; |
|
||||
margin-bottom: 20px; |
|
||||
} |
|
||||
|
|
||||
.complaint-icon { |
|
||||
text-align: center; |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
|
|
||||
.complaint-icon img { |
|
||||
width: 50px; |
|
||||
height: 50px; |
|
||||
} |
|
||||
/*complaints css*/ |
|
||||
.complaint-fields { |
|
||||
display: none; /* Default hidden */ |
|
||||
} |
|
||||
.complaint-fields.active { |
|
||||
display: block; /* Show when active */ |
|
||||
} |
|
||||
/*complaints css*/ |
|
||||
|
|
||||
/*for radio button style*/ |
|
||||
.radio-group { |
|
||||
display: flex; |
|
||||
align-items: center; |
|
||||
/* Ensures all items are aligned to the center */ |
|
||||
} |
|
||||
|
|
||||
.radio-item { |
|
||||
display: flex; |
|
||||
align-items: center; |
|
||||
margin-right: 20px; |
|
||||
/* Adds space between each radio item */ |
|
||||
} |
|
||||
|
|
||||
.radio-item input[type="radio"] { |
|
||||
margin-right: 10px; |
|
||||
/* Adds space between the radio button and its label */ |
|
||||
vertical-align: middle; |
|
||||
/* Ensures vertical alignment */ |
|
||||
} |
|
||||
|
|
||||
.radio-item label { |
|
||||
margin: 0; |
|
||||
/* Removes any default margins that might affect alignment */ |
|
||||
} |
|
||||
|
|
||||
.back-button { |
|
||||
background: none; |
|
||||
border: none; |
|
||||
color: #000; |
|
||||
font-size: 16px; |
|
||||
cursor: pointer; |
|
||||
padding: 0; |
|
||||
margin-right: auto; |
|
||||
/* Align the button to the left */ |
|
||||
} |
|
||||
|
|
||||
.title { |
|
||||
text-align: center; |
|
||||
flex-grow: 1; |
|
||||
font-size: 24px; |
|
||||
font-weight: bold; |
|
||||
margin: 0; |
|
||||
} |
|
||||
|
|
||||
/*css for map in step2*/ |
|
||||
#map { |
|
||||
height: 300px; |
|
||||
width: 100%; |
|
||||
position: relative; |
|
||||
overflow: hidden; |
|
||||
max-width: 100%; |
|
||||
} |
|
||||
|
|
||||
#search-container { |
|
||||
position: absolute; |
|
||||
top: 10px; |
|
||||
left: 50%; |
|
||||
transform: translateX(-50%); |
|
||||
z-index: 1000; |
|
||||
width: 500px; |
|
||||
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.3); |
|
||||
background-color: white; |
|
||||
border-radius: 4px; |
|
||||
padding: 0; |
|
||||
/* Removed extra padding to match the input width */ |
|
||||
} |
|
||||
|
|
||||
#search-box { |
|
||||
width: 100%; |
|
||||
/* Ensures the input takes up the entire width of the container */ |
|
||||
padding: 5px; |
|
||||
font-size: 16px; |
|
||||
border: 1px solid #ccc; |
|
||||
border-radius: 4px; |
|
||||
/* Rounded corners matching the container */ |
|
||||
box-sizing: border-box; |
|
||||
/* Makes sure padding is considered in width */ |
|
||||
} |
|
||||
|
|
||||
#suggestions { |
|
||||
border: 1px solid #ccc; |
|
||||
border-radius: 4px; |
|
||||
max-height: 200px; |
|
||||
overflow-y: auto; |
|
||||
margin-top: 5px; |
|
||||
background-color: white; |
|
||||
display: none; |
|
||||
width: 100%; |
|
||||
/* Matches the width of the container and input */ |
|
||||
box-sizing: border-box; |
|
||||
/* Ensures the width includes borders and padding */ |
|
||||
} |
|
||||
|
|
||||
#suggestions ul { |
|
||||
list-style: none; |
|
||||
padding: 0; |
|
||||
margin: 0; |
|
||||
} |
|
||||
|
|
||||
#suggestions ul li { |
|
||||
padding: 5px; |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
|
|
||||
#suggestions ul li:hover { |
|
||||
background-color: #f0f0f0; |
|
||||
} |
|
||||
</style> |
|
||||
</head> |
|
||||
|
|
||||
<body> |
|
||||
|
|
||||
<!-- Insert the header fragment --> |
|
||||
<div th:insert="fragments/header :: headerFragment"></div> |
|
||||
|
|
||||
<!-- Progress Bar Section --> |
|
||||
<div class="container"> |
|
||||
<div class="mt-1"> |
|
||||
<div class="row align-items-center justify-content-center"> |
|
||||
<button class="back-button" onclick="window.location.href='home';">← Back</button> |
|
||||
|
|
||||
<h2 class="title">Registration of Complaint</h2> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
|
|
||||
<div class="card"> |
|
||||
<h3>Instructions:</h3> |
|
||||
<p>Please fill your complaint details below and click the ‘Submit’ button at the bottom. You will be given a |
|
||||
Complaint Number upon submitting the complaint that you can use to track the complaint.</p> |
|
||||
</div> |
|
||||
<div class="container"> |
|
||||
<!-- Card 1: Step 1 --> |
|
||||
<div class="card col-md-12 mb-3" id="step-1"> |
|
||||
<div class="card-body"> |
|
||||
<h5 class="card-title">1. Complaining Person's Details:</h5> |
|
||||
<div class="form-row"> |
|
||||
<div class="col-md-4"> |
|
||||
<label for="mobile">Mobile Number:</label> |
|
||||
<div class="input-group"> |
|
||||
<input type="number" class="form-control" id="mobile" |
|
||||
placeholder="Enter your Mobile Number"> |
|
||||
<div class="input-group-append"> |
|
||||
<button type="button" id="getOtpBtn" class="btn btn-primary" |
|
||||
style="background-color: #414f69;">Get OTP</button> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="col-md-4"> |
|
||||
<div class="input-group" id="otpSection" style="display: none;"> |
|
||||
<label for="verify">Verify OTP:</label> |
|
||||
<div class="input-group"> |
|
||||
<input type="number" class="form-control" id="otp" placeholder="Enter OTP"> |
|
||||
<div class="input-group-append"> |
|
||||
<button type="button" id="verifyBtn" class="btn btn-success">Verify</button> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="form-row mt-3"> |
|
||||
<div class="col-md-4"> |
|
||||
<label for="name">Name:</label> |
|
||||
<input type="text" class="form-control" id="name" placeholder="Enter your name"> |
|
||||
</div> |
|
||||
<div class="col-md-4"> |
|
||||
<label for="gender">Gender/பாலினம்:<span class="required">*</span></label> |
|
||||
<div class="radio-group"> |
|
||||
<div class="radio-item"> |
|
||||
<input type="radio" id="male" name="gender" value="male" checked> |
|
||||
<label for="male">Male</label> |
|
||||
</div> |
|
||||
<div class="radio-item"> |
|
||||
<input type="radio" id="female" name="gender" value="female"> |
|
||||
<label for="female">Female</label> |
|
||||
</div> |
|
||||
<div class="radio-item"> |
|
||||
<input type="radio" id="transgender" name="gender" value="transgender"> |
|
||||
<label for="transgender">Transgender</label> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="col-md-4"> |
|
||||
<label for="email">Email:</label> |
|
||||
<input type="email" class="form-control" id="email" placeholder="Enter your email"> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<!-- Card 2: Step 2 --> |
|
||||
<div class="card col-md-12 mb-3" id="step-2"> |
|
||||
<div class="card-body"> |
|
||||
<h5 class="card-title">2. Complaint Location Details:</h5> |
|
||||
<div class="form-row"> |
|
||||
<div class="col-md-12"> |
|
||||
<div id="map"></div> |
|
||||
<div id="search-container"> |
|
||||
<input type="text" id="search-box" placeholder="Search for a location..."> |
|
||||
<div id="suggestions"></div> |
|
||||
</div> |
|
||||
<label for="street">Street:</label> |
|
||||
<input type="text" class="form-control" id="street"> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<!-- Card 3: Step 3 --> |
|
||||
<div class="card col-md-12 mb-3" id="step-3"> |
|
||||
<div class="card-body"> |
|
||||
<h5 class="card-title">3. Complaint Type:</h5> |
|
||||
<div class="complaint-icons"> |
|
||||
<div class="complaint-icon" data-type="specific"> |
|
||||
<img src="images/road.png" alt="Pothole"> |
|
||||
<p>Pothole</p> |
|
||||
</div> |
|
||||
<div class="complaint-icon" data-type="specific"> |
|
||||
<img src="images/recycle.png" alt="garbage"> |
|
||||
<p>Garbage</p> |
|
||||
</div> |
|
||||
<div class="complaint-icon" data-type="specific"> |
|
||||
<img src="images/waste-bin.png" alt="broken-bin"> |
|
||||
<p>Broken-Bin</p> |
|
||||
</div> |
|
||||
<div class="complaint-icon" data-type="specific"> |
|
||||
<img src="images/street-lamp.png" alt="StreetLight"> |
|
||||
<p>StreetLight</p> |
|
||||
</div> |
|
||||
<div class="complaint-icon" data-type="specific"> |
|
||||
<img src="images/portable-bathroom.png" alt="public-toilet"> |
|
||||
<p>Public Toilet</p> |
|
||||
</div> |
|
||||
<div class="complaint-icon" data-type="specific"> |
|
||||
<img src="images/mosquito.png" alt="mosquito"> |
|
||||
<p>Mosquito Menace</p> |
|
||||
</div> |
|
||||
<div class="complaint-icon" data-type="specific"> |
|
||||
<img src="images/tsunami.png" alt="waterstag"> |
|
||||
<p>WaterStagnation</p> |
|
||||
</div> |
|
||||
<div class="complaint-icon" data-type="specific"> |
|
||||
<img src="images/sewage.png" alt="sewage"> |
|
||||
<p>Storm Water Drains</p> |
|
||||
</div> |
|
||||
<div class="complaint-icon" data-type="specific"> |
|
||||
<img src="images/dog.png" alt="dog"> |
|
||||
<p>Street Dog</p> |
|
||||
</div> |
|
||||
<div class="complaint-icon" data-type="specific"> |
|
||||
<img src="images/bad-weather.png" alt="weather"> |
|
||||
<p>Tree Fallen</p> |
|
||||
</div> |
|
||||
<div class="complaint-icon" data-type="others"> |
|
||||
<img src="images/menu.png" alt="Others"> |
|
||||
<p>Others</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="complaint-fields active" id="specific-fields"> |
|
||||
<div class="form-row mt-3"> |
|
||||
<div class="col-md-6"> |
|
||||
<label for="complaint-title">Complaint Title:</label> |
|
||||
<input type="text" class="form-control" id="complaint-title" |
|
||||
placeholder="Enter complaint title"> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
<label for="othercomplaint-details">Details of Complaint:</label> |
|
||||
<textarea class="form-control" id="othercomplaint-details" rows="3" |
|
||||
placeholder="Enter complaint details" maxlength="400"></textarea> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="form-row mt-3"> |
|
||||
<div class="col-md-6"> |
|
||||
<label for="upload">Upload Photo Or Video:</label> |
|
||||
<input type="file" class="form-control" id="upload"> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<div class="complaint-fields" id="others-fields" style="display:none;"> |
|
||||
<div class="form-row mt-3"> |
|
||||
<div class="col-md-4"> |
|
||||
<label for="type">Type:</label> |
|
||||
<select class="form-control" id="type"> |
|
||||
<option value="">Please Select</option> |
|
||||
</select> |
|
||||
</div> |
|
||||
<div class="col-md-4"> |
|
||||
<label for="sub-type">Sub-Type:</label> |
|
||||
<select class="form-control" id="sub-type"> |
|
||||
<option value="">Select complaint</option> |
|
||||
</select> |
|
||||
</div> |
|
||||
<div class="col-md-4"> |
|
||||
<label for="uploadothers">Upload Photo or Video:</label> |
|
||||
<input type="file" class="form-control" id="uploadothers" accept="image/*,video/*"> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="form-row mt-3"> |
|
||||
<div class="col-md-6"> |
|
||||
<label for="othercomplaint-details">Details of Complaint:</label> |
|
||||
<textarea class="form-control" id="othercomplaint-details" rows="3" |
|
||||
placeholder="Enter complaint details" maxlength="400"></textarea> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
|
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<!-- Bootstrap JS --> |
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> |
|
||||
|
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script> |
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> |
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> |
|
||||
|
|
||||
<!-- Font Awesome for Icons --> |
|
||||
<script src="https://kit.fontawesome.com/a076d05399.js"></script> |
|
||||
|
|
||||
<!-- Progress Bar Script --> |
|
||||
<script> |
|
||||
let currentStep = 1; |
|
||||
|
|
||||
function showStep(step) { |
|
||||
$('.form-step').removeClass('active'); |
|
||||
$('#step-' + step).addClass('active'); |
|
||||
updateProgressBar(step); |
|
||||
} |
|
||||
|
|
||||
function nextStep() { |
|
||||
if (currentStep < 4) { |
|
||||
currentStep++; |
|
||||
showStep(currentStep); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
function prevStep() { |
|
||||
if (currentStep > 1) { |
|
||||
currentStep--; |
|
||||
showStep(currentStep); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
function updateProgressBar(step) { |
|
||||
const progress = (step / 4) * 100; |
|
||||
$('.progress-bar').css('width', progress + '%').attr('aria-valuenow', progress); |
|
||||
} |
|
||||
|
|
||||
$(document).ready(function () { |
|
||||
showStep(currentStep); |
|
||||
}); |
|
||||
|
|
||||
|
|
||||
//for step3 onclick function |
|
||||
$(document).ready(function () { |
|
||||
$('.complaint-icon').click(function () { |
|
||||
const type = $(this).data('type'); |
|
||||
const title = $(this).find('p').text().trim(); // Get the icon name |
|
||||
|
|
||||
// Hide all fields initially |
|
||||
$('.complaint-fields').removeClass('active').hide(); |
|
||||
|
|
||||
if (type === 'specific') { |
|
||||
$('#specific-fields').addClass('active').show(); |
|
||||
$('#complaint-title').val(title); // Set the complaint title to the icon name |
|
||||
} else if (type === 'others') { |
|
||||
$('#others-fields').addClass('active').show(); |
|
||||
$('#complaint-title').val(''); // Clear the complaint title for 'Others' |
|
||||
} |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
//for complaint group and complainttype wise options dropdown api |
|
||||
$(document).ready(function () { |
|
||||
const $type = $('#type'); |
|
||||
const $subType = $('#sub-type'); |
|
||||
|
|
||||
$subType.prop('disabled', true); |
|
||||
|
|
||||
// Fetch and populate the Type dropdown |
|
||||
$.ajax({ |
|
||||
url: '/api/getComplaintCategories', |
|
||||
method: 'GET', |
|
||||
success: function (response) { |
|
||||
const data = typeof response === 'string' ? JSON.parse(response) : response; |
|
||||
//console.log('Response:', response); // Log the response to verify |
|
||||
let optionsHtml = '<option value="">Please Select</option>'; |
|
||||
data.ComplaintCategoryListResult.forEach(function (group) { |
|
||||
optionsHtml += `<option value="${group.groupid}">${group.groupname}</option>`; |
|
||||
}); |
|
||||
$type.html(optionsHtml); |
|
||||
}, |
|
||||
error: function (error) { |
|
||||
console.error('Error fetching complaint categories:', error); |
|
||||
} |
|
||||
}); |
|
||||
|
|
||||
// Handle Type dropdown change |
|
||||
$type.change(function () { |
|
||||
const selectedType = $(this).val(); |
|
||||
$subType.empty().append('<option value="">Select complaint</option>'); |
|
||||
|
|
||||
if (selectedType) { |
|
||||
$.ajax({ |
|
||||
url: `/api/getComplaintSubTypes?groupId=${selectedType}`, |
|
||||
method: 'GET', |
|
||||
success: function (response) { |
|
||||
const data = typeof response === 'string' ? JSON.parse(response) : response; |
|
||||
const selectedGroup = data.ComplaintCategoryListResult[0]; |
|
||||
|
|
||||
if (selectedGroup && selectedGroup.group) { |
|
||||
$subType.prop('disabled', false); |
|
||||
selectedGroup.group.forEach(function (complaint) { |
|
||||
$subType.append(`<option value="${complaint.id}">${complaint.complaintname}</option>`); |
|
||||
}); |
|
||||
} else { |
|
||||
$subType.prop('disabled', true); |
|
||||
} |
|
||||
}, |
|
||||
error: function (error) { |
|
||||
console.error('Error fetching sub-types:', error); |
|
||||
$subType.prop('disabled', true); |
|
||||
} |
|
||||
}); |
|
||||
} else { |
|
||||
$subType.prop('disabled', true); |
|
||||
} |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
//for step 1 otp input box |
|
||||
document.getElementById('getOtpBtn').addEventListener('click', function () { |
|
||||
document.getElementById('otpSection').style.display = 'flex'; |
|
||||
}); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
//for sweet alert |
|
||||
function showSuccessAlert() { |
|
||||
Swal.fire({ |
|
||||
icon: 'success', |
|
||||
title: 'Complaint Registration Success', |
|
||||
text: 'Complaint Number 123456. Use this Number for Complaint Status Check.', |
|
||||
confirmButtonText: 'Back to Home', |
|
||||
confirmButtonColor: '#3085d6', |
|
||||
}).then((result) => { |
|
||||
if (result.isConfirmed) { |
|
||||
window.location.href = 'home'; |
|
||||
} |
|
||||
}); |
|
||||
} |
|
||||
//script for map in step2 |
|
||||
|
|
||||
// Script For Map |
|
||||
|
|
||||
function initializeMap() { |
|
||||
var map = L.map('map', {attributionControl: false}).setView([11.1271, 78.6569], 7); |
|
||||
|
|
||||
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { |
|
||||
maxZoom: 19, |
|
||||
attributionControl: false, |
|
||||
}).addTo(map); |
|
||||
|
|
||||
var currentMarker = null; |
|
||||
|
|
||||
map.on('click', function (e) { |
|
||||
var lat = e.latlng.lat; |
|
||||
var lng = e.latlng.lng; |
|
||||
|
|
||||
if (currentMarker) { |
|
||||
map.removeLayer(currentMarker); |
|
||||
} |
|
||||
|
|
||||
currentMarker = L.marker([lat, lng]).addTo(map); |
|
||||
|
|
||||
fetchLocationInfo(lat, lng, currentMarker); |
|
||||
}); |
|
||||
|
|
||||
document.getElementById('search-box').addEventListener('input', function () { |
|
||||
var query = this.value.trim(); |
|
||||
if (query.length > 2) { |
|
||||
fetchSuggestions(query); |
|
||||
} else { |
|
||||
document.getElementById('suggestions').style.display = 'none'; |
|
||||
} |
|
||||
}); |
|
||||
|
|
||||
document.getElementById('suggestions').addEventListener('click', function (e) { |
|
||||
if (e.target.tagName === 'LI') { |
|
||||
var latlng = JSON.parse(e.target.dataset.latlng); |
|
||||
map.setView(latlng, 13); |
|
||||
|
|
||||
if (currentMarker) { |
|
||||
map.removeLayer(currentMarker); |
|
||||
} |
|
||||
|
|
||||
currentMarker = L.marker(latlng).addTo(map); |
|
||||
fetchLocationInfo(latlng[0], latlng[1], currentMarker); |
|
||||
|
|
||||
// Clear the search box value |
|
||||
document.getElementById('search-box').value = ''; |
|
||||
|
|
||||
// Hide the suggestions |
|
||||
document.getElementById('suggestions').style.display = 'none'; |
|
||||
} |
|
||||
}); |
|
||||
} |
|
||||
|
|
||||
function fetchSuggestions(query) { |
|
||||
fetch(`https://nominatim.openstreetmap.org/search?format=json&q=${query}&limit=5`) |
|
||||
.then(response => response.json()) |
|
||||
.then(data => { |
|
||||
var suggestions = document.getElementById('suggestions'); |
|
||||
suggestions.innerHTML = ''; |
|
||||
|
|
||||
if (data.length > 0) { |
|
||||
suggestions.style.display = 'block'; |
|
||||
var ul = document.createElement('ul'); |
|
||||
data.forEach(function (result) { |
|
||||
var li = document.createElement('li'); |
|
||||
li.textContent = result.display_name; |
|
||||
li.dataset.latlng = JSON.stringify([result.lat, result.lon]); |
|
||||
ul.appendChild(li); |
|
||||
}); |
|
||||
suggestions.appendChild(ul); |
|
||||
} else { |
|
||||
suggestions.style.display = 'none'; |
|
||||
} |
|
||||
}) |
|
||||
.catch(error => console.error('Error fetching suggestions:', error)); |
|
||||
} |
|
||||
|
|
||||
function fetchLocationInfo(lat, lng, marker) { |
|
||||
fetch(`https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=${lat}&lon=${lng}`) |
|
||||
.then(response => response.json()) |
|
||||
.then(data => { |
|
||||
const zoneMatch = data.display_name.match(/Zone (\d+)/); |
|
||||
const divisionMatch = data.display_name.match(/Division (\d+)/); |
|
||||
const wardMatch = data.display_name.match(/Ward (\d+)/); |
|
||||
|
|
||||
const zone = zoneMatch ? `Zone: ${zoneMatch[1]}` : ''; |
|
||||
const division = divisionMatch ? `Division: ${divisionMatch[1]}` : ''; |
|
||||
const ward = wardMatch ? `Ward: ${wardMatch[1]}` : ''; |
|
||||
|
|
||||
const firstCommaIndex = data.display_name.indexOf(','); |
|
||||
const address = firstCommaIndex !== -1 |
|
||||
? `Address: ${data.display_name.substring(firstCommaIndex + 1).trim()}` |
|
||||
: ''; |
|
||||
const place1 = firstCommaIndex !== -1 |
|
||||
? `Place: ${data.display_name.substring(0, firstCommaIndex).trim()}` |
|
||||
: `Place: ${data.display_name.trim()}`; |
|
||||
|
|
||||
const place2 = firstCommaIndex !== -1 |
|
||||
? data.display_name.substring(0, firstCommaIndex).trim() |
|
||||
: data.display_name.trim(); |
|
||||
|
|
||||
document.getElementById('street').value = place2; |
|
||||
|
|
||||
let result = `${place1}<br>Latitude: ${lat}<br>Longitude: ${lng}<br>${address}`; |
|
||||
if (zone) { |
|
||||
result += `<br>${zone}`; |
|
||||
} |
|
||||
if (division) { |
|
||||
result += `<br>${division}`; |
|
||||
} |
|
||||
if (ward) { |
|
||||
result += `<br>${ward}`; |
|
||||
} |
|
||||
|
|
||||
marker.bindTooltip(result, {permanent: false, direction: 'top'}).openTooltip(); |
|
||||
}) |
|
||||
.catch(error => console.error('Error fetching location data:', error)); |
|
||||
} |
|
||||
|
|
||||
document.addEventListener('DOMContentLoaded', function () { |
|
||||
setTimeout(initializeMap, 2000); // Delay map initialization by 2000 milliseconds (2 seconds) |
|
||||
}); |
|
||||
|
|
||||
</script> |
|
||||
|
|
||||
</body> |
|
||||
|
|
||||
</html> |
|
||||
@ -1,217 +0,0 @@ |
|||||
<!DOCTYPE html> |
|
||||
<html xmlns:th="http://www.thymeleaf.org"> |
|
||||
|
|
||||
<head> |
|
||||
<meta charset="UTF-8"> |
|
||||
<title>Create Order</title> |
|
||||
<!-- Google Font --> |
|
||||
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" rel="stylesheet"> |
|
||||
<!-- Bootstrap CSS --> |
|
||||
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"> |
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> |
|
||||
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" /> |
|
||||
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script> |
|
||||
<!-- Include Font Awesome --> |
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" rel="stylesheet"> |
|
||||
<style> |
|
||||
label { |
|
||||
font-weight: 700; |
|
||||
color: #2d5263; |
|
||||
} |
|
||||
|
|
||||
/*for uploading fields*/ |
|
||||
.custom-file-upload { |
|
||||
position: relative; |
|
||||
display: flex; |
|
||||
align-items: center; |
|
||||
border: 1px solid #d9dde4; |
|
||||
border-radius: 5px; |
|
||||
padding: 5px; |
|
||||
background-color: #f9fafb; |
|
||||
cursor: pointer; |
|
||||
margin-top: 5px; |
|
||||
} |
|
||||
|
|
||||
.custom-file-upload input[type="file"] { |
|
||||
position: absolute; |
|
||||
left: 0; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
height: 100%; |
|
||||
opacity: 0; |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
|
|
||||
.custom-file-upload label { |
|
||||
display: flex; |
|
||||
justify-content: space-between; |
|
||||
width: 100%; |
|
||||
align-items: center; |
|
||||
} |
|
||||
|
|
||||
.upload-text { |
|
||||
color: #a6adb5; |
|
||||
|
|
||||
font-weight: 700; |
|
||||
} |
|
||||
|
|
||||
.upload-icon i { |
|
||||
color: #a6adb5; |
|
||||
font-size: 18px; |
|
||||
} |
|
||||
|
|
||||
.file-name { |
|
||||
margin-left: 10px; |
|
||||
color: #414f69; |
|
||||
font-size: 14px; |
|
||||
|
|
||||
} |
|
||||
</style> |
|
||||
</head> |
|
||||
|
|
||||
<body> |
|
||||
|
|
||||
|
|
||||
<div class="row align-items-center justify-content-center" |
|
||||
style="color: white;background-color:#414f69 ;padding: 10px;"> |
|
||||
<h3 class="title resizable-content">Create Order</h3> |
|
||||
</div> |
|
||||
<div class="container mt-4"> |
|
||||
|
|
||||
<div class="mt-1"> |
|
||||
|
|
||||
</div> |
|
||||
<!-- Card Content --> |
|
||||
<div class="card p-3 resizable-content" style="margin-bottom: 8px;color: #414f69;"> |
|
||||
<!-- Error message container --> |
|
||||
<div id="errorMessages" style="background-color: #ff6666;color: white;"></div> |
|
||||
|
|
||||
<!-- Card Content --> |
|
||||
<div class="card mb-3 resizable-content"> |
|
||||
<div class="card-header text-white" style="background-color: #414f69;">Order Details</div> |
|
||||
<div class="card-body"> |
|
||||
<div class="row"> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Order Number:</label> |
|
||||
<input type="text" class="form-control" id="orderNumber" placeholder="Enter Order Number"> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Order Date:</label> |
|
||||
<input type="date" class="form-control" id="orderDate"> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Order Title:</label> |
|
||||
<input type="text" class="form-control" id="orderTitle" placeholder="Enter Order Title"> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Number Of Staff Required:</label> |
|
||||
<input type="number" class="form-control" id="staffRequired" |
|
||||
placeholder="Enter Staff Required..."> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Order Description:</label> |
|
||||
<textarea class="form-control" id="details" rows="3" placeholder="description..." |
|
||||
maxlength="400"></textarea> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Order Document:</label> |
|
||||
<div class="custom-file-upload"> |
|
||||
<input type="file" id="file-upload" class="form-control" onchange="displayFileName()"> |
|
||||
<label for="file-upload" id="file-label"> |
|
||||
<span class="upload-text" id="upload-text">Upload Order Document</span> |
|
||||
<span class="upload-icon"> |
|
||||
<i class="fas fa-file-upload"></i> |
|
||||
</span> |
|
||||
</label> |
|
||||
<span id="file-name" class="file-name"></span> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<button class="btn btn-sm" style="background-color: #414f69; color: white;" id="createorder">Create |
|
||||
Order</button> |
|
||||
</div> |
|
||||
|
|
||||
</div> |
|
||||
|
|
||||
|
|
||||
<!-- Bootstrap JS --> |
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> |
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script> |
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> |
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> |
|
||||
|
|
||||
<!-- JavaScript to handle button clicks --> |
|
||||
|
|
||||
<script> |
|
||||
function displayFileName() { |
|
||||
const fileInput = document.getElementById('file-upload'); |
|
||||
const fileNameSpan = document.getElementById('file-name'); |
|
||||
const fileName = fileInput.files[0].name; |
|
||||
fileNameSpan.textContent = fileName; |
|
||||
} |
|
||||
|
|
||||
$(document).ready(function () { |
|
||||
$('#createorder').click(function () { |
|
||||
let isValid = true; |
|
||||
let errorMessages = []; |
|
||||
|
|
||||
// Clear previous error messages |
|
||||
$('#errorMessages').addClass('d-none').html(''); |
|
||||
|
|
||||
// Validate Order Number |
|
||||
if ($('#orderNumber').val().trim() == '') { |
|
||||
errorMessages.push('Enter the Order Number.'); |
|
||||
isValid = false; |
|
||||
} |
|
||||
|
|
||||
// Validate Order Date |
|
||||
if ($('#orderDate').val().trim() === '') { |
|
||||
errorMessages.push('Enter the Order Date.'); |
|
||||
isValid = false; |
|
||||
} |
|
||||
|
|
||||
// Validate Order Title |
|
||||
if ($('#orderTitle').val().trim() === '') { |
|
||||
errorMessages.push('Enter the Order Title.'); |
|
||||
isValid = false; |
|
||||
} |
|
||||
|
|
||||
// Validate Number Of Staff Required |
|
||||
if ($('#staffRequired').val().trim() === '') { |
|
||||
errorMessages.push('Enter the Number Of Staff Required.'); |
|
||||
isValid = false; |
|
||||
} |
|
||||
|
|
||||
// Validate Order Description |
|
||||
if ($('#details').val().trim() === '') { |
|
||||
errorMessages.push('Enter the Order Description.'); |
|
||||
isValid = false; |
|
||||
} |
|
||||
|
|
||||
// Validate Order Document |
|
||||
if ($('#file-upload').val().trim() === '') { |
|
||||
errorMessages.push('Upload the Order Document.'); |
|
||||
isValid = false; |
|
||||
} |
|
||||
|
|
||||
// Display error messages if any |
|
||||
if (!isValid) { |
|
||||
$('#errorMessages').removeClass('d-none').html(errorMessages.join('<br>')); |
|
||||
} else { |
|
||||
Swal.fire({ |
|
||||
title: 'Success!', |
|
||||
text: 'Order Created Successfully', |
|
||||
icon: 'success', |
|
||||
confirmButtonText: 'OK', |
|
||||
background: '#f5f5f5', |
|
||||
confirmButtonColor: '#414f69' |
|
||||
}); |
|
||||
} |
|
||||
}); |
|
||||
}); |
|
||||
</script> |
|
||||
</body> |
|
||||
|
|
||||
</html> |
|
||||
@ -1,251 +0,0 @@ |
|||||
<!DOCTYPE html> |
|
||||
<html xmlns:th="http://www.thymeleaf.org"> |
|
||||
|
|
||||
<head> |
|
||||
<meta charset="UTF-8"> |
|
||||
<title>Appoinment Screen</title> |
|
||||
<!-- Google Font --> |
|
||||
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" rel="stylesheet"> |
|
||||
<!-- Bootstrap CSS --> |
|
||||
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"> |
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> |
|
||||
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" /> |
|
||||
<!-- Include Font Awesome --> |
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" rel="stylesheet"> |
|
||||
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script> |
|
||||
<style> |
|
||||
label { |
|
||||
font-weight: 700; |
|
||||
color: #2d5263; |
|
||||
} |
|
||||
|
|
||||
/*for radio button style*/ |
|
||||
.radio-group { |
|
||||
display: flex; |
|
||||
align-items: center; |
|
||||
/* Ensures all items are aligned to the center */ |
|
||||
} |
|
||||
|
|
||||
.radio-item { |
|
||||
display: flex; |
|
||||
align-items: center; |
|
||||
margin-right: 20px; |
|
||||
/* Adds space between each radio item */ |
|
||||
} |
|
||||
|
|
||||
.radio-item input[type="radio"] { |
|
||||
margin-right: 10px; |
|
||||
/* Adds space between the radio button and its label */ |
|
||||
vertical-align: middle; |
|
||||
/* Ensures vertical alignment */ |
|
||||
} |
|
||||
|
|
||||
.radio-item label { |
|
||||
margin: 0; |
|
||||
/* Removes any default margins that might affect alignment */ |
|
||||
} |
|
||||
|
|
||||
/*for check box*/ |
|
||||
.checkbox-label { |
|
||||
display: block; |
|
||||
margin-bottom: 10px; |
|
||||
font-size: 16px; |
|
||||
} |
|
||||
|
|
||||
/*for file uploading*/ |
|
||||
.custom-file-upload { |
|
||||
position: relative; |
|
||||
display: flex; |
|
||||
align-items: center; |
|
||||
border: 1px solid #d9dde4; |
|
||||
border-radius: 5px; |
|
||||
padding: 5px; |
|
||||
background-color: #f9fafb; |
|
||||
cursor: pointer; |
|
||||
margin-top: 5px; |
|
||||
} |
|
||||
|
|
||||
.custom-file-upload input[type="file"] { |
|
||||
position: absolute; |
|
||||
left: 0; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
height: 100%; |
|
||||
opacity: 0; |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
|
|
||||
.custom-file-upload label { |
|
||||
display: flex; |
|
||||
justify-content: space-between; |
|
||||
width: 100%; |
|
||||
align-items: center; |
|
||||
} |
|
||||
|
|
||||
.upload-icon i { |
|
||||
color: #a6adb5; |
|
||||
font-size: 18px; |
|
||||
} |
|
||||
|
|
||||
.file-name { |
|
||||
margin-left: 10px; |
|
||||
color: #414f69; |
|
||||
font-size: 14px; |
|
||||
} |
|
||||
|
|
||||
#upload-text { |
|
||||
color: #a7adb5; |
|
||||
|
|
||||
} |
|
||||
|
|
||||
.order-no { |
|
||||
font-size: 14px; |
|
||||
color: lightSkyBlue; |
|
||||
} |
|
||||
|
|
||||
.user-icon { |
|
||||
margin-right: 5px; |
|
||||
color: #414f69; |
|
||||
} |
|
||||
</style> |
|
||||
</head> |
|
||||
|
|
||||
<body> |
|
||||
|
|
||||
<div class="row align-items-center justify-content-center" style="color: white;background-color:#414f69 ;padding: 10px;"> |
|
||||
<h3 class="title resizable-content" >Appoinment Screen</h3> |
|
||||
</div> |
|
||||
|
|
||||
<div class="container mt-4"> |
|
||||
|
|
||||
|
|
||||
<!-- Card Section --> |
|
||||
<div class="card p-3 resizable-content" style="margin-bottom: 8px;color: #414f69;"> |
|
||||
|
|
||||
|
|
||||
<!-- Add the resizable-content class to the card sections --> |
|
||||
<div class="card mb-3 resizable-content"> |
|
||||
|
|
||||
<div class="card-body"> |
|
||||
<div class="row"> |
|
||||
<div class="col-md-12"> |
|
||||
<label>Select Order</label> |
|
||||
<select class="form-control"> |
|
||||
<option value="0">Select Order</option> |
|
||||
<option value="1">Order 1</option> |
|
||||
<option value="2">Order 2</option> |
|
||||
</select> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
</div> |
|
||||
|
|
||||
</div> |
|
||||
|
|
||||
|
|
||||
|
|
||||
<div class="card mb-3 resizable-content"> |
|
||||
<div class="card-body"> |
|
||||
<div class="row" style="font-weight: bolder;"> |
|
||||
<div class="col-md-6"> |
|
||||
<label >Order No: 166565</label> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="row" style="font-weight: bolder;"> |
|
||||
<div class="col-md-6"> |
|
||||
<p class="order-no">16 June 2024</p> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
<p><i class="fas fa-user user-icon"></i>85/100</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="row" > |
|
||||
<div class="col-md-6"> |
|
||||
<label>Order Type:</label> |
|
||||
</div> |
|
||||
|
|
||||
</div> |
|
||||
<div class="row"> |
|
||||
<div class="col-md-6" style="font-weight: bolder;"> |
|
||||
<p class="order-no">Order Description Long text</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
<div class="card mb-3 resizable-content"> |
|
||||
|
|
||||
|
|
||||
<div class="card-body"> |
|
||||
<div class="row"> |
|
||||
<div class="col-md-12"> |
|
||||
<label>Assign Staff</label> |
|
||||
<select class="form-control"> |
|
||||
<option value="0">Select Staff</option> |
|
||||
<option value="1">staff 1</option> |
|
||||
<option value="2">staff 2</option> |
|
||||
</select> |
|
||||
</div> |
|
||||
<br><br> |
|
||||
<div class="col-md-12" style="padding: 14px;"> |
|
||||
|
|
||||
<input type="text" class="form-control" value="" placeholder="Enter the Staff Name..."> |
|
||||
<br> |
|
||||
<input type="text" class="form-control" value="" placeholder="Enter the Staff Name..."> |
|
||||
</div> |
|
||||
<br> |
|
||||
<div class="col-md-12"> |
|
||||
|
|
||||
<label>Date Of Appoinment</label> |
|
||||
<input type="date" class="form-control" value=""> |
|
||||
|
|
||||
</div> |
|
||||
|
|
||||
|
|
||||
|
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
</div> |
|
||||
|
|
||||
<button class="btn btn-sm" style="background-color: #414f69; color: white;" id="addAppointmentBtn">Add Appointment</button> |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
</div> |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
</div> |
|
||||
|
|
||||
<!-- Bootstrap JS --> |
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> |
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script> |
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> |
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> |
|
||||
|
|
||||
<!-- JavaScript to handle button clicks --> |
|
||||
<script> |
|
||||
$(document).ready(function () { |
|
||||
$('#addAppointmentBtn').click(function () { |
|
||||
Swal.fire({ |
|
||||
title: 'Success!', |
|
||||
text: 'Your appointment has been added', |
|
||||
icon: 'success', |
|
||||
confirmButtonText: 'OK', |
|
||||
background: '#f5f5f5', |
|
||||
confirmButtonColor: '#414f69' |
|
||||
}); |
|
||||
}); |
|
||||
}); |
|
||||
</script> |
|
||||
|
|
||||
</body> |
|
||||
|
|
||||
</html> |
|
||||
@ -1,230 +0,0 @@ |
|||||
<!DOCTYPE html> |
|
||||
<html xmlns:th="http://www.thymeleaf.org"> |
|
||||
|
|
||||
<head> |
|
||||
<meta charset="UTF-8"> |
|
||||
<title>Create Order</title> |
|
||||
<!-- Google Font --> |
|
||||
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" rel="stylesheet"> |
|
||||
<!-- Bootstrap CSS --> |
|
||||
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"> |
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> |
|
||||
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" /> |
|
||||
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script> |
|
||||
<!-- Include Font Awesome --> |
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" rel="stylesheet"> |
|
||||
<style> |
|
||||
label { |
|
||||
font-weight: 700; |
|
||||
color: #2d5263; |
|
||||
} |
|
||||
|
|
||||
/*for uploading fields*/ |
|
||||
.custom-file-upload { |
|
||||
position: relative; |
|
||||
display: flex; |
|
||||
align-items: center; |
|
||||
border: 1px solid #d9dde4; |
|
||||
border-radius: 5px; |
|
||||
padding: 5px; |
|
||||
background-color: #f9fafb; |
|
||||
cursor: pointer; |
|
||||
margin-top: 5px; |
|
||||
} |
|
||||
|
|
||||
.custom-file-upload input[type="file"] { |
|
||||
position: absolute; |
|
||||
left: 0; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
height: 100%; |
|
||||
opacity: 0; |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
|
|
||||
.custom-file-upload label { |
|
||||
display: flex; |
|
||||
justify-content: space-between; |
|
||||
width: 100%; |
|
||||
align-items: center; |
|
||||
} |
|
||||
|
|
||||
.upload-text { |
|
||||
color: #a6adb5; |
|
||||
|
|
||||
font-weight: 700; |
|
||||
} |
|
||||
|
|
||||
.upload-icon i { |
|
||||
color: #a6adb5; |
|
||||
font-size: 18px; |
|
||||
} |
|
||||
|
|
||||
.file-name { |
|
||||
margin-left: 10px; |
|
||||
color: #414f69; |
|
||||
font-size: 14px; |
|
||||
|
|
||||
} |
|
||||
</style> |
|
||||
</head> |
|
||||
|
|
||||
<body> |
|
||||
|
|
||||
|
|
||||
<div class="row align-items-center justify-content-center" |
|
||||
style="color: white;background-color:#414f69 ;padding: 10px;"> |
|
||||
<h3 class="title resizable-content">Create Order</h3> |
|
||||
</div> |
|
||||
<div class="container mt-4"> |
|
||||
|
|
||||
<div class="mt-1"> |
|
||||
|
|
||||
</div> |
|
||||
<!-- Card Section --> |
|
||||
<div class="card p-3 resizable-content" style="margin-bottom: 8px;color: #414f69;"> |
|
||||
|
|
||||
|
|
||||
<!-- Add the resizable-content class to the card sections --> |
|
||||
<div class="card mb-3 resizable-content"> |
|
||||
<div class="card-header text-white" style="background-color: #414f69;">Order Details |
|
||||
</div> |
|
||||
<div class="card-body"> |
|
||||
<div class="row"> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Order Number:</label> |
|
||||
<input type="text" class="form-control" id="orderNumber" placeholder="Enter Order Number"> |
|
||||
<span class="text-danger" id="orderNumberError"></span> <!-- Validation message --> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Order Date:</label> |
|
||||
<input type="date" class="form-control" id="orderDate"> |
|
||||
<span class="text-danger" id="orderDateError"></span> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Order Title:</label> |
|
||||
<input type="text" class="form-control" id="orderTitle" placeholder="Enter Order Title"> |
|
||||
<span class="text-danger" id="orderTitleError"></span> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Number Of Staff Required:</label> |
|
||||
<input type="number" class="form-control" id="staffRequired" |
|
||||
placeholder="Enter Staff Required..."> |
|
||||
<span class="text-danger" id="staffRequiredError"></span> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Order Description:</label> |
|
||||
<textarea class="form-control" id="details" rows="3" placeholder="description..." |
|
||||
maxlength="400"></textarea> |
|
||||
<span class="text-danger" id="detailsError"></span> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Order Document:</label> |
|
||||
<div class="custom-file-upload"> |
|
||||
<input type="file" id="file-upload" class="form-control" onchange="displayFileName()"> |
|
||||
<label for="file-upload" id="file-label"> |
|
||||
<span class="upload-text" id="upload-text">Upload Order Document</span> |
|
||||
<span class="upload-icon"> |
|
||||
<i class="fas fa-file-upload"></i> |
|
||||
</span> |
|
||||
</label> |
|
||||
<span id="file-name" class="file-name"></span> |
|
||||
<span class="text-danger" id="fileUploadError"></span> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
|
|
||||
|
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
</div> |
|
||||
<button class="btn btn-sm" style="background-color: #414f69; color: white;" id="createorder">Create |
|
||||
Order</button> |
|
||||
|
|
||||
|
|
||||
|
|
||||
</div> |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
</div> |
|
||||
|
|
||||
<!-- Bootstrap JS --> |
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> |
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script> |
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> |
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> |
|
||||
|
|
||||
<!-- JavaScript to handle button clicks --> |
|
||||
|
|
||||
<script> |
|
||||
function displayFileName() { |
|
||||
const fileInput = document.getElementById('file-upload'); |
|
||||
const fileNameSpan = document.getElementById('file-name'); |
|
||||
const fileName = fileInput.files[0].name; |
|
||||
fileNameSpan.textContent = fileName; |
|
||||
} |
|
||||
$(document).ready(function () { |
|
||||
$('#createorder').click(function () { |
|
||||
let isValid = true; |
|
||||
|
|
||||
// Clear previous error messages |
|
||||
$('.text-danger').text(''); |
|
||||
|
|
||||
// Validate Order Number |
|
||||
if ($('#orderNumber').val().trim() == '') { |
|
||||
$('#orderNumberError').text('Enter the Order Number.'); |
|
||||
isValid = false; |
|
||||
} |
|
||||
|
|
||||
// Validate Order Date |
|
||||
if ($('#orderDate').val().trim() === '') { |
|
||||
$('#orderDateError').text('Enter the Order Date.'); |
|
||||
isValid = false; |
|
||||
} |
|
||||
|
|
||||
// Validate Order Title |
|
||||
if ($('#orderTitle').val().trim() === '') { |
|
||||
$('#orderTitleError').text('Enter the Order Title.'); |
|
||||
isValid = false; |
|
||||
} |
|
||||
|
|
||||
// Validate Number Of Staff Required |
|
||||
if ($('#staffRequired').val().trim() === '') { |
|
||||
$('#staffRequiredError').text('Enter the Number Of Staff Required.'); |
|
||||
isValid = false; |
|
||||
} |
|
||||
|
|
||||
// Validate Order Description |
|
||||
if ($('#details').val().trim() === '') { |
|
||||
$('#detailsError').text('Enter the Order Description.'); |
|
||||
isValid = false; |
|
||||
} |
|
||||
|
|
||||
// Validate Order Document |
|
||||
if ($('#file-upload').val().trim() === '') { |
|
||||
$('#fileUploadError').text('Upload the Order Document.'); |
|
||||
isValid = false; |
|
||||
} |
|
||||
|
|
||||
// If all fields are valid, show success message |
|
||||
if (isValid) { |
|
||||
Swal.fire({ |
|
||||
title: 'Success!', |
|
||||
text: 'Order Created Successfully', |
|
||||
icon: 'success', |
|
||||
confirmButtonText: 'OK', |
|
||||
background: '#f5f5f5', |
|
||||
confirmButtonColor: '#414f69' |
|
||||
}); |
|
||||
} |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
|
|
||||
</script> |
|
||||
</body> |
|
||||
|
|
||||
</html> |
|
||||
@ -1,186 +0,0 @@ |
|||||
<!DOCTYPE html> |
|
||||
<html xmlns:th="http://www.thymeleaf.org"> |
|
||||
|
|
||||
<head> |
|
||||
<meta charset="UTF-8"> |
|
||||
<title>CheckList User</title> |
|
||||
<!-- Google Font --> |
|
||||
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" rel="stylesheet"> |
|
||||
<!-- Bootstrap CSS --> |
|
||||
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"> |
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> |
|
||||
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" /> |
|
||||
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script> |
|
||||
|
|
||||
</head> |
|
||||
|
|
||||
<body> |
|
||||
|
|
||||
<!-- Insert the header fragment --> |
|
||||
<div th:insert="fragments/header :: headerFragment"></div> |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
<div class="mt-1"> |
|
||||
<div class="row align-items-center justify-content-center"> |
|
||||
|
|
||||
|
|
||||
<h4 class="title" style="color: #414f69;">Acknowledgement</h4> |
|
||||
</div> |
|
||||
</div> |
|
||||
<!-- Card Section --> |
|
||||
<div class="card p-3" style="margin-bottom: 8px;color: #414f69;"> |
|
||||
|
|
||||
<div class="row"> |
|
||||
<!-- First two cards side by side --> |
|
||||
<div class="col-md-6"> |
|
||||
<div class="card mb-3"> |
|
||||
<div class="card-header text-white" style="background-color: #414f69;"> |
|
||||
1. User Details |
|
||||
</div> |
|
||||
<div class="card-body"> |
|
||||
<table class="table"> |
|
||||
<tbody> |
|
||||
<tr> |
|
||||
<td>Name:</td> |
|
||||
<td>Yogesh</td> <!-- Replace this value with dynamic data --> |
|
||||
</tr> |
|
||||
<tr> |
|
||||
<td>Complainant Name:</td> |
|
||||
<td>John Doe</td> <!-- Replace this value with dynamic data --> |
|
||||
</tr> |
|
||||
<tr> |
|
||||
<td>Complainant Email:</td> |
|
||||
<td>john.doe@example.com</td> <!-- Replace this value with dynamic data --> |
|
||||
</tr> |
|
||||
<tr> |
|
||||
<td>Gender:</td> |
|
||||
<td>Male</td> <!-- Replace this value with dynamic data --> |
|
||||
</tr> |
|
||||
</tbody> |
|
||||
</table> |
|
||||
</div> |
|
||||
|
|
||||
|
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<div class="col-md-6"> |
|
||||
<div class="card "> |
|
||||
<div class="card-header text-white" style="background-color: #414f69;"> |
|
||||
2. Complaint Location Details |
|
||||
</div> |
|
||||
<div class="card-body"> |
|
||||
<table class="table"> |
|
||||
<tbody> |
|
||||
<tr> |
|
||||
<td>Name:</td> |
|
||||
<td>Yogesh</td> <!-- Replace this value with dynamic data --> |
|
||||
</tr> |
|
||||
<tr> |
|
||||
<td>Complainant Name:</td> |
|
||||
<td>John Doe</td> <!-- Replace this value with dynamic data --> |
|
||||
</tr> |
|
||||
<tr> |
|
||||
<td>Complainant Email:</td> |
|
||||
<td>john.doe@example.com</td> <!-- Replace this value with dynamic data --> |
|
||||
</tr> |
|
||||
<tr> |
|
||||
<td>Gender:</td> |
|
||||
<td>Male</td> <!-- Replace this value with dynamic data --> |
|
||||
</tr> |
|
||||
</tbody> |
|
||||
</table> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<!-- Third card full width --> |
|
||||
<div class="row mb-3"> |
|
||||
<div class="col-md-12"> |
|
||||
<div class="card"> |
|
||||
<div class="card-header text-white" style="background-color: #414f69;"> |
|
||||
3. Complaint Type |
|
||||
</div> |
|
||||
<div class="card-body"> |
|
||||
<table class="table"> |
|
||||
<tbody> |
|
||||
<tr> |
|
||||
<td>Name:</td> |
|
||||
<td>Yogesh</td> <!-- Replace this value with dynamic data --> |
|
||||
</tr> |
|
||||
<tr> |
|
||||
<td>Complainant Name:</td> |
|
||||
<td>John Doe</td> <!-- Replace this value with dynamic data --> |
|
||||
</tr> |
|
||||
<tr> |
|
||||
<td>Complainant Email:</td> |
|
||||
<td>john.doe@example.com</td> <!-- Replace this value with dynamic data --> |
|
||||
</tr> |
|
||||
<tr> |
|
||||
<td>Gender:</td> |
|
||||
<td>Male</td> <!-- Replace this value with dynamic data --> |
|
||||
</tr> |
|
||||
</tbody> |
|
||||
</table> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<div class="row"> |
|
||||
<div class="col-md-12"> |
|
||||
<div class="card"> |
|
||||
<div class="card-header text-white" style="background-color: #414f69;"> |
|
||||
3. Complaint Type |
|
||||
</div> |
|
||||
<div class="card-body"> |
|
||||
<table class="table"> |
|
||||
<tbody> |
|
||||
<tr> |
|
||||
<td>Name:</td> |
|
||||
<td>Yogesh</td> <!-- Replace this value with dynamic data --> |
|
||||
</tr> |
|
||||
<tr> |
|
||||
<td>Complainant Name:</td> |
|
||||
<td>John Doe</td> <!-- Replace this value with dynamic data --> |
|
||||
</tr> |
|
||||
<tr> |
|
||||
<td>Complainant Email:</td> |
|
||||
<td>john.doe@example.com</td> <!-- Replace this value with dynamic data --> |
|
||||
</tr> |
|
||||
<tr> |
|
||||
<td>Gender:</td> |
|
||||
<td>Male</td> <!-- Replace this value with dynamic data --> |
|
||||
</tr> |
|
||||
</tbody> |
|
||||
</table> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
</div> |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
<!-- Bootstrap JS --> |
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> |
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script> |
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> |
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> |
|
||||
<script> |
|
||||
|
|
||||
</script> |
|
||||
|
|
||||
|
|
||||
</body> |
|
||||
|
|
||||
</html> |
|
||||
@ -1,316 +0,0 @@ |
|||||
<!DOCTYPE html> |
|
||||
<html xmlns:th="http://www.thymeleaf.org"> |
|
||||
|
|
||||
<head> |
|
||||
<meta charset="UTF-8"> |
|
||||
<title>Staff Enrollment</title> |
|
||||
<!-- Google Font --> |
|
||||
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" rel="stylesheet"> |
|
||||
<!-- Bootstrap CSS --> |
|
||||
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"> |
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> |
|
||||
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" /> |
|
||||
<!-- Include Font Awesome --> |
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" rel="stylesheet"> |
|
||||
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script> |
|
||||
<style> |
|
||||
label { |
|
||||
font-weight: 700; |
|
||||
color: #2d5263; |
|
||||
} |
|
||||
|
|
||||
/*for radio button style*/ |
|
||||
.radio-group { |
|
||||
display: flex; |
|
||||
align-items: center; |
|
||||
/* Ensures all items are aligned to the center */ |
|
||||
} |
|
||||
|
|
||||
.radio-item { |
|
||||
display: flex; |
|
||||
align-items: center; |
|
||||
margin-right: 20px; |
|
||||
/* Adds space between each radio item */ |
|
||||
} |
|
||||
|
|
||||
.radio-item input[type="radio"] { |
|
||||
margin-right: 10px; |
|
||||
/* Adds space between the radio button and its label */ |
|
||||
vertical-align: middle; |
|
||||
/* Ensures vertical alignment */ |
|
||||
} |
|
||||
|
|
||||
.radio-item label { |
|
||||
margin: 0; |
|
||||
/* Removes any default margins that might affect alignment */ |
|
||||
} |
|
||||
|
|
||||
/*for check box*/ |
|
||||
.checkbox-label { |
|
||||
display: block; |
|
||||
margin-bottom: 10px; |
|
||||
font-size: 16px; |
|
||||
} |
|
||||
|
|
||||
/*for file uploading*/ |
|
||||
.custom-file-upload { |
|
||||
position: relative; |
|
||||
display: flex; |
|
||||
align-items: center; |
|
||||
border: 1px solid #d9dde4; |
|
||||
border-radius: 5px; |
|
||||
padding: 5px; |
|
||||
background-color: #f9fafb; |
|
||||
cursor: pointer; |
|
||||
margin-top: 5px; |
|
||||
} |
|
||||
|
|
||||
.custom-file-upload input[type="file"] { |
|
||||
position: absolute; |
|
||||
left: 0; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
height: 100%; |
|
||||
opacity: 0; |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
|
|
||||
.custom-file-upload label { |
|
||||
display: flex; |
|
||||
justify-content: space-between; |
|
||||
width: 100%; |
|
||||
align-items: center; |
|
||||
} |
|
||||
|
|
||||
.upload-icon i { |
|
||||
color: #a6adb5; |
|
||||
font-size: 18px; |
|
||||
} |
|
||||
|
|
||||
.file-name { |
|
||||
margin-left: 10px; |
|
||||
color: #414f69; |
|
||||
font-size: 14px; |
|
||||
} |
|
||||
|
|
||||
#upload-text { |
|
||||
color: #a7adb5; |
|
||||
|
|
||||
} |
|
||||
</style> |
|
||||
</head> |
|
||||
|
|
||||
<body> |
|
||||
|
|
||||
|
|
||||
<div class="row align-items-center justify-content-center" |
|
||||
style="color: white;background-color:#414f69 ;padding: 10px;"> |
|
||||
<h3 class="title resizable-content">Staff Enrollment</h3> |
|
||||
</div> |
|
||||
|
|
||||
<div class="container mt-4"> |
|
||||
|
|
||||
|
|
||||
<!-- Card Section --> |
|
||||
<div class="card p-3 resizable-content" style="margin-bottom: 8px;color: #414f69;"> |
|
||||
|
|
||||
|
|
||||
<!-- Add the resizable-content class to the card sections --> |
|
||||
<div class="card mb-3 resizable-content"> |
|
||||
<div class="card-header text-white" style="background-color: #414f69;">Personal Information's |
|
||||
</div> |
|
||||
<div class="card-body"> |
|
||||
<div class="row"> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Name:</label> |
|
||||
<input type="text" class="form-control" value="" placeholder="Enter Name..."> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Phone number:</label> |
|
||||
<input type="number" class="form-control" value="" placeholder="Enter the Phone Number..."> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Gender:</label> |
|
||||
<div class="radio-group"> |
|
||||
<div class="radio-item"> |
|
||||
<input type="radio" id="male" name="gender" value="male" checked> |
|
||||
<label for="male">Male</label> |
|
||||
</div> |
|
||||
<div class="radio-item"> |
|
||||
<input type="radio" id="female" name="gender" value="female"> |
|
||||
<label for="female">Female</label> |
|
||||
</div> |
|
||||
<div class="radio-item"> |
|
||||
<input type="radio" id="transgender" name="gender" value="transgender"> |
|
||||
<label for="transgender">Transgender</label> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Date Of Birth:</label> |
|
||||
<input type="date" class="form-control" value="" placeholder=""> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Education Qualification</label> |
|
||||
<select class="form-control"> |
|
||||
<option value="0">Select Qualification</option> |
|
||||
<option value="1">B.E</option> |
|
||||
<option value="2">Bcom</option> |
|
||||
</select> |
|
||||
</div> |
|
||||
<div class="col-md-6"> |
|
||||
<label>Scheme Group:</label> |
|
||||
<select class="form-control"> |
|
||||
<option value="0">Select Scheme Group</option> |
|
||||
<option value="1"> Scheme Group 1</option> |
|
||||
<option value="2"> Scheme Group 2</option> |
|
||||
</select> |
|
||||
</div> |
|
||||
|
|
||||
<div class="col-md-12"> |
|
||||
<label>Additional Skills:</label> |
|
||||
<div class="row"> |
|
||||
<div class="col-md-3"> |
|
||||
<div class="form-check checkbox-label"> |
|
||||
<input class="form-check-input" type="checkbox" id="typeing" name="skills" |
|
||||
value="typeing"> |
|
||||
<label class="form-check-label" for="typeing"> |
|
||||
Typing |
|
||||
</label> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="col-md-3"> |
|
||||
<div class="form-check checkbox-label"> |
|
||||
<input class="form-check-input" type="checkbox" id="shortHand" name="skills" |
|
||||
value="shortHand"> |
|
||||
<label class="form-check-label" for="shortHand"> |
|
||||
ShortHand |
|
||||
</label> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<div class="col-md-3"> |
|
||||
<div class="form-check checkbox-label"> |
|
||||
<input class="form-check-input" type="checkbox" id="dataentry" name="skills" |
|
||||
value="dataentry"> |
|
||||
<label class="form-check-label" for="dataentry"> |
|
||||
DataEntry |
|
||||
</label> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="col-md-3"> |
|
||||
<div class="form-check checkbox-label"> |
|
||||
<input class="form-check-input" type="checkbox" id="others" name="skills" |
|
||||
value="others"> |
|
||||
<label class="form-check-label" for="others"> |
|
||||
Others |
|
||||
</label> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="col-md-12"> |
|
||||
<label>Proof Documents:</label> |
|
||||
<div class="row"> |
|
||||
|
|
||||
|
|
||||
<!-- First File Upload --> |
|
||||
<div class="col-md-6"> |
|
||||
<div class="custom-file-upload"> |
|
||||
<input type="file" id="file-upload-1" class="form-control" |
|
||||
onchange="displayFileName('file-upload-1', 'file-name-1')"> |
|
||||
<label for="file-upload-1" id="file-label-1"> |
|
||||
<span class="upload-text" id="upload-text">Upload Aadhar Card</span> |
|
||||
<span class="upload-icon"> |
|
||||
<i class="fas fa-file-upload"></i> |
|
||||
</span> |
|
||||
</label> |
|
||||
<span id="file-name-1" class="file-name"></span> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<!-- Second File Upload --> |
|
||||
<div class="col-md-6"> |
|
||||
<div class="custom-file-upload"> |
|
||||
<input type="file" id="file-upload-2" class="form-control" |
|
||||
onchange="displayFileName('file-upload-2', 'file-name-2')"> |
|
||||
<label for="file-upload-2" id="file-label-2"> |
|
||||
<span class="upload-text" id="upload-text">Upload Bank Passbook</span> |
|
||||
<span class="upload-icon"> |
|
||||
<i class="fas fa-file-upload"></i> |
|
||||
</span> |
|
||||
</label> |
|
||||
<span id="file-name-2" class="file-name"></span> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<!-- Third File Upload --> |
|
||||
<div class="col-md-6"> |
|
||||
<div class="custom-file-upload"> |
|
||||
<input type="file" id="file-upload-3" class="form-control" |
|
||||
onchange="displayFileName('file-upload-3', 'file-name-3')"> |
|
||||
<label for="file-upload-3" id="file-label-3"> |
|
||||
<span class="upload-text" id="upload-text">Upload Ration Casd</span> |
|
||||
<span class="upload-icon"> |
|
||||
<i class="fas fa-file-upload"></i> |
|
||||
</span> |
|
||||
</label> |
|
||||
<span id="file-name-3" class="file-name"></span> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
</div> |
|
||||
<button class="btn btn-sm" style="background-color: #414f69;color: white;" id="staffenroll">Enroll |
|
||||
Staff</button> |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
</div> |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
</div> |
|
||||
|
|
||||
<!-- Bootstrap JS --> |
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> |
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script> |
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> |
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> |
|
||||
|
|
||||
<!-- JavaScript to handle button clicks --> |
|
||||
<script> |
|
||||
function displayFileName(inputId, outputId) { |
|
||||
const fileInput = document.getElementById(inputId); |
|
||||
const fileNameSpan = document.getElementById(outputId); |
|
||||
const fileName = fileInput.files[0]?.name || 'No file chosen'; |
|
||||
fileNameSpan.textContent = fileName; |
|
||||
} |
|
||||
$(document).ready(function () { |
|
||||
$('#staffenroll').click(function () { |
|
||||
Swal.fire({ |
|
||||
title: 'Success!', |
|
||||
text: 'Staff Enrolled Successfully', |
|
||||
icon: 'success', |
|
||||
confirmButtonText: 'OK', |
|
||||
background: '#f5f5f5', |
|
||||
confirmButtonColor: '#414f69' |
|
||||
}); |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
</script> |
|
||||
|
|
||||
</body> |
|
||||
|
|
||||
</html> |
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue