| | |
| | | <template> |
| | | <el-select v-if="isMounted" v-bind="$attrs" :remote-method="remoteMethod" @change="selectValueUser"> |
| | | <div v-infinite-scroll="loadMore" style="overflow: hidden"> |
| | | <el-option v-for="dict in list" :key="dict.id" :label="dict.name" :value="dict.name" /> |
| | | <el-option v-for="dict in list" :key="dict.id" :label="dict.username" :value="dict.username" /> |
| | | </div> |
| | | </el-select> |
| | | </template> |
| | |
| | | const list = ref([ |
| | | { |
| | | id: '', |
| | | name: '无上级账号' |
| | | username: '无上级账号' |
| | | } |
| | | ]) |
| | | const queryFrom = ref({ |
| | |
| | | const emit = defineEmits(["getval"]); |
| | | const selectValueUser = (val) => { |
| | | list.value.forEach(item => { |
| | | if(item.name === val){ |
| | | if(item.username === val){ |
| | | emit('getval',item.id) |
| | | } |
| | | }) |
| | |
| | | props.methods(queryFrom.value).then(res => { |
| | | const obj = { |
| | | id: '', |
| | | name: '无上级账号' |
| | | username: '无上级账号' |
| | | } |
| | | if(type === 'change'){ |
| | | list.value = res.data.list |
| | |
| | | |
| | | <template> |
| | | <div class="greetings"> |
| | | <div class="greetings" v-loading="loading"> |
| | | <el-upload accept=".mp4, .mp3, .xls, .xlsx, .doc, .docx, .ppt, .pptx, .pdf" :on-change="handleFileChange" :on-preview="view" :auto-upload="false" ref="uploadfileComponent" :limit="1" :on-exceed="handleExceed" v-model:file-list="fileList"> |
| | | <template #trigger> |
| | | <el-button type="primary">选择文件</el-button> |
| | |
| | | const fileList=ref([]) |
| | | const uploadfileComponent=ref(null) |
| | | const emit = defineEmits(["getFile"]); |
| | | const loading = ref(false) |
| | | const props = defineProps({ |
| | | responseType: { |
| | | type: Number, |
| | |
| | | }); |
| | | return false |
| | | } |
| | | |
| | | const filetype = container.file.raw.name.split(".").pop(); |
| | | const extension = (filetype === "mp4" || filetype ==="mp3" || filetype ==="xls" || filetype === "xlsx" || filetype ==="doc" || filetype ==="docx" || filetype === "ppt" || filetype ==="pptx" || filetype ==="pdf"); |
| | | if (!extension ) { |
| | |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | loading.value = true |
| | | //文件分片 |
| | | const chunkList=createFileChunk(container.file.raw) |
| | | console.log('文件分了多少片:',chunkList.length) |
| | |
| | | })) |
| | | |
| | | uploadChunks(fileChunkList) |
| | | loading.value = false |
| | | } |
| | | |
| | | //文件分片 |
| | |
| | | :title="title" |
| | | width="500px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :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"> |
| | |
| | | :title="title" |
| | | width="50%" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <!-- 表格数据 --> |
| | | <el-table |
| | |
| | | :title="state.title" |
| | | width="50%" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <el-table v-loading="state.loading" :data="state.dataList" :border="true"> |
| | | <el-table-column label="创建时间" prop="createTime" align="center" width="180" /> |
| | |
| | | :title="title" |
| | | width="500px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :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="name"> |
| | |
| | | :title="title" |
| | | width="550px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="100px" > |
| | | <el-form-item label="章名称:" prop="name"> |
| | |
| | | if(title.value === '新增'){ |
| | | if(state.chapter.chapterId){ |
| | | const {id, ...data} = JSON.parse(JSON.stringify(state.chapter)) |
| | | data.sort = state.form.sort |
| | | const res = await addChapterPeriod(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | |
| | | }else if(title.value === '编辑'){ |
| | | if(state.chapter.chapterId){ |
| | | const {...data} = JSON.parse(JSON.stringify(state.chapter)) |
| | | data.sort = state.form.sort |
| | | const res = await editChapterPeriod(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | |
| | | title="选择资源" |
| | | width="600px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <div style="margin-bottom: 10px"> |
| | | <el-form> |
| | |
| | | <el-input style="width: 20%" v-model="data.queryParams.name "></el-input> |
| | | <el-button type="primary" style="margin-left: 30px" @click="getList">查询</el-button> |
| | | <el-button plain @click="reset">重置</el-button> |
| | | <el-button type="primary" @click="openResource">资源上传</el-button> |
| | | </el-form-item> |
| | | |
| | | </el-form> |
| | | </div> |
| | | <!-- 表格数据 --> |
| | |
| | | @pagination="getList" |
| | | /> |
| | | </el-dialog> |
| | | <resource-dialog ref="resourceRef" @getList="getList"></resource-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue"; |
| | | import {ElMessage, ElMessageBox} from "element-plus"; |
| | | import resourceDialog from '@/views/onlineEducation/courseManage/courseResource/componets/resourceDialog.vue' |
| | | import {checkResourceName, delResource, getResource} from "@/api/onlineEducation/courseResource"; |
| | | import {checkName} from "@/api/onlineEducation/company"; |
| | | const { proxy } = getCurrentInstance(); |
| | | const loading = ref(false); |
| | | const emit = defineEmits(["chooseRes"]); |
| | | const dialogRef = ref(); |
| | | const resourceRef = ref() |
| | | const data = reactive({ |
| | | queryParams: { |
| | | pageNum: 1, |
| | |
| | | loading.value = false |
| | | } |
| | | |
| | | const openResource = () => { |
| | | resourceRef.value.openDialog('add',{}) |
| | | } |
| | | |
| | | const choose = (value) => { |
| | | console.log("co",value) |
| | | emit('chooseRes',value) |
| | |
| | | <el-table-column label="章节名称" > |
| | | <template #default="scope"> |
| | | <span>{{scope.row.name}}</span> |
| | | <span v-if="scope.row.chapterId" style="font-size: 14px;margin-left: 5px">【{{scope.row.resource.resourceType === 1 ? '视频:':scope.row.resource.resourceType === 2 ? '音频:':'文档:'}}{{scope.row.resource.name}}】| {{scope.row.timeFormat}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="排序" prop="sort" align="center" width="80" /> |
| | |
| | | } |
| | | const res = await getChapters(param); |
| | | if(res.code === 200){ |
| | | dataList.value = res.data |
| | | dataList.value = res.data.map(item => { |
| | | return { |
| | | ...item, |
| | | timeFormat: item.resourceType === 1 || item.resourceType === 2 ? secondsToTime(item.resourceLength) : item.docPage + '页' |
| | | } |
| | | }) |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | loading.value = false; |
| | | console.log('dataList.value',dataList.value) |
| | | } |
| | | const secondsToTime = (seconds) => { |
| | | const hours = Math.floor(seconds / 3600); |
| | | const minutes = Math.floor((seconds % 3600) / 60); |
| | | const secs = seconds % 60; |
| | | |
| | | return [ |
| | | hours, |
| | | hours > 0 ? pad(minutes) : minutes, |
| | | pad(secs) |
| | | ].join(':'); |
| | | } |
| | | const pad = (number) => { |
| | | return (number < 10 ? '0' : '') + number; |
| | | } |
| | | |
| | | const openDialog = (type, value) => { |
| | | dataList.value.forEach(item => { |
| | |
| | | :title="title" |
| | | width="550px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="130px" > |
| | | <el-form-item label="资源名称:" prop="name" > |
| | |
| | | const validateName = (rule, value, callback)=>{ |
| | | if(value === ''){ |
| | | callback(new Error('请输入资源名称')) |
| | | }else if(title.value === '编辑' && value === startUsername.value){ |
| | | }else if(title.value === '资源编辑' && value === startUsername.value){ |
| | | callback() |
| | | }else{ |
| | | let param = {} |
| | | if(title.value === '新增') { |
| | | if(title.value === '资源新增') { |
| | | param = { |
| | | name:value, |
| | | } |
| | | }else if(title.value === '编辑'){ |
| | | }else if(title.value === '资源编辑'){ |
| | | param = { |
| | | name:value, |
| | | id: state.form.id |
| | |
| | | |
| | | const openDialog = async (type, value) => { |
| | | length.value = value.listLength |
| | | title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '' ; |
| | | title.value = type === 'add' ? '资源新增' : type ==='edit' ? '资源编辑' : '' ; |
| | | if(type === 'edit') { |
| | | const res = await getResourceById(value.id); |
| | | if(res.code === 200){ |
| | |
| | | const onSubmit = async () => { |
| | | const valid = await busRef.value.validate(); |
| | | if(valid){ |
| | | if(title.value === '新增'){ |
| | | if(title.value === '资源新增'){ |
| | | const {id,...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await addResource(data) |
| | | if(res.code === 200){ |
| | |
| | | reset(); |
| | | |
| | | |
| | | }else if(title.value === '编辑'){ |
| | | }else if(title.value === '资源编辑'){ |
| | | const {...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await editResource(data) |
| | | if(res.code === 200){ |
对比新文件 |
| | |
| | | <template> |
| | | <div class="notice"> |
| | | <el-dialog |
| | | v-model="dialogVisible" |
| | | :title="title" |
| | | width="50%" |
| | | :before-close="handleClose" |
| | | center |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <div style="text-align: center"> |
| | | <video v-if="showVideo" ref="videoPlayer" class="video-js" style="margin: auto auto"></video> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import { ElMessage } from "element-plus"; |
| | | import videojs from "video.js" |
| | | import { computed, nextTick, onMounted, onUnmounted,ref,reactive,watch } from "vue"; |
| | | import SparkMD5 from "spark-md5"; |
| | | import pLimit from 'p-limit' |
| | | const emit = defineEmits(["getFile"]); |
| | | |
| | | const dialogVisible = ref(false); |
| | | const title = ref(""); |
| | | const state = reactive({ |
| | | |
| | | }) |
| | | const videoPlayer = ref(null) |
| | | const myPlayer = ref(null) |
| | | const resourcePath = ref() |
| | | const showVideo = ref(false) |
| | | |
| | | const getVideo = () => { |
| | | nextTick(() => { |
| | | console.log("111111",videoPlayer.value) |
| | | myPlayer.value = videojs(videoPlayer.value, { |
| | | poster: "",//视频封面 |
| | | controls: true,//视频控件 |
| | | autoplay:true,//自动播放 |
| | | sources: [ |
| | | { |
| | | src: resourcePath.value ? "http://192.168.2.16:9000/trainexam/" + resourcePath.value : '', |
| | | // src:'', |
| | | type: 'application/x-mpegURL', |
| | | } |
| | | ], |
| | | controlBar: { |
| | | remainingTimeDisplay: { |
| | | displayNegative: false |
| | | } |
| | | }, |
| | | playbackRates: [0.5, 1, 1.5, 2]//设置播放速度 |
| | | }, onPlayerReady) |
| | | }); |
| | | } |
| | | const onPlayerReady = () => { |
| | | myPlayer.value.log("play.....") |
| | | bindVideoEvents() |
| | | } |
| | | // 绑定事件 |
| | | const bindVideoEvents = () => { |
| | | if (!myPlayer.value) return |
| | | myPlayer.value.on('play', onPlay) |
| | | myPlayer.value.on('pause', onPause) |
| | | myPlayer.value.on('ended', onEnded) |
| | | myPlayer.value.on('timeupdate', onTimeupdate) |
| | | myPlayer.value.on('loadedmetadata', onLoadedmetadata) |
| | | myPlayer.value.on('fullscreenchange', onFullscreenchange) |
| | | myPlayer.value.on('error', err => { |
| | | console.log('视频加载发生错误', err) |
| | | }) |
| | | } |
| | | const openDialog = async (value) => { |
| | | dialogVisible.value = true; |
| | | showVideo.value = true; |
| | | resourcePath.value = value.resourcePath |
| | | title.value = value.name |
| | | getVideo(); |
| | | } |
| | | |
| | | |
| | | const handleClose = () => { |
| | | showVideo.value = false; |
| | | dialogVisible.value = false; |
| | | emit("getList") |
| | | |
| | | } |
| | | const onPlay = () => { |
| | | console.log('播放视频') |
| | | } |
| | | const onPause = () => { |
| | | console.log('暂停播放') |
| | | } |
| | | const onEnded = () => {} |
| | | const onTimeupdate = () => { |
| | | console.log('播放位置已更改时,播放时间更新') |
| | | } |
| | | // 全屏切换 |
| | | const onFullscreenchange = () => { |
| | | console.log('全屏状态改变') |
| | | } |
| | | // 元数据加载完成 |
| | | const onLoadedmetadata = () => { |
| | | console.log('元数据加载完成') |
| | | |
| | | } |
| | | const dispose = () => { |
| | | resourcePath.value = '' |
| | | } |
| | | |
| | | defineExpose({ |
| | | openDialog |
| | | }); |
| | | |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .notice{ |
| | | :deep(.video-js) { |
| | | width: 500px; |
| | | height: 500px; |
| | | } |
| | | :deep(.el-form .el-form-item__label) { |
| | | font-size: 15px; |
| | | } |
| | | .file { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: flex-start; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <!-- 表格数据 --> |
| | | <el-table v-loading="loading" :data="dataList" :border="true"> |
| | | <el-table-column label="序号" type="index" align="center" width="80" /> |
| | | <el-table-column label="资源名称" prop="name" align="center" /> |
| | | <el-table-column label="资源名称" prop="name" align="center" > |
| | | <template #default="scope"> |
| | | <div style="display:flex;align-items: center;justify-content: center"> |
| | | <span >{{scope.row.name}}</span> |
| | | <VideoPlay v-if="scope.row.resourceType === 1" style="width: 1em; height: 1em; margin-left: 3px;cursor: pointer" @click="openVideo(scope.row)" /> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="资源大小" prop="sizeMB" align="center" > |
| | | </el-table-column> |
| | | <el-table-column label="资源类型" prop="resourceType" align="center" > |
| | | <template #default="scope"> |
| | | <span>{{scope.row.resourceType == 1 ? '视频':scope.row.resourceType == 2 ? '音频':'文档'}}</span> |
| | | <div style="display: flex;flex-direction: column"> |
| | | <span>{{scope.row.resourceType == 1 ? '视频':scope.row.resourceType == 2 ? '音频':'文档'}}</span> |
| | | <span style="font-size: 14px">{{scope.row.timeFormat}}</span> |
| | | </div> |
| | | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" > |
| | |
| | | v-model:limit="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | <resource-dialog ref="dialogRef" @getList="getList"></resource-dialog> |
| | | <resource-dialog ref="dialogRef" @getList="getList"></resource-dialog> |
| | | <viewVideo ref="videoRef" @getList="getList"></viewVideo> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue"; |
| | | import {getCurrentInstance, nextTick, onMounted, onUnmounted, reactive, ref, toRefs} from "vue"; |
| | | import {ElMessage, ElMessageBox} from "element-plus"; |
| | | import resourceDialog from './componets/resourceDialog.vue' |
| | | import viewVideo from './componets/viewVideo.vue' |
| | | import {checkResourceName, delResource, getResource} from "@/api/onlineEducation/courseResource"; |
| | | import {checkName} from "@/api/onlineEducation/company"; |
| | | import {VideoPlay} from "@element-plus/icons-vue"; |
| | | const { proxy } = getCurrentInstance(); |
| | | const loading = ref(false); |
| | | const dialogRef = ref(); |
| | | const videoRef = ref(); |
| | | |
| | | const data = reactive({ |
| | | queryParams: { |
| | | pageNum: 1, |
| | |
| | | data.dataList = res.data.list.map(item => { |
| | | return{ |
| | | ...item, |
| | | sizeMB: Number((item.resourceSize /1024 /1024).toFixed(2))+'MB' |
| | | sizeMB: Number((item.resourceSize /1024 /1024).toFixed(2))+'MB', |
| | | timeFormat: item.resourceType === 1 || item.resourceType === 2 ? secondsToTime(item.resourceLength) : item.docPage + '页' |
| | | } |
| | | }) |
| | | console.log("ddd",data.dataList) |
| | |
| | | const openDialog = (type, value) => { |
| | | dialogRef.value.openDialog(type, value); |
| | | } |
| | | const openVideo = (value) => { |
| | | videoRef.value.openDialog(value); |
| | | } |
| | | |
| | | const secondsToTime = (seconds) => { |
| | | const hours = Math.floor(seconds / 3600); |
| | | const minutes = Math.floor((seconds % 3600) / 60); |
| | | const secs = seconds % 60; |
| | | |
| | | return [ |
| | | hours, |
| | | hours > 0 ? pad(minutes) : minutes, |
| | | pad(secs) |
| | | ].join(':'); |
| | | } |
| | | const pad = (number) => { |
| | | return (number < 10 ? '0' : '') + number; |
| | | } |
| | | /** 重置新增的表单以及其他数据 */ |
| | | function reset() { |
| | | proxy.resetForm("roleRef"); |
| | |
| | | </el-table-column> |
| | | <el-table-column label="课程名称" prop="name" align="center" /> |
| | | <el-table-column label="课程分类" prop="categoryName" align="center" /> |
| | | <el-table-column label="要求课时" prop="period" align="center" /> |
| | | <el-table-column label="要求课时" prop="period" align="center" > |
| | | <template #default="scope"> |
| | | <span>{{ scope.row.period?(scope.row.period/60).toFixed(2).replace(/\.00$/, '') + '分钟':'' }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="提交单位" prop="companyName" align="center" /> |
| | | <el-table-column label="审核状态" prop="state" align="center" > |
| | | <template #default="scope"> |
| | | <span>{{scope.row.state == 1?'待审核':scope.row.state == 2?'审批通过':'审批不通过'}}</span> |
| | | <span>{{scope.row.state == 0?'待提交':scope.row.state == 1?'待审核':scope.row.state == 2?'审批通过':'审批不通过'}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="创建时间" prop="createTime" align="center" width="180" /> |
| | |
| | | <span v-else>--</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180"> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="240"> |
| | | <template #default="scope"> |
| | | <div v-if="scope.row.state == 2"> |
| | | <div v-if="data.isAdmin"> |
| | | <div v-if="data.isAdmin"> |
| | | <div v-if="scope.row.state !== 3"> |
| | | <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button> |
| | | <el-button link type="primary" v-if="scope.row.state == 1" @click="openApprove(scope.row)">审核</el-button> |
| | | <el-button link type="primary" @click="toChapters(scope.row)">章节</el-button> |
| | | <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button> |
| | | </div> |
| | | <div v-else>--</div> |
| | | </div> |
| | | <div v-else-if="!data.isAdmin"> |
| | | <div v-if="scope.row.state !== 2"> |
| | | <el-button link type="primary" v-if="scope.row.state == 0 || scope.row.state == 3" @click="submitApprove(scope.row)">提交审核</el-button> |
| | | <el-button link type="primary" v-if="scope.row.state == 1" @click="submitApprove(scope.row)">取消审批</el-button> |
| | | <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button> |
| | | <el-button link type="primary" @click="toChapters(scope.row)">章节</el-button> |
| | | <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button> |
| | | </div> |
| | | <div v-else><el-button link type="primary" @click="toChapters(scope.row)">章节</el-button></div> |
| | | <div v-else>--</div> |
| | | |
| | | </div> |
| | | <div v-else-if="scope.row.state == 1" > |
| | | <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button> |
| | | <el-button link type="primary" v-if="data.isAdmin" @click="openApprove(scope.row)">审核</el-button> |
| | | <el-button link type="primary" @click="toChapters(scope.row)">章节</el-button> |
| | | <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button> |
| | | </div> |
| | | <div v-else-if="scope.row.state == 3" > |
| | | <div v-if="data.isAdmin">--</div> |
| | | <div v-else> |
| | | <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button> |
| | | <el-button link type="primary" @click="submitApprove(scope.row)">提交审核</el-button> |
| | | <el-button link type="primary" @click="toChapters(scope.row)">章节</el-button> |
| | | <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button> |
| | | </div> |
| | | </div> |
| | | <!-- <div v-if="scope.row.state == 2">--> |
| | | <!-- <div v-if="data.isAdmin">--> |
| | | <!-- <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>--> |
| | | <!-- <el-button link type="primary" @click="toChapters(scope.row)">章节</el-button>--> |
| | | <!-- <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>--> |
| | | <!-- </div>--> |
| | | <!-- <div v-else><el-button link type="primary" @click="toChapters(scope.row)">章节</el-button></div>--> |
| | | <!-- </div>--> |
| | | <!-- <div v-else-if="scope.row.state == 1" >--> |
| | | <!-- <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>--> |
| | | <!-- <el-button link type="primary" v-if="data.isAdmin" @click="openApprove(scope.row)">审核</el-button>--> |
| | | <!-- <el-button link type="primary" @click="toChapters(scope.row)">章节</el-button>--> |
| | | <!-- <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>--> |
| | | <!-- </div>--> |
| | | <!-- <div v-else-if="scope.row.state == 3" >--> |
| | | <!-- <div v-if="data.isAdmin">--</div>--> |
| | | <!-- <div v-else>--> |
| | | <!-- <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>--> |
| | | <!-- <el-button link type="primary" @click="submitApprove(scope.row)">提交审核</el-button>--> |
| | | <!-- <el-button link type="primary" @click="toChapters(scope.row)">章节</el-button>--> |
| | | <!-- <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | } |
| | | } |
| | | const submitApprove = async (val) => { |
| | | const param = { |
| | | let param = { |
| | | id: val.id, |
| | | state: 1 |
| | | state: null |
| | | } |
| | | //取消审批 |
| | | if(val.state == 1){ |
| | | param.state = 0 |
| | | }else { |
| | | param.state = 1 |
| | | } |
| | | const res = await doCourse(param) |
| | | if(res.code == 200){ |
| | | ElMessage.success('提交成功') |
| | | ElMessage.success('操作成功') |
| | | await getList() |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | |
| | | :title="title" |
| | | width="50%" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <div style="margin-bottom: 20px"> |
| | | <el-checkbox v-model="state.bindBatchStu" @change="changeBind">绑定批次人员</el-checkbox> |
| | |
| | | width="800px" |
| | | :before-close="handleClose" |
| | | destroy-on-close |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" > |
| | | <span style="font-size: 20px;font-weight: 800;margin-left: 20px">考试配置</span> |
| | |
| | | console.log("label====",classifyRef.value.getCheckedNodes()[0].value) |
| | | state.form.categoryId = classifyRef.value.getCheckedNodes()[0].value |
| | | // 我这里只是打印了一下label的值哦,需要赋值的话自己去赋值哦 |
| | | if (classifyRef.value.popperVisible) { |
| | | classifyRef.value.togglePopperVisible() |
| | | } |
| | | } |
| | | |
| | | const handleClose = () => { |
| | |
| | | <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"> |
| | | <el-table-column label="完成人数/总人数" prop="" align="center" width="135"> |
| | | <template #default="scope"> |
| | | <span>{{scope.row.paperStudentInfoVO.studentCount}}</span> |
| | | <span>{{scope.row.paperStudentInfoVO.finishCount}}/{{scope.row.paperStudentInfoVO.studentCount}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="合格人数" prop="" align="center"> |
| | |
| | | :title="state.title" |
| | | width="550px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :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" > |
| | |
| | | :title="state.title" |
| | | width="550px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :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 !== '修改密码'"> |
| | |
| | | :title="title" |
| | | width="500px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :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"> |
| | |
| | | return tmp; |
| | | } |
| | | |
| | | const CascaderRef = ref() |
| | | const handleChange = ()=> { |
| | | console.log("label====",classifyRef.value.getCheckedNodes()[0].value) |
| | | state.form.categoryId = classifyRef.value.getCheckedNodes()[0].value |
| | | // 我这里只是打印了一下label的值哦,需要赋值的话自己去赋值哦 |
| | | if (classifyRef.value.popperVisible) { |
| | | classifyRef.value.togglePopperVisible() |
| | | } |
| | | } |
| | | |
| | | const onSubmit = async () => { |
| | |
| | | :title="title" |
| | | width="50%" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :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="questionType"> |
| | | <el-select v-model="state.form.questionType" placeholder="请选择题型" style="width: 100%"> |
| | | <el-select v-model="state.form.questionType" placeholder="请选择题型" style="width: 100%" @change="changeType"> |
| | | <el-option |
| | | v-for="item in state.questionTypeList" |
| | | :key="item.id" |
| | |
| | | </el-form-item> |
| | | <el-form-item label="选项:" prop="content"> |
| | | <div style="display: flex;flex-direction: column;width: 100%"> |
| | | <el-button type="primary" @click="addOption" size="default" style="width: 65px;margin-bottom: 15px">添加</el-button> |
| | | <el-button :disabled="state.form.questionType ===3" type="primary" @click="addOption" size="default" style="width: 65px;margin-bottom: 15px">添加</el-button> |
| | | <div v-for="(item,index) in state.optionItem.items" :key="index" style="width: 100%"> |
| | | <div style="display: flex;align-items: center"> |
| | | <span>{{String.fromCharCode(index + 65)}}</span> |
| | | <el-input type="textarea" v-model="state.optionItem.items[index].content" placeholder="请输入选项内容" style="width: 100%;margin-left: 20px;margin-bottom: 10px"></el-input> |
| | | <Delete style="width: 15px; height: 15px; margin-left: 8px;color: #ed5565" @click="delOption(index)" /> |
| | | <el-input :disabled="state.form.questionType ===3" type="textarea" v-model="state.optionItem.items[index].content" placeholder="请输入选项内容" style="width: 100%;margin-left: 20px;margin-bottom: 10px"></el-input> |
| | | <Delete v-if="state.form.questionType !==3" style="width: 15px; height: 15px; margin-left: 8px;color: #ed5565" @click="delOption(index)" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="解析:" prop="answer"> |
| | | <el-form-item label="解析:" > |
| | | <el-input type="textarea" v-model="state.optionItem.analyze" placeholder="请输入题目解析" style="width: 100%;margin-bottom: 10px"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="正确答案:" prop="answer"> |
| | |
| | | questionType: [{required: true, trigger: "blur", message: '请选择题目类型'}], |
| | | bankName: [{required: true, trigger: "blur", message: '请选择归属题库'}], |
| | | title: [{required: true, trigger: "blur", message: '请输入题目内容'}], |
| | | // answer: [{required: true, trigger: "blur", message: '请选择正确答案'}], |
| | | answer: [{required: true, trigger: "blur", message: '请选择正确答案'}], |
| | | }, |
| | | classifyList: [], |
| | | isAdmin: false, |
| | |
| | | } |
| | | const delOption = (val) => { |
| | | state.optionItem.items.splice(val,1) |
| | | state.form.answer = '' |
| | | console.log(" state.optionItem.items.", state.optionItem.items) |
| | | } |
| | | const openDialog = async (type, value) => { |
| | |
| | | } |
| | | } |
| | | } |
| | | const changeType = () => { |
| | | if(state.form.questionType === 3) { |
| | | state.optionItem.items = [ |
| | | { |
| | | prefix: 'A', |
| | | content: '是' |
| | | |
| | | }, |
| | | { |
| | | prefix: 'B', |
| | | content: '否' |
| | | } |
| | | ] |
| | | } |
| | | |
| | | } |
| | | const handleClose = () => { |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | |
| | | :title="title" |
| | | width="550px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="100px" > |
| | | <el-form-item label="标题:" prop="title" > |
| | |
| | | :title="title" |
| | | width="500px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :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-form-item label="联系电话:" prop="phone" v-if="title!=='分配课时'"> |
| | | <el-input v-model.trim="state.form.phone" placeholder="请输入联系电话"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="当前剩余课时(秒):" prop="remainPeriod" v-if="title!=='分配课时'"> |
| | | <el-form-item label="当前剩余课时:" prop="remainPeriod" v-if="title!=='分配课时' && title==='编辑'"> |
| | | <el-input |
| | | placeholder="请输入剩余课时" |
| | | v-model.trim="state.form.remainPeriod" |
| | | @input="state.form.remainPeriod= state.form.remainPeriod.replace(/[^0-9]/g,'')"> |
| | | <template #append v-if="state.form.remainPeriod"><span>{{(state.form.remainPeriod /60).toFixed(2).replace(/\.00$/, '') + '分钟'}}</span></template> |
| | | <template #append >分钟</template> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="累计已用课时(秒):" prop="spendPeriod" v-if="title!=='分配课时'"> |
| | | <!-- <el-form-item label="累计已用课时(秒):" prop="spendPeriod" v-if="title!=='分配课时'">--> |
| | | <!-- <el-input--> |
| | | <!-- placeholder="请输入已用课时"--> |
| | | <!-- v-model.trim="state.form.spendPeriod"--> |
| | | <!-- @input="state.form.spendPeriod= state.form.spendPeriod.replace(/[^0-9]/g,'')">--> |
| | | <!-- <template #append v-if="state.form.spendPeriod"><span>{{(state.form.spendPeriod /60).toFixed(2).replace(/\.00$/, '') + '分钟'}}</span></template>--> |
| | | <!-- </el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <el-form-item label="总课时:" prop="totalPeriod"> |
| | | <el-input |
| | | placeholder="请输入已用课时" |
| | | v-model.trim="state.form.spendPeriod" |
| | | @input="state.form.spendPeriod= state.form.spendPeriod.replace(/[^0-9]/g,'')"> |
| | | <template #append v-if="state.form.spendPeriod"><span>{{(state.form.spendPeriod /60).toFixed(2).replace(/\.00$/, '') + '分钟'}}</span></template> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="总课时(秒):" prop="totalPeriod"> |
| | | <el-input |
| | | :disabled="title === '编辑'" |
| | | placeholder="请输入总课时" |
| | | v-model.trim="state.form.totalPeriod" |
| | | @input="state.form.totalPeriod = state.form.totalPeriod.replace(/[^0-9]/g,'')"> |
| | | <template #append v-if="state.form.totalPeriod"><span>{{(state.form.totalPeriod /60).toFixed(2).replace(/\.00$/, '') + '分钟'}}</span></template> |
| | | <template #append >分钟</template> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '分配课时' ; |
| | | if(type === 'edit' || type === 'distribute') { |
| | | state.form = value; |
| | | state.form.totalPeriod = value.totalPeriod / 60; |
| | | state.form.remainPeriod = value.remainPeriod/60; |
| | | startUsername.value = value.username |
| | | startPhone.value = value.phone |
| | | } |
| | |
| | | if(valid){ |
| | | if(title.value === '新增'){ |
| | | const {id, ...data} = JSON.parse(JSON.stringify(state.form)) |
| | | data.totalPeriod = data.totalPeriod * 60 |
| | | data.remainPeriod = data.remainPeriod * 60 |
| | | const res = await addCompany(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | |
| | | dialogVisible.value = false; |
| | | }else if(title.value === '编辑'){ |
| | | const {...data} = JSON.parse(JSON.stringify(state.form)) |
| | | data.totalPeriod = data.totalPeriod * 60 |
| | | data.remainPeriod = data.remainPeriod * 60 |
| | | const res = await editCompany(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | |
| | | dialogVisible.value = false; |
| | | }else if(title.value === '分配课时') { |
| | | const {creditCode,name,major,phone,remainPeriod,spendPeriod,...data} = JSON.parse(JSON.stringify(state.form)) |
| | | data.totalPeriod = data.totalPeriod * 60 |
| | | const res = await distributeCompany(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | |
| | | <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"/> |
| | | <el-table-column label="累计已用课时(分)" prop="spendPeriodMin" align="center" width="150"/> |
| | | <el-table-column label="当前剩余课时(分)" prop="remainPeriodMin" align="center" width="150" /> |
| | | <el-table-column label="累计已用课时(分)" prop="spendPeriodMin" align="center" width="150"> |
| | | <template #default="scope"> |
| | | <span>{{((scope.row.totalPeriod -scope.row.remainPeriod)/60).toFixed(2).replace(/\.00$/, '') + '分钟' }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="总课时(分)" prop="totalPeriodMin" align="center"/> |
| | | <el-table-column label="课时变动详情" align="center" class-name="small-padding fixed-width" > |
| | | <template #default="scope"> |
| | |
| | | return{ |
| | | ...item, |
| | | remainPeriodMin: item.remainPeriod ?(item.remainPeriod /60).toFixed(2).replace(/\.00$/, '') + '分钟':'', |
| | | spendPeriodMin:item.spendPeriod ?(item.spendPeriod /60).toFixed(2).replace(/\.00$/, '') + '分钟':'', |
| | | totalPeriodMin:item.totalPeriod ?(item.totalPeriod /60).toFixed(2).replace(/\.00$/, '') + '分钟':'', |
| | | } |
| | | }) |
| | |
| | | :title="title" |
| | | width="500px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :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="name" v-if="!state.isFirst"> |
| | |
| | | length.value = value.listLength |
| | | title.value = type === 'addFirst' || type === 'add' ? '新增' : type ==='edit' ? '编辑' : '' ; |
| | | if(type === 'edit') { |
| | | state.isFirst = true; |
| | | state.form = value; |
| | | state.form.status = value.status == 0; |
| | | state.form.sort = value.sort; |
| | | state.form.parentId = value.parentId; |
| | | state.form.parentName = value.name; |
| | | startUsername.value = value.username; |
| | | }else if(type === 'add' && value ){ |
| | | state.isFirst = false; |
| | |
| | | :title="state.title" |
| | | width="700px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules" label-width="150px" > |
| | | <el-form-item label="用户名:" prop="username" v-if="state.title !== '修改密码'"> |
| | |
| | | <el-form-item label="手机号:" prop="phone" v-if="state.title !== '修改密码'" > |
| | | <el-input v-model.trim="state.form.phone" :maxlength="11" :disabled="disabled" placeholder="请输入手机号"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="用户类型:" v-if="state.title !== '修改密码'"> |
| | | <el-radio-group v-model="state.form.userType" :disabled="disabled" @change="changeType"> |
| | | <el-radio :label="0" v-if="state.isAdmin">管理员</el-radio> |
| | | <el-radio :label="1" v-if="state.isAdmin">企业级</el-radio> |
| | | <el-radio :label="2" v-if="!state.isAdmin">部门级</el-radio> |
| | | <el-form-item label="用户类型:" v-if="state.title !== '修改密码'" prop="userType"> |
| | | <el-radio-group v-model="state.form.userType" :disabled="disabled" @change="changeType" v-if="state.title == '新增'"> |
| | | <el-radio :label="0" v-if="state.currentUserType == 0">管理员</el-radio> |
| | | <el-radio :label="1" v-if="state.currentUserType == 0 ">企业级</el-radio> |
| | | <el-radio :label="2" v-if="state.currentUserType == 1 ">部门级</el-radio> |
| | | <el-radio :label="3" v-if="!state.isAdmin">车间(岗位)级</el-radio> |
| | | <el-radio :label="4" v-if="state.isAdmin">其他</el-radio> |
| | | <el-radio :label="4" v-if="state.currentUserType == 0">其他</el-radio> |
| | | </el-radio-group> |
| | | <span v-else-if="state.title == '查看'">{{state.currentUserType === 0 ? '管理员' : state.currentUserType === 1 ? '企业级' : state.currentUserType === 2 ? '部门级' : state.currentUserType === 3 ? '车间级' :'其他'}}</span> |
| | | <span v-else-if="state.title == '编辑'">{{state.form.userType === 0 ? '管理员' : state.form.userType === 1 ? '企业级' : state.form.userType === 2 ? '部门级' : state.form.userType === 3 ? '车间级' :'其他'}}</span> |
| | | <!-- <el-radio-group v-model="state.form.userType" :disabled="disabled" @change="changeType" v-else-if="state.title == '编辑'">--> |
| | | <!-- <el-radio :label="0" v-if="state.currentUserType == 0">管理员</el-radio>--> |
| | | <!-- <el-radio :label="1" >企业级</el-radio>--> |
| | | <!-- <el-radio :label="2" >部门级</el-radio>--> |
| | | <!-- <el-radio :label="3" >车间(岗位)级</el-radio>--> |
| | | <!-- <el-radio :label="4" >其他</el-radio>--> |
| | | <!-- </el-radio-group>--> |
| | | </el-form-item> |
| | | <el-form-item label="选择上级企业:" prop="companyName" v-if="state.title !== '修改密码' && state.form.userType !== 0"> |
| | | <el-form-item label="所属企业:" prop="companyName" v-if="state.title !== '修改密码' && showCompany"> |
| | | <el-select |
| | | v-if="state.isAdmin" |
| | | v-model="state.form.companyName" |
| | | filterable |
| | | :disabled="disabled || state.title =='编辑'" |
| | | remote |
| | | @change="selectValue" |
| | | reserve-keyword |
| | |
| | | :value="item.name" |
| | | /> |
| | | </el-select> |
| | | <el-input v-else disabled style="width: 45%" v-model="state.form.companyName"></el-input> |
| | | <!-- <el-select--> |
| | | <!-- v-if="state.isAdmin"--> |
| | | <!-- v-model="state.form.companyName"--> |
| | |
| | | <!-- :value="item.name"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <el-input v-else disabled style="width: 45%" v-model="state.form.companyName"></el-input> |
| | | <scorllSelect |
| | | :disabled="disabled" |
| | | ref="scrollRef" |
| | | v-if="UisMounted && (state.form.userType === 2 || state.form.userType === 3)" |
| | | v-model="state.form.parentName" |
| | | @getval = "getSelectUser" |
| | | placeholder="请选择" |
| | | clearable |
| | | style="width: 45%;margin-left: 10px" |
| | | filterable |
| | | remote |
| | | searchKey="name" |
| | | :methods="getUser"> |
| | | </scorllSelect> |
| | | |
| | | |
| | | </el-form-item> |
| | | <el-form-item label="所属上级账号:" prop="companyName" v-if="showChild"> |
| | | <scorllSelect |
| | | :disabled="disabled || state.title =='编辑'" |
| | | ref="scrollRef" |
| | | v-model="state.form.parentName" |
| | | @getval = "getSelectUser" |
| | | placeholder="请选择" |
| | | clearable |
| | | style="width: 45%;" |
| | | filterable |
| | | remote |
| | | searchKey="name" |
| | | :methods="getUser"> |
| | | </scorllSelect> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer v-if="state.title !='查看'"> |
| | |
| | | password: '', |
| | | confirmPassword: '', |
| | | username: '', |
| | | userType: 0, |
| | | userType: null, |
| | | sex: 0, |
| | | companyId: null, |
| | | parentId: null |
| | |
| | | password: [{ required: true, validator: validatePwd, trigger: 'blur' }], |
| | | confirmPassword: [{ required: true, validator: equalToPassword, trigger: 'blur' }], |
| | | phone: [{ required: true, validator: validateUserPhone, trigger: 'blur' }], |
| | | userType: [{ required: true, message: '请选择用户类型', trigger: 'blur' }], |
| | | }, |
| | | companyList: [], |
| | | userList: [ |
| | |
| | | cloading:false, |
| | | totlePage: 0, |
| | | userParam: {}, |
| | | isAdmin: false |
| | | isAdmin: false, |
| | | currentUserType: null |
| | | |
| | | }) |
| | | const UisMounted = ref(false); |
| | |
| | | UisMounted.value = true; |
| | | |
| | | }); |
| | | |
| | | const showCompany = ref(false) |
| | | const showChild = ref(false) |
| | | const disabled = ref(false); |
| | | const userInfo = ref() |
| | | const openDialog = async (type, value) => { |
| | | const userInfo = JSON.parse(Cookies.get('userInfo')) |
| | | console.log("userInfo",userInfo) |
| | | if(userInfo.userType === 0){ |
| | | userInfo.value = JSON.parse(Cookies.get('userInfo')) |
| | | console.log("userInfo",userInfo.value) |
| | | state.currentUserType = userInfo.value.userType |
| | | if(state.currentUserType === 0){ |
| | | state.isAdmin = true; |
| | | state.form.userType = 0; |
| | | }else { |
| | | state.isAdmin = false; |
| | | state.form.companyId = userInfo.companyId; |
| | | state.form.companyName = userInfo.companyName; |
| | | state.form.userType = 1; |
| | | state.form.companyId = userInfo.value.companyId; |
| | | state.form.companyName = userInfo.value.companyName; |
| | | } |
| | | |
| | | if(type !== 'view' && type !== 'pwd'){ |
| | |
| | | const res = await getUserById(value.id); |
| | | if(res.code === 200){ |
| | | state.form = res.data |
| | | if(res.data.userType === 2|| res.data.userType === 3){ |
| | | if(res.data.userType === 3){ |
| | | showCompany.value = true; |
| | | showChild.value = true |
| | | }else if(res.data.userType === 2 || res.data.userType === 1 || res.data.userType === 4){ |
| | | showCompany.value = true; |
| | | showChild.value = false; |
| | | } |
| | | if(res.data.userType === 3){ |
| | | if(!res.data.parentId){ |
| | | state.form.parentId = '' |
| | | state.form.parentName = '无上级账号' |
| | |
| | | |
| | | const finshed = ref(false) |
| | | const loading = ref(false) |
| | | |
| | | const getCompanyList = async (val)=>{ |
| | | if(val != ""){ |
| | | loading.value = true; |
| | |
| | | } |
| | | const changeType = () => { |
| | | state.companyList = []; |
| | | if(state.isAdmin){ |
| | | state.form.companyId = null; |
| | | state.form.companyName = ''; |
| | | } |
| | | state.form.parentId = null; |
| | | state.form.parentName = ''; |
| | | if(state.form.userType === 2 || state.form.userType === 3 ){ |
| | | state.form.companyId = null; |
| | | state.form.companyName = ''; |
| | | //当前是管理员级用户 |
| | | if(state.currentUserType === 0){ |
| | | if(state.form.userType === 0){ |
| | | showCompany.value = false; |
| | | showChild.value = false; |
| | | }else { |
| | | showCompany.value = true; |
| | | showChild.value = false; |
| | | } |
| | | } |
| | | //当前是企业级/其他用户选择部门 |
| | | if((state.currentUserType === 1 && state.form.userType === 2) || (state.currentUserType === 4 && state.form.userType === 2)){ |
| | | state.form.parentId = userInfo.value.id; |
| | | state.form.companyName = userInfo.value.companyName |
| | | state.form.companyId = userInfo.value.companyId; |
| | | showChild.value = false; |
| | | showCompany.value = true; |
| | | |
| | | } //当前是企业级/其他用户选择车间 |
| | | else if((state.currentUserType === 1 && state.form.userType === 3) || (state.currentUserType === 4 && state.form.userType === 3)){ |
| | | state.form.companyName = userInfo.value.companyName |
| | | state.form.companyId = userInfo.value.companyId; |
| | | showCompany.value = true; |
| | | showChild.value = true; |
| | | const param = { |
| | | userType: state.form.userType-1, |
| | | userType: 2, |
| | | companyId: state.form.companyId, |
| | | } |
| | | scrollRef.value.getList(param,'change'); |
| | | nextTick(() => { |
| | | scrollRef.value.getList(param,'change'); |
| | | }) |
| | | } |
| | | //当前是部门级选择车间 |
| | | if((state.currentUserType === 2 && state.form.userType === 3)){ |
| | | state.form.parentId = userInfo.value.id; |
| | | state.form.companyName = userInfo.value.companyName |
| | | state.form.companyId = userInfo.value.companyId; |
| | | showCompany.value = true; |
| | | showChild.value = false; |
| | | } |
| | | // if(state.isAdmin){ |
| | | // state.form.companyId = null; |
| | | // state.form.companyName = ''; |
| | | // } |
| | | // state.form.parentId = null; |
| | | // state.form.parentName = ''; |
| | | // if(state.form.userType === 2 || state.form.userType === 3 ){ |
| | | // const param = { |
| | | // userType: state.form.userType-1, |
| | | // companyId: state.form.companyId, |
| | | // } |
| | | // scrollRef.value.getList(param,'change'); |
| | | // } |
| | | } |
| | | |
| | | const handleClose = () => { |
| | |
| | | password: '', |
| | | confirmPassword: '', |
| | | username: '', |
| | | userType: 0, |
| | | userType: null, |
| | | sex: 0, |
| | | companyId: null, |
| | | parentId: null |
| | | } |
| | | showCompany.value = false; |
| | | showChild.value = false; |
| | | state.userList = []; |
| | | state.companyList = []; |
| | | state.pageNum = 1; |
| | |
| | | state.companyList.forEach(item => { |
| | | if(item.name === val){ |
| | | state.form.companyId = item.id |
| | | if(state.form.userType === 2 || state.form.userType === 3 ){ |
| | | const param = { |
| | | userType: state.form.userType-1, |
| | | companyId: state.form.companyId, |
| | | } |
| | | scrollRef.value.getList(param,'change'); |
| | | } |
| | | } |
| | | }) |
| | | } |
| | |
| | | }); |
| | | |
| | | const { queryParams, total, dataList } = toRefs(data); |
| | | |
| | | const userInfo = ref() |
| | | onMounted(()=>{ |
| | | userInfo.value = JSON.parse(Cookies.get('userInfo')) |
| | | getList() |
| | | }) |
| | | |
| | |
| | | } |
| | | |
| | | const openDialog = (type, value) => { |
| | | if(userInfo.value.userType === 3){ |
| | | ElMessage.warning('车间级用户不能新增') |
| | | return; |
| | | } |
| | | dialogRef.value.openDialog(type, value); |
| | | } |
| | | |