dedsudiyu 1 年之前
父节点
当前提交
178073fbc0

+ 87 - 0
src/api/trainingCourse/index.js

@@ -0,0 +1,87 @@
+import request from '@/utils/request'
+
+// 获取培训课程列表
+export function securitycourseList(query) {
+  return request({
+    url: '/exam/securitycourse/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 获取培训课程详情
+export function securitycourseInfo(id) {
+  return request({
+    url: '/exam/securitycourse/'+id,
+    method: 'get',
+  })
+}
+
+//获取详情学生列表
+export function singList(query) {
+  return request({
+    url: '/exam/securitycourse/singList/',
+    method: 'get',
+    params: query
+  })
+}
+
+//新增课程
+export function securitycourseAdd(data) {
+  return request({
+    url: '/exam/securitycourse/',
+    method: 'post',
+    data: data
+  })
+}
+
+//编辑课程
+export function securitycourseEdit(data) {
+  return request({
+    url: '/exam/securitycourse/edit',
+    method: 'post',
+    data: data
+  })
+}
+
+//删除课程
+export function securitycourseDel(id) {
+  return request({
+    url: '/exam/securitycourse/'+id,
+    method: 'delete',
+  })
+}
+
+// 查询老师列表
+export function selectUser(query) {
+  return request({
+    url: '/system/user/teacher/selectUser',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询学院列表
+export function departmentsList(query) {
+  return request({
+    url: '/system/dept/departments/list',
+    method: 'get',
+    params: query
+  })
+}
+// 查询实验室列表
+export function subListAdmin(query) {
+  return request({
+    url: '/laboratory/subject/list/listAdmin',
+    method: 'get',
+    params: query
+  })
+}
+// 查询学生列表
+export function findUserList(data) {
+  return request({
+    url: '/system/user/findStudenList',
+    method: 'post',
+    data: data
+  })
+}

+ 143 - 0
src/components/qrCodeDialog/index.vue

@@ -0,0 +1,143 @@
+<!--  公共二维码dialog组件
+
+1.引入方式
+
+  <qr-code-dialog v-if="qrCodeDialogType" :qrCodeDialogData="qrCodeDialogData"></qr-code-dialog>
+
+  import qrCodeDialog from "@/components/qrCodeDialog/index.vue"
+
+  components: {
+    qrCodeDialog
+  },
+
+2.必要参数
+
+  qrCodeDialogType:false,
+  qrCodeDialogData:{},
+
+3.必要方法
+
+  //二维码组件开关
+  qrCodeDialogButton(type,id,name){
+    if(type == 1){
+      this.$set(this,'qrCodeDialogType',true);
+      this.$set(this,'qrCodeDialogData',{
+        identification:'zdznkj',          //二维码标识 用于识别是否是本系统的二维码
+        type:'chemicalsCabinet',          //二维码类型 用于区分二维码功能类型
+        parameter:id,                     //二维码参数
+        name:name,                        //二维码名称用于下载时命名
+      });
+    }else{
+      this.$set(this,'qrCodeDialogType',false);
+    }
+  },
+
+-->
+
+<template>
+  <div>
+    <!--添加/编辑弹窗-->
+    <el-dialog class="trainingCourseAddDialog" title=' 1'
+               :show-close="false" :close-on-click-modal="false" :close-on-press-escape="false"
+               :visible.sync="dialogType" v-if="dialogType" width="394px">
+      <div class="trainingCourseAddDialog-title-box">
+        <p></p>
+        <p class="el-icon-close" @click="buttonClick"></p>
+      </div>
+      <vue-qr v-if="vueQrImgType" ref="vueQr" class="trainingCourseAddDialog-vue-qr" :text="vueQrCodeData" :size="200"></vue-qr>
+      <p class="trainingCourseAddDialog-button-p" @click="buttonClick(1)">下载二维码</p>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import vueQr from 'vue-qr'
+  export default {
+    name: 'qrCodeDialog',
+    components: {
+      vueQr
+    },
+    props:{
+      qrCodeDialogData:{},
+    },
+    data(){
+      return{
+        dialogType:true,
+        vueQrCodeData:null,
+        vueQrImgType:false,
+      }
+    },
+    created(){
+
+    },
+    mounted(){
+      this.initialize();
+    },
+    methods:{
+      //初始化
+      initialize(){
+        this.$set(this,'vueQrCodeData',
+        this.qrCodeDialogData.identification+'_'+this.qrCodeDialogData.type+'_'+this.qrCodeDialogData.parameter);
+        this.$set(this,'vueQrImgType',true);
+      },
+      buttonClick(type){
+        if(type == 1){
+          let base64Str = this.$refs.vueQr.imgUrl;
+          let aLink = document.createElement("a");
+          aLink.style.display = "none";
+          aLink.href = base64Str;
+          aLink.download = this.qrCodeDialogData.name+"-二维码.png";
+          document.body.appendChild(aLink);
+          aLink.click();
+          document.body.removeChild(aLink);
+        }else{
+          this.$parent.qrCodeDialogButton();
+        }
+      },
+    },
+  }
+</script>
+
+<style scoped lang="scss">
+  .trainingCourseAddDialog{
+    font-weight:500;
+    .trainingCourseAddDialog-title-box{
+      display: flex;
+      p:nth-child(1){
+        flex:1;
+      }
+      p:nth-child(2){
+        font-size:18px;
+        width:60px;
+        height:60px;
+        text-align: center;
+        line-height:60px;
+        color:#999;
+        cursor: pointer;
+      }
+    }
+    .trainingCourseAddDialog-vue-qr{
+      display: block!important;
+      height:200px;
+      width:200px;
+      margin:20px auto 27px;
+    }
+    .trainingCourseAddDialog-button-p{
+      width:150px;
+      height:40px;
+      line-height:40px;
+      margin:0 auto 30px;
+      color:#fff;
+      background:#0045AF;
+      border-radius:10px;
+      text-align: center;
+      cursor: pointer;
+    }
+    ::v-deep .el-dialog__header{
+      display: none;
+    }
+    ::v-deep .el-dialog__body{
+      padding:0;
+    }
+  }
+</style>

+ 14 - 2
src/views/comprehensive/laboratoryManagement/subject/associationConfiguration.vue

@@ -136,7 +136,7 @@
         </el-form-item>
         </el-form-item>
         <el-form-item label="型号" :prop="'hazardRelations.'+ index +'.anotherCode'" :rules="rules.anotherCode"
         <el-form-item label="型号" :prop="'hazardRelations.'+ index +'.anotherCode'" :rules="rules.anotherCode"
                       class="form-item" label-width="60px">
                       class="form-item" label-width="60px">
-          <el-input placeholder="请输入型号"  maxlength="10" v-model="item.anotherCode"/>
+          <el-input placeholder="请输入型号" disabled maxlength="10" v-model="item.anotherCode"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="" class="form-item" label-width="20px">
         <el-form-item label="" class="form-item" label-width="20px">
           <span class="del-hazard el-icon-error" style="line-height:40px;font-size:24px;" @click="delHazard(index)"></span>
           <span class="del-hazard el-icon-error" style="line-height:40px;font-size:24px;" @click="delHazard(index)"></span>
@@ -190,7 +190,7 @@
         </el-form-item>
         </el-form-item>
         <el-form-item label="型号" :prop="'hazardRelations.'+ index +'.anotherCode'" :rules="rules.anotherCode"
         <el-form-item label="型号" :prop="'hazardRelations.'+ index +'.anotherCode'" :rules="rules.anotherCode"
                       class="form-item" label-width="60px">
                       class="form-item" label-width="60px">
-          <el-input placeholder="请输入型号"  maxlength="10" v-model="item.anotherCode"/>
+          <el-input placeholder="请输入型号" disabled maxlength="10" v-model="item.anotherCode"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="" class="form-item" label-width="20px">
         <el-form-item label="" class="form-item" label-width="20px">
           <span class="del-hazard el-icon-error" style="line-height:40px;font-size:24px;" @click="delHazard(index)"></span>
           <span class="del-hazard el-icon-error" style="line-height:40px;font-size:24px;" @click="delHazard(index)"></span>
@@ -444,6 +444,18 @@
               this.msgError('穿戴检查识别上限不能小于2')
               this.msgError('穿戴检查识别上限不能小于2')
               return
               return
             }
             }
+            for(let i=0;i<self.form.hazardRelations.length;i++){
+              let num = 0;
+              for(let o=0;o<self.form.hazardRelations.length;o++){
+                if(self.form.hazardRelations[i].anotherName == self.form.hazardRelations[o].anotherName){
+                  num++
+                }
+                if(num > 1){
+                  this.msgError('危险源名称重复:'+self.form.hazardRelations[i].anotherName);
+                  return
+                }
+              }
+            }
             self.$confirm('是否确认提交?', "", {
             self.$confirm('是否确认提交?', "", {
               confirmButtonText: "确定",
               confirmButtonText: "确定",
               cancelButtonText: "取消",
               cancelButtonText: "取消",

+ 166 - 0
src/views/medicUniversity-3_1/chemicalManagement/chemicalInventory/index.vue

@@ -0,0 +1,166 @@
+<template>
+  <div class="app-container chemicalManagement">
+    <div class="chemicalManagement-page" v-if="pageType == 1">
+      <div class="title-box">
+        <el-form class="form-box" :model="queryParams" ref="examineForm" :inline="true">
+          <el-form-item label="关键字" prop="name" label-width="80px">
+            <el-input
+              maxlength="10"
+              v-model="queryParams.searchValue"
+              placeholder="课程名称/主讲老师"
+              clearable
+              size="small"/>
+          </el-form-item>
+          <el-form-item label="启动条件" prop="deptId">
+            <el-select v-model="queryParams.deptId" placeholder="请选择启动条件" clearable size="small">
+              <el-option
+                v-for="dict in deptOptions"
+                :key="dict.code"
+                :label="dict.name"
+                :value="dict.name"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="创建时间">
+            <el-date-picker
+            :clearable="false"
+            v-model="dateRange"
+            size="small"
+            style="width: 240px"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            ></el-date-picker>
+          </el-form-item>
+          <el-form-item>
+            <p class="inquire-button-one" @click="onSearch">查询</p>
+            <p class="reset-button-one" @click="resetForm">重置</p>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="content-box">
+        <el-table border :data="tableData" ref="multipleTable" @sort-change="sortChange">
+          <el-table-column label="序号"  width="50" align="center"  type="index"/>
+          <el-table-column label="标题" prop="courseName" show-overflow-tooltip/>
+          <el-table-column label="学院" prop="place" width="200" show-overflow-tooltip/>
+          <el-table-column label="楼栋" prop="place" width="180" show-overflow-tooltip/>
+          <el-table-column label="实验室" prop="place" width="200" show-overflow-tooltip/>
+          <el-table-column label="备注" prop="place" width="250" show-overflow-tooltip/>
+          <el-table-column label="盘点人" prop="place" width="120" show-overflow-tooltip/>
+          <el-table-column label="盘点时间" prop="inventoryTime" width="200" sortable="custom" show-overflow-tooltip/>
+          <el-table-column label="操作" width="100">
+            <template slot-scope="scope">
+              <div class="table-button-box">
+                <p class="table-button-null"></p>
+                <p class="table-button-p" @click="controlsButton(2,scope.row)">详情</p>
+                <p class="table-button-null"></p>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+        <pagination :page-sizes="[20, 30, 40, 50]" v-show="total>0" :total="total"
+                    layout="total, prev, pager, next, sizes, jumper"
+                    :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
+                    @pagination="getList"/>
+      </div>
+    </div>
+    <info-page v-if="pageType == 2" :infoDataProps="infoDataProps"></info-page>
+  </div>
+</template>
+
+<script>
+  import infoPage from './infoPage.vue'
+  export default {
+    name: 'chemicalManagement',
+    components: {
+      infoPage
+    },
+    data(){
+      return{
+        pageType:1,
+        deptOptions:[],
+        queryParams:{
+          pageNum:1,
+          pageSize:20,
+          searchValue:"",
+          deptId:"",
+        },
+        dateRange:[],
+        tableData:[{}],
+        total:0,
+        infoDataProps:{},
+      }
+    },
+    created(){},
+    mounted(){},
+    methods:{
+      //搜索
+      onSearch(){
+        this.$set(this.queryParams,'pageNum',1);
+        this.getList();
+      },
+      //重置
+      resetForm(){
+        this.$set(this,'dateRange',[]);
+        this.$set(this,'queryParams',{
+          pageNum:1,
+          pageSize:20,
+          searchValue:"",
+          deptId:"",
+        });
+        this.getList();
+      },
+      //查询列表
+      getList(){
+
+      },
+      //时间排序方法
+      sortChange(val){
+        if(val.prop == 'inventoryTime'){
+          this.$set(this.queryParams,'zgTimeOrder',val.order=='ascending'?'1':(val.order=='descending'?'2':''));
+          this.onSearch();
+        }
+      },
+      //详情
+      controlsButton(type,row){
+        if(type == 1){
+          this.$set(this,'pageType',1);
+        }else if(type == 2){
+          this.$set(this,'pageType',2);
+          this.$set(this,'infoDataProps',row);
+        }
+      },
+    }
+  }
+</script>
+
+<style scoped lang="scss">
+  .chemicalManagement{
+    flex:1;
+    display: flex!important;
+    flex-direction: column;
+    overflow: hidden;
+    font-weight: 500;
+    .chemicalManagement-page{
+      flex:1;
+      display: flex!important;
+      flex-direction: column;
+      overflow: hidden;
+      .title-box{
+        padding-top:20px;
+        .form-box{
+          border-bottom:1px solid #E0E0E0;
+        }
+      }
+      .content-box{
+        flex:1;
+        overflow: hidden;
+        display: flex;
+        flex-direction: column;
+        padding:20px;
+      }
+    }
+  }
+</style>

+ 169 - 0
src/views/medicUniversity-3_1/chemicalManagement/chemicalInventory/infoPage.vue

@@ -0,0 +1,169 @@
+<template>
+  <div class="chemicalInventory-info-page">
+    <div class="title-box">
+      <p>盘点详情</p>
+      <p class="reset-button-one" @click="outButton">返回</p>
+    </div>
+    <div class="info-text-box">
+      <div class="info-text-min-box">
+        <div>
+          <p>标题:</p>
+          <p>{{infoData.data1}}</p>
+        </div>
+        <div>
+          <p>盘点人:</p>
+          <p>{{infoData.data2}}</p>
+        </div>
+        <div>
+          <p>盘点时间:</p>
+          <p>{{infoData.data3}}</p>
+        </div>
+      </div>
+      <div class="info-text-min-box">
+        <div>
+          <p>所属部门:</p>
+          <p>{{infoData.data4}}</p>
+        </div>
+        <div>
+          <p>楼栋:</p>
+          <p>{{infoData.data5}}</p>
+        </div>
+        <div>
+          <p>实验室:</p>
+          <p>{{infoData.data6}}</p>
+        </div>
+      </div>
+      <div class="info-text-min-box">
+        <div>
+          <p>盘点类型:</p>
+          <p>{{infoData.data7==1?'按照实验室盘点':'按照化学品柜盘点'}}</p>
+        </div>
+      </div>
+    </div>
+    <div class="table-data-list-box">
+      <el-table border :data="tableData" ref="multipleTable">
+        <el-table-column label="序号"  width="50" align="center"  type="index"/>
+        <el-table-column label="化学品" prop="courseName" show-overflow-tooltip/>
+        <el-table-column label="CAS号" prop="place" width="130" show-overflow-tooltip/>
+        <el-table-column label="学院" prop="place" width="200" show-overflow-tooltip>
+          <template slot-scope="scope">
+          </template>
+        </el-table-column>
+        <el-table-column label="楼栋" prop="place" width="150" show-overflow-tooltip>
+          <template slot-scope="scope">
+          </template>
+        </el-table-column>
+        <el-table-column label="实验室" prop="place" width="200" show-overflow-tooltip>
+          <template slot-scope="scope">
+          </template>
+        </el-table-column>
+        <el-table-column label="盘点结果" prop="place" width="230" show-overflow-tooltip v-if="infoData.data7 == 1"/>
+        <el-table-column label="化学品柜" prop="place" width="140" show-overflow-tooltip v-if="infoData.data7 == 2"/>
+        <el-table-column label="盘点结果" prop="place" width="160" show-overflow-tooltip v-if="infoData.data7 == 2"/>
+        <el-table-column label="备注" prop="inventoryTime" width="120" show-overflow-tooltip/>
+        <el-table-column label="结果" prop="inventoryTime" width="80" show-overflow-tooltip>
+          <template slot-scope="scope">
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination :page-sizes="[20, 30, 40, 50]" v-show="total>0" :total="total"
+                  layout="total, prev, pager, next, sizes, jumper"
+                  :page.sync="pageNum" :limit.sync="pageSize"
+                  @pagination="getList"/>
+    </div>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'infoPage',
+    props:{
+      infoDataProps:{},
+    },
+    data(){
+      return{
+        infoData:{
+          data1:"530化学品盘点",
+          data2:"张老师",
+          data3:"2023-10-26  09:30",
+          data4:"环境与测绘学院",
+          data5:"楼栋名称",
+          data6:"大气污染实验室",
+          data7:"1",
+        },
+        tableData:[{}],
+        total:10,
+        pageNum:1,
+        pageSize:20,
+      }
+    },
+    created(){
+
+    },
+    mounted(){
+
+    },
+    methods:{
+      outButton(){
+        this.$parent.controlsButton(1)
+      },
+    }
+  }
+</script>
+
+<style scoped lang="scss">
+  .chemicalInventory-info-page{
+    flex:1;
+    display: flex!important;
+    flex-direction: column;
+    overflow: hidden;
+    .title-box{
+      display: flex;
+      p:nth-child(1){
+        flex:1;
+        line-height:80px;
+        padding-left:20px;
+        color:#0045AF;
+        font-size:16px;
+      }
+      p:nth-child(2){
+        margin:20px;
+        width:90px;
+      }
+      border-bottom:1px solid #E0E0E0;
+    }
+    .info-text-box{
+      padding:36px 80px 0;
+      .info-text-min-box{
+        display: flex;
+        div{
+          flex:1;
+          font-size:16px;
+          display: flex;
+          margin-bottom:36px;
+          p{
+            line-height:20px;
+          }
+          p:nth-child(1){
+            width:80px;
+            text-align: right;
+            margin-right:10px;
+          }
+          p:nth-child(2){
+            flex:1;
+          }
+        }
+      }
+    }
+    .table-data-list-box{
+      flex:1;
+      display: flex!important;
+      flex-direction: column;
+      overflow: hidden;
+      margin:0 80px;
+      .abnormalColor{
+        color:#FF7300
+      }
+    }
+  }
+</style>

+ 27 - 3
src/views/medicUniversity-3_1/chemicalManagement/chemicalLibrary/CabinetManagement/index.vue

@@ -79,7 +79,8 @@
                 <p class="table-button-p">更多>></p>
                 <p class="table-button-p">更多>></p>
                 <el-dropdown-menu slot="dropdown">
                 <el-dropdown-menu slot="dropdown">
                   <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;" :command="{row:scope.row,command:1}" v-hasPermiAnd="['chemical:hxpCabinet:query','chemical:hxpCabinet:edit']">编辑</el-dropdown-item>
                   <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;" :command="{row:scope.row,command:1}" v-hasPermiAnd="['chemical:hxpCabinet:query','chemical:hxpCabinet:edit']">编辑</el-dropdown-item>
-                  <el-dropdown-item style="margin:0 10px;" :command="{row:scope.row,command:2}" v-hasPermi="['chemical:hxpCabinet:remove']">删除</el-dropdown-item>
+                  <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;" :command="{row:scope.row,command:2}" v-hasPermi="['chemical:hxpCabinet:remove']">删除</el-dropdown-item>
+                  <el-dropdown-item style="margin:0 10px;" :command="{row:scope.row,command:3}">二维码</el-dropdown-item>
                 </el-dropdown-menu>
                 </el-dropdown-menu>
               </el-dropdown>
               </el-dropdown>
               <p class="table-button-null"></p>
               <p class="table-button-null"></p>
@@ -101,6 +102,7 @@
     <list-page v-if="pageType == 3" :listPropsData="listPropsData"></list-page>
     <list-page v-if="pageType == 3" :listPropsData="listPropsData"></list-page>
     <!--智能锁-->
     <!--智能锁-->
     <smart-lock v-if="pageType == 4" :smartLockPropsData="smartLockPropsData"></smart-lock>
     <smart-lock v-if="pageType == 4" :smartLockPropsData="smartLockPropsData"></smart-lock>
+    <qr-code-dialog v-if="qrCodeDialogType" :qrCodeDialogData="qrCodeDialogData"></qr-code-dialog>
   </div>
   </div>
 </template>
 </template>
 
 
@@ -110,12 +112,14 @@
   import addPage from "./addPage.vue"
   import addPage from "./addPage.vue"
   import listPage from "./listPage.vue"
   import listPage from "./listPage.vue"
   import smartLock from "./smartLock.vue"
   import smartLock from "./smartLock.vue"
+  import qrCodeDialog from "@/components/qrCodeDialog/index.vue"
   export default {
   export default {
     name: "CabinetManagement",
     name: "CabinetManagement",
     components: {
     components: {
       addPage,
       addPage,
       listPage,
       listPage,
-      smartLock
+      smartLock,
+      qrCodeDialog
     },
     },
     data() {
     data() {
       return {
       return {
@@ -147,7 +151,10 @@
         //化学品页面传参
         //化学品页面传参
         listPropsData:{},
         listPropsData:{},
         //智能锁页面传参
         //智能锁页面传参
-        smartLockPropsData:{}
+        smartLockPropsData:{},
+        //二维码组件参数
+        qrCodeDialogType:false,
+        qrCodeDialogData:{},
       };
       };
     },
     },
     created() {
     created() {
@@ -184,6 +191,23 @@
             });
             });
           }).then(() => {
           }).then(() => {
           }).catch(() => {});
           }).catch(() => {});
+        }else if(data.command == 3){
+          console.log('二维码')
+          this.qrCodeDialogButton(1,data.row.id,data.row.cabinetName)
+        }
+      },
+      //二维码组件开关
+      qrCodeDialogButton(type,id,name){
+        if(type == 1){
+          this.$set(this,'qrCodeDialogType',true);
+          this.$set(this,'qrCodeDialogData',{
+            identification:'zdznkj',          //二维码标识 用于识别是否是本系统的二维码
+            type:'chemicalsCabinet',          //二维码类型 用于区分二维码功能类型
+            parameter:id,                     //二维码参数
+            name:name,                        //二维码名称用于下载时命名
+          });
+        }else{
+          this.$set(this,'qrCodeDialogType',false);
         }
         }
       },
       },
       //启用/停用
       //启用/停用

+ 235 - 68
src/views/safetyEducationExam/trainingCourse/addDialog.vue

@@ -5,14 +5,16 @@
              :visible.sync="dialogType" v-if="dialogType" width="1373px">
              :visible.sync="dialogType" v-if="dialogType" width="1373px">
     <!--提交界面-->
     <!--提交界面-->
     <el-form class="add-dialog-form-box" ref="dialogForm" v-show="!dialogUserType" :model="dialogForm" :rules="rules" label-width="120px">
     <el-form class="add-dialog-form-box" ref="dialogForm" v-show="!dialogUserType" :model="dialogForm" :rules="rules" label-width="120px">
-      <el-form-item label="课程名称:" prop="data1">
-        <el-input v-model="dialogForm.data1" placeholder="请输入课程名称" maxLength="15" style="width:800px;"/>
+      <el-form-item label="课程名称:" prop="courseName">
+        <el-input v-model="dialogForm.courseName" placeholder="请输入课程名称"
+                  maxLength="30" style="width:800px;"/>
       </el-form-item>
       </el-form-item>
       <div class="dialogFormFlex">
       <div class="dialogFormFlex">
-        <el-form-item label="主讲老师:" prop="data2">
+        <el-form-item label="主讲老师:" prop="lecturerId">
           <el-select
           <el-select
