在研究使用若依项目时,记录一下使用中相关问题。

图片:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
css:
<th:block th:include="include :: jasny-bootstrap-css" />

html:
<input type="text" style="display: none" name="deviceImg" id="artivleImage" >
<div class="form-group">
<label class="col-sm-3 control-label">设备图片</label>
<div class="col-sm-9 fileinput fileinput-new" data-provides="fileinput">
<div class="fileinput-preview thumbnail" data-trigger="fileinput" style="width: 200px; height: 150px;" id="aaaaaaaaaa">

<img th:src="@{*{deviceImg}}">

</div>
<div>
<span class="btn btn-white btn-file"><span class="fileinput-new">选择图片</span><span class="fileinput-exists">更改</span>
<input name="" type="file" id="uploadImg" >

</span>
<a href="#" class="btn btn-white fileinput-exists" data-dismiss="fileinput">清除</a>
</div>
</div>
</div>

js:
<th:block th:include="include :: jasny-bootstrap-js" />

文件上传:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$("#uploadImg").change(function () {
var formData = new FormData();
formData.append('file', document.getElementById('uploadImg').files[0]);

if(document.getElementById('uploadImg').files[0]!=undefined)
{
$.ajax({
url:"/common/upload",
type:"post",
data: formData,
contentType: false,
processData: false,
success: function(data) {
$("#artivleImage").attr("value", data.fileName);
},
error:function(data) {
console.log(data)
alert("上传失败"+data)
}
});
}
})

下拉框

