Explorar el Código

数据统计增加两项配置,提示显示和岗前计划是否显示,根据两项配置组合将整个图表配合显示方式进行调整

cyy hace 6 días
padre
commit
f14d718805
Se han modificado 1 ficheros con 630 adiciones y 130 borrados
  1. 630 130
      src/views/statistics/index_kanban.vue

+ 630 - 130
src/views/statistics/index_kanban.vue

@@ -107,59 +107,222 @@
       </div>
       <div class="w2222" v-if="relOf">
         <div v-if="activeKanbanTab === 'personnel'" class="kanban-tab-panel">
-          <div class="kanban-chart-row kanban-chart-row--pie">
-            <div class="kanban-chart-cell">
-              <s4renYuanPeiXun
-                v-if="showAll || showComponents[1]"
-                width="100%"
-                height="100%"
-                :colorw="colorw"
-                style="box-shadow: none"
-                :data="getS4renYuanPeiXun()"
-              />
-            </div>
-            <div class="kanban-chart-cell">
-              <s5renYuanJianDu
-                v-if="showAll || showComponents[3]"
-                width="100%"
-                height="100%"
-                :colorw="colorw"
-                style="box-shadow: none"
-                :data="getS5renYuanJianDu()"
-              />
+          <template v-if="!preJobTF">
+            <div
+              v-if="isChartGroupEmpty(zaigangrenyuan, zaigangrenyuanfb)"
+              class="kanban-chart-row kanban-chart-row--pie"
+            >
+              <div class="kanban-chart-cell">
+                <div class="kanban-no-data kanban-no-data--fill">
+                  《在岗人员培训计划未获取到相应数据》
+                </div>
+              </div>
             </div>
-          </div>
-          <div class="kanban-chart-row kanban-chart-row--bar">
-            <div class="kanban-chart-cell">
-              <s4renYuanPeiXunCol
-                v-if="showAll || showComponents[2]"
-                width="100%"
-                height="100%"
-                :colorw="colorw"
-                :direction="direction"
-                style="box-shadow: none"
-                :data="getS4renYuanPeiXunFB()"
-              />
+            <template v-else>
+              <div class="kanban-chart-row kanban-chart-row--pie">
+                <div class="kanban-chart-cell">
+                  <s4renYuanPeiXun
+                    v-if="showAll || showComponents[1]"
+                    width="100%"
+                    height="100%"
+                    :colorw="colorw"
+                    style="box-shadow: none"
+                    :data="getS4renYuanPeiXun()"
+                  />
+                </div>
+                <div class="kanban-chart-cell">
+                  <s4renYuanPeiXunCol
+                    v-if="showAll || showComponents[2]"
+                    width="100%"
+                    height="100%"
+                    :colorw="colorw"
+                    :direction="direction"
+                    style="box-shadow: none"
+                    :data="getS4renYuanPeiXunFB()"
+                  />
+                </div>
+              </div>
+            </template>
+          </template>
+          <template v-else>
+            <div class="kanban-chart-row kanban-chart-row--pie">
+              <div
+                class="kanban-chart-cell"
+                :class="{
+                  'kanban-chart-cell--empty-group': isMixedNoDataState(
+                    zaigangrenyuan,
+                    zaigangrenyuanfb,
+                    gangqianpeixun,
+                    gangqianpeixunfb
+                  )
+                }"
+              >
+                <div
+                  v-if="isChartGroupEmpty(zaigangrenyuan, zaigangrenyuanfb)"
+                  class="kanban-no-data"
+                  :class="{
+                    'kanban-no-data--group': isMixedNoDataState(
+                      zaigangrenyuan,
+                      zaigangrenyuanfb,
+                      gangqianpeixun,
+                      gangqianpeixunfb
+                    ),
+                    'kanban-no-data--fill': !isMixedNoDataState(
+                      zaigangrenyuan,
+                      zaigangrenyuanfb,
+                      gangqianpeixun,
+                      gangqianpeixunfb
+                    ),
+                    'kanban-no-data--group-top': isMixedNoDataState(
+                      zaigangrenyuan,
+                      zaigangrenyuanfb,
+                      gangqianpeixun,
+                      gangqianpeixunfb
+                    )
+                  }"
+                >
+                  《在岗人员培训计划未获取到相应数据》
+                </div>
+                <s4renYuanPeiXun
+                  v-else-if="showAll || showComponents[1]"
+                  width="100%"
+                  height="100%"
+                  :colorw="colorw"
+                  style="box-shadow: none"
+                  :data="getS4renYuanPeiXun()"
+                />
+              </div>
+              <div
+                class="kanban-chart-cell"
+                :class="{
+                  'kanban-chart-cell--empty-group': isMixedNoDataState(
+                    gangqianpeixun,
+                    gangqianpeixunfb,
+                    zaigangrenyuan,
+                    zaigangrenyuanfb
+                  )
+                }"
+              >
+                <div
+                  v-if="isChartGroupEmpty(gangqianpeixun, gangqianpeixunfb)"
+                  class="kanban-no-data"
+                  :class="{
+                    'kanban-no-data--group': isMixedNoDataState(
+                      gangqianpeixun,
+                      gangqianpeixunfb,
+                      zaigangrenyuan,
+                      zaigangrenyuanfb
+                    ),
+                    'kanban-no-data--fill': !isMixedNoDataState(
+                      gangqianpeixun,
+                      gangqianpeixunfb,
+                      zaigangrenyuan,
+                      zaigangrenyuanfb
+                    ),
+                    'kanban-no-data--group-top': isMixedNoDataState(
+                      gangqianpeixun,
+                      gangqianpeixunfb,
+                      zaigangrenyuan,
+                      zaigangrenyuanfb
+                    )
+                  }"
+                >
+                  《岗前培训计划未获取到相应数据》
+                </div>
+                <s5renYuanJianDu
+                  v-else-if="showAll || showComponents[3]"
+                  width="100%"
+                  height="100%"
+                  :colorw="colorw"
+                  style="box-shadow: none"
+                  :data="getS5renYuanJianDu()"
+                />
+              </div>
             </div>
