lex-xin 5 gadi atpakaļ
vecāks
revīzija
febd29ae11
37 mainītis faili ar 578 papildinājumiem un 91 dzēšanām
  1. 0 0
      dist/index.html
  2. 1 1
      dist/static/css/chunk-0a3a8a56.ad6c378c.css
  3. 1 0
      dist/static/css/chunk-11c300d3.38359004.css
  4. 0 0
      dist/static/css/chunk-cd621f24.2a30b0ff.css
  5. 1 1
      dist/static/css/chunk-d7425894.a6fbe3e5.css
  6. 0 0
      dist/static/js/app.05d78901.js
  7. 0 0
      dist/static/js/app.7abe1f4a.js
  8. 0 0
      dist/static/js/chunk-0a3a8a56.4cea6c59.js
  9. 0 0
      dist/static/js/chunk-10467d40.d7b65378.js
  10. 0 0
      dist/static/js/chunk-11c300d3.9cbdaa2a.js
  11. 0 0
      dist/static/js/chunk-392a4f99.01cae3f1.js
  12. 0 0
      dist/static/js/chunk-4772f96d.65b16985.js
  13. 0 0
      dist/static/js/chunk-4772f96d.ddc47a2b.js
  14. 0 0
      dist/static/js/chunk-5d8763ff.1c102d77.js
  15. 0 0
      dist/static/js/chunk-672f31be.ab4e43c0.js
  16. 0 0
      dist/static/js/chunk-75a9a2be.01da1205.js
  17. 0 0
      dist/static/js/chunk-7a6e47c8.8419217c.js
  18. 0 0
      dist/static/js/chunk-7a6e47c8.8f8249fd.js
  19. 0 0
      dist/static/js/chunk-8f99d096.9af3920b.js
  20. 0 0
      dist/static/js/chunk-a47557d0.f3b8d965.js
  21. 0 0
      dist/static/js/chunk-cbdcb8da.1a169f6f.js
  22. 0 0
      dist/static/js/chunk-cd621f24.11454756.js
  23. 0 0
      dist/static/js/chunk-cf963dc6.13fa6ffb.js
  24. 0 0
      dist/static/js/chunk-d7425894.3514b7fb.js
  25. 0 0
      dist/static/js/chunk-d7425894.ec128c92.js
  26. 28 11
      src/api/teacherManager.js
  27. 2 0
      src/router/index.js
  28. 3 7
      src/utils/searchArray.js
  29. 6 0
      src/utils/validate.js
  30. 2 2
      src/views/categroyManager/globalConfig.vue
  31. 2 2
      src/views/categroyManager/insideSetting/adminManager.vue
  32. 1 1
      src/views/categroyManager/insideSetting/branchActive.vue
  33. 2 2
      src/views/categroyManager/insideSetting/gradientSet.vue
  34. 22 21
      src/views/studentManager/studentList.vue
  35. 58 41
      src/views/teacherManager/teacherDetail/components/teacherInfo.vue
  36. 19 2
      src/views/teacherManager/teacherList.vue
  37. 430 0
      src/views/teacherManager/teacherOperation.vue

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/index.html


+ 1 - 1
dist/static/css/chunk-5d8763ff.641b676e.css → dist/static/css/chunk-0a3a8a56.ad6c378c.css

@@ -1 +1 @@
-.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}
+.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}.el-button+.el-button{margin-left:0}

+ 1 - 0
dist/static/css/chunk-11c300d3.38359004.css

