jeecg中的原生态组件

 

  

<!-- ztree -->
<link rel="stylesheet" type="text/css" href="plug-in/ztree/css/zTreeStyle.css"></link>
<script type="text/javascript" src="plug-in/ztree/js/jquery.ztree.core-3.5.min.js" ></script>
<script type="text/javascript" src="plug-in/ztree/js/jquery.ztree.excheck-3.5.min.js"></script>

<!-- 文件上传 -->
<link rel="stylesheet" type="text/css" href="plug-in/webuploader/webuploader.css"></link>
<script type="text/javascript" src="plug-in/webuploader/webuploader.min.js" ></script>

<!-- 自动补全 -->
<link rel="stylesheet" href="plug-in/jquery/jquery-autocomplete/jquery.autocomplete.css" type="text/css"></link>
<script type="text/javascript" src="plug-in/jquery/jquery-autocomplete/jquery.autocomplete.min.js"></script>

<!-- 联动 -->
<script src="plug-in/jquery/jquery.regionselect.js" type="text/javascript"></script> 

<fieldset>
<legend>文件上传</legend>
<div id="uploader" class="wu-example">
<!--用来存放文件信息-->
<div id="thelist" class="uploader-list"></div>
<div class="btns">
<div id="picker">选择文件</div>
</div>
</div>
</fieldset>

<fieldset>
<legend>autocomplete</legend>
<table>
<tr>
<td style="width:90px;text-align: right;">用户名自动补全:</td>
<td>
<input type="text" id="userNameAuto" name="userName" class="ac_input">
</td>
</tr>
</table>
</fieldset>

<fieldset>
<legend>联动下拉省市区</legend>
<!-- update-begin_author:taoYan date:20170803 for:修复ie下样式变乱 -->
<div style="width:80%;margin:5px 0 0 10px;">
<input type="text" id="province" style="width:32%;" value=""/>
<input type="text" id="city" style="width:32%;" value=""/>
<input type="text" id="area" style="width:32%;" value=""/>
</div>
</fieldset>

<fieldset>
<legend>ztree</legend>
<div style="clear:both"></div>
<div class="zTreeDemoBackground left">
<ul id="treeDemo" class="ztree"></ul>
</div>
</fieldset>
<!-- update-end-author:taoYan date:20170803 for:修复ie下样式变乱 -->

