|
@@ -2,44 +2,54 @@
|
|
<div class="part-box part-box-pad">
|
|
<div class="part-box part-box-pad">
|
|
<el-row type="flex" :gutter="20">
|
|
<el-row type="flex" :gutter="20">
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
- <div class="chart-box" style="height: 500px">
|
|
|
|
|
|
+ <div class="chart-box" style="height: 520px">
|
|
<v-chart v-if="chartOption" :option="chartOption"></v-chart>
|
|
<v-chart v-if="chartOption" :option="chartOption"></v-chart>
|
|
</div>
|
|
</div>
|
|
</el-col>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
- <el-table :data="dataList">
|
|
|
|
|
|
+ <el-table :data="dataList" border>
|
|
<el-table-column label="毕业要求" min-width="200">
|
|
<el-table-column label="毕业要求" min-width="200">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
{{ scope.$index + 1 }}.{{ scope.row.name }}
|
|
{{ scope.$index + 1 }}.{{ scope.row.name }}
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="预期值" prop="预期值"></el-table-column>
|
|
|
|
- <el-table-column label="实际值" prop="预期值"></el-table-column>
|
|
|
|
- <el-table-column label="评价结果" prop="预期值"></el-table-column>
|
|
|
|
|
|
+ <el-table-column label="预期值" prop="expectValue"></el-table-column>
|
|
|
|
+ <el-table-column label="实际值" prop="matrixDegree"></el-table-column>
|
|
|
|
+ <el-table-column label="评价结果">
|
|
|
|
+ <span
|
|
|
|
+ slot-scope="scope"
|
|
|
|
+ :class="
|
|
|
|
+ scope.row.matrixDegree >= scope.row.expectValue
|
|
|
|
+ ? 'color-success'
|
|
|
|
+ : 'color-gray'
|
|
|
|
+ "
|
|
|
|
+ >
|
|
|
|
+ {{
|
|
|
|
+ scope.row.matrixDegree >= scope.row.expectValue
|
|
|
|
+ ? "达成"
|
|
|
|
+ : "未达成"
|
|
|
|
+ }}
|
|
|
|
+ </span>
|
|
|
|
+ </el-table-column>
|
|
<el-table-column class-name="action-column" label="操作" width="100">
|
|
<el-table-column class-name="action-column" label="操作" width="100">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-tooltip placement="left">
|
|
|
|
- <div slot="content">
|
|
|
|
- <el-table :data="scope.row.details" border>
|
|
|
|
- <el-table-column
|
|
|
|
- label="毕业要求指标"
|
|
|
|
- prop=""
|
|
|
|
- width="120"
|
|
|
|
- ></el-table-column>
|
|
|
|
- <el-table-column
|
|
|
|
- label="达成值"
|
|
|
|
- prop=""
|
|
|
|
- width="80"
|
|
|
|
- ></el-table-column>
|
|
|
|
- </el-table>
|
|
|
|
- </div>
|
|
|
|
- <el-button
|
|
|
|
- class="btn-primary"
|
|
|
|
- type="text"
|
|
|
|
- @click="toDetail(scope.row)"
|
|
|
|
|
|
+ <el-popover placement="right" trigger="hover">
|
|
|
|
+ <el-table :data="scope.row.obeSubRequirements" border>
|
|
|
|
+ <el-table-column
|
|
|
|
+ label="毕业要求指标"
|
|
|
|
+ prop="name"
|
|
|
|
+ width="120"
|
|
|
|
+ ></el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ label="达成值"
|
|
|
|
+ prop="matrixDegree"
|
|
|
|
+ width="100"
|
|
|
|
+ ></el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ <el-button slot="reference" class="btn-act-primary" type="text"
|
|
>查看详情</el-button
|
|
>查看详情</el-button
|
|
>
|
|
>
|
|
- </el-tooltip>
|
|
|
|
|
|
+ </el-popover>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
@@ -49,6 +59,7 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
|
+import { maxNum } from "@/plugins/utils";
|
|
import { requirementStatisticsRadar } from "../../api";
|
|
import { requirementStatisticsRadar } from "../../api";
|
|
|
|
|
|
export default {
|
|
export default {
|
|
@@ -67,31 +78,47 @@ export default {
|
|
chartOption: null,
|
|
chartOption: null,
|
|
};
|
|
};
|
|
},
|
|
},
|
|
|
|
+ mounted() {
|
|
|
|
+ this.getDetail();
|
|
|
|
+ },
|
|
methods: {
|
|
methods: {
|
|
async getDetail() {
|
|
async getDetail() {
|
|
const res = await requirementStatisticsRadar({
|
|
const res = await requirementStatisticsRadar({
|
|
- cultureProgramId: this.rowData.id,
|
|
|
|
|
|
+ cultureProgramId: this.rowData.cultureProgramId,
|
|
});
|
|
});
|
|
- this.dataList = res || [];
|
|
|
|
|
|
+ this.dataList = res.obeRequirements || [];
|
|
this.updateChartOption();
|
|
this.updateChartOption();
|
|
},
|
|
},
|
|
updateChartOption() {
|
|
updateChartOption() {
|
|
|
|
+ const vals = this.dataList
|
|
|
|
+ .map((item) => [item.expectValue, item.matrixDegree])
|
|
|
|
+ .flat();
|
|
|
|
+ const maxVal = Math.min(maxNum(vals) * 1.2, 1);
|
|
const option = {
|
|
const option = {
|
|
- color: ["#556dff", "#f59a23"],
|
|
|
|
|
|
+ color: ["#3a5ae5", "#fe5d4e"],
|
|
legend: {
|
|
legend: {
|
|
top: 0,
|
|
top: 0,
|
|
data: ["预期值", "实际值"],
|
|
data: ["预期值", "实际值"],
|
|
- itemWidth: 12,
|
|
|
|
|
|
+ itemWidth: 16,
|
|
itemHeight: 4,
|
|
itemHeight: 4,
|
|
itemGap: 22,
|
|
itemGap: 22,
|
|
- left: 40,
|
|
|
|
|
|
+ left: "center",
|
|
},
|
|
},
|
|
radar: {
|
|
radar: {
|
|
shape: "circle",
|
|
shape: "circle",
|
|
- indicator: this.dataList.map((item) => {
|
|
|
|
|
|
+ axisName: {
|
|
|
|
+ color: "#1f2230",
|
|
|
|
+ fontSize: 14,
|
|
|
|
+ },
|
|
|
|
+ axisLine: {
|
|
|
|
+ lineStyle: {
|
|
|
|
+ color: "#d3d5e0",
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ indicator: this.dataList.map((item, index) => {
|
|
return {
|
|
return {
|
|
- name: item.name,
|
|
|
|
- max: 1,
|
|
|
|
|
|
+ name: `${index + 1}.${item.name}`,
|
|
|
|
+ max: maxVal,
|
|
};
|
|
};
|
|
}),
|
|
}),
|
|
},
|
|
},
|
|
@@ -100,18 +127,18 @@ export default {
|
|
type: "radar",
|
|
type: "radar",
|
|
data: [
|
|
data: [
|
|
{
|
|
{
|
|
- value: this.dataList.map((item) => item.predict),
|
|
|
|
|
|
+ value: this.dataList.map((item) => item.expectValue),
|
|
name: "预期值",
|
|
name: "预期值",
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- value: this.dataList.map((item) => item.val),
|
|
|
|
|
|
+ value: this.dataList.map((item) => item.matrixDegree),
|
|
name: "实际值",
|
|
name: "实际值",
|
|
},
|
|
},
|
|
],
|
|
],
|
|
},
|
|
},
|
|
],
|
|
],
|
|
};
|
|
};
|
|
- return option;
|
|
|
|
|
|
+ this.chartOption = option;
|
|
},
|
|
},
|
|
},
|
|
},
|
|
};
|
|
};
|