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
+119
View File
@@ -0,0 +1,119 @@
<div class="layui-upload">
<div class="layui-upload-list">
<table class="layui-table">
<thead>
<tr>
<th>文件名</th>
<th>大小</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody id="demoList"></tbody>
</table>
</div>
<div class="uploaddemo">
<div class="layui-upload-drag" id="testList">
<i class="layui-icon">&#xe67c;</i> 直接拖拽文件到这里
</div>
</div>
<div class="uploadbtn">
<button type="button" class="layui-btn" id="testListAction">开始上传</button>
</div>
</div>
<script src="{__STATIC__}/jquery.min.js"></script>
<script src="{__METE__}/layui/layui.js"></script>
<link rel="stylesheet" href="{__METE__}/layui/css/layui.css" />
<link rel="stylesheet" href="{__METE__CSS__}/style.css" />
<script>
layui.use(["upload", "element"], function () {
var upload = layui.upload;
var element = layui.element;
//多文件列表示例
var demoListView = $("#demoList"),
uploadListIns = upload.render({
elem: "#testList", // 修改为拖拽区域
url: "/api/index/upload_picbed",
accept: "file", //文件类型
multiple: true,
auto: false,
bindAction: "#testListAction",
choose: function (obj) {
var files = (this.files = obj.pushFile());
//读取本地文件
obj.preview(function (index, file, result) {
var tr = $(
[
'<tr id="upload-' + index + '">',
"<td>" + file.name + "</td>",
"<td>" + (file.size / 1024).toFixed(1) + "kb</td>",
"<td>等待上传</td>",
"<td>",
'<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>',
'<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>',
"</td>",
"</tr>",
].join("")
);
//单个重传
tr.find(".demo-reload").on("click", function () {
obj.upload(index, file);
});
//删除
tr.find(".demo-delete").on("click", function () {
delete files[index]; //删除对应的文件
tr.remove();
uploadListIns.config.elem.next()[0].value = ""; //再次渲染上传框
});
demoListView.append(tr);
});
},
done: function (res, index, upload) {
var tr = demoListView.find("tr#upload-" + index);
var tds = tr.children();
if (res.code === 200) {
// 关闭提示框
layer.closeAll("msg");
// 上传成功
tds.eq(2).html('<span style="color: #5FB878;">' + res.msg + '</span>'); // 显示成功消息
tds.eq(3).html(""); // 清空操作
delete this.files[index]; // 删除文件队列已经上传成功的文件
// 显示上传成功提示
layui.layer.msg("上传成功", {
time: 1000, //设定1秒后自动关闭
end: function() {
location.reload(); // 刷新页面
}
});
} else {
// 上传失败
tds.eq(2).html('<span style="color: #FF5722;">上传失败</span>');
tds.eq(3).find(".demo-reload").removeClass("layui-hide"); //显示重传
// 显示上传失败提示
layui.layer.msg("上传失败");
}
},
error: function (index, upload, res) {
var tr = demoListView.find("tr#upload-" + index),
tds = tr.children();
tds.eq(2).html('<span style="color: #FF5722;">上传失败</span>');
tds.eq(3).find(".demo-reload").removeClass("layui-hide"); //显示重传
// 显示上传失败提示
layui.layer.msg("上传失败");
},
});
});
</script>
+70
View File
@@ -0,0 +1,70 @@
<link rel="stylesheet" href="{__METE__CSS__}/style.css">
<link rel="stylesheet" href="{__METE__}/layui/css/layui.css" />
<script src="{__METE__}/layui/layui.js"></script>
<!-- 主体 -->
<div class="create-folder">
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">相册名称</label>
<div class="layui-input-block">
<input type="text" name="name" lay-verify="required" placeholder="请输入相册名称" autocomplete="off"
class="layui-input" required>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<input type="text" name="sort" lay-verify="required" placeholder="排序" autocomplete="off"
class="layui-input">
</div>
</div>
</form>
<div class="btnbar">
<button type="button" class="layui-btn" id="createfolder">创建相册</button>
</div>
</div>
<!-- 主体 -->
<script>
// 监听创建相册按钮点击事件
document.getElementById('createfolder').onclick = function () {
var folderName = document.getElementsByName('name')[0].value;
var folderSort = document.getElementsByName('sort')[0].value;
// 检查相册名称是否为空
if (!folderName) {
layui.layer.msg('相册名称不能为空!');
return; // 终止提交
}
// 创建相册接口
fetch('/picbed/index/createfolder', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ name: folderName, sort: folderSort })
})
.then(response => response.json())
.then(data => {
// 处理成功响应
if (data.code === 0) {
layui.layer.msg(data.msg);
setTimeout(function () { // 添加延时关闭
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}, 2000); // 2秒后关闭
} else {
layui.layer.msg(data.msg);
}
})
.catch(error => {
// 处理错误
console.error('Error:', error);
});
};
</script>
+121
View File
@@ -0,0 +1,121 @@
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title></title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<link rel="stylesheet" href="/layui/css/layui.css" media="all" />
<style>
body{margin: 10px;}
</style>
</head>
<body class="childrenBody">
<form class="layui-form changePwd">
<input type="hidden" name="id" id="id" th:value="${id}">
<div class="layui-form-item">
<label class="layui-form-label">姓名</label>
<div class="layui-input-block">
<input type="text" name="name" value="" placeholder="姓名" id="name" lay-verify="required|name" class="layui-input pwd">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">性别</label>
<div class="layui-input-block">
<input type="radio" name="sex" value="0" title="女" checked="">
<input type="radio" name="sex" value="1" title="男" >
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">年龄</label>
<div class="layui-input-block">
<input type="text" name="age" value="" placeholder="年龄" id="age" class="layui-input pwd">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="*">保存</button>
<button type="button" class="layui-btn layui-btn-primary" onclick="layerclose();">关闭</button>
</div>
</div>
</form>
<script type="text/javascript" src="/layui/layui.js"></script>
<script type="text/javascript" src="/js/jquery-3.3.1.min.js"></script>
<script>
$(function(){
var id = $("#id").val();
if(id != ""){
$.ajax({
url: "/user/queryById",
data:{"id":id},
dataType:"json",
success: function(data){
$("#name").val(data.name);
$("#age").val(data.age);
$("input[name='sex']").eq(data.sex).attr("checked",'checked');
},error:function(){
}
});
}
})
function layerclose() {
layui.use(['layer' ], function() {
var layer = layui.layer;
var index=parent.layer.getFrameIndex(window.name);//获取当前弹出层的层级
parent.layer.close(index);//关闭弹出层
location.reload();//刷新父页面
})
}
layui.use(['form','layer' ], function() {
var form = layui.form;
var layer = layui.layer;
// 添加验证规则
form.verify({
name : function(value, item) {
value = value.trim();
if (value.length < 0) {
return "请输入教师名称";
}
}
});
form.on('submit(*)', function(data) {
var index = layer.msg('提交中,请稍候',{icon: 16,time:false,shade:0.8});
var d = data.field;
var url = "/user/add";
if(d.id != ""){
url = "/user/edit";
}
$.ajax({
url: url,
data:d,
dataType:"text",
success: function(data){
layer.close(index);
if(data == 0){
layer.msg("保存成功!");
parent.queryTea();
parent.close();
}else{
layer.msg("保存失败!");
}
},error:function(){
layer.close(index);
layer.msg("保存失败!");
}
});
return false;
});
});
</script>
</body>
</html>
+426
View File
@@ -0,0 +1,426 @@
{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" lay-on="test-page-wrap">
上传文件
</button>
<button class="layui-btn layui-btn-sm" id="create-folder" lay-on="create-folder">
创建文件夹
</button>
<button class="layui-btn layui-btn-sm" id="batchmove-folder" lay-on="batchmove-folder">
批量移动
</button>
<button class="layui-btn layui-btn-sm" id="select-all" lay-on="select-all">
全选
</button>
<input type="text" id="folder-url" placeholder="输入文件夹链接地址" class="layui-input" />
</div>
<div class="layui-tab layui-tab-brief">
<ul class="layui-tab-title" id="folder-tabs">
<li class="layui-this" data-id="all">未分类</li>
</ul>
<div class="card-container" id="tab-content">
<div class="layui-tab-item layui-show" id="content-all">
</div>
</div>
</div>
</div>
<button class="layui-btn layui-btn-sm" id="go-to-top">
回到顶部
</button>
{/block}
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ["tool", "gouguEdit", "gouguComment"];
let currentPage = 1;
function gouguInit() {
var table = layui.table;
var tool = layui.tool;
var tool = layui.laypage;
// 复制路径
$("body").on("click", ".copy-path", function () {
var path = $(this).parents(".card-item").find("img").attr("src");
if (path) {
copyToClipboard(path);
layui.layer.msg("复制成功");
} else {
layui.layer.msg("复制失败");
}
});
// 在脚本中添加获取文件夹链接地址的功能
$("#folder-url").on("input", function () {
var folderUrl = $(this).val(); // 获取输入的链接地址
// 这里可以添加逻辑来处理 folderUrl,例如调用 getfloderfiles() 接口
console.log("输入的文件夹链接地址: ", folderUrl); // 调试输出
});
// 新增获取文件夹文件的接口
function getFolderFiles(folderId) {
$.get(`/picbed/index/getfloderfiles`, { folder_id: folderId }, function (res) {
if (res.code === 0) {
console.log("文件列表: ", res.data); // 处理文件列表
} else {
layui.layer.msg(res.msg);
}
});
}
// 监听文件夹链接输入框变化
$("#folder-url").on("change", function () {
var folderId = $(this).val(); // 假设输入的是文件夹ID
if (folderId) {
getFolderFiles(folderId); // 调用接口获取文件
}
});
// 下载文件
$("body").on("click", ".action-item.download", function () {
var path = $(this).parents(".card-item").find("img").attr("src");
if (path) {
var domain = window.location.origin + '/'; // 获取当前域名
var fullPath = new URL(path, domain).href; // 拼接完整路径
console.log("下载路径: ", fullPath); // 调试路径
fetch(fullPath)
.then(response => response.blob())
.then(blob => {
var link = document.createElement("a");
link.href = URL.createObjectURL(blob);
link.setAttribute('download', path.split('/').pop()); // 使用文件名作为下载名
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
})
.catch(() => {
layui.layer.msg("下载失败,无法获取文件");
});
} else {
layui.layer.msg("下载失败,路径不存在");
}
});
// 监听删除按钮点击事件
$("body").on("click", ".action-item.delete", function () {
var cardItem = $(this).closest(".card-item");
var id = cardItem.data("id"); // 获取文件 ID
layui.layer.confirm(
"确定删除该文件吗?",
{ icon: 3, title: "提示" },
function (index) {
$.ajax({
url: "/picbed/index/delete",
type: "POST",
data: { id: id },
success: function (res) {
if (res.code === 0) {
layui.layer.msg(res.msg);
cardItem.remove(); // 从 DOM 中删除该卡片
} else {
layui.layer.msg(res.msg);
}
},
error: function () {
layui.layer.msg("删除失败,请重试");
}
});
layui.layer.close(index);
}
);
});
// 复制文本到剪贴板
function copyToClipboard(text) {
var el = document.createElement("textarea");
el.value = text;
el.setAttribute("readonly", "");
el.style.position = "absolute";
el.style.left = "-9999px";
document.body.appendChild(el);
el.select();
document.execCommand("copy");
document.body.removeChild(el);
}
// 上传文件
$(".add-new").on("click", function () {
layer.open({
type: 2,
title: "上传文件",
content: "/picbed/index/add",
area: ["800px", "600px"],
maxmin: true,
});
});
$('.layui-form-bar').on('click', '.add-new', function () {
tool.open('/project/index/add');
});
// 创建文件夹
$("#create-folder").on("click", function () {
layer.open({
type: 2,
title: "创建文件夹",
shadeClose: true,
content: "/picbed/index/createfolder",
area: ["800px", "300px"],
maxmin: true,
end: function () { // 添加关闭回调
loadTableData(currentPage); // 重新加载数据
}
});
});
// 移动图片到文件夹
$(document).on("click", ".action-item.move", function () {
var currentImageId = $(this).closest(".card-item").data("id"); // 获取当前图片的ID
layer.open({
type: 2,
title: "移动文件",
shadeClose: true,
content: "/picbed/index/movefolder?imageId=" + currentImageId, // 传递当前图片ID
area: ["800px", "400px"],
maxmin: true,
end: function () { // 添加关闭回调
loadTableData(currentPage); // 重新加载数据
}
});
});
// 批量移动到文件夹
$(document).on("click", "#batchmove-folder", function () {
var selectedIds = []; // 初始化选中的ID数组
$(".select-item:checked").each(function () {
selectedIds.push($(this).data("id")); // 获取选中的ID
});
if (selectedIds.length === 0) {
layui.layer.msg("请至少选择一个文件进行移动"); // 提示用户选择文件
return;
}
layer.open({
type: 2,
title: "批量移动文件",
shadeClose: true,
content: "/picbed/index/movefolder?imageIds=" + selectedIds.join(","), // 传递选中的ID
area: ["800px", "400px"],
maxmin: true,
end: function () { // 添加关闭回调
loadTableData(currentPage); // 重新加载数据
}
});
});
$("#refresh-btn").on("click", function () {
loadTableData(currentPage);
});
// 加载相册标签和内容
function loadFolderTabs() {
$.get("/picbed/index/getpicbedfolder", function (res) {
if (res.code === 0) {
var tabs = $("#folder-tabs");
var tabContent = $("#tab-content");
tabs.empty();
tabContent.empty();
// 添加固定的全部标签
tabs.append(`<li class="layui-this" data-id="all">未分类</li>`);
tabContent.append(`<div class="layui-tab-item layui-show" id="content-all"></div>`); // 全部内容
res.data.forEach(function (folder) {
tabs.append(`<li data-id="${folder.id}">${folder.name}</li>`); // 动态添加标签
tabContent.append(`<div class="layui-tab-item" id="content-${folder.id}"></div>`); // 动态添加内容
});
// 绑定点击事件
tabs.children().on("click", function () {
var id = $(this).data("id");
loadTabContent(id); // 加载对应的内容
loadTableData(currentPage, id); // 传递 id 以获取特定相册的数据
});
// 默认加载全部内容
loadTabContent("all");
} else {
layui.layer.msg(res.msg);
}
});
}
// 加载特定标签的内容
function loadTabContent(id) {
if (id === "all") {
loadTableData(currentPage); // 加载全部内容
} else {
$.get(`/picbed/index/index`, { folder: id }, function (res) { // 修改为传递参数
if (res.code === 0) {
$(`#content-${id}`).html(res.data); // 更新对应标签的内容
} else {
layui.layer.msg(res.msg);
}
});
}
}
// 获取所有员工信息
function loadEmployeeNames() {
return $.get('/api/index/getallstaff').then(function (res) {
if (res.code === 0) {
// 构建员工 ID 和名称的映射
return res.data.reduce((map, employee) => {
map[employee.id] = employee.name;
return map;
}, {});
}
return {};
});
}
// 加载数据
function loadTableData(page = null, folder = "all") {
const params = {}; // 初始化参数对象
if (folder) {
params.folder = folder; // 添加 folder 参数
}
$.get("/picbed/index/index", params, function (res) {
if (res.code === 0) {
var container = $("#content-all");
container.empty();
var domain = window.location.origin;
// 调用接口获取员工名称
loadEmployeeNames().then(employeeMap => {
res.data.forEach(function (item) {
var card = `
<div class="card-item" data-id="${item.id}">
<div class="items">
<div class="img-ids">
<div>
<input type="checkbox" class="select-item" data-id="${item.id}">
编号:<strong>${item.id}</strong>
上传者:<strong>${employeeMap[item.admin_id] || '未知'}</strong> <!-- 更新为员工名称 -->
</div>
</div>
<div class="item-image">
<img src="${domain}/${item.path}" alt="">
</div>
<div class="item-name">
<div class="path-row">
<div class="path-value">${item.name}</div>
</div>
<div class="action-row">
<div class="action-item copy-path">复制</div>
<div class="action-item download">下载</div>
<div class="action-item move">移动</div>
<div class="action-item delete">删除</div>
</div>
</div>
</div>
</div>
`;
container.append(card);
});
$('#pagination').hide(); // 隐藏分页
});
} else {
layui.layer.msg(res.msg);
$('#pagination').hide(); // 隐藏分页
}
});
}
// 初始加载数据
loadTableData(currentPage);
loadFolderTabs();
$(document).on("click", ".item-image img", function () {
var src = $(this).attr("src");
// 使用layer弹窗展示图片,自适应大小,无背景、边框和阴影
layer.open({
type: 1, // 弹窗类型
title: false, // 不显示标题
shadeClose: true, // 点击遮罩关闭
area: 'auto', // 弹窗大小自适应内容
shade: [0.8, '#000'], // 透明度为0.8的黑色遮罩
content: `<div id="zoom-container" style="display: flex; justify-content: center; align-items: center; background: transparent; border: none;">
<img id="zoom-img" src="${src}" style="max-width: 100%; max-height: 100%; object-fit: contain;">
</div>`,
skin: 'layui-layer-no-shadow' // 自定义皮肤,移除阴影
});
// 添加自定义样式,移除box-shadow
$('.layui-layer-no-shadow').css({
'box-shadow': 'none', // 移除阴影
'background': 'transparent', // 透明背景
'border': 'none', // 无边框
});
// 实现图片通过滚轮放大缩小的功能
var zoomLevel = 1;
var img = $('.layui-layer-page'); // 修改为动态选择
img.on('wheel', function (event) {
if (event.originalEvent.deltaY < 0) {
zoomLevel += 0.1; // 滚轮向上放大
} else {
zoomLevel = Math.max(0.1, zoomLevel - 0.1); // 滚轮向下缩小,最小缩放比例为0.1
}
img.css('transform', `scale(${zoomLevel})`);
event.preventDefault(); // 阻止默认滚动行为
});
});
// 回到顶部功能
$("#go-to-top").on("click", function () {
$('html, body').animate({ scrollTop: 0 }, 500); // 平滑滚动到顶部
});
// 显示或隐藏回到顶部按钮
$(window).on("scroll", function () {
if ($(this).scrollTop() > 200) {
$("#go-to-top").fadeIn();
} else {
$("#go-to-top").fadeOut();
}
});
// 全选功能
$("#select-all").on("click", function () {
var isChecked = $(this).hasClass("selected"); // 检查当前状态
$(".select-item").prop("checked", !isChecked); // 切换所有选择框状态
$(this).toggleClass("selected"); // 切换全选按钮状态
});
// 监听点击事件,选择当前数据
$(document).on("click", ".img-ids, .select-item", function (event) {
// 阻止事件冒泡,避免重复触发
event.stopPropagation();
var checkbox = $(this).find(".select-item");
if ($(this).hasClass("select-item")) {
checkbox.prop("checked", !checkbox.prop("checked")); // 切换选择状态
} else {
checkbox.prop("checked", !checkbox.prop("checked")); // 切换选择状态
}
});
}
</script>
{/block}
+94
View File
@@ -0,0 +1,94 @@
<link rel="stylesheet" href="{__METE__CSS__}/style.css">
<link rel="stylesheet" href="{__METE__}/layui/css/layui.css" />
<script src="{__METE__}/layui/layui.js"></script>
<!-- 主体 -->
<div class="create-folder">
<div class="layui-form layui-row layui-col-space16">
<div class="layui-form-item">
<label class="layui-form-label">当前数据id</label>
<div class="layui-input-block">
<input type="text" name="id" class="layui-input" id="current-image-id" disabled>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">单行选择框</label>
<div class="layui-input-block">
<select name="name" lay-filter="aihao">
<option value="">请选择</option>
</select>
</div>
</div>
</div>
<div class="btnbar">
<button type="button" class="layui-btn" id="movefolder">移动图片</button>
</div>
</div>
<!-- 主体 -->
<script>
document.addEventListener("DOMContentLoaded", function () {
// 获取URL中的imageId参数
const urlParams = new URLSearchParams(window.location.search);
const currentImageIds = urlParams.get('imageIds');
// 将获取到的ID赋值给输入框
document.getElementById('current-image-id').value = currentImageIds;
fetch('/picbed/index/getpicbedfolder')
.then(response => response.json())
.then(data => {
if (data.code === 0) {
const select = document.querySelector('select[name="name"]');
select.innerHTML = '<option value="">请选择</option>';
data.data.forEach(folder => {
const option = document.createElement('option');
option.value = folder.id;
option.textContent = folder.name;
select.appendChild(option);
});
layui.form.render('select');
} else {
layui.layer.msg(data.msg);
}
})
.catch(error => {
console.error('Error:', error);
layui.layer.msg('获取相册数据失败,请稍后重试。');
});
});
document.getElementById('movefolder').onclick = function (event) {
event.preventDefault(); // 阻止默认表单提交
const folderId = document.querySelector('select[name="name"]').value; // 获取相册ID
const imageIds = document.getElementById('current-image-id').value.split(','); // 从输入框获取多个图片的ID
fetch('/picbed/index/movefolder', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ folder: folderId, ids: imageIds }) // 提交相册ID和图片ID
})
.then(response => response.json())
.then(data => {
// 处理成功响应
if (data.code === 0) {
layui.layer.msg(data.msg);
setTimeout(function () { // 添加延时关闭
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
location.reload(); // 刷新界面
}, 1000); // 1秒后关闭
} else {
layui.layer.msg(data.msg);
}
})
.catch(error => {
// 处理错误
console.error('Error:', error);
});
};
</script>
+467
View File
@@ -0,0 +1,467 @@
<div class="page-content">
<div class="p-4 border-b">
<h3 class="h3-title hover-{$role_edit}">
<span id="name">商务信息 - </span>
<span id="name_{$detail.id}" data-val="">{$detail.name}</span>
<i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}" data-name="name"></i>
</h3>
<div>
<span class="layui-badge layui-bg-gray">#B{$detail.id}</span>
<span class="mx-2">{$detail.admin_name}</span>
<span class="font-gray">创建于{$detail.times}<span id="editTips">{gt name="$detail.update_time" value="0"},最近更新于 {:time_trans($detail.update_time)}{/gt}</span>
</span>
{eq name="$detail.admin_id" value="$params.uid"}
<span class="layui-btn layui-btn-xs layui-btn-danger ml-4" id="delBtn">
<i class="layui-icon">&#xe640;</i>删除
</span>
{/eq}
</div>
</div>
<div class="layui-row border-b">
<div class="layui-col-md9 p-4 border-r">
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">创建人</td>
<td colspan="5" class="hover-{$role_edit}">
<span >{$detail.admin_name}</span>
</td>
<td class="layui-td-gray">访问权限</td>
<td class="hover-{$role_edit}">
<span id="is_open_{$detail.id}" data-val="{$detail.is_open}">
{eq name="$detail.is_open" value="1" }
内部 <span class="font-gray">(仅创建人、对接人、可访问)</span>
{/eq}
{eq name="$detail.is_open" value="2" }公开 <span class="font-gray">(有对接权限员工均可访问)</span>{/eq}
</span>
<i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}" data-name="is_open"></i>
</td>
</tr>
<tr>
<td class="layui-td-gray">主要对接人</td>
<td colspan="5" class="hover-{$role_edit}">
<span id="director_uid_{$detail.id}" data-val="{$detail.director_uid}">{$detail.director_name}</span>
<i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}" data-name="director_uid"></i>
</td>
<td class="layui-td-gray">内部可对接人员</td>
<td colspan="5" class="hover-{$role_edit}">
<span id="check_admin_ids_{$detail.id}" data-val="{$detail.check_admin_ids}">{$detail.check_admin_names}</span>
<i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}" data-name="check_admin_ids"></i>
</td>
</tr>
</table>
<div class="md-content-content hover-{$role_edit}">
<h5 class="py-4">备注信息<i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}" data-name="md_content"></i></h5>
<div class="md_content" id="md_content_{$detail.id}" data-val="{$detail.md_content}">{$detail.md_content|raw}</div>
</div>
<div class="md-content-content hover-{$role_edit}">
<h5 class="py-4">联系人
<span data-method="setTop" id="contactadd" class="layui-btn layui-btn-xs layui-btn ml-4">
<i class="layui-icon">&#xe640;</i>新增
</span>
</h5>
<table class="layui-table">
<thead>
<tr>
<th width="10%" style="text-align:center">联系人</th>
<th width="10%" style="text-align:center">职务</th>
<th width="15%" style="text-align:center">电话</th>
<th width="15%" style="text-align:center">邮箱</th>
<th width="10%" style="text-align:center">微信</th>
<th width="10%" style="text-align:center">QQ</th>
<th width="10%" style="text-align:center">创建人</th>
<th width="20%" style="text-align:center">操作</th>
</tr>
</thead>
<tbody id="contactList">
{volist name="contact_array" id="vo"}
<tr data-id="{$vo.id}" id="contact_{$vo.id}">
<td style="text-align: center;">{$vo.contact}</td>
<td style="text-align: center;">{$vo.post}</td>
<td style="text-align: center;">{$vo.phone}</td>
<td style="text-align: center;">{$vo.email}</td>
<td style="text-align: center;">{$vo.wechat}</td>
<td style="text-align: center;">{$vo.qq}</td>
<td style="text-align: center;">{$detail.admin_name}</td>
<td style="text-align: center;">
<!-- <a class="layui-btn layui-btn-xs" id="contactedit" data-event="edit" data-id="1000">修改</a>-->
<a class="layui-btn layui-btn-xs" data-id="{$vo.id}" data-contact="{$vo.contact}" data-post="{$vo.post}" data-phone="{$vo.phone}" data-email="{$vo.email}" data-wechat="{$vo.wechat}" data-qq="{$vo.qq}" id="contactedit" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-xs" data-id="{$vo.id}" id="contactdel" >删除</a>
</td>
</tr>
{/volist}
{empty name="$contact_array" }
<tr>
<td colspan="8" class="content-none">暂无其他联系人</td>
</tr>
{/empty}
</tbody>
</table>
</div>
<div class="detail-file">
<h5 class="py-4">文件附件</h5>
<div>
{eq name="$role_edit" value="edit"}
<button type="button" class="layui-btn layui-btn-normal layui-btn-sm" id="flieBtn">选择文件并上传</button>
<span style="color:#FF5722; font-size:12px; margin-left: 8px;">上传前,请规范命名,最大只能上传{:get_system_info('upload_max_filesize')}的文件,超过请压缩成多个文件上传。</span>
<div class="layui-upload-list" {empty name="$file_array" }style="display:none;" {/empty}>
<table class="layui-table">
<thead>
<tr>
<th width="60%" style="text-align:center">文件名</th>
<th width="15%" style="text-align:center">文件大小</th>
<th width="10%" style="text-align:center">上传人</th>
<th width="15%" style="text-align:center">操作</th>
</tr>
</thead>
<tbody id="flieList">
{volist name="file_array" id="vo"}
<tr>
<td>{$vo.name}</td>
<td style="text-align: center;">{$vo.filesize/1048576|round=2}MB</td>
<td style="text-align: center;">{$vo.admin_name}</td>
<td style="text-align: center;">
<div class="layui-btn-group">
<a class="layui-btn layui-btn-xs "
href="{$vo.filepath}" download="{$vo.name}"
data-id="{$vo.id}">下载</a>
<span class="layui-btn layui-btn-xs layui-btn-danger file-delete" data-uid="{$vo.admin_id}" data-id="{$vo.id}">删除</span>
</div>
</td>
</tr>
{/volist}
</tbody>
</table>
</div>
{else/}
<table class="layui-table">
<thead>
<tr>
<th width="60%">文件名</th>
<th width="15%" style="text-align:center">文件大小</th>
<th width="10%" style="text-align:center">上传人</th>
<th width="15%" style="text-align:center">操作</th>
</tr>
</thead>
<tbody id="flieList">
{volist name="file_array" id="vo"}
<tr data-id="{$vo.id}" id="flie_{$vo.id}">
<td>{$vo.name}</td>
<td style="text-align: center;">{$vo.filesize/1048576|round=2}MB</td>
<td style="text-align: center;">{$vo.admin_name}</td>
<td style="text-align: center;">
<a class="layui-btn layui-btn-xs" href="{$vo.filepath}" download="{$vo.name}" data-id="{$vo.id}">下载</a>
</td>
</tr>
{/volist}
{empty name="$file_array" }
<tr>
<td colspan="4" class="content-none">暂无附件</td>
</tr>
{/empty}
</tbody>
</table>
{/eq}
</div>
</div>
<div class="detail-link">
<h5 class="py-4">关联链接</h5>
<div>
{eq name="$role_edit" value="edit"}
<button type="button" class="layui-btn layui-btn-sm" id="linkBtn">新增相关联链接</button>
<span style="color:#FF5722; font-size:12px; margin-left: 8px;">请规范填写链接说明,方便大家查阅。</span>
<div class="layui-upload-list" {empty name="$link_array" }style="display:none;" {/empty}>
<table class="layui-table">
<thead>
<tr>
<th width="60%">链接</th>
<th width="15%" style="text-align:center">说明</th>
<th width="10%" style="text-align:center">添加人</th>
<th width="15%" style="text-align:center">操作</th>
</tr>
</thead>
<tbody id="linkList">
{volist name="link_array" id="vo"}
<tr data-id="{$vo.id}" id="link_{$vo.id}">
<td>
<a href="{$vo.url}" target="_blank">{$vo.url}</a>
</td>
<td>{$vo.desc}</td>
<td style="text-align: center;">{$vo.admin_name}</td>
<td style="text-align: center;">
<div class="layui-btn-group">
<span class="layui-btn layui-btn-xs link-edit" data-id="{$vo.id}" data-url="{$vo.url}" data-desc="{$vo.desc}">编辑</span>
<span class="layui-btn layui-btn-xs layui-btn-danger link-delete" data-uid="{$vo.admin_id}" data-id="{$vo.id}">删除</span>
</div>
</td>
</tr>
{/volist}
</tbody>
</table>
</div>
{else/}
<table class="layui-table">
<thead>
<tr>
<th width="60%">链接</th>
<th width="30%" style="text-align:center">说明</th>
<th width="10%" style="text-align:center">添加人</th>
</tr>
</thead>
<tbody id="linkList">
{volist name="link_array" id="vo"}
<tr>
<td>
<a href="{$vo.url}" target="_blank">{$vo.url}</a>
</td>
<td>{$vo.desc}</td>
<td style="text-align: center;">{$vo.admin_name}</td>
</tr>
{/volist}
{empty name="$link_array" }
<tr>
<td colspan="3" class="content-none">暂无链接</td>
</tr>
{/empty}
</tbody>
</table>
{/eq}
</div>
</div>
</div>
</div>
<div class="layui-tab layui-tab-brief px-4" lay-filter="docDemoTabBrief">
<ul class="layui-tab-title">
<li class="layui-this">互动评论({$detail.comments})</li>
<li>操作日志({$detail.logs})</li>
</ul>
<div class="layui-tab-content p-0">
<div class="layui-tab-item comment-list layui-show">
<div class="comment-input my-2">
<input type="text" id="commentInput" readonly placeholder="发表一下你的看法" class="layui-input" value="">
</div>
<div id="comment_business_{$detail.id}"></div>
</div>
<div class="layui-tab-item logs-list">
<div id="log_business_{$detail.id}"></div>
</div>
</div>
</div>
</div>
<script>
function openInit() {
const detail_id = '{$detail.id}';
var layer = layui.layer, tool = layui.tool, edit = layui.gouguEdit, comment = layui.gouguComment,
upload = layui.upload;
$('.hover-edit').hover(function () {
$(this).addClass('hover-on');
}, function () {
$(this).removeClass('hover-on');
})
$('.hover-edit').on('click', 'i', function () {
let name = $(this).data('name');
let show_txt = $('#' + name + '_' + detail_id).text().replace(/[\r\n\t]/g, "");
let real_txt = $('#' + name + '_' + detail_id).data('val');
if (real_txt === '') {
real_txt = show_txt;
}
editShow(detail_id, name, show_txt, real_txt);
})
$('#delBtn').on('click', function () {
layer.confirm('确定要删除该产品吗?请慎重', {icon: 3, title: '提示'}, function (index) {
let callback = function (e) {
layer.closeAll();
layer.msg(e.msg);
if (e.code == 0) {
setTimeout(function () {
location.reload();
}, 1000)
}
}
let postData = {"id": detail_id};
tool.delete("/business/index/delete", postData, callback);
});
})
//添加联系人
$('#contactadd').on('click', function () {
comment.addContact(detail_id,'business');
})
//编辑联系人
$('#contactedit').on('click', function () {
let id = $(this).data('id');
let topic_id = $(this).data('topic_id');
let contact = $(this).data('contact');
let post = $(this).data('post');
let phone = $(this).data('phone');
let email = $(this).data('email');
let wechat = $(this).data('wechat');
let qq = $(this).data('qq');
comment.editContact(id,topic_id, detail_id, 'business', contact, post, phone, email, wechat, qq);
})
//删除联系人
$('#contactdel').on('click', function () {
let id = $(this).data('id');
layer.confirm('确定要删除该联系人吗?', {icon: 3, title: '提示'}, function (index) {
let callback = function (e) {
layer.closeAll();
layer.msg(e.msg);
tool.load("/business/index/view?id=" + detail_id);
}
let postData = {"id": id};
tool.delete("/api/business/delete_contact", postData, callback);
});
})
upload.render({
elem: '#flieBtn'
, url: '/api/index/upload'
, accept: 'file' //普通文件
, exts: 'jpeg|jpg|png|gif|doc|docx|ppt|pptx|xls|xlsx|pdf|zip|rar|7z' //只允许上传文件
, before: function (obj) {
layer.msg('上传中...', {time: 3600000});
}
, done: function (res, index, upload) {
let callback = function (e) {
layer.msg('上传成功');
tool.load("/business/index/view?id=" + detail_id);
}
let postData = {
'topic_id': detail_id,
'file_id': res.data.id,
'file_name': res.data.name,
'module': 'business'
};
tool.post("/api/appendix/add", postData, callback);
}
, error: function (index, upload) {
layer.msg('上传失败');
}
});
$('#flieList').on('click', '.file-delete', function () {
let id = $(this).data('id');
layer.confirm('确定要删除该附件吗?', {icon: 3, title: '提示'}, function (index) {
let callback = function (e) {
layer.closeAll();
layer.msg(e.msg);
tool.load("/business/index/view?id=" + detail_id);
}
let postData = {"id": id};
tool.delete("/api/appendix/delete", postData, callback);
});
})
$('#linkBtn').on('click', function () {
comment.addLink(0, detail_id, 'business', '', '');
})
$('#linkList').on('click', '.link-edit', function () {
let id = $(this).data('id');
let url = $(this).data('url');
let desc = $(this).data('desc');
comment.addLink(id, detail_id, 'business', url, desc);
})
$('#linkList').on('click', '.link-delete', function () {
let id = $(this).data('id');
layer.confirm('确定要删除该链接吗?', {icon: 3, title: '提示'}, function (index) {
let callback = function (e) {
layer.closeAll();
layer.msg(e.msg);
tool.load("/business/index/view?id=" + detail_id);
}
let postData = {"id": id};
tool.delete("/api/appendix/delete_link", postData, callback);
});
})
//评论
comment.load(detail_id, 'business');
$('#commentInput').on('click', function () {
comment.editor(0, detail_id, 0, 0, 'business', '');
})
//回复
$('#comment_business_' + detail_id).on('click', '[data-event="replay"]', function () {
let pid = $(this).data('id');
let padmin_id = $(this).data('uid');
comment.editor(0, detail_id, pid, padmin_id, 'business', '');
})
//编辑
$('#comment_business_' + detail_id).on('click', '[data-event="edit"]', function () {
let id = $(this).data('id');
let mdcontent = $('#comment_' + id).data('mdcontent');
comment.editor(id, detail_id, 0, 0, 'business', mdcontent);
})
//删除
$('#comment_business_' + detail_id).on('click', '[data-event="del"]', function () {
let id = $(this).data('id');
comment.del(id, detail_id, 'business');
})
//操作记录
comment.log(detail_id, 'business');
let loading = false;
let editPost = function (id, name, show_val, real_val) {
let callback = function (e) {
if (e.code == 0) {
layer.closeAll();
tool.load('/business/index/view/id/' + id);
if (layui.pageTable) {
setTimeout(function () {
layui.pageTable.reload();
}, 400)
}
} else {
layer.msg(e.msg);
}
}
let postData = {id: id};
postData[name] = real_val;
if (name == 'md_content') {
postData['content'] = show_val;
}
tool.post("/business/index/add", postData, callback);
}
function editShow(id, name, show_txt, real_txt) {
if (loading == true) {
return false;
}
if (name == "name") {
edit.text(id, name, real_txt, editPost);
}
if (name == "director_uid") {
edit.employee_one(id, name, show_txt, real_txt, editPost);
}
if (name == "check_admin_ids") {
edit.employee_more(id, name, show_txt, real_txt, editPost);
}
if (name == "is_open") {
let data = [
{'id': 1, 'title': '内部(仅创建人、对接人、可访问)'},
{'id': 2, 'title': '公开(有对接权限员工均可访问)'}
];
edit.select_type(id, name, real_txt, data, editPost);
}
if (name == "md_content") {
edit.editor(id, name, real_txt, editPost);
}
}
}
</script>