更新个人中心认证
This commit is contained in:
parent
a6e21486fe
commit
61dd5b8968
|
|
@ -10,7 +10,7 @@ VITE_API_URL = '/proxyApi'
|
||||||
VITE_proxyTarget = 'http://10.40.92.186:8080' # 赵福海 (登录)
|
VITE_proxyTarget = 'http://10.40.92.186:8080' # 赵福海 (登录)
|
||||||
|
|
||||||
# VITE_proxyTarget = 'http://10.40.92.185:9206' # 赵福海 ( 设备类型)
|
# VITE_proxyTarget = 'http://10.40.92.185:9206' # 赵福海 ( 设备类型)
|
||||||
# VITE_proxyTarget = 'http://10.40.92.253:8080' # 牛 (个人中心 基础信息企业申请认证)
|
# VITE_proxyTarget = 'http://10.40.92.16:9502' # 牛 (个人中心 基础信息企业申请认证)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
<el-upload
|
<el-upload
|
||||||
:action="actionUrl"
|
:action="actionUrl"
|
||||||
:auto-upload="props.autoUpload"
|
:auto-upload="props.autoUpload"
|
||||||
|
:headers="headerInfo"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:on-success="(response:any, file:any) => successUpload(response, file)"
|
:on-success="(response:any, file:any) => successUpload(response, file)"
|
||||||
:on-error="errorUpload"
|
:on-error="errorUpload"
|
||||||
|
|
@ -22,7 +23,6 @@
|
||||||
<!-- 上传的按钮 或者 icon 通过具名插槽的方式 -->
|
<!-- 上传的按钮 或者 icon 通过具名插槽的方式 -->
|
||||||
<div>
|
<div>
|
||||||
<slot name="default"></slot>
|
<slot name="default"></slot>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<slot name="textContent"></slot>
|
<slot name="textContent"></slot>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
|
|
@ -34,8 +34,14 @@
|
||||||
import { ref, nextTick } from 'vue'
|
import { ref, nextTick } from 'vue'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
// import { Base64 } from 'js-base64'
|
// import { Base64 } from 'js-base64'
|
||||||
const tmpUploadUrl = import.meta.env.VITE_API_URL +"/zlpt-file/file/cos/upload"
|
const tmpUploadUrl = import.meta.env.VITE_API_URL + '/zlpt-file/file/cos/upload'
|
||||||
console.log("tmpUploadUrl",tmpUploadUrl)
|
import { useStore } from 'store/main'
|
||||||
|
const store = useStore()
|
||||||
|
const headerInfo = reactive({
|
||||||
|
Authorization: store.token
|
||||||
|
})
|
||||||
|
|
||||||
|
console.log('tmpUploadUrl', tmpUploadUrl)
|
||||||
const actionUrl = ref(tmpUploadUrl)
|
const actionUrl = ref(tmpUploadUrl)
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
// actionUrl: {
|
// actionUrl: {
|
||||||
|
|
@ -132,9 +138,13 @@
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
scuccesCallback:{
|
scuccesCallback: {
|
||||||
type:Function,
|
type: Function,
|
||||||
default:()=>{}
|
default: () => {}
|
||||||
|
},
|
||||||
|
successResultCallBack: {
|
||||||
|
type: Function,
|
||||||
|
default: () => {}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
// office预览
|
// office预览
|
||||||
|
|
@ -150,12 +160,12 @@
|
||||||
// 上传图片 成功
|
// 上传图片 成功
|
||||||
const successUpload = (response: any, file: any) => {
|
const successUpload = (response: any, file: any) => {
|
||||||
console.log('successUpload', response, file)
|
console.log('successUpload', response, file)
|
||||||
if (response.rt.status === 200) {
|
if (response.code === 200) {
|
||||||
props.fileList.push({
|
props.fileList.push({
|
||||||
url: response.data,
|
url: response.data,
|
||||||
name: file.name
|
name: file.name
|
||||||
})
|
})
|
||||||
|
props.successResultCallBack(response)
|
||||||
} else {
|
} else {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
|
|
@ -169,8 +179,8 @@
|
||||||
message: '上传失败请重试!'
|
message: '上传失败请重试!'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const beforeUpload = (file:any) => {
|
const beforeUpload = (file: any) => {
|
||||||
console.log("file",file)
|
console.log('file', file)
|
||||||
const { name = '', size } = file
|
const { name = '', size } = file
|
||||||
if (size > props.maxSize * 1024 * 1000) {
|
if (size > props.maxSize * 1024 * 1000) {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
|
|
@ -179,11 +189,11 @@
|
||||||
})
|
})
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
let names = name.split(".")
|
let names = name.split('.')
|
||||||
let currentName = names[names.length-1]
|
let currentName = names[names.length - 1]
|
||||||
console.log("acceptTypeListacceptTypeList",props.acceptTypeList,currentName)
|
console.log('acceptTypeListacceptTypeList', props.acceptTypeList, currentName)
|
||||||
console.log("name.split().pop()",)
|
console.log('name.split().pop()')
|
||||||
if (!props.acceptTypeList.includes( '.'+currentName) ) {
|
if (!props.acceptTypeList.includes('.' + currentName)) {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
message: `文件格式仅支持${props.acceptTypeList.join(',')}`
|
message: `文件格式仅支持${props.acceptTypeList.join(',')}`
|
||||||
|
|
@ -191,7 +201,7 @@
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const handleExceed = (files:any, fileList:any) => {
|
const handleExceed = (files: any, fileList: any) => {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
message: `当前限制选择 10 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
|
message: `当前限制选择 10 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
|
||||||
|
|
@ -200,12 +210,12 @@
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 移除文件
|
// 移除文件
|
||||||
const removeFile = (file:any, data:any) => {
|
const removeFile = (file: any, data: any) => {
|
||||||
console.log(file, data)
|
console.log(file, data)
|
||||||
// props.fileList = data
|
// props.fileList = data
|
||||||
}
|
}
|
||||||
// 预览
|
// 预览
|
||||||
const preview = (data:any) => {
|
const preview = (data: any) => {
|
||||||
const { url, response = {} } = data || {}
|
const { url, response = {} } = data || {}
|
||||||
let name = data.name
|
let name = data.name
|
||||||
const downLoadTypeList = props.downLoadTypeList
|
const downLoadTypeList = props.downLoadTypeList
|
||||||
|
|
@ -217,13 +227,12 @@
|
||||||
if (downLoadTypeList.includes(suffixFileType)) {
|
if (downLoadTypeList.includes(suffixFileType)) {
|
||||||
//预览 'doc', 'docx', 'xlsx', 'xls', 'txt' 文件
|
//预览 'doc', 'docx', 'xlsx', 'xls', 'txt' 文件
|
||||||
name = name.replace(/&/g, '') // & 不兼容
|
name = name.replace(/&/g, '') // & 不兼容
|
||||||
const target = encodeURIComponent(
|
const target = encodeURIComponent()
|
||||||
// Base64.encode(
|
// Base64.encode(
|
||||||
// `${location.origin}/api/abk/web/v1/resource/file?fileId=${
|
// `${location.origin}/api/abk/web/v1/resource/file?fileId=${
|
||||||
// url || response.data
|
// url || response.data
|
||||||
// }&fullfilename=${name}&sid=4AC67ADB4E264AB0A8B899A671072875`
|
// }&fullfilename=${name}&sid=4AC67ADB4E264AB0A8B899A671072875`
|
||||||
// )
|
// )
|
||||||
)
|
|
||||||
if (props.officePreviewFlag && officeType.includes(suffixFileType)) {
|
if (props.officePreviewFlag && officeType.includes(suffixFileType)) {
|
||||||
// office预览的
|
// office预览的
|
||||||
const preveiewURL = officeOnlineAddress + target
|
const preveiewURL = officeOnlineAddress + target
|
||||||
|
|
@ -238,7 +247,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const onProgressFn = (event:any, file:any, fileList:any) => {
|
const onProgressFn = (event: any, file: any, fileList: any) => {
|
||||||
processFlag.value = true
|
processFlag.value = true
|
||||||
loadProcess.value = event.percent.toFixed(2)
|
loadProcess.value = event.percent.toFixed(2)
|
||||||
if (loadProcess.value >= 100) {
|
if (loadProcess.value >= 100) {
|
||||||
|
|
@ -248,7 +257,7 @@
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const changeFileFn =(ev:any)=>{
|
const changeFileFn = (ev: any) => {
|
||||||
props.scuccesCallback(ev)
|
props.scuccesCallback(ev)
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ export const getList = (params = {}) => {
|
||||||
|
|
||||||
//获取装备详情
|
//获取装备详情
|
||||||
export const getDetail = (id = '') => {
|
export const getDetail = (id = '') => {
|
||||||
return get(`/zlpt-equip/dev/${id}`)
|
return get(`/zlpt-equip/dev/getInfo/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
//获取 推荐装备列表
|
//获取 推荐装备列表
|
||||||
|
|
@ -25,9 +25,9 @@ export const apiSubmitLease = (params = {}) => {
|
||||||
}
|
}
|
||||||
//获取装备分类列表 (级联)
|
//获取装备分类列表 (级联)
|
||||||
export const apiGetEquipTypeList = (params = {}) => {
|
export const apiGetEquipTypeList = (params = {}) => {
|
||||||
return post('/zlpt-equip/type/list',params)
|
return post('/zlpt-equip/type/list', params)
|
||||||
}
|
}
|
||||||
//获取省市区列表 (级联)
|
//获取省市区列表 (级联)
|
||||||
export const apiGetAddressList = (params = {}) => {
|
export const apiGetAddressList = (params = {}) => {
|
||||||
return post('/zlpt-system/baseAddress/selectAddress',params)
|
return post('/zlpt-system/baseAddress/selectAddress', params)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
// 个人中心 基础信息模块
|
||||||
|
|
||||||
|
import { get, post } from '../../index'
|
||||||
|
|
||||||
|
// 获取验证码
|
||||||
|
export const getCodeInfoApi = (phone) => {
|
||||||
|
return post(`/zlpt-system/sms/send?phone=${phone}&type=2`, {})
|
||||||
|
}
|
||||||
|
// 立即注册按钮
|
||||||
|
export const registerNowApi = (data) => {
|
||||||
|
return post('/zlpt-auth/register', data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -37,7 +37,7 @@ service.interceptors.response.use(
|
||||||
} else if (data.code == '403') {
|
} else if (data.code == '403') {
|
||||||
ElMessage.error('请重新登录')
|
ElMessage.error('请重新登录')
|
||||||
router.push('/login')
|
router.push('/login')
|
||||||
} else if( data.code == '401' ){
|
} else if (data.code == '401') {
|
||||||
ElMessage.error(data.msg)
|
ElMessage.error(data.msg)
|
||||||
router.push('/login')
|
router.push('/login')
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,42 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import $bus from '@/utils/bus'
|
import $bus from '@/utils/bus'
|
||||||
|
import { useStore } from 'store/main'
|
||||||
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
|
const store = useStore()
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
|
||||||
|
// 是否显示退出登录
|
||||||
|
const isShowLogout = computed(() => {
|
||||||
|
return store.token
|
||||||
|
})
|
||||||
|
|
||||||
|
const placeholderText = ref('请输入关键字')
|
||||||
|
|
||||||
|
// 退出登录
|
||||||
|
const handlerLogout = () => {
|
||||||
|
ElMessageBox.confirm('是否确定退出登录', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
router.push('/login')
|
||||||
|
store.cleanUpToken('')
|
||||||
|
ElMessage({
|
||||||
|
type: 'success',
|
||||||
|
message: '已退出登录'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
ElMessage({
|
||||||
|
type: 'info',
|
||||||
|
message: '已取消'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 搜索查询绑定值
|
// 搜索查询绑定值
|
||||||
const keywordIptValue = ref('')
|
const keywordIptValue = ref('')
|
||||||
|
|
||||||
|
|
@ -10,15 +44,16 @@
|
||||||
const inputRef: any = ref(null)
|
const inputRef: any = ref(null)
|
||||||
|
|
||||||
// 输入框下方历史搜索记录
|
// 输入框下方历史搜索记录
|
||||||
const searchHistoryList = ref([
|
const searchHistoryList = computed(() => {
|
||||||
{ name: '220E履带挖掘机' },
|
return store.searchHistoryList.slice(0, 4)
|
||||||
{ name: '3443挖掘机' },
|
})
|
||||||
{ name: '塔式起重机' },
|
|
||||||
{ name: '轮式牵引铲运机' }
|
|
||||||
])
|
|
||||||
|
|
||||||
// 搜索按钮
|
// 搜索按钮
|
||||||
const searchKeywordBtn = () => {
|
const searchKeywordBtn = () => {
|
||||||
|
/* 去除空格 */
|
||||||
|
keywordIptValue.value = keywordIptValue.value.replace(/\s*/g, '')
|
||||||
|
|
||||||
|
store.addHistoryRecord(keywordIptValue.value)
|
||||||
if (route.path == '/equipList') {
|
if (route.path == '/equipList') {
|
||||||
$bus.emit('search', keywordIptValue.value)
|
$bus.emit('search', keywordIptValue.value)
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -32,7 +67,8 @@
|
||||||
// 点击下方搜索记录时
|
// 点击下方搜索记录时
|
||||||
const handleHistory = (hisValue: any) => {
|
const handleHistory = (hisValue: any) => {
|
||||||
keywordIptValue.value = hisValue
|
keywordIptValue.value = hisValue
|
||||||
inputRef.value.focus()
|
searchKeywordBtn()
|
||||||
|
// inputRef.value.focus()
|
||||||
}
|
}
|
||||||
//页面刷新回显模糊搜索词
|
//页面刷新回显模糊搜索词
|
||||||
$bus.on('callBackText', (val) => {
|
$bus.on('callBackText', (val) => {
|
||||||
|
|
@ -48,9 +84,14 @@
|
||||||
<div class="header-user-info">
|
<div class="header-user-info">
|
||||||
<div class="header-box wapper">
|
<div class="header-box wapper">
|
||||||
<div class="header-item">
|
<div class="header-item">
|
||||||
<a class="a-border-none" @click="$router.push('/login')">登录</a>
|
<span v-if="!isShowLogout">
|
||||||
<span style="margin: 0 3px">/</span>
|
<a class="a-border-none" @click="$router.push('/login')">登录</a>
|
||||||
<a>注册</a>
|
<span style="margin: 0 3px">/</span>
|
||||||
|
<a>注册</a>
|
||||||
|
</span>
|
||||||
|
<span v-else>
|
||||||
|
<a @click="handlerLogout">退出登录</a>
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="header-item">
|
<div class="header-item">
|
||||||
<a @click="$router.push({ name: 'myuser' })">个人中心</a>
|
<a @click="$router.push({ name: 'myuser' })">个人中心</a>
|
||||||
|
|
@ -85,19 +126,18 @@
|
||||||
@click="$router.push('/home')" />
|
@click="$router.push('/home')" />
|
||||||
|
|
||||||
<input
|
<input
|
||||||
placeholder="输入设备关键词"
|
:placeholder="placeholderText"
|
||||||
type="text"
|
type="text"
|
||||||
v-model="keywordIptValue"
|
v-model.trim="keywordIptValue"
|
||||||
@keydown.enter="searchKeywordBtn"
|
@keydown.enter="searchKeywordBtn"
|
||||||
ref="inputRef" />
|
ref="inputRef"
|
||||||
|
@focus="placeholderText = ''"
|
||||||
|
@blur="placeholderText = '请输入关键字'" />
|
||||||
<button class="search-btn" @click="searchKeywordBtn">搜索</button>
|
<button class="search-btn" @click="searchKeywordBtn">搜索</button>
|
||||||
|
|
||||||
<div class="ipt-down">
|
<div class="ipt-down">
|
||||||
<a
|
<a v-for="item in searchHistoryList" :key="item" @click="handleHistory(item)">
|
||||||
v-for="item in searchHistoryList"
|
{{ item }}
|
||||||
:key="item.name"
|
|
||||||
@click="handleHistory(item.name)">
|
|
||||||
{{ item.name }}
|
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -204,7 +244,7 @@
|
||||||
border-radius: 45px;
|
border-radius: 45px;
|
||||||
margin-left: 70px;
|
margin-left: 70px;
|
||||||
line-height: 45px;
|
line-height: 45px;
|
||||||
color: transparent;
|
color: #333;
|
||||||
text-shadow: 0 0 0 #333;
|
text-shadow: 0 0 0 #333;
|
||||||
padding-left: 30px;
|
padding-left: 30px;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ const routes: Array<RouteRecordRaw> = [
|
||||||
AuthFlag: false
|
AuthFlag: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
/* 登录页 */
|
||||||
{
|
{
|
||||||
path: '/login',
|
path: '/login',
|
||||||
name: 'login',
|
name: 'login',
|
||||||
|
|
@ -27,6 +28,17 @@ const routes: Array<RouteRecordRaw> = [
|
||||||
AuthFlag: false
|
AuthFlag: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
/* 注册页 */
|
||||||
|
{
|
||||||
|
path: '/register',
|
||||||
|
name: 'register',
|
||||||
|
component: () => import('views/register.vue'),
|
||||||
|
meta: {
|
||||||
|
title: '注册页',
|
||||||
|
keepAlive: true,
|
||||||
|
AuthFlag: false
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: '/test', // 主路由地址
|
path: '/test', // 主路由地址
|
||||||
name: 'testIndex',
|
name: 'testIndex',
|
||||||
|
|
@ -57,7 +69,7 @@ const routes: Array<RouteRecordRaw> = [
|
||||||
{
|
{
|
||||||
path: '/',
|
path: '/',
|
||||||
component: () => import('views/AppMain.vue'),
|
component: () => import('views/AppMain.vue'),
|
||||||
redirect: '/login',
|
redirect: '/home',
|
||||||
meta: {
|
meta: {
|
||||||
title: '首页',
|
title: '首页',
|
||||||
keepAlive: true,
|
keepAlive: true,
|
||||||
|
|
@ -264,12 +276,13 @@ const router = createRouter({
|
||||||
// 使页面跳转后滚动条恢复至顶部
|
// 使页面跳转后滚动条恢复至顶部
|
||||||
router.beforeEach((to, from, next) => {
|
router.beforeEach((to, from, next) => {
|
||||||
const store = useStore()
|
const store = useStore()
|
||||||
|
next()
|
||||||
|
|
||||||
if (store.token || to.path == '/login') {
|
// if (store.token || to.path == '/login' || to.path == '/' || to.path == '/home' || to.path == '/register' || to.path == '/equipList' || to.path == '/equipDetail') {
|
||||||
next()
|
|
||||||
} else {
|
// } else {
|
||||||
next('/login')
|
// next('/login')
|
||||||
}
|
// }
|
||||||
// chrome
|
// chrome
|
||||||
document.body.scrollTop = 0;
|
document.body.scrollTop = 0;
|
||||||
// firefox 兼容火狐
|
// firefox 兼容火狐
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,11 @@ export const useStore = defineStore('main', {
|
||||||
state: () => {
|
state: () => {
|
||||||
return {
|
return {
|
||||||
loadingFlag: false, //loading控制,
|
loadingFlag: false, //loading控制,
|
||||||
token: ""
|
token: "",
|
||||||
// eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VyX2tleSI6IjQ1MzIwY2M3LTE0MDYtNDAwNy1iMTdhLTM3OTQ3ZmUxMjc2ZiIsInVzZXJuYW1lIjoiYWRtaW4ifQ.XqWKkIRKVADdhGzNiOPNktmLJsv7bJCRZLDaSMJQALjhSyUBDTRGPE2KBWmb4qx3zV4fbsNGBHUODem1A7MEZA
|
// eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VyX2tleSI6IjQ1MzIwY2M3LTE0MDYtNDAwNy1iMTdhLTM3OTQ3ZmUxMjc2ZiIsInVzZXJuYW1lIjoiYWRtaW4ifQ.XqWKkIRKVADdhGzNiOPNktmLJsv7bJCRZLDaSMJQALjhSyUBDTRGPE2KBWmb4qx3zV4fbsNGBHUODem1A7MEZA
|
||||||
|
|
||||||
|
// 搜索历史
|
||||||
|
searchHistoryList: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getters: {},
|
getters: {},
|
||||||
|
|
@ -15,9 +18,19 @@ export const useStore = defineStore('main', {
|
||||||
this.loadingFlag = false
|
this.loadingFlag = false
|
||||||
},
|
},
|
||||||
setToken(val: any) {
|
setToken(val: any) {
|
||||||
console.log("setToken",val)
|
console.log("setToken", val)
|
||||||
this.token = val
|
this.token = val
|
||||||
|
},
|
||||||
|
// 退出登录 清除token
|
||||||
|
cleanUpToken(val: any) {
|
||||||
|
this.token = ''
|
||||||
|
},
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
addHistoryRecord(val: any) {
|
||||||
|
this.searchHistoryList.unshift(val)
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
persist: {
|
persist: {
|
||||||
enabled: true, // 开启数据缓存
|
enabled: true, // 开启数据缓存
|
||||||
|
|
@ -27,7 +40,7 @@ export const useStore = defineStore('main', {
|
||||||
key: 'main',
|
key: 'main',
|
||||||
storage: sessionStorage, //缓存模式 可选 localStorage sessionStorage
|
storage: sessionStorage, //缓存模式 可选 localStorage sessionStorage
|
||||||
// state 中的字段名,按组打包储存
|
// state 中的字段名,按组打包储存
|
||||||
paths: ['token'] //需要缓存的字段 与 state中相关联
|
paths: ['token', 'searchHistoryList'] //需要缓存的字段 与 state中相关联
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@
|
||||||
<el-select
|
<el-select
|
||||||
placeholder="请选择省份"
|
placeholder="请选择省份"
|
||||||
clearable
|
clearable
|
||||||
v-model="applyParams.registerAddress"
|
v-model="applyParams.registerS"
|
||||||
@change="changeProvince">
|
@change="changeProvince">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in selProvinceList"
|
v-for="item in selProvinceList"
|
||||||
|
|
@ -104,7 +104,7 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="applyParams.registerRealityAddress"
|
v-model="applyParams.registerAddress"
|
||||||
placeholder="请输入实际办公地址"
|
placeholder="请输入实际办公地址"
|
||||||
clearable></el-input>
|
clearable></el-input>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
@ -117,7 +117,7 @@
|
||||||
<el-select
|
<el-select
|
||||||
placeholder="请选择省份"
|
placeholder="请选择省份"
|
||||||
clearable
|
clearable
|
||||||
v-model="applyParams.operateAddress"
|
v-model="applyParams.registerSs"
|
||||||
@change="opeChangeProvince">
|
@change="opeChangeProvince">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in selProvinceList"
|
v-for="item in selProvinceList"
|
||||||
|
|
@ -154,7 +154,7 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="applyParams.operateRealityAddress"
|
v-model="applyParams.operateAddress"
|
||||||
clearable
|
clearable
|
||||||
placeholder="请输入实际办公地址"></el-input>
|
placeholder="请输入实际办公地址"></el-input>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
@ -187,13 +187,15 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item class="" label="营业执照">
|
<el-form-item class="" label="企业logo">
|
||||||
<uploadComponent
|
<uploadComponent
|
||||||
:maxLimit="3"
|
:maxLimit="3"
|
||||||
listType="picture-card"
|
listType="picture-card"
|
||||||
:acceptTypeList="['.jpg', '.jpeg', '.png']"
|
:acceptTypeList="['.jpg', '.jpeg', '.png']"
|
||||||
width="120px"
|
width="120px"
|
||||||
height="120px">
|
height="120px"
|
||||||
|
:autoUpload="true"
|
||||||
|
:successResultCallBack="successResultCallBackFn">
|
||||||
<template v-slot:default>
|
<template v-slot:default>
|
||||||
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -206,15 +208,16 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="24">
|
||||||
<el-col :span="10">
|
<el-col :span="8">
|
||||||
<el-form-item class="" label="身份证国徽面">
|
<el-form-item class="" label="身份证国徽面">
|
||||||
<uploadComponent
|
<uploadComponent
|
||||||
:maxLimit="3"
|
:maxLimit="3"
|
||||||
listType="picture-card"
|
listType="picture-card"
|
||||||
:acceptTypeList="['.jpg', '.jpeg', '.png']"
|
:acceptTypeList="['.jpg', '.jpeg', '.png']"
|
||||||
width="120px"
|
width="120px"
|
||||||
height="120px">
|
height="120px"
|
||||||
|
:successResultCallBack="successResultCallBackFnfrCardf">
|
||||||
<template v-slot:default>
|
<template v-slot:default>
|
||||||
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -226,14 +229,15 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="10">
|
<el-col :span="8">
|
||||||
<el-form-item class="" label="身份证肖像面">
|
<el-form-item class="" label="身份证肖像面">
|
||||||
<uploadComponent
|
<uploadComponent
|
||||||
:maxLimit="3"
|
:maxLimit="3"
|
||||||
listType="picture-card"
|
listType="picture-card"
|
||||||
:acceptTypeList="['.jpg', '.jpeg', '.png']"
|
:acceptTypeList="['.jpg', '.jpeg', '.png']"
|
||||||
width="120px"
|
width="120px"
|
||||||
height="120px">
|
height="120px"
|
||||||
|
:successResultCallBack="successResultCallBackFnfrCardz">
|
||||||
<template v-slot:default>
|
<template v-slot:default>
|
||||||
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -244,6 +248,26 @@
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</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"
|
||||||
|
:successResultCallBack="successResultCallBackFnfryz">
|
||||||
|
<template v-slot:default>
|
||||||
|
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
||||||
|
</template>
|
||||||
|
</uploadComponent>
|
||||||
|
<div class="previewExample">
|
||||||
|
<!-- <span>预览</span> -->
|
||||||
|
<span @click="previewBusinessLicense">查看示例</span>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
|
|
@ -327,7 +351,12 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
<el-form-item label="被授权人邮箱">
|
<el-form-item label="被授权人邮箱">
|
||||||
<el-input placeholder="请输入被授权人邮箱" clearable>></el-input>
|
<el-input
|
||||||
|
v-model.trim="applyParams.authEmail"
|
||||||
|
placeholder="请输入被授权人邮箱"
|
||||||
|
clearable>
|
||||||
|
>
|
||||||
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -339,7 +368,8 @@
|
||||||
listType="picture-card"
|
listType="picture-card"
|
||||||
:acceptTypeList="['.jpg', '.jpeg', '.png']"
|
:acceptTypeList="['.jpg', '.jpeg', '.png']"
|
||||||
width="120px"
|
width="120px"
|
||||||
height="120px">
|
height="120px"
|
||||||
|
:successResultCallBack="successResultCallBackFnCardbsz">
|
||||||
<template v-slot:default>
|
<template v-slot:default>
|
||||||
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -358,7 +388,8 @@
|
||||||
listType="picture-card"
|
listType="picture-card"
|
||||||
:acceptTypeList="['.jpg', '.jpeg', '.png']"
|
:acceptTypeList="['.jpg', '.jpeg', '.png']"
|
||||||
width="120px"
|
width="120px"
|
||||||
height="120px">
|
height="120px"
|
||||||
|
:successResultCallBack="successResultCallBackFnCardbsf">
|
||||||
<template v-slot:default>
|
<template v-slot:default>
|
||||||
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -379,7 +410,8 @@
|
||||||
listType="picture-card"
|
listType="picture-card"
|
||||||
:acceptTypeList="['.jpg', '.jpeg', '.png']"
|
:acceptTypeList="['.jpg', '.jpeg', '.png']"
|
||||||
width="120px"
|
width="120px"
|
||||||
height="120px">
|
height="120px"
|
||||||
|
:successResultCallBack="successResultCallBackFnsqs">
|
||||||
<template v-slot:default>
|
<template v-slot:default>
|
||||||
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -529,15 +561,24 @@
|
||||||
companyLtd: '', // 企业所属
|
companyLtd: '', // 企业所属
|
||||||
creditCode: '', // 统一信用代码
|
creditCode: '', // 统一信用代码
|
||||||
registerAddress: '', // 注册地址
|
registerAddress: '', // 注册地址
|
||||||
|
/* 注册地址ID */
|
||||||
|
registerId: '',
|
||||||
|
/* 经营地址ID */
|
||||||
|
operateId: '',
|
||||||
|
registerS: '',
|
||||||
registerAddressProvince: '', // 注册地址(市级)
|
registerAddressProvince: '', // 注册地址(市级)
|
||||||
registerAddressArea: '', // 注册地址(区级)
|
registerAddressArea: '', // 注册地址(区级)
|
||||||
registerRealityAddress: '', // 注册地址(实际地址)
|
registerRealityAddress: '', // 注册地址(实际地址)
|
||||||
operateAddress: '', // 经营地址
|
operateAddress: '', // 经营地址
|
||||||
|
|
||||||
|
registerSs: '',
|
||||||
operateAddressProvince: '', // 经营地址(市级)
|
operateAddressProvince: '', // 经营地址(市级)
|
||||||
operateAddressArea: '', // 经营地址(区级)
|
operateAddressArea: '', // 经营地址(区级)
|
||||||
operateRealityAddress: '', // 注册地址(实际地址)
|
operateRealityAddress: '', // 注册地址(实际地址)
|
||||||
certificatetype: '', // 法人证件类型
|
certificatetype: '', // 法人证件类型
|
||||||
idNumber: '', // 法人证件号码
|
idNumber: '', // 法人证件号码
|
||||||
|
/* 企业logo */
|
||||||
|
logoUrl: '',
|
||||||
businessLicense: '', // 营业执照
|
businessLicense: '', // 营业执照
|
||||||
legalFaceUrl: '', // 法人身份证国徽面
|
legalFaceUrl: '', // 法人身份证国徽面
|
||||||
legalNationUrl: '', // 法人身份证肖像
|
legalNationUrl: '', // 法人身份证肖像
|
||||||
|
|
@ -548,6 +589,9 @@
|
||||||
authPerson: '', // 被授权人姓名
|
authPerson: '', // 被授权人姓名
|
||||||
authIdNumber: '', // 被授权身份证号
|
authIdNumber: '', // 被授权身份证号
|
||||||
authPhone: '', // 被授权手机号
|
authPhone: '', // 被授权手机号
|
||||||
|
|
||||||
|
/* 被授权人邮箱 */
|
||||||
|
authEmail: '',
|
||||||
authDocument:
|
authDocument:
|
||||||
'https://zlpt-1259760603.cos.ap-nanjing.myqcloud.com/488bab245180ebf9f1f3d7db5301be4.png', // 法人授权书
|
'https://zlpt-1259760603.cos.ap-nanjing.myqcloud.com/488bab245180ebf9f1f3d7db5301be4.png', // 法人授权书
|
||||||
idNationUrl:
|
idNationUrl:
|
||||||
|
|
@ -565,14 +609,14 @@
|
||||||
// console.log(val, '省选择**')
|
// console.log(val, '省选择**')
|
||||||
store.getmarketList(val.split(',')[0])
|
store.getmarketList(val.split(',')[0])
|
||||||
|
|
||||||
AssemblyRegisterAddress[0] = val.split(',')[1]
|
AssemblyRegisterAddress[0] = val.split(',')[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
const opeChangeProvince = (val: any) => {
|
const opeChangeProvince = (val: any) => {
|
||||||
// console.log(val, '省选择**')
|
// console.log(val, '省选择**')
|
||||||
store.getmarketList(val.split(',')[0])
|
store.getmarketList(val.split(',')[0])
|
||||||
|
|
||||||
AssemblyOperateAddress[0] = val.split(',')[1]
|
AssemblyOperateAddress[0] = val.split(',')[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取市级数据源
|
// 获取市级数据源
|
||||||
|
|
@ -583,12 +627,12 @@
|
||||||
// 市级下拉框选中获取区级数据
|
// 市级下拉框选中获取区级数据
|
||||||
const changeMarket = (val: any) => {
|
const changeMarket = (val: any) => {
|
||||||
store.getareaList(val.split(',')[0])
|
store.getareaList(val.split(',')[0])
|
||||||
AssemblyRegisterAddress[1] = val.split(',')[1]
|
AssemblyRegisterAddress[1] = val.split(',')[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
const opeChangeMarket = (val: any) => {
|
const opeChangeMarket = (val: any) => {
|
||||||
store.getareaList(val.split(',')[0])
|
store.getareaList(val.split(',')[0])
|
||||||
AssemblyOperateAddress[1] = val.split(',')[1]
|
AssemblyOperateAddress[1] = val.split(',')[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取区级数据源
|
// 获取区级数据源
|
||||||
|
|
@ -598,10 +642,10 @@
|
||||||
|
|
||||||
// 区级下拉框选中时
|
// 区级下拉框选中时
|
||||||
const changeArea = (val: any) => {
|
const changeArea = (val: any) => {
|
||||||
AssemblyRegisterAddress[2] = val.split(',')[1]
|
AssemblyRegisterAddress[2] = val.split(',')[0]
|
||||||
}
|
}
|
||||||
const opeChangeArea = (val: any) => {
|
const opeChangeArea = (val: any) => {
|
||||||
AssemblyOperateAddress[2] = val.split(',')[1]
|
AssemblyOperateAddress[2] = val.split(',')[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取证件类型
|
// 获取证件类型
|
||||||
|
|
@ -627,8 +671,8 @@
|
||||||
AssemblyRegisterAddress[3] = applyParams.registerRealityAddress
|
AssemblyRegisterAddress[3] = applyParams.registerRealityAddress
|
||||||
AssemblyOperateAddress[3] = applyParams.operateRealityAddress
|
AssemblyOperateAddress[3] = applyParams.operateRealityAddress
|
||||||
|
|
||||||
applyParams.registerAddress = AssemblyRegisterAddress.join(',')
|
applyParams.registerId = AssemblyRegisterAddress.join(',')
|
||||||
applyParams.operateAddress = AssemblyOperateAddress.join(',')
|
applyParams.operateId = AssemblyOperateAddress.join(',')
|
||||||
|
|
||||||
const res: any = await applyAttestationApi({
|
const res: any = await applyAttestationApi({
|
||||||
bmCompanyInfo: applyParams,
|
bmCompanyInfo: applyParams,
|
||||||
|
|
@ -746,6 +790,35 @@
|
||||||
])
|
])
|
||||||
|
|
||||||
const test = () => {}
|
const test = () => {}
|
||||||
|
|
||||||
|
/* log地址 */
|
||||||
|
const successResultCallBackFn = (val: any) => {
|
||||||
|
applyParams.logoUrl = val.msg
|
||||||
|
}
|
||||||
|
/* 法人身份证正面图片地址 */
|
||||||
|
const successResultCallBackFnfrCardz = (val: any) => {
|
||||||
|
applyParams.legalNationUrl = val.msg
|
||||||
|
}
|
||||||
|
/* 法人身份证反面图片地址 */
|
||||||
|
const successResultCallBackFnfrCardf = (val: any) => {
|
||||||
|
applyParams.legalFaceUrl = val.msg
|
||||||
|
}
|
||||||
|
/* 法人营业执照图片地址 */
|
||||||
|
const successResultCallBackFnfryz = (val: any) => {
|
||||||
|
applyParams.businessLicense = val.msg
|
||||||
|
}
|
||||||
|
/* 被授权人身份证正面 */
|
||||||
|
const successResultCallBackFnCardbsz = (val: any) => {
|
||||||
|
applyParams.idFaceUrl = val.msg
|
||||||
|
}
|
||||||
|
/* 被授权人身份证反面 */
|
||||||
|
const successResultCallBackFnCardbsf = (val: any) => {
|
||||||
|
applyParams.idNationUrl = val.msg
|
||||||
|
}
|
||||||
|
/* 法人授权书 */
|
||||||
|
const successResultCallBackFnsqs = (val: any) => {
|
||||||
|
applyParams.authDocument = val.msg
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
const handlerLogin = async () => {
|
const handlerLogin = async () => {
|
||||||
const res: any = await loginApi(loginForm.value)
|
const res: any = await loginApi(loginForm.value)
|
||||||
console.log( '登录成功**',res)
|
console.log('登录成功**', res)
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
showClose: true,
|
showClose: true,
|
||||||
|
|
@ -53,8 +53,8 @@
|
||||||
<el-button type="primary" @click="handlerLogin">登 录</el-button>
|
<el-button type="primary" @click="handlerLogin">登 录</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item class="forget-password">
|
<el-form-item class="forget-password">
|
||||||
<a href="">忘记密码</a>
|
<a href=""></a>
|
||||||
<a href="">立即注册</a>
|
<a style="cursor: pointer" @click="$router.push('/register')">立即注册</a>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,304 @@
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { getCodeInfoApi, registerNowApi } from 'http/api/register/index'
|
||||||
|
import { ElMessage } from 'element-plus'
|
||||||
|
const router = useRouter()
|
||||||
|
// const userStore = useStore()
|
||||||
|
|
||||||
|
/* 注册参数 */
|
||||||
|
const registerForm = ref({
|
||||||
|
/* 用户手机号 */
|
||||||
|
phonenumber: '',
|
||||||
|
/* 登录账号 */
|
||||||
|
username: '',
|
||||||
|
/* 登录密码 */
|
||||||
|
password: '',
|
||||||
|
/* 验证码 */
|
||||||
|
code: '',
|
||||||
|
/* 确认密码 */
|
||||||
|
checkPass: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
/* 获取验证码 */
|
||||||
|
const getCodeInfo = () => {
|
||||||
|
registerFormRef.value.validateField('phonenumber', async (valid: any) => {
|
||||||
|
if (valid) {
|
||||||
|
const res: any = await getCodeInfoApi(registerForm.value.phonenumber)
|
||||||
|
if (res.code === 200) {
|
||||||
|
ElMessage({
|
||||||
|
showClose: true,
|
||||||
|
message: res.msg,
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
reduceSeconds()
|
||||||
|
} else {
|
||||||
|
ElMessage({
|
||||||
|
showClose: true,
|
||||||
|
message: res.msg,
|
||||||
|
type: 'info'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 立即注册按钮 */
|
||||||
|
const handlerRegisterNow = () => {
|
||||||
|
registerFormRef.value.validate(async (valid: any) => {
|
||||||
|
if (valid) {
|
||||||
|
const res: any = await registerNowApi(registerForm.value)
|
||||||
|
if (res.code === 200) {
|
||||||
|
ElMessage({
|
||||||
|
showClose: true,
|
||||||
|
message: '注册成功',
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
router.push('/login')
|
||||||
|
} else {
|
||||||
|
ElMessage({
|
||||||
|
showClose: true,
|
||||||
|
message: res.msg,
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 手机号码校验规则 */
|
||||||
|
const validatePhone = (rule: any, value: any, callback: any) => {
|
||||||
|
// let phone = value.replace(/\s/g, '')
|
||||||
|
let regexpPhone = /^((13[0-9])|(17[0-1,6-8])|(15[^4,\\D])|(18[0-9]))\d{8}$/
|
||||||
|
if (value === '') {
|
||||||
|
callback(new Error('手机号码不能为空'))
|
||||||
|
} else if (!regexpPhone.test(value)) {
|
||||||
|
callback(new Error('手机号码输入不合法'))
|
||||||
|
} else {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* 确认密码校验 */
|
||||||
|
const validatePass2 = (rule: any, value: any, callback: any) => {
|
||||||
|
if (value === '') {
|
||||||
|
callback(new Error('请确认密码'))
|
||||||
|
} else if (value !== registerForm.value.password) {
|
||||||
|
callback(new Error('两次密码不一致,请确定'))
|
||||||
|
} else {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* 校验规则 */
|
||||||
|
const registerRules = ref({
|
||||||
|
phonenumber: [{ required: true, validator: validatePhone, trigger: 'blur' }],
|
||||||
|
username: [{ required: true, message: '请输入登录账号', trigger: 'blur' }],
|
||||||
|
password: [{ required: true, message: '请输入密码', trigger: 'blur' }],
|
||||||
|
code: [{ required: true, message: '请输入验证码', trigger: 'blur' }],
|
||||||
|
checkPass: [{ required: true, validator: validatePass2, trigger: 'blur' }]
|
||||||
|
})
|
||||||
|
|
||||||
|
const registerFormRef: any = ref(null)
|
||||||
|
|
||||||
|
/* 获取验证码按钮禁用 */
|
||||||
|
const getCodeBtnDisabled = ref(false)
|
||||||
|
|
||||||
|
/* 定义倒计时的定时器 */
|
||||||
|
const secondsTimer: any = ref(null)
|
||||||
|
|
||||||
|
/* 剩余秒数 */
|
||||||
|
const residuSeconds: any = ref(60)
|
||||||
|
|
||||||
|
/* 开启一个定时器 */
|
||||||
|
const reduceSeconds = () => {
|
||||||
|
getCodeBtnDisabled.value = true
|
||||||
|
secondsTimer.value = setInterval(() => {
|
||||||
|
if (residuSeconds.value === 0) {
|
||||||
|
clearInterval(secondsTimer.value)
|
||||||
|
secondsTimer.value = null
|
||||||
|
residuSeconds.value = 60
|
||||||
|
getCodeBtnDisabled.value = false
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
residuSeconds.value--
|
||||||
|
}
|
||||||
|
}, 1000)
|
||||||
|
}
|
||||||
|
|
||||||
|
onBeforeUnmount(() => {
|
||||||
|
if (secondsTimer.value) {
|
||||||
|
secondsTimer.value = null
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<!-- 注册页面 -->
|
||||||
|
<div class="register-container">
|
||||||
|
<div class="register-form">
|
||||||
|
<h3>机具租赁共享平台</h3>
|
||||||
|
|
||||||
|
<div class="register-container-box">
|
||||||
|
<div class="register-type">用户注册</div>
|
||||||
|
|
||||||
|
<el-form
|
||||||
|
label-position="top"
|
||||||
|
:model="registerForm"
|
||||||
|
:rules="registerRules"
|
||||||
|
ref="registerFormRef">
|
||||||
|
<el-form-item label="用户手机号" prop="phonenumber">
|
||||||
|
<el-input
|
||||||
|
v-model.trim="registerForm.phonenumber"
|
||||||
|
placeholder="输入手机号"
|
||||||
|
clearable />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="登录帐号" prop="username">
|
||||||
|
<el-input
|
||||||
|
v-model.trim="registerForm.username"
|
||||||
|
placeholder="登录帐号"
|
||||||
|
clearable
|
||||||
|
type="text" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="登录密码" prop="password">
|
||||||
|
<el-input
|
||||||
|
v-model.trim="registerForm.password"
|
||||||
|
placeholder="登录密码"
|
||||||
|
clearable
|
||||||
|
type="password"
|
||||||
|
show-password />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="确认密码" prop="checkPass">
|
||||||
|
<el-input
|
||||||
|
v-model.trim="registerForm.checkPass"
|
||||||
|
placeholder="确认密码"
|
||||||
|
clearable
|
||||||
|
type="password"
|
||||||
|
show-password />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="验证码" class="get-code" prop="code">
|
||||||
|
<el-row justify="space-between">
|
||||||
|
<el-col :span="8">
|
||||||
|
<div>
|
||||||
|
<el-input
|
||||||
|
v-model.trime="registerForm.code"
|
||||||
|
placeholder="验证码"
|
||||||
|
clearable
|
||||||
|
type="text" />
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<div
|
||||||
|
style="text-align: right; width: 100%"
|
||||||
|
:style="{ color: getCodeBtnDisabled ? '#747272' : '' }">
|
||||||
|
<span v-if="getCodeBtnDisabled">
|
||||||
|
{{ residuSeconds }} 秒后重新发送
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<div style="text-align: right">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="getCodeInfo"
|
||||||
|
:disabled="getCodeBtnDisabled">
|
||||||
|
获取验证码
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="handlerRegisterNow" style="width: 100%">
|
||||||
|
立 即 注 册
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item class="forget-password">
|
||||||
|
<span>已有账号?</span>
|
||||||
|
<a @click="$router.push('/login')">去登录 ></a>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.register-container {
|
||||||
|
height: 100vh;
|
||||||
|
background-color: #125ab6;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
.register-form {
|
||||||
|
width: 500px;
|
||||||
|
// height: 360px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
color: #fff;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.register-container-box {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background-color: #c7dff4;
|
||||||
|
border-radius: 5px;
|
||||||
|
.register-type {
|
||||||
|
height: 40px;
|
||||||
|
line-height: 40px;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
// display: flex;
|
||||||
|
color: #333;
|
||||||
|
div {
|
||||||
|
flex: 1;
|
||||||
|
height: 40px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 40px;
|
||||||
|
&:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.active {
|
||||||
|
color: #3498db;
|
||||||
|
border-bottom: 1px solid #3498db;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.el-form {
|
||||||
|
padding: 0 50px;
|
||||||
|
|
||||||
|
.el-input {
|
||||||
|
height: 37px;
|
||||||
|
}
|
||||||
|
.el-button {
|
||||||
|
// width: 100%;
|
||||||
|
height: 37px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.forget-password {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.forget-password .el-form-item__content {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #3498db;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// .get-code {
|
||||||
|
// display: flex;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -99,22 +99,22 @@
|
||||||
{
|
{
|
||||||
v_name: '已提交',
|
v_name: '已提交',
|
||||||
imgSrc: '../../../assets/img/home/2023_12_01_beijing2/fankuixinxi.png',
|
imgSrc: '../../../assets/img/home/2023_12_01_beijing2/fankuixinxi.png',
|
||||||
orderConunt: 1
|
orderConunt: 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
v_name: '进行中',
|
v_name: '进行中',
|
||||||
imgSrc: '../../../assets/img/home/2023_12_01_beijing2/dingdanxinxi.png',
|
imgSrc: '../../../assets/img/home/2023_12_01_beijing2/dingdanxinxi.png',
|
||||||
orderConunt: 1
|
orderConunt: 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
v_name: '已完成',
|
v_name: '已完成',
|
||||||
imgSrc: '../../../assets/img/home/2023_12_01_beijing2/lishijishi.png',
|
imgSrc: '../../../assets/img/home/2023_12_01_beijing2/lishijishi.png',
|
||||||
orderConunt: 1
|
orderConunt: 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
v_name: '全部订单',
|
v_name: '全部订单',
|
||||||
imgSrc: '../../../assets/img/home/2023_12_01_beijing2/fuwuxiangmu.png',
|
imgSrc: '../../../assets/img/home/2023_12_01_beijing2/fuwuxiangmu.png',
|
||||||
orderConunt: 1
|
orderConunt: 0
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
@ -123,22 +123,22 @@
|
||||||
{
|
{
|
||||||
v_name: '已上架',
|
v_name: '已上架',
|
||||||
imgSrc: '../../../assets/img/home/2023_12_01_beijing2/fankuixinxi.png',
|
imgSrc: '../../../assets/img/home/2023_12_01_beijing2/fankuixinxi.png',
|
||||||
orderConunt: 1
|
orderConunt: 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
v_name: '已下架',
|
v_name: '已下架',
|
||||||
imgSrc: '../../../assets/img/home/2023_12_01_beijing2/dingdanxinxi.png',
|
imgSrc: '../../../assets/img/home/2023_12_01_beijing2/dingdanxinxi.png',
|
||||||
orderConunt: 1
|
orderConunt: 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
v_name: '已提交',
|
v_name: '已提交',
|
||||||
imgSrc: '../../../assets/img/home/2023_12_01_beijing2/lishijishi.png',
|
imgSrc: '../../../assets/img/home/2023_12_01_beijing2/lishijishi.png',
|
||||||
orderConunt: 1
|
orderConunt: 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
v_name: '全部装备',
|
v_name: '全部装备',
|
||||||
imgSrc: '../../../assets/img/home/2023_12_01_beijing2/fuwuxiangmu.png',
|
imgSrc: '../../../assets/img/home/2023_12_01_beijing2/fuwuxiangmu.png',
|
||||||
orderConunt: 1
|
orderConunt: 0
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
// 认证弹框关闭
|
// 认证弹框关闭
|
||||||
|
|
|
||||||
|
|
@ -62,17 +62,17 @@
|
||||||
// console.log(val, '省选择**')
|
// console.log(val, '省选择**')
|
||||||
store.getmarketList(val.split(',')[0])
|
store.getmarketList(val.split(',')[0])
|
||||||
|
|
||||||
AssemblyRegisterAddress[0] = val.split(',')[1]
|
// AssemblyRegisterAddress[0] = val.split(',')[1]
|
||||||
}
|
}
|
||||||
|
|
||||||
// 市级下拉框选中获取区级数据
|
// 市级下拉框选中获取区级数据
|
||||||
const changeMarket = (val: any) => {
|
const changeMarket = (val: any) => {
|
||||||
store.getareaList(val.split(',')[0])
|
store.getareaList(val.split(',')[0])
|
||||||
AssemblyRegisterAddress[1] = val.split(',')[1]
|
// AssemblyRegisterAddress[1] = val.split(',')[1]
|
||||||
}
|
}
|
||||||
// 区级下拉框获取区级数据
|
// 区级下拉框获取区级数据
|
||||||
const opeChangeArea = (val: any) => {
|
const opeChangeArea = (val: any) => {
|
||||||
AssemblyRegisterAddress[2] = val.split(',')[1]
|
// AssemblyRegisterAddress[2] = val.split(',')[1]
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设备类型大类
|
// 设备类型大类
|
||||||
|
|
@ -98,6 +98,13 @@
|
||||||
leaseScope: '',
|
leaseScope: '',
|
||||||
/* 设备所在地 */
|
/* 设备所在地 */
|
||||||
location: '',
|
location: '',
|
||||||
|
|
||||||
|
/* 省 */
|
||||||
|
provinceId: '',
|
||||||
|
/* 市 */
|
||||||
|
cityId: '',
|
||||||
|
/* 区 */
|
||||||
|
areaId: '',
|
||||||
/* 设备所在地 省 */
|
/* 设备所在地 省 */
|
||||||
addressEconomize: '',
|
addressEconomize: '',
|
||||||
/* 设备所在地 市 */
|
/* 设备所在地 市 */
|
||||||
|
|
@ -134,7 +141,7 @@
|
||||||
jsDayPrice: '',
|
jsDayPrice: '',
|
||||||
/* 详细说明 */
|
/* 详细说明 */
|
||||||
description: '',
|
description: '',
|
||||||
/* 设备图片 */
|
/* 设备主图片 */
|
||||||
picUrl: '',
|
picUrl: '',
|
||||||
/* 检测信息 ,保险信息*/
|
/* 检测信息 ,保险信息*/
|
||||||
fileList: [
|
fileList: [
|
||||||
|
|
@ -248,21 +255,22 @@
|
||||||
/* 检测信息 */
|
/* 检测信息 */
|
||||||
{
|
{
|
||||||
id: '28',
|
id: '28',
|
||||||
url: 'https://zlpt-1259760603.cos.ap-nanjing.myqcloud.com/488bab245180ebf9f1f3d7db5301be4.png'
|
url: ''
|
||||||
},
|
},
|
||||||
/* 保险信息 */
|
/* 保险信息 */
|
||||||
{
|
{
|
||||||
id: '29',
|
id: '29',
|
||||||
utr: 'https://zlpt-1259760603.cos.ap-nanjing.myqcloud.com/488bab245180ebf9f1f3d7db5301be4.png'
|
utr: ''
|
||||||
},
|
},
|
||||||
/* 设备图片 */
|
/* 设备图片 */
|
||||||
{
|
{
|
||||||
id: '20',
|
id: '20',
|
||||||
utr: 'https://zlpt-1259760603.cos.ap-nanjing.myqcloud.com/DemoData/10/655f1724956e0b38bf6adb6087123f7e_b.jpg'
|
utr: ''
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
/* 设备状态 */
|
/* 设备状态 */
|
||||||
maStatus: 15
|
maStatus: 15
|
||||||
|
/* 设备型号 */
|
||||||
}
|
}
|
||||||
// 打开入驻弹框
|
// 打开入驻弹框
|
||||||
dialogFormVisibleSettlein.value = true
|
dialogFormVisibleSettlein.value = true
|
||||||
|
|
@ -330,6 +338,28 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
/* 检测信息图片地址 */
|
||||||
|
const successResultCallBackFnjc = (val: any) => {
|
||||||
|
equipmentDeploymentParams.fileList.push({
|
||||||
|
id: '28',
|
||||||
|
url: val.msg
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/* 保险信息图片地址 */
|
||||||
|
const successResultCallBackFnbs = (val: any) => {
|
||||||
|
equipmentDeploymentParams.fileList.push({
|
||||||
|
id: '29',
|
||||||
|
url: val.msg
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/* 设备图片信息地址 */
|
||||||
|
const successResultCallBackFnDevicePic = (val: any) => {
|
||||||
|
equipmentDeploymentParams.fileList.push({
|
||||||
|
id: '20',
|
||||||
|
url: val.msg
|
||||||
|
})
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|
@ -369,15 +399,18 @@
|
||||||
:model="equipmentDeploymentParams"
|
:model="equipmentDeploymentParams"
|
||||||
:rules="rules">
|
:rules="rules">
|
||||||
<el-form-item label="租赁范围" prop="easeScope">
|
<el-form-item label="租赁范围" prop="easeScope">
|
||||||
<el-input
|
<el-select
|
||||||
autocomplete="off"
|
|
||||||
style="width: 360px"
|
|
||||||
v-model="equipmentDeploymentParams.leaseScope"
|
v-model="equipmentDeploymentParams.leaseScope"
|
||||||
clearable />
|
placeholder="选择租赁范围"
|
||||||
|
style="width: 220px; margin: 0 5px"
|
||||||
|
clearable>
|
||||||
|
<el-option label="全平台" value="329"></el-option>
|
||||||
|
<el-option label="专区" value="3330"></el-option>
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="设备所在地">
|
<el-form-item label="设备所在地">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="equipmentDeploymentParams.addressEconomize"
|
v-model="equipmentDeploymentParams.provinceId"
|
||||||
placeholder="选择省"
|
placeholder="选择省"
|
||||||
style="width: 220px; margin: 0 5px"
|
style="width: 220px; margin: 0 5px"
|
||||||
@change="changeProvince"
|
@change="changeProvince"
|
||||||
|
|
@ -386,10 +419,10 @@
|
||||||
v-for="item in selProvinceList"
|
v-for="item in selProvinceList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.name"
|
:label="item.name"
|
||||||
:value="item.code + ',' + item.name"></el-option>
|
:value="item.code"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select
|
<el-select
|
||||||
v-model="equipmentDeploymentParams.addressProvince"
|
v-model="equipmentDeploymentParams.cityId"
|
||||||
placeholder="选择市"
|
placeholder="选择市"
|
||||||
style="width: 220px; margin: 0 5px"
|
style="width: 220px; margin: 0 5px"
|
||||||
@change="changeMarket"
|
@change="changeMarket"
|
||||||
|
|
@ -398,10 +431,10 @@
|
||||||
v-for="item in selMarketList"
|
v-for="item in selMarketList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.name"
|
:label="item.name"
|
||||||
:value="item.code + ',' + item.name"></el-option>
|
:value="item.code"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select
|
<el-select
|
||||||
v-model="equipmentDeploymentParams.location"
|
v-model="equipmentDeploymentParams.areaId"
|
||||||
placeholder="选择区"
|
placeholder="选择区"
|
||||||
style="width: 220px; margin: 0 5px"
|
style="width: 220px; margin: 0 5px"
|
||||||
clearable
|
clearable
|
||||||
|
|
@ -506,10 +539,12 @@
|
||||||
<el-form-item label="检测信息">
|
<el-form-item label="检测信息">
|
||||||
<uploadComponent
|
<uploadComponent
|
||||||
:maxLimit="3"
|
:maxLimit="3"
|
||||||
listType="picture-card"
|
listType="text"
|
||||||
:acceptTypeList="['.jpg', '.jpeg', '.png']"
|
:acceptTypeList="['.pdf']"
|
||||||
width="120px"
|
width="120px"
|
||||||
height="120px">
|
height="120px"
|
||||||
|
:autoUpload="true"
|
||||||
|
:successResultCallBack="successResultCallBackFnjc">
|
||||||
<template v-slot:default>
|
<template v-slot:default>
|
||||||
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -518,10 +553,12 @@
|
||||||
<el-form-item label="保险信息">
|
<el-form-item label="保险信息">
|
||||||
<uploadComponent
|
<uploadComponent
|
||||||
:maxLimit="3"
|
:maxLimit="3"
|
||||||
listType="picture-card"
|
listType="text"
|
||||||
:acceptTypeList="['.jpg', '.jpeg', '.png']"
|
:acceptTypeList="['.pdf']"
|
||||||
width="120px"
|
width="120px"
|
||||||
height="120px">
|
height="120px"
|
||||||
|
:autoUpload="true"
|
||||||
|
:successResultCallBack="successResultCallBackFnbs">
|
||||||
<template v-slot:default>
|
<template v-slot:default>
|
||||||
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -567,11 +604,12 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="设备图片">
|
<el-form-item label="设备图片">
|
||||||
<uploadComponent
|
<uploadComponent
|
||||||
:maxLimit="3"
|
:maxLimit="8"
|
||||||
listType="picture-card"
|
listType="picture-card"
|
||||||
:acceptTypeList="['.jpg', '.jpeg', '.png']"
|
:acceptTypeList="['.jpg', '.jpeg', '.png']"
|
||||||
width="120px"
|
width="120px"
|
||||||
height="120px">
|
height="120px"
|
||||||
|
:successResultCallBack="successResultCallBackFnDevicePic">
|
||||||
<template v-slot:default>
|
<template v-slot:default>
|
||||||
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
<el-icon size="48" color="#aaa"><Plus /></el-icon>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue