浏览代码

05/09 13:47

11
mo 5 年之前
父节点
当前提交
d51bd74b54

+ 22 - 22
src/api/buildTeam.js

@@ -889,7 +889,7 @@ export function getCourseScheduleHomework (data) {
 }
 
 // 修改考勤状态
-export function updateTeacherAttendance(data) {
+export function updateTeacherAttendance (data) {
   return request({
     url: api + '/teacherAttendance/updateTeacherAttendance',
     method: 'post',
@@ -925,7 +925,7 @@ export function practiceGroupManage (data) {
 }
 
 // 获取网管课程组
-export function findPracticeGroupCourseSchedules(data) {
+export function findPracticeGroupCourseSchedules (data) {
   return request({
     url: api + '/practiceGroupManage/findPracticeGroupCourseSchedules',
     method: 'get',
@@ -935,7 +935,7 @@ export function findPracticeGroupCourseSchedules(data) {
 
 // 网管课调整
 // courseSchedule/practiceCourseAdjus
-export function practiceCourseAdjus(data) {
+export function practiceCourseAdjus (data) {
   return request({
     url: api + '/courseSchedule/practiceCourseAdjust',
     method: 'post',
@@ -944,7 +944,7 @@ export function practiceCourseAdjus(data) {
 }
 
 // 网管课程组老师修改
-export function practiceGroupTeacherAdjust(data) {
+export function practiceGroupTeacherAdjust (data) {
   return request({
     url: api + '/courseSchedule/practiceGroupTeacherAdjust',
     method: 'post',
@@ -952,7 +952,7 @@ export function practiceGroupTeacherAdjust(data) {
   })
 }
 // 网管课老师修改
-export function practiceCourseTeacherAdjust(data) {
+export function practiceCourseTeacherAdjust (data) {
   return request({
     url: api + '/courseSchedule/practiceCourseTeacherAdjust',
     method: 'post',
@@ -960,7 +960,7 @@ export function practiceCourseTeacherAdjust(data) {
   })
 }
 // 网管课购买列表
-export function practiceGroupManageStudentBuys(data) {
+export function practiceGroupManageStudentBuys (data) {
   return request({
     url: api + '/practiceGroupManage/studentBuys',
     method: 'get',
@@ -969,7 +969,7 @@ export function practiceGroupManageStudentBuys(data) {
 }
 
 // 修改网管课程组备注
-export function practiceUpdateMemo(data) {
+export function practiceUpdateMemo (data) {
   return request({
     url: api + '/practiceGroupManage/updateMemo',
     method: 'post',
@@ -978,7 +978,7 @@ export function practiceUpdateMemo(data) {
 }
 
 // 清除考情记录
-export function cleanAttendance(data) {
+export function cleanAttendance (data) {
   return request({
     url: api + '/courseSchedule/cleanAttendance',
     method: 'post',
@@ -987,7 +987,7 @@ export function cleanAttendance(data) {
 }
 
 // 批量加网管课  
-export function batchAddCourses(data) {
+export function batchAddCourses (data) {
   return request({
     url: api + '/courseSchedule/batchAddCourses',
     method: 'post',
@@ -996,16 +996,16 @@ export function batchAddCourses(data) {
 }
 
 // 关闭网管课 课程组
-export function cancelGroup(data) {
+export function cancelGroup (data) {
   return request({
     url: api + '/practiceGroupManage/cancelGroup',
     method: 'post',
-    data:qs.stringify(data)
+    data: qs.stringify(data)
   })
 }
 
 // 获取网管课可预约声部 getPracticeApplySubjects
-export function getPracticeApplySubjects(data) {
+export function getPracticeApplySubjects (data) {
   return request({
     url: api + '/practiceGroupManage/getPracticeApplySubjects',
     method: 'get',
@@ -1014,7 +1014,7 @@ export function getPracticeApplySubjects(data) {
 }
 
 // 网管课批量调整
-export function batchUpdateCourseSchedule(data) {
+export function batchUpdateCourseSchedule (data) {
   return request({
     url: api + '/courseSchedule/batchUpdateCourseSchedule',
     method: 'post',
@@ -1023,7 +1023,7 @@ export function batchUpdateCourseSchedule(data) {
 }
 
 // 评论管理
-export function getReviews(data) { 
+export function getReviews (data) {
   return request({
     url: api + '/practiceGroupManage/getReviews',
     method: 'get',
@@ -1032,7 +1032,7 @@ export function getReviews(data) {
 }
 
 // 评论详情 列表
-export function getGroupReviews(data) { 
+export function getGroupReviews (data) {
   return request({
     url: api + '/practiceGroupManage/getGroupReviews',
     method: 'get',
@@ -1040,7 +1040,7 @@ export function getGroupReviews(data) {
   })
 }
 //  评论详情 
-export function getReviewsInfo(data) { 
+export function getReviewsInfo (data) {
   return request({
     url: api + '/practiceGroupManage/getReviewsInfo',
     method: 'get',
@@ -1049,7 +1049,7 @@ export function getReviewsInfo(data) {
 }
 
 // 获取所有教务老师
-export function findEducationUsers(data) { 
+export function findEducationUsers (data) {
   return request({
     url: api + '/employee/findEducationUsers',
     method: 'get',
@@ -1058,7 +1058,7 @@ export function findEducationUsers(data) {
 }
 
 // 获取网管评论列表
-export function getPracticeGroup(data) { 
+export function getPracticeGroup (data) {
   return request({
     url: api + '/courseReview/getPracticeGroup',
     method: 'get',
@@ -1067,7 +1067,7 @@ export function getPracticeGroup(data) {
 }
 
 // 网管课评价详情
-export function getReviewInfo(data) { 
+export function getReviewInfo (data) {
   return request({
     url: api + '/courseReview/getReviewInfo',
     method: 'get',
@@ -1076,7 +1076,7 @@ export function getReviewInfo(data) {
 }
 
 // 教务评价详情 /eduCourseReview/getReviewInfo
-export function updateReviewInfo(data) { 
+export function updateReviewInfo (data) {
   return request({
     url: api + '/eduCourseReview/updateReviewInfo',
     method: 'get',
@@ -1085,7 +1085,7 @@ export function updateReviewInfo(data) {
 }
 
 // 获取老师和学生的评价 courseReview/getStuAndTeaReview
-export function getStuAndTeaReview(data) { 
+export function getStuAndTeaReview (data) {
   return request({
     url: api + '/courseReview/getStuAndTeaReview',
     method: 'get',
@@ -1094,7 +1094,7 @@ export function getStuAndTeaReview(data) {
 }
 
 // 网管课有效期调整
-export function updateCoursesExpireDate(data) { 
+export function updateCoursesExpireDate (data) {
   return request({
     url: api + '/courseSchedule/updateCoursesExpireDate',
     method: 'post',

+ 29 - 0
src/api/repairManager.js

@@ -0,0 +1,29 @@
+import request from '@/utils/request'
+import qs from 'qs'
+let api = '/api-web'
+
+export function findTechnician (data) {
+  return request({
+    url: api + '/employee/findTechnician',
+    method: 'get',
+    params: data
+  })
+}
+
+// studentRepair/queryPage
+export function studentRepairList (data) {
+  return request({
+    url: api + '/studentRepair/queryPage',
+    method: 'get',
+    params: data
+  })
+}
+
+// 完成维修
+export function repairSuccess (data) {
+  return request({
+    url: api + '/studentRepair/repairSuccess',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}

+ 2 - 0
src/router/index.js

@@ -291,5 +291,7 @@ export const asyncRoutes = {
   serverIndexList: () => import('@/views/operateManager/serverIndexList'),
   // 运营管理 服务指标详情
   serverIndexDetail: () => import('@/views/operateManager/serverIndexDetail'),
+  // 维修单列表
+  repairList: () => import('@/views/repairManager/repairList'),
 }
 export default router

+ 7 - 3
src/views/operateManager/serverIndexDetail.vue

@@ -133,11 +133,11 @@
                append-to-body
                :visible.sync="comVisible">
       <!-- activeUrl -->
-      <audio controls
+      <audio id='audio'
+             controls
              style="width:640px;"
              :src="comUrl"
-             ref="dialogVideo"
-             controls="controls">您的浏览器不支持视频播放</audio>
+             ref="dialogVideo">您的浏览器不支持视频播放</audio>
     </el-dialog>
   </div>
 </template>
@@ -271,7 +271,11 @@ export default {
       }
     },
     comVisible (val) {
+
       if (!val) {
+        let audio = document.querySelector('#audio');
+        audio.pause();
+        audio.currentTime = 0;
         this.comUrl = null
       }
     },

+ 279 - 16
src/views/repairManager/repairList.vue

@@ -2,7 +2,7 @@
 <template>
   <div class="m-container">
     <h2>
-      <div class="squrt"></div>名字
+      <div class="squrt"></div>维修单列表
     </h2>
     <div class="m-core">
       <el-form :inline="true"
@@ -10,7 +10,75 @@
         <el-form-item>
           <el-input v-model.trim="searchForm.search"
                     @keyup.enter.native="search"
-                    placeholder></el-input>
+                    placeholder='维修单号/学生姓名/编号'></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-select placeholder="维修技师"
+                     v-model="searchForm.employeeId"
+                     clearable
+                     filterable>
+            <el-option v-for="(item,index) in employeeList"
+                       :label="item.userName"
+                       :value="item.userId"
+                       :key="index"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select placeholder="请选择分部"
+                     v-model="searchForm.organIdList"
+                     clearable>
+            <el-option v-for="(item,index) in organList"
+                       :label="item.name"
+                       :value="item.id"
+                       :key="index"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select placeholder="请选择乐器类型"
+                     v-model="searchForm.subjectId"
+                     clearable
+                     filterable>
+            <el-option v-for="(item,index) in soundLists"
+                       :label="item.name"
+                       :value="item.id"
+                       :key="index"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select placeholder="维修状态"
+                     v-model="searchForm.repairStatus"
+                     clearable>
+            <el-option label="已完成"
+                       value="1"></el-option>
+            <el-option label="维修中"
+                       value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select placeholder="维修类型"
+                     v-model="searchForm.type"
+                     clearable>
+            <el-option label="线上"
+                       value="1"></el-option>
+            <el-option label="线下"
+                       value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <br />
+        <el-form-item label="送修日期">
+          <el-date-picker v-model.trim="searchForm.timer"
+                          style="width:400px;"
+                          type="daterange"
+                          value-format="yyyy-MM-dd"
+                          range-separator="至"
+                          start-placeholder="布置开始日期"
+                          end-placeholder="布置结束日期"></el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="danger"
+                     @click="search">搜索</el-button>
+          <el-button @click="onReSet"
+                     type="primary">重置</el-button>
         </el-form-item>
       </el-form>
       <div class="tableWrap">
@@ -18,8 +86,52 @@
                   :header-cell-style="{background:'#EDEEF0',color:'#444'}"
                   :data="tableList">
           <el-table-column align="center"
-                           prop="studentId"
+                           prop="organName"
                            label="分部"></el-table-column>
+          <el-table-column align="center"
+                           prop="transNo"
+                           label="维修单号"
+                           width="160"></el-table-column>
+          <el-table-column align="center"
+                           prop="studentName"
+                           label="学生姓名"></el-table-column>
+          <el-table-column align="center"
+                           prop="studentId"
+                           label="学生编号"></el-table-column>
+          <el-table-column align="center"
+                           prop="employeeName"
+                           label="维修技师"></el-table-column>
+          <el-table-column align="center"
+                           prop="subjectName"
+                           label="乐器种类"></el-table-column>
+          <el-table-column align="center"
+                           prop="type"
+                           label="维修类型">
+            <template slot-scope="scope">{{scope.row.type?'线上':'线下'}}</template>
+          </el-table-column>
+          <el-table-column align="center"
+                           prop="instrumentNo"
+                           label="乐器编号"></el-table-column>
+          <el-table-column align="center"
+                           prop="createTime"
+                           label="送修日期">
+            <template slot-scope="scope">{{scope.row.createTime | formatTimer}}</template>
+          </el-table-column>
+          <el-table-column align="center"
+                           prop="finishTime"
+                           label="完成日期">
+            <template slot-scope="scope">{{scope.row.finishTime | formatTimer}}</template></el-table-column>
+          <el-table-column align="center"
+                           prop="repairStatus"
+                           label="状态">
+            <template slot-scope="scope">{{scope.row.repairStatus?'已完成':'维修中'}}</template></el-table-column>
+          <el-table-column align="center"
+                           label="操作">
+            <template slot-scope="scope">
+              <el-button type="text"
+                         @click="showDetail(scope.row)">详情</el-button>
+            </template>
+          </el-table-column>
         </el-table>
         <pagination :total="rules.total"
                     :page.sync="rules.page"
@@ -28,6 +140,64 @@
                     @pagination="getList" />
       </div>
     </div>
+    <el-dialog title="维修单详情"
+               :close-on-click-modal="false"
+               :visible.sync="repairVisible"
+               width="600px">
+      <el-form :model="visibleForm">
+        <el-form-item label="维修单号:">
+          <p v-if="activeRow"
+             class="visibleCell">{{activeRow.transNo}}</p>
+        </el-form-item>
+        <el-form-item label="乐器编号:">
+          <p v-if="activeRow"
+             class="visibleCell">{{activeRow.instrumentNo}}</p>
+        </el-form-item>
+        <el-form-item label="学生姓名:">
+          <p v-if="activeRow"
+             class="visibleCell">{{activeRow.studentName}}</p>
+        </el-form-item>
+        <el-form-item label="归属乐团:">
+          <p v-if="activeRow"
+             class="visibleCell">{{activeRow.studentSchool}}</p>
+        </el-form-item>
+        <el-form-item label="联系人:">
+          <p v-if="activeRow"
+             class="visibleCell">{{activeRow.contactName}}</p>
+        </el-form-item>
+        <el-form-item label="联系方式:">
+          <p v-if="activeRow"
+             class="visibleCell">{{activeRow.contactMobile}}</p>
+        </el-form-item>
+        <el-form-item label="邮寄地址:">
+          <p v-if="activeRow"
+             class="visibleCell">{{activeRow.address}}</p>
+        </el-form-item>
+        <el-form-item label="取件方式:">
+          <p v-if="activeRow"
+             class="visibleCell">{{activeRow.sendType=='0'?'自取':'邮寄'}}</p>
+        </el-form-item>
+        <el-form-item label="问题描述及解决方案:"
+                      style="margin-bottom:5px;">
+
+        </el-form-item>
+        <el-input type='textarea'
+                  v-if="activeRow"
+                  :rows="3"
+                  v-model="activeRow.description"
+                  :disabled="activeRow&&activeRow.finishTime"></el-input>
+
+      </el-form>
+      <span slot="footer"
+            class="dialog-footer">
+        <el-button type="danger"
+                   v-if="!(activeRow&&activeRow.finishTime)"
+                   @click="repairEnd('save',activeRow)">保存</el-button>
+        <el-button type="primary"
+                   v-if="!(activeRow&&activeRow.finishTime)"
+                   @click="repairEnd('end',activeRow)">完成维修</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -36,16 +206,22 @@ import axios from "axios";
 import { getToken } from "@/utils/auth";
 import pagination from "@/components/Pagination/index";
 import load from "@/utils/loading";
-import { getTeacher, getEmployeeOrgan } from "@/api/buildTeam";
-
+import { getTeacher, getEmployeeOrgan, getSoundTree } from "@/api/buildTeam";
+import { findTechnician, studentRepairList, repairSuccess } from "@/api/repairManager"
 export default {
   components: { pagination },
   data () {
     return {
       searchForm: {
-        search: null
+        search: null,
+        employeeId: null,
+        organIdList: null,
+        repairStatus: null,
+        subjectId: null,
+        time: []
       },
-      teacherList: [],
+      repairVisible: false,
+      employeeList: [],
       tableList: [],
       organList: [],
       rules: {
@@ -55,16 +231,20 @@ export default {
         total: 0, // 总条数
         page_size: [10, 20, 40, 50] // 选择限制显示条数
       },
-      isInit: false
+      soundLists: [],
+      soundList: [],
+      isInit: false,
+      visibleForm: {},
+      activeRow: null
     };
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   created () { },
   //生命周期 - 挂载完成(可以访问DOM元素)
   mounted () {
-    getTeacher().then(res => {
+    findTechnician().then(res => {
       if (res.code == 200) {
-        this.teacherList = res.data;
+        this.employeeList = res.data;
       }
     });
     getEmployeeOrgan().then(res => {
@@ -72,25 +252,108 @@ export default {
         this.organList = res.data;
       }
     });
-    // 获取分部
-    if (!isInit) {
+    // 获取声部
+    getSoundTree({ tenantId: 1, rows: 9999 }).then(res => {
+      if (res.code == 200) {
+        if (res.code == 200) {
+          this.soundList = res.data.rows;
+          this.getSound();
+        }
+      }
+    })
+    if (!this.isInit) {
       this.init();
     }
 
   },
   activated () {
-    if (!isInit) {
+    if (!this.isInit) {
       this.init();
     }
   },
   methods: {
     init () {
-      this.init = true;
-      this.init = false;
+      this.isInit = true;
+      this.getList()
+
     },
-    getList () { }
+    getList () {
+      let obj = JSON.parse(JSON.stringify(this.searchForm));
+      obj.page = this.rules.page;
+      obj.rows = this.rules.limit;
+      if (this.searchForm.timer && this.searchForm.timer.length > 0) {
+        obj.startTime = this.searchForm.timer[0];
+        obj.endTime = this.searchForm.timer[1];
+      }
+      delete obj.timer;
+      studentRepairList(obj).then(res => {
+        if (res.code == 200) {
+          this.isInit = false;
+          this.tableList = res.data.rows;
+          this.rules.total = res.data.total
+        }
+      })
+    },
+    getSound () {
+      // soundLists
+      // soundList
+      this.soundLists = [];
+      for (let i in this.soundList) {
+        if (this.soundList[i].subjects.length > 0) {
+          this.soundLists = this.soundLists.concat(this.soundList[i].subjects)
+        }
+      }
+    },
+    onReSet () {
+      this.searchForm = {
+        search: null,
+        employeeId: null,
+        organIdList: null,
+        repairStatus: null,
+        subjectId: null,
+        time: []
+      }
+      this.search();
+    },
+    search () {
+      this.rules.page = 1;
+      this.getList()
+    },
+    showDetail (row) {
+      this.repairVisible = true;
+      this.activeRow = row;
+    },
+    repairEnd (str, row) {
+      console.log(row)
+      let repairStatus = null;
+      if (str && str == 'end') {
+        repairStatus = 1
+      }
+      repairSuccess({ repairStatus: repairStatus, id: row.id, description: row.description }).then(res => {
+        if (res.code == 200) {
+          if (str && str == 'end') {
+            this.$message.success('完成维修')
+          } else {
+            this.$message.success('保存成功')
+          }
+          this.repairVisible = false;
+          this.getList();
+        }
+      })
+    }
+
+  },
+  watch: {
+    repairVisible (val) {
+      if (!val) {
+        this.activeRow = null;
+      }
+    }
   }
 };
 </script>
 <style lang='scss' scoped>
+.visibleCell {
+  // width: 180px;
+}
 </style>