第一轮bugfix

dev-QQq
HeHaonan 2 years ago
parent 52c39c9790
commit f781cba9d0

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

@ -83,9 +83,11 @@ function setLayout() {
.app-wrapper { .app-wrapper {
@include clearfix; @include clearfix;
position: relative; position: relative;
height: 100%; // height: 100%;
width: 100%; // width: 100%;
background: url("@/assets/images/背景.png"); background: url("@/assets/images/背景.png");
background-size: cover;
padding-bottom: 14px;
&.mobile.openSidebar { &.mobile.openSidebar {
position: fixed; position: fixed;

@ -1,6 +1,6 @@
<template> <template>
<div class="main-content"> <div class="main-content">
<el-scrollbar height="680px"> <el-scrollbar height="730px">
<component :is="currentComponent" ref="content"></component> <component :is="currentComponent" ref="content"></component>
</el-scrollbar> </el-scrollbar>
</div> </div>

@ -0,0 +1,113 @@
<template>
<div>
<el-dialog
title="任务知识导入"
style="width: 1108px; height: 798px"
custom-class="dialogClass"
:show-close="false"
class="dialog"
v-model="props.showModel"
:close-on-click-modal="false"
>
<template #header="{ titleId, titleClass }">
<div class="my-header">
<span :id="titleId" :class="titleClass">任务知识导入</span>
<img
class="gbImg"
src="@/assets/images/关闭.png"
@click="close"
alt=""
/>
</div>
<img class="xtImg" src="@/assets/images/线条.png" alt="" />
</template>
<div
style="
color: #fff;
margin-top: -35px;
padding: 10px;
padding-left: 20px;
"
>
<el-scrollbar height="650px">
<slot name="content"></slot>
</el-scrollbar>
</div>
<!-- <template #footer>
<div class="dialog-footer">
<el-button @click="dialogVisible = false">确定</el-button>
<el-button type="primary" @click="dialogVisible = false">
返回
</el-button>
</div>
</template> -->
</el-dialog>
</div>
</template>
<script setup>
const emits = defineEmits(["closePop", "submit"]);
const dialogVisible = ref(false);
const props = defineProps({
modelValue: [String, Object, Array],
//
showModel: {
type: Boolean,
default: false,
},
title: {
type: String,
default: "任务知识导入",
},
width: {
type: String,
default: "673",
},
showOprBtn: {
type: Boolean,
default: true,
},
});
const close = () => {
emits("closePop");
};
const submit = () => {
emits("submit");
};
</script>
<style lang="scss" scoped>
::v-deep .el-dialog {
background: url("@/assets/images/弹框@2x.png") !important;
background-size: 1108px 798px !important;
.el-dialog__header {
padding: 5px 0px;
margin-right: 5px !important;
.gbImg {
cursor: pointer;
margin-top: 3px;
// margin-left: -30px;
width: 51px;
height: 35px;
background-size: 100% 100%;
}
}
.xtImg {
margin-left: 18px;
width: 530px;
}
}
.my-header {
display: flex;
flex-direction: row;
justify-content: space-between;
gap: 16px;
text-align: center;
margin-right: 9px;
margin-bottom: 0;
span {
color: #ffffff;
padding: 38px 20px 0;
margin-top: 10px;
margin-left: 20px;
}
}
</style>

File diff suppressed because one or more lines are too long

@ -1,10 +1,10 @@
<template> <template>
<div class="content"> <div class="content">
<div class="import" @click="knowledgeFlag = !knowledgeFlag"> <div class="import" @click="dialogVisible = true">
<img src="@/assets/images/导入.png" alt="" /> <img src="@/assets/images/导入.png" alt="" />
<span>任务知识导入</span> <span>任务知识导入</span>
</div> </div>
<div v-if="knowledgeFlag"> <!-- <div v-if="knowledgeFlag">
<p> <p>
帕累托分析法源于经典的二八法则意大利经济学家维尔弗雷多·帕累托于1906年提出了著名的关于意大利社会财务分配的研究结论20%的人口掌握了80%的社会财富这个结论对大多数国家的社会财富分配情况都成立因此帕累托法则又被称为80/20法则<br /><br /> 帕累托分析法源于经典的二八法则意大利经济学家维尔弗雷多·帕累托于1906年提出了著名的关于意大利社会财务分配的研究结论20%的人口掌握了80%的社会财富这个结论对大多数国家的社会财富分配情况都成立因此帕累托法则又被称为80/20法则<br /><br />
帕累托分析的核心观点是在许多情况下大部分的问题效益或成本都来自于少数的要素换句话说少数关键要素占据了绝大多数的结果这一规律在许多领域都具有普适性例如<br /><br /> 帕累托分析的核心观点是在许多情况下大部分的问题效益或成本都来自于少数的要素换句话说少数关键要素占据了绝大多数的结果这一规律在许多领域都具有普适性例如<br /><br />
@ -17,8 +17,8 @@
</p> </p>
<img src="@/assets/images/u3323.png" alt="" /><br /> <img src="@/assets/images/u3323.png" alt="" /><br />
<img src="@/assets/images/u3324.png" alt="" /> <img src="@/assets/images/u3324.png" alt="" />
</div> </div> -->
<div v-if="!knowledgeFlag"> <div>
<div class="caseBack"> <div class="caseBack">
<div class="title"> <div class="title">
<img src="@/assets/images/caseIcon.png" alt="" /> <img src="@/assets/images/caseIcon.png" alt="" />
@ -344,14 +344,32 @@
</div> </div>
</div> </div>
</div> </div>
<pop-modal :showModel="dialogVisible" @closePop="dialogVisible = false">
<template v-slot:content>
<p>
帕累托分析法源于经典的二八法则意大利经济学家维尔弗雷多·帕累托于1906年提出了著名的关于意大利社会财务分配的研究结论20%的人口掌握了80%的社会财富这个结论对大多数国家的社会财富分配情况都成立因此帕累托法则又被称为80/20法则<br /><br />
帕累托分析的核心观点是在许多情况下大部分的问题效益或成本都来自于少数的要素换句话说少数关键要素占据了绝大多数的结果这一规律在许多领域都具有普适性例如<br /><br />
在企业中80%的利润可能来自于20%的产品或客户<br />
在销售中80%的销售额可能来自于20%的销售员或产品<br />
在质量控制中80%的缺陷可能来自于20%的原因或工序<br /><br />
ABC 分类法全称应为 ABC 分类库存控制法
又称帕累托分析法或巴雷托分析法柏拉图分析主次因分析法
ABC分析法ABC 管理法平常也称之为80 20规则
</p>
<img src="@/assets/images/u3323.png" alt="" /><br />
<img src="@/assets/images/u3324.png" alt="" />
</template>
</pop-modal>
</div> </div>
</template> </template>
<script setup> <script setup>
import { getUserInfo } from '@/utils/auth' import popModal from "@/views/components/popModal.vue";
import { getUserInfo } from "@/utils/auth";
import * as portraitModel from "@/api/portraitModel"; import * as portraitModel from "@/api/portraitModel";
import { downBlobFile } from "@/utils/index.js"; import { downBlobFile } from "@/utils/index.js";
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const dialogVisible = ref(false);
const knowledgeFlag = ref(false); const knowledgeFlag = ref(false);
const errorNum = ref(0); const errorNum = ref(0);
const step1Error = ref(0); const step1Error = ref(0);

@ -1,11 +1,11 @@
<template> <template>
<div class="content"> <div class="content">
<div class="import" @click="knowledgeFlag = !knowledgeFlag"> <div class="import" @click="dialogVisible = true">
<img src="@/assets/images/导入.png" alt="" /> <img src="@/assets/images/导入.png" alt="" />
<span>任务知识导入</span> <span>任务知识导入</span>
</div> </div>
<div v-if="knowledgeFlag" v-html="knowledgeHtml"></div> <!-- <div v-if="knowledgeFlag" v-html="knowledgeHtml"></div> -->
<div v-if="!knowledgeFlag"> <div>
<div class="caseBack"> <div class="caseBack">
<div class="title"> <div class="title">
<img src="@/assets/images/caseIcon.png" alt="" /> <img src="@/assets/images/caseIcon.png" alt="" />
@ -277,11 +277,17 @@
</div> </div>
</div> </div>
</div> </div>
<pop-modal :showModel="dialogVisible" @closePop="dialogVisible = false">
<template v-slot:content>
<div v-html="knowledgeHtml"></div>
</template>
</pop-modal>
</div> </div>
</template> </template>
<script setup> <script setup>
import { getUserInfo } from '@/utils/auth' import popModal from "@/views/components/popModal.vue";
import { getUserInfo } from "@/utils/auth";
import * as portraitModel from "@/api/portraitModel"; import * as portraitModel from "@/api/portraitModel";
import * as echarts from "echarts"; import * as echarts from "echarts";
import { downBlobFile } from "@/utils/index.js"; import { downBlobFile } from "@/utils/index.js";
@ -293,6 +299,7 @@ const knowledgeHtml = ref(
const list = ref(["-"]); const list = ref(["-"]);
const combinationValue1 = ref(""); const combinationValue1 = ref("");
const combinationValue2 = ref(""); const combinationValue2 = ref("");
const dialogVisible = ref(false);
const knowledgeFlag = ref(false); const knowledgeFlag = ref(false);
const combinationRight = ref(["A—B", "A—C", "A—D", "B—C", "B—D", "C—D"]); const combinationRight = ref(["A—B", "A—C", "A—D", "B—C", "B—D", "C—D"]);
const step1Data = ref([ const step1Data = ref([

@ -1,10 +1,10 @@
<template> <template>
<div class="content"> <div class="content">
<div class="import" @click="knowledgeFlag = !knowledgeFlag"> <div class="import" @click="dialogVisible = true">
<img src="@/assets/images/导入.png" alt="" /> <img src="@/assets/images/导入.png" alt="" />
<span>任务知识导入</span> <span>任务知识导入</span>
</div> </div>
<div v-if="knowledgeFlag"> <!-- <div v-if="knowledgeFlag">
<p style="line-height: 25px; font-size: 14px"> <p style="line-height: 25px; font-size: 14px">
波士顿矩阵BCG 波士顿矩阵BCG
Matrix又称市场增长率-相对市场份额矩阵由美国著名的管理学家波士顿咨询公司创始人布鲁斯·亨德森于1970年首创它是通过销售增长率反应市场引力的指标和市场占有率反应企业实力的指标来分析决定企业的产品结构<br /> Matrix又称市场增长率-相对市场份额矩阵由美国著名的管理学家波士顿咨询公司创始人布鲁斯·亨德森于1970年首创它是通过销售增长率反应市场引力的指标和市场占有率反应企业实力的指标来分析决定企业的产品结构<br />
@ -21,8 +21,8 @@
4瘦狗类产品低增长且低市占理论率低甚至亏损应采取撤退战略 </span 4瘦狗类产品低增长且低市占理论率低甚至亏损应采取撤退战略 </span
><br /> ><br />
<img src="@/assets/images/u3682.png" alt="" /> <img src="@/assets/images/u3682.png" alt="" />
</div> </div> -->
<div v-if="!knowledgeFlag"> <div>
<div class="caseBack"> <div class="caseBack">
<div class="title"> <div class="title">
<img src="@/assets/images/caseIcon.png" alt="" /> <img src="@/assets/images/caseIcon.png" alt="" />
@ -305,17 +305,46 @@
</div> </div>
</div> </div>
</div> </div>
<pop-modal :showModel="dialogVisible" @closePop="dialogVisible = false">
<template v-slot:content>
<p style="line-height: 25px; font-size: 14px">
波士顿矩阵BCG
Matrix又称市场增长率-相对市场份额矩阵由美国著名的管理学家波士顿咨询公司创始人布鲁斯·亨德森于1970年首创它是通过销售增长率反应市场引力的指标和市场占有率反应企业实力的指标来分析决定企业的产品结构<br />
市场吸引力包括企业销售量增长率目标市场容量竞争对手强弱利润高低等其中最重要的是反映市场引力的综合指标销售增长率这是决定企业产品结构是否合理的外在因素<br />
企业实力包括市场占有率技术设备资金利用能力等其中市场占有率是决定企业产品结构的内在因素他直接显示出企业的竞争实力
</p>
<img src="@/assets/images/u3678.png" alt="" /><br />
<span style="line-height: 25px; font-size: 14px">
波士顿矩阵将产品类型分为四种<br />
1明星类产品高增长且高市占发展前景好竞争力强需加大投资以支持其发展<br />
2问题类产品高增长但低市占发展前景好但市场开拓不足需谨慎投资<br />
3现金牛产品低增长但高市占成熟市场的领导者应降低投资维持市占并延缓衰退<br />
4瘦狗类产品低增长且低市占理论率低甚至亏损应采取撤退战略 </span
><br /><br />
<span style="line-height: 25px; font-size: 14px">
当波士顿矩阵应用于客户画像时候可以大致分析出不同用户的客户画像<br />
1消费次数超过平均值每次消费力度也超过平均水平的客户判定为明星客户这类客户需要重点关注并给予最高的礼遇<br />
2消费次数超过平均值但每次消费力度未达到平均水平的客户被判定为现金流客户这类客户通常消费频次比较频繁能给企业带来较为稳定的现金流这类客户是企业利润基石<br />
3消费未达到平均值但每次消费力度超过平均水平的客户是问题客户这类客户最有希望转化为明星客户但是因为客户存在一定的潜在问题导致消费频次不高这类客户需要利用客服进行重点跟进和长期跟踪<br />
4消费未达到平均值消费力度也未达到平均水平的客户属于瘦狗客户这类客户通常占企业客户的大多数只需要一般性维护不需要投入重点维系<br /> </span
><br />
<img src="@/assets/images/u3682.png" alt="" />
</template>
</pop-modal>
</div> </div>
</template> </template>
<script setup> <script setup>
import { getUserInfo } from '@/utils/auth' import popModal from "@/views/components/popModal.vue";
import { getUserInfo } from "@/utils/auth";
import * as echarts from "echarts"; import * as echarts from "echarts";
import { Chart } from "@antv/g2"; import { Chart } from "@antv/g2";
import * as portraitModel from "@/api/portraitModel"; import * as portraitModel from "@/api/portraitModel";
import { downBlobFile } from "@/utils/index.js"; import { downBlobFile } from "@/utils/index.js";
import { onMounted } from "vue"; import { onMounted } from "vue";
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const dialogVisible = ref(false);
const knowledgeFlag = ref(false); const knowledgeFlag = ref(false);
const step1Data = ref([ const step1Data = ref([
{ {
@ -615,6 +644,10 @@ onMounted(() => {
step3EchartInit(); step3EchartInit();
step4EchartInit(); step4EchartInit();
step5EchartInit(); step5EchartInit();
getData();
});
onBeforeUnmount(() => {
saveData();
}); });
const drawPoint = (point, color) => { const drawPoint = (point, color) => {
// console.log(point); // console.log(point);
@ -1312,9 +1345,141 @@ const submitData = () => {
}) })
.catch((error) => {}); .catch((error) => {});
}; };
const saveData = () => {
const params = {
stepFiveA: step1Data.value[0].params1,
stepFiveB: step1Data.value[0].params2,
stepFiveC: step1Data.value[1].params1,
stepFiveD: step1Data.value[1].params2,
stepSixA: step1Data.value[2].params1,
stepSixB: step1Data.value[2].params2,
stepSixC: step1Data.value[3].params1,
stepSixD: step1Data.value[3].params2,
stepSevenA: step2Data.value[4].params1,
stepSevenB: step2Data.value[4].params2,
// stepSevenC: step2Data.value[4].params,
// stepSevenD: step2Data.value[5].params,
// stepEightA: step2Data.value[6].params,
// stepEightB: step2Data.value[7].params,
// stepEightC: step2Data.value[8].params,
// stepEightD: step2Data.value[9].params,
// stepNineA: step2Data.value[10].params,
// stepNineB: step2Data.value[11].params,
// stepNineC: step2Data.value[12].params,
// stepNineD: step2Data.value[13].params,
// stepTenA: step2Data.value[14].params,
// stepTenB: step2Data.value[15].params,
// stepTenC: step2Data.value[16].params,
// stepTenD: step2Data.value[17].params,
// stepElevenA: step2Data.value[18].params,
// stepOneA: step2Data.value[19].params,
// stepOneB: step2Data.value[20].params,
// stepOneC: step2Data.value[21].params,
// stepOneD: step2Data.value[22].params,
// stepTwoA: step2Data.value[23].params,
// stepTwoB: step2Data.value[24].params,
// stepTwoC: step2Data.value[25].params,
// stepThreeA: step2Data.value[26].params,
// stepThreeB: step2Data.value[27].params,
// stepThreeC: step2Data.value[28].params,
// stepThreeD: step2Data.value[29].params,
// stepFourA: step2Data.value[30].params,
// stepFourB: step2Data.value[31].params,
// stepFourC: step2Data.value[32].params,
// stepFourD: step2Data.value[33].params,
// stepNewOne: step2Data.value[34].params,
// stepNewTwo: step2Data.value[35].params,
// stepNewThree: step2Data.value[36].params,
// stepNewFive: step5DataTable3.value[3].params2,
// stepNewSix: step5DataTable3.value[4].params1,
// stepNewEight: step5DataTable3.value[4].params2,
};
portraitModel
.saveData({
userId: JSON.parse(getUserInfo()).userId,
module: "波士顿矩阵分析",
...params,
})
.then((res) => {})
.catch((error) => {});
};
const getData = () => {
portraitModel
.getData({
userId: JSON.parse(getUserInfo()).userId,
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;
// step2Data.value[4].params = res.data.stepSevenC;
// step2Data.value[5].params = res.data.stepSevenD;
// step2Data.value[6].params = res.data.stepEightA;
// step2Data.value[7].params = res.data.stepEightB;
// step2Data.value[8].params = res.data.stepEightC;
// step2Data.value[9].params = res.data.stepEightD;
// step2Data.value[10].params = res.data.stepNineA;
// step2Data.value[11].params = res.data.stepNineB;
// step2Data.value[12].params = res.data.stepNineC;
// step2Data.value[13].params = res.data.stepNineD;
// step2Data.value[14].params = res.data.stepTenA;
// step2Data.value[15].params = res.data.stepTenB;
// step2Data.value[16].params = res.data.stepTenC;
// step2Data.value[17].params = res.data.stepTenD;
// step2Data.value[18].params = res.data.stepElevenA;
// step2Data.value[19].params = res.data.stepOneA;
// step2Data.value[20].params = res.data.stepOneB;
// step2Data.value[21].params = res.data.stepOneC;
// step2Data.value[22].params = res.data.stepOneD;
// step2Data.value[23].params = res.data.stepTwoA;
// step2Data.value[24].params = res.data.stepTwoB;
// step2Data.value[25].params = res.data.stepTwoC;
// step2Data.value[26].params = res.data.stepThreeA;
// step2Data.value[27].params = res.data.stepThreeB;
// step2Data.value[28].params = res.data.stepThreeC;
// step2Data.value[29].params = res.data.stepThreeD;
// step2Data.value[30].params = res.data.stepFourA;
// step2Data.value[31].params = res.data.stepFourB;
// step2Data.value[32].params = res.data.stepFourC;
// step2Data.value[33].params = res.data.stepFourD;
// step2Data.value[34].params = res.data.stepNewOne;
// step2Data.value[35].params = res.data.stepNewTwo;
// step2Data.value[36].params = 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 retrain = () => {
// console.log(666);
portraitModel
.retrain({
userId: JSON.parse(getUserInfo()).userId,
module: "波士顿矩阵分析",
})
.then((res) => {
proxy.$modal.msgSuccess("重新实训成功");
for (let i in step1Data.value) {
step1Data.value[i].params1 = "";
step1Data.value[i].params2 = "";
}
step2Data.value[4].params1 = "";
step2Data.value[4].params2 = "";
})
.catch((error) => {});
};
defineExpose({ defineExpose({
submitData, submitData,
// retrain, retrain,
// practicalTraining, // practicalTraining,
}); });
</script> </script>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,11 +1,11 @@
<template> <template>
<div class="content"> <div class="content">
<div class="import" @click="knowledgeFlag = !knowledgeFlag"> <div class="import" @click="dialogVisible = true">
<img src="@/assets/images/导入.png" alt="" /> <img src="@/assets/images/导入.png" alt="" />
<span>任务知识导入</span> <span>任务知识导入</span>
</div> </div>
<div v-html="knowledge" v-if="knowledgeFlag"></div> <!-- <div v-html="knowledge" v-if="knowledgeFlag"></div> -->
<div v-if="!knowledgeFlag"> <div>
<div class="caseBack"> <div class="caseBack">
<div class="title"> <div class="title">
<img src="@/assets/images/caseIcon.png" alt="" /> <img src="@/assets/images/caseIcon.png" alt="" />
@ -93,7 +93,7 @@
<div style="margin-top: 10px; display: flex"> <div style="margin-top: 10px; display: flex">
<el-table <el-table
:data="step2Data" :data="step2Data"
style="width: 650px" style="width: 720px"
border border
:header-cell-style="{ :header-cell-style="{
color: '#fff', color: '#fff',
@ -105,7 +105,7 @@
</el-table-column> </el-table-column>
<el-table-column label="用户名称" align="center" prop="userName"> <el-table-column label="用户名称" align="center" prop="userName">
</el-table-column> </el-table-column>
<el-table-column label="最近一次消费时间间隔R" align="center"> <el-table-column label="最近一次消费时间间隔R" align="center" width="210">
<template #default="scope"> <template #default="scope">
<el-input <el-input
v-model="scope.row.params1" v-model="scope.row.params1"
@ -168,6 +168,7 @@
label="最近一次消费时间间隔(R)" label="最近一次消费时间间隔(R)"
align="center" align="center"
prop="data2" prop="data2"
width="210"
> >
</el-table-column> </el-table-column>
<el-table-column label="消费频率(F)" align="center" prop="data3"> <el-table-column label="消费频率(F)" align="center" prop="data3">
@ -189,7 +190,7 @@
<div style="margin-top: 10px; display: flex"> <div style="margin-top: 10px; display: flex">
<el-table <el-table
:data="step4Data" :data="step4Data"
style="width: 980px" style="width: 1080px"
border border
:header-cell-style="{ :header-cell-style="{
color: '#fff', color: '#fff',
@ -210,7 +211,7 @@
label="最近一次消费时间间隔R" label="最近一次消费时间间隔R"
align="center" align="center"
prop="data3" prop="data3"
width="150" width="210"
> >
</el-table-column> </el-table-column>
<el-table-column label="消费频率F" align="center" prop="data4"> <el-table-column label="消费频率F" align="center" prop="data4">
@ -511,14 +512,51 @@
</div> </div>
</div> </div>
</div> </div>
<el-dialog
v-model="dialogVisible"
title="任务知识导入"
style="width: 1108px; height: 798px"
custom-class="dialogClass"
:show-close="false"
class="dialog"
>
<template #header="{ close, titleId, titleClass }">
<div class="my-header">
<span :id="titleId" :class="titleClass">任务知识导入</span>
<img
class="gbImg"
src="../../../assets/images/关闭.png"
@click="close"
alt=""
/>
</div>
<img class="xtImg" src="../../../assets/images/线条.png" alt="" />
</template>
<div style="color:#fff;margin-top:-35px;padding:10px;padding-left:20px">
<el-scrollbar height="650px">
<div v-html="knowledge">
</div>
</el-scrollbar>
</div>
<!-- <template #footer>
<div class="dialog-footer">
<el-button @click="dialogVisible = false">确定</el-button>
<el-button type="primary" @click="dialogVisible = false">
返回
</el-button>
</div>
</template> -->
</el-dialog>
</div> </div>
</template> </template>
<script setup> <script setup>
import { getUserInfo } from '@/utils/auth' import { getUserInfo } from "@/utils/auth";
import * as portraitModel from "@/api/portraitModel"; import * as portraitModel from "@/api/portraitModel";
import { downBlobFile } from "@/utils/index.js"; import { downBlobFile } from "@/utils/index.js";
import { onBeforeUnmount, onMounted } from "vue"; import { onBeforeUnmount, onMounted } from "vue";
const dialogVisible = ref(false);
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const errorNum = ref(0); // const errorNum = ref(0); //
const stepError1 = ref(0); const stepError1 = ref(0);
@ -1318,4 +1356,40 @@ const tableSpanMethod = ({ row, column, rowIndex, columnIndex }) => {
background-color: #002652 !important; background-color: #002652 !important;
color: #fff; color: #fff;
} }
::v-deep .el-dialog {
background: url("../../../assets/images/弹框@2x.png") !important;
background-size: 1108px 798px !important;
.el-dialog__header {
padding: 5px 0px;
margin-right: 5px !important;
.gbImg {
cursor: pointer;
margin-top: 3px;
// margin-left: -30px;
width: 51px;
height: 35px;
background-size: 100% 100%;
}
}
.xtImg {
margin-left: 18px;
width: 530px;
}
}
.my-header {
display: flex;
flex-direction: row;
justify-content: space-between;
gap: 16px;
text-align: center;
margin-right: 9px;
margin-bottom: 0;
span {
color: #ffffff;
padding: 38px 20px 0;
margin-top: 10px;
margin-left: 20px;
}
}
</style> </style>

File diff suppressed because one or more lines are too long

@ -13,10 +13,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="btn" v-if="currentComponent">
<div class="submit" @click="submit"></div>
<div class="retrain" @click="retrain"></div>
</div>
<div class="container" v-if="menuIndex != 0"> <div class="container" v-if="menuIndex != 0">
<div class="leftContent"> <div class="leftContent">
<div class="title"> <div class="title">
@ -45,9 +42,9 @@
<el-menu-item index="4"> <el-menu-item index="4">
<span>用户行为表</span> <span>用户行为表</span>
</el-menu-item> </el-menu-item>
<el-menu-item index="5"> <!-- <el-menu-item index="5">
<span>用户评论表</span> <span>用户评论表</span>
</el-menu-item> </el-menu-item> -->
</el-menu> </el-menu>
</div> </div>
<div class="table"> <div class="table">
@ -61,7 +58,7 @@
background: `linear-gradient(0deg, #002651 0%, #0087F9 100%)`, background: `linear-gradient(0deg, #002651 0%, #0087F9 100%)`,
}" }"
> >
<el-table-column label="用户ID" align="center" prop="id"> <el-table-column label="用户ID" align="center" prop="userId">
</el-table-column> </el-table-column>
<el-table-column label="登录名" align="center" prop="loginName"> <el-table-column label="登录名" align="center" prop="loginName">
</el-table-column> </el-table-column>
@ -96,29 +93,29 @@
background: `linear-gradient(0deg, #002651 0%, #0087F9 100%)`, background: `linear-gradient(0deg, #002651 0%, #0087F9 100%)`,
}" }"
> >
<el-table-column label="用户ID" align="center" prop="a1"> <el-table-column label="用户ID" align="center" prop="userId">
</el-table-column> </el-table-column>
<el-table-column label="登录名" align="center" prop="a1"> <el-table-column label="登录名" align="center" prop="loginName">
</el-table-column> </el-table-column>
<el-table-column label="用户姓名" align="center" prop="a1"> <el-table-column label="用户姓名" align="center" prop="userName">
</el-table-column> </el-table-column>
<el-table-column label="学号" align="center" prop="a1"> <el-table-column label="学号" align="center" prop="studentId">
</el-table-column> </el-table-column>
<el-table-column label="班级" align="center" prop="a1"> <el-table-column label="班级" align="center" prop="stuClass">
</el-table-column> </el-table-column>
<el-table-column label="专业" align="center" prop="a1"> <el-table-column label="专业" align="center" prop="major">
</el-table-column> </el-table-column>
<el-table-column label="学校" align="center" prop="a1"> <el-table-column label="学校" align="center" prop="school">
</el-table-column> </el-table-column>
<el-table-column label="角色名称" align="center" prop="a1"> <el-table-column label="角色名称" align="center" prop="roleName">
</el-table-column> </el-table-column>
<el-table-column label="常登录地" align="center" prop="a1"> <el-table-column label="常登录地" align="center" prop="frequentLoginLocation">
</el-table-column> </el-table-column>
<el-table-column label="最近登录日期" align="center" prop="a1"> <el-table-column label="最近登录日期" align="center" prop="lastLoginDate">
</el-table-column> </el-table-column>
<el-table-column label="登录频次" align="center" prop="a1"> <el-table-column label="登录频次" align="center" prop="loginFrequency">
</el-table-column> </el-table-column>
<el-table-column label="登录时长" align="center" prop="a1"> <el-table-column label="登录时长" align="center" prop="loginDuration">
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-table <el-table
@ -150,7 +147,7 @@
<el-table-column <el-table-column
label="消费商品小类" label="消费商品小类"
align="center" align="center"
prop="a1" prop="consumerGoods"
width="110" width="110"
> >
</el-table-column> </el-table-column>
@ -207,54 +204,54 @@
background: `linear-gradient(0deg, #002651 0%, #0087F9 100%)`, background: `linear-gradient(0deg, #002651 0%, #0087F9 100%)`,
}" }"
> >
<el-table-column label="用户ID" align="center" prop="a1"> <el-table-column label="用户ID" align="center" prop="userId">
</el-table-column> </el-table-column>
<el-table-column label="登录名" align="center" prop="a1"> <el-table-column label="登录名" align="center" prop="loginName">
</el-table-column> </el-table-column>
<el-table-column label="用户姓名" align="center" prop="a1"> <el-table-column label="用户姓名" align="center" prop="userName">
</el-table-column> </el-table-column>
<el-table-column label="学号" align="center" prop="a1"> <el-table-column label="学号" align="center" prop="studentId">
</el-table-column> </el-table-column>
<el-table-column label="班级" align="center" prop="a1"> <el-table-column label="班级" align="center" prop="stuClass">
</el-table-column> </el-table-column>
<el-table-column label="专业" align="center" prop="a1"> <el-table-column label="专业" align="center" prop="major">
</el-table-column> </el-table-column>
<el-table-column label="学校" align="center" prop="a1"> <el-table-column label="学校" align="center" prop="school">
</el-table-column> </el-table-column>
<el-table-column label="角色名称" align="center" prop="a1"> <el-table-column label="角色名称" align="center" prop="roleName">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="商品名称" label="商品名称"
align="center" align="center"
prop="a1" prop="goodsName"
width="110" width="110"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="商品小类" label="商品小类"
align="center" align="center"
prop="a1" prop="goodsSubcategories"
width="110" width="110"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="商品类型" label="商品类型"
align="center" align="center"
prop="a1" prop="goodsType"
width="110" width="110"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="用户行为类型" label="用户行为类型"
align="center" align="center"
prop="a1" prop="userBehaviorType"
width="110" width="110"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="行为日期" label="行为日期"
align="center" align="center"
prop="a1" prop="behaviorDate"
width="130" width="130"
> >
</el-table-column> </el-table-column>
@ -266,6 +263,10 @@
:currentComponent="currentComponent" :currentComponent="currentComponent"
ref="contentRef" ref="contentRef"
></main-content> ></main-content>
<div class="btn" v-if="currentComponent">
<div class="submit" @click="submit"></div>
<div class="retrain" @click="retrain"></div>
</div>
</div> </div>
</template> </template>
@ -409,29 +410,33 @@ const retrain = () => {
color: #fff; color: #fff;
.tabList { .tabList {
// display: flex; // display: flex;
width: 1060px; // width: 1060px;
.tabs { .tabs {
cursor: pointer; cursor: pointer;
font-size: 14px; font-size: 12px;
margin-right: 20px; margin-right: 4px;
margin-bottom: 20px; margin-bottom: 20px;
width: 188px; width: 159px;
height: 61px; height: 56px;
background-image: url("@/assets/images/itembg1.png"); background-image: url("@/assets/images/itembg1.png");
background-size: 159px 56px;
// display: flex; // display: flex;
// justify-content: center; // justify-content: center;
// align-items: center; // align-items: center;
padding-left: 30px; padding-left: 15px;
line-height: 60px; line-height: 56px;
display: inline-block; display: inline-block;
img { img {
margin-right: 15px; margin-right: 5px;
} }
} }
.tabs:nth-of-type(2), .tabs:nth-of-type(2),
.tabs:nth-of-type(9) { .tabs:nth-of-type(9) {
background-image: url("@/assets/images/itembg2.png"); background-image: url("@/assets/images/itembg2.png");
} }
.tabs:nth-of-type(9) {
font-size: 11px;
}
.tabs:nth-of-type(3), .tabs:nth-of-type(3),
.tabs:nth-of-type(10) { .tabs:nth-of-type(10) {
background-image: url("@/assets/images/itembg3.png"); background-image: url("@/assets/images/itembg3.png");
@ -456,10 +461,13 @@ const retrain = () => {
} }
} }
.btn { .btn {
width: 220px;
margin: 0 auto;
display: flex; display: flex;
position: absolute; // position: absolute;
right: 70px; // right: 140px;
top: 110px; // bottom: 0px;
margin-top: 10px;
.submit { .submit {
width: 99px; width: 99px;
height: 31px; height: 31px;

Loading…
Cancel
Save