qsh 1 week ago
parent 0058b74ddf
commit d984ac4e23
  1. 17
      src/api/system/dict/config.js
  2. 18
      src/api/uav/record.js
  3. 4
      src/api/uav/regiest.js
  4. 103
      src/views/Basic/Dict/DictTypeForm.vue
  5. 181
      src/views/Basic/Dict/data/DictDataForm.vue
  6. 207
      src/views/Basic/Dict/data/index.vue
  7. 180
      src/views/Basic/Dict/index.vue
  8. 4
      src/views/JoinUs/Station/index.vue
  9. 54
      src/views/UAVClue/StudyRecord/components/Collect.vue
  10. 54
      src/views/UAVClue/StudyRecord/components/Exam.vue

@ -0,0 +1,17 @@
import request from '@/config/axios'
// 查询
export const searchConfig = async (params) => {
return await request.get({
url: 'admin-api/applet/wrj/sysConfig/page',
params
})
}
// 修改
export const updateConfig = async (data) => {
return await request.post({
url: 'admin-api/applet/wrj/sysConfig/update',
data
})
}

@ -2,7 +2,23 @@ import request from '@/config/axios'
export const searchStudyRecords = async (params) => { export const searchStudyRecords = async (params) => {
return await request.get({ return await request.get({
url: 'admin-api/wrjQuestionPractice/query', url: 'admin-api/applet/wrj/questionPractice/query',
params
})
}
// 模拟考试记录
export const searchExamRecords = async (params) => {
return await request.get({
url: 'admin-api/applet/wrj/questionTest/page',
params
})
}
// 收藏记录
export const searchCollectRecords = async (params) => {
return await request.get({
url: 'admin-api/applet/wrj/userCollectQuestion/page',
params params
}) })
} }

@ -26,7 +26,7 @@ export const stationDetail = async (id) => {
// 修改机构 // 修改机构
export const updateStation = async (data) => { export const updateStation = async (data) => {
return await request.post({ return await request.post({
url: '/admin-api/applet/wrj/school/update', url: 'admin-api/applet/wrj/school/check',
data data
}) })
} }
@ -56,6 +56,6 @@ export const updateTeacher = async (data) => {
export const getCarTypeList = async () => { export const getCarTypeList = async () => {
return await request.get({ return await request.get({
url: '/admin-api/wrjSchoolDriverType/list' url: 'admin-api/applet/wrj/schoolDriverType/list'
}) })
} }

@ -1,35 +1,17 @@
<template> <template>
<Dialog v-model="dialogVisible" :title="dialogTitle"> <Dialog v-model="dialogVisible" :title="dialogTitle">
<el-form <el-form v-loading="formLoading" :model="formData" label-width="80px">
ref="formRef" <el-form-item label="名称" prop="configName">
v-loading="formLoading" <el-input v-model="formData.configName" disabled />
:model="formData"
:rules="formRules"
label-width="80px"
>
<el-form-item label="字典名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入字典名称" />
</el-form-item> </el-form-item>
<el-form-item label="字典类型" prop="type"> <el-form-item label="值" prop="configValue">
<el-input <el-input v-model="formData.configValue" />
v-model="formData.type"
:disabled="typeof formData.id !== 'undefined'"
placeholder="请输入参数名称"
/>
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="json" prop="configJson">
<el-radio-group v-model="formData.status"> <el-input v-model="formData.configJson" type="textarea" />
<el-radio
v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
:key="dict.value"
:label="dict.value"
>
{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="configDesc">
<el-input v-model="formData.remark" placeholder="请输入内容" type="textarea" /> <el-input v-model="formData.configDesc" placeholder="请输入内容" type="textarea" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
@ -38,10 +20,8 @@
</template> </template>
</Dialog> </Dialog>
</template> </template>
<script lang="ts" name="SystemDictTypeForm" setup> <script name="SystemDictTypeForm" setup>
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { updateConfig } from '@/api/system/dict/config'
import * as DictTypeApi from '@/api/system/dict/dict.type'
import { CommonStatusEnum } from '@/utils/constants'
const { t } = useI18n() // const { t } = useI18n() //
const message = useMessage() // const message = useMessage() //
@ -49,57 +29,32 @@ const message = useMessage() // 消息弹窗
const dialogVisible = ref(false) // const dialogVisible = ref(false) //
const dialogTitle = ref('') // const dialogTitle = ref('') //
const formLoading = ref(false) // 12 const formLoading = ref(false) // 12
const formType = ref('') // create - update - const formData = ref({})
const formData = ref({
id: undefined,
name: '',
type: '',
status: CommonStatusEnum.ENABLE,
remark: ''
})
const formRules = reactive({
name: [{ required: true, message: '字典名称不能为空', trigger: 'blur' }],
type: [{ required: true, message: '字典类型不能为空', trigger: 'blur' }],
status: [{ required: true, message: '状态不能为空', trigger: 'change' }]
})
const formRef = ref() // Ref
/** 打开弹窗 */ /** 打开弹窗 */
const open = async (type: string, id?: number) => { const open = async (val) => {
dialogVisible.value = true dialogVisible.value = true
dialogTitle.value = t('action.' + type) dialogTitle.value = '修改配置项'
formType.value = type
resetForm()
// //
if (id) { formData.value = { ...val }
formLoading.value = true
try {
formData.value = await DictTypeApi.getDictType(id)
} finally {
formLoading.value = false
}
}
} }
defineExpose({ open }) // open defineExpose({ open }) // open
/** 提交表单 */ /** 提交表单 */
const emit = defineEmits(['success']) // success const emit = defineEmits(['success']) // success
const submitForm = async () => { const submitForm = async () => {
//
if (!formRef.value) return
const valid = await formRef.value.validate()
if (!valid) return
// //
formLoading.value = true formLoading.value = true
try { try {
const data = formData.value as DictTypeApi.DictTypeVO const params = {
if (formType.value === 'create') { configKey: formData.value.configKey,
await DictTypeApi.createDictType(data) configValue: formData.value.configValue,
message.success(t('common.createSuccess')) configJson: formData.value.configJson,
} else { configName: formData.value.configName,
await DictTypeApi.updateDictType(data) configDesc: formData.value.configDesc
message.success(t('common.updateSuccess'))
} }
await updateConfig(params)
message.success(t('common.updateSuccess'))
dialogVisible.value = false dialogVisible.value = false
// //
emit('success') emit('success')
@ -107,16 +62,4 @@ const submitForm = async () => {
formLoading.value = false formLoading.value = false
} }
} }
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
type: '',
name: '',
status: CommonStatusEnum.ENABLE,
remark: ''
}
formRef.value?.resetFields()
}
</script> </script>

@ -1,181 +0,0 @@
<template>
<Dialog v-model="dialogVisible" :title="dialogTitle">
<el-form
ref="formRef"
v-loading="formLoading"
:model="formData"
:rules="formRules"
label-width="80px"
>
<el-form-item label="字典类型" prop="type">
<el-input
v-model="formData.dictType"
:disabled="typeof formData.id !== 'undefined'"
placeholder="请输入参数名称"
/>
</el-form-item>
<el-form-item label="数据标签" prop="label">
<el-input v-model="formData.label" placeholder="请输入数据标签" />
</el-form-item>
<el-form-item label="数据键值" prop="value">
<el-input v-model="formData.value" placeholder="请输入数据键值" />
</el-form-item>
<el-form-item label="显示排序" prop="sort">
<el-input-number v-model="formData.sort" :min="0" controls-position="right" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="formData.status">
<el-radio
v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
:key="dict.value"
:label="dict.value"
>
{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="颜色类型" prop="colorType">
<el-select v-model="formData.colorType">
<el-option
v-for="item in colorTypeOptions"
:key="item.value"
:label="item.label + '(' + item.value + ')'"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="CSS Class" prop="cssClass">
<el-input v-model="formData.cssClass" placeholder="请输入 CSS Class" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" placeholder="请输入内容" type="textarea" />
</el-form-item>
</el-form>
<template #footer>
<el-button :disabled="formLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script lang="ts" name="SystemDictDataForm" setup>
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import * as DictDataApi from '@/api/system/dict/dict.data'
import { CommonStatusEnum } from '@/utils/constants'
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
id: undefined,
sort: undefined,
label: '',
value: '',
dictType: '',
status: CommonStatusEnum.ENABLE,
colorType: '',
cssClass: '',
remark: ''
})
const formRules = reactive({
label: [{ required: true, message: '数据标签不能为空', trigger: 'blur' }],
value: [{ required: true, message: '数据键值不能为空', trigger: 'blur' }],
sort: [{ required: true, message: '数据顺序不能为空', trigger: 'blur' }],
status: [{ required: true, message: '状态不能为空', trigger: 'change' }]
})
const formRef = ref() // Ref
//
const colorTypeOptions = readonly([
{
value: 'default',
label: '默认'
},
{
value: 'primary',
label: '主要'
},
{
value: 'success',
label: '成功'
},
{
value: 'info',
label: '信息'
},
{
value: 'warning',
label: '警告'
},
{
value: 'danger',
label: '危险'
}
])
/** 打开弹窗 */
const open = async (type: string, id?: number, dictType?: string) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
resetForm()
if (dictType) {
formData.value.dictType = dictType
}
//
if (id) {
formLoading.value = true
try {
formData.value = await DictDataApi.getDictData(id)
} finally {
formLoading.value = false
}
}
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
if (!formRef.value) return
const valid = await formRef.value.validate()
if (!valid) return
//
formLoading.value = true
try {
const data = formData.value as DictDataApi.DictDataVO
if (formType.value === 'create') {
await DictDataApi.createDictData(data)
message.success(t('common.createSuccess'))
} else {
await DictDataApi.updateDictData(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
sort: undefined,
label: '',
value: '',
dictType: '',
status: CommonStatusEnum.ENABLE,
colorType: '',
cssClass: '',
remark: ''
}
formRef.value?.resetFields()
}
</script>

@ -1,207 +0,0 @@
<template>
<ContentWrap>
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="字典名称" prop="dictType">
<el-select v-model="queryParams.dictType" class="!w-240px">
<el-option
v-for="item in dictTypeList"
:key="item.type"
:label="item.name"
:value="item.type"
/>
</el-select>
</el-form-item>
<el-form-item label="字典标签" prop="label">
<el-input
v-model="queryParams.label"
placeholder="请输入字典标签"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="数据状态" clearable class="!w-240px">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['system:dict:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['system:dict:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column label="字典编码" align="center" prop="id" />
<el-table-column label="字典标签" align="center" prop="label" />
<el-table-column label="字典键值" align="center" prop="value" />
<el-table-column label="字典排序" align="center" prop="sort" />
<el-table-column label="状态" align="center" prop="status">
<template #default="scope">
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="颜色类型" align="center" prop="colorType" />
<el-table-column label="CSS Class" align="center" prop="cssClass" />
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
width="180"
:formatter="dateFormatter"
/>
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['system:dict:update']"
>
修改
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['system:dict:delete']"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<DictDataForm ref="formRef" @success="getList" />
</template>
<script setup lang="ts" name="SystemDictData">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import * as DictDataApi from '@/api/system/dict/dict.data'
import * as DictTypeApi from '@/api/system/dict/dict.type'
import DictDataForm from './DictDataForm.vue'
const message = useMessage() //
const { t } = useI18n() //
const route = useRoute() //
const loading = ref(true) //
const total = ref(0) //
const list = ref([]) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
label: '',
status: undefined,
dictType: route.params.dictType
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const dictTypeList = ref<DictTypeApi.DictTypeVO[]>() //
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await DictDataApi.getDictDataPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id, queryParams.dictType)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await DictDataApi.deleteDictData(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await DictDataApi.exportDictData(queryParams)
download.excel(data, '字典数据.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 初始化 **/
onMounted(async () => {
await getList()
// )
dictTypeList.value = await DictTypeApi.getSimpleDictTypeList()
})
</script>

@ -1,6 +1,6 @@
<template> <template>
<div>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<ContentWrap>
<el-form <el-form
ref="queryFormRef" ref="queryFormRef"
:inline="true" :inline="true"
@ -8,122 +8,31 @@
class="-mb-15px" class="-mb-15px"
label-width="68px" label-width="68px"
> >
<el-form-item label="字典名称" prop="name"> <el-form-item label="编码" prop="configKey">
<el-input <el-input
v-model="queryParams.name" v-model="queryParams.configKey"
class="!w-240px" class="!w-240px"
clearable clearable
placeholder="请输入字典名称" placeholder="请输入"
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="字典类型" prop="type">
<el-input
v-model="queryParams.type"
class="!w-240px"
clearable
placeholder="请输入字典类型"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
class="!w-240px"
clearable
placeholder="请选择字典状态"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
end-placeholder="结束日期"
start-placeholder="开始日期"
type="daterange"
value-format="yyyy-MM-dd HH:mm:ss"
/>
</el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handleQuery"> <el-button @click="handleQuery"> 搜索 </el-button>
<Icon class="mr-5px" icon="ep:search" />
搜索
</el-button>
<el-button @click="resetQuery">
<Icon class="mr-5px" icon="ep:refresh" />
重置
</el-button>
<el-button
v-hasPermi="['system:dict:create']"
plain
type="primary"
@click="openForm('create')"
>
<Icon class="mr-5px" icon="ep:plus" />
新增
</el-button>
<el-button
v-hasPermi="['system:dict:export']"
:loading="exportLoading"
plain
type="success"
@click="handleExport"
>
<Icon class="mr-5px" icon="ep:download" />
导出
</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</ContentWrap>
<!-- 列表 --> <!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list"> <el-table v-loading="loading" :data="list">
<el-table-column align="center" label="字典编号" prop="id" /> <el-table-column label="编码" prop="configKey" />
<el-table-column align="center" label="字典名称" prop="name" show-overflow-tooltip /> <el-table-column label="名称" prop="configName" />
<el-table-column align="center" label="字典类型" prop="type" width="300" /> <el-table-column label="值" prop="configValue" />
<el-table-column align="center" label="状态" prop="status"> <el-table-column label="json" prop="configJson" />
<template #default="scope"> <el-table-column label="备注" prop="configDesc" />
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" /> <el-table-column label="创建时间" prop="createTime" width="180" />
</template> <el-table-column label="操作" width="100">
</el-table-column> <template #default="{ row }">
<el-table-column align="center" label="备注" prop="remark" /> <el-button link type="primary" @click="openForm(row)"> 修改 </el-button>
<el-table-column
:formatter="dateFormatter"
align="center"
label="创建时间"
prop="createTime"
width="180"
/>
<el-table-column align="center" label="操作">
<template #default="scope">
<el-button
v-hasPermi="['system:dict:update']"
link
type="primary"
@click="openForm('update', scope.row.id)"
>
修改
</el-button>
<router-link :to="'/dict/type/data/' + scope.row.type">
<el-button link type="primary">数据</el-button>
</router-link>
<el-button
v-hasPermi="['system:dict:delete']"
link
type="danger"
@click="handleDelete(scope.row.id)"
>
删除
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -134,41 +43,31 @@
:total="total" :total="total"
@pagination="getList" @pagination="getList"
/> />
</ContentWrap>
<!-- 表单弹窗添加/修改 --> <!-- 表单弹窗添加/修改 -->
<DictTypeForm ref="formRef" @success="getList" /> <DictTypeForm ref="formRef" @success="getList" />
</div>
</template> </template>
<script lang="ts" name="SystemDictType" setup> <script name="SystemDictType" setup>
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { searchConfig } from '@/api/system/dict/config'
import { dateFormatter } from '@/utils/formatTime'
import * as DictTypeApi from '@/api/system/dict/dict.type'
import DictTypeForm from './DictTypeForm.vue' import DictTypeForm from './DictTypeForm.vue'
import download from '@/utils/download'
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) // const loading = ref(true) //
const total = ref(0) // const total = ref(0) //
const list = ref([]) // const list = ref([]) //
const queryParams = reactive({ const queryParams = reactive({
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 50,
name: '', configKey: ''
type: '',
status: undefined,
createTime: []
}) })
const queryFormRef = ref() // const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询字典类型列表 */ /** 查询字典类型列表 */
const getList = async () => { const getList = async () => {
loading.value = true loading.value = true
try { try {
const data = await DictTypeApi.getDictTypePage(queryParams) const data = await searchConfig(queryParams)
list.value = data.list list.value = data.list
total.value = data.total total.value = data.total
} finally { } finally {
@ -178,48 +77,13 @@ const getList = async () => {
/** 搜索按钮操作 */ /** 搜索按钮操作 */
const handleQuery = () => { const handleQuery = () => {
queryParams.pageNo = 1
getList() getList()
} }
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
/** 添加/修改操作 */ /** 添加/修改操作 */
const formRef = ref() const formRef = ref()
const openForm = (type: string, id?: number) => { const openForm = (val) => {
formRef.value.open(type, id) formRef.value.open(val)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await DictTypeApi.deleteDictType(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await DictTypeApi.exportDictType(queryParams)
download.excel(data, '字典类型.xls')
} catch {
} finally {
exportLoading.value = false
}
} }
/** 初始化 **/ /** 初始化 **/

@ -318,8 +318,8 @@ function handleDetail(row, type) {
] ]
form.value = { form.value = {
...response, ...response,
imgUrl: response.imgUrl ? response.imgUrl.split(',') : [], imgUrl: response.imgUrl || [],
certs: response.certs ? response.certs.split(',') : [], certs: response.certs || [],
modelList: driverOptions.value.map((item) => { modelList: driverOptions.value.map((item) => {
return { return {
modelId: item.modelId, modelId: item.modelId,

@ -3,13 +3,19 @@
<el-form :model="searchForm" inline @submit.prevent> <el-form :model="searchForm" inline @submit.prevent>
<el-form-item> <el-form-item>
<el-input <el-input
v-model="searchForm.nameOrPhone" v-model="searchForm.userName"
placeholder="输入学员姓名/手机号" placeholder="输入学员姓名/手机号"
clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-input v-model="searchForm.question" placeholder="输入题目" @keyup.enter="handleQuery" /> <el-input
v-model="searchForm.question"
placeholder="输入题目"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="handleQuery"> 搜索 </el-button> <el-button type="primary" @click="handleQuery"> 搜索 </el-button>
@ -19,16 +25,26 @@
v-loading="loading" v-loading="loading"
:data="tableList" :data="tableList"
highlight-current-row highlight-current-row
max-height="calc(100vh - 320px)" max-height="calc(100vh - 260px)"
> >
<el-table-column type="index" width="55" align="center" /> <el-table-column type="index" width="55" align="center" />
<el-table-column label="题目" prop="question" /> <el-table-column label="题目" prop="question" />
<el-table-column label="图片" prop="img" /> <el-table-column label="图片">
<el-table-column label="选项" prop="option" /> <template #default="{ row }">
<el-table-column label="正确答案" prop="answer" /> <img v-if="row.imageUrl" :src="row.imageUrl" width="100" height="100" />
<el-table-column label="收藏人" prop="name" /> </template>
</el-table-column>
<el-table-column label="选项">
<template #default="{ row }">
<div v-for="(item, index) in optionArr" :key="index">
<span v-if="row['choose' + item]">{{ item }}. {{ row['choose' + item] }}</span>
</div>
</template>
</el-table-column>
<el-table-column label="正确答案" prop="trueAnswer" />
<el-table-column label="收藏人" prop="userName" />
<el-table-column label="手机号" prop="phone" /> <el-table-column label="手机号" prop="phone" />
<el-table-column label="收藏时间" prop="yourAnswer" /> <el-table-column label="收藏时间" prop="createTime" />
</el-table> </el-table>
<pagination <pagination
@ -43,6 +59,8 @@
</template> </template>
<script setup> <script setup>
import { searchCollectRecords } from '@/api/uav/record'
const searchForm = ref({ const searchForm = ref({
question: '', question: '',
nameOrPhone: '', nameOrPhone: '',
@ -50,6 +68,8 @@ const searchForm = ref({
pageSize: 100 pageSize: 100
}) })
const optionArr = ['A', 'B', 'C', 'D', 'E']
const loading = ref(false) const loading = ref(false)
const total = ref(0) const total = ref(0)
const tableList = ref([]) const tableList = ref([])
@ -59,18 +79,14 @@ onMounted(() => {
}) })
function getList() { function getList() {
loading.value = true loading.value = true
tableList.value = [ try {
{ searchCollectRecords(searchForm.value).then((res) => {
id: 1, tableList.value = res.list
question: '1+1=?', total.value = res.total
answer: 'B', })
yourAnswer: 'B', } finally {
status: '1',
createTime: ''
}
]
total.value = 1
loading.value = false loading.value = false
}
} }
function handleQuery() { function handleQuery() {

@ -3,14 +3,14 @@
<el-form :model="searchForm" inline @submit.prevent> <el-form :model="searchForm" inline @submit.prevent>
<el-form-item> <el-form-item>
<el-input <el-input
v-model="searchForm.nameOrPhone" v-model="searchForm.userName"
placeholder="输入学员姓名/手机号" placeholder="输入学员姓名/手机号"
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-select <el-select
v-model="searchForm.status" v-model="searchForm.isPass"
placeholder="选择考试结果" placeholder="选择考试结果"
@change="handleQuery" @change="handleQuery"
style="width: 150px" style="width: 150px"
@ -28,20 +28,20 @@
v-loading="loading" v-loading="loading"
:data="tableList" :data="tableList"
highlight-current-row highlight-current-row
max-height="calc(100vh - 320px)" max-height="calc(100vh - 260px)"
> >
<el-table-column type="index" width="55" align="center" /> <el-table-column type="index" width="55" align="center" />
<el-table-column label="姓名" prop="name" /> <el-table-column label="姓名" prop="userName" />
<el-table-column label="手机号" prop="phone" /> <el-table-column label="手机号" prop="phone" />
<el-table-column label="无人机类型" prop="carType" /> <el-table-column label="无人机类型" prop="modelName" />
<el-table-column label="驾驶员类型" prop="driverType" /> <el-table-column label="驾驶员类型" prop="typeName" />
<el-table-column label="交卷时间" prop="createTime" /> <el-table-column label="交卷时间" prop="submitTime" />
<el-table-column label="模考时长" prop="during" /> <el-table-column label="模考时长" prop="testTimeStr" />
<el-table-column label="得分" prop="score" /> <el-table-column label="得分" prop="score" />
<el-table-column label="答题结果" prop="status"> <el-table-column label="答题结果" prop="isPass">
<template #default="{ row }"> <template #default="{ row }">
<el-tag v-if="row.status == 0" type="danger">合格</el-tag> <el-tag v-if="row.isPass" type="success">合格</el-tag>
<el-tag v-else type="success">合格</el-tag> <el-tag v-else type="danger">合格</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="100"> <el-table-column label="操作" width="100">
@ -63,10 +63,12 @@
</template> </template>
<script setup> <script setup>
import { searchExamRecords, searchStudyRecords } from '@/api/uav/record'
const searchForm = ref({ const searchForm = ref({
nameOrPhone: '', userName: '',
pageNo: 1, pageNo: 1,
pageSize: 100 pageSize: 50
}) })
const loading = ref(false) const loading = ref(false)
@ -78,18 +80,14 @@ onMounted(() => {
}) })
function getList() { function getList() {
loading.value = true loading.value = true
tableList.value = [ try {
{ searchExamRecords(searchForm.value).then((res) => {
id: 1, tableList.value = res.list
question: '1+1=?', total.value = res.total
answer: 'B', })
yourAnswer: 'B', } finally {
status: '1',
createTime: ''
}
]
total.value = 1
loading.value = false loading.value = false
}
} }
function handleQuery() { function handleQuery() {
@ -98,9 +96,11 @@ function handleQuery() {
} }
function handleView(row) { function handleView(row) {
console.log(row) try {
const query = {}
alert('查看每一题的记录,类似做题记录,+显示未做题') //
} finally {
}
} }
</script> </script>

Loading…
Cancel
Save