安全在线教育平台
zhouwx
18 hours ago 639c97afabc39d3adadc17f07fa63fbd887f40fc
中科大支线-修改
19 files modified
86 ■■■■ changed files
README.md 2 ●●● patch | view | raw | blame | history
html/ie.html 2 ●●● patch | view | raw | blame | history
src/api/onlineEducation/batch.js 2 ●●● patch | view | raw | blame | history
src/layout/components/Sidebar/menu.js 2 ●●● patch | view | raw | blame | history
src/router/index.js 2 ●●● patch | view | raw | blame | history
src/utils/directivesNew.js 4 ●●●● patch | view | raw | blame | history
src/views/onlineEducation/classHourBatch/components/batchDialog.vue 2 ●●● patch | view | raw | blame | history
src/views/onlineEducation/classHourBatch/index.vue 6 ●●●● patch | view | raw | blame | history
src/views/onlineEducation/count/index.vue 10 ●●●● patch | view | raw | blame | history
src/views/onlineEducation/groupExams/index.vue 4 ●●●● patch | view | raw | blame | history
src/views/onlineEducation/offlineEducation/components/recordDialog.vue 4 ●●●● patch | view | raw | blame | history
src/views/onlineEducation/offlineEducation/index.vue 6 ●●●● patch | view | raw | blame | history
src/views/onlineEducation/people/components/stuDialog.vue 8 ●●●● patch | view | raw | blame | history
src/views/onlineEducation/people/components/trainRecord.vue 2 ●●● patch | view | raw | blame | history
src/views/onlineEducation/people/index.vue 2 ●●● patch | view | raw | blame | history
src/views/onlineEducation/questionBankManagement/components/questionBankDialog.vue 2 ●●● patch | view | raw | blame | history
src/views/onlineEducation/systemManage/company/components/companyDialog.vue 14 ●●●● patch | view | raw | blame | history
src/views/onlineEducation/systemManage/company/index.vue 8 ●●●● patch | view | raw | blame | history
src/views/onlineEducation/systemManage/user/components/userDialog.vue 4 ●●●● patch | view | raw | blame | history
README.md
@@ -40,7 +40,7 @@
## 内置功能
1.  用户管理:用户是系统操作者,该功能主要完成系统用户配置。
2.  部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
2.  部门管理:配置系统组织机构(单位、部门、小组),树结构展现支持数据权限。
3.  岗位管理:配置系统用户所属担任职务。
4.  菜单管理:配置系统菜单,操作权限,按钮权限标识等。
5.  角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
html/ie.html
@@ -29,7 +29,7 @@
<h1>请升级您的浏览器,以便我们更好的为您提供服务!</h1>
<p>您正在使用 Internet Explorer 的早期版本(IE11以下版本或使用该内核的浏览器)。这意味着在升级浏览器前,您将无法访问此网站。</p>
<hr>
<h2>请注意:微软公司对Windows XP 及 Internet Explorer 早期版本的支持已经结束</h2>
<h2>请注意:微软单位对Windows XP 及 Internet Explorer 早期版本的支持已经结束</h2>
<p>自 2016 年 1 月 12 日起,Microsoft 不再为 IE 11 以下版本提供相应支持和更新。没有关键的浏览器安全更新,您的电脑可能易受有害病毒、间谍软件和其他恶意软件的攻击,它们可以窃取或损害您的业务数据和信息。请参阅 <a href="https://www.microsoft.com/zh-cn/WindowsForBusiness/End-of-IE-support">微软对 Internet Explorer 早期版本的支持将于 2016 年 1 月 12 日结束的说明</a> 。</p>
<hr>
<h2>您可以选择更先进的浏览器</h2>
src/api/onlineEducation/batch.js
@@ -83,7 +83,7 @@
    })
}
//企业课时变更记录列表(分页)
//单位课时变更记录列表(分页)
export function getCompanyPeriod(param) {
    return request({
        url: '/company-period/list',
src/layout/components/Sidebar/menu.js
@@ -83,7 +83,7 @@
                {
                    path: 'company',
                    name: 'company',
                    meta: { title: '企业管理',icon: 'list'}
                    meta: { title: '单位管理',icon: 'list'}
                } ,
                {
                    path: 'user',
src/router/index.js
@@ -264,7 +264,7 @@
        path: 'company',
        component: () => import('@/views/onlineEducation/systemManage/company/index.vue'),
        name: 'company',
        meta: { title: '企业管理',icon: 'form'}
        meta: { title: '单位管理',icon: 'form'}
      },
      {
        path: 'user',
src/utils/directivesNew.js
@@ -3,7 +3,7 @@
// // export default () => {
// //     Vue.directive('selectScroll', {
// //         bind (el, binding) {
// //             //  如上图,我通过v-if来控制了两个select框,当没有binding.arg这个参数时,我只能监听到企业类型下的select框,所以,我通过传参控制了监听的哪个select框
// //             //  如上图,我通过v-if来控制了两个select框,当没有binding.arg这个参数时,我只能监听到单位类型下的select框,所以,我通过传参控制了监听的哪个select框
// //             var className = '.' + binding.arg
// //             el.className = binding.arg
// //             // 获取滚动页面DOM
@@ -27,7 +27,7 @@
//
// const selectScroll: Directive = {
//     beforeMount(el: any, binding: DirectiveBinding) {
//         //  如上图,我通过v-if来控制了两个select框,当没有binding.arg这个参数时,我只能监听到企业类型下的select框,所以,我通过传参控制了监听的哪个select框
//         //  如上图,我通过v-if来控制了两个select框,当没有binding.arg这个参数时,我只能监听到单位类型下的select框,所以,我通过传参控制了监听的哪个select框
//         const className = '.' + binding.arg;
//         el.className = binding.arg
//         // 获取滚动页面DOM
src/views/onlineEducation/classHourBatch/components/batchDialog.vue
@@ -9,7 +9,7 @@
        :close-on-click-modal="false"
    >
      <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" >
        <el-form-item label="所属公司:" prop="companyName" v-if="!state.isAdmin">
        <el-form-item label="所属单位:" prop="companyName" v-if="!state.isAdmin">
          <el-input v-model.trim="state.form.companyName" disabled></el-input>
        </el-form-item>
        <el-form-item label="批次名称:" prop="name">
src/views/onlineEducation/classHourBatch/index.vue
@@ -37,7 +37,7 @@
        </el-form-item>
      </el-form>
      <span v-if="!data.isAdmin" style="font-size: 19px;font-weight: 600;margin-right: 20px">
        {{data.companyName}},您的企业当前系统可用课时总计
        {{data.companyName}},您的单位当前系统可用课时总计
        <span style="font-size: 19px;font-weight: 600;color: #1ab394">{{data.remainPeriod}}</span> 分钟。<span @click="openDetail" style="cursor: pointer; font-size: 19px;font-weight: 600;color: #1890ff">[明细]</span>
      </span>
    </div>
@@ -46,7 +46,7 @@
      <el-table-column label="批次编号" prop="code" align="center" width="135" />
      <el-table-column label="创建时间" prop="createTime" align="center"  width="120" />
      <el-table-column label="批次名称" prop="name" align="center"  />
      <el-table-column label="创建企业" prop="companyName" align="center"  />
      <el-table-column label="创建单位" prop="companyName" align="center"  />
      <el-table-column label="批次级别" prop="level" align="center"  >
        <template #default="scope">
          <span>{{scope.row.level === 1 ? '单位级' : scope.row.level === 2 ? '学院级' : scope.row.level === 3 ? '实验室级' : '其他'  }}</span>
@@ -167,7 +167,7 @@
      return {
        ...item,
        coursePeriodNum: item.coursePeriod ? (item.coursePeriod /60).toFixed(2).replace(/\.00$/, '') + '分钟':'',
        finishRate: item.finishCount ?  item.finishCount ===0 && item.studentCount ===0  ? '0%': (item.finishCount / item.studentCount).toFixed(2) *100 + '%' : ''
        finishRate: item.finishCount ?  item.finishCount ===0 && item.studentCount ===0  ? '0%': ((item.finishCount / item.studentCount)*100).toFixed(2).replace(/\.00$/, '')  + '%' : ''
      }
    })
    data.total = res.data.total
src/views/onlineEducation/count/index.vue
@@ -2,14 +2,14 @@
  <div class="app-container">
    <div>
      <el-form style="display: flex;flex-wrap: wrap">
        <el-form-item label="企业:" v-if="state.isAdmin">
        <el-form-item label="单位:" v-if="state.isAdmin">
          <el-select
              v-model="state.queryParams.companyName"
              filterable
              remote
              @change="selectValue"
              reserve-keyword
              placeholder="请输入企业名称"
              placeholder="请输入单位名称"
              remote-show-suffix
              :remote-method="getCompanyList"
              :loading="loadingCompany"
@@ -51,8 +51,8 @@
    <!-- 表格数据 -->
    <el-table v-loading="loading" :data="state.dataList" :border="true" row-key="id">
      <el-table-column label="序号" type="index" align="center" width="80" />
      <el-table-column label="企业名称" prop="companyName" align="center" />
      <el-table-column label="企业编号" prop="companyCode" align="center" />
      <el-table-column label="单位名称" prop="companyName" align="center" />
      <el-table-column label="单位编号" prop="companyCode" align="center" />
      <el-table-column label="总批次/人数" prop="sort" align="center"  >
        <template #default="scope">
          <span>{{scope.row.phaseStudentCount && scope.row.phaseCount ? scope.row.phaseCount + '/' +scope.row.phaseStudentCount:''}}</span>
@@ -139,7 +139,7 @@
    state.dataList = res.data.list.map(item => {
      return {
        ...item,
        passRate: item.passStudentCount  && item.paperStudentCount ? (item.passStudentCount / item.paperStudentCount).toFixed(2) *100 + '%': item.passStudentCount == 0  && item.paperStudentCount == 0? '0%': ''
        passRate: item.passStudentCount  && item.paperStudentCount ? ((item.passStudentCount / item.paperStudentCount)*100).toFixed(2).replace(/\.00$/, '')  + '%': item.passStudentCount == 0  && item.paperStudentCount == 0? '0%': ''
      }
    })
src/views/onlineEducation/groupExams/index.vue
@@ -41,7 +41,7 @@
    <el-table v-loading="loading" :data="dataList" :border="true">
      <el-table-column label="编号" prop="code" align="center" width="135" />
      <el-table-column label="考试名称" prop="name" align="center"  />
      <el-table-column label="企业名称" prop="companyName" align="center"  />
      <el-table-column label="单位名称" prop="companyName" align="center"  />
      <el-table-column label="创建账户" prop="createBy" align="center"  />
      <el-table-column label="科目/类别" prop="categoryName" align="center"  />
      <el-table-column label="完成人数/总人数" prop="" align="center"  width="135">
@@ -166,7 +166,7 @@
    data.dataList = res.data.list.map(item => {
      return {
        ...item,
        passRate: item.paperStudentInfoVO.passStudentCount ===0 && item.paperStudentInfoVO.studentCount ===0  ? '0%': (item.paperStudentInfoVO.passStudentCount / item.paperStudentInfoVO.studentCount).toFixed(2) *100 + '%',
      passRate: item.paperStudentInfoVO.passStudentCount ===0 && item.paperStudentInfoVO.studentCount ===0  ? '0%': ((item.paperStudentInfoVO.passStudentCount / item.paperStudentInfoVO.studentCount)*100).toFixed(2).replace(/\.00$/, '')  + '%',
        deadlineNum: item.deadline ? item.deadline.slice(0,10) : ''
      }
    })
src/views/onlineEducation/offlineEducation/components/recordDialog.vue
@@ -9,7 +9,7 @@
        :close-on-click-modal="false"
    >
      <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules" label-width="180px" >
        <el-form-item label="企业名称:"  prop="companyName" >
        <el-form-item label="单位名称:"  prop="companyName" >
          <el-select
              v-if="state.isAdmin"
              v-model="state.form.companyName"
@@ -125,7 +125,7 @@
  },
  formRules:{
    companyName: [{ required: true, message: '请输入企业名称', trigger: 'blur' }],
    companyName: [{ required: true, message: '请输入单位名称', trigger: 'blur' }],
    planName: [{ required: true, message: '请输入计划名称', trigger: 'blur' }],
    studentName: [{ required: true, message: '请选择学员', trigger: 'blur' }],
    level: [{ required: true, message: '请输入培训等级', trigger: 'blur' }],
src/views/onlineEducation/offlineEducation/index.vue
@@ -10,8 +10,8 @@
              @click="openDialog('add',{})"
          >新增登记</el-button>
        </el-form-item>
        <el-form-item label="企业名称:" >
          <el-input v-model="data.queryParams.companyName" placeholder="请输入企业名称"></el-input>
        <el-form-item label="单位名称:" >
          <el-input v-model="data.queryParams.companyName" placeholder="请输入单位名称"></el-input>
        </el-form-item>
        <el-form-item label="课程名称:" >
          <el-input v-model="data.queryParams.courseName" placeholder="请输入课程名称"></el-input>
@@ -42,7 +42,7 @@
    <!-- 表格数据 -->
    <el-table v-loading="loading" :data="dataList" :border="true">
      <el-table-column label="序号" type="index" align="center" width="80" />
      <el-table-column label="企业名称" prop="companyName" align="center"  />
      <el-table-column label="单位名称" prop="companyName" align="center"  />
      <el-table-column label="计划名称" prop="planName" align="center"  />
      <el-table-column label="学员姓名" prop="studentName" align="center">
        <template #default="scope">
src/views/onlineEducation/people/components/stuDialog.vue
@@ -9,7 +9,7 @@
        :close-on-click-modal="false"
    >
      <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules" label-width="180px" >
        <el-form-item label="企业:"  prop="companyName" v-if="state.title !== '修改密码'">
        <el-form-item label="单位:"  prop="companyName" v-if="state.title !== '修改密码'">
          <el-input v-model.trim="state.form.companyName" disabled></el-input>
        </el-form-item>
        <el-form-item label="姓名:"  prop="name" v-if="state.title !== '修改密码'">
@@ -161,11 +161,11 @@
    }
    checkStuIdNo(param).then((res)=>{
      if(res.data.status == 1){
        callback(new Error('身份证号在该企业已被占用,请更换其他身份证号'))
        callback(new Error('身份证号在该单位已被占用,请更换其他身份证号'))
      }else if(res.data.status == 2){
        if(state.title == '新增'){
          ElMessageBox.confirm(
              `该人员 ${state.form.name} (身份证号: ${state.form.idNo} )与 ${res.data.companyName} 已经绑定,确定将该人员的责任归属变更到贵公企业?`,
              `该人员 ${state.form.name} (身份证号: ${state.form.idNo} )与 ${res.data.companyName} 已经绑定,确定将该人员的责任归属变更到贵公单位?`,
              '提示',
              {
                confirmButtonText: '确认',
@@ -195,7 +195,7 @@
            })
          })
        }else {
          callback(new Error('身份证号在其他企业已被占用,请更换身份证号'))
          callback(new Error('身份证号在其他单位已被占用,请更换身份证号'))
        }
      }else {
        callback()
src/views/onlineEducation/people/components/trainRecord.vue
@@ -21,7 +21,7 @@
            {{scope.row.trainType == 2 ? scope.row.name : ''}}
          </template>
        </el-table-column>
        <el-table-column label="所在公司" prop="companyName" align="center"/>
        <el-table-column label="所在单位" prop="companyName" align="center"/>
      </el-table>
    </el-dialog>
  </div>
src/views/onlineEducation/people/index.vue
@@ -130,7 +130,7 @@
const openDialog = (type, value) => {
  if(type == 'add' && data.isAdmin){
    ElMessage.warning('监管学院请联系企业创建企业学员')
    ElMessage.warning('监管学院请联系单位创建单位学员')
  }
  // else if(userType.value !== 3 && (type == 'add' || type == 'edit')) {
  //   ElMessage.warning(' 只有实验室级用户才能新增和编辑')
src/views/onlineEducation/questionBankManagement/components/questionBankDialog.vue
@@ -9,7 +9,7 @@
        :close-on-click-modal="false"
    >
      <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" >
        <el-form-item label="所属公司:" prop="companyName" v-if="!state.isAdmin">
        <el-form-item label="所属单位:" prop="companyName" v-if="!state.isAdmin">
          <el-input v-model.trim="state.form.companyName" disabled></el-input>
        </el-form-item>
        <el-form-item label="题库名称:" prop="name">
src/views/onlineEducation/systemManage/company/components/companyDialog.vue
@@ -9,11 +9,11 @@
        :close-on-click-modal="false"
    >
      <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" >
        <el-form-item label="企业信用代码:" prop="creditCode" v-if="title!=='分配课时'">
          <el-input v-model.trim="state.form.creditCode" placeholder="请输入企业信用代码"></el-input>
        <el-form-item label="单位信用代码:" prop="creditCode" v-if="title!=='分配课时'">
          <el-input v-model.trim="state.form.creditCode" placeholder="请输入单位信用代码"></el-input>
        </el-form-item>
        <el-form-item label="企业名称:" prop="name" v-if="title!=='分配课时'">
          <el-input v-model.trim="state.form.name" placeholder="请输入企业名称"></el-input>
        <el-form-item label="单位名称:" prop="name" v-if="title!=='分配课时'">
          <el-input v-model.trim="state.form.name" placeholder="请输入单位名称"></el-input>
        </el-form-item>
        <el-form-item label="负责人:" prop="major" v-if="title!=='分配课时'">
          <el-input v-model.trim="state.form.major" placeholder="请输入负责人"></el-input>
@@ -76,7 +76,7 @@
const validateName = (rule, value, callback)=>{
  if(value === ''){
    callback(new Error('请输入企业名称'))
    callback(new Error('请输入单位名称'))
  }else if(title.value === '编辑' && value === startUsername.value){
    callback()
  }else{
@@ -93,7 +93,7 @@
    }
    checkName(param).then((res)=>{
      if(res.data == false){
        callback(new Error('企业名称已被占用,请更换其他名称'))
        callback(new Error('单位名称已被占用,请更换其他名称'))
      }else{
        callback()
      }
@@ -125,7 +125,7 @@
    totalPeriod: ''
  },
  formRules:{
    creditCode: [{ required: true, message: '请输入企业信用代码', trigger: 'blur' }],
    creditCode: [{ required: true, message: '请输入单位信用代码', trigger: 'blur' }],
    major:[{ required: true, message: '请输入负责人', trigger: 'blur' }],
    remainPeriod:[{ required: true, message: '请输入剩余课时', trigger: 'blur' }],
    spendPeriod:[{ required: true, message: '请输入已用课时', trigger: 'blur' }],
src/views/onlineEducation/systemManage/company/index.vue
@@ -10,8 +10,8 @@
              @click="openDialog('add',{})"
          >新增</el-button>
        </el-form-item>
        <el-form-item label="企业名称:" >
          <el-input v-model="data.queryParams.name" placeholder="请输入企业名称"></el-input>
        <el-form-item label="单位名称:" >
          <el-input v-model="data.queryParams.name" placeholder="请输入单位名称"></el-input>
        </el-form-item>
        <el-form-item >
          <el-button
@@ -29,8 +29,8 @@
    <!-- 表格数据 -->
    <el-table v-loading="loading" :data="dataList" :border="true">
      <el-table-column label="序号" type="index" align="center" width="80" />
      <el-table-column label="企业信用代码" prop="creditCode" align="center"  />
      <el-table-column label="企业名称" prop="name" align="center" />
      <el-table-column label="单位信用代码" prop="creditCode" align="center"  />
      <el-table-column label="单位名称" prop="name" align="center" />
      <el-table-column label="负责人" prop="major" align="center"  />
      <el-table-column label="联系电话" prop="phone" align="center"/>
      <el-table-column label="当前剩余课时(分)" prop="remainPeriodMin" align="center" width="150" />
src/views/onlineEducation/systemManage/user/components/userDialog.vue
@@ -58,7 +58,7 @@
              remote
              @change="selectValue"
              reserve-keyword
              placeholder="请输入企业名称"
              placeholder="请输入单位名称"
              remote-show-suffix
              :remote-method="getCompanyList"
              :loading="loading"
@@ -220,7 +220,7 @@
  },
  formRules:{
    name: [{ required: true, message: '请输入学院、实验室名称称', trigger: 'blur' }],
    companyName: [{ required: true, message: '请选择上级企业', trigger: 'blur' }],
    companyName: [{ required: true, message: '请选择上级单位', trigger: 'blur' }],
    username: [{ required: true, trigger: "blur", validator: validateUsername }],
    password: [{ required: true, validator: validatePwd, trigger: 'blur' }],
    confirmPassword: [{ required: true, validator: equalToPassword, trigger: 'blur' }],