1
0
mirror of https://gitee.com/bookshelfplus/bookshelfplus synced 2025-09-02 23:23:28 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
Files
bookshelfplus/bookshelfplus-frontend/views/dashboard/form.html

156 lines
5.5 KiB
HTML

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<%- include("./component/header.html"); %>
<style>
#container-controls {
display: grid;
grid-template-columns: auto 1fr;
gap: 20px;
place-items: center right;
}
#container-controls>.form-labels {
font-size: 1.05em;
font-family: cursive;
}
#container-controls>.form-elements {
height: 30px;
width: 100%;
font-size: 18px;
}
#container-submit {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
padding: 0 30%;
margin-top: 30px;
}
.btn {
height: 30px;
}
</style>
</head>
<body>
<%- include("./component/navbar.html"); %>
<main class="main">
<h1><%= title %></h1>
<% if (typeof(subpage) !== "undefined") { %>
<p><a href="<%= pageUrl %>../">返回上一级</a></p>
<% } %>
<div id="container">
<div id="container-controls">页面加载中,请稍候 ...</div>
<div id="container-submit">
<button class="btn" id="btn-submit">提交</button>
<button class="btn" id="btn-clear" disabled="true">清空</button>
</div>
</div>
</main>
<!-- 获取参数 -->
<script src="/assets/javascripts/getParams.js"></script>
<!-- 验证组件用户输入值 -->
<script src="/assets/javascripts/dashboard/getValidateUtils.js"></script>
<!-- 渲染组件 -->
<script src="/assets/javascripts/dashboard/renderFormControls.js"></script>
<% if ( pageTemplate != "" ) { %>
<!-- 引入对应页面渲染配置 -->
<%- include(pageTemplate); %>
<% } %>
<!-- 进行渲染 -->
<script>
var group = '<%= group %>';
var page = '<%= page %>';
var title = '<%= title %>';
var controlsProfile = {};
async function renderFormControlsFunc() {
// 获取将要渲染的 Controls
controlsProfile = await getControlsProfile(getValidateUtils);
// 渲染控件
var formControls = renderFormControls({ Controls: controlsProfile });
console.log(formControls);
// 将控件填充到网页上
var containerControls = document.getElementById('container-controls');
containerControls.innerHTML = "";
formControls.forEach(function (item) {
containerControls.appendChild(item.label);
containerControls.appendChild(item.control);
});
}
// 渲染控件
renderFormControlsFunc();
// 提交表单事件
function formSubmit({
type = 'POST',
url = '',
data = {},
success = (response) => { console.log(response) }
}) {
var data = data || {};
for (var i = 0; i < controlsProfile.length; i++) {
const controlsProfileItem = controlsProfile[i];
var control = document.getElementById(controlsProfileItem.attr.id);
// 判断 control 是否为空
if (!control) {
alert("控件不存在:" + controlsProfileItem.attr.id);
return;
}
var name = control.name;
var value = control.value;
// console.log("name:", name, "value:", value, "control:", control);
var validateResult = controlsProfileItem.validate(value);
if (validateResult.result) {
data[name] = value;
} else {
alert(validateResult.msg);
control.focus();
return;
}
}
// var controls = document.getElementsByClassName('form-elements');
// for (var i = 0; i < controls.length; i++) {
// var control = controls[i];
// var name = control.name;
// var value = control.value;
// data[name] = value;
// }
// 添加管理员 token 信息
data['token'] = localStorageUtils.getToken();
console.log(data);
postRequest(url, data)
.then(function (responseData) {
var axiosData = responseData.data;
var status = axiosData.status;
var data = axiosData.data;
if (status === "success") {
success(data);
} else {
alert(`出错啦!${data.errMsg} (错误码: ${data.errCode}) `);
if (data.errCode == "20004") {
// 登录过期
localStorageUtils.userLogout();
location.href = "/login?redirect=" + encodeURIComponent(location.pathname + location.search);
}
}
}).catch(function (error) {
console.log(error);
alert("无法连接到服务器,请检查网络连接!");
}).finally(function () {
$("#favorties-button").css("visibility", "visible");
});
}
// 绑定提交按钮事件
$("#btn-submit").click(btnSubmitClick);
</script>
<%- include("./component/footer.html"); %>
</body>
</html>