提交代码

This commit is contained in:
wangchengming 2025-08-14 11:50:45 +08:00
parent 1932c81c14
commit 88113922d3
40 changed files with 842 additions and 313 deletions

Binary file not shown.

View File

@ -1,14 +1,10 @@
<template>
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<!-- <span v-if="item.redirect === 'noRedirect' || index == levelList.length - 1" class="no-redirect">{{
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.meta.title }}</span>
<a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a> -->
<span v-if="index == levelList.length - 1" class="link-redirect">{{
item.meta.title }}</span>
<span v-else class="no-redirect">{{ item.meta.title }}</span>
<!-- <a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a> -->
<span v-else class="no-redirect">{{ item.meta.title }}</span>
</el-breadcrumb-item>
</transition-group>
</el-breadcrumb>
@ -25,14 +21,14 @@ const levelList = ref([])
function getBreadcrumb() {
// only show routes with meta.title
let matched = []
const pathNum = findPathNum(route.path)
const pathNum = findPathNum(route.path)
// multi-level menu
if (pathNum > 2) {
const reg = /\/\w+/gi
const pathList = route.path.match(reg).map((item, index) => {
if (index !== 0) item = item.slice(1)
return item
})
})
getMatched(pathList, permissionStore.defaultRoutes, matched)
} else {
matched = route.matched.filter((item) => item.meta && item.meta.title)
@ -41,7 +37,7 @@ function getBreadcrumb() {
// if (!isDashboard(matched[0])) {
// matched = [{ path: "/index", meta: { title: "" } }].concat(matched)
// }
levelList.value = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false)
levelList.value = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false)
}
function findPathNum(str, char = "/") {
let index = str.indexOf(char)
@ -53,7 +49,7 @@ function findPathNum(str, char = "/") {
return num
}
function getMatched(pathList, routeList, matched) {
let data = routeList.find(item => item.path == pathList[0] || (item.name += '').toLowerCase() == pathList[0])
let data = routeList.find(item => item.path == pathList[0] || (item.name += '').toLowerCase() == pathList[0])
if (data) {
matched.push(data)
if (data.children && pathList.length) {
@ -123,6 +119,7 @@ getBreadcrumb()
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}
</style>

View File

@ -3,14 +3,12 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
<span class="link-redirect" @click="handleJump(item.path)">{{ item.title }}</span>
</el-breadcrumb-item>
</transition-group>
</el-breadcrumb>
<div class="myRootContainer clearBoth">
<el-card>
<el-card class="libaryDetailCard">
<template #header>
<div class="card-header">
<span>{{ detailForm.title }}</span>
@ -44,7 +42,8 @@
<section class="link-section">
<div class="section-title">相关链接</div>
<ul class="resource-list">
<li v-for="(link, index) in showTableData" :key="'link-' + index" class="resource-item">
<li v-for="(link, index) in showTableData" :key="'link-' + index"
class="resource-item">
<a :href="link.linkUrl" target="_blank" class="resource-link">
<span class="linkIcon">.</span>
<span class="documentName">{{ link.name }}:{{ link.linkUrl }}</span>
@ -65,18 +64,20 @@
import { onMounted, reactive, ref } from 'vue'
import { getBusEncyclopediaDatabase } from "@/api/databaseLibary"
import { downFile } from "@/api/ppeTool"
import { useRouter } from 'vue-router'
const router = useRouter()
const route = useRoute()
const levelList = ref([
{ title: '百科数据库', path: '/databaseLibary' },
{ title: '预览', path: '/databaseLibaryDetail' },
{ title: '百科数据库', path: '/databaseLibary' },
{ title: '预览' },
])
const detailForm = ref({})
//
const docUploadList = ref([])
//
const showTableData = ref([])
//
onMounted(() => {
@ -85,6 +86,9 @@ onMounted(() => {
getDetailInfo(id)
}
});
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
const getDetailInfo = (id) => {
showTableData.value = []
@ -157,6 +161,7 @@ const handleDownFile = (fileName, downLoadName) => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}
@ -189,7 +194,7 @@ const handleDownFile = (fileName, downLoadName) => {
padding: 10px 20px 17px 20px;
}
.el-card__body {
.libaryDetailCard .el-card__body {
padding: 20px 0px !important;
}

View File

@ -3,9 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
<span class="link-redirect" @click="handleJump(item.path)">{{ item.title }}</span>
</el-breadcrumb-item>
</transition-group>
</el-breadcrumb>
@ -186,20 +184,24 @@ onMounted(() => {
getDetailInfo(id)
levelList.value = [
{ title: '百科数据库', path: '/databaseLibary' },
{ title: '编辑', path: '/databaseLibaryForm' },
{ title: '编辑' },
]
} else {
ruleForm.value.id = null
formTitle.value = '新建'
levelList.value = [
{ title: '百科数据库', path: '/databaseLibary' },
{ title: '新建', path: '/databaseLibaryForm' },
{ title: '新建' },
]
}
});
});
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
const Last10Years = ref([]);
//
@ -434,6 +436,7 @@ const handleSubmit = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -1,6 +1,13 @@
<template>
<div class="app-page-container">
<breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
<div class="app-page-container">
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
</el-breadcrumb-item>
</transition-group>
</el-breadcrumb>
<div class="lib-container clearBoth">
<div class="dynamic-table">
<div class="table-row">
@ -91,6 +98,9 @@ import card from './components/card.vue'
import { getCustomerBusDependencyPage } from "@/api/system/dependency"
const levelList = ref([
{ title: '百科数据库', path: '/qualification/vehicleTrain' }
])
const { proxy } = getCurrentInstance()
//
@ -121,6 +131,10 @@ onMounted(() => {
});
});
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
const Last10Years = ref([]);
//
@ -242,6 +256,44 @@ const handleBlur = (event) => {
padding-bottom: 0px;
}
.app-breadcrumb.el-breadcrumb {
width: 1200px;
margin: 0 auto;
height: 44px;
line-height: 44px;
font-size: 18px;
background: #f8f8f8;
.el-breadcrumb__item {
.el-breadcrumb__separator {
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 18px;
color: #000000 !important;
margin: 0 9px;
}
}
.no-redirect {
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 18px;
color: #000000;
cursor: text;
}
.link-redirect {
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 18px;
color: #0090FF;
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}
.lib-container {
height: calc(100vh - 140px);
width: 1200px;

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -115,7 +115,7 @@
<template #default="scope">
<span v-if="scope.row.startTime"> {{
moment(scope.row.startTime).format('YYYY-MM-DD')
}}</span>
}}</span>
<span v-else>-</span>
</template>
</el-table-column>
@ -125,7 +125,7 @@
<template v-else>
<span v-if="scope.row.expireTime"> {{
moment(scope.row.expireTime).format('YYYY-MM-DD')
}}</span>
}}</span>
<span v-else>-</span>
</template>
</template>
@ -180,16 +180,18 @@ import { useRouter } from 'vue-router'
const router = useRouter()
const route = useRoute()
const levelList = ref([
{ title: '标签管理', path: '/labelManage' },
{ title: '标签管理' },
{ title: '标签审核员审批', path: '/labelManage/adminApproval' },
{ title: '审批详情', path: '/labelManage/adminApproval/approvalDetail' }
{ title: '审批详情' }
])
const { proxy } = getCurrentInstance()
const data = reactive({
detailForm: {},
})
const { detailForm } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
const id = route.params && route.params.Id
@ -275,6 +277,7 @@ const handleCancel = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -114,7 +114,7 @@
<template #default="scope">
<span v-if="scope.row.startTime"> {{
moment(scope.row.startTime).format('YYYY-MM-DD')
}}</span>
}}</span>
<span v-else>-</span>
</template>
</el-table-column>
@ -124,7 +124,7 @@
<template v-else>
<span v-if="scope.row.expireTime"> {{
moment(scope.row.expireTime).format('YYYY-MM-DD')
}}</span>
}}</span>
<span v-else>-</span>
</template>
</template>
@ -201,9 +201,9 @@ import { useRouter } from 'vue-router'
const router = useRouter()
const route = useRoute()
const levelList = ref([
{ title: '标签管理', path: '/labelManage' },
{ title: '标签管理' },
{ title: '标签审核员审批', path: '/labelManage/adminApproval' },
{ title: '审批', path: '/labelManage/adminApproval/approvalDetail' }
{ title: '审批' }
])
const { proxy } = getCurrentInstance()
const data = reactive({
@ -218,7 +218,9 @@ const data = reactive({
},
})
const { ruleForm, detailForm, rules } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
const id = route.params && route.params.Id
@ -329,6 +331,7 @@ const handleSubmit = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -51,9 +51,9 @@ import { importRecurrentTraining } from "@/api/labelManage/labelManage"
const router = useRouter()
const levelList = ref([
{ title: '标签管理', path: '/labelManage' },
{ title: '标签管理' },
{ title: '标签审核员审批', path: '/labelManage/adminApproval' },
{ title: '导入复训信息', path: '/labelManage/adminApprovalImport' }
{ title: '导入复训信息' }
])
const { proxy } = getCurrentInstance()
const data = reactive({
@ -62,7 +62,9 @@ const data = reactive({
},
})
const { ruleForm, rules } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
const docUploadList = ref([])
//
@ -149,6 +151,7 @@ const handleCancel = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -180,16 +180,18 @@ import { useRouter } from 'vue-router'
const router = useRouter()
const route = useRoute()
const levelList = ref([
{ title: '标签管理', path: '/labelManage' },
{ title: 'ESC审批', path: '/labelManage/labelEscApproval' },
{ title: '审批详情', path: '/labelManage/labelEscApproval/approvalDetail' }
{ title: '标签管理' },
{ title: 'ESC审批', path: '/labelManage/escApproval' },
{ title: '审批详情' }
])
const { proxy } = getCurrentInstance()
const data = reactive({
detailForm: {},
})
const { detailForm } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
const id = route.params && route.params.Id
@ -275,6 +277,7 @@ const handleCancel = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -201,9 +201,9 @@ import { useRouter } from 'vue-router'
const router = useRouter()
const route = useRoute()
const levelList = ref([
{ title: '标签管理', path: '/labelManage' },
{ title: 'ESC审批', path: '/labelManage/labelEscApproval' },
{ title: '审批', path: '/labelManage/labelEscApproval/approvalDetail' }
{ title: '标签管理' },
{ title: 'ESC审批', path: '/labelManage/escApproval' },
{ title: '审批' }
])
const { proxy } = getCurrentInstance()
const data = reactive({
@ -218,7 +218,9 @@ const data = reactive({
},
})
const { ruleForm, detailForm, rules } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
const id = route.params && route.params.Id
@ -329,6 +331,7 @@ const handleSubmit = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -1,6 +1,13 @@
<template>
<div class="app-page-container">
<breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
</el-breadcrumb-item>
</transition-group>
</el-breadcrumb>
<div class="app-container clearBoth">
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-row class="myRow">
@ -52,7 +59,7 @@
<el-table-column prop="expireDate" label="到期日期" min-width="130">
<template #default="scope">
<span v-if="scope.row.expireDate"> {{ moment(scope.row.expireDate).format('YYYY-MM-DD')
}}</span>
}}</span>
<span v-else>-</span>
</template>
</el-table-column>
@ -65,7 +72,8 @@
</el-table-column>
<el-table-column prop="fileContent" label="标定信息" min-width="360">
<template #default="scope">
<div v-for="item in JSON.parse(scope.row.fileContent)" class="fileLink" @click="handleDownFile(item.url, item.name)">
<div v-for="item in JSON.parse(scope.row.fileContent)" class="fileLink"
@click="handleDownFile(item.url, item.name)">
{{ item.name }} </div>
</template>
</el-table-column>
@ -86,8 +94,7 @@
</template>
<script setup>
import { onMounted, ref } from 'vue'
import { useRouter } from 'vue-router'
import Breadcrumb from '@/components/Breadcrumb'
import { useRouter } from 'vue-router'
import addIcon from '@/assets/images/addIcon.png'
import { customerDeptTreeSelect } from "@/api/system/user"
import { getBusDependencyPage } from "@/api/system/dependency"
@ -96,6 +103,9 @@ import moment from 'moment'
const router = useRouter()
const levelList = ref([
{ title: '高压PPE/工具管理', path: '/ppeTool' }
])
const queryParams = ref({
pageIndex: 1,
pageSize: 10,
@ -108,7 +118,9 @@ const total = ref(0)
const tableData = ref([])
const { proxy } = getCurrentInstance()
const { ppe_tool_name } = proxy.useDict("ppe_tool_name")
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
getDeptTree();
@ -220,6 +232,44 @@ const handleDownFile = (fileName, downLoadName) => {
padding-bottom: 0px;
}
.app-breadcrumb.el-breadcrumb {
width: 1200px;
margin: 0 auto;
height: 44px;
line-height: 44px;
font-size: 18px;
background: #f8f8f8;
.el-breadcrumb__item {
.el-breadcrumb__separator {
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 18px;
color: #000000 !important;
margin: 0 9px;
}
}
.no-redirect {
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 18px;
color: #000000;
cursor: text;
}
.link-redirect {
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 18px;
color: #0090FF;
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}
.clearBoth {
clear: both;
}

View File

@ -3,9 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
<span class="link-redirect" @click="handleJump(item.path)">{{ item.title }}</span>
</el-breadcrumb-item>
</transition-group>
</el-breadcrumb>
@ -119,13 +117,13 @@ onMounted(() => {
getDetailInfo(id)
levelList.value = [
{ title: '高压PPE/工具管理', path: '/ppeTool' },
{ title: '编辑', path: '/ppeToolForm' },
{ title: '编辑' },
]
} else {
ruleForm.value.id = null
formTitle.value = '新建'
levelList.value = [{ title: '高压PPE/工具管理', path: '/ppeTool' },
{ title: '新建', path: '/ppeToolForm' },]
{ title: '新建' },]
}
});
@ -145,7 +143,9 @@ const data = reactive({
},
})
const { ruleForm, rules } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
const busDependencyData = ref([])
//
@ -325,6 +325,7 @@ const handleSubmit = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -130,7 +130,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片">
<el-form-item label="电工证">
<img :src="beforeConditionInfo.certificatePhoto.split('.').pop() == 'pdf' ? pdfIcon : baseUrl + beforeConditionInfo.certificatePhoto"
class="avatar viewFile"
@click.stop="handleCardPreview(beforeConditionInfo.certificatePhoto)" />
@ -176,7 +176,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片">
<el-form-item label="电工证">
<img :src="beforeConditionInfo.certificatePhoto.split('.').pop() == 'pdf' ? pdfIcon : baseUrl + beforeConditionInfo.certificatePhoto"
class="avatar viewFile"
@click.stop="handleCardPreview(beforeConditionInfo.certificatePhoto)" />
@ -250,7 +250,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片">
<el-form-item label="电工证">
<img :src="beforeConditionInfo.certificatePhoto.split('.').pop() == 'pdf' ? pdfIcon : baseUrl + beforeConditionInfo.certificatePhoto"
class="avatar viewFile"
@click.stop="handleCardPreview(beforeConditionInfo.certificatePhoto)" />
@ -392,9 +392,9 @@ const dialogVisible = ref(false)
const suffix = ref('')
const router = useRouter()
const levelList = ref([
{ title: '资质管理', path: '/qualification' },
{ title: 'ESC审批', path: '/qualification/escApproval' },
{ title: '审批', path: '/qualification/escApproval/approvalDetail' }
{ title: '资质管理' },
{ title: 'ESC审批', path: '/qualification/qualificationEscApproval' },
{ title: '审批' }
])
const { proxy } = getCurrentInstance()
const data = reactive({
@ -454,7 +454,9 @@ const getQualificationApprovalRecord = (_id) => {
}
const { ruleForm, detailForm, beforeConditionInfo, rules } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
const id = route.params && route.params.Id
@ -570,6 +572,7 @@ const handleCancel = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -130,7 +130,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片">
<el-form-item label="电工证">
<img :src="beforeConditionInfo.certificatePhoto.split('.').pop() == 'pdf' ? pdfIcon : baseUrl + beforeConditionInfo.certificatePhoto"
class="avatar viewFile"
@click.stop="handleCardPreview(beforeConditionInfo.certificatePhoto)" />
@ -176,7 +176,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片">
<el-form-item label="电工证">
<img :src="beforeConditionInfo.certificatePhoto.split('.').pop() == 'pdf' ? pdfIcon : baseUrl + beforeConditionInfo.certificatePhoto"
class="avatar viewFile"
@click.stop="handleCardPreview(beforeConditionInfo.certificatePhoto)" />
@ -250,7 +250,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片">
<el-form-item label="电工证">
<img :src="beforeConditionInfo.certificatePhoto.split('.').pop() == 'pdf' ? pdfIcon : baseUrl + beforeConditionInfo.certificatePhoto"
class="avatar viewFile"
@click.stop="handleCardPreview(beforeConditionInfo.certificatePhoto)" />
@ -413,9 +413,9 @@ const dialogVisible = ref(false)
const suffix = ref('')
const router = useRouter()
const levelList = ref([
{ title: '资质管理', path: '/qualification' },
{ title: 'ESC审批', path: '/qualification/escApproval' },
{ title: '审批', path: '/qualification/escApproval/approvalDetail' }
{ title: '资质管理' },
{ title: 'ESC审批', path: '/qualification/qualificationEscApproval' },
{ title: '审批' }
])
const { proxy } = getCurrentInstance()
const data = reactive({
@ -475,7 +475,9 @@ const getQualificationApprovalRecord = (_id) => {
}
const { ruleForm, detailForm, beforeConditionInfo, rules } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
const id = route.params && route.params.Id
@ -612,6 +614,7 @@ const handleSubmit = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -95,9 +95,14 @@
<el-table-column prop="qualificationName" label="资质名称" width="100" />
<el-table-column prop="certificateUrl" label="资质证书" align="center">
<template #default="scope">
<el-image v-if="scope.row.certificateUrl"
style="width: 70px; height: 44px;line-height: 50px;"
:src="baseUrl + scope.row.certificateUrl" fit="fill" />
<template v-if="scope.row.certificateUrl">
<el-image v-if="isImageFile(scope.row.certificateUrl)"
style="width: 70px; height: 44px;line-height: 50px;cursor: pointer;"
:src="baseUrl + scope.row.certificateUrl" fit="fill"
@click.stop="handleCardPreview(scope.row.certificateUrl)" />
<img v-else :src="pdfIcon" class="avatar viewFile" style="cursor: pointer;"
@click.stop="handleCardPreview(scope.row.certificateUrl)" />
</template>
<span v-else>请在"ESC任务->资质上传"上传资质证书</span>
</template>
</el-table-column>
@ -140,6 +145,15 @@
<el-button class="cancelApplyBtn" @click="handleCancel">取消</el-button>
<el-button class="submitApplyBtn" @click="handleSubmit">提交</el-button>
</div>
<!-- 图片预览 -->
<el-dialog v-model="dialogVisible" title="图片预览">
<img v-if="isImageFile(dialogImageUrl)" :src="dialogImageUrl" class="preview-image" alt="Preview Image" />
<div v-else class="unsupported-file">
<pdf-preview :pdf-url="dialogImageUrl" />
</div>
</el-dialog>
</div>
</template>
@ -156,9 +170,9 @@ import moment from 'moment'
const router = useRouter()
const levelList = ref([
{ title: '资质管理', path: '/qualification' },
{ title: '资质管理' },
{ title: 'ESC任务', path: '/qualification/escTask' },
{ title: '标签申请', path: '/qualification/escTask/lableApplyForm' }
{ title: '标签申请' }
])
const { proxy } = getCurrentInstance()
@ -195,8 +209,14 @@ const qualificationsMap = {
};
const loading = ref(true)
const tableData = ref([])
const baseUrl = import.meta.env.VITE_APP_BASE_API
const suffix = ref('')
const baseUrl = import.meta.env.VITE_APP_BASE_API
const dialogImageUrl = ref('')
const dialogVisible = ref(false)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
getAllUser()
@ -398,6 +418,25 @@ const handleSubmit = () => {
}
})
}
//
const isImageFile = (filePath) => {
//
if (!filePath || filePath.indexOf('.') === -1) return '';
suffix.value = filePath.split('.').pop();
console.log('后缀', filePath.split('.').pop())
return ['jpeg', 'jpg', 'png'].includes(suffix.value?.toLowerCase())
}
//
const handleCardPreview = (filePath) => {
//
if (!filePath || filePath.indexOf('.') === -1) return '';
suffix.value = filePath.split('.').pop();
dialogImageUrl.value = baseUrl + filePath
dialogVisible.value = true
}
</script>
<style lang='scss'>
.app-main {
@ -442,6 +481,7 @@ const handleSubmit = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}
@ -602,4 +642,17 @@ const handleSubmit = () => {
text-align: left;
color: #000000;
}
.preview-image {
width: 100%;
max-height: 70vh;
object-fit: contain;
}
.unsupported-file {
padding: 0px;
text-align: center;
color: #999;
height: 70vh;
}
</style>

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -95,9 +95,14 @@
<el-table-column prop="qualificationName" label="资质名称" width="100" />
<el-table-column prop="certificateUrl" label="资质证书" align="center">
<template #default="scope">
<el-image v-if="scope.row.certificateUrl"
style="width: 70px; height: 44px;line-height: 50px;"
:src="baseUrl + scope.row.certificateUrl" fit="fill" />
<template v-if="scope.row.certificateUrl">
<el-image v-if="isImageFile(scope.row.certificateUrl)"
style="width: 70px; height: 44px;line-height: 50px;cursor: pointer;"
:src="baseUrl + scope.row.certificateUrl" fit="fill"
@click.stop="handleCardPreview(scope.row.certificateUrl)" />
<img v-else :src="pdfIcon" class="avatar viewFile" style="cursor: pointer;"
@click.stop="handleCardPreview(scope.row.certificateUrl)" />
</template>
<span v-else>请在"ESC任务->资质上传"上传资质证书</span>
</template>
</el-table-column>
@ -140,8 +145,15 @@
<el-button class="cancelApplyBtn" @click="handleCancel">取消</el-button>
<el-button class="submitApplyBtn" @click="handleSubmit">提交</el-button>
</div>
</div>
<!-- 图片预览 -->
<el-dialog v-model="dialogVisible" title="图片预览">
<img v-if="isImageFile(dialogImageUrl)" :src="dialogImageUrl" class="preview-image" alt="Preview Image" />
<div v-else class="unsupported-file">
<pdf-preview :pdf-url="dialogImageUrl" />
</div>
</el-dialog>
</div>
</template>
<script setup>
import { onMounted, reactive, ref } from 'vue'
@ -157,9 +169,9 @@ import moment from 'moment'
const router = useRouter()
const route = useRoute()
const levelList = ref([
{ title: '资质管理', path: '/qualification' },
{ title: '资质管理' },
{ title: 'ESC任务', path: '/qualification/escTask' },
{ title: '标签申请', path: '/qualification/escTask/lableApplyForm' }
{ title: '标签申请' }
])
const { proxy } = getCurrentInstance()
@ -196,8 +208,14 @@ const qualificationsMap = {
};
const loading = ref(true)
const tableData = ref([])
const baseUrl = import.meta.env.VITE_APP_BASE_API
const suffix = ref('')
const baseUrl = import.meta.env.VITE_APP_BASE_API
const dialogImageUrl = ref('')
const dialogVisible = ref(false)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
getAllUser()
@ -417,6 +435,25 @@ const handleSubmit = () => {
}
})
}
//
const isImageFile = (filePath) => {
//
if (!filePath || filePath.indexOf('.') === -1) return '';
suffix.value = filePath.split('.').pop();
console.log('后缀', filePath.split('.').pop())
return ['jpeg', 'jpg', 'png'].includes(suffix.value?.toLowerCase())
}
//
const handleCardPreview = (filePath) => {
//
if (!filePath || filePath.indexOf('.') === -1) return '';
suffix.value = filePath.split('.').pop();
dialogImageUrl.value = baseUrl + filePath
dialogVisible.value = true
}
</script>
<style lang='scss'>
.app-main {
@ -461,6 +498,7 @@ const handleSubmit = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}
@ -621,4 +659,17 @@ const handleSubmit = () => {
text-align: left;
color: #000000;
}
.preview-image {
width: 100%;
max-height: 70vh;
object-fit: contain;
}
.unsupported-file {
padding: 0px;
text-align: center;
color: #999;
height: 70vh;
}
</style>

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -22,7 +22,8 @@
<el-row class="myRow" :gutter="20">
<el-col :span="6">
<el-form-item label="目标资质" prop="qualificationId">
<el-select v-model="ruleForm.qualificationId" placeholder="请选择目标资质" clearable>
<el-select v-model="ruleForm.qualificationId" placeholder="请选择目标资质"
@change="handleChoseQualification" clearable>
<el-option v-for="dict in target_qualification" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
@ -105,11 +106,11 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片" prop="beforeCondition.certificatePhoto">
<el-form-item label="电工证" prop="beforeCondition.certificatePhoto">
<myFileUpload ref="certificatePhotoRef"
@set-form-file="handleSetCertificatePhoto" />
</el-form-item>
</el-col>
</el-col>
</el-row>
</div>
<div v-if="ruleForm.qualificationId == 'ES'">
@ -137,7 +138,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片" prop="beforeCondition.certificatePhoto">
<el-form-item label="电工证" prop="beforeCondition.certificatePhoto">
<myFileUpload ref="certificatePhotoRef"
@set-form-file="handleSetCertificatePhoto" />
</el-form-item>
@ -171,7 +172,7 @@
</el-col>
</el-row>
</div>
<div v-if="ruleForm.qualificationId == 'ESC' || ruleForm.qualificationId == 'CESC'">
<div v-if="ruleForm.qualificationId == 'ESC/CESC'">
<el-row class="myRow" :gutter="20">
<el-col :span="8">
<el-form-item label="电工证初领日期" prop="beforeCondition.collectionDate">
@ -196,7 +197,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片" prop="beforeCondition.certificatePhoto">
<el-form-item label="电工证" prop="beforeCondition.certificatePhoto">
<myFileUpload ref="certificatePhotoRef"
@set-form-file="handleSetCertificatePhoto" />
</el-form-item>
@ -288,7 +289,7 @@ import { onMounted, reactive, ref } from 'vue'
import { customerDeptTreeSelect, listUser } from "@/api/system/user"
import { getBusDependencyPage } from "@/api/system/dependency"
import { getSysSectionPage } from "@/api/system/section"
import { submitBusUserQualification } from "@/api/qualification/myQualifications"
import { getUserCertificateList, submitBusUserQualification } from "@/api/qualification/myQualifications"
import myFileUpload from './myFileUpload.vue'
import moment from 'moment'
import { useRouter } from 'vue-router'
@ -347,7 +348,7 @@ const data = reactive({
{ required: true, message: '培训紧迫程度不能为空', trigger: 'change' }
],
certificatePhoto: [
{ required: true, message: '电工证照片不能为空', trigger: 'change' }
{ required: true, message: '电工证不能为空', trigger: 'change' }
],
esFile: [
{ required: true, message: 'ES资质不能为空', trigger: 'change' }
@ -387,16 +388,18 @@ const data = reactive({
})
const levelList = ref([
{ title: '资质管理', path: '/qualification' },
{ title: '资质管理' },
{ title: 'ESC任务', path: '/qualification/escTask' },
{ title: '资质申请', path: '/qualification/escTask/qualificationApplyForm' }
{ title: '资质申请' }
])
const { ruleForm, rules } = toRefs(data)
//
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
const handleSetCertificatePhoto = (filePath) => {
console.log('接收电工证照片', filePath)
console.log('接收电工证', filePath)
ruleForm.value.beforeCondition.certificatePhoto = filePath
}
// SH
@ -466,6 +469,8 @@ const selectChanged = (value) => {
ruleForm.value.sectionId = curUser.sectionId;
ruleForm.value.dependencyId = curUser.dependencyId;
ruleForm.value.escUserName = curUser.escUserName;
getUserQualification(curUser.userId)
}
}
@ -477,6 +482,43 @@ onMounted(() => {
getDeptTree()
getSysSectionData()
});
const choseUserQualification = ref([])
const getUserQualification = (_userId) => {
getUserCertificateList({
pageIndex: 1,
pageSize: 10,
userId: _userId
}).then(res => {
if (res.code == 200) {
choseUserQualification.value = res.data
if (ruleForm.value.qualificationId) handleChoseQualification(ruleForm.value.qualificationId)
}
}).catch(() => {
})
}
//
const handleChoseQualification = (val) => {
if (val == 'LLP') {
const jjzInfo = choseUserQualification.value.filter(item => item.qualificationName === '急救证')[0]
if (jjzInfo && jjzInfo.startTime) {
ruleForm.value.beforeCondition.firstCollectionDate = jjzInfo.startTime
ruleForm.value.beforeCondition.firstCollectionExpireDate = jjzInfo.expireTime
} else {
ruleForm.value.beforeCondition.firstCollectionDate = undefined
ruleForm.value.beforeCondition.firstCollectionExpireDate = undefined
}
} else {
const dgzInfo = choseUserQualification.value.filter(item => item.qualificationName === '电工证')[0]
if (dgzInfo && dgzInfo.startTime) {
ruleForm.value.beforeCondition.collectionDate = dgzInfo.startTime
ruleForm.value.beforeCondition.reviewDate = dgzInfo.expireTime
} else {
ruleForm.value.beforeCondition.collectionDate = undefined
ruleForm.value.beforeCondition.reviewDate = undefined
}
}
}
//
const allUsers = ref([])
// ,
@ -605,6 +647,7 @@ const handleSubmit = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -17,11 +17,17 @@
</el-form>
<div class="borderLine"></div>
<el-table v-loading="loading" :data="tableData" style="width: 100%">
<el-table-column prop="qualificationName" label="资质名称" width="100" />
<el-table-column prop="qualificationName" label="资质名称" width="110" />
<el-table-column prop="certificateUrl" label="资质证书" align="center">
<template #default="scope">
<el-image v-if="scope.row.certificateUrl" style="width: 70px; height: 44px;line-height: 50px;"
:src="baseUrl + scope.row.certificateUrl" fit="fill" />
<template v-if="scope.row.certificateUrl">
<el-image v-if="isImageFile(scope.row.certificateUrl)"
style="width: 70px; height: 44px;line-height: 50px;cursor: pointer;"
:src="baseUrl + scope.row.certificateUrl" fit="fill"
@click.stop="handleCardPreview(scope.row.certificateUrl)" />
<img v-else :src="pdfIcon" class="avatar viewFile" style="cursor: pointer;"
@click.stop="handleCardPreview(scope.row.certificateUrl)" />
</template>
<span v-else>-</span>
</template>
</el-table-column>
@ -55,16 +61,20 @@
</template>
</el-table-column>
</el-table>
<!-- 图片预览 -->
<el-dialog v-model="dialogVisible" title="图片预览">
<img v-if="isImageFile(dialogImageUrl)" :src="dialogImageUrl" class="preview-image" alt="Preview Image" />
<div v-else class="unsupported-file">
<pdf-preview :pdf-url="dialogImageUrl" />
</div>
</el-dialog>
<el-dialog :title="title" v-model="open" width="800px" append-to-body>
<el-form ref="postRef" :model="form" :rules="rules" label-width="150px">
<el-form-item label="证书名称" prop="factoryArea">
<el-input v-model="form.qualificationName" disabled />
</el-form-item>
<el-form-item label="上传证书" prop="certificateUrl">
<el-upload action='#' :http-request="requestUpload" list-type="picture-card" :file-list="fileList"
:on-change="handleChange" :before-upload="beforeUpload">
<Plus class="myIcon" />
</el-upload>
<myFileUpload ref="qualifcationFileRef" @set-form-file="handleSetQualifcationFile" />
</el-form-item>
<el-form-item label="有效开始日期" prop="startTime">
<el-date-picker v-model="form.startTime" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
@ -85,12 +95,19 @@
</template>
<script setup>
import { onMounted, ref } from 'vue'
import { Plus } from '@element-plus/icons-vue'
import pdfIcon from '@/assets/images/pdfIcon.png'
import myFileUpload from './myFileUpload.vue'
import PdfPreview from './PdfPreview.vue'
import moment from 'moment'
import { listUser } from "@/api/system/user"
import { getUserCertificateList, getCurrentCertificateDetail, uploadFile, updateCurrentCertificate } from "@/api/qualification/myQualifications"
import useUserStore from '@/store/modules/user'
const suffix = ref('')
const baseUrl = import.meta.env.VITE_APP_BASE_API
const dialogImageUrl = ref('')
const dialogVisible = ref(false)
const qualifcationFileRef = ref(null)
const isShowExpireTime = ref(false)
const userStore = useUserStore()
console.log(userStore.id)
@ -109,8 +126,6 @@ const rules = ref({
startTime: [{ required: true, message: "请选择有效开始日期", trigger: "change" }],
expireTime: [{ required: true, message: "请选择到期日期", trigger: "change" }],
})
const fileList = ref([])
const baseUrl = import.meta.env.VITE_APP_BASE_API
const { proxy } = getCurrentInstance()
@ -206,36 +221,33 @@ const handleEdit = (record) => {
if (form.value.expireTime) form.value.expireFlag = 1 //
else form.value.expireFlag = 0
form.value.qualificationName = record.qualificationName
if (res.data.certificateUrl) fileList.value = [{ url: baseUrl + res.data.certificateUrl }]
else fileList.value = []
if (res.data.certificateUrl) qualifcationFileRef.value.setFileInfo(res.data.certificateUrl)
open.value = true
title.value = "编辑"
})
}
//logo
const requestUpload = (options) => {
const { file } = options
var formData = new FormData();
formData.append('file', file);
uploadFile(formData).then(res => {
if (res.code == 200) {
fileList.value = [{ name: res.originalFilename, url: baseUrl + res.fileName }]
form.value.certificateUrl = res.fileName
}
})
const handleSetQualifcationFile = (filePath) => {
console.log('接收资质证件', filePath)
form.value.certificateUrl = filePath
}
//logo
const beforeUpload = (file) => {
const type = ["image/jpeg", "image/jpg", "image/png"];
const isJPG = type.includes(file.type);
//
if (!isJPG) {
proxy.$modal.msgError("文件格式错误,请上传图片类型,如JPGjpegPNG后缀的文件。");
return false;
}
//
const isImageFile = (filePath) => {
//
if (!filePath || filePath.indexOf('.') === -1) return '';
suffix.value = filePath.split('.').pop();
console.log('后缀', filePath.split('.').pop())
return ['jpeg', 'jpg', 'png'].includes(suffix.value?.toLowerCase())
}
const handleChange = (file, fileList) => {
fileList.value = []
//
const handleCardPreview = (filePath) => {
//
if (!filePath || filePath.indexOf('.') === -1) return '';
suffix.value = filePath.split('.').pop();
dialogImageUrl.value = baseUrl + filePath
dialogVisible.value = true
}
</script>
<style lang='scss'>
@ -273,4 +285,17 @@ const handleChange = (file, fileList) => {
color: #000000;
min-width: 34px;
}
.preview-image {
width: 100%;
max-height: 70vh;
object-fit: contain;
}
.unsupported-file {
padding: 0px;
text-align: center;
color: #999;
height: 70vh;
}
</style>

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -104,7 +104,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片" prop="beforeCondition.certificatePhoto">
<el-form-item label="电工证" prop="beforeCondition.certificatePhoto">
<myFileUpload ref="certificatePhotoRef"
@set-form-file="handleSetCertificatePhoto" />
</el-form-item>
@ -136,7 +136,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片" prop="beforeCondition.certificatePhoto">
<el-form-item label="电工证" prop="beforeCondition.certificatePhoto">
<myFileUpload ref="certificatePhotoRef"
@set-form-file="handleSetCertificatePhoto" />
</el-form-item>
@ -170,7 +170,7 @@
</el-col>
</el-row>
</div>
<div v-if="ruleForm.qualificationId == 'ESC' || ruleForm.qualificationId == 'CESC'">
<div v-if="ruleForm.qualificationId == 'ESC/CESC'">
<el-row class="myRow" :gutter="20">
<el-col :span="8">
<el-form-item label="电工证初领日期" prop="beforeCondition.collectionDate">
@ -195,7 +195,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片" prop="beforeCondition.certificatePhoto">
<el-form-item label="电工证" prop="beforeCondition.certificatePhoto">
<myFileUpload ref="certificatePhotoRef"
@set-form-file="handleSetCertificatePhoto" />
</el-form-item>
@ -354,7 +354,7 @@ const data = reactive({
{ required: true, message: '培训紧迫程度不能为空', trigger: 'change' }
],
certificatePhoto: [
{ required: true, message: '电工证照片不能为空', trigger: 'change' }
{ required: true, message: '电工证不能为空', trigger: 'change' }
],
esFile: [
{ required: true, message: 'ES资质不能为空', trigger: 'change' }
@ -394,16 +394,18 @@ const data = reactive({
})
const levelList = ref([
{ title: '资质管理', path: '/qualification' },
{ title: '资质管理' },
{ title: 'ESC任务', path: '/qualification/escTask' },
{ title: '资质申请', path: '/qualification/escTask/qualificationApplyForm' }
{ title: '资质申请' }
])
const { ruleForm, rules } = toRefs(data)
//
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
const handleSetCertificatePhoto = (filePath) => {
console.log('接收电工证照片', filePath)
console.log('接收电工证', filePath)
ruleForm.value.beforeCondition.certificatePhoto = filePath
}
// SH
@ -662,6 +664,7 @@ const handleSubmit = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -72,12 +72,17 @@
<div class="applyFormContainer" v-if="ruleForm.labelId">
<div class="headerTitle">申请信息</div>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="qualificationName" label="资质名称" width="100" />
<el-table-column prop="qualificationName" label="资质名称" width="110" />
<el-table-column prop="certificateUrl" label="资质证书" align="center">
<template #default="scope">
<el-image v-if="scope.row.certificateUrl"
style="width: 70px; height: 44px;line-height: 50px;"
:src="baseUrl + scope.row.certificateUrl" fit="fill" />
<template v-if="scope.row.certificateUrl">
<el-image v-if="isImageFile(scope.row.certificateUrl)"
style="width: 70px; height: 44px;line-height: 50px;cursor: pointer;"
:src="baseUrl + scope.row.certificateUrl" fit="fill"
@click.stop="handleCardPreview(scope.row.certificateUrl)" />
<img v-else :src="pdfIcon" class="avatar viewFile" style="cursor: pointer;"
@click.stop="handleCardPreview(scope.row.certificateUrl)" />
</template>
<span v-else>请在"高压资质培训信息"上传资质证书</span>
</template>
</el-table-column>
@ -93,7 +98,7 @@
<el-table-column prop="startTime" label="有效开始日期" width="150">
<template #default="scope">
<span v-if="scope.row.startTime"> {{ moment(scope.row.startTime).format('YYYY-MM-DD')
}}</span>
}}</span>
<span v-else>-</span>
</template>
</el-table-column>
@ -102,7 +107,7 @@
<span v-if="scope.row.expireFlag == 0">长期</span>
<template v-else>
<span v-if="scope.row.expireTime"> {{ moment(scope.row.expireTime).format('YYYY-MM-DD')
}}</span>
}}</span>
<span v-else>-</span>
</template>
</template>
@ -117,6 +122,14 @@
<el-button class="cancelApplyBtn" @click="handleCancel">取消</el-button>
<el-button class="submitApplyBtn" @click="handleSubmit">提交</el-button>
</div>
<!-- 图片预览 -->
<el-dialog v-model="dialogVisible" title="图片预览">
<img v-if="isImageFile(dialogImageUrl)" :src="dialogImageUrl" class="preview-image" alt="Preview Image" />
<div v-else class="unsupported-file">
<pdf-preview :pdf-url="dialogImageUrl" />
</div>
</el-dialog>
</template>
<script setup>
import { onMounted, reactive, defineEmits, ref } from 'vue'
@ -152,7 +165,11 @@ const queryParams = ref({
const requiredQualifications = ref([])
const loading = ref(true)
const tableData = ref([])
const suffix = ref('')
const baseUrl = import.meta.env.VITE_APP_BASE_API
const dialogImageUrl = ref('')
const dialogVisible = ref(false)
//
onMounted(() => {
@ -249,12 +266,12 @@ const handleChoseLabl = async (val) => {
const qualificationsMap = {
'SH': ['电工证', 'SH'],
'ES': ['电工证', 'ES'],
'ESC': ['电工证', 'ESC'],
'CESC': ['电工证', 'CESC'],
'ESC': ['电工证', 'ESC/CESC'],
'CESC': ['电工证', 'ESC/CESC'],
'SH+LLP': ['电工证', 'SH', 'LLP', '急救证'],
'ES+LLP': ['电工证', 'ES', 'LLP', '急救证'],
'ESC+LLP': ['电工证', 'ESC', 'LLP', '急救证'],
'CESC+LLP': ['电工证', 'CESC', 'LLP', '急救证']
'ESC+LLP': ['电工证', 'ESC/CESC', 'LLP', '急救证'],
'CESC+LLP': ['电工证', 'ESC/CESC', 'LLP', '急救证']
};
// Get the required qualifications or default to empty array
@ -327,6 +344,24 @@ const handleSubmit = () => {
}
})
}
//
const isImageFile = (filePath) => {
//
if (!filePath || filePath.indexOf('.') === -1) return '';
suffix.value = filePath.split('.').pop();
console.log('后缀', filePath.split('.').pop())
return ['jpeg', 'jpg', 'png'].includes(suffix.value?.toLowerCase())
}
//
const handleCardPreview = (filePath) => {
//
if (!filePath || filePath.indexOf('.') === -1) return '';
suffix.value = filePath.split('.').pop();
dialogImageUrl.value = baseUrl + filePath
dialogVisible.value = true
}
</script>
<style lang='scss'>
.qualification-rootContainer {
@ -456,4 +491,18 @@ const handleSubmit = () => {
text-align: left;
color: #000000;
}
.preview-image {
width: 100%;
max-height: 70vh;
object-fit: contain;
}
.unsupported-file {
padding: 0px;
text-align: center;
color: #999;
height: 70vh;
}
</style>

View File

@ -72,7 +72,7 @@
<div class="applyFormContainer" v-if="ruleForm.labelId">
<div class="headerTitle">申请信息</div>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="qualificationName" label="资质名称" width="100" />
<el-table-column prop="qualificationName" label="资质名称" width="110" />
<el-table-column prop="certificateUrl" label="资质证书" align="center">
<template #default="scope">
<el-image v-if="scope.row.certificateUrl"
@ -93,7 +93,7 @@
<el-table-column prop="startTime" label="有效开始日期" width="150">
<template #default="scope">
<span v-if="scope.row.startTime"> {{ moment(scope.row.startTime).format('YYYY-MM-DD')
}}</span>
}}</span>
<span v-else>-</span>
</template>
</el-table-column>
@ -102,7 +102,7 @@
<span v-if="scope.row.expireFlag == 0">长期</span>
<template v-else>
<span v-if="scope.row.expireTime"> {{ moment(scope.row.expireTime).format('YYYY-MM-DD')
}}</span>
}}</span>
<span v-else>-</span>
</template>
</template>
@ -117,6 +117,14 @@
<el-button class="cancelApplyBtn" @click="handleCancel">取消</el-button>
<el-button class="submitApplyBtn" @click="handleSubmit">提交</el-button>
</div>
<!-- 图片预览 -->
<el-dialog v-model="dialogVisible" title="图片预览">
<img v-if="isImageFile(dialogImageUrl)" :src="dialogImageUrl" class="preview-image" alt="Preview Image" />
<div v-else class="unsupported-file">
<pdf-preview :pdf-url="dialogImageUrl" />
</div>
</el-dialog>
</template>
<script setup>
import { onMounted, reactive, defineEmits, defineExpose, ref } from 'vue'
@ -244,12 +252,12 @@ const handleChoseLabl = async (val) => {
const qualificationsMap = {
'SH': ['电工证', 'SH'],
'ES': ['电工证', 'ES'],
'ESC': ['电工证', 'ESC'],
'CESC': ['电工证', 'CESC'],
'ESC': ['电工证', 'ESC/CESC'],
'CESC': ['电工证', 'ESC/CESC'],
'SH+LLP': ['电工证', 'SH', 'LLP', '急救证'],
'ES+LLP': ['电工证', 'ES', 'LLP', '急救证'],
'ESC+LLP': ['电工证', 'ESC', 'LLP', '急救证'],
'CESC+LLP': ['电工证', 'CESC', 'LLP', '急救证']
'ESC+LLP': ['电工证', 'ESC/CESC', 'LLP', '急救证'],
'CESC+LLP': ['电工证', 'ESC/CESC', 'LLP', '急救证']
};
// Get the required qualifications or default to empty array
@ -296,7 +304,7 @@ const handleSubmit = () => {
proxy.$modal.msgError(`您今年的复训未通过,不能提交申请!`)
return false;
}
const qualificArr = tableData.value.filter(item => item.certificateUrl)
console.log('是否有资质证书', qualificArr)
if (qualificArr.length < requiredQualifications.value.length) {
@ -322,6 +330,25 @@ const handleSubmit = () => {
}
})
}
//
const isImageFile = (filePath) => {
//
if (!filePath || filePath.indexOf('.') === -1) return '';
suffix.value = filePath.split('.').pop();
console.log('后缀', filePath.split('.').pop())
return ['jpeg', 'jpg', 'png'].includes(suffix.value?.toLowerCase())
}
//
const handleCardPreview = (filePath) => {
//
if (!filePath || filePath.indexOf('.') === -1) return '';
suffix.value = filePath.split('.').pop();
dialogImageUrl.value = baseUrl + filePath
dialogVisible.value = true
}
//
defineExpose({
getLableDetailInfo
@ -455,4 +482,17 @@ defineExpose({
text-align: left;
color: #000000;
}
.preview-image {
width: 100%;
max-height: 70vh;
object-fit: contain;
}
.unsupported-file {
padding: 0px;
text-align: center;
color: #999;
height: 70vh;
}
</style>

View File

@ -7,7 +7,8 @@
<el-row class="myRow" :gutter="20">
<el-col :span="8">
<el-form-item label="目标资质" prop="qualificationId">
<el-select v-model="ruleForm.qualificationId" placeholder="请选择目标资质" clearable>
<el-select v-model="ruleForm.qualificationId" placeholder="请选择目标资质"
@change="handleChoseQualification" clearable>
<el-option v-for="dict in target_qualification" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
@ -85,10 +86,10 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片" prop="beforeCondition.certificatePhoto">
<el-form-item label="电工证" prop="beforeCondition.certificatePhoto">
<myFileUpload ref="certificatePhotoRef" @set-form-file="handleSetCertificatePhoto" />
</el-form-item>
</el-col>
</el-col>
</el-row>
</div>
<div v-if="ruleForm.qualificationId == 'ES'">
@ -116,7 +117,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片" prop="beforeCondition.certificatePhoto">
<el-form-item label="电工证" prop="beforeCondition.certificatePhoto">
<myFileUpload ref="certificatePhotoRef" @set-form-file="handleSetCertificatePhoto" />
</el-form-item>
</el-col>
@ -147,7 +148,7 @@
</el-col>
</el-row>
</div>
<div v-if="ruleForm.qualificationId == 'ESC' || ruleForm.qualificationId == 'CESC'">
<div v-if="ruleForm.qualificationId == 'ESC/CESC'">
<el-row class="myRow" :gutter="20">
<el-col :span="8">
<el-form-item label="电工证初领日期" prop="beforeCondition.collectionDate">
@ -172,7 +173,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片" prop="beforeCondition.certificatePhoto">
<el-form-item label="电工证" prop="beforeCondition.certificatePhoto">
<myFileUpload ref="certificatePhotoRef" @set-form-file="handleSetCertificatePhoto" />
</el-form-item>
</el-col>
@ -257,7 +258,8 @@ import { onMounted, reactive, defineEmits, ref } from 'vue'
import { customerDeptTreeSelect, getUserInfo } from "@/api/system/user"
import { getBusDependencyPage } from "@/api/system/dependency"
import { getSysSectionPage } from "@/api/system/section"
import { submitBusUserQualification } from "@/api/qualification/myQualifications"
import { getCurrentUserList, submitBusUserQualification } from "@/api/qualification/myQualifications"
import myFileUpload from './myFileUpload.vue'
import moment from 'moment'
@ -313,7 +315,7 @@ const data = reactive({
{ required: true, message: '培训紧迫程度不能为空', trigger: 'change' }
],
certificatePhoto: [
{ required: true, message: '电工证照片不能为空', trigger: 'change' }
{ required: true, message: '电工证不能为空', trigger: 'change' }
],
esFile: [
{ required: true, message: 'ES资质不能为空', trigger: 'change' }
@ -352,9 +354,9 @@ const data = reactive({
},
})
//
//
const handleSetCertificatePhoto = (filePath) => {
console.log('接收电工证照片', filePath)
console.log('接收电工证', filePath)
ruleForm.value.beforeCondition.certificatePhoto = filePath
}
// SH
@ -394,7 +396,7 @@ const handleFirstCollectionDateChange = (val) => {
//
const downloadDocxTemplate = (tempLateType) => {
const link = document.createElement('a')
const link = document.createElement('a')
if (tempLateType == 'ES') {
link.href = '/ES任职资格表.docx'
link.download = 'ES任职资格表.docx' //
@ -414,11 +416,45 @@ const downloadDocxTemplate = (tempLateType) => {
//
onMounted(() => {
getCurUserQualification()
getUserInfos()
getBusDependencyData()
getDeptTree()
getSysSectionData()
});
const curUserQualification = ref([])
//
const getCurUserQualification = () => {
getCurrentUserList({
pageIndex: 1,
pageSize: 10,
}).then(res => {
if (res.code == 200) curUserQualification.value = res.data
}).catch(() => {
})
}
//
const handleChoseQualification = (val) => {
if (val == 'LLP') {
const jjzInfo = choseUserQualification.value.filter(item => item.qualificationName === '急救证')[0]
if (jjzInfo && jjzInfo.startTime) {
ruleForm.value.beforeCondition.firstCollectionDate = jjzInfo.startTime
ruleForm.value.beforeCondition.firstCollectionExpireDate = jjzInfo.expireTime
} else {
ruleForm.value.beforeCondition.firstCollectionDate = undefined
ruleForm.value.beforeCondition.firstCollectionExpireDate = undefined
}
} else {
const dgzInfo = choseUserQualification.value.filter(item => item.qualificationName === '电工证')[0]
if (dgzInfo && dgzInfo.startTime) {
ruleForm.value.beforeCondition.collectionDate = dgzInfo.startTime
ruleForm.value.beforeCondition.reviewDate = dgzInfo.expireTime
} else {
ruleForm.value.beforeCondition.collectionDate = undefined
ruleForm.value.beforeCondition.reviewDate = undefined
}
}
}
//
const getUserInfos = () => {
getUserInfo().then(response => {

View File

@ -130,7 +130,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片">
<el-form-item label="电工证">
<img :src="beforeConditionInfo.certificatePhoto.split('.').pop() == 'pdf' ? pdfIcon : baseUrl + beforeConditionInfo.certificatePhoto"
class="avatar viewFile"
@click.stop="handleCardPreview(beforeConditionInfo.certificatePhoto)" />
@ -176,7 +176,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片">
<el-form-item label="电工证">
<img :src="beforeConditionInfo.certificatePhoto.split('.').pop() == 'pdf' ? pdfIcon : baseUrl + beforeConditionInfo.certificatePhoto"
class="avatar viewFile"
@click.stop="handleCardPreview(beforeConditionInfo.certificatePhoto)" />
@ -250,7 +250,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片">
<el-form-item label="电工证">
<img :src="beforeConditionInfo.certificatePhoto.split('.').pop() == 'pdf' ? pdfIcon : baseUrl + beforeConditionInfo.certificatePhoto"
class="avatar viewFile"
@click.stop="handleCardPreview(beforeConditionInfo.certificatePhoto)" />

View File

@ -85,7 +85,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片" prop="beforeCondition.certificatePhoto">
<el-form-item label="电工证" prop="beforeCondition.certificatePhoto">
<myFileUpload ref="certificatePhotoRef" @set-form-file="handleSetCertificatePhoto" />
</el-form-item>
</el-col>
@ -116,7 +116,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片" prop="beforeCondition.certificatePhoto">
<el-form-item label="电工证" prop="beforeCondition.certificatePhoto">
<myFileUpload ref="certificatePhotoRef" @set-form-file="handleSetCertificatePhoto" />
</el-form-item>
</el-col>
@ -147,7 +147,7 @@
</el-col>
</el-row>
</div>
<div v-if="ruleForm.qualificationId == 'ESC' || ruleForm.qualificationId == 'CESC'">
<div v-if="ruleForm.qualificationId == 'ESC/CESC'">
<el-row class="myRow" :gutter="20">
<el-col :span="8">
<el-form-item label="电工证初领日期" prop="beforeCondition.collectionDate">
@ -172,7 +172,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片" prop="beforeCondition.certificatePhoto">
<el-form-item label="电工证" prop="beforeCondition.certificatePhoto">
<myFileUpload ref="certificatePhotoRef" @set-form-file="handleSetCertificatePhoto" />
</el-form-item>
</el-col>
@ -321,7 +321,7 @@ const data = reactive({
{ required: true, message: '培训紧迫程度不能为空', trigger: 'change' }
],
certificatePhoto: [
{ required: true, message: '电工证照片不能为空', trigger: 'change' }
{ required: true, message: '电工证不能为空', trigger: 'change' }
],
esFile: [
{ required: true, message: 'ES资质不能为空', trigger: 'change' }
@ -360,9 +360,9 @@ const data = reactive({
},
})
//
//
const handleSetCertificatePhoto = (filePath) => {
console.log('接收电工证照片', filePath)
console.log('接收电工证', filePath)
ruleForm.value.beforeCondition.certificatePhoto = filePath
}
// SH

View File

@ -3,9 +3,14 @@
<el-table v-loading="loading" :data="tableData" style="width: 100%">
<el-table-column prop="qualificationName" label="资质名称" width="110" />
<el-table-column prop="certificateUrl" label="资质证书" align="center">
<template #default="scope">
<el-image v-if="scope.row.certificateUrl" style="width: 70px; height: 44px;line-height: 50px;"
:src="baseUrl + scope.row.certificateUrl" fit="fill" />
<template #default="scope">
<template v-if="scope.row.certificateUrl">
<el-image v-if="isImageFile(scope.row.certificateUrl)"
style="width: 70px; height: 44px;line-height: 50px;cursor: pointer;" :src="baseUrl + scope.row.certificateUrl"
fit="fill" @click.stop="handleCardPreview(scope.row.certificateUrl)" />
<img v-else :src="pdfIcon" class="avatar viewFile" style="cursor: pointer;"
@click.stop="handleCardPreview(scope.row.certificateUrl)" />
</template>
<span v-else>-</span>
</template>
</el-table-column>
@ -39,16 +44,20 @@
</template>
</el-table-column>
</el-table>
<!-- 图片预览 -->
<el-dialog v-model="dialogVisible" title="图片预览">
<img v-if="isImageFile(dialogImageUrl)" :src="dialogImageUrl" class="preview-image" alt="Preview Image" />
<div v-else class="unsupported-file">
<pdf-preview :pdf-url="dialogImageUrl" />
</div>
</el-dialog>
<el-dialog :title="title" v-model="open" width="800px" append-to-body>
<el-form ref="postRef" :model="form" :rules="rules" label-width="150px">
<el-form-item label="证书名称" prop="factoryArea">
<el-input v-model="form.qualificationName" disabled />
</el-form-item>
<el-form-item label="上传证书" prop="certificateUrl">
<el-upload action='#' :http-request="requestUpload" list-type="picture-card" :file-list="fileList"
:on-change="handleChange" :before-upload="beforeUpload">
<Plus class="myIcon" />
</el-upload>
<myFileUpload ref="qualifcationFileRef" @set-form-file="handleSetQualifcationFile" />
</el-form-item>
<el-form-item label="有效开始日期" prop="startTime">
<el-date-picker v-model="form.startTime" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
@ -69,11 +78,17 @@
</template>
<script setup>
import { onMounted, ref } from 'vue'
import { getCurrentUserList, uploadFile, updateCurrentCertificate, getCurrentCertificateDetail } from "@/api/qualification/myQualifications"
import { Plus } from '@element-plus/icons-vue'
import { getCurrentUserList, updateCurrentCertificate, getCurrentCertificateDetail } from "@/api/qualification/myQualifications"
import pdfIcon from '@/assets/images/pdfIcon.png'
import myFileUpload from './myFileUpload.vue'
import PdfPreview from './PdfPreview.vue'
import moment from 'moment'
const suffix = ref('')
const baseUrl = import.meta.env.VITE_APP_BASE_API
const dialogImageUrl = ref('')
const dialogVisible = ref(false)
const qualifcationFileRef = ref(null)
const isShowExpireTime = ref(false)
const queryParams = ref({
pageIndex: 1,
@ -89,8 +104,6 @@ const rules = ref({
startTime: [{ required: true, message: "请选择有效开始日期", trigger: "change" }],
expireTime: [{ required: true, message: "请选择到期日期", trigger: "change" }],
})
const fileList = ref([])
const baseUrl = import.meta.env.VITE_APP_BASE_API
const { proxy } = getCurrentInstance()
//
@ -158,36 +171,32 @@ const handleEdit = (record) => {
if (form.value.expireTime) form.value.expireFlag = 1 //
else form.value.expireFlag = 0
form.value.qualificationName = record.qualificationName
if (res.data.certificateUrl) fileList.value = [{ url: baseUrl + res.data.certificateUrl }]
else fileList.value = []
if (res.data.certificateUrl) qualifcationFileRef.value.setFileInfo(res.data.certificateUrl)
open.value = true
title.value = "编辑"
})
}
//logo
const requestUpload = (options) => {
const { file } = options
var formData = new FormData();
formData.append('file', file);
uploadFile(formData).then(res => {
if (res.code == 200) {
fileList.value = [{ name: res.originalFilename, url: baseUrl + res.fileName }]
form.value.certificateUrl = res.fileName
}
})
const handleSetQualifcationFile = (filePath) => {
console.log('接收资质证件', filePath)
form.value.certificateUrl = filePath
}
//logo
const beforeUpload = (file) => {
const type = ["image/jpeg", "image/jpg", "image/png"];
const isJPG = type.includes(file.type);
//
if (!isJPG) {
proxy.$modal.msgError("文件格式错误,请上传图片类型,如JPGjpegPNG后缀的文件。");
return false;
}
//
const isImageFile = (filePath) => {
//
if (!filePath || filePath.indexOf('.') === -1) return '';
suffix.value = filePath.split('.').pop();
console.log('后缀', filePath.split('.').pop())
return ['jpeg', 'jpg', 'png'].includes(suffix.value?.toLowerCase())
}
const handleChange = (file, fileList) => {
fileList.value = []
//
const handleCardPreview = (filePath) => {
//
if (!filePath || filePath.indexOf('.') === -1) return '';
suffix.value = filePath.split('.').pop();
dialogImageUrl.value = baseUrl + filePath
dialogVisible.value = true
}
</script>
<style lang='scss'>
@ -217,4 +226,17 @@ const handleChange = (file, fileList) => {
width: 40px;
height: 40px;
}
.preview-image {
width: 100%;
max-height: 70vh;
object-fit: contain;
}
.unsupported-file {
padding: 0px;
text-align: center;
color: #999;
height: 70vh;
}
</style>

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -130,7 +130,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片">
<el-form-item label="电工证">
<img :src="beforeConditionInfo.certificatePhoto.split('.').pop() == 'pdf' ? pdfIcon : baseUrl + beforeConditionInfo.certificatePhoto"
class="avatar viewFile"
@click.stop="handleCardPreview(beforeConditionInfo.certificatePhoto)" />
@ -176,7 +176,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片">
<el-form-item label="电工证">
<img :src="beforeConditionInfo.certificatePhoto.split('.').pop() == 'pdf' ? pdfIcon : baseUrl + beforeConditionInfo.certificatePhoto"
class="avatar viewFile"
@click.stop="handleCardPreview(beforeConditionInfo.certificatePhoto)" />
@ -250,7 +250,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片">
<el-form-item label="电工证">
<img :src="beforeConditionInfo.certificatePhoto.split('.').pop() == 'pdf' ? pdfIcon : baseUrl + beforeConditionInfo.certificatePhoto"
class="avatar viewFile"
@click.stop="handleCardPreview(beforeConditionInfo.certificatePhoto)" />
@ -392,9 +392,9 @@ const dialogVisible = ref(false)
const suffix = ref('')
const router = useRouter()
const levelList = ref([
{ title: '资质管理', path: '/qualification' },
{ title: 'ESC审批', path: '/qualification/escApproval' },
{ title: '审批', path: '/qualification/escApproval/approvalDetail' }
{ title: '资质管理' },
{ title: '培训中心审批', path: '/qualification/trainApproval' },
{ title: '审批' }
])
const { proxy } = getCurrentInstance()
const data = reactive({
@ -454,7 +454,9 @@ const getQualificationApprovalRecord = (_id) => {
}
const { ruleForm, detailForm, beforeConditionInfo, rules } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
const id = route.params && route.params.Id
@ -570,6 +572,7 @@ const handleCancel = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -130,7 +130,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片">
<el-form-item label="电工证">
<img :src="beforeConditionInfo.certificatePhoto.split('.').pop() == 'pdf' ? pdfIcon : baseUrl + beforeConditionInfo.certificatePhoto"
class="avatar viewFile"
@click.stop="handleCardPreview(beforeConditionInfo.certificatePhoto)" />
@ -176,7 +176,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片">
<el-form-item label="电工证">
<img :src="beforeConditionInfo.certificatePhoto.split('.').pop() == 'pdf' ? pdfIcon : baseUrl + beforeConditionInfo.certificatePhoto"
class="avatar viewFile"
@click.stop="handleCardPreview(beforeConditionInfo.certificatePhoto)" />
@ -250,7 +250,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电工证照片">
<el-form-item label="电工证">
<img :src="beforeConditionInfo.certificatePhoto.split('.').pop() == 'pdf' ? pdfIcon : baseUrl + beforeConditionInfo.certificatePhoto"
class="avatar viewFile"
@click.stop="handleCardPreview(beforeConditionInfo.certificatePhoto)" />
@ -413,9 +413,9 @@ const dialogVisible = ref(false)
const suffix = ref('')
const router = useRouter()
const levelList = ref([
{ title: '资质管理', path: '/qualification' },
{ title: 'ESC审批', path: '/qualification/escApproval' },
{ title: '审批', path: '/qualification/escApproval/approvalDetail' }
{ title: '资质管理' },
{ title: '培训中心审批', path: '/qualification/trainApproval' },
{ title: '审批' }
])
const { proxy } = getCurrentInstance()
const data = reactive({
@ -475,7 +475,9 @@ const getQualificationApprovalRecord = (_id) => {
}
const { ruleForm, detailForm, beforeConditionInfo, rules } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
const id = route.params && route.params.Id
@ -614,6 +616,7 @@ const handleSubmit = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -56,9 +56,9 @@ import { getBusDependencyPage } from "@/api/system/dependency"
const router = useRouter()
const levelList = ref([
{ title: '资质管理', path: '/qualification' },
{ title: '资质管理' },
{ title: '车型培训情况', path: '/qualification/vehicleTrain' },
{ title: '导出模板', path: '/qualification/vehicleTrain/exportForm' }
{ title: '导出模板' }
])
const { proxy } = getCurrentInstance()
const { vehicle_model } = proxy.useDict("vehicle_model")
@ -71,7 +71,9 @@ const data = reactive({
},
})
const { ruleForm, rules } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
getBusDependencyData()
@ -180,6 +182,7 @@ const handleSubmit = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -97,11 +97,14 @@ const router = useRouter()
const route = useRoute()
const levelList = ref([
{ title: '资质管理', path: '/qualification' },
{ title: '资质管理' },
{ title: '车型培训情况', path: '/qualification/vehicleTrain' },
{ title: '新建', path: '/qualification/vehicleTrain/addForm' }
{ title: '新建' }
])
const formTitle = ref('新建')
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
getAllUser();
@ -114,16 +117,16 @@ onMounted(() => {
formTitle.value = '编辑'
getDetailInfo(id)
levelList.value = [
{ title: '资质管理', path: '/qualification' },
{ title: '资质管理' },
{ title: '车型培训情况', path: '/qualification/vehicleTrain' },
{ title: '编辑', path: '/qualification/vehicleTrain/addForm' }
{ title: '编辑' }
]
} else {
ruleForm.value.id = null
formTitle.value = '新建'
levelList.value = [{ title: '资质管理', path: '/qualification' },
levelList.value = [{ title: '资质管理' },
{ title: '车型培训情况', path: '/qualification/vehicleTrain' },
{ title: '新建', path: '/qualification/vehicleTrain/addForm' }]
{ title: '新建' }]
}
});
//
@ -289,6 +292,7 @@ const handleSubmit = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -18,6 +18,7 @@
</template>
<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-position="top">
<div class="applyFormContainer">
<el-button class="downloadTemplateBtn" text @click="downloadDocxTemplate">下载导入模板</el-button>
<el-form-item prop="employeeNumber">
<el-upload class="upload-demo" drag action="#" :http-request="requestDocUpload"
:file-list="docUploadList" :before-upload="beforeDocUpload"
@ -37,7 +38,7 @@
</div>
<div class="submitTool">
<el-button class="cancelApplyBtn" @click="handleCancel">取消</el-button>
<el-button class="cancelApplyBtn" @click="handleCancel">取消</el-button>
</div>
</div>
@ -50,7 +51,7 @@ import { importVehicleModelTraining } from "@/api/qualification/vehicleTrain"
const router = useRouter()
const levelList = ref([
{ title: '资质管理', path: '/qualification' },
{ title: '资质管理' },
{ title: '车型培训情况', path: '/qualification/vehicleTrain' },
{ title: '导入', path: '/qualification/vehicleTrain/importForm' }
])
@ -62,6 +63,10 @@ const data = reactive({
})
const { ruleForm, rules } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
const docUploadList = ref([])
//
@ -71,6 +76,7 @@ const requestDocUpload = (options) => {
formData.append('file', file);
importVehicleModelTraining(formData).then(res => {
if (res.code == 200) {
proxy.$modal.msgSuccess("导入成功")
router.push({
path: '/qualification/vehicleTrain'
})
@ -97,7 +103,14 @@ const removeDocUpload = (file, fileList) => {
item => item.name != file.name
);
}
const downloadDocxTemplate = (val) => {
const link = document.createElement('a')
link.href = '/复训记录导入模板.xlsx'
link.download = '复训记录导入模板.xlsx' //
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
}
const handleCancel = () => {
proxy.resetForm("ruleFormRef")
router.push({
@ -148,6 +161,7 @@ const handleCancel = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}
@ -276,4 +290,20 @@ const handleCancel = () => {
.el-form-item__error {
font-size: 16px;
}
.downloadTemplateBtn {
width: 100px;
height: 36px;
font-family: Microsoft YaHei;
font-weight: 700;
font-size: 14px;
text-align: center;
color: #409eff !important;
background: transparent !important;
}
.downloadTemplateBtn:hover {
background: transparent !important;
color: #409eff !important;
}
</style>

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -138,11 +138,13 @@ const cachShowTableData = ref([])
const ToolOptions = ref(['全部', '主要偏差', '一般偏差', '建议项'])
const activeIndex = ref(0)
const levelList = ref([
{ title: '高压安全审查', path: '/safetyReview' },
{ title: 'Dashboard', path: '/safetyReview/safetyDashboard' },
{ title: '详情', path: '/safetyReview/safetyDashboardDitail' }
{ title: '高压安全审查' },
{ title: 'Dashboard', path: '/safetyReview/dashboard' },
{ title: '详情' }
])
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
const dependencyId = route.params && route.params.dependencyId
@ -236,6 +238,7 @@ const handleChangeLeve = (index, _level) => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -167,9 +167,9 @@ import { escBusReviewProblemDetail, checkStatus, busReviewProblemRecordPage } fr
const router = useRouter()
const route = useRoute()
const levelList = ref([
{ title: '高压安全审查', path: '/safetyReview' },
{ title: '高压安全审查' },
{ title: '审核员审批', path: '/safetyReview/examinerApproval' },
{ title: '审批', path: '/safetyReview/examinerApproval/approvalForm' }
{ title: '审批' }
])
//
const docUploadList = ref([])
@ -183,7 +183,9 @@ const data = reactive({
},
})
const { detailForm, rules } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
const id = route.params && route.params.Id
@ -291,6 +293,7 @@ const handleSubmit = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -145,9 +145,9 @@ import { escBusReviewProblemDetail, busReviewProblemRecordPage } from "@/api/saf
const router = useRouter()
const route = useRoute()
const levelList = ref([
{ title: '高压安全审查', path: '/safetyReview' },
{ title: '高压安全审查' },
{ title: '审核员审批', path: '/safetyReview/examinerApproval' },
{ title: '问题详情', path: '/safetyReview/examinerViewProblem' }
{ title: '问题详情' }
])
//
const docUploadList = ref([])
@ -161,7 +161,9 @@ const data = reactive({
},
})
const { detailForm, rules } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
const id = route.params && route.params.Id
@ -246,6 +248,7 @@ const isImageFile = (suffix) => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -145,9 +145,9 @@ import { escBusReviewProblemDetail, busReviewProblemRecordPage } from "@/api/saf
const router = useRouter()
const route = useRoute()
const levelList = ref([
{ title: '高压安全审查', path: '/safetyReview' },
{ title: '高压安全审查' },
{ title: 'ESC任务', path: '/safetyReview/examinerEscTask' },
{ title: '问题详情', path: '/safetyReview/examinerEscViewProblem' }
{ title: '问题详情' }
])
//
const docUploadList = ref([])
@ -162,6 +162,9 @@ const data = reactive({
})
const { detailForm, rules } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
const id = route.params && route.params.Id
@ -247,6 +250,7 @@ const isImageFile = (suffix) => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -162,9 +162,9 @@ import { escBusReviewProblemDetail, escCorrection, busReviewProblemRecordPage }
const router = useRouter()
const route = useRoute()
const levelList = ref([
{ title: '高压安全审查', path: '/safetyReview' },
{ title: '高压安全审查' },
{ title: 'ESC任务', path: '/safetyReview/examinerEscTask' },
{ title: '问题整改', path: '/safetyReview/examinerEscTask/escTaskForm' }
{ title: '问题整改' }
])
//
const docUploadList = ref([])
@ -180,6 +180,9 @@ const data = reactive({
const { detailForm, rules } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
const id = route.params && route.params.Id
@ -317,6 +320,7 @@ const handleSubmit = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -223,11 +223,13 @@ const correctionFlagList = ref([
])
const activeIndex = ref(0)
const levelList = ref([
{ title: '高压安全审查', path: '/safetyReview' },
{ title: '高压安全审查' },
{ title: '审核员任务', path: '/safetyReview/examinerTasks' },
{ title: '新增', path: '/safetyReview/examinerTasksForm' }
{ title: '新增' }
])
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
getDeptTree();
@ -238,18 +240,18 @@ onMounted(() => {
ruleForm.value.id = id
formTitle.value = '编辑'
levelList.value = [
{ title: '高压安全审查', path: '/safetyReview' },
{ title: '高压安全审查' },
{ title: '审核员任务', path: '/safetyReview/examinerTasks' },
{ title: '编辑', path: '/safetyReview/examinerTasksForm' }
{ title: '编辑' }
]
getDetailInfo(id)
} else {
ruleForm.value.id = null
formTitle.value = '新增'
levelList.value = [
{ title: '高压安全审查', path: '/safetyReview' },
{ title: '高压安全审查' },
{ title: '审核员任务', path: '/safetyReview/examinerTasks' },
{ title: '新增', path: '/safetyReview/examinerTasksForm' }
{ title: '新增' }
]
}
});
@ -481,6 +483,7 @@ const handleSubmit = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -78,15 +78,16 @@
<script setup name="AuthUser">
import selectUser from "./selectUser"
import { useRouter } from 'vue-router'
import { allocatedUserList, authUserCancel, authUserCancelAll } from "@/api/system/role"
const router = useRouter()
const route = useRoute()
const { proxy } = getCurrentInstance()
const { sys_normal_disable } = proxy.useDict("sys_normal_disable")
const levelList = ref([
{ title: '系统管理', path: '/system' },
{ title: '系统管理' },
{ title: '角色管理', path: '/system/role' },
{ title: '分配用户', path: '/system/role-auth/user' }
{ title: '分配用户' }
])
const userList = ref([])
const loading = ref(true)
@ -102,7 +103,9 @@ const queryParams = reactive({
userName: undefined,
phonenumber: undefined,
})
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
/** 查询授权用户列表 */
function getList() {
loading.value = true
@ -201,6 +204,7 @@ getList()
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -61,13 +61,13 @@
<script setup name="AuthRole">
import { getAuthRole, updateAuthRole } from "@/api/system/user"
import { useRouter } from 'vue-router'
const router = useRouter()
const levelList = ref([
{ title: '系统管理', path: '/system' },
{ title: '系统管理' },
{ title: '用户管理', path: '/system/user' },
{ title: '分配角色', path: '/system/user-auth/role' }
{ title: '分配角色' }
])
const route = useRoute()
const { proxy } = getCurrentInstance()
@ -83,6 +83,10 @@ const form = ref({
userId: undefined
})
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
/** 单击选中行数据 */
function clickRow(row) {
if (checkSelectable(row)) {
@ -176,6 +180,7 @@ function submitForm() {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -88,7 +88,7 @@
{{ scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column prop="checkNode" label="节点名称" width="260">
<el-table-column prop="checkNode" label="节点名称" width="260">
<template #default="scope">
<span v-if="scope.row.checkState == 2">提交申请</span>
<span v-else>ESC审核</span>
@ -109,12 +109,12 @@
</template>
</el-table-column>
</el-table>
</div>
</div>
</el-card>
</div>
<div class="submitTool">
<el-button class="cancelApplyBtn" @click="handleCancel">返回</el-button>
<el-button class="cancelApplyBtn" @click="handleCancel">返回</el-button>
</div>
</div>
@ -128,24 +128,26 @@ const router = useRouter()
const route = useRoute()
const levelList = ref([
{ title: '系统管理', path: '/system' },
{ title: '系统管理' },
{ title: '新用户审批', path: '/system/userApproval' },
{ title: '审批详情', path: '/system/userApproval/userApprovalDetail' }
{ title: '审批详情' }
])
const { proxy } = getCurrentInstance()
const data = reactive({
detailForm: {}
})
const { detailForm } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
const id = route.params && route.params.userId
if (id) {
console.log('接收id', id)
console.log('接收id', id)
getDetailInfo(id)
getUserCheckRecordList(id)
}
}
});
//
@ -155,7 +157,7 @@ const getDetailInfo = (_id) => {
detailForm.value = res.data
}
})
}
}
const tableData = ref([])
//
@ -171,11 +173,11 @@ const getUserCheckRecordList = (_id) => {
}
const handleCancel = () => {
const handleCancel = () => {
router.push({
path: '/system/userApproval'
})
}
}
</script>
<style lang='scss'>
@ -221,6 +223,7 @@ const handleCancel = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}

View File

@ -3,7 +3,7 @@
<el-breadcrumb class="app-breadcrumb" separator=">">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="index == levelList.length - 1" class="link-redirect">{{
<span v-if="index != 0" class="link-redirect" @click="handleJump(item.path)">{{
item.title }}</span>
<span v-else class="no-redirect">{{ item.title }}</span>
</el-breadcrumb-item>
@ -159,15 +159,14 @@
import { onMounted, reactive, ref } from 'vue'
import { useRouter } from 'vue-router'
import { getUser, userCheckRecordList, checkRegisterUser } from "@/api/system/user"
import { listRole } from "@/api/system/role"
const router = useRouter()
const route = useRoute()
const levelList = ref([
{ title: '系统管理', path: '/system' },
{ title: '系统管理' },
{ title: '新用户审批', path: '/system/userApproval' },
{ title: '审批', path: '/system/userApproval/userApprovalDetail' }
{ title: '审批' }
])
const { proxy } = getCurrentInstance()
const data = reactive({
@ -184,6 +183,9 @@ const data = reactive({
const { ruleForm, detailForm, rules } = toRefs(data)
const handleJump = (goLink) => {
if (goLink) router.push({ path: goLink })
}
//
onMounted(() => {
const id = route.params && route.params.userId
@ -293,6 +295,7 @@ const handleSubmit = () => {
cursor: text;
text-decoration: underline;
text-underline-offset: 4px;
cursor: pointer;
}
}