This commit is contained in:
2025-05-23 10:08:24 +08:00
förälder bef80caa1d
incheckning 70fde0ecac
7 ändrade filer med 486 tillägg och 161 borttagningar
+2
Visa fil
@@ -23,4 +23,6 @@ public class Bug {
private Date createDate;
private String answer;
private String images;
}
@@ -4059,11 +4059,11 @@ public class ProductService {
//工艺计算
if (!StringUtils.isEmpty(dto.getCraft())) {
List<String> craList = Arrays.asList(dto.getCraft());
if (craList.contains("双面覆哑膜")) {
for (Product product : priceList) {
product.setPrice(Math.ceil(product.getPrice() * 1.3));
}
}
// if (craList.contains("双面覆哑膜")) {
// for (Product product : priceList) {
// product.setPrice(Math.ceil(product.getPrice() * 1.3));
// }
// }
if (craList.contains("模切")) {
if (min < 3) {
+2
Visa fil
@@ -20,11 +20,13 @@
(id,
product,
bugRemark,
images,
createBy,
createDate)
VALUES (NULL,
#{product},
#{bugRemark},
#{images},
#{createBy},
now())
</insert>
File diff suppressed because one or more lines are too long
+29 -2
Visa fil
@@ -68,8 +68,10 @@
</div>
<p>工艺</p>
<div class="layui-input-block" style="display:inline-block;">
<input type="checkbox" name="craft" lay-filter="switch" value="双面覆哑膜" title="双面覆哑膜">
<input type="checkbox" class="craft_fm" name="craft" lay-filter="switch" value="双面覆哑膜" title="双面覆哑膜"
checked>
<input type="checkbox" name="craft" lay-filter="switchMQ" value="模切" title="异形模切">
<input type="checkbox" name="craft" lay-filter="switchMQ" value="裁切" title="裁切" checked>
<input type="radio" name="craftSMJ" value="配双面胶" title="配双面胶" checked>
</div>
<hr>
@@ -182,7 +184,27 @@
}
form.on('checkbox(switchMQ)', () => {
form.on('checkbox(switchMQ)', (data) => {
let craft = $("input[name='craft']:checked");
if (craft.length > 2) {
$(data.elem).next().attr("class", "layui-unselect layui-form-checkbox");
$(data.elem).prop("checked", false);
layer.msg('裁切-模切只能选[ 1 ]项!', {
offset: ['300px', '300px']
}, {icon: 5});
return false;
}
setRemark();
})
form.on('checkbox(switch)', (data) => {
if (!data.elem.checked) {
layer.msg('不能取消 [覆膜] 工艺!', {offset: ['300px', '300px']}, function () {
});
$('.craft_fm').prop('checked', true);
form.render('checkbox');
return false;
}
setRemark();
})
@@ -221,6 +243,11 @@
arr.push($(this).val());
}
});
if (arr.indexOf("模切") == -1 && arr.indexOf("裁切") == -1) {
layer.msg("模切-裁切必须选一个", {offset: ['300px', '300px']}, function () {
});
return false;
}
$.ajax({
url: "${path}/getThanSum",
type: "GET",
+231 -115
Visa fil
@@ -1,126 +1,242 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
pageEncoding="UTF-8" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>添加问题</title>
<%@include file="/views/common.jsp"%>
<link rel="stylesheet" href="${path}/static/css/formSelects-v4.css">
<style>
.layui-input,.layui-input-inline{
width:370px
}
.form .layui-form-label{
windth:100px;
}
.layui-upload-img{
height:200px;
width: 200px
}
</style>
<meta charset="UTF-8">
<title>添加问题</title>
<%@include file="/views/common.jsp" %>
<link rel="stylesheet" href="${path}/static/css/formSelects-v4.css">
<style>
.layui-input, .layui-input-inline {
width: 370px
}
.form .layui-form-label {
windth: 100px;
}
.layui-upload-img {
height: 200px;
width: 200px
}
</style>
</head>
<body>
<div style="padding: 20px; background-color: #F2F2F2;">
<div class="layui-row layui-col-space15">
<div class="layui-col-md3"></div>
<div class="layui-col-md6">
<div class="layui-card"
style="border-radius: 20px; border: 2px solid buttonface; box-shadow: 5px 5px 5px #F2F2F2 inset;">
<div class="layui-card-body">
<div class="layui-input-block layui-form" lay-filter="addUser"
style="margin-top: 30px">
<form class="layui-form form">
<div class="layui-form-item">
<label class="layui-form-label">问题页面</label>
<div class="layui-input-inline">
<input type="text" name="product" lay-verify="product"
placeholder="发现问题或不足的菜单" class="layui-input" id="product">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">情况说明</label>
<div class="layui-input-inline">
<div style="padding: 20px; background-color: #F2F2F2;">
<div class="layui-row layui-col-space15">
<div class="layui-col-md3"></div>
<div class="layui-col-md6">
<div class="layui-card"
style="border-radius: 20px; border: 2px solid buttonface; box-shadow: 5px 5px 5px #F2F2F2 inset;">
<div class="layui-card-body">
<div class="layui-input-block layui-form" lay-filter="addUser"
style="margin-top: 30px">
<form class="layui-form form">
<div class="layui-form-item">
<label class="layui-form-label">问题页面</label>
<div class="layui-input-inline">
<input type="text" name="product" lay-verify="product"
placeholder="发现问题或不足的菜单" class="layui-input" id="product">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">情况说明</label>
<div class="layui-input-inline">
<textarea rows="8" cols="50" name="bugRemark"
placeholder="说明" id="bugRemark"></textarea>
</div>
</div>
<button type="button" class="layui-btn" id="test2">多图片上传</button>
<blockquote class="layui-elem-quote layui-quote-nm"
style="margin-top: 10px; width: 450px">
预览图:
<div class="layui-upload-list" id="demo2" style="width: 600px"></div>
</blockquote>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="enadd">提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
</div>
</div>
<div style="height: 50px"></div>
</div>
<div class="layui-col-md3"></div>
</div>
</div>
<script>
layui.use([ 'form', 'layer','upload'],function() {
var $ = layui.$,
form = layui.form,
layer = layui.layer,
upload = layui.upload;
placeholder="说明" id="bugRemark"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上传图片</label>
<div class="layui-input-inline">
<input type="file" id="uploaderImage"/>
<input name="images" type="hidden" id="images"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" style="color: #FF5722">点击图片可以删除</label>
<div class="layui-input-inline" id="preview">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="enadd">提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
</div>
</div>
<div style="height: 50px"></div>
</div>
<div class="layui-col-md3"></div>
</div>
</div>
<script src="${path}/js/alioss.js"></script>
<script>
function delImage(index) {
layer.confirm('是否确认删除该图片', {
btn: ['确定', '关闭'] //按钮
}, function (layIndex) {
let textImage = $("#images").val();
let list = textImage == "" ? [] : textImage.split(",");
list.splice(index, 1);
$("#images").val(list.join(","));
previewImage($("#images").val());
layer.close(layIndex);
}, function () {
});
}
$("#images").val("");
$("#preview").empty();
const client = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: "oss-cn-fuzhou",
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: "LTAI5tE7wuNkeT9jZ42bQnyr",
accessKeySecret: "NnutvWhKl4HbQFSad3HosYbCkEkbjN",
// 填写存储空间名称。
bucket: "dfdiyfile",
endpoint: "https://oss-cn-fuzhou.aliyuncs.com",
});
function previewImage(textImage) {
let textImageList = textImage == "" ? [] : textImage.split(",");
let html = "";
textImageList.forEach((item, index) => {
if (item != "") {
html += "<img src='" + item + "' class='layui-upload-img' style='width: 50px;height: 50px;margin-right: 5px;' onclick='delImage(\"" + index + "\")'/>";
}
})
$("#preview").empty().append(html);
}
//监听提交
form.on('submit(enadd)', function(data) {
$.ajax({
url : '${path}/addBug',
dataType : 'json',
data : $(data.form).serialize(),
type : 'post',
success : function(data) {
if (data.code == 200) {
layer.msg('提交成功,谢谢您的反馈!', {
icon : 6,
offset : "auto",
time : 2000
});//提示框
$("#product").val("")
$("#bugRemark").val("")
form.render()
}else {
layer.msg('提交出错了!', {
icon : 5,
offset : "auto",
time : 2000
});//提示框
}
}
})
return false;
});
//多图片上传
upload.render({
elem: '#test2',
url: '${path}/bugUpload',
multiple: true,
data: {},
before: function(obj){
//预读本地文件示例,不支持ie8
obj.preview(function(index, file, result){
$('#demo2').append('<img src="'+ result +'" alt="'+ file.name +'"class="layui-upload-img">')
});
},
done: function(res){
console.log(res)
//上传完毕
}
});
})
</script>
async function putObject(file) {
try {
let fileDir = dateFtt("yyyyMMdd", new Date())
let name = "priceImages/" + fileDir + "/" + guid() + getSuff(file.name);
// 填写Object完整路径。Object完整路径中不能包含Bucket名称。
// 您可以通过自定义文件名(例如exampleobject.txt)或文件完整路径(例如exampledir/exampleobject.txt)的形式实现将数据上传到当前Bucket或Bucket中的指定目录。
// data对象可以自定义为file对象、Blob数据或者OSS Buffer。
const options = {
headers: {"Content-Type": "text/plain"},
};
const result = await client.put(name, file, options);
let textImage = $("#images").val();
let list = textImage == "" ? [] : textImage.split(",");
list.push(result.url);
$("#images").val(list.join(","));
previewImage($("#images").val());
} catch (e) {
console.log(e);
}
}
document.getElementById('uploaderImage').addEventListener('change', function (e) {
const file = e.target?.files[0];
putObject(file);
document.getElementById('uploaderImage').value = "";
});
function dateFtt(fmt, date) {
var o = {
"M+": date.getMonth() + 1, //月份
"d+": date.getDate(), //日
"h+": date.getHours(), //小时
"m+": date.getMinutes(), //分
"s+": date.getSeconds(), //秒
"q+": Math.floor((date.getMonth() + 3) / 3), //季度
"S": date.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
}
return fmt;
}
function getSuff(name) {
return name.substring(name.lastIndexOf("."));
}
function guid() {
return "xxxxxxxx-xxxx-4xxx-yxxx".replace(/[xy]/g, function (c) {
var r = (Math.random() * 16) | 0,
v = c == "x" ? r : (r & 0x3) | 0x8;
return v.toString(16);
});
}
layui.use(['form', 'layer', 'upload'], function () {
var $ = layui.$,
form = layui.form,
layer = layui.layer,
upload = layui.upload;
//监听提交
form.on('submit(enadd)', function (data) {
let fromData = $(data.form).serialize()
let data_list = fromData.split("&");
for (let i = 0; i < data_list.length; i++) {
let data_list_item = data_list[i].split("=");
if (data_list_item[0] == "product" && data_list_item[1] == "") {
layer.msg('请填写问题页面', {icon: 6, offset: "auto", time: 2000});//提示框
return false
}
if (data_list_item[0] == "bugRemark" && data_list_item[1] == "") {
layer.msg('请填写问题详情', {icon: 6, offset: "auto", time: 2000});//提示框
return false
}
if (data_list_item[0] == "images" && data_list_item[1] == "") {
layer.msg('请上传图片', {icon: 6, offset: "auto", time: 2000});//提示框
return false
}
}
$.ajax({
url: '${path}/addBug',
dataType: 'json',
data: fromData,
type: 'post',
success: function (data) {
if (data.code == 200) {
layer.msg('提交成功,谢谢您的反馈!', {
icon: 6,
offset: "auto",
time: 2000
});//提示框
$("#product").val("")
$("#bugRemark").val("")
$("#images").val("");
$("#preview").empty();
form.render()
} else {
layer.msg('提交出错了!', {
icon: 5,
offset: "auto",
time: 2000
});//提示框
}
}
})
return false;
});
})
</script>
</body>
</html>
+213 -39
Visa fil
@@ -1,51 +1,225 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
pageEncoding="UTF-8" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>bug列表</title>
<%@include file="/views/common.jsp"%>
<style type="text/css">
.layui-table-cell{
height:32px;
line-height:32px;
}
.layui-table td, .layui-table th,.layui-table-header, .layui-table-page,.layui-table-tool, .layui-table-total, .layui-table-view{
border-color:#6666;
font-size:16px;
}
</style>
<meta charset="UTF-8">
<title>bug列表</title>
<%@include file="/views/common.jsp" %>
<style type="text/css">
.layui-table-cell {
height: 32px;
line-height: 32px;
}
.layui-table td, .layui-table th, .layui-table-header, .layui-table-page, .layui-table-tool, .layui-table-total, .layui-table-view {
border-color: #6666;
font-size: 16px;
}
</style>
</head>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container demoTable">
<button class="layui-btn layui-btn-sm" lay-event="add" ><i class="layui-icon layui-icon-add-circle-fine" style="font-size:20px;font-weight:bold"></i> 提交问题</button>
</div>
<div class="layui-btn-container demoTable">
<button class="layui-btn layui-btn-sm" lay-event="add"><i class="layui-icon layui-icon-add-circle-fine"
style="font-size:20px;font-weight:bold"></i> 提交问题
</button>
</div>
</script>
<body>
<br>
<form class="layui-form">
<div class="layui-inline">
<label class="layui-form-label">真实姓名</label>
<div class="layui-input-inline">
<input type="text" id="realname" name="realname" placeholder="请输入真实姓名"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<button class="layui-btn" id="searchBtn" lay-submit
lay-filter="formDemo" style="margin-left: 15px">
<i class="layui-icon layui-icon-search"></i> 查询
</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
<table class="layui-hide" id="bugTable"lay-data="bugTable" lay-filter="bugTable"></table>
<script src="${path}/js/bug.js" charset="utf-8"></script>
<br>
<form class="layui-form">
<div class="layui-inline">
<label class="layui-form-label">真实姓名</label>
<div class="layui-input-inline">
<input type="text" id="realname" name="realname" placeholder="请输入真实姓名"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<button class="layui-btn" id="searchBtn" lay-submit
lay-filter="formDemo" style="margin-left: 15px">
<i class="layui-icon layui-icon-search"></i> 查询
</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
<table class="layui-hide" id="bugTable" lay-data="bugTable" lay-filter="bugTable"></table>
<script type="text/html" id="toolDemo">
<div class="layui-clear-space">
{{#if(role_list.indexOf(1) != -1){}}
<a class="layui-btn layui-btn-xs" lay-event="edit">回复</a>
{{#}}}
</div>
</script>
<script>
let role_list = [${sessionScope.USER_SESSION.role}];
function showImages(imagesText, index = 0) {
if (imagesText == null || imagesText == '') {
return;
}
let list = imagesText.split(',');
if (list.length == 0) {
return;
}
let data = [];
for (let i = 0; i < list.length; i++) {
data.push({
"alt": "图片" + i,
"src": list[i],
"ptid": i
});
}
layer.photos({
photos: {
"title": "Photos Demo",
"start": index,
"data": data
}
});
}
layui.use(['element', 'table', 'laydate', 'form'], function () {
var $ = layui.jquery;
var table = layui.table;
var laydate = layui.laydate;
var element = layui.element;
var form = layui.form;
// 生成表格
table.render({
elem: '#bugTable',
url: '../../../getBugs',
toolbar: '#toolbarDemo',
title: '系统问题表',// 导出文件名
id: 'bugTableAll',
// 开启分页
page: {
layout: ['count', 'prev', 'page', 'next', 'skip', 'limit']
},
/*request : {
'limitName' : 'pageSize' // 分页每页条数默认字段改为pageSize
},*/
where: {
username: '',
realname: ''
},
cellMinWidth: 80, // 全局定义常规单元格的最小宽度,layui 2.2.1 新增
cols: [[{
field: 'createBy',
width: 150,
title: '提交者'
}, {
field: 'bugRemark',
title: '问题'
}, {
field: 'images',
title: '图片',
templet: function (d) {
let html = ""
let images = d.images;
let list = !images ? [] : images?.split(',');
list.forEach((item, index) => {
html += '<img src="' + item + '" style="width: 20px;height: 20px;" onclick="showImages(\'' + images + '\',' + index + ')">'
})
return html;
}
}, {
field: 'answer',
title: '回复'
}, {
field: 'createDate',
title: '创建时间',
width: 180,
templet: function (d) {
return d.createDate != null ? layui.util.toDateString(d.createDate, "yyyy-MM-dd HH:mm:ss") : "";
}
}, {fixed: 'right', title: '操作', width: 134, minWidth: 125, toolbar: '#toolDemo'}]],
parseData: function (res) { //将原始数据解析成 table 组件所规定的数据
return {
"code": 0, //解析接口状态
"msg": "", //解析提示文本
"count": res.list.length,//解析数据长度
"data": res.list//解析数据列表
};
}
});
//点击查询按钮,重载表格
$('#searchBtn').on('click', function () {
table.reload('bugTableAll', {
method: 'post',
where: {
realname: $("#realname").val()
},
page: {
curr: 1
}
});
return false;
});
// 监听头部工作栏的 新增用户
table.on('toolbar(bugTable)', function (obj) {
var checkStatus = table.checkStatus(obj.config.id);
switch (obj.event) {
case 'add':
layer.open({
type: 2,
title: "提交问题",
fix: false, //不固定
maxmin: true,
area: ['45%', '70%'],
content: './addBug.jsp',
});
break;
}
;
});
table.on('tool(bugTable)', function (option) {
console.log(option)
switch (option.event) {
case 'edit':
layer.prompt({
title: '请输入回复内容',
formType: 2,
value: option.data.answer
}, function (value, index, elem) {
console.log(value, index, elem)
if (value === '') return elem.focus();
$.ajax({
url: '../../../updateBug',
dataType: 'json',
data: {
id: option.data.id,
answer: value
},
type: 'post',
success: function (data) {
if (data.code == 200) {
layer.msg('回复成功', {
icon: 6,
offset: "auto",
time: 2000
})
table.reload("bugTableAll");
layer.close(index);
}
}
})
// 关闭 prompt
});
break;
}
})
});
</script>
</body>
</html>