diff --git a/src/assets/images/30cd120b9cc8f9666542bde19b97b5c.png b/src/assets/images/30cd120b9cc8f9666542bde19b97b5c.png new file mode 100644 index 0000000..c66929f Binary files /dev/null and b/src/assets/images/30cd120b9cc8f9666542bde19b97b5c.png differ diff --git a/src/assets/images/31f16a2a3038679a13ea6c4d143b764.png b/src/assets/images/31f16a2a3038679a13ea6c4d143b764.png new file mode 100644 index 0000000..0b58cf2 Binary files /dev/null and b/src/assets/images/31f16a2a3038679a13ea6c4d143b764.png differ diff --git a/src/assets/images/43290bff95bf223b26f2b6920b1d20e.png b/src/assets/images/43290bff95bf223b26f2b6920b1d20e.png new file mode 100644 index 0000000..c0886a6 Binary files /dev/null and b/src/assets/images/43290bff95bf223b26f2b6920b1d20e.png differ diff --git a/src/assets/images/4ef9378778f4cc503f2a8c24c0858ba.png b/src/assets/images/4ef9378778f4cc503f2a8c24c0858ba.png new file mode 100644 index 0000000..bb26d29 Binary files /dev/null and b/src/assets/images/4ef9378778f4cc503f2a8c24c0858ba.png differ diff --git a/src/assets/images/664a12e0c54099bdebfc7cfb9eff809.png b/src/assets/images/664a12e0c54099bdebfc7cfb9eff809.png new file mode 100644 index 0000000..ef7a98f Binary files /dev/null and b/src/assets/images/664a12e0c54099bdebfc7cfb9eff809.png differ diff --git a/src/assets/images/aiAnalysis1.png b/src/assets/images/aiAnalysis1.png new file mode 100644 index 0000000..fd58169 Binary files /dev/null and b/src/assets/images/aiAnalysis1.png differ diff --git a/src/assets/images/aiAnalysis2.png b/src/assets/images/aiAnalysis2.png new file mode 100644 index 0000000..1359c56 Binary files /dev/null and b/src/assets/images/aiAnalysis2.png differ diff --git a/src/assets/images/d24cf8e976d6f9fd2695222347683d6.png b/src/assets/images/d24cf8e976d6f9fd2695222347683d6.png new file mode 100644 index 0000000..0878d57 Binary files /dev/null and b/src/assets/images/d24cf8e976d6f9fd2695222347683d6.png differ diff --git a/src/assets/images/u1366.png b/src/assets/images/u1366.png new file mode 100644 index 0000000..3de3cfe Binary files /dev/null and b/src/assets/images/u1366.png differ diff --git a/src/views/digitalMarketTech/AIGCLargeModel/components/AIArticleToPic.vue b/src/views/digitalMarketTech/AIGCLargeModel/components/AIArticleToPic.vue new file mode 100644 index 0000000..7a10775 --- /dev/null +++ b/src/views/digitalMarketTech/AIGCLargeModel/components/AIArticleToPic.vue @@ -0,0 +1,314 @@ + + + + + diff --git a/src/views/digitalMarketTech/AIGCLargeModel/components/AIDataAnalysis.vue b/src/views/digitalMarketTech/AIGCLargeModel/components/AIDataAnalysis.vue new file mode 100644 index 0000000..1ce3a14 --- /dev/null +++ b/src/views/digitalMarketTech/AIGCLargeModel/components/AIDataAnalysis.vue @@ -0,0 +1,291 @@ + + + + + diff --git a/src/views/digitalMarketTech/AIGCLargeModel/components/AIPicture.vue b/src/views/digitalMarketTech/AIGCLargeModel/components/AIPicture.vue index 1e24ab7..db15391 100644 --- a/src/views/digitalMarketTech/AIGCLargeModel/components/AIPicture.vue +++ b/src/views/digitalMarketTech/AIGCLargeModel/components/AIPicture.vue @@ -5,16 +5,20 @@ 任务素材 -
-