-            <div class="kanban-chart-cell">
-              <s5renYuanJianDuCol
-                v-if="showAll || showComponents[4]"
-                width="100%"
-                height="100%"
-                :colorw="colorw"
-                :direction="direction"
-                style="box-shadow: none"
-                :data="getS5renYuanJianDuFB()"
-              />
+            <div
+              v-if="
+                isAnyChartGroupVisible(
+                  zaigangrenyuan,
+                  zaigangrenyuanfb,
+                  gangqianpeixun,
+                  gangqianpeixunfb
+                )
+              "
+              class="kanban-chart-row kanban-chart-row--bar"
+            >
+              <div class="kanban-chart-cell">
+                <s4renYuanPeiXunCol
+                  v-if="
+                    !isChartGroupEmpty(zaigangrenyuan, zaigangrenyuanfb) &&
+                    (showAll || showComponents[2])
+                  "
+                  width="100%"
+                  height="100%"
+                  :colorw="colorw"
+                  :direction="direction"
+                  style="box-shadow: none"
+                  :data="getS4renYuanPeiXunFB()"
+                />
+              </div>
+              <div class="kanban-chart-cell">
+                <s5renYuanJianDuCol
+                  v-if="
+                    !isChartGroupEmpty(gangqianpeixun, gangqianpeixunfb) &&
+                    (showAll || showComponents[4])
+                  "
+                  width="100%"
+                  height="100%"
+                  :colorw="colorw"
+                  :direction="direction"
+                  style="box-shadow: none"
+                  :data="getS5renYuanJianDuFB()"
+                />
+              </div>
             </div>
-          </div>
+          </template>
         </div>
 
         <div v-if="activeKanbanTab === 'equipment'" class="kanban-tab-panel">
           <div class="kanban-chart-row kanban-chart-row--pie">
-            <div class="kanban-chart-cell">
+            <div
+              class="kanban-chart-cell"
+              :class="{
+                'kanban-chart-cell--empty-group': isMixedNoDataState(
+                  jiaoyanObj,
+                  jiaoyanMGObj,
+                  hechaObj,
+                  hechaMGObj
+                )
+              }"
+            >
+              <div
+                v-if="isChartGroupEmpty(jiaoyanObj, jiaoyanMGObj)"
+                class="kanban-no-data"
+                :class="{
+                  'kanban-no-data--group': isMixedNoDataState(
+                    jiaoyanObj,
+                    jiaoyanMGObj,
+                    hechaObj,
+                    hechaMGObj
+                  ),
+                  'kanban-no-data--fill': !isMixedNoDataState(
+                    jiaoyanObj,
+                    jiaoyanMGObj,
+                    hechaObj,
+                    hechaMGObj
+                  ),
+                  'kanban-no-data--group-top': isMixedNoDataState(
+                    jiaoyanObj,
+                    jiaoyanMGObj,
+                    hechaObj,
+                    hechaMGObj
+                  )
+                }"
+              >
+                《设备检定/校准计划未获取到相应数据》
+              </div>
               <s7sheBeiJiaoZhun
