Commit dea4d2889746cb7b62acba1f1d51c56e26799349

Authored by Neeraj Sharma
1 parent 6a40df7c7f

task commited

... ... @@ -312,7 +312,7 @@ const teacherMenu = [{
312 312 { name: 'Course', title: 'Course', component: 'Course', action: '', },
313 313 { name: 'Enroll Students', title: 'Enroll Students', component: 'Enroll Students', action: '', },
314 314 { name: 'Course Detail', title: 'Course Detail', component: 'Course Detail', action: '', },
315   - // { name: 'Routine', title: 'Routine', component: 'Routine', action: '', },
  315 + { name: 'Course Discussion', title: 'Course Discussion', component: 'Course Discussion', action: '', },
316 316 ]
317 317 },
318 318 {
... ...
src/pages/Course/courseDiscussion.vue
... ... @@ -0,0 +1,481 @@
  1 +<template>
  2 + <v-container fluid class="body-color">
  3 + <v-dialog v-model="editDialog" max-width="600px" scrollable>
  4 + <v-card flat class="card-style pa-2" dark>
  5 + <v-layout>
  6 + <v-flex xs12>
  7 + <label class="title text-xs-center">Edit Course Discussion</label>
  8 + <v-icon size="24" class="right" @click="editDialog = false">cancel</v-icon>
  9 + </v-flex>
  10 + </v-layout>
  11 + <v-card-text>
  12 + <v-form ref="form">
  13 + <v-container fluid>
  14 + <v-layout>
  15 + <v-flex xs12 class="text-xs-center text-sm-center text-md-center text-lg-center">
  16 + <v-avatar size="100px" v-if="!editedItem.attachementUrl && !editImageUrl">
  17 + <img src="/static/icon/user.png" />
  18 + </v-avatar>
  19 + <img
  20 + :src="editedItem.attachementUrl"
  21 + v-else-if="editedItem.attachementUrl && !editImageUrl"
  22 + height="150"
  23 + style="border-radius:50%; width:150px"
  24 + />
  25 + <img
  26 + v-if="editImageUrl"
  27 + :src="editImageUrl"
  28 + style="border-radius:50%; width:150px;height:150px"
  29 + />
  30 + <input
  31 + type="file"
  32 + style="display: none"
  33 + ref="editDataImage"
  34 + accept="image/*"
  35 + @change="onEditFilePicked"
  36 + />
  37 + </v-flex>
  38 + </v-layout>
  39 + <v-layout wrap>
  40 + <v-flex xs12 sm12>
  41 + <v-layout>
  42 + <v-flex xs4 sm5 class="pt-4 subheading">
  43 + <label class="right hidden-xs-only hidden-sm-only">Select Class:</label>
  44 + <label class="right hidden-lg-only hidden-md-only hidden-xl-only">Class:</label>
  45 + </v-flex>
  46 + <v-flex xs8 sm7 class="ml-3">
  47 + <v-select
  48 + :items="addclass"
  49 + v-model="editedItem.classId"
  50 + item-text="classNum"
  51 + item-value="_id"
  52 + name="Select Class"
  53 + required
  54 + @change="editGetCourses(editedItem.classId)"
  55 + ></v-select>
  56 + </v-flex>
  57 + </v-layout>
  58 + <v-layout>
  59 + <v-flex xs12 sm12>
  60 + <v-layout>
  61 + <v-flex xs4 sm5 class="pt-4 subheading">
  62 + <label class="right">Select Course:</label>
  63 + </v-flex>
  64 + <v-flex xs8 sm7 class="ml-3">
  65 + <v-select
  66 + :items="editCourseData"
  67 + label="Select Course"
  68 + v-model="editedItem.courseId"
  69 + item-text="courseName"
  70 + item-value="_id"
  71 + required
  72 + class="ml-2"
  73 + ></v-select>
  74 + </v-flex>
  75 + </v-layout>
  76 + </v-flex>
  77 + </v-layout>
  78 + <v-layout>
  79 + <v-flex xs4 sm5 class="pt-4 subheading">
  80 + <label class="right">Subject:</label>
  81 + </v-flex>
  82 + <v-flex xs8 sm7 class="ml-3">
  83 + <v-text-field v-model="editedItem.subject" type="text" required></v-text-field>
  84 + </v-flex>
  85 + </v-layout>
  86 + <v-layout>
  87 + <v-flex xs4 sm5 class="pt-4 subheading">
  88 + <label class="right">Description:</label>
  89 + </v-flex>
  90 + <v-flex xs8 sm7 class="ml-3">
  91 + <v-text-field v-model="editedItem.description" type="text" required></v-text-field>
  92 + </v-flex>
  93 + </v-layout>
  94 + <v-layout>
  95 + <v-flex xs4 sm5 class="pt-4 subheading">
  96 + <label class="right hidden-xs-only hidden-sm-only">Upload Image:</label>
  97 + <label class="right hidden-lg-only hidden-md-only hidden-xl-only">Upload:</label>
  98 + </v-flex>
  99 + <v-flex xs8 sm7 class="ml-3">
  100 + <v-text-field
  101 + @click="pickEditFile"
  102 + v-model="editImageName"
  103 + append-icon="attach_file"
  104 + ></v-text-field>
  105 + </v-flex>
  106 + </v-layout>
  107 + </v-flex>
  108 + </v-layout>
  109 + <v-layout>
  110 + <v-flex xs12 sm12 class="px-0 mx-0">
  111 + <v-layout class="right">
  112 + <v-btn @click="save" round dark :loading="editLoading" class="add-button">Save</v-btn>
  113 + </v-layout>
  114 + </v-flex>
  115 + </v-layout>
  116 + </v-container>
  117 + </v-form>
  118 + </v-card-text>
  119 + </v-card>
  120 + </v-dialog>
  121 + <!-- ****** DIsCUSIION TABLE ****** -->
  122 + <v-toolbar color="transparent" flat>
  123 + <v-spacer></v-spacer>
  124 + <v-flex xs12 sm4 md2>
  125 + <v-select
  126 + small
  127 + :items="addclass"
  128 + label="Select Class"
  129 + v-model="getSelectedData.classId"
  130 + item-text="classNum"
  131 + item-value="_id"
  132 + name="Select Class"
  133 + @change="getCourses(getSelectedData.classId)"
  134 + class="mr-2"
  135 + required
  136 + ></v-select>
  137 + </v-flex>
  138 + <v-flex xs12 sm4 md2>
  139 + <v-select
  140 + :items="courseData"
  141 + label="Select Course"
  142 + v-model="getSelectedData.courseId"
  143 + item-text="courseName"
  144 + item-value="_id"
  145 + required
  146 + class="ml-2"
  147 + @change="getCourseDiscussionTable(getSelectedData.courseId)"
  148 + ></v-select>
  149 + </v-flex>
  150 + <v-card-title class="body-1" v-show="show">
  151 + <v-btn icon large flat @click="displaySearch">
  152 + <v-avatar size="27">
  153 + <img src="/static/icon/search.png" alt="icon" />
  154 + </v-avatar>
  155 + </v-btn>
  156 + </v-card-title>
  157 + <v-flex xs8 sm8 md3 lg2 v-show="showSearch">
  158 + <v-layout>
  159 + <v-text-field v-model="search" label="Search" prepend-inner-icon="search" color="primary"></v-text-field>
  160 + <v-icon @click="closeSearch" color="error">close</v-icon>
  161 + </v-layout>
  162 + </v-flex>
  163 + </v-toolbar>
  164 + <v-data-table
  165 + :headers="headers"
  166 + :items="courseDiscussionData"
  167 + :pagination.sync="pagination"
  168 + :search="search"
  169 + >
  170 + <template slot="items" slot-scope="props">
  171 + <tr class="tr">
  172 + <td class="text-xs-center td td-row">
  173 + <v-avatar size="40">
  174 + <img :src="props.item.attachementUrl" v-if="props.item.attachementUrl" />
  175 + <img src="/static/icon/user.png" v-else-if="!props.item.attachementUrl" />
  176 + </v-avatar>
  177 + </td>
  178 + <td class="text-xs-center td td-row">
  179 + <router-link
  180 + :to="{ name:'Course Discussiones Form',params: { discussionId:props.item._id } }"
  181 + >{{ props.item.subject }}</router-link>
  182 + </td>
  183 + <td class="text-xs-center td td-row">{{ props.item.studentId.name}}</td>
  184 + <td class="text-xs-center td td-row">-</td>
  185 + <td class="text-xs-center td td-row">{{ props.item.forumThread.length }}</td>
  186 + <td class="text-xs-center td td-row">
  187 + <span>
  188 + <v-tooltip top>
  189 + <img
  190 + slot="activator"
  191 + style="cursor:pointer; width:20px; height:18px; "
  192 + class="mr-3"
  193 + @click="editItem(props.item)"
  194 + src="/static/icon/edit.png"
  195 + />
  196 + <span>Edit</span>
  197 + </v-tooltip>
  198 + <v-tooltip top>
  199 + <img
  200 + slot="activator"
  201 + style="cursor:pointer; width:20px; height:20px; "
  202 + class="mr-3"
  203 + @click="deleteItem(props.item)"
  204 + src="/static/icon/delete.png"
  205 + />
  206 + <span>Delete</span>
  207 + </v-tooltip>
  208 + </span>
  209 + </td>
  210 + </tr>
  211 + </template>
  212 + <v-alert
  213 + slot="no-results"
  214 + :value="true"
  215 + color="error"
  216 + icon="warning"
  217 + >Your search for "{{ search }}" found no results.</v-alert>
  218 + </v-data-table>
  219 + <v-snackbar
  220 + :timeout="timeout"
  221 + :top="y === 'top'"
  222 + :right="x === 'right'"
  223 + :vertical="mode === 'vertical'"
  224 + v-model="snackbar"
  225 + color="success"
  226 + >{{ text }}</v-snackbar>
  227 + <div class="loader" v-if="showLoader">
  228 + <v-progress-circular indeterminate color="white"></v-progress-circular>
  229 + </div>
  230 + </v-container>
  231 +</template>
  232 +
  233 +<script>
  234 +import http from "@/Services/http.js";
  235 +import moment from "moment";
  236 +
  237 +export default {
  238 + data: () => ({
  239 + snackbar: false,
  240 + y: "top",
  241 + x: "right",
  242 + mode: "",
  243 + timeout: 3000,
  244 + text: "",
  245 + show: true,
  246 + showSearch: false,
  247 + showLoader: false,
  248 + loading: false,
  249 + date: null,
  250 + search: "",
  251 + addclass: [],
  252 + pagination: {
  253 + rowsPerPage: 10
  254 + },
  255 + headers: [
  256 + {
  257 + text: "Image",
  258 + value: "subjattachementUrlect",
  259 + sortable: false,
  260 + align: "center"
  261 + },
  262 + {
  263 + text: "Discussion",
  264 + value: "subject",
  265 + sortable: false,
  266 + align: "center"
  267 + },
  268 + { text: "Started", value: "studentId", sortable: false, align: "center" },
  269 + {
  270 + text: "Last Post",
  271 + value: "forumThread",
  272 + sortable: false,
  273 + align: "center"
  274 + },
  275 + { text: "replies", value: "email", sortable: false, align: "center" },
  276 + { text: "Action", value: "", sortable: false, align: "center" }
  277 + ],
  278 + token: "",
  279 + selectStudents: {
  280 + select: "",
  281 + selectSection: ""
  282 + },
  283 +
  284 + role: "",
  285 + schoolRole: "",
  286 + menu: false,
  287 + valid: true,
  288 +
  289 + getSelectedData: {},
  290 + courseDiscussionData: [],
  291 + courseData: [],
  292 + editCourseData: [],
  293 + addSection: [],
  294 + editedItem: {},
  295 + editDialog: false,
  296 + editedIndex: -1,
  297 + editiImageFile: "",
  298 + editImageName: "",
  299 + editImageUrl: "",
  300 + editLoading: false
  301 + }),
  302 + methods: {
  303 + // save(date) {
  304 + // this.$refs.menu.save(date);
  305 + // },
  306 + pickEditFile() {
  307 + this.$refs.editDataImage.click();
  308 + },
  309 + onEditFilePicked(e) {
  310 + console.log(e);
  311 + const files = e.target.files;
  312 + if (files[0] !== undefined) {
  313 + this.editImageName = files[0].name;
  314 + console.log("this.editImageName", this.editImageName);
  315 +
  316 + if (this.editImageName.lastIndexOf(".") <= 0) {
  317 + return;
  318 + }
  319 + const fr = new FileReader();
  320 + fr.readAsDataURL(files[0]);
  321 + fr.addEventListener("load", () => {
  322 + this.editImageUrl = fr.result;
  323 + this.editiImageFile = files[0]; // this is an image file that can be sent to server...
  324 + });
  325 + } else {
  326 + this.editImageName = "";
  327 + this.editiImageFile = "";
  328 + }
  329 + },
  330 + getAllClass() {
  331 + http()
  332 + .get("/getClassesList", {
  333 + headers: { Authorization: "Bearer " + this.token }
  334 + })
  335 + .then(response => {
  336 + this.addclass = response.data.data;
  337 + })
  338 + .catch(error => {
  339 + // console.log("err====>", err);
  340 + // this.$router.replace({ path: "/" });
  341 + });
  342 + },
  343 + getCourses(classId) {
  344 + this.showLoader = true;
  345 + http()
  346 + .get("/getCourseesList", {
  347 + params: {
  348 + classId: classId
  349 + }
  350 + })
  351 + .then(response => {
  352 + this.courseData = response.data.data;
  353 + this.showLoader = false;
  354 + })
  355 + .catch(err => {
  356 + console.log("err====>", err);
  357 + this.showLoader = false;
  358 + });
  359 + },
  360 + editGetCourses(classId) {
  361 + this.showLoader = true;
  362 + http()
  363 + .get("/getCourseesList", {
  364 + params: {
  365 + classId: classId
  366 + }
  367 + })
  368 + .then(response => {
  369 + this.editCourseData = response.data.data;
  370 + this.showLoader = false;
  371 + })
  372 + .catch(err => {
  373 + console.log("err====>", err);
  374 + this.showLoader = false;
  375 + });
  376 + },
  377 + getCourseDiscussionTable(id) {
  378 + // console.log("id", this.getSelectedData.courseId);
  379 + this.showLoader = true;
  380 + http()
  381 + .get("/getCourseDiscussionesList", {
  382 + params: {
  383 + classId: this.getSelectedData.classId,
  384 + courseId: id
  385 + }
  386 + })
  387 + .then(response => {
  388 + // console.log("response", response.data.data);
  389 + this.courseDiscussionData = response.data.data;
  390 + this.showLoader = false;
  391 + })
  392 + .catch(error => {
  393 + console.log("err====>", error);
  394 + this.showLoader = false;
  395 + });
  396 + },
  397 + editItem(item) {
  398 + this.editedIndex = this.courseDiscussionData.indexOf(item);
  399 + this.editedItem = Object.assign({}, item);
  400 + this.editDialog = true;
  401 + },
  402 + save() {
  403 + console.log("this.editedItem", this.editedItem);
  404 + let editCourseDiscuss = {
  405 + courseDiscussionId: this.editedItem._id,
  406 + courseId: this.editedItem.courseId,
  407 + studentId: this.editedItem.studentId._id,
  408 + subject: this.editedItem.subject,
  409 + description: this.editedItem.description
  410 + };
  411 + if (this.editedItem.classId._id) {
  412 + editCourseDiscuss.classId = this.editedItem.classId._id;
  413 + }
  414 + if (!this.editedItem.classId._id) {
  415 + editCourseDiscuss.classId = this.editedItem.classId;
  416 + }
  417 + if (this.editImageUrl) {
  418 + var str = this.editImageUrl;
  419 + const [baseUrl, editImageUrl] = str.split(/,/);
  420 + editCourse.upload = editImageUrl;
  421 + }
  422 + this.editLoading = true;
  423 + http()
  424 + .put("/updateCourseDiscussion", editCourseDiscuss)
  425 + .then(response => {
  426 + this.snackbar = true;
  427 + this.text = response.data.message;
  428 + this.color = "green";
  429 + this.imageUrl = "";
  430 + this.getCourseDiscussionTable();
  431 + this.editDialog = false;
  432 + this.editLoading = false;
  433 + })
  434 + .catch(error => {
  435 + this.editLoading = false;
  436 + this.snackbar = true;
  437 + this.text = error.response.data.statusText;
  438 + this.color = "error";
  439 + });
  440 + },
  441 + deleteItem(item) {
  442 + let deleteCourseDiscussion = {
  443 + courseDiscussionId: item._id
  444 + };
  445 + http()
  446 + .delete(
  447 + "/deleteCourseDiscussion",
  448 + confirm("Are you sure you want to delete this?") && {
  449 + params: deleteCourseDiscussion
  450 + }
  451 + )
  452 + .then(response => {
  453 + this.snackbar = true;
  454 + this.text = response.data.message;
  455 + this.color = "green";
  456 + this.getCourseDiscussionTable();
  457 + })
  458 + .catch(error => {
  459 + this.snackbar = true;
  460 + this.text = error.response.data.message;
  461 + this.color = "error";
  462 + });
  463 + },
  464 + displaySearch() {
  465 + this.show = false;
  466 + this.showSearch = true;
  467 + },
  468 + closeSearch() {
  469 + this.showSearch = false;
  470 + this.show = true;
  471 + this.search = "";
  472 + }
  473 + },
  474 + mounted() {
  475 + // this.getStudentList();
  476 + this.token = this.$store.state.token;
  477 + this.role = this.$store.state.role;
  478 + this.getAllClass();
  479 + }
  480 +};
  481 +</script>
0 482 \ No newline at end of file
... ...
src/pages/Course/discussion.vue
... ... @@ -0,0 +1,309 @@
  1 +<template>
  2 + <v-container fluid class="body-color">
  3 + <!-- ******COURSE DISCUSIION COMMENT ****** -->
  4 + <v-layout>
  5 + <v-flex xs12 v-for="(courseDiscussionData,i) in courseDiscussionData" :key="i">
  6 + <v-card class="elevation-0 grey lighten-3 pa-2" flat>
  7 + <v-list two-line subheader>
  8 + <v-list-tile>
  9 + <v-list-tile-avatar>
  10 + <v-avatar size="46">
  11 + <img
  12 + :src="courseDiscussionData.attachementUrl"
  13 + v-if="courseDiscussionData.attachementUrl"
  14 + />
  15 + <img src="/static/icon/user.png" v-else-if="!courseDiscussionData.attachementUrl" />
  16 + </v-avatar>
  17 + </v-list-tile-avatar>
  18 + <v-list-tile-content>
  19 + <v-list-tile-title>{{ courseDiscussionData.subject }}</v-list-tile-title>
  20 + <v-list-tile-sub-title>
  21 + By
  22 + <span class="info--text">{{ courseDiscussionData.studentId.name }}</span>
  23 + - {{dates(courseDiscussionData.created ) }}
  24 + </v-list-tile-sub-title>
  25 + </v-list-tile-content>
  26 + <v-list-tile-action>
  27 + <div>
  28 + <v-btn flat round dark class="reply-btn" @click="showReplyBox = true">Reply</v-btn>
  29 + </div>
  30 + </v-list-tile-action>
  31 + </v-list-tile>
  32 + </v-list>
  33 + </v-card>
  34 + <v-flex
  35 + xs12
  36 + class="mt-4 pl-5 mx-auto"
  37 + v-for="(replyThread,i) in courseDiscussionData.forumThread"
  38 + :key="i"
  39 + >
  40 + <v-card class="elevation-0 grey lighten-3" flat>
  41 + <v-list two-line subheader class="grey lighten-3 pa-1">
  42 + <v-list-tile>
  43 + <v-list-tile-avatar>
  44 + <v-avatar size="46">
  45 + <img
  46 + :src="courseDiscussionData.attachementUrl"
  47 + v-if="courseDiscussionData.attachementUrl"
  48 + />
  49 + <img
  50 + src="/static/icon/user.png"
  51 + v-else-if="!courseDiscussionData.attachementUrl"
  52 + />
  53 + </v-avatar>
  54 + </v-list-tile-avatar>
  55 + <v-list-tile-content>
  56 + <v-list-tile-title>Re: {{ courseDiscussionData.subject }}</v-list-tile-title>
  57 + <v-list-tile-sub-title>
  58 + By
  59 + <span class="info--text">{{ replyThread.teacherId.name }}</span>
  60 + - {{dates(replyThread.created ) }}
  61 + </v-list-tile-sub-title>
  62 + </v-list-tile-content>
  63 + </v-list-tile>
  64 + </v-list>
  65 + <v-list class="pa-2 reply-desc">
  66 + <v-list-tile-content>
  67 + <v-list-tile-title
  68 + v-show="replyThread.showDescriptionReplyThread"
  69 + >{{ replyThread.description }}</v-list-tile-title>
  70 + <v-flex xs12 sm12 md4 v-show="replyThread.showUpdateReplyThread == true">
  71 + <v-text-field v-model="replyThread.description"></v-text-field>
  72 + <v-btn
  73 + flat
  74 + round
  75 + dark
  76 + class="reply-btn right"
  77 + @click="updateRelpyThreadDiscussion(replyThread)"
  78 + >Save</v-btn>
  79 + </v-flex>
  80 + </v-list-tile-content>
  81 + </v-list>
  82 + <v-list class="grey lighten-4 pa-0">
  83 + <v-list-tile-action>
  84 + <v-spacer></v-spacer>
  85 + <div>
  86 + <v-btn
  87 + flat
  88 + round
  89 + dark
  90 + class="reply-btn"
  91 + @click="deleteRelpyThreadDiscussion(replyThread._id)"
  92 + >Delete</v-btn>
  93 + <v-btn
  94 + flat
  95 + round
  96 + dark
  97 + class="reply-btn mr-4"
  98 + @click="showUpdateReplyThreadDiscussion(replyThread)"
  99 + >Edit</v-btn>
  100 + </div>
  101 + </v-list-tile-action>
  102 + </v-list>
  103 + </v-card>
  104 + </v-flex>
  105 + <v-flex xs12 class="mt-4" v-show="showReplyBox">
  106 + <v-textarea
  107 + name="input-7-1"
  108 + solo
  109 + label="Label Text"
  110 + multi-line
  111 + v-model="replyDescription"
  112 + ></v-textarea>
  113 + <v-btn round dark class="open-dialog-button" flat @click="showReplyBox = false">Cancel</v-btn>
  114 + <v-btn
  115 + round
  116 + dark
  117 + :loading="loading"
  118 + class="reply-btn"
  119 + @click="replyThreadDiscussion()"
  120 + >Submit</v-btn>
  121 + </v-flex>
  122 + </v-flex>
  123 + </v-layout>
  124 + <v-snackbar
  125 + :timeout="timeout"
  126 + :top="y === 'top'"
  127 + :right="x === 'right'"
  128 + :vertical="mode === 'vertical'"
  129 + v-model="snackbar"
  130 + color="success"
  131 + >{{ text }}</v-snackbar>
  132 + <div class="loader" v-if="showLoader">
  133 + <v-progress-circular indeterminate color="white"></v-progress-circular>
  134 + </div>
  135 + </v-container>
  136 +</template>
  137 +
  138 +<script>
  139 +import http from "@/Services/http.js";
  140 +import moment from "moment";
  141 +
  142 +export default {
  143 + data: () => ({
  144 + snackbar: false,
  145 + y: "top",
  146 + x: "right",
  147 + mode: "",
  148 + timeout: 3000,
  149 + text: "",
  150 + showLoader: false,
  151 + loading: false,
  152 + date: null,
  153 + token: "",
  154 + role: "",
  155 + schoolRole: "",
  156 + menu: false,
  157 + courseDiscussionData: {},
  158 + showReplyBox: false,
  159 + replyDescription: "",
  160 + loginId: "",
  161 + editedIndex: -1
  162 + }),
  163 + methods: {
  164 + dates: function(date) {
  165 + return moment(date).format("MMMM DD, YYYY hh:mm A");
  166 + },
  167 + getDiscussionesThread() {
  168 + // console.log("id", this.getSelectedData.courseId);
  169 + this.showLoader = true;
  170 + http()
  171 + .get("/getParticularCourseDiscussion", {
  172 + params: {
  173 + courseDiscussionId: this.$route.params.discussionId
  174 + }
  175 + })
  176 + .then(response => {
  177 + // console.log("response", response.data.data);
  178 + this.courseDiscussionData = response.data.data;
  179 + for (let i = 0; i < this.courseDiscussionData.length; i++) {
  180 + for (
  181 + let j = 0;
  182 + j < this.courseDiscussionData[i].forumThread.length;
  183 + j++
  184 + ) {
  185 + this.courseDiscussionData[i].forumThread[
  186 + j
  187 + ].showUpdateReplyThread = false;
  188 + this.courseDiscussionData[i].forumThread[
  189 + j
  190 + ].showDescriptionReplyThread = true;
  191 + }
  192 + }
  193 + this.showLoader = false;
  194 + this.showReplyBox = false;
  195 + })
  196 + .catch(error => {
  197 + console.log("err====>", error);
  198 + this.showLoader = false;
  199 + });
  200 + },
  201 + replyThreadDiscussion() {
  202 + this.showLoader = true;
  203 + var payloadData = {
  204 + courseDiscussionId: this.$route.params.discussionId,
  205 + teacherId: this.loginId,
  206 + description: this.replyDescription
  207 + };
  208 + http()
  209 + .put("/replyForumThread", payloadData)
  210 + .then(response => {
  211 + // console.log("response", response.data.data);
  212 + this.showLoader = false;
  213 + this.getDiscussionesThread();
  214 + })
  215 + .catch(error => {
  216 + this.showLoader = false;
  217 + });
  218 + },
  219 + showUpdateReplyThreadDiscussion(item) {
  220 + this.editedIndex = this.courseDiscussionData.indexOf(item);
  221 + var editedItem = Object.assign({}, item);
  222 + var arrayOfcourseDiscussionData = [];
  223 + for (let i = 0; i < this.courseDiscussionData.length; i++) {
  224 + for (
  225 + let j = 0;
  226 + j < this.courseDiscussionData[i].forumThread.length;
  227 + j++
  228 + ) {
  229 + if (
  230 + editedItem._id == this.courseDiscussionData[i].forumThread[j]._id
  231 + ) {
  232 + this.courseDiscussionData[i].forumThread[
  233 + j
  234 + ].showUpdateReplyThread = true;
  235 + this.courseDiscussionData[i].forumThread[
  236 + j
  237 + ].showDescriptionReplyThread = false;
  238 + }
  239 + }
  240 + arrayOfcourseDiscussionData.push(this.courseDiscussionData[i]);
  241 + }
  242 + this.courseDiscussionData = arrayOfcourseDiscussionData;
  243 + },
  244 + updateRelpyThreadDiscussion(replyThread) {
  245 + this.showLoader = true;
  246 + var payloadData = {
  247 + forumThreadId: replyThread._id,
  248 + courseDiscussionId: this.$route.params.discussionId,
  249 + teacherId: this.loginId,
  250 + description: replyThread.description
  251 + };
  252 + http()
  253 + .put("/updateForumThread", payloadData)
  254 + .then(response => {
  255 + this.showLoader = false;
  256 + this.getDiscussionesThread();
  257 + })
  258 + .catch(error => {
  259 + this.showLoader = false;
  260 + });
  261 + },
  262 + deleteRelpyThreadDiscussion(id) {
  263 + this.showLoader = true;
  264 + var payloadData = {
  265 + forumThreadId: id,
  266 + courseDiscussionId: this.$route.params.discussionId
  267 + };
  268 + http()
  269 + .put(
  270 + "/deleteForumThread",
  271 + confirm("Are you sure you want to delete this?") && payloadData
  272 + )
  273 + .then(response => {
  274 + this.showLoader = false;
  275 + this.getDiscussionesThread();
  276 + })
  277 + .catch(error => {
  278 + this.showLoader = false;
  279 + });
  280 + }
  281 + },
  282 + mounted() {
  283 + // this.getStudentList();
  284 + this.token = this.$store.state.token;
  285 + this.role = this.$store.state.role;
  286 + this.loginId = this.$store.state.id;
  287 + this.getDiscussionesThread();
  288 + }
  289 +};
  290 +</script>
  291 +
  292 +<style>
  293 +.reply-desc {
  294 + border: 1px solid #f2f2f2;
  295 +}
  296 +.open-dialog-button {
  297 + background: #827bfa !important;
  298 + border-color: #827bfa !important;
  299 + text-transform: none !important;
  300 +}
  301 +
  302 +.reply-btn {
  303 + background: #feb83c !important;
  304 + border-color: #feb83c !important;
  305 + text-transform: none !important;
  306 + -webkit-box-shadow: none !important;
  307 + box-shadow: none !important;
  308 +}
  309 +</style>
0 310 \ No newline at end of file
... ...
src/pages/Course/enrollStudents.vue
... ... @@ -277,7 +277,7 @@ export default {
277 277 .then(response => {
278 278 this.snackbar = true;
279 279 this.text = response.data.message;
280   - this.getParticularCourse()
  280 + this.getParticularCourse();
281 281 })
282 282 .catch(error => {
283 283 this.snackbar = true;
... ... @@ -288,11 +288,8 @@ export default {
288 288 console.log("selected", selected);
289 289 let selectedStudentsArray = [];
290 290 selectedStudentsArray.push({ studentId: selected._id });
291   - if (
292   - selected.enroll === true &&
293   - selected.enroll === undefined &&
294   - selected.enroll === null
295   - ) {
  291 + // console.log("selected.enroll", selected.enroll);
  292 + if (selected.enroll === true) {
296 293 var payload = {
297 294 courseId: this.getReport.courseId,
298 295 enrollStudents: selectedStudentsArray
... ... @@ -302,6 +299,7 @@ export default {
302 299 .then(response => {
303 300 this.snackbar = true;
304 301 this.text = response.data.message;
  302 + this.getParticularCourse();
305 303 })
306 304 .catch(error => {
307 305 this.snackbar = true;
... ... @@ -322,6 +320,7 @@ export default {
322 320 .then(response => {
323 321 this.snackbar = true;
324 322 this.text = response.data.message;
  323 + this.getParticularCourse();
325 324 })
326 325 .catch(error => {
327 326 this.snackbar = true;
... ... @@ -343,7 +342,7 @@ export default {
343 342 studentId = response.data.data.enrollStudents[i];
344 343 for (let j = 0; j < this.studentsData.length; j++) {
345 344 if (studentId.studentId == this.studentsData[j]._id) {
346   - console.log("studentId._id", studentId._id);
  345 + // console.log("studentId._id", studentId._id);
347 346 this.studentsData[j].enroll = true;
348 347 this.studentsData[j].enrollId = studentId._id;
349 348 }
... ...
src/pages/Dashboard/dashboard.vue
... ... @@ -386,7 +386,7 @@
386 386 <div class="text-xs-center py-3 subheading font-weight-bold">Calender</div>
387 387 <vue-event-calendar :events="activityEvents"></vue-event-calendar>
388 388 <!-- LATEST ACTIVITY -->
389   - <v-card class="my-3 elevation-0">
  389 + <v-card class="my-3 elevation-0" v-if="role == 'PARENT'">
390 390 <v-card-text>
391 391 <v-card-title class="justify-center subheading font-weight-bold">Latest Activity</v-card-title>
392 392 <div v-for="(activity,index) in activityList" :key="index" class="mt-2">
... ...
src/router/paths.js
... ... @@ -14,7 +14,7 @@ export default [{
14 14 },
15 15 name: 'NotFound',
16 16 component: () =>
17   - import(
  17 + import (
18 18 /* webpackChunkName: "routes" */
19 19 /* webpackMode: "lazy-once" */
20 20 `@/pages/NotFound/NotFound.vue`
... ... @@ -28,7 +28,7 @@ export default [{
28 28 type: route.query.type
29 29 }),
30 30 component: () =>
31   - import(
  31 + import (
32 32 /* webpackChunkName: "routes" */
33 33 /* webpackMode: "lazy-once" */
34 34 `@/pages/Dashboard/dashboard.vue`
... ... @@ -41,7 +41,7 @@ export default [{
41 41 },
42 42 name: 'ServerError',
43 43 component: () =>
44   - import(
  44 + import (
45 45 /* webpackChunkName: "routes" */
46 46 /* webpackMode: "lazy-once" */
47 47 `@/pages/NotFound/Error.vue`
... ... @@ -55,7 +55,7 @@ export default [{
55 55 type: route.query.type
56 56 }),
57 57 component: () =>
58   - import(
  58 + import (
59 59 /* webpackChunkName: "routes" */
60 60 /* webpackMode: "lazy-once" */
61 61 `@/pages/Authentication/changepassword.vue`
... ... @@ -68,7 +68,7 @@ export default [{
68 68 },
69 69 name: 'Teachers',
70 70 component: () =>
71   - import(
  71 + import (
72 72 /* webpackChunkName: "routes" */
73 73 /* webpackMode: "lazy-once" */
74 74 `@/pages/Teachers/teachers.vue`
... ... @@ -81,7 +81,7 @@ export default [{
81 81 },
82 82 name: 'Login',
83 83 component: () =>
84   - import(
  84 + import (
85 85 /* webpackChunkName: "routes" */
86 86 /* webpackMode: "lazy-once" */
87 87 `@/pages/Authentication/Login.vue`
... ... @@ -94,7 +94,7 @@ export default [{
94 94 },
95 95 name: 'forgetpassword',
96 96 component: () =>
97   - import(
  97 + import (
98 98 /* webpackChunkName: "routes" */
99 99 /* webpackMode: "lazy-once" */
100 100 `@/pages/Authentication/forgetpassword.vue`
... ... @@ -108,7 +108,7 @@ export default [{
108 108 type: route.query.type
109 109 }),
110 110 component: () =>
111   - import(
  111 + import (
112 112 /* webpackChunkName: "routes" */
113 113 /* webpackMode: "lazy-once" */
114 114 `@/pages/Students/students.vue`
... ... @@ -122,7 +122,7 @@ export default [{
122 122 type: route.query.type
123 123 }),
124 124 component: () =>
125   - import(
  125 + import (
126 126 /* webpackChunkName: "routes" */
127 127 /* webpackMode: "lazy-once" */
128 128 `@/pages/Class/addclass.vue`
... ... @@ -136,7 +136,7 @@ export default [{
136 136 type: route.query.type
137 137 }),
138 138 component: () =>
139   - import(
  139 + import (
140 140 /* webpackChunkName: "routes" */
141 141 /* webpackMode: "lazy-once" */
142 142 `@/pages/Section/section.vue`
... ... @@ -150,7 +150,7 @@ export default [{
150 150 type: route.query.type
151 151 }),
152 152 component: () =>
153   - import(
  153 + import (
154 154 /* webpackChunkName: "routes" */
155 155 /* webpackMode: "lazy-once" */
156 156 `@/pages/NoticeBoard/noticeBoard.vue`
... ... @@ -164,7 +164,7 @@ export default [{
164 164 type: route.query.type
165 165 }),
166 166 component: () =>
167   - import(
  167 + import (
168 168 /* webpackChunkName: "routes" */
169 169 /* webpackMode: "lazy-once" */
170 170 `@/pages/News/news.vue`
... ... @@ -189,7 +189,7 @@ export default [{
189 189 type: route.query.type
190 190 }),
191 191 component: () =>
192   - import(
  192 + import (
193 193 /* webpackChunkName: "routes" */
194 194 /* webpackMode: "lazy-once" */
195 195 `@/pages/TimeTable/timeTable.vue`
... ... @@ -203,7 +203,7 @@ export default [{
203 203 type: route.query.type
204 204 }),
205 205 component: () =>
206   - import(
  206 + import (
207 207 /* webpackChunkName: "routes" */
208 208 /* webpackMode: "lazy-once" */
209 209 `@/pages/Notification/notification.vue`
... ... @@ -217,7 +217,7 @@ export default [{
217 217 type: route.query.type
218 218 }),
219 219 component: () =>
220   - import(
  220 + import (
221 221 /* webpackChunkName: "routes" */
222 222 /* webpackMode: "lazy-once" */
223 223 `@/pages/Parent/parents.vue`
... ... @@ -243,7 +243,7 @@ export default [{
243 243 type: route.query.type
244 244 }),
245 245 component: () =>
246   - import(
  246 + import (
247 247 /* webpackChunkName: "routes" */
248 248 /* webpackMode: "lazy-once" */
249 249 `@/pages/Dashboard/dashboard.vue`
... ... @@ -257,7 +257,7 @@ export default [{
257 257 type: route.query.type
258 258 }),
259 259 component: () =>
260   - import(
  260 + import (
261 261 /* webpackChunkName: "routes" */
262 262 /* webpackMode: "lazy-once" */
263 263 `@/pages/Dashboard/CourseDetails.vue`
... ... @@ -271,7 +271,7 @@ export default [{
271 271 type: route.query.type
272 272 }),
273 273 component: () =>
274   - import(
  274 + import (
275 275 /* webpackChunkName: "routes" */
276 276 /* webpackMode: "lazy-once" */
277 277 `@/pages/Dashboard/ChapterInfo.vue`
... ... @@ -285,13 +285,41 @@ export default [{
285 285 type: route.query.type
286 286 }),
287 287 component: () =>
288   - import(
  288 + import (
289 289 /* webpackChunkName: "routes" */
290 290 /* webpackMode: "lazy-once" */
291 291 `@/pages/Dashboard/CourseDiscussionForum.vue`
292 292 )
293 293 },
294 294 {
  295 + path: '/courseDiscussion',
  296 + meta: {},
  297 + name: 'Course Discussion',
  298 + props: (route) => ({
  299 + type: route.query.type
  300 + }),
  301 + component: () =>
  302 + import (
  303 + /* webpackChunkName: "routes" */
  304 + /* webpackMode: "lazy-once" */
  305 + `@/pages/Course/courseDiscussion.vue`
  306 + )
  307 + },
  308 + {
  309 + path: '/courseDiscussionesForm/:discussionId',
  310 + meta: {},
  311 + name: 'Course Discussiones Form',
  312 + props: (route) => ({
  313 + type: route.query.type
  314 + }),
  315 + component: () =>
  316 + import (
  317 + /* webpackChunkName: "routes" */
  318 + /* webpackMode: "lazy-once" */
  319 + `@/pages/Course/discussion.vue`
  320 + )
  321 + },
  322 + {
295 323 path: '/Announcement',
296 324 meta: {},
297 325 name: 'Announcement',
... ... @@ -299,7 +327,7 @@ export default [{
299 327 type: route.query.type
300 328 }),
301 329 component: () =>
302   - import(
  330 + import (
303 331 /* webpackChunkName: "routes" */
304 332 /* webpackMode: "lazy-once" */
305 333 `@/pages/Dashboard/Announcement.vue`
... ... @@ -313,7 +341,7 @@ export default [{
313 341 type: route.query.type
314 342 }),
315 343 component: () =>
316   - import(
  344 + import (
317 345 /* webpackChunkName: "routes" */
318 346 /* webpackMode: "lazy-once" */
319 347 `@/pages/socialMedia/socialMedia.vue`
... ... @@ -327,7 +355,7 @@ export default [{
327 355 type: route.query.type
328 356 }),
329 357 component: () =>
330   - import(
  358 + import (
331 359 /* webpackChunkName: "routes" */
332 360 /* webpackMode: "lazy-once" */
333 361 `@/pages/Gallery/gallery.vue`
... ... @@ -341,7 +369,7 @@ export default [{
341 369 type: route.query.type
342 370 }),
343 371 component: () =>
344   - import(
  372 + import (
345 373 /* webpackChunkName: "routes" */
346 374 /* webpackMode: "lazy-once" */
347 375 `@/pages/Event/event.vue`
... ... @@ -355,7 +383,7 @@ export default [{
355 383 type: route.query.type
356 384 }),
357 385 component: () =>
358   - import(
  386 + import (
359 387 /* webpackChunkName: "routes" */
360 388 /* webpackMode: "lazy-once" */
361 389 `@/pages/Holiday/holiday.vue`
... ... @@ -369,7 +397,7 @@ export default [{
369 397 type: route.query.type
370 398 }),
371 399 component: () =>
372   - import(
  400 + import (
373 401 /* webpackChunkName: "routes" */
374 402 /* webpackMode: "lazy-once" */
375 403 `@/pages/User/user.vue`
... ... @@ -383,7 +411,7 @@ export default [{
383 411 type: route.query.type
384 412 }),
385 413 component: () =>
386   - import(
  414 + import (
387 415 /* webpackChunkName: "routes" */
388 416 /* webpackMode: "lazy-once" */
389 417 `@/pages/Attendence/studentAttendence.vue`
... ... @@ -397,7 +425,7 @@ export default [{
397 425 type: route.query.type
398 426 }),
399 427 component: () =>
400   - import(
  428 + import (
401 429 /* webpackChunkName: "routes" */
402 430 /* webpackMode: "lazy-once" */
403 431 `@/pages/Attendence/teacherAttendence.vue`
... ... @@ -411,7 +439,7 @@ export default [{
411 439 type: route.query.type
412 440 }),
413 441 component: () =>
414   - import(
  442 + import (
415 443 `@/pages/Payroll/salaryTemplate.vue`
416 444 )
417 445 },
... ... @@ -423,7 +451,7 @@ export default [{
423 451 type: route.query.type
424 452 }),
425 453 component: () =>
426   - import(
  454 + import (
427 455 `@/pages/Payroll/hourlyTemplate.vue`
428 456 )
429 457 },
... ... @@ -435,7 +463,7 @@ export default [{
435 463 type: route.query.type
436 464 }),
437 465 component: () =>
438   - import(
  466 + import (
439 467 `@/pages/Payroll/manageSalary.vue`
440 468 )
441 469 },
... ... @@ -457,7 +485,7 @@ export default [{
457 485 type: route.query.type
458 486 }),
459 487 component: () =>
460   - import(
  488 + import (
461 489 /* webpackChunkName: "routes" */
462 490 /* webpackMode: "lazy-once" */
463 491 `@/pages/Attendence/userAttendence.vue`
... ... @@ -471,7 +499,7 @@ export default [{
471 499 type: route.query.type
472 500 }),
473 501 component: () =>
474   - import(
  502 + import (
475 503 /* webpackChunkName: "routes" */
476 504 /* webpackMode: "lazy-once" */
477 505 `@/pages/Account/feeTypes.vue`
... ... @@ -485,7 +513,7 @@ export default [{
485 513 type: route.query.type
486 514 }),
487 515 component: () =>
488   - import(
  516 + import (
489 517 /* webpackChunkName: "routes" */
490 518 /* webpackMode: "lazy-once" */
491 519 `@/pages/Account/invoice.vue`
... ... @@ -499,7 +527,7 @@ export default [{
499 527 type: route.query.type
500 528 }),
501 529 component: () =>
502   - import(
  530 + import (
503 531 /* webpackChunkName: "routes" */
504 532 /* webpackMode: "lazy-once" */
505 533 `@/pages/Account/paymentHistory.vue`
... ... @@ -513,7 +541,7 @@ export default [{
513 541 type: route.query.type
514 542 }),
515 543 component: () =>
516   - import(
  544 + import (
517 545 /* webpackChunkName: "routes" */
518 546 /* webpackMode: "lazy-once" */
519 547 `@/pages/Account/expense.vue`
... ... @@ -527,7 +555,7 @@ export default [{
527 555 type: route.query.type
528 556 }),
529 557 component: () =>
530   - import(
  558 + import (
531 559 /* webpackChunkName: "routes" */
532 560 /* webpackMode: "lazy-once" */
533 561 `@/pages/Account/income.vue`
... ... @@ -541,7 +569,7 @@ export default [{
541 569 type: route.query.type
542 570 }),
543 571 component: () =>
544   - import(
  572 + import (
545 573 /* webpackChunkName: "routes" */
546 574 /* webpackMode: "lazy-once" */
547 575 `@/pages/Library/member.vue`
... ... @@ -555,7 +583,7 @@ export default [{
555 583 type: route.query.type
556 584 }),
557 585 component: () =>
558   - import(
  586 + import (
559 587 /* webpackChunkName: "routes" */
560 588 /* webpackMode: "lazy-once" */
561 589 `@/pages/Library/books.vue`
... ... @@ -569,7 +597,7 @@ export default [{
569 597 type: route.query.type
570 598 }),
571 599 component: () =>
572   - import(
  600 + import (
573 601 /* webpackChunkName: "routes" */
574 602 /* webpackMode: "lazy-once" */
575 603 `@/pages/Library/issue.vue`
... ... @@ -583,7 +611,7 @@ export default [{
583 611 type: route.query.type
584 612 }),
585 613 component: () =>
586   - import(
  614 + import (
587 615 /* webpackChunkName: "routes" */
588 616 /* webpackMode: "lazy-once" */
589 617 `@/pages/Library/eBook.vue`
... ... @@ -595,7 +623,7 @@ export default [{
595 623 name: 'Edit Invoice',
596 624 // props: (route) => ({ type: route.query.type }),
597 625 component: () =>
598   - import(
  626 + import (
599 627 /* webpackChunkName: "routes" */
600 628 /* webpackMode: "lazy-once" */
601 629 `@/pages/Account/editInvoice.vue`
... ... @@ -609,7 +637,7 @@ export default [{
609 637 type: route.query.type
610 638 }),
611 639 component: () =>
612   - import(
  640 + import (
613 641 /* webpackChunkName: "routes" */
614 642 /* webpackMode: "lazy-once" */
615 643 `@/pages/Attendence/viewStudentsAttendence.vue`
... ... @@ -623,7 +651,7 @@ export default [{
623 651 type: route.query.type
624 652 }),
625 653 component: () =>
626   - import(
  654 + import (
627 655 /* webpackChunkName: "routes" */
628 656 /* webpackMode: "lazy-once" */
629 657 `@/pages/Attendence/viewTeacherAttendence.vue`
... ... @@ -637,7 +665,7 @@ export default [{
637 665 type: route.query.type
638 666 }),
639 667 component: () =>
640   - import(
  668 + import (
641 669 /* webpackChunkName: "routes" */
642 670 /* webpackMode: "lazy-once" */
643 671 `@/pages/Account/viewInvoice.vue`
... ... @@ -651,7 +679,7 @@ export default [{
651 679 type: route.query.type
652 680 }),
653 681 component: () =>
654   - import(
  682 + import (
655 683 /* webpackChunkName: "routes" */
656 684 /* webpackMode: "lazy-once" */
657 685 `@/pages/Account/viewPaymentInvoice.vue`
... ... @@ -665,7 +693,7 @@ export default [{
665 693 type: route.query.type
666 694 }),
667 695 component: () =>
668   - import(
  696 + import (
669 697 /* webpackChunkName: "routes" */
670 698 /* webpackMode: "lazy-once" */
671 699 `@/pages/Account/globalPayment.vue`
... ... @@ -679,7 +707,7 @@ export default [{
679 707 type: route.query.type
680 708 }),
681 709 component: () =>
682   - import(
  710 + import (
683 711 /* webpackChunkName: "routes" */
684 712 /* webpackMode: "lazy-once" */
685 713 `@/pages/Exam/exam.vue`
... ... @@ -693,7 +721,7 @@ export default [{
693 721 type: route.query.type
694 722 }),
695 723 component: () =>
696   - import(
  724 + import (
697 725 /* webpackChunkName: "routes" */
698 726 /* webpackMode: "lazy-once" */
699 727 `@/pages/Exam/grade.vue`
... ... @@ -707,7 +735,7 @@ export default [{
707 735 type: route.query.type
708 736 }),
709 737 component: () =>
710   - import(
  738 + import (
711 739 /* webpackChunkName: "routes" */
712 740 /* webpackMode: "lazy-once" */
713 741 `@/pages/Exam/examSchedule.vue`
... ... @@ -721,7 +749,7 @@ export default [{
721 749 type: route.query.type
722 750 }),
723 751 component: () =>
724   - import(
  752 + import (
725 753 /* webpackChunkName: "routes" */
726 754 /* webpackMode: "lazy-once" */
727 755 `@/pages/Exam/examAttendence.vue`
... ... @@ -735,7 +763,7 @@ export default [{
735 763 type: route.query.type
736 764 }),
737 765 component: () =>
738   - import(
  766 + import (
739 767 /* webpackChunkName: "routes" */
740 768 /* webpackMode: "lazy-once" */
741 769 `@/pages/Mark/mark.vue`
... ... @@ -749,7 +777,7 @@ export default [{
749 777 type: route.query.type
750 778 }),
751 779 component: () =>
752   - import(
  780 + import (
753 781 /* webpackChunkName: "routes" */
754 782 /* webpackMode: "lazy-once" */
755 783 `@/pages/Mark/viewMark.vue`
... ... @@ -763,7 +791,7 @@ export default [{
763 791 type: route.query.type
764 792 }),
765 793 component: () =>
766   - import(
  794 + import (
767 795 /* webpackChunkName: "routes" */
768 796 /* webpackMode: "lazy-once" */
769 797 `@/pages/Mark/markDistribution.vue`
... ... @@ -777,7 +805,7 @@ export default [{
777 805 type: route.query.type
778 806 }),
779 807 component: () =>
780   - import(
  808 + import (
781 809 /* webpackChunkName: "routes" */
782 810 /* webpackMode: "lazy-once" */
783 811 `@/pages/Meet/meet.vue`
... ... @@ -791,7 +819,7 @@ export default [{
791 819 type: route.query.type
792 820 }),
793 821 component: () =>
794   - import(
  822 + import (
795 823 /* webpackChunkName: "routes" */
796 824 /* webpackMode: "lazy-once" */
797 825 `@/pages/Administrator/academicYear.vue`
... ... @@ -805,7 +833,7 @@ export default [{
805 833 type: route.query.type
806 834 }),
807 835 component: () =>
808   - import(
  836 + import (
809 837 /* webpackChunkName: "routes" */
810 838 /* webpackMode: "lazy-once" */
811 839 `@/pages/Administrator/systemAdmin.vue`
... ... @@ -819,7 +847,7 @@ export default [{
819 847 type: route.query.type
820 848 }),
821 849 component: () =>
822   - import(
  850 + import (
823 851 /* webpackChunkName: "routes" */
824 852 /* webpackMode: "lazy-once" */
825 853 `@/pages/Administrator/resetPassword.vue`
... ... @@ -833,7 +861,7 @@ export default [{
833 861 type: route.query.type
834 862 }),
835 863 component: () =>
836   - import(
  864 + import (
837 865 /* webpackChunkName: "routes" */
838 866 /* webpackMode: "lazy-once" */
839 867 `@/pages/Administrator/role.vue`
... ... @@ -847,7 +875,7 @@ export default [{
847 875 type: route.query.type
848 876 }),
849 877 component: () =>
850   - import(
  878 + import (
851 879 /* webpackChunkName: "routes" */
852 880 /* webpackMode: "lazy-once" */
853 881 `@/pages/Administrator/bulkImport.vue`
... ... @@ -861,7 +889,7 @@ export default [{
861 889 type: route.query.type
862 890 }),
863 891 component: () =>
864   - import(
  892 + import (
865 893 /* webpackChunkName: "routes" */
866 894 /* webpackMode: "lazy-once" */
867 895 `@/pages/Report/studentReport.vue`
... ... @@ -875,7 +903,7 @@ export default [{
875 903 type: route.query.type
876 904 }),
877 905 component: () =>
878   - import(
  906 + import (
879 907 /* webpackChunkName: "routes" */
880 908 /* webpackMode: "lazy-once" */
881 909 `@/pages/Report/progressCardReport.vue`
... ... @@ -889,7 +917,7 @@ export default [{
889 917 type: route.query.type
890 918 }),
891 919 component: () =>
892   - import(
  920 + import (
893 921 `@/pages/Report/idCard.vue`
894 922 )
895 923 },
... ... @@ -901,7 +929,7 @@ export default [{
901 929 type: route.query.type
902 930 }),
903 931 component: () =>
904   - import(
  932 + import (
905 933 `@/pages/Report/admitCard.vue`
906 934 )
907 935 },
... ... @@ -913,7 +941,7 @@ export default [{
913 941 type: route.query.type
914 942 }),
915 943 component: () =>
916   - import(
  944 + import (
917 945 /* webpackChunkName: "routes" */
918 946 /* webpackMode: "lazy-once" */
919 947 `@/pages/generalSetting/generalSetting.vue`
... ... @@ -927,7 +955,7 @@ export default [{
927 955 type: route.query.type
928 956 }),
929 957 component: () =>
930   - import(
  958 + import (
931 959 `@/pages/Academic/assignment.vue`
932 960 )
933 961 },
... ... @@ -939,7 +967,7 @@ export default [{
939 967 type: route.query.type
940 968 }),
941 969 component: () =>
942   - import(
  970 + import (
943 971 `@/pages/Academic/routine.vue`
944 972 )
945 973 },
... ... @@ -951,7 +979,7 @@ export default [{
951 979 type: route.query.type
952 980 }),
953 981 component: () =>
954   - import(
  982 + import (
955 983 `@/pages/Academic/subject.vue`
956 984 )
957 985 },
... ... @@ -963,7 +991,7 @@ export default [{
963 991 type: route.query.type
964 992 }),
965 993 component: () =>
966   - import(
  994 + import (
967 995 `@/pages/Academic/syllabus.vue`
968 996 )
969 997 },
... ... @@ -975,7 +1003,7 @@ export default [{
975 1003 type: route.query.type
976 1004 }),
977 1005 component: () =>
978   - import(
  1006 + import (
979 1007 /* webpackChunkName: "routes" */
980 1008 /* webpackMode: "lazy-once" */
981 1009 `@/pages/Course/course.vue`
... ... @@ -989,7 +1017,7 @@ export default [{
989 1017 type: route.query.type
990 1018 }),
991 1019 component: () =>
992   - import(
  1020 + import (
993 1021 /* webpackChunkName: "routes" */
994 1022 /* webpackMode: "lazy-once" */
995 1023 `@/pages/Course/courseDetail.vue`
... ... @@ -1003,7 +1031,7 @@ export default [{
1003 1031 type: route.query.type
1004 1032 }),
1005 1033 component: () =>
1006   - import(
  1034 + import (
1007 1035 /* webpackChunkName: "routes" */
1008 1036 /* webpackMode: "lazy-once" */
1009 1037 `@/pages/Course/enrollStudents.vue`
... ... @@ -1017,7 +1045,7 @@ export default [{
1017 1045 type: route.query.type
1018 1046 }),
1019 1047 component: () =>
1020   - import(
  1048 + import (
1021 1049 /* webpackChunkName: "routes" */
1022 1050 /* webpackMode: "lazy-once" */
1023 1051 `@/pages/changeStudents/changeStudents.vue`
... ... @@ -1031,7 +1059,7 @@ export default [{
1031 1059 type: route.query.type
1032 1060 }),
1033 1061 component: () =>
1034   - import(
  1062 + import (
1035 1063 /* webpackChunkName: "routes" */
1036 1064 /* webpackMode: "lazy-once" */
1037 1065 `@/pages/Annoucement/annoucement.vue`
... ... @@ -1045,7 +1073,7 @@ export default [{
1045 1073 type: route.query.type
1046 1074 }),
1047 1075 component: () =>
1048   - import(
  1076 + import (
1049 1077 /* webpackChunkName: "routes" */
1050 1078 /* webpackMode: "lazy-once" */
1051 1079 `@/pages/meetingEvent/meetingEvent.vue`
... ... @@ -1061,7 +1089,7 @@ export default [{
1061 1089 type: route.query.type
1062 1090 }),
1063 1091 component: () =>
1064   - import(
  1092 + import (
1065 1093 /* webpackChunkName: "routes" */
1066 1094 /* webpackMode: "lazy-once" */
1067 1095 `@/pages/School/school.vue`
... ... @@ -1075,7 +1103,7 @@ export default [{
1075 1103 type: route.query.type
1076 1104 }),
1077 1105 component: () =>
1078   - import(
  1106 + import (
1079 1107 /* webpackChunkName: "routes" */
1080 1108 /* webpackMode: "lazy-once" */
1081 1109 `@/pages/School/viewSchoolDashboard.vue`
... ...