增加地面,增加放置区域筛选逻辑
This commit is contained in:
72
index.js
72
index.js
@ -22,6 +22,10 @@ export const initApp = (kernel) => {
|
||||
return kernelInstance;
|
||||
};
|
||||
|
||||
|
||||
//全局唯一棚子sku
|
||||
let pergolaSku = ""
|
||||
|
||||
/**
|
||||
* 获取当前 kernel 实例
|
||||
*/
|
||||
@ -64,8 +68,6 @@ export const getAutoLoadModelList = async () => {
|
||||
const kernel = getKernel();
|
||||
|
||||
const url = apiConfig.getApiUrl('/api/models/auto-load/list')
|
||||
console.log('API URL:', url)
|
||||
console.log('apiConfig:', apiConfig)
|
||||
const response = await fetch(url)
|
||||
const data = await response.json()
|
||||
const models = data.data // 这就是模型列表
|
||||
@ -74,6 +76,7 @@ export const getAutoLoadModelList = async () => {
|
||||
|
||||
if (model.placement_zone) {
|
||||
const { alpha, border_color, color, show_border, thickness, walls } = model.placement_zone
|
||||
|
||||
kernel.dropZone.setData({
|
||||
|
||||
color: color,
|
||||
@ -98,7 +101,53 @@ export const getAutoLoadModelList = async () => {
|
||||
//获取放置区域
|
||||
export const getPlacementZone = async (sku) => {
|
||||
const kernel = getKernel();
|
||||
console.log(pergolaSku, sku);
|
||||
let division_include = []
|
||||
|
||||
// 同时包含10和13
|
||||
const only10_13 = /(?=.*10)(?=.*13)/.test(pergolaSku)
|
||||
// 只包含10 无13 无12
|
||||
const only10 = /(?=.*10)(?!.*13)(?!.*12)/.test(pergolaSku)
|
||||
// 同时包含10和12
|
||||
const only10_12 = /(?=.*10)(?=.*12)/.test(pergolaSku)
|
||||
|
||||
|
||||
// 1. 只要字符串里包含 10,就返回 true
|
||||
const has10 = /10/.test(sku);
|
||||
|
||||
// 2. 只要字符串里包含 13,就返回 true
|
||||
const has13 = /13/.test(sku);
|
||||
|
||||
// 2. 只要字符串里包含 12,就返回 true
|
||||
const has12 = /12/.test(sku);
|
||||
|
||||
|
||||
|
||||
//包含10,不包含13
|
||||
if (only10 && has10) {
|
||||
console.log('棚子包含10,不包含13 并且配件是10 说明是正方体 或者是10*20的');
|
||||
division_include.push('前', '后', '左', '右', "前1", "后1", "前2", "后2")
|
||||
}
|
||||
//同时包含10和13
|
||||
if (only10_13 && has10) {
|
||||
console.log('棚子同时包10和13的并且含配件是10');
|
||||
division_include.push('左', '右')
|
||||
}
|
||||
//同时包含10和13
|
||||
if (only10_13 && has13) {
|
||||
console.log('棚子同时包10和13的并且含配件是13');
|
||||
division_include.push('前', '后')
|
||||
}
|
||||
if (only10_12 && has12) {
|
||||
console.log('棚子同时包10和12的并且含配件是12');
|
||||
division_include.push('前', '后')
|
||||
}
|
||||
if (only10_12 && has10) {
|
||||
console.log('棚子同时包10和12的并且含配件是12');
|
||||
division_include.push('左', '右')
|
||||
}
|
||||
|
||||
|
||||
const response = await fetch(apiConfig.getApiUrl(`/api/product-configs/by-sku/${sku}`));
|
||||
const result = await response.json();
|
||||
if (result.code === 200) {
|
||||
@ -107,10 +156,12 @@ export const getPlacementZone = async (sku) => {
|
||||
// const {position_x, position_y, position_z} = data;
|
||||
if (enable_placement_zone && wall_divisions != undefined) {
|
||||
|
||||
const filteredDivisions = wall_divisions.filter(item => division_include.includes(item.name))
|
||||
console.log(filteredDivisions);
|
||||
// 只清除旧的放置区域网格,不清除模型
|
||||
kernel.dropZone.clearZones();
|
||||
const divisions = wall_divisions.map(wall => ({
|
||||
name: wall.name, // 获取最后一个下划线后的部分
|
||||
const divisions = filteredDivisions.map(wall => ({
|
||||
name: wall.name,
|
||||
divisions: wall.divisions
|
||||
}))
|
||||
|
||||
@ -248,12 +299,12 @@ export const executeEvent2 = async (result, sku) => {
|
||||
kernel.model.removeAll();
|
||||
// 清除所有 SKU 映射
|
||||
clearAllSkuMappings();
|
||||
}
|
||||
}
|
||||
|
||||
// 先处理所有 change_model 事件
|
||||
for (const event of result.data.events) {
|
||||
console.log(event);
|
||||
|
||||
|
||||
if (event.event_type === 'change_model') {
|
||||
const { target_data } = event;
|
||||
console.log(event.target_data);
|
||||
@ -359,11 +410,18 @@ export const getProductConfig = async (sku) => {
|
||||
if (result.code === 200) {
|
||||
console.log(result.data);
|
||||
const { enable_placement_zone } = result.data;
|
||||
// await initPlacementZoneConfig();
|
||||
//如果触发的是配件,需要显示放置区域
|
||||
|
||||
if (enable_placement_zone) {
|
||||
if (pergolaSku === "") {
|
||||
console.error("请先加载棚子模型")
|
||||
return;
|
||||
}
|
||||
getPlacementZone(sku)
|
||||
}
|
||||
//如果触发的是换棚子模型
|
||||
else {
|
||||
pergolaSku = sku;
|
||||
executeEvent2(result, sku)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user