|  | @@ -1,134 +1,193 @@
 | 
											
												
													
														|  |  <template>
 |  |  <template>
 | 
											
												
													
														|  | -    <div class="dz-list">
 |  | 
 | 
											
												
													
														|  | -        <div class="icons-box" @mouseleave="resetScroll">
 |  | 
 | 
											
												
													
														|  | -            <template v-for="(item, key) in listOption" :key="key">
 |  | 
 | 
											
												
													
														|  | -                <div class="icon-item">
 |  | 
 | 
											
												
													
														|  | -                    <!-- <img :src="item.url" :alt="item.text" /> -->
 |  | 
 | 
											
												
													
														|  | -                    <div class="level-text">
 |  | 
 | 
											
												
													
														|  | -                        <div class="all-count">
 |  | 
 | 
											
												
													
														|  | -                            <span>{{ `${item.allText} : ` }}</span>
 |  | 
 | 
											
												
													
														|  | -                            <span class="num-count">{{ listData[item.allCount] || 0 }}</span>
 |  | 
 | 
											
												
													
														|  | -                        </div>
 |  | 
 | 
											
												
													
														|  | -                        <div class="warn-count">
 |  | 
 | 
											
												
													
														|  | -                            <span>{{ `${item.warnText} : ` }}</span>
 |  | 
 | 
											
												
													
														|  | -                            <span :class="item.warnCount ? 'num-count1' : 'num-count'">{{ listData[item.warnCount] || 0
 |  | 
 | 
											
												
													
														|  | -                            }}</span>
 |  | 
 | 
											
												
													
														|  | -                        </div>
 |  | 
 | 
											
												
													
														|  | -                        <div class="close-count">
 |  | 
 | 
											
												
													
														|  | -                            <span> {{ `${item.closeText} : ` }}</span>
 |  | 
 | 
											
												
													
														|  | -                            <span :class="item.closeCount ? 'num-count1' : 'num-count'">{{ listData[item.closeCount] ||
 |  | 
 | 
											
												
													
														|  | -                                0
 |  | 
 | 
											
												
													
														|  | -                            }}</span>
 |  | 
 | 
											
												
													
														|  | -                        </div>
 |  | 
 | 
											
												
													
														|  | -                    </div>
 |  | 
 | 
											
												
													
														|  | -                </div>
 |  | 
 | 
											
												
													
														|  | -            </template>
 |  | 
 | 
											
												
													
														|  | 
 |  | +  <div class="dz-list">
 | 
											
												
													
														|  | 
 |  | +    <div :class="deviceType == 'deviceManageInfo' ? 'icons-box1' : 'icons-box'" @mouseleave="resetScroll">
 | 
											
												
													
														|  | 
 |  | +      <template v-for="(item, key) in listOption" :key="key">
 | 
											
												
													
														|  | 
 |  | +        <div class="icon-item">
 | 
											
												
													
														|  | 
 |  | +          <!-- <img :src="item.url" :alt="item.text" /> -->
 | 
											
												
													
														|  | 
 |  | +          <div class="level-text">
 | 
											
												
													
														|  | 
 |  | +            <div class="all-count">
 | 
											
												
													
														|  | 
 |  | +              <span>{{ `${item.allText} : ` }}</span>
 | 
											
												
													
														|  | 
 |  | +              <span class="num-count">{{ listData[item.allCount] || 0 }}</span>
 | 
											
												
													
														|  | 
 |  | +            </div>
 | 
											
												
													
														|  | 
 |  | +            <div class="warn-count">
 | 
											
												
													
														|  | 
 |  | +              <span>{{ `${item.warnText} : ` }}</span>
 | 
											
												
													
														|  | 
 |  | +              <span :class="item.warnCount ? 'num-count1' : 'num-count'">{{ listData[item.warnCount] || 0 }}</span>
 | 
											
												
													
														|  | 
 |  | +            </div>
 | 
											
												
													
														|  | 
 |  | +            <div class="close-count">
 | 
											
												
													
														|  | 
 |  | +              <span> {{ `${item.closeText} : ` }}</span>
 | 
											
												
													
														|  | 
 |  | +              <span :class="item.closeCount ? 'num-count1' : 'num-count'">{{ listData[item.closeCount] || 0 }}</span>
 | 
											
												
													
														|  | 
 |  | +            </div>
 | 
											
												
													
														|  | 
 |  | +          </div>
 | 
											
												
													
														|  |          </div>
 |  |          </div>
 | 
											
												
													
														|  | 
 |  | +      </template>
 | 
											
												
													
														|  |      </div>
 |  |      </div>
 | 
											
												
													
														|  | 
 |  | +  </div>
 | 
											
												
													
														|  |  </template>
 |  |  </template>
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  <script setup lang="ts">
 |  |  <script setup lang="ts">
 | 
											
												
													
														|  | -import { ref, reactive, watch } from 'vue'
 |  | 
 | 
											
												
													
														|  | 
 |  | +import { ref, reactive, watch } from 'vue';
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  let props = defineProps({
 |  |  let props = defineProps({
 | 
											
												
													
														|  | -    listOption: {
 |  | 
 | 
											
												
													
														|  | -        type: Object,
 |  | 
 | 
											
												
													
														|  | -        default: () => {
 |  | 
 | 
											
												
													
														|  | -            return {}
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | 
 |  | +  listOption: {
 | 
											
												
													
														|  | 
 |  | +    type: Object,
 | 
											
												
													
														|  | 
 |  | +    default: () => {
 | 
											
												
													
														|  | 
 |  | +      return {};
 | 
											
												
													
														|  |      },
 |  |      },
 | 
											
												
													
														|  | -    listData: {
 |  | 
 | 
											
												
													
														|  | -        type: Object,
 |  | 
 | 
											
												
													
														|  | -        default: () => {
 |  | 
 | 
											
												
													
														|  | -            return {}
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -})
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | 
 |  | +  },
 | 
											
												
													
														|  | 
 |  | +  listData: {
 | 
											
												
													
														|  | 
 |  | +    type: Object,
 | 
											
												
													
														|  | 
 |  | +    default: () => {
 | 
											
												
													
														|  | 
 |  | +      return {};
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +  },
 | 
											
												
													
														|  | 
 |  | +  deviceType: {
 | 
											
												
													
														|  | 
 |  | +    type: String,
 | 
											
												
													
														|  | 
 |  | +    default: '',
 | 
											
												
													
														|  | 
 |  | +  },
 | 
											
												
													
														|  | 
 |  | +});
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  const resetScroll = (e: Event) => {
 |  |  const resetScroll = (e: Event) => {
 | 
											
												
													
														|  | -    if (e.target && e.target) (e.target as Element).scrollTop = 0;
 |  | 
 | 
											
												
													
														|  | 
 |  | +  if (e.target && e.target) (e.target as Element).scrollTop = 0;
 | 
											
												
													
														|  |  };
 |  |  };
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -watch(() => props.listData, (newV, oldV) => {
 |  | 
 | 
											
												
													
														|  | -    console.log(newV, '设备')
 |  | 
 | 
											
												
													
														|  | -}, { immediate: true, deep: true })
 |  | 
 | 
											
												
													
														|  | 
 |  | +watch(
 | 
											
												
													
														|  | 
 |  | +  () => props.listData,
 | 
											
												
													
														|  | 
 |  | +  (newV, oldV) => {
 | 
											
												
													
														|  | 
 |  | +    console.log(newV, '设备');
 | 
											
												
													
														|  | 
 |  | +  },
 | 
											
												
													
														|  | 
 |  | +  { immediate: true, deep: true }
 | 
											
												
													
														|  | 
 |  | +);
 | 
											
												
													
														|  |  </script>
 |  |  </script>
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  <style lang="less" scoped>
 |  |  <style lang="less" scoped>
 | 
											
												
													
														|  |  @import '/@/design/theme.less';
 |  |  @import '/@/design/theme.less';
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  @{theme-deepblue} {
 |  |  @{theme-deepblue} {
 | 
											
												
													
														|  | -    .dz-list {
 |  | 
 | 
											
												
													
														|  | -        --image-model_icon-item: url('@/assets/images/themify/deepblue/home-container/configurable/1600.png');
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | 
 |  | +  .dz-list {
 | 
											
												
													
														|  | 
 |  | +    --image-model_icon-item: url('@/assets/images/themify/deepblue/home-container/configurable/1600.png');
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |  .dz-list {
 |  |  .dz-list {
 | 
											
												
													
														|  | -    --image-model_icon-item: url('@/assets/images/home-green/1600.png');
 |  | 
 | 
											
												
													
														|  | 
 |  | +  --image-model_icon-item: url('@/assets/images/home-green/1600.png');
 | 
											
												
													
														|  | 
 |  | +  width: 100%;
 | 
											
												
													
														|  | 
 |  | +  height: 100%;
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +.icons-box {
 | 
											
												
													
														|  | 
 |  | +  height: 100%;
 | 
											
												
													
														|  | 
 |  | +  overflow-y: hidden;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +  &:hover {
 | 
											
												
													
														|  | 
 |  | +    overflow-y: auto;
 | 
											
												
													
														|  | 
 |  | +    overflow-x: auto;
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +  .icon-item {
 | 
											
												
													
														|  | 
 |  | +    position: relative;
 | 
											
												
													
														|  |      width: 100%;
 |  |      width: 100%;
 | 
											
												
													
														|  | -    height: 100%;
 |  | 
 | 
											
												
													
														|  | 
 |  | +    height: 46px;
 | 
											
												
													
														|  | 
 |  | +    background: var(--image-model_icon-item) no-repeat;
 | 
											
												
													
														|  | 
 |  | +    background-size: 100% 100%;
 | 
											
												
													
														|  | 
 |  | +    display: flex;
 | 
											
												
													
														|  | 
 |  | +    align-items: center;
 | 
											
												
													
														|  | 
 |  | +    justify-content: center;
 | 
											
												
													
														|  | 
 |  | +    margin: 5px auto;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    &:nth-child(even) {
 | 
											
												
													
														|  | 
 |  | +      padding-right: 0px;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    .icons-box {
 |  | 
 | 
											
												
													
														|  | -        height: 100%;
 |  | 
 | 
											
												
													
														|  | -        overflow-y: hidden;
 |  | 
 | 
											
												
													
														|  | 
 |  | +    .level-text {
 | 
											
												
													
														|  | 
 |  | +      width: 76%;
 | 
											
												
													
														|  | 
 |  | +      display: flex;
 | 
											
												
													
														|  | 
 |  | +      justify-content: space-around;
 | 
											
												
													
														|  | 
 |  | +      position: absolute;
 | 
											
												
													
														|  | 
 |  | +      top: 10px;
 | 
											
												
													
														|  | 
 |  | +      left: 76px;
 | 
											
												
													
														|  | 
 |  | +      color: #ffffffe0;
 | 
											
												
													
														|  | 
 |  | +      font-size: 14px;
 | 
											
												
													
														|  | 
 |  | +      text-align: center;
 | 
											
												
													
														|  | 
 |  | +      letter-spacing: 1px;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +      .num-count,
 | 
											
												
													
														|  | 
 |  | +      .num-count1 {
 | 
											
												
													
														|  | 
 |  | +        font-family: 'douyuFont';
 | 
											
												
													
														|  | 
 |  | +        font-size: 12px;
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +      .warn-count,
 | 
											
												
													
														|  | 
 |  | +      .close-count {
 | 
											
												
													
														|  | 
 |  | +        .num-count {
 | 
											
												
													
														|  | 
 |  | +          color: #ffffffe0;
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        &:hover {
 |  | 
 | 
											
												
													
														|  | -            overflow-y: auto;
 |  | 
 | 
											
												
													
														|  | -            overflow-x: auto;
 |  | 
 | 
											
												
													
														|  | 
 |  | +        .num-count1 {
 | 
											
												
													
														|  | 
 |  | +          color: #ff0000;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        .icon-item {
 |  | 
 | 
											
												
													
														|  | -            position: relative;
 |  | 
 | 
											
												
													
														|  | -            width: 100%;
 |  | 
 | 
											
												
													
														|  | -            height: 46px;
 |  | 
 | 
											
												
													
														|  | -            background: var(--image-model_icon-item) no-repeat;
 |  | 
 | 
											
												
													
														|  | -            background-size: 100% 100%;
 |  | 
 | 
											
												
													
														|  | -            display: flex;
 |  | 
 | 
											
												
													
														|  | -            align-items: center;
 |  | 
 | 
											
												
													
														|  | -            justify-content: center;
 |  | 
 | 
											
												
													
														|  | -            margin: 5px auto;
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -            &:nth-child(even) {
 |  | 
 | 
											
												
													
														|  | -                padding-right: 0px;
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -            .level-text {
 |  | 
 | 
											
												
													
														|  | -                width: 76%;
 |  | 
 | 
											
												
													
														|  | -                display: flex;
 |  | 
 | 
											
												
													
														|  | -                justify-content: space-around;
 |  | 
 | 
											
												
													
														|  | -                position: absolute;
 |  | 
 | 
											
												
													
														|  | -                top: 10px;
 |  | 
 | 
											
												
													
														|  | -                left: 76px;
 |  | 
 | 
											
												
													
														|  | -                color: #ffffffe0;
 |  | 
 | 
											
												
													
														|  | -                font-size: 14px;
 |  | 
 | 
											
												
													
														|  | -                text-align: center;
 |  | 
 | 
											
												
													
														|  | -                letter-spacing: 1px;
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -                .num-count,
 |  | 
 | 
											
												
													
														|  | -                .num-count1 {
 |  | 
 | 
											
												
													
														|  | -                    font-family: 'douyuFont';
 |  | 
 | 
											
												
													
														|  | -                    font-size: 12px;
 |  | 
 | 
											
												
													
														|  | -                }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -                .warn-count,
 |  | 
 | 
											
												
													
														|  | -                .close-count {
 |  | 
 | 
											
												
													
														|  | -                    .num-count {
 |  | 
 | 
											
												
													
														|  | -                        color: #ffffffe0;
 |  | 
 | 
											
												
													
														|  | -                    }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -                    .num-count1 {
 |  | 
 | 
											
												
													
														|  | -                        color: #ff0000;
 |  | 
 | 
											
												
													
														|  | -                    }
 |  | 
 | 
											
												
													
														|  | -                }
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -            img {
 |  | 
 | 
											
												
													
														|  | -                width: 100%;
 |  | 
 | 
											
												
													
														|  | -                height: 60px;
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | 
 |  | +    img {
 | 
											
												
													
														|  | 
 |  | +      width: 100%;
 | 
											
												
													
														|  | 
 |  | +      height: 60px;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +.icons-box1 {
 | 
											
												
													
														|  | 
 |  | +  width: 100%;
 | 
											
												
													
														|  | 
 |  | +  height: 100%;
 | 
											
												
													
														|  | 
 |  | +  display: flex;
 | 
											
												
													
														|  | 
 |  | +  flex-wrap: wrap;
 | 
											
												
													
														|  | 
 |  | +  gap: 10px;
 | 
											
												
													
														|  | 
 |  | +  overflow-y: hidden;
 | 
											
												
													
														|  | 
 |  | +  padding: 5px;
 | 
											
												
													
														|  | 
 |  | +  box-sizing: border-box;
 | 
											
												
													
														|  | 
 |  | +  &:hover {
 | 
											
												
													
														|  | 
 |  | +    overflow-y: auto;
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +  .icon-item {
 | 
											
												
													
														|  | 
 |  | +    flex: 0 0 calc(50% - 5px);
 | 
											
												
													
														|  | 
 |  | +    height: 46px;
 | 
											
												
													
														|  | 
 |  | +    background: var(--image-model_icon-item) no-repeat;
 | 
											
												
													
														|  | 
 |  | +    background-size: 100% 100%;
 | 
											
												
													
														|  | 
 |  | +    position: relative;
 | 
											
												
													
														|  | 
 |  | +    display: flex;
 | 
											
												
													
														|  | 
 |  | +    align-items: center;
 | 
											
												
													
														|  | 
 |  | +    justify-content: center;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    .level-text {
 | 
											
												
													
														|  | 
 |  | +      width: 76%;
 | 
											
												
													
														|  | 
 |  | +      display: flex;
 | 
											
												
													
														|  | 
 |  | +      justify-content: space-around;
 | 
											
												
													
														|  | 
 |  | +      position: absolute;
 | 
											
												
													
														|  | 
 |  | +      top: 10px;
 | 
											
												
													
														|  | 
 |  | +      left: 76px;
 | 
											
												
													
														|  | 
 |  | +      color: #ffffffe0;
 | 
											
												
													
														|  | 
 |  | +      font-size: 14px;
 | 
											
												
													
														|  | 
 |  | +      text-align: center;
 | 
											
												
													
														|  | 
 |  | +      letter-spacing: 1px;
 | 
											
												
													
														|  | 
 |  | +      .num-count,
 | 
											
												
													
														|  | 
 |  | +      .num-count1 {
 | 
											
												
													
														|  | 
 |  | +        font-family: 'douyuFont';
 | 
											
												
													
														|  | 
 |  | +        font-size: 12px;
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +      .warn-count,
 | 
											
												
													
														|  | 
 |  | +      .close-count {
 | 
											
												
													
														|  | 
 |  | +        .num-count {
 | 
											
												
													
														|  | 
 |  | +          color: #ffffffe0;
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        .num-count1 {
 | 
											
												
													
														|  | 
 |  | +          color: #ff0000;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    img {
 | 
											
												
													
														|  | 
 |  | +      width: 100%;
 | 
											
												
													
														|  | 
 |  | +      height: 60px;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  </style>
 |  |  </style>
 |