系统参数模块开发

pull/65/head
jiawei 2021-01-05 20:46:19 +08:00
parent 8ce0dc8842
commit 7168036c49
6 changed files with 207 additions and 317 deletions

View File

@ -0,0 +1,54 @@
package cn.stylefeng.guns.modular.config;
import cn.stylefeng.roses.kernel.resource.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.resource.api.annotation.GetResource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
/**
*
*
* @author: jiawei
* @date: 2021/01/04 12:02
*/
@Controller
@Slf4j
@ApiResource(name = "系统配置相关页面", path = "config")
public class ConfigViewController {
private String PREFIX = "/modular/sysConfig";
/**
* --
*
* @author jiawei
* @date 2021/1/4 13:33
*/
@GetResource(name = "系统配置-列表-视图", path = "", requiredPermission = false, requiredLogin = false)
public String indexView() {
return PREFIX + "/sysConfig.html";
}
/**
* -
*
* @author jiawei
* @date 2021/1/4 13:34
* @param
*/
@GetResource(name = "系统配置—新增-视图", path = "/addView", requiredPermission = false, requiredLogin = false)
public String addView() {
return PREFIX + "/sysConfig_add.html";
}
/**
* --
*
* @author jiawei
* @date 2021/1/4 13:35
* @param
*/
@GetResource(name = "系统配置-修改-视图", path = "editView", requiredPermission = false, requiredLogin = false)
public String editView() {
return PREFIX + "/sysConfig_edit.html";
}
}

View File