- 根据文字描述要求,利用推荐的AI工具,进行图片修复美化。 -
- 1、AI消除:去除图片中的水印和文字,只保留鞋子。 -
- 2、AI抠图:将人物照中的背景去除,抠出人物。 -
- 3、AI扩图:将金鱼图片进行尺寸扩展,或者周边扩展。 -

+
+ 根据文字描述要求,利用推荐的AI工具,进行图片修复美化。 +
+ 1、AI消除:去除图片中的水印和文字,只保留鞋子。 +
素材1
+
+
+ 2、AI抠图:将人物照中的背景去除,抠出人物。 +
素材2
+
+
+ 3、AI扩图:将金鱼图片进行尺寸扩展,或者周边扩展。 +
素材3
+
@@ -105,7 +109,7 @@ diff --git a/src/views/portraitModel/components/rfmAnalysis.vue b/src/views/portraitModel/components/rfmAnalysis.vue index 3feb59c..4d90ea7 100644 --- a/src/views/portraitModel/components/rfmAnalysis.vue +++ b/src/views/portraitModel/components/rfmAnalysis.vue @@ -2,7 +2,7 @@
- 任务知识导入 + 任务知识导入
@@ -11,9 +11,7 @@ 案例背景:
- - 现有以下原始数据,需要采用RFM分析方法,对客户进行分类: - + 现有以下原始数据,需要采用RFM分析方法,对客户进行分类:
- - - - - - - - + + + +
下载数据
@@ -43,9 +37,7 @@ 第一步,确定“近一段时间”的时间间隔
- - 计划分析最近30天的用户,假设现在是2025.05.30,需要对数据进行筛选,筛选出统计样本 - + 计划分析最近30天的用户,假设现在是2025.05.30,需要对数据进行筛选,筛选出统计样本
- - - - - - - - + + + + @@ -87,9 +77,7 @@ 第二步,计算每个用户的RFM值
- - 以用户为统计对象,计算出每个用户的R、F、M这3个指标 - + 以用户为统计对象,计算出每个用户的R、F、M这3个指标
- - - - - + + + @@ -150,9 +135,12 @@ 第三步,制定R、F、M评分规则
- 最近一次消费时间间隔(R),上一次消费离得越近,也就是R的值越小,用户价值越高。
- 消费频率(F),购买频率越高,也就是F值越大,用户价值越高。
- 消费金额(M),消费金额越高,也就是M值越大,用户价值越高。
+ 最近一次消费时间间隔(R),上一次消费离得越近,也就是R的值越小,用户价值越高。 +
+ 消费频率(F),购买频率越高,也就是F值越大,用户价值越高。 +
+ 消费金额(M),消费金额越高,也就是M值越大,用户价值越高。 +
具体实际业务中,如何定义打分的范围,要根据具体的业务来灵活定,没有统一的标准。将R、F、M3个指标分别按价值从小到大分为1-5分。如下表所示:
@@ -166,19 +154,10 @@ backgroundColor: '#6A7DE9!important', }" > - - - - - - - - + + + +
@@ -188,9 +167,7 @@ 第四步,给R、F、M按价值打分 - - 按照第二步统计的数值,结合第三步的评估规则,对用户R、F、M值进行评分 - + 按照第二步统计的数值,结合第三步的评估规则,对用户R、F、M值进行评分
- - - - - - - - - - + + + + + @@ -262,9 +227,7 @@ 第五步,计算所有用户R、F、M打分值的平均数
- - 按照第四步给各个用户R、F、M的打分值,分别计算各自的平均数(小数点后保留两位小数) - + 按照第四步给各个用户R、F、M的打分值,分别计算各自的平均数(小数点后保留两位小数)
@@ -317,9 +283,7 @@ 第六步,计算所有用户R、F、M打分值与平均数的高低情况
- - 判断每个用户的价值值R、F、M3个值是高于平均值,还是低于平均值。如果一行里的R值打分大于平均值,就在R值高低列里记录为“高”,否则记录为“低” - + 判断每个用户的价值值R、F、M3个值是高于平均值,还是低于平均值。如果一行里的R值打分大于平均值,就在R值高低列里记录为“高”,否则记录为“低”
- - - - - - + + + @@ -369,15 +331,16 @@ v-if="scope.$index != 3" > --> - - - - +
+ + + + +
+ X + √ +
+
@@ -389,15 +352,16 @@ v-if="scope.$index != 3" > --> - - - - +
+ + + + +
+ X + √ +
+
@@ -410,9 +374,7 @@ 第七步,用户分类
- - 按照用户分类表格里定义的规则进行比较,就可以得出用户属于哪种类。 - + 按照用户分类表格里定义的规则进行比较,就可以得出用户属于哪种类。

