新增香薰卡工艺,新增插旗材质,新增刮刮卡烫金,新增优惠卷打码工艺,新增插卡工艺,修改外卖盒,修改贺卡价格,修改不干胶价格

This commit is contained in:
2026-01-19 15:57:57 +08:00
parent 6bb12bfc6a
commit 01d022ec76
8 changed files with 182 additions and 40 deletions
@@ -311,7 +311,7 @@ public class ProductService {
priceList = StickersDoublePrice.getPrice(length, width, count, number);
return priceList;
} else if ("插旗".equals(dto.getStickerKind())) {
if (!"250克白卡纸对裱".equals(kind)) {
if ("铜版纸不干胶".equals(kind)) {
dto.setKindValue("0");
dto.setLength(length);
dto.setWidth(width);
@@ -326,6 +326,19 @@ public class ProductService {
}
priceList = normalSticker(dto, "0", number, area, width, length, count, oldKind, priceList);
if (priceList.size() >= 3) {
priceList = priceList.subList(0, 3);
}
} else if ("PVC不干胶".equals(kind)) {
if (length > 20 && length < 21) {
length = Math.ceil(length);
area = length * width / 10000;
}
if (width > 20 && width < 21) {
width = Math.ceil(width);
area = length * width / 10000;
}
priceList = normalSticker(dto, "1", number, area, width, length, count, oldKind, priceList);
if (priceList.size() >= 3) {
priceList = priceList.subList(0, 3);
}
@@ -462,7 +475,7 @@ public class ProductService {
}
}
if ("覆哑膜".equals(dto.getCraftMo()) && !"1".equals(kind) && !("插旗".equals(dto.getStickerKind()) && "铜版纸不干胶".equals(kind))) {
if ("覆哑膜".equals(dto.getCraftMo()) && !"1".equals(kind) && !("插旗".equals(dto.getStickerKind()) && ("铜版纸不干胶".equals(kind) || "PVC不干胶".equals(kind)))) {
for (Product product : priceList) {
product.setPrice(Math.ceil(product.getPrice() * 1.2));
}
@@ -650,7 +663,25 @@ public class ProductService {
priceList = priceList.subList(0, 4);
}
List<String> crafts_list = dto.getCraft() != null ? Arrays.asList(dto.getCraft()) : new ArrayList<>();
if ("0".equals(kind) && (crafts_list.contains("击凸") || crafts_list.contains("压凹"))) {
priceList = new ArrayList<>();
Product product = new Product();
int[] counts = {200, 500, 1000, 2000, 3000, 5000, 10000, 20000, 30000};
double[] base_price = {180, 200, 220, 400, 550, 880, 1580, 2844, 4266};
int num = getNum(length, width);
for (int i = 0; i < counts.length; i++) {
product = new Product();
if (counts[i] < dto.getCount()) {
continue;
}
if (priceList.size() > 3) {
break;
}
product.setPrice(Math.ceil(base_price[i] * num * 0.9 * number));
product.setCount(counts[i]);
priceList.add(product);
}
}
// 根据款数重新算价格/计算重量
for (Product product : priceList) {
product.setPrice(Math.floor(product.getPrice() * number));
@@ -658,7 +689,6 @@ public class ProductService {
product.setPrice(Math.floor(product.getPrice() + Math.max(10, product.getCount() * 0.1)));
}
if (crafts_list.contains("弹力绳捆")) {
product.setPrice(Math.floor(product.getPrice() + Math.ceil(product.getCount() * 20.0 / 5000) * 10));
}
product.setWeight(df.format(number * length * width * product.getCount() * 0.00003));
@@ -706,10 +736,7 @@ public class ProductService {
dto.setLength(length);
dto.setWidth(width);
int tempNumber = dto.getNumber();
List<String> craftList = null;
if (!StringUtils.isEmpty(dto.getCraft())) {
craftList = new ArrayList<>(Arrays.asList(dto.getCraft()));
}
List<String> craftList = !StringUtils.isEmpty(dto.getCraft()) ? new ArrayList<>(Arrays.asList(dto.getCraft())) : new ArrayList<>();
Boolean isMq = false;
if (craftList.contains("模切")) {
dto.setNumber(1);
@@ -717,8 +744,15 @@ public class ProductService {
}
priceList = new CouponPrice().getCouponPrice(min, dto, priceList, count, craftList);
craftList.remove("模切");
dto.setCraft(craftList.toArray(new String[craftList.size()]));
// getCraft(dto, priceList, length * 10, width * 10, min);
List<String> tang_craft = new ArrayList<>();
if (craftList.contains("单面烫金")) {
tang_craft.add("单面烫金");
}
if (craftList.contains("双面烫金")) {
tang_craft.add("双面烫金");
}
dto.setCraft(tang_craft.toArray(new String[tang_craft.size()]));
getCraft(dto, priceList, length * 10, width * 10, min);
for (Product product : priceList) {
double carft_price = 0;
if (craftList.contains("压痕")) {
@@ -2500,7 +2534,7 @@ public class ProductService {
weight = 0.0;
switch (kind) {
case "0":
weight = 0.08;
weight = 0.157;
break;
case "1":
weight = 0.25;
@@ -2515,7 +2549,7 @@ public class ProductService {
// 根据款数重新算价格/计算重量
for (Product product : priceList) {
product.setPrice(Math.floor(product.getPrice() * number));
product.setWeight(df.format(number * length / 1000 * width / 1000 * product.getCount() * 0.86 * weight));
product.setWeight(df.format(number * length / 1000 * width / 1000 * product.getCount() * weight));
}
return priceList;
// 腰封200克/157克
@@ -5056,7 +5090,7 @@ public class ProductService {
{60, 70, 90, 100, 105, 110, 150, 200, 260, 430, 550, 690, 2020, 3080, 5950},
{83, 93, 113, 120, 124, 128, 200, 300, 371, 595, 779, 1041, 3108, 4866, 9669},
{83, 93, 113, 120, 124, 128, 200, 300, 371, 595, 779, 1041, 3108, 4866, 9669},
{153, 163, 203, 200, 200, 202, 250, 350, 450, 650, 850, 1150, 3250, 4950, 9990},
{153, 163, 200, 210, 220, 230, 250, 350, 450, 650, 850, 1150, 3250, 4950, 9990},
};
int j = 0;
if ("1".equals(dto.getKind())) {
@@ -5673,6 +5707,9 @@ public class ProductService {
double num = Math.ceil(dto.getCount() / max);
double craft_price = 0;
double bao_price = 0;
if (carftList.contains("打码")) {
bao_price += Math.max(Math.ceil(0.2 * dto.getCount() * dto.getNumber()), 15);
}
if (carftList.contains("单独包装")) {
bao_price += Math.ceil(0.2 * dto.getCount() * dto.getNumber());
}
@@ -5953,7 +5990,7 @@ public class ProductService {
{250, 250, 250, 250, 250, 250, 250, 250, 250, 266, 273, 275, 278, 330, 360, 370, 429, 442, 640, 655, 825, 877},
{370, 370, 370, 370, 370, 370, 370, 370, 370, 371, 372, 373, 375, 480, 500, 515, 545, 632, 800, 886, 1030, 1240},
{510, 510, 510, 510, 510, 510, 510, 510, 510, 589, 600, 605, 610, 750, 800, 820, 932, 1022, 1160, 1458, 1488, 2000},
{945, 945, 945, 945, 945, 945, 945, 945, 945, 1030, 1040, 1045, 1050, 1200, 1440, 1460, 1798, 2202, 2400, 2950, 3012, 4000},
{945, 945, 945, 945, 945, 945, 945, 945, 945, 1030, 1040, 1045, 1050, 1200, 1440, 1460, 1798, 2000, 2400, 2950, 3012, 4000},
};
int[] count_list = {200, 500, 1000, 2000, 3000, 5000, 10000};
double[] areas = {4, 16, 25, 30, 35, 36, 40, 45, 48.60, 49, 54, 64, 81, 97.20, 100, 145.80, 172.8, 194.4, 224, 288, 294, 400};
@@ -7293,6 +7330,9 @@ public class ProductService {
} else {
danjia = 0.1;
}
if(dto.getPcount() == 3){
danjia = 0.5;
}
if ("上下编码".equals(dto.getBianma())) {
for (Product product : priceList) {
product.setPrice(Math.ceil(product.getPrice() + (danjia * product.getCount() * 2 > 120 ? danjia * product.getCount() * 2 : 120)));
@@ -221,7 +221,7 @@ public class AStickersPrice {
List<Product> list = new ArrayList<Product>();
Product pro = new Product();
int bigCountArr[] = {500, 1000, 2000, 3000, 5000, 10000, 20000, 30000, 40000, 50000, 60000, 70000, 80000, 90000, 100000};
int priceArr[] = {56, 63, 84, 108, 150, 240, 456, 684, 912, 1125, 1350, 1575, 1800, 2025, 2250};
int priceArr[] = {65, 75, 100, 130, 180, 275, 515, 805, 1005, 1205, 1405, 1605, 1805, 2005, 2205};
if (count <= 40000) {
for (int i = 0; i < bigCountArr.length; i++) {
if (bigCountArr[i] < count || list.size() > 5) {
@@ -3442,6 +3442,7 @@ public class PriceUtils {
} else {
pro.setPrice(Math.ceil(price));
}
pro.setWeight(String.valueOf(df.format(width * length * 0.55 / 10000)));
pro.setCount(count);
list.add(pro);
@@ -106,6 +106,7 @@
<div class="layui-input-block">
常见工艺:
<input type="checkbox" name="craft" lay-filter="ui_craft" value="打孔" title="打孔">
<input type="checkbox" name="craft" lay-filter="ui_craft" value="打码" title="打码">
</div>
<div class="layui-input-block">
包装:
+9 -6
View File
@@ -118,6 +118,7 @@
<option value=""></option>
<option value="铜版纸不干胶">铜纸板不干胶</option>
<option value="250克白卡纸对裱">250克白卡纸对裱</option>
<option value="PVC不干胶">PVC不干胶</option>
</select>
</div>
</div>
@@ -782,7 +783,7 @@
if (TJValue == "彩色印刷") {
html += "广东:(2天发货) 中通 顺丰"
}
} else if (kindvalue == "铜版纸不干胶") {
} else if (kindvalue == "铜版纸不干胶" || kindvalue == "PVC不干胶") {
html += "广东:配牙签(16点前上传系统当天发货,16点后上传系统隔天发货) 中通 圆通 顺丰;<br>广东:粘牙签(4-5天发货) 中通 圆通 顺丰;"
if (!!craft && ("配刮刮膜" == craft || "粘刮刮膜" == craft)) {
html = "预计发货时间:<br> ";
@@ -941,15 +942,20 @@
<option value="30000">30000</option>
<option value="40000">40000</option>
<option value="50000">50000</option>`)
$(".ui_guagua2").hide();
$(".ui_guagua2").prop('disabled', 'disabled');
if (data.value == "铜版纸不干胶") {
$(".ui_guagua2").show();
$(".ui_guagua2").removeAttr('disabled');
$(".fm").show();
$(".fm").find(":input").attr("disabled", false);
$(".fm input[name='craftMo'][value='覆亮膜']").attr("checked", true)
} else if (data.value == "PVC不干胶") {
$(".fm").show();
$(".fm").find(":input").attr("disabled", false);
$(".fm input[name='craftMo'][value='覆亮膜']").attr("checked", true)
} else if (data.value == "250克白卡纸对裱") {
$(".fm input").removeAttr('checked');
$(".ui_guagua2").hide();
$(".caiqie").show();
$(".cha_fm").show();
$(".cha_fm").find(":input").attr("disabled", false);
@@ -958,7 +964,6 @@
$(".peishua").find(":input").attr("disabled", true);
$("input[name='craft']").prop('checked', false);
$(".cha_fm input").prop('checked', true);
$(".ui_guagua2").prop('disabled', 'disabled');
$(".ui_cq select[name='count']").empty().append(` <option value="500">500</option>
<option value="1000">1000</option>
<option value="2000">2000</option>
@@ -967,9 +972,7 @@
<option value="10000">10000</option>
<option value="20000">20000</option>`)
} else {
$(".ui_guagua2").hide();
$("input[name='craft']").prop('checked', false);
$(".ui_guagua2").prop('disabled', 'disabled');
$(".ui_guaguasize2").hide();
$(".ui_toothpick").hide();
}
@@ -1369,7 +1372,7 @@
let html;
if (result.length > 0) {
for (let i = 0; i < result.length; i++) {
html += '<div><img style="width:' + result[0]?.imgWidth + 'px" src="' + result[i]?.imgUrl + '"></div>';
html += '<div><img style="width:100%;height: 100%;object-fit: contain" src="' + result[i].imgUrl + '"></div>';
}
$("#carousel").append(html);
+62 -13
View File
@@ -515,13 +515,35 @@
<input type="checkbox" name="craft" class="yj disab max cjkDisab" lay-filter="switch"
value="圆角" title="圆角">
<div class="layui-input-block craft value5 value7 dm" style="display:inline-block;">
<input type="checkbox" name="craft" lay-filter="switch" value="打码"
title="打码">
<div class="layui-inline edge damaHide" style="width:60px;display:none">
<select name="dama" class="select dama" lay-filter="dama">
<option value="1" selected>1</option>
<option value="2">2</option>
</select>
<input type="checkbox" name="craft" lay-filter="switch" value="打码" title="打码">
<div class="layui-inline edge damaHide" style="width:100px;display:none">
<div style="display: flex;align-items: center">
<span style="flex-shrink: 0">码数:</span>
<select name="pcount" class="select" lay-filter="mashu">
<option value="7" selected>7</option>
<option value="3">3</option>
</select>
</div>
</div>
<div class="layui-inline edge damaHide" style="width:100px;display:none">
<div style="display: flex;align-items: center">
<span style="flex-shrink: 0">个数:</span>
<select name="dama" class="select dama" lay-filter="dama">
<option value="1" selected>1</option>
<%-- <option value="2">2</option>--%>
</select>
</div>
</div>
<div class="layui-inline edge damaHide" style="width:120px;display:none">
<div style="display: flex;align-items: center">
<span style="flex-shrink: 0">颜色:</span>
<select name="macolor" class="select macolor">
<option value="金色码" selected>金色码</option>
<option value="红色码">红色码</option>
<option value="黑色码">黑色码</option>
</select>
</div>
</div>
<div class="layui-inline edge bianma" style="width:120px;display:none">
<select name="bianma" class="select bianmaSelect" lay-filter="bianma">
@@ -531,7 +553,9 @@
</div>
</div>
<div class="bmType" style="display:none"><span style="font-size:14px;color:red">打码数量为‘2’时,需要选择打码类型:[水平编码] 或 [上下编码]
</br>水平编码:价格相同; 上下编码:价格不同</span>
</br>水平编码:价格相同; 上下编码:价格不同
</br>只能打红色码和黑色码 ,3个码的价格按照7个码的翻倍价格算
</span>
</div>
</div>
<div class="layui-input-block value7">
@@ -1280,6 +1304,19 @@
}
form.render();
});
form.on("select(mashu)", function (data) {
let value = data.value;
let html = `<option value="金色码" selected>金色码</option>
<option value="红色码">红色码</option>
<option value="黑色码">黑色码</option>`;
if (data.value == "3") {
html = `<option value="红色码" selected>红色码</option>
<option value="黑色码">黑色码</option>`;
}
$("select[name='macolor']").empty();
$("select[name='macolor']").append(html);
form.render();
})
form.on("checkbox(lessz4PeiJian)", function (data) {
let peijiansize = $(".lesspeijian:checked").length;
if (peijiansize > 1) {
@@ -1871,8 +1908,6 @@
if (data.value == 13) {
$("input[name='fmType']").prop('checked', false);
$("input[name='fmType']")[0].checked = true;
$("#craftForm .tj").hide();
$("#craftForm .tj input").attr("disabled", false);
form.render('checkbox');
}
// 腰封的时候有覆膜
@@ -2690,6 +2725,19 @@
$(".damaHide").show();
$(".dama").val(1);
//$('input[class = mq]').prop('disabled', true);
let v_kind = $("input[name='kind']:checked").val();
let html = `<option value="7" selected>7</option>
<option value="3">3</option>`;
if (v_kind == 13) {
html = `<option value="7" selected>7</option>`;
}
$("select[name='pcount']").empty();
$("select[name='pcount']").append(html);
let color_html = `<option value="金色码" selected>金色码</option>
<option value="红色码">红色码</option>
<option value="黑色码">黑色码</option>`;
$("select[name='macolor']").empty();
$("select[name='macolor']").append(color_html);
form.render('select');
} else {
// 打码取消选中的时候,隐藏下拉框、编码类型
@@ -3071,9 +3119,10 @@
if (kindValue2 != 10) {
if ($(this).val() === '打码') {
if ($(".dama").val() == 2) {
arr.push($(this).val() + '(' + $(".dama").val() + '组,' + $(".bianmaSelect").val() + ')');
arr.push($(this).val() + '(' + $(".dama").val() + '组,' + $("select[name='pcount'] option:selected").val() + $("select[name='macolor'] option:selected").val() + ' ,' + $(".bianmaSelect").val() + ')');
} else {
arr.push($(this).val() + '(' + $(".dama").val() + '组)');
arr.push($(this).val() + '(' + $(".dama").val() + '组' + $("select[name='pcount'] option:selected").val() + $("select[name='macolor'] option:selected").val() + ')');
}
}
if (kind != 1 && ($(this).val() === '单面烫金' || $(this).val() === '双面烫金')) {
@@ -3381,7 +3430,7 @@
if (awards > 1) {
if ($('input[class = mq]:checked').val() == "模切") {
layer.msg("异形刮刮卡2个奖项以上无法报价!", {offset: ['300px', '300px']}, function () {
layer.msg("异形刮刮卡2个奖项要按照款数来报价!", {offset: ['300px', '300px']}, function () {
});
return false;
}
+53 -5
View File
@@ -15,6 +15,10 @@
margin-top: 5px;
display: inline-block;
}
.ji .layui-form-select .layui-edge {
right: 20px;
}
</style>
<body>
<div class="big_box">
@@ -115,7 +119,16 @@
<input type="radio" name="craftShua" value="银铝箔纸" lay-skin="primary" title="银铝箔纸">
<input type="radio" name="craftShua" value="金铝箔纸" lay-skin="primary" title="金铝箔纸">
</div>
<div class="layui-input-block ji" style="display: none">
<input type="checkbox" class="craft" name="craft" lay-filter="craft" value="击凸" title="击凸">
<input type="checkbox" class="craft" name="craft" lay-filter="craft" value="压凹" title="压凹">
<div class="layui-inline " style="width: 110px;display: none">
<select class="select" name="ji_color">
<option value="无色">无色</option>
<option value="有色">有色</option>
</select>
</div>
</div>
<hr>
<div class="layui-form-item">
<button class="layui-btn" lay-submit="" lay-filter="acount_btn">计算</button>
@@ -182,7 +195,18 @@
layui.form.render("select");
}
});
form.on('checkbox(craft)', function (data) {
if (data.value == '击凸' || data.value == '压凹') {
if ($(data.elem).is(":checked")) {
$("select[name='ji_color']").parent().show();
$("select[name='ji_color']").prop("disabled", false);
} else {
$("select[name='ji_color']").parent().hide();
$("select[name='ji_color']").prop("disabled", true);
}
}
})
form.on('select(setKind)', function (data) {
var html = " ";
var remark = " ";
@@ -208,7 +232,7 @@
for (let i = 0; i < result.length; i++) {
// 只留一个remark
remark = "";
html += '<div><img style="width:' + result[0].imgWidth + 'px" src="' + result[i].imgUrl + '"></div>';
html += '<div><img style="width:100%;height: 100%;object-fit: contain" src="' + result[i].imgUrl + '"></div>';
remark += '<div><span>' + result[i].remark + '<span/></div>';
}
$("#carousel").append(html);
@@ -231,6 +255,8 @@
});
$(".auto").find(":input").attr("disabled", true);
$(".auto").hide();
$(".ji").hide();
$(".ji").find(":input").attr("disabled", true);
if (data.value == 7) {
$(".ui_wq").find(":input").attr("disabled", false);
$(".ui_wq").show();
@@ -268,6 +294,10 @@
$(".ui_size").hide();
$(".ui_size").find(":input").attr("disabled", true);
}
if (data.value == '0') {
$(".ji").show();
$(".ji").find(":input").attr("disabled", false);
}
form.render();
});
@@ -291,10 +321,11 @@
return false;
}
}
let craftList = []
var craftQie = $("input[name='craftQie']:checked").val();
var craftauto = $("input[name='craftauto']:checked").val();
var number = $("#number").val();
craftList.push(craftQie);
var kindData = {
0: "异形插牌",
1: "菱形单面直角插卡",
@@ -327,15 +358,31 @@
var data = result.data.proList;
if (kind == 7) {
craftQie += "," + $("input[name='craftTang']:checked").val();
craftList.push($("input[name='craftTang']:checked").val());
if ($("input[name='craftShua']:checked").val() != "无") {
craftQie += "," + $("input[name='craftShua']:checked").val();
craftList.push($("input[name='craftShua']:checked").val());
}
}
if (kind == 9 || kind == 10 || kind == 14 || kind == 15) {
craftQie += "," + craftauto;
craftList.push(craftauto);
}
if (kind == 0) {
$("input[name='craft']:checked").each(function () {
if (!$(this).is(':disabled')) {
if ($(this).val() == '击凸' || $(this).val() == '压凹') {
craftList.push($("select[name='ji_color'] option:selected").val() + $(this).val());
} else {
craftList.push($(this).val());
}
}
}
)
;
}
var span_result = '插卡 - ' + kindValue + ' - ' + size + "厘米 - (同款内容) " + '\n';
span_result += '工艺:' + craftQie + '\n';
span_result += '工艺:' + craftList.join(",") + '\n';
if (number > 1) {
for (let i = 0; i < data.length; i++) {
span_result += number + '款 各' + data[i].count + "个,共" + data[i].price + "元" + '\n'
@@ -403,6 +450,7 @@
});
return false;
});
});
})
;
</script>
</html>
+1 -1
View File
@@ -234,7 +234,7 @@
}
var data = result.data.proList;
var span_result = '外盒 - ' + kind + ' - ' + size + ' CM (同款内容)\n';
var span_result = '外盒 - ' + kind + ' - ' + size + ' MM (同款内容)\n';
span_result += `工艺:` + craft.join(",") + '\n';