update stdoutput
This commit is contained in:
		
							
								
								
									
										23
									
								
								src/mixins/fullscreen.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/mixins/fullscreen.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					import screenfull from "screenfull";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  data() {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					      isFullscreen: false,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  watch: {
 | 
				
			||||||
 | 
					    /** 全屏状态切换时,对柱子粗细和字体大小进行相应调整 */
 | 
				
			||||||
 | 
					    isFullscreen(val) {
 | 
				
			||||||
 | 
					      // 暴露一个全屏状态改变的回调函数
 | 
				
			||||||
 | 
					      this.fullscreenCallback(val);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  mounted() {
 | 
				
			||||||
 | 
					    if (screenfull.isEnabled) {
 | 
				
			||||||
 | 
					      screenfull.on("change", () => {
 | 
				
			||||||
 | 
					        this.isFullscreen = screenfull.isFullscreen;
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@@ -100,18 +100,31 @@ export default {
 | 
				
			|||||||
  box-shadow: inset 0 0 20px 1px #fff1;
 | 
					  box-shadow: inset 0 0 20px 1px #fff1;
 | 
				
			||||||
  backdrop-filter: blur(4px);
 | 
					  backdrop-filter: blur(4px);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // &::after {
 | 
					  &::before {
 | 
				
			||||||
  //   content: "";
 | 
					    content: "";
 | 
				
			||||||
  //   position: absolute;
 | 
					    position: absolute;
 | 
				
			||||||
  //   display: inline-block;
 | 
					    display: inline-block;
 | 
				
			||||||
  //   width: 60%;
 | 
					    height: 100%;
 | 
				
			||||||
  //   height: 0.31415vh;
 | 
					    width: 0.11415vw;
 | 
				
			||||||
  //   border-radius: 2px;
 | 
					    border-radius: 2px;
 | 
				
			||||||
  //   left: 8%;
 | 
					    top: 0%;
 | 
				
			||||||
  //   bottom: 0;
 | 
					    left: 0;
 | 
				
			||||||
  //   background: linear-gradient(to right, #024798, transparent);
 | 
					    background: radial-gradient(circle at center , #024798 2%, #024798 30%, transparent);
 | 
				
			||||||
  //   z-index: 0;
 | 
					    z-index: 1;
 | 
				
			||||||
  // }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  &::after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    display: inline-block;
 | 
				
			||||||
 | 
					    width: 60%;
 | 
				
			||||||
 | 
					    height: 0.31415vh;
 | 
				
			||||||
 | 
					    border-radius: 2px;
 | 
				
			||||||
 | 
					    left: 8%;
 | 
				
			||||||
 | 
					    bottom: 0;
 | 
				
			||||||
 | 
					    background: linear-gradient(to right, #024798, transparent);
 | 
				
			||||||
 | 
					    z-index: 0;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .container-head {
 | 
					  .container-head {
 | 
				
			||||||
    // height: 40px;
 | 
					    // height: 40px;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,11 @@
 | 
				
			|||||||
      />
 | 
					      />
 | 
				
			||||||
      <div class="btn-group">
 | 
					      <div class="btn-group">
 | 
				
			||||||
        <button type="button" class="export-btn" />
 | 
					        <button type="button" class="export-btn" />
 | 
				
			||||||
        <button type="button" class="fullscreen-btn" />
 | 
					        <button
 | 
				
			||||||
 | 
					          type="button"
 | 
				
			||||||
 | 
					          class="fullscreen-btn"
 | 
				
			||||||
 | 
					          @click="toggleFullScreen"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    </section>
 | 
					    </section>
 | 
				
			||||||
    <div class="page-title">{{ active }}驾驶舱</div>
 | 
					    <div class="page-title">{{ active }}驾驶舱</div>
 | 
				
			||||||
@@ -35,6 +39,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
import CopilotButton from "./button.vue";
 | 
					import CopilotButton from "./button.vue";
 | 
				
			||||||
 | 
					import screenfull from "screenfull";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  name: "CopilotHeader",
 | 
					  name: "CopilotHeader",
 | 
				
			||||||
  components: { CopilotButton },
 | 
					  components: { CopilotButton },
 | 
				
			||||||
@@ -47,10 +53,22 @@ export default {
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  data() {
 | 
					  data() {
 | 
				
			||||||
    return {};
 | 
					    return {
 | 
				
			||||||
 | 
					      isFullscreen: false,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  computed: {},
 | 
					  computed: {},
 | 
				
			||||||
  methods: {},
 | 
					  methods: {
 | 
				
			||||||
 | 
					    toggleFullScreen() {
 | 
				
			||||||
 | 
					      this.isFullscreen = !this.isFullscreen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      screenfull.toggle(document.querySelector(".copilot-layout"));
 | 
				
			||||||
 | 
					      // 矫正宽度
 | 
				
			||||||
 | 
					      // const el = document.querySelector(".copilot-layout");
 | 
				
			||||||
 | 
					      // el.style.width = this.isFullscreen ? "100vw" : "calc(100vw - 54px)";
 | 
				
			||||||
 | 
					      // el.style.left = this.isFullscreen ? "0" : "54px";
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										33
									
								
								src/views/copilot/components/charts/BipvOutput.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/views/copilot/components/charts/BipvOutput.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					<!-- 
 | 
				
			||||||
 | 
					    filename: BipvOutput.vue
 | 
				
			||||||
 | 
					    author: liubin
 | 
				
			||||||
 | 
					    date: 2024-04-17 09:55:12
 | 
				
			||||||
 | 
					    description: 
 | 
				
			||||||
 | 
					-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <DoubleRingWrapperVue />
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					import DoubleRingWrapperVue from "./base/DoubleRingWrapper.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  name: "BipvOutput",
 | 
				
			||||||
 | 
					  components: { DoubleRingWrapperVue },
 | 
				
			||||||
 | 
					  props: {},
 | 
				
			||||||
 | 
					  data() {
 | 
				
			||||||
 | 
					    return {};
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style scoped lang="scss">
 | 
				
			||||||
 | 
					.flex-1 {
 | 
				
			||||||
 | 
					  flex: 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.stretch {
 | 
				
			||||||
 | 
					  align-self: stretch;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
							
								
								
									
										33
									
								
								src/views/copilot/components/charts/ChipOutput.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/views/copilot/components/charts/ChipOutput.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					<!-- 
 | 
				
			||||||
 | 
					    filename: ChipOutput.vue
 | 
				
			||||||
 | 
					    author: liubin
 | 
				
			||||||
 | 
					    date: 2024-04-17 09:55:12
 | 
				
			||||||
 | 
					    description: 
 | 
				
			||||||
 | 
					-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <DoubleRingWrapperVue />
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					import DoubleRingWrapperVue from "./base/DoubleRingWrapper.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  name: "ChipOutput",
 | 
				
			||||||
 | 
					  components: { DoubleRingWrapperVue },
 | 
				
			||||||
 | 
					  props: {},
 | 
				
			||||||
 | 
					  data() {
 | 
				
			||||||
 | 
					    return {};
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style scoped lang="scss">
 | 
				
			||||||
 | 
					.flex-1 {
 | 
				
			||||||
 | 
					  flex: 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.stretch {
 | 
				
			||||||
 | 
					  align-self: stretch;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
@@ -6,56 +6,25 @@
 | 
				
			|||||||
-->
 | 
					-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div class="std-output">
 | 
					  <DoubleRingWrapperVue />
 | 
				
			||||||
    <copilot-select :options="cityOptions" />
 | 
					 | 
				
			||||||
    <div class="flex-1 stretch">f</div>
 | 
					 | 
				
			||||||
  </div>
 | 
					 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
import CopilotSelect from "../select.vue";
 | 
					import DoubleRingWrapperVue from "./base/DoubleRingWrapper.vue";
 | 
				
			||||||
import fetcher from "./std-output-data";
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  name: "StdOutput",
 | 
					  name: "StdOutput",
 | 
				
			||||||
  components: { CopilotSelect },
 | 
					  components: { DoubleRingWrapperVue },
 | 
				
			||||||
  props: {},
 | 
					  props: {},
 | 
				
			||||||
  data() {
 | 
					  data() {
 | 
				
			||||||
    return {
 | 
					    return {};
 | 
				
			||||||
      cityOptions: [
 | 
					 | 
				
			||||||
        "成都",
 | 
					 | 
				
			||||||
        "邯郸",
 | 
					 | 
				
			||||||
        "株洲",
 | 
					 | 
				
			||||||
        "瑞昌",
 | 
					 | 
				
			||||||
        "佳木斯",
 | 
					 | 
				
			||||||
        "凯盛光伏",
 | 
					 | 
				
			||||||
        "蚌埠兴科",
 | 
					 | 
				
			||||||
      ],
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  computed: {},
 | 
					 | 
				
			||||||
  mounted() {
 | 
					 | 
				
			||||||
    fetcher.getData().then((res) => {
 | 
					 | 
				
			||||||
      console.log("getData--->", res, fetcher.options);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  methods: {},
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<style scoped lang="scss">
 | 
					<style scoped lang="scss">
 | 
				
			||||||
.std-output {
 | 
					 | 
				
			||||||
  height: 100%;
 | 
					 | 
				
			||||||
  padding: 12px 24px;
 | 
					 | 
				
			||||||
  display: flex;
 | 
					 | 
				
			||||||
  gap: 12px;
 | 
					 | 
				
			||||||
  flex-direction: column;
 | 
					 | 
				
			||||||
  align-items: center;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.flex-1 {
 | 
					.flex-1 {
 | 
				
			||||||
  flex: 1;
 | 
					  flex: 1;
 | 
				
			||||||
  background: #f001;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.stretch {
 | 
					.stretch {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										119
									
								
								src/views/copilot/components/charts/base/DoubleRingChart.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								src/views/copilot/components/charts/base/DoubleRingChart.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,119 @@
 | 
				
			|||||||
 | 
					<!-- 
 | 
				
			||||||
 | 
					    filename: DoubleRingChart.vue
 | 
				
			||||||
 | 
					    author: liubin
 | 
				
			||||||
 | 
					    date: 2024-04-17 11:01:55
 | 
				
			||||||
 | 
					    description: 
 | 
				
			||||||
 | 
					-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <div class="double-ring-chart">
 | 
				
			||||||
 | 
					    <div ref="chart" class="double-ring-chart__container"></div>
 | 
				
			||||||
 | 
					    <!--   :style="{ height: vHeight + 'vh' }" -->
 | 
				
			||||||
 | 
					    <div class="double-ring-chart__legend">
 | 
				
			||||||
 | 
					      <div v-for="item in legendItems" :key="item.label" class="legend-item">
 | 
				
			||||||
 | 
					        <span class="legend-item__label">{{ item.label }}</span>
 | 
				
			||||||
 | 
					        <span class="legend-item__value">{{
 | 
				
			||||||
 | 
					          item.value.toLocaleString()
 | 
				
			||||||
 | 
					        }}</span>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					import chartMixin from "@/mixins/chart.js";
 | 
				
			||||||
 | 
					import fullscreenMixin from "@/mixins/fullscreen.js";
 | 
				
			||||||
 | 
					import options from "./double-ring-chart-options";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  name: "DoubleRingChart",
 | 
				
			||||||
 | 
					  mixins: [chartMixin, fullscreenMixin],
 | 
				
			||||||
 | 
					  props: {
 | 
				
			||||||
 | 
					    vHeight: {
 | 
				
			||||||
 | 
					      type: Number,
 | 
				
			||||||
 | 
					      default: 24,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    legendItems: {
 | 
				
			||||||
 | 
					      type: Array,
 | 
				
			||||||
 | 
					      default: () => [
 | 
				
			||||||
 | 
					        { label: "2023年累计", value: 88002 },
 | 
				
			||||||
 | 
					        { label: "2024年累计", value: 88002 },
 | 
				
			||||||
 | 
					        { label: "2025年累计", value: 88002 },
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  data() {
 | 
				
			||||||
 | 
					    return {};
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  computed: {},
 | 
				
			||||||
 | 
					  mounted() {
 | 
				
			||||||
 | 
					    this.initOptions(options);
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  methods: {
 | 
				
			||||||
 | 
					    // fullscreen mixin 需要的回调
 | 
				
			||||||
 | 
					    fullscreenCallback(isFullscreen) {
 | 
				
			||||||
 | 
					      console.log("isFullscreen--->", isFullscreen);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style scoped>
 | 
				
			||||||
 | 
					.double-ring-chart {
 | 
				
			||||||
 | 
					  height: 100%;
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  flex-direction: column;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.double-ring-chart__container {
 | 
				
			||||||
 | 
					  flex: 1;
 | 
				
			||||||
 | 
					  height: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.double-ring-chart__legend {
 | 
				
			||||||
 | 
					  padding: 12px;
 | 
				
			||||||
 | 
					  color: #fff;
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  justify-content: center;
 | 
				
			||||||
 | 
					  gap: 32px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.legend-item {
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  flex-direction: column;
 | 
				
			||||||
 | 
					  align-items: flex-start;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.legend-item__label {
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.legend-item__label::before {
 | 
				
			||||||
 | 
					  content: "";
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  width: 12px;
 | 
				
			||||||
 | 
					  height: 12px;
 | 
				
			||||||
 | 
					  background: #ccc;
 | 
				
			||||||
 | 
					  border-radius: 2px;
 | 
				
			||||||
 | 
					  top: 6px;
 | 
				
			||||||
 | 
					  left: -18px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.legend-item:nth-child(1) .legend-item__label::before {
 | 
				
			||||||
 | 
					  background: #0f65ff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.legend-item:nth-child(1) .legend-item__value {
 | 
				
			||||||
 | 
					  color: #0f65ff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.legend-item:nth-child(2) .legend-item__label::before {
 | 
				
			||||||
 | 
					  background: #12fff5;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.legend-item:nth-child(2) .legend-item__value {
 | 
				
			||||||
 | 
					  color: #12fff5;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.legend-item:nth-child(3) .legend-item__label::before {
 | 
				
			||||||
 | 
					  background: #003982;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
@@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					<!-- 
 | 
				
			||||||
 | 
					    filename: DoubleRingWrapper.vue
 | 
				
			||||||
 | 
					    author: liubin
 | 
				
			||||||
 | 
					    date: 2024-04-17 09:55:12
 | 
				
			||||||
 | 
					    description: 
 | 
				
			||||||
 | 
					-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <div class="double-ring-wrapper">
 | 
				
			||||||
 | 
					    <copilot-select :options="cityOptions" />
 | 
				
			||||||
 | 
					    <div class="flex-1 stretch">
 | 
				
			||||||
 | 
					      <DoubleRingChartVue />
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					import CopilotSelect from "../../select.vue";
 | 
				
			||||||
 | 
					import fetcher from "./fetcherDoubleRing";
 | 
				
			||||||
 | 
					import DoubleRingChartVue from "./DoubleRingChart.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  name: "DoubleRingWrapper",
 | 
				
			||||||
 | 
					  components: { CopilotSelect, DoubleRingChartVue },
 | 
				
			||||||
 | 
					  props: {},
 | 
				
			||||||
 | 
					  data() {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					      cityOptions: [
 | 
				
			||||||
 | 
					        "成都",
 | 
				
			||||||
 | 
					        "邯郸",
 | 
				
			||||||
 | 
					        "株洲",
 | 
				
			||||||
 | 
					        "瑞昌",
 | 
				
			||||||
 | 
					        "佳木斯",
 | 
				
			||||||
 | 
					        "凯盛光伏",
 | 
				
			||||||
 | 
					        "蚌埠兴科",
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  computed: {},
 | 
				
			||||||
 | 
					  mounted() {
 | 
				
			||||||
 | 
					    fetcher.getData().then((res) => {
 | 
				
			||||||
 | 
					      console.log("getData--->", res);
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  methods: {},
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style scoped lang="scss">
 | 
				
			||||||
 | 
					.double-ring-wrapper {
 | 
				
			||||||
 | 
					  height: 100%;
 | 
				
			||||||
 | 
					  padding: 12px 24px;
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  gap: 12px;
 | 
				
			||||||
 | 
					  flex-direction: column;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.flex-1 {
 | 
				
			||||||
 | 
					  flex: 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.stretch {
 | 
				
			||||||
 | 
					  align-self: stretch;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
@@ -0,0 +1,127 @@
 | 
				
			|||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  grid: {
 | 
				
			||||||
 | 
					    left: 0,
 | 
				
			||||||
 | 
					    right: 0,
 | 
				
			||||||
 | 
					    bottom: 0,
 | 
				
			||||||
 | 
					    top: 0,
 | 
				
			||||||
 | 
					    containLabel: true,
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  tooltip: {},
 | 
				
			||||||
 | 
					  title: {
 | 
				
			||||||
 | 
					    text: "78%",
 | 
				
			||||||
 | 
					    left: "50%",
 | 
				
			||||||
 | 
					    top: "40%",
 | 
				
			||||||
 | 
					    textAlign: "center",
 | 
				
			||||||
 | 
					    textStyle: {
 | 
				
			||||||
 | 
					      fontWeight: 600,
 | 
				
			||||||
 | 
					      fontSize: 32,
 | 
				
			||||||
 | 
					      color: "#fffd",
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    subtext: "\u200224年累计产出\u2002",
 | 
				
			||||||
 | 
					    subtextStyle: {
 | 
				
			||||||
 | 
					      fontSize: 14,
 | 
				
			||||||
 | 
					      fontWeight: 100,
 | 
				
			||||||
 | 
					      color: "#fffd",
 | 
				
			||||||
 | 
					      align: "right",
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  series: [
 | 
				
			||||||
 | 
					    // 背景 series - 2024计划
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      type: "pie",
 | 
				
			||||||
 | 
					      name: "2024目标",
 | 
				
			||||||
 | 
					      radius: ["70%", "85%"],
 | 
				
			||||||
 | 
					      center: ["50%", "52%"],
 | 
				
			||||||
 | 
					      emptyCircleStyle: {
 | 
				
			||||||
 | 
					        color: "#042c5f33",
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // 数据 series - 2024累计
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      type: "pie",
 | 
				
			||||||
 | 
					      radius: ["70%", "85%"],
 | 
				
			||||||
 | 
					      center: ["50%", "52%"],
 | 
				
			||||||
 | 
					      avoidLabelOvervlap: false,
 | 
				
			||||||
 | 
					      label: {
 | 
				
			||||||
 | 
					        show: false,
 | 
				
			||||||
 | 
					        // position: "center",
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      labelLine: {
 | 
				
			||||||
 | 
					        show: false,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      data: [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          value: 90,
 | 
				
			||||||
 | 
					          name: "2024累计产出",
 | 
				
			||||||
 | 
					          selected: false,
 | 
				
			||||||
 | 
					          itemStyle: {
 | 
				
			||||||
 | 
					            borderJoin: "round",
 | 
				
			||||||
 | 
					            borderCap: "round",
 | 
				
			||||||
 | 
					            borderWidth: 12,
 | 
				
			||||||
 | 
					            borderRadius: "50%",
 | 
				
			||||||
 | 
					            color: {
 | 
				
			||||||
 | 
					              type: "linear",
 | 
				
			||||||
 | 
					              x: 1,
 | 
				
			||||||
 | 
					              y: 0,
 | 
				
			||||||
 | 
					              x2: 0,
 | 
				
			||||||
 | 
					              y2: 1,
 | 
				
			||||||
 | 
					              colorStops: [
 | 
				
			||||||
 | 
					                { offset: 0, color: "#4CF0E811" },
 | 
				
			||||||
 | 
					                { offset: 1, color: "#4CF0E8" },
 | 
				
			||||||
 | 
					              ],
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          value: 20,
 | 
				
			||||||
 | 
					          name: "-",
 | 
				
			||||||
 | 
					          itemStyle: { color: "transparent" },
 | 
				
			||||||
 | 
					          label: { show: false },
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // 数据 series2 - 2023累计
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      type: "pie",
 | 
				
			||||||
 | 
					      radius: ["55%", "70%"],
 | 
				
			||||||
 | 
					      center: ["50%", "52%"],
 | 
				
			||||||
 | 
					      avoidLabelOvervlap: false,
 | 
				
			||||||
 | 
					      label: {
 | 
				
			||||||
 | 
					        show: false,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      labelLine: {
 | 
				
			||||||
 | 
					        show: false,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      data: [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          value: 90,
 | 
				
			||||||
 | 
					          name: "2023累计产出",
 | 
				
			||||||
 | 
					          selected: false,
 | 
				
			||||||
 | 
					          itemStyle: {
 | 
				
			||||||
 | 
					            borderJoin: "round",
 | 
				
			||||||
 | 
					            borderCap: "round",
 | 
				
			||||||
 | 
					            borderWidth: 12,
 | 
				
			||||||
 | 
					            borderRadius: "50%",
 | 
				
			||||||
 | 
					            color: {
 | 
				
			||||||
 | 
					              type: "linear",
 | 
				
			||||||
 | 
					              x: 1,
 | 
				
			||||||
 | 
					              y: 0,
 | 
				
			||||||
 | 
					              x2: 0,
 | 
				
			||||||
 | 
					              y2: 1,
 | 
				
			||||||
 | 
					              colorStops: [
 | 
				
			||||||
 | 
					                { offset: 0, color: "#1065ff66" },
 | 
				
			||||||
 | 
					                { offset: 1, color: "#1065ff" },
 | 
				
			||||||
 | 
					              ],
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          value: 20,
 | 
				
			||||||
 | 
					          name: "-",
 | 
				
			||||||
 | 
					          itemStyle: { color: "transparent" },
 | 
				
			||||||
 | 
					          label: { show: false },
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@@ -1,7 +1,4 @@
 | 
				
			|||||||
import options from './double-ring-chart-options';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  options,
 | 
					 | 
				
			||||||
  getData: async function (url) {
 | 
					  getData: async function (url) {
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    return await new Promise((resolve, reject) => {
 | 
					    return await new Promise((resolve, reject) => {
 | 
				
			||||||
@@ -1,122 +0,0 @@
 | 
				
			|||||||
export default {
 | 
					 | 
				
			||||||
  grid: {
 | 
					 | 
				
			||||||
    left: "3%",
 | 
					 | 
				
			||||||
    right: "4%",
 | 
					 | 
				
			||||||
    bottom: "0",
 | 
					 | 
				
			||||||
    top: "15%",
 | 
					 | 
				
			||||||
    containLabel: true,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  tooltip: {},
 | 
					 | 
				
			||||||
  xAxis: {
 | 
					 | 
				
			||||||
    axisTick: {
 | 
					 | 
				
			||||||
      show: false,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    axisLine: {
 | 
					 | 
				
			||||||
      lineStyle: {
 | 
					 | 
				
			||||||
        color: "#4561AE",
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    axisLabel: {
 | 
					 | 
				
			||||||
      color: "#fff",
 | 
					 | 
				
			||||||
      fontSize: 12,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    // data: this.xAxis,
 | 
					 | 
				
			||||||
    data: [],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  yAxis: {
 | 
					 | 
				
			||||||
    name: "单位/片",
 | 
					 | 
				
			||||||
    nameTextStyle: {
 | 
					 | 
				
			||||||
      color: "#fff",
 | 
					 | 
				
			||||||
      fontSize: 12,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    axisTick: {
 | 
					 | 
				
			||||||
      show: false,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    axisLabel: {
 | 
					 | 
				
			||||||
      color: "#fff",
 | 
					 | 
				
			||||||
      fontSize: 12,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    axisLine: {
 | 
					 | 
				
			||||||
      show: true,
 | 
					 | 
				
			||||||
      lineStyle: {
 | 
					 | 
				
			||||||
        color: "#4561AE",
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    splitLine: {
 | 
					 | 
				
			||||||
      lineStyle: {
 | 
					 | 
				
			||||||
        color: "#4561AE",
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  series: [
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      name: "2023年",
 | 
					 | 
				
			||||||
      type: "bar",
 | 
					 | 
				
			||||||
      barWidth: 12,
 | 
					 | 
				
			||||||
      itemStyle: {
 | 
					 | 
				
			||||||
        borderRadius: [10, 10, 0, 0],
 | 
					 | 
				
			||||||
        color: {
 | 
					 | 
				
			||||||
          type: "linear",
 | 
					 | 
				
			||||||
          x: 0,
 | 
					 | 
				
			||||||
          y: 0,
 | 
					 | 
				
			||||||
          x2: 0,
 | 
					 | 
				
			||||||
          y2: 1,
 | 
					 | 
				
			||||||
          colorStops: [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
              offset: 0,
 | 
					 | 
				
			||||||
              color: "#12f7f1", // 0% 处的颜色
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
              offset: 0.35,
 | 
					 | 
				
			||||||
              color: "#12f7f177", // 100% 处的颜色
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
              offset: 0.75,
 | 
					 | 
				
			||||||
              color: "#12f7f133", // 100% 处的颜色
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
              offset: 1,
 | 
					 | 
				
			||||||
              color: "transparent", // 100% 处的颜色
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
          ],
 | 
					 | 
				
			||||||
          global: false, // 缺省为 false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      //   data: this.series[0].data,
 | 
					 | 
				
			||||||
      data: [],
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      name: "2024年",
 | 
					 | 
				
			||||||
      type: "bar",
 | 
					 | 
				
			||||||
      barWidth: 12,
 | 
					 | 
				
			||||||
      // tooltip: {
 | 
					 | 
				
			||||||
      //   valueFormatter: function (value) {
 | 
					 | 
				
			||||||
      //     return value + " ml";
 | 
					 | 
				
			||||||
      //   },
 | 
					 | 
				
			||||||
      // },
 | 
					 | 
				
			||||||
      itemStyle: {
 | 
					 | 
				
			||||||
        borderRadius: [10, 10, 0, 0],
 | 
					 | 
				
			||||||
        color: {
 | 
					 | 
				
			||||||
          type: "linear",
 | 
					 | 
				
			||||||
          x: 0,
 | 
					 | 
				
			||||||
          y: 0,
 | 
					 | 
				
			||||||
          x2: 0,
 | 
					 | 
				
			||||||
          y2: 1,
 | 
					 | 
				
			||||||
          colorStops: [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
              offset: 0,
 | 
					 | 
				
			||||||
              color: "#57abf8", // 0% 处的颜色
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
              offset: 1,
 | 
					 | 
				
			||||||
              color: "#364BFE66", // 100% 处的颜色
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
          ],
 | 
					 | 
				
			||||||
          global: false, // 缺省为 false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      data: [],
 | 
					 | 
				
			||||||
      //   data: this.series[1].data,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -11,16 +11,12 @@
 | 
				
			|||||||
      <db-container class="std-yield" title="标准组件产出" icon="std">
 | 
					      <db-container class="std-yield" title="标准组件产出" icon="std">
 | 
				
			||||||
        <std-output />
 | 
					        <std-output />
 | 
				
			||||||
      </db-container>
 | 
					      </db-container>
 | 
				
			||||||
      <db-container
 | 
					      <db-container class="chip-yield" title="芯片产出" icon="chip2">
 | 
				
			||||||
        class="chip-yield"
 | 
					        <chip-output />
 | 
				
			||||||
        title="芯片产出"
 | 
					      </db-container>
 | 
				
			||||||
        icon="chip2"
 | 
					      <db-container class="bipv-yield" title="BIPV产出" icon="bipv">
 | 
				
			||||||
      ></db-container>
 | 
					        <bipv-output />
 | 
				
			||||||
      <db-container
 | 
					      </db-container>
 | 
				
			||||||
        class="bipv-yield"
 | 
					 | 
				
			||||||
        title="BIPV产出"
 | 
					 | 
				
			||||||
        icon="bipv"
 | 
					 | 
				
			||||||
      ></db-container>
 | 
					 | 
				
			||||||
    </section>
 | 
					    </section>
 | 
				
			||||||
    <section class="bottom flex">
 | 
					    <section class="bottom flex">
 | 
				
			||||||
      <db-container class="fto-involve" title="FTO投入"></db-container>
 | 
					      <db-container class="fto-involve" title="FTO投入"></db-container>
 | 
				
			||||||
@@ -36,10 +32,18 @@
 | 
				
			|||||||
<script>
 | 
					<script>
 | 
				
			||||||
import Container from "../components/Container.vue";
 | 
					import Container from "../components/Container.vue";
 | 
				
			||||||
import StdOutputVue from "../components/charts/StdOutput.vue";
 | 
					import StdOutputVue from "../components/charts/StdOutput.vue";
 | 
				
			||||||
 | 
					import ChipOutputVue from "../components/charts/ChipOutput.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import BipvOutputVue from "../components/charts/BipvOutput.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  name: "YieldCopilot",
 | 
					  name: "YieldCopilot",
 | 
				
			||||||
  components: { DbContainer: Container, StdOutput: StdOutputVue },
 | 
					  components: {
 | 
				
			||||||
 | 
					    DbContainer: Container,
 | 
				
			||||||
 | 
					    StdOutput: StdOutputVue,
 | 
				
			||||||
 | 
					    ChipOutput: ChipOutputVue,
 | 
				
			||||||
 | 
					    BipvOutput: BipvOutputVue,
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  props: {},
 | 
					  props: {},
 | 
				
			||||||
  data() {
 | 
					  data() {
 | 
				
			||||||
    return {};
 | 
					    return {};
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user