first commit

This commit is contained in:
2026-07-23 09:40:36 +08:00
commit 090abf48fa
989 changed files with 145728 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-page">
<h3 class="pb-3">自定义模块</h3>
<table class="layui-table layui-table-form">
<tr>
<td colspan="4"><strong class="red">注意:自定义模块目录不能和已有的模块目录相同,尽量使用个性化的目录,防止后期可能与官网新推出模块的目录相同,引起升级不必要的麻烦。</strong></td>
</tr>
<tr>
<td class="layui-td-gray">模块名称<font>*</font></td>
<td>
<input type="hidden" name="id" value="{$id}" />
<input type="hidden" name="type" value="3" />
<input type="hidden" name="sourse" value="2" />
<input type="text" name="title" lay-verify="required" autocomplete="off" placeholder="请输入模块名称" lay-reqText="请输入模块名称" class="layui-input" value="{$module.title|default=''}">
</td>
<td class="layui-td-gray-2">模块所在目录<font>*</font></td>
<td>
<input type="text" name="name" lay-verify="required" autocomplete="off" placeholder="请输入模块所在目录" lay-reqText="请输入模块所在目录" class="layui-input" value="{$module.name|default=''}">
</td>
</tr>
<tr>
<td class="layui-td-gray">模块描述</td>
<td colspan="3">
<textarea name="desc" placeholder="请输入模块描述,不能超过200个字" class="layui-textarea">{$module.desc|default=''}</textarea>
</td>
</tr>
</table>
<div class="pt-4">
<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>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
var form = layui.form, tool = layui.tool;
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
setTimeout(function(){
parent.location.reload();
},1000)
}
}
tool.post("/home/module/add", data.field, callback);
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
+153
View File
@@ -0,0 +1,153 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<div class="p-page">
<div class="gg-form-bar border-t border-x">
<div class="pb-3"><button type="button" class="layui-btn layui-btn-sm side-a" data-href="/home/module/add">新增自定义模块</button>{empty name="$oa_module"}<span class="ml-3 red">温馨提示:可能是网络或其他原因未能请求到官网的模块数据,但不影响系统的正常使用。</span>{/empty}</div>
</div>
<table cellspacing="0" cellpadding="0" border="0" class="layui-table layui-table-form">
<tr>
<th style="text-align: center; background-color:#FAFAFA">模块名称</th>
<th style="text-align: center; background-color:#FAFAFA">模块所在目录</th>
<th style="text-align: center; background-color:#FAFAFA">功能描述</th>
<th style="text-align: center; background-color:#FAFAFA">类型</th>
<th style="text-align: center; background-color:#FAFAFA">开发者</th>
<th style="text-align: center; background-color:#FAFAFA">状态</th>
<th style="text-align: center; background-color:#FAFAFA; width:90px">操作</th>
</tr>
{empty name="sys_module"}
<tr>
<td colspan="7" align="center">暂无数据</td>
</tr>
{/empty}
{volist name="sys_module" id="vo" key="k"}
<tr>
<td align="center">{$vo.title}</td>
<td>app/{$vo.name}</td>
<td>{$vo.desc}</td>
<td align="center">
{eq name="$vo.type" value="1"}<span class="red">系统模块</span>{/eq}
{eq name="$vo.type" value="2"}<span class="blue">普通模块</span>{/eq}
{eq name="$vo.type" value="3"}<span class="green">自定义模块</span>{/eq}
</td>
<td align="center">
{eq name="$vo.sourse" value="1"}勾股OA{/eq}
{eq name="$vo.sourse" value="2"}第三方{/eq}
</td>
{eq name="$vo.status" value="-1"}
<td align="center">
<span class="red">未安装</span>
</td>
<td align="center">
<div class="layui-btn-group">
{eq name = "$vo.is_file" value="0"}
<a class="layui-btn layui-btn-xs down" href="https://www.gougucms.com/home/pages/detail/s/gouguoa.html" target="_blank">下载</a>
{/eq}
{eq name = "$vo.is_file" value="1"}
<a class="layui-btn layui-btn-xs install" data-name="{$vo.name}">安装</a>
{/eq}
<a class="layui-btn layui-btn-normal layui-btn-xs view" href="https://www.gougucms.com/home/pages/detail/s/gouguoa.html" target="_blank">演示</a>
</div>
</td>
{/eq}
{eq name="$vo.status" value="0"}
<td align="center">
<span class="yellow">已卸载</span>
</td>
<td align="center">
<div class="layui-btn-group">
{eq name="$vo.sourse" value="2"}<a class="layui-btn layui-bg-blue layui-btn-xs side-a" data-href="/home/module/add/id/{$vo.id}">编辑</a>{/eq}
<a class="layui-btn layui-btn-xs add" data-name="{$vo.name}" data-type="{$vo.type}">恢复</a>
</div>
</td>
{/eq}
{eq name="$vo.status" value="1"}
<td align="center">
<span class="green">正常</span>
</td>
<td align="center">
{eq name="$vo.type" value="3"}
<div class="layui-btn-group">
<a class="layui-btn layui-bg-blue layui-btn-xs side-a" data-href="/home/module/add/id/{$vo.id}">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs delete" data-name="{$vo.name}" data-id="{$vo.id}" data-type="{$vo.type}">删除</a>
</div>
{else/}
-
{/eq}
</td>
{/eq}
</tr>
{/volist}
</table>
</div>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
var tool = layui.tool;
$('body').on('click', '.install', function () {
let name = $(this).data('name');
layer.confirm('确定要安装该模块吗?', { icon: 3, title: '提示' }, function (index) {
//layer.msg('该功能内测中...');
//return false;
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layer.close(index);
location.reload();
}
}
tool.post("/home/module/install", {name: name}, callback);
layer.close(index);
});
});
$('body').on('click', '.delete', function () {
let id = $(this).data('id');
let name = $(this).data('name');
let type = $(this).data('type');
if(type==1){
layer.msg('系统模块,不支持卸载');
return false;
}
layer.confirm('确定要删除该模块吗?', { icon: 3, title: '提示' }, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layer.close(index);
setTimeout(function(){
parent.location.reload();
},1000)
}
}
tool.post("/home/module/del",{id: id}, callback);
layer.close(index);
});
});
$('body').on('click', '.add', function () {
let name = $(this).data('name');
let type = $(this).data('type');
layer.confirm('确定要恢复使用该模块吗?', { icon: 3, title: '提示' }, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layer.close(index);
setTimeout(function(){
parent.location.reload();
},1000)
}
}
tool.post("/home/module/recovery",{name: name}, callback);
layer.close(index);
});
});
}
</script>
{/block}
<!-- /脚本 -->