@ -1,128 +1,61 @@
/**
* 添加或者修改页面
* 修改
*/
var SysConfigInfoDlg = {
data: {
name: "",
dictFlag: "",
code: "",
value: "",
remark: "",
createTime: "",
createUser: "",
updateTime: "",
updateUser: ""
}
data: {}
};
layui.use(['form', 'admin', 'ax'], function () {
layui.use(['form', 'admin', 'HttpRequest'], function () {
var $ = layui.jquery;
var $ax = layui.ax;
var form = layui.form;
var admin = layui.admin;
var HttpRequest = layui.HttpRequest;
//默认的激活状态 dict 或者 custom
var status = "dict";
//初始化字典选择框
// 初始化所属分类字典下拉
var activeDictSelect = function () {
$("#dictCodeDiv").show();
$("#customCodeDiv").hide();
status = "dict";
//初始化所有字典类型
$("#dictTypeId").html('<option value="">请选择系统字典类型</option>');
var ajax = new $ax(Feng.ctxPath + "/dictType/listTypes", function (data) {
$("#groupCode").html('<option value="">请选择所属分类</option>');
// var httpRequest = new HttpRequest(Feng.ctxPath + "/dictType/dropDown", function (data) {
// var dictTypeList = res.data;
// dictTypeList.forEach(function (v, i) {
// $("#groupCode").append('<option value="' + v.dictCode+ '">' + v.dictName + '</option>');
// })
// form.render();
//
// }, function (data) {
// });
// httpRequest.start();
for (var i = 0; i < data.data.length; i++) {
var dictTypeId = data.data[i].dictTypeId;
var name = data.data[i].name;
var code = data.data[i].code;
$("#dictTypeId").append('<option value="' + dictTypeId + '">' + code + '--' + name + '</option>');
}
form.render();
}, function (data) {
});
ajax.start();
};
//初始化非字典选择
var activeCustomSelect = function () {
$("#dictCodeDiv").hide();
$("#customCodeDiv").show();
status = "custom";
//要删掉
$("#groupCode").append('<option value="sys_config">' + '默认常量' + '</option>');
form.render();
};
//表单提交事件
form.on('submit(btnSubmit)', function (data) {
//如果是选择字典
if (status === "dict") {
SysConfigInfoDlg.data = $.extend({"sysFlag":data.field.sysFlag?data.field.sysFlag:'N'},data.field)
var radio = $('input:radio[name="dictValue"]:checked').val();
if (!$("#dictTypeId").val() || !radio) {
Feng.error("请选择具体字典!");
return false;
}
} else {
if (!$("#value").val()) {
Feng.error("请填写参数值!");
return false;
}
var groupCode = $("#groupCode").find("option:selected").val()
if(!groupCode){
Feng.error("所属分类不能为空")
return false;
}
SysConfigInfoDlg.data = $.extend({"groupCode":groupCode},data.field)
var ajax = new $ax(Feng.ctxPath + "/sysConfig/addItem", function (data) {
var httpRequest = new HttpRequest(Feng.ctxPath + "/sysConfig/add",'post', function (data) {
admin.closeThisDialog();
Feng.success("添加成功!");
window.location.href = Feng.ctxPath + '/sysConfig'
admin.putTempData('formOk', true);
}, function (data) {
Feng.error("添加失败!" + data.responseJSON.message)
admin.closeThisDialog();
Feng.error("添加失败!" + data.message)
});
ajax.set(data.field);
ajax.start();
return false;
httpRequest.set(SysConfigInfoDlg.data);
httpRequest.start(true);
});
//监听单选切换
form.on('radio(dictChecked)', function (data) {
if (data.value === "Y") {
activeDictSelect();
} else {
activeCustomSelect();
}
});
//监听字典选择
form.on('select(dictTypeId)', function (data) {
var dictTypeId = data.value;
//初始化字典详细列表
$("#dictDetails").html('');
var ajax = new $ax(Feng.ctxPath + "/dict/listDicts", function (data) {
for (var i = 0; i < data.data.length; i++) {
var name = data.data[i].name;
var code = data.data[i].code;
$("#dictDetails").append('<input type="radio" name="dictValue" value="' + code + '" title="' + name + '">');
}
form.render();
}, function (data) {
});
ajax.set("dictTypeId", dictTypeId);
ajax.start();
});
//返回按钮
$("#backupPage").click(function () {
window.location.href = Feng.ctxPath + '/sysConfig'
});
//显示字典编码选择
// 常量所属分类动态赋值
activeDictSelect();
});

View File

@ -2,158 +2,83 @@
* 详情对话框
*/
var SysConfigInfoDlg = {
data: {
name: "",
dictFlag: "",
code: "",
value: "",
remark: "",
createTime: "",
createUser: "",
updateTime: "",
updateUser: ""
}
data: {}
};
layui.use(['form', 'admin', 'ax'], function () {
layui.use(['form', 'admin','selectPlus', 'HttpRequest'], function () {
var $ = layui.jquery;
var $ax = layui.ax;
var form = layui.form;
var admin = layui.admin;
var selectPlus = layui.selectPlus;
var HttpRequest = layui.HttpRequest;
//获取详情信息,填充表单
var ajax = new $ax(Feng.ctxPath + "/sysConfig/detail?id=" + Feng.getUrlParam("id"));
var result = ajax.start();
// 获取详情信息,填充表单
var httpRequest = new HttpRequest(Feng.ctxPath + "/sysConfig/detail?configId=" + Feng.getUrlParam("configId"),'get');
var result = httpRequest.start();
form.val('sysConfigForm', result.data);
//初始化字典选择框
var activeDictSelect = function () {
$("#dictCodeDiv").show();
$("#customCodeDiv").hide();
status = "dict";
//初始化所有字典类型
$("#dictTypeId").html('<option value="">请选择系统字典类型</option>');
var ajax = new $ax(Feng.ctxPath + "/dictType/listTypes", function (data) {
for (var i = 0; i < data.data.length; i++) {
var dictTypeId = data.data[i].dictTypeId;
var name = data.data[i].name;
var code = data.data[i].code;
$("#dictTypeId").append('<option value="' + dictTypeId + '">' + code + '--' + name + '</option>');
}
form.render();
}, function (data) {
});
ajax.start();
};
//初始化非字典选择
var activeCustomSelect = function () {
$("#dictCodeDiv").hide();
$("#customCodeDiv").show();
status = "custom";
};
//更新字典详情列表
var updateDictDetail = function (dictTypeId, activeCode) {
$("#dictDetails").html('');
var ajax = new $ax(Feng.ctxPath + "/dict/listDicts", function (data) {
for (var i = 0; i < data.data.length; i++) {
var name = data.data[i].name;
var code = data.data[i].code;
if (activeCode === code) {
$("#dictDetails").append('<input type="radio" name="dictValue" value="' + code + '" title="' + name + '" checked="checked">');
} else {
$("#dictDetails").append('<input type="radio" name="dictValue" value="' + code + '" title="' + name + '">');
}
}
form.render();
}, function (data) {
});
ajax.set("dictTypeId", dictTypeId);
ajax.start();
};
//监听单选切换
form.on('radio(dictChecked)', function (data) {
if (data.value === "Y") {
activeDictSelect();
} else {
activeCustomSelect();
// 系统参数样式
if(result.data){
var mData = result.data;
if(mData.sysFlag == 'Y'){
$('input[name="sysFlag"]').attr('checked', 'checked'); //改变开关为 开
}else{
$('input[name="sysFlag"]').removeAttr('checked'); //改变开关为 关
}
});
/*改变是否系统参数样式*/
$("input[name='sysFlag']").attr("disabled", "true"); form.render(); //系统参数禁用
$("input[name='sysFlag']").next().removeClass("layui-form-onswitch"); // 系统参数去掉样式
}
// 初始化所属分类字典下拉
var activeDictSelect = function () {
$("#groupCode").html('<option value="">请选择所属分类</option>');
// var httpRequest = new HttpRequest(Feng.ctxPath + "/dictType/dropDown", function (data) {
// var dictTypeList = res.data;
// dictTypeList.forEach(function (v, i) {
// $("#groupCode").append('<option value="' + v.dictCode+ '">' + v.dictName + '</option>');
// })
// form.render();
//
// }, function (data) {
// });
// httpRequest.start();
//要删掉
$("#groupCode").append('<option value="sys_config">' + '默认常量' + '</option>');
$("#groupCode").val(result.data.groupCode);
form.render();
};
//表单提交事件
form.on('submit(btnSubmit)', function (data) {
//如果是选择字典
if (status === "dict") {
var radio = $('input:radio[name="dictValue"]:checked').val();
SysConfigInfoDlg.data = $.extend({"sysFlag":data.field.sysFlag?data.field.sysFlag:'N'},data.field)
if (!$("#dictTypeId").val() || !radio) {
Feng.error("请选择具体字典!");
return false;
}
} else {
if (!$("#value").val()) {
Feng.error("请填写参数值!");
return false;
}
var groupCode = $("#groupCode").find("option:selected").val()
if(!groupCode){
Feng.error("所属分类不能为空")
return false;
}
SysConfigInfoDlg.data = $.extend({"groupCode":groupCode},data.field)
var ajax = new $ax(Feng.ctxPath + "/sysConfig/editItem", function (data) {
Feng.success("更新成功!");
window.location.href = Feng.ctxPath + '/sysConfig'
var httpRequest = new HttpRequest(Feng.ctxPath + "/sysConfig/edit",'post', function (data) {
admin.closeThisDialog();
Feng.success("修改成功!");
admin.putTempData('formOk', true);
}, function (data) {
Feng.error("更新失败!" + data.responseJSON.message)
admin.closeThisDialog();
Feng.error("修改失败!" + data.message)
});
ajax.set(data.field);
ajax.start();
return false;
httpRequest.set(SysConfigInfoDlg.data);
httpRequest.start(true);
});
//监听字典选择
form.on('select(dictTypeId)', function (data) {
var dictTypeId = data.value;
//初始化字典详细列表
updateDictDetail(dictTypeId);
});
//返回按钮
$("#backupPage").click(function () {
window.location.href = Feng.ctxPath + '/sysConfig'
});
//如果当前配置是带字典类型,则初始化字典类型选择
if (result.data.dictFlag === 'Y') {
activeDictSelect();
//更新选项
$("#dictTypeId").val(result.data.dictTypeId);
form.render();
//更新字典类型的详情
updateDictDetail(result.data.dictTypeId, result.data.value);
} else {
activeCustomSelect();
}
//如果是系统类型,则不能改变取值范围和字典类型
if(result.data.code.indexOf('GUNS_') === 0){
$("[name='dictFlag']").attr("disabled","disabled");
$("#dictTypeId").attr("disabled","disabled");
form.render();
}
// 常量所属分类动态赋值
activeDictSelect();
});

View File

@ -12,7 +12,7 @@
<div class="layui-form toolbar">
<div class="layui-form-item">
<div class="layui-inline">
<input id="condition" class="layui-input" type="text" placeholder="名称"/>
<input id="configName" class="layui-input" type="text" placeholder="参数名称"/>
</div>
<div class="layui-inline">
<button id="btnSearch" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>搜索</button>

View File

@ -1,59 +1,48 @@
@layout("/layout/_container.html",{js:["/assets/modular/sysConfig/sysConfig_add.js"]}){
<div class="layui-body-header">
<span class="layui-body-header-title">添加</span>
</div>
<div class="layui-fluid " style="">
<div class="layui-card">
<div class="layui-card-body">
<form id="sysConfigForm" lay-filter="sysConfigForm" class="layui-form model-form" style="max-width: 700px;margin: 40px auto;">
<input name="id" type="hidden"/>
@layout("/layout/_form.html",{js:["/assets/modular/sysConfig/sysConfig_add.js"]}){
<form class="layui-form" id="sysConfigForm" lay-filter="sysConfigForm" >
<div class="layui-fluid " style="">
<div class="layui-card">
<div class="layui-card-header">基本信息</div>
<div class="layui-card-body">
<input name="configId" type="hidden"/>
<div class="layui-form-item">
<label class="layui-form-label">名称<span style="color: red;">*</span></label>
<label class="layui-form-label layui-form-required">参数名称</label>
<div class="layui-input-block">
<input id="name" name="name" placeholder="请输入名称" type="text" class="layui-input" autocomplete="off" lay-verify="required" required/>
<input id="configName" name="configName" placeholder="请输入参数名称" type="text" class="layui-input" autocomplete="off" lay-verify="required" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">编码<span style="color: red;">*</span></label>
<label class="layui-form-label layui-form-required">唯一编码</label>
<div class="layui-input-block">
<input id="code" name="code" placeholder="属性编码" type="text" class="layui-input" autocomplete="off" lay-verify="required" required/>
<input id="configCode" name="configCode" placeholder="请输入唯一编码" type="text" class="layui-input" autocomplete="off" lay-verify="required" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label layui-form-required">系统参数</label>
<div class="layui-input-block">
<input type="checkbox" name="sysFlag" lay-skin="switch" lay-text="是|否" value="Y" checked>
</div>
<div class="layui-form-mid layui-word-aux form-tips">推荐采用下划线大写风格例如KAPTCH_OPEN若以GUNS_开头则是系统常量不可删除。</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">取值范围<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input type="radio" name="dictFlag" value="Y" title="字典" lay-filter="dictChecked" checked="checked">
<input type="radio" name="dictFlag" value="N" title="非字典" lay-filter="dictChecked">
</div>
<div class="layui-form-mid layui-word-aux">如果选择字典,则取值来自于 系统管理->字典管理</div>
</div>
<!-- 从字典取值 -->
<div id="dictCodeDiv">
<div class="layui-form-item">
<label class="layui-form-label">字典类型<span style="color: red;">*</span></label>
<div class="layui-input-block">
<select name="dictTypeId" id="dictTypeId" lay-filter="dictTypeId">
<option value="">请选择系统字典类型</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">参数值<span style="color: red;">*</span></label>
<div class="layui-input-block" id="dictDetails">
<input type="radio" name="dictValue" value="" title="无" disabled="disabled">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label layui-form-required">所属分类</label>
<div class="layui-input-block">
<select name="groupCode" id="groupCode" lay-filter="dictTypeId">
</select>
</div>
</div>
<!-- 手动输入 -->
<div class="layui-form-item" id="customCodeDiv">
<label class="layui-form-label">参数值<span style="color: red;">*</span></label>
<label class="layui-form-label layui-form-required">参数值</label>
<div class="layui-input-block">
<input id="value" name="value" placeholder="属性值" type="text" autocomplete="off" class="layui-input"/>
<input id="configValue" name="configValue" placeholder="请输入属性值" type="text" autocomplete="off" class="layui-input"/>
</div>
</div>
<div class="layui-form-item">
@ -65,12 +54,11 @@
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-filter="btnSubmit" lay-submit>&emsp;提交&emsp;</button>
<button class="layui-btn layui-btn-primary" type="button" id="backupPage">&emsp;返回&emsp;</button>
<button class="layui-btn layui-btn-primary" ew-event="closeDialog"> 取消 </button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</form>
@}

View File

@ -1,59 +1,49 @@
@layout("/layout/_container.html",{js:["/assets/modular/sysConfig/sysConfig_edit.js"]}){
@layout("/layout/_form.html",{js:["/assets/modular/sysConfig/sysConfig_edit.js"]}){
<div class="layui-body-header">
<span class="layui-body-header-title">修改</span>
</div>
<div class="layui-fluid " style="">
<div class="layui-card">
<div class="layui-card-body">
<form id="sysConfigForm" lay-filter="sysConfigForm" class="layui-form model-form" style="max-width: 700px;margin: 40px auto;">
<input name="id" type="hidden"/>
<form class="layui-form" id="sysConfigForm" lay-filter="sysConfigForm" >
<div class="layui-fluid" style="padding-bottom: 75px;">
<div class="layui-card">
<div class="layui-card-header">基本信息</div>
<div class="layui-card-body">
<input name="configId" type="hidden"/>
<div class="layui-form-item">
<label class="layui-form-label">名称<span style="color: red;">*</span></label>
<label class="layui-form-label layui-form-required">参数名称</label>
<div class="layui-input-block">
<input id="name" name="name" placeholder="请输入名称" type="text" class="layui-input" autocomplete="off" lay-verify="required" required/>
<input id="configName" name="configName" placeholder="请输入参数名称" type="text" class="layui-input" autocomplete="off" lay-verify="required" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">编码<span style="color: red;">*</span></label>
<label class="layui-form-label layui-form-required">唯一编码</label>
<div class="layui-input-block">
<input id="code" disabled="disabled" name="code" placeholder="属性编码" type="text" class="layui-input" autocomplete="off" lay-verify="required" required/>
<input id="configCode" readonly disabled="disabled" name="configCode" placeholder="请输入唯一编码" type="text" class="layui-input" autocomplete="off" lay-verify="required" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label layui-form-required">系统参数</label>
<div class="layui-input-block">
<input type="checkbox" name="sysFlag" lay-skin="switch" lay-text="是|否" value="Y" checked>
</div>
<div class="layui-form-mid layui-word-aux form-tips">编码填写后不可修改,系统字典(GUNS_开头)添加后不可修改取值范围和字典类型</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">取值范围<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input type="radio" name="dictFlag" value="Y" title="字典" lay-filter="dictChecked" checked="checked">
<input type="radio" name="dictFlag" value="N" title="非字典" lay-filter="dictChecked">
</div>
<div class="layui-form-mid layui-word-aux">如果选择字典,则取值来自于 系统管理->字典管理</div>
</div>
<!-- 从字典取值 -->
<div id="dictCodeDiv">
<div class="layui-form-item">
<label class="layui-form-label">字典类型<span style="color: red;">*</span></label>
<div class="layui-input-block">
<select name="dictTypeId" id="dictTypeId" lay-filter="dictTypeId">
<option value="">请选择系统字典类型</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">参数值<span style="color: red;">*</span></label>
<div class="layui-input-block" id="dictDetails">
<input type="radio" name="dictValue" value="" title="无" disabled="disabled">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label layui-form-required">所属分类</label>
<div class="layui-input-block">
<select name="groupCode" id="groupCode" lay-filter="dictTypeId" disabled="disabled">
</select>
</div>
</div>
<!-- 手动输入 -->
<div class="layui-form-item" id="customCodeDiv">
<label class="layui-form-label">参数值<span style="color: red;">*</span></label>
<label class="layui-form-label layui-form-required">参数值</label>
<div class="layui-input-block">
<input id="value" name="value" placeholder="属性值" type="text" autocomplete="off" class="layui-input"/>
<input id="configValue" name="configValue" placeholder="请输入属性值" type="text" autocomplete="off" class="layui-input"/>
</div>
</div>
<div class="layui-form-item">
@ -65,12 +55,12 @@
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-filter="btnSubmit" lay-submit>&emsp;提交&emsp;</button>
<button class="layui-btn layui-btn-primary" type="button" id="backupPage">&emsp;返回&emsp;</button>
<button class="layui-btn layui-btn-primary" ew-event="closeDialog"> 取消 </button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</form>
@}