@@ -0,0 +1 @@
+.el-button--primary[data-v-3966be4c],.el-button--primary[data-v-3966be4c]:active,.el-button--primary[data-v-3966be4c]:focus,.el-button--primary[data-v-3966be4c]:hover{background:#14928a;border-color:#14928a;color:#fff}[data-v-3966be4c] .el-date-editor.el-input,[data-v-3966be4c] .el-select{width:100%!important}[data-v-3966be4c] .el-form-item__content{font-size:14px!important;margin-right:5%}.infoWrap[data-v-3966be4c]{margin-top:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.infoWrap .left[data-v-3966be4c]{max-width:1000px;width:100%}.infoWrap .left h4[data-v-3966be4c]{margin-bottom:20px}.infoWrap .right[data-v-3966be4c]{margin-left:100px}.infoWrap .right .teacherIcon[data-v-3966be4c]{width:150px;height:150px;border-radius:50%;overflow:hidden}.infoWrap .right .teacherIcon img[data-v-3966be4c]{width:150px;height:150px}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/css/chunk-cd621f24.2a30b0ff.css


+ 1 - 1
dist/static/css/chunk-d7425894.f2c5a1b2.css → dist/static/css/chunk-d7425894.a6fbe3e5.css

@@ -1 +1 @@
-.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}.tr-cotainer{margin-top:20px}.teacherInfo .infoWrap{margin-top:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.teacherInfo .infoWrap .left{max-width:1000px;width:100%}.teacherInfo .infoWrap .left h4{margin-bottom:20px}.teacherInfo .infoWrap .right{margin-left:100px}.teacherInfo .infoWrap .right .teacherIcon{width:150px;height:150px;border-radius:50%;overflow:hidden}.teacherInfo .infoWrap .right .teacherIcon img{width:150px;height:150px}.courseInfo h4{margin-bottom:20px}.courseInfo .tableMargin{margin-top:20px}.salarySet h3{margin-top:10px;margin-bottom:10px;font-size:14px;color:#444;font-weight:400}.salarySet .tableList .left,.salarySet .tableList .right{float:left}.salarySet .tableList .left{width:40%;margin-right:2%}.salarySet .tableList .right{width:56%;margin-left:2%}
+.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}.tr-cotainer{margin-top:20px}.teacherInfo .infoWrap{margin-top:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.teacherInfo .infoWrap .left{max-width:1000px;width:100%}.teacherInfo .infoWrap .left h4{margin-bottom:20px}.teacherInfo .infoWrap .right{margin-left:100px}.teacherInfo .infoWrap .right .teacherIcon{width:150px;height:150px;border-radius:50%;overflow:hidden}.teacherInfo .infoWrap .right .teacherIcon img{width:150px;height:150px}/deep/.el-form-item{width:100%}/deep/.el-date-editor.el-input,/deep/.el-select{width:100%!important}/deep/.el-form-item__content{font-size:14px!important;margin-right:5%}.courseInfo h4{margin-bottom:20px}.courseInfo .tableMargin{margin-top:20px}.salarySet h3{margin-top:10px;margin-bottom:10px;font-size:14px;color:#444;font-weight:400}.salarySet .tableList .left,.salarySet .tableList .right{float:left}.salarySet .tableList .left{width:40%;margin-right:2%}.salarySet .tableList .right{width:56%;margin-left:2%}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/app.05d78901.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/app.7abe1f4a.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-0a3a8a56.4cea6c59.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-10467d40.d7b65378.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-11c300d3.9cbdaa2a.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-392a4f99.01cae3f1.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-4772f96d.65b16985.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-4772f96d.ddc47a2b.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-5d8763ff.1c102d77.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-672f31be.ab4e43c0.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-75a9a2be.01da1205.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-7a6e47c8.8419217c.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-7a6e47c8.8f8249fd.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-8f99d096.9af3920b.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-a47557d0.f3b8d965.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-cbdcb8da.1a169f6f.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-cd621f24.11454756.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-cf963dc6.13fa6ffb.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-d7425894.3514b7fb.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/static/js/chunk-d7425894.ec128c92.js


+ 28 - 11
src/api/teacherManager.js

@@ -5,7 +5,7 @@ import qs from 'qs'
 // 分页查询教师列表
 export function teacherQueryPage (data) {
   return request({
-    url: '/teacher-server/teacher/queryPage',
+    url: '/web-server/teacher/queryPage',
     method: 'get',
     params: data
   })
@@ -14,7 +14,7 @@ export function teacherQueryPage (data) {
 // 根据教师编号查询教师基本信息
 export function teacherGet (data) {
   return request({
-    url: '/teacher-server/teacher/get',
+    url: '/web-server/teacher/get',
     method: 'get',
     params: data
   })
@@ -23,7 +23,7 @@ export function teacherGet (data) {
 // 获取老师乐团课程信息列表
 export function getTeacherMusicClass (data) {
   return request({
-    url: '/teacher-server/teacher/getTeacherMusicClass',
+    url: '/web-server/teacher/getTeacherMusicClass',
     method: 'get',
     params: data
   })
@@ -32,7 +32,7 @@ export function getTeacherMusicClass (data) {
 // 获取老师VIP课程信息列表
 export function getTeacherVipClass (data) {
   return request({
-    url: '/teacher-server/teacher/getTeacherVipClass',
+    url: '/web-server/teacher/getTeacherVipClass',
     method: 'get',
     params: data
   })
@@ -41,7 +41,7 @@ export function getTeacherVipClass (data) {
 // 获取教师试听课安排列表
 export function findTeacherDemoGroups (data) {
   return request({
-    url: '/teacher-server/demoGroup/findTeacherDemoGroups',
+    url: '/web-server/demoGroup/findTeacherDemoGroups',
     method: 'get',
     params: data
   })
@@ -50,7 +50,7 @@ export function findTeacherDemoGroups (data) {
 // 查询教师签到记录
 export function getTeacherPersonalAttendances (data) {
   return request({
-    url: '/teacher-server/teacherAttendance/getTeacherPersonalAttendances',
+    url: '/web-server/teacherAttendance/getTeacherPersonalAttendances',
     method: 'get',
     params: data
   })
@@ -59,7 +59,7 @@ export function getTeacherPersonalAttendances (data) {
 // 获取教师上课结算列表
 export function teacherQueryCloses (data) {
   return request({
-    url: '/teacher-server/teacher/queryCloses',
+    url: '/web-server/teacher/queryCloses',
     method: 'get',
     params: data
   })
@@ -77,7 +77,7 @@ export function teacherLeaveRecordQuery (data) {
 // 获取教师上课课酬未结算总额
 export function sumTeacherNoPay (data) {
   return request({
-    url: '/teacher-server/teacher/sumTeacherNoPay',
+    url: '/web-server/teacher/sumTeacherNoPay',
     method: 'get',
     params: data
   })
@@ -123,19 +123,36 @@ export function teacherSalaryBatchUpset (data) {
 export function updateTeacherCoursesSalary (data) {
   return request({
     url: '/web-server/courseSchedule/updateTeacherCoursesSalary',
-    // url: '/api-student/course/updateTeacherCoursesSalary',
     method: 'post',
     data: qs.stringify(data)
   })
 }
 
-
 //获取教师vip课教学点
 export function getTeachSchool (data) {
   return request({
     url: '/web-server/school/findVipSchoolByTeacher',
-    // url: '/api-student/course/updateTeacherCoursesSalary',
     method: 'get',
     params: data
   })
 }
+
+//新增教师
+export function teacherAdd (data) {
+  return request({
+    url: '/web-server/teacher/add',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
+
+//修改教师信息
+export function teacherUpdate (data) {
+  return request({
+    url: '/web-server/teacher/update',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
+
+

+ 2 - 0
src/router/index.js

@@ -79,6 +79,8 @@ export const asyncRoutes = {
   buildVip: () => import('@/views/buildVip/index'),
   // 教师管理
   teacherList: () => import('@/views/teacherManager/teacherList'),
+  // 新增&修改教师
+  teacherOperation: () => import('@/views/teacherManager/teacherOperation'),
   // 老师详情
   teacherDetail: () => import('@/views/teacherManager/teacherDetail/index'),
   // 学员管理

+ 3 - 7
src/utils/searchArray.js

@@ -28,9 +28,9 @@ const jobNature = [
 
 // 老师状态
 const teacherStatus = [
-    { label: '正常', value: 'NOACTIVATED' },
-    { label: '冻结', value: 'CANCELLED' },
-    { label: '锁定', value: 'NORMAL' }
+    { label: '正常', value: '0' },
+    { label: '冻结', value: '1' },
+    { label: '锁定', value: '9' }
 ]
 
 // 考勤状态
@@ -58,10 +58,6 @@ const dealStatus = [
     { value: "CLOSE", label: "交易关闭" }
 ]
 
-
-
-
-
 export {
     courseType,
     attendance,

+ 6 - 0
src/utils/validate.js

@@ -18,3 +18,9 @@ export function validUsername(str) {
   const valid_map = ['admin', 'editor']
   return valid_map.indexOf(str.trim()) >= 0
 }
+
+// 手机号验证
+export function isvalidPhone(str) {
+  const reg = /^1[3|4|5|7|8][0-9]\d{8}$/
+  return reg.test(str)
+}

+ 2 - 2
src/views/categroyManager/globalConfig.vue

@@ -52,8 +52,8 @@ export default {
   name: 'globalConfig',
   data () {
     return {
-      activeIndex: '3',
-      activeStatus: [false, false, false, true, false, false, false]
+      activeIndex: '0',
+      activeStatus: [true, false, false, false, false, false, false]
     }
   },
   methods: {

+ 2 - 2
src/views/categroyManager/insideSetting/adminManager.vue

@@ -58,10 +58,10 @@ export default {
         rows: this.pageInfo.limit,
         page: this.pageInfo.page
       }).then(res => {
-        if(res.code == 200 && res.data && res.data.rows.length > 0) {
+        if(res.code == 200 && res.data) {
           this.tableList = res.data.rows
           this.pageInfo.total = res.data.total
-          
+
         }
       })
     },

+ 1 - 1
src/views/categroyManager/insideSetting/branchActive.vue

@@ -14,7 +14,7 @@
           <el-table-column align='center' prop='rewardMode'
                            label="分部活动类型">
             <template slot-scope="scope">
-              {{ scope.row.rewardMode == 'PER' ? '阶梯奖励' : '累计奖励' }}
+              {{ scope.row.rewardMode == 'PER' ? '累计奖励' : '阶梯奖励' }}
             </template>
           </el-table-column>
           <el-table-column align='center' prop='organNameList'

+ 2 - 2
src/views/categroyManager/insideSetting/gradientSet.vue

@@ -208,7 +208,7 @@ export default {
             form.errorText = '最小值不能小于0'
             return
         } else if(singleLength > 1 && parseInt(lastDate.min) <= parseInt(domains[singleLength - 2].max)) {
-            form.errorText = '最小值不能大于或等上一个梯度的最大值'
+            form.errorText = '最小值不能小于或等于上一个梯度的最大值'
             return
         }
 
@@ -216,7 +216,7 @@ export default {
             form.errorText = '最大值不能为空'
             return
         } else if(parseInt(lastDate.max) <= parseInt(lastDate.min)) {
-            form.errorText = '最大值不能小于或等于最小值'
+            form.errorText = '最小值不能小于或等于上一个梯度的最大值'
             return
         }
 

+ 22 - 21
src/views/studentManager/studentList.vue

@@ -8,21 +8,16 @@
                class="searchForm"
                v-model="searchForm">
         <el-form-item>
-          <el-input placeholder="姓名,电话" v-model="searchForm.name">
-            <i slot="suffix" @click="onSearch" class="el-input__icon el-icon-search"></i>
-          </el-input>
+          <el-input placeholder="学生姓名" v-model="searchForm.studentName"></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-input placeholder="家长联系电话" v-model="searchForm.search"></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button @click="onSearch" type="danger">搜索</el-button>
+          <el-button @click="onReSet" type="primary">重置</el-button>
         </el-form-item>
       </el-form>
-      <!-- 查询 -->
-      <!-- <div class="searchWrap">
-        <p>查询条件:</p>
-        <div class="searchItem"
-             @click="closeSearch(item)"
-             v-for="(item,index) in searchList" :key="index">
-          {{ item.key }}
-          <i class="el-icon-close"></i>
-        </div>
-      </div> -->
       <!-- 列表 -->
       <div class="tableWrap">
         <el-table :data='tableList'>
@@ -70,11 +65,13 @@ export default {
   data () {
     return {
       searchForm: {
-        name: ''
+        organId: store.getters.organ,
+        search: null,
+        studentName: null
       },
       searchList: [],
       tableList: [],
-      organId: store.getters.organ,
+      
       pageInfo: {
         // 分页规则
         limit: 10, // 限制显示条数
@@ -92,18 +89,22 @@ export default {
       this.getList()
     },
     getList () {
-      let params = {
-        organId: this.organId,
-        rows: this.pageInfo.limit,
-        page: this.pageInfo.page,
-        search: this.searchForm.name
-      }
+      let params = this.searchForm
+      params.rows = this.pageInfo.limit
+      params.page = this.pageInfo.page
       queryStudentList(params).then(res => {
         if(res.code == 200) {
           this.tableList = res.data.rows
           this.pageInfo.total = res.data.total
         }
       })
+    },
+    onReSet() {
+      this.searchForm = {
+        organId: store.getters.organ,
+        search: null,
+        studentName: null
+      }
     }
   }
 }

+ 58 - 41
src/views/teacherManager/teacherDetail/components/teacherInfo.vue

@@ -3,55 +3,58 @@
     <div class="infoWrap">
       <div class="left">
         <h4>基本信息</h4>
-        <el-form :model="topForm"
-                 :inline="true">
+        <el-form :model="topForm" >
           <el-row>
-            <el-col :span="8">
-              <el-form-item label="老师编号">
+            <el-col :span="12">
+              <el-form-item label="老师编号" :label-width="formLabelWidth">
                 <el-input disabled v-model="topForm.id"></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="8">
-              <el-form-item label="性别">
+            <el-col :span="12">
+              <el-form-item label="性别" :label-width="formLabelWidth">
                 <el-input disabled v-model="topForm.gender"></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="8">
-              <el-form-item label="出生日期">
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="出生日期" :label-width="formLabelWidth">
                 <el-input disabled v-model="topForm.birthdate"></el-input>
               </el-form-item>
             </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="8">
-              <el-form-item label="工作类别">
+            <el-col :span="12">
+              <el-form-item label="工作类别" :label-width="formLabelWidth">
                 <el-input disabled v-model="topForm.jobNature "></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="8">
-              <el-form-item label="入职日期">
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="入职日期" :label-width="formLabelWidth">
                 <el-input disabled v-model="topForm.entryDate"></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="8">
-              <el-form-item label="教学点">
+            <el-col :span="12">
+              <el-form-item label="教学点" :label-width="formLabelWidth">
                 <el-input disabled v-model="topForm.teacherSchools"></el-input>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
-            <el-col :span="8">
-              <el-form-item label="所属分部">
+            <el-col :span="12">
+              <el-form-item label="所属分部" :label-width="formLabelWidth">
                 <el-input disabled v-model="topForm.organName"></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="8">
-              <el-form-item label="流动范围">
+            <el-col :span="12">
+              <el-form-item label="流动范围" :label-width="formLabelWidth">
                 <el-input disabled v-model="topForm.flowOrganRange"></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="8">
-              <el-form-item label="老师简介">
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="老师简介" :label-width="formLabelWidth">
                 <el-input disabled type='textarea'
                           v-model="topForm.introduction"></el-input>
               </el-form-item>
@@ -60,47 +63,50 @@
           
           <h4>资料学历</h4>
           <el-row>
-            <el-col :span="8">
-              <el-form-item label="手机号">
+            <el-col :span="12">
+              <el-form-item label="手机号" :label-width="formLabelWidth">
                 <el-input disabled v-model="topForm.phone"></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="8">
-              <el-form-item label="毕业学校">
+            <el-col :span="12">
+              <el-form-item label="毕业学校" :label-width="formLabelWidth">
                 <el-input disabled v-model="topForm.graduateSchool"></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="8">
-              <el-form-item label="电子邮箱">
+            
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="电子邮箱" :label-width="formLabelWidth">
                 <el-input disabled v-model="topForm.email"></el-input>
               </el-form-item>
             </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="8">
-              <el-form-item label="最高学历">
+            <el-col :span="12">
+              <el-form-item label="最高学历" :label-width="formLabelWidth">
                 <el-input disabled v-model="topForm.educationBackground"></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="8">
-              <el-form-item label="专业技能">
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="专业技能" :label-width="formLabelWidth">
                 <el-input disabled v-model="topForm.subjectName"></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="8">
-              <el-form-item label="职称">
+            <el-col :span="12">
+              <el-form-item label="职称" :label-width="formLabelWidth">
                 <el-input disabled v-model="topForm.technicalTitles"></el-input>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
-            <el-col :span="8">
-              <el-form-item label="证件类型">
+            <el-col :span="12">
+              <el-form-item label="证件类型" :label-width="formLabelWidth">
                 <el-input disabled v-model="topForm.certificateType"></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="8">
-              <el-form-item label="证件号码">
+            <el-col :span="12">
+              <el-form-item label="证件号码" :label-width="formLabelWidth">
                 <el-input disabled v-model="topForm.certificateNum"></el-input>
               </el-form-item>
             </el-col>
@@ -123,6 +129,7 @@ import { teacherGet } from '@/api/teacherManager'
 export default {
   data () {
     return {
+      formLabelWidth: '80px',
       teacherId: this.$route.query.teacherId,
       topForm: {}
     }
@@ -132,7 +139,7 @@ export default {
   },
   methods: {
     teacherGet() {
-      teacherGet({ id: this.teacherId }).then(res => {
+      teacherGet({ teacherId: this.teacherId }).then(res => {
         if(res.code == 200) {
           let tempData = res.data
           tempData.subjectName = this.joinArray(tempData.subjectName)
@@ -204,4 +211,14 @@ export default {
     }
   }
 }
+/deep/.el-form-item {
+  width: 100%;
+}
+/deep/.el-date-editor.el-input, /deep/.el-select  {
+    width: 100% !important;
+}
+/deep/.el-form-item__content {
+    font-size: 14px !important;
+    margin-right: 5%;
+}
 </style>

+ 19 - 2
src/views/teacherManager/teacherList.vue

@@ -2,6 +2,7 @@
   <div class="m-container">
     <h2>老师列表</h2>
     <div class="m-core">
+      <div class="newBand" @click="onTeacher('create')">老师新增</div>
       <!-- 搜索标题 -->
       <el-form :inline="true"
                class="searchForm"
@@ -41,8 +42,8 @@
         </el-form-item>
         <el-form-item>
           <el-select v-model="searchForm.isProbationPeriod" placeholder="人事状态">
-            <el-option label="试用" value="YES"></el-option>
-            <el-option label="正式" value="NO"></el-option>
+            <el-option label="试用" value="1"></el-option>
+            <el-option label="正式" value="0"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item>
@@ -102,6 +103,7 @@
                            label="操作">
             <template slot-scope="scope">
               <router-link style="color:#409EFF" :to="`/business/teacherDetail?teacherId=${scope.row.id}&teacherName=${scope.row.realName}`">查看</router-link>
+              <el-button @click="onTeacher('update', scope.row)" type="text">修改</el-button>
               <el-button @click="onStaffOperation('LOCK_UNLOCK', scope.row)" type="text">{{ scope.row.lockFlag == 1 ? '解冻' : '冻结' }}</el-button>
             </template>
           </el-table-column>
@@ -196,6 +198,18 @@ export default {
         }
       })
     },
+    onTeacher(type, row) {
+      let params = {
+        type: type
+      }
+      if(row) {
+        params.teacherId = row.id
+      }
+      this.$router.push({
+        path: '/business/teacherOperation',
+        query: params
+      })
+    },
     getList () {
       let params = this.searchForm
       // params.organId = this.organId
@@ -238,4 +252,7 @@ export default {
 }
 </script>
 <style lang="scss">
+.el-button+.el-button {
+  margin-left: 0;
+}
 </style>

+ 430 - 0
src/views/teacherManager/teacherOperation.vue

@@ -0,0 +1,430 @@
+<template>
+  <div class='m-container'>
+    <h2>
+      <el-page-header @back="onCancel" :content="'老师' + (pageType == 'create' ? '新增' : '修改')"></el-page-header>
+    </h2>
+    <div class="infoWrap">
+        <div class="left">
+            <h4>基本信息</h4>
+            <el-form :model="topForm" :rules="rules" ref="form" >
+                <el-row>
+                    <el-col :span="12">
+                        <el-form-item label="姓名" prop="realName" :label-width="formLabelWidth">
+                            <el-input v-model="topForm.realName"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="性别" prop="gender" :label-width="formLabelWidth">
+                            <el-select v-model="topForm.gender">
+                                <el-option label='男' :value='1'></el-option>
+                                <el-option label='女' :value='0'></el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="12">
+                        <el-form-item label="出生日期" :label-width="formLabelWidth">
+                            <el-date-picker
+                                v-model="topForm.birthdate" type="date"
+                                value-format="yyyy-MM-dd"
+                                placeholder="出生日期">
+                            </el-date-picker>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="入职日期" prop="entryDate" :label-width="formLabelWidth">
+                            <el-date-picker
+                                v-model="topForm.entryDate" type="date"
+                                value-format="yyyy-MM-dd"
+                                placeholder="入职日期">
+                            </el-date-picker>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="12">
+                    <el-form-item label="工作类别" prop="jobNature" :label-width="formLabelWidth">
+                        <el-select v-model="topForm.jobNature" placeholder="工作类型">
+                            <el-option v-for="item in jobNature" :key="item.value" 
+                            :label="item.label" :value="item.value"></el-option>
+                        </el-select>
+                    </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                    <el-form-item label="所属分部" prop="organId" :label-width="formLabelWidth">
+                        <el-select v-model="topForm.organId"  placeholder="所属分部">
+                            <el-option v-for="item in branchList" :key="item.value" 
+                            :label="item.label" :value="item.value"></el-option>
+                        </el-select>
+                    </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="12">
+                    <el-form-item label="流动范围" :label-width="formLabelWidth">
+                        <el-select v-model="topForm.flowOrganRange" multiple placeholder="流动范围">
+                            <el-option v-for="item in branchList" :key="item.value" 
+                            :label="item.label" :value="item.value.toString()"></el-option>
+                        </el-select>
+                    </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                    <el-form-item label="老师简介" :label-width="formLabelWidth">
+                        <el-input type='textarea'
+                                v-model="topForm.introduction"></el-input>
+                    </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="12" v-if="pageType == 'update'">
+                    <el-form-item label="教学点" :label-width="formLabelWidth">
+                        <el-input disabled v-model="teacherSchools"></el-input>
+                    </el-form-item>
+                    </el-col>
+                </el-row>
+                <h4>资料学历</h4>
+                <el-row>
+                    <el-col :span="12">
+                    <el-form-item label="手机号" prop="phone" :label-width="formLabelWidth">
+                        <el-input v-model.number="topForm.phone"></el-input>
+                    </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                    <el-form-item label="毕业学校" :label-width="formLabelWidth">
+                        <el-input v-model="topForm.graduateSchool"></el-input>
+                    </el-form-item>
+                    </el-col>
+                    
+                </el-row>
+                <el-row>
+                    <el-col :span="12">
+                    <el-form-item label="电子邮箱" :label-width="formLabelWidth">
+                        <el-input v-model="topForm.email"></el-input>
+                    </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                    <el-form-item label="最高学历" :label-width="formLabelWidth">
+                        <!-- <el-input v-model="topForm.educationBackground"></el-input> -->
+                        <el-select v-model="topForm.educationBackground" placeholder="最高学历">
+                            <el-option label="初中" value="初中"></el-option>
+                            <el-option label="高中" value="高中"></el-option>
+                            <el-option label="大专" value="大专"></el-option>
+                            <el-option label="本科" value="本科"></el-option>
+                            <el-option label="硕士" value="硕士"></el-option>
+                            <el-option label="博士" value="博士"></el-option>
+                        </el-select>
+                    </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="12">
+                    <el-form-item label="专业技能" prop="subjectId" :label-width="formLabelWidth">
+                        <el-select multiple v-model="topForm.subjectId" placeholder="专业技能">
+                            <el-option-group
+                            v-for="group in subjectList"
+                            :key="group.label" 
+                            :label="group.label">
+                            <el-option
+                                v-for="item in group.options"
+                                :key="item.value"
+                                :label="item.label"
+                                :value="item.value.toString()">
+                            </el-option>
+                            </el-option-group>
+                        </el-select>
+                    </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                    <el-form-item label="职称" :label-width="formLabelWidth">
+                        <el-input v-model="topForm.technicalTitles"></el-input>
+                    </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="12">
+                    <el-form-item label="证件类型" :label-width="formLabelWidth">
+                        <el-input v-model="topForm.certificateType"></el-input>
+                        <!-- <el-select v-model="topForm.certificateType" placeholder="证件类型">
+                            <el-option label="身份证" value="身份证"></el-option>
+                            <el-option label="护照" value="护照"></el-option>
+                            <el-option label="港澳通行证" value="港澳通行证"></el-option>
+                        </el-select> -->
+                    </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                    <el-form-item label="证件号码" :label-width="formLabelWidth">
+                        <el-input v-model="topForm.certificateNum"></el-input>
+                    </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-form-item>
+                    <el-button @click="onSubmit('form')" type="primary">立即{{ pageType == "create" ? '创建' : '修改' }}</el-button>
+                    <el-button @click="onReSet('form')">重置</el-button>
+                </el-form-item>
+            </el-form>
+        </div>
+        <div class="right">
+            <div class="teacherIcon">
+            <img v-if="topForm.avatar" key="avatar" :src="topForm.avatar" alt="">
+            <img v-else key="avatar" src="@/assets/images/base/woman.png" alt="">
+            </div>
+        </div>
+    </div>
+  </div>
+</template>
+<script>
+import { queryByOrganId } from '@/api/systemManage'
+import { branchQueryPage, subjectListTree } from '@/api/specialSetting'
+import { teacherAdd, teacherUpdate, teacherGet } from '@/api/teacherManager'
+import store from '@/store'
+import { jobNature } from '@/utils/searchArray'
+import { isvalidPhone } from '@/utils/validate'
+let validPhone = (rule, value,callback)=>{
+    if (!value){
+        callback(new Error('请输入电话号码'))
+    }else  if (!isvalidPhone(value)){
+        callback(new Error('请输入正确的11位手机号码'))
+    }else {
+        callback()
+    }
+}
+export default {
+  name: 'adminManager',
+  data () {
+    return {
+        jobNature: jobNature,
+        organId: store.getters.organ,
+        pageType: this.$route.query.type,
+        teacherId: this.$route.query.teacherId,
+        formLabelWidth: '80px',
+        branchList: [], // 分部列表
+        subjectList: [], //声部列表
+        teacherSchools: null,
+        topForm: {
+            realName: null,
+            gender: null,
+            birthdate: null,
+            entryDate: null,
+            jobNature: null,
+            organId: store.getters.organ,
+            flowOrganRange: null,
+            introduction: null,
+            phone: null,
+            avatar: null,
+            graduateSchool: null,
+            email: null,
+            educationBackground: null,
+            subjectId: [],
+            technicalTitles: null,
+            certificateType: null,
+            certificateNum: null
+        },
+        rules: {
+            realName: [{ required: true, message: '请输入姓名', trigger: 'blur'}, 
+            { min: 2, max: 10, message: '请输入 2 到 10 个字符', trigger: 'blur'}],
+            gender: [{ required: true, message: '请选择性别', trigger: 'change' }],
+            entryDate: [{ required: true, message: '请选择入职日期', trigger: 'change' }],
+            jobNature: [{ required: true, message: '请选择工作类别', trigger: 'change' }],
+            organId: [{ required: true, message: '请选择所属分部', trigger: 'change' }],
+            phone: [{ required: true, validator: validPhone, trigger: 'blur' }],
+            subjectId: [{ required: true, type: 'array', message: '请选择专业技能', trigger: 'change' }]
+        }
+    }
+  },
+  mounted() {
+      this.__init()
+  },
+  methods: {
+    __init() {
+        branchQueryPage({ // 获取分部
+            delFlag: 0,
+            rows: 9999
+        }).then(res => {
+            if(res.code == 200 && res.data && res.data.rows) {
+            res.data.rows.forEach(item => {
+                this.branchList.push({
+                label: item.name,
+                value: item.id
+                })
+            })
+            }
+        })
+        subjectListTree({ // 声部
+            delFlag: 0,
+            rows: 9999
+        }).then(res => {
+            let result = res.data
+            if(res.code == 200) {
+                let tempArray = []
+                result.rows.forEach((item, index) => {
+                    let subject = []
+                    item.subjects.forEach(s => {
+                        subject.push({
+                            value: s.id,
+                            label: s.name
+                        })
+                    })
+                    
+                    tempArray[index] = {
+                    label: item.name,
+                    options: subject
+                    }
+                })
+                this.subjectList = tempArray
+            }
+        })
+
+        if(this.pageType == 'update') {
+            teacherGet({ teacherId: this.teacherId }).then(res => {
+                let result = res.data
+                this.topForm = {
+                    realName: result.realName,
+                    gender: result.gender,
+                    birthdate: result.birthdate,
+                    entryDate: result.entryDate,
+                    jobNature: result.jobNature,
+                    organId: result.organId,
+                    flowOrganRange: result.flowOrganRangeId ? result.flowOrganRangeId.split(',') : null,
+                    introduction: result.introduction,
+                    phone: result.phone,
+                    avatar: result.avatar,
+                    graduateSchool: result.graduateSchool,
+                    email: result.email,
+                    educationBackground: result.educationBackground,
+                    subjectId: result.subjectId ? result.subjectId.split(',') : null,
+                    technicalTitles: result.technicalTitles,
+                    certificateType: result.certificateType,
+                    certificateNum: result.certificateNum,
+                }
+                this.teacherSchools = result.teacherSchools.length > 0 ? result.teacherSchools.join(',') : ''
+            })
+        }
+    },
+    onSubmit(formName) {
+        this.$refs[formName].validate(valid => {
+            if(valid) {
+                this.topForm.flowOrganRange = this.topForm.flowOrganRange.join(',')
+                this.topForm.subjectId = this.topForm.subjectId.join(',')
+                if(this.pageType == 'update') {
+                    this.topForm.id = this.teacherId
+                    teacherUpdate(this.topForm).then(res => {
+                        this.messageTips('修改', res)
+                    })
+                } else if(this.pageType == 'create') {
+                    if(this.topForm.id) {
+                        delete this.topForm.id
+                    }
+                    teacherAdd(this.topForm).then(res => {
+                        this.messageTips('添加', res)
+                    })
+                }
+            } else {
+                return false
+            }
+        })
+    },
+    messageTips(title, res) {
+      if(res.code == 200) {
+        this.$message({
+          message: title + '成功',
+          type: 'success'
+        })
+        this.$router.push('/business/teacherList')
+      } else {
+        this.$message.error(res.msg)
+      }
+    },
+    onReSet(formName) {
+        this.topForm = {
+            realName: null,
+            gender: null,
+            birthdate: null,
+            entryDate: null,
+            jobNature: null,
+            organId: store.getters.organ,
+            flowOrganRange: null,
+            introduction: null,
+            phone: null,
+            avatar: null,
+            graduateSchool: null,
+            email: null,
+            educationBackground: null,
+            subjectId: [],
+            technicalTitles: null,
+            certificateType: null,
+            certificateNum: null,
+            jobType: 'ADVISER'
+        }
+        this.$refs[formName].resetFields()
+    },
+    onCancel() {
+      this.$router.push('/business/teacherList')
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+.el-button--primary {
+  background: #14928a;
+  border-color: #14928a;
+  color: #fff;
+  &:hover, &:active, &:focus {
+    background: #14928a;
+    border-color: #14928a;
+    color: #FFF;
+  }
+}
+/deep/.el-date-editor.el-input, /deep/.el-select  {
+    width: 100% !important;
+}
+// .el-row {
+//   margin-top: 40px;
+// }
+// .el-col {
+//   display: flex;
+//   align-items: center;
+//   margin-bottom: 20px;
+//   justify-content: flex-end;
+//   margin-right: 50%;
+// }
+// .el-input-group {
+//   width: 200px;
+//   margin: 0 20px;
+// }
+// /deep/.el-tree-node__content {
+//   height: 40px !important;
+// }
+/deep/.el-form-item__content {
+    font-size: 14px !important;
+    margin-right: 5%;
+}
+.infoWrap {
+    margin-top: 20px;
+
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+    .left {
+      max-width: 1000px;
+      width: 100%;
+      h4 {
+        margin-bottom: 20px;
+      }
+    }
+    .right {
+      margin-left: 100px;
+      .teacherIcon {
+        width: 150px;
+        height: 150px;
+        // border: 1px solid #444;
+        border-radius: 50%;
+        overflow: hidden;
+        img {
+          width: 150px;
+          height: 150px;
+        }
+      }
+    }
+  }
+</style>

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels