动态路由配置

This commit is contained in:
13218645326 2023-12-07 12:31:06 +08:00
parent 60a6934b28
commit 1ce4be9b25
20 changed files with 1764 additions and 473 deletions

1
components.d.ts vendored
View File

@ -8,6 +8,7 @@ export {}
declare module 'vue' {
export interface GlobalComponents {
ComNav: typeof import('./src/components/comNav/index.vue')['default']
Details: typeof import('./src/components/com/details.vue')['default']
EditorWang: typeof import('./src/components/com/editorWang.vue')['default']
ElButton: typeof import('element-plus/es')['ElButton']
ElCard: typeof import('element-plus/es')['ElCard']

View File

@ -1,11 +1,14 @@
<template>
<el-config-provider :size="size" :z-index="zIndex">
<h1>{{ route }}</h1>
<RouterView />
</el-config-provider>
</template>
<script setup lang="ts">
const route = useRoute()
const zIndex = ref(3000)
const size = ref("small")
console.log('routedddd',route)
</script>
<style lang="scss">

View File

@ -1,12 +1,23 @@
<template>
<div class="upload_ss_c">
<!--action="/api/abk/web/v1/resource/file" -->
<el-upload :action="actionUrl" :auto-upload="autoUpload" style="width: 100%"
:on-success="(response, file) => successUpload(response, file)" :on-error="errorUpload"
:accept="acceptTypeList.join(',')" :before-upload="beforeUpload" :multiple="multiple" :limit="maxLimit"
:on-exceed="handleExceed" :file-list="fileList" :disabled="disabledFlag"
:on-remove="(file, fileList) => removeFile(file, fileList)" :on-preview="(file) => preview(file)"
:on-progress="(event, file, fileList) => onProgressFn(event, file, fileList)" list-type="picture-card">
<el-upload
:action="props.actionUrl"
:auto-upload="props.autoUpload"
style="width: 100%"
:on-success="(response, file) => successUpload(response, file)"
:on-error="errorUpload"
:accept="props.acceptTypeList.join(',')"
:before-upload="beforeUpload"
:multiple="props.multiple"
:limit="props.maxLimit"
:on-exceed="handleExceed"
:file-list="props.fileList"
:disabled="props.disabledFlag"
:on-remove="(file, fileList) => removeFile(file, fileList)"
:on-preview="(file) => preview(file)"
:on-progress="(event, file, fileList) => onProgressFn(event, file, fileList)"
:list-type="props.listType">
<!-- 上传的按钮 或者 icon 通过具名插槽的方式 -->
<slot name="default"></slot>
</el-upload>
@ -15,237 +26,220 @@
</template>
<script lang="ts" setup>
import { ref, nextTick } from "vue"
import { ElMessage } from 'element-plus'
import { Base64 } from 'js-base64'
const props = defineProps({
actionUrl: {
//
type: String,
default: '',
},
width: {
//
type: String,
default: '72px',
},
height: {
//
type: String,
default: '72px',
},
autoUpload: {//
type: Boolean,
default: false
},
acceptTypeList: {
//
type: Array,
default: () => {
return ['.jpg', '.jpeg', '.png']
// ['doc', 'docx', 'xlsx', 'xls', 'txt', 'pdf','jpg','jpeg','png','zip,'rar']
import { ref, nextTick } from 'vue'
import { ElMessage } from 'element-plus'
import { Base64 } from 'js-base64'
const props = defineProps({
actionUrl: {
//
type: String,
default: ''
},
},
multiple: {//
type: Boolean,
default: false,
},
maxLimit: {
//
type: Number || String,
default: 1,
},
maxSize: {
// M
type: Number || String,
default: 4,
},
disabledFlag: {
//
type: Boolean,
default: false,
},
fileList: {//
type: Array,
default: () => {
return []
width: {
//
type: String,
default: '72px'
},
},
listType: {
type: String,//'text' | 'picture' | 'picture-card'
default: 'picture',
},
extraData: {}, // name
/*
height: {
//
type: String,
default: '72px'
},
autoUpload: {
//
type: Boolean,
default: false
},
acceptTypeList: {
//
type: Array,
default: () => {
return ['.jpg', '.jpeg', '.png']
// ['doc', 'docx', 'xlsx', 'xls', 'txt', 'pdf','jpg','jpeg','png','zip,'rar']
}
},
multiple: {
//
type: Boolean,
default: false
},
maxLimit: {
//
type: Number || String,
default: 1
},
maxSize: {
// M
type: Number || String,
default: 4
},
disabledFlag: {
//
type: Boolean,
default: false
},
fileList: {
//
type: Array,
default: () => {
return []
}
},
listType: {
type: String, //'text' | 'picture' | 'picture-card'
default: 'picture'
},
extraData: {}, // name
/*
{
name:'12321'
}
*/
dragFlag: {
type: Boolean,
default: true, // element
},
downLoadTypeList: {
//
type: Array,
default: () => {
return ['doc', 'docx', 'xlsx', 'xls', 'txt']
dragFlag: {
type: Boolean,
default: true // element
},
},
preveiwTypeList: {
//
type: Array,
default: () => {
return ['pdf', 'jpg', 'jpeg', 'png']
downLoadTypeList: {
//
type: Array,
default: () => {
return ['doc', 'docx', 'xlsx', 'xls', 'txt']
}
},
},
officePreviewFlag: {
//office线
type: Boolean,
default: false,
},
showProcessFlag: {
//
type: Boolean,
default: false,
},
})
// office
// https://view.officeapps.live.com/op/view.aspx?src=
// https://view.officeapps.live.com/op/view.aspx?src=
//
const officeOnlineAddress =
'https://view.officeapps.live.com/op/view.aspx?src='
const officeType = ['doc', 'docx', 'xlsx', 'xls']
let processFlag = ref(false)//
let loadProcess = ref(0)//
//
const successUpload = (response: any, file: any) => {
console.log("successUpload", response, file)
if (response.rt.status === 200) {
props.fileList.push({
url: response.data,
name: file.name,
})
} else {
ElMessage({
type: 'warning',
message: response.data
})
}
}
const errorUpload = (res: any) => {
ElMessage({
type: 'warning',
message: '上传失败请重试!'
})
}
const beforeUpload = (file) => {
const { name = '', size } = file
if (size > props.maxSize * 1024 * 1000) {
ElMessage({
type: 'warning',
message: `文件最大仅支持${props.maxSize}M`
})
return false
}
if (!props.acceptTypeList.includes(name.split('.').pop()) + '.') {
ElMessage({
type: 'warning',
message: `文件格式仅支持${props.acceptTypeList.join(',')}M`
})
return false
}
}
const handleExceed = (files, fileList) => {
ElMessage({
type: 'warning',
message: `当前限制选择 10 个文件,本次选择了 ${files.length
} 个文件共选择了 ${files.length + fileList.length} 个文件`
})
}
//
const removeFile = (file, data) => {
console.log(file, data)
props.fileList = data
}
//
const preview = (data) => {
const { url, response = {} } = data || {}
let name = data.name
const downLoadTypeList = props.downLoadTypeList
const preveiwTypeList = props.preveiwTypeList
if (!name) {
name = ''
}
const suffixFileType = name.split('.').pop()
if (downLoadTypeList.includes(suffixFileType)) {
// 'doc', 'docx', 'xlsx', 'xls', 'txt'
name = name.replace(/&/g, '') // &
const target = encodeURIComponent(
Base64.encode(
`${location.origin
}/api/abk/web/v1/resource/file?fileId=${url || response.data
}&fullfilename=${name}&sid=4AC67ADB4E264AB0A8B899A671072875`
)
)
if (
props.officePreviewFlag &&
officeType.includes(suffixFileType)
) {
// office
const preveiewURL = officeOnlineAddress + target
window.open(preveiewURL)
} else {
// office
window.open(
`https://test/preview/onlinePreview?url=${target}`,
'_blank'
)
preveiwTypeList: {
//
type: Array,
default: () => {
return ['pdf', 'jpg', 'jpeg', 'png']
}
},
officePreviewFlag: {
//office线
type: Boolean,
default: false
},
showProcessFlag: {
//
type: Boolean,
default: false
}
})
// office
// https://view.officeapps.live.com/op/view.aspx?src=
// https://view.officeapps.live.com/op/view.aspx?src=
//
const officeOnlineAddress = 'https://view.officeapps.live.com/op/view.aspx?src='
const officeType = ['doc', 'docx', 'xlsx', 'xls']
let processFlag = ref(false) //
let loadProcess = ref(0) //
//
const successUpload = (response: any, file: any) => {
console.log('successUpload', response, file)
if (response.rt.status === 200) {
props.fileList.push({
url: response.data,
name: file.name
})
} else {
ElMessage({
type: 'warning',
message: response.data
})
}
} else if (preveiwTypeList.includes(suffixFileType)) {
//
window.open(
'/api/abk/web/v1/resource/file?fileId=' +
(url || response.data),
'_blank'
)
}
}
const onProgressFn = (event, file, fileList) => {
processFlag.value = true
loadProcess.value = event.percent.toFixed(2)
if (loadProcess.value >= 100) {
loadProcess.value = 100
nextTick(() => {
processFlag.value = false
const errorUpload = (res: any) => {
ElMessage({
type: 'warning',
message: '上传失败请重试!'
})
}
}
const beforeUpload = (file) => {
const { name = '', size } = file
if (size > props.maxSize * 1024 * 1000) {
ElMessage({
type: 'warning',
message: `文件最大仅支持${props.maxSize}M`
})
return false
}
if (!props.acceptTypeList.includes(name.split('.').pop()) + '.') {
ElMessage({
type: 'warning',
message: `文件格式仅支持${props.acceptTypeList.join(',')}M`
})
return false
}
}
const handleExceed = (files, fileList) => {
ElMessage({
type: 'warning',
message: `当前限制选择 10 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
files.length + fileList.length
} 个文件`
})
}
//
const removeFile = (file, data) => {
console.log(file, data)
props.fileList = data
}
//
const preview = (data) => {
const { url, response = {} } = data || {}
let name = data.name
const downLoadTypeList = props.downLoadTypeList
const preveiwTypeList = props.preveiwTypeList
if (!name) {
name = ''
}
const suffixFileType = name.split('.').pop()
if (downLoadTypeList.includes(suffixFileType)) {
// 'doc', 'docx', 'xlsx', 'xls', 'txt'
name = name.replace(/&/g, '') // &
const target = encodeURIComponent(
Base64.encode(
`${location.origin}/api/abk/web/v1/resource/file?fileId=${
url || response.data
}&fullfilename=${name}&sid=4AC67ADB4E264AB0A8B899A671072875`
)
)
if (props.officePreviewFlag && officeType.includes(suffixFileType)) {
// office
const preveiewURL = officeOnlineAddress + target
window.open(preveiewURL)
} else {
// office
window.open(`https://test/preview/onlinePreview?url=${target}`, '_blank')
}
} else if (preveiwTypeList.includes(suffixFileType)) {
//
window.open('/api/abk/web/v1/resource/file?fileId=' + (url || response.data), '_blank')
}
}
const onProgressFn = (event, file, fileList) => {
processFlag.value = true
loadProcess.value = event.percent.toFixed(2)
if (loadProcess.value >= 100) {
loadProcess.value = 100
nextTick(() => {
processFlag.value = false
})
}
}
</script>
<style lang="scss" scoped>
:deep(.el-upload){
width: v-bind('props.width')!important;
height: v-bind('props.height')!important;
}
:deep(.el-upload-list__item){
width: v-bind('props.width')!important;
height: v-bind('props.height')!important;
}
:deep(.el-upload) {
width: v-bind('props.width') !important;
height: v-bind('props.height') !important;
}
:deep(.el-upload-list__item) {
width: v-bind('props.width') !important;
height: v-bind('props.height') !important;
}
</style>
<style></style>

View File

@ -6,10 +6,11 @@
:router="menuInfo.router" :collapseTransition="menuInfo.collapseTransition" :popperEffect="menuInfo.popperEffect" :isCustomLink="menuInfo.isCustomLink" :customLinkCallBack="menuInfo.customLinkCallBack"></subMenu>
</template>
<script setup lang="ts">
import {list } from "router/routerData"
import subMenu from './sideBar/subMenu.vue';
import {comNavStore} from "store/comNav"
import {permissionStore} from "store/permission"
const navStore = comNavStore()
const permissionStoreInstance = permissionStore()
const routes = useRoute()
const router = useRouter()
const menuInfo:any = reactive({
@ -21,7 +22,7 @@ const navStore = comNavStore()
defaultOpeneds:['staticDefault_PathParent&&配置管理'],
router:false,
collapseTransition:true,
menuList:list,
menuList:[],
isCustomLink:true,
customLinkCallBack:(ev:any)=>{
console.log("customLinkCallBack",ev)
@ -49,11 +50,10 @@ const navStore = comNavStore()
// menuInfo.menuList = routeList.find(ele=>ele.meta.routeListRoot)?.children
// menuInfo.defaultOpeneds = menuInfo.menuList[0].path
// console.log("menuInfo.menuList",menuInfo.menuList)
menuInfo.defaultOpeneds.push()
const routes:any = router.getRoutes()
const routes:any = permissionStoreInstance.routeNavList
console.log("routes",routes)
const currentNav= routes[0]
if(navStore.topNavList){
if(navStore.topNavList.length==0){
let firstNav = {
title:currentNav.meta.title,
name:currentNav.name,

View File

@ -6,7 +6,7 @@ import App from './App.vue'
import router from './router'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import pinia from "./store"
import "router/DynamicRoute/index"
import components from 'components/global'
const app = createApp(App)

View File

@ -0,0 +1,48 @@
import router from "../index"
import { permissionStore } from "store/permission"
import { useRoute } from 'vue-router'
const route = useRoute()
const viteModules = import.meta.glob('../../views/*.vue');
// const views = import.meta.glob('../../views/AppMain.vue')
const root: any = {
path: '/index',
name: 'index',
// component:modules,
// redirect: '/index/configManage/swiperConfig',
meta: {
title: '主页面',
keepAlive: true,
AuthFlag: true,
routeListRoot: true
},
children: []
}
for (const path in viteModules) {
// path 的值为 /src/pages/vite/echartsPage.vue
// console.log(path, mod)
const length = path.lastIndexOf('/');
const filename = path.substring(length + 1).split('.')[0];
console.log('filename',filename)
const routeOption = {
path: `/${filename}`,
component: viteModules[path] // 是将vue文件解析为组件的对象
}
router.addRoute(routeOption);
}
router.beforeEach(async (to, from, next) => {
const store = permissionStore()
const list = await store.setpermissionList()
// initRouter()
console.log("router", list, router)
// addRoutesHandle(list)
// router.addRoute(root)
store.setRouteNavList(list)
next()
})

View File

@ -1,195 +1,239 @@
import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'
const routes: Array<RouteRecordRaw> = [
{
path: '/index',
name: 'index',
component: () => import('views/AppMain.vue'),
meta: {
title: '主页面',
keepAlive: true,
AuthFlag: true,
routeListRoot: true
},
children:[
{
path: 'swiperConfig',
name: 'swiperConfig',
component: () => import('views/configuration/swiperConfig/index.vue'),
meta: {
title: '轮播图配置',
keepAlive: true,
AuthFlag: true
}
},
{
path: 'specialInformationConfiguration',
name: 'specialInformationConfiguration',
component: () => import('views/configuration/specialInformationConfiguration/index.vue'),
meta: {
title: '专题资讯配置',
keepAlive: true,
AuthFlag: true
}
},
{
path: 'privacyAgreement',
name: 'privacyAgreement',
component: () => import('views/configuration/privacyAgreement/index.vue'),
meta: {
title: '隐私协议模板管理',
keepAlive: true,
AuthFlag: true
}
},
// {
// path: 'enterpriseManagement',
// name: 'enterpriseManagement',
// component: () => import('views/enterpriseManagement/AppMain.vue'),
// meta: {
// title: '企业管理',
// keepAlive: true,
// AuthFlag: true
// },
// },
{
path: 'enterpriseType',
name: 'configuration',
component: () => import('views/enterpriseManagement/enterpriseType/index.vue'),
meta: {
title: '企业类型',
keepAlive: true,
AuthFlag: true
}
},
{
path: 'enterpriseEntryReview',
name: 'enterpriseEntryReview',
component: () => import('views/enterpriseManagement/enterpriseEntryReview/index.vue'),
meta: {
title: '企业入驻审核',
keepAlive: true,
AuthFlag: true
},
},
{
path: 'businessReview',
name: 'businessReview',
component: () => import('views/enterpriseManagement/businessReview/index.vue'),
meta: {
title: '企业业务开通审核',
keepAlive: true,
AuthFlag: true
}
},
{
path: 'enterpriseInfo',
name: 'enterpriseInfo',
component: () => import('views/enterpriseManagement/enterpriseInfo/index.vue'),
meta: {
title: '企业信息',
keepAlive: true,
AuthFlag: true
}
},
// 企业装备管理
{
path: 'equipmentTypeTemplate',
name: 'equipmentTypeTemplate',
component: () => import('views/enterpriseEquipmentManage/equipmentTypeTemplate/index.vue'),
meta: {
title: '装备类型模板',
keepAlive: true,
AuthFlag: true
},
},
{
path: 'equipmentListingApproval',
name: 'equipmentListingApproval',
component: () => import('views/enterpriseEquipmentManage/equipmentListingApproval/index.vue'),
meta: {
title: '装备上架审批',
keepAlive: true,
AuthFlag: true
}
},
{
path: 'iotEquipmentManagement',
name: 'iotEquipmentManagement',
component: () => import('views/enterpriseEquipmentManage/iotEquipmentManagement/index.vue'),
meta: {
title: 'iot设备管理',
keepAlive: true,
AuthFlag: true
}
},
{
path: 'orderManagement',
name: 'orderManagement',
component: () => import('views/enterpriseEquipmentManage/iotEquipmentManagement/index.vue'),
meta: {
title: 'iot设备管理',
keepAlive: true,
AuthFlag: true
}
},
{
name: "orderManagement",
path: 'orderManagement',
component: () => import('views/orderManagement/index.vue'),
meta: {
title: '订单管理',
keepAlive: true,
AuthFlag: true
},
children: []
},
// 111
{
name: "systemVersion",
path: 'systemVersion',
component: () => import('views/systemManage/systemVersion/index.vue'),
meta: {
title: '系统版本管理',
keepAlive: true,
AuthFlag: true
},
children: []
},
{
name: "userManage",
path: 'userManage',
component: () => import('views/systemManage/userManage/index.vue'),
meta: {
title: '用户管理',
keepAlive: true,
AuthFlag: true
},
children: []
},
{
name: "systemLog",
path: 'systemLog',
component: () => import('views/systemManage/systemLog/index.vue'),
meta: {
title: '系统日志',
keepAlive: true,
AuthFlag: true
},
children: []
},
// {
// path: '/AppMain',
// name: 'index',
// component: () => import('views/AppMain.vue'),
// // redirect: '/index/swiperConfig',
// meta: {
// title: '主页面',
// keepAlive: true,
// AuthFlag: true,
// routeListRoot: true
// },
// children:[]
// }
// children:[
// {
// path: 'swiperConfig',
// name: 'swiperConfig',
// component: () => import('views/configuration/swiperConfig/index.vue'),
// meta: {
// title: '轮播图配置',
// keepAlive: true,
// AuthFlag: true
// }
// },
// {
// path: 'specialInformationConfiguration',
// name: 'specialInformationConfiguration',
// component: () => import('views/configuration/specialInformationConfiguration/index.vue'),
// meta: {
// title: '专题资讯配置',
// keepAlive: true,
// AuthFlag: true
// }
// },
// {
// path: 'privacyAgreement',
// name: 'privacyAgreement',
// component: () => import('views/configuration/privacyAgreement/index.vue'),
// meta: {
// title: '隐私协议模板管理',
// keepAlive: true,
// AuthFlag: true
// }
// },
// // {
// // path: 'enterpriseManagement',
// // name: 'enterpriseManagement',
// // component: () => import('views/enterpriseManagement/AppMain.vue'),
// // meta: {
// // title: '企业管理',
// // keepAlive: true,
// // AuthFlag: true
// // },
// // },
// {
// path: 'enterpriseType',
// name: 'configuration',
// component: () => import('views/enterpriseManagement/enterpriseType/index.vue'),
// meta: {
// title: '企业类型',
// keepAlive: true,
// AuthFlag: true
// }
// },
// {
// path: 'enterpriseEntryReview',
// name: 'enterpriseEntryReview',
// component: () => import('views/enterpriseManagement/enterpriseEntryReview/index.vue'),
// meta: {
// title: '企业入驻审核',
// keepAlive: true,
// AuthFlag: true
// },
// },
// {
// path: 'businessReview',
// name: 'businessReview',
// component: () => import('views/enterpriseManagement/businessReview/index.vue'),
// meta: {
// title: '企业业务开通审核',
// keepAlive: true,
// AuthFlag: true
// }
// },
// {
// path: 'enterpriseInfo',
// name: 'enterpriseInfo',
// component: () => import('views/enterpriseManagement/enterpriseInfo/index.vue'),
// meta: {
// title: '企业信息',
// keepAlive: true,
// AuthFlag: true
// }
// },
// // 企业装备管理
// {
// path: 'equipmentTypeTemplate',
// name: 'equipmentTypeTemplate',
// component: () => import('views/enterpriseEquipmentManage/equipmentTypeTemplate/index.vue'),
// meta: {
// title: '装备类型模板',
// keepAlive: true,
// AuthFlag: true
// },
// },
// {
// path: 'equipmentListingApproval',
// name: 'equipmentListingApproval',
// component: () => import('views/enterpriseEquipmentManage/equipmentListingApproval/index.vue'),
// meta: {
// title: '装备上架审批',
// keepAlive: true,
// AuthFlag: true
// }
// },
// {
// path: 'iotEquipmentManagement',
// name: 'iotEquipmentManagement',
// component: () => import('views/enterpriseEquipmentManage/iotEquipmentManagement/index.vue'),
// meta: {
// title: 'iot设备管理',
// keepAlive: true,
// AuthFlag: true
// }
// },
// {
// path: 'orderManagement',
// name: 'orderManagement',
// component: () => import('views/enterpriseEquipmentManage/iotEquipmentManagement/index.vue'),
// meta: {
// title: 'iot设备管理',
// keepAlive: true,
// AuthFlag: true
// }
// },
// {
// name: "orderManagement",
// path: 'orderManagement',
// component: () => import('views/orderManagement/index.vue'),
// meta: {
// title: '订单管理',
// keepAlive: true,
// AuthFlag: true
// },
// children: []
// },
// // 111
// {
// name: "systemVersion",
// path: 'systemVersion',
// component: () => import('views/systemManage/systemVersion/index.vue'),
// meta: {
// title: '系统版本管理',
// keepAlive: true,
// AuthFlag: true
// },
// children: []
// },
// {
// name: "userManage",
// path: 'userManage',
// component: () => import('views/systemManage/userManage/index.vue'),
// meta: {
// title: '用户管理',
// keepAlive: true,
// AuthFlag: true
// },
// children: []
// },
// {
// name: "systemLog",
// path: 'systemLog',
// component: () => import('views/systemManage/systemLog/index.vue'),
// meta: {
// title: '系统日志',
// keepAlive: true,
// AuthFlag: true
// },
// children: []
// },
// {
// name: "systemLog",
// path: 'systemLog',
// component: () => import('views/systemManage/systemLog/index.vue'),
// meta: {
// title: '系统日志',
// keepAlive: true,
// AuthFlag: true
// },
// children: []
// },
// {
// name: "entryAuditDetails",
// path: 'entryAuditDetails',
// component: () => import('views/enterpriseManagement/enterpriseEntryReview/details.vue'),
// meta: {
// title: '审批详情',
// keepAlive: true,
// AuthFlag: true
// },
// children: []
// },
// {
// name: "businessReviewDetails",
// path: 'businessReviewDetails',
// component: () => import('views/enterpriseManagement/businessReview/details.vue'),
// meta: {
// title: '审批详情',
// keepAlive: true,
// AuthFlag: true
// },
// children: []
// }, {
// name: "enterpriseInfoDetails",
// path: 'enterpriseInfoDetails',
// component: () => import('views/enterpriseManagement/enterpriseInfo/details.vue'),
// meta: {
// title: '审批详情',
// keepAlive: true,
// AuthFlag: true
// },
// children: []
// }
// ]
// },
]
},
]
@ -200,4 +244,5 @@ const router = createRouter({
routes
})
export default router

View File

@ -1,7 +1,7 @@
export const list: any = [
{
name: "staticDefault_PathParent",
path: 'staticDefault_PathParent',
name: "configManage",
path:'/index/configManage',
meta: {
title: '配置管理',
keepAlive: true,
@ -9,7 +9,7 @@ export const list: any = [
},
children: [
{
path: 'swiperConfig',
path:'/index/configManage/swiperConfig',
name: 'swiperConfig',
component: 'views/configuration/swiperConfig.vue',
meta: {
@ -19,7 +19,7 @@ export const list: any = [
}
},
{
path: 'specialInformationConfiguration',
path:'/index/configManage/specialInformationConfiguration',
name: 'specialInformationConfiguration',
component: 'views/configuration/specialInformationConfiguration/index.vue',
meta: {
@ -29,7 +29,7 @@ export const list: any = [
}
},
{
path: 'privacyAgreement',
path:'/index/configManage/privacyAgreement',
name: 'privacyAgreement',
component: 'views/configuration/privacyAgreement/index.vue',
meta: {
@ -42,7 +42,7 @@ export const list: any = [
},
{
name: "企业管理",
path: 'enterpriseTypeManage',
path:'/index/enterpriseTypeManage',
meta: {
title: '企业管理',
keepAlive: true,
@ -52,7 +52,7 @@ export const list: any = [
{
path: 'enterpriseType',
path:'/index/enterpriseTypeManage/enterpriseType',
name: 'configuration',
component: 'views/enterpriseManagement/enterpriseType/index.vue',
meta: {
@ -62,7 +62,7 @@ export const list: any = [
}
},
{
path: 'enterpriseEntryReview',
path:'/index/enterpriseTypeManage/enterpriseEntryReview',
name: 'enterpriseEntryReview',
component: 'views/enterpriseManagement/enterpriseEntryReview/index.vue',
meta: {
@ -73,7 +73,7 @@ export const list: any = [
},
{
path: 'businessReview',
path:'/index/enterpriseTypeManage/businessReview',
name: 'businessReview',
component: 'views/enterpriseManagement/businessReview/index.vue',
meta: {
@ -83,7 +83,7 @@ export const list: any = [
}
},
{
path: 'enterpriseInfo',
path:'/index/enterpriseTypeManage/enterpriseInfo',
name: 'enterpriseInfo',
component: 'views/enterpriseManagement/enterpriseInfo/index.vue',
meta: {
@ -96,7 +96,7 @@ export const list: any = [
},
{
name: "企业装备管理",
path: 'enterpriseEquipmentManage',
path:'/index/enterpriseEquipmentManage',
meta: {
title: '企业装备管理',
keepAlive: true,
@ -104,7 +104,7 @@ export const list: any = [
},
children: [
{
path: 'equipmentTypeTemplate',
path:'/index/enterpriseEquipmentManage/equipmentTypeTemplate',
name: 'equipmentTypeTemplate',
component: 'views/enterpriseEquipmentManage/equipmentTypeTemplate/index.vue',
meta: {
@ -115,7 +115,7 @@ export const list: any = [
},
{
path: 'equipmentListingApproval',
path:'/index/enterpriseEquipmentManage/equipmentListingApproval',
name: 'equipmentListingApproval',
component: 'views/enterpriseEquipmentManage/equipmentListingApproval/index.vue',
meta: {
@ -127,7 +127,7 @@ export const list: any = [
},
// iotEquipmentManagement
{
path: 'iotEquipmentManagement',
path:'/index/enterpriseEquipmentManage/iotEquipmentManagement',
name: 'iotEquipmentManagement',
component: 'views/enterpriseEquipmentManage/iotEquipmentManagement/index.vue',
meta: {
@ -140,7 +140,7 @@ export const list: any = [
},
{
name: "orderManagement",
path: 'orderManagement',
path:'/index/orderManagement',
component: 'views/orderManagement/index.vue',
meta: {
title: '订单管理',
@ -151,7 +151,7 @@ export const list: any = [
},
{
name: "systemManage",
path: 'systemManage',
path:'/index/systemManage',
meta: {
title: '系统管理',
keepAlive: true,
@ -159,7 +159,7 @@ export const list: any = [
},
children: [
{
path: 'systemVersion',
path:'/index/systemManage/systemVersion',
name: 'systemVersion',
component: 'views/systemManage/systemVersion/index.vue',
meta: {
@ -169,7 +169,7 @@ export const list: any = [
}
},
{
path: 'userManage',
path:'/index/systemManage/userManage',
name: 'userManage',
component: 'views/systemManage/userManage/index.vue',
meta: {
@ -179,7 +179,7 @@ export const list: any = [
}
} ,
{
path: 'systemLog',
path:'/index/systemManage/systemLog',
name: 'systemLog',
component: 'views/systemManage/systemLog/index.vue',
meta: {

View File

@ -39,7 +39,7 @@ export const comNavStore = defineStore('main_com_nav', {
{
// 自定义存储的 key默认是 store.$id
key: 'main_com_nav',
storage: localStorage, //缓存模式 可选 localStorage sessionStorage
storage: sessionStorage, //缓存模式 可选 localStorage sessionStorage
// state 中的字段名,按组打包储存
paths: ['topNavList'] //需要缓存的字段 与 state中相关联
}

36
src/store/permission.ts Normal file
View File

@ -0,0 +1,36 @@
import {list} from "router/routerData"
export const permissionStore = defineStore('permission', {
state: () => {
return {
permissionList:[],
routeNavList:[]
}
},
getters: {},
actions: {
setpermissionList() {
return new Promise((resolve,reject)=>{
setTimeout(()=>{
console.log("permissionStore")
resolve(list)
},0)
})
},
setRouteNavList(list:any) {
this.routeNavList=list
}
},
persist: {
enabled: true, // 开启数据缓存
strategies: [
{
// 自定义存储的 key默认是 store.$id
key: 'permission',
storage: sessionStorage, //缓存模式 可选 localStorage sessionStorage
// state 中的字段名,按组打包储存
paths: ['permissionList'] //需要缓存的字段 与 state中相关联
}
]
}
})

View File

@ -66,3 +66,6 @@ export const throttle = <T extends (...args: any[]) => ReturnType<T>>(
}, timeout)
}
}

814
src/views/com/1.vue Normal file
View File

@ -0,0 +1,814 @@
<template>
<div class="enterpriseCertification">
<div class="baseInfo card">
<div class="top">
<div class="title">企业基本信息</div>
<div class="options">
<el-button size="small" type="primary">我的邀请码</el-button>
<el-button size="small" type="primary">编辑</el-button>
</div>
</div>
<el-form class="baseForm">
<el-row :gutter="20">
<el-col :span="6">
<el-form-item label="企业名称">
<el-input
placeholder="输入企业名称"
clearable
v-model.trim="applyParams.companyName"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="企业类型">
<el-select
placeholder="请选择企业类型"
clearable
v-model="applyParams.companyType"
@change="changeProvince">
<el-option
v-for="item in selcompanyTypeList"
:key="item.id"
:label="item.name"
:value="item.name"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="6">
<el-form-item label="企业所属">
<el-select
placeholder="请选择企业所属"
clearable
v-model="applyParams.companyLtd"
@change="changeProvince">
<el-option
v-for="item in selcompanyLtdList"
:key="item.id"
:label="item.name"
:value="item.name"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="统一社会信用代码">
<el-input
placeholder="请输入统一社会信用代码"
clearable
v-model.trim="applyParams.creditCode"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="注册地址">
<el-row :gutter="20">
<el-col :span="5">
<el-select
placeholder="请选择省份"
clearable
v-model="applyParams.registerAddress"
@change="changeProvince">
<el-option
v-for="item in selProvinceList"
:key="item.id"
:label="item.name"
:value="item.code + ',' + item.name"></el-option>
</el-select>
</el-col>
<el-col :span="5">
<el-select
v-model="applyParams.registerAddressProvince"
placeholder="请选择市"
@change="changeMarket"
clearable>
<el-option
v-for="item in selMarketList"
:key="item.id"
:label="item.name"
:value="item.code + ',' + item.name"></el-option>
</el-select>
</el-col>
<el-col :span="5">
<el-select
v-model="applyParams.registerAddressArea"
placeholder="请选择区"
clearable
@change="changeArea">
<el-option
v-for="item in selAreaList"
:key="item.id"
:label="item.name"
:value="item.code + ',' + item.name"></el-option>
</el-select>
</el-col>
<el-col :span="6">
<el-input
v-model="applyParams.registerRealityAddress"
placeholder="请输入实际办公地址"
clearable></el-input>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="经营地址">
<el-row :gutter="20">
<el-col :span="5">
<el-select
placeholder="请选择省份"
clearable
v-model="applyParams.operateAddress"
@change="opeChangeProvince">
<el-option
v-for="item in selProvinceList"
:key="item.id"
:label="item.name"
:value="item.code + ',' + item.name"></el-option>
</el-select>
</el-col>
<el-col :span="5">
<el-select
v-model="applyParams.operateAddressProvince"
placeholder="请选择市"
@change="opeChangeMarket"
clearable>
<el-option
v-for="item in selMarketList"
:key="item.id"
:label="item.name"
:value="item.code + ',' + item.name"></el-option>
</el-select>
</el-col>
<el-col :span="5">
<el-select
v-model="applyParams.operateAddressArea"
placeholder="请选择区"
@change="opeChangeArea"
clearable>
<el-option
v-for="item in selAreaList"
:key="item.id"
:label="item.name"
:value="item.code + ',' + item.name"></el-option>
</el-select>
</el-col>
<el-col :span="6">
<el-input
v-model="applyParams.operateRealityAddress"
clearable
placeholder="请输入实际办公地址"></el-input>
</el-col>
</el-row>
</el-form-item>
<el-row :gutter="20">
<el-col :span="5">
<el-form-item label="法人证件类型">
<el-select
v-model="applyParams.certificatetype"
clearable
placeholder="请选法人证件类型">
<el-option
v-for="item in selIdTypeList"
:key="item.id"
:label="item.name"
:value="item.name"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="法人证件号码">
<el-input
placeholder="请输入法人证件号码"
v-model.trim="applyParams.idNumber"
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item class="" label="营业执照">
<uploadComponent
:maxLimit="3"
listType="picture-card"
:acceptTypeList="['.jpg', '.jpeg', '.png']"
width="120px"
height="120px">
<template v-slot:default>
<el-icon size="48" color="#aaa"><Plus /></el-icon>
</template>
</uploadComponent>
<div class="previewExample">
<span>预览</span>
<span>查看示例</span>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="10">
<el-form-item class="" label="身份证国徽面">
<uploadComponent
:maxLimit="3"
listType="picture-card"
:acceptTypeList="['.jpg', '.jpeg', '.png']"
width="120px"
height="120px">
<template v-slot:default>
<el-icon size="48" color="#aaa"><Plus /></el-icon>
</template>
</uploadComponent>
<div class="previewExample">
<span>预览</span>
<span>查看示例</span>
</div>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item class="" label="身份证肖像面">
<uploadComponent
:maxLimit="3"
listType="picture-card"
:acceptTypeList="['.jpg', '.jpeg', '.png']"
width="120px"
height="120px">
<template v-slot:default>
<el-icon size="48" color="#aaa"><Plus /></el-icon>
</template>
</uploadComponent>
<div class="previewExample">
<span>预览</span>
<span>查看示例</span>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="6">
<el-form-item label="法人姓名">
<el-input
placeholder="请输入法人姓名"
v-model.trim="applyParams.legalPerson"
clearable>
>
</el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="邀请码">
<el-input
placeholder="请输入邀请码"
v-model.trim="applyParams.invitationCode"
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="邀请企业名称">
<el-input
placeholder="请输入邀请企业名称"
v-model.trim="applyParams.invitationCoName"
clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="经营范围">
<el-input
placeholder="请输入经营范围"
v-model.trim="applyParams.businessScope"
clearable
type="textarea"
:rows="5"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div class="personInfo card">
<div class="top">
<div class="title">被授权人信息</div>
</div>
<el-form class="personForm">
<el-row :gutter="20">
<el-col :span="5">
<el-form-item label="被授权人姓名">
<el-input
placeholder="请输入被授权人姓名"
v-model.trim="applyParams.authPerson"
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="被授权人身份证">
<el-input
placeholder="请输入被授权人身份证"
v-model.trim="applyParams.authIdNumber"
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="被授权人手机号">
<div class="phone">
<el-input
placeholder="请输入被授权人手机号"
v-model.trim="applyParams.authPhone"
clearable></el-input>
<div class="tip">
被授权人手机号修改且运营审核通过后企业系统管理员权限将同步到修改后被授权手机号的登录账号
</div>
</div>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="被授权人邮箱">
<el-input></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="10">
<el-form-item label="被授权人身份证肖像面">
<uploadComponent
:maxLimit="3"
listType="picture-card"
:acceptTypeList="['.jpg', '.jpeg', '.png']"
width="120px"
height="120px">
<template v-slot:default>
<el-icon size="48" color="#aaa"><Plus /></el-icon>
</template>
</uploadComponent>
<div class="previewExample">
<span>预览</span>
<span>查看示例</span>
</div>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="被授权人身份证国徽面">
<!-- <upload-img width="80" @onClick="test" /> -->
<uploadComponent
:maxLimit="3"
listType="picture-card"
:acceptTypeList="['.jpg', '.jpeg', '.png']"
width="120px"
height="120px">
<template v-slot:default>
<el-icon size="48" color="#aaa"><Plus /></el-icon>
</template>
</uploadComponent>
<div class="previewExample">
<span>预览</span>
<span>查看示例</span>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="10">
<el-form-item label="法人授权书">
<uploadComponent
:maxLimit="3"
listType="picture-card"
:acceptTypeList="['.jpg', '.jpeg', '.png']"
width="120px"
height="120px">
<template v-slot:default>
<el-icon size="48" color="#aaa"><Plus /></el-icon>
</template>
</uploadComponent>
<div class="previewExample">
<span>预览</span>
<span>查看示例</span>
</div>
</el-form-item>
</el-col>
<el-col :span="10" class="d-flex align-center">
<el-checkbox size="large" />
<div class="agreement">
我已阅读并同意相关条款内容
<span class="previewExample">服务协议</span>
<span class="previewExample">隐私协议</span>
</div>
</el-col>
</el-row>
</el-form>
</div>
<div class="bankInfo card">
<div class="top">
<div class="title">
银行账号信息
<span class="tip">开户行许可示例</span>
</div>
</div>
<el-row class="header">
<el-col :span="v.span" v-for="(v, i) in bankTableHeader" :key="i">
<div
class="item border-top-left"
:class="i + 1 == bankTableHeader.length && 'border-right'">
{{ v.label }}
</div>
</el-col>
</el-row>
<el-row class="content" v-for="(val, index) in bankTableData" :key="index">
<el-col :span="v.span" v-for="(v, i) in bankTableHeader" :key="i">
<div
v-if="!v.slot"
class="item border-top-left"
:class="`${i + 1 == bankTableHeader.length && 'border-right'} ${
index + 1 == bankTableData.length && 'border-bottom'
}`">
{{ val[v.prop] || '' }}
</div>
<div
v-else
class="item border-top-left"
:class="`${i + 1 == bankTableHeader.length && 'border-right'} ${
index + 1 == bankTableData.length && 'border-bottom'
}`">
上传附件
</div>
</el-col>
</el-row>
</div>
<el-row style="padding-top: 15px">
<el-form-item>
<el-button @click="handlerSubmitBtn"> </el-button>
<el-button @click="handlerCloseBtn"> </el-button>
</el-form-item>
</el-row>
</div>
</template>
<script lang="ts" setup>
import uploadImg from 'components/uploadImg.vue'
import uploadComponent from 'components/uploadComponent/index.vue'
import { ElMessage } from 'element-plus'
import { reactive, ref } from 'vue'
import { useStore } from 'store/user'
const store = useStore()
import { applyAttestationApi } from 'http/api/usercenter/baseinfo'
onMounted(() => {
//
store.getprovinceList()
//
store.getIdTypeList()
//
store.getcompanyTypeList()
//
store.getcompanyLtdList()
})
//
const AssemblyRegisterAddress: any = reactive([])
//
const AssemblyOperateAddress: any = reactive([])
//
const applyParams: any = reactive({
companyName: '', //
companyType: '', //
companyLtd: '', //
creditCode: '', //
registerAddress: '', //
registerAddressProvince: '', // ()
registerAddressArea: '', // ()
registerRealityAddress: '', // ()
operateAddress: '', //
operateAddressProvince: '', // ()
operateAddressArea: '', // ()
operateRealityAddress: '', // ()
certificatetype: '', //
idNumber: '', //
businessLicense: '', //
legalFaceUrl: '', //
legalNationUrl: '', //
legalPerson: '', //
invitationCode: '', //
invitationCoName: '', //
businessScope: '', //
authPerson: '', //
authIdNumber: '', //
authPhone: '', //
authDocument:
'https://zlpt-1259760603.cos.ap-nanjing.myqcloud.com/488bab245180ebf9f1f3d7db5301be4.png', //
idNationUrl:
'https://zlpt-1259760603.cos.ap-nanjing.myqcloud.com/488bab245180ebf9f1f3d7db5301be4.png', //
idFaceUrl:
'vhttps://zlpt-1259760603.cos.ap-nanjing.myqcloud.com/488bab245180ebf9f1f3d7db5301be4.png' //
})
//
const selProvinceList: any = computed(() => {
return store.provinceList
})
//
const changeProvince = (val: any) => {
// console.log(val, '**')
store.getmarketList(val.split(',')[0])
AssemblyRegisterAddress[0] = val.split(',')[1]
}
const opeChangeProvince = (val: any) => {
// console.log(val, '**')
store.getmarketList(val.split(',')[0])
AssemblyOperateAddress[0] = val.split(',')[1]
}
//
const selMarketList: any = computed(() => {
return store.marketList
})
//
const changeMarket = (val: any) => {
store.getareaList(val.split(',')[0])
AssemblyRegisterAddress[1] = val.split(',')[1]
}
const opeChangeMarket = (val: any) => {
store.getareaList(val.split(',')[0])
AssemblyOperateAddress[1] = val.split(',')[1]
}
//
const selAreaList: any = computed(() => {
return store.areaList
})
//
const changeArea = (val: any) => {
AssemblyRegisterAddress[2] = val.split(',')[1]
}
const opeChangeArea = (val: any) => {
AssemblyOperateAddress[2] = val.split(',')[1]
}
//
const selIdTypeList: any = computed(() => {
return store.idTypeList
})
//
const selcompanyTypeList: any = computed(() => {
return store.companyTypeList
})
//
const selcompanyLtdList: any = computed(() => {
return store.companyLtdList
})
const emit = defineEmits(['closeAuthenticationDialog'])
//
const handlerSubmitBtn = async () => {
AssemblyRegisterAddress[3] = applyParams.registerRealityAddress
AssemblyOperateAddress[3] = applyParams.operateRealityAddress
applyParams.registerAddress = AssemblyRegisterAddress.join(',')
applyParams.operateAddress = AssemblyOperateAddress.join(',')
const res: any = await applyAttestationApi({
bmCompanyInfo: applyParams,
bmCoBank: {}
})
if (res.code === 200) {
ElMessage({
type: 'success',
message: '申请成功'
})
//
emit('closeAuthenticationDialog', false)
}
}
//
const handlerCloseBtn = () => {
emit('closeAuthenticationDialog', false)
}
const options = reactive([
{
value: '选项1',
label: '黄金糕'
},
{
value: '选项2',
label: '双皮奶'
},
{
value: '选项3',
label: '蚵仔煎'
},
{
value: '选项4',
label: '龙须面'
},
{
value: '选项5',
label: '北京烤鸭'
}
])
const thisValue = ref('')
const imageUrl = ref('')
const bankTableHeader = reactive([
{
span: 4,
label: '开户行',
prop: 'bankName'
},
{
span: 2,
label: '账号名称',
prop: 'b'
},
{
span: 2,
label: '银行账号',
prop: 'a'
},
{
span: 2,
label: '开户行所在地',
prop: 'a'
},
{
span: 2,
label: '开户许可证核准号(基本存款账号编号)',
prop: 'a'
},
{
span: 2,
label: '开户行许可证/基本存款账号信息',
prop: 'a',
slot: 'annex'
}
])
const bankTableData = reactive([
{
a: 1,
bankName: '中国银行'
},
{
a: 1,
bankName: 'test'
},
{
a: 1,
bankName: 'test'
},
{
a: 1,
bankName: 'test'
},
{
a: 1,
bankName: 'test'
},
{
a: 1,
bankName: 'test'
}
])
const test = () => {}
</script>
<style lang="scss" scoped>
.d-flex {
display: flex;
}
.align-center {
align-items: center;
}
::v-deep.el-form-item {
display: flex;
.el-form-item__content {
flex: 1;
}
}
.enterpriseCertification {
height: 100%;
background: #f2f2f2;
padding: 15px 10px;
.card {
border-radius: 5px;
background: white;
padding: 10px;
}
.top {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 10px;
.title {
font-size: 16px;
font-weight: 600;
}
.options {
}
}
.baseForm {
padding: 0 10px;
}
.previewExample {
font-size: 12px;
color: blue;
cursor: pointer;
span {
margin: 0 5px;
}
}
.personInfo {
margin-top: 15px;
.personForm {
padding: 0 10px;
.phone {
.tip {
line-height: normal;
color: red;
font-size: 12px;
}
}
.agreement {
font-size: 13px !important;
margin-left: 8px;
}
}
}
.bankInfo {
margin-top: 15px;
.top {
.title {
.tip {
color: blue;
font-size: 12px;
cursor: pointer;
}
}
}
.header {
.item {
background: #e0efff;
min-height: 40px;
display: flex;
align-items: center;
justify-content: flex-start;
box-sizing: border-box;
padding: 5px;
height: 100%;
}
}
.border-top-left {
border-top: 1px solid black;
border-left: 1px solid black;
}
.border-right {
border-right: 1px solid black;
}
.border-bottom {
border-bottom: 1px solid black;
}
.content {
.item {
min-height: 40px;
display: flex;
align-items: center;
//justify-content: center;
box-sizing: border-box;
padding: 5px;
height: 100%;
}
}
}
}
</style>

279
src/views/com/details.vue Normal file
View File

@ -0,0 +1,279 @@
<template>
<div class="sub_title">
企业基本信息
</div>
<el-divider></el-divider>
<el-form label-width="136px" inline="true" style="padding: 0 20px 0px 20px;">
<div>
<el-form-item label="企业名称">
xxxxx
</el-form-item>
<el-form-item label="统一社会信用代码">
xxxxx
</el-form-item>
</div>
<el-form-item label="注册地址">
xxxxx
</el-form-item>
<el-form-item label="经营地址">
xxxxx
</el-form-item>
<div>
<el-form-item label="法人证件类型">
xxxxx
</el-form-item>
<el-form-item label="法人证件号码">
xxxxx
</el-form-item>
<el-form-item label="营业执照">
xxxxx
</el-form-item>
<el-form-item label="身份证国徽面">
xxxxx
</el-form-item>
<el-form-item label="身份证肖像面">
xxxxx
</el-form-item>
</div>
<div>
<el-form-item label="法人姓名">
xxxxx
</el-form-item>
<el-form-item label="邀请码">
xxxxx
</el-form-item>
<el-form-item label="邀请企业名称" style="width:500px">
<div>
</div>
</el-form-item>
</div>
<el-form-item label="经营范围">
xxxxx
</el-form-item>
</el-form>
<div class="sub_title">
被授权人信息
</div>
<el-divider></el-divider>
<el-form label-width="136px" inline="true" style="padding: 0 80px 0px 0;">
<div>
<el-form-item label="被授权人姓名">
xxxxx
</el-form-item>
<el-form-item label="被授权人身份证">
xxxxx
</el-form-item>
<el-form-item label="被授权人手机号">
xxxxx
</el-form-item>
<el-form-item label="被授权人邮箱">
xxxxx
</el-form-item>
</div>
<div>
<el-form-item label="法人授权书">
xxxxx
</el-form-item>
<el-form-item label="被授权人身份证国徽面">
xxxxx
</el-form-item>
<el-form-item label="被授权人身份证肖像面">
xxxxx
</el-form-item>
</div>
</el-form>
<div class="sub_title">
银行账户信息
</div>
<el-divider></el-divider>
<el-table :data="tableAccountInfo.list" style="width: 100%" border stripe >
<el-table-column fixed prop="bankCompany" label="开户行" min-width="120" />
<el-table-column prop="bankName" label="账户名称" min-width="120" />
<el-table-column prop="bankAccount" label="银行账号" min-width="120" />
<el-table-column prop="bankAddress" label="开户行所在地" min-width="120" />
<el-table-column prop="xk_code" label="开户许可证核准号(基本存款账号编号)" min-width="120" />
<el-table-column prop="xk_account" label="开户行许可证/基本存款账号信息" min-width="120" align="center">
<template #default="scope">
<el-button type="text">预览</el-button>
</template>
</el-table-column>
</el-table>
<div class="sub_title" style="margin-top:12px;">
联系人信息
</div>
<el-divider></el-divider>
<el-table :data="tableContactInfo.list" style="width: 100%" border stripe >
<el-table-column fixed prop="default_user" label="默认联系人(被授权人)" min-width="120" />
<el-table-column prop="default_contact_user" label="联系人姓名" min-width="120" />
<el-table-column prop="phone" label="手机号" min-width="120" />
<el-table-column prop="mobile" label="电话" min-width="120" />
<el-table-column prop="email" label="邮箱" min-width="120" />
<el-table-column prop="remark" label="备注" min-width="120" />
<el-table-column label="操作" min-width="120" align="center">
<!-- <template #default="scope">
<el-button type="text"></el-button>
</template> -->
</el-table-column>
</el-table>
</template>
<script lang="ts" setup>
const emits = defineEmits(['send'])
const addShow = ref(false)
let title = ref("订单详情")
const tableAccountData = [
{
bankCompany: '2016-05-03',
bankName: 'Tom',
bankAccount: 'California',
bankAddress: 'Los Angeles',
xk_code: 'No. 189, Grove St, Los Angeles',
xk_account: 'CA 90036',
},
{
bankCompany: '2016-05-03',
bankName: 'Tom',
bankAccount: 'California',
bankAddress: 'Los Angeles',
xk_code: 'No. 189, Grove St, Los Angeles',
xk_account: 'CA 90036',
},
{
bankCompany: '2016-05-03',
bankName: 'Tom',
bankAccount: 'California',
bankAddress: 'Los Angeles',
xk_code: 'No. 189, Grove St, Los Angeles',
xk_account: 'CA 90036',
},
{
bankCompany: '2016-05-03',
bankName: 'Tom',
bankAccount: 'California',
bankAddress: 'Los Angeles',
xk_code: 'No. 189, Grove St, Los Angeles',
xk_account: 'CA 90036',
},
{
bankCompany: '2016-05-03',
bankName: 'Tom',
bankAccount: 'California',
bankAddress: 'Los Angeles',
xk_code: 'No. 189, Grove St, Los Angeles',
xk_account: 'CA 90036',
},
{
bankCompany: '2016-05-03',
bankName: 'Tom',
bankAccount: 'California',
bankAddress: 'Los Angeles',
xk_code: 'No. 189, Grove St, Los Angeles',
xk_account: 'CA 90036',
}
]
const tableContactData = [
{
default_user: '2016-05-03',
default_contact_user: 'Tom',
phone: 'California',
mobile: 'Los Angeles',
email: 'No. 189, Grove St, Los Angeles',
remark: 'CA 90036',
},
{
default_user: '2016-05-03',
default_contact_user: 'Tom',
phone: 'California',
mobile: 'Los Angeles',
email: 'No. 189, Grove St, Los Angeles',
remark: 'CA 90036',
},
{
default_user: '2016-05-03',
default_contact_user: 'Tom',
phone: 'California',
mobile: 'Los Angeles',
email: 'No. 189, Grove St, Los Angeles',
remark: 'CA 90036',
},
{
default_user: '2016-05-03',
default_contact_user: 'Tom',
phone: 'California',
mobile: 'Los Angeles',
email: 'No. 189, Grove St, Los Angeles',
remark: 'CA 90036',
},
{
default_user: '2016-05-03',
default_contact_user: 'Tom',
phone: 'California',
mobile: 'Los Angeles',
email: 'No. 189, Grove St, Los Angeles',
remark: 'CA 90036',
},
{
default_user: '2016-05-03',
default_contact_user: 'Tom',
phone: 'California',
mobile: 'Los Angeles',
email: 'No. 189, Grove St, Los Angeles',
remark: 'CA 90036',
},
{
default_user: '2016-05-03',
default_contact_user: 'Tom',
phone: 'California',
mobile: 'Los Angeles',
email: 'No. 189, Grove St, Los Angeles',
remark: 'CA 90036',
},
{
default_user: '2016-05-03',
default_contact_user: 'Tom',
phone: 'California',
mobile: 'Los Angeles',
email: 'No. 189, Grove St, Los Angeles',
remark: 'CA 90036',
},
]
const show = (val: any) => {
title.value = val.title
addShow.value = true
}
const tableAccountInfo= reactive({
list:tableAccountData
})
const tableContactInfo= reactive({
list:tableContactData
})
defineExpose({
show
})
</script>
<style scoped lang="scss">
.sub_title {
font-size: 16px;
font-weight: bold;
}
</style>

View File

@ -99,21 +99,7 @@ const editCallBack = (row: any, value: any) => {
const addConfirm = (row: any) => {
ElMessageBoxOpert(
'新增',
'',
'确定',
'取消',
(val: any) => {
if (!val) {
return "请填写类型模板"
}
},
"请填写类型模板",
addCallBack,
row
)
}
const editConfirm = (row: any) => {
ElMessageBoxOpert(

View File

@ -0,0 +1,26 @@
<template>
<el-card shadow="always" class="content_body_details">
<detailsCom></detailsCom>
</el-card>
</template>
<script lang="ts" setup>
import detailsCom from "views/com/details.vue"
</script>
<style scoped lang="scss">
.content_body_details{
margin-top: 12px;
flex: 1;
display: flex;
flex-direction: column;
max-height:calc(100vh - 172px);
overflow-y:auto;
.el-card__body{
flex: 1;
display: flex;
flex-direction: column;
}
}
</style>

View File

@ -56,6 +56,7 @@
import headerTop from "./com/headerTop.vue"
import addCom from "./com/addCom.vue"
import { ElConfirmBeforeOpert } from "utils/elementCom"
const router = useRouter()
const addComRef = ref()
const paginationInfo = reactive({
currentPage: 1,
@ -122,8 +123,8 @@ let tableListInfo = reactive({
const editRowFn = (row: any) => {
addComRef.value.edit({
a: "111"
router.push({
name:'entryAuditDetails'
})
}

View File

@ -0,0 +1,26 @@
<template>
<el-card shadow="always" class="content_body_details">
<detailsCom></detailsCom>
</el-card>
</template>
<script lang="ts" setup>
import detailsCom from "views/com/details.vue"
</script>
<style scoped lang="scss">
.content_body_details{
margin-top: 12px;
flex: 1;
display: flex;
flex-direction: column;
max-height:calc(100vh - 172px);
overflow-y:auto;
.el-card__body{
flex: 1;
display: flex;
flex-direction: column;
}
}
</style>

View File

@ -22,15 +22,15 @@
<el-table-column prop="v_applyTime" label="申请时间" min-width="160">
</el-table-column>
<el-table-column label="状态" min-width="120">
<el-table-column label="状态" min-width="120">
<template #default="scope">
<div class="todo_status_c" v-if="scope.row.v_status=='1'">
<div class="todo_status_c" v-if="scope.row.v_status == '1'">
待审批
</div>
<div class="pass_status_c" v-else-if="scope.row.v_status=='2'">
<div class="pass_status_c" v-else-if="scope.row.v_status == '2'">
已通过
</div>
<div class="reject_status_c" v-else-if="scope.row.v_status=='3'">
<div class="reject_status_c" v-else-if="scope.row.v_status == '3'">
已驳回
</div>
</template>
@ -38,11 +38,11 @@
<el-table-column label="操作" align="center" width="160">
<template #default="scope">
<el-button type="primary" size="small" @click.prevent="editRowFn(scope.row)">
编辑
<el-button type="primary" size="small" @click.prevent="auditFn(scope.row)">
审批
</el-button>
<el-button type="danger" size="small" @click.prevent="deleteRowFn(scope.row)">
删除
<el-button type="danger" size="small" @click.prevent="showRowFn(scope.row)">
查看
</el-button>
</template>
</el-table-column>
@ -58,6 +58,7 @@
import headerTop from "./com/headerTop.vue"
import addCom from "./com/addCom.vue"
import { ElConfirmBeforeOpert } from "utils/elementCom"
const router = useRouter()
const addComRef = ref()
const paginationInfo = reactive({
currentPage: 1,
@ -122,19 +123,16 @@ let tableListInfo = reactive({
list: tableData
})
const editRowFn = (row: any) => {
addComRef.value.edit({
a: "111"
const auditFn=(row: any) => {
router.push({
name:'entryAuditDetails'
})
}
const showRowFn=(row: any) => {
router.push({
name:'entryAuditDetails'
})
}
const deleteItem = (row: any) => {
const itemID = row.v_id
console.log("ITEMid", row)
}
const deleteRowFn = (row: any) => {
ElConfirmBeforeOpert(
'操作确认',

View File

@ -0,0 +1,26 @@
<template>
<el-card shadow="always" class="content_body_details">
<detailsCom></detailsCom>
</el-card>
</template>
<script lang="ts" setup>
import detailsCom from "views/com/details.vue"
</script>
<style scoped lang="scss">
.content_body_details{
margin-top: 12px;
flex: 1;
display: flex;
flex-direction: column;
max-height:calc(100vh - 172px);
overflow-y:auto;
.el-card__body{
flex: 1;
display: flex;
flex-direction: column;
}
}
</style>

View File

@ -33,7 +33,7 @@
<el-table-column label="操作" align="center" width="160">
<template #default="scope">
<el-button type="primary" size="small" @click.prevent="showFn(scope.row)">
<el-button type="primary" size="small" @click.prevent="showRowFn(scope.row)">
查看
</el-button>
<el-button type="danger" size="small" @click.prevent="deleteRowFn(scope.row)">
@ -53,6 +53,7 @@
import headerTop from "./com/headerTop.vue"
import addCom from "./com/addCom.vue"
import { ElConfirmBeforeOpert } from "utils/elementCom"
const router = useRouter()
const addComRef = ref()
const paginationInfo = reactive({
currentPage: 1,
@ -124,7 +125,11 @@ const editRowFn = (row: any) => {
})
}
const showRowFn=(row: any) => {
router.push({
name:'enterpriseInfoDetails'
})
}
const deleteItem = (row: any) => {
const itemID = row.v_id
console.log("ITEMid", row)