|
|
@@ -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 {
|