+            @change="lecturerIdChange"
             style="width:300px;"
             style="width:300px;"
-            v-model="dialogForm.data2"
+            v-model="dialogForm.lecturerId"
             filterable
             filterable
             remote
             remote
             reserve-keyword
             reserve-keyword
@@ -21,66 +23,76 @@
             :loading="loading">
             :loading="loading">
             <el-option
             <el-option
               v-for="item in mainTeacherOptions"
               v-for="item in mainTeacherOptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.label">
+              :key="item.userId"
+              :label="item.nickName"
+              :value="item.userId">
             </el-option>
             </el-option>
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
-        <el-form-item label="辅导老师:" prop="data3" label-width="200px">
+        <el-form-item label="辅导老师:" prop="tutorId" label-width="200px">
           <el-select
           <el-select
             style="width:300px;"
             style="width:300px;"
-            v-model="dialogForm.data3"
+            v-model="dialogForm.tutorId"
             multiple
             multiple
             filterable
             filterable
             remote
             remote
             reserve-keyword
             reserve-keyword
+            collapse-tags
+            :multiple-limit="3"
             placeholder="请输入姓名"
             placeholder="请输入姓名"
             :remote-method="getSecondaryTeacher"
             :remote-method="getSecondaryTeacher"
             :loading="loading">
             :loading="loading">
             <el-option
             <el-option
               v-for="item in secondaryTeacherOptions"
               v-for="item in secondaryTeacherOptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.label">
+              :key="item.userId"
+              :label="item.nickName"
+              :value="item.userId">
             </el-option>
             </el-option>
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
-        <el-form-item label="上课人员:" prop="data4" label-width="200px">
-          <p style="line-height:40px;color:#0183FA;cursor: pointer" @click="addUserButton">
-            已选择 ({{dialogForm.data4?dialogForm.data4.length:0}}人)
+        <el-form-item label="上课人员:" prop="userIds" label-width="200px">
+          <p style="line-height:40px;color:#0183FA;cursor: pointer;width:300px;" @click="addUserButton">
+            已选择 ({{dialogForm.userIds?dialogForm.userIds.length:0}}人)
           </p>
           </p>
         </el-form-item>
         </el-form-item>
       </div>
       </div>
       <div class="dialogFormFlex">
       <div class="dialogFormFlex">