-                v-if="showAll || showComponents[5]"
+                v-else-if="showAll || showComponents[5]"
                 width="100%"
                 height="100%"
                 :colorw="colorw"
@@ -167,9 +330,45 @@
                 :data="getJiaoYanObjNum()"
               />
             </div>
-            <div class="kanban-chart-cell">
+            <div
+              class="kanban-chart-cell"
+              :class="{
+                'kanban-chart-cell--empty-group': isMixedNoDataState(
+                  hechaObj,
+                  hechaMGObj,
+                  jiaoyanObj,
+                  jiaoyanMGObj
+                )
+              }"
+            >
+              <div
+                v-if="isChartGroupEmpty(hechaObj, hechaMGObj)"
+                class="kanban-no-data"
+                :class="{
+                  'kanban-no-data--group': isMixedNoDataState(
+                    hechaObj,
+                    hechaMGObj,
+                    jiaoyanObj,
+                    jiaoyanMGObj
+                  ),
+                  'kanban-no-data--fill': !isMixedNoDataState(
+                    hechaObj,
+                    hechaMGObj,
+                    jiaoyanObj,
+                    jiaoyanMGObj
+                  ),
+                  'kanban-no-data--group-top': isMixedNoDataState(
+                    hechaObj,
+                    hechaMGObj,
+                    jiaoyanObj,
+                    jiaoyanMGObj
+                  )
+                }"
+              >
+                《设备维护计划未获取到相应数据》
+              </div>
               <s8sheBeiHeCha
-                v-if="showAll || showComponents[7]"
+                v-else-if="showAll || showComponents[7]"
                 width="100%"
                 height="100%"
                 :colorw="colorw"
@@ -178,10 +377,23 @@
               />
             </div>
           </div>
-          <div class="kanban-chart-row kanban-chart-row--bar">
+          <div
+            v-if="
+              isAnyChartGroupVisible(
+                jiaoyanObj,
+                jiaoyanMGObj,
+                hechaObj,
+                hechaMGObj
+              )
+            "
+            class="kanban-chart-row kanban-chart-row--bar"
+          >
             <div class="kanban-chart-cell">
               <s7sheBeiJiaoZhunCol
-                v-if="showAll || showComponents[6]"
+                v-if="
+                  !isChartGroupEmpty(jiaoyanObj, jiaoyanMGObj) &&
+                  (showAll || showComponents[6])
+                "
                 width="100%"
                 height="100%"
                 :colorw="colorw"
@@ -192,7 +404,10 @@
             </div>
             <div class="kanban-chart-cell">
               <s8sheBeiHeChaCol
-                v-if="showAll || showComponents[8]"
+                v-if="
+                  !isChartGroupEmpty(hechaObj, hechaMGObj) &&
+                  (showAll || showComponents[8])
+                "
                 width="100%"
                 height="100%"
                 :colorw="colorw"
@@ -209,9 +424,45 @@
           class="kanban-tab-panel"
         >
           <div class="kanban-chart-row kanban-chart-row--pie">
-            <div class="kanban-chart-cell">
+            <div
+              class="kanban-chart-cell"
+              :class="{
+                'kanban-chart-cell--empty-group': isMixedNoDataState(
+                  neibuObj,
+                  neibuObjfb,
+                  waibuObj,
+                  waibuObjfb
+                )
+              }"
+            >
+              <div
+                v-if="isChartGroupEmpty(neibuObj, neibuObjfb)"
+                class="kanban-no-data"
+                :class="{
+                  'kanban-no-data--group': isMixedNoDataState(
+                    neibuObj,
+                    neibuObjfb,
+                    waibuObj,
+                    waibuObjfb
+                  ),
+                  'kanban-no-data--fill': !isMixedNoDataState(
+                    neibuObj,
+                    neibuObjfb,
+                    waibuObj,
+                    waibuObjfb
+                  ),
+                  'kanban-no-data--group-top': isMixedNoDataState(
+                    neibuObj,
+                    neibuObjfb,
+                    waibuObj,
+                    waibuObjfb
+                  )
+                }"
+              >
+                《内部比对实验计划未获取到相应数据》
+              </div>
               <s9neiBuZhiLiang
