louyinlei
2024-03-05 5e779cf782fa3bfd3de4cfc4dc88af56b171b501
验收提交
已修改3个文件
已添加3个文件
765 ■■■■ 文件已修改
src/assets/images/fees.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/history.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/invigilation.png 补丁 | 查看 | 原始文档 | blame | 历史
src/views/notCoalMine/nTrainManage/components/trainPlanDialog.vue 677 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/notCoalMine/nTrainManage/index.vue 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/subSys/index.vue 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/fees.png
src/assets/images/history.png
src/assets/images/invigilation.png
src/views/notCoalMine/nTrainManage/components/trainPlanDialog.vue
@@ -1,334 +1,347 @@
<template>
  <el-dialog
    :title="title"
    :visible.sync="open"
    append-to-body
    width="50%"
    :before-close="handleClose"
  >
    <el-form ref="ruleForm" :model="form"  :rules="rules" label-position="right" label-width="150px" style="padding-right: 50px" element-loading-text="保存中...">
      <el-form-item label="计划名称:" prop="name">
        <el-input v-model.trim="form.name" :readonly="disable" type="textarea"/>
      </el-form-item>
      <el-form-item label="培训单位:" prop="dep">
        <el-input v-model.trim="form.dep" :readonly="disable"/>
      </el-form-item>
      <el-form-item label="培训方式:" prop="trainWay">
        <el-radio-group v-model="form.trainWay" :disabled="disable">
          <el-radio :label="0">面授</el-radio>
          <el-radio :label="1">线上</el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item label="发证单位:" prop="cardDep">
        <el-input v-model.trim="form.cardDep" :readonly="disable"/>
      </el-form-item>
      <el-form-item label="课程管理:" prop="classes">
        <el-table :data="form.classes" border>
          <el-table-column label="课程名称" align="center" prop="name" />
          <el-table-column label="标准学时" align="center" prop="time" />
          <el-table-column label="上课教师" align="center" prop="teacher" />
          <el-table-column label="操作" align="center" class-name="small-padding fixed-width" v-if="!disable">
            <template #default="scope">
              <el-button
                size="mini"
                type="text"
                style="color: red"
                @click="delClass(scope.$index)"
              >删除</el-button>
            </template>
          </el-table-column>
        </el-table>
        <el-button type="primary" size="mini" @click="addClass" style="margin-top: 20px" v-if="!disable">添加课程</el-button>
      </el-form-item>
      <el-form-item label="学员管理:" prop="students">
        <el-table :data="form.students" border>
          <el-table-column label="报名人员" align="center" prop="name" />
          <el-table-column label="身份证号" align="center" prop="idCard" />
          <el-table-column label="性别" align="center" prop="sex" />
          <el-table-column label="实际总学时" align="center" prop="time"/>
          <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
            <template #default="scope">
              <el-button
                size="mini"
                type="text"
                @click="openStudyRecord(scope.row,'view')"
              >查看学时档案</el-button>
            </template>
          </el-table-column>
        </el-table>
        <el-button type="primary" size="mini" @click="addStudent" style="margin-top: 20px" v-if="!disable">导入报名人员</el-button>
      </el-form-item>
      <el-form-item label="历史记录(过程追溯):" prop="history">
        <el-table :data="form.history" border>
          <el-table-column label="时间" align="center" prop="time" />
          <el-table-column label="课程" align="center" prop="class" />
          <el-table-column label="教师" align="center" prop="teacher" />
          <el-table-column label="缺课学员" align="center" prop="missStudent" />
        </el-table>
      </el-form-item>
    </el-form>
    <span slot="footer" class="dialog-footer">
      <el-button @click="handleClose">取消</el-button>
      <el-button v-if="disable == false" type="primary" @click="submit">提交</el-button>
      <el-button v-else type="primary" @click="handleClose">确定</el-button>
    </span>
    <el-dialog
      :title="classTitle"
      :visible.sync="classDialog"
      append-to-body
      width="50%"
    >
      <el-form ref="ruleAddForm" :model="addForm"  :rules="addRules" label-position="right" label-width="150px" style="padding-right: 50px" element-loading-text="保存中...">
        <el-form-item label="课程名称:" prop="name">
          <el-input v-model.trim="addForm.name"/>
        </el-form-item>
        <el-form-item label="标准学时:" prop="time">
          <el-input v-model.trim="addForm.time"/>
        </el-form-item>
        <el-form-item label="上课教师:" prop="teacher">
          <el-input v-model.trim="addForm.teacher"/>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="closeAdd">取消</el-button>
        <el-button type="primary" @click="confirmAdd">确定</el-button>
      </span>
    </el-dialog>
    <el-dialog
      title="学时档案"
      :visible.sync="recordDialog"
      append-to-body
      width="50%"
    >
      <el-table :data="record" border>
        <el-table-column label="课程名称" align="center" prop="name" />
        <el-table-column label="标准学时" align="center" prop="time" />
        <el-table-column label="实际学时" align="center" prop="actualTime" />
      </el-table>
      <span slot="footer" class="dialog-footer">
        <el-button type="primary" @click="recordDialog = false">确定</el-button>
      </span>
    </el-dialog>
  </el-dialog>
