<!-- * @Author: your name * @Date: 2022-04-11 15:07:47 * @LastEditTime: 2022-04-20 11:09:34 * @LastEditors: Please set LastEditors * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @FilePath: /gassafety-progress/gassafetyprogress-web/src/views/operationMonitor/xunjianxuncha/topChars/left.vue --> <template> <div class="charsCom all-flex-h"> <div class="title">隐患整改</div> <div class="two all-flex"> <div class="left"> <div class="first"> <span class="text">隐患发现情况</span> <span>{{hiddenBookInfo.finishNum + hiddenBookInfo.unFinishNum}}次</span> </div> <div class="second all-flex"> <div class="left">隐患未整改数</div> <div class="right">隐患已整改数</div> </div> <div class="third all-flex"> <div class="left">{{ hiddenBookInfo.unFinishNum}}</div> <div class="right">{{hiddenBookInfo.finishNum}}</div> </div> </div> <div class="right"> <div class="first"> <span class="text">隐患整改率</span> </div> <div class="chars-box"> <Chars color="#604AFF" :options="option"></Chars> </div> </div> </div> <div class="three all-flex-h"> <div class="first">隐患原因</div> <div ref="myChartWidth" class="chars-box"> <Chars :options="reasonOptions" /> </div> </div> </div> </template> <script> import Chars from "@/components/allCharsCom/Chars"; import { hiddenBookStatistics } from "@/api/standingBook/hidden"; export default { components: { Chars, }, created(){ this.getHiddenBookInfo(); }, data() { return { bottomData: [ [ { name: "裂缝", value: 0, color: "#604AFF" }, { name: "管道称重", value: 0, color: "#FFC337" }, { name: "其他", value: 0, color: "#86FF5B" }, { name: "腐蚀", value: 0, color: "#03C4F1" }, { name: "漏气", value: 0, color: "#1F8DF3" }, ], ], option:{ color:['blue','lightblue'], grid: { bottom: "7%", containLabel: true, }, tooltip: { trigger: "item", }, series: [ { name: '访问来源', type: 'pie', radius: ['40%', '70%'], label: { show: true, position: 'center' }, labelLine: { show: false }, data: [ {value: 0, name: '整改'}, {value: 0, name: '未整改'}, ] } ] }, reasonOptions:{}, hiddenBookInfo: { unFinishNum: 0, finishNum: 0 } }; }, methods: { bottomOptions() { return { series: this.bottomData.map((data, idx) => { const rich = {}; data .map((item) => ({ fontsize: 12, color: item.color, })) .forEach((item, index) => { rich[`dataIndex${index}`] = item; }); return { type: "pie", radius: ["68%", "80%"], tooltip: { trigger: "item", }, color: data.map((item) => item.color), itemStyle: { borderWidth: 2, borderRadius: 10, borderColor: "#fff", }, label: { alignTo: "edge", // formatter: "{name|{b}}\n{num|{c} 个}", formatter: (parm) => { return `{dataIndex${parm.dataIndex}|${parm.data.name}}\n{dataIndex${parm.dataIndex}|${parm.data.value}}`; }, minMargin: 5, edgeDistance: 10, lineHeight: 15, rich, }, labelLine: { length: 15, length2: 0, maxSurfaceAngle: 80, }, labelLayout: (params) => { const { width } = this.$refs.myChartWidth.getBoundingClientRect(); const isLeft = params.labelRect.x < width / 2; const points = params.labelLinePoints; console.log("points",points) // Update the end point. points[2][0] = isLeft ? params.labelRect.x : params.labelRect.x + params.labelRect.width; return { labelLinePoints: points, }; }, data: data, }; }), }; }, getHiddenBookInfo(){ hiddenBookStatistics().then(res =>{ if(res.code == 200){ this.hiddenBookInfo= res.data; this.option.series[0].data = [{value: res.data.finishNum, name: '整改'},{value: res.data.unFinishNum, name: '未整改'}]; this.bottomData = [ [{ name: "漏气", value: res.data.blowNum, color: "#604AFF" }, { name: "腐蚀", value: res.data.corrosionNum, color: "#FFC337" }, { name: "裂缝", value: res.data.crackNum, color: "#86FF5B" }, { name: "设备故障", value: res.data.deviceNum, color: "#03C4F1" }, { name: "安全距离不足", value: res.data.distanceNum, color: "#1F8DF3" }, { name: "管道承重", value: res.data.pipeNum, color: "#03C4F1" }, { name: "其他", value: res.data.otherNum, color: "#1F8DF3" }] ], this.reasonOptions = this.bottomOptions(); } //console.log("res==================",res) }) } }, }; </script> <style lang="scss" scoped> .charsCom { width: 100%; height: 100%; color: #333333; } .title { text-align: center; font-size: 24px; margin-bottom: 7px; } .two { // flex: 1; > .left { margin-right: 70px; .first { margin-bottom: 6px; } .second { width: 213px; height: 30px; line-height: 30px; box-sizing: border-box; box-shadow: 0px 0px 3px 1px #dddddd; margin-bottom: 19px; > div { // flex: 1; text-align: center; &.left { color: #1d8cf3; } &.right { color: #00c3f1; } } } .third { text-align: center; width: 213px; margin-bottom: 24px; } } > .right { .first { text-align: center !important; } .chars-box { width: 90px; height: 90px; margin: 0 auto; } } > div { font-size: 16px; flex: 1; // display: flex; // flex-direction: column; } .left, .right { // display: flex; // flex-direction: column; // justify-content: space-between; .first { text-align: left; .text { display: inline-block; margin-right: 8px; } } } } .three { font-size: 16px; flex: 1; // background: red; .chars-box { flex: 1; } } </style>