<fieldset>
<legend>ueditor</legend>
<table>
<tr>
<!-- <td align="right"><label class="Validform_label">demo:</label> -->
<td>
<script type="text/javascript" charset="utf-8" src="plug-in/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="plug-in/ueditor/ueditor.all.min.js"></script>
<textarea name="ueditorContent" id="ueditorContent" style="width: 650px;"></textarea>
<script type="text/javascript">
var editor = UE.getEditor('ueditorContent');
</script>
<span class="Validform_checktip"></span>
</td>
</tr>
</table>
</fieldset>
</t:formvalid>
<!-- update-end--Author:yugwu Date:20170626 for:[TASK #2135]【浏览器兼容问题】IE8下样式乱了-------------------- -->

<!-- update-begin--Author:taoYan Date:20170803 for:代码格式修改 -->
<script type="text/javascript">
function printobj(obj){
var str='[';
for(var a in obj){
str+=a+':'+obj[a]+",";
}
str+=0+':0]';
return str;
}
function getTremValueuserName() {
return $("#userNameAuto").val();
}
$(function() {
//ztree
var setting = {
check: {
enable: true
},
view: {
dblClickExpand: true
},
data: {
simpleData: {
enable: true
}
}
};
var zNodes=jQuery.parseJSON('${regions}');
$.fn.zTree.init($("#treeDemo"), setting, zNodes);

//省市区下拉
$("#province").regionselect({
url:'<%=basePath%>/jeecgFormDemoController.do?regionSelect'
});

/*-------------------------------------------文件上传----------------------------------------------*/
var urlc= '<%=basePath%>/systemController/filedeal.do';
var BASE_URL="<%=basePath%>";
var uploader = WebUploader.create({
// swf文件路径
swf: BASE_URL+'/plug-in/webuploader/Uploader.swf',
// 文件接收服务端。
server: urlc,
// 选择文件的按钮。可选。
// 内部根据当前运行是创建,可能是input元素,也可能是flash.
pick: '#picker',
// 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
resize: false,
//指明参数名称,后台也用这个参数接收文件
duplicate: false,
auto: true,
//每次上传附带参数
formData:{"uparg":"ggfile"}

});
uploader.on( 'fileQueued', function( file ) {
$("#thelist").append( '<div id="' + file.id + '" class="item">' +
'<div class="state">'+file.name+'---等待上传...</div>' +
'</div>' );
});

//文件上传过程中创建进度条实时显示.
uploader.on( 'uploadProgress', function( file, percentage ) {
var $li = $( '#'+file.id ),
$percent = $li.find('.progress .progress-bar');
// 避免重复创建
if ( !$percent.length ) {
$percent = $('<div class="progress progress-striped active">' +
'<div class="progress-bar" role="progressbar" style="width: 0%">' +
'</div>' +
'</div>').appendTo( $li ).find('.progress-bar');
}
$li.find('div.state').html(file.name+'---上传中');
$percent.css( 'width', percentage * 100 + '%' );
});
uploader.on( 'uploadSuccess', function(file) {
$( '#'+file.id ).find('div.state').html(file.name+'---上传成功!');
});
uploader.on( 'uploadError', function( file) {
$( '#'+file.id ).find('div.state').html(file.name+'---上传出错');
});
uploader.on( 'uploadComplete', function( file ) {
$( '#'+file.id ).find('.progress').fadeOut('slow');
});
/*-------------------------------------------文件上传----------------------------------------------*/

/*-------------------------------------------自动补全----------------------------------------------*/
$("#userNameAuto").autocomplete("jeecgFormDemoController.do?getAutocompleteData", {
max: 5,
minChars: 1,
width: 200,
scrollHeight: 100,
matchContains: true,
autoFill: false,
extraParams: {
featureClass: "P",
style: "full",
maxRows: 10,
labelField: "userName",
valueField: "userName",
searchField: "userName",
entityName: "TSUser",
trem: getTremValueuserName
},
parse: function(data) {
return jeecgAutoParse.call(this, data);
},
formatItem: function(row, i, max) {
return row['userName'];
}
}).result(function(event, row, formatted) {
$("#userNameAuto").val(row['userName']);
});
/*-------------------------------------------自动补全----------------------------------------------*/

$("div.webuploader-container").css("width","78px");

});
</script>
</body>
</html>
<!-- update-end--Author:taoYan Date:20170803 for:代码格式修改 -->

转载于:https://www.cnblogs.com/xujiating/p/7573640.html

<think>好的,我需要帮助用户解决在Jeecg前端组件中传递token的问题。首先,我需要明确用户的具体需求:他们想在菜单组件中传递token,可能是用于权限验证或API请求。接下来,我要回忆JeecgBoot的技术架构,尤其是前端部分。根据引用[4],前端使用的是Ant Design Vue和Vue.js,所以解决方案应该基于这些技术。 首先,考虑到Vue的全局状态管理,通常会用Vuex或者Pinia。JeecgBoot可能已经集成了这些工具。用户需要将token存储在全局状态中,这样各个组件包括菜单组件都能访问。然后,菜单组件可能需要通过API获取动态菜单数据,这时需要在请求头中加入token。Axios拦截器是一个常用的方法,可以自动为每个请求添加token。 另外,菜单组件本身可能不需要直接传递token,而是通过应用层面的请求拦截来处理。如果用户需要在菜单渲染时使用token,可能需要从Vuex中获取。此外,路由守卫也是一个关键点,确保在跳转前验证token的有效性,这可以防止未授权访问。 还要考虑token的存储位置,通常是localStorage或sessionStorage,在用户登录后保存,并在每次请求时携带。检查Jeecg的文档是否有特定的实现方式或封装好的方法,比如引用[3]提到的在线开发模式和代码生成器,可能有内置的token管理机制。 最后,需要确保回答结构清晰,分步骤说明,并引用相关的技术点,比如Axios拦截器、Vuex状态管理、路由守卫等。同时,根据用户提供的引用,特别是引用[4]中的前端技术栈,确保建议与JeecgBoot的最佳实践一致。可能还需要提醒用户查阅官方文档或社区资源,如引用[5]的升级日志,以获取最新信息。</think>在JeecgBoot框架中实现前端菜单组件传递token,主要通过以下三个步骤实现: ### 一、全局存储token 1. 登录成功后通过`localStorage`存储token: ```javascript localStorage.setItem('token', res.result.token) ``` 2. 推荐使用Vuex进行状态管理(JeecgBoot默认集成): ```javascript // store/modules/user.js SET_TOKEN: (state, token) => { state.token = token localStorage.setItem('token', token) } ``` ### 二、请求拦截器配置 在`src/utils/request.js`中添加axios拦截器: ```javascript service.interceptors.request.use(config => { const token = store.getters.token || localStorage.getItem('token') if (token) { config.headers['X-Access-Token'] = token // JeecgBoot默认使用该header } return config }) ``` 此配置会使所有API请求(包括菜单接口)自动携带token[^4] ### 三、菜单组件集成 1. 菜单接口请求时自动携带token(通过上述拦截器) 2. 动态菜单渲染时获取用户权限信息: ```javascript // 获取带权限的菜单 getPermissionList().then(res => { if (res.success) { this.menuData = res.result } }) ``` 3. 路由守卫验证(`src/router/index.js`): ```javascript router.beforeEach((to, from, next) => { const token = store.getters.token if (token) { // 正常跳转 } else { next('/login') } }) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值