Blame view
src/pages/Dashboard.vue
12 KB
93a68cfa1
|
1 2 |
<template> <v-tabs |
ee83012b3
|
3 4 |
grow slider-color="black" |
93a68cfa1
|
5 |
> |
ee83012b3
|
6 7 |
<v-tab ripple @click="activeTab('existing')" v-bind:class="{ active: isActive }" id="tab"> |
93a68cfa1
|
8 9 |
Existing user </v-tab> |
ee83012b3
|
10 11 |
<v-tab ripple @click="activeTab('new')" v-bind:class="{ active: newActive }" id="tab1"> |
93a68cfa1
|
12 13 |
Add New Users </v-tab> |
ee83012b3
|
14 |
|
93a68cfa1
|
15 |
<v-tab-item> |
c35a8dafd
|
16 |
<v-dialog v-model="dialog" max-width="500px"> |
250d1e021
|
17 |
<v-toolbar color="white"> |
c35a8dafd
|
18 19 20 21 |
<v-spacer></v-spacer> <v-toolbar-title>Edit Profile</v-toolbar-title> <v-spacer></v-spacer> </v-toolbar> |
250d1e021
|
22 23 24 25 |
<v-card> <v-flex align-center justify-center layout text-xs-center> <v-avatar size="50px" style="position:absolute; top:10px; "> <img src="/static/icon/user.png"/></v-avatar> |
c35a8dafd
|
26 27 |
</v-flex> <v-card-text> |
e2e46164f
|
28 |
<v-container> |
c35a8dafd
|
29 |
<v-layout wrap justify-center> |
250d1e021
|
30 31 |
<v-flex xs12 sm9> <v-form> |
e2e46164f
|
32 |
|
250d1e021
|
33 |
<v-layout style="position:relative; top:15px;"> |
e2e46164f
|
34 35 36 37 38 39 |
<v-flex xs4 class="pt-4 subheading"> <label>First Name: </label> </v-flex> <v-flex xs8> <v-text-field v-model="editedItem.Name" |
269061695
|
40 |
v-validate="'required'" |
e2e46164f
|
41 |
:rules="nameRules" |
c35a8dafd
|
42 |
data-vv-name="Name" |
e2e46164f
|
43 44 |
required ></v-text-field></v-flex></v-layout> |
250d1e021
|
45 |
<v-layout> |
e2e46164f
|
46 47 48 49 |
<v-flex xs4 class="pt-4 subheading"> <label>Last Name: </label> </v-flex> <v-flex xs8> |
c35a8dafd
|
50 |
<v-text-field |
c35a8dafd
|
51 |
v-model="editedItem.LName" |
e2e46164f
|
52 53 54 55 56 57 58 59 60 61 62 63 64 |
v-validate="'required'" :rules="lnameRules" data-vv-name="Name" required ></v-text-field></v-flex></v-layout> <v-layout> <v-flex xs4 class="pt-4 subheading"> <label>Email ID: </label> </v-flex> <v-flex xs8> <v-text-field v-model="editedItem.Email" |
c35a8dafd
|
65 |
v-validate="'required|email'" |
e2e46164f
|
66 67 68 69 70 71 72 73 74 75 76 77 78 |
:rules="emailRules" data-vv-name="E-mail" required ></v-text-field></v-flex></v-layout> <v-layout> <v-flex xs4 class="pt-4 subheading"> <label>Date of Birth: </label> </v-flex> <v-flex xs8> <v-text-field v-model="editedItem.DOB" :rules="[rules.required, rules.min]" ></v-text-field></v-flex></v-layout> |
c35a8dafd
|
79 80 81 82 83 84 85 |
<v-card-actions> <v-btn round dark @click.native="close">Cancel</v-btn> <v-spacer></v-spacer> <v-btn round dark @click.native="save">Save</v-btn> </v-card-actions> |
250d1e021
|
86 87 |
</v-form> </v-flex> |
c35a8dafd
|
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
</v-layout> </v-container> </v-card-text> </v-card> </v-dialog> <v-dialog v-model="dialog1" max-width="500px"> <v-toolbar color="white"> <v-spacer></v-spacer> <v-toolbar-title>Profile</v-toolbar-title> <v-spacer></v-spacer> <v-icon @click="close1">close</v-icon> </v-toolbar> <v-card> <v-flex align-center justify-center layout text-xs-center> |
e2e46164f
|
105 |
<v-avatar size="50px" style="position:absolute; top:20px;"> |
269061695
|
106 |
<img src="/static/icon/user.png"/> </v-avatar> |
c35a8dafd
|
107 108 109 110 |
</v-flex> <v-card-text> <v-container grid-list-md> <v-layout wrap justify-center> |
e2e46164f
|
111 |
<v-flex offset-xs3 id="flex"> |
c35a8dafd
|
112 113 |
<br><br> |
e2e46164f
|
114 |
<table style="position:absolute; top:110px;"> |
c35a8dafd
|
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
<th> <tr><h5><b>First Name:</b></h5></tr><br> <tr><h5><b>Last Name:</b></h5></tr><br> <tr><h5><b>Email:</b></h5></tr><br> <tr><h5><b>Date Of Birth:</b></h5></tr> </th> <th> <tr><td><h5><b>{{ editedItem.Name }}</b></h5></td></tr><br> <tr> <td><h5><b>{{ editedItem.LName }}</b></h5></td></tr><br> <tr><td><h5><b>{{ editedItem.Email }}</b></h5></td></tr><br> <tr><td><h5><b>{{ editedItem.DOB }}</b></h5></td></tr> </th> </table> </v-flex> </v-layout> </v-container> </v-card-text> </v-card> </v-dialog> |
c35a8dafd
|
136 |
|
269061695
|
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
<v-dialog v-model="dialog2" max-width="800px"> <v-card> <div id="dialog"> <h4><b> Report </b> </h4> <h5 id="name"><b>Patient Name:</b> {{ editedItem.Name+' '+editedItem.LName }}</h5> <h5 id="m">Select Month:</h5> <v-btn flat id="G">Generate</v-btn> <v-spacer></v-spacer> <v-icon id="icon" @click="close2">close</v-icon> <span id="bt"> <v-btn flat>1 month</v-btn> <v-btn flat>3 Month</v-btn> <v-btn flat>6 Month</v-btn> <v-btn flat>12 Month</v-btn> |
789f8298f
|
152 |
<img id="e" @click="mail" src="/static/icon/email1.png"/> |
269061695
|
153 |
|
789f8298f
|
154 |
<img id="d" @click="download" src="/static/icon/download1.png"/> |
269061695
|
155 |
</span> |
8fc85e8ec
|
156 157 158 |
<v-card-text> <h5 style="position: absolute; top:275px; left:270px"><b>Select month to generate report</b></h5> </v-card-text> |
269061695
|
159 160 |
</div> </v-card> |
269061695
|
161 |
</v-dialog> |
93a68cfa1
|
162 |
<v-data-table |
c35a8dafd
|
163 164 |
:headers="headers" :items="desserts" |
5ac5570a9
|
165 |
:pagination.sync="pagination" |
c35a8dafd
|
166 167 |
> <template slot="items" slot-scope="props"> |
e2e46164f
|
168 169 170 |
<td id="td" class="text-xs-center">{{ props.item.No }}</td> <td id="td" class="text-xs-center">{{ props.item.Name+' '+props.item.LName }}</td> <td id="td" class="text-xs-center">{{ props.item.Email }}</td> |
269061695
|
171 172 |
|
4413a8d93
|
173 |
<td class="text-xs-center"> |
269061695
|
174 175 |
<span> |
4413a8d93
|
176 177 178 |
<img style="cursor:pointer; height:20px; " class="mr-5" @click="report(props.item)" src="/static/icon/List1.png"/> <img style="cursor:pointer; width:25px; height:18px; " class="mr-5" @click="profile(props.item)" src="/static/icon/eye1.png"/> <img style="cursor:pointer; width:20px; height:18px; " class="mr-5" @click="editItem(props.item)" src="/static/icon/edit1.png"/> |
269061695
|
179 180 |
<img style="cursor:pointer; height:20px; " class="mr-2" @click="deleteItem(props.item)" src="/static/icon/delete1.png"/> </span> |
c35a8dafd
|
181 |
</td> |
269061695
|
182 |
|
c35a8dafd
|
183 |
</template> |
4413a8d93
|
184 |
|
c35a8dafd
|
185 |
</v-data-table> |
e2e46164f
|
186 |
|
93a68cfa1
|
187 188 189 190 191 |
</v-tab-item> <v-tab-item> <v-flex xs12 sm6 offset-sm3> |
04e3fbc56
|
192 |
<v-card flat> |
04e3fbc56
|
193 |
<v-container fluid fill-height> |
93a68cfa1
|
194 |
<v-layout align-center> |
04e3fbc56
|
195 196 |
<v-flex xs12 sm8 offset-sm2> <v-flex offset-sm5> |
269061695
|
197 198 |
<v-avatar size="55px"> <img src="/static/icon/user.png"/> </v-avatar> |
04e3fbc56
|
199 |
</v-flex> |
c35a8dafd
|
200 |
<v-form ref="form" v-model="valid" lazy-validation> |
4413a8d93
|
201 202 |
<v-layout> <v-flex xs4 class="pt-4 subheading"> |
e2e46164f
|
203 |
<label>First Name: </label> |
4413a8d93
|
204 205 206 207 208 209 210 211 212 213 214 215 216 217 |
</v-flex> <v-flex xs8> <v-text-field v-model="Name" :rules="nameRules" required ></v-text-field> </v-flex> </v-layout> <v-layout> <v-flex xs4 class="pt-4 subheading"> <label>Last Name: </label> </v-flex> <v-flex xs8> |
c35a8dafd
|
218 |
<v-text-field |
4413a8d93
|
219 |
:rules="lnameRules" |
c35a8dafd
|
220 |
v-model="LName" |
c35a8dafd
|
221 222 |
required ></v-text-field> |
4413a8d93
|
223 224 225 226 |
</v-flex> </v-layout> <v-layout> <v-flex xs4 class="pt-4 subheading"> |
e2e46164f
|
227 |
<label>Email ID: </label> |
4413a8d93
|
228 229 |
</v-flex> <v-flex xs8> |
c35a8dafd
|
230 |
<v-text-field |
c35a8dafd
|
231 |
:rules="emailRules" |
4413a8d93
|
232 |
v-model="email" |
c35a8dafd
|
233 |
required |
4413a8d93
|
234 235 236 237 238 239 240 241 242 |
></v-text-field> </v-flex> </v-layout> <v-layout> <v-flex xs4 class="pt-4 subheading"> <label>Date of Birth: </label> </v-flex> <v-flex xs8> |
93a68cfa1
|
243 |
<v-text-field |
04e3fbc56
|
244 |
:rules="[rules.required, rules.min]" |
c35a8dafd
|
245 |
v-model="DOB" |
4413a8d93
|
246 247 248 249 250 |
required ></v-text-field> </v-flex> </v-layout> <v-card-actions> |
c35a8dafd
|
251 252 253 254 255 256 |
<v-btn @click="clear" round dark>clear</v-btn> <v-spacer></v-spacer> <v-btn @click="submit" round dark> Add </v-btn> </v-card-actions> </v-form> |
93a68cfa1
|
257 258 259 260 261 |
</v-flex> </v-layout> </v-container> </v-card> </v-flex> |
c35a8dafd
|
262 |
</v-tab-item> |
93a68cfa1
|
263 264 265 266 267 268 |
</v-tabs> </template> <script> |
c35a8dafd
|
269 |
import axios from 'axios'; |
93a68cfa1
|
270 |
export default { |
93a68cfa1
|
271 |
data: () => ({ |
c35a8dafd
|
272 273 |
No: '', Name: '', |
04e3fbc56
|
274 |
LName: '', |
c35a8dafd
|
275 |
Email: '', |
93a68cfa1
|
276 |
DOB: '', |
93a68cfa1
|
277 278 |
search: '', dialog: false, |
c35a8dafd
|
279 280 281 |
dialog1: false, dialog2: false, valid: true, |
ee83012b3
|
282 283 |
isActive: true, newActive: false, |
5ac5570a9
|
284 285 286 |
pagination: { rowsPerPage: 10 }, |
04e3fbc56
|
287 |
rules: { |
5ac5570a9
|
288 |
required: value => !!value || 'Date of Birth is Required.', |
ee83012b3
|
289 290 291 292 293 294 |
min: v => (/^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/.test( v ) && v.length > 0) || 'Please enter a date in the format dd/mm/yyyy' |
04e3fbc56
|
295 |
}, |
4413a8d93
|
296 |
nameRules: [v => !!v || ' First Name is required'], |
c35a8dafd
|
297 298 299 300 301 |
email: '', emailRules: [ v => !!v || 'E-mail is required', v => /.+@.+/.test(v) || 'E-mail must be valid' ], |
4413a8d93
|
302 |
lnameRules: [v => !!v || ' Last Name is required'], |
93a68cfa1
|
303 304 305 |
headers: [ { text: 'No', |
e2e46164f
|
306 |
align: 'center', |
93a68cfa1
|
307 |
sortable: false, |
c35a8dafd
|
308 |
value: 'No' |
93a68cfa1
|
309 |
}, |
e2e46164f
|
310 311 312 |
{ text: 'Name', value: 'Name', sortable: false, align: 'center' }, { text: 'Email', value: 'Email', sortable: false, align: 'center' }, { text: '', value: '', sortable: false, align: 'center' } |
c35a8dafd
|
313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 |
], desserts: [ { No: 1, Name: 'Amit', LName: 'goyal', Email: 'jsi@gmail.com', DOB: '22/09/1996' }, { No: 2, Name: 'Sumit', LName: 'kumar', Email: 'aasi@gmail.com', DOB: '16/09/1997' |
e2e46164f
|
328 |
} |
93a68cfa1
|
329 |
], |
93a68cfa1
|
330 331 332 333 |
editedIndex: -1, editedItem: { No: '', Name: '', |
c35a8dafd
|
334 |
LName: '', |
ee83012b3
|
335 |
Email: '' |
93a68cfa1
|
336 337 338 339 |
}, defaultItem: { No: '', Name: '', |
c35a8dafd
|
340 |
LName: '', |
ee83012b3
|
341 |
Email: '' |
c35a8dafd
|
342 |
} |
93a68cfa1
|
343 |
}), |
4413a8d93
|
344 345 346 347 348 349 350 351 |
// computed: { // pages () { // if (this.pagination.rowsPerPage == null || // this.pagination.totalItems == null // ) return 0; // return Math.ceil(this.pagination.totalItems / this.pagination.rowsPerPage); // } // }, |
93a68cfa1
|
352 |
methods: { |
93a68cfa1
|
353 354 355 356 357 |
editItem (item) { this.editedIndex = this.desserts.indexOf(item); this.editedItem = Object.assign({}, item); this.dialog = true; }, |
c35a8dafd
|
358 359 360 361 362 363 364 365 366 |
profile (item) { this.editedIndex = this.desserts.indexOf(item); this.editedItem = Object.assign({}, item); this.dialog1 = true; }, report (item) { this.editedIndex = this.desserts.indexOf(item); this.editedItem = Object.assign({}, item); this.dialog2 = true; |
a259e694f
|
367 |
}, |
93a68cfa1
|
368 369 370 371 372 373 |
deleteItem (item) { const index = this.desserts.indexOf(item); confirm('Are you sure you want to delete this item?') && this.desserts.splice(index, 1); }, |
ee83012b3
|
374 375 376 377 378 379 380 381 382 383 384 385 386 |
activeTab (type) { switch (type) { case 'existing': this.newActive = false; this.isActive = true; break; default: this.newActive = true; this.isActive = false; break; } }, |
93a68cfa1
|
387 388 389 390 391 392 393 394 |
close () { this.dialog = false; setTimeout(() => { this.editedItem = Object.assign({}, this.defaultItem); this.editedIndex = -1; }, 300); }, |
c35a8dafd
|
395 396 397 398 399 400 401 402 403 404 405 406 407 |
close1 () { this.dialog1 = false; }, close2 () { this.dialog2 = false; }, submit () { if (this.$refs.form.validate()) { // Native form submission is not yet supported axios.post('/api/submit', { Name: this.Name, LName: this.LName, Email: this.Email, |
ee83012b3
|
408 |
DOB: this.DOB |
c35a8dafd
|
409 410 411 |
}); } }, |
789f8298f
|
412 |
mail () { |
4413a8d93
|
413 |
// this.editedIndex = this.desserts.indexOf(); |
789f8298f
|
414 415 |
}, download () { |
4413a8d93
|
416 417 |
// this.editedIndex = this.desserts.indexOf(); |
789f8298f
|
418 |
}, |
ee83012b3
|
419 420 421 |
clear () { this.$refs.form.reset(); }, |
93a68cfa1
|
422 423 424 425 426 427 428 429 |
save () { if (this.editedIndex > -1) { Object.assign(this.desserts[this.editedIndex], this.editedItem); } else { this.desserts.push(this.editedItem); } this.close(); } |
4413a8d93
|
430 |
}, |
93a68cfa1
|
431 |
}; |
93a68cfa1
|
432 |
</script> |
04e3fbc56
|
433 |
<style scoped> |
ee83012b3
|
434 |
.v-card__actions .v-btn { |
04e3fbc56
|
435 436 437 |
margin: 0 15px; min-width: 120px; } |
8fc85e8ec
|
438 |
|
ee83012b3
|
439 440 441 442 443 |
h4 { background-repeat: no-repeat; padding: 8px; margin: auto; font-size: 25px; |
269061695
|
444 |
} |
ee83012b3
|
445 446 447 448 |
#name { position: absolute; left: 100px; top: 17px; |
269061695
|
449 |
} |
ee83012b3
|
450 |
#icon { |
269061695
|
451 452 453 454 |
position: absolute; right: 8px; top: 8px; } |
ee83012b3
|
455 |
#m { |
269061695
|
456 457 458 459 |
position: relative; left: 135px; top: -11px; } |
ee83012b3
|
460 461 462 |
#G { position: absolute; top: 38px; |
269061695
|
463 |
} |
ee83012b3
|
464 |
#bt { |
269061695
|
465 |
position: relative; |
ee83012b3
|
466 467 |
top: -20px; left: 115px; |
269061695
|
468 |
} |
ee83012b3
|
469 470 471 |
#e { position: relative; right: -110px; |
269061695
|
472 473 474 |
height: 17px; cursor: pointer; } |
ee83012b3
|
475 476 477 478 479 |
#d { position: relative; right: -150px; height: 17px; cursor: pointer; |
269061695
|
480 481 |
} #td { |
ee83012b3
|
482 483 484 |
border: 1px solid #dddddd; text-align: left; padding: 8px; |
269061695
|
485 |
} |
ee83012b3
|
486 487 488 489 490 491 |
#dialog { height: 550px; } .active { background-color: black; color: white !important; |
269061695
|
492 |
} |
e2e46164f
|
493 |
#flex{ |
250d1e021
|
494 |
height: 300px; |
e2e46164f
|
495 |
} |
04e3fbc56
|
496 |
</style> |