1
2
3
4
5
6
7
8
<div class="form-group">
<label class="col-sm-3 control-label">选择分类:</label>
<div class="col-sm-8">
<select class="form-control m-b" id="selectss" data-none-selected-text="图片分类"
name="photoCategory">
</select>
</div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$(function () {
var url_at = "/system/photoClass/list";
//清空原有select内的数据
$("#centerNameSelect").empty();
$.ajax({
url: url_at,
type: "post",
dataType: "json",
success: function (data) {
console.log(data)
$("#selectss").append("<option value=''>--请选择--</option>");
//遍历 json为{id:"00",text:"aa".....},{id:"01",text:"bb".....}
$.each(data.rows, function (index, item) {
var id = data.rows[index].id;
var formatName = data.rows[index].photoClassName;
$("#selectss").append("<option value='" + id + "'>" + formatName + "</option>");
});
// 回显
//$('#articleType').val($("#articleTypeold").val());
$('#articleType').val( [[${manuscriptArticle.articleType}]] );

},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
});

获取用户信息

1
2
3
4
5
6
7
8
9
10
11
12
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-framework</artifactId>
</dependency>




// 获取当前的用户信息
SysUser currentUser = ShiroUtils.getSysUser();
// 获取当前的用户名称
String userName = currentUser.getUserName();

页面文本框下拉框下面的注释

1
<span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 代码生成请选择字典属性</span>

字典值在程序中变成汉字

1
2
3
4
5
6
7
8
9
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-system</artifactId>
</dependency>

@Autowired
private ISysDictDataService dictDataService;

String grade = dictDataService.selectDictLabel("grade", String.valueOf(gradeId));

权限

1

添加的数据字段

1
2
3
4
5
6
7
8
9
10
11
create_By  创建者
create_Time 创建时间
update_By 修改着
update_Time 修改时间
remark 备注

-- 设置数据权限的时候需要添加的用户字段 user_id 创建者

@DataScope(deptAlias = "d",userAlias = "manuscript_article")

user_id 对应创建者

markdown

引入文件夹 /staticblog/ 从文章稿件项目里面引入,放到static目录下,修改shiro权限,放行staticblog文件夹

引入编辑页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<link rel="stylesheet" th:href="@{/staticblog/editor-md-master/js/editor-md-master/css/editormd.css}" />
<link rel="stylesheet" th:href="@{/staticblog/editor-md-master/codemirror/codemirror.min.css}" />
<link rel="stylesheet" th:href="@{/staticblog/editor-md-master/codemirror/addon/dialog/dialog.css}" />
<link rel="stylesheet" th:href="@{/staticblog/editor-md-master/codemirror/addon/search/matchesonscrollbar.css}" />

<script type="text/javascript" th:src="@{/staticblog/editor-md-master/js/editor-md-master/editormd.min.js}"></script>
<script th:src="@{/staticblog/editor-md-master/codemirror/codemirror.min.js}"></script>



// markdown 编辑器
var testEditor;
testEditor = editormd("test-editormd", {
placeholder:'本编辑器支持Markdown编辑,左边编写,右边预览', //默认显示的文字,这里就不解释了
width: "90%",
height: 640,
syncScrolling: "single",
path: "/markdown/lib/", //你的path路径(原资源文件中lib包在我们项目中所放的位置)
saveHTMLToTextarea: true,
emoji: false,
taskList: true,
tocm: true, // Using [TOCM]
tex: false, // 开启科学公式TeX语言支持,默认关闭
flowChart: false, // 开启流程图支持,默认关闭
sequenceDiagram: false, // 开启时序/序列图支持,默认关闭,
toolbarIcons : function() { //自定义工具栏,后面有详细介绍
return editormd.toolbarModes['simple']; // full, simple, mini
},
});


<div class="form-group page-header ">
<div class="container col-sm-12" >
<label class="control-label col-sm-3">
<h1 >职位描述:</h1>
</label>
</div>

<div class="col-sm-12">
<div id="layout" class="editor">
<div id="test-editormd">
<textarea id="manuscriptContent" name="workMessage"></textarea>
</div>
</div>
</div>
</div>

使用Markdown页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
静态CSS
<link rel="stylesheet" th:href="@{/markdown/editor-md-master/js/editor-md-master/css/editormd.css}" href="lib/js/editor.md-master/css/editormd.css" />

js
<script th:src="@{/markdown/editor-md-master/marked.min.js}" src="lib/js/editor.md-master/lib/marked.min.js"></script>
<script th:src="@{/markdown/editor-md-master/prettify.min.js}" src="lib/js/editor.md-master/lib/prettify.min.js"></script>
<script th:src="@{/markdown/editor-md-master/raphael.min.js}" src="lib/js/editor.md-master/lib/raphael.min.js"></script>
<script th:src="@{/markdown/editor-md-master/underscore.min.js}" src="lib/js/editor.md-master/lib/underscore.min.js"></script>
<script th:src="@{/markdown/editor-md-master/sequence-diagram.min.js}" src="lib/js/editor.md-master/lib/sequence-diagram.min.js"></script>
<script th:src="@{/markdown/editor-md-master/flowchart.min.js}" src="lib/js/editor.md-master/lib/flowchart.min.js"></script>
<script th:src="@{/markdown/editor-md-master/js/editor-md-master/editormd.min.js}" src="lib/js/editor.md-master/editormd.min.js"></script>



<script type="text/javascript">
var m = $("#mkdiraaa").val()
testEditor = editormd.markdownToHTML("test-editormd", {
markdown:m,
htmlDecode : "style,script,iframe", // you can filter tags decode
emoji : true,
taskList : true,
tex : true, // 默认不解析
flowChart : true, // 默认不解析
sequenceDiagram : true, // 默认不解析
});
</script>



真正的Markdown
<div id="test-editormd" >
<textarea></textarea>
</div>

只是为了获取暂存后台返回的数据
<textarea style="display: none" id="mkdiraaa" th:text="${blogBlog.blogText}">
</textarea>


没有权限则隐藏html元素

1
2
3
4
5
6
7
8
<div class="form-group" shiro:hasPermission="system:option:audit">
<label class="col-sm-3 control-label">审核通过:</label>
<div class="col-sm-8">
<select name="optionAduit" class="form-control m-b" th:with="type=${@dict.getType('Audit_type')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{optionAduit}"></option>
</select>
</div>
</div>

jQuery获取下拉框植

1
2
3
4
5
6
7
8
9
10
11
var resultSemester = $("#resultSemester").val()

// jQuery定义方法
function getStudentList() {

};

// 下拉框修改则调用方法
$("#class").change(function () {
getStudentList()
})

注册

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function addUser() {
var url_at = "/system/user/add";
//清空原有select内的数据
var dataParams = {};
dataParams['dataParams'] = 200
dataParams['userName'] = $('#username').val()
dataParams['deptName'] = '财务部门'
dataParams['deptId'] = '109'
dataParams['phonenumber'] = $('#phone').val()
dataParams['email'] = $('#email').val()
dataParams['loginName'] = $('#email').val()
dataParams['password'] = $('#password').val()
dataParams['sex'] = '0'
dataParams['role'] = '100'
dataParams['status'] = 0
dataParams['roleIds'] = 100
$.ajax({
url: url_at,
type: "post",
dataType: "json",
data : dataParams,
success: function (data) {
alert("添加完成")
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
}

$('#addUser').click(function () {
addUser()
})

后续操作

  1. 删除注册接口上面的权限限制

  2. 修改shiro框架,放行接口

    1
    filterChainDefinitionMap.put("/system/user/add", "anon");
  3. 解决一个当前用户空问题

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    com.ruoyi.web.controller.system.SysUserController

    addSave 方法 136 行

    user.setCreateBy(ShiroUtils.getLoginName());
    修改为 ==>
    try{
    user.setCreateBy(ShiroUtils.getLoginName());
    }catch (Exception e){
    user.setCreateBy("自由注册");
    }

登录

1
2
3
4
5
6
7
<form id="signupForm" action="/login" method="post">
<h4 class="no-margins">登录:</h4>
<input type="text" name="username" class="form-control uname" placeholder="用户名" value="admin" />
<input type="password" name="password" class="form-control pword" placeholder="密码" value="admin123" />
<button class="btn btn-success btn-block" id="btnSubmit" type="button" data-loading="正在验证登录,请稍后...">登录</button>
<input type="text" name="rememberMe" value="false" style="display: none;" >
</form>

查看是否登录

1
2
3
4
5
6
7
8
9
10
11
12
13
<li th:unless="${isLogin}" >
<a class="ticker-btn" href="/zp/register">注册</a>
</li>
<li th:unless="${isLogin}" >
<a class="ticker-btn" href="/zp/registerEnterprise">企业注册</a>
</li>
<li th:unless="${isLogin}">
<a class="ticker-btn" href="/login">登录</a>
</li>
<li th:if="${isLogin}">
<a th:if="${isqzz}" href="/zp/register">[[${userName}]]</a>
<a th:if="${isqy}" href="/zp/registerEnterprise">[[${userName}]]</a>
</li>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function lgoin() {
var url_at = "/login";
//清空原有select内的数据
var dataParams = {};
dataParams['username'] = $('#email').val()
dataParams['password'] = $('#password').val()
dataParams['rememberMe'] = 'false'

$.ajax({
url: url_at,
type: "post",
dataType: "json",
data: dataParams,
success: function (data) {
alert("登录成功")
window.location.reload()
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
}

$('#login').click(function () {
lgoin()
})