diff --git a/src/utils/request.js b/src/utils/request.js
index 61a6068..6d841c8 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -16,8 +16,8 @@ axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分
// baseURL: import.meta.env.VITE_APP_BASE_API,
- // baseURL: "http://118.31.7.2:9868/",
- baseURL: "http://192.168.2.4:9868/",
+ baseURL:'http://118.31.7.2:9868/',
+ // baseURL:'http://192.168.2.16:9868/',
// 超时
timeout: 100000,
});
diff --git a/src/views/portraitModel/components/AARRRAnalysis.vue b/src/views/portraitModel/components/AARRRAnalysis.vue
index 91b39b1..efc6bf6 100644
--- a/src/views/portraitModel/components/AARRRAnalysis.vue
+++ b/src/views/portraitModel/components/AARRRAnalysis.vue
@@ -1317,17 +1317,17 @@ defineExpose({
display: flex;
font-size: 15px;
font-weight: bold;
- width: 180px;
- height: 56px;
+ width: 150px;
+ height: 50px;
background-image: url("@/assets/images/taskImport.png");
- background-size: 180px 56px;
+ background-size: 150px 50px;
text-align: center;
align-items: center;
- line-height: 56px;
+ line-height: 50px;
cursor: pointer;
img {
margin-left: 20px;
- margin-right: 15px;
+ margin-right: 8px;
}
}
.caseBack {
diff --git a/src/views/portraitModel/components/abcAnalysis.vue b/src/views/portraitModel/components/abcAnalysis.vue
index 10927a8..cc53c0b 100644
--- a/src/views/portraitModel/components/abcAnalysis.vue
+++ b/src/views/portraitModel/components/abcAnalysis.vue
@@ -951,17 +951,17 @@ defineExpose({
display: flex;
font-size: 15px;
font-weight: bold;
- width: 180px;
- height: 56px;
+ width: 150px;
+ height: 50px;
background-image: url("@/assets/images/taskImport.png");
- background-size: 180px 56px;
+ background-size: 150px 50px;
text-align: center;
align-items: center;
- line-height: 56px;
+ line-height: 50px;
cursor: pointer;
img {
margin-left: 20px;
- margin-right: 15px;
+ margin-right: 8px;
}
}
.caseBack {
diff --git a/src/views/portraitModel/components/basketAnalysis.vue b/src/views/portraitModel/components/basketAnalysis.vue
index 878abed..9feed87 100644
--- a/src/views/portraitModel/components/basketAnalysis.vue
+++ b/src/views/portraitModel/components/basketAnalysis.vue
@@ -12,7 +12,8 @@
案例背景:
- 购物篮分析是指通过分析消费者在电商平台上的购物数据,了解他们购买商品之间的关联性,在做商品推荐和货架摆放布局时候,将关联度高的商品放一起捆绑销售,从而提升销售额。
+ 购物篮分析是指通过分析消费者在电商平台上的购物数据,了解他们购买商品之间的关联性,在做商品推荐和货架摆放布局时候,将关联度高的商品放一起捆绑销售,从而提升销售额。
+
现有某购物商场的购物篮数据,请分析两两搭配销售的价值。A、B、C、D分别代表不同的商品
@@ -26,24 +27,22 @@
backgroundColor: '#6A7DE9!important',
}"
>
-
-
-
-
-
-
-
-
+
+
+
+
下载数据
- 计算公式如下:
+ 计算公式如下:
+
1.支持度是指A和B两个商品同时被购买的概率,AB组合的支持度=同时包含A和B商品的订单数/总订单数*100%=P(A∩B)
2.置信度是指购买A之后又购买了B的条件概率,是买了A和B的订单占所有买了A的订单里的占比,A对B的置信度=P(A∩B)/P(A)
- 3.提升度是指在购买A产品这个条件下购买B产品的可能性与没有这个条件下购买B产品的可能性之比(置信度/无条件概率),A对B的提升度=A对B的置信度/P(B)。
+ 3.提升度是指在购买A产品这个条件下购买B产品的可能性与没有这个条件下购买B产品的可能性之比(置信度/无条件概率),A对B的提升度=A对B的置信度/P(B)。
+
一般而言,提升度如果小于1,则该推荐规则不应该被使用。
@@ -54,30 +53,21 @@
第一步,划分商品组合
- 根据购物篮A、B、C、D四种不同的商品,按照两两搭配的方式,可能有以下几种组合。
+ 根据购物篮A、B、C、D四种不同的商品,按照两两搭配的方式,可能有以下几种组合。
+
请按照A、B、C、D顺序依次两两组合:
-
+
—
-
+
@@ -85,14 +75,15 @@
-
添加组合
+
添加组合
商品组合
- - {{ item || "-" }}
+ -
+ {{ item }}
+ -
+
@@ -107,9 +98,7 @@
第二步,计算无条件概率
-
- 根据购物篮信息,计算A、B、C、D四种商品的无条件概率。
-
+
根据购物篮信息,计算A、B、C、D四种商品的无条件概率。
-
-
+
-
- %
+
+ %
@@ -145,7 +128,8 @@
第三步,计算支持度、置信度、提升度
- 按照第一步中的两两组合情况,依次计算各自组合的支持度、置信度、提升度。
+ 按照第一步中的两两组合情况,依次计算各自组合的支持度、置信度、提升度。
+
计算结果保留小数点后两位小数。
@@ -159,39 +143,23 @@
backgroundColor: '#6A7DE9!important',
}"
>
-
-
+
-
- %
+
+ %
-
- %
+
+ %
-
- %
+
+ %
@@ -205,8 +173,10 @@
第四步,判断两两搭配销售价值
- 当A对B的提升度>1,则表示买A再买B的概率大于本身买B的概率,就表示买A对买B带来了提升效果。
- 当A对B的提升度<1,则表示买A再买B的概率小于本身买B的概率,就表示买A对买B带来了负向效果。
+ 当A对B的提升度>1,则表示买A再买B的概率大于本身买B的概率,就表示买A对买B带来了提升效果。
+
+ 当A对B的提升度<1,则表示买A再买B的概率小于本身买B的概率,就表示买A对买B带来了负向效果。
+
当A对B的提升度 = 1,则代表买A对买B没有影响。
@@ -220,21 +190,10 @@
backgroundColor: '#6A7DE9!important',
}"
>
-
-
+
-
+
@@ -244,9 +203,7 @@
提交
-
- 进一步的分析,可以分析支持度最高top10的商品组合、置信度最高top10的商品组合、提升度最高top10的商品组合。
-
+
进一步的分析,可以分析支持度最高top10的商品组合、置信度最高top10的商品组合、提升度最高top10的商品组合。
@@ -254,26 +211,18 @@
第五步,制定营销策略
-
- 通过购物篮分析,能给实际销售带来的价值:
-
+ 通过购物篮分析,能给实际销售带来的价值:

-
优化商品配置:可以厘清哪些商品可以一起购买,关联商品可以优化陈列方式、进行促销等;
+
优化商品配置:可以厘清哪些商品可以一起购买,关联商品可以优化陈列方式、进行促销等;

-
了解客户需求:分析出顾客的购买习惯,顾客购买商品的时间、地点等;
-
+
了解客户需求:分析出顾客的购买习惯,顾客购买商品的时间、地点等;

-
分析销售趋势:利用数据仓库对品种和库存的趋势进行分析,选定需要补充的商品,研究顾客购买趋势,分析季节性购买模式,确定降价商品。
+
分析销售趋势:利用数据仓库对品种和库存的趋势进行分析,选定需要补充的商品,研究顾客购买趋势,分析季节性购买模式,确定降价商品。
@@ -297,7 +246,7 @@ const baseUrl = import.meta.env.VITE_APP_BASE_API;
const knowledgeHtml = ref(
`一、理解购物篮分析
购物篮分析是指通过分析消费者在电商平台上的购物数据,了解他们购买商品之间的关联性,从而发现潜在的消费行为和需求,为电商平台提供决策支持。通过购物篮分析,电商平台可以更好地理解用户的购物习惯和偏好,从而为用户提供更加精准的推荐和产品布局。
购物篮分析的关键衡量指标有三个:支持度、置信度、提升度
为了更好地解释这三个指标,这里我先跟大家举个例子,后续就用这个例子说明。
某超市30天订单数一共10000单,其中包含A商品的订单有600单,包含B商品的订单有400单,同时包含A和B两种商品的订单有300单。
购买A商品的概率 P(A)=(600/10000)*100%=6%
购买B商品的概率 P(B)=(400/10000)*100%=4%
同时购买A商品和B商品的概率 P(A∩B)=(300/10000)*100%=3%
1.支持度
支持度是指A和B两个商品同时被购买的概率,代表了这个组合的可靠程度。
AB组合的支持度=同时包含A和B商品的订单数/总订单数*100%
在本例中,AB组合的支持度=P(A∩B)=(300/10000) *100%=3%
2.置信度
置信度是指购买A之后又购买了B的条件概率,是买了A和B的订单占所有买了A的订单里的占比。代表买了A的用户有多大概率会再买B,既买A产品对B产品产生了多大的影响。
A对B的置信度=同时包含A和B商品的订单数/包含A商品的订单数*100%
在本例中,A对B的置信度=P(A∩B)/P(A)=(300/600)*100%=50%
3.提升度
A对B提升度=A对B的置信度/P(B),是指在购买A产品这个条件下购买B产品的可能性与没有这个条件下购买B 产品的可能性之比。
它的计算方法是:A对B的置信度/P(B)。提升度和置信度一样,也是一个条件概率。
当置信度>P(B)时,A对B的提升度>1,则表示买A再买B的概率大于本身买B的概率,就表示买A对买B带来了提升效果。
当置信度<P(B)时,A对B的提升度<1,则表示买A再买B的概率小于本身买B的概率,就表示买A对买B带来了负向效果。
当置信度等于P(B)时,A对B的提升度=1,则代表买A对买B没有影响。
在本例中,A对B的提升度=A对B的置信度/P(B)=50%/4%=12.5,表示商品A对商品B有较大的提升,有较大的搭配价值,建议搭配。
二、利用购物篮分析优化产品推荐
1. 推荐算法优化:根据用户的历史购物数据,结合用户画像和行为数据,制定更加精准的推荐算法。通过分析用户的购买行为,了解他们的购物习惯和偏好,为不同的用户提供个性化的推荐。
2. 动态推荐:根据用户在购物过程中的实时行为,实时调整推荐结果,确保推荐内容与用户需求高度匹配。
3. 推荐内容丰富度:除了商品推荐外,还可以考虑推荐相关服务、优惠券、套餐等,增加用户购物的丰富度和满意度。
三、利用购物篮分析优化产品布局
1. 商品分类优化:根据用户的购物习惯和偏好,对商品进行分类和布局,提高用户在搜索和浏览过程中的便利性。
2. 突出热销商品:通过分析用户的购买数据,了解哪些商品最受用户欢迎,将热销商品放在更加显眼的位置,提高用户的点击率和购买率。
3. 季节性商品布局:根据季节变化,提前布局相关季节性商品,提高用户在特定季节的购买欲望。
四、利用购物篮分析提升客户服务体验
1. 客户反馈处理:通过购物篮分析,了解用户对哪些商品、服务和功能存在不满,及时调整和优化,提高用户满意度。
2. 售后服务优化:针对购买后可能出现的问题和售后需求,提前做好应对措施和解决方案,提高用户的售后服务体验。
3. 个性化客服:针对不同用户的购物习惯和偏好,提供个性化的客服服务,提高用户对电商平台的信任度和忠诚度。
五、利用购物篮分析进行数据驱动的营销策略
1. 优惠券策略:根据用户的购物数据和习惯,制定个性化的优惠券策略,提高用户的购买意愿和转化率。
2. 组合营销:针对用户的购买行为和需求,制定有针对性的组合营销策略,提高用户的购买量和忠诚度。
3. 社交媒体推广:通过社交媒体平台,利用购物篮分析结果进行精准推广,提高品牌知名度和用户参与度。
`
);
-const list = ref(["-"]);
+const list = ref([]);
const combinationValue1 = ref("");
const combinationValue2 = ref("");
const dialogVisible = ref(false);
@@ -522,6 +471,9 @@ onMounted(() => {
onBeforeUnmount(() => {
saveData();
});
+const deleteItem = (index) => {
+ list.value.splice(index, 1);
+};
const moveUp = (index, row) => {
console.log("上移", index, row);
if (index > 0) {
@@ -543,7 +495,7 @@ const moveDown = (index, row) => {
}
};
const addCombination = () => {
- if (list.value[0] == "-") {
+ if (list.value[0] === "-") {
list.value = [];
}
// list.value = [];
@@ -596,20 +548,12 @@ const step3Submit = () => {
step3Error.value = 0;
for (let i in step3Data.value) {
// console.log(fileTable1.value[i]);
- if (
- !step3Data.value[i].params1 ||
- !step3Data.value[i].params2 ||
- !step3Data.value[i].params3
- ) {
+ if (!step3Data.value[i].params1 || !step3Data.value[i].params2 || !step3Data.value[i].params3) {
proxy.$modal.msgError("请先完成所有填空");
return;
}
}
- if (
- step3Data.value[0].params1 &&
- step3Data.value[0].params1 !== "40" &&
- step3Data.value[0].params1 !== "40.00"
- ) {
+ if (step3Data.value[0].params1 && step3Data.value[0].params1 !== "40" && step3Data.value[0].params1 !== "40.00") {
step3Error.value++;
}
if (step3Data.value[0].params2 && step3Data.value[0].params2 !== "66.67") {
@@ -618,11 +562,7 @@ const step3Submit = () => {
if (step3Data.value[0].params3 && step3Data.value[0].params3 !== "111.11") {
step3Error.value++;
}
- if (
- step3Data.value[1].params1 &&
- step3Data.value[1].params1 !== "20" &&
- step3Data.value[1].params1 !== "20.00"
- ) {
+ if (step3Data.value[1].params1 && step3Data.value[1].params1 !== "20" && step3Data.value[1].params1 !== "20.00") {
step3Error.value++;
}
if (step3Data.value[1].params2 && step3Data.value[1].params2 !== "33.33") {
@@ -631,32 +571,16 @@ const step3Submit = () => {
if (step3Data.value[1].params3 && step3Data.value[1].params3 !== "41.67") {
step3Error.value++;
}
- if (
- step3Data.value[2].params1 &&
- step3Data.value[2].params1 !== "40" &&
- step3Data.value[2].params1 !== "40.00"
- ) {
+ if (step3Data.value[2].params1 && step3Data.value[2].params1 !== "40" && step3Data.value[2].params1 !== "40.00") {
step3Error.value++;
}
- if (
- step3Data.value[2].params2 &&
- step3Data.value[2].params2 !== "60.00" &&
- step3Data.value[2].params2 !== "60"
- ) {
+ if (step3Data.value[2].params2 && step3Data.value[2].params2 !== "60.00" && step3Data.value[2].params2 !== "60") {
step3Error.value++;
}
- if (
- step3Data.value[2].params3 &&
- step3Data.value[2].params3 !== "100.00" &&
- step3Data.value[2].params3 !== "100"
- ) {
+ if (step3Data.value[2].params3 && step3Data.value[2].params3 !== "100.00" && step3Data.value[2].params3 !== "100") {
step3Error.value++;
}
- if (
- step3Data.value[3].params1 &&
- step3Data.value[3].params1 !== "20" &&
- step3Data.value[3].params1 !== "20.00"
- ) {
+ if (step3Data.value[3].params1 && step3Data.value[3].params1 !== "20" && step3Data.value[3].params1 !== "20.00") {
step3Error.value++;
}
if (step3Data.value[3].params2 && step3Data.value[3].params2 !== "33.33") {
@@ -665,11 +589,7 @@ const step3Submit = () => {
if (step3Data.value[3].params3 && step3Data.value[3].params3 !== "41.67") {
step3Error.value++;
}
- if (
- step3Data.value[4].params1 &&
- step3Data.value[4].params1 !== "20" &&
- step3Data.value[4].params1 !== "20.00"
- ) {
+ if (step3Data.value[4].params1 && step3Data.value[4].params1 !== "20" && step3Data.value[4].params1 !== "20.00") {
step3Error.value++;
}
if (step3Data.value[4].params2 && step3Data.value[4].params2 !== "33.33") {
@@ -678,18 +598,10 @@ const step3Submit = () => {
if (step3Data.value[4].params3 && step3Data.value[4].params3 !== "55.56") {
step3Error.value++;
}
- if (
- step3Data.value[5].params1 &&
- step3Data.value[5].params1 !== "40" &&
- step3Data.value[5].params1 !== "40.00"
- ) {
+ if (step3Data.value[5].params1 && step3Data.value[5].params1 !== "40" && step3Data.value[5].params1 !== "40.00") {
step3Error.value++;
}
- if (
- step3Data.value[5].params2 &&
- step3Data.value[5].params2 !== "50.00" &&
- step3Data.value[5].params2 !== "50"
- ) {
+ if (step3Data.value[5].params2 && step3Data.value[5].params2 !== "50.00" && step3Data.value[5].params2 !== "50") {
step3Error.value++;
}
if (step3Data.value[5].params3 && step3Data.value[5].params3 !== "83.33") {
@@ -791,7 +703,10 @@ const getData = () => {
module: "购物篮分析",
})
.then((res) => {
- list.value = res.data.stepFiveA.split(",");
+ if (res.data.stepFiveA) {
+ list.value = res.data.stepFiveA.split(",");
+ }
+
step2Data.value[0].params = res.data.stepFiveB;
step2Data.value[1].params = res.data.stepFiveC;
step2Data.value[2].params = res.data.stepFiveD;
@@ -831,6 +746,7 @@ const getData = () => {
// step7Data.value[0].params = res.data.stepFourB;
// step7Data.value[1].params = res.data.stepFourC;
// step7Data.value[2].params = res.data.stepFourD;
+ // console.log(list.value);
})
.catch((error) => {});
};
@@ -847,17 +763,11 @@ const downloadData = () => {
};
const submitData = () => {
// console.log("asdasdasdsdsds");
- if (
- !step1AnswerFlag.value ||
- !step2AnswerFlag.value ||
- !step3AnswerFlag.value ||
- !step4AnswerFlag.value
- ) {
+ if (!step1AnswerFlag.value || !step2AnswerFlag.value || !step3AnswerFlag.value || !step4AnswerFlag.value) {
proxy.$modal.msgError("请先完成所有步骤!");
return;
}
- errorNum.value =
- step1Error.value + step2Error.value + step3Error.value + step4Error.value;
+ errorNum.value = step1Error.value + step2Error.value + step3Error.value + step4Error.value;
console.log(errorNum.value, "总错误次数");
portraitModel
.submit({
@@ -920,17 +830,17 @@ defineExpose({
display: flex;
font-size: 15px;
font-weight: bold;
- width: 180px;
- height: 56px;
+ width: 150px;
+ height: 50px;
background-image: url("@/assets/images/taskImport.png");
- background-size: 180px 56px;
+ background-size: 150px 50px;
text-align: center;
align-items: center;
- line-height: 56px;
+ line-height: 50px;
cursor: pointer;
img {
margin-left: 20px;
- margin-right: 15px;
+ margin-right: 8px;
}
}
.caseBack {
diff --git a/src/views/portraitModel/components/bostonAnalysis.vue b/src/views/portraitModel/components/bostonAnalysis.vue
index cad9f9a..c06a9bb 100644
--- a/src/views/portraitModel/components/bostonAnalysis.vue
+++ b/src/views/portraitModel/components/bostonAnalysis.vue
@@ -297,10 +297,10 @@ const quadrant1 = ref("");
const quadrant2 = ref("");
const quadrant3 = ref("");
const quadrant4 = ref("");
-const quadrant1Color = ref('')
-const quadrant2Color = ref('')
-const quadrant3Color = ref('')
-const quadrant4Color = ref('')
+const quadrant1Color = ref("");
+const quadrant2Color = ref("");
+const quadrant3Color = ref("");
+const quadrant4Color = ref("");
const step1Data = ref([
{
name: "A",
@@ -1099,9 +1099,9 @@ const step5EchartInit = () => {
],
};
optionStep5.value.series[0].markArea.data[0][0].name = quadrant1.value;
- optionStep5.value.series[0].markArea.data[1][0].name = quadrant2.value
- optionStep5.value.series[0].markArea.data[2][0].name = quadrant3.value
- optionStep5.value.series[0].markArea.data[3][0].name = quadrant4.value
+ optionStep5.value.series[0].markArea.data[1][0].name = quadrant2.value;
+ optionStep5.value.series[0].markArea.data[2][0].name = quadrant3.value;
+ optionStep5.value.series[0].markArea.data[3][0].name = quadrant4.value;
optionStep5.value.series[0].markArea.data[0][0].itemStyle.color = quadrant1Color.value;
optionStep5.value.series[0].markArea.data[1][0].itemStyle.color = quadrant2Color.value;
optionStep5.value.series[0].markArea.data[2][0].itemStyle.color = quadrant3Color.value;
@@ -1363,27 +1363,30 @@ const getData = () => {
module: "波士顿矩阵分析",
})
.then((res) => {
- step1Data.value[0].params1 = res.data.stepFiveA;
- step1Data.value[0].params2 = res.data.stepFiveB;
- step1Data.value[1].params1 = res.data.stepFiveC;
- step1Data.value[1].params2 = res.data.stepFiveD;
- step1Data.value[2].params1 = res.data.stepSixA;
- step1Data.value[2].params2 = res.data.stepSixB;
- step1Data.value[3].params1 = res.data.stepSixC;
- step1Data.value[3].params2 = res.data.stepSixD;
- step2Data.value[4].params1 = res.data.stepSevenA;
- step2Data.value[4].params2 = res.data.stepSevenB;
- chart1OptionData.value = JSON.parse(res.data.stepSevenC);
- // console.log(JSON.parse(res.data.stepSevenC),'666');
- chart2OptionData.value = JSON.parse(res.data.stepSevenD);
- quadrant1.value = res.data.stepEightA;
- quadrant2.value = res.data.stepEightB;
- quadrant3.value = res.data.stepEightC;
- quadrant4.value = res.data.stepEightD;
- quadrant1Color.value = res.data.stepNineA;
- quadrant2Color.value = res.data.stepNineB;
- quadrant3Color.value = res.data.stepNineC;
- quadrant4Color.value = res.data.stepNineD;
+ if (res.data) {
+ step1Data.value[0].params1 = res.data.stepFiveA;
+ step1Data.value[0].params2 = res.data.stepFiveB;
+ step1Data.value[1].params1 = res.data.stepFiveC;
+ step1Data.value[1].params2 = res.data.stepFiveD;
+ step1Data.value[2].params1 = res.data.stepSixA;
+ step1Data.value[2].params2 = res.data.stepSixB;
+ step1Data.value[3].params1 = res.data.stepSixC;
+ step1Data.value[3].params2 = res.data.stepSixD;
+ step2Data.value[4].params1 = res.data.stepSevenA;
+ step2Data.value[4].params2 = res.data.stepSevenB;
+ chart1OptionData.value = JSON.parse(res.data.stepSevenC);
+ // console.log(JSON.parse(res.data.stepSevenC),'666');
+ chart2OptionData.value = JSON.parse(res.data.stepSevenD);
+ quadrant1.value = res.data.stepEightA;
+ quadrant2.value = res.data.stepEightB;
+ quadrant3.value = res.data.stepEightC;
+ quadrant4.value = res.data.stepEightD;
+ quadrant1Color.value = res.data.stepNineA;
+ quadrant2Color.value = res.data.stepNineB;
+ quadrant3Color.value = res.data.stepNineC;
+ quadrant4Color.value = res.data.stepNineD;
+ }
+
// step2Data.value[14].params = res.data.stepTenA;
// step2Data.value[15].params = res.data.stepTenB;
// step2Data.value[16].params = res.data.stepTenC;
@@ -1454,17 +1457,17 @@ defineExpose({
display: flex;
font-size: 15px;
font-weight: bold;
- width: 180px;
- height: 56px;
+ width: 150px;
+ height: 50px;
background-image: url("@/assets/images/taskImport.png");
- background-size: 180px 56px;
+ background-size: 150px 50px;
text-align: center;
align-items: center;
- line-height: 56px;
+ line-height: 50px;
cursor: pointer;
img {
margin-left: 20px;
- margin-right: 15px;
+ margin-right: 8px;
}
}
.caseBack {
diff --git a/src/views/portraitModel/components/funnelAnalysis.vue b/src/views/portraitModel/components/funnelAnalysis.vue
index d5a1d9b..f81d9fe 100644
--- a/src/views/portraitModel/components/funnelAnalysis.vue
+++ b/src/views/portraitModel/components/funnelAnalysis.vue
@@ -1023,17 +1023,17 @@ defineExpose({
display: flex;
font-size: 15px;
font-weight: bold;
- width: 180px;
- height: 56px;
+ width: 150px;
+ height: 50px;
background-image: url("@/assets/images/taskImport.png");
- background-size: 180px 56px;
+ background-size: 150px 50px;
text-align: center;
align-items: center;
- line-height: 56px;
+ line-height: 50px;
cursor: pointer;
img {
margin-left: 20px;
- margin-right: 15px;
+ margin-right: 8px;
}
}
.caseBack {
diff --git a/src/views/portraitModel/components/portraitAnalysis.vue b/src/views/portraitModel/components/portraitAnalysis.vue
index e8f0b95..670a9cf 100644
--- a/src/views/portraitModel/components/portraitAnalysis.vue
+++ b/src/views/portraitModel/components/portraitAnalysis.vue
@@ -1272,17 +1272,17 @@ defineExpose({
display: flex;
font-size: 15px;
font-weight: bold;
- width: 180px;
- height: 56px;
+ width: 150px;
+ height: 50px;
background-image: url("@/assets/images/taskImport.png");
- background-size: 180px 56px;
+ background-size: 150px 50px;
text-align: center;
align-items: center;
- line-height: 56px;
+ line-height: 50px;
cursor: pointer;
img {
margin-left: 20px;
- margin-right: 15px;
+ margin-right: 8px;
}
}
.caseBack {
diff --git a/src/views/portraitModel/components/repurchaseAnalysis.vue b/src/views/portraitModel/components/repurchaseAnalysis.vue
index 5ad46ba..5a443bd 100644
--- a/src/views/portraitModel/components/repurchaseAnalysis.vue
+++ b/src/views/portraitModel/components/repurchaseAnalysis.vue
@@ -1967,17 +1967,17 @@ defineExpose({
display: flex;
font-size: 15px;
font-weight: bold;
- width: 180px;
- height: 56px;
+ width: 150px;
+ height: 50px;
background-image: url("@/assets/images/taskImport.png");
- background-size: 180px 56px;
+ background-size: 150px 50px;
text-align: center;
align-items: center;
- line-height: 56px;
+ line-height: 50px;
cursor: pointer;
img {
margin-left: 20px;
- margin-right: 15px;
+ margin-right: 8px;
}
}
.caseBack {
diff --git a/src/views/portraitModel/components/retainAnalysis.vue b/src/views/portraitModel/components/retainAnalysis.vue
index 161ccc9..67525e4 100644
--- a/src/views/portraitModel/components/retainAnalysis.vue
+++ b/src/views/portraitModel/components/retainAnalysis.vue
@@ -1765,17 +1765,17 @@ defineExpose({
display: flex;
font-size: 15px;
font-weight: bold;
- width: 180px;
- height: 56px;
+ width: 150px;
+ height: 50px;
background-image: url("@/assets/images/taskImport.png");
- background-size: 180px 56px;
+ background-size: 150px 50px;
text-align: center;
align-items: center;
- line-height: 56px;
+ line-height: 50px;
cursor: pointer;
img {
margin-left: 20px;
- margin-right: 15px;
+ margin-right: 8px;
}
}
.caseBack {
diff --git a/src/views/portraitModel/components/rfmAnalysis.vue b/src/views/portraitModel/components/rfmAnalysis.vue
index 936337f..3feb59c 100644
--- a/src/views/portraitModel/components/rfmAnalysis.vue
+++ b/src/views/portraitModel/components/rfmAnalysis.vue
@@ -1294,17 +1294,17 @@ const tableSpanMethod = ({ row, column, rowIndex, columnIndex }) => {
display: flex;
font-size: 15px;
font-weight: bold;
- width: 180px;
- height: 56px;
+ width: 150px;
+ height: 50px;
background-image: url("@/assets/images/taskImport.png");
- background-size: 180px 56px;
+ background-size: 150px 50px;
text-align: center;
align-items: center;
- line-height: 56px;
+ line-height: 50px;
cursor: pointer;
img {
margin-left: 20px;
- margin-right: 15px;
+ margin-right: 8px;
}
}
.caseBack {
diff --git a/src/views/portraitModel/components/viscosityAnalysis.vue b/src/views/portraitModel/components/viscosityAnalysis.vue
index 4ef26e7..19bfad8 100644
--- a/src/views/portraitModel/components/viscosityAnalysis.vue
+++ b/src/views/portraitModel/components/viscosityAnalysis.vue
@@ -1900,17 +1900,17 @@ defineExpose({
display: flex;
font-size: 15px;
font-weight: bold;
- width: 180px;
- height: 56px;
+ width: 150px;
+ height: 50px;
background-image: url("@/assets/images/taskImport.png");
- background-size: 180px 56px;
+ background-size: 150px 50px;
text-align: center;
align-items: center;
- line-height: 56px;
+ line-height: 50px;
cursor: pointer;
img {
margin-left: 20px;
- margin-right: 15px;
+ margin-right: 8px;
}
}
.caseBack {
diff --git a/src/views/portraitModel/index.vue b/src/views/portraitModel/index.vue
index ea50fb9..5a7f79d 100644
--- a/src/views/portraitModel/index.vue
+++ b/src/views/portraitModel/index.vue
@@ -271,61 +271,61 @@ const tabList = ref([
id: "1",
key: () => import('./components/rfmAnalysis.vue'),
title: "RFM分析",
- backImg: "src/assets/images/icon1.png",
+ backImg: "/src/assets/images/icon1.png",
},
{
id: "2",
key: () => import('./components/abcAnalysis.vue'),
title: "帕累托/ABC分析",
- backImg: "src/assets/images/icon2.png",
+ backImg: "/src/assets/images/icon2.png",
},
{
id: "3",
key: () => import('./components/bostonAnalysis.vue'),
title: "波士顿矩阵分析",
- backImg: "src/assets/images/icon3.png",
+ backImg: "/src/assets/images/icon3.png",
},
{
id: "4",
key: () => import('./components/funnelAnalysis.vue'),
title: "转化分析-漏斗模型",
- backImg: "src/assets/images/icon4.png",
+ backImg: "/src/assets/images/icon4.png",
},
{
id: "5",
key: () => import('./components/basketAnalysis.vue'),
title: "购物篮分析",
- backImg: "src/assets/images/icon5.png",
+ backImg: "/src/assets/images/icon5.png",
},
{
id: "6",
key: () => import('./components/repurchaseAnalysis.vue'),
title: "复购分析",
- backImg: "src/assets/images/icon6.png",
+ backImg: "/src/assets/images/icon6.png",
},
{
id: "7",
key: () => import('./components/retainAnalysis.vue'),
title: "留存分析",
- backImg: "src/assets/images/icon7.png",
+ backImg: "/src/assets/images/icon7.png",
},
{
id: "8",
key: () => import('./components/viscosityAnalysis.vue'),
title: "用户粘性分析",
- backImg: "src/assets/images/icon8.png",
+ backImg: "/src/assets/images/icon8.png",
},
{
id: "9",
key: () => import('./components/AARRRAnalysis.vue'),
title: "AARRR用户运营分析",
- backImg: "src/assets/images/icon9.png",
+ backImg: "/src/assets/images/icon9.png",
},
{
id: "10",
key: () => import('./components/portraitAnalysis.vue'),
title: "用户画像分析",
- backImg: "src/assets/images/icon10.png",
+ backImg: "/src/assets/images/icon10.png",
},
]);
// defineExpose({ submitMethod });