-        <el-form-item label="上课场所:" prop="data5">
-          <el-select v-model="dialogForm.data5"
+        <el-form-item label="上课场所:" prop="placeId">
+          <el-select v-model="dialogForm.placeId"
+                     @change="deptChange"
                      style="width:300px;" placeholder="请选择学院">
                      style="width:300px;" placeholder="请选择学院">
             <el-option
             <el-option
-              @change="deptChange"
               v-for="item in deptOptions"
               v-for="item in deptOptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.label">
+              :key="item.deptId"
+              :label="item.deptName"
+              :value="item.deptId">
             </el-option>
             </el-option>
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
-        <el-form-item label="实验室:" prop="data6" label-width="200px">
-          <el-select v-model="dialogForm.data6" v-if="dialogForm.data7 == 1"
-                     style="width:300px;" placeholder="请选择实验室">
+        <el-form-item :label="dialogForm.selectType==1?'实验室:':'上课场所:'" prop="subId" label-width="200px">
+          <el-select
+            style="width:300px;"
+            v-if="dialogForm.selectType == 1"
+            v-model="dialogForm.subId"
+            filterable
+            remote
+            reserve-keyword
+            placeholder="请选择实验室"
+            :remote-method="getSubList"
+            :loading="loading">
             <el-option
             <el-option
               v-for="item in subOptions"
               v-for="item in subOptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.label">
+              :key="item.id"
+              :label="item.name"
+              :value="item.id">
             </el-option>
             </el-option>
           </el-select>
           </el-select>
-          <el-input v-model="dialogForm.data6" v-if="dialogForm.data7 == 2"
-                    placeholder="请输入上课场所" maxLength="15" style="width:300px;"/>
+          <el-input v-model="dialogForm.position" v-if="dialogForm.selectType == 2"
+                    placeholder="请输入上课场所" maxLength="20" style="width:300px;"/>
         </el-form-item>
         </el-form-item>
         <p class="inquire-button-one"
         <p class="inquire-button-one"
            style="margin-left:20px;width:140px;border-radius:4px;" @click="subTypeClick">
            style="margin-left:20px;width:140px;border-radius:4px;" @click="subTypeClick">
-          {{dialogForm.data7==1?'手动输入上课场所':(dialogForm.data7==2?'选择学校':'')}}
+          {{dialogForm.selectType==1?'手动输入上课场所':(dialogForm.selectType==2?'选择学校':'')}}
         </p>
         </p>
       </div>
       </div>
       <div class="dialogFormFlex">
       <div class="dialogFormFlex">
@@ -99,7 +111,7 @@
             placeholder="选择时间范围">
             placeholder="选择时间范围">
           </el-time-picker>
           </el-time-picker>
         </el-form-item>
         </el-form-item>
-        <el-form-item label="上课日期:" prop="courseDate" label-width="200px">
+        <el-form-item label="上课日期:" prop="courseDate" label-width="200px"  v-if="!dialogForm.id">
           <el-date-picker
           <el-date-picker
             style="width:300px;"
             style="width:300px;"
             value-format="yyyy-MM-dd"
             value-format="yyyy-MM-dd"
@@ -111,9 +123,19 @@
             end-placeholder="结束日期">
             end-placeholder="结束日期">
           </el-date-picker>
           </el-date-picker>
         </el-form-item>
         </el-form-item>
+        <el-form-item label="上课日期:" prop="courseDate" label-width="200px"  v-if="dialogForm.id">
+          <el-date-picker
+            style="width:300px;"
+            value-format="yyyy-MM-dd"
+            v-model="dialogForm.courseDate"
+            type="date"
+            :picker-options="pickerOptions"
+            placeholder="选择日期">
+          </el-date-picker>
+        </el-form-item>
       </div>
       </div>
-      <el-form-item label="课程内容:" prop="data8">
-        <el-input type="textarea" v-model="dialogForm.data8" resize="none" show-word-limit
+      <el-form-item label="课程内容:" prop="content">
+        <el-input type="textarea" v-model="dialogForm.content" resize="none" show-word-limit
                   :autosize="{ minRows: 10, maxRows: 10}" maxLength="100" placeholder="请输入处理描述"
                   :autosize="{ minRows: 10, maxRows: 10}" maxLength="100" placeholder="请输入处理描述"
                   style="width:1122px;"/>
                   style="width:1122px;"/>
       </el-form-item>
       </el-form-item>
@@ -230,7 +252,7 @@
 </template>
 </template>
 
 
 <script>
 <script>
-  import { findUserList } from '@/api/safetyCheck/index'
+  import { findUserList,selectUser,departmentsList,subListAdmin,securitycourseAdd,securitycourseEdit } from '@/api/trainingCourse/index'
   export default {
   export default {
     name: 'trainingCourseAddDialog',
     name: 'trainingCourseAddDialog',
     props:{
     props:{
@@ -248,7 +270,8 @@
         // 设置只能选择当前日期及之后的日期
         // 设置只能选择当前日期及之后的日期
         pickerOptions: {
         pickerOptions: {
           disabledDate(time) {
           disabledDate(time) {
-            return time.getTime() < Date.now() - 8.64e7;//如果没有后面的-8.64e7就是不可以选择今天的
+            const times = new Date(new Date().toLocaleDateString()).getTime() + 30 * 8.64e7 - 1
+            return time.getTime() < Date.now() - 8.64e7 || time.getTime() > times  // 如果没有后面的-8.64e7就是不可以选择今天的
           }
           }
         },
         },
         // 遮罩层
         // 遮罩层
@@ -258,15 +281,18 @@
         dialogUserType:false,
         dialogUserType:false,
         dialogTitle:"",
         dialogTitle:"",
         dialogForm:{
         dialogForm:{
-          data1:"",
-          data2:"",
-          data3:"",
-          data4:[],
-          data5:"",
-          data6:"",
-          data7:1,
-          data8:"",
-          courseTime:[new Date(2023, 1, 1, 0, 0), new Date(2023, 1, 1, 23, 59)],
+          courseName:"",
+          lecturerId:"",
+          lecturerName:"",
+          tutorId:"",
+          userIds:[],
+          placeId:"",
+          place:"",
+          subId:"",
+          position:"",
+          selectType:1,
+          content:"",
+          courseTime:["00:00","00:00"],
           courseDate:[],
           courseDate:[],
         },
         },
         //验证
         //验证
@@ -276,17 +302,17 @@
             { required: true, message: "请输入联系方式", validator: this.spaceJudgment, trigger: "blur" },
             { required: true, message: "请输入联系方式", validator: this.spaceJudgment, trigger: "blur" },
             { pattern:/^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(16[0-9])|(17[0,3,5-8])|(18[0-9])|(147))+\d{8}$/, message: "请输入正确的联系方式", trigger: "blur" }
             { pattern:/^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(16[0-9])|(17[0,3,5-8])|(18[0-9])|(147))+\d{8}$/, message: "请输入正确的联系方式", trigger: "blur" }
           ],
           ],
-          data1: [
+          courseName: [
             { required: true, message: "请输入课程名称", trigger: "blur" },
             { required: true, message: "请输入课程名称", trigger: "blur" },
             { required: true, message: "请输入课程名称", validator: this.spaceJudgment, trigger: "blur" }
             { required: true, message: "请输入课程名称", validator: this.spaceJudgment, trigger: "blur" }
           ],
           ],
-          data2: [
+          lecturerId: [
             { required: true, message: "请选择主讲老师", trigger: "blur" },
             { required: true, message: "请选择主讲老师", trigger: "blur" },
           ],
           ],
-          data4: [
+          userIds: [
             { required: true, message: "请选择上课人员", trigger: "blur" },
             { required: true, message: "请选择上课人员", trigger: "blur" },
           ],
           ],
-          data5: [
+          placeId: [
             { required: true, message: "请选择上课场所", trigger: "blur" },
             { required: true, message: "请选择上课场所", trigger: "blur" },
           ],
           ],
           courseTime: [
           courseTime: [
@@ -298,7 +324,7 @@
           ],
           ],
         },
         },
         //主要老师
         //主要老师
-        mainTeacherOptions:[{value:'1',label:"1"}],
+        mainTeacherOptions:[],
         //辅助老师
         //辅助老师
         secondaryTeacherOptions:[],
         secondaryTeacherOptions:[],
         //院系列表
         //院系列表
