启动器功能,模型管理
This commit is contained in:
parent
30e21b71fb
commit
6888028201
|
|
@ -16,7 +16,7 @@ export const GetModelList = (params) => {
|
||||||
export const GetModelDetails = (params) => {
|
export const GetModelDetails = (params) => {
|
||||||
return get('/api/GetModelDetails', params)
|
return get('/api/GetModelDetails', params)
|
||||||
}
|
}
|
||||||
|
//
|
||||||
// 新增成绩管理列表
|
// 新增成绩管理列表
|
||||||
export const AddExam = (params) => {
|
export const AddExam = (params) => {
|
||||||
return post('/api/AddExam', params)
|
return post('/api/AddExam', params)
|
||||||
|
|
@ -25,7 +25,18 @@ export const AddExam = (params) => {
|
||||||
export const EditExamList = (params) => {
|
export const EditExamList = (params) => {
|
||||||
return post('/api/EditExam', params)
|
return post('/api/EditExam', params)
|
||||||
}
|
}
|
||||||
|
// 编辑启动器
|
||||||
|
export const EditStarter = (params) => {
|
||||||
|
return post('/api/EditStarter', params)
|
||||||
|
}
|
||||||
|
// 上传文件接口
|
||||||
|
export const apiUploadList = (url, params) => {
|
||||||
|
return uploadFile('/api/Upload' + url, params)
|
||||||
|
}
|
||||||
|
// 删除文件
|
||||||
|
export const DeleteFile = (params) => {
|
||||||
|
return get('/api/DeleteFile', params)
|
||||||
|
}
|
||||||
// 编辑器树结构
|
// 编辑器树结构
|
||||||
export const GetFaultTree = (params) => {
|
export const GetFaultTree = (params) => {
|
||||||
return get('/api/GetFaultTree', params)
|
return get('/api/GetFaultTree', params)
|
||||||
|
|
@ -92,9 +103,9 @@ export const GetPlatformArea = (params) => {
|
||||||
export const GetLine = (params) => {
|
export const GetLine = (params) => {
|
||||||
return get('/api/GetLine', params)
|
return get('/api/GetLine', params)
|
||||||
}
|
}
|
||||||
|
// 编辑模型
|
||||||
export const EditExam = (params) => {
|
export const EditModel = (params) => {
|
||||||
return post('/api/EditExam', params)
|
return post('/api/EditModel', params)
|
||||||
}
|
}
|
||||||
export const GetExamDetails = (params) => {
|
export const GetExamDetails = (params) => {
|
||||||
return get('/api/GetExamDetails', params)
|
return get('/api/GetExamDetails', params)
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ const routes = [
|
||||||
{
|
{
|
||||||
path: '/',
|
path: '/',
|
||||||
name: '',
|
name: '',
|
||||||
redirect: '/home'
|
redirect: '/ExaminationManagement'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/login',
|
path: '/login',
|
||||||
|
|
@ -26,12 +26,12 @@ const routes = [
|
||||||
{
|
{
|
||||||
path: '/home',
|
path: '/home',
|
||||||
component: () => import('@/views/home/index.vue'),
|
component: () => import('@/views/home/index.vue'),
|
||||||
meta: { sort: 1, title: '测试', icon: '' }
|
meta: { sort: 1, title: '模型管理', icon: '' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/ExaminationManagement',
|
path: '/ExaminationManagement',
|
||||||
component: () => import('@/views/ExaminationManagement/index.vue'),
|
component: () => import('@/views/ExaminationManagement/index.vue'),
|
||||||
meta: { sort: 1, title: '考试管理', icon: '' }
|
meta: { sort: 1, title: '启动器管理', icon: '' }
|
||||||
}
|
}
|
||||||
|
|
||||||
// {
|
// {
|
||||||
|
|
|
||||||
|
|
@ -1,58 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="PageContent">
|
<div class="PageContent">
|
||||||
<!-- <div class="WebToolbar">
|
|
||||||
<div class="FormComponent">
|
|
||||||
<el-form :inline="true" :model="formInline" class="demo-form-inline">
|
|
||||||
<el-form-item label="状态">
|
|
||||||
<el-select v-model="formInline.Status" placeholder="请选择状态" clearable>
|
|
||||||
<el-option label="未发布" value="未发布" />
|
|
||||||
<el-option label="已发布" value="已发布" />
|
|
||||||
<el-option label="已结束" value="已结束" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="软件名称">
|
|
||||||
<el-input
|
|
||||||
v-model="formInline.ExamName"
|
|
||||||
placeholder="请输入考试名称"
|
|
||||||
clearable
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
<div class="ButtonAssembly">
|
|
||||||
<el-button style="color: #fff" @click="queryData()">
|
|
||||||
<img src="../../assets/menu/search.png" alt="" />
|
|
||||||
<span>查询</span>
|
|
||||||
</el-button>
|
|
||||||
<el-button style="color: #1d2129" @click="resetFormInline">
|
|
||||||
<img src="../../assets/menu/reset.png" alt="" />
|
|
||||||
<span>重置</span>
|
|
||||||
</el-button>
|
|
||||||
</div>
|
|
||||||
</div> -->
|
|
||||||
<div class="Tabulation">
|
<div class="Tabulation">
|
||||||
<div class="actionBar">
|
<div class="actionBar">
|
||||||
<h1>考试列表</h1>
|
<h1>考试列表</h1>
|
||||||
<!-- <div class="Worktop">
|
|
||||||
<el-button @click="goToAboutPage">编辑器</el-button>
|
|
||||||
<el-button @click="handleReleaseExam">发布</el-button>
|
|
||||||
<el-button @click="handleRevokeReleaseExam">撤销发布</el-button>
|
|
||||||
<el-button @click="handleFinishedExam">考试结束</el-button>
|
|
||||||
<el-button @click="handleExamination">考试名单</el-button>
|
|
||||||
|
|
||||||
<el-button class="BlueBack" @click="handleCreate">
|
|
||||||
<img src="../../assets/menu/Increased.png" alt="" />
|
|
||||||
<span>新增</span>
|
|
||||||
</el-button>
|
|
||||||
<el-button class="BlueBack" @click="dialogToLead = true">
|
|
||||||
<img src="../../assets/menu/toLead.png" alt="" />
|
|
||||||
<span>导入</span>
|
|
||||||
</el-button>
|
|
||||||
<el-button class="Delete">
|
|
||||||
<img src="../../assets/menu/delete.png" alt="" />
|
|
||||||
<span>删除</span>
|
|
||||||
</el-button>
|
|
||||||
</div> -->
|
|
||||||
</div>
|
</div>
|
||||||
<div class="ExaminationForm">
|
<div class="ExaminationForm">
|
||||||
<el-table
|
<el-table
|
||||||
|
|
@ -93,12 +43,12 @@
|
||||||
<!--新增弹框-->
|
<!--新增弹框-->
|
||||||
<el-dialog
|
<el-dialog
|
||||||
v-model="dialogFormVisible"
|
v-model="dialogFormVisible"
|
||||||
:title="ExamId ? '编辑考试' : '新增考试'"
|
title="编辑启动器"
|
||||||
width="1050"
|
width="1050"
|
||||||
center
|
center
|
||||||
@close="closeDialog"
|
@close="closeDialog"
|
||||||
>
|
>
|
||||||
<el-form ref="formRef" :model="form" :rules="state.rules" :inline="true" :label-width="formLabelWidth">
|
<el-form ref="formRef" :model="form" :rules="state.rules" :inline="false" :label-width="formLabelWidth">
|
||||||
<el-form-item label="软件名称:" prop="SoftwareName">
|
<el-form-item label="软件名称:" prop="SoftwareName">
|
||||||
<el-input v-model="form.SoftwareName" />
|
<el-input v-model="form.SoftwareName" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -108,8 +58,8 @@
|
||||||
>
|
>
|
||||||
<el-input v-model="form.VersionNumber" />
|
<el-input v-model="form.VersionNumber" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="启动器资源包" style="margin-top: 20%;margin-left: 10px;">
|
<el-form-item label="启动器资源包:" style="margin-top: 5%;margin-left: 10px;">
|
||||||
<el-upload
|
<el-upload
|
||||||
:action="action"
|
:action="action"
|
||||||
:before-remove="handleRemoveFile"
|
:before-remove="handleRemoveFile"
|
||||||
:file-list="fileListFile"
|
:file-list="fileListFile"
|
||||||
|
|
@ -131,6 +81,7 @@
|
||||||
<el-button size="mini" type="primary">上传文件</el-button>
|
<el-button size="mini" type="primary">上传文件</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
|
|
||||||
<!-- 文件列表 -->
|
<!-- 文件列表 -->
|
||||||
<transition-group
|
<transition-group
|
||||||
class="upload-file-list el-upload-list el-upload-list--text"
|
class="upload-file-list el-upload-list el-upload-list--text"
|
||||||
|
|
@ -140,24 +91,74 @@
|
||||||
<li
|
<li
|
||||||
:key="file.uid"
|
:key="file.uid"
|
||||||
class="el-upload-list__item ele-upload-list__item-content"
|
class="el-upload-list__item ele-upload-list__item-content"
|
||||||
v-for="(file, index) in list"
|
v-for="(file, index) in fileListFile"
|
||||||
>
|
>
|
||||||
<el-link :href="file.url" :underline="false" target="_blank">
|
<el-link :href="file.filePath" :underline="false" target="_blank">
|
||||||
<span class="el-icon-document">
|
<span class="el-icon-document">
|
||||||
{{ getFileName(file.name) }}
|
{{ file. fileName}}
|
||||||
</span>
|
</span>
|
||||||
</el-link>
|
</el-link>
|
||||||
<div class="ele-upload-list__item-content-action">
|
<!-- <div class="ele-upload-list__item-content-action">
|
||||||
<el-link
|
<el-link
|
||||||
:underline="false"
|
:underline="false"
|
||||||
@click="handleDelete(index)"
|
@click="handleDelete(index)"
|
||||||
type="danger"
|
type="danger"
|
||||||
>删除</el-link
|
>删除</el-link
|
||||||
>
|
>
|
||||||
</div>
|
</div> -->
|
||||||
</li>
|
</li>
|
||||||
</transition-group>
|
</transition-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="更新包资源地址:" style="margin-top: 5%;margin-left: 10px;">
|
||||||
|
<el-upload
|
||||||
|
:action="action"
|
||||||
|
:before-remove="handleRemoveFile1"
|
||||||
|
:file-list="fileListFileM"
|
||||||
|
multiple
|
||||||
|
accept=".pdf,.doc,.docx,.excel,.ppt,.pptx,.word,.xlsx,.RTF, .xls"
|
||||||
|
:on-error="handleUploadError"
|
||||||
|
:on-exceed="handleExceed"
|
||||||
|
:on-success="handleUploadSuccess"
|
||||||
|
:on-change="handChangeFile"
|
||||||
|
:on-preview="handleFormPreview"
|
||||||
|
:http-request="httpRequest"
|
||||||
|
:show-file-list="true"
|
||||||
|
:auto-upload="false"
|
||||||
|
class="upload-file-uploader horizontal-list"
|
||||||
|
ref="upload"
|
||||||
|
>
|
||||||
|
<!-- 上传按钮 -->
|
||||||
|
<template v-slot:trigger>
|
||||||
|
<el-button size="mini" type="primary">上传文件</el-button>
|
||||||
|
</template>
|
||||||
|
</el-upload>
|
||||||
|
<transition-group
|
||||||
|
class="upload-file-list el-upload-list el-upload-list--text"
|
||||||
|
name="el-fade-in-linear"
|
||||||
|
tag="ul"
|
||||||
|
>
|
||||||
|
<li
|
||||||
|
:key="file.uid"
|
||||||
|
class="el-upload-list__item ele-upload-list__item-content"
|
||||||
|
v-for="(file, index) in fileListFileM"
|
||||||
|
>
|
||||||
|
<el-link :href="file.filePath" :underline="false" target="_blank">
|
||||||
|
<span class="el-icon-document">
|
||||||
|
{{ file. fileName}}
|
||||||
|
</span>
|
||||||
|
</el-link>
|
||||||
|
<!-- <div class="ele-upload-list__item-content-action">
|
||||||
|
<el-link
|
||||||
|
:underline="false"
|
||||||
|
@click="handleDelete(index)"
|
||||||
|
type="danger"
|
||||||
|
>删除</el-link
|
||||||
|
>
|
||||||
|
</div> -->
|
||||||
|
</li>
|
||||||
|
</transition-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
|
|
@ -168,218 +169,7 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!-- 编辑弹框-->
|
|
||||||
<!-- <el-dialog
|
|
||||||
v-model="EditFormVisible"
|
|
||||||
title="新增考试"
|
|
||||||
width="1050"
|
|
||||||
center
|
|
||||||
:data="EditExamtableData"
|
|
||||||
v-if="false"
|
|
||||||
>
|
|
||||||
<el-form :model="form" :inline="true" :label-width="formLabelWidth">
|
|
||||||
<el-form-item label="考试名称:" >
|
|
||||||
<el-input v-model="form.name" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="场景:"
|
|
||||||
class="demo-form-scene"
|
|
||||||
>
|
|
||||||
<el-select v-model="form.region" placeholder="">
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="台区:" >
|
|
||||||
<el-select v-model="form.PlatformAreaName" placeholder="">
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="线路:" >
|
|
||||||
<el-select v-model="form.region" placeholder="">
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="处理日期:"
|
|
||||||
class="el-form-end"
|
|
||||||
>
|
|
||||||
<el-date-picker v-model="value2" type="date" placeholder="请选择时间" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="巡线日期:" >
|
|
||||||
<el-date-picker v-model="value1" type="date" placeholder="请选择时间" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="工单内容:"
|
|
||||||
class="backInformation"
|
|
||||||
>
|
|
||||||
<el-input
|
|
||||||
v-model="form.WorkOrderContent"
|
|
||||||
style="width: 240px"
|
|
||||||
:rows="12"
|
|
||||||
type="textarea"
|
|
||||||
placeholder="Please input"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="背景资料:" label-width="192px" >
|
|
||||||
<el-input
|
|
||||||
v-model="textarea"
|
|
||||||
style="width: 240px"
|
|
||||||
:rows="12"
|
|
||||||
type="textarea"
|
|
||||||
placeholder=""
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="考试时长:" >
|
|
||||||
<el-input v-model="form.name" autocomplete="off" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="411电缆型号及长度:">
|
|
||||||
<el-input v-model="form.name" autocomplete="off" />
|
|
||||||
<span class="example">示例:YJV22-4*95/12米</span>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="411电缆型号及长度:">
|
|
||||||
<el-input v-model="form.name" autocomplete="off" />
|
|
||||||
<span class="example">示例:YJV22-4*95/12米</span>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<template #footer>
|
|
||||||
<div class="dialog-footer">
|
|
||||||
<el-button @click="submit">确认</el-button>
|
|
||||||
<el-button type="primary" @click="EditFormVisible = false">
|
|
||||||
取消
|
|
||||||
</el-button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-dialog> -->
|
|
||||||
<!--考试名单 -->
|
|
||||||
<!-- <el-dialog v-model="dialogTabular" title="考试学员考试题目" width="1800">
|
|
||||||
<div class="functionalUnit">
|
|
||||||
<el-form :model="stateA.queryForm" :inline="true" width="800">
|
|
||||||
<el-form-item label="姓名:" width="200">
|
|
||||||
<el-input v-model="stateA.queryForm.Name" autocomplete="off" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="账号:" width="200">
|
|
||||||
<el-input v-model="stateA.queryForm.Account" autocomplete="off" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<div class="functionalUnit">
|
|
||||||
<el-button @click="getExamination">
|
|
||||||
<img src="../../assets/menu/search.png" alt="" />
|
|
||||||
<span>查询</span>
|
|
||||||
</el-button>
|
|
||||||
<el-button class="BlueBack" @click="dialogExamination = true" >
|
|
||||||
<img src="../../assets/menu/Increased.png" alt="" />
|
|
||||||
<span>新增</span>
|
|
||||||
</el-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<P class="TabularTitle">
|
|
||||||
<span style="margin-left: 20px">考试名单列表</span>
|
|
||||||
</P>
|
|
||||||
<div class="TabularList">
|
|
||||||
<el-table :data="stateA.examRosterList" style="width: 100%">
|
|
||||||
|
|
||||||
<el-table-column prop="OwnCity" abel="所在市" width="280"/>
|
|
||||||
<el-table-column prop="unit_name" label="单位" width="200"/>
|
|
||||||
<el-table-column prop="dep_name" label="部门" />
|
|
||||||
<el-table-column prop="login_name" label="账号" />
|
|
||||||
<el-table-column prop="real_name" label="姓名" />
|
|
||||||
<el-table-column prop="sex" label="性别"/>
|
|
||||||
<el-table-column prop="" label="操作" >
|
|
||||||
<template #default="{row}">
|
|
||||||
<span class="register" @click="handleCancel(row)">删除</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<template #empty>
|
|
||||||
<el-empty class="vab-data-empty" description="暂无数据" />
|
|
||||||
</template>
|
|
||||||
</el-table>
|
|
||||||
</div>
|
|
||||||
<div class="pagination">
|
|
||||||
<el-pagination
|
|
||||||
v-model:current-page="InlineForm.PageIndex"
|
|
||||||
:page-size="InlineForm.PageSize"
|
|
||||||
:small="small"
|
|
||||||
:disabled="disabled"
|
|
||||||
:background="background"
|
|
||||||
layout="total, prev, pager, next"
|
|
||||||
:total="stateA.total"
|
|
||||||
@current-change="handleCurrentChangeA"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<el-dialog v-model="dialogExamination" title="备选考试人员" width="1600">
|
|
||||||
<div class="functionalUnit">
|
|
||||||
<el-form :model="stateB.queryForm" :inline="true" width="800
|
|
||||||
<el-form-item label="姓名:" width="200">
|
|
||||||
<el-input v-model="stateB.queryForm.Name" autocomplete="off" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="账号:" width="200">
|
|
||||||
<el-input v-model="stateB.queryForm.Account" autocomplete="off" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<div class="functionalUnit">
|
|
||||||
<el-button >
|
|
||||||
<img src="../../assets/menu/search.png" alt="" />
|
|
||||||
<span>查询</span>
|
|
||||||
</el-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="ExaminationList">
|
|
||||||
<P class="TabularTitle">
|
|
||||||
<span>考试[下发各地市测试01]</span>
|
|
||||||
<span style="margin-left: 20px">备选考试人员列表</span>
|
|
||||||
</P>
|
|
||||||
<div class="TabularList">
|
|
||||||
<el-table
|
|
||||||
:data="stateB.examRosterList"
|
|
||||||
style="width: 100%"
|
|
||||||
@selection-change="handleSelChange"
|
|
||||||
>
|
|
||||||
<el-table-column type="selection" />
|
|
||||||
<el-table-column prop="LoginName" label="账号" />
|
|
||||||
<el-table-column prop="RealName" label="姓名" />
|
|
||||||
<el-table-column prop="Sex" label="性别"/>
|
|
||||||
<template #empty>
|
|
||||||
<el-empty class="vab-data-empty" description="暂无数据" />
|
|
||||||
</template>
|
|
||||||
</el-table>
|
|
||||||
<div class="addSlip">
|
|
||||||
<el-button @click="addExamRoster">
|
|
||||||
<span>添加人员</span>
|
|
||||||
</el-button>
|
|
||||||
<el-pagination
|
|
||||||
v-model:current-page="InlineForm.PageIndex"
|
|
||||||
:page-size="InlineForm.PageSize"
|
|
||||||
:small="small"
|
|
||||||
:disabled="disabled"
|
|
||||||
:background="background"
|
|
||||||
layout="total, prev, pager, next"
|
|
||||||
:total="stateB.total"
|
|
||||||
@current-change="handleCurrentChangeB"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-dialog>
|
|
||||||
</el-dialog> -->
|
|
||||||
<!-- 导入 -->
|
|
||||||
<!-- <el-dialog v-model="dialogToLead" title="导入" width="400">
|
|
||||||
<el-upload
|
|
||||||
ref="uploadRef"
|
|
||||||
action="#"
|
|
||||||
:http-request="toUpload"
|
|
||||||
:auto-upload="false"
|
|
||||||
:on-change="handleChange"
|
|
||||||
:limit="1"
|
|
||||||
:on-exceed="handleExceed"
|
|
||||||
>
|
|
||||||
<template #trigger>
|
|
||||||
<el-button type="primary">选择</el-button>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<el-button class="ml-3" type="success" @click="submitUpload">
|
|
||||||
上传
|
|
||||||
</el-button>
|
|
||||||
</el-upload>
|
|
||||||
</el-dialog> -->
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
|
@ -389,9 +179,10 @@ import { useRouter } from 'vue-router'
|
||||||
import {
|
import {
|
||||||
GetStarterList,
|
GetStarterList,
|
||||||
AddExam,
|
AddExam,
|
||||||
EditExam,
|
// EditExam,
|
||||||
GetExamDetails,
|
apiUploadList,
|
||||||
EditExamList,
|
EditExamList,
|
||||||
|
DeleteFile,
|
||||||
DeleteExam,
|
DeleteExam,
|
||||||
GetScene,
|
GetScene,
|
||||||
GetPlatformArea,
|
GetPlatformArea,
|
||||||
|
|
@ -465,16 +256,16 @@ const form = reactive({
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getTable()
|
getTable()
|
||||||
// addTable()
|
// addTable()
|
||||||
GetScene().then(res => {
|
// ().then(res => {
|
||||||
state.scenemList = res.data
|
// state.scenemList = res.data
|
||||||
console.log(res.data, 'res.data--')
|
// console.log(res.data, 'res.data--')
|
||||||
})
|
// })
|
||||||
GetPlatformArea({
|
// GetPlatformArea({
|
||||||
SceneId: 'eab5920509b011ed844e7cd30a92bb1c'
|
// SceneId: 'eab5920509b011ed844e7cd30a92bb1c'
|
||||||
}).then(res => state.platformAreaList = res.data)
|
// }).then(res => state.platformAreaList = res.data)
|
||||||
GetLine({
|
// GetLine({
|
||||||
PlatformAreaId: '28f0723409b111ed844e7cd30a92bb1c'
|
// PlatformAreaId: '28f0723409b111ed844e7cd30a92bb1c'
|
||||||
}).then(res => state.lineList = res.data)
|
// }).then(res => state.lineList = res.data)
|
||||||
})
|
})
|
||||||
|
|
||||||
// 考试列表
|
// 考试列表
|
||||||
|
|
@ -533,51 +324,132 @@ const handleCurrentChange = (val) => {
|
||||||
getTable()
|
getTable()
|
||||||
}
|
}
|
||||||
const ExamId = ref('')
|
const ExamId = ref('')
|
||||||
|
const fileM = ref('')
|
||||||
|
const fileListN = ref([])
|
||||||
|
const fileListFile = ref([])
|
||||||
|
const fileListFileM = ref([])
|
||||||
const handleEdit = async (row) => {
|
const handleEdit = async (row) => {
|
||||||
const res = await GetExamDetails({ ExamId: row.ExamId })
|
console.log('row', row)
|
||||||
console.log(res.data, 'res--')
|
const fileListFileM1 = ref([])
|
||||||
for (const key in form) {
|
const fileListFile1 = ref([])
|
||||||
form[key] = res.data[key]
|
form.SoftwareName = row.SoftwareName
|
||||||
}
|
form.VersionNumber = row.VersionNumber
|
||||||
ExamId.value = res.data.ExamId
|
const parts = row.LauncherResources.split('/')
|
||||||
|
const parts2 = row.UpdateResources.split('/')
|
||||||
|
fileListFile1.value.push({
|
||||||
|
filePath: row.LauncherResources,
|
||||||
|
fileName: parts[parts.length - 1]
|
||||||
|
})
|
||||||
|
fileListFileM1.value.push({
|
||||||
|
filePath: row.UpdateResources,
|
||||||
|
fileName: parts2[parts2.length - 1]
|
||||||
|
})
|
||||||
|
fileListFile.value = fileListFile1.value
|
||||||
|
fileListFileM.value = fileListFileM1.value
|
||||||
dialogFormVisible.value = true
|
dialogFormVisible.value = true
|
||||||
}
|
}
|
||||||
const handleCopy = (row) => {
|
const handChangeFile = (file, fileList) => {
|
||||||
ApiCopyExam({ ExamId: row.ExamId }).then(res => {
|
console.log('fileList', fileList)
|
||||||
console.log(res, 'res--')
|
console.log('file', file)
|
||||||
if (res.code === 0) {
|
// fileListN = fileList
|
||||||
ElMessage({
|
fileM.value = file.raw
|
||||||
message: '操作成功',
|
fileListN.value = fileList
|
||||||
type: 'success'
|
loadSize('File')
|
||||||
})
|
}
|
||||||
queryData()
|
// 删除文件
|
||||||
} else {
|
const handleRemoveFile = (file, fileList) => {
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
console.log('file', file.filePath)
|
||||||
}
|
console.log('fileList', fileList)
|
||||||
|
const formData = new FormData() // new一个formData事件
|
||||||
|
formData.append('Path', file.filePath) // 将file属性添加到formData里
|
||||||
|
// console.log(form.LauncherResources, 'data')
|
||||||
|
DeleteFile({ Path: file.filePath }).then((res) => {
|
||||||
|
console.log(res, 'res')
|
||||||
|
form.LauncherResources = ''
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 删除
|
const handleRemoveFile1 = (file, fileList) => {
|
||||||
const handleDelete = (row) => {
|
console.log('file', file.filePath)
|
||||||
console.log(row.ExamId, 'row--')
|
console.log('fileList', fileList)
|
||||||
ElMessageBox.confirm('确定要删除吗?', {
|
const formData = new FormData() // new一个formData事件
|
||||||
confirmButtonText: '确定',
|
formData.append('Path', file.filePath) // 将file属性添加到formData里
|
||||||
cancelButtonText: '取消',
|
// console.log(form.LauncherResources, 'data')
|
||||||
type: 'warning'
|
DeleteFile({ Path: file.filePath }).then((res) => {
|
||||||
}).then(() => {
|
console.log(res, 'res')
|
||||||
DeleteExam({ ExamId: row.ExamId }).then(res => {
|
form.UpdateResources = ''
|
||||||
console.log(res, 'res--')
|
|
||||||
if (res.code === 0) {
|
|
||||||
ElMessage({
|
|
||||||
message: '操作成功',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
queryData()
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
const S4 = () => {
|
||||||
|
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)
|
||||||
|
}
|
||||||
|
const guid = () => {
|
||||||
|
return (
|
||||||
|
S4() +
|
||||||
|
S4() +
|
||||||
|
'-' +
|
||||||
|
S4() +
|
||||||
|
'-' +
|
||||||
|
S4() +
|
||||||
|
'-' +
|
||||||
|
S4() +
|
||||||
|
'-' +
|
||||||
|
S4() +
|
||||||
|
S4() +
|
||||||
|
S4()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
const loadSize = (FolderName) => {
|
||||||
|
const size = fileM.value.size // 文件大小
|
||||||
|
const maxZrea = 8 // 设置每个分区大小 MB
|
||||||
|
const bufferSize = maxZrea * (1024 * 1024)
|
||||||
|
let fileStart = 0
|
||||||
|
let fileEnd = bufferSize
|
||||||
|
const arrFile = []
|
||||||
|
while (fileStart < size) {
|
||||||
|
const fileInfo = {
|
||||||
|
File: fileM.value.slice(fileStart, fileEnd),
|
||||||
|
Start: fileStart,
|
||||||
|
End: fileEnd
|
||||||
|
}
|
||||||
|
arrFile.push(fileInfo)
|
||||||
|
fileStart = fileEnd
|
||||||
|
fileEnd = fileStart + bufferSize
|
||||||
|
}
|
||||||
|
const count = arrFile.length
|
||||||
|
const filename = fileM.value.name + '~' + guid()
|
||||||
|
const paramFilename = fileM.value.name// 上传filename
|
||||||
|
// const filename = this.file.name; // 去掉文件后缀名
|
||||||
|
test2(count, filename, bufferSize, arrFile, size, FolderName, paramFilename)
|
||||||
|
}
|
||||||
|
const test2 = async (count, filename, bufferSize, arrFile, size, FolderName, paramFilename) => {
|
||||||
|
for (let i = 0; i < count; i++) {
|
||||||
|
const formData = new FormData() // new一个formData事件
|
||||||
|
formData.append('file', arrFile[i].File) // 将file属性添加到formData里
|
||||||
|
const url =
|
||||||
|
'?Name=' +
|
||||||
|
filename +
|
||||||
|
'&Number=' +
|
||||||
|
i +
|
||||||
|
'&BufferSize=' +
|
||||||
|
bufferSize +
|
||||||
|
'&Count=' +
|
||||||
|
count +
|
||||||
|
'&Start=' +
|
||||||
|
arrFile[i].Start +
|
||||||
|
'&End=' +
|
||||||
|
arrFile[i].End +
|
||||||
|
'&Size=' +
|
||||||
|
size +
|
||||||
|
'&FolderName=' +
|
||||||
|
FolderName
|
||||||
|
console.log('url', url)
|
||||||
|
await apiUploadList(url, formData).then((res) => {
|
||||||
|
console.log(filename, 'filename')
|
||||||
|
|
||||||
|
form.LauncherResources = res.data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
// 复制
|
// 复制
|
||||||
|
|
||||||
// 保存
|
// 保存
|
||||||
|
|
@ -652,223 +524,6 @@ const handleUpdate = async () => {
|
||||||
console.log(data.data, 'data')
|
console.log(data.data, 'data')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 发布
|
|
||||||
const handleReleaseExam = () => {
|
|
||||||
if (multipleSelection.value?.length === 0) return ElMessage.error('请先选择')
|
|
||||||
ElMessageBox.confirm('确定要发布吗?', {
|
|
||||||
confirmButtonText: '确定',
|
|
||||||
cancelButtonText: '取消',
|
|
||||||
type: 'warning'
|
|
||||||
}).then(() => {
|
|
||||||
ApiReleaseExam({ ExamId: multipleSelection.value[0].ExamId }).then(res => {
|
|
||||||
console.log(res, 'res--')
|
|
||||||
if (res.code == 0) {
|
|
||||||
ElMessage({
|
|
||||||
message: '操作成功',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
queryData()
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 撤销发布
|
|
||||||
const handleRevokeReleaseExam = () => {
|
|
||||||
if (multipleSelection.value?.length === 0) return ElMessage.error('请先选择')
|
|
||||||
ElMessageBox.confirm('确定要撤销发布吗?', {
|
|
||||||
confirmButtonText: '确定',
|
|
||||||
cancelButtonText: '取消',
|
|
||||||
type: 'warning'
|
|
||||||
}).then(() => {
|
|
||||||
ApiRevokeReleaseExam({ ExamId: multipleSelection.value[0].ExamId }).then(res => {
|
|
||||||
console.log(res, 'res--')
|
|
||||||
if (res.code === 0) {
|
|
||||||
ElMessage({
|
|
||||||
message: '操作成功',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
queryData()
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 撤销发布
|
|
||||||
const handleFinishedExam = () => {
|
|
||||||
if (multipleSelection.value?.length === 0) return ElMessage.error('请先选择')
|
|
||||||
ElMessageBox.confirm('确定要考试结束吗?', {
|
|
||||||
confirmButtonText: '确定',
|
|
||||||
cancelButtonText: '取消',
|
|
||||||
type: 'warning'
|
|
||||||
}).then(() => {
|
|
||||||
ApiFinishedExam({ ExamId: multipleSelection.value[0].ExamId }).then(res => {
|
|
||||||
console.log(res, 'res--')
|
|
||||||
if (res.code === 0) {
|
|
||||||
ElMessage({
|
|
||||||
message: '操作成功',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
queryData()
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 考试名单
|
|
||||||
const dialogTabular = ref(false)
|
|
||||||
const stateA = reactive({
|
|
||||||
total: 0,
|
|
||||||
examRosterList: [],
|
|
||||||
queryForm: {
|
|
||||||
Name: '',
|
|
||||||
Account: '',
|
|
||||||
PageIndex: 1,
|
|
||||||
PageSize: 10
|
|
||||||
}
|
|
||||||
})
|
|
||||||
const handleExamination = async () => {
|
|
||||||
if (multipleSelection.value?.length === 0) return ElMessage.error('请先选择')
|
|
||||||
getExamination()
|
|
||||||
getAddExamRosterListt()
|
|
||||||
dialogTabular.value = true
|
|
||||||
}
|
|
||||||
|
|
||||||
const getExamination = async () => {
|
|
||||||
console.log(stateA.queryForm, ' stateA.queryForm--')
|
|
||||||
const res = await ApiGetExamRosterList({
|
|
||||||
ExamId: multipleSelection.value[0].ExamId,
|
|
||||||
// ExamId: '048dd77b0a734856a86153e2feaa1d1d',
|
|
||||||
...stateA.queryForm
|
|
||||||
})
|
|
||||||
dialogTabular.value = true
|
|
||||||
stateA.examRosterList = res.data?.list || []
|
|
||||||
stateA.total = res.data?.total
|
|
||||||
console.log(res, 'res--ApiGetExamRosterList')
|
|
||||||
}
|
|
||||||
// 考试名单删除
|
|
||||||
const handleCancel = (row) => {
|
|
||||||
console.log(row.ExamUsersId, 'row--')
|
|
||||||
ElMessageBox.confirm('确定要删除吗?', {
|
|
||||||
confirmButtonText: '确定',
|
|
||||||
cancelButtonText: '取消',
|
|
||||||
type: 'warning'
|
|
||||||
}).then(() => {
|
|
||||||
DeleteExamRoster({ ExamUsersId: row.ExamUsersId }).then(res => {
|
|
||||||
console.log(res, 'res--')
|
|
||||||
if (res.code === 0) {
|
|
||||||
ElMessage({
|
|
||||||
message: '操作成功',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
getExamination()
|
|
||||||
getAddExamRosterListt()
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 考试新增名单
|
|
||||||
const dialogExamination = ref(false)
|
|
||||||
|
|
||||||
const rosterSelection = ref([])
|
|
||||||
const handleSelChange = (val) => {
|
|
||||||
console.log(val, 'val--')
|
|
||||||
rosterSelection.value = val
|
|
||||||
}
|
|
||||||
|
|
||||||
const stateB = reactive({
|
|
||||||
total: 0,
|
|
||||||
examRosterList: [],
|
|
||||||
queryForm: {
|
|
||||||
Name: '',
|
|
||||||
Account: '',
|
|
||||||
PageIndex: 1,
|
|
||||||
PageSize: 10
|
|
||||||
}
|
|
||||||
})
|
|
||||||
const handleCurrentChangeB = (val) => {
|
|
||||||
stateB.queryForm.PageIndex = val
|
|
||||||
getAddExamRosterListt()
|
|
||||||
}
|
|
||||||
const getAddExamRosterListt = async () => {
|
|
||||||
console.log(stateA.queryForm, ' stateA.queryForm--')
|
|
||||||
if (multipleSelection.value?.length === 0) return ElMessage.error('请先选择')
|
|
||||||
const res = await ApiGetAddExamRosterListt({
|
|
||||||
ExamId: multipleSelection.value[0].ExamId,
|
|
||||||
// ExamId: '048dd77b0a734856a86153e2feaa1d1d',
|
|
||||||
...stateB.queryForm
|
|
||||||
})
|
|
||||||
dialogTabular.value = true
|
|
||||||
stateB.examRosterList = res.data?.list || []
|
|
||||||
stateB.total = res.data?.total
|
|
||||||
console.log(res, 'res--ApiGetExamRosterList')
|
|
||||||
}
|
|
||||||
|
|
||||||
const addExamRoster = () => {
|
|
||||||
if (multipleSelection.value?.length === 0) return ElMessage.error('请先选择')
|
|
||||||
ApiAddExamRoster({
|
|
||||||
ExamId: multipleSelection.value[0].ExamId,
|
|
||||||
UserIdList: rosterSelection.value.map(item => item.UserId)
|
|
||||||
}).then(res => {
|
|
||||||
console.log(res, 'res--')
|
|
||||||
if (res.code === 0) {
|
|
||||||
ElMessage({
|
|
||||||
message: '操作成功',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
getExamination()
|
|
||||||
getAddExamRosterListt()
|
|
||||||
dialogExamination.value = false
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 导入
|
|
||||||
const dialogToLead = ref(false)
|
|
||||||
|
|
||||||
const uploadRef = ref()
|
|
||||||
const handleExceed = (files) => {
|
|
||||||
// submitUpload(files[0])
|
|
||||||
uploadRef.value.clearFiles()
|
|
||||||
nextTick(() => {
|
|
||||||
uploadRef.value.handleStart(files[0])
|
|
||||||
})
|
|
||||||
}
|
|
||||||
const handleChange = (uploadFile) => {
|
|
||||||
console.log(uploadFile, 'uploadFile')
|
|
||||||
// submitUpload(uploadFile.raw)
|
|
||||||
}
|
|
||||||
const submitUpload = () => {
|
|
||||||
uploadRef.value.submit()
|
|
||||||
}
|
|
||||||
const toUpload = (param) => {
|
|
||||||
if (!uploadRef.value) return ElMessage.error('请先上传文件')
|
|
||||||
const formData = new FormData()
|
|
||||||
formData.append('Files', param.file)
|
|
||||||
apiUpload('', formData).then((res) => {
|
|
||||||
console.log(res, 'res--')
|
|
||||||
if (res.code === 0) {
|
|
||||||
ElMessage({
|
|
||||||
message: '上传成功',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
queryData()
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|
@ -1086,4 +741,20 @@ const toUpload = (param) => {
|
||||||
.ml-3{
|
.ml-3{
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
}
|
}
|
||||||
|
.upload-file-uploader{
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
.el-upload-list .el-upload-list__item{
|
||||||
|
width: 33% !important;
|
||||||
|
float: left;
|
||||||
|
margin-left: -385px;
|
||||||
|
margin-top: 25px;
|
||||||
|
|
||||||
|
:deep(.horizontal-list ul .el-upload-list__item) {
|
||||||
|
width: 33%;
|
||||||
|
float: left; margin-top: 25px;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -39,8 +39,8 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="Tabulation">
|
<div class="Tabulation">
|
||||||
<div class="actionBar">
|
<div class="actionBar">
|
||||||
<h1>考试列表</h1>
|
<h1>模型列表</h1>
|
||||||
<div class="Worktop">
|
<!-- <div class="Worktop">
|
||||||
<el-button @click="goToAboutPage">编辑器</el-button>
|
<el-button @click="goToAboutPage">编辑器</el-button>
|
||||||
<el-button @click="handleReleaseExam">发布</el-button>
|
<el-button @click="handleReleaseExam">发布</el-button>
|
||||||
<el-button @click="handleRevokeReleaseExam">撤销发布</el-button>
|
<el-button @click="handleRevokeReleaseExam">撤销发布</el-button>
|
||||||
|
|
@ -59,7 +59,7 @@
|
||||||
<img src="../../assets/menu/delete.png" alt="" />
|
<img src="../../assets/menu/delete.png" alt="" />
|
||||||
<span>删除</span>
|
<span>删除</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
<div class="ExaminationForm">
|
<div class="ExaminationForm">
|
||||||
<el-table
|
<el-table
|
||||||
|
|
@ -108,41 +108,97 @@
|
||||||
center
|
center
|
||||||
@close="closeDialog"
|
@close="closeDialog"
|
||||||
>
|
>
|
||||||
<el-form ref="formRef" :model="form" :rules="state.rules" :inline="true" :label-width="formLabelWidth">
|
<el-form ref="formRef" :model="form" :rules="state.rules" :inline="false" :label-width="formLabelWidth">
|
||||||
<el-form-item label="企业编号:" prop="ExamName">
|
<!-- <el-form-item label="企业编号:" prop="EnterpriseCode" class="demo-form-scene">
|
||||||
<el-input v-model="form.ExamName" />
|
<el-input v-model="form.EnterpriseCode" />
|
||||||
|
</el-form-item> -->
|
||||||
|
<el-form-item label="企业编号:" prop="EnterpriseCode" class="demo-form-scene">
|
||||||
|
<el-input v-model="form.EnterpriseCode" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="企业名称:"
|
label="企业名称:"
|
||||||
class="demo-form-scene"
|
class="demo-form-scene"
|
||||||
>
|
>
|
||||||
<el-input v-model="form.ExamName" />
|
<el-input v-model="form.EnterpriseName" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item
|
||||||
|
label="关区编码:"
|
||||||
|
class="demo-form-scene"
|
||||||
|
>
|
||||||
|
<el-input v-model="form.DistrictCode" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="模型名称:" >
|
<el-form-item label="模型名称:" >
|
||||||
<el-input v-model="form.ExamName" />
|
<el-input v-model="form.ModelName" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="版本号:" >
|
<el-form-item label="版本号:" >
|
||||||
<el-input v-model="form.ExamName" />
|
<el-input v-model="form.VersionNumber" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="地图经度:" >
|
<el-form-item label="地图经度:" >
|
||||||
<el-input v-model="form.ExaminationDuration" autocomplete="off" />
|
<el-input v-model.number="form.MapLongitude" type="number" step="0.01"/>
|
||||||
|
<span class="example">示例:YJV22-4*95/12米</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="地图纬度:">
|
<el-form-item label="地图纬度:">
|
||||||
<el-input v-model="form.IncomingLineModelLength" autocomplete="off" />
|
<el-input v-model.number="form.MapLatitude" type="number" step="0.01" autocomplete="off" />
|
||||||
<span class="example">示例:YJV22-4*95/12米</span>
|
<span class="example">示例:YJV22-4*95/12米</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="模型包大小:">
|
<el-form-item label="模型包大小:">
|
||||||
<el-input v-model="form.OutgoingLineModelLength" autocomplete="off" />
|
<el-input v-model="form.TrainingSize" autocomplete="off" />
|
||||||
<span class="example">示例:YJV22-4*95/12米</span>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="模型包资源:">
|
<el-form-item label="模型包资源:">
|
||||||
<el-input v-model="form.OutgoingLineModelLength" autocomplete="off" />
|
<!-- <el-input v-model="form.ModelResources" autocomplete="off" /> -->
|
||||||
<span class="example">示例:YJV22-4*95/12米</span>
|
<el-upload
|
||||||
</el-form-item>
|
:action="action"
|
||||||
<el-form-item label="更新时间:">
|
:before-remove="handleRemoveFile"
|
||||||
<el-input v-model="form.OutgoingLineModelLength" autocomplete="off" />
|
:file-list="fileListFile"
|
||||||
<span class="example">示例:YJV22-4*95/12米</span>
|
multiple
|
||||||
|
accept=".pdf,.doc,.docx,.excel,.ppt,.pptx,.word,.xlsx,.RTF, .xls"
|
||||||
|
:on-error="handleUploadError"
|
||||||
|
:on-exceed="handleExceed"
|
||||||
|
:on-success="handleUploadSuccess"
|
||||||
|
:on-change="handChangeFile"
|
||||||
|
:on-preview="handleFormPreview"
|
||||||
|
:http-request="httpRequest"
|
||||||
|
:show-file-list="true"
|
||||||
|
:auto-upload="false"
|
||||||
|
class="upload-file-uploader horizontal-list"
|
||||||
|
ref="upload"
|
||||||
|
>
|
||||||
|
<!-- 上传按钮 -->
|
||||||
|
<template v-slot:trigger>
|
||||||
|
<el-button size="mini" type="primary">上传文件</el-button>
|
||||||
|
</template>
|
||||||
|
</el-upload>
|
||||||
|
<!-- 文件列表 -->
|
||||||
|
<!-- 文件列表 -->
|
||||||
|
<transition-group
|
||||||
|
class="upload-file-list el-upload-list el-upload-list--text"
|
||||||
|
name="el-fade-in-linear"
|
||||||
|
tag="ul"
|
||||||
|
>
|
||||||
|
<li
|
||||||
|
:key="file.uid"
|
||||||
|
class="el-upload-list__item ele-upload-list__item-content"
|
||||||
|
v-for="(file, index) in fileListFile"
|
||||||
|
>
|
||||||
|
<el-link :href="file.filePath" :underline="false" target="_blank">
|
||||||
|
<span class="el-icon-document">
|
||||||
|
{{ file. fileName}}
|
||||||
|
</span>
|
||||||
|
</el-link>
|
||||||
|
<!-- <div class="ele-upload-list__item-content-action">
|
||||||
|
<el-link
|
||||||
|
:underline="false"
|
||||||
|
@click="handleDelete(index)"
|
||||||
|
type="danger"
|
||||||
|
>删除</el-link
|
||||||
|
>
|
||||||
|
</div> -->
|
||||||
|
</li>
|
||||||
|
</transition-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="最新更新时间:">
|
||||||
|
<el-input v-model="form.UpdateTime" autocomplete="off" />
|
||||||
|
</el-form-item> -->
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
|
|
@ -162,24 +218,10 @@ import { ElTable, ElMessageBox, ElMessage } from 'element-plus'
|
||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
import {
|
import {
|
||||||
GetModelList,
|
GetModelList,
|
||||||
AddExam,
|
apiUploadList,
|
||||||
EditExam,
|
EditModel,
|
||||||
GetModelDetails,
|
GetModelDetails,
|
||||||
EditExamList,
|
DeleteFile
|
||||||
DeleteExam,
|
|
||||||
GetScene,
|
|
||||||
GetPlatformArea,
|
|
||||||
GetLine,
|
|
||||||
ApiReleaseExam,
|
|
||||||
ApiRevokeReleaseExam,
|
|
||||||
ApiFinishedExam,
|
|
||||||
ApiCopyExam,
|
|
||||||
ApiDownloadExamm,
|
|
||||||
ApiGetExamRosterList,
|
|
||||||
DeleteExamRoster,
|
|
||||||
ApiGetAddExamRosterListt,
|
|
||||||
ApiAddExamRoster,
|
|
||||||
apiUpload
|
|
||||||
|
|
||||||
} from '@/api/index.js'
|
} from '@/api/index.js'
|
||||||
|
|
||||||
|
|
@ -222,11 +264,12 @@ const state = reactive({
|
||||||
const form = reactive({
|
const form = reactive({
|
||||||
EnterpriseName: '',
|
EnterpriseName: '',
|
||||||
DistrictCode: '',
|
DistrictCode: '',
|
||||||
|
EnterpriseCode: '',
|
||||||
ModelName: '',
|
ModelName: '',
|
||||||
VersionNumber: '',
|
VersionNumber: '',
|
||||||
MapLongitude: '',
|
MapLongitude: '',
|
||||||
MapLatitude: '',
|
MapLatitude: '',
|
||||||
Trainingsize: '',
|
TrainingSize: '',
|
||||||
ModelResources: '',
|
ModelResources: '',
|
||||||
UpdateTime: ''
|
UpdateTime: ''
|
||||||
// WorkOrderContent: '',
|
// WorkOrderContent: '',
|
||||||
|
|
@ -239,17 +282,6 @@ const form = reactive({
|
||||||
// 查询列表
|
// 查询列表
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getTable()
|
getTable()
|
||||||
// addTable()
|
|
||||||
GetScene().then(res => {
|
|
||||||
state.scenemList = res.data
|
|
||||||
console.log(res.data, 'res.data--')
|
|
||||||
})
|
|
||||||
GetPlatformArea({
|
|
||||||
SceneId: 'eab5920509b011ed844e7cd30a92bb1c'
|
|
||||||
}).then(res => state.platformAreaList = res.data)
|
|
||||||
GetLine({
|
|
||||||
PlatformAreaId: '28f0723409b111ed844e7cd30a92bb1c'
|
|
||||||
}).then(res => state.lineList = res.data)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
// 考试列表
|
// 考试列表
|
||||||
|
|
@ -276,6 +308,120 @@ const getTable = async () => {
|
||||||
} catch (error) {}
|
} catch (error) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 删除文件
|
||||||
|
const handleRemoveFile = (file, fileList) => {
|
||||||
|
console.log('file', file.filePath)
|
||||||
|
console.log('fileList', fileList)
|
||||||
|
const formData = new FormData() // new一个formData事件
|
||||||
|
formData.append('Path', file.filePath) // 将file属性添加到formData里
|
||||||
|
// console.log(form.ModelResources, 'data')
|
||||||
|
DeleteFile({ Path: file.filePath }).then((res) => {
|
||||||
|
console.log(res, 'res')
|
||||||
|
form.ModelResources = ''
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const fileM = ref('')
|
||||||
|
const fileListN = ref([])
|
||||||
|
const fileListFile = ref([])
|
||||||
|
/** 上传文件状态改变时调用 */
|
||||||
|
const handChangeFile = (file, fileList) => {
|
||||||
|
console.log('fileList', fileList)
|
||||||
|
console.log('file', file)
|
||||||
|
// fileListN = fileList
|
||||||
|
fileM.value = file.raw
|
||||||
|
fileListN.value = fileList
|
||||||
|
loadSize('File')
|
||||||
|
}
|
||||||
|
|
||||||
|
const S4 = () => {
|
||||||
|
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)
|
||||||
|
}
|
||||||
|
const guid = () => {
|
||||||
|
return (
|
||||||
|
S4() +
|
||||||
|
S4() +
|
||||||
|
'-' +
|
||||||
|
S4() +
|
||||||
|
'-' +
|
||||||
|
S4() +
|
||||||
|
'-' +
|
||||||
|
S4() +
|
||||||
|
'-' +
|
||||||
|
S4() +
|
||||||
|
S4() +
|
||||||
|
S4()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
const loadSize = (FolderName) => {
|
||||||
|
const size = fileM.value.size // 文件大小
|
||||||
|
const maxZrea = 8 // 设置每个分区大小 MB
|
||||||
|
const bufferSize = maxZrea * (1024 * 1024)
|
||||||
|
let fileStart = 0
|
||||||
|
let fileEnd = bufferSize
|
||||||
|
const arrFile = []
|
||||||
|
while (fileStart < size) {
|
||||||
|
const fileInfo = {
|
||||||
|
File: fileM.value.slice(fileStart, fileEnd),
|
||||||
|
Start: fileStart,
|
||||||
|
End: fileEnd
|
||||||
|
}
|
||||||
|
arrFile.push(fileInfo)
|
||||||
|
fileStart = fileEnd
|
||||||
|
fileEnd = fileStart + bufferSize
|
||||||
|
}
|
||||||
|
const count = arrFile.length
|
||||||
|
const filename = fileM.value.name + '~' + guid()
|
||||||
|
const paramFilename = fileM.value.name// 上传filename
|
||||||
|
// const filename = this.file.name; // 去掉文件后缀名
|
||||||
|
test2(count, filename, bufferSize, arrFile, size, FolderName, paramFilename)
|
||||||
|
}
|
||||||
|
const test2 = async (count, filename, bufferSize, arrFile, size, FolderName, paramFilename) => {
|
||||||
|
for (let i = 0; i < count; i++) {
|
||||||
|
const formData = new FormData() // new一个formData事件
|
||||||
|
formData.append('file', arrFile[i].File) // 将file属性添加到formData里
|
||||||
|
const url =
|
||||||
|
'?Name=' +
|
||||||
|
filename +
|
||||||
|
'&Number=' +
|
||||||
|
i +
|
||||||
|
'&BufferSize=' +
|
||||||
|
bufferSize +
|
||||||
|
'&Count=' +
|
||||||
|
count +
|
||||||
|
'&Start=' +
|
||||||
|
arrFile[i].Start +
|
||||||
|
'&End=' +
|
||||||
|
arrFile[i].End +
|
||||||
|
'&Size=' +
|
||||||
|
size +
|
||||||
|
'&FolderName=' +
|
||||||
|
FolderName
|
||||||
|
console.log('url', url)
|
||||||
|
await apiUploadList(url, formData).then((res) => {
|
||||||
|
console.log(filename, 'filename')
|
||||||
|
form.ModelResources = res.data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 预览文档
|
||||||
|
const handleFormPreview = (file) => {
|
||||||
|
// file.url = file.name;//视频路径
|
||||||
|
console.log('预览文件', file.name)
|
||||||
|
let fileUrl = ''
|
||||||
|
// 循环查找视频路径地址
|
||||||
|
this.formData.FileData.forEach((item, index) => {
|
||||||
|
if (file.name == item.FileName) {
|
||||||
|
const href = window.location.href
|
||||||
|
const regex = /^https?:\/\/([^/:]+):?(\d+)?/i
|
||||||
|
const match = href.match(regex)
|
||||||
|
console.log('match', match)
|
||||||
|
fileUrl = match[0] + item.FilePath
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const blob = new Blob([fileUrl], { type: 'application/msword' })
|
||||||
|
window.open(fileUrl, '_block')
|
||||||
|
console.log(fileUrl, '文件')
|
||||||
|
}
|
||||||
const multipleTableRef = ref()
|
const multipleTableRef = ref()
|
||||||
const multipleSelection = ref([])
|
const multipleSelection = ref([])
|
||||||
const handleSelectionChange = (val) => {
|
const handleSelectionChange = (val) => {
|
||||||
|
|
@ -307,100 +453,54 @@ const handleCurrentChange = (val) => {
|
||||||
formInline.PageIndex = val
|
formInline.PageIndex = val
|
||||||
getTable()
|
getTable()
|
||||||
}
|
}
|
||||||
const ExamId = ref('')
|
const EnterpriseCode = ref('')
|
||||||
const handleEdit = async (row) => {
|
const handleEdit = async (row) => {
|
||||||
|
// fileListFile.value = ref([])
|
||||||
|
const fileListFile1 = ref([])
|
||||||
const res = await GetModelDetails({ EnterpriseCode: row.EnterpriseCode })
|
const res = await GetModelDetails({ EnterpriseCode: row.EnterpriseCode })
|
||||||
console.log(res.data, 'res--')
|
|
||||||
for (const key in form) {
|
for (const key in form) {
|
||||||
form[key] = res.data[key]
|
form[key] = res.data[key]
|
||||||
}
|
}
|
||||||
// ExamId.value = res.data.ExamId
|
EnterpriseCode.value = res.data.EnterpriseCode
|
||||||
dialogFormVisible.value = true
|
dialogFormVisible.value = true
|
||||||
}
|
const parts = res.data.ModelResources.split('/')
|
||||||
const handleCopy = (row) => {
|
fileListFile1.value.push({
|
||||||
ApiCopyExam({ ExamId: row.ExamId }).then(res => {
|
filePath: res.data.ModelResources,
|
||||||
console.log(res, 'res--')
|
fileName: parts[parts.length - 1]
|
||||||
if (res.code === 0) {
|
|
||||||
ElMessage({
|
|
||||||
message: '操作成功',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
queryData()
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 删除
|
|
||||||
const handleDelete = (row) => {
|
|
||||||
console.log(row.ExamId, 'row--')
|
|
||||||
ElMessageBox.confirm('确定要删除吗?', {
|
|
||||||
confirmButtonText: '确定',
|
|
||||||
cancelButtonText: '取消',
|
|
||||||
type: 'warning'
|
|
||||||
}).then(() => {
|
|
||||||
DeleteExam({ ExamId: row.ExamId }).then(res => {
|
|
||||||
console.log(res, 'res--')
|
|
||||||
if (res.code === 0) {
|
|
||||||
ElMessage({
|
|
||||||
message: '操作成功',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
queryData()
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
fileListFile.value = fileListFile1.value
|
||||||
}
|
}
|
||||||
|
|
||||||
// 复制
|
// 复制
|
||||||
|
|
||||||
// 保存
|
// 保存
|
||||||
const submit = () => {
|
const submit = () => {
|
||||||
formRef.value.validate(async (valid) => {
|
formRef.value.validate(async (valid) => {
|
||||||
console.log(form, 'from--')
|
console.log(form, 'from--')
|
||||||
if (valid) {
|
// if (valid) {
|
||||||
const obj = state.platformAreaList.find(v => v.PlatformAreaId == form.PlatformAreaId)
|
EditModel({
|
||||||
console.log(obj, 'obj--')
|
EnterpriseCode: form.EnterpriseCode,
|
||||||
|
ModelName: form.ModelName,
|
||||||
|
VersionNumber: form.VersionNumber,
|
||||||
|
MapLongitude: form.MapLongitude,
|
||||||
|
MapLatitude: form.MapLatitude,
|
||||||
|
TrainingSize: form.TrainingSize,
|
||||||
|
ModelResources: form.ModelResources
|
||||||
|
|
||||||
if (ExamId.value) {
|
}).then(res => {
|
||||||
EditExam({
|
console.log(res, 'res--')
|
||||||
...form,
|
if (res.code == 0) {
|
||||||
PlatformArea: obj?.PlatformAreaName || '',
|
ElMessage({
|
||||||
ExamId: ExamId.value
|
message: '操作成功.',
|
||||||
}).then(res => {
|
type: 'success'
|
||||||
console.log(res, 'res--')
|
|
||||||
if (res.code == 0) {
|
|
||||||
ElMessage({
|
|
||||||
message: '操作成功.',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
closeDialog()
|
|
||||||
queryData()
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
closeDialog()
|
||||||
|
queryData()
|
||||||
} else {
|
} else {
|
||||||
form.Type = '考试'
|
ElMessage.error(res?.data || '操作失敗')
|
||||||
AddExam({
|
|
||||||
...form,
|
|
||||||
PlatformArea: obj?.PlatformAreaName || ''
|
|
||||||
}).then(res => {
|
|
||||||
console.log(res, 'res--')
|
|
||||||
if (res.code == 0) {
|
|
||||||
ElMessage({
|
|
||||||
message: '操作成功.',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
closeDialog()
|
|
||||||
queryData()
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
|
// }
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 取消
|
// 取消
|
||||||
|
|
@ -408,239 +508,21 @@ const closeDialog = () => {
|
||||||
for (const key in form) {
|
for (const key in form) {
|
||||||
form[key] = ''
|
form[key] = ''
|
||||||
}
|
}
|
||||||
ExamId.value = ''
|
EnterpriseCode.value = ''
|
||||||
dialogFormVisible.value = false
|
dialogFormVisible.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
// 跳转编辑器
|
|
||||||
const router = useRouter()
|
|
||||||
const goToAboutPage = () => {
|
|
||||||
if (multipleSelection.value?.length === 0) return ElMessage.error('请先选择')
|
|
||||||
router.push(`/EditorMacros?ExamId=${multipleSelection.value[0].ExamId}`) // 跳转到指定路由
|
|
||||||
}
|
|
||||||
// 编辑弹框
|
|
||||||
const EditFormVisible = ref(false)
|
|
||||||
const EditExamtableData = ref()
|
|
||||||
const handleUpdate = async () => {
|
|
||||||
EditFormVisible.value = true
|
|
||||||
const data = await EditExamList()
|
|
||||||
console.log(data.data, 'data')
|
|
||||||
}
|
|
||||||
|
|
||||||
// 发布
|
|
||||||
const handleReleaseExam = () => {
|
|
||||||
if (multipleSelection.value?.length === 0) return ElMessage.error('请先选择')
|
|
||||||
ElMessageBox.confirm('确定要发布吗?', {
|
|
||||||
confirmButtonText: '确定',
|
|
||||||
cancelButtonText: '取消',
|
|
||||||
type: 'warning'
|
|
||||||
}).then(() => {
|
|
||||||
ApiReleaseExam({ ExamId: multipleSelection.value[0].ExamId }).then(res => {
|
|
||||||
console.log(res, 'res--')
|
|
||||||
if (res.code == 0) {
|
|
||||||
ElMessage({
|
|
||||||
message: '操作成功',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
queryData()
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 撤销发布
|
|
||||||
const handleRevokeReleaseExam = () => {
|
|
||||||
if (multipleSelection.value?.length === 0) return ElMessage.error('请先选择')
|
|
||||||
ElMessageBox.confirm('确定要撤销发布吗?', {
|
|
||||||
confirmButtonText: '确定',
|
|
||||||
cancelButtonText: '取消',
|
|
||||||
type: 'warning'
|
|
||||||
}).then(() => {
|
|
||||||
ApiRevokeReleaseExam({ ExamId: multipleSelection.value[0].ExamId }).then(res => {
|
|
||||||
console.log(res, 'res--')
|
|
||||||
if (res.code === 0) {
|
|
||||||
ElMessage({
|
|
||||||
message: '操作成功',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
queryData()
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 撤销发布
|
|
||||||
const handleFinishedExam = () => {
|
|
||||||
if (multipleSelection.value?.length === 0) return ElMessage.error('请先选择')
|
|
||||||
ElMessageBox.confirm('确定要考试结束吗?', {
|
|
||||||
confirmButtonText: '确定',
|
|
||||||
cancelButtonText: '取消',
|
|
||||||
type: 'warning'
|
|
||||||
}).then(() => {
|
|
||||||
ApiFinishedExam({ ExamId: multipleSelection.value[0].ExamId }).then(res => {
|
|
||||||
console.log(res, 'res--')
|
|
||||||
if (res.code === 0) {
|
|
||||||
ElMessage({
|
|
||||||
message: '操作成功',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
queryData()
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 考试名单
|
|
||||||
const dialogTabular = ref(false)
|
|
||||||
const stateA = reactive({
|
|
||||||
total: 0,
|
|
||||||
examRosterList: [],
|
|
||||||
queryForm: {
|
|
||||||
Name: '',
|
|
||||||
Account: '',
|
|
||||||
PageIndex: 1,
|
|
||||||
PageSize: 10
|
|
||||||
}
|
|
||||||
})
|
|
||||||
const handleExamination = async () => {
|
|
||||||
if (multipleSelection.value?.length === 0) return ElMessage.error('请先选择')
|
|
||||||
getExamination()
|
|
||||||
getAddExamRosterListt()
|
|
||||||
dialogTabular.value = true
|
|
||||||
}
|
|
||||||
|
|
||||||
const getExamination = async () => {
|
|
||||||
console.log(stateA.queryForm, ' stateA.queryForm--')
|
|
||||||
const res = await ApiGetExamRosterList({
|
|
||||||
ExamId: multipleSelection.value[0].ExamId,
|
|
||||||
// ExamId: '048dd77b0a734856a86153e2feaa1d1d',
|
|
||||||
...stateA.queryForm
|
|
||||||
})
|
|
||||||
dialogTabular.value = true
|
|
||||||
stateA.examRosterList = res.data?.list || []
|
|
||||||
stateA.total = res.data?.total
|
|
||||||
console.log(res, 'res--ApiGetExamRosterList')
|
|
||||||
}
|
|
||||||
// 考试名单删除
|
|
||||||
const handleCancel = (row) => {
|
|
||||||
console.log(row.ExamUsersId, 'row--')
|
|
||||||
ElMessageBox.confirm('确定要删除吗?', {
|
|
||||||
confirmButtonText: '确定',
|
|
||||||
cancelButtonText: '取消',
|
|
||||||
type: 'warning'
|
|
||||||
}).then(() => {
|
|
||||||
DeleteExamRoster({ ExamUsersId: row.ExamUsersId }).then(res => {
|
|
||||||
console.log(res, 'res--')
|
|
||||||
if (res.code === 0) {
|
|
||||||
ElMessage({
|
|
||||||
message: '操作成功',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
getExamination()
|
|
||||||
getAddExamRosterListt()
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 考试新增名单
|
|
||||||
const dialogExamination = ref(false)
|
|
||||||
|
|
||||||
const rosterSelection = ref([])
|
const rosterSelection = ref([])
|
||||||
const handleSelChange = (val) => {
|
|
||||||
console.log(val, 'val--')
|
|
||||||
rosterSelection.value = val
|
|
||||||
}
|
|
||||||
|
|
||||||
const stateB = reactive({
|
|
||||||
total: 0,
|
|
||||||
examRosterList: [],
|
|
||||||
queryForm: {
|
|
||||||
Name: '',
|
|
||||||
Account: '',
|
|
||||||
PageIndex: 1,
|
|
||||||
PageSize: 10
|
|
||||||
}
|
|
||||||
})
|
|
||||||
const handleCurrentChangeB = (val) => {
|
|
||||||
stateB.queryForm.PageIndex = val
|
|
||||||
getAddExamRosterListt()
|
|
||||||
}
|
|
||||||
const getAddExamRosterListt = async () => {
|
|
||||||
console.log(stateA.queryForm, ' stateA.queryForm--')
|
|
||||||
if (multipleSelection.value?.length === 0) return ElMessage.error('请先选择')
|
|
||||||
const res = await ApiGetAddExamRosterListt({
|
|
||||||
ExamId: multipleSelection.value[0].ExamId,
|
|
||||||
// ExamId: '048dd77b0a734856a86153e2feaa1d1d',
|
|
||||||
...stateB.queryForm
|
|
||||||
})
|
|
||||||
dialogTabular.value = true
|
|
||||||
stateB.examRosterList = res.data?.list || []
|
|
||||||
stateB.total = res.data?.total
|
|
||||||
console.log(res, 'res--ApiGetExamRosterList')
|
|
||||||
}
|
|
||||||
|
|
||||||
const addExamRoster = () => {
|
|
||||||
if (multipleSelection.value?.length === 0) return ElMessage.error('请先选择')
|
|
||||||
ApiAddExamRoster({
|
|
||||||
ExamId: multipleSelection.value[0].ExamId,
|
|
||||||
UserIdList: rosterSelection.value.map(item => item.UserId)
|
|
||||||
}).then(res => {
|
|
||||||
console.log(res, 'res--')
|
|
||||||
if (res.code === 0) {
|
|
||||||
ElMessage({
|
|
||||||
message: '操作成功',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
getExamination()
|
|
||||||
getAddExamRosterListt()
|
|
||||||
dialogExamination.value = false
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 导入
|
// 导入
|
||||||
const dialogToLead = ref(false)
|
const dialogToLead = ref(false)
|
||||||
|
|
||||||
const uploadRef = ref()
|
const uploadRef = ref()
|
||||||
const handleExceed = (files) => {
|
const handleExceed = (files) => {
|
||||||
// submitUpload(files[0])
|
// submitUpload(files[0])
|
||||||
uploadRef.value.clearFiles()
|
ElMessage({
|
||||||
nextTick(() => {
|
message: '只允许上传1个文件.',
|
||||||
uploadRef.value.handleStart(files[0])
|
type: 'success'
|
||||||
})
|
|
||||||
}
|
|
||||||
const handleChange = (uploadFile) => {
|
|
||||||
console.log(uploadFile, 'uploadFile')
|
|
||||||
// submitUpload(uploadFile.raw)
|
|
||||||
}
|
|
||||||
const submitUpload = () => {
|
|
||||||
uploadRef.value.submit()
|
|
||||||
}
|
|
||||||
const toUpload = (param) => {
|
|
||||||
if (!uploadRef.value) return ElMessage.error('请先上传文件')
|
|
||||||
const formData = new FormData()
|
|
||||||
formData.append('Files', param.file)
|
|
||||||
apiUpload('', formData).then((res) => {
|
|
||||||
console.log(res, 'res--')
|
|
||||||
if (res.code === 0) {
|
|
||||||
ElMessage({
|
|
||||||
message: '上传成功',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
queryData()
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res?.data || '操作失敗')
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -861,4 +743,24 @@ const toUpload = (param) => {
|
||||||
.ml-3{
|
.ml-3{
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
}
|
}
|
||||||
|
.upload-file-uploader{
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
.el-upload-list .el-upload-list__item{
|
||||||
|
width: 33% !important;
|
||||||
|
float: left;
|
||||||
|
margin-left: -385px;
|
||||||
|
margin-top: 25px;
|
||||||
|
:deep(.horizontal-list ul .el-upload-list__item) {
|
||||||
|
width: 33% !important;
|
||||||
|
float: left; margin-top: 25px;
|
||||||
|
}
|
||||||
|
:deep(.el-link__inner ) {
|
||||||
|
display: inline-flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue