Merge branch 'projects/mescc/develop' into projects/mescc/dy
This commit is contained in:
		@@ -92,7 +92,7 @@ const actions = {
 | 
			
		||||
  /** 初始化首页数据 */
 | 
			
		||||
  async initHome({ commit }) {
 | 
			
		||||
    const dataArr = await getHomeInfo();
 | 
			
		||||
    console.log('dataArr', dataArr);
 | 
			
		||||
    // console.log('dataArr', dataArr);
 | 
			
		||||
      let preData = dataArr.previousProdOutputOutDO
 | 
			
		||||
      let preFtoData = dataArr.previousProdOutputFtoDO
 | 
			
		||||
    // const targetArr = await getHomeInfo();
 | 
			
		||||
@@ -127,7 +127,7 @@ const actions = {
 | 
			
		||||
    //   const payload = handler(factoryData)
 | 
			
		||||
    //   commit("SET_COPILOT_INFO", { type, payload });
 | 
			
		||||
    // } else {
 | 
			
		||||
      console.log('factoryList',factoryList)
 | 
			
		||||
      // console.log('factoryList',factoryList)
 | 
			
		||||
      let factoryData = factoryList.prodOutputOutDO ? factoryList.prodOutputOutDO : factoryList.prodOutputRateDO
 | 
			
		||||
      let preData = factoryList.previousProdOutputOutDO ? factoryList.previousProdOutputOutDO : factoryList.previousProdOutputRateDO
 | 
			
		||||
      let preFtoData = factoryList.previousProdOutputFtoDO ? factoryList.previousProdOutputFtoDO : []
 | 
			
		||||
@@ -289,7 +289,7 @@ function splitCurrentAndPreviousB(factoryListResponse) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function splitCurrentAndPreviousA(factoryListResponse, targetListResponse, prodOutputFtoListRes,preData,preFtoData) {
 | 
			
		||||
  console.log('工厂',preData);
 | 
			
		||||
  // console.log('工厂',preData);
 | 
			
		||||
 | 
			
		||||
  // 初始数据
 | 
			
		||||
  const { chipOeeRate, transformRate, chipRate, stdRate } = initA();
 | 
			
		||||
@@ -346,7 +346,7 @@ function splitCurrentAndPreviousA(factoryListResponse, targetListResponse, prodO
 | 
			
		||||
  if (preData) {
 | 
			
		||||
    for (const factory of preData) {
 | 
			
		||||
      const fId = getPreFactoryId(factory)
 | 
			
		||||
      console.log('factory',factory.previousYearOee);
 | 
			
		||||
      // console.log('factory',factory.previousYearOee);
 | 
			
		||||
        //  chipInvest.previous[fId] = factory.previousYearInputNumber;
 | 
			
		||||
      // chipOeeRate.current[fId] = factory.oee;
 | 
			
		||||
      if (factory.previousGlassType === 0) {
 | 
			
		||||
@@ -400,7 +400,7 @@ function splitCurrentAndPreviousA(factoryListResponse, targetListResponse, prodO
 | 
			
		||||
      _t.current[fId] = factory.yieldRate ;
 | 
			
		||||
      // _t.previous[fId] = factory.previousYearYieldRate ;
 | 
			
		||||
    }
 | 
			
		||||
    console.log('chipOeeRate',stdRate);
 | 
			
		||||
    // console.log('chipOeeRate',stdRate);
 | 
			
		||||
    // console.log('chipOeeRate',chipOeeRate);
 | 
			
		||||
    return {
 | 
			
		||||
      chipOeeRate,
 | 
			
		||||
@@ -412,12 +412,12 @@ function splitCurrentAndPreviousA(factoryListResponse, targetListResponse, prodO
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function splitCurrentAndPrevious(factoryListResponse, targetListResponse, prodOutputFtoListRes,preData,preFtoData) {
 | 
			
		||||
  console.log('prodOutputFtoListRes',preFtoData);
 | 
			
		||||
  // console.log('prodOutputFtoListRes',preFtoData);
 | 
			
		||||
  // 初始数据
 | 
			
		||||
  const { chipInvest, ftoInvest, chipOutput, stdOutput, bipvOutput } = init()
 | 
			
		||||
   if (prodOutputFtoListRes.length !== 0 ) {
 | 
			
		||||
    for (const factory of prodOutputFtoListRes) {
 | 
			
		||||
      console.log(factory);
 | 
			
		||||
      // console.log(factory);
 | 
			
		||||
      const fId = getFactoryId(factory);
 | 
			
		||||
      // const preFId = getPreFactoryId(factory);
 | 
			
		||||
      // if (fId) {
 | 
			
		||||
@@ -430,7 +430,7 @@ function splitCurrentAndPrevious(factoryListResponse, targetListResponse, prodOu
 | 
			
		||||
   }
 | 
			
		||||
   if (preFtoData) {
 | 
			
		||||
    for (const factory of preFtoData) {
 | 
			
		||||
      console.log(factory);
 | 
			
		||||
      // console.log(factory);
 | 
			
		||||
      const fId = getPreFactoryId(factory);
 | 
			
		||||
      // const preFId = getPreFactoryId(factory);
 | 
			
		||||
      // if (fId) {
 | 
			
		||||
@@ -463,7 +463,7 @@ function splitCurrentAndPrevious(factoryListResponse, targetListResponse, prodOu
 | 
			
		||||
  if (factoryListResponse) {
 | 
			
		||||
    for (const factory of factoryListResponse) {
 | 
			
		||||
      const fId = getFactoryId(factory);
 | 
			
		||||
      console.log('factory.inputNumber', factory, fId);
 | 
			
		||||
      // console.log('factory.inputNumber', factory, fId);
 | 
			
		||||
      if (factory.glassType === 0) {
 | 
			
		||||
      chipInvest.current[fId] = factory.inputNumber
 | 
			
		||||
      }
 | 
			
		||||
@@ -484,7 +484,7 @@ function splitCurrentAndPrevious(factoryListResponse, targetListResponse, prodOu
 | 
			
		||||
      const _t = [chipOutput, stdOutput, bipvOutput][factory.glassType];
 | 
			
		||||
        _t.current[fId] = factory.outputNumber;
 | 
			
		||||
    }
 | 
			
		||||
    console.log('chipInvest',ftoInvest);
 | 
			
		||||
    // console.log('chipInvest',ftoInvest);
 | 
			
		||||
    return {
 | 
			
		||||
      chipInvest,
 | 
			
		||||
      // ftoInvest,
 | 
			
		||||
 
 | 
			
		||||
@@ -8,9 +8,7 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="copilot-container">
 | 
			
		||||
    <!-- refresh btn  -->
 | 
			
		||||
    <button
 | 
			
		||||
      v-if="0"
 | 
			
		||||
      style="
 | 
			
		||||
    <button v-if="0" style="
 | 
			
		||||
        appearance: none;
 | 
			
		||||
        outline: none;
 | 
			
		||||
        border: none;
 | 
			
		||||
@@ -20,22 +18,11 @@
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        top: 8px;
 | 
			
		||||
        right: 8px;
 | 
			
		||||
      "
 | 
			
		||||
      @click="$emit('refresh')"
 | 
			
		||||
    >
 | 
			
		||||
      <svg
 | 
			
		||||
        xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
        fill="none"
 | 
			
		||||
        viewBox="0 0 24 24"
 | 
			
		||||
        stroke-width="1.5"
 | 
			
		||||
        stroke="currentColor"
 | 
			
		||||
        style="width: 24px; height: 24px"
 | 
			
		||||
      >
 | 
			
		||||
        <path
 | 
			
		||||
          stroke-linecap="round"
 | 
			
		||||
          stroke-linejoin="round"
 | 
			
		||||
          d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99"
 | 
			
		||||
        />
 | 
			
		||||
      " @click="$emit('refresh')">
 | 
			
		||||
      <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
 | 
			
		||||
        style="width: 24px; height: 24px">
 | 
			
		||||
        <path stroke-linecap="round" stroke-linejoin="round"
 | 
			
		||||
          d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99" />
 | 
			
		||||
      </svg>
 | 
			
		||||
    </button>
 | 
			
		||||
    <!-- decoration  -->
 | 
			
		||||
@@ -44,19 +31,13 @@
 | 
			
		||||
    <div v-if="side == 'left'" class="corner bl"></div>
 | 
			
		||||
    <div v-if="side == 'right'" class="corner br"></div>
 | 
			
		||||
    <!-- content  -->
 | 
			
		||||
    <div
 | 
			
		||||
      class="container-head"
 | 
			
		||||
      :class="[side == 'left' ? 'gradient-to-right' : 'gradient-to-left']"
 | 
			
		||||
    >
 | 
			
		||||
      <Icon :icon="icon"></Icon>
 | 
			
		||||
    <div class="container-head" :class="[side == 'left' ? 'gradient-to-right' : 'gradient-to-left']">
 | 
			
		||||
      <Icon style="margin-left: 16px;" :icon="icon"></Icon>
 | 
			
		||||
      <h2 class="container-title">{{ title }}</h2>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div
 | 
			
		||||
      class="container-body"
 | 
			
		||||
      :class="[
 | 
			
		||||
    <div class="container-body" :class="[
 | 
			
		||||
        side == 'left' ? 'body-gradient-to-right' : 'body-gradient-to-left',
 | 
			
		||||
      ]"
 | 
			
		||||
    >
 | 
			
		||||
      ]">
 | 
			
		||||
      <slot />
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@
 | 
			
		||||
    <div class="page-title">{{ companyName }}</div>
 | 
			
		||||
    <section class="menu2">
 | 
			
		||||
      <div class="btn-group">
 | 
			
		||||
        <el-tooltip class="item" effect="dark" content="导出" placement="top">
 | 
			
		||||
        <el-tooltip v-if="showPeriod" class="item" effect="dark" content="导出" placement="top">
 | 
			
		||||
          <button type="button" class="export-btn" @click="handleExport" />
 | 
			
		||||
        </el-tooltip>
 | 
			
		||||
        <el-tooltip class="item" effect="dark" :content="isFullscreen  === false ? '退出全屏' : '全屏'" placement="top">
 | 
			
		||||
@@ -48,10 +48,20 @@ export default {
 | 
			
		||||
      type: String,
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  watch: {
 | 
			
		||||
    period(val) {
 | 
			
		||||
      if (val != 1) {
 | 
			
		||||
        this.showPeriod = true
 | 
			
		||||
      } else {
 | 
			
		||||
        this.showPeriod = false
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      isFullscreen: false,
 | 
			
		||||
      content:'全屏',
 | 
			
		||||
      content: '全屏',
 | 
			
		||||
      showPeriod:false,
 | 
			
		||||
      dataList: [
 | 
			
		||||
        { id: 1, name: "日" },
 | 
			
		||||
        { id: 2, name: "周" },
 | 
			
		||||
@@ -63,7 +73,8 @@ export default {
 | 
			
		||||
  computed: {},
 | 
			
		||||
  methods: {
 | 
			
		||||
    handleExport() {
 | 
			
		||||
      if (this.period != 1) {
 | 
			
		||||
      // if (this.period != 1) {
 | 
			
		||||
        this.showPeriod = true
 | 
			
		||||
        exportFactoryDataExcel({
 | 
			
		||||
          factoryId: this.companyId,
 | 
			
		||||
          timeSelection: this.period === 1 ? 0 : this.period === 2 ? 1 : this.period === 3 ? 2 : 3,
 | 
			
		||||
@@ -72,12 +83,9 @@ export default {
 | 
			
		||||
          this.$download.excel(response, `${this.companyName}生产数据.xls`);
 | 
			
		||||
          // this.exportLoading = false;
 | 
			
		||||
        }).catch(() => { });
 | 
			
		||||
      } else {
 | 
			
		||||
        this.$message({
 | 
			
		||||
          type: 'warning',
 | 
			
		||||
          message: '为日的情况下没有导出功能',
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
      // } else {
 | 
			
		||||
      //   this.showPeriod = false
 | 
			
		||||
      // }
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
    toggleFullScreen() {
 | 
			
		||||
 
 | 
			
		||||
@@ -8,9 +8,7 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="copilot-container">
 | 
			
		||||
    <!-- refresh btn  -->
 | 
			
		||||
    <button
 | 
			
		||||
      v-if="false"
 | 
			
		||||
      style="
 | 
			
		||||
    <button v-if="false" style="
 | 
			
		||||
        appearance: none;
 | 
			
		||||
        outline: none;
 | 
			
		||||
        border: none;
 | 
			
		||||
@@ -20,43 +18,26 @@
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        top: 8px;
 | 
			
		||||
        right: 8px;
 | 
			
		||||
      "
 | 
			
		||||
      @click="$emit('refresh')"
 | 
			
		||||
    >
 | 
			
		||||
      <svg
 | 
			
		||||
        xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
        fill="none"
 | 
			
		||||
        viewBox="0 0 24 24"
 | 
			
		||||
        stroke-width="1.5"
 | 
			
		||||
        stroke="currentColor"
 | 
			
		||||
        style="width: 24px; height: 24px"
 | 
			
		||||
      >
 | 
			
		||||
        <path
 | 
			
		||||
          stroke-linecap="round"
 | 
			
		||||
          stroke-linejoin="round"
 | 
			
		||||
          d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99"
 | 
			
		||||
        />
 | 
			
		||||
      " @click="$emit('refresh')">
 | 
			
		||||
      <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
 | 
			
		||||
        style="width: 24px; height: 24px">
 | 
			
		||||
        <path stroke-linecap="round" stroke-linejoin="round"
 | 
			
		||||
          d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99" />
 | 
			
		||||
      </svg>
 | 
			
		||||
    </button>
 | 
			
		||||
    <!-- decoration  -->
 | 
			
		||||
    <div class="corner tl"></div>
 | 
			
		||||
    <div class="corner tr"></div>
 | 
			
		||||
    <div  class="corner bl"></div>
 | 
			
		||||
    <div  class="corner br"></div>
 | 
			
		||||
    <div class="corner bl"></div>
 | 
			
		||||
    <div class="corner br"></div>
 | 
			
		||||
    <!-- content  -->
 | 
			
		||||
    <div
 | 
			
		||||
      class="container-head"
 | 
			
		||||
      :class="[side == 'left' ? 'gradient-to-right' : 'gradient-to-left']"
 | 
			
		||||
    >
 | 
			
		||||
      <Icon :icon="icon"></Icon>
 | 
			
		||||
    <div class="container-head" :class="[side == 'left' ? 'gradient-to-right' : 'gradient-to-left']">
 | 
			
		||||
      <Icon style="margin-left: 16px;" :icon="icon"></Icon>
 | 
			
		||||
      <h2 class="container-title">{{ title }}</h2>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div
 | 
			
		||||
      class="container-body"
 | 
			
		||||
      :class="[
 | 
			
		||||
    <div class="container-body" :class="[
 | 
			
		||||
        side == 'left' ? 'body-gradient-to-right' : 'body-gradient-to-left',
 | 
			
		||||
      ]"
 | 
			
		||||
    >
 | 
			
		||||
      ]">
 | 
			
		||||
      <slot />
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -8,9 +8,7 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="copilot-container">
 | 
			
		||||
    <!-- refresh btn  -->
 | 
			
		||||
    <button
 | 
			
		||||
      v-if="false"
 | 
			
		||||
      style="
 | 
			
		||||
    <button v-if="false" style="
 | 
			
		||||
        appearance: none;
 | 
			
		||||
        outline: none;
 | 
			
		||||
        border: none;
 | 
			
		||||
@@ -20,43 +18,26 @@
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        top: 8px;
 | 
			
		||||
        right: 8px;
 | 
			
		||||
      "
 | 
			
		||||
      @click="$emit('refresh')"
 | 
			
		||||
    >
 | 
			
		||||
      <svg
 | 
			
		||||
        xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
        fill="none"
 | 
			
		||||
        viewBox="0 0 24 24"
 | 
			
		||||
        stroke-width="1.5"
 | 
			
		||||
        stroke="currentColor"
 | 
			
		||||
        style="width: 24px; height: 24px"
 | 
			
		||||
      >
 | 
			
		||||
        <path
 | 
			
		||||
          stroke-linecap="round"
 | 
			
		||||
          stroke-linejoin="round"
 | 
			
		||||
          d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99"
 | 
			
		||||
        />
 | 
			
		||||
      " @click="$emit('refresh')">
 | 
			
		||||
      <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
 | 
			
		||||
        style="width: 24px; height: 24px">
 | 
			
		||||
        <path stroke-linecap="round" stroke-linejoin="round"
 | 
			
		||||
          d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99" />
 | 
			
		||||
      </svg>
 | 
			
		||||
    </button>
 | 
			
		||||
    <!-- decoration  -->
 | 
			
		||||
    <div class="corner tl"></div>
 | 
			
		||||
    <div class="corner tr"></div>
 | 
			
		||||
    <div  class="corner bl"></div>
 | 
			
		||||
    <div  class="corner br"></div>
 | 
			
		||||
    <div class="corner bl"></div>
 | 
			
		||||
    <div class="corner br"></div>
 | 
			
		||||
    <!-- content  -->
 | 
			
		||||
    <div
 | 
			
		||||
      class="container-head"
 | 
			
		||||
      :class="[side == 'left' ? 'gradient-to-right' : 'gradient-to-left']"
 | 
			
		||||
    >
 | 
			
		||||
      <Icon :icon="icon"></Icon>
 | 
			
		||||
    <div class="container-head" :class="[side == 'left' ? 'gradient-to-right' : 'gradient-to-left']">
 | 
			
		||||
      <Icon style="margin-left: 16px;" :icon="icon"></Icon>
 | 
			
		||||
      <h2 class="container-title">{{ title }}</h2>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div
 | 
			
		||||
      class="container-body"
 | 
			
		||||
      :class="[
 | 
			
		||||
    <div class="container-body" :class="[
 | 
			
		||||
        side == 'left' ? 'body-gradient-to-right' : 'body-gradient-to-left',
 | 
			
		||||
      ]"
 | 
			
		||||
    >
 | 
			
		||||
      ]">
 | 
			
		||||
      <slot />
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -55,7 +55,7 @@
 | 
			
		||||
      class="container-head"
 | 
			
		||||
      :class="[side == 'left' ? 'gradient-to-right' : 'gradient-to-left']"
 | 
			
		||||
    >
 | 
			
		||||
      <Icon :icon="icon"></Icon>
 | 
			
		||||
      <Icon  :icon="icon"></Icon>
 | 
			
		||||
      <h2 class="container-title">{{ title }}</h2>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2024-05-07 10:04:53
 | 
			
		||||
 * @LastEditTime: 2024-06-05 09:45:47
 | 
			
		||||
 * @LastEditTime: 2024-07-01 12:27:45
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
@@ -102,12 +102,12 @@ export default {
 | 
			
		||||
  flex: 1;
 | 
			
		||||
  display: flex;
 | 
			
		||||
  flex-direction: column;
 | 
			
		||||
  gap: 16px;
 | 
			
		||||
  gap: 20px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.flex {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  gap: 16px;
 | 
			
		||||
  gap: 20px;
 | 
			
		||||
  flex: 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -23,12 +23,12 @@ export default ({
 | 
			
		||||
    textAlign: "center",
 | 
			
		||||
    textStyle: {
 | 
			
		||||
      fontWeight: 600,
 | 
			
		||||
      fontSize: 26,
 | 
			
		||||
      fontSize: 36,
 | 
			
		||||
      color: "#fffd",
 | 
			
		||||
    },
 | 
			
		||||
    subtext: `\u2002${yesterday + '日良率'}\u2002`,
 | 
			
		||||
    subtextStyle: {
 | 
			
		||||
      fontSize: 14,
 | 
			
		||||
      fontSize: 16,
 | 
			
		||||
      fontWeight: 100,
 | 
			
		||||
      color: "#fffd",
 | 
			
		||||
      align: "right",
 | 
			
		||||
 
 | 
			
		||||
@@ -55,13 +55,35 @@ export default {
 | 
			
		||||
      options: {
 | 
			
		||||
        color: ["#FFD160", "#2760FF", "#12FFF5"],
 | 
			
		||||
        grid: {
 | 
			
		||||
          left: "7%",
 | 
			
		||||
          right: "7%",
 | 
			
		||||
          left: "6%",
 | 
			
		||||
          right: "3%",
 | 
			
		||||
          bottom: "15%",
 | 
			
		||||
          top: "15%",
 | 
			
		||||
        },
 | 
			
		||||
        tooltip: {
 | 
			
		||||
          trigger: "axis",
 | 
			
		||||
          axisPointer: {
 | 
			
		||||
            // type: "cross",
 | 
			
		||||
            crossStyle: {
 | 
			
		||||
              color: "rgba(237,237,237,0.5)",
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
          extraCssText: 'box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.38); border- radius: 4px;opacity: 0.6;backdrop- filter: blur(6px);',
 | 
			
		||||
          backgroundColor: '#001829',
 | 
			
		||||
          borderColor: '#001829',
 | 
			
		||||
          formatter: params => {
 | 
			
		||||
            console.log('params', params)
 | 
			
		||||
            var res = ``;
 | 
			
		||||
            for (var i = 0, l = params.length; i < l; i++) {
 | 
			
		||||
              let color = Object.prototype.toString.call(params[i].color) == "[object String]" ? params[i].color : params[i].color.colorStops ? params[i].color.colorStops[0].color : ''
 | 
			
		||||
              // console.log(item.color, color);
 | 
			
		||||
              res +=
 | 
			
		||||
                `<span style='display:inline-block;margin-right:4px;width:10px;height:10px;background-color:${color}'></span>` +
 | 
			
		||||
              `<span style='display:inline-block;width:150px;color:rgba(255,255,255,0855);font-size:14px;'>${params[0].axisValueLabel}</span>` +
 | 
			
		||||
              `<span style='color:rgba(255,255,255,0.65);font-size:14px;'>${params[i].value + '片'}</span>`;
 | 
			
		||||
            }
 | 
			
		||||
            return res;
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        xAxis: {
 | 
			
		||||
          axisTick: {
 | 
			
		||||
@@ -396,11 +418,11 @@ export default {
 | 
			
		||||
        this.chart.dispose();
 | 
			
		||||
      }
 | 
			
		||||
      this.chart = echarts.init(document.getElementById("factoryEnergyChart"));
 | 
			
		||||
      const actualOptions = JSON.parse(JSON.stringify(this.options));
 | 
			
		||||
      actualOptions.xAxis.data = this.orderXAxis;
 | 
			
		||||
      actualOptions.series[0].data = this.data;
 | 
			
		||||
      this.actualOptions = actualOptions;
 | 
			
		||||
      this.chart.setOption(actualOptions);
 | 
			
		||||
      // const actualOptions = JSON.parse(JSON.stringify(this.options));
 | 
			
		||||
      this.options.xAxis.data = this.orderXAxis;
 | 
			
		||||
      this.options.series[0].data = this.data;
 | 
			
		||||
      // this.actualOptions = actualOptions;
 | 
			
		||||
      this.chart.setOption(this.options);
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2024-05-30 08:58:39
 | 
			
		||||
 * @LastEditTime: 2024-06-07 09:29:45
 | 
			
		||||
 * @LastEditTime: 2024-07-02 10:53:34
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
@@ -62,7 +62,59 @@ export default {
 | 
			
		||||
          top: "15%",
 | 
			
		||||
          containLabel: true,
 | 
			
		||||
        },
 | 
			
		||||
        tooltip: {},
 | 
			
		||||
        // tooltip: {
 | 
			
		||||
        //   trigger: "axis",
 | 
			
		||||
        //   axisPointer: {
 | 
			
		||||
        //     // type: "cross",
 | 
			
		||||
        //     crossStyle: {
 | 
			
		||||
        //       color: "rgba(237,237,237,0.5)",
 | 
			
		||||
        //     },
 | 
			
		||||
        //   },
 | 
			
		||||
        //   extraCssText: 'box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.38); border- radius: 4px;opacity: 0.6;backdrop- filter: blur(6px);',
 | 
			
		||||
        //   backgroundColor: '#001829',
 | 
			
		||||
        //   borderColor: '#001829',
 | 
			
		||||
        //   // textStyle: {
 | 
			
		||||
        //   //   color:'rgba(255, 255, 255, 0.85)'
 | 
			
		||||
        //   // },
 | 
			
		||||
        //   formatter: params => {
 | 
			
		||||
        //     console.log('params', params)
 | 
			
		||||
        //     var res = `<span style='color:rgba(255,255,255,0.85)'>${params[0].axisValueLabel}</span>`;
 | 
			
		||||
        //     for (var i = 0, l = params.length; i < l; i++) {
 | 
			
		||||
        //       res +=
 | 
			
		||||
        //         "<br/>" +
 | 
			
		||||
        //         `<span style='display:inline-block;margin-right:4px;width:10px;height:10px;background-color:${params[i].color}'></span>` +
 | 
			
		||||
        //         `<span style='display:inline-block;width:150px;color:rgba(255,255,255,0.65);font-size:14px;'>${params[i].seriesName}</span>` +
 | 
			
		||||
        //         `<span style='color:rgba(255,255,255,0.65);font-size:14px;'>${params[i].value}</span>`;
 | 
			
		||||
        //     }
 | 
			
		||||
        //     return res;
 | 
			
		||||
        //   },
 | 
			
		||||
        // },
 | 
			
		||||
        tooltip: {
 | 
			
		||||
          trigger: "axis",
 | 
			
		||||
          axisPointer: {
 | 
			
		||||
            // type: "cross",
 | 
			
		||||
            crossStyle: {
 | 
			
		||||
              color: "rgba(237,237,237,0.5)",
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
            extraCssText: 'box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.38); border- radius: 4px;opacity: 0.6;backdrop- filter: blur(6px);',
 | 
			
		||||
            backgroundColor: '#001829',
 | 
			
		||||
          borderColor: '#001829',
 | 
			
		||||
            formatter: params => {
 | 
			
		||||
              console.log('params', params)
 | 
			
		||||
              var res = `<span style='color:rgba(255,255,255,0.85)'>${params[0].axisValueLabel}</span>`;
 | 
			
		||||
              for (var i = 0, l = params.length; i < l; i++) {
 | 
			
		||||
                let color = Object.prototype.toString.call(params[i].color) == "[object String]" ? params[i].color : params[i].color.colorStops ? params[i].color.colorStops[0].color : ''
 | 
			
		||||
                // console.log(item.color, color);
 | 
			
		||||
                res +=
 | 
			
		||||
                  "<br/>" +
 | 
			
		||||
                  `<span style='display:inline-block;margin-right:4px;width:10px;height:10px;background-color:${color}'></span>` +
 | 
			
		||||
                  `<span style='display:inline-block;width:150px;color:rgba(255,255,255,.85);font-size:14px;'>${params[i].seriesName}</span>` +
 | 
			
		||||
                  `<span style='color:rgba(255,255,255,0.65);font-size:14px;'>${params[i].value + '片'}</span>`;
 | 
			
		||||
              }
 | 
			
		||||
              return res;
 | 
			
		||||
            },
 | 
			
		||||
        },
 | 
			
		||||
        xAxis: {
 | 
			
		||||
          axisTick: {
 | 
			
		||||
            show: false,
 | 
			
		||||
@@ -201,12 +253,12 @@ export default {
 | 
			
		||||
    },
 | 
			
		||||
    /** 全屏状态切换时,对柱子粗细和字体大小进行相应调整 */
 | 
			
		||||
    isFullscreen(val) {
 | 
			
		||||
      this.actualOptions.series.map((item) => {
 | 
			
		||||
      this.options.series.map((item) => {
 | 
			
		||||
        item.barWidth = val ? 18 : 12;
 | 
			
		||||
      });
 | 
			
		||||
      this.actualOptions.xAxis.axisLabel.fontSize = val ? 18 : 12;
 | 
			
		||||
      this.actualOptions.yAxis.axisLabel.fontSize = val ? 18 : 12;
 | 
			
		||||
      this.actualOptions.yAxis.nameTextStyle.fontSize = val ? 18 : 12;
 | 
			
		||||
      this.options.xAxis.axisLabel.fontSize = val ? 18 : 12;
 | 
			
		||||
      this.options.yAxis.axisLabel.fontSize = val ? 18 : 12;
 | 
			
		||||
      this.options.yAxis.nameTextStyle.fontSize = val ? 18 : 12;
 | 
			
		||||
      // if (val === false && this.isOpen === true) {
 | 
			
		||||
      //   console.log(val)
 | 
			
		||||
      //   this.width = 97 + '%'
 | 
			
		||||
@@ -221,7 +273,7 @@ export default {
 | 
			
		||||
      // this.actualOptions.xAxis.axisLabel.fontSize = val ? 18 : 12;
 | 
			
		||||
      // this.actualOptions.yAxis.axisLabel.fontSize = val ? 18 : 12;
 | 
			
		||||
      // this.actualOptions.yAxis.nameTextStyle.fontSize = val ? 18 : 12;
 | 
			
		||||
      this.initChart(this.actualOptions)
 | 
			
		||||
      this.initChart(this.options)
 | 
			
		||||
      this.canvasReset()
 | 
			
		||||
    },
 | 
			
		||||
    series(val) {
 | 
			
		||||
@@ -231,16 +283,17 @@ export default {
 | 
			
		||||
      }
 | 
			
		||||
      // console.log('val', val)
 | 
			
		||||
      const actualOptions = JSON.parse(JSON.stringify(this.options))
 | 
			
		||||
      console.log(actualOptions);
 | 
			
		||||
      // actualOptions.xAxis.data = val
 | 
			
		||||
      console.log(actualOptions)
 | 
			
		||||
      actualOptions.series[0].data = val[0].data;
 | 
			
		||||
      actualOptions.series[0].name = val[0].name;
 | 
			
		||||
      actualOptions.series[1].data = val?.[1]?.data;
 | 
			
		||||
      actualOptions.series[1].name = val?.[1]?.name;
 | 
			
		||||
      actualOptions.series[2].data = val?.[2]?.data || [];
 | 
			
		||||
      actualOptions.series[2].name = val?.[2]?.name || "";
 | 
			
		||||
      this.options.series[0].data = val[0].data;
 | 
			
		||||
      this.options.series[0].name = val[0].name;
 | 
			
		||||
      this.options.series[1].data = val?.[1]?.data;
 | 
			
		||||
      this.options.series[1].name = val?.[1]?.name;
 | 
			
		||||
      this.options.series[2].data = val?.[2]?.data || [];
 | 
			
		||||
      this.options.series[2].name = val?.[2]?.name || "";
 | 
			
		||||
      this.actualOptions = actualOptions;
 | 
			
		||||
      this.initChart(actualOptions);
 | 
			
		||||
      this.initChart(this.options);
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
@@ -277,7 +330,7 @@ export default {
 | 
			
		||||
        this.chart.dispose();
 | 
			
		||||
      }
 | 
			
		||||
      this.chart = echarts.init(this.$refs.oeeChart);
 | 
			
		||||
      this.chart.setOption(this.actualOptions);
 | 
			
		||||
      this.chart.setOption(this.options);
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
@@ -289,8 +342,8 @@ export default {
 | 
			
		||||
 | 
			
		||||
  .legend {
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    top: 5.2vh;
 | 
			
		||||
    right: 1vw;
 | 
			
		||||
    top: 3vh;
 | 
			
		||||
    right: 13vw;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .legend-item {
 | 
			
		||||
@@ -347,4 +400,8 @@ export default {
 | 
			
		||||
   transform: translateY(-50%) translateX(50%);
 | 
			
		||||
 }
 | 
			
		||||
}
 | 
			
		||||
 .echarts-tooltip-dark {
 | 
			
		||||
   background: #001829;
 | 
			
		||||
 | 
			
		||||
 }
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
        <span class="title">工单情况</span>
 | 
			
		||||
        <span class="line"></span>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="button-type" style="margin-left: auto;position: absolute;right: 1%;top: 57%;z-index: 999;">
 | 
			
		||||
      <div class="button-type" style="margin-left: auto;position: absolute;right: 3%;top: 57%;z-index: 999;">
 | 
			
		||||
        <CopilotButton v-for="i in ['目标产量', '计划投入', '实际投入', '实际产出', '废品数量', '待再加工']" :key="i" :label="i"
 | 
			
		||||
          :active="i === type" @click="() => $emit('update:type', i)" />
 | 
			
		||||
      </div>
 | 
			
		||||
@@ -188,7 +188,7 @@ export default {
 | 
			
		||||
              height: 1px; // display: inline-block;
 | 
			
		||||
              border: 1px solid;
 | 
			
		||||
              // display: inline-block;
 | 
			
		||||
              border-image: linear-gradient(90deg, rgba(25, 146, 255, 0) 10%, rgba(95, 190, 249, 1), rgba(0, 120, 228, 0) 90%, ) 2 2;
 | 
			
		||||
              border-image: linear-gradient(90deg, rgba(25, 146, 255, 0) 0%, rgba(95, 190, 249, 1), rgba(0, 120, 228, 0) 90%, ) 2 2;
 | 
			
		||||
              backdrop-filter: blur(3px);
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,8 @@
 | 
			
		||||
            <div>
 | 
			
		||||
              <span class="type">良品数量</span>
 | 
			
		||||
              <span class="type-name">{{
 | 
			
		||||
              msgObj.stand.goodNumber ? msgObj.stand.goodNumber.toLocaleString() : 0
 | 
			
		||||
              }}</span>
 | 
			
		||||
                msgObj.stand.goodNumber ? msgObj.stand.goodNumber.toLocaleString() : 0
 | 
			
		||||
                }}</span>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
@@ -38,8 +38,8 @@
 | 
			
		||||
            <div>
 | 
			
		||||
              <span class="type">生产数量</span>
 | 
			
		||||
              <span class="num">{{
 | 
			
		||||
              msgObj.stand.outputNumber ? msgObj.stand.outputNumber.toLocaleString() : 0
 | 
			
		||||
              }}</span>
 | 
			
		||||
                msgObj.stand.outputNumber ? msgObj.stand.outputNumber.toLocaleString() : 0
 | 
			
		||||
                }}</span>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div>
 | 
			
		||||
              <span class="type1">良品率</span>
 | 
			
		||||
@@ -61,8 +61,8 @@
 | 
			
		||||
            <div>
 | 
			
		||||
              <span class="type">良品数量</span>
 | 
			
		||||
              <span class="type-name">{{
 | 
			
		||||
              msgObj.chip.goodNumber ? msgObj.chip.goodNumber.toLocaleString() : 0
 | 
			
		||||
              }}</span>
 | 
			
		||||
                msgObj.chip.goodNumber ? msgObj.chip.goodNumber.toLocaleString() : 0
 | 
			
		||||
                }}</span>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
@@ -71,8 +71,8 @@
 | 
			
		||||
            <div>
 | 
			
		||||
              <span class="type">生产数量</span>
 | 
			
		||||
              <span class="num">{{
 | 
			
		||||
              msgObj.chip.outputNumber ? msgObj.chip.outputNumber.toLocaleString() : 0
 | 
			
		||||
              }}</span>
 | 
			
		||||
                msgObj.chip.outputNumber ? msgObj.chip.outputNumber.toLocaleString() : 0
 | 
			
		||||
                }}</span>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div>
 | 
			
		||||
              <span class="type1">良品率</span>
 | 
			
		||||
@@ -94,8 +94,8 @@
 | 
			
		||||
            <div>
 | 
			
		||||
              <span class="type">良品数量</span>
 | 
			
		||||
              <span class="type-name">{{
 | 
			
		||||
              msgObj.bipv.goodNumber ? msgObj.bipv.goodNumber.toLocaleString() : 0
 | 
			
		||||
              }}</span>
 | 
			
		||||
                msgObj.bipv.goodNumber ? msgObj.bipv.goodNumber.toLocaleString() : 0
 | 
			
		||||
                }}</span>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
@@ -104,8 +104,8 @@
 | 
			
		||||
            <div>
 | 
			
		||||
              <span class="type">生产数量</span>
 | 
			
		||||
              <span class="num">{{
 | 
			
		||||
              msgObj.bipv.outputNumber ? msgObj.bipv.outputNumber.toLocaleString() : 0
 | 
			
		||||
              }}</span>
 | 
			
		||||
                msgObj.bipv.outputNumber ? msgObj.bipv.outputNumber.toLocaleString() : 0
 | 
			
		||||
                }}</span>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div>
 | 
			
		||||
              <span class="type1">良品率</span>
 | 
			
		||||
@@ -118,7 +118,11 @@
 | 
			
		||||
    <div class="chart">
 | 
			
		||||
      <div class="chart-title">
 | 
			
		||||
        <span class="title">生产情况</span>
 | 
			
		||||
        <span class="line"></span>
 | 
			
		||||
        <div class="button-than" style="position: absolute;right: 3%;">
 | 
			
		||||
          <CopilotButton v-for="i in ['同比', '环比']" :key="i" :label="i" :active="i === than"
 | 
			
		||||
            @click="() => $emit('update:than', i)" />
 | 
			
		||||
        </div>
 | 
			
		||||
        <!-- <span class="line"></span> -->
 | 
			
		||||
      </div>
 | 
			
		||||
      <barChartBase :companyId="companyId" :than="than" :period="period" :data="factoryData" ref="barChart"
 | 
			
		||||
        style="height: 0;flex:1">
 | 
			
		||||
@@ -129,10 +133,12 @@
 | 
			
		||||
<script>
 | 
			
		||||
import { number } from 'echarts';
 | 
			
		||||
import barChartBase from './ChipOee'
 | 
			
		||||
import CopilotButton from "./button.vue"
 | 
			
		||||
export default {
 | 
			
		||||
  name: "ProdMonitor",
 | 
			
		||||
  components: {
 | 
			
		||||
    barChartBase,
 | 
			
		||||
    CopilotButton
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
@@ -153,6 +159,9 @@ export default {
 | 
			
		||||
      type: Number,
 | 
			
		||||
      default:0
 | 
			
		||||
    },
 | 
			
		||||
    than: {
 | 
			
		||||
      type: String,
 | 
			
		||||
    },
 | 
			
		||||
    than: {
 | 
			
		||||
      type: String,
 | 
			
		||||
      default: '同比',
 | 
			
		||||
@@ -181,6 +190,13 @@ export default {
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    this.makeData();
 | 
			
		||||
    this.$nextTick(() => {
 | 
			
		||||
      let button = document.getElementsByClassName('button-than')
 | 
			
		||||
      console.log(button);
 | 
			
		||||
      button[0].children[0].style.borderRadius = '4px 0 0 4px'
 | 
			
		||||
      button[0].children[1].style.borderRadius = '0px 4px 4px 0'
 | 
			
		||||
      console.log(button[0].children[0].style);
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    makeData() {
 | 
			
		||||
@@ -237,15 +253,15 @@ export default {
 | 
			
		||||
          font-style: normal;
 | 
			
		||||
          display: inline-block;
 | 
			
		||||
      }
 | 
			
		||||
      .line{
 | 
			
		||||
        flex: 1;
 | 
			
		||||
        // width: 80%;
 | 
			
		||||
        height: 1px;        // display: inline-block;
 | 
			
		||||
        border: 1px solid;
 | 
			
		||||
        // display: inline-block;
 | 
			
		||||
        border-image: linear-gradient(90deg, rgba(25, 146, 255, 0) 10%, rgba(95, 190, 249, 1), rgba(0, 120, 228, 0) 90%,) 2 2;
 | 
			
		||||
        backdrop-filter: blur(3px);
 | 
			
		||||
      }
 | 
			
		||||
      // .line{
 | 
			
		||||
      //   flex: 1;
 | 
			
		||||
      //   // width: 80%;
 | 
			
		||||
      //   height: 1px;        // display: inline-block;
 | 
			
		||||
      //   border: 1px solid;
 | 
			
		||||
      //   // display: inline-block;
 | 
			
		||||
      //   border-image: linear-gradient(90deg, rgba(25, 146, 255, 0) 10%, rgba(95, 190, 249, 1), rgba(0, 120, 228, 0) 90%,) 2 2;
 | 
			
		||||
      //   backdrop-filter: blur(3px);
 | 
			
		||||
      // }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  .data{
 | 
			
		||||
 
 | 
			
		||||
@@ -15,9 +15,7 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="copilot-container">
 | 
			
		||||
    <!-- refresh btn  -->
 | 
			
		||||
    <button
 | 
			
		||||
      v-if="false"
 | 
			
		||||
      style="
 | 
			
		||||
    <button v-if="false" style="
 | 
			
		||||
        appearance: none;
 | 
			
		||||
        outline: none;
 | 
			
		||||
        border: none;
 | 
			
		||||
@@ -27,43 +25,26 @@
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        top: 8px;
 | 
			
		||||
        right: 8px;
 | 
			
		||||
      "
 | 
			
		||||
      @click="$emit('refresh')"
 | 
			
		||||
    >
 | 
			
		||||
      <svg
 | 
			
		||||
        xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
        fill="none"
 | 
			
		||||
        viewBox="0 0 24 24"
 | 
			
		||||
        stroke-width="1.5"
 | 
			
		||||
        stroke="currentColor"
 | 
			
		||||
        style="width: 24px; height: 24px"
 | 
			
		||||
      >
 | 
			
		||||
        <path
 | 
			
		||||
          stroke-linecap="round"
 | 
			
		||||
          stroke-linejoin="round"
 | 
			
		||||
          d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99"
 | 
			
		||||
        />
 | 
			
		||||
      " @click="$emit('refresh')">
 | 
			
		||||
      <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
 | 
			
		||||
        style="width: 24px; height: 24px">
 | 
			
		||||
        <path stroke-linecap="round" stroke-linejoin="round"
 | 
			
		||||
          d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99" />
 | 
			
		||||
      </svg>
 | 
			
		||||
    </button>
 | 
			
		||||
    <!-- decoration  -->
 | 
			
		||||
    <div class="corner tl"></div>
 | 
			
		||||
    <div class="corner tr"></div>
 | 
			
		||||
    <div  class="corner bl"></div>
 | 
			
		||||
    <div  class="corner br"></div>
 | 
			
		||||
    <div class="corner bl"></div>
 | 
			
		||||
    <div class="corner br"></div>
 | 
			
		||||
    <!-- content  -->
 | 
			
		||||
    <div
 | 
			
		||||
      class="container-head"
 | 
			
		||||
      :class="[side == 'left' ? 'gradient-to-right' : 'gradient-to-left']"
 | 
			
		||||
    >
 | 
			
		||||
      <Icon :icon="icon"></Icon>
 | 
			
		||||
    <div class="container-head" :class="[side == 'left' ? 'gradient-to-right' : 'gradient-to-left']">
 | 
			
		||||
      <Icon style="margin-left: 16px;" :icon="icon"></Icon>
 | 
			
		||||
      <h2 class="container-title">{{ title }}</h2>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div
 | 
			
		||||
      class="container-body"
 | 
			
		||||
      :class="[
 | 
			
		||||
    <div class="container-body" :class="[
 | 
			
		||||
        side == 'left' ? 'body-gradient-to-right' : 'body-gradient-to-left',
 | 
			
		||||
      ]"
 | 
			
		||||
    >
 | 
			
		||||
      ]">
 | 
			
		||||
      <slot />
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -33,12 +33,8 @@
 | 
			
		||||
    <!-- content  -->
 | 
			
		||||
    <div class="container-head" ref="container-head"
 | 
			
		||||
      :class="[side == 'left' ? 'gradient-to-right' : 'gradient-to-left']">
 | 
			
		||||
      <Icon :icon="icon"></Icon>
 | 
			
		||||
      <Icon  :icon="icon"></Icon>
 | 
			
		||||
      <h2 class="container-title">{{ title }}</h2>
 | 
			
		||||
      <div class="button-than" style="margin-left: auto;">
 | 
			
		||||
        <CopilotButton v-for="i in ['同比', '环比']" :key="i" :label="i" :active="i === than"
 | 
			
		||||
          @click="() => $emit('update:than', i)" />
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="container-body" :class="[
 | 
			
		||||
      side == 'left' ? 'body-gradient-to-right' : 'body-gradient-to-left',
 | 
			
		||||
@@ -50,12 +46,10 @@
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import ContainerIconVue from "./ContainerIcon.vue"
 | 
			
		||||
import CopilotButton from "./button.vue"
 | 
			
		||||
export default {
 | 
			
		||||
  name: "DashboardContainer",
 | 
			
		||||
  components: {
 | 
			
		||||
    Icon: ContainerIconVue,
 | 
			
		||||
    CopilotButton
 | 
			
		||||
  },
 | 
			
		||||
  props: {
 | 
			
		||||
    side: {
 | 
			
		||||
@@ -66,9 +60,6 @@ export default {
 | 
			
		||||
      type: String,
 | 
			
		||||
      default: "cube",
 | 
			
		||||
    },
 | 
			
		||||
    than: {
 | 
			
		||||
      type: String,
 | 
			
		||||
    },
 | 
			
		||||
    title: {
 | 
			
		||||
      type: String,
 | 
			
		||||
      default: "Default Title",
 | 
			
		||||
@@ -80,13 +71,7 @@ export default {
 | 
			
		||||
  },
 | 
			
		||||
  computed: {},
 | 
			
		||||
  mounted() {
 | 
			
		||||
    this.$nextTick(() => {
 | 
			
		||||
      let button = document.getElementsByClassName('button-than')
 | 
			
		||||
      console.log(button);
 | 
			
		||||
      button[0].children[0].style.borderRadius = '4px 0 0 4px'
 | 
			
		||||
      button[0].children[1].style.borderRadius = '0px 4px 4px 0'
 | 
			
		||||
      console.log(button[0].children[0].style);
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
  },
 | 
			
		||||
  methods: {},
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -4,9 +4,9 @@
 | 
			
		||||
      @update:than="updateThan" @update:period="updatePeriod" />
 | 
			
		||||
    <div class="factory-section">
 | 
			
		||||
      <section class="top flex">
 | 
			
		||||
        <db-container title="生产监控" icon="prod" @update:than="updateThan" :than="than">
 | 
			
		||||
          <prod-monitor :companyId="companyId" :factoryData="factoryData" :than="than" :period="period" :data="data"
 | 
			
		||||
            :prodOutPut="prodOutPut" :prodFto="prodFto" :showBipv="show" />
 | 
			
		||||
        <db-container title="生产监控" icon="prod">
 | 
			
		||||
          <prod-monitor @update:than="updateThan" :companyId="companyId" :factoryData="factoryData" :than="than"
 | 
			
		||||
            :period="period" :data="data" :prodOutPut="prodOutPut" :prodFto="prodFto" :showBipv="show" />
 | 
			
		||||
        </db-container>
 | 
			
		||||
        <left-container title="工单监控" icon="order">
 | 
			
		||||
          <order @update:type="updateType" :type="type" :prodOrder="prodOrder" />
 | 
			
		||||
@@ -134,11 +134,11 @@ export default {
 | 
			
		||||
        if (preData && preData[0] != null) {
 | 
			
		||||
          for (const factory of preData) {
 | 
			
		||||
            if (factory.previousGlassType === 0) {
 | 
			
		||||
              preDataDetail[1] = factory.previousYearOutputNumber
 | 
			
		||||
              preDataDetail[1] = factory.previousOutputNumber
 | 
			
		||||
            } else if (factory.previousGlassType === 1) {
 | 
			
		||||
              preDataDetail[2] = factory.previousYearOutputNumber
 | 
			
		||||
            } else if (factory.previousYearOutputNumber === 2) {
 | 
			
		||||
              currentDataDetail[3] = factory.outputNumber
 | 
			
		||||
              preDataDetail[2] = factory.previousOutputNumber
 | 
			
		||||
            } else if (factory.previousGlassType === 2) {
 | 
			
		||||
              preDataDetail[3] = factory.previousOutputNumber
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -4,9 +4,9 @@
 | 
			
		||||
      @update:period="updatePeriod" />
 | 
			
		||||
    <div class="factory-section">
 | 
			
		||||
      <section class="top flex">
 | 
			
		||||
        <db-container title="生产监控" icon="prod" @update:than="updateThan" :than="than">
 | 
			
		||||
          <prod-monitor :companyId="companyId" :factoryData="factoryData" :than="than" :period="period" :data="data"
 | 
			
		||||
            :prodOutPut="prodOutPut" :prodFto="prodFto" :showBipv="show" />
 | 
			
		||||
        <db-container title="生产监控" icon="prod">
 | 
			
		||||
          <prod-monitor @update:than="updateThan" :than="than" :companyId="companyId" :factoryData="factoryData"
 | 
			
		||||
             :period="period" :data="data" :prodOutPut="prodOutPut" :prodFto="prodFto" :showBipv="show" />
 | 
			
		||||
        </db-container>
 | 
			
		||||
        <left-container title="工单监控" icon="order">
 | 
			
		||||
          <order @update:type="updateType" :type="type" :prodOrder="prodOrder" />
 | 
			
		||||
@@ -132,16 +132,17 @@ export default {
 | 
			
		||||
            // }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        if (preData && preData[0] != null) {
 | 
			
		||||
        if (preData) {
 | 
			
		||||
          for (const factory of preData) {
 | 
			
		||||
            if (factory.previousGlassType === 0) {
 | 
			
		||||
              preDataDetail[1] = factory.previousYearOutputNumber
 | 
			
		||||
              console.log('factory', factory)
 | 
			
		||||
              preDataDetail[1] = factory.previousOutputNumber
 | 
			
		||||
            } else if (factory.previousGlassType === 1) {
 | 
			
		||||
              preDataDetail[2] = factory.previousYearOutputNumber
 | 
			
		||||
              preDataDetail[2] = factory.previousOutputNumber
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        if (targetListResponse && targetListResponse[0] != null) {
 | 
			
		||||
        if (targetListResponse) {
 | 
			
		||||
          for (const factory of targetListResponse) {
 | 
			
		||||
            targetDataDetail[0] = factory.ftoInput
 | 
			
		||||
            // if (factory.previousGlassType === 0) {
 | 
			
		||||
@@ -153,7 +154,7 @@ export default {
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        // console.log('ftoInvest',ftoInvest)
 | 
			
		||||
        if (factoryListResponse && factoryListResponse[0] != null) {
 | 
			
		||||
        if (factoryListResponse) {
 | 
			
		||||
          for (const factory of factoryListResponse) {
 | 
			
		||||
            // targetDataDetail[0] = factory.ftoInput
 | 
			
		||||
            if (factory.glassType === 0) {
 | 
			
		||||
@@ -163,6 +164,7 @@ export default {
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        console.log('  this.factoryData.preDataDetail', preDataDetail);
 | 
			
		||||
        this.factoryData.preDataDetail = preDataDetail
 | 
			
		||||
        this.factoryData.currentDataDetail = currentDataDetail
 | 
			
		||||
        this.factoryData.targetDataDetail = targetDataDetail
 | 
			
		||||
@@ -194,7 +196,7 @@ export default {
 | 
			
		||||
    gap: 16px;
 | 
			
		||||
    .flex {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      gap: 16px;
 | 
			
		||||
      gap: 20px;
 | 
			
		||||
      flex: 1;
 | 
			
		||||
    }
 | 
			
		||||
    .top > div,
 | 
			
		||||
 
 | 
			
		||||
@@ -17,12 +17,12 @@ export default ({
 | 
			
		||||
  tooltip: {},
 | 
			
		||||
  title: {
 | 
			
		||||
    text: titleValue,
 | 
			
		||||
    left: "48%",
 | 
			
		||||
    left: "48.5%",
 | 
			
		||||
    top: "37%",
 | 
			
		||||
    textAlign: "center",
 | 
			
		||||
    textStyle: {
 | 
			
		||||
      fontWeight: 600,
 | 
			
		||||
      fontSize: 20,
 | 
			
		||||
      fontSize: 26,
 | 
			
		||||
      color: "#fffd",
 | 
			
		||||
    },
 | 
			
		||||
    subtext: `\u2002${subtitle}\u2002`,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,10 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2024-04-28 13:42:51
 | 
			
		||||
 * @LastEditTime: 2024-05-31 16:11:06
 | 
			
		||||
 * @LastEditTime: 2024-06-27 16:30:58
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<!--
 | 
			
		||||
    filename: fto.vue
 | 
			
		||||
    author: liubin
 | 
			
		||||
    date: 2024-04-10 08:59:28
 | 
			
		||||
    description:
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<template>
 | 
			
		||||
  <left-chart-base
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@
 | 
			
		||||
        v-for="item in legend"
 | 
			
		||||
        :key="item.label"
 | 
			
		||||
        class="legend-item"
 | 
			
		||||
        :style="{ fontSize: isFullscreen ? '0.58vw' : '0.54vw' }"
 | 
			
		||||
        :style="{ fontSize: isFullscreen ? '0.72vw' : '0.7vw' }"
 | 
			
		||||
        >{{ item.label }}</span
 | 
			
		||||
      >
 | 
			
		||||
    </div>
 | 
			
		||||
@@ -65,7 +65,36 @@ export default {
 | 
			
		||||
          top: "15%",
 | 
			
		||||
          containLabel: true,
 | 
			
		||||
        },
 | 
			
		||||
        tooltip: {},
 | 
			
		||||
        tooltip: {
 | 
			
		||||
          trigger: "axis",
 | 
			
		||||
          axisPointer: {
 | 
			
		||||
            // type: "cross",
 | 
			
		||||
            crossStyle: {
 | 
			
		||||
              color: "rgba(237,237,237,0.5)",
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
          // backgroundColor: '#000000',
 | 
			
		||||
          // textStyle: {
 | 
			
		||||
          //   color: '#ffff'
 | 
			
		||||
          // }
 | 
			
		||||
          formatter: params => {
 | 
			
		||||
            // console.log(params);
 | 
			
		||||
            // 获取xAxis data中的数据
 | 
			
		||||
            let dataStr = `<div><p style="font-weight:bold;margin:0 8px 15px;">${params[0].name}</p></div>`
 | 
			
		||||
            params.forEach(item => {
 | 
			
		||||
              let color = item.color.colorStops ? item.color.colorStops[0].color : ''
 | 
			
		||||
              console.log(item.color, color);
 | 
			
		||||
              dataStr += `<div>
 | 
			
		||||
          <div style="margin: 0 8px;">
 | 
			
		||||
            <span style="display:inline-block;margin-right:5px;width:10px;height:10px;background-color:${item.color.colorStops[0].color};"></span>
 | 
			
		||||
            <span>${item.seriesName}</span>
 | 
			
		||||
            <span style="float:right;color:#000000;margin-left:20px;">${item.data}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>`
 | 
			
		||||
            })
 | 
			
		||||
            return dataStr
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        xAxis: {
 | 
			
		||||
          axisTick: {
 | 
			
		||||
            show: false,
 | 
			
		||||
@@ -77,15 +106,16 @@ export default {
 | 
			
		||||
          },
 | 
			
		||||
          axisLabel: {
 | 
			
		||||
            color: "#fff",
 | 
			
		||||
            fontSize: 12,
 | 
			
		||||
            fontSize: 14,
 | 
			
		||||
          },
 | 
			
		||||
          data: this.xAxis,
 | 
			
		||||
        },
 | 
			
		||||
        yAxis: {
 | 
			
		||||
          name: "单位/片",
 | 
			
		||||
          position:'left',
 | 
			
		||||
          nameTextStyle: {
 | 
			
		||||
            color: "#fff",
 | 
			
		||||
            fontSize: 12,
 | 
			
		||||
            fontSize: 14,
 | 
			
		||||
            align:'right'
 | 
			
		||||
          },
 | 
			
		||||
          axisTick: {
 | 
			
		||||
@@ -93,7 +123,7 @@ export default {
 | 
			
		||||
          },
 | 
			
		||||
          axisLabel: {
 | 
			
		||||
            color: "#fff",
 | 
			
		||||
            fontSize: 12,
 | 
			
		||||
            fontSize: 14,
 | 
			
		||||
          },
 | 
			
		||||
          axisLine: {
 | 
			
		||||
            show: true,
 | 
			
		||||
@@ -118,7 +148,7 @@ export default {
 | 
			
		||||
              position: 'top', //在上方显示
 | 
			
		||||
              textStyle: { //数值样式
 | 
			
		||||
                color: '#DFF1FE',
 | 
			
		||||
                fontSize: 12
 | 
			
		||||
                fontSize: 14
 | 
			
		||||
              }
 | 
			
		||||
            },
 | 
			
		||||
            itemStyle: {
 | 
			
		||||
@@ -162,7 +192,7 @@ export default {
 | 
			
		||||
              position: 'top', //在上方显示
 | 
			
		||||
              textStyle: { //数值样式
 | 
			
		||||
                color: '#DFF1FE',
 | 
			
		||||
                fontSize: 12
 | 
			
		||||
                fontSize: 14
 | 
			
		||||
              }
 | 
			
		||||
            },
 | 
			
		||||
            itemStyle: {
 | 
			
		||||
@@ -201,9 +231,9 @@ export default {
 | 
			
		||||
      this.actualOptions.series.map((item) => {
 | 
			
		||||
        item.barWidth = val ? 18 : 12;
 | 
			
		||||
      });
 | 
			
		||||
      this.actualOptions.xAxis.axisLabel.fontSize = val ? 18 : 12;
 | 
			
		||||
      this.actualOptions.yAxis.axisLabel.fontSize = val ? 18 : 12;
 | 
			
		||||
      this.actualOptions.yAxis.nameTextStyle.fontSize = val ? 18 : 12;
 | 
			
		||||
      this.actualOptions.xAxis.axisLabel.fontSize = val ? 18 : 14;
 | 
			
		||||
      this.actualOptions.yAxis.axisLabel.fontSize = val ? 18 : 14;
 | 
			
		||||
      this.actualOptions.yAxis.nameTextStyle.fontSize = val ? 18 : 14;
 | 
			
		||||
      this.initOptions(this.actualOptions);
 | 
			
		||||
    },
 | 
			
		||||
    series(val) {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2024-04-28 13:42:51
 | 
			
		||||
 * @LastEditTime: 2024-06-21 15:02:27
 | 
			
		||||
 * @LastEditTime: 2024-06-28 09:28:56
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
@@ -19,7 +19,7 @@
 | 
			
		||||
        v-for="item in legend"
 | 
			
		||||
        :key="item.label"
 | 
			
		||||
        class="legend-item"
 | 
			
		||||
        :style="{ fontSize: isFullscreen ? '0.58vw' : '0.54vw' }"
 | 
			
		||||
        :style="{ fontSize: isFullscreen ? '0.72vw' : '0.7vw' }"
 | 
			
		||||
        >{{ item.label }}</span
 | 
			
		||||
      >
 | 
			
		||||
    </div>
 | 
			
		||||
@@ -71,7 +71,31 @@ export default {
 | 
			
		||||
          top: "18%",
 | 
			
		||||
          containLabel: true,
 | 
			
		||||
        },
 | 
			
		||||
        tooltip: {},
 | 
			
		||||
        tooltip: {
 | 
			
		||||
          trigger: "axis",
 | 
			
		||||
          axisPointer: {
 | 
			
		||||
            // type: "cross",
 | 
			
		||||
            crossStyle: {
 | 
			
		||||
              color: "rgba(237,237,237,0.5)",
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
          formatter: params => {
 | 
			
		||||
            // 获取xAxis data中的数据
 | 
			
		||||
            let dataStr = `<div><p style="font-weight:bold;margin:0 8px 15px;">${params[0].name}</p></div>`
 | 
			
		||||
            params.forEach(item => {
 | 
			
		||||
              let color = Object.prototype.toString.call(item.color) == "[object String]" ? item.color : item.color.colorStops ? item.color.colorStops[0].color : ''
 | 
			
		||||
              console.log(item.color, color);
 | 
			
		||||
              dataStr += `<div>
 | 
			
		||||
          <div style="margin: 0 8px;">
 | 
			
		||||
            <span style="display:inline-block;margin-right:5px;width:10px;height:10px;background-color:${color};"></span>
 | 
			
		||||
            <span>${item.seriesName}</span>
 | 
			
		||||
            <span style="float:right;color:#000000;margin-left:20px;">${item.data}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>`
 | 
			
		||||
            })
 | 
			
		||||
            return dataStr
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        xAxis: {
 | 
			
		||||
          axisTick: {
 | 
			
		||||
            show: false,
 | 
			
		||||
@@ -83,15 +107,16 @@ export default {
 | 
			
		||||
          },
 | 
			
		||||
          axisLabel: {
 | 
			
		||||
            color: "#fff",
 | 
			
		||||
            fontSize: 12,
 | 
			
		||||
            fontSize: 14,
 | 
			
		||||
          },
 | 
			
		||||
          data: this.xAxis,
 | 
			
		||||
        },
 | 
			
		||||
        yAxis: {
 | 
			
		||||
          name: "单位/片",
 | 
			
		||||
          position: 'left',
 | 
			
		||||
          nameTextStyle: {
 | 
			
		||||
            color: "#fff",
 | 
			
		||||
            fontSize: 12,
 | 
			
		||||
            fontSize: 14,
 | 
			
		||||
            align: 'right'
 | 
			
		||||
          },
 | 
			
		||||
          axisTick: {
 | 
			
		||||
@@ -99,7 +124,7 @@ export default {
 | 
			
		||||
          },
 | 
			
		||||
          axisLabel: {
 | 
			
		||||
            color: "#fff",
 | 
			
		||||
            fontSize: 12,
 | 
			
		||||
            fontSize: 14,
 | 
			
		||||
          },
 | 
			
		||||
          axisLine: {
 | 
			
		||||
            show: true,
 | 
			
		||||
@@ -227,9 +252,9 @@ export default {
 | 
			
		||||
      this.actualOptions.series.map((item) => {
 | 
			
		||||
        item.barWidth = val ? 18 : 12;
 | 
			
		||||
      });
 | 
			
		||||
      this.actualOptions.xAxis.axisLabel.fontSize = val ? 18 : 12;
 | 
			
		||||
      this.actualOptions.yAxis.axisLabel.fontSize = val ? 18 : 12;
 | 
			
		||||
      this.actualOptions.yAxis.nameTextStyle.fontSize = val ? 18 : 12;
 | 
			
		||||
      this.actualOptions.xAxis.axisLabel.fontSize = val ? 18 : 14;
 | 
			
		||||
      this.actualOptions.yAxis.axisLabel.fontSize = val ? 18 : 14;
 | 
			
		||||
      this.actualOptions.yAxis.nameTextStyle.fontSize = val ? 18 : 14;
 | 
			
		||||
      this.initOptions(this.actualOptions);
 | 
			
		||||
    },
 | 
			
		||||
    series(val) {
 | 
			
		||||
 
 | 
			
		||||
@@ -83,7 +83,7 @@ export default {
 | 
			
		||||
  // backdrop-filter: blur(2px);
 | 
			
		||||
  // border-radius: 4px;
 | 
			
		||||
  transform: translate(-50%, -100%);
 | 
			
		||||
  box-shadow: inset 0 0 12px 2px #fff3;
 | 
			
		||||
  // box-shadow: inset 0 0 12px 2px #fff3;
 | 
			
		||||
  background: url(../../../assets/images/homeindex/info.png) no-repeat 0 0 / 100% 100%;
 | 
			
		||||
    // background: radial-gradient(circle farthest-corner at bottom center,rgba(255,239,162,.7)  10%, #021842 30%);
 | 
			
		||||
  // 在这里设置一个总的字体大小 不失为一个好的选择
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
<!-- 
 | 
			
		||||
<!--
 | 
			
		||||
    filename: Container.vue
 | 
			
		||||
    author: liubin
 | 
			
		||||
    date: 2024-04-09 10:44:09
 | 
			
		||||
    description: 
 | 
			
		||||
    description:
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<template>
 | 
			
		||||
@@ -38,7 +38,7 @@
 | 
			
		||||
      class="container-head"
 | 
			
		||||
      :class="[side == 'left' ? 'gradient-to-right' : 'gradient-to-left']"
 | 
			
		||||
    >
 | 
			
		||||
      <Icon :icon="icon"></Icon>
 | 
			
		||||
      <Icon style="margin-left: 16px;" :icon="icon"></Icon>
 | 
			
		||||
      <h2 class="container-title">{{ title }}</h2>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div
 | 
			
		||||
@@ -105,7 +105,7 @@ export default {
 | 
			
		||||
 | 
			
		||||
  .container-head {
 | 
			
		||||
    // height: 40px;
 | 
			
		||||
    height: 3.8vh;
 | 
			
		||||
    height:4vh;
 | 
			
		||||
    padding: 8px;
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,14 @@
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- 图 -->
 | 
			
		||||
    <div>
 | 
			
		||||
      <div style="display: inline-block; width: 79%; vertical-align: top">
 | 
			
		||||
      <div
 | 
			
		||||
        style="
 | 
			
		||||
          display: inline-block;
 | 
			
		||||
          width: 79%;
 | 
			
		||||
          vertical-align: top;
 | 
			
		||||
          padding-right: 20px;
 | 
			
		||||
        "
 | 
			
		||||
      >
 | 
			
		||||
        <base-chart
 | 
			
		||||
          v-show="this.chartMsg1.series[0].data.length > 0"
 | 
			
		||||
          :chartHeight="chartHeight"
 | 
			
		||||
 
 | 
			
		||||
@@ -71,7 +71,7 @@ export default {
 | 
			
		||||
                "<br/>" +
 | 
			
		||||
                `${
 | 
			
		||||
                  params[i].seriesType === "line"
 | 
			
		||||
                    ? '<img width="10" height="10" style="margin-right:4px;" src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTIuNzIxNjM5NXB4IiBoZWlnaHQ9IjhweCIgdmlld0JveD0iMCAwIDEyLjcyMTYzOTUgOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDx0aXRsZT7nvJbnu4QgNjwvdGl0bGU+CiAgICA8ZyBpZD0iMDTmiqXooajnrqHnkIYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSLmjIfmoIflrozmiJDmg4XlhrUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDUxLjYzOTE4MCwgLTQyNS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9Iue8lue7hC025aSH5Lu9LTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwMjEuNTAwMDAwLCAzNDQuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0i57yW57uELTYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI5LjUwMDAwMCwgNzguMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9oiIgeD0iMCIgeT0iMCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE0Ij48L3JlY3Q+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTcuMTM5MTgwMjYsMyBDOS4wMDMxMDczNywzIDEwLjU2OTI2NzMsNC4yNzQ4OTI3MiAxMS4wMTMyMjU0LDYuMDAwMjQzNDcgTDEyLjM2MDgxOTcsNiBDMTIuOTEzMTA0NSw2IDEzLjM2MDgxOTcsNi40NDc3MTUyNSAxMy4zNjA4MTk3LDcgQzEzLjM2MDgxOTcsNy41NTIyODQ3NSAxMi45MTMxMDQ1LDggMTIuMzYwODE5Nyw4IEwxMS4wMTI5NjY3LDguMDAwNzYxMzQgQzEwLjU2ODY1OTIsOS43MjU2MDIyNCA5LjAwMjc0NTUxLDExIDcuMTM5MTgwMjYsMTEgQzUuMjc1NjE1MDEsMTEgMy43MDk3MDEzMSw5LjcyNTYwMjI0IDMuMjY1MzkzNzgsOC4wMDA3NjEzNCBMMS42MzkxODAyNiw4IEMxLjA4Njg5NTUxLDggMC42MzkxODAyNTgsNy41NTIyODQ3NSAwLjYzOTE4MDI1OCw3IEMwLjYzOTE4MDI1OCw2LjQ0NzcxNTI1IDEuMDg2ODk1NTEsNiAxLjYzOTE4MDI2LDYgTDMuMjY1MTM1MDksNi4wMDAyNDM0NyBDMy43MDkwOTMyLDQuMjc0ODkyNzIgNS4yNzUyNTMxNSwzIDcuMTM5MTgwMjYsMyBaIiBpZD0i5b2i54q257uT5ZCIIiBmaWxsPSIjRkZDRTZBIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" />'
 | 
			
		||||
                    ? '<img width="11" height="11" style="margin-right:4px;" src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTIuNzIxNjM5NXB4IiBoZWlnaHQ9IjhweCIgdmlld0JveD0iMCAwIDEyLjcyMTYzOTUgOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDx0aXRsZT7nvJbnu4QgNjwvdGl0bGU+CiAgICA8ZyBpZD0iMDTmiqXooajnrqHnkIYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSLmjIfmoIflrozmiJDmg4XlhrUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDUxLjYzOTE4MCwgLTQyNS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9Iue8lue7hC025aSH5Lu9LTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwMjEuNTAwMDAwLCAzNDQuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0i57yW57uELTYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI5LjUwMDAwMCwgNzguMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9oiIgeD0iMCIgeT0iMCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE0Ij48L3JlY3Q+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTcuMTM5MTgwMjYsMyBDOS4wMDMxMDczNywzIDEwLjU2OTI2NzMsNC4yNzQ4OTI3MiAxMS4wMTMyMjU0LDYuMDAwMjQzNDcgTDEyLjM2MDgxOTcsNiBDMTIuOTEzMTA0NSw2IDEzLjM2MDgxOTcsNi40NDc3MTUyNSAxMy4zNjA4MTk3LDcgQzEzLjM2MDgxOTcsNy41NTIyODQ3NSAxMi45MTMxMDQ1LDggMTIuMzYwODE5Nyw4IEwxMS4wMTI5NjY3LDguMDAwNzYxMzQgQzEwLjU2ODY1OTIsOS43MjU2MDIyNCA5LjAwMjc0NTUxLDExIDcuMTM5MTgwMjYsMTEgQzUuMjc1NjE1MDEsMTEgMy43MDk3MDEzMSw5LjcyNTYwMjI0IDMuMjY1MzkzNzgsOC4wMDA3NjEzNCBMMS42MzkxODAyNiw4IEMxLjA4Njg5NTUxLDggMC42MzkxODAyNTgsNy41NTIyODQ3NSAwLjYzOTE4MDI1OCw3IEMwLjYzOTE4MDI1OCw2LjQ0NzcxNTI1IDEuMDg2ODk1NTEsNiAxLjYzOTE4MDI2LDYgTDMuMjY1MTM1MDksNi4wMDAyNDM0NyBDMy43MDkwOTMyLDQuMjc0ODkyNzIgNS4yNzUyNTMxNSwzIDcuMTM5MTgwMjYsMyBaIiBpZD0i5b2i54q257uT5ZCIIiBmaWxsPSIjRkZDRTZBIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" />'
 | 
			
		||||
                    : `<span style="display:inline-block;margin-right:4px;border-radius:2px;width:10px;height:10px;background-color:${params[i].color}"></span>`
 | 
			
		||||
                }` +
 | 
			
		||||
                `<span style='display:inline-block;width:180px;color:rgba(0,0,0,0.8);font-size:14px;'>${params[i].seriesName}</span>` +
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2024-06-19 15:28:34
 | 
			
		||||
 * @LastEditTime: 2024-06-27 10:40:57
 | 
			
		||||
 * @LastEditTime: 2024-07-02 08:41:11
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
@@ -56,7 +56,7 @@ export default {
 | 
			
		||||
            for (var i = 0, l = params.length; i < l; i++) {
 | 
			
		||||
              res +=
 | 
			
		||||
                "<br/>" +
 | 
			
		||||
                `<span style='display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:${params[i].color}'></span>` +
 | 
			
		||||
                `<span style='display:inline-block;margin-right:4px;width:10px;height:10px;background-color:${params[i].color}'></span>` +
 | 
			
		||||
                `<span style='display:inline-block;width:150px;color:rgba(0,0,0,0.8);font-size:14px;'>${params[i].seriesName}</span>` +
 | 
			
		||||
              `<span style='color:rgba(0,0,0,0.48);font-size:14px;'>${params[i].seriesName === "综合良率"
 | 
			
		||||
                  ? (params[i].value ? params[i].value.toFixed(2) : 0.0) + "%"
 | 
			
		||||
@@ -229,12 +229,12 @@ export default {
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.legendData {
 | 
			
		||||
  text-align: right;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  // right: 30;
 | 
			
		||||
  // top: 10px;
 | 
			
		||||
  top: -10px;
 | 
			
		||||
  .itemData {
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    margin-right: 10px;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2024-06-20 16:13:36
 | 
			
		||||
 * @LastEditTime: 2024-06-27 09:51:43
 | 
			
		||||
 * @LastEditTime: 2024-07-02 08:40:56
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
@@ -36,7 +36,7 @@ export default {
 | 
			
		||||
        color: [],
 | 
			
		||||
        // color: ["#8EF0AB", "#63BDFF", "#288AFF"],
 | 
			
		||||
        grid: {
 | 
			
		||||
          left: 20,
 | 
			
		||||
          left: 50,
 | 
			
		||||
          right: 0,
 | 
			
		||||
          bottom: 31,
 | 
			
		||||
          top: 30,
 | 
			
		||||
@@ -51,12 +51,12 @@ export default {
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
          formatter: function (params) {
 | 
			
		||||
            console.log('params', params.data)
 | 
			
		||||
            // console.log('params', params.data)
 | 
			
		||||
            var res = `<span style='color:rgba(0,0,0,0.8)'>${params[0].axisValueLabel}</span>`;
 | 
			
		||||
            for (var i = 0, l = params.length; i < l; i++) {
 | 
			
		||||
              res +=
 | 
			
		||||
                "<br/>" +
 | 
			
		||||
                `<span style='display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:${params[i].color}'></span>` +
 | 
			
		||||
                `<span style='display:inline-block;margin-right:4px;width:10px;height:10px;background-color:${params[i].color}'></span>` +
 | 
			
		||||
                `<span style='display:inline-block;width:150px;color:rgba(0,0,0,0.8);font-size:14px;'>${params[i].seriesName}</span>` +
 | 
			
		||||
              `<span style='color:rgba(0,0,0,0.48);font-size:14px;'>${params[i].seriesName === "综合良率"
 | 
			
		||||
                ? (params[i].data.titleValue ? params[i].data.titleValue.toFixed(2) : 0.0) + "%"
 | 
			
		||||
@@ -173,8 +173,12 @@ export default {
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
    // gridLeft(val) {
 | 
			
		||||
    //   console.log(val)
 | 
			
		||||
 | 
			
		||||
    //   if (val === false) {
 | 
			
		||||
    //     this.option.grid.left = 100
 | 
			
		||||
    //   } else {
 | 
			
		||||
    //     this.option.grid.left = -80
 | 
			
		||||
    //   }
 | 
			
		||||
    //   this.canvasReset()
 | 
			
		||||
    // },
 | 
			
		||||
    type() {
 | 
			
		||||
      this.canvasReset();
 | 
			
		||||
@@ -200,11 +204,7 @@ export default {
 | 
			
		||||
    },
 | 
			
		||||
    getMes() {
 | 
			
		||||
      console.log(this.gridLeft)
 | 
			
		||||
      if (this.gridLeft === false) {
 | 
			
		||||
        this.option.grid.left = 20
 | 
			
		||||
      } else {
 | 
			
		||||
        this.option.grid.left = -80
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // console.log('222222', this.chartMsg);
 | 
			
		||||
      if (this.myChart) {
 | 
			
		||||
        this.myChart.dispose();
 | 
			
		||||
@@ -213,23 +213,30 @@ export default {
 | 
			
		||||
      this.myChart = echarts.init(chartDom);
 | 
			
		||||
      this.option.color = this.chartMsg.color;
 | 
			
		||||
      this.option.xAxis.data = this.chartMsg.xData
 | 
			
		||||
      if (this.gridLeft === false) {
 | 
			
		||||
        this.option.grid.left = 50
 | 
			
		||||
      } else {
 | 
			
		||||
        this.option.grid.left = -80
 | 
			
		||||
      }
 | 
			
		||||
      // this.option.yAxis.name = this.chartMsg.yName;
 | 
			
		||||
 | 
			
		||||
      // this.option.yAxis.axisLabel = this.chartMsg.yAxisLabel;
 | 
			
		||||
      this.option.series = this.chartMsg.series;
 | 
			
		||||
      this.option.yAxis = this.chartMsg.yAxis;
 | 
			
		||||
 | 
			
		||||
      console.log(this.option.grid);
 | 
			
		||||
      this.myChart.setOption(this.option);
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
<style lang="scss" >
 | 
			
		||||
 | 
			
		||||
.legendData {
 | 
			
		||||
  text-align: right;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  // right: 30;
 | 
			
		||||
  // top: 10px;
 | 
			
		||||
  top: -10px;
 | 
			
		||||
  .itemData {
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    margin-right: 10px;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2024-06-20 16:13:52
 | 
			
		||||
 * @LastEditTime: 2024-06-27 09:55:02
 | 
			
		||||
 * @LastEditTime: 2024-07-02 08:41:23
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
@@ -56,7 +56,7 @@ export default {
 | 
			
		||||
            for (var i = 0, l = params.length; i < l; i++) {
 | 
			
		||||
              res +=
 | 
			
		||||
                "<br/>" +
 | 
			
		||||
                `<span style='display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:${params[i].color}'></span>` +
 | 
			
		||||
                `<span style='display:inline-block;margin-right:4px;width:10px;height:10px;background-color:${params[i].color}'></span>` +
 | 
			
		||||
                `<span style='display:inline-block;width:150px;color:rgba(0,0,0,0.8);font-size:14px;'>${params[i].seriesName}</span>` +
 | 
			
		||||
              `<span style='color:rgba(0,0,0,0.48);font-size:14px;'>${params[i].seriesName === "综合良率"
 | 
			
		||||
                  ? (params[i].value ? params[i].value.toFixed(2) : 0.0) + "%"
 | 
			
		||||
@@ -208,12 +208,14 @@ export default {
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
 | 
			
		||||
.legendData {
 | 
			
		||||
  text-align: right;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  // right: 30;
 | 
			
		||||
  // top: 10px;
 | 
			
		||||
  top: -10px;
 | 
			
		||||
  // top: -10px;
 | 
			
		||||
  .itemData {
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    margin-right: 10px;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2024-06-21 09:05:14
 | 
			
		||||
 * @LastEditTime: 2024-06-27 10:59:40
 | 
			
		||||
 * @LastEditTime: 2024-07-02 08:33:22
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
@@ -55,34 +55,32 @@ export default {
 | 
			
		||||
            let arr = []
 | 
			
		||||
            var res = ``;
 | 
			
		||||
            // for (var i = 0, l = params.length; i < l; i++) {
 | 
			
		||||
            console.log()
 | 
			
		||||
            if (params[0].axisValue === 'FTO投入' || params[0].axisValue === '芯片产量' || params[0].axisValue === '标准组件产量') {
 | 
			
		||||
            // console.log()
 | 
			
		||||
            if (params[0].axisValue === 'FTO投入' || params[0].axisValue === '芯片产量' || params[0].axisValue === '标准组件产量' || params[0].axisValue === '芯片总功率' || params[0].axisValue === '标准组件总功率') {
 | 
			
		||||
              res +=
 | 
			
		||||
                "<br/>" +
 | 
			
		||||
                `<span style='display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:${params[0].color}'></span>` +
 | 
			
		||||
                `<span style='display:inline-block;margin-right:4px;width:10px;height:10px;background-color:${params[0].color}'></span>` +
 | 
			
		||||
              `<span style='display:inline-block;width:150px;color:rgba(0,0,0,0.8);font-size:14px;'>${params[0].axisValueLabel}</span>` +
 | 
			
		||||
              `<span style='color:rgba(0,0,0,0.48);font-size:14px;'>${params[0].name === "综合良率"
 | 
			
		||||
                  ? (params[0].value ? params[0].value.toFixed(2) : 0.0) + "%"
 | 
			
		||||
                : params[0].name === "转化效率"
 | 
			
		||||
                    ? (params[0].value ? params[0].value.toFixed(2) : 0.0) + "%"
 | 
			
		||||
                  : params[i].seriesName.search('总功率') != -1
 | 
			
		||||
                    ? (params[i].value ? params[i].value : 0) + "MW"
 | 
			
		||||
                    : (params[i].value ? params[i].value : 0) + "片"
 | 
			
		||||
                  : params[0].seriesName.search('总功率') != -1
 | 
			
		||||
                    ? (params[0].value ? params[0].value : 0) + "MW"
 | 
			
		||||
                    : (params[0].value ? params[0].value : 0) + "片"
 | 
			
		||||
                }</span>`;
 | 
			
		||||
              // }
 | 
			
		||||
            }
 | 
			
		||||
            if (params[1].axisValue === '综合良率' || params[1].axisValue === '转化效率') {
 | 
			
		||||
              res +=
 | 
			
		||||
                "<br/>" +
 | 
			
		||||
                `<span style='display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:${params[1].color}'></span>` +
 | 
			
		||||
                `<span style='display:inline-block;margin-right:4px;width:10px;height:10px;background-color:${params[1].color}'></span>` +
 | 
			
		||||
              `<span style='display:inline-block;width:150px;color:rgba(0,0,0,0.8);font-size:14px;'>${params[1].axisValueLabel}</span>` +
 | 
			
		||||
              `<span style='color:rgba(0,0,0,0.48);font-size:14px;'>${params[1].name === "综合良率"
 | 
			
		||||
                ? (params[1].value ? params[1].value.toFixed(2) : 0.0) + "%"
 | 
			
		||||
                : params[1].name === "转化效率"
 | 
			
		||||
                  ? (params[1].value ? params[1].value.toFixed(2) : 0.0) + "%"
 | 
			
		||||
                  : params[i].seriesName.search('总功率') != -1
 | 
			
		||||
                    ? (params[i].value ? params[i].value : 0) + "MW"
 | 
			
		||||
                    : (params[i].value ? params[i].value : 0) + "片"
 | 
			
		||||
                  : params[1].seriesName.search('总功率') != -1
 | 
			
		||||
                    ? (params[1].value ? params[1].value : 0) + "MW"
 | 
			
		||||
                    : (params[1].value ? params[1].value : 0) + "片"
 | 
			
		||||
                }</span>`;
 | 
			
		||||
            }
 | 
			
		||||
            return res;
 | 
			
		||||
@@ -225,10 +223,11 @@ export default {
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.legendData {
 | 
			
		||||
  text-align: right;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  top: -10px;
 | 
			
		||||
  // right: 30;
 | 
			
		||||
  // top: 10px;
 | 
			
		||||
  .itemData {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2024-04-15 10:49:13
 | 
			
		||||
 * @LastEditTime: 2024-06-25 08:39:48
 | 
			
		||||
 * @LastEditTime: 2024-07-01 14:43:42
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
    <div class="app-container" style="margin-top: 8px;flex-grow: 1; height: auto;">
 | 
			
		||||
      <el-form :model="listQuery" :inline="true" ref="dataForm" class="blueTip">
 | 
			
		||||
        <el-form-item label="时间维度" prop="type">
 | 
			
		||||
          <el-select size="small" clearable v-model="listQuery.type" placeholder="请选择">
 | 
			
		||||
          <el-select size="small" clearable v-model="listQuery.type" placeholder="请选择" @change="handleChange">
 | 
			
		||||
            <el-option v-for="item in timeList" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
            </el-option>
 | 
			
		||||
          </el-select>
 | 
			
		||||
@@ -207,6 +207,13 @@ export default {
 | 
			
		||||
    this.getDataList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    handleChange() {
 | 
			
		||||
      this.listQuery.reportTime = []
 | 
			
		||||
      this.listQuery.end = null
 | 
			
		||||
      this.listQuery.start = null
 | 
			
		||||
      this.listQuery.startDate = null
 | 
			
		||||
      this.listQuery.endDate = null
 | 
			
		||||
    },
 | 
			
		||||
    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
 | 
			
		||||
      let spanOneArr = [], concatOne = 0;
 | 
			
		||||
      // let spanTwoArr = [], concatTwo = 0;
 | 
			
		||||
@@ -319,6 +326,10 @@ export default {
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    async getDataList() {
 | 
			
		||||
      console.log(this.listQuery.type);
 | 
			
		||||
      if (this.listQuery.type == null) {
 | 
			
		||||
        return this.$message('请选择时间维度')
 | 
			
		||||
      }
 | 
			
		||||
      if (!this.listQuery.startDate && !this.listQuery.endDate) {
 | 
			
		||||
        return this.$message('请选择起止时间')
 | 
			
		||||
      }
 | 
			
		||||
@@ -463,30 +474,32 @@ export default {
 | 
			
		||||
          // dataArr[0].factory = item.factory === 1 ? '邯郸' : '瑞昌'
 | 
			
		||||
          // dataArr[1].factory = item.factory === 1 ? '邯郸' : '瑞昌'
 | 
			
		||||
          // dataArr[2].factory = item.factory === 1 ? '邯郸' : '瑞昌'
 | 
			
		||||
          // dataArr[3].factory = item.factory === 1 ? '邯郸' : '瑞昌'
 | 
			
		||||
          dataArr[1]['' + m + ''] = item.chipYield
 | 
			
		||||
          dataArr[2]['' + m + ''] = item.chipAveragePower
 | 
			
		||||
          dataArr[4]['' + m + ''] = item.chipTotalPower
 | 
			
		||||
          dataArr[5]['' + m + ''] = item.chipCssMarriageRate
 | 
			
		||||
          dataArr[6]['' + m + ''] = item.chipOee
 | 
			
		||||
          dataArr[7]['' + m + ''] = item.chipCapacityUtilizationRate
 | 
			
		||||
          dataArr[8]['' + m + ''] = item.chipAnnualAverageProduction
 | 
			
		||||
          dataArr[9]['' + m + ''] = item.chipBom
 | 
			
		||||
          dataArr[10]['' + m + ''] = item.componentYield
 | 
			
		||||
          dataArr[11]['' + m + ''] = item.componentAveragePower
 | 
			
		||||
          dataArr[12]['' + m + ''] = item.componentYieldRate
 | 
			
		||||
          dataArr[13]['' + m + ''] = item.componentTotalPower
 | 
			
		||||
          dataArr[14]['' + m + ''] = item.componentOee
 | 
			
		||||
          dataArr[15]['' + m + ''] = item.componentCapacityUtilizationRate
 | 
			
		||||
          dataArr[16]['' + m + ''] = item.componentAnnualAverageProduction
 | 
			
		||||
          dataArr[17]['' + m + ''] = item.componentBom
 | 
			
		||||
          dataArr[18]['' + m + ''] = item.bipvChipUsage
 | 
			
		||||
          dataArr[19]['' + m + ''] = item.bipvProductOutput
 | 
			
		||||
          dataArr[20]['' + m + ''] = item.bipvChipUtilizationRate
 | 
			
		||||
          dataArr[21]['' + m + ''] = item.bipvAnnualAverageProduction
 | 
			
		||||
          dataArr[22]['' + m + ''] = item.bipvOeeMaterialCost
 | 
			
		||||
          dataArr[23]['' + m + ''] = item.bipvInsideMaterialCost
 | 
			
		||||
          dataArr[24]['' + m + ''] = item.bipvComprehensiveMaterialCost
 | 
			
		||||
        // dataArr[3].factory = item.factory === 1 ? '邯郸' : '瑞昌'
 | 
			
		||||
          dataArr[1]['' + m + ''] = item.chipInput
 | 
			
		||||
          dataArr[2]['' + m + ''] = item.chipYield
 | 
			
		||||
          dataArr[3]['' + m + ''] = item.chipYieldRate
 | 
			
		||||
          dataArr[4]['' + m + ''] = item.chipAveragePower
 | 
			
		||||
          dataArr[5]['' + m + ''] = item.chipTotalPower
 | 
			
		||||
          dataArr[6]['' + m + ''] = item.chipCssMarriageRate
 | 
			
		||||
          dataArr[7]['' + m + ''] = item.chipOee
 | 
			
		||||
          dataArr[8]['' + m + ''] = item.chipCapacityUtilizationRate
 | 
			
		||||
          dataArr[9]['' + m + ''] = item.chipAnnualAverageProduction
 | 
			
		||||
          dataArr[10]['' + m + ''] = item.chipBom
 | 
			
		||||
          dataArr[11]['' + m + ''] = item.componentYield
 | 
			
		||||
          dataArr[12]['' + m + ''] = item.componentAveragePower
 | 
			
		||||
          dataArr[13]['' + m + ''] = item.componentYieldRate
 | 
			
		||||
          dataArr[14]['' + m + ''] = item.componentTotalPower
 | 
			
		||||
          dataArr[15]['' + m + ''] = item.componentOee
 | 
			
		||||
          dataArr[16]['' + m + ''] = item.componentCapacityUtilizationRate
 | 
			
		||||
          dataArr[17]['' + m + ''] = item.componentAnnualAverageProduction
 | 
			
		||||
          dataArr[18]['' + m + ''] = item.componentBom
 | 
			
		||||
          dataArr[19]['' + m + ''] = item.bipvChipUsage
 | 
			
		||||
          dataArr[20]['' + m + ''] = item.bipvProductOutput
 | 
			
		||||
          dataArr[21]['' + m + ''] = item.bipvChipUtilizationRate
 | 
			
		||||
          dataArr[22]['' + m + ''] = item.bipvAnnualAverageProduction
 | 
			
		||||
          dataArr[23]['' + m + ''] = item.bipvOeeMaterialCost
 | 
			
		||||
          dataArr[24]['' + m + ''] = item.bipvInsideMaterialCost
 | 
			
		||||
          dataArr[25]['' + m + ''] = item.bipvComprehensiveMaterialCost
 | 
			
		||||
 | 
			
		||||
        // })
 | 
			
		||||
        // ele.titleValue
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <div class="search">
 | 
			
		||||
      <el-form :model="listQuery" :inline="true" ref="dataForm" class="blueTip">
 | 
			
		||||
        <el-form-item label="时间维度" prop="date">
 | 
			
		||||
          <el-select size="small" clearable v-model="listQuery.date" placeholder="请选择">
 | 
			
		||||
          <el-select size="small" clearable v-model="listQuery.date" placeholder="请选择" @change="handleChange">
 | 
			
		||||
            <el-option v-for="item in timeList" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
            </el-option>
 | 
			
		||||
          </el-select>
 | 
			
		||||
@@ -247,7 +247,7 @@ export default {
 | 
			
		||||
        yAxis: [
 | 
			
		||||
          {
 | 
			
		||||
            type: "value",
 | 
			
		||||
            name: "单位/片",
 | 
			
		||||
            name: "单位/MW",
 | 
			
		||||
            // min: function (value) {//取最小值向下取整为最小刻度
 | 
			
		||||
            //   return 0
 | 
			
		||||
            // },
 | 
			
		||||
@@ -290,7 +290,7 @@ export default {
 | 
			
		||||
            barWidth: 20,
 | 
			
		||||
            label: {
 | 
			
		||||
              show: true,
 | 
			
		||||
              position: [-50, -16],
 | 
			
		||||
              position: [-20, -16],
 | 
			
		||||
              color: "#68C483",
 | 
			
		||||
              formatter: function (params) {
 | 
			
		||||
                return params.value.toFixed(2)
 | 
			
		||||
@@ -402,6 +402,13 @@ export default {
 | 
			
		||||
    this.getDataList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    handleChange(val) {
 | 
			
		||||
      this.listQuery.reportTime = []
 | 
			
		||||
      this.listQuery.end = null
 | 
			
		||||
      this.listQuery.start = null
 | 
			
		||||
      this.listQuery.endTime = null
 | 
			
		||||
      this.listQuery.beginTime = null
 | 
			
		||||
    },
 | 
			
		||||
    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
 | 
			
		||||
      let spanOneArr = [], concatOne = 0;
 | 
			
		||||
      // let spanTwoArr = [], concatTwo = 0;
 | 
			
		||||
@@ -522,6 +529,9 @@ export default {
 | 
			
		||||
      this.chartMsgYearTarget.series[0].data = []
 | 
			
		||||
      this.chartMsgYearTarget.series[1].data = []
 | 
			
		||||
      this.title = ''
 | 
			
		||||
      if (this.listQuery.date == null) {
 | 
			
		||||
        return this.$message('请选择时间维度')
 | 
			
		||||
      }
 | 
			
		||||
      if (!this.listQuery.beginTime && !this.listQuery.endTime) {
 | 
			
		||||
        return this.$message('请选择起止时间')
 | 
			
		||||
      }
 | 
			
		||||
@@ -551,7 +561,7 @@ export default {
 | 
			
		||||
      }
 | 
			
		||||
      ]
 | 
			
		||||
      res.data.forEach(element => {
 | 
			
		||||
        element.list.reverse().forEach((ele, index) => {
 | 
			
		||||
        element.list.forEach((ele, index) => {
 | 
			
		||||
          let i = index + 1
 | 
			
		||||
          this.chartMsg.xData.push(ele.reportTimep)
 | 
			
		||||
          this.otherProps.push({
 | 
			
		||||
@@ -561,26 +571,26 @@ export default {
 | 
			
		||||
        })
 | 
			
		||||
      })
 | 
			
		||||
      if (res.data[0].list.length != 0) {
 | 
			
		||||
        this.chartMsg.xData.push(res.data[0].list[0].reportTimep + '目标')
 | 
			
		||||
        this.chartMsg.xData.push(res.data[0].list[res.data[0].list.length - 1].reportTimep.slice(0, res.data[0].list[res.data[0].list.length - 1].reportTimep.length - 3) + '目标值')
 | 
			
		||||
        if (this.listQuery.date === 0 || this.listQuery.date === 1 || this.listQuery.date === 2) {
 | 
			
		||||
          this.otherProps.push({
 | 
			
		||||
            label: res.data[0].list[0].reportTimep + '目标',
 | 
			
		||||
            label: res.data[0].list[res.data[0].list.length - 1].reportTimep.slice(0, res.data[0].list[res.data[0].list.length - 1].reportTimep.length-3) + '目标值',
 | 
			
		||||
            prop: 'dayData'
 | 
			
		||||
          })
 | 
			
		||||
          dataArr[0]['dayData'] = res.data[0].list[0].chipTarget
 | 
			
		||||
          dataArr[1]['dayData'] = res.data[0].list[0].standTarget
 | 
			
		||||
          dataArr[2]['dayData'] = res.data[0].list[0].conversionEfficiencyTarget
 | 
			
		||||
          dataArr[0]['dayData'] = res.data[0].list[res.data[0].list.length - 1].chipTarget
 | 
			
		||||
          dataArr[1]['dayData'] = res.data[0].list[res.data[0].list.length - 1].standTarget
 | 
			
		||||
          dataArr[2]['dayData'] = res.data[0].list[res.data[0].list.length - 1].conversionEfficiencyTarget
 | 
			
		||||
        }
 | 
			
		||||
        if (this.listQuery.date === 2 || this.listQuery.date === 3) {
 | 
			
		||||
          this.otherProps.push({
 | 
			
		||||
            label: res.data[0].yearTarget.targetTime,
 | 
			
		||||
            label: res.data[0].yearTarget.targetTime + '年目标值',
 | 
			
		||||
            prop: 'yearData'
 | 
			
		||||
          })
 | 
			
		||||
          dataArr[0]['yearData'] = res.data[0].yearTarget.chipTotalPower
 | 
			
		||||
          dataArr[1]['yearData'] = res.data[0].yearTarget.componentTotalPower
 | 
			
		||||
          dataArr[2]['yearData'] = res.data[0].yearTarget.componentConversionEfficiency
 | 
			
		||||
        }
 | 
			
		||||
        res.data.forEach((ele, index) => {
 | 
			
		||||
        res.data.reverse().forEach((ele, index) => {
 | 
			
		||||
          // let i = index + 1
 | 
			
		||||
          // let m = 'value' + i
 | 
			
		||||
          ele.list.forEach((item, index) => {
 | 
			
		||||
@@ -600,7 +610,7 @@ export default {
 | 
			
		||||
            // })
 | 
			
		||||
          })
 | 
			
		||||
        })
 | 
			
		||||
        this.title = res.data[0].yearTarget.targetTime ? res.data[0].yearTarget.targetTime + '目标值' : ''
 | 
			
		||||
        this.title = res.data[0].yearTarget.targetTime ? res.data[0].yearTarget.targetTime + '年目标值' : ''
 | 
			
		||||
        this.chartMsgYearTarget.series[0].data = [
 | 
			
		||||
          {
 | 
			
		||||
            value: res.data[0].yearTarget.chipTotalPower,
 | 
			
		||||
@@ -667,6 +677,18 @@ export default {
 | 
			
		||||
            })
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        this.chartMsg.series[0].data.push({
 | 
			
		||||
          name: '芯片总功率',
 | 
			
		||||
          value: dataArr[0]['dayData'] === 0 ? null : dataArr[0]['dayData']
 | 
			
		||||
        })
 | 
			
		||||
        this.chartMsg.series[1].data.push({
 | 
			
		||||
          name: '标准组件总功率',
 | 
			
		||||
          value: dataArr[1]['dayData'] === 0 ? null : dataArr[1]['dayData']
 | 
			
		||||
        })
 | 
			
		||||
        this.chartMsg.series[2].data.push({
 | 
			
		||||
          name: '转化效率',
 | 
			
		||||
          value: dataArr[2]['dayData'] === 0 ? null : dataArr[2]['dayData']
 | 
			
		||||
        })
 | 
			
		||||
      } else {
 | 
			
		||||
        this.chartMsgYearTarget.series[0].data = []
 | 
			
		||||
        this.chartMsgYearTarget.series[1].data = []
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <div class="search">
 | 
			
		||||
      <el-form :model="listQuery" :inline="true" ref="dataForm" class="blueTip">
 | 
			
		||||
        <el-form-item label="时间维度" prop="type">
 | 
			
		||||
          <el-select size="small" clearable v-model="listQuery.type" placeholder="请选择">
 | 
			
		||||
          <el-select size="small" clearable v-model="listQuery.type" placeholder="请选择" @change="handleChange">
 | 
			
		||||
            <el-option v-for="item in timeList" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
            </el-option>
 | 
			
		||||
          </el-select>
 | 
			
		||||
@@ -226,6 +226,7 @@ export default {
 | 
			
		||||
          show: true,
 | 
			
		||||
          type: "value",
 | 
			
		||||
          name: "单位/MW",
 | 
			
		||||
          position:'left',
 | 
			
		||||
          // splitNumber: 4,
 | 
			
		||||
          nameTextStyle: {
 | 
			
		||||
            fontSize: 12,
 | 
			
		||||
@@ -240,10 +241,11 @@ export default {
 | 
			
		||||
      chartMsg: {
 | 
			
		||||
        color: ["#8EF0AB", "#288AFF"],
 | 
			
		||||
        xData: [],
 | 
			
		||||
        yName: "单位/MW",
 | 
			
		||||
        // yName: "单位/MW",
 | 
			
		||||
        yAxis:{
 | 
			
		||||
          type: "value",
 | 
			
		||||
          name: "单位/MW",
 | 
			
		||||
 | 
			
		||||
          // splitNumber: 4,
 | 
			
		||||
          nameTextStyle: {
 | 
			
		||||
            fontSize: 12,
 | 
			
		||||
@@ -369,6 +371,13 @@ export default {
 | 
			
		||||
    this.getDataList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    handleChange() {
 | 
			
		||||
      this.listQuery.reportTime = []
 | 
			
		||||
      this.listQuery.end = null
 | 
			
		||||
      this.listQuery.start = null
 | 
			
		||||
      this.listQuery.startDate = null
 | 
			
		||||
      this.listQuery.endDate = null
 | 
			
		||||
    },
 | 
			
		||||
    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
 | 
			
		||||
      let spanOneArr = [], concatOne = 0;
 | 
			
		||||
      // let spanTwoArr = [], concatTwo = 0;
 | 
			
		||||
@@ -491,6 +500,9 @@ export default {
 | 
			
		||||
      this.chartMsgYearTarget.series[0].data = []
 | 
			
		||||
      this.chartMsgYearTarget.series[1].data = []
 | 
			
		||||
      console.log(this.listQuery);
 | 
			
		||||
      if (this.listQuery.type == null) {
 | 
			
		||||
        return this.$message('请选择时间维度')
 | 
			
		||||
      }
 | 
			
		||||
      if (!this.listQuery.startDate && !this.listQuery.endDate) {
 | 
			
		||||
        return this.$message('请选择起止时间')
 | 
			
		||||
      }
 | 
			
		||||
@@ -511,7 +523,7 @@ export default {
 | 
			
		||||
        let i = index + 1
 | 
			
		||||
        let m = 'value' + i
 | 
			
		||||
        ele.productionSituationPowerDataVOList.forEach((item) => {
 | 
			
		||||
          maxData.push(item.chipTotalPower, item.componentTotalPower)
 | 
			
		||||
          // maxData.push(item.chipTotalPower, item.componentTotalPower)
 | 
			
		||||
          this.dataArr[0]['' + m + ''] = item.chipTotalPower
 | 
			
		||||
          // this.dataArr[3].factory = item.factory == 1 ? '邯郸' : '瑞昌'
 | 
			
		||||
          this.dataArr[1]['' + m + ''] = item.componentTotalPower
 | 
			
		||||
@@ -523,10 +535,23 @@ export default {
 | 
			
		||||
        //   props: 'value' + index + 1,
 | 
			
		||||
        // })
 | 
			
		||||
      })
 | 
			
		||||
      this.chartMsg.yAxis.max = Math.ceil(Math.max(...maxData) / 100) * 100
 | 
			
		||||
      this.chartMsgTarget.yAxis.max = Math.ceil(Math.max(...maxData) / 100) * 100
 | 
			
		||||
      this.chartMsg.yAxis.min = Math.ceil(Math.min(...maxData) / 100) * 100
 | 
			
		||||
      this.chartMsgTarget.yAxis.min = Math.ceil(Math.min(...maxData) / 100) * 100
 | 
			
		||||
      if (this.listQuery.type === 2) {
 | 
			
		||||
        res.data.list.slice(0, res.data.list.length - 1).forEach((ele, index) => {
 | 
			
		||||
          ele.productionSituationPowerDataVOList.forEach((item) => {
 | 
			
		||||
            maxData.push(item.chipTotalPower, item.componentTotalPower)
 | 
			
		||||
          })
 | 
			
		||||
        })
 | 
			
		||||
      } else {
 | 
			
		||||
        res.data.list.forEach((ele, index) => {
 | 
			
		||||
          ele.productionSituationPowerDataVOList.forEach((item) => {
 | 
			
		||||
            maxData.push(item.chipTotalPower, item.componentTotalPower)
 | 
			
		||||
          })
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
      this.chartMsg.yAxis.max = Math.ceil(Math.max(...maxData))
 | 
			
		||||
      this.chartMsgTarget.yAxis.max = Math.ceil(Math.max(...maxData))
 | 
			
		||||
      this.chartMsg.yAxis.min = Math.ceil(Math.min(...maxData) )
 | 
			
		||||
      this.chartMsgTarget.yAxis.min = Math.ceil(Math.min(...maxData))
 | 
			
		||||
      this.chartMsg.yAxis.interval = (this.chartMsg.yAxis.max - this.chartMsg.yAxis.min) / 4
 | 
			
		||||
      this.chartMsgTarget.yAxis.interval = (this.chartMsgTarget.yAxis.max - this.chartMsgTarget.yAxis.min) / 4
 | 
			
		||||
      if (this.listQuery.type === 2) {
 | 
			
		||||
@@ -550,7 +575,7 @@ export default {
 | 
			
		||||
            })
 | 
			
		||||
          })
 | 
			
		||||
        })
 | 
			
		||||
        this.chartMsgTarget.xData.push(res.data.list[res.data.list.length - 2].titleValue)
 | 
			
		||||
        this.chartMsgTarget.xData.push(res.data.list[res.data.list.length - 2].titleValue.slice(0, res.data.list[res.data.list.length - 2].titleValue.length - 3))
 | 
			
		||||
        // this.chartMsgTarget.series = [{
 | 
			
		||||
        //   name: "FTO投入",
 | 
			
		||||
        //   data: [
 | 
			
		||||
@@ -718,7 +743,7 @@ export default {
 | 
			
		||||
            })
 | 
			
		||||
          })
 | 
			
		||||
        })
 | 
			
		||||
        this.chartMsgTarget.xData.push(res.data.list[res.data.list.length - 1].titleValue)
 | 
			
		||||
        this.chartMsgTarget.xData.push(res.data.list[res.data.list.length - 1].titleValue.slice(0, res.data.list[res.data.list.length - 1].titleValue.length - 3))
 | 
			
		||||
        // this.chartMsgTarget.series = [{
 | 
			
		||||
        //   name: "FTO投入",
 | 
			
		||||
        //   data: [
 | 
			
		||||
 
 | 
			
		||||
@@ -448,7 +448,7 @@ export default {
 | 
			
		||||
      this.tableData = val
 | 
			
		||||
    },
 | 
			
		||||
    currentMenu(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      // console.log(val)
 | 
			
		||||
      if (val === '瑞昌') {
 | 
			
		||||
        this.legendList = [
 | 
			
		||||
          { id: 1, name: "FTO投入", type: 1, color: "#8EF0AB" },
 | 
			
		||||
@@ -456,7 +456,7 @@ export default {
 | 
			
		||||
          { id: 3, name: "标准组件产量", type: 1, color: "#64BDFF" },
 | 
			
		||||
        ]
 | 
			
		||||
      } else {
 | 
			
		||||
        [
 | 
			
		||||
        this.legendList = [
 | 
			
		||||
          { id: 1, name: "FTO投入", type: 1, color: "#8EF0AB" },
 | 
			
		||||
          { id: 2, name: "芯片产量", type: 1, color: "#288AFF" },
 | 
			
		||||
          { id: 3, name: "标准组件产量", type: 1, color: "#64BDFF" },
 | 
			
		||||
@@ -499,6 +499,8 @@ export default {
 | 
			
		||||
      this.listQuery.reportTime = []
 | 
			
		||||
      this.listQuery.end = null
 | 
			
		||||
      this.listQuery.start = null
 | 
			
		||||
      this.listQuery.startDate = null
 | 
			
		||||
      this.listQuery.endDate = null
 | 
			
		||||
    },
 | 
			
		||||
    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
 | 
			
		||||
      let spanOneArr = [], concatOne = 0;
 | 
			
		||||
@@ -552,12 +554,12 @@ export default {
 | 
			
		||||
    onValueChange(picker, k) { // 选中近k周后触发的操作
 | 
			
		||||
      // console.log(this.listQuery.reportTime[0], this.listQuery.reportTime[1])
 | 
			
		||||
      if (this.listQuery.start && this.listQuery.end) {
 | 
			
		||||
        console.log(this.listQuery.reportTime)
 | 
			
		||||
        // console.log(this.listQuery.reportTime)
 | 
			
		||||
        this.date1 = moment(this.listQuery.start.getTime() - 24 * 60 * 60 * 1000).format('YYYY-MM-DD HH:mm:ss')
 | 
			
		||||
        this.date2 = moment(this.listQuery.end.getTime() + 5 * 24 * 60 * 60 * 1000).format('YYYY-MM-DD HH:mm:ss')
 | 
			
		||||
        const numDays = (new Date(this.date2).getTime() - new Date(this.date1).getTime()) / (24 * 3600 * 1000);
 | 
			
		||||
        if (numDays > 168) {
 | 
			
		||||
          console.log(numDays)
 | 
			
		||||
          // console.log(numDays)
 | 
			
		||||
          this.$message({
 | 
			
		||||
            message: '周范围不能超过24周',
 | 
			
		||||
            type: 'warning'
 | 
			
		||||
@@ -576,7 +578,7 @@ export default {
 | 
			
		||||
      if (this.listQuery.reportTime) {
 | 
			
		||||
        // this.createStartDate = moment(new Date(this.listQuery.reportTime[0]), 'yyyy-MM-dd hh:mm:ss');
 | 
			
		||||
        // this.createEndDate = moment(new Date(this.listQuery.reportTime[1]), 'yyyy-MM-dd hh:mm:ss');
 | 
			
		||||
        console.log(this.listQuery.reportTime[1])
 | 
			
		||||
        // console.log(this.listQuery.reportTime[1])
 | 
			
		||||
        const numDays = (this.listQuery.reportTime[1] - this.listQuery.reportTime[0]) / (24 * 3600 * 1000);
 | 
			
		||||
        if (numDays > 30) {
 | 
			
		||||
          this.$message({
 | 
			
		||||
@@ -629,7 +631,10 @@ export default {
 | 
			
		||||
      if (this.chartMsgYearTarget.series[3]) {
 | 
			
		||||
        this.chartMsgYearTarget.series[3].data = []
 | 
			
		||||
      }
 | 
			
		||||
      console.log(this.listQuery);
 | 
			
		||||
      // console.log(this.listQuery);
 | 
			
		||||
      if (this.listQuery.type == null) {
 | 
			
		||||
        return this.$message('请选择时间维度')
 | 
			
		||||
      }
 | 
			
		||||
      if (!this.listQuery.startDate && !this.listQuery.endDate) {
 | 
			
		||||
        return this.$message('请选择起止时间')
 | 
			
		||||
      }
 | 
			
		||||
@@ -650,7 +655,7 @@ export default {
 | 
			
		||||
        let i = index + 1
 | 
			
		||||
        let m = 'value' + i
 | 
			
		||||
        ele.productionSituationDataVOList.forEach((item) => {
 | 
			
		||||
          maxData.push(item.ftoInput, item.chipYield, item.componentYield)
 | 
			
		||||
          // maxData.push(item.ftoInput, item.chipYield, item.componentYield)
 | 
			
		||||
          this.dataArr[0]['' + m + ''] = item.ftoInput
 | 
			
		||||
          // this.dataArr[3].factory = item.factory == 1 ? '邯郸' : '瑞昌'
 | 
			
		||||
          this.dataArr[1]['' + m + ''] = item.chipYield
 | 
			
		||||
@@ -661,26 +666,39 @@ export default {
 | 
			
		||||
            this.dataArr[3]['' + m + ''] = item.bipvProductOutput
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        this.chartMsg.yAxis.max = Math.ceil(Math.max(...maxData) / 100) * 100
 | 
			
		||||
        this.chartMsgTarget.yAxis.max = Math.ceil(Math.max(...maxData) / 100) * 100
 | 
			
		||||
        this.chartMsg.yAxis.min = Math.ceil(Math.min(...maxData) / 100) * 100
 | 
			
		||||
        this.chartMsgTarget.yAxis.min = Math.ceil(Math.min(...maxData) / 100) * 100
 | 
			
		||||
        this.chartMsg.yAxis.interval = (this.chartMsg.yAxis.max - this.chartMsg.yAxis.min) / 4
 | 
			
		||||
        this.chartMsgTarget.yAxis.interval = (this.chartMsgTarget.yAxis.max - this.chartMsgTarget.yAxis.min) / 4
 | 
			
		||||
 | 
			
		||||
        // ele.titleValue
 | 
			
		||||
        // .push({
 | 
			
		||||
        //   label: ele.titleValue,
 | 
			
		||||
        //   props: 'value' + index + 1,
 | 
			
		||||
        // })
 | 
			
		||||
      })
 | 
			
		||||
      if (this.listQuery.type === 2) {
 | 
			
		||||
        res.data.list.slice(0, res.data.list.length - 1).forEach((ele, index) => {
 | 
			
		||||
          ele.productionSituationDataVOList.forEach((item) => {
 | 
			
		||||
            maxData.push(item.ftoInput, item.chipYield, item.componentYield)
 | 
			
		||||
          })
 | 
			
		||||
        })
 | 
			
		||||
      } else {
 | 
			
		||||
        res.data.list.forEach((ele, index) => {
 | 
			
		||||
          ele.productionSituationDataVOList.forEach((item) => {
 | 
			
		||||
            maxData.push(item.ftoInput, item.chipYield, item.componentYield)
 | 
			
		||||
         })
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
        this.chartMsg.yAxis.max = Math.ceil(Math.max(...maxData))
 | 
			
		||||
        this.chartMsgTarget.yAxis.max = Math.ceil(Math.max(...maxData))
 | 
			
		||||
        this.chartMsg.yAxis.min = Math.ceil(Math.min(...maxData))
 | 
			
		||||
        this.chartMsgTarget.yAxis.min = Math.ceil(Math.min(...maxData))
 | 
			
		||||
        this.chartMsg.yAxis.interval = (this.chartMsg.yAxis.max - this.chartMsg.yAxis.min) / 4
 | 
			
		||||
        this.chartMsgTarget.yAxis.interval = (this.chartMsgTarget.yAxis.max - this.chartMsgTarget.yAxis.min) / 4
 | 
			
		||||
      if (this.listQuery.type === 2) {
 | 
			
		||||
        if (res.data.list.length === 3) {
 | 
			
		||||
          this.gridLeft = false
 | 
			
		||||
        } else {
 | 
			
		||||
          this.gridLeft = true
 | 
			
		||||
        }
 | 
			
		||||
        console.log(res.data.list.length);
 | 
			
		||||
        // console.log(res.data.list.length);
 | 
			
		||||
        // res.data.list.forEach((ele) => {
 | 
			
		||||
        res.data.list.slice(0, res.data.list.length - 3).forEach((ele, index) => {
 | 
			
		||||
          // let i = index + 1
 | 
			
		||||
@@ -706,7 +724,7 @@ export default {
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
        })
 | 
			
		||||
        this.chartMsgTarget.xData.push(res.data.list[res.data.list.length - 2].titleValue)
 | 
			
		||||
        this.chartMsgTarget.xData.push(res.data.list[res.data.list.length - 2].titleValue.slice(0, res.data.list[res.data.list.length - 2].titleValue.length - 3))
 | 
			
		||||
        // this.chartMsgTarget.series = [{
 | 
			
		||||
        //   name: "FTO投入",
 | 
			
		||||
        //   data: [
 | 
			
		||||
@@ -734,7 +752,7 @@ export default {
 | 
			
		||||
        let targetObj = {}
 | 
			
		||||
        let obj = {}
 | 
			
		||||
        res.data.list.slice(res.data.list.length - 3, res.data.list.length - 1).forEach((ele, index) => {
 | 
			
		||||
          console.log("ele",ele.titleValue);
 | 
			
		||||
          // console.log("ele",ele.titleValue);
 | 
			
		||||
          // let i = index + 1
 | 
			
		||||
          // this.chartMsgTarget.xData.push(ele.titleValue)
 | 
			
		||||
          if (ele.titleValue.search('完成') == -1) {
 | 
			
		||||
@@ -744,7 +762,7 @@ export default {
 | 
			
		||||
            targetObj.componentYield = item.componentYield
 | 
			
		||||
            targetObj.bipvProductOutput = this.currentMenu == '瑞昌' ? null : item.bipvProductOutput
 | 
			
		||||
          })
 | 
			
		||||
            console.log("fto",ele.titleValue,fto);
 | 
			
		||||
            // console.log("fto",ele.titleValue,fto);
 | 
			
		||||
          } else {
 | 
			
		||||
            ele.productionSituationDataVOList.forEach((item) => {
 | 
			
		||||
              obj.ftoInput = item.ftoInput
 | 
			
		||||
@@ -924,7 +942,7 @@ export default {
 | 
			
		||||
          },)
 | 
			
		||||
        // }
 | 
			
		||||
        this.chartMsgTarget.series = [...fto, ...chip, ...std, ...bipv]
 | 
			
		||||
        console.log('arr', this.chartMsgTarget.series)
 | 
			
		||||
        // console.log('arr', this.chartMsgTarget.series)
 | 
			
		||||
        // arr.forEach((ele) => {
 | 
			
		||||
 | 
			
		||||
        // })
 | 
			
		||||
@@ -986,8 +1004,8 @@ export default {
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
        })
 | 
			
		||||
        console.log(this.chartMsg.series[0]);
 | 
			
		||||
        this.chartMsgTarget.xData.push(res.data.list[res.data.list.length - 1].titleValue)
 | 
			
		||||
        // console.log(this.chartMsg.series[0]);
 | 
			
		||||
        this.chartMsgTarget.xData.push(res.data.list[res.data.list.length - 1].titleValue.slice(0, res.data.list[res.data.list.length - 1].titleValue.length - 3))
 | 
			
		||||
        // this.chartMsgTarget.series = [{
 | 
			
		||||
        //   name: "FTO投入",
 | 
			
		||||
        //   data: [
 | 
			
		||||
@@ -1015,7 +1033,7 @@ export default {
 | 
			
		||||
        let targetObj = {}
 | 
			
		||||
        let obj = {}
 | 
			
		||||
        res.data.list.slice(res.data.list.length - 2, res.data.list.length).forEach((ele, index) => {
 | 
			
		||||
          console.log("ele", ele.titleValue);
 | 
			
		||||
          // console.log("ele", ele.titleValue);
 | 
			
		||||
          // let i = index + 1
 | 
			
		||||
          // this.chartMsgTarget.xData.push(ele.titleValue)
 | 
			
		||||
          ele.productionSituationDataVOList.forEach((item) => {
 | 
			
		||||
@@ -1024,7 +1042,7 @@ export default {
 | 
			
		||||
              targetObj.chipYield = item.chipYield
 | 
			
		||||
              targetObj.componentYield = item.componentYield
 | 
			
		||||
              targetObj.bipvProductOutput = this.currentMenu == '瑞昌' ? null : item.bipvProductOutput
 | 
			
		||||
            console.log("fto", ele.titleValue, fto);
 | 
			
		||||
            // console.log("fto", ele.titleValue, fto);
 | 
			
		||||
          } else {
 | 
			
		||||
 | 
			
		||||
              obj.ftoInput = item.ftoInput
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <div class="search">
 | 
			
		||||
      <el-form :model="listQuery" :inline="true" ref="dataForm" class="blueTip">
 | 
			
		||||
        <el-form-item label="时间维度" prop="type">
 | 
			
		||||
          <el-select size="small" clearable v-model="listQuery.type" placeholder="请选择">
 | 
			
		||||
          <el-select size="small" clearable v-model="listQuery.type" placeholder="请选择" @change="handleChange">
 | 
			
		||||
            <el-option v-for="item in timeList" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
            </el-option>
 | 
			
		||||
          </el-select>
 | 
			
		||||
@@ -107,6 +107,7 @@ export default {
 | 
			
		||||
      otherProps: [],
 | 
			
		||||
      start: undefined,
 | 
			
		||||
      end: undefined,
 | 
			
		||||
      currentMenu:'邯郸',
 | 
			
		||||
      title: '',
 | 
			
		||||
      showTable:false,
 | 
			
		||||
      listQuery: {
 | 
			
		||||
@@ -422,6 +423,13 @@ export default {
 | 
			
		||||
    this.getDataList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    handleChange() {
 | 
			
		||||
      this.listQuery.reportTime = []
 | 
			
		||||
      this.listQuery.end = null
 | 
			
		||||
      this.listQuery.start = null
 | 
			
		||||
      this.listQuery.endTime = null
 | 
			
		||||
      this.listQuery.beginTime = null
 | 
			
		||||
    },
 | 
			
		||||
    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
 | 
			
		||||
      let spanOneArr = [], concatOne = 0;
 | 
			
		||||
      // let spanTwoArr = [], concatTwo = 0;
 | 
			
		||||
@@ -543,6 +551,9 @@ export default {
 | 
			
		||||
      this.chartMsgYearTarget.xData = []
 | 
			
		||||
      this.chartMsgYearTarget.series[0].data = []
 | 
			
		||||
      this.chartMsgYearTarget.series[1].data = []
 | 
			
		||||
      if (this.listQuery.type == null) {
 | 
			
		||||
        return this.$message('请选择时间维度')
 | 
			
		||||
      }
 | 
			
		||||
      if (!this.listQuery.startDate && !this.listQuery.endDate) {
 | 
			
		||||
        return this.$message('请选择起止时间')
 | 
			
		||||
      }
 | 
			
		||||
 
 | 
			
		||||
@@ -137,7 +137,7 @@
 | 
			
		||||
 | 
			
		||||
    <!-- 添加或修改菜单对话框 -->
 | 
			
		||||
    <base-dialog :dialogTitle="title" :dialogVisible="open" width="50%">
 | 
			
		||||
      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
 | 
			
		||||
      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
 | 
			
		||||
        <el-row>
 | 
			
		||||
          <el-col :span="24">
 | 
			
		||||
            <el-form-item label="上级菜单">
 | 
			
		||||
@@ -205,6 +205,7 @@
 | 
			
		||||
                v-model="form.sort"
 | 
			
		||||
                controls-position="right"
 | 
			
		||||
                :min="0"
 | 
			
		||||
                style="width: 100%"
 | 
			
		||||
              />
 | 
			
		||||
            </el-form-item>
 | 
			
		||||
          </el-col>
 | 
			
		||||
@@ -331,8 +332,8 @@
 | 
			
		||||
        </el-row>
 | 
			
		||||
      </el-form>
 | 
			
		||||
      <div slot="footer" class="dialog-footer">
 | 
			
		||||
        <el-button type="primary" @click="submitForm">确 定</el-button>
 | 
			
		||||
        <el-button @click="cancel">取 消</el-button>
 | 
			
		||||
        <el-button type="primary" @click="submitForm">确 定</el-button>
 | 
			
		||||
      </div>
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
  </div>
 | 
			
		||||
@@ -437,6 +438,12 @@ export default {
 | 
			
		||||
        },
 | 
			
		||||
      ],
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
        this.$auth.hasPermi("system:menu:create")
 | 
			
		||||
          ? {
 | 
			
		||||
              type: "add",
 | 
			
		||||
              btnName: "新增",
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi("system:menu:update")
 | 
			
		||||
          ? {
 | 
			
		||||
              type: "edit",
 | 
			
		||||
@@ -449,12 +456,6 @@ export default {
 | 
			
		||||
              btnName: "删除",
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi("system:menu:create")
 | 
			
		||||
          ? {
 | 
			
		||||
              type: "add",
 | 
			
		||||
              btnName: "新增",
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
      ].filter((v) => v),
 | 
			
		||||
      tableProps,
 | 
			
		||||
      heightNum: 210,
 | 
			
		||||
 
 | 
			
		||||
@@ -83,7 +83,7 @@
 | 
			
		||||
              {{ parseTime(form.startTime) }} | {{ form.duration }} ms
 | 
			
		||||
            </el-form-item>
 | 
			
		||||
          </el-col>
 | 
			
		||||
          <el-col :span="12">
 | 
			
		||||
          <el-col :span="24">
 | 
			
		||||
            <el-form-item label="操作结果:">
 | 
			
		||||
              <div v-if="form.resultCode === 0">
 | 
			
		||||
                正常 | {{ form.resultData }}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
  <div class="user-container">
 | 
			
		||||
    <!-- <doc-alert title="用户体系" url="https://doc.iocoder.cn/user-center/" />
 | 
			
		||||
    <doc-alert title="三方登陆" url="https://doc.iocoder.cn/social-user/" />
 | 
			
		||||
    <doc-alert
 | 
			
		||||
@@ -8,40 +8,43 @@
 | 
			
		||||
    /> -->
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
 | 
			
		||||
    <el-row :gutter="20">
 | 
			
		||||
    <el-row :gutter="8" class="user-box">
 | 
			
		||||
      <!--部门数据-->
 | 
			
		||||
      <el-col :span="4" :xs="24">
 | 
			
		||||
        <div class="head-container">
 | 
			
		||||
          <el-input
 | 
			
		||||
            v-model="deptName"
 | 
			
		||||
            placeholder="请输入部门名称"
 | 
			
		||||
            clearable
 | 
			
		||||
            size="small"
 | 
			
		||||
            prefix-icon="el-icon-search"
 | 
			
		||||
            style="margin-bottom: 20px"
 | 
			
		||||
          />
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="head-container">
 | 
			
		||||
          <el-tree
 | 
			
		||||
            :data="deptOptions"
 | 
			
		||||
            :props="defaultProps"
 | 
			
		||||
            :expand-on-click-node="false"
 | 
			
		||||
            :filter-node-method="filterNode"
 | 
			
		||||
            ref="tree"
 | 
			
		||||
            default-expand-all
 | 
			
		||||
            highlight-current
 | 
			
		||||
            @node-click="handleNodeClick"
 | 
			
		||||
          />
 | 
			
		||||
        <div class="user-box-left">
 | 
			
		||||
          <div class="head-container">
 | 
			
		||||
            <el-input
 | 
			
		||||
              v-model="deptName"
 | 
			
		||||
              placeholder="请输入部门名称"
 | 
			
		||||
              clearable
 | 
			
		||||
              size="small"
 | 
			
		||||
              prefix-icon="el-icon-search"
 | 
			
		||||
              style="margin-bottom: 20px"
 | 
			
		||||
            />
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="head-container">
 | 
			
		||||
            <el-tree
 | 
			
		||||
              :data="deptOptions"
 | 
			
		||||
              :props="defaultProps"
 | 
			
		||||
              :expand-on-click-node="false"
 | 
			
		||||
              :filter-node-method="filterNode"
 | 
			
		||||
              ref="tree"
 | 
			
		||||
              default-expand-all
 | 
			
		||||
              highlight-current
 | 
			
		||||
              @node-click="handleNodeClick"
 | 
			
		||||
            />
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <!--用户数据-->
 | 
			
		||||
      <el-col :span="20" :xs="24">
 | 
			
		||||
        <search-bar
 | 
			
		||||
          :formConfigs="formConfig"
 | 
			
		||||
          ref="searchBarForm"
 | 
			
		||||
          @headBtnClick="buttonClick"
 | 
			
		||||
        />
 | 
			
		||||
        <!-- <el-form
 | 
			
		||||
        <div class="user-box-right">
 | 
			
		||||
          <search-bar
 | 
			
		||||
            :formConfigs="formConfig"
 | 
			
		||||
            ref="userSearchBarForm"
 | 
			
		||||
            @headBtnClick="buttonClick"
 | 
			
		||||
          />
 | 
			
		||||
          <!-- <el-form
 | 
			
		||||
          :model="queryParams"
 | 
			
		||||
          ref="queryForm"
 | 
			
		||||
          size="small"
 | 
			
		||||
@@ -104,7 +107,7 @@
 | 
			
		||||
          </el-form-item>
 | 
			
		||||
        </el-form> -->
 | 
			
		||||
 | 
			
		||||
        <!-- <el-row :gutter="10" class="mb8">
 | 
			
		||||
          <!-- <el-row :gutter="10" class="mb8">
 | 
			
		||||
          <el-col :span="1.5">
 | 
			
		||||
            <el-button
 | 
			
		||||
              type="primary"
 | 
			
		||||
@@ -144,25 +147,25 @@
 | 
			
		||||
          ></right-toolbar>
 | 
			
		||||
        </el-row> -->
 | 
			
		||||
 | 
			
		||||
        <!-- 列表 -->
 | 
			
		||||
        <base-table
 | 
			
		||||
          :page="queryParams.pageNo"
 | 
			
		||||
          :limit="queryParams.pageSize"
 | 
			
		||||
          :table-props="tableProps"
 | 
			
		||||
          :table-data="userList"
 | 
			
		||||
          :max-height="tableH"
 | 
			
		||||
          @emitFun="handleStatusChange"
 | 
			
		||||
        >
 | 
			
		||||
          <method-btn
 | 
			
		||||
            v-if="tableBtn.length"
 | 
			
		||||
            slot="handleBtn"
 | 
			
		||||
            :width="220"
 | 
			
		||||
            label="操作"
 | 
			
		||||
            :method-list="tableBtn"
 | 
			
		||||
            @clickBtn="handleClick"
 | 
			
		||||
          />
 | 
			
		||||
        </base-table>
 | 
			
		||||
        <!-- <el-table v-loading="loading" :data="userList">
 | 
			
		||||
          <!-- 列表 -->
 | 
			
		||||
          <base-table
 | 
			
		||||
            :page="queryParams.pageNo"
 | 
			
		||||
            :limit="queryParams.pageSize"
 | 
			
		||||
            :table-props="tableProps"
 | 
			
		||||
            :table-data="userList"
 | 
			
		||||
            :max-height="tableH"
 | 
			
		||||
            @emitFun="handleStatusChange"
 | 
			
		||||
          >
 | 
			
		||||
            <method-btn
 | 
			
		||||
              v-if="tableBtn.length"
 | 
			
		||||
              slot="handleBtn"
 | 
			
		||||
              :width="220"
 | 
			
		||||
              label="操作"
 | 
			
		||||
              :method-list="tableBtn"
 | 
			
		||||
              @clickBtn="handleClick"
 | 
			
		||||
            />
 | 
			
		||||
          </base-table>
 | 
			
		||||
          <!-- <el-table v-loading="loading" :data="userList">
 | 
			
		||||
          <el-table-column
 | 
			
		||||
            label="用户编号"
 | 
			
		||||
            align="center"
 | 
			
		||||
@@ -288,18 +291,19 @@
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
        </el-table> -->
 | 
			
		||||
 | 
			
		||||
        <pagination
 | 
			
		||||
          :page.sync="queryParams.pageNo"
 | 
			
		||||
          :limit.sync="queryParams.pageSize"
 | 
			
		||||
          :total="total"
 | 
			
		||||
          @pagination="getList"
 | 
			
		||||
        />
 | 
			
		||||
          <pagination
 | 
			
		||||
            :page.sync="queryParams.pageNo"
 | 
			
		||||
            :limit.sync="queryParams.pageSize"
 | 
			
		||||
            :total="total"
 | 
			
		||||
            @pagination="getList"
 | 
			
		||||
          />
 | 
			
		||||
        </div>
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
 | 
			
		||||
    <!-- 添加或修改参数配置对话框 -->
 | 
			
		||||
    <base-dialog :dialogTitle="title" :dialogVisible="open" width="50%">
 | 
			
		||||
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
 | 
			
		||||
      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
 | 
			
		||||
        <el-row>
 | 
			
		||||
          <el-col :span="12">
 | 
			
		||||
            <el-form-item label="用户昵称" prop="nickname">
 | 
			
		||||
@@ -412,8 +416,8 @@
 | 
			
		||||
        </el-row>
 | 
			
		||||
      </el-form>
 | 
			
		||||
      <div slot="footer" class="dialog-footer">
 | 
			
		||||
        <el-button type="primary" @click="submitForm">确 定</el-button>
 | 
			
		||||
        <el-button @click="cancel">取 消</el-button>
 | 
			
		||||
        <el-button type="primary" @click="submitForm">确 定</el-button>
 | 
			
		||||
      </div>
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
 | 
			
		||||
@@ -448,7 +452,7 @@
 | 
			
		||||
            :underline="false"
 | 
			
		||||
            style="font-size: 12px; vertical-align: baseline"
 | 
			
		||||
            @click="importTemplate"
 | 
			
		||||
            >下载模板</el-link
 | 
			
		||||
            >导出模板</el-link
 | 
			
		||||
          >
 | 
			
		||||
        </div>
 | 
			
		||||
      </el-upload>
 | 
			
		||||
@@ -606,6 +610,11 @@ export default {
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: "重置",
 | 
			
		||||
          name: "cancel",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermiOr([
 | 
			
		||||
            "system:user:create",
 | 
			
		||||
@@ -615,18 +624,11 @@ export default {
 | 
			
		||||
            ? "separate"
 | 
			
		||||
            : "",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi("system:user:create") ? "button" : "",
 | 
			
		||||
          btnName: "新增",
 | 
			
		||||
          name: "addNew",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain: true,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi("system:user:import") ? "button" : "",
 | 
			
		||||
          btnName: "导入",
 | 
			
		||||
          name: "import",
 | 
			
		||||
          color: "warning",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          plain: true,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
@@ -636,20 +638,15 @@ export default {
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          plain: true,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi("system:user:create") ? "button" : "",
 | 
			
		||||
          btnName: "新增",
 | 
			
		||||
          name: "addNew",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain: true,
 | 
			
		||||
        },
 | 
			
		||||
      ],
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
        this.$auth.hasPermi("system:user:update")
 | 
			
		||||
          ? {
 | 
			
		||||
              type: "edit",
 | 
			
		||||
              btnName: "修改",
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi("system:user:delete")
 | 
			
		||||
          ? {
 | 
			
		||||
              type: "delete",
 | 
			
		||||
              btnName: "删除",
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi("system:user:update-password")
 | 
			
		||||
          ? {
 | 
			
		||||
              type: "reset",
 | 
			
		||||
@@ -662,6 +659,18 @@ export default {
 | 
			
		||||
              btnName: "分配角色",
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi("system:user:update")
 | 
			
		||||
          ? {
 | 
			
		||||
              type: "edit",
 | 
			
		||||
              btnName: "修改",
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi("system:user:delete")
 | 
			
		||||
          ? {
 | 
			
		||||
              type: "delete",
 | 
			
		||||
              btnName: "删除",
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
      ].filter((v) => v),
 | 
			
		||||
      tableProps,
 | 
			
		||||
      // 遮罩层
 | 
			
		||||
@@ -803,6 +812,15 @@ export default {
 | 
			
		||||
        case "search":
 | 
			
		||||
          this.handleQuery(val);
 | 
			
		||||
          break;
 | 
			
		||||
        case "cancel":
 | 
			
		||||
          this.$refs["userSearchBarForm"].resetForm();
 | 
			
		||||
          this.queryParams.pageNo = 1;
 | 
			
		||||
          this.queryParams.username = "";
 | 
			
		||||
          this.queryParams.mobile = "";
 | 
			
		||||
          this.queryParams.status = "";
 | 
			
		||||
          this.queryParams.createTime = [];
 | 
			
		||||
          this.getList();
 | 
			
		||||
          break;
 | 
			
		||||
        case "addNew":
 | 
			
		||||
          this.handleAdd();
 | 
			
		||||
          break;
 | 
			
		||||
@@ -1033,7 +1051,7 @@ export default {
 | 
			
		||||
      this.upload.title = "用户导入";
 | 
			
		||||
      this.upload.open = true;
 | 
			
		||||
    },
 | 
			
		||||
    /** 下载模板操作 */
 | 
			
		||||
    /** 导出模板操作 */
 | 
			
		||||
    importTemplate() {
 | 
			
		||||
      importTemplate().then((response) => {
 | 
			
		||||
        this.$download.excel(response, "用户导入模板.xls");
 | 
			
		||||
@@ -1090,11 +1108,19 @@ export default {
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.app-container {
 | 
			
		||||
.user-container {
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  height: calc(100vh - 120px - 8px);
 | 
			
		||||
  background-color: #fff;
 | 
			
		||||
  border-radius: 8px;
 | 
			
		||||
  padding: 8px;
 | 
			
		||||
  background-color: #f2f4f9;
 | 
			
		||||
 | 
			
		||||
  .user-box {
 | 
			
		||||
    .user-box-left,
 | 
			
		||||
    .user-box-right {
 | 
			
		||||
      background-color: #fff;
 | 
			
		||||
      padding: 8px;
 | 
			
		||||
      border-radius: 8px;
 | 
			
		||||
      height: calc(100vh - 128px);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user