mirror of
http://112.124.100.131/ebiz-ai/ebiz-base-ai.git
synced 2025-12-06 17:36:48 +08:00
feat(comparison): 实现产品对比功能
- 新增 compare 函数以获取产品对比数据 - 实现热门产品获取和展示 - 添加产品对比表格数据处理逻辑- 优化表格组件,支持动态列和数据绑定
This commit is contained in:
@@ -37,7 +37,6 @@ export function chat(data) {
|
|||||||
return getUrl('/hasl/chat')
|
return getUrl('/hasl/chat')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export function audioToText(data) {
|
export function audioToText(data) {
|
||||||
//聊天获取产品百宝箱
|
//聊天获取产品百宝箱
|
||||||
// 聊天框输入内容以“百宝箱”结尾时,调用这个接口
|
// 聊天框输入内容以“百宝箱”结尾时,调用这个接口
|
||||||
@@ -47,3 +46,13 @@ export function audioToText(data) {
|
|||||||
data,
|
data,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function compare(data) {
|
||||||
|
//聊天获取产品百宝箱
|
||||||
|
// 聊天框输入内容以“百宝箱”结尾时,调用这个接口
|
||||||
|
return request({
|
||||||
|
url: getUrl('/hasl/product/compare'),
|
||||||
|
method: 'post',
|
||||||
|
data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -42,6 +42,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { compare } from '@/api/generatedApi'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'ComparisonTable',
|
name: 'ComparisonTable',
|
||||||
props: {
|
props: {
|
||||||
|
|||||||
@@ -50,6 +50,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import { Tab, Tabs, Cell, CellGroup, Icon } from 'vant'
|
import { Tab, Tabs, Cell, CellGroup, Icon } from 'vant'
|
||||||
import Comparsion from '@/views/comparison/table.vue'
|
import Comparsion from '@/views/comparison/table.vue'
|
||||||
|
import { compare, haslProducts } from '@/api/generatedApi/index'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'ComparisonTab',
|
name: 'ComparisonTab',
|
||||||
@@ -67,13 +68,7 @@ export default {
|
|||||||
list: [
|
list: [
|
||||||
{
|
{
|
||||||
title: '重疾',
|
title: '重疾',
|
||||||
list: [
|
list: [],
|
||||||
{ id: 1, title: '恒安标准一生无忧庆典版重度恶性肿瘤疾病保险' },
|
|
||||||
{ id: 2, title: '恒安标准中老年恶性肿瘤疾病保险(6.0版)' },
|
|
||||||
{ id: 3, title: '恒安标准恒鑫世家终身寿险(分红型)' },
|
|
||||||
{ id: 4, title: '恒安标准幸福到老长寿2.0养老年金保险(分红型)' },
|
|
||||||
{ id: 5, title: '恒安标准恒盈慧选年金保险(分红型)' },
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '年金',
|
title: '年金',
|
||||||
@@ -86,7 +81,26 @@ export default {
|
|||||||
showComparison: false,
|
showComparison: false,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getHotProducts()
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
async getHotProducts() {
|
||||||
|
const res = await haslProducts()
|
||||||
|
this.list = [
|
||||||
|
{
|
||||||
|
title: '热门产品',
|
||||||
|
list: res.content.map((item) => {
|
||||||
|
return {
|
||||||
|
...item,
|
||||||
|
id: item.productId,
|
||||||
|
title: item.productName,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
cellClick(item) {
|
cellClick(item) {
|
||||||
const exists = this.comparisonMap.some((it) => it.id === item.id)
|
const exists = this.comparisonMap.some((it) => it.id === item.id)
|
||||||
if (!exists) {
|
if (!exists) {
|
||||||
|
|||||||
@@ -8,13 +8,15 @@
|
|||||||
<el-table-column v-for="(item, index) in list" :key="index" :label="item.title" width="150">
|
<el-table-column v-for="(item, index) in list" :key="index" :label="item.title" width="150">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<!-- 根据 item.id 映射对应的字段名,比如 b1、b2、b3 等 -->
|
<!-- 根据 item.id 映射对应的字段名,比如 b1、b2、b3 等 -->
|
||||||
{{ formatValue(scope.row['b' + item.id]) }}
|
{{ formatValue(scope.row[item.id]) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
import { compare } from '@/api/generatedApi'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
list: {
|
list: {
|
||||||
@@ -25,35 +27,41 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
// 表格数据(每行是一个指标,列是各个产品值)
|
// 表格数据(每行是一个指标,列是各个产品值)
|
||||||
tableData: [
|
tableData: [],
|
||||||
{
|
|
||||||
rowTitle: '保费',
|
|
||||||
b1: 1200,
|
|
||||||
b2: 1500,
|
|
||||||
b3: 900,
|
|
||||||
b4: 1800,
|
|
||||||
b5: 1300,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rowTitle: '保额',
|
|
||||||
b1: 100000,
|
|
||||||
b2: 80000,
|
|
||||||
b3: 500000,
|
|
||||||
b4: 300000,
|
|
||||||
b5: 200000,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rowTitle: '保障期限',
|
|
||||||
b1: '终身',
|
|
||||||
b2: '1年',
|
|
||||||
b3: '终身',
|
|
||||||
b4: '至80岁',
|
|
||||||
b5: '至70岁',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
list: {
|
||||||
|
handler(val) {
|
||||||
|
console.log(val)
|
||||||
|
this.getCompare()
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
immediate: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
getCompare() {
|
||||||
|
let ids = this.list.map((item) => {
|
||||||
|
return item.id
|
||||||
|
})
|
||||||
|
compare(ids).then((res) => {
|
||||||
|
if (res) {
|
||||||
|
res.content.fieldNames.map((item) => {
|
||||||
|
this.tableData.push({
|
||||||
|
rowTitle: item,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
res.content.productResults.map((item, index) => {
|
||||||
|
for (let keys in item.knowledge) {
|
||||||
|
let obj = this.tableData.find((it) => keys === it.rowTitle)
|
||||||
|
obj[item.productId] = item.knowledge[keys]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
console.log(this.tableData)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
formatValue(val) {
|
formatValue(val) {
|
||||||
if (typeof val === 'number') {
|
if (typeof val === 'number') {
|
||||||
return val.toFixed(2)
|
return val.toFixed(2)
|
||||||
|
|||||||
Reference in New Issue
Block a user