</template>
<script >
import {addViolation, editViolation, uploadFile} from "@/api/coalMine/violation";
import {verifyIdCard} from "@/utils/validate";
import {MessageBox} from "element-ui";
export default {
  name: 'trainPlanDialog',
  components: {
  },
  props: ['typeList'],
  data() {
    return {
      disable: false,
      title: '新增计划',
      classTitle: '新增课程',
      open: false,
      classDialog: false,
      recordDialog: false,
      form:{
        id: null,
        isCm: 0,
        name: '',
        dep: '',
        trainWay: '',
        cardDep: '',
        classes: [],
        students: [],
        history: []
      },
      rules:{
        name:[{ required: true, message: '请填写计划名称', trigger: 'blur' }],
        dep: [{ required: true, message: '请填写培训单位', trigger: 'blur' }],
        trainWay: [{ required: true, message: '请选择培训方式', trigger: 'blur' }],
        cardDep: [{ required: true, message: '请填写发证单位', trigger: 'blur' }]
      },
      addForm: {
        name: '',
        time: '',
        teacher: ''
      },
      addRules: {
        name:[{ required: true, message: '请填写课程名称', trigger: 'blur' }],
        time: [{ required: true, message: '请填写标准学时', trigger: 'blur' }],
        teacher: [{ required: true, message: '请填写上课教师', trigger: 'blur' }],
      },
      record:[
        {
          name:'--',
          time: '5',
          actualTime:'5'
        },
        {
          name:'--',
          time: '4',
          actualTime:'4'
        }
      ]
    }
  },
  created() {
  },
  methods: {
    openDialog (val,type) {
      const t = this
      if(type == 'add'){
        t.title = '新增计划'
        t.disable = false
        t.form = {
          id: null,
          isCm: 0,
          name: '',
          dep: '',
          trainWay: '',
          cardDep: '',
          classes: [],
          students: [],
          history: []
        }
      }else{
        if(type == 'view'){
          t.title = '计划详情'
          t.disable = true
        }else{
          t.title = '编辑计划'
          t.disable = false
        }
        t.form = val
      }
      t.open = true
    },
    isValidKey(key,obj){
      return key in obj
    },
    addClass(){
      this.classDialog = true
    },
    delClass(index){
      MessageBox.confirm('删除该条信息,是否继续?', '系统提示', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning' }).then(() => {
        this.form.classes.splice(index,1);
        this.$message.success('删除成功')
      }).catch(() => {
        console.log('取消')
      });
    },
    openStudyRecord(){
      this.recordDialog = true
    },
    confirmAdd(){
      this.$refs["ruleAddForm"].validate(async(valid) =>{
        if(valid) {
          this.form.classes.push(this.addForm)
          this.closeAdd()
        }else{
          this.$message({
            type:'warning',
            message:'请完善必填信息'
          })
        }
      })
    },
    addStudent(){
      this.$message({
        type:'warning',
        message: '导入格式较严格,请联系技术人员批量导入'
      })
    },
    handleClose() {
      this.open = false;
      this.resetForm();
    },
    closeAdd(){
      this.classDialog = false
      this.addForm = {
        name: '',
        time: '',
        teacher: ''
      }
    },
    async submit(){
      this.$refs["ruleForm"].validate(async(valid) =>{
        if(valid) {
          if(this.title == '新增计划'){
            // const {id,...data} = this.form
            // const res= await addViolation(data)
            // if(res.code == 200){
            //   this.$message({
            //     type:'success',
            //     message: res.msg
            //   })
            //   this.fileList = []
            //   this.open = false
            //   this.$emit('getList')
            // }else{
            //   this.$message({
            //     type:'warning',
            //     message: res.msg
            //   })
            // }
            this.form['info'] =  '--'
            this.form['startTime'] = '2024-02-24'
            this.form['endTime'] ='2024-03-05'
            this.form['sheet'] = '19'
            this.form['num'] ='19'
            this.form['passNum'] = '19'
            this.$emit('addRecord',this.form)
          }else{
            // const res= await editViolation(this.form)
            // if(res.code == 200){
            //   this.$message({
            //     type:'success',
            //     message: res.msg
            //   })
            //   this.fileList = []
            //   this.open = false
            //   this.$emit('getList')
            // }else{
            //   this.$message({
            //     type:'warning',
            //     message: res.msg
            //   })
            // }
          }
          this.handleClose()
        }else{
          this.$message({
            type:'warning',
            message:'请完善必填信息'
          })
        }
      })
    },
    resetForm() {
      this.form = {
        id: null,
        isCm: 0,
        name: '',
        idCard: '',
        icNum: '',
        electNum: '',
        dept: '',
        violationTime: '',
        operateTypeId: null,
        violationPath: '',
        remark: ''
      }
    },
  }
}
</script>
<style scoped>
<template>
  <el-dialog :title="title" :visible.sync="open" append-to-body width="50%" :before-close="handleClose">
    <el-form ref="ruleForm" :model="form" :rules="rules" label-position="right" label-width="150px"
      style="padding-right: 50px" element-loading-text="保存中...">
      <el-form-item label="计划名称:" prop="name">
        <el-input v-model.trim="form.name" :readonly="disable" type="textarea" />
      </el-form-item>
      <el-form-item label="培训单位:" prop="dep">
        <el-input v-model.trim="form.dep" :readonly="disable" />
      </el-form-item>
      <el-form-item label="培训方式:" prop="trainWay">
        <el-radio-group v-model="form.trainWay" :disabled="disable">
          <el-radio :label="0">面授</el-radio>
          <el-radio :label="1">线上</el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item label="发证单位:" prop="cardDep">
        <el-input v-model.trim="form.cardDep" :readonly="disable" />
      </el-form-item>
      <el-form-item label="课程管理:" prop="classes">
        <el-table :data="form.classes" border>
          <el-table-column label="课程名称" align="center" prop="name" />
          <el-table-column label="标准学时" align="center" prop="time" />
          <el-table-column label="上课教师" align="center" prop="teacher" />
          <el-table-column label="操作" align="center" class-name="small-padding fixed-width" v-if="!disable">
            <template #default="scope">
              <el-button size="mini" type="text" style="color: red" @click="delClass(scope.$index)">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
        <el-button type="primary" size="mini" @click="addClass" style="margin-top: 20px"
          v-if="!disable">添加课程</el-button>
      </el-form-item>
      <el-form-item label="学员管理:" prop="students">
        <el-table :data="form.students" border>
          <el-table-column label="报名人员" align="center" prop="name" />
          <el-table-column label="身份证号" align="center" prop="idCard" />
          <el-table-column label="性别" align="center" prop="sex" />
          <el-table-column label="实际总学时" align="center" prop="time" />
          <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
            <template #default="scope">
              <el-button size="mini" type="text" @click="openStudyRecord(scope.row,'view')">查看学时档案</el-button>
            </template>
          </el-table-column>
        </el-table>
        <el-button type="primary" size="mini" @click="addStudent" style="margin-top: 20px"
          v-if="!disable">导入报名人员</el-button>
      </el-form-item>
      <el-form-item label="历史记录(过程追溯):" prop="history">
        <el-table :data="form.history" border>
          <el-table-column label="时间" align="center" prop="time" />
          <el-table-column label="课程" align="center" prop="class" />
          <el-table-column label="教师" align="center" prop="teacher" />
          <el-table-column label="缺课学员" align="center" prop="missStudent" />
        </el-table>
      </el-form-item>
    </el-form>
    <span slot="footer" class="dialog-footer">
      <el-button @click="handleClose">取消</el-button>
      <el-button v-if="disable == false" type="primary" @click="submit">提交</el-button>
      <el-button v-else type="primary" @click="handleClose">确定</el-button>
    </span>
    <el-dialog :title="classTitle" :visible.sync="classDialog" append-to-body width="50%">
      <el-form ref="ruleAddForm" :model="addForm" :rules="addRules" label-position="right" label-width="150px"
        style="padding-right: 50px" element-loading-text="保存中...">
        <el-form-item label="课程名称:" prop="name">
          <el-input v-model.trim="addForm.name" />
        </el-form-item>
        <el-form-item label="标准学时:" prop="time">
          <el-input v-model.trim="addForm.time" />
        </el-form-item>
        <el-form-item label="上课教师:" prop="teacher">
          <el-input v-model.trim="addForm.teacher" />
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="closeAdd">取消</el-button>
        <el-button type="primary" @click="confirmAdd">确定</el-button>
      </span>
    </el-dialog>
    <el-dialog title="学时档案" :visible.sync="recordDialog" append-to-body width="50%">
      <el-table :data="record" border>
        <el-table-column label="课程名称" align="center" prop="name" />
        <el-table-column label="标准学时" align="center" prop="time" />
        <el-table-column label="实际学时" align="center" prop="actualTime" />
      </el-table>
      <span slot="footer" class="dialog-footer">
        <el-button type="primary" @click="recordDialog = false">确定</el-button>
      </span>
    </el-dialog>
  </el-dialog>
