456 lines
22 KiB
HTML
456 lines
22 KiB
HTML
<!doctype html>
|
||
<html xmlns:th="http://www.thymeleaf.org">
|
||
<head>
|
||
<base th:href="${#request.getContextPath() + '/'}">
|
||
<meta charset="utf-8">
|
||
<meta name="renderer" content="webkit">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
|
||
<link rel="stylesheet" type="text/css" href="assets/js/vendor/viewer/viewer.min.css">
|
||
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
|
||
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
|
||
<style>
|
||
.layui-form-item {margin-bottom: 0px;}
|
||
.base-form-item-title {width: 70px; color: #666!important;}
|
||
.photo-show .photo-show-wrap{margin-right:10px;}
|
||
.photo-show .photo-show-wrap .photo-wrap{display:inline-block;background-color:white;padding:5px;margin-bottom:5px;position:relative;box-shadow: 1px 1px 5px #c2c2c2;}
|
||
.photo-show .photo-show-wrap .photo-wrap img{height:100px;}
|
||
.photo-show .photo-show-wrap .photo-wrap a{position:absolute;top:0px;right:0px;border-color:#CCC;}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="layui-fluid layui-anim layui-anim-fadein">
|
||
<form class="layui-form" lay-filter="dataForm">
|
||
<div class="layui-card">
|
||
<div class="layui-card-header">
|
||
<span class="layui-breadcrumb" lay-filter="breadcrumb" style="visibility: visible;">
|
||
<a href="javascript:void(0);"><cite>基础属性</cite></a>
|
||
</span>
|
||
</div>
|
||
<div class="layui-card-body" style="padding: 15px;">
|
||
<div class="layui-form-item" style="margin: 4px 0;">
|
||
<div class="layui-form-mid layui-word-aux base-form-item-title">系统主标题</div>
|
||
<div class="layui-input-inline" style="width: 400px;">
|
||
<input type="text" name="systemTitle" placeholder="请输入系统主标题,XXXX系统..." class="layui-input">
|
||
</div>
|
||
<div class="layui-input-inline" style="width: 100px;">
|
||
<input type="number" name="systemTitleSize" placeholder="字体大小" class="layui-input">
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-item" style="margin: 4px 0;">
|
||
<div class="layui-form-mid layui-word-aux base-form-item-title">系统副标题</div>
|
||
<div class="layui-input-inline" style="width: 400px;">
|
||
<input type="text" name="systemSubTitle" placeholder="请输入系统副标题,XX软件、XX科技" class="layui-input">
|
||
</div>
|
||
<div class="layui-input-inline" style="width: 100px;">
|
||
<input type="number" name="systemSubTitleSize" placeholder="字体大小" class="layui-input">
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-item" style="margin: 4px 0;">
|
||
<div class="layui-form-mid layui-word-aux base-form-item-title">版权年份</div>
|
||
<div class="layui-input-inline" style="width: 400px;">
|
||
<input type="text" name="copyRightYear" placeholder="请输入版权年份,2019-..." class="layui-input">
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-item" style="margin: 4px 0;">
|
||
<div class="layui-form-mid layui-word-aux base-form-item-title">版权所有</div>
|
||
<div class="layui-input-inline" style="width: 400px;">
|
||
<input type="text" name="copyleft" placeholder="请输入版权所属,XXXX公司..." class="layui-input">
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-item" style="margin: 4px 0;">
|
||
<div class="layui-form-mid layui-word-aux base-form-item-title">官方地址</div>
|
||
<div class="layui-input-inline" style="width: 400px;">
|
||
<input type="text" name="officialUrl" placeholder="请输入官方地址,http://...." class="layui-input">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="layui-card">
|
||
<div class="layui-card-header">
|
||
<span class="layui-breadcrumb" lay-filter="breadcrumb" style="visibility: visible;">
|
||
<a href="javascript:void(0);"><cite>系统 LOGO</cite></a>
|
||
</span>
|
||
</div>
|
||
<div class="layui-card-body" style="padding: 15px;">
|
||
<div class="layui-form-item">
|
||
<div id="logoShow" class="col-lg-12 photo-show"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="layui-card">
|
||
<div class="layui-card-header">
|
||
<span class="layui-breadcrumb" lay-filter="breadcrumb" style="visibility: visible;">
|
||
<a href="javascript:void(0);"><cite>登录背景图片</cite></a>
|
||
</span>
|
||
</div>
|
||
<div class="layui-card-body" style="padding: 15px;">
|
||
<div class="layui-form-item">
|
||
<div id="photoShow" class="col-lg-12 photo-show"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="layui-card">
|
||
<div class="layui-card-header">
|
||
<span class="layui-breadcrumb" lay-filter="breadcrumb" style="visibility: visible;">
|
||
<a href="javascript:void(0);"><cite>密码有效期</cite></a>
|
||
</span>
|
||
</div>
|
||
<div class="layui-card-body" style="padding: 15px;">
|
||
<div class="layui-form-item">
|
||
<div>
|
||
<input type="radio" name="passwordValidity" value="none" title="永不过期" checked>
|
||
</div>
|
||
<div>
|
||
<span style="float: left;">
|
||
<input type="radio" name="passwordValidity" value="custom" title="自定义">
|
||
</span>
|
||
<div class="layui-input-inline">
|
||
<input type="number" name="passwordValidityDays" lay-verify="required" placeholder="天数" class="layui-input">
|
||
</div>
|
||
<div class="layui-form-mid layui-word-aux">天</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="layui-card">
|
||
<div class="layui-card-header">
|
||
<span class="layui-breadcrumb" lay-filter="breadcrumb" style="visibility: visible;">
|
||
<a href="javascript:void(0);"><cite>用户首次登录修改密码(该功能需设置密码有效期)</cite></a>
|
||
</span>
|
||
</div>
|
||
<div class="layui-card-body" style="padding: 15px;">
|
||
<div class="layui-form-item">
|
||
<div>
|
||
<input type="radio" name="firstLoginChangePassword" value="close" title="关闭" checked>
|
||
</div>
|
||
<div>
|
||
<input type="radio" name="firstLoginChangePassword" value="open" title="开通">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="layui-card">
|
||
<div class="layui-card-header">
|
||
<span class="layui-breadcrumb" lay-filter="breadcrumb" style="visibility: visible;">
|
||
<a href="javascript:void(0);"><cite>向用户发出其密码将过期的通知前的天数</cite></a>
|
||
</span>
|
||
</div>
|
||
<div class="layui-card-body" style="padding: 15px;">
|
||
<div class="layui-form-item">
|
||
<div class="layui-input-inline">
|
||
<input type="number" name="changePasswordNoticeDays" lay-verify="required" placeholder="天数" class="layui-input">
|
||
</div>
|
||
<div class="layui-form-mid layui-word-aux"> 天</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="layui-card">
|
||
<div class="layui-card-header">
|
||
<span class="layui-breadcrumb" lay-filter="breadcrumb" style="visibility: visible;">
|
||
<a href="javascript:void(0);"><cite>用户密码强度</cite></a>
|
||
</span>
|
||
</div>
|
||
<div class="layui-card-body" style="padding: 15px;">
|
||
<div class="layui-form-item">
|
||
<div>
|
||
<input type="radio" name="passwordStrength" value="weak" title="弱 密码6到16位,仅包含数字,字母,特殊字符,其中的一种" checked>
|
||
</div>
|
||
<div>
|
||
<input type="radio" name="passwordStrength" value="middle" title="中 密码6到16位,包含数字、字母、特殊字符,其中的任意两种">
|
||
</div>
|
||
<div>
|
||
<input type="radio" name="passwordStrength" value="strong" title="强 密码6到16位,必须全部包含数字、字母、特殊字符三种">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="layui-card" th:if="${appLogin eq 'appLogin'}">
|
||
<div class="layui-card-header">
|
||
<span class="layui-breadcrumb" lay-filter="breadcrumb" style="visibility: visible;">
|
||
<a href="javascript:void(0);"><cite>APP允许绑定设备数量(0为不限制)</cite></a>
|
||
</span>
|
||
</div>
|
||
<div class="layui-card-body" style="padding: 15px;">
|
||
<div class="layui-form-item">
|
||
<div class="layui-input-inline">
|
||
<input type="number" name="appDeviceCount" lay-verify="required|positiveNumber" placeholder="APP数量" class="layui-input" value="0">
|
||
</div>
|
||
<div class="layui-form-mid layui-word-aux"> 台</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<input type="hidden" name="appDeviceCount" value="0" th:if="${appLogin ne 'appLogin'}">
|
||
<div class="layui-card">
|
||
<div class="layui-card-header">
|
||
<span class="layui-breadcrumb" lay-filter="breadcrumb" style="visibility: visible;">
|
||
<a href="javascript:void(0);"><cite>其他设置</cite></a>
|
||
</span>
|
||
</div>
|
||
<div class="layui-card-body" style="padding: 15px;">
|
||
<div class="layui-form-item" style="margin: 4px 0;">
|
||
<div class="layui-form-mid layui-word-aux">登录框位置</div>
|
||
<div class="layui-input-inline" style="width: 400px;">
|
||
<input type="radio" name="loginBoxPosition" value="default" title="默认(居右)" checked>
|
||
<input type="radio" name="loginBoxPosition" value="center" title="居中">
|
||
<input type="radio" name="loginBoxPosition" value="left" title="局左">
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-item" style="margin: 4px 0;">
|
||
<div class="layui-form-mid layui-word-aux">验证码</div>
|
||
<div class="layui-input-inline" style="width: 400px;">
|
||
<input type="radio" name="verificationCode" value="false" title="关闭" checked>
|
||
<input type="radio" name="verificationCode" value="true" title="开启">
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-item" style="margin: 4px 0;" th:if="${uKeyLogin eq 'uKeyLogin'}">
|
||
<div class="layui-form-mid layui-word-aux">UKey登录(仅IE支持)</div>
|
||
<div class="layui-input-inline" style="width: 400px;">
|
||
<input type="radio" name="uKeyLogin" value="false" title="关闭" checked>
|
||
<input type="radio" name="uKeyLogin" value="true" title="开启">
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-item" style="margin: 4px 0;" th:if="${dingDingScanLogin eq 'dingDingScanLogin'}">
|
||
<div class="layui-form-mid layui-word-aux">扫码登录</div>
|
||
<div class="layui-input-inline" style="width: 400px;">
|
||
<input type="radio" name="scanCodeLogin" value="false" title="关闭" checked>
|
||
<input type="radio" name="scanCodeLogin" value="dingDingScanCode" title="钉钉(需要设置通讯录权限,访问白名单)" th:if="${dingDingScanLogin eq 'dingDingScanLogin'}">
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-item" style="margin: 4px 0;">
|
||
<div class="layui-form-mid layui-word-aux">菜单模式</div>
|
||
<div class="layui-input-inline" style="width: 400px;">
|
||
<input type="radio" name="menuMode" value="fixedLeft" title="左固定" checked>
|
||
<input type="radio" name="menuMode" value="floatLeft" title="左浮动">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-item layui-layout-admin">
|
||
<div class="layui-input-block">
|
||
<div class="layui-footer" style="left: 0;">
|
||
<button type="button" class="layui-btn" lay-submit lay-filter="submitForm">提交更新</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
<script id="logoTemple" type="text/html">
|
||
{{# layui.each(d.logos, function(index, item){ }}
|
||
<span class="photo-show-wrap">
|
||
<span class="photo-wrap">
|
||
<img src="route/file/download/true/{{item}}"/>
|
||
<a href="javascript:void(0)" data-id="{{item}}" class="layui-btn layui-btn-xs layui-btn-danger remove-logo-btn"><i class="fa fa-trash"></i></a>
|
||
</span>
|
||
</span>
|
||
{{# }); }}
|
||
{{# if(d.logos.length < 1) { }}
|
||
<span>
|
||
<a href="javascript:void(0)" id="selectLogo"><i class="fa fa-plus-square-o fa-5x"></i></a>
|
||
</span>
|
||
{{# } }}
|
||
</script>
|
||
<script id="backgroundTemple" type="text/html">
|
||
{{# layui.each(d.photos, function(index, item){ }}
|
||
<span class="photo-show-wrap">
|
||
<span class="photo-wrap">
|
||
<img src="route/file/download/true/{{item}}"/>
|
||
<a href="javascript:void(0)" data-id="{{item}}" class="layui-btn layui-btn-xs layui-btn-danger remove-photo-btn"><i class="fa fa-trash"></i></a>
|
||
</span>
|
||
</span>
|
||
{{# }); }}
|
||
{{# if(d.photos.length < 6) { }}
|
||
<span>
|
||
<a href="javascript:void(0)" id="selectPhoto"><i class="fa fa-plus-square-o fa-5x"></i></a>
|
||
</span>
|
||
{{# } }}
|
||
</script>
|
||
</div>
|
||
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
|
||
<script src="assets/layuiadmin/layui/layui.js"></script>
|
||
<script>
|
||
layui.config({
|
||
base: 'assets/layuiadmin/' //静态资源所在路径
|
||
}).extend({
|
||
index: 'lib/index' //主入口模块
|
||
}).use(['index', 'form', 'laydate', 'laytpl'], function(){
|
||
var $ = layui.$;
|
||
var form = layui.form;
|
||
var laytpl = layui.laytpl;
|
||
var logos = [];
|
||
var photos = [];
|
||
var photoViewer = new Viewer(document.getElementById('photoShow'), {});
|
||
var logoViewer = new Viewer(document.getElementById('logoShow'), {});
|
||
|
||
// 设置logo图片
|
||
function setLogoTemple() {
|
||
var logoTemple = document.getElementById('logoTemple').innerHTML;
|
||
var logoShow = document.getElementById('logoShow');
|
||
laytpl(logoTemple).render({
|
||
logos: logos
|
||
}, function(html) {
|
||
logoShow.innerHTML = html;
|
||
});
|
||
logoViewer.update();
|
||
}
|
||
|
||
// 事件-删除图片
|
||
$(document).on('click', '.remove-logo-btn', function() {
|
||
var fileId = this.dataset.id;
|
||
for(var i = 0; i < logos.length; i++) {
|
||
var item = logos[i]
|
||
if(item == fileId) {
|
||
logos.splice(i, 1);
|
||
break;
|
||
}
|
||
}
|
||
setLogoTemple();
|
||
});
|
||
|
||
// 事件-上传图片
|
||
$(document).on('click', '#selectLogo', function() {
|
||
top.dialog.file({
|
||
type: 'image',
|
||
title: '选择LOGO',
|
||
width: '800px',
|
||
height: '400px',
|
||
maxFileCount: (1 - logos.length),
|
||
onClose: function() {
|
||
var uploadFileArray = top.dialog.dialogData.uploadFileArray;
|
||
if(typeof(uploadFileArray) != 'undefined' && uploadFileArray.length > 0) {
|
||
for(var i = 0, item = uploadFileArray[i]; item = uploadFileArray[i++];) {
|
||
logos.push(item.data);
|
||
}
|
||
setLogoTemple();
|
||
}
|
||
}
|
||
});
|
||
});
|
||
|
||
// 设置背景图片
|
||
function setBackgroundTemple() {
|
||
var backgroundTemple = document.getElementById('backgroundTemple').innerHTML;
|
||
var photoShow = document.getElementById('photoShow');
|
||
laytpl(backgroundTemple).render({
|
||
photos: photos
|
||
}, function(html) {
|
||
photoShow.innerHTML = html;
|
||
});
|
||
photoViewer.update();
|
||
}
|
||
|
||
// 事件-删除图片
|
||
$(document).on('click', '.remove-photo-btn', function() {
|
||
var fileId = this.dataset.id;
|
||
for(var i = 0; i < photos.length; i++) {
|
||
var item = photos[i]
|
||
if(item == fileId) {
|
||
photos.splice(i, 1);
|
||
break;
|
||
}
|
||
}
|
||
setBackgroundTemple();
|
||
});
|
||
|
||
// 事件-上传图片
|
||
$(document).on('click', '#selectPhoto', function() {
|
||
top.dialog.file({
|
||
type: 'image',
|
||
title: '选择图片',
|
||
width: '800px',
|
||
height: '400px',
|
||
maxFileCount: (6 - photos.length),
|
||
onClose: function() {
|
||
var uploadFileArray = top.dialog.dialogData.uploadFileArray;
|
||
if(typeof(uploadFileArray) != 'undefined' && uploadFileArray.length > 0) {
|
||
for(var i = 0, item = uploadFileArray[i]; item = uploadFileArray[i++];) {
|
||
photos.push(item.data);
|
||
}
|
||
setBackgroundTemple();
|
||
}
|
||
}
|
||
});
|
||
});
|
||
|
||
// 初始化
|
||
function initData() {
|
||
var loadLayerIndex;
|
||
top.restAjax.get(top.restAjax.path('api/config/getconfig', []), {}, null, function(code, data) {
|
||
form.val('dataForm', {
|
||
systemTitle: data.systemTitle,
|
||
systemTitleSize: data.systemTitleSize,
|
||
systemSubTitle: data.systemSubTitle,
|
||
systemSubTitleSize: data.systemSubTitleSize,
|
||
copyRightYear: data.copyRightYear,
|
||
copyleft: data.copyleft,
|
||
officialUrl: data.officialUrl,
|
||
passwordValidity: data.passwordValidity,
|
||
passwordValidityDays: data.passwordValidityDays,
|
||
changePasswordNoticeDays: data.changePasswordNoticeDays,
|
||
passwordStrength: data.passwordStrength,
|
||
firstLoginChangePassword: data.firstLoginChangePassword,
|
||
appDeviceCount: data.appDeviceCount,
|
||
verificationCode: data.verificationCode,
|
||
uKeyLogin: data.uKeyLogin,
|
||
scanCodeLogin: data.scanCodeLogin,
|
||
loginBoxPosition: data.loginBoxPosition,
|
||
menuMode: data.menuMode
|
||
});
|
||
form.render(null, 'dataForm');
|
||
if(data.systemLogo) {
|
||
logos = data.systemLogo.split(',');
|
||
}
|
||
setLogoTemple();
|
||
if(data.loginBackgroundImages) {
|
||
photos = data.loginBackgroundImages.split(',');
|
||
}
|
||
setBackgroundTemple();
|
||
}, function(code, data) {
|
||
top.DialogBox.msg(data.msg);
|
||
}, function() {
|
||
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
|
||
}, function() {
|
||
top.dialog.close(loadLayerIndex);
|
||
});
|
||
}
|
||
initData();
|
||
|
||
// 提交表单
|
||
form.on('submit(submitForm)', function(formData) {
|
||
top.dialog.confirm(top.dataMessage.commit, function(index) {
|
||
top.dialog.close(index);
|
||
var loadLayerIndex;
|
||
formData.field.loginBackgroundImages = photos.toString();
|
||
formData.field.systemLogo = logos.length > 0 ? logos[0] : '';
|
||
top.restAjax.put(top.restAjax.path('api/config/updateconfig', []), formData.field, null, function(code, data) {
|
||
var layerIndex = top.dialog.msg('更新成功', {
|
||
time: 0,
|
||
btn: [top.dataMessage.button.yes],
|
||
shade: 0.3,
|
||
yes: function(index) {
|
||
top.dialog.close(index);
|
||
window.location.reload();
|
||
}
|
||
});
|
||
}, function(code, data) {
|
||
top.dialog.msg(data.msg);
|
||
}, function() {
|
||
loadLayerIndex = top.dialog.msg(top.dataMessage.committing, {icon: 16, time: 0, shade: 0.3});
|
||
}, function() {
|
||
top.dialog.close(loadLayerIndex);
|
||
});
|
||
});
|
||
return false;
|
||
});
|
||
|
||
form.verify({
|
||
positiveNumber: function(value, item) {
|
||
if(value < 0) {
|
||
return '必须是正数';
|
||
}
|
||
}
|
||
});
|
||
});
|
||
</script>
|
||
</body>
|
||
</html> |