对接培训模板导出

This commit is contained in:
wangchengming 2025-07-02 11:16:16 +08:00
parent 005a3a8e98
commit 3eadd103e6
6 changed files with 130 additions and 58 deletions

View File

@ -52,11 +52,12 @@ export function importVehicleModelTraining(data) {
})
}
// // 导出车型培训记录
// export function exportVehicleModelTraining(data) {
// return request({
// url: '/admin/vehicleModelTraining/export',
// method: 'post',
// data
// })
// }
// 导出车型培训模板
export function exportVehicleTemplate(data) {
return request({
url: '/admin/vehicleModelTraining/templateExport',
method: 'post',
responseType: 'blob',
data
})
}

View File

@ -7,7 +7,7 @@ export default {
/**
* 侧边栏主题 深色主题theme-dark浅色主题theme-light
*/
sideTheme: 'theme-dark',
sideTheme: 'theme-light',
/**
* 是否系统布局配置

View File

@ -13,25 +13,25 @@
<el-card>
<template #header>
<div class="card-header">
<span>导出</span>
<span>导出模板</span>
</div>
</template>
<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-position="top">
<div class="applyFormContainer">
<el-row class="myRow" :gutter="20">
<el-col :span="12">
<el-form-item label="属地" prop="targetQualification">
<el-select v-model="ruleForm.targetQualification" placeholder="请选择属地">
<el-option label="Zone one" value="shanghai" />
<el-option label="Zone two" value="beijing" />
<el-form-item label="属地" prop="dependencyId">
<el-select v-model="ruleForm.dependencyId" placeholder="请选择属地">
<el-option v-for="item in busDependencyData" :key="item.id"
:label="item.dependencyName" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="车型" prop="targetQualification">
<el-select v-model="ruleForm.targetQualification" placeholder="请选择车型">
<el-option label="Zone one" value="shanghai" />
<el-option label="Zone two" value="beijing" />
<el-form-item label="车型" prop="vehicleModel">
<el-select v-model="ruleForm.vehicleModel" placeholder="请选择车型" clearable>
<el-option v-for="dict in vehicle_model" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@ -49,50 +49,90 @@
</template>
<script setup>
import { reactive } from 'vue'
import { onMounted, reactive } from 'vue'
import { useRouter } from 'vue-router'
import { UploadFilled } from '@element-plus/icons-vue'
import { exportVehicleTemplate } from "@/api/qualification/vehicleTrain"
import { getBusDependencyPage } from "@/api/system/dependency"
const router = useRouter()
const levelList = ref([
{ title: '资质管理', path: '/qualification' },
{ title: '车型培训情况', path: '/qualification/vehicleTrain' },
{ title: '导出', path: '/qualification/vehicleTrain/exportForm' }
{ title: '导出模板', path: '/qualification/vehicleTrain/exportForm' }
])
const { proxy } = getCurrentInstance()
const { vehicle_model } = proxy.useDict("vehicle_model")
const data = reactive({
ruleForm: {},
rules: {
vehicleModel: [{ required: true, message: "车型不能为空", trigger: "change" }],
dependencyId: [{ required: true, message: "属地不能为空", trigger: "change" }],
},
})
const { ruleForm, rules } = toRefs(data)
//
onMounted(() => {
getBusDependencyData()
});
//
const busDependencyData = ref([])
//
const getBusDependencyData = () => {
getBusDependencyPage({
pageIndex: 1,
pageSize: 100,
}).then(response => {
if (response.code == 200) {
busDependencyData.value = response.data.list
}
})
}
const handleCancel = () => {
proxy.resetForm("ruleFormRef")
router.push({
path: '/qualification/vehicleTrain'
})
}
const getCurrentTime = () => {
//
var getTime = new Date().getTime(); //
var time = new Date(getTime); //
var year = time.getFullYear(); //
var month = (time.getMonth() + 1).toString().padStart(2, '0'); //
var date = time.getDate().toString().padStart(2, '0'); //
var hour = time.getHours().toString().padStart(2, '0'); //
var minute = time.getMinutes().toString().padStart(2, '0'); //
var second = time.getSeconds().toString().padStart(2, '0'); //
var gettime = year + month + date + hour + minute + second
return gettime
}
const handleSubmit = () => {
proxy.$refs["ruleFormRef"].validate(valid => {
if (valid) {
router.push({
path: '/qualification/vehicleTrain'
exportVehicleTemplate(ruleForm.value).then(res => {
console.log('导出结果', res)
var downFileName = getCurrentTime()
// a
const a = document.createElement('a')
a.href = URL.createObjectURL(res)
// adownload
a.setAttribute(
'download',
downFileName
)
document.body.appendChild(a)
a.click();
document.body.removeChild(a)
proxy.$modal.msgSuccess("导出成功")
open.value = false
router.push({
path: '/qualification/vehicleTrain'
})
})
// if (form.value.roleId != undefined) {
// form.value.menuIds = getMenuAllCheckedKeys()
// updateRole(form.value).then(response => {
// proxy.$modal.msgSuccess("")
// open.value = false
// getList()
// })
// } else {
// form.value.menuIds = getMenuAllCheckedKeys()
// addRole(form.value).then(response => {
// proxy.$modal.msgSuccess("")
// open.value = false
// getList()
// })
// }
}
})
}

View File

@ -196,8 +196,7 @@ const selectChanged = (value) => {
//
const getDetailInfo = (id) => {
getVehicleModelTraining(id).then(res => {
console.log('详情', res)
getVehicleModelTraining(id).then(res => {
if(res.code == 200) ruleForm.value = res.data
})
}

View File

@ -6,13 +6,19 @@
<el-row class="myRow">
<el-col :span="20">
<el-form-item label="属地" prop="dependencyId">
<el-select v-model="queryParams.dependencyId" placeholder="请选择属地" clearable style="width: 200px">
<el-option v-for="item in busDependencyData" :key="item.id" :label="item.dependencyName" :value="item.id" />
<el-select v-model="queryParams.dependencyId" placeholder="请选择属地" clearable
style="width: 200px">
<el-option v-for="item in busDependencyData" :key="item.id" :label="item.dependencyName"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="员工姓名" prop="userName">
<el-input v-model="queryParams.userName" placeholder="请输入员工姓名" clearable
style="width: 200px" @keyup.enter="handleQuery" />
<el-form-item label="员工姓名" prop="userId">
<!-- <el-input v-model="queryParams.userId" placeholder="请输入员工姓名" clearable
style="width: 200px" @keyup.enter="handleQuery" /> -->
<el-select v-model="queryParams.userId" filterable placeholder="请选择员工姓名" style="width: 200px">
<el-option v-for="item in allUsers" :key="item.userId" :label="item.nickName"
:value="item.userId" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="4" style="text-align: right;">
@ -33,7 +39,7 @@
</el-button>
<el-button type="primary" class="qualificationApplyBtn" @click="handleOpenApplyForm">
<img :src="exprotIcon" class="custom-icon" />
导出
导出模板
</el-button>
</div>
<div class="borderLine"></div>
@ -43,21 +49,23 @@
{{ scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column prop="dependencyName" label="属地" />
<el-table-column prop="deptName" label="部门" />
<el-table-column prop="sectionName" label="科室" />
<el-table-column prop="dependencyName" label="属地" :show-overflow-tooltip="true" />
<el-table-column prop="deptName" label="部门" :show-overflow-tooltip="true" />
<el-table-column prop="sectionName" label="科室" :show-overflow-tooltip="true" />
<el-table-column prop="workNo" label="工号" />
<el-table-column prop="userName" label="员工姓名" />
<el-table-column prop="vehicleModel" label="车型" />
<el-table-column prop="vehicleModel" label="车型" :show-overflow-tooltip="true" />
<el-table-column prop="trainingTime" label="培训时间" width="130">
<template #default="scope">
<span v-if="scope.row.trainingTime"> {{ moment(scope.row.trainingTime).format('YYYY-MM-DD') }}</span>
<span v-if="scope.row.trainingTime"> {{ moment(scope.row.trainingTime).format('YYYY-MM-DD')
}}</span>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="操作" width="`5`0">
<template #default="scope">
<el-button type="primary" text class="replayTextBtn" @click="handleEdit(scope.row)">编辑</el-button>
<el-button type="primary" text class="replayTextBtn"
@click="handleEdit(scope.row)">编辑</el-button>
<el-divider direction="vertical" class="verticalLine" />
<el-button type="primary" text class="deleteTextBtn"
@click="handleDelete(scope.row)">删除</el-button>
@ -78,11 +86,13 @@ import importIcon from '@/assets/images/ImportIcon.png'
import addIcon from '@/assets/images/addIcon.png'
import { getVehicleTrainingPageList, deleteVehicleModelTraining } from "@/api/qualification/vehicleTrain"
import { getBusDependencyPage } from "@/api/system/dependency"
import { listUser } from "@/api/system/user"
import moment from 'moment'
const { proxy } = getCurrentInstance()
//
onMounted(() => {
getAllUser();
getList();
getBusDependencyData()
});
@ -111,6 +121,18 @@ const getBusDependencyData = () => {
})
}
//
const allUsers = ref([])
//
const getAllUser = () => {
listUser({
pageNum: 1,
pageSize: 5000
}).then(res => {
allUsers.value = res.rows
})
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.pageIndex = 1

View File

@ -103,13 +103,23 @@
{{ scope.$index + 1 }}
</template>
</el-table-column>
<!-- <el-table-column label="用户编号" align="center" min-width="100" key="userId" prop="userId"
v-if="columns[0].visible" /> -->
<el-table-column label="用户账号" align="center" min-width="130" key="userName" prop="userName"
v-if="columns[1].visible" :show-overflow-tooltip="true" />
<el-table-column label="真实姓名" align="center" min-width="130" key="nickName" prop="nickName"
<el-table-column label="工号" align="center" min-width="130" key="workNo" prop="workNo"
v-if="columns[2].visible" :show-overflow-tooltip="true" />
<el-table-column label="中文姓名" align="center" min-width="130" key="nickName" prop="nickName"
v-if="columns[2].visible" :show-overflow-tooltip="true" />
<el-table-column label="部门" align="center" min-width="130" key="deptName" prop="dept.deptName"
<el-table-column label="英文姓名" align="center" min-width="210" key="englishName" prop="englishName"
v-if="columns[2].visible" :show-overflow-tooltip="true" />
<el-table-column label="登录账号" align="center" min-width="130" key="userName" prop="userName"
v-if="columns[1].visible" :show-overflow-tooltip="true" />
<el-table-column label="邮箱" align="center" min-width="280" key="email" prop="email"
v-if="columns[1].visible" :show-overflow-tooltip="true" />
<el-table-column label="部门" align="center" min-width="180" key="deptName" prop="dept.deptName"
v-if="columns[3].visible" :show-overflow-tooltip="true" />
<el-table-column label="科室" align="center" min-width="180" key="sectionName" prop="sectionName"
v-if="columns[3].visible" :show-overflow-tooltip="true" />
<el-table-column label="属地" align="center" min-width="180" key="dependencyName" prop="dependencyName"
v-if="columns[3].visible" :show-overflow-tooltip="true" />
<el-table-column label="属地ESC" align="center" min-width="130" key="escUserName" prop="escUserName"
v-if="columns[3].visible" :show-overflow-tooltip="true" />
<el-table-column label="手机号码" align="center" width="160" key="phonenumber" prop="phonenumber"
v-if="columns[4].visible" />