</template>
<script>
  import {
    addViolation,
    editViolation,
    uploadFile
  } from "@/api/coalMine/violation";
  import {
    verifyIdCard
  } from "@/utils/validate";
  import {
    MessageBox
  } from "element-ui";
  export default {
    name: 'trainPlanDialog',
    components: {},
    props: ['typeList'],
    data() {
      return {
        disable: false,
        title: '新增计划',
        classTitle: '新增课程',
        open: false,
        classDialog: false,
        recordDialog: false,
        form: {
          id: null,
          isCm: 0,
          name: '',
          dep: '',
          trainWay: '',
          cardDep: '',
          classes: [],
          students: [],
          history: [],
        },
        rules: {
          name: [{
            required: true,
            message: '请填写计划名称',
            trigger: 'blur'
          }],
          dep: [{
            required: true,
            message: '请填写培训单位',
            trigger: 'blur'
          }],
          trainWay: [{
            required: true,
            message: '请选择培训方式',
            trigger: 'blur'
          }],
          cardDep: [{
            required: true,
            message: '请填写发证单位',
            trigger: 'blur'
          }]
        },
        addForm: {
          name: '',
          time: '',
          teacher: ''
        },
        addRules: {
          name: [{
            required: true,
            message: '请填写课程名称',
            trigger: 'blur'
          }],
          time: [{
            required: true,
            message: '请填写标准学时',
            trigger: 'blur'
          }],
          teacher: [{
            required: true,
            message: '请填写上课教师',
            trigger: 'blur'
          }],
        },
        record: [{
            name: '高处安装、维护、拆除作业',
            time: '5',
            actualTime: '5'
          },
          {
            name: '基础理论',
            time: '4',
            actualTime: '4'
          }
        ]
      }
    },
    created() {
    },
    methods: {
      openDialog(val, type) {
        const t = this
        if (type == 'add') {
          t.title = '新增计划'
          t.disable = false
          t.form = {
            id: null,
            isCm: 0,
            name: '',
            dep: '',
            trainWay: '',
            cardDep: '',
            classes: [],
            students: [],
            history: [],
          }
        } else {
          if (type == 'view') {
            t.title = '计划详情'
            t.disable = true
          } else {
            t.title = '编辑计划'
            t.disable = false
          }
          t.form = val
        }
        t.open = true
      },
      isValidKey(key, obj) {
        return key in obj
      },
      addClass() {
        this.classDialog = true
      },
      delClass(index) {
        MessageBox.confirm('删除该条信息,是否继续?', '系统提示', {
          confirmButtonText: '确认',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          this.form.classes.splice(index, 1);
          this.$message.success('删除成功')
        }).catch(() => {
          console.log('取消')
        });
      },
      openStudyRecord() {
        this.recordDialog = true
      },
      confirmAdd() {
        this.$refs["ruleAddForm"].validate(async (valid) => {
          if (valid) {
            this.form.classes.push(this.addForm)
            this.closeAdd()
          } else {
            this.$message({
              type: 'warning',
              message: '请完善必填信息'
            })
          }
        })
      },
      addStudent() {
        this.$message({
          type: 'warning',
          message: '导入格式较严格,请联系技术人员批量导入'
        })
      },
      handleClose() {
        this.open = false;
        this.resetForm();
      },
      closeAdd() {
        this.classDialog = false
        this.addForm = {
          name: '',
          time: '',
          teacher: ''
        }
      },
      async submit() {
        this.$refs["ruleForm"].validate(async (valid) => {
          if (valid) {
            await this.submitUpload()
            if (this.title == '新增计划') {
              const {
                id,
                ...data
              } = this.form
              const res = await addViolation(data)
              if (res.code == 200) {
                this.$message({
                  type: 'success',
                  message: res.msg
                })
                this.fileList = []
                this.open = false
                this.$emit('getList')
              } else {
                this.$message({
                  type: 'warning',
                  message: res.msg
                })
              }
            } else {
              const res = await editViolation(this.form)
              if (res.code == 200) {
                this.$message({
                  type: 'success',
                  message: res.msg
                })
                this.fileList = []
                this.open = false
                this.$emit('getList')
              } else {
                this.$message({
                  type: 'warning',
                  message: res.msg
                })
              }
            }
          } else {
            this.$message({
              type: 'warning',
              message: '请完善必填信息'
            })
          }
        })
      },
      resetForm() {
        this.form = {
          id: null,
          isCm: 0,
          name: '',
          idCard: '',
          icNum: '',
          electNum: '',
          dept: '',
          violationTime: '',
          operateTypeId: null,
          violationPath: '',
          remark: ''
        }
      },
    }
  }
</script>
<style scoped>
</style>
src/views/notCoalMine/nTrainManage/index.vue
@@ -103,7 +103,7 @@
    />
    <trainPlan-dialog ref="trainPlanDialog" @getList="getList" :typeList="typeList"  @addRecord="addNew"></trainPlan-dialog>
    <el-dialog
      title="培训记录"
      title="培训记录追溯"
      :visible.sync="recordDialog"
      append-to-body
      width="50%"
@@ -141,56 +141,63 @@
      recordDialog: false,
      dataList: [
        {
          name: '计划1',
          info: '--',
          name: '2024喀什源天信息管理咨询有限公司特种作业人员高处作业高处安装、维护、拆除作业复训3期次',
          info: '高处作业',
          startTime: '2024-02-24',
          endTime: '2024-03-05',
          sheet: '19',
          num: '19',
          passNum: '19',
          dep: '--',
          dep: '喀什源天信息管理咨询有限公司',
          trainWay: 0,
          cardDep: '--',
          cardDep: '新疆维吾尔自治区应急管理厅',
          classes: [
            {
              id: 1,
              name: '--',
              name: '高处安装、维护、拆除作业',
              time: 5,
              teacher: '--'
              teacher: '董建刚'
            },
            {
              id: 5,
              name: '--',
              name: '基础理论',
              time: 4,
              teacher: '--'
              teacher: '陶春荣'
            }
          ],
          students: [
            {
              id: 1,
              name: '--',
              name: '代清华',
              idCard: 666,
              sex: '男',
              time: 9
            },
            {
              id: 5,
              name: '--',
              name: '拜科日·马木提',
              idCard: 888,
              sex: '女',
              sex: '男',
              time: 9
            }
          ],
          history: []
          history: [
{
              time: '2024-3-29',
              class: '基础理论',
              teacher: '陶春荣',
              missStudent: '无'
            }
          ]
        },
        {
          name: '计划2',
          info: '--',
          name: '2024新疆新发展信息科技有限公司特种作业人员制冷与空调作业制冷与空调设备运行操作作业复训2期次',
          info: '    制冷与空调作业',
          startTime: '2024-02-24',
          endTime: '2024-03-04',
          sheet: '19',
          num: '19',
          passNum: '19',
          sheet: '1',
          num: '1',
          passNum: '1',
          dep: '--',
          trainWay: 0,
          cardDep: '--',
@@ -238,7 +245,13 @@
        pageNum: 1,
        pageSize: 10
      },
      record: []
      record: [
        {time:'2024-3-29',
        class:'基础理论',
        teacher:'陶春荣',
        missStudent:'无'
        }
      ]
    };
  },
  created() {
src/views/system/subSys/index.vue
@@ -2,39 +2,42 @@
  <div class="app-container" style="width: 100%;height: calc(100vh - 84px)">
    <div class="container">
      <div>
        <a href="https://222.82.242.194:1443/">
        <el-image fit="fill" :src="cover" style="width: 100%"></el-image>
        <div>文字描述</div>
        <div>远程监巡考系统管理</div>
        </a>
      </div>
      <div>
        <el-image fit="fill" :src="cover" style="width: 100%"></el-image>
        <div>文字描述</div>
        <a href="http://117.190.86.66:8616/">
        <el-image fit="fill" :src="fees" style="width: 100%"></el-image>
        <div>特种作业考试缴费系统</div>
        </a>
      </div>
      <div>
        <el-image fit="fill" :src="cover" style="width: 100%"></el-image>
        <div>文字描述</div>
        <a href="http://47.109.31.73:81/">
        <el-image fit="fill" :src="history" style="width: 100%"></el-image>
        <div>历史数据存档</div>
        </a>
      </div>
      <div>
        <el-image fit="fill" :src="cover" style="width: 100%"></el-image>
        <div>文字描述</div>
      </div>
      <div>
        <el-image fit="fill" :src="cover" style="width: 100%"></el-image>
        <div>文字描述</div>
      </div>
    </div>
  </div>
</template>
<script>
import cover from '@/assets/images/systemCover.jpg'
import cover from '@/assets/images/invigilation.png'
import history from '@/assets/images/history.png'
import fees from '@/assets/images/fees.png'
export default {
  name: "cardPlatform",
  dicts: [],
  components: { },
  data() {
    return {
      cover: cover
      cover,
      history,
      fees
    }
  },
  created() {
@@ -59,10 +62,10 @@
    align-items: center;
    padding: 0 10px 10px;
    box-sizing: border-box;
    width: 25%;
    width: 33%;
    div{
      font-size: 14px;
      margin-top: 20px;
      margin-top: 33px;
      text-align: center;
    }
  }