@@ -341,14 +367,69 @@
     methods:{
     methods:{
       //初始化
       //初始化
       initialize(){
       initialize(){
+        let self = this;
         this.$set(this,'dialogTitle',this.addDialogData.id?'编辑':'添加');
         this.$set(this,'dialogTitle',this.addDialogData.id?'编辑':'添加');
         if(this.addDialogData.id){
         if(this.addDialogData.id){
           //编辑数据
           //编辑数据
+          let obj = {
+            id:this.addDialogData.id,
+            courseName:this.addDialogData.courseName,
+            lecturerId:this.addDialogData.lecturerId,
+            lecturerName:this.addDialogData.lecturerName,
+            tutorId:'',
+            placeId:parseInt(this.addDialogData.placeId),
+            place:this.addDialogData.place,
+            content:this.addDialogData.content,
+            courseTime:[this.addDialogData.coStartTime,this.addDialogData.coEndTime],
+            courseDate:this.addDialogData.coStartDate,
+            userIds:[],
+          };
+          //处理主要老师列表
+          let mainTeacherList = [{userId:this.addDialogData.lecturerId,nickName:this.addDialogData.lecturerName}];
+          this.$set(this,'mainTeacherOptions',mainTeacherList);
+          //处理辅助老师列表
+          if(this.addDialogData.tutorId){
+            obj.tutorId = this.addDialogData.tutorId.split(',');
+            let userIdList = this.addDialogData.tutorId.split(',');
+            let nickNameList = this.addDialogData.tutorName.split(',');
+            let secondaryTeacherList = [];
+            for(let i=0;i<userIdList.length;i++){
+              secondaryTeacherList.push({userId:userIdList[i],nickName:nickNameList[i]})
+            }
+            this.$set(this,'secondaryTeacherOptions',secondaryTeacherList);
+          }
+          //处理实验室数据&手动输入场地
+          if(this.addDialogData.subId){
+            obj.subId = this.addDialogData.subId;
+            obj.position = "";
+            obj.selectType = 1;
+            //处理实验室列表
+            let subList = [{name:this.addDialogData.subName,id:this.addDialogData.subId}]
+            this.$set(this,'subOptions',subList);
+          }else{
+            if(this.addDialogData.position){
+              obj.subId = "";
+              obj.position = this.addDialogData.position;
+              obj.selectType = 2;
+            }else{
+              obj.subId = "";
+              obj.position = "";
+              obj.selectType = 1;
+            }
+          }
+          //处理学生数据
+          for(let i=0;i<self.addDialogData.userIds.length;i++){
+            obj.userIds.push({userId:self.addDialogData.userIds[i]})
+          }
+          //根据当前选择院系获取实验室列表
+          this.getSubList('',this.addDialogData.placeId)
+          this.$set(this,'dialogForm',obj);
         }
         }
         this.getDeptList();
         this.getDeptList();
       },
       },
       //提交按钮
       //提交按钮
       dialogSubmit(){
       dialogSubmit(){
+        let self = this;
         if(this.dialogUserType){
         if(this.dialogUserType){
           //选择人员页面
           //选择人员页面
           if(!this.dialogTableDataList[0]){
           if(!this.dialogTableDataList[0]){
@@ -356,13 +437,72 @@
             return
             return
           }
           }
           let userList = JSON.parse(JSON.stringify(this.dialogTableDataList))
           let userList = JSON.parse(JSON.stringify(this.dialogTableDataList))
-          this.$set(this.dialogForm,'data4',userList)
+          this.$set(this.dialogForm,'userIds',userList)
           this.$set(this,'dialogUserType',false)
           this.$set(this,'dialogUserType',false)
         }else{
         }else{
           //提交页面
           //提交页面
           this.$refs["dialogForm"].validate(valid => {
           this.$refs["dialogForm"].validate(valid => {
             if (valid) {
             if (valid) {
-              this.$parent.controlsButton(6)
+              if(this.dialogForm.id){
+                //编辑
+                let obj = {
+                  id:this.dialogForm.id,
+                  courseName:this.dialogForm.courseName,
+                  lecturerId:this.dialogForm.lecturerId,
+                  lecturerName:this.dialogForm.lecturerName,
+                  tutorId:this.dialogForm.tutorId+'',
+                  userIds:[],
+                  placeId:this.dialogForm.placeId,
+                  place:this.dialogForm.place,
+                  coStartTime:this.dialogForm.courseTime[0],
+                  coEndTime:this.dialogForm.courseTime[1],
+                  courseDate:[this.dialogForm.courseDate,this.dialogForm.courseDate],
+                  content:this.dialogForm.content,
+                  peopleCount:this.dialogForm.userIds.length,
+                }
+                if(this.dialogForm.selectType == 1){
+                  obj.subId = this.dialogForm.subId;
+                }else{
+                  obj.position = this.dialogForm.position;
+                }
+                for(let i=0;i<self.dialogForm.userIds.length;i++){
+                  obj.userIds.push(self.dialogForm.userIds[i].userId)
+                }
+                securitycourseEdit(obj).then(response => {
+                  this.msgSuccess(response.msg)
+                  this.$parent.controlsButton(6)
+                });
+              }else{
+                //提交
+                let obj = {
+                  courseName:this.dialogForm.courseName,
+                  lecturerId:this.dialogForm.lecturerId,
+                  lecturerName:this.dialogForm.lecturerName,
+                  tutorId:this.dialogForm.tutorId+'',
+                  userIds:[],
+                  placeId:this.dialogForm.placeId,
+                  place:this.dialogForm.place,
+                  coStartTime:this.dialogForm.courseTime[0],
+                  coEndTime:this.dialogForm.courseTime[1],
+                  courseDate:this.dialogForm.courseDate,
+                  content:this.dialogForm.content,
+                  peopleCount:this.dialogForm.userIds.length,
+                }
+                if(this.dialogForm.selectType == 1){
+                  obj.subId = this.dialogForm.subId;
+                }else{
+                  obj.position = this.dialogForm.position;
+                }
+                for(let i=0;i<self.dialogForm.userIds.length;i++){
+                  obj.userIds.push(self.dialogForm.userIds[i].userId)
+                }
+                securitycourseAdd(obj).then(response => {
+                  this.msgSuccess(response.msg)
+                  this.$parent.controlsButton(6)
+                });
+              }
+              console.log('dialogForm',this.dialogForm)
+
             }
             }
           })
           })
         }
         }
@@ -378,46 +518,73 @@
           this.$parent.controlsButton(5)
           this.$parent.controlsButton(5)
         }
         }
       },
       },
+      //主要老师选中
+      lecturerIdChange(val){
+        let self = this;
+        for(let i=0;i<self.mainTeacherOptions.length;i++){
+          if(self.mainTeacherOptions[i].userId == val){
+            this.$set(this.dialogForm,'lecturerName',self.mainTeacherOptions[i].nickName);
+          }
+        }
+      },
       //主要老师搜索
       //主要老师搜索
       getMainTeacher(query){
       getMainTeacher(query){
-        if(query != ''){
+        if(query.length > 1){
           this.loading = true;
           this.loading = true;
-          console.log('query',query)
-          this.$set(this,'mainTeacherOptions',[{value:'1',label:"11"}])
-          this.loading = false;
-          console.log('mainTeacherOptions',this.mainTeacherOptions)
+          selectUser({userType:11,nickName:query}).then(response => {
+            this.$set(this,'mainTeacherOptions',response.data)
+            this.loading = false;
+          });
         }
         }
       },
       },
       //辅助老师搜错
       //辅助老师搜错
       getSecondaryTeacher(query){
       getSecondaryTeacher(query){
-        if(query != ''){
-          console.log('1')
+        if(query.length > 1){
           this.loading = true;
           this.loading = true;
-          this.$set(this,'secondaryTeacherOptions',[{value:'2',label:"22"}])
-          this.loading = false;
+          selectUser({userType:11,nickName:query}).then(response => {
+            this.$set(this,'secondaryTeacherOptions',response.data)
+            this.loading = false;
+          });
         }
         }
       },
       },
       //选择院系
       //选择院系
       deptChange(val){
       deptChange(val){
-        this.$set(this.dialogForm,'data6','');
-        this.getSubList(val)
+        let self = this;
+        for(let i=0;i<self.deptOptions.length;i++){
+          if(self.deptOptions[i].deptId == val){
+            this.$set(this.dialogForm,'place',self.deptOptions[i].deptName);
+          }
+        }
+        this.$set(this.dialogForm,'subId','');
+        this.getSubList('')
       },
       },
       //获取院系列表
       //获取院系列表
       getDeptList(){
       getDeptList(){
-        this.$set(this,'deptOptions',[]);
+        departmentsList().then(response => {
+          this.$set(this,'deptOptions',response.data);
+        });
       },
       },
       //获取实验室列表
       //获取实验室列表
