tanyanfei пре 1 година
родитељ
комит
3df0ecf42e

+ 70 - 0
src/api.js

@@ -190,4 +190,74 @@ export default {
     reTryMarkPaper: params => {
         return axios.post(`${baseURL}/api/admin/papers/retrymark`, params)
     },
+	// 学校列表
+	schoolList:params => {
+		return axios.get(`${baseURL}/api/admin/school/school/list`, {
+			params: params,
+		});
+	},
+	addSchool: params => {
+	    return axios.post(`${baseURL}/api/admin/school/school`, params)
+	},
+	editSchool: params => {
+	    return axios.put(`${baseURL}/api/admin/school/school`, params)
+	},
+	delSchool: params => {
+	    return axios.delete(`${baseURL}/api/admin/school/school`, { params: params })
+	},
+	// 班级列表
+	classList:params => {
+		return axios.get(`${baseURL}/api/admin/school/class/list`, {
+			params: params,
+		});
+	},
+	addClass: params => {
+	    return axios.post(`${baseURL}/api/admin/school/class`, params)
+	},
+	editClass: params => {
+	    return axios.put(`${baseURL}/api/admin/school/class`, params)
+	},
+	delClass: params => {
+	    return axios.delete(`${baseURL}/api/admin/school/class`, { params: params })
+	},
+	// 年级列表
+	gradeList:params => {
+		return axios.get(`${baseURL}/api/admin/school/grade/list`, {
+			params: params,
+		});
+	},
+	// 教师列表
+	teacherList:params => {
+		return axios.get(`${baseURL}/api/admin/school/teacher/list`, {
+			params: params,
+		});
+	},
+	addTeacher: params => {
+	    return axios.post(`${baseURL}/api/admin/school/teacher`, params)
+	},
+	editTeacher: params => {
+	    return axios.put(`${baseURL}/api/admin/school/teacher`, params)
+	},
+	delTeacher: params => {
+	    return axios.delete(`${baseURL}/api/admin/school/teacher`, { params: params })
+	},
+	// 学生列表
+	studentList:params => {
+		return axios.get(`${baseURL}/api/admin/school/student/list`, {
+			params: params,
+		});
+	},
+	addStudent: params => {
+	    return axios.post(`${baseURL}/api/admin/school/student`, params)
+	},
+	editStudent: params => {
+	    return axios.put(`${baseURL}/api/admin/school/student`, params)
+	},
+	delStudent: params => {
+	    return axios.delete(`${baseURL}/api/admin/school/student`, { params: params })
+	},
+	// 上传学生
+	uploadStudent: params => {
+	    return axios.post(`${baseURL}/api/admin/school/student/upload`, params)
+	},
 }

+ 1 - 1
src/views/Home.vue

@@ -36,7 +36,7 @@
 			<!-- 左侧菜单 -->
 			<el-aside class="left-aside" width="210px">
 				<el-menu  :unique-opened='false'
-					:default-active="0" router class="left-menue"
+					 router class="left-menue"
 					active-text-color="#FA0A2F">
 					<template v-for="(item, index) in $router.options.routes">
 						<el-menu-item v-if='item.show&&item.isLeaf' :index="item.path" :key='index'>

+ 1 - 1
src/views/Login.vue

