|
|
|
|
@ -66,7 +66,7 @@ https://blog.csdn.net/kevin1993best/article/details/106329573"
|
|
|
|
|
>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
<div class="download">下载数据</div>
|
|
|
|
|
<div class="download" @click="downloadData">下载数据</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="line"></div>
|
|
|
|
|
@ -148,7 +148,7 @@ https://blog.csdn.net/kevin1993best/article/details/106329573"
|
|
|
|
|
<div id="echartsDom" style="width: 750px; height: 500px"></div>
|
|
|
|
|
<div class="analysisConclusion">分析结论</div>
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="analysisConclusion"
|
|
|
|
|
v-model="analysisConclusionStep1"
|
|
|
|
|
style="margin-left: 20px; margin-top: 20px; margin-bottom: 20px"
|
|
|
|
|
:rows="12"
|
|
|
|
|
type="textarea"
|
|
|
|
|
@ -217,13 +217,13 @@ https://blog.csdn.net/kevin1993best/article/details/106329573"
|
|
|
|
|
<div style="width: 650px">
|
|
|
|
|
<div class="analysisConclusion">分析结论</div>
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="analysisConclusion"
|
|
|
|
|
v-model="analysisConclusionStep2"
|
|
|
|
|
style="margin-left: 20px; margin-top: 20px; margin-bottom: 20px"
|
|
|
|
|
:rows="8"
|
|
|
|
|
type="textarea"
|
|
|
|
|
placeholder="请输入"
|
|
|
|
|
/>
|
|
|
|
|
<div class="submit">提交</div>
|
|
|
|
|
<div class="submit" @click="step2Submit">提交</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
@ -282,13 +282,13 @@ https://blog.csdn.net/kevin1993best/article/details/106329573"
|
|
|
|
|
<div style="width: 650px">
|
|
|
|
|
<div class="analysisConclusion">分析结论</div>
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="analysisConclusion"
|
|
|
|
|
v-model="analysisConclusionStep3"
|
|
|
|
|
style="margin-left: 20px; margin-top: 20px; margin-bottom: 20px"
|
|
|
|
|
:rows="8"
|
|
|
|
|
type="textarea"
|
|
|
|
|
placeholder="请输入"
|
|
|
|
|
/>
|
|
|
|
|
<div class="submit">提交</div>
|
|
|
|
|
<div class="submit" @click="step3Submit">提交</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
@ -374,13 +374,13 @@ https://blog.csdn.net/kevin1993best/article/details/106329573"
|
|
|
|
|
<div style="width: 650px">
|
|
|
|
|
<div class="analysisConclusion">分析结论</div>
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="analysisConclusion"
|
|
|
|
|
v-model="analysisConclusionStep4"
|
|
|
|
|
style="margin-left: 20px; margin-top: 20px; margin-bottom: 20px"
|
|
|
|
|
:rows="8"
|
|
|
|
|
type="textarea"
|
|
|
|
|
placeholder="请输入"
|
|
|
|
|
/>
|
|
|
|
|
<div class="submit">提交</div>
|
|
|
|
|
<div class="submit" @click="step4Submit">提交</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
@ -390,6 +390,8 @@ https://blog.csdn.net/kevin1993best/article/details/106329573"
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
import * as portraitModel from "@/api/portraitModel";
|
|
|
|
|
import { downBlobFile } from "@/utils/index.js";
|
|
|
|
|
import * as echarts from "echarts";
|
|
|
|
|
const { proxy } = getCurrentInstance();
|
|
|
|
|
const knowledgeHtml = ref(
|
|
|
|
|
@ -400,6 +402,14 @@ const dayValue = ref("");
|
|
|
|
|
const combinationValue1 = ref("");
|
|
|
|
|
const combinationValue2 = ref("");
|
|
|
|
|
const analysisConclusion = ref("");
|
|
|
|
|
const analysisConclusionStep1 = ref("");
|
|
|
|
|
const analysisConclusionStep2 = ref("");
|
|
|
|
|
const analysisConclusionStep3 = ref("");
|
|
|
|
|
const analysisConclusionStep4 = ref("");
|
|
|
|
|
const step1AnswerFlag = ref(false);
|
|
|
|
|
const step2AnswerFlag = ref(false);
|
|
|
|
|
const step3AnswerFlag = ref(false);
|
|
|
|
|
const step4AnswerFlag = ref(false);
|
|
|
|
|
const errorNum = ref(0);
|
|
|
|
|
const step1Error = ref(0);
|
|
|
|
|
const step2Error = ref(0);
|
|
|
|
|
@ -1273,6 +1283,42 @@ const step1RightAnswer = ref([
|
|
|
|
|
activeTime: "24.50",
|
|
|
|
|
},
|
|
|
|
|
]);
|
|
|
|
|
const step2RightAnswer = ref([
|
|
|
|
|
{
|
|
|
|
|
num: "10",
|
|
|
|
|
ratio: "100",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
num: "7",
|
|
|
|
|
ratio: "70",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
num: "5",
|
|
|
|
|
ratio: "50",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
num: "6",
|
|
|
|
|
ratio: "60",
|
|
|
|
|
},
|
|
|
|
|
]);
|
|
|
|
|
const step4RightAnswer = ref([
|
|
|
|
|
"6",
|
|
|
|
|
"10",
|
|
|
|
|
"11",
|
|
|
|
|
"13",
|
|
|
|
|
"2",
|
|
|
|
|
"5",
|
|
|
|
|
"3",
|
|
|
|
|
"5",
|
|
|
|
|
"1",
|
|
|
|
|
"4",
|
|
|
|
|
]);
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
getData();
|
|
|
|
|
});
|
|
|
|
|
onBeforeUnmount(() => {
|
|
|
|
|
saveData();
|
|
|
|
|
});
|
|
|
|
|
const moveUp = (index, row) => {
|
|
|
|
|
console.log("上移", index, row);
|
|
|
|
|
if (index > 0) {
|
|
|
|
|
@ -1514,7 +1560,7 @@ const drawEcharts = () => {
|
|
|
|
|
option && myChart.setOption(option);
|
|
|
|
|
};
|
|
|
|
|
const step1Submit = () => {
|
|
|
|
|
step1Error.value++;
|
|
|
|
|
step1Error.value = 0;
|
|
|
|
|
for (let i in step1Data.value) {
|
|
|
|
|
// console.log(fileTable1.value[i]);
|
|
|
|
|
if (
|
|
|
|
|
@ -1539,7 +1585,255 @@ const step1Submit = () => {
|
|
|
|
|
}
|
|
|
|
|
console.log(step1Error.value, "错误数");
|
|
|
|
|
proxy.$modal.msgSuccess("提交成功");
|
|
|
|
|
step1AnswerFlag.value = true;
|
|
|
|
|
};
|
|
|
|
|
const step2Submit = () => {
|
|
|
|
|
step2Error.value = 0;
|
|
|
|
|
for (let i in step2Data.value) {
|
|
|
|
|
// console.log(fileTable1.value[i]);
|
|
|
|
|
if (!step2Data.value[i].params1 || !step2Data.value[i].params2) {
|
|
|
|
|
proxy.$modal.msgError("请先完成所有填空");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for (let i in step2Data.value) {
|
|
|
|
|
if (step2Data.value[i].params1 != step2RightAnswer.value[i].num) {
|
|
|
|
|
step2Error.value++;
|
|
|
|
|
}
|
|
|
|
|
if (step2Data.value[i].params2 != step2RightAnswer.value[i].ratio) {
|
|
|
|
|
step2Error.value++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
console.log(step2Error.value, "错误数");
|
|
|
|
|
proxy.$modal.msgSuccess("提交成功");
|
|
|
|
|
step2AnswerFlag.value = true;
|
|
|
|
|
};
|
|
|
|
|
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) {
|
|
|
|
|
proxy.$modal.msgError("请先完成所有填空");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (step3Data.value[0].params1 != "10") {
|
|
|
|
|
step3Error.value++;
|
|
|
|
|
}
|
|
|
|
|
if (step3Data.value[0].params2 != "100") {
|
|
|
|
|
step3Error.value++;
|
|
|
|
|
}
|
|
|
|
|
// console.log(89);
|
|
|
|
|
console.log(step3Error.value, "错误数");
|
|
|
|
|
proxy.$modal.msgSuccess("提交成功");
|
|
|
|
|
step3AnswerFlag.value = true;
|
|
|
|
|
};
|
|
|
|
|
const step4Submit = () => {
|
|
|
|
|
step4Error.value = 0;
|
|
|
|
|
for (let i in step4Data.value) {
|
|
|
|
|
// console.log(fileTable1.value[i]);
|
|
|
|
|
if (!step4Data.value[i].params1) {
|
|
|
|
|
proxy.$modal.msgError("请先完成所有填空");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for (let i in step4DataTable2.value) {
|
|
|
|
|
// console.log(fileTable1.value[i]);
|
|
|
|
|
if (!step4DataTable2.value[i].params1) {
|
|
|
|
|
proxy.$modal.msgError("请先完成所有填空");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for (let i in step4Data.value) {
|
|
|
|
|
if (step4Data.value[i].params1 != step4RightAnswer.value[i]) {
|
|
|
|
|
step4Error.value++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (step4DataTable2.value[0].params1 != "20") {
|
|
|
|
|
step4Error.value++;
|
|
|
|
|
}
|
|
|
|
|
if (step4DataTable2.value[1].params1 != "3") {
|
|
|
|
|
step4Error.value++;
|
|
|
|
|
}
|
|
|
|
|
console.log(step4Error.value, "错误数");
|
|
|
|
|
proxy.$modal.msgSuccess("提交成功");
|
|
|
|
|
step4AnswerFlag.value = true;
|
|
|
|
|
};
|
|
|
|
|
const saveData = () => {
|
|
|
|
|
let infoList = [];
|
|
|
|
|
for (let i in step1Data.value) {
|
|
|
|
|
infoList.push({
|
|
|
|
|
loginTime: step1Data.value[i].date,
|
|
|
|
|
activeUser: parseInt(step1Data.value[i].params1),
|
|
|
|
|
activeUserRate: parseFloat(step1Data.value[i].params2),
|
|
|
|
|
activeUserTime: parseFloat(step1Data.value[i].params3),
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
const params = {
|
|
|
|
|
stepFiveA: step2Data.value[0].params1,
|
|
|
|
|
stepFiveB: step2Data.value[0].params2,
|
|
|
|
|
stepFiveC: step2Data.value[1].params1,
|
|
|
|
|
stepFiveD: step2Data.value[1].params2,
|
|
|
|
|
stepSixA: step2Data.value[2].params1,
|
|
|
|
|
stepSixB: step2Data.value[2].params2,
|
|
|
|
|
stepSixC: step2Data.value[3].params1,
|
|
|
|
|
stepSixD: step2Data.value[3].params2,
|
|
|
|
|
stepSevenA: step3Data.value[0].params1,
|
|
|
|
|
stepSevenB: step3Data.value[0].params2,
|
|
|
|
|
stepSevenC: step4Data.value[0].params1,
|
|
|
|
|
stepSevenD: step4Data.value[1].params1,
|
|
|
|
|
stepEightA: step4Data.value[2].params1,
|
|
|
|
|
stepEightB: step4Data.value[3].params1,
|
|
|
|
|
stepEightC: step4Data.value[4].params1,
|
|
|
|
|
stepEightD: step4Data.value[5].params1,
|
|
|
|
|
stepNineA: step4Data.value[6].params1,
|
|
|
|
|
stepNineB: step4Data.value[7].params1,
|
|
|
|
|
stepNineC: step4Data.value[8].params1,
|
|
|
|
|
stepNineD: step4Data.value[9].params1,
|
|
|
|
|
stepTenA: step4DataTable2.value[0].params1,
|
|
|
|
|
stepTenB: step4DataTable2.value[1].params1,
|
|
|
|
|
stepTenC: analysisConclusionStep1.value,
|
|
|
|
|
stepTenD: analysisConclusionStep2.value,
|
|
|
|
|
stepElevenA: analysisConclusionStep3.value,
|
|
|
|
|
stepOneA: analysisConclusionStep4.value,
|
|
|
|
|
// stepOneB: step1Data.value[8].params3,
|
|
|
|
|
// stepOneC: step1Data.value[9].params1,
|
|
|
|
|
// stepOneD: step1Data.value[9].params2,
|
|
|
|
|
// stepTwoA: step1Data.value[9].params3,
|
|
|
|
|
// stepTwoB: step4Data.value[6].params2,
|
|
|
|
|
// stepTwoC: step5DataTable2.value[0].params,
|
|
|
|
|
// stepThreeA: step5DataTable2.value[1].params,
|
|
|
|
|
// stepThreeB: step5DataTable2.value[2].params,
|
|
|
|
|
// stepThreeC: step5DataTable2.value[3].params,
|
|
|
|
|
// stepThreeD: step5DataTable2.value[4].params,
|
|
|
|
|
// stepFourA: step5DataTable3.value[0].params1,
|
|
|
|
|
// stepFourB: step5DataTable3.value[0].params2,
|
|
|
|
|
// stepFourC: step5DataTable3.value[1].params1,
|
|
|
|
|
// stepFourD: step5DataTable3.value[1].params2,
|
|
|
|
|
// stepNewOne: step5DataTable3.value[2].params1,
|
|
|
|
|
// stepNewTwo: step5DataTable3.value[2].params2,
|
|
|
|
|
// stepNewThree: step5DataTable3.value[3].params1,
|
|
|
|
|
// stepNewFive: step5DataTable3.value[3].params2,
|
|
|
|
|
// stepNewSix: step5DataTable3.value[4].params1,
|
|
|
|
|
// stepNewEight: step5DataTable3.value[4].params2,
|
|
|
|
|
stuMachineLearningInfoDTOList: infoList,
|
|
|
|
|
};
|
|
|
|
|
portraitModel
|
|
|
|
|
.saveData({
|
|
|
|
|
userId: 492,
|
|
|
|
|
module: "用户粘性分析",
|
|
|
|
|
...params,
|
|
|
|
|
})
|
|
|
|
|
.then((res) => {})
|
|
|
|
|
.catch((error) => {});
|
|
|
|
|
};
|
|
|
|
|
const getData = () => {
|
|
|
|
|
portraitModel
|
|
|
|
|
.getData({
|
|
|
|
|
userId: 492,
|
|
|
|
|
module: "用户粘性分析",
|
|
|
|
|
})
|
|
|
|
|
.then((res) => {
|
|
|
|
|
for (let i in res.data.stuMachineLearningInfoDTOList) {
|
|
|
|
|
if (
|
|
|
|
|
res.data.stuMachineLearningInfoDTOList[i].loginTime ==
|
|
|
|
|
step1Data.value[i].date
|
|
|
|
|
) {
|
|
|
|
|
step1Data.value[i].params1 =
|
|
|
|
|
res.data.stuMachineLearningInfoDTOList[i].activeUser;
|
|
|
|
|
step1Data.value[i].params2 =
|
|
|
|
|
res.data.stuMachineLearningInfoDTOList[i].activeUserRate;
|
|
|
|
|
step1Data.value[i].params3 =
|
|
|
|
|
res.data.stuMachineLearningInfoDTOList[i].activeUserTime;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
step2Data.value[0].params1 = res.data.stepFiveA;
|
|
|
|
|
step2Data.value[0].params2 = res.data.stepFiveB;
|
|
|
|
|
step2Data.value[1].params1 = res.data.stepFiveC;
|
|
|
|
|
step2Data.value[1].params2 = res.data.stepFiveD;
|
|
|
|
|
step2Data.value[2].params1 = res.data.stepSixA;
|
|
|
|
|
step2Data.value[2].params2 = res.data.stepSixB;
|
|
|
|
|
step2Data.value[3].params1 = res.data.stepSixC;
|
|
|
|
|
step2Data.value[3].params2 = res.data.stepSixD;
|
|
|
|
|
step3Data.value[0].params1 = res.data.stepSevenA;
|
|
|
|
|
step3Data.value[0].params2 = res.data.stepSevenB;
|
|
|
|
|
step4Data.value[0].params1 = res.data.stepSevenC;
|
|
|
|
|
step4Data.value[1].params1 = res.data.stepSevenD;
|
|
|
|
|
step4Data.value[2].params1 = res.data.stepEightA;
|
|
|
|
|
step4Data.value[3].params1 = res.data.stepEightB;
|
|
|
|
|
step4Data.value[4].params1 = res.data.stepEightC;
|
|
|
|
|
step4Data.value[5].params1 = res.data.stepEightD;
|
|
|
|
|
step4Data.value[6].params1 = res.data.stepNineA;
|
|
|
|
|
step4Data.value[7].params1 = res.data.stepNineB;
|
|
|
|
|
step4Data.value[8].params1 = res.data.stepNineC;
|
|
|
|
|
step4Data.value[9].params1 = res.data.stepNineD;
|
|
|
|
|
step4DataTable2.value[0].params1 = res.data.stepTenA;
|
|
|
|
|
step4DataTable2.value[1].params1 = res.data.stepTenB;
|
|
|
|
|
analysisConclusionStep1.value = res.data.stepTenC;
|
|
|
|
|
analysisConclusionStep2.value = res.data.stepTenD;
|
|
|
|
|
analysisConclusionStep3.value = res.data.stepElevenA;
|
|
|
|
|
analysisConclusionStep4.value = res.data.stepOneA;
|
|
|
|
|
// step1Data.value[8].params3 = res.data.stepOneB;
|
|
|
|
|
// step1Data.value[9].params1 = res.data.stepOneC;
|
|
|
|
|
// step1Data.value[9].params2 = res.data.stepOneD;
|
|
|
|
|
// step1Data.value[9].params3 = res.data.stepTwoA;
|
|
|
|
|
// step4Data.value[6].params2 = res.data.stepTwoB;
|
|
|
|
|
// step5DataTable2.value[0].params = res.data.stepTwoC;
|
|
|
|
|
// step5DataTable2.value[1].params = res.data.stepThreeA;
|
|
|
|
|
// step5DataTable2.value[2].params = res.data.stepThreeB;
|
|
|
|
|
// step5DataTable2.value[3].params = res.data.stepThreeC;
|
|
|
|
|
// step5DataTable2.value[4].params = res.data.stepThreeD;
|
|
|
|
|
// step5DataTable3.value[0].params1 = res.data.stepFourA;
|
|
|
|
|
// step5DataTable3.value[0].params2 = res.data.stepFourB;
|
|
|
|
|
// step5DataTable3.value[1].params1 = res.data.stepFourC;
|
|
|
|
|
// step5DataTable3.value[1].params2 = res.data.stepFourD;
|
|
|
|
|
// step5DataTable3.value[2].params1 = res.data.stepNewOne;
|
|
|
|
|
// step5DataTable3.value[2].params2 = res.data.stepNewTwo;
|
|
|
|
|
// step5DataTable3.value[3].params1 = res.data.stepNewThree;
|
|
|
|
|
// step5DataTable3.value[3].params2 = res.data.stepNewFive;
|
|
|
|
|
// step5DataTable3.value[4].params1 = res.data.stepNewSix;
|
|
|
|
|
// step5DataTable3.value[4].params2 = res.data.stepNewEight;
|
|
|
|
|
})
|
|
|
|
|
.catch((error) => {});
|
|
|
|
|
};
|
|
|
|
|
const downloadData = () => {
|
|
|
|
|
portraitModel
|
|
|
|
|
.downloadDataByViscosity({})
|
|
|
|
|
.then((res) => {
|
|
|
|
|
// console.log(res,'--');
|
|
|
|
|
const blob = new Blob([res], { type: "application/vnd.ms-excel" });
|
|
|
|
|
downBlobFile(`案例数据-用户粘性分析`, blob);
|
|
|
|
|
})
|
|
|
|
|
.catch((error) => {});
|
|
|
|
|
};
|
|
|
|
|
const submitData = () => {
|
|
|
|
|
if (
|
|
|
|
|
!step1AnswerFlag.value ||
|
|
|
|
|
!step2AnswerFlag.value ||
|
|
|
|
|
!step3AnswerFlag.value ||
|
|
|
|
|
!step4AnswerFlag.value
|
|
|
|
|
) {
|
|
|
|
|
proxy.$modal.msgError("请先完成所有步骤!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
errorNum.value =
|
|
|
|
|
step1Error.value + step2Error.value + step3Error.value + step4Error.value;
|
|
|
|
|
console.log(errorNum.value, "总错误次数");
|
|
|
|
|
portraitModel
|
|
|
|
|
.submit({
|
|
|
|
|
userId: 492,
|
|
|
|
|
taskName: "用户粘性分析",
|
|
|
|
|
numberOfErrors: errorNum.value,
|
|
|
|
|
})
|
|
|
|
|
.then((res) => {
|
|
|
|
|
proxy.$modal.msgSuccess("提交成功");
|
|
|
|
|
})
|
|
|
|
|
.catch((error) => {});
|
|
|
|
|
};
|
|
|
|
|
defineExpose({
|
|
|
|
|
submitData,
|
|
|
|
|
// practicalTraining,
|
|
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
|
|