-      getSubList(val){
-        this.$set(this,'subOptions',[]);
+      getSubList(val,deptId){
+        console.log(val,deptId)
+        if(val == '' && deptId){
+          subListAdmin({deptId:deptId,name:val}).then(response => {
+            this.$set(this,'subOptions',response.data);
+          });
+        }else if(this.dialogForm.placeId && (val == '' || val.length > 1)){
+          subListAdmin({deptId:this.dialogForm.placeId,name:val}).then(response => {
+            this.$set(this,'subOptions',response.data);
+          });
+        }
       },
       },
       //实验室切换
       //实验室切换
       subTypeClick(){
       subTypeClick(){
-        this.$set(this.dialogForm,'data6','');
-        this.$set(this.dialogForm,'data7',this.dialogForm.data7==1?2:1);
+        this.$set(this.dialogForm,'subId','');
+        this.$set(this.dialogForm,'selectType',this.dialogForm.selectType==1?2:1);
       },
       },
       //开启人员选择
       //开启人员选择
       addUserButton(){
       addUserButton(){
-        let userList = JSON.parse(JSON.stringify(this.dialogForm.data4))
+        let userList = JSON.parse(JSON.stringify(this.dialogForm.userIds))
         this.$set(this,'dialogTableDataList',userList)
         this.$set(this,'dialogTableDataList',userList)
         this.$set(this,'dialogTitle','选择人员');
         this.$set(this,'dialogTitle','选择人员');
         this.$set(this,'dialogUserType',true);
         this.$set(this,'dialogUserType',true);

+ 50 - 32
src/views/safetyEducationExam/trainingCourse/index.vue

@@ -4,9 +4,9 @@
       <el-form class="form-box" :model="queryParams" ref="examineForm" :inline="true" label-width="65px">
       <el-form class="form-box" :model="queryParams" ref="examineForm" :inline="true" label-width="65px">
         <el-form-item label="" prop="name">
         <el-form-item label="" prop="name">
           <div class="query-type-box">
           <div class="query-type-box">
-            <p @click="queryTypeClick(1)" :class="queryParams.type == 1?'check-p':''">全部</p>
-            <p @click="queryTypeClick(2)" :class="queryParams.type == 2?'check-p':''">待开课</p>
-            <p @click="queryTypeClick(3)" :class="queryParams.type == 3?'check-p':''">已开课</p>
+            <p @click="queryTypeClick(null)" :class="queryParams.isStart == null?'check-p':''">全部</p>
+            <p @click="queryTypeClick(0)" :class="queryParams.isStart == 0?'check-p':''">待开课</p>
+            <p @click="queryTypeClick(1)" :class="queryParams.isStart == 1?'check-p':''">已开课</p>
           </div>
           </div>
         </el-form-item>
         </el-form-item>
         <el-form-item label="关键字" prop="name">
         <el-form-item label="关键字" prop="name">
@@ -28,16 +28,28 @@
     </div>
     </div>
     <div class="content-box">
     <div class="content-box">
       <el-table border :data="tableData" ref="multipleTable">
       <el-table border :data="tableData" ref="multipleTable">
-        <el-table-column label="序号" prop="code" width="50"/>
-        <el-table-column label="课程名称" prop="name" show-overflow-tooltip/>
-        <el-table-column label="学院" prop="mainPoint" width="180" show-overflow-tooltip/>
-        <el-table-column label="主讲老师" prop="mainPoint" width="100" show-overflow-tooltip/>
-        <el-table-column label="辅导老师" prop="mainPoint" width="100" show-overflow-tooltip/>
-        <el-table-column label="辅导老师" prop="mainPoint" width="100" show-overflow-tooltip/>
-        <el-table-column label="人数" prop="mainPoint" width="80" show-overflow-tooltip/>
-        <el-table-column label="上课时间" prop="mainPoint" width="150" show-overflow-tooltip/>
-        <el-table-column label="上课日期" prop="mainPoint" width="200" show-overflow-tooltip/>
-        <el-table-column label="状态" prop="mainPoint" width="112" show-overflow-tooltip/>
+        <el-table-column label="序号"  width="50" align="center"  type="index"/>
+        <el-table-column label="课程名称" prop="courseName" show-overflow-tooltip/>
+        <el-table-column label="学院" prop="place" width="180" show-overflow-tooltip/>
+        <el-table-column label="上课地点" prop="position" width="100" show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{scope.row.subId?scope.row.subName+'-'+scope.row.subRoom:scope.row.position}}
+          </template>
+        </el-table-column>
+        <el-table-column label="主讲老师" prop="lecturerName" width="100" show-overflow-tooltip/>
+        <el-table-column label="辅导老师" prop="tutorName" width="100" show-overflow-tooltip/>
+        <el-table-column label="人数" prop="peopleCount" width="80" show-overflow-tooltip/>
+        <el-table-column label="上课时间" prop="coStartDate" width="150" show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{scope.row.coStartTime}} - {{scope.row.coEndTime}}
+          </template>
+        </el-table-column>
+        <el-table-column label="上课日期" prop="coStartDate" width="200" show-overflow-tooltip/>
+        <el-table-column label="状态" prop="mainPoint" width="112" show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{scope.row.isStart == 1?'已开课':'待开课'}}
+          </template>
+        </el-table-column>
         <el-table-column label="操作" width="180">
         <el-table-column label="操作" width="180">
           <template slot-scope="scope">
           <template slot-scope="scope">
             <div class="table-button-box">
             <div class="table-button-box">
@@ -64,6 +76,7 @@
 <script>
 <script>
   import addDialog from './addDialog.vue'
   import addDialog from './addDialog.vue'
   import infoDialog from './infoDialog.vue'
   import infoDialog from './infoDialog.vue'
