Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Source/ProjectWeb/src/page/index/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Source/ProjectWeb/src/router/avue-router.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Source/ProjectWeb/src/store/modules/user.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Source/ProjectWeb/src/util/util.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Source/ProjectWeb/src/util/validate.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Source/ProjectWeb/src/views/base/UIContentViewer.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue
@@ -1,6 +1,6 @@ <template> <div class="UI-dynamic" :id="'UI-dynamic-'+areasName+componentVO.oid"> <div v-if="isError" style="color: #F56C6C">这个自定义页面的地址格式不正确。推荐使用bs=?type=xxx&context=yyy&pparam=zzz这种形式</div> <div v-if="isError" style="color: #F56C6C">这个自定义页面的地址格式不正确。推荐使用bs=组件name?type=xxx&context=yyy&pparam=zzz这种形式</div> <component v-else :is="currentComponent" :btmType="btmType" :content="content" @@ -15,6 +15,7 @@ </template> <script> import {queryStringToObject} from '@/util/util' export default { name: "dynamic-custom", components:{ @@ -75,8 +76,7 @@ } } }, computed:{ }, computed: {}, created() { }, @@ -93,24 +93,12 @@ if(this.customClass.split('?')[0]!='' && this.customClass.split('?')[0]!='UI' && this.customClass.split('?')[0]!='ui'){ this.currentComponent=this.customClass.split('?')[0]; } this.customClass=this.componentVO.customClass.split("?")[1].split('&'); let urlParams={}; let btmType='' let content='' this.customClass.forEach(item=>{ var preParam =item.split("="); if(preParam[0]=='type'){ btmType=preParam[1]; }else if(preParam[0]=='context'){ content=preParam[1]; }else{ urlParams[preParam[0]] = preParam[1]; } }) let urlParams = queryStringToObject(this.customClass); let btmType = urlParams.type; let content = urlParams.context; this.btmType=btmType, this.content=content, this.btmType = btmType; this.content = content; this.urlParams=Object.assign(this.paramVOS,urlParams) //this.getHeight(this.$parent); Source/ProjectWeb/src/page/index/index.vue
@@ -150,7 +150,7 @@ }; </script> <style lang="scss"> #avue-view .avue-view{ #avue-view > .avue-view{ height: 100%; padding: 0 6px !important; } Source/ProjectWeb/src/router/avue-router.js
@@ -90,7 +90,6 @@ * first: 为了区分外界 调用formatRoutes 和 当前文件调用 formatRoutes */ formatRoutes: function (aMenu = [], first) { // debugger; const aRouter = [] // 获取到全局配置中的 props const propsConfig = this.$website.menu.props; Source/ProjectWeb/src/store/modules/user.js
@@ -2,7 +2,7 @@ import {Message} from 'element-ui' import {setStore, getStore} from '@/util/store' import {isURL, validatenull} from '@/util/validate' import {deepClone} from '@/util/util' import {deepClone,queryStringToObject} from '@/util/util' import website from '@/config/website' import {loginByUsername, loginBySocial, loginBySso, getUserInfo, logout, refreshToken, getButtons} from '@/api/user' import {getTopMenu, getRoutes} from '@/api/system/menu' @@ -38,25 +38,11 @@ item.path = '/' + item.code; item.query = {}; // 初始化 item.query item.query = queryStringToObject(item.pathValue) console.log('item', item); if (item.children && item.children.length > 0) { updateCode(item.children); } }); } function queryStringToObject(queryString) { const index = queryString.indexOf('?'); if (index !== -1) { queryString = queryString.substring(index + 1); } const params = new URLSearchParams(queryString); const obj = {}; for (const [key, value] of params.entries()) { obj[key] = value; } return obj; } const user = { state: { @@ -77,7 +63,6 @@ loginByUsername(userInfo.tenantId, userInfo.deptId, userInfo.roleId, userInfo.username, md5(userInfo.password), userInfo.type, userInfo.key,).then(res => { const data = res.data; if (data.success) { debugger; commit('SET_TOKEN', data.obj.sessionInfo.token); commit('SET_REFRESH_TOKEN', data.obj.sessionInfo.token); commit('SET_TENANT_ID', data.tenant_id); @@ -257,7 +242,6 @@ }, mutations: { SET_TOKEN: (state, token) => { debugger; setToken(token); state.token = token; setStore({name: 'token', content: state.token}) Source/ProjectWeb/src/util/util.js
@@ -389,3 +389,20 @@ window.open(URL.createObjectURL(file)); } } /** * 解析地址参数 * @param {String} queryString - 地址?后面部分 */ export const queryStringToObject = (queryString) => { const index = queryString.indexOf('?'); if (index !== -1) { queryString = queryString.substring(index + 1); } const params = new URLSearchParams(queryString); const obj = {}; for (const [key, value] of params.entries()) { obj[key] = value; } return obj; } Source/ProjectWeb/src/util/validate.js
@@ -173,6 +173,14 @@ else return true; }; /** * URL地址 * @param {*} s */ export function isURL(s) { return /^http[s]?:\/\/.*/.test(s) } // 登录账号 (字母开头,允许5-16字节,允许字母数字下划线) export const verifyAccount = (val) => { const petter = /^[a-zA-Z][a-zA-Z0-9_]{4,15}$/; Source/ProjectWeb/src/views/base/UIContentViewer.vue
@@ -77,7 +77,7 @@ computed: {}, created() { if (verifyNull(this.$route.query.type) || (verifyNull(this.$route.query.context) && verifyNull(this.$route.query.content))) { this.$message.error("配置的信息错误,请参考bs=?type=xxx&context=yyy¶m=zzz这种形式。其中type是业务类型(或链接类型),context是UI上下文的名称"); this.$message.error("配置的信息错误,请参考bs=组件name?type=xxx&context=yyy¶m=zzz这种形式。其中type是业务类型(或链接类型),context是UI上下文的名称"); return false; } this.btmType=this.$route.query.type;