用户分类规则

- - - + + +
@@ -457,26 +406,20 @@ > - - - - - - + + + @@ -489,61 +432,34 @@ 第八步,精细化运营
- - 对用户分类以后要做什么呢?那就是针对每类用户如何制定运营策略,这个具体公司业务不同,方法也不一样。这里举例说明前4类用户。 - + 对用户分类以后要做什么呢?那就是针对每类用户如何制定运营策略,这个具体公司业务不同,方法也不一样。这里举例说明前4类用户。
重要价值用户,RFM三个值都很高,要提供VIP服务
- 重要发展用户,消费频率低,但是其他两个值很高,就要想办法提高他的消费频率。 + 重要发展用户,消费频率低,但是其他两个值很高,就要想办法提高他的消费频率。
- 重要保持用户,最近消费距离现在时间较远,也就是F值低,但是消费频次和消费金额高。这种用户,是一段时间没来的忠实客户。应该主动和他保持联系,提高复购率。 + 重要保持用户,最近消费距离现在时间较远,也就是F值低,但是消费频次和消费金额高。这种用户,是一段时间没来的忠实客户。应该主动和他保持联系,提高复购率。
- 重要挽留客户,最近消费时间距离现在较远、消费频率低,但消费金额高。这种用户,即将流失,要主动联系用户,调查清楚哪里出了问题,并想办法挽回。 + 重要挽留客户,最近消费时间距离现在较远、消费频率低,但消费金额高。这种用户,即将流失,要主动联系用户,调查清楚哪里出了问题,并想办法挽回。
- + -
+
@@ -584,6 +500,7 @@ const step4AnswerFlag = ref(false); const step5AnswerFlag = ref(false); const step6AnswerFlag = ref(false); const step7AnswerFlag = ref(false); +const showAnswerFlag = ref(false); const knowledgeFlag = ref(false); const knowledge = ref( '

1.什么是RFM分析方法?

RFM是3个指标的缩写,最近一次消费时间间隔(Recency),消费频率(Frequency),消费金额(Monetary)。通过这3个指标对用户分类。

这里举个例子来说明这3个指标是什么意思。

比如我有一家店铺,小明是这家店铺的用户。现在是这个月的30号。

1)最近1次消费时间间隔(R)是指用户最近一次消费距离现在多长时间了。

小明最近1次在这就店铺买东西是这个月25号,上一次消费距离现在过去了5天,所以小明的最近1次消费时间间隔是5天。

2)消费频率(F)是指用户一段时间内消费了多少次。

比如“一段时间”定义是最近30天,发现小明最近30天在店铺消费了3次。

3)消费金额(M)是指用户一段时间内的消费金额。

比如“一段时间”是最近30天,发现小明最近30天总共在店铺消费了1000元。

这3个指标业务不同,定义也不同,要根据业务来灵活定义。

最近一次消费时间间隔(R),上一次消费离得越近,也就是R的值越小,用户价值越高。

消费频率(F),购买频率越高,也就是F的值越大,用户价值越高。

消费金额(M),消费金额越高,也就是M的值越大,用户价值越高。

我们把这3个指标按价值从低到高排序,并把这3个指标作为XYZ坐标轴,就可以把空间分为8部分,这样就可以把用户分为下图的8类。


我们把这个图里对应的RFM这3个值对应的价值是高还是低,对应到下面这张表里就得到了用户分类的规则。


2.RFM分析方法有什么用?

小明的店铺某个月收入大幅下跌。他赶快分析数据,发行原来几个重要的用户被竞争对手挖走了,而这几个用户贡献了店铺80%的收入。

出现这个问题,是因为小明没有对用户分类,对全部用户采取的都是一样的运营决策。怎么对用户分类,识别出有价值的用户呢?

这时候就可以用RFM分析方法把用户分为8类,这样就可以对不同价值用户使用不同的营销决策,把公司有限的资源发挥最大的效果,这就是我们常常听到的精细化运营。比如第1类是重要价值用户,这类用户最近一次消费较近,消费频率也搞,消费金额也搞,要提供vip服务。

我们日常生活中接触到的会员服务就是这方面的经典案例。根据企鹅智库《2017中国会员经济数据报告》数据显示,用户对信用卡、酒店、航空公司的会员体系最满意。


3.如何使用RFM分析方法?

前面我们说RFM分析方法把用户分为8类,具体是如何做到的呢?

第1步)计算R、F、M值

要得到R、F、M这3个指标,我们一般需要数据的3个字段:用户ID或者用户名称、消费时间、消费金额。从这3个字段我们可以计算出R、F、M这3个指标。

以图片中的原始数据为例,现在比如是2020年1月30日,分析最近30天的用户。

小明最近一次消费是(2020.1.26)与现在时间的间隔是4天。在最近30天消费了2次,总共消费金额是5000元。

用这个方法,假如我们这个案例里计算出的是下面表格里的R、F、M值,并在表格里加了3列,用于后面对计算出的R、F、M3个值打分。


第2步)给R、F、M按价值打分

注意这里是按指标的价值打分,不是按指标数值大小打分。最近一次消费时间间隔(R),上一次消费离得越近,也就是R的值越小,用户价值越高。

将R、F、M3个指标分别按价值从小到大分为1-5分。

这个案例里,将最近消费时间间隔(R)距离越近价值越大,大于20天的打1分,10-20天的打2分,5-10天打2分,3-5天打4分,3天以内打5分。


我们把这3个指标分别是如何打分的,整理到下面这个表里。

最近一次消费时间间隔(R),上一次消费离得越近,也就是R的值越小,用户价值越高。

消费频率(F),购买频率越高,也就是F值越大,用户价值越高。

消费金额(M),消费金额越高,也就是M值越大,用户价值越高。

具体实际业务中,如何定义打分的范围,要根据具体的业务来灵活定,没有统一的标准。

根据这个打分规则,我们可以把前面计算出的R、F、M值表格里的R值分类、F值分类、M值分类这3列填上上对应的RFM值的打分值:


第3步)计算价值平均值

分别计算出R值打分、F值打分、M值打分这3列的平均值


第4步)用户分类

在表格里增加3列,分别用于记录R、F、M3个值是高于平均值,还是低于平均值。

如果一行里的R值打分大于平均值,就在R值高低列里记录为“高”,否则记录为“低”。其他F值,M值也这样比较。最终得到了下面表格里的值

然后和用户分类表格里定义的规则进行比较,就可以得出用户属于哪种类


我们总结下前面的内容:如何用RFM对用户分类?

1)使用原始数据计算出R、F、M值

2)给R、F、M按价值打分,比如按价值从低到高分为1-5分

3)计算价值的平均值,如果某个指标的得分比价值的平均值低,标记为低。如果某个指标的得分比价值的平均值高,标记为高

4)用户分类规则表比较,得出用户分类

我们再回过头看前面这个分类图,你就会恍然大悟。在坐标轴的中心,可以理解为某个指标价值的平均值。


用户分类后,如何精细化运营呢?

对用户分类以后要做什么呢?那就是针对每类用户如何制定运营策略,这个具体公司业务不同,方法也不一样。这里举例说明前4类用户。

1)重要价值用户,RFM三个值都很高,要提供vip服务

2)重要发展用户,消费频率低,但是其他两个值很高,就要想办法提高他的消费频率

3) 重要保持用户,最近消费距离现在时间较远,也就是F值低,但是消费频次和消费金额高。这种用户,是一段时间没来的忠实客户。应该主动和他保持联系,提高复购率

4) 重要挽留客户,最近消费时间距离现在较远、消费频率低,但消费金额高。这种用户,即将流失,要主动联系用户,调查清楚哪里出了问题,并想办法挽回。

这样通过RFM分析方法来分析用户,对用户进行精细化运营。不断将用户转化为重要价值用户。


4.使用RFM分析方法需要注意什么?

第1个问题:什么是? 我们学习了,RFM是3个指标的缩写,最近一次消费的时间间隔(R),消费频率(F),消费金额(M)。RFM分析方法可以把用户分为8类。

第2个问题:有什么用?我们学习了,通RFM分析方法,我们可以把用户分为8类,这样就可以对不同用户使用不同的营销策略。比如信用卡的会员服务。

第3个问题:如何用?通过一个案例学会了如何用RFM分析方法对用户分类,了解了RFM背后的原理。现在有很多工具,比如excel,sql,pytho等都可以实现RFM。工作里用到的时候,可以再用搜索引擎去搜对应的实现工具,就可以快速实现了,现在把基本原理掌握了就可以。

现在我们来看第4个问题:有哪些注意事项?

(1)第1个注意事项:R、F、M指标定义,不同业务定义不同。要根据具体业务灵活应用。

这里举个例子。

很多人会有这样的疑问,朋友之间不经常联系,慢慢就淡了。那么,如何管理人脉关系呢?

我们还可以用RFM分析方法来分析你的人脉,针对不同的人,制定不同的联系决策。

最近一次消费时间间隔(R)可以定义为最近一次见面距离现在的时间。

消费频率(F)可以定义为最近1年见面的频率。

消费金额(M)可以定义为最近1年见面深度,比如见面是只打个招呼,还是一起吃个饭,还是畅谈人生。

按照这个定义,我们可以重点关注前3类人脉关系。

按照这个定义,我们可以重点关注前3类人脉关系

1)重要价值关系:对你的生活和工作非常有价值。他几乎是你最亲密的亲戚、朋友、客户。面对这些人,你应该经常联系,彼此帮助,时不时约出来聊聊天。

2)重要发展关系:联系比较多、一起做过点事,但是聊天是有一句没一句的,这种要重点发展关系。比如把你的困惑或者小秘密和他分享,产生情感连接。

3)重要保持的关系:所谓的熟人,也就是打起电话来记得住这个人,而且也大概了解他的背景,可能很长时间都没有见的那种“朋友”。这种要主动联系,利用节假日登门拜访、共同的朋友持续保持沟通。


冯仑讲过一段话:在正常情况下,人一生交往的关系是三个数:10、30和60。这句话是什么意思呢?其实正好对应我们刚才讲的三种人脉关系。

你遇到危难的时候,能借钱的对象不超过10个人。就算是把亲戚、朋友、父母全算上,你到时候能张口借钱的对象不会超过10个人。

再一层就是属于朋友,经常打交道的、做过点事的,大概不超过30个人。这30人还包括前面说的那10个人。

最外一圈是所谓的熟人,也就是打起电话来记得住这个人,而且也大概了解他的背景,可能很长时间都没有见的那种“朋友”,最多也就是60个。这60个人还包括了前面说的30人。

所以,人这一生,其实不需要太多的关系就能应付得了。需要花精力去了解的人,其实很少,不会很多,不会超过60个。只要把这60个人的名单每天都盘好,能够用一生了。

我有个朋友是这方面高手,他把经常要联系的人记下来,每个月翻出来看看,“这个朋友有3个月没联系了,要约出来聊聊天”。

你看,在关系中,如果两个都被动,那只能慢慢断了联系。所以,保持关系的秘密就是需要其中的一方主动。

人脉比你想象的重要,为了保持有效关系,你必须把自己变成一个在这方面主动的人。


(2)第2个注意事项:R、F、M按价值如何确定打分的规则?

一般分为1-5分,也可以根据具体业务灵活来调整。

每个分数的范围是多少?这要根据具体业务来定范围的阈值,这就好比你在开车,车速控制在哪个范围内,可以根据路况灵活把握。

同样的,FRM打分的规则可以与业务部门沟通,进行头脑风暴。或者使用聚类的方法对R、F、M的值进行分类,然后给每个类别打分。


5.总结

我把前面的知识点总结到下面这张图里

' @@ -869,14 +786,21 @@ const step1Submit = () => { if (i == 0) { if (fileTable1.value[0].params && fileTable1.value[0].params == "纳入") { stepError1.value++; + fileTable1.value[0].isError = true; + } else { + fileTable1.value[0].isError = false; } // console.log(fileTable1.value[0].params); } else { if (fileTable1.value[i].params && fileTable1.value[i].params == "剔除") { stepError1.value++; + fileTable1.value[i].isError = true; + } else { + fileTable1.value[i].isError = false; } } } + console.log(fileTable1.value, "000"); proxy.$modal.msgSuccess("提交成功"); console.log(stepError1.value, "错误次数"); step1AnswerFlag.value = true; @@ -894,30 +818,57 @@ const step2Submit = () => { console.log(555); if (step2Data.value[0].params1 && step2Data.value[0].params1 !== "4") { stepError2.value++; + step2Data.value[0].isError1 = true; + } else { + step2Data.value[0].isError1 = false; } if (step2Data.value[0].params2 && step2Data.value[0].params2 !== "2") { stepError2.value++; + step2Data.value[0].isError2 = true; + } else { + step2Data.value[0].isError2 = false; } if (step2Data.value[0].params3 && step2Data.value[0].params3 !== "5000") { stepError2.value++; + step2Data.value[0].isError3 = true; + } else { + step2Data.value[0].isError3 = false; } if (step2Data.value[1].params1 && step2Data.value[1].params1 !== "2") { stepError2.value++; + step2Data.value[1].isError1 = true; + } else { + step2Data.value[1].isError1 = false; } if (step2Data.value[1].params2 && step2Data.value[1].params2 !== "3") { stepError2.value++; + step2Data.value[1].isError2 = true; + } else { + step2Data.value[1].isError2 = false; } if (step2Data.value[1].params3 && step2Data.value[1].params3 !== "1000") { stepError2.value++; + step2Data.value[1].isError3 = true; + } else { + step2Data.value[1].isError3 = false; } if (step2Data.value[2].params1 && step2Data.value[2].params1 !== "1") { stepError2.value++; + step2Data.value[2].isError1 = true; + } else { + step2Data.value[2].isError1 = false; } if (step2Data.value[2].params2 && step2Data.value[2].params2 !== "1") { stepError2.value++; + step2Data.value[2].isError2 = true; + } else { + step2Data.value[2].isError2 = false; } if (step2Data.value[2].params3 && step2Data.value[2].params3 !== "500") { stepError2.value++; + step2Data.value[2].isError3 = true; + } else { + step2Data.value[2].isError3 = false; } console.log(stepError2.value, "错误数"); proxy.$modal.msgSuccess("提交成功"); @@ -945,30 +896,57 @@ const step4Submit = () => { // let step4Error = 0; if (step4Data.value[0].params1 && step4Data.value[0].params1 !== "4") { step4Error.value++; + step4Data.value[0].isError1 = true; + } else { + step4Data.value[0].isError1 = false; } if (step4Data.value[0].params2 && step4Data.value[0].params2 !== "2") { step4Error.value++; + step4Data.value[0].isError2 = true; + } else { + step4Data.value[0].isError2 = false; } if (step4Data.value[0].params3 && step4Data.value[0].params3 !== "4") { step4Error.value++; + step4Data.value[0].isError3 = true; + } else { + step4Data.value[0].isError3 = false; } if (step4Data.value[1].params1 && step4Data.value[1].params1 !== "5") { step4Error.value++; + step4Data.value[1].isError1 = true; + } else { + step4Data.value[1].isError1 = false; } if (step4Data.value[1].params2 && step4Data.value[1].params2 !== "2") { step4Error.value++; + step4Data.value[1].isError2 = true; + } else { + step4Data.value[1].isError2 = false; } if (step4Data.value[1].params3 && step4Data.value[1].params3 !== "2") { step4Error.value++; + step4Data.value[1].isError3 = true; + } else { + step4Data.value[1].isError3 = false; } if (step4Data.value[2].params1 && step4Data.value[2].params1 !== "5") { step4Error.value++; + step4Data.value[2].isError1 = true; + } else { + step4Data.value[2].isError1 = false; } if (step4Data.value[2].params2 && step4Data.value[2].params2 !== "1") { step4Error.value++; + step4Data.value[2].isError2 = true; + } else { + step4Data.value[2].isError2 = false; } if (step4Data.value[2].params3 && step4Data.value[2].params3 !== "1") { step4Error.value++; + step4Data.value[2].isError3 = true; + } else { + step4Data.value[2].isError3 = false; } console.log(step4Error.value, "错误数"); proxy.$modal.msgSuccess("提交成功"); @@ -996,12 +974,21 @@ const step5Submit = () => { // let step5Error = 0; if (step5Data.value[0].params1 && step5Data.value[0].params1 !== "4.67") { step5Error.value++; + step5Data.value[0].isError1 = true; + } else { + step5Data.value[0].isError1 = false; } if (step5Data.value[0].params2 && step5Data.value[0].params2 !== "1.67") { step5Error.value++; + step5Data.value[0].isError2 = true; + } else { + step5Data.value[0].isError2 = false; } if (step5Data.value[0].params3 && step5Data.value[0].params3 !== "2.33") { step5Error.value++; + step5Data.value[0].isError3 = true; + } else { + step5Data.value[0].isError3 = false; } console.log(step5Error.value, "错误数"); proxy.$modal.msgSuccess("提交成功"); @@ -1015,11 +1002,7 @@ const step6Submit = () => { // console.log(555); step6Error.value = 0; for (let i in step6Data.value.slice(0, step6Data.value.length - 1)) { - if ( - !step6Data.value[i].params1 || - !step6Data.value[i].params2 || - !step6Data.value[i].params3 - ) { + if (!step6Data.value[i].params1 || !step6Data.value[i].params2 || !step6Data.value[i].params3) { proxy.$modal.msgError("请先完成所有填空"); return; } @@ -1027,30 +1010,57 @@ const step6Submit = () => { // let step6Error = 0; if (step6Data.value[0].params1 && step6Data.value[0].params1 !== "低") { step6Error.value++; + step6Data.value[0].isError1 = true; + } else { + step6Data.value[0].isError1 = false; } if (step6Data.value[0].params2 && step6Data.value[0].params2 !== "高") { step6Error.value++; + step6Data.value[0].isError2 = true; + } else { + step6Data.value[0].isError2 = false; } if (step6Data.value[0].params3 && step6Data.value[0].params3 !== "高") { step6Error.value++; + step6Data.value[0].isError3 = true; + } else { + step6Data.value[0].isError3 = false; } if (step6Data.value[1].params1 && step6Data.value[1].params1 !== "高") { step6Error.value++; + step6Data.value[1].isError1 = true; + } else { + step6Data.value[1].isError1 = false; } if (step6Data.value[1].params2 && step6Data.value[1].params2 !== "高") { step6Error.value++; + step6Data.value[1].isError2 = true; + } else { + step6Data.value[1].isError2 = false; } if (step6Data.value[1].params3 && step6Data.value[1].params3 !== "高") { step6Error.value++; + step6Data.value[1].isError3 = true; + } else { + step6Data.value[1].isError3 = false; } if (step6Data.value[2].params1 && step6Data.value[2].params1 !== "高") { step6Error.value++; + step6Data.value[2].isError1 = true; + } else { + step6Data.value[2].isError1 = false; } if (step6Data.value[2].params2 && step6Data.value[2].params2 !== "低") { step6Error.value++; + step6Data.value[2].isError2 = true; + } else { + step6Data.value[2].isError2 = false; } if (step6Data.value[2].params3 && step6Data.value[2].params3 !== "低") { step6Error.value++; + step6Data.value[2].isError3 = true; + } else { + step6Data.value[2].isError3 = false; } console.log(step6Error.value, "错误数"); proxy.$modal.msgSuccess("提交成功"); @@ -1076,56 +1086,45 @@ const step7Submit = () => { } } // let step7Error = 0; - if ( - step7Data.value[0].params && - step7Data.value[0].params !== "重要保持用户" - ) { + if (step7Data.value[0].params && step7Data.value[0].params !== "重要保持用户") { step7Error.value++; + step7Data.value[0].isError1 = true; + } else { + step7Data.value[0].isError1 = false; } - if ( - step7Data.value[1].params && - step7Data.value[1].params !== "重要价值用户" - ) { + if (step7Data.value[1].params && step7Data.value[1].params !== "重要价值用户") { step7Error.value++; + step7Data.value[1].isError1 = true; + } else { + step7Data.value[1].isError1 = false; } - if ( - step7Data.value[2].params && - step7Data.value[2].params !== "一般发展用户" - ) { + if (step7Data.value[2].params && step7Data.value[2].params !== "一般发展用户") { step7Error.value++; + step7Data.value[2].isError1 = true; + } else { + step7Data.value[2].isError1 = false; } console.log(step7Error.value, "错误数"); proxy.$modal.msgSuccess("提交成功"); step7AnswerFlag.value = true; }; const submitData = () => { - if ( - !step1AnswerFlag.value || - !step2AnswerFlag.value || - !step4AnswerFlag.value || - !step5AnswerFlag.value || - !step6AnswerFlag.value || - !step7AnswerFlag.value - ) { + if (!step1AnswerFlag.value || !step2AnswerFlag.value || !step4AnswerFlag.value || !step5AnswerFlag.value || !step6AnswerFlag.value || !step7AnswerFlag.value) { proxy.$modal.msgError("请先完成所有步骤!"); return; } - errorNum.value = - stepError1.value + - stepError2.value + - step4Error.value + - step5Error.value + - step6Error.value + - step7Error.value; + errorNum.value = stepError1.value + stepError2.value + step4Error.value + step5Error.value + step6Error.value + step7Error.value; console.log(errorNum.value, "总错误次数"); portraitModel .submit({ userId: JSON.parse(getUserInfo()).userId, taskName: "RFM分析", numberOfErrors: errorNum.value, + subState: 1, }) .then((res) => { proxy.$modal.msgSuccess("提交成功"); + showAnswerFlag.value = true; }) .catch((error) => {}); }; @@ -1285,9 +1284,11 @@ const tableSpanMethod = ({ row, column, rowIndex, columnIndex }) => {