+  import { securitycourseList,addSecuritycourseDel,securitycourseInfo } from '@/api/trainingCourse/index'
   export default {
   export default {
     name: 'trainingCourse',
     name: 'trainingCourse',
     components: {
     components: {
@@ -76,14 +89,14 @@
         loading: false,
         loading: false,
         //查询数据
         //查询数据
         queryParams:{
         queryParams:{
-          type:1,
+          isStart:null,
           searchValue:"",
           searchValue:"",
           page:1,
           page:1,
           pageSize:20,
           pageSize:20,
         },
         },
         //列表数据
         //列表数据
-        tableData: [{ id:"123", }],
-        total:10,
+        tableData: [],
+        total:0,
         //新增弹窗数据
         //新增弹窗数据
         addDialogType:false,
         addDialogType:false,
         addDialogData:{},
         addDialogData:{},
@@ -101,8 +114,8 @@
     methods:{
     methods:{
       //列表状态切换
       //列表状态切换
       queryTypeClick(type){
       queryTypeClick(type){
-        if(this.queryParams.type != type){
-          this.$set(this.queryParams,'type',type);
+        if(this.queryParams.isStart != type){
+          this.$set(this.queryParams,'isStart',type);
           this.getList();
           this.getList();
         }
         }
       },
       },
@@ -114,8 +127,8 @@
       //列表重置
       //列表重置
       resetForm(){
       resetForm(){
         this.$set(this,'queryParams',{
         this.$set(this,'queryParams',{
-          type:1,
-          searchValue:'',
+          isStart:null,
+          searchValue:"",
           page:1,
           page:1,
           pageSize:20,
           pageSize:20,
         });
         });
@@ -124,10 +137,11 @@
       // 查询数据列表
       // 查询数据列表
       getList() {
       getList() {
         this.loading = true;
         this.loading = true;
-        // checkOptionList(this.queryParams).then( response => {
-        //
-        //   this.loading = false;
-        // });
+        securitycourseList(this.queryParams).then( response => {
+          this.$set(this,'tableData',response.rows);
+          this.$set(this,'total',response.total);
+          this.loading = false;
+        });
       },
       },
       //操作按钮
       //操作按钮
       controlsButton(type,row){
       controlsButton(type,row){
@@ -137,12 +151,16 @@
           this.$set(this,'addDialogType',true);
           this.$set(this,'addDialogType',true);
         }else if(type == 2){
         }else if(type == 2){
           //编辑
           //编辑
-          this.$set(this,'addDialogData',row);
-          this.$set(this,'addDialogType',true);
+          securitycourseInfo(row.id).then( response => {
+            this.$set(this,'addDialogData',response.data);
+            this.$set(this,'addDialogType',true);
+          });
         }else if(type == 3){
         }else if(type == 3){
           //详情
           //详情
-          this.$set(this,'infoDialogType',true);
-          this.$set(this,'infoDialogData',row);
+          securitycourseInfo(row.id).then( response => {
+            this.$set(this,'infoDialogData',response.data);
+            this.$set(this,'infoDialogType',true);
+          });
         }else if(type == 4){
         }else if(type == 4){
           //删除
           //删除
           let self = this;
           let self = this;
@@ -151,10 +169,10 @@
             cancelButtonText: "取消",
             cancelButtonText: "取消",
             type: "warning"
             type: "warning"
           }).then(function() {
           }).then(function() {
-            // checkPlanDelete({id:row.id}).then(response => {
-            //   self.msgSuccess(response.msg)
-            //   self.getList();
-            // })
+            addSecuritycourseDel(row.id).then(response => {
+              self.msgSuccess(response.msg)
+              self.getList();
+            })
           }).then(() => {
           }).then(() => {
           }).catch(() => {});
           }).catch(() => {});
         }else if(type == 5){
         }else if(type == 5){

+ 104 - 77
src/views/safetyEducationExam/trainingCourse/infoDialog.vue

@@ -6,100 +6,99 @@
       <div class="info-big-box">
       <div class="info-big-box">
         <div>
         <div>
           <p>课程名称:</p>
           <p>课程名称:</p>
-          <p>{{infoData.data1}}</p>
+          <p>{{infoData.courseName}}</p>
         </div>
         </div>
         <div>
         <div>
           <p>是否开课:</p>
           <p>是否开课:</p>
-          <p>{{infoData.data2==1?'已开课':'未开课'}}</p>
+          <p>{{infoData.isStart==1?'已开课':'未开课'}}</p>
         </div>
         </div>
       </div>
       </div>
       <div class="info-big-box">
       <div class="info-big-box">
         <div>
         <div>
           <p>主讲老师:</p>
           <p>主讲老师:</p>
-          <p>{{infoData.data3}}</p>
+          <p>{{infoData.lecturerName}}</p>
         </div>
         </div>
         <div>
         <div>
           <p>辅导老师:</p>
           <p>辅导老师:</p>
-          <p>{{infoData.data4}}</p>
+          <p>{{infoData.tutorName}}</p>
         </div>
         </div>
       </div>
       </div>
       <div class="info-big-box">
       <div class="info-big-box">
         <div>
         <div>
           <p>上课人员:</p>
           <p>上课人员:</p>
-          <p class="color-p cursor-p" @click="pageTypeClick(2)">已选择学生 ({{infoData.data5.length}}人)</p>
+          <p class="color-p cursor-p" @click="pageTypeClick(2)">已选择学生 ({{infoData.userIds?infoData.userIds.length:0}}人)</p>
         </div>
         </div>
         <div>
         <div>
           <p>上课场所:</p>
           <p>上课场所:</p>
-          <p>{{infoData.data6}}</p>
+          <p>{{infoData.place}}</p>
         </div>
         </div>
       </div>
       </div>
       <div class="info-big-box">
       <div class="info-big-box">
         <div>
         <div>
           <p>上课日期:</p>
           <p>上课日期:</p>
-          <p>{{infoData.data7}}</p>
+          <p>{{infoData.courseDate}}</p>
         </div>
         </div>
         <div>
         <div>
           <p>上课时间:</p>
           <p>上课时间:</p>
-          <p>{{infoData.data8}}</p>
+          <p>{{infoData.courseTime}}</p>
         </div>
         </div>
       </div>
       </div>
       <div class="info-big-box-one">
       <div class="info-big-box-one">
         <p>课程内容:</p>
         <p>课程内容:</p>
-        <p>{{infoData.data9?infoData.data9:'无'}}</p>
+        <p>{{infoData.content?infoData.content:'无'}}</p>
       </div>
       </div>
-      <p class="info-big-box-title" v-if="infoData.data2==1">课后总结</p>
-      <div class="info-big-box-user" v-if="infoData.data2==1">
+      <p class="info-big-box-title" v-if="infoData.isStart==1">课后总结</p>
+      <div class="info-big-box-user" v-if="infoData.isStart==1">
         <p>签到人员:</p>
         <p>签到人员:</p>
         <p @click="pageTypeClick(3)">
         <p @click="pageTypeClick(3)">
-          <span>实际签到人数({{infoData.data10}}人)</span>
-          <span v-if="infoData.data11>0">、有{{infoData.data11}}人未签到</span>
-          <span v-if="infoData.data12>0">、非计划内签到{{infoData.data12}}人</span>
+          <span>实际签到人数({{infoData.actualCount}}人)</span>
+          <span>、有{{infoData.notHaveCount}}人未签到</span>
+          <span>、非计划内签到{{infoData.outPlanCount}}人</span>
         </p>
         </p>
       </div>
       </div>
-      <div class="info-big-box-img" v-if="infoData.data2==1" :class="!infoData.data13[0]?'info-big-box-img-margin-bottom':''">
+      <div class="info-big-box-img" v-if="infoData.isStart==1" :class="!infoData.courseImg[0]?'info-big-box-img-margin-bottom':''">
         <p>上传照片:</p>
         <p>上传照片:</p>
         <div>
         <div>
-          <p v-if="!infoData.data13[0]">无</p>
-          <img v-for="(item,index) in infoData.data13" :key="index"
+          <p v-if="!infoData.courseImg[0]">无</p>
+          <img v-for="(item,index) in infoData.courseImg" :key="index"
                @click="pageTypeClick(4,item,index)" :src="item">
                @click="pageTypeClick(4,item,index)" :src="item">
         </div>
         </div>
       </div>
       </div>
-      <div class="info-big-box-one" v-if="infoData.data2==1">
+      <div class="info-big-box-one" v-if="infoData.isStart==1">
         <p>课程总结:</p>
         <p>课程总结:</p>
-        <p>{{infoData.data9?infoData.data9:'无'}}</p>
+        <p>{{infoData.courseSm?infoData.courseSm:'无'}}</p>
       </div>
       </div>
     </div>
     </div>
     <div class="user-max-big-box" v-if="infoType == 2 || infoType == 3">
     <div class="user-max-big-box" v-if="infoType == 2 || infoType == 3">
       <el-form class="form-box" :model="userQueryParams" ref="examineForm" :inline="true">
       <el-form class="form-box" :model="userQueryParams" ref="examineForm" :inline="true">
-        <el-form-item label="关键字" prop="name">
+        <el-form-item label="" prop="nickName">
           <el-input
           <el-input
             style="width:150px;"
             style="width:150px;"
             maxlength="10"
             maxlength="10"
-            clearable
-            v-model="userQueryParams.searchValue"
+            v-model="userQueryParams.nickName"
             placeholder="请输入姓名"/>
             placeholder="请输入姓名"/>
         </el-form-item>
         </el-form-item>
         <el-form-item label="状态">
         <el-form-item label="状态">
-          <el-select v-model="userQueryParams.userQueryParamsType"
+          <el-select v-model="userQueryParams.isSing"
                      style="width:150px;"
                      style="width:150px;"
-                     placeholder="请选择启动条件" clearable>
+                     placeholder="请选择启动条件">
             <el-option
             <el-option
               v-for="dict in typeOptions"
               v-for="dict in typeOptions"
               :key="dict.key"
               :key="dict.key"
               :label="dict.value"
               :label="dict.value"
-              :value="dict.value"
+              :value="dict.key"
             ></el-option>
             ></el-option>
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
         <el-form-item label="是否计划内" v-if="infoType == 3">
         <el-form-item label="是否计划内" v-if="infoType == 3">
-          <el-select v-model="userQueryParams.userQueryParamsProject"
+          <el-select v-model="userQueryParams.singType"
                      style="width:150px;"
                      style="width:150px;"
-                     placeholder="请选择启动条件" clearable>
+                     placeholder="请选择启动条件">
             <el-option
             <el-option
               v-for="dict in projectOptions"
               v-for="dict in projectOptions"
               :key="dict.key"
               :key="dict.key"
               :label="dict.value"
               :label="dict.value"
-              :value="dict.value"
+              :value="dict.key"
             ></el-option>
             ></el-option>
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
@@ -109,19 +108,27 @@
         </el-form-item>
         </el-form-item>
       </el-form>
       </el-form>
       <p class="sign-in-num">
       <p class="sign-in-num">
-        <span>签到人数:{{infoData.data10}}</span>
-        <span>、未签到人数:{{infoData.data11}}</span>
-        <span v-if="infoType == 3">、计划外签到人数:{{infoData.data12}}</span>
+        <span>签到人数:{{infoData.actualCount}}</span>
+        <span>、未签到人数:{{infoData.notHaveCount}}</span>
+        <span v-if="infoType == 3">、计划外签到人数:{{infoData.outPlanCount}}</span>
       </p>
       </p>
       <el-table border :data="tableData" ref="multipleTable">
       <el-table border :data="tableData" ref="multipleTable">
-        <el-table-column label="序号" prop="code" width="50"/>
-        <el-table-column label="姓名" prop="name" show-overflow-tooltip/>
-        <el-table-column label="导师" prop="mainPoint" width="150" show-overflow-tooltip/>
-        <el-table-column label="班级" prop="mainPoint" width="150" show-overflow-tooltip/>
-        <el-table-column label="所在部门" prop="mainPoint" width="300" show-overflow-tooltip v-if="infoType == 2"/>
-        <el-table-column label="所在部门" prop="mainPoint" width="150" show-overflow-tooltip v-if="infoType == 3"/>
-        <el-table-column label="是否计划内" prop="mainPoint" width="150" show-overflow-tooltip v-if="infoType == 3"/>
-        <el-table-column label="状态" prop="mainPoint" width="150" show-overflow-tooltip/>
+        <el-table-column label="序号"  width="50" align="center"  type="index"/>
+        <el-table-column label="姓名" prop="nickName" show-overflow-tooltip/>
+        <el-table-column label="导师" prop="tutorName" width="150" show-overflow-tooltip/>
+        <el-table-column label="班级" prop="className" width="150" show-overflow-tooltip/>
+        <el-table-column label="所在部门" prop="deptName" width="300" show-overflow-tooltip v-if="infoType == 2"/>
+        <el-table-column label="所在部门" prop="deptName" width="150" show-overflow-tooltip v-if="infoType == 3"/>
+        <el-table-column label="是否计划内" prop="singType" width="150" show-overflow-tooltip v-if="infoType == 3">
+          <template slot-scope="scope">
+            {{scope.row.singType == 1?'否':'是'}}
+          </template>
+        </el-table-column>
+        <el-table-column label="状态" prop="isSing" width="150" show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{scope.row.isSing == 1?'已签到':'未签到'}}
+          </template>
+        </el-table-column>
       </el-table>
       </el-table>
       <pagination :page-sizes="[20, 30, 40, 50]" v-show="total>0" :total="total"
       <pagination :page-sizes="[20, 30, 40, 50]" v-show="total>0" :total="total"
                   layout="total, prev, pager, next, sizes, jumper"
                   layout="total, prev, pager, next, sizes, jumper"
@@ -137,7 +144,7 @@
     <div slot="footer" class="img-button-box" v-if="infoType == 4">
     <div slot="footer" class="img-button-box" v-if="infoType == 4">
       <p class="img-null-p"></p>
       <p class="img-null-p"></p>
       <div class="img-button-min-box">
       <div class="img-button-min-box">
-        <img v-for="(item,index) in infoData.data13" :key="index"
+        <img v-for="(item,index) in infoData.courseImg" :key="index"
              :class="index==lookIndex?'lookImg':''"
              :class="index==lookIndex?'lookImg':''"
              @click="lockImgButton(item,index)" :src="item">
              @click="lockImgButton(item,index)" :src="item">
       </div>
       </div>
@@ -147,6 +154,7 @@
 </template>
 </template>
 
 
 <script>
 <script>
+  import { singList } from '@/api/trainingCourse/index'
   export default {
   export default {
     name: 'trainingCourseInfoDialog',
     name: 'trainingCourseInfoDialog',
     props:{
     props:{
@@ -160,29 +168,7 @@
         //页面状态 1.详情 2.人员 3.照片
         //页面状态 1.详情 2.人员 3.照片
         infoType:1,
         infoType:1,
         //详情数据
         //详情数据
-        infoData:{
-          data1:'计划计划计划标题',
-          data2:1,
-          data3:'张老师',
-          data4:'张老师、陈老师',
-          data5:[{userId:'1'},{userId:'2'},{userId:'3'}],
-          data6:'环境与测绘学院,实验大楼,大气污染实验室',
-          data7:'2023-05-01至2023-05-01',
-          data8:'08:00至09:00',
-          data9:'内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容',
-          data10:'28',
-          data11:'15',
-          data12:'8',
-          data15:[{userId:'1'},{userId:'2'},{userId:'3'}],
-          data13:[
-            'https://img1.baidu.com/it/u=3593301246,2849300752&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500',
-            'https://img2.baidu.com/it/u=3673010870,2493779584&fm=253&fmt=auto&app=138&f=JPEG?w=705&h=500',
-            'https://img1.baidu.com/it/u=4270144465,1604793144&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800',
-            'https://img2.baidu.com/it/u=3219435629,4248079746&fm=253&fmt=auto&app=138&f=JPEG?w=705&h=500',
-            'https://img2.baidu.com/it/u=3344911223,3409692090&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=313'
-          ],
-          data14:'课程总结内容',
-        },
+        infoData:{},
         // 查看图片url
         // 查看图片url
         lookUrl:null,
         lookUrl:null,
         // 查看图片index
         // 查看图片index
@@ -191,12 +177,12 @@
         userQueryParams:{
         userQueryParams:{
           pageNum:1,
           pageNum:1,
           pageSize:20,
           pageSize:20,
-          searchValue:"",
-          userQueryParamsType:"",
-          userQueryParamsProject:"",
+          nickName:"",
+          isSing:'2',
+          singType:'2',
         },
         },
-        typeOptions:[{key:"1",value:"已签到"},{key:"2",value:"未签到"}],
-        projectOptions:[{key:"1",value:"是"},{key:"2",value:"否"}],
+        typeOptions:[{key:'2',value:"全部"},{key:"1",value:"已签到"},{key:"0",value:"未签到"}],
+        projectOptions:[{key:'2',value:"全部"},{key:"0",value:"是"},{key:"1",value:"否"}],
         tableData:[],
         tableData:[],
         total:0,
         total:0,
       }
       }
@@ -211,20 +197,35 @@
       //初始化
       //初始化
       initialize(){
       initialize(){
         this.$set(this,'dialogTitle','详情');
         this.$set(this,'dialogTitle','详情');
+        let obj = {
+          courseName:this.infoDialogData.courseName,
+          isStart:this.infoDialogData.isStart,
+          lecturerName:this.infoDialogData.lecturerName,
+          tutorName:this.infoDialogData.tutorName,
+          userIds:this.infoDialogData.userIds,
+          place:this.infoDialogData.subId?this.infoDialogData.place+','+this.infoDialogData.subName:this.infoDialogData.place+','+this.infoDialogData.position,
+          courseDate:this.infoDialogData.coStartDate,
+          courseTime:this.infoDialogData.coStartTime+'至'+this.infoDialogData.coEndTime,
+          content:this.infoDialogData.content,
+          actualCount:this.infoDialogData.actualCount,
+          notHaveCount:this.infoDialogData.notHaveCount,
+          outPlanCount:this.infoDialogData.outPlanCount,
+          courseImg:this.infoDialogData.courseImg?this.infoDialogData.courseImg.split(','):[],
+          courseSm:this.infoDialogData.courseSm,
+        }
+        this.$set(this,'infoData',obj);
       },
       },
       //页面状态切换
       //页面状态切换
       pageTypeClick(type,item,index){
       pageTypeClick(type,item,index){
         if(this.infoType != type){
         if(this.infoType != type){
-          if(type == 2){
-
-          }else if(type == 3){
-
+          this.$set(this,'dialogTitle',type == 2?'上课人员':(type == 3?'签到人员':(type == 4?'照片':'')));
+          this.$set(this,'infoType',type);
+          if(type == 2 || type == 3){
+            this.resetForm();
           }else if(type == 4){
           }else if(type == 4){
             this.$set(this,'lookUrl',item);
             this.$set(this,'lookUrl',item);
             this.$set(this,'lookIndex',index);
             this.$set(this,'lookIndex',index);
           }
           }
-          this.$set(this,'dialogTitle',type == 2?'上课人员':(type == 3?'签到人员':(type == 4?'照片':'')));
-          this.$set(this,'infoType',type);
         }
         }
       },
       },
       //查看图片切换
       //查看图片切换
@@ -244,12 +245,38 @@
         }
         }
       },
       },
       //人员列表查询
       //人员列表查询
-      onSearch(){},
+      onSearch(){
+        this.$set(this.userQueryParams,'pageNum',1);
+        this.getList();
+      },
       //人员列表重置
       //人员列表重置
-      resetForm(){},
+      resetForm(){
+        let obj = {
+          pageNum:1,
+          pageSize:20,
+          nickName:"",
+          isSing:'2',
+          singType:'2',
+        }
+        this.$set(this,'userQueryParams',obj);
+        this.getList();
+      },
       //获取人员列表
       //获取人员列表
       getList(){
       getList(){
-
+        let obj = {
+          courseId:this.infoDialogData.id,
+          pageNum:this.userQueryParams.pageNum,
+          pageSize:this.userQueryParams.pageSize,
+          nickName:this.userQueryParams.nickName,
+          isSing:this.userQueryParams.isSing,
+        }
+        if(this.infoType == 3){
+          obj.singType = this.userQueryParams.singType;
+        }
+        singList(obj).then( response => {
+          this.$set(this,'tableData',response.rows);
+          this.$set(this,'total',response.total);
+        });
       },
       },
     },
     },
   }
   }