添加引导安装程序

This commit is contained in:
技术老胡
2024-11-26 15:43:31 +08:00
parent adf37650e6
commit 90b3b70dfb
7 changed files with 454 additions and 48 deletions

135
view/Install/index.html Normal file
View File

@@ -0,0 +1,135 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>程序安装</title>
<link rel="stylesheet" href="/component/pear/css/pear.css" />
<style>
</style>
</head>
<body>
<div class="layui-container" style="margin-top: 50px;">
<div class="layui-row">
<div class="layui-col-md8 layui-col-md-offset2">
<form class="layui-form">
<div class="layui-form-item">
<label class="layui-form-label">数据库地址</label>
<div class="layui-input-block">
<input type="text" name="host" required lay-verify="required" placeholder="请输入数据库地址"
autocomplete="off" class="layui-input" value="localhost">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">端口</label>
<div class="layui-input-block">
<input type="text" name="port" required lay-verify="required" placeholder="请输入数据库名称"
autocomplete="off" class="layui-input" value="3306">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">编码</label>
<div class="layui-input-block">
<input type="text" name="charset" required lay-verify="required" placeholder="请输入数据库名称"
autocomplete="off" class="layui-input" value="utf8mb4">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">数据库</label>
<div class="layui-input-block">
<input type="text" name="name" required lay-verify="required" placeholder="请输入数据库名称"
autocomplete="off" class="layui-input" value="">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">用户名</label>
<div class="layui-input-block">
<input type="text" name="user" required lay-verify="required" placeholder="请输入数据库用户名"
autocomplete="off" class="layui-input" value="root">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="password" name="pass" required lay-verify="required" placeholder="请输入数据库密码"
autocomplete="off" class="layui-input">
</div>
</div>
<hr style="margin: 24px 0px;" />
<div class="layui-form-item">
<label class="layui-form-label">管理员昵称</label>
<div class="layui-input-block">
<input type="text" name="nickname" required lay-verify="required" placeholder="请输入管理员昵称"
autocomplete="off" class="layui-input" value="管理大大">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">管理员账号</label>
<div class="layui-input-block">
<input type="text" name="username" required lay-verify="required" placeholder="请输入管理员用户名"
autocomplete="off" class="layui-input" value="admin">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">管理员密码</label>
<div class="layui-input-block">
<input type="password" name="password" required lay-verify="required" placeholder="请输入管理员密码"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formSubmit">立即安装</button>
</div>
</div>
</form>
</div>
</div>
</div>
<script src="/component/layui/layui.js"></script>
<script src="/component/pear/pear.js"></script>
<script>
layui.use(['form'], function () {
var form = layui.form;
var layer = layui.layer;
// 监听提交
form.on('submit(formSubmit)', function (data) {
const field = data.field;
// 提交表单
fetch('/install/install', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(field)
}).then(res => {
if (res.ok) {
return res.json();
}
throw new Error('数据库配置错误');
}).then(res => {
if (res.code == 0) {
layer.msg(res.msg, {
time: 1000,
end: () => {
window.location.href = '/User/login';
}
});
} else {
layer.msg(res.msg);
}
}).catch(err => {
layer.msg(err.message);
})
return false;
});
});
</script>
</body>
</html>

View File

@@ -16,14 +16,6 @@
<form id="set-user" class="layui-form layui-form-pane" action="" lay-filter="set-user">
<div class="mainBox">
<div class="main-container">
<div class="layui-form-item" pane>
<label class="layui-form-label">ID</label>
<div class="layui-input-block">
<div class="layui-form-mid inputTxt">
<?php echo $pid ?>
</div>
</div>
</div>
<div class="layui-form-item" pane>
<label class="layui-form-label">账号</label>
<div class="layui-input-block">
@@ -35,13 +27,18 @@
<div class="layui-form-item">
<label class="layui-form-label">昵称</label>
<div class="layui-input-block">
<input type="text" name="nickname" autocomplete="off" class="layui-input">
<input type="text" name="nickname" autocomplete="off" class="layui-input"
value="<?php echo $nickname ?>">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-item" pane>
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="text" name="password" autocomplete="off" class="layui-input">
<div class="layui-form-mid inputTxt" style="float: none;">
********
<a href="javascript:;" lay-on="changePw" style="float: right;" title="修改密码"><span
class="icon pear-icon pear-icon-edit"></span></a>
</div>
</div>
</div>
</div>
@@ -60,24 +57,51 @@
</div>
</div>
</form>
<script type="text/html" id="changePassWord">
<div class="main-container">
<form class="layui-form layui-form-pane">
<div class="layui-form-item">
<label class="layui-form-label">原密码</label>
<div class="layui-input-block">
<input type="password" name="old_password" required lay-verify="required" placeholder="请输入原密码"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">新密码</label>
<div class="layui-input-block">
<input type="password" name="new_password" required lay-verify="required" placeholder="请输入新密码"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">确认密码</label>
<div class="layui-input-block">
<input type="password" name="confirm_password" required lay-verify="required" placeholder="请再次输入新密码"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="changePassWord">确认修改</button>
</div>
</div>
</form>
</div>
</script>
<script src="/component/layui/layui.js"></script>
<script src="/component/pear/pear.js"></script>
<script>
layui.use(['form'], function () {
let form = layui.form;
form.val('set-user', {
"nickname": "<?php echo $nickname ?>",
"password": "<?php echo $password ?>",
});
let util = layui.util;
form.on('submit(user-save)', function (obj) {
let field = obj.field;
(async () => {
const url = '/api/User/editUser';
const info = field;
const res = await fetch(url, { method: 'post', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(info) });
const res = await fetch(url, { method: 'post', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ nickname: info.nickname }) });
if (res.status !== 200) {
layer.msg('请求失败,请重试!', { tips: 2, time: 1200 });
return false;
@@ -94,10 +118,55 @@
})()
return false;
});
util.on({
'changePw': (ele) => {
layer.open({
type: 1,
area: '350px',
resize: false,
shadeClose: true,
title: '修改密码',
content: document.getElementById('changePassWord').innerHTML,
success: () => {
form.on('submit(changePassWord)', (data) => {
var field = data.field;
// 检查新密码和确认密码是否一致
if (field.new_password !== field.confirm_password) {
layer.msg('新密码和确认密码不一致,请重新输入', { icon: 2 });
return false;
}
// 密码修改
(async () => {
const url = '/api/User/changePassword';
const info = { old_password: field.old_password, new_password: field.new_password };
const res = await fetch(url, {
method: 'post',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(info)
});
if (res.status !== 200) {
layer.msg('请求失败,请重试!', { tips: 2, time: 1200 });
return false;
}
const rec_info = await res.json();
if (rec_info.code === 0) {
layer.msg(rec_info.msg, { icon: 1, time: 1200 }, () => {
parent.layer.close(parent.layer.getFrameIndex(window.name)); //关闭当前页
parent.location.reload();
});
} else {
layer.msg(rec_info.msg, { icon: 2, time: 1200 });
}
})()
return false;
});
}
});
}
});
})
</script>
<script>
</script>
</body>
</html>