first commit

This commit is contained in:
2025-06-25 10:53:11 +08:00
commit 9f374011ae
1240 changed files with 181139 additions and 0 deletions
+176
View File
@@ -0,0 +1,176 @@
<form class="layui-form page-content p-4">
<h3 class="h3-title">录入账号</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">账号类型<font>*</font></td>
<td>
<select
name="category"
lay-verify="required"
lay-reqText="请选择账号类型"
class="layui-select"
lay-search=""
lay-filter="category"
></select>
</td>
<td class="layui-td-gray-2">账号渠道<font>*</font></td>
<td colspan="3">
<select
name="channel"
lay-verify="required"
lay-reqText="请选择账号渠道"
class="layui-select"
lay-search=""
lay-filter="channel"
></select>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">电子邮箱<font>*</font></td>
<td>
<input
type="text"
name="email"
lay-verify="required"
lay-reqText="请输入电子邮箱"
placeholder="请输入电子邮箱"
class="layui-input"
value=""
/>
</td>
<td class="layui-td-gray-2">创建手机号<font>*</font></td>
<td colspan="3">
<input
type="text"
name="regphone"
lay-verify="required"
lay-reqText="请输入创建手机号"
placeholder="请输入创建手机号"
class="layui-input"
value=""
/>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">账号<font>*</font></td>
<td>
<input
type="text"
name="account"
lay-verify="required"
lay-reqText="请输入账号"
placeholder="请输入账号"
class="layui-input"
value=""
/>
</td>
<td class="layui-td-gray-2">密码<font>*</font></td>
<td>
<input
type="text"
name="pwd"
lay-verify="required"
lay-reqText="请输入密码"
placeholder="请输入密码"
class="layui-input"
value=""
/>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">备注<font>*</font></td>
<td colspan="3">
<textarea
type="text"
name="remark"
lay-verify="required"
lay-reqText="请输入备注"
placeholder="请输入备注"
class="layui-input"
value=""
style="height: 200px"
/>
</td>
</tr>
</table>
<div class="pt-1">
<input type="hidden" name="id" value="0" />
<button
class="layui-btn layui-btn-normal"
lay-submit=""
lay-filter="webform"
>
立即提交
</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<script>
layui.use(["form", "layer"], function () {
var form = layui.form,
layer = layui.layer;
// 获取帐户类别
fetch("/account/index/getaddcategory")
.then((response) => response.json())
.then((data) => {
var select = document.querySelector('select[name="category"]');
select.innerHTML = '<option value="">请选择账号类型</option>';
data.forEach((category) => {
var option = document.createElement("option");
option.value = category.id;
option.innerText = category.category;
select.appendChild(option);
});
form.render("select");
})
.catch((error) => {
console.error("Error:", error);
});
// 获取帐户渠道
fetch("/account/index/getaddchannel")
.then((response) => response.json())
.then((data) => {
var select = document.querySelector('select[name="channel"]');
select.innerHTML = '<option value="">请选择账号渠道</option>';
data.forEach((channel) => {
var option = document.createElement("option");
option.value = channel.id;
option.innerText = channel.channel;
select.appendChild(option);
});
form.render("select");
})
.catch((error) => {
console.error("Error:", error);
});
// 监听提交事件
form.on("submit(webform)", function (data) {
// 发送请求并处理响应
fetch("/account/index/add", {
method: "POST",
body: JSON.stringify(data.field),
headers: {
"Content-Type": "application/json",
},
})
.then((response) => response.json())
.then((result) => {
layer.msg(result.msg);
if (result.code === 2) {
setTimeout(function () {
document.querySelector("form").reset(); // Reset the form
location.reload(); // 刷新页面
}, 1000);
}
});
return false;
});
});
</script>
+125
View File
@@ -0,0 +1,125 @@
<form class="layui-form page-content p-4">
<h3 class="h3-title">增加账号类型</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">账号类型<font>*</font></td>
<td>
<input
type="text"
name="category"
lay-verify="required"
lay-reqText="请输入账号类型"
placeholder="请输入账号类型"
class="layui-input"
value=""
/>
</td>
</tr>
</table>
<div class="pt-1">
<input type="hidden" name="id" value="0" />
<button
class="layui-btn layui-btn-normal"
lay-submit=""
lay-filter="webform"
>
立即提交
</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<div class="tablelist" style="padding: 20px">
<h3 class="h3-title">账号类型列表</h3>
<table class="layui-table" lay-filter="tablelist" id="categoryList"></table>
</div>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail"
>查看</a
>
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">删除</a>
</script>
<script>
layui.use(['table', 'form', 'layer'], function () {
var table = layui.table;
var form = layui.form;
var layer = layui.layer;
// 获取账号渠道列表
function getAccountCategoryList(pageNumber, pageSize) {
var url = "/account/index/getaccountcategory";
table.render({
elem: "#categoryList",
url: url,
page: {
curr: pageNumber ? pageNumber : 1,
limit: pageSize ? pageSize : 10,
},
limit: pageSize ? pageSize : 10,
cols: [
[
{ field: "id", title: "ID" },
{ field: "category", title: "账号类型" },
{
title: "操作",
align: "center",
width: 180,
minWidth: 125,
toolbar: "#barDemo",
},
],
],
});
}
function openInit() {
form.render();
// 监听提交
form.on("submit(webform)", function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 2) {
layui.tool.close(1000);
}
};
layui.tool.post("/account/index/add_category", data.field, callback);
return false;
});
// 初始化账号渠道列表
getAccountCategoryList();
}
openInit();
// 监听工具条
table.on('tool(tablelist)', function (obj) {
var data = obj.data;
console.log(obj.event);
if (obj.event === 'detail') {
layer.msg('ID' + data.id + ' 的查看操作');
} else if (obj.event === 'delete') {
layer.confirm('确定要删除该账号渠道吗?', function (index) {
let callback = function (e) {
console.log('e.code:', e.code);
if (e.code == 1) {
obj.del();
layer.msg('删除成功');
} else {
layer.msg('删除失败');
}
};
layui.tool.post('/account/index/del_account_category', { id: data.id }, callback);
layer.close(index);
});
} else if (obj.event === 'edit') {
layer.alert('编辑行:<br>' + JSON.stringify(data));
}
});
});
</script>
+123
View File
@@ -0,0 +1,123 @@
<form class="layui-form page-content p-4">
<h3 class="h3-title">增加账号渠道</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">账号渠道<font>*</font></td>
<td>
<input
type="text"
name="channel"
lay-verify="required"
lay-reqText="请输入账号渠道"
placeholder="请输入账号渠道"
class="layui-input"
value=""
/>
</td>
</tr>
</table>
<div class="pt-1">
<input type="hidden" name="id" value="0" />
<button
class="layui-btn layui-btn-normal"
lay-submit=""
lay-filter="webform"
>
立即提交
</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<div class="tablelist" style="padding: 20px">
<h3 class="h3-title">账号渠道列表</h3>
<table class="layui-table" lay-filter="tablelist" id="channelList"></table>
</div>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">删除</a>
</script>
<script>
layui.use(['table', 'form', 'layer'], function () {
var table = layui.table;
var form = layui.form;
var layer = layui.layer;
// 获取账号渠道列表
function getAccountChannelList(pageNumber, pageSize) {
var url = "/account/index/getaccountchannel";
table.render({
elem: "#channelList",
url: url,
page: {
curr: pageNumber ? pageNumber : 1,
limit: pageSize ? pageSize : 10,
},
limit: pageSize ? pageSize : 10,
cols: [
[
{ field: "id", title: "ID" },
{ field: "channel", title: "账号渠道" },
{
title: "操作",
align: "center",
width: 180,
minWidth: 125,
toolbar: "#barDemo",
},
],
],
});
}
function openInit() {
form.render();
// 监听提交
form.on("submit(webform)", function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 2) {
layui.tool.close(1000);
}
};
layui.tool.post("/account/index/add_channel", data.field, callback);
return false;
});
// 初始化账号渠道列表
getAccountChannelList();
}
openInit();
// 监听工具条
table.on('tool(tablelist)', function (obj) {
var data = obj.data;
console.log(obj.event);
if (obj.event === 'detail') {
layer.msg('ID' + data.id + ' 的查看操作');
} else if (obj.event === 'delete') {
layer.confirm('确定要删除该账号渠道吗?', function (index) {
let callback = function (e) {
console.log('e.code:', e.code);
if (e.code == 1) {
obj.del();
layer.msg('删除成功');
} else {
layer.msg('删除失败');
}
};
layui.tool.post('/account/index/del_account_channel', { id: data.id }, callback);
layer.close(index);
});
} else if (obj.event === 'edit') {
layer.alert('编辑行:<br>' + JSON.stringify(data));
}
});
});
</script>
+154
View File
@@ -0,0 +1,154 @@
<form class="layui-form page-content p-4">
<h3 class="h3-title">账号信息</h3>
<input type="hidden" value="{$detail.id}" id="id">
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">账号渠道<font>*</font>
</td>
<td>
<select id="channel" name="channel" lay-verify="required" lay-reqText="" class="layui-select" lay-search=""
lay-filter="channel"></select>
</td>
<td class="layui-td-gray-2">账号类型<font>*</font>
</td>
<td colspan="3">
<select id="category" name="cate" lay-verify="required" lay-reqText="" class="layui-select" lay-search=""
lay-filter="category"></select>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">电子邮箱<font>*</font>
</td>
<td>
<input id="email" type="text" name="email" lay-verify="required" lay-reqText="" placeholder=""
class="layui-input" value="{$detail.email}" />
</td>
<td class="layui-td-gray-2">创建手机号
</td>
<td colspan="3">
<input id="regphone" type="text" name="regphone" lay-verify="" lay-reqText="" placeholder="" class="layui-input"
value="{$detail.regphone}" />
</td>
</tr>
<tr>
<td class="layui-td-gray-2">账号<font>*</font>
</td>
<td>
<input id="account" type="text" name="account" lay-verify="required" lay-reqText="" placeholder=""
class="layui-input" value="{$detail.account}" />
</td>
<td class="layui-td-gray-2">密码<font>*</font>
</td>
<td colspan="3">
<input id="pwd" type="text" name="pwd" lay-verify="required" lay-reqText="" placeholder="" class="layui-input"
value="{$detail.pwd}" />
</td>
</tr>
<tr>
<td class="layui-td-gray-2">备注
</td>
<td colspan="4">
<textarea id="remark" name="remark" lay-verify="" lay-reqText="" placeholder="" class="layui-textarea">{$detail.remark}</textarea>
</td>
</tr>
</table>
<div class="pt-1">
<!-- <input type="hidden" name="id" value="0" /> -->
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">
立即提交
</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<script>
layui.use(["form", "layer"], function () {
var laydate = layui.laydate;
var form = layui.form,
$ = layui.jquery,
layer = layui.layer;
// 获取账号渠道
fetch("/account/index/getaccountchannelall")
.then((response) => response.json())
.then((data) => {
var select = document.querySelector('select[name="channel"]');
select.innerHTML = '<option value="">请选择项目类型</option>';
data.data.forEach((channel) => {
var option = document.createElement("option");
option.value = channel.id;
option.innerText = channel.channel;
select.appendChild(option);
});
// 设置账号渠道的值
select.value = '{$detail.channel}';
form.render("select");
})
.catch((error) => {
console.error("Error:", error);
});
// 获取账号类型
fetch("/account/index/getaccountcategory")
.then((response) => response.json())
.then((data) => {
var select = document.querySelector('select[name="cate"]');
select.innerHTML = '<option value="">请选择项目类型</option>';
data.data.forEach((category) => {
var option = document.createElement("option");
option.value = category.id;
option.innerText = category.category;
select.appendChild(option);
});
// 设置账号类型的值
select.value = '{$detail.category}';
form.render("select");
})
.catch((error) => {
console.error("Error:", error);
});
// 监听提交事件
form.on("submit(webform)", function (data) {
// 获取当前时间并格式化
var updateTime = new Date().toISOString();
var idValue = document.getElementById('id').value;
console.log('输出:' + idValue);
console.log('账号:' + document.getElementById('account').value);
// 发送请求并处理响应
fetch("/account/index/edit?id=" + idValue, {
method: "POST",
body: JSON.stringify({
id: idValue,
category: document.getElementById('category').value,
channel: document.getElementById('channel').value,
email: document.getElementById('email').value,
regphone: document.getElementById('regphone').value,
account: document.querySelector('input[name="account"]').value,
pwd: document.getElementById('pwd').value,
remark: document.getElementById('remark').value,
update_time: updateTime,
}),
headers: {
"Content-Type": "application/json",
},
})
.then((response) => response.json())
.then((result) => {
layer.msg(result.msg);
if (result.code === 2) {
setTimeout(function () {
document.querySelector("form").reset();
location.reload(); // 刷新页面
}, 1000);
}
});
return false;
});
});
</script>
+255
View File
@@ -0,0 +1,255 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/application/nav/index"><cite>应用</cite></a>
<a><cite>账号管理</cite></a>
</span>
{/block} {block name="body"}
<div class="table-content p-3">
<div class="layui-form-bar border-t border-x">
<button class="layui-btn layui-btn-sm add-new">+ 录入账号</button>
<button class="layui-btn layui-btn-sm" id="refresh-btn">刷新</button>
<button class="layui-btn layui-btn-sm add-category">增加类型</button>
<button class="layui-btn layui-btn-sm add-channel">增加渠道</button>
</div>
<table class="layui-hide" id="account" lay-filter="account"></table>
</div>
{/block}
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ["tool", "gouguEdit", "gouguComment"];
function gouguInit() {
var table = layui.table;
var tool = layui.tool;
// 刷新按钮
$("#refresh-btn").on("click", function () {
location.reload();
});
//录入账号按钮
$(".add-new").on("click", function () {
tool.open("/account/index/add");
});
//增加类型按钮
$(".add-category").on("click", function () {
tool.open("/account/index/add_category");
});
//增加渠道按钮
$(".add-channel").on("click", function () {
tool.open("/account/index/add_channel");
});
table.on('tool(account)', function (obj) {
var data = obj.data; // 获取当前行的数据
// console.log(data);
if (obj.event === 'edit') {
var id = data.id; // 获取当前行数据的id
var url = '/account/index/edit?id=' + id;
tool.open(url);
} else if (obj.event === 'delete') {
layui.layer.confirm(
"确定删除该账号吗?",
{ icon: 3, title: "提示" },
function (index) {
$.post(
"/account/index/delete",
{ id: data.id },
function (res) {
if (res.code === 0) {
// layui.layer.msg("删除成功");
layui.layer.msg(res.msg);
obj.del(); // 删除表格中的对应行数据
} else {
// layui.layer.msg("删除失败");
layui.layer.msg(res.msg);
}
}
);
layui.layer.close(index);
}
);
}
});
function loadTableData() {
layui.pageTable.reload();
}
layui.pageTable = table.render({
elem: "#account",
title: "账号列表",
cellMinWidth: 80,
url: "/account/index/index", // 数据接口
page: true, // 开启分页
limit: 20,
height: "full-130",
cols: [
[
{ field: "checkbox", type: "checkbox" }, // 添加复选框列
// {
// field: "id",
// title: "ID",
// width: 80,
// align: "center",
// rowspan: 2,
// templet: function (d) {
// var html = "A - " + d.id;
// return html;
// },
// },
{
field: "channel",
title: "账号渠道",
align: "center",
width: 200,
rowspan: 2,
templet: function (d) {
var html =
'<span class="a1-' + d.channel + '">' + d.channel + "</span>";
return html;
},
},
{
field: "category",
title: "账号类型",
width: 120,
align: "center",
rowspan: 2,
templet: function (d) {
var html =
'<span class="a1-' + d.category + '">' + d.category + "</span>";
return html;
},
},
{
field: "email",
title: "电子邮箱",
width: 200,
align: "center",
rowspan: 2,
templet: function (d) {
var html =
'<span class="a1-' + d.email + '">' + d.email + "</span>";
return html;
},
},
{
field: "regphone",
title: "创建手机号",
width: 120,
align: "center",
rowspan: 2,
templet: function (d) {
var html =
'<span class="a1-' + d.regphone + '">' + d.regphone + "</span>";
return html;
},
},
{
field: "account",
title: "账号",
align: "center",
width: 180,
rowspan: 2,
templet: function (d) {
var html =
'<span class="a1-' + d.account + '">' + d.account + "</span>";
return html;
},
},
{
field: "pwd",
title: "密码",
align: "center",
width: 180,
rowspan: 2,
templet: function (d) {
var html = '<span class="a1-' + d.pwd + '">' + d.pwd + "</span>";
return html;
},
},
{
field: "remark",
title: "备注",
align: "center",
rowspan: 2,
templet: function (d) {
var html =
'<span class="a1-' + d.remark + '">' + d.remark + "</span>";
return html;
},
},
{
field: "create_time",
title: "创建时间",
align: "center",
width: 180,
rowspan: 2,
},
{
title: "操作",
align: "center",
width: 180,
minWidth: 125,
toolbar: "#barDemo",
},
],
],
done: function () {
// 获取右边列表的高度
var rightListHeight = $(
".table-content .layui-table-view .layui-table-body"
).height();
// 将右边列表的高度应用到图片编号这一列的每条数据上
$(".layui-table-view .layui-table-body .layui-table-cell").each(
function () {
var $cell = $(this);
if ($cell.text().startsWith("P")) {
// 判断是否是图片编号列
var $leftCell = $cell
.parents("tr")
.find(".layui-table-cell")
.first(); // 找到左侧图片编号列对应的单元格
$leftCell.css("height", rightListHeight + "px");
}
}
);
// 重新渲染表格,以解决表格高度问题
layui.table.resize("account");
// 绑定点击事件
$(".open-a").on("click", function () {
var imgUrl = $(this).attr("src");
// 创建图层并显示大图
layer.open({
type: 1,
title: false,
closeBtn: 1,
skin: "layui-layer-nobg", // 没有背景色
shadeClose: true,
content: '<img src="' + imgUrl + '" style="max-width: 100%;">',
});
});
},
});
}
</script>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-xs " lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="delete">删除</a>
</script>
{/block}
+148
View File
@@ -0,0 +1,148 @@
<form class="layui-form page-content p-4">
<h3 class="h3-title">账号信息</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">项目名称<font>*</font>
</td>
<td>
<input type="text" name="name" lay-verify="required" lay-reqText="请输入项目名称" placeholder="请输入项目名称"
class="layui-input" value="" />
</td>
<td class="layui-td-gray-2">项目类型<font>*</font>
</td>
<td colspan="3">
<select name="cate" lay-verify="required" lay-reqText="请选择项目类型" class="layui-select" lay-search=""
lay-filter="cate"></select>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">重要程度<font>*</font>
</td>
<td>
<select name="important" lay-verify="required" lay-reqText="请选择项目类型" class="layui-select" lay-search=""
lay-filter="important">
<option value="1"></option>
<option value="2">★★</option>
<option value="3">★★★</option>
<option value="4">★★★★</option>
<option value="5">★★★★★</option>
</select>
</td>
<td class="layui-td-gray-2">项目金额
</td>
<td colspan="3">
<input type="text" name="price" lay-verify="" lay-reqText="请输入项目金额" placeholder="请输入项目金额,例如:20000.10"
class="layui-input" value="" />
</td>
</tr>
<tr>
<td class="layui-td-gray-2">计划年份<font>*</font>
</td>
<td>
<input type="text" name="year" lay-verify="required" lay-reqText="请输入" placeholder="例如:2024" class="layui-input"
value="" />
</td>
<td class="layui-td-gray-2">负责人<font>*</font>
</td>
<td colspan="3">
<input type="text" name="responsible" lay-verify="required" lay-reqText="请输入" placeholder="请输入"
class="layui-input" value="" />
</td>
</tr>
<tr>
<td class="layui-td-gray-2">开始时间
</td>
<td>
<input type="text" name="start_time" lay-verify="" lay-reqText="请选择开始时间" placeholder="请选择开始时间"
class="layui-input" value="" id="start_time" />
</td>
<td class="layui-td-gray-2">结束时间
</td>
<td colspan="3">
<input type="text" name="end_time" lay-verify="" lay-reqText="请选择结束时间" placeholder="请选择结束时间"
class="layui-input" value="" id="end_time" />
</td>
</tr>
<tr>
<td class="layui-td-gray-2">计划进度
</td>
<td colspan="4">
<textarea name="schedule" lay-verify="" lay-reqText="请输入" placeholder="请输入项目进度" class="layui-textarea"
value=""></textarea>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">备注
</td>
<td colspan="4">
<textarea name="schedule" lay-verify="" lay-reqText="请输入" placeholder="请输入备注" class="layui-textarea"
value=""></textarea>
</td>
</tr>
</table>
<div class="pt-1">
<input type="hidden" name="id" value="0" />
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">
立即提交
</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<script>
layui.use(["form", "layer"], function () {
var laydate = layui.laydate;
var form = layui.form,
layer = layui.layer;
laydate.render({
elem: '#start_time',
});
laydate.render({
elem: '#end_time',
});
// 获取项目类别
fetch("/plan/index/getprojectcate")
.then((response) => response.json())
.then((data) => {
var select = document.querySelector('select[name="cate"]');
select.innerHTML = '<option value="">请选择项目类型</option>';
data.data.forEach((cate) => {
var option = document.createElement("option");
option.value = cate.id;
option.innerText = cate.cate;
select.appendChild(option);
});
form.render("select");
})
.catch((error) => {
console.error("Error:", error);
});
// 监听提交事件
form.on("submit(webform)", function (data) {
// 发送请求并处理响应
fetch("/plan/index/add", {
method: "POST",
body: JSON.stringify(data.field),
headers: {
"Content-Type": "application/json",
},
})
.then((response) => response.json())
.then((result) => {
layer.msg(result.msg);
if (result.code === 2) {
setTimeout(function () {
document.querySelector("form").reset(); // Reset the form
location.reload(); // 刷新页面
}, 1000);
}
});
return false;
});
});
</script>