@@ -164,7 +164,7 @@ export default {
             this.$api.login(parms).then((res)=>{
                 let data=res.data
                   if(res.data.code == 0){
-                      window.location.hash='/school/class/list';
+                      window.location.hash='/school/list';
                   }else{
                       // this.$message.error(res.data.message);
 					  this.tp=res.data.message

+ 68 - 51
src/views/school/ClassList.vue

@@ -19,20 +19,42 @@
       <el-row>
         <el-col :span="4">
           <el-form-item label="学校">
-			  <el-select placeholder="请选择学校">
-			    <!-- <el-option label="高三一班" value="高三一班">高三一班</el-option> -->
+			  <el-select
+			    v-model="queryParams.school_id"
+			    placeholder="请选择学校"
+			    clearable
+			    filterable  
+			  >
+			    <el-option
+			      v-for="item in schoolList"
+			      :key="item.value"
+			      :label="item.name"
+			      :value="item.id"
+			    >
+			    </el-option>
 			  </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="4">
-          <el-form-item label="年级" v-model="queryParams.grade_id">
-            <el-select placeholder="请选择年级">
-              <!-- <el-option label="高三一班" value="高三一班">高三一班</el-option> -->
+          <el-form-item label="年级">
+            <el-select
+              v-model="queryParams.grade_name"
+              placeholder="请选择年级"
+              clearable
+              filterable  
+            >
+              <el-option
+                v-for="item in gradeList"
+                :key="item"
+                :label="item"
+                :value="item"
+              >
+              </el-option>
             </el-select>
           </el-form-item>
         </el-col>
 		<el-col :span="4">
-		  <el-form-item label="创建时间" v-model="queryParams.grade_id">
+		  <el-form-item label="创建时间">
 		    <el-date-picker
 		          v-model="queryParams.ctime"
 		          type="datetime"
@@ -48,10 +70,10 @@
             <el-button
               type="info"
               size="mini"
-              @click="handleAdd"
+              @click="queryParams={},getData()"
               >重置</el-button
             >
-			<el-button style="float: right;"
+			<el-button 
 			  type="primary"
 			  plain 
 			  icon="el-icon-plus"
@@ -66,18 +88,17 @@
       v-loading="loading"
       :data="list"
       style="width: 100%; margin-top: 10px"
-      height="50vh"
+      height="68vh"
     >
       <el-table-column align="center" prop="name" label="班级名称" />
-      <el-table-column align="center" prop="phone" label="年级" />
-      <el-table-column label="所属学校">
-      </el-table-column>
+      <el-table-column align="center" prop="grade_name" label="年级" />
+      <el-table-column label="所属学校" prop="school_name"></el-table-column>
       <el-table-column label="教师人数"></el-table-column>
 	  <el-table-column label="学生人数"></el-table-column>
       <el-table-column align="center" prop="ctime" label="创建时间" />
       <el-table-column align="center" prop="date" label="操作" width="320">
         <template slot-scope="scope">
-          <el-button @click="edit(scope.row.id)" size="mini" type="info" plain
+          <el-button @click="edit(scope.row)" size="mini" type="info" plain
             >编辑</el-button
           >
           <el-button @click="del(scope.row.id)" size="mini" type="info" plain
@@ -96,15 +117,15 @@
     <!-- 新增班级-->
 	<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
 	  <el-form   ref="form" :model="form" :rules="rules" label-width="80px">
-		<el-form-item label="所属学校" prop="name">
+		<el-form-item label="所属学校" prop="school_id">
 		  <el-select
-		    v-model="form.parent_id"
+		    v-model="form.school_id"
 		    placeholder="请选择学校"
 		    clearable
 		    filterable  
 		  >
 		    <el-option
-		      v-for="item in doctorList"
+		      v-for="item in schoolList"
 		      :key="item.value"
 		      :label="item.name"
 		      :value="item.id"
@@ -112,18 +133,18 @@
 		    </el-option>
 		  </el-select>
 		</el-form-item>
-	    <el-form-item label="所属年级">
+	    <el-form-item label="所属年级" prop='form.grade_name'>
 	      <el-select 
-	        v-model="form.parent_id"
+	        v-model="form.grade_name"
 	        placeholder="请选择"
 	        clearable
 	        filterable  
 	      >
 	        <el-option
-	          v-for="item in doctorList"
-	          :key="item.value"
-	          :label="item.name"
-	          :value="item.id"
+	          v-for="item in gradeList"
+	          :key="item"
+	          :label="item"
+	          :value="item"
 	        >
 	        </el-option>
 	      </el-select>
@@ -134,10 +155,10 @@
 			</el-input-number>
 	    </el-form-item>
 	
-	    <el-form-item label="班级名称" prop="hospital_name">
+	    <el-form-item label="班级名称" prop="name">
 	      <el-input
 	        clearable
-	        v-model="form.hospital_name"
+	        v-model="form.name"
 	        placeholder="请输入班级名称"
 	      ></el-input>
 	    </el-form-item>
@@ -168,8 +189,8 @@ export default {
       total: 0,
       title: "新增学校",
       open: false,
-	  open2: false,
-      doctorList: [],
+      schoolList: [],
+	  gradeList:[],
       rules: {},
     };
   },
@@ -179,15 +200,15 @@ export default {
         type: "warning",
       }).then(() => {
         this.$api
-          .delDoctorInfo({
+          .delClass({
             id: id,
           })
           .then((res) => {
             if (!res.data.code) {
-              this.$msgSuccess("删除成功");
+              this.msgSuccess("删除成功");
               this.getData();
             } else {
-              this.$msgError(res.data.message);
+              this.msgError(res.data.message);
             }
           });
       });
@@ -199,45 +220,40 @@ export default {
       this.queryParams.page = this.$refs.pageButton.page;
       this.getData();
     },
+	// 获取学校 年级
+	getList(){
+		this.$api.schoolList().then((res) => {
+		  this.schoolList = res.data.data.list;
+		});
+		this.$api.gradeList().then((res) => {
+		  this.gradeList = res.data.data;
+		  
+		});
+	},
     getData() {
       this.loading = true;
-      this.$api.getDoctorsList(this.queryParams).then((res) => {
+      this.$api.classList(this.queryParams).then((res) => {
         this.list = res.data.data.list;
         this.total = res.data.data.total;
         this.loading = false;
       });
-
-      this.$api
-          .getDoctorsSearchList({
-          })
-          .then((res) => {
-            this.doctorList = res.data.data;
-            this.$set(this.doctorList, res.data.data);
-            // this.loading = false;
-          });
     },
     handleAdd() {
       this.open = true;
       this.title = "新增班级";
       this.form = {};
     },
-    edit(id) {
+    edit(item) {
       this.title = "编辑";
-      this.$api
-        .getDoctorInfo({
-          id: id,
-        })
-        .then((res) => {
-          this.form = res.data.data;
-          this.open = true;
-        });
+      this.form = item;
+      this.open = true;
     },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate((valid) => {
         if (valid) {
           if (this.form.id != null) {
-            this.$api.editDoctorInfo(this.form).then((res) => {
+            this.$api.editClass(this.form).then((res) => {
               if (res.data.code == 0) {
                 this.msgSuccess("成功!");
                 this.open = false;
@@ -247,7 +263,7 @@ export default {
               }
             });
           } else {
-            this.$api.addDoctorInfo(this.form).then((res) => {
+            this.$api.addClass(this.form).then((res) => {
               if (res.data.code == 0) {
                 this.msgSuccess("成功!");
                 this.open = false;
@@ -278,7 +294,8 @@ export default {
     },
   },
   created() {
-    this.getData();
+	  this.getList()
+	  this.getData();
     
   },
 };

+ 80 - 60
src/views/school/SchoolList.vue

@@ -15,41 +15,41 @@
             <el-breadcrumb-item>学校管理</el-breadcrumb-item>
         </el-breadcrumb>
     </div>
-    <el-form :model="queryParams" size="mini" label-width="80px" class="filter-form" :inine="true">
+    <el-form :model="queryParams" size="mini"  class="filter-form" :inine="true">
       <el-row>
         <el-col :span="4">
-          <el-form-item label="学校">
-			  <el-input placeholder="请输入名称" v-model="queryParams.school_name"></el-input>
+          <el-form-item label="学校" label-width="80px">
+			  <el-input clearable placeholder="请输入名称" v-model="queryParams.name"></el-input>
           </el-form-item>
         </el-col>
-        <el-col :span="4">
+ <!--       <el-col :span="4">
           <el-form-item label="地区" v-model="queryParams.grade_id">
             <el-select >
-              <!-- <el-option label="高三一班" value="高三一班">高三一班</el-option> -->
+              <el-option label="高三一班" value="高三一班">高三一班</el-option>
             </el-select>
           </el-form-item>
         </el-col>
 		<el-col :span="4">
-		  <el-form-item label="创建时间" v-model="queryParams.grade_id">
+		  <el-form-item label="创建时间">
 		    <el-date-picker
 		          v-model="queryParams.ctime"
 		          type="datetime"
 		          placeholder="选择日期时间">
 		    </el-date-picker>
 		  </el-form-item>
-		</el-col>
-        <el-col :span="11">
-          <el-form-item label-width="10" style="margin-left: 10px">
+		</el-col> -->
+        <el-col :span="19" >
+          <el-form-item style="padding-left: 10px;">
             <el-button type="primary" @click="getData" size="mini"
               >搜索</el-button
             >
-            <el-button
+        <!--    <el-button
               type="info"
               size="mini"
               @click="handleAdd"
               >重置</el-button
-            >
-			<el-button style="float: right;"
+            > -->
+			<el-button
 			  type="primary"
 			  plain 
 			  icon="el-icon-plus"
@@ -64,20 +64,19 @@
       v-loading="loading"
       :data="list"
       style="width: 100%; margin-top: 10px"
-      height="50vh"
+      height="68vh"
     >
       <el-table-column align="center" prop="name" label="学校名称" />
-      <el-table-column align="center" prop="phone" label="地区" />
-      <el-table-column label="联系人">
-      </el-table-column>
-      <el-table-column label="联系人电话"></el-table-column>
+      <!-- <el-table-column align="center" prop="phone" label="地区" /> -->
+      <el-table-column label="联系人" prop='contacts'></el-table-column>
+      <el-table-column label="联系人电话" prop='contacts_phone'></el-table-column>
       <el-table-column align="center" prop="ctime" label="创建时间" />
       <el-table-column align="center" prop="date" label="操作" width="320">
         <template slot-scope="scope">
-			<el-button @click="addClass" size="mini" type="primary" plain
+			<el-button @click="addClass(scope.row.id)" size="mini" type="primary" plain
 			  >添加班级</el-button
 			>
-          <el-button @click="edit(scope.row.id)" size="mini" type="info" plain
+          <el-button @click="edit(scope.row)" size="mini" type="info" plain
             >编辑</el-button
           >
           <el-button @click="del(scope.row.id)" size="mini" type="info" plain
@@ -103,7 +102,7 @@
 		    placeholder="请输入名称"
 		  ></el-input>
 		</el-form-item>
-        <el-form-item label="学校地区" prop="parent_id" class="area">
+        <el-form-item label="学校地区" prop="parent_id" class="area" v-if='0'>
           <el-select 
             v-model="form.parent_id"
             placeholder="请选择"
@@ -148,18 +147,18 @@
 		  </el-select>
         </el-form-item>
         
-        <el-form-item label="联系人" prop="phone">
+        <el-form-item label="联系人" prop="contacts">
           <el-input
             clearable
-            v-model="form.phone"
+            v-model="form.contacts"
             placeholder="请输入学校联系人"
           ></el-input>
         </el-form-item>
 
-        <el-form-item label="联系电话" prop="hospital_name">
+        <el-form-item label="联系电话" prop="contacts_phone">
           <el-input
             clearable
-            v-model="form.hospital_name"
+            v-model="form.contacts_phone"
             placeholder="请输入联系电话"
           ></el-input>
         </el-form-item>
@@ -172,15 +171,15 @@
 	<!-- 新增班级 -->
 	<el-dialog :title="title" :visible.sync="open2" width="500px" append-to-body>
 	  <el-form   ref="form" :model="form" :rules="rules" label-width="80px">
-		<el-form-item label="所属学校" prop="name">
+		<el-form-item label="所属学校" prop="school_id">
 		  <el-select
-		    v-model="form.parent_id"
+		    v-model="form.school_id"
 		    placeholder="请选择学校"
 		    clearable
 		    filterable  
 		  >
 		    <el-option
-		      v-for="item in doctorList"
+		      v-for="item in list"
 		      :key="item.value"
 		      :label="item.name"
 		      :value="item.id"
@@ -188,18 +187,18 @@
 		    </el-option>
 		  </el-select>
 		</el-form-item>
-	    <el-form-item label="所属年级">
+	    <el-form-item label="所属年级" prop="grade_name">
 	      <el-select 
-	        v-model="form.parent_id"
+	        v-model="form.grade_name"
 	        placeholder="请选择"
 	        clearable
 	        filterable  
 	      >
 	        <el-option
-	          v-for="item in doctorList"
-	          :key="item.value"
-	          :label="item.name"
-	          :value="item.id"
+	          v-for="item in gradeList"
+	          :key="item"
+	          :label="item"
+	          :value="item"
 	        >
 	        </el-option>
 	      </el-select>
@@ -210,16 +209,16 @@
 			</el-input-number>
 	    </el-form-item>
 	
-	    <el-form-item label="班级名称" prop="hospital_name">
+	    <el-form-item label="班级名称" prop="name">
 	      <el-input
 	        clearable
-	        v-model="form.hospital_name"
+	        v-model="form.name"
 	        placeholder="请输入班级名称"
 	      ></el-input>
 	    </el-form-item>
 	  </el-form>
 	  <div slot="footer" class="dialog-footer">
-	    <el-button type="primary" @click="submitForm">保存</el-button>
+	    <el-button type="primary" @click="submitForm1">保存</el-button>
 	    <el-button @click="open = false">取 消</el-button>
 	  </div>
 	</el-dialog>
@@ -245,8 +244,8 @@ export default {
       title: "新增学校",
       open: false,
 	  open2: false,
-      doctorList: [],
-      rules: {},
+      gradeList: [],
+      rules: {}
     };
   },
   methods: {
@@ -255,15 +254,15 @@ export default {
         type: "warning",
       }).then(() => {
         this.$api
-          .delDoctorInfo({
+          .delSchool({
             id: id,
           })
           .then((res) => {
             if (!res.data.code) {
-              this.$msgSuccess("删除成功");
+              this.msgSuccess("删除成功");
               this.getData();
             } else {
-              this.$msgError(res.data.message);
+              this.msgError(res.data.message);
             }
           });
       });
@@ -277,18 +276,15 @@ export default {
     },
     getData() {
       this.loading = true;
-      this.$api.getDoctorsList(this.queryParams).then((res) => {
+      this.$api.schoolList(this.queryParams).then((res) => {
         this.list = res.data.data.list;
         this.total = res.data.data.total;
         this.loading = false;
       });
 
-      this.$api
-          .getDoctorsSearchList({
-          })
+      this.$api.gradeList({})
           .then((res) => {
-            this.doctorList = res.data.data;
-            this.$set(this.doctorList, res.data.data);
+            this.gradeList = res.data.data;
             // this.loading = false;
           });
     },
@@ -297,28 +293,24 @@ export default {
       this.title = "新增学校";
       this.form = {};
     },
-	addClass(){
+	addClass(id){
 		this.open2 = true;
 		this.title = "新增班级";
-		// this.form = {};
+		this.form = {
+			school_id:id
+		};
 	},
-    edit(id) {
+    edit(item) {
       this.title = "编辑";
-      this.$api
-        .getDoctorInfo({
-          id: id,
-        })
-        .then((res) => {
-          this.form = res.data.data;
-          this.open = true;
-        });
+	  this.form=item
+	  this.open = true;
     },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate((valid) => {
         if (valid) {
           if (this.form.id != null) {
-            this.$api.editDoctorInfo(this.form).then((res) => {
+            this.$api.editSchool(this.form).then((res) => {
               if (res.data.code == 0) {
                 this.msgSuccess("成功!");
                 this.open = false;
@@ -328,7 +320,7 @@ export default {
               }
             });
           } else {
-            this.$api.addDoctorInfo(this.form).then((res) => {
+            this.$api.addSchool(this.form).then((res) => {
               if (res.data.code == 0) {
                 this.msgSuccess("成功!");
                 this.open = false;
@@ -341,6 +333,34 @@ export default {
         }
       });
     },
+	/** 提交按钮 */
+	submitForm1() {
+	  this.$refs["form"].validate((valid) => {
+	    if (valid) {
+	      if (this.form.id != null) {
+	        this.$api.editClass(this.form).then((res) => {
+	          if (res.data.code == 0) {
+	            this.msgSuccess("成功!");
+	            this.open2 = false;
+	            this.getData();
+	          } else {
+	            this.msgError(res.data.message);
+	          }
+	        });
+	      } else {
+	        this.$api.addClass(this.form).then((res) => {
+	          if (res.data.code == 0) {
+	            this.msgSuccess("成功!");
+	            this.open2 = false;
+	            this.getData();
+	          } else {
+	            this.msgError(res.data.message);
+	          }
+	        });
+	      }
+	    }
+	  });
+	},
     remoteMethod(query) {
       if (query !== "") {
         // this.loading = true;

+ 174 - 112
src/views/school/StudentList.vue

@@ -6,6 +6,10 @@
 			margin-right: 6px;
 		}
 	}
+	.upload_demo{
+		display: inline-block;
+		margin: 0 5px;
+	}
 </style>
 <template>
   <section class="content">
@@ -16,22 +20,57 @@
         </el-breadcrumb>
     </div>
     <el-form :model="queryParams" size="mini"  :inline="true" style="padding-left: 20px;">
-     <el-form-item label="名">
-     	<el-input placeholder="请输入名" v-model="queryParams.school_name"></el-input>
+     <el-form-item label="名">
+     	<el-input placeholder="请输入名" clearable v-model="queryParams.name"></el-input>
      </el-form-item>
 	 <el-form-item label="学校">
-	 	<el-select placeholder="请选择学校">
-	 			    <!-- <el-option label="高三一班" value="高三一班">高三一班</el-option> -->
+	 	<el-select
+	 	  v-model="queryParams.school_id"
+	 	  placeholder="请选择学校"
+	 	  clearable
+	 	  filterable  
+	 		  @change="getClass"
+	 	>
+	 	  <el-option
+	 	    v-for="item in schoolList"
+	 	    :key="item.value"
+	 	    :label="item.name"
+	 	    :value="item.id"
+	 	  >
+	 	  </el-option>
 	 	</el-select>
 	 </el-form-item>
 	 <el-form-item label="年级">
-	 	<el-select placeholder="请选择">
-	 			    <!-- <el-option label="高三一班" value="高三一班">高三一班</el-option> -->
+	 	<el-select
+	 	  v-model="queryParams.grade_name"
+	 	  placeholder="请选择年级"
+	 	  clearable
+	 	  filterable  
+	 		  @change="getClass"
+	 	>
+	 	  <el-option
+	 	    v-for="item in gradeList"
+	 	    :key="item"
+	 	    :label="item"
+	 	    :value="item"
+	 	  >
+	 	  </el-option>
 	 	</el-select>
 	 </el-form-item>
 	 <el-form-item label="班级">
-	 	<el-select placeholder="请选择">
-	 			    <!-- <el-option label="高三一班" value="高三一班">高三一班</el-option> -->
+	 	<el-select
+	 	  v-model="queryParams.class_id"
+	 	  placeholder="请选择班级"
+	 	  clearable
+	 	  filterable  
+	 	>
+	 	  <el-option
+	 	    v-for="item in classList"
+	 	    :key="item.value"
+	 	    :label="item.name"
+	 	    :value="item.id"
+	 	  >
+	 	  </el-option>
 	 	</el-select>
 	 </el-form-item>
 	 <el-form-item label-width="10" style="float: right;">
@@ -41,15 +80,24 @@
 	   <el-button
 	     type="info"
 	     size="mini"
-	     @click="handleAdd"
+	     @click="queryParams={},getData()"
 	     >重置</el-button
 	   >
 	   <el-button
 	     type="info"
-	     size="mini"
-	     @click="handleAdd"
-	     >批量导入</el-button
+	     size="mini"  icon="el-icon-download"
+	     @click="download"
+	     >下载模版</el-button
 	   >
+	   <el-upload
+	     class="upload_demo"
+	     action="/api/admin/school/student/upload"
+		 :on-success='uploadSuccess'
+		 :show-file-list='false'
+	     multiple
+	     :limit="3">
+	     <el-button icon="el-icon-upload" size="mini" type="primary">批量导入</el-button>
+	   </el-upload>
 	   <el-button  
 	 			  type="primary"
 	 			  plain 
@@ -64,20 +112,22 @@
       v-loading="loading"
       :data="list"
       style="width: 100%; margin-top: 10px"
-      height="50vh"
+      height="69vh"
     >
       <el-table-column align="center" prop="name" label="学生姓名" />
-      <el-table-column align="center" prop="phone" label="学号" />
-	  <el-table-column label="性别"></el-table-column>
-      <el-table-column label="年龄"></el-table-column>
-      <el-table-column label="手机号"></el-table-column>
-	  <el-table-column label="所属班级"></el-table-column>
-	  <el-table-column label="所属学校"></el-table-column>
+      <el-table-column align="center" prop="student_no" label="学号" />
+	  <el-table-column label="性别" prop="sex"></el-table-column>
+      <el-table-column label="年龄" prop="age"></el-table-column>
+      <el-table-column label="手机号" prop="phone"></el-table-column>
+	  <el-table-column label="所属班级" prop="grade_name">
+	  		  <template slot-scope="scope">{{scope.row.grade_name}}{{scope.row.class_name}}</template>
+	  </el-table-column>
+	  <el-table-column label="所属学校" prop="school_name"></el-table-column>
 	  
       <el-table-column align="center" prop="ctime" label="创建时间" />
       <el-table-column align="center" prop="date" label="操作" width="320">
         <template slot-scope="scope">
-          <el-button @click="edit(scope.row.id)" size="mini" type="info" plain
+          <el-button @click="edit(scope.row)" size="mini" type="info" plain
             >编辑</el-button
           >
           <el-button @click="del(scope.row.id)" size="mini" type="info" plain
@@ -96,72 +146,82 @@
     <!-- 新增学生-->
 	<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
 	  <el-form   ref="form" :model="form" :rules="rules" label-width="80px">
-		  <el-form-item label="学生姓名" prop="hospital_name">
+		  <el-form-item label="学生姓名" prop="name">
 		    <el-input
 		      clearable
-		      v-model="form.hospital_name"
+		      v-model="form.name"
 		      placeholder="请输入名称"
 		    ></el-input>
 		  </el-form-item>
-		  <el-form-item label="性别" prop="name">
+		  <el-form-item label="性别" prop="sex">
+		      <el-select
+		        v-model="form.sex"
+		        placeholder="请选择"
+		        clearable
+		        filterable  
+		      >
+		  		<el-option label="男" value="男"></el-option>
+		  		<el-option label="女" value="女"></el-option>
+		        </el-option>
+		      </el-select>
+		    </el-form-item>
+		    <el-form-item label="年龄" prop="age">
+		      <el-input
+		        clearable
+		        v-model="form.age"
+		        placeholder="请输入年龄"
+		      ></el-input>
+		    </el-form-item>
+		  <el-form-item label="学校" prop="school_id">
 		    <el-select
-		      v-model="form.parent_id"
+		      v-model="form.school_id"
+		      placeholder="请选择学校"
+		      clearable
+		      filterable  
+		  	@change="getClass1"
+		    >
+		      <el-option
+		        v-for="item in schoolList"
+		        :key="item.value"
+		        :label="item.name"
+		        :value="item.id"
+		      >
+		      </el-option>
+		    </el-select>
+		  </el-form-item>
+		  <el-form-item label="年级" prop='grade_name'>
+		    <el-select 
+		      v-model="form.grade_name"
 		      placeholder="请选择"
 		      clearable
 		      filterable  
+		  	@change="getClass1"
 		    >
+		      <el-option
+		        v-for="item in gradeList"
+		        :key="item"
+		        :label="item"
+		        :value="item"
+		      >
 		      </el-option>
 		    </el-select>
 		  </el-form-item>
-		  <el-form-item label="年龄" prop="hospital_name">
-		    <el-input
+		  <el-form-item label="班级">
+		    <el-select 
+		      v-model="form.class_id"
+		      placeholder="请选择"
 		      clearable
-		      v-model="form.hospital_name"
-		      placeholder="请输入年龄"
-		    ></el-input>
+		      filterable  
+		    >
+		      <el-option
+		        v-for="item in classList1"
+		        :key="item.value"
+		        :label="item.name"
+		        :value="item.id"
+		      >
+		      </el-option>
+		    </el-select>
 		  </el-form-item>
-		<el-form-item label="学校" prop="name">
-		  <el-select
-		    v-model="form.parent_id"
-		    placeholder="请选择学校"
-		    clearable
-		    filterable  
-		  >
-		    </el-option>
-		  </el-select>
-		</el-form-item>
-	    <el-form-item label="年级">
-	      <el-select 
-	        v-model="form.parent_id"
-	        placeholder="请选择"
-	        clearable
-	        filterable  
-	      >
-	        <el-option
-	          v-for="item in doctorList"
-	          :key="item.value"
-	          :label="item.name"
-	          :value="item.id"
-	        >
-	        </el-option>
-	      </el-select>
-	    </el-form-item>
-	    <el-form-item label="班级">
-	      <el-select 
-	        v-model="form.parent_id"
-	        placeholder="请选择"
-	        clearable
-	        filterable  
-	      >
-	        <el-option
-	          v-for="item in doctorList"
-	          :key="item.value"
-	          :label="item.name"
-	          :value="item.id"
-	        >
-	        </el-option>
-	      </el-select>
-	    </el-form-item>
 	  </el-form>
 	  <div slot="footer" class="dialog-footer">
 	    <el-button type="primary" @click="submitForm">保存</el-button>
@@ -192,23 +252,34 @@ export default {
 	  open2: false,
       doctorList: [],
       rules: {},
+	  schoolList: [],
+	  gradeList:[],
+	  classList:[],
+	  classList1:[],
     };
   },
   methods: {
+	download(){
+		window.open('http://test.scxjc.club/supermark_students.xlsx')  
+	},
+	uploadSuccess(){
+		this.msgSuccess("上传成功");
+		this.getData();
+	},
     del(id) {
       this.$confirm("确认删除?", "提示", {
         type: "warning",
       }).then(() => {
         this.$api
-          .delDoctorInfo({
+          .delStudent({
             id: id,
           })
           .then((res) => {
             if (!res.data.code) {
-              this.$msgSuccess("删除成功");
+              this.msgSuccess("删除成功");
               this.getData();
             } else {
-              this.$msgError(res.data.message);
+              this.msgError(res.data.message);
             }
           });
       });
@@ -220,45 +291,51 @@ export default {
       this.queryParams.page = this.$refs.pageButton.page;
       this.getData();
     },
+	// 获取学校 年级
+	getList(){
+		this.$api.schoolList().then((res) => {
+		  this.schoolList = res.data.data.list;
+		});
+		this.$api.gradeList().then((res) => {
+		  this.gradeList = res.data.data;
+		  
+		});
+	},
+	// 获取班级
+	getClass(){
+		this.$api.classList({school_id:this.queryParams.school_id,grade_name:this.queryParams.grade_name}).then((res) => {
+		  this.classList = res.data.data.list;
+		});
+	},
+	getClass1(){
+		this.$api.classList({school_id:this.form.school_id,grade_name:this.form.grade_name}).then((res) => {
+		  this.classList1 = res.data.data.list;
+		});
+	},
     getData() {
       this.loading = true;
-      this.$api.getDoctorsList(this.queryParams).then((res) => {
+      this.$api.studentList(this.queryParams).then((res) => {
         this.list = res.data.data.list;
         this.total = res.data.data.total;
         this.loading = false;
       });
-
-      this.$api
-          .getDoctorsSearchList({
-          })
-          .then((res) => {
-            this.doctorList = res.data.data;
-            this.$set(this.doctorList, res.data.data);
-            // this.loading = false;
-          });
     },
     handleAdd() {
       this.open = true;
       this.title = "新增学生";
-      this.form = {};
+      this.form = {student_no:''};
     },
-    edit(id) {
+    edit(item) {
       this.title = "编辑";
-      this.$api
-        .getDoctorInfo({
-          id: id,
-        })
-        .then((res) => {
-          this.form = res.data.data;
-          this.open = true;
-        });
+      this.form = item;
+      this.open = true;
     },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate((valid) => {
         if (valid) {
           if (this.form.id != null) {
-            this.$api.editDoctorInfo(this.form).then((res) => {
+            this.$api.editStudent(this.form).then((res) => {
               if (res.data.code == 0) {
                 this.msgSuccess("成功!");
                 this.open = false;
@@ -268,7 +345,7 @@ export default {
               }
             });
           } else {
-            this.$api.addDoctorInfo(this.form).then((res) => {
+            this.$api.addStudent(this.form).then((res) => {
               if (res.data.code == 0) {
                 this.msgSuccess("成功!");
                 this.open = false;
@@ -281,24 +358,9 @@ export default {
         }
       });
     },
-    remoteMethod(query) {
-      if (query !== "") {
-        // this.loading = true;
-        this.$api
-          .getDoctorsSearchList({
-            name: query,
-          })
-          .then((res) => {
-            this.doctorList = res.data.data;
-            this.$set(this.doctorList, res.data.data);
-            // this.loading = false;
-          });
-      } else {
-        this.doctorList = [];
-      }
-    },
   },
   created() {
+	this.getList()
     this.getData();
     
   },

+ 156 - 71
src/views/school/TeacherList.vue

@@ -6,6 +6,10 @@
 			margin-right: 6px;
 		}
 	}
+	.upload_demo{
+		display: inline-block;
+		margin: 0 5px;
+	}
 </style>
 <template>
   <section class="content">
@@ -17,31 +21,72 @@
     </div>
     <el-form :model="queryParams" size="mini"  :inline="true" style="padding-left: 20px;">
      <el-form-item label="教师名称">
-     	<el-input placeholder="请输入名称" v-model="queryParams.school_name"></el-input>
+     	<el-input placeholder="请输入名称" clearable v-model="queryParams.name"></el-input>
      </el-form-item>
 	 <el-form-item label="学校">
-	 	<el-select placeholder="请选择学校">
-	 			    <!-- <el-option label="高三一班" value="高三一班">高三一班</el-option> -->
+	 	<el-select
+	 	  v-model="queryParams.school_id"
+	 	  placeholder="请选择学校"
+	 	  clearable
+	 	  filterable  
+		  @change="getClass"
+	 	>
+	 	  <el-option
+	 	    v-for="item in schoolList"
+	 	    :key="item.value"
+	 	    :label="item.name"
+	 	    :value="item.id"
+	 	  >
+	 	  </el-option>
 	 	</el-select>
 	 </el-form-item>
 	 <el-form-item label="年级">
-	 	<el-select placeholder="请选择">
-	 			    <!-- <el-option label="高三一班" value="高三一班">高三一班</el-option> -->
+	 	<el-select
+	 	  v-model="queryParams.grade_name"
+	 	  placeholder="请选择年级"
+	 	  clearable
+	 	  filterable  
+		  @change="getClass"
+	 	>
+	 	  <el-option
+	 	    v-for="item in gradeList"
+	 	    :key="item"
+	 	    :label="item"
+	 	    :value="item"
+	 	  >
+	 	  </el-option>
 	 	</el-select>
 	 </el-form-item>
 	 <el-form-item label="班级">
-	 	<el-select placeholder="请选择">
-	 			    <!-- <el-option label="高三一班" value="高三一班">高三一班</el-option> -->
+	 	<el-select
+	 	  v-model="queryParams.class_id"
+	 	  placeholder="请选择班级"
+	 	  clearable
+	 	  filterable  
+	 	>
+	 	  <el-option
+	 	    v-for="item in classList"
+	 	    :key="item.value"
+	 	    :label="item.name"
+	 	    :value="item.id"
+	 	  >
+	 	  </el-option>
 	 	</el-select>
 	 </el-form-item>
 	 <el-form-item label="职务">
-	 	<el-select placeholder="请选择">
-	 			    <!-- <el-option label="高三一班" value="高三一班">高三一班</el-option> -->
+	 	<el-select placeholder="请选择" v-model="queryParams.job">
+	 		<el-option label="班主任" value="班主任"></el-option>
 	 	</el-select>
 	 </el-form-item>
 	 <el-form-item label="任教科目">
-	 	<el-select placeholder="请选择">
-	 			    <!-- <el-option label="高三一班" value="高三一班">高三一班</el-option> -->
+	 	<el-select placeholder="请选择" v-model="queryParams.subject">
+			<el-option
+			  v-for="item in subjectList"
+			  :key="item"
+			  :label="item"
+			  :value="item"
+			>
+			</el-option>
 	 	</el-select>
 	 </el-form-item>
 	 <el-form-item label-width="10" style="margin-left: 10px">
@@ -51,15 +96,24 @@
 	   <el-button
 	     type="info"
 	     size="mini"
-	     @click="handleAdd"
+	     @click="queryParams={},getData()"
 	     >重置</el-button
 	   >
 	   <el-button
 	     type="info"
-	     size="mini"
-	     @click="handleAdd"
-	     >批量导入</el-button
+	     size="mini"  icon="el-icon-download"
+	     @click="download"
+	     >下载模版</el-button
 	   >
+	   <el-upload
+	     class="upload_demo"
+	     action="/api/admin/school/teacher/upload"
+	   		 :on-success='uploadSuccess'
+	   		 :show-file-list='false'
+	     multiple
+	     :limit="3">
+	     <el-button icon="el-icon-upload" size="mini" type="primary">批量导入</el-button>
+	   </el-upload>
 	   <el-button  
 	 			  type="primary"
 	 			  plain 
@@ -74,22 +128,23 @@
       v-loading="loading"
       :data="list"
       style="width: 100%; margin-top: 10px"
-      height="50vh"
+      height="65vh"
     >
       <el-table-column align="center" prop="name" label="教师名称" />
-      <el-table-column align="center" prop="phone" label="性别" />
-      <el-table-column label="年龄">
-      </el-table-column>
-      <el-table-column label="手机号"></el-table-column>
-	  <el-table-column label="所属班级"></el-table-column>
-	  <el-table-column label="所属学校"></el-table-column>
-	  <el-table-column label="职务"></el-table-column>
-	  <el-table-column label="任教科目"></el-table-column>
+      <el-table-column align="center" prop="sex" label="性别" />
+      <el-table-column label="年龄" prop="age"></el-table-column>
+      <!-- <el-table-column label="手机号" prop="phone"></el-table-column> -->
+	  <el-table-column label="所属班级" prop="grade_name">
+		  <template slot-scope="scope">{{scope.row.grade_name}}{{scope.row.class_name}}</template>
+	  </el-table-column>
+	  <el-table-column label="所属学校" prop="school_name"></el-table-column>
+	  <el-table-column label="职务" prop="job"></el-table-column>
+	  <el-table-column label="任教科目" prop="subject"></el-table-column>
 	  
       <el-table-column align="center" prop="ctime" label="创建时间" />
       <el-table-column align="center" prop="date" label="操作" width="320">
         <template slot-scope="scope">
-          <el-button @click="edit(scope.row.id)" size="mini" type="info" plain
+          <el-button @click="edit(scope.row)" size="mini" type="info" plain
             >编辑</el-button
           >
           <el-button @click="del(scope.row.id)" size="mini" type="info" plain
@@ -108,65 +163,75 @@
     <!-- 新增教师-->
 	<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
 	  <el-form   ref="form" :model="form" :rules="rules" label-width="80px">
-		  <el-form-item label="教师名" prop="hospital_name">
+		  <el-form-item label="教师名" prop="name">
 		    <el-input
 		      clearable
-		      v-model="form.hospital_name"
-		      placeholder="请输入班级名称"
+		      v-model="form.name"
+		      placeholder="请输入教师姓名"
 		    ></el-input>
 		  </el-form-item>
-		  <el-form-item label="性别" prop="name">
+		  <el-form-item label="性别" prop="sex">
 		    <el-select
-		      v-model="form.parent_id"
+		      v-model="form.sex"
 		      placeholder="请选择"
 		      clearable
 		      filterable  
 		    >
+				<el-option label="男" value="男"></el-option>
+				<el-option label="女" value="女"></el-option>
 		      </el-option>
 		    </el-select>
 		  </el-form-item>
-		  <el-form-item label="年龄" prop="hospital_name">
+		  <el-form-item label="年龄" prop="age">
 		    <el-input
 		      clearable
-		      v-model="form.hospital_name"
+		      v-model="form.age"
 		      placeholder="请输入年龄"
 		    ></el-input>
 		  </el-form-item>
-		<el-form-item label="学校" prop="name">
+		<el-form-item label="学校" prop="school_id">
 		  <el-select
-		    v-model="form.parent_id"
+		    v-model="form.school_id"
 		    placeholder="请选择学校"
 		    clearable
 		    filterable  
+			@change="getClass1"
 		  >
+		    <el-option
+		      v-for="item in schoolList"
+		      :key="item.value"
+		      :label="item.name"
+		      :value="item.id"
+		    >
 		    </el-option>
 		  </el-select>
 		</el-form-item>
-	    <el-form-item label="年级">
+	    <el-form-item label="年级" prop='grade_name'>
 	      <el-select 
-	        v-model="form.parent_id"
+	        v-model="form.grade_name"
 	        placeholder="请选择"
 	        clearable
 	        filterable  
+			@change="getClass1"
 	      >
 	        <el-option
-	          v-for="item in doctorList"
-	          :key="item.value"
-	          :label="item.name"
-	          :value="item.id"
+	          v-for="item in gradeList"
+	          :key="item"
+	          :label="item"
+	          :value="item"
 	        >
 	        </el-option>
 	      </el-select>
 	    </el-form-item>
 	    <el-form-item label="班级">
 	      <el-select 
-	        v-model="form.parent_id"
+	        v-model="form.class_id"
 	        placeholder="请选择"
 	        clearable
 	        filterable  
 	      >
 	        <el-option
-	          v-for="item in doctorList"
+	          v-for="item in classList1"
 	          :key="item.value"
 	          :label="item.name"
 	          :value="item.id"
@@ -174,18 +239,18 @@
 	        </el-option>
 	      </el-select>
 	    </el-form-item>
-	    <el-form-item label="职务" prop="hospital_name">
+	    <el-form-item label="职务" prop="job">
 	      <el-input
 	        clearable
-	        v-model="form.hospital_name"
+	        v-model="form.job"
 	        placeholder="请输入"
 	      ></el-input>
 	    </el-form-item>
 	
-	    <el-form-item label="任教科目" prop="hospital_name">
+	    <el-form-item label="任教科目" prop="subject">
 	      <el-input
 	        clearable
-	        v-model="form.hospital_name"
+	        v-model="form.subject"
 	        placeholder="请输入"
 	      ></el-input>
 	    </el-form-item>
@@ -219,23 +284,35 @@ export default {
 	  open2: false,
       doctorList: [],
       rules: {},
+	  schoolList: [],
+	  gradeList:[],
+	  classList:[],
+	  classList1:[],
+	  subjectList:['语文','数学','英语']
     };
   },
   methods: {
+	  download(){
+	  	window.open('http://test.scxjc.club/supermark_students.xlsx')  
+	  },
+	  uploadSuccess(){
+	  	this.msgSuccess("上传成功");
+	  	this.getData();
+	  },
     del(id) {
       this.$confirm("确认删除?", "提示", {
         type: "warning",
       }).then(() => {
         this.$api
-          .delDoctorInfo({
+          .delTeacher({
             id: id,
           })
           .then((res) => {
             if (!res.data.code) {
-              this.$msgSuccess("删除成功");
+              this.msgSuccess("删除成功");
               this.getData();
             } else {
-              this.$msgError(res.data.message);
+              this.msgError(res.data.message);
             }
           });
       });
@@ -247,45 +324,51 @@ export default {
       this.queryParams.page = this.$refs.pageButton.page;
       this.getData();
     },
+	// 获取学校 年级
+	getList(){
+		this.$api.schoolList().then((res) => {
+		  this.schoolList = res.data.data.list;
+		});
+		this.$api.gradeList().then((res) => {
+		  this.gradeList = res.data.data;
+		  
+		});
+	},
+	// 获取班级
+	getClass(){
+		this.$api.classList({school_id:this.queryParams.school_id,grade_name:this.queryParams.grade_name}).then((res) => {
+		  this.classList = res.data.data.list;
+		});
+	},
+	getClass1(){
+		this.$api.classList({school_id:this.form.school_id,grade_name:this.form.grade_name}).then((res) => {
+		  this.classList1 = res.data.data.list;
+		});
+	},
     getData() {
       this.loading = true;
-      this.$api.getDoctorsList(this.queryParams).then((res) => {
+      this.$api.teacherList(this.queryParams).then((res) => {
         this.list = res.data.data.list;
         this.total = res.data.data.total;
         this.loading = false;
       });
-
-      this.$api
-          .getDoctorsSearchList({
-          })
-          .then((res) => {
-            this.doctorList = res.data.data;
-            this.$set(this.doctorList, res.data.data);
-            // this.loading = false;
-          });
     },
     handleAdd() {
       this.open = true;
       this.title = "新增教师";
       this.form = {};
     },
-    edit(id) {
+    edit(item) {
       this.title = "编辑";
-      this.$api
-        .getDoctorInfo({
-          id: id,
-        })
-        .then((res) => {
-          this.form = res.data.data;
-          this.open = true;
-        });
+      this.form = item;
+      this.open = true;
     },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate((valid) => {
         if (valid) {
           if (this.form.id != null) {
-            this.$api.editDoctorInfo(this.form).then((res) => {
+            this.$api.editTeacher(this.form).then((res) => {
               if (res.data.code == 0) {
                 this.msgSuccess("成功!");
                 this.open = false;
@@ -295,7 +378,7 @@ export default {
               }
             });
           } else {
-            this.$api.addDoctorInfo(this.form).then((res) => {
+            this.$api.addTeacher(this.form).then((res) => {
               if (res.data.code == 0) {
                 this.msgSuccess("成功!");
                 this.open = false;
@@ -326,7 +409,9 @@ export default {
     },
   },
   created() {
-    this.getData();
+	  this.getList()
+	  this.getClass()
+      this.getData();
     
   },
 };