添加项目文件。
This commit is contained in:
52
HT.Cloud.Web/Areas/SystemManage/Views/Form/Details.cshtml
Normal file
52
HT.Cloud.Web/Areas/SystemManage/Views/Form/Details.cshtml
Normal file
@ -0,0 +1,52 @@
|
||||
@{
|
||||
ViewBag.Title = "Form";
|
||||
Layout = "~/Views/Shared/_Form.cshtml";
|
||||
}
|
||||
<link href="~/js/lay-module/formDesigner/formPreview.css" rel="stylesheet" />
|
||||
<div class="layuimini-container">
|
||||
<div class="layuimini-main">
|
||||
<form class="layui-form layuimini-form">
|
||||
<div class="layui-form-item">
|
||||
<fieldset class="layui-elem-field" style="padding-top:15px;">
|
||||
<div id="frmPreview"></div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
//只读参数
|
||||
var readonly = true;
|
||||
var dataJson=[];
|
||||
layui.use(['jquery', 'form', 'common','formPreview'], function () {
|
||||
var form = layui.form,
|
||||
common = layui.common,
|
||||
formPreview = layui.formPreview,
|
||||
$ = layui.jquery;
|
||||
var keyValue = $.request("keyValue");
|
||||
$(function () {
|
||||
common.ajax({
|
||||
url: '/SystemManage/Form/GetFormJson',
|
||||
dataType: 'json',
|
||||
data: { keyValue: keyValue },
|
||||
async: false,
|
||||
success: function (data) {
|
||||
if (data.F_FrmType != 0) {
|
||||
$("#frmPreview").load(document.location.origin + '/form/' + data.F_WebId + '.html');
|
||||
}
|
||||
else {
|
||||
//表单设计器
|
||||
dataJson = JSON.parse(data.F_Content);
|
||||
renderForm = formPreview.render({
|
||||
elem: '#frmPreview',
|
||||
data: dataJson,
|
||||
readonly: true
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
form.render();
|
||||
});
|
||||
wcLoading.close();
|
||||
})
|
||||
</script>
|
259
HT.Cloud.Web/Areas/SystemManage/Views/Form/Form.cshtml
Normal file
259
HT.Cloud.Web/Areas/SystemManage/Views/Form/Form.cshtml
Normal file
@ -0,0 +1,259 @@
|
||||
@{
|
||||
ViewBag.Title = "Form";
|
||||
Layout = "~/Views/Shared/_Form.cshtml";
|
||||
}
|
||||
<link href="~/css/stepcss.css" rel="stylesheet" />
|
||||
<link href="~/js/lay-module/formDesigner/formPreview.css" rel="stylesheet" />
|
||||
<div class="layuimini-container">
|
||||
<div class="layuimini-main">
|
||||
<div class="layui-carousel" id="adminform" lay-filter="adminform">
|
||||
<div carousel-item>
|
||||
<div>
|
||||
<form class="layui-form layuimini-form">
|
||||
<div class="layui-form-item layui-hide">
|
||||
<label class="layui-form-label required">表单名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="F_Name" name="F_Name" required lay-verify="required"
|
||||
placeholder="表单名称" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-hide">
|
||||
<label class="layui-form-label required">表单类型</label>
|
||||
<div class="layui-input-block">
|
||||
<select id="F_FrmType" name="F_FrmType" required lay-verify="required" lay-search lay-filter="FrmType">
|
||||
<option value="" selected>请选择</option>
|
||||
<option value="0">动态表单</option>
|
||||
<option value="1">自定义表单</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-hide">
|
||||
<label class="layui-form-label">关联数据表</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="F_DbName" name="F_DbName"
|
||||
placeholder="关联数据表" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-hide">
|
||||
<label class="layui-form-label">系统内置表单</label>
|
||||
<div class="layui-input-block">
|
||||
<select id="F_WebId" name="F_WebId" disabled lay-search lay-filter="WebId">
|
||||
<option value="" selected>请选择</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-hide">
|
||||
<label class="layui-form-label">归属部门</label>
|
||||
<div class="layui-input-block">
|
||||
<select id="F_OrganizeId" name="F_OrganizeId" lay-search>
|
||||
<option value="" selected>请选择</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-hide">
|
||||
<label class="layui-form-label required">排序</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" pattern="[0-9]*" id="F_SortCode" name="F_SortCode" lay-verify="required|number" oninput="if(value.length>8)value=value.slice(0,8)" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-hide">
|
||||
<label class="layui-form-label">选项</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="checkbox" name="F_EnabledMark" id="F_EnabledMark" checked="" value="true" title="有效标识">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-form-text layui-hide">
|
||||
<label class="layui-form-label">备注</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea id="F_Description" name="F_Description" class="layui-textarea" placeholder="请输入备注"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group-bottom text-right">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn" lay-submit lay-filter="formStep">
|
||||
 下一步 
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div>
|
||||
<form class="layui-form layuimini-form">
|
||||
<div id="commonform" >
|
||||
<iframe src="~/page/designer.html" id="formdesigner" onload="setIframeHeight(this)"style="width:100%;min-height:400px">
|
||||
</iframe>
|
||||
</div>
|
||||
<fieldset class="layui-elem-field">
|
||||
<div id="frmPreview"></div>
|
||||
</fieldset>
|
||||
<div class="form-group-bottom text-right">
|
||||
<div class="layui-input-block">
|
||||
<button type="button" class="layui-btn layui-btn-primary pre">上一步</button>
|
||||
<button class="layui-btn site-demo-active" id="saveBtn">
|
||||
 保存 
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
//只读参数
|
||||
var designJson = {};
|
||||
var readonly = true;
|
||||
layui.use(['jquery', 'form', 'common', 'element', 'step'], function () {
|
||||
var form = layui.form,
|
||||
$ = layui.$,
|
||||
common = layui.common,
|
||||
step = layui.step,
|
||||
element = layui.element;
|
||||
var keyValue = $.request("keyValue");
|
||||
var ItemId = $.request("ItemId");
|
||||
step.render({
|
||||
elem: '#adminform',
|
||||
filter: 'adminform',
|
||||
width: '100%', //设置容器宽度
|
||||
stepWidth: '750px',
|
||||
height: '550px',
|
||||
stepItems: [{
|
||||
title: '基本信息'
|
||||
}, {
|
||||
title: '表单设计'
|
||||
}]
|
||||
});
|
||||
|
||||
//权限字段
|
||||
common.authorizeFields('adminform');
|
||||
$(function () {
|
||||
initControl();
|
||||
if (!!ItemId) {
|
||||
$('#F_OrganizeId').val(ItemId);
|
||||
}
|
||||
if (!!keyValue) {
|
||||
common.ajax({
|
||||
url: '/SystemManage/Form/GetFormJson',
|
||||
dataType: 'json',
|
||||
data: { keyValue: keyValue },
|
||||
async: false,
|
||||
success: function (data) {
|
||||
common.val('adminform', data);
|
||||
if (data.F_FrmType != 0) {
|
||||
$("#frmPreview").load(document.location.origin + '/form/' + data.F_WebId + '.html');
|
||||
$('#commonform').addClass('layui-hide');
|
||||
$('#frmPreview').removeClass('layui-hide');
|
||||
$('#frmPreview').parent().removeClass('layui-hide');
|
||||
}
|
||||
else {
|
||||
$('#commonform').removeClass('layui-hide');
|
||||
$('#frmPreview').addClass('layui-hide');
|
||||
$('#frmPreview').parent().addClass('layui-hide');
|
||||
designJson=JSON.parse(data.F_Content);
|
||||
$("#formdesigner").attr('src',document.location.origin + '/page/designer.html');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
common.ajax({
|
||||
url: document.location.origin + '/json/demo.json',
|
||||
success: function (result) {
|
||||
designJson = result;
|
||||
}
|
||||
});
|
||||
$('#commonform').removeClass('layui-hide');
|
||||
$('#frmPreview').addClass('layui-hide');
|
||||
$('#frmPreview').parent().addClass('layui-hide');
|
||||
$("#formdesigner").attr('src',document.location.origin + '/page/designer.html');
|
||||
}
|
||||
form.render();
|
||||
});
|
||||
wcLoading.close();
|
||||
function initControl() {
|
||||
$("#F_OrganizeId").bindSelect({
|
||||
url: "/SystemOrganize/Organize/GetTreeSelectJson",
|
||||
});
|
||||
$("#F_WebId").bindSelect({
|
||||
url: "/SystemManage/Form/GetExtendForm",
|
||||
id: "FileName",
|
||||
text: "FileName"
|
||||
});
|
||||
}
|
||||
$('.pre').click(function () {
|
||||
step.pre('#adminform');
|
||||
});
|
||||
|
||||
$('.next').click(function () {
|
||||
step.next('#adminform');
|
||||
});
|
||||
form.on('select(FrmType)',
|
||||
function (data) {
|
||||
if (!!data.value && data.value == 1) {
|
||||
$('#F_WebId').removeAttr("disabled");
|
||||
$('#F_DbName').addClass("layui-hide");
|
||||
$('#F_DbName').val("");
|
||||
} else {
|
||||
$('#F_WebId').attr("disabled", "disabled");
|
||||
$('#F_WebId').val("");
|
||||
$('#F_DbName').removeClass("layui-hide");
|
||||
}
|
||||
form.render();
|
||||
});
|
||||
form.on('select(WebId)',
|
||||
function (data) {
|
||||
if (!!data.value) {
|
||||
$('#frmPreview').removeClass('layui-hide');
|
||||
$('#commonform').addClass('layui-hide');
|
||||
$("#frmPreview").load(document.location.origin + '/form/' + data.value + '.html');
|
||||
form.render();
|
||||
}
|
||||
else {
|
||||
$("#frmPreview").html("");
|
||||
}
|
||||
});
|
||||
var postData;
|
||||
form.on('submit(formStep)', function (data) {
|
||||
postData = $.extend(postData, data.field);
|
||||
if (postData.F_FrmType != 0) {
|
||||
$('#commonform').addClass('layui-hide');
|
||||
$('#frmPreview').removeClass('layui-hide');
|
||||
$('#frmPreview').parent().removeClass('layui-hide');
|
||||
}
|
||||
else {
|
||||
$('#commonform').removeClass('layui-hide');
|
||||
$('#frmPreview').addClass('layui-hide');
|
||||
$('#frmPreview').parent().addClass('layui-hide');
|
||||
}
|
||||
step.next('#adminform');
|
||||
return false;
|
||||
});
|
||||
//监听提交
|
||||
$(document).on('click', '#saveBtn', function () {
|
||||
//解析表单数据
|
||||
var formeditor = '';
|
||||
if (postData.F_FrmType != 1) {
|
||||
//获取表单设计器里的内容
|
||||
document.querySelector("iframe").contentWindow.document
|
||||
.getElementsByClassName('saveJson')[0].click();
|
||||
formeditor =window.localStorage.getItem('layui_form_json');
|
||||
if (!formeditor) {
|
||||
common.modalMsg("请编辑设计器", "warning");
|
||||
return false;
|
||||
}
|
||||
postData.F_Content = formeditor;
|
||||
}
|
||||
if (!postData["F_EnabledMark"]) postData["F_EnabledMark"] = false;
|
||||
common.submitForm({
|
||||
url: '/SystemManage/Form/SubmitForm?keyValue=' + keyValue,
|
||||
param: postData,
|
||||
success: function () {
|
||||
common.reloadIframe("/SystemManage/Form/Index", 'data-search-btn');
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
233
HT.Cloud.Web/Areas/SystemManage/Views/Form/Index.cshtml
Normal file
233
HT.Cloud.Web/Areas/SystemManage/Views/Form/Index.cshtml
Normal file
@ -0,0 +1,233 @@
|
||||
@{
|
||||
ViewBag.Title = "Index";
|
||||
Layout = "~/Views/Shared/_Index.cshtml";
|
||||
}
|
||||
<div class="layui-fluid" style="padding:0 0px">
|
||||
<div class="layui-row layui-col-space5">
|
||||
<div class="layui-col-md4 layui-col-xs5">
|
||||
<div class="layui-card" style="padding: 5px;">
|
||||
<fieldset class="table-search-fieldset" style="border:1px solid #e6e6e6">
|
||||
<legend>部门列表</legend>
|
||||
<form class="layui-form layui-form-pane" action="">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<input type="text" id="temp_keyword" name="temp_keyword" autocomplete="off" class="layui-input" placeholder="">
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="temp-search-btn"><i class="layui-icon"></i> 搜 索</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</fieldset>
|
||||
<table class="layui-hide" id="currentTable" lay-filter="currentTable"></table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md8 layui-col-xs7">
|
||||
<div class="layui-card" style="padding: 5px;">
|
||||
<fieldset class="table-search-fieldset" id="searchField">
|
||||
<legend>表单列表</legend>
|
||||
<form class="layui-form layui-form-pane">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">关键字:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="txt_keyword" name="txt_keyword" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="data-search-btn"><i class="layui-icon"></i> 搜 索</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</fieldset>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container" id="toolbar">
|
||||
<button id="NF-add" name="NF-add" authorize class="layui-btn layui-btn-sm" lay-event="add"><i class="layui-icon"></i>新增</button>
|
||||
<button id="NF-edit" name="NF-edit" authorize class="layui-btn layui-btn-sm layui-btn-warm layui-hide" lay-event="edit"><i class="layui-icon"></i>修改</button>
|
||||
<button id="NF-delete" name="NF-delete" authorize class="layui-btn layui-btn-sm layui-btn-danger layui-hide" lay-event="delete"> <i class="layui-icon"></i>删除</button>
|
||||
<button id="NF-details" name="NF-details" authorize class="layui-btn layui-btn-sm layui-btn-normal layui-hide" lay-event="details"> <i class="layui-icon"></i>预览</button>
|
||||
</div>
|
||||
</script>
|
||||
<table class="layui-hide" id="currentTableId" lay-filter="currentTableFilter"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
layui.use(['form', 'table','treeTable', 'common', 'commonTable'], function () {
|
||||
var form = layui.form,
|
||||
table = layui.table,
|
||||
commonTable = layui.commonTable,
|
||||
treeTable = layui.treeTable,
|
||||
common = layui.common;
|
||||
var ItemId;
|
||||
//权限控制(js是值传递)
|
||||
toolbarDemo.innerHTML = common.authorizeButtonNew(toolbarDemo.innerHTML);
|
||||
var options = {
|
||||
elem: '#currentTable',
|
||||
url: '/SystemOrganize/Organize/GetTreeGridJson',
|
||||
defaultToolbar: [],
|
||||
toolbar: false,
|
||||
search: false,
|
||||
treeColIndex: 0,
|
||||
height: 'full-130',
|
||||
treeIdName: 'F_Id', // id字段名称
|
||||
treePidName: 'F_ParentId', // pid字段名称
|
||||
cols: [[
|
||||
{ field: 'F_FullName', title: '部门名称', width: 250, filter: true },
|
||||
{ field: 'F_EnCode', title: '部门编号', width: 180, filter: true},
|
||||
{
|
||||
field: 'F_CategoryId', title: '部门分类', width: 120, filter: true,
|
||||
templet: function (d) {
|
||||
return top.clients.dataItems["OrganizeCategory"][d.F_CategoryId] == null ? "" : top.clients.dataItems["OrganizeCategory"][d.F_CategoryId];
|
||||
}
|
||||
}
|
||||
]],
|
||||
};
|
||||
commonTable.rendertreetable(options);
|
||||
commonTable.rendertable({
|
||||
elem: '#currentTableId',
|
||||
id: 'currentTableId',
|
||||
url: '/SystemManage/Form/GetGridJson',
|
||||
where: { ItemId: ItemId },
|
||||
limit: 9999,//每页数据 默认
|
||||
page: { //支持传入 laypage 组件的所有参数(某些参数除外,如:jump/elem) - 详见文档
|
||||
layout: ['count'] //自定义分页布局
|
||||
, first: false //不显示首页
|
||||
, last: false //不显示尾页
|
||||
},
|
||||
search:false,
|
||||
height: 'full-130',
|
||||
autoSort: true,
|
||||
cols: [[
|
||||
{ type: "radio", width: 50 },
|
||||
{ field: 'F_Name', title: '表单名称', minWidth: 210, sort: true },
|
||||
{
|
||||
field: 'F_FrmType', title: '表单类型', width: 120, sort: true,
|
||||
templet: function (d) {
|
||||
if (d.F_FrmType == 0) {
|
||||
return "<span class='layui-btn layui-btn-normal layui-btn-xs'>动态表单</span>";
|
||||
} else {
|
||||
return "<span class='layui-btn layui-btn-warm layui-btn-xs'>自定义表单</span>";
|
||||
}
|
||||
}
|
||||
},
|
||||
{ field: 'F_Fields', title: '字段数', width: 100, sort: true, hide: true },
|
||||
{ field: 'F_ContentData', title: '表单中的字段数据', minWidth: 200, sort: true },
|
||||
{
|
||||
field: 'F_DbName', title: '关联数据表', width: 120,
|
||||
templet: function (d) {
|
||||
if (d.F_FrmType == 1) {
|
||||
return d.F_WebId;
|
||||
} else {
|
||||
return !!d.F_DbName ? d.F_DbName:"";
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'F_OrganizeName', title: '所属部门', width: 120, hide: true
|
||||
},
|
||||
{
|
||||
field: 'F_EnabledMark', title: '状态', width: 80,
|
||||
templet: function (d) {
|
||||
if (d.F_EnabledMark == true) {
|
||||
return "<span class='layui-btn layui-btn-normal layui-btn-xs'>有效</span>";
|
||||
} else {
|
||||
return "<span class='layui-btn layui-btn-warm layui-btn-xs'>无效</span>";
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'F_CreatorTime', title: '创建时间', width: 120, sort: true,
|
||||
templet: function (d) {
|
||||
if (d.F_CreatorTime) {
|
||||
var time = new Date(d.F_CreatorTime);
|
||||
return time.Format("yyyy-MM-dd");
|
||||
}
|
||||
return '';
|
||||
}
|
||||
},
|
||||
{ field: 'F_Description', title: '备注', width: 250, hide: true }
|
||||
]]
|
||||
});
|
||||
// 监听搜索操作
|
||||
form.on('submit(temp-search-btn)', function (data) {
|
||||
var queryJson = data.field.temp_keyword;
|
||||
//执行搜索重载
|
||||
options.where = { keyword: queryJson };
|
||||
commonTable.reloadtabletree(options);
|
||||
itemId = null;
|
||||
return false;
|
||||
});
|
||||
// 监听搜索操作
|
||||
form.on('submit(data-search-btn)', function (data) {
|
||||
commonTable.reloadtable({
|
||||
elem: 'currentTableId',
|
||||
page: { //支持传入 laypage 组件的所有参数(某些参数除外,如:jump/elem) - 详见文档
|
||||
layout: ['count'] //自定义分页布局
|
||||
, first: false //不显示首页
|
||||
, last: false //不显示尾页
|
||||
},
|
||||
where: { ItemId: ItemId,keyword: data.field.txt_keyword }
|
||||
});
|
||||
return false;
|
||||
});
|
||||
wcLoading.close();
|
||||
table.on('row(currentTable)', function (obj) {
|
||||
obj.tr.addClass("layui-table-click").siblings().removeClass("layui-table-click");
|
||||
ItemId = obj.data.F_Id;
|
||||
$('button[lay-filter="data-search-btn"]').click();//按钮刷新
|
||||
})
|
||||
//行点击事件监听,控制按钮显示
|
||||
var oneList = ["NF-edit", "NF-delete", "NF-details"];//选择1条显示
|
||||
commonTable.tableRowClick("radio", "currentTableFilter", "currentTableId", oneList);
|
||||
//toolbar监听事件
|
||||
table.on('toolbar(currentTableFilter)', function (obj) {
|
||||
var data = table.checkStatus('currentTableId').data;
|
||||
if (obj.event === 'add') { // 监听添加操作
|
||||
common.openNewTabByIframe({
|
||||
title: "添加表单",
|
||||
href: "/SystemManage/Form/Form?ItemId=" + ItemId,
|
||||
});
|
||||
}
|
||||
else if (obj.event === 'delete') {
|
||||
if (data.length == 0) {
|
||||
common.modalMsg("未选中数据", "warning");
|
||||
return false;
|
||||
}
|
||||
common.deleteForm({
|
||||
url: "/SystemManage/Form/DeleteForm",
|
||||
param: { keyValue: data[0].F_Id },
|
||||
success: function () {
|
||||
common.reload('data-search-btn');
|
||||
entity = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
else if (obj.event === 'edit') {
|
||||
if (data.length == 0) {
|
||||
common.modalMsg("未选中数据", "warning");
|
||||
return false;
|
||||
}
|
||||
common.openNewTabByIframe({
|
||||
title: "编辑表单",
|
||||
href: "/SystemManage/Form/Form?keyValue=" + data[0].F_Id,
|
||||
});
|
||||
}
|
||||
else if (obj.event === 'details') {
|
||||
if (data.length == 0) {
|
||||
common.modalMsg("未选中数据", "warning");
|
||||
return false;
|
||||
}
|
||||
common.modalOpen({
|
||||
title: "预览表单",
|
||||
url: "/SystemManage/Form/Details?keyValue=" + data[0].F_Id,
|
||||
width: "600px",
|
||||
height: "600px",
|
||||
btn: []
|
||||
});
|
||||
}
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
Reference in New Issue
Block a user