diff --git a/Laravel/app/Http/Controllers/API/H5/ComboController.php b/Laravel/app/Http/Controllers/API/H5/ComboController.php index 9b36976..4ad11ad 100644 --- a/Laravel/app/Http/Controllers/API/H5/ComboController.php +++ b/Laravel/app/Http/Controllers/API/H5/ComboController.php @@ -538,6 +538,7 @@ select combo_id as c_id,count(*) as sale_count from orders where status in(2,4) $item_list[]=$item; } } + $item_list=$this->KeShiPaiXu($item_list); $combo->items=$item_list; $count = DB::table('orders')->where(['combo_id' => $combo->combo_id])->whereIn('status', [2, 4])->count(); $combo->saleCount = $count; diff --git a/h5/pages/buy/contrast/contrast.vue b/h5/pages/buy/contrast/contrast.vue index 90d742e..3406ddd 100644 --- a/h5/pages/buy/contrast/contrast.vue +++ b/h5/pages/buy/contrast/contrast.vue @@ -23,59 +23,40 @@ const combo_info = ref([null, null, null]) const item_info = computed(() => { - let item_map = {} - for (let i = 0; i <= 2; i++) { - if (!!combo_info.value[i]) { - for (let j = 0; j <= combo_info.value[i].items.length - 1; j++) { - let item_id = combo_info.value[i].items[j].id - if (!(item_id in item_map)) { - item_map[item_id] = { - name: combo_info.value[i].items[j].name, - group: combo_info.value[i].items[j].keshi_name, - value: [false, false, false] - } - } - item_map[item_id].value[i] = true - } - } - } - let data = [] - for (let i in item_map) { - if (!same_item_show.value) { - data.push(item_map[i]) - } else { - let count = 0; - for (let j = 0; j <= 2; j++) { - if (!combo_info.value[j]) { - count++ - } else { - let item_id = combo_info.value[j].items[j].id - if (item_map[i].value[j]) { - count++ - } - } - } - if (count !== 3) { - data.push(item_map[i]) - } - } - } - let group_map = {} - for (let i in data) { - if (!(data[i].group in group_map)) { - group_map[data[i].group] = { - group: data[i].group, - items: [] - } - } - group_map[data[i].group].items.push(data[i]) - } - let ret_list = [] - for (let i in group_map) { - ret_list.push(group_map[i]) - } - return ret_list - }) + let item_map = []; + for (let i = 0; i <= 2; i++) { + if (!!combo_info.value[i]) { + for (let j = 0; j <= combo_info.value[i].items.length - 1; j++) { + let item_id = combo_info.value[i].items[j].id; + let existingItem = item_map.find(item => item.id === item_id); + if (!existingItem) { + item_map.push({ + id: item_id, + name: combo_info.value[i].items[j].name, + group: combo_info.value[i].items[j].keshi_name, + value: [false, false, false] + }); + existingItem = item_map[item_map.length - 1]; + } + existingItem.value[i] = true; + } + } + } + + let data = item_map.filter(item => !same_item_show.value || item.value.some(v => v)); + + let group_map = []; + data.forEach(item => { + let group = group_map.find(g => g.group === item.group); + if (!group) { + group = { group: item.group, items: [] }; + group_map.push(group); + } + group.items.push(item); + }); + + return group_map; + }); const base_info = computed(() => { let data = [{ title: '体检类型', diff --git a/h5/pages/main/question/info/info.vue b/h5/pages/main/question/info/info.vue index 00b87f1..501beca 100644 --- a/h5/pages/main/question/info/info.vue +++ b/h5/pages/main/question/info/info.vue @@ -118,10 +118,10 @@ 本方案根据您的身体状况进行基础检查,经济实用,避免过度检查 - + 查看详细方案 @@ -141,10 +141,10 @@ 本方案根据您的身体状况进行基础检查,经济实用,避免过度检查 - + 查看详细方案 @@ -164,10 +164,10 @@ 本方案根据您的身体状况进行基础检查,经济实用,避免过度检查 - + 查看详细方案