-                v-if="showAll || showComponents[9]"
+                v-else-if="showAll || showComponents[9]"
                 width="100%"
                 height="100%"
                 :colorw="colorw"
@@ -219,9 +470,45 @@
                 :data="getS9neiBuZhiLiang()"
               />
             </div>
-            <div class="kanban-chart-cell">
+            <div
+              class="kanban-chart-cell"
+              :class="{
+                'kanban-chart-cell--empty-group': isMixedNoDataState(
+                  waibuObj,
+                  waibuObjfb,
+                  neibuObj,
+                  neibuObjfb
+                )
+              }"
+            >
+              <div
+                v-if="isChartGroupEmpty(waibuObj, waibuObjfb)"
+                class="kanban-no-data"
+                :class="{
+                  'kanban-no-data--group': isMixedNoDataState(
+                    waibuObj,
+                    waibuObjfb,
+                    neibuObj,
+                    neibuObjfb
+                  ),
+                  'kanban-no-data--fill': !isMixedNoDataState(
+                    waibuObj,
+                    waibuObjfb,
+                    neibuObj,
+                    neibuObjfb
+                  ),
+                  'kanban-no-data--group-top': isMixedNoDataState(
+                    waibuObj,
+                    waibuObjfb,
+                    neibuObj,
+                    neibuObjfb
+                  )
+                }"
+              >
+                《外部质量评价计划未获取到相应数据》
+              </div>
               <s10waiBuNengLi
-                v-if="showAll || showComponents[11]"
+                v-else-if="showAll || showComponents[11]"
                 width="100%"
                 height="100%"
                 :colorw="colorw"
@@ -230,10 +517,18 @@
               />
             </div>
           </div>
-          <div class="kanban-chart-row kanban-chart-row--bar">
+          <div
+            v-if="
+              isAnyChartGroupVisible(neibuObj, neibuObjfb, waibuObj, waibuObjfb)
+            "
+            class="kanban-chart-row kanban-chart-row--bar"
+          >
             <div class="kanban-chart-cell">
               <s9neiBuZhiLiangCol
-                v-if="showAll || showComponents[10]"
+                v-if="
+                  !isChartGroupEmpty(neibuObj, neibuObjfb) &&
+                  (showAll || showComponents[10])
+                "
                 width="100%"
                 height="100%"
                 :colorw="colorw"
@@ -244,7 +539,10 @@
             </div>
             <div class="kanban-chart-cell">
               <s10waiBuNengLiCol
-                v-if="showAll || showComponents[12]"
+                v-if="
+                  !isChartGroupEmpty(waibuObj, waibuObjfb) &&
+                  (showAll || showComponents[12])
+                "
                 width="100%"
                 height="100%"
                 :colorw="colorw"
@@ -258,9 +556,45 @@
 
         <div v-if="activeKanbanTab === 'emergency'" class="kanban-tab-panel">
           <div class="kanban-chart-row kanban-chart-row--pie">
-            <div class="kanban-chart-cell">
+            <div
+              class="kanban-chart-cell"
+              :class="{
+                'kanban-chart-cell--empty-group': isMixedNoDataState(
+                  yingjiObj,
+                  yingjifbObj,
+                  fengxianObj,
+                  fengxianfbObj
+                )
+              }"
+            >
+              <div
+                v-if="isChartGroupEmpty(yingjiObj, yingjifbObj)"
+                class="kanban-no-data"
+                :class="{
+                  'kanban-no-data--group': isMixedNoDataState(
+                    yingjiObj,
+                    yingjifbObj,
+                    fengxianObj,
+                    fengxianfbObj
+                  ),
+                  'kanban-no-data--fill': !isMixedNoDataState(
+                    yingjiObj,
+                    yingjifbObj,
+                    fengxianObj,
+                    fengxianfbObj
+                  ),
+                  'kanban-no-data--group-top': isMixedNoDataState(
+                    yingjiObj,
+                    yingjifbObj,
+                    fengxianObj,
+                    fengxianfbObj
+                  )
+                }"
+              >
+                《应急预案演练计划未获取到相应数据》
+              </div>
               <s15tousu
-                v-if="showAll || showComponents[13]"
+                v-else-if="showAll || showComponents[13]"
                 width="100%"
                 height="100%"
                 :colorw="colorw"
@@ -268,9 +602,45 @@
                 :data="getS3tousu()"
               />
             </div>
-            <div class="kanban-chart-cell">
+            <div
+              class="kanban-chart-cell"
+              :class="{
+                'kanban-chart-cell--empty-group': isMixedNoDataState(
+                  fengxianObj,
+                  fengxianfbObj,
+                  yingjiObj,
+                  yingjifbObj
+                )
+              }"
+            >
+              <div
+                v-if="isChartGroupEmpty(fengxianObj, fengxianfbObj)"
+                class="kanban-no-data"
+                :class="{
+                  'kanban-no-data--group': isMixedNoDataState(
+                    fengxianObj,
+                    fengxianfbObj,
+                    yingjiObj,
+                    yingjifbObj
+                  ),
+                  'kanban-no-data--fill': !isMixedNoDataState(
+                    fengxianObj,
+                    fengxianfbObj,
+                    yingjiObj,
+                    yingjifbObj
+                  ),
+                  'kanban-no-data--group-top': isMixedNoDataState(
+                    fengxianObj,
+                    fengxianfbObj,
+                    yingjiObj,
+                    yingjifbObj
+                  )
+                }"
+              >
+                《实验室活动风险识别与控制计划未获取到相应数据》
+              </div>
               <s12fengXian
-                v-if="showAll || showComponents[15]"
+                v-else-if="showAll || showComponents[15]"
                 width="100%"
                 height="100%"
                 :colorw="colorw"
@@ -279,10 +649,23 @@
               />
             </div>
           </div>
-          <div class="kanban-chart-row kanban-chart-row--bar">
+          <div
+            v-if="
+              isAnyChartGroupVisible(
+                yingjiObj,
+                yingjifbObj,
+                fengxianObj,
+                fengxianfbObj
+              )
+            "
+            class="kanban-chart-row kanban-chart-row--bar"
+          >
             <div class="kanban-chart-cell">
               <s15tousuCol
-                v-if="showAll || showComponents[14]"
+                v-if="
+                  !isChartGroupEmpty(yingjiObj, yingjifbObj) &&
+                  (showAll || showComponents[14])
+                "
                 width="100%"
                 height="100%"
                 :colorw="colorw"
@@ -293,7 +676,10 @@
             </div>
             <div class="kanban-chart-cell">
               <s12fengXianCol
-                v-if="showAll || showComponents[16]"
+                v-if="
+                  !isChartGroupEmpty(fengxianObj, fengxianfbObj) &&
+                  (showAll || showComponents[16])
+                "
                 width="100%"
                 height="100%"
                 :colorw="colorw"
@@ -309,84 +695,108 @@
           v-if="activeKanbanTab === 'internalAudit'"
           class="kanban-tab-panel"
         >
-          <div class="kanban-chart-row kanban-chart-row--pie">
+          <div
+            v-if="isChartGroupEmpty(neishenObj, neishenfbObj)"
+            class="kanban-chart-row kanban-chart-row--pie"
+          >
             <div class="kanban-chart-cell">
-              <s2manYiDu
-                v-if="showAll || showComponents[17]"
-                width="100%"
-                height="100%"
-                :colorw="colorw"
-                style="box-shadow: none"
-                :data="getS2manYiDu()"
-              />
-            </div>
-            <div class="kanban-chart-cell">
-              <s2manYiDuCol
-                v-if="showAll || showComponents[18]"
-                width="100%"
-                height="100%"
-                :colorw="colorw"
-                :direction="direction"
-                style="box-shadow: none"
-                :data="getS2manYiDuFB()"
-              />
+              <div class="kanban-no-data kanban-no-data--fill">
+                《年度内审计划未获取到相应数据》
+              </div>
             </div>
           </div>
-          <div class="kanban-chart-row kanban-chart-row--bar">
-            <div class="kanban-chart-cell">
-              <s14bufuhexiang
-                v-if="showAll || showComponents[19]"
-                width="100%"
-                height="100%"
-                :colorw="colorw"
-                :direction="direction"
-                style="box-shadow: none"
-                :data="getS14bufuhexiang()"
-              />
+          <template v-else>
+            <div class="kanban-chart-row kanban-chart-row--pie">
+              <div class="kanban-chart-cell">
+                <s2manYiDu
+                  v-if="showAll || showComponents[17]"
+                  width="100%"
+                  height="100%"
+                  :colorw="colorw"
+                  style="box-shadow: none"
+                  :data="getS2manYiDu()"
+                />
+              </div>
+              <div class="kanban-chart-cell">
+                <s2manYiDuCol
+                  v-if="showAll || showComponents[18]"
+                  width="100%"
+                  height="100%"
+                  :colorw="colorw"
+                  :direction="direction"
+                  style="box-shadow: none"
+                  :data="getS2manYiDuFB()"
+                />
+              </div>
             </div>
-          </div>
+            <div class="kanban-chart-row kanban-chart-row--bar">
+              <div class="kanban-chart-cell">
+                <s14bufuhexiang
+                  v-if="showAll || showComponents[19]"
+                  width="100%"
+                  height="100%"
+                  :colorw="colorw"
+                  :direction="direction"
+                  style="box-shadow: none"
+                  :data="getS14bufuhexiang()"
+                />
+              </div>
+            </div>
+          </template>
         </div>
 
         <div
           v-if="activeKanbanTab === 'managementReview'"
           class="kanban-tab-panel"
         >
-          <div class="kanban-chart-row kanban-chart-row--pie">
+          <div
+            v-if="isChartGroupEmpty(guanshenObj, guanshenfbObj)"
+            class="kanban-chart-row kanban-chart-row--pie"
+          >
             <div class="kanban-chart-cell">
-              <s1zhiLiangMuBiao
-                v-if="showAll || showComponents[21]"
-                width="100%"
-                height="100%"
-                :colorw="colorw"
-                style="box-shadow: none"
-                :data="getS1renwu()"
-              />
-            </div>
-            <div class="kanban-chart-cell">
-              <s1zhiLiangMuBiaoCol
-                v-if="showAll || showComponents[22]"
-                width="100%"
-                height="100%"
-                :colorw="colorw"
-                :direction="direction"
-                style="box-shadow: none"
-                :data="getS1renwuFB()"
-              />
+              <div class="kanban-no-data kanban-no-data--fill">
+                《管理评审计划未获取到相应数据》
+              </div>
             </div>
           </div>
-          <div class="kanban-chart-row kanban-chart-row--bar">
-            <div class="kanban-chart-cell">
-              <s16bzJunZhu
-                v-if="showAll || showComponents[23]"
-                width="100%"
-                height="100%"
-                :colorw="colorw"
-                :direction="direction"
-                style="box-shadow: none"
-                :data="getbzJunZhujNum()"
-              />
+          <template v-else>
+            <div class="kanban-chart-row kanban-chart-row--pie">
+              <div class="kanban-chart-cell">
+                <s1zhiLiangMuBiao
+                  v-if="showAll || showComponents[21]"
+                  width="100%"
+                  height="100%"
+                  :colorw="colorw"
+                  style="box-shadow: none"
+                  :data="getS1renwu()"
+                />
+              </div>
+              <div class="kanban-chart-cell">
+                <s1zhiLiangMuBiaoCol
+                  v-if="showAll || showComponents[22]"
+                  width="100%"
+                  height="100%"
+                  :colorw="colorw"
+                  :direction="direction"
+                  style="box-shadow: none"
+                  :data="getS1renwuFB()"
+                />
+              </div>
             </div>
-          </div>
+            <div class="kanban-chart-row kanban-chart-row--bar">
+              <div class="kanban-chart-cell">
+                <s16bzJunZhu
+                  v-if="showAll || showComponents[23]"
+                  width="100%"
+                  height="100%"
+                  :colorw="colorw"
+                  :direction="direction"
+                  style="box-shadow: none"
+                  :data="getbzJunZhujNum()"
+                />
+              </div>
+            </div>
+          </template>
         </div>
         <div class="clear" />
       </div>
@@ -435,6 +845,7 @@ import s15tousu from './item/s15tousu.vue'
 import s15tousuCol from './item/s15tousuCol.vue'
 import s16bzJunZhu from './item/s16bzJunZhuCol2.vue'
 import s17bzXiBao from './item/s17bzXiBao.vue'
+import { getSetting } from '@/utils/query'
 
 import none from './item/none.vue'
 // import * as echarts from 'echarts'
@@ -618,7 +1029,9 @@ export default {
         data: [
           // ['行1列1', '行1列2', '行1列3'],
         ]
-      }
+      },
+      statisticsReminder: false,
+      preJobTF: true
     }
   },
   watch: {
@@ -648,7 +1061,11 @@ export default {
   provide() {
     return { rollcontinue: this.rollcontinue, rollstop: this.rollstop }
   },
-  mounted() {
+  async mounted() {
+    const { statisticsReminder, preJobTF } =
+      (await getSetting('laboratoryDashboard')) || {}
+    this.statisticsReminder = statisticsReminder || false
+    this.preJobTF = preJobTF === false ? preJobTF : true
     /* 以shows是否有参数来判断, 是否需要仅显示部分子组件*/
     if (this.shows.length > 0) {
       this.showAll = false
@@ -687,6 +1104,56 @@ export default {
     clearInterval(this.timer)
   },
   methods: {
+    isSummaryDataEmpty(dataArr) {
+      if (!dataArr || !Array.isArray(dataArr) || dataArr.length === 0) {
+        return true
+      }
+      return dataArr.every((item) => !item || Number(item.num || 0) === 0)
+    },
+    isBarFbDataEmpty(fbArr) {
+      if (!fbArr || !Array.isArray(fbArr) || fbArr.length === 0) {
+        return true
+      }
+      return fbArr.every((item) => {
+        const numA = Number(item.numA < 0 ? 0 : item.numA || 0)
+        const num = Number(item.num < 0 ? 0 : item.num || 0)
+        return numA === 0 && num === 0
+      })
+    },
+    isChartGroupEmpty(pieDataArr, barFbArr) {
+      if (!this.statisticsReminder) {
+        return false
+      }
+      return this.isChartGroupDataEmpty(pieDataArr, barFbArr)
+    },
+    isChartGroupDataEmpty(pieDataArr, barFbArr) {
+      const pieEmpty =
+        pieDataArr == null ? true : this.isSummaryDataEmpty(pieDataArr)
+      const barEmpty = barFbArr == null ? true : this.isBarFbDataEmpty(barFbArr)
+      return pieEmpty && barEmpty
+    },
+    isMixedNoDataState(
+      pieDataArr,
+      barFbArr,
+      siblingPieDataArr,
+      siblingBarFbArr
+    ) {
+      return (
+        this.isChartGroupEmpty(pieDataArr, barFbArr) &&
+        !this.isChartGroupEmpty(siblingPieDataArr, siblingBarFbArr)
+      )
+    },
+    isAnyChartGroupVisible(
+      pieDataArr,
+      barFbArr,
+      siblingPieDataArr,
+      siblingBarFbArr
+    ) {
+      return (
+        !this.isChartGroupEmpty(pieDataArr, barFbArr) ||
+        !this.isChartGroupEmpty(siblingPieDataArr, siblingBarFbArr)
+      )
+    },
     scheduleKanbanChartResize() {
       this.$nextTick(() => {
         requestAnimationFrame(() => {
@@ -1284,6 +1751,7 @@ export default {
   display: flex;
   width: 100%;
   gap: 12px;
+  align-items: stretch;
   &--pie {
     height: 320px;
   }
@@ -1297,6 +1765,10 @@ export default {
   min-width: 0;
   height: 100%;
   box-sizing: border-box;
+  &--empty-group {
+    position: relative;
+    z-index: 1;
+  }
   ::v-deep .statisticsPage {
     width: 100% !important;
     height: 100%;
@@ -1308,6 +1780,34 @@ export default {
     }
   }
 }
+.kanban-no-data {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  color: #909399;
+  font-size: 16px;
+  line-height: 1.5;
+  text-align: center;
+  border: 1px dashed #dcdfe6;
+  border-radius: 4px;
+  background-color: #fafafa;
+  padding: 16px;
+  box-sizing: border-box;
+  &--fill {
+    height: 100%;
+  }
+  &--group {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    height: calc(320px + 12px + 400px);
+  }
+  &--group-top {
+    align-items: flex-start;
+    padding-top: 140px;
+  }
+}
 </style>
 <style lang="scss">
 .el-year-table .today .cell {