手机端页面跳转

This commit is contained in:
shenyanpei
2021-12-17 17:29:15 +08:00
parent 5190eca53c
commit cdda1c385d
10 changed files with 391 additions and 224 deletions
+1 -1
View File
@@ -238,7 +238,7 @@ export default {
}, },
// 监听路由 控制isBoolean // 监听路由 控制isBoolean
$route() { $route() {
if (this.$route.name !== 'Login' && this.$route.name !== 'Home' && !this.$route.meta.isBoolean && this.$route.name !== 'beeEChungLogin' && this.$route.name !== 'beeEnergyLogin' && this.$route.name !== 'mdLawLogin' && this.$route.name !== 'nuoBLogin' && this.$route.name !== 'sTLogin' && this.$route.name !== 'StandardSearch') { if (this.$route.name !== 'Login' && this.$route.name !== 'Home' && !this.$route.meta.isBoolean && this.$route.name !== 'beeEChungLogin' && this.$route.name !== 'beeEnergyLogin' && this.$route.name !== 'mdLawLogin' && this.$route.name !== 'nuoBLogin' && this.$route.name !== 'sTLogin' && this.$route.name !== 'StandardSearch' && this.$route.name !== 'phoneIndex') {
this.isBoolean = true this.isBoolean = true
} else { } else {
this.isBoolean = false this.isBoolean = false
+8
View File
@@ -713,3 +713,11 @@ export function workGroup(data) {
params: data params: data
}) })
} }
//
export function loginMobile(data) {
return axios({
url: 'api/lawss/activiti/loginMobile',
method: 'post',
params: data
})
}
+44 -4
View File
@@ -10,6 +10,7 @@ import 'element-ui/lib/theme-chalk/index.css'
import $ from 'jquery' import $ from 'jquery'
// vuex // vuex
import store from './store' import store from './store'
import Axios from 'axios'
// 复制 // 复制
import VueClipboard from 'vue-clipboard2' import VueClipboard from 'vue-clipboard2'
// 全局样式文件 // 全局样式文件
@@ -51,12 +52,13 @@ import router from './router'
// 路由解析器 // 路由解析器
import Re from 'path-to-regexp' import Re from 'path-to-regexp'
import { get_verify_by_instance,loginIdm,getMenu } from 'api/process' import { get_verify_by_instance,loginIdm,getMenu,loginMobile } from 'api/process'
import { ssoLoginUrlDev,ssoLoginUrl,webLoginType,devWebUrl } from '@/sysConfig' import { ssoLoginUrlDev,ssoLoginUrl,webLoginType,devWebUrl } from '@/sysConfig'
import { mapMutations, mapActions } from 'vuex' import { mapMutations, mapActions } from 'vuex'
import isMobile from "./store/isMobile";
// 路由拦截 // 路由拦截
router.beforeEach(function (to, from, next) { router.beforeEach(function (to, from, next) {
let toName = to.name let toName = to.name
@@ -71,6 +73,16 @@ router.beforeEach(function (to, from, next) {
let routerType = to.query.routerType; let routerType = to.query.routerType;
let param = "taskIds=" + taskId + "&prcId=" + prcId let param = "taskIds=" + taskId + "&prcId=" + prcId
+ "&prcNum=" + prcNum + "&prcName=" + prcName + "&prcType=" + prcType; + "&prcNum=" + prcNum + "&prcName=" + prcName + "&prcType=" + prcType;
let param4 = {
path: path,
token: token,
taskId: taskId,
prcId: prcId,
prcNum: prcNum,
prcName: prcName,
prcType: prcType,
toName: toName
}
let url = window.location.search let url = window.location.search
let code = ""; let code = "";
if(url){ if(url){
@@ -86,7 +98,7 @@ router.beforeEach(function (to, from, next) {
code = url[0].code code = url[0].code
} }
function extractedLocalStorage(url,param) { function extractedLocalStorage(url,param,param4) {
localStorage.removeItem("routerUrl") localStorage.removeItem("routerUrl")
localStorage.setItem('routerUrl', url) localStorage.setItem('routerUrl', url)
localStorage.removeItem("routerParam") localStorage.removeItem("routerParam")
@@ -111,12 +123,16 @@ router.beforeEach(function (to, from, next) {
} }
} }
}else if(webLoginType != null && webLoginType === 'dev'){ }else if(webLoginType != null && webLoginType === 'dev'){
if (isMobile()) {
extractedVerify(token)
} else {
next('/Login') next('/Login')
} }
}
}else { }else {
extractedVerify(token) extractedVerify(token)
} }
function extractedVerify() { function extractedVerify() {
if (taskId !== undefined && taskId !== null && prcId !== undefined && prcId !== null) { if (taskId !== undefined && taskId !== null && prcId !== undefined && prcId !== null) {
get_verify_by_instance({ get_verify_by_instance({
@@ -199,9 +215,24 @@ router.beforeEach(function (to, from, next) {
} }
} }
} else { } else {
// oa 待测 sso /** 判断是不是在手机端操作 */
if (isMobile()) {
if (token === null || token === '') {
sessionStorage.setItem('param',JSON.stringify(param4))
next('/phoneIndex')
} else {
let paramPhone = 'taskIds=' + taskId + '&prcId=' + prcId + '&prcNum=' + prcNum +
'&taskAssignee=' + toName + '&prcName=' + prcName + '&prcType=' + prcType
if (toName.slice(0,5) !== 'phone') {
let phoneRouter = 'phone' + toName.charAt(0).toUpperCase() + toName.slice(1)
next({path: phoneRouter + '?' + paramPhone})
}
}
} else {
extracted3() extracted3()
} }
// extracted3()
}
} }
function extracted(routerPath) { function extracted(routerPath) {
if (token === null || token === '') { if (token === null || token === '') {
@@ -231,6 +262,15 @@ router.beforeEach(function (to, from, next) {
next({path: routerPath + '?' + param2}) next({path: routerPath + '?' + param2})
} }
} }
function extracted4(routerPath,param4) {
if (token === null || token === '') {
extractedLocalStorage(routerPath,param4);
// ssoLoginUrlDev 默认sso 地址
window.location.href = ssoLoginUrlDev
} else {
next({path: routerPath + '?' + param4})
}
}
}) })
} }
if(path === '/loginVerify'){ if(path === '/loginVerify'){
@@ -0,0 +1,90 @@
<template>
<div class="phoneIndex phoneBox">
<loading :loading="loading"></loading>
</div>
</template>
<script>
import { mapMutations, mapActions } from 'vuex'
import {Base64} from "js-base64";
import {get_verify_by_instance, loginMobile} from "../../../../api/process";
import router from "../../../../router";
export default {
name: "phoneIndex",
data() {
return {
phoneInfo: {},
loading: true
}
},
methods: {
loginMobile(pid,taskIds) {
loginMobile({
taskIds: taskIds,
pId: pid
}).then(res => {
this.loginNew(res)
});
},
loginNew (res) {
let Base64 = require('js-base64').Base64
let userInfoStr = Base64.decode(res.data)
let userInfo2 = decodeURIComponent(userInfoStr)
let userInfoObj = JSON.parse(userInfo2)
userInfoObj.userId = userInfoObj.usid
window.sessionStorage.setItem('userInfoObj', userInfoObj);
this.setToken(userInfoObj.token) // vuex存储token
console.log(this.setToken)
let userInfo = {}
for (let key in userInfoObj) {
if (key !== 'uname') {
userInfo[key] = userInfoObj[key]
} else {
userInfo.uName = userInfoObj[key]
}
}
this.setUserInfo(JSON.stringify((userInfo)))
// this.resetTime()
// 获取用户菜单
window.sessionStorage.setItem('userInfo', userInfo); // del
this.routerPage()
},
routerPage() {
if (this.$store.state.token) {
let routerName = 'phone'+ this.phoneInfo.toName.charAt(0).toUpperCase() + this.phoneInfo.toName.slice(1)
this.loading = false
this.$router.push({
name: routerName,
query: {
taskIds: this.phoneInfo.taskId,
prcId: this.phoneInfo.prcId,
prcNum: this.phoneInfo.prcNum,
taskAssignee: this.phoneInfo.toName,
prcName: this.phoneInfo.prcName,
prcType: this.phoneInfo.prcType
}
})
} else {
this.loading = true
}
},
...mapMutations(['setToken', 'setUserInfo', 'resetTime', 'rememberPwd', 'setJESSCookie']),
},
watch: {
},
mounted() {
this.phoneInfo = JSON.parse(sessionStorage.getItem("param"))
let pId = this.phoneInfo.prcId
let taskIds = this.phoneInfo.taskId
this.loginMobile(pId,taskIds)
}
}
</script>
<style lang="less" scoped>
@import '~@/assets/styles/phone';
.phoneIndex {
}
</style>
@@ -179,8 +179,10 @@ import ProcessHeaderPhone from '../../components/ProcessHeaderPhone'
import ProcessFooter from '../../components/ProcessFooter' import ProcessFooter from '../../components/ProcessFooter'
import ProcessTitle from '../../components/ProcessTitle' import ProcessTitle from '../../components/ProcessTitle'
import {changeAssigneeNew, completeTask, inboundLiaisonDetail, saveTaskForPub} from "@/api/process.js"; import {changeAssigneeNew, completeTask, inboundLiaisonDetail, saveTaskForPub} from "@/api/process.js";
import {Base64} from "js-base64";
import {mapMutations} from "vuex";
export default { export default {
name: "phoneWfhxStep3", name: "phoneWfhxzgStep3",
data() { data() {
return { return {
passInfo: 0, passInfo: 0,
@@ -241,6 +243,7 @@ export default {
} }
}, },
methods: { methods: {
...mapMutations(['setToken', 'setUserInfo', 'resetTime', 'rememberPwd', 'setJESSCookie']),
processTable() { processTable() {
this.$http.get("lawss/activiti/get_list_by_instance", { this.$http.get("lawss/activiti/get_list_by_instance", {
prcNum: this.$route.query.prcNum, prcNum: this.$route.query.prcNum,
@@ -177,7 +177,7 @@ import ProcessTitle from '../../components/ProcessTitle'
import {inboundLiaisonDetail, changeAssigneeNew} from "@/api/process"; import {inboundLiaisonDetail, changeAssigneeNew} from "@/api/process";
export default { export default {
name: "phoneWfhxStep5", name: "phoneWfhxzgStep5",
data() { data() {
return { return {
drawerTitle: '', drawerTitle: '',
@@ -452,7 +452,7 @@
<el-form-item label="标准实施日期" prop="ssrq"> <el-form-item label="标准实施日期" prop="ssrq">
<el-date-picker <el-date-picker
v-model.trim="editRowData.ssrq" v-model.trim="editRowData.ssrq"
type="date" type="dates"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="选择日期"> placeholder="选择日期">
</el-date-picker> </el-date-picker>
@@ -460,7 +460,7 @@
<el-form-item label="在产车实施日期" prop="zccssrqgj"> <el-form-item label="在产车实施日期" prop="zccssrqgj">
<el-date-picker <el-date-picker
v-model.trim="editRowData.zccssrqgj" v-model.trim="editRowData.zccssrqgj"
type="date" type="dates"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="选择日期"> placeholder="选择日期">
</el-date-picker> </el-date-picker>
@@ -468,7 +468,7 @@
<el-form-item label="新车型实施日期" prop="xcxssrqgj"> <el-form-item label="新车型实施日期" prop="xcxssrqgj">
<el-date-picker <el-date-picker
v-model.trim="editRowData.xcxssrqgj" v-model.trim="editRowData.xcxssrqgj"
type="date" type="dates"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="选择日期"> placeholder="选择日期">
</el-date-picker> </el-date-picker>
@@ -2350,6 +2350,9 @@ export default {
background: #ffffff; background: #ffffff;
text-align: right; text-align: right;
} }
/deep/.el-date-editor.el-input {
width: 100%;
}
} }
.labelBox { .labelBox {
/deep/ .el-form-item__label { /deep/ .el-form-item__label {
@@ -517,7 +517,7 @@
<el-form-item label="标准实施日期" prop="ssrq"> <el-form-item label="标准实施日期" prop="ssrq">
<el-date-picker <el-date-picker
v-model.trim="editRowData.ssrq" v-model.trim="editRowData.ssrq"
type="date" type="dates"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="选择日期"> placeholder="选择日期">
</el-date-picker> </el-date-picker>
@@ -525,7 +525,7 @@
<el-form-item label="在产车实施日期" prop="zccssrqgj"> <el-form-item label="在产车实施日期" prop="zccssrqgj">
<el-date-picker <el-date-picker
v-model.trim="editRowData.zccssrqgj" v-model.trim="editRowData.zccssrqgj"
type="date" type="dates"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="选择日期"> placeholder="选择日期">
</el-date-picker> </el-date-picker>
@@ -533,7 +533,7 @@
<el-form-item label="新车型实施日期" prop="xcxssrqgj"> <el-form-item label="新车型实施日期" prop="xcxssrqgj">
<el-date-picker <el-date-picker
v-model.trim="editRowData.xcxssrqgj" v-model.trim="editRowData.xcxssrqgj"
type="date" type="dates"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="选择日期"> placeholder="选择日期">
</el-date-picker> </el-date-picker>
@@ -2318,6 +2318,9 @@ export default {
background: #ffffff; background: #ffffff;
text-align: right; text-align: right;
} }
/deep/.el-date-editor.el-input {
width: 100%;
}
} }
.labelBox { .labelBox {
+28 -19
View File
@@ -4,6 +4,15 @@ import store from '../store'
import { Message } from 'element-ui' import { Message } from 'element-ui'
Vue.use(Router) Vue.use(Router)
const routes = [ const routes = [
{
path: '/phoneIndex',
name: 'phoneIndex',
component: resolve => require(['@/pages/processCenter/pages/phone/index.vue'], resolve),
meta: {
requireAuth: true,
title: '动态跳转',
}
},
{ {
path: '*', path: '*',
redirect: '/loginVerify' redirect: '/loginVerify'
@@ -931,7 +940,7 @@ const routes = [
component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step1.vue'), component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step1.vue'),
meta: { meta: {
requireAuth: true, requireAuth: true,
title: '企标制修订-技术标准' title: '企标制修订流程及企业标准库流程'
} }
}, },
{ {
@@ -940,7 +949,7 @@ const routes = [
component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step2.vue'), component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step2.vue'),
meta: { meta: {
requireAuth: true, requireAuth: true,
title: '企标制修订-技术标准' title: '企标制修订流程及企业标准库流程'
} }
}, },
{ {
@@ -949,7 +958,7 @@ const routes = [
component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step3.vue'), component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step3.vue'),
meta: { meta: {
requireAuth: true, requireAuth: true,
title: '企标制修订-技术标准' title: '企标制修订流程及企业标准库流程'
} }
},{ },{
path: '/bussLibraryC3', path: '/bussLibraryC3',
@@ -957,7 +966,7 @@ const routes = [
component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/stepC3.vue'), component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/stepC3.vue'),
meta: { meta: {
requireAuth: true, requireAuth: true,
title: '企标制修订-技术标准' title: '企标制修订流程及企业标准库流程'
} }
},{ },{
path: '/bussLibrary4', path: '/bussLibrary4',
@@ -965,7 +974,7 @@ const routes = [
component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step4.vue'), component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step4.vue'),
meta: { meta: {
requireAuth: true, requireAuth: true,
title: '企标制修订-技术标准' title: '企标制修订流程及企业标准库流程'
} }
},{ },{
path: '/bussLibrary5', path: '/bussLibrary5',
@@ -973,7 +982,7 @@ const routes = [
component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step5.vue'), component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step5.vue'),
meta: { meta: {
requireAuth: true, requireAuth: true,
title: '企标制修订-技术标准' title: '企标制修订流程及企业标准库流程'
} }
},{ },{
path: '/bussLibrary6', path: '/bussLibrary6',
@@ -981,7 +990,7 @@ const routes = [
component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step6.vue'), component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step6.vue'),
meta: { meta: {
requireAuth: true, requireAuth: true,
title: '企标制修订-技术标准' title: '企标制修订流程及企业标准库流程'
} }
},{ },{
path: '/bussLibraryC6', path: '/bussLibraryC6',
@@ -989,7 +998,7 @@ const routes = [
component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/stepC6.vue'), component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/stepC6.vue'),
meta: { meta: {
requireAuth: true, requireAuth: true,
title: '企标制修订-技术标准' title: '企标制修订流程及企业标准库流程'
} }
},{ },{
path: '/bussLibrary7', path: '/bussLibrary7',
@@ -997,7 +1006,7 @@ const routes = [
component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step7.vue'), component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step7.vue'),
meta: { meta: {
requireAuth: true, requireAuth: true,
title: '企标制修订-技术标准' title: '企标制修订流程及企业标准库流程'
} }
},{ },{
path: '/bussLibrary8', path: '/bussLibrary8',
@@ -1005,7 +1014,7 @@ const routes = [
component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step8.vue'), component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step8.vue'),
meta: { meta: {
requireAuth: true, requireAuth: true,
title: '企标制修订-技术标准' title: '企标制修订流程及企业标准库流程'
} }
},{ },{
path: '/bussLibrary9', path: '/bussLibrary9',
@@ -1013,7 +1022,7 @@ const routes = [
component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step9.vue'), component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step9.vue'),
meta: { meta: {
requireAuth: true, requireAuth: true,
title: '企标制修订-技术标准' title: '企标制修订流程及企业标准库流程'
} }
},{ },{
path: '/bussLibrary10', path: '/bussLibrary10',
@@ -1021,7 +1030,7 @@ const routes = [
component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step10.vue'), component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step10.vue'),
meta: { meta: {
requireAuth: true, requireAuth: true,
title: '企标制修订-技术标准' title: '企标制修订流程及企业标准库流程'
} }
},{ },{
path: '/bussLibrary11', path: '/bussLibrary11',
@@ -1029,7 +1038,7 @@ const routes = [
component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step11.vue'), component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step11.vue'),
meta: { meta: {
requireAuth: true, requireAuth: true,
title: '企标制修订-技术标准' title: '企标制修订流程及企业标准库流程'
} }
},{ },{
path: '/bussLibrary12', path: '/bussLibrary12',
@@ -1037,7 +1046,7 @@ const routes = [
component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step12.vue'), component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/step12.vue'),
meta: { meta: {
requireAuth: true, requireAuth: true,
title: '企标制修订-技术标准' title: '企标制修订流程及企业标准库流程'
} }
},{ },{
path: '/bussLibraryDetail', path: '/bussLibraryDetail',
@@ -1045,7 +1054,7 @@ const routes = [
component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/stepDetail.vue'), component: () => import('@/pages/processCenter/pages/creatProcess/qbrk/stepDetail.vue'),
meta: { meta: {
requireAuth: true, requireAuth: true,
title: '企标制修订-技术标准' title: '企标制修订流程及企业标准库流程'
} }
}, },
{ {
@@ -2162,8 +2171,8 @@ const routes = [
} }
}, },
{ {
path: '/phoneWfhxStep3', path: '/phoneWfhxzgStep3',
name: 'phoneWfhxStep3', name: 'phoneWfhxzgStep3',
component: () => import('@/pages/processCenter/pages/phone/wfhxzg/step3.vue'), component: () => import('@/pages/processCenter/pages/phone/wfhxzg/step3.vue'),
meta: { meta: {
isBoolean: true, isBoolean: true,
@@ -2172,8 +2181,8 @@ const routes = [
} }
}, },
{ {
path: '/phoneWfhxStep5', path: '/phoneWfhxzgStep5',
name: 'phoneWfhxStep5', name: 'phoneWfhxzgStep5',
component: () => import('@/pages/processCenter/pages/phone/wfhxzg/step5.vue'), component: () => import('@/pages/processCenter/pages/phone/wfhxzg/step5.vue'),
meta: { meta: {
isBoolean: true, isBoolean: true,
+11
View File
@@ -0,0 +1,11 @@
/** navigator.userAgent可以获取浏览器信息(类型及系统)
* 获取使用的是手机端还是pc端 */
export function isMobile () {
if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
return true // 手机端
} else {
return false // PC端
}
}
export default isMobile