刘洋 2 жил өмнө
parent
commit
de3082bce2
30 өөрчлөгдсөн 113 нэмэгдсэн , 120 устгасан
  1. 5 5
      electron-plugin.ts
  2. 4 4
      electron/main/main.ts
  3. 1 1
      electron/main/public/loading.html
  4. 0 75
      electron/preload/preload.ts
  5. BIN
      electron/preload/public/fonts/DOUYU-Font.woff2
  6. BIN
      electron/preload/public/fonts/SourceHanSansCN-Bold.otf
  7. BIN
      electron/preload/public/fonts/SourceHanSansCN-Heavy.otf
  8. BIN
      electron/preload/public/fonts/SourceHanSansCN-Medium.otf
  9. BIN
      electron/preload/public/fonts/SourceHanSansCN-Normal.otf
  10. 11 0
      src/assets/icons/message2.svg
  11. 2 1
      src/assets/styles/var.scss
  12. 1 1
      src/components/shared/CurrentTime.vue
  13. 19 8
      src/components/shared/MarkHeader.vue
  14. 1 1
      src/components/shared/ScoringPanel.vue
  15. 2 1
      src/components/shared/ScoringPanelItem.vue
  16. 2 1
      src/components/shared/UserInfo.vue
  17. 6 1
      src/components/shared/message/Message.vue
  18. 10 0
      src/layout/main/LeftMenu.vue
  19. 14 2
      src/layout/main/MainHeader.vue
  20. 2 1
      src/layout/main/MenuItem.vue
  21. 7 4
      src/layout/main/index.vue
  22. 1 0
      src/modules/admin-data/nav/index.vue
  23. 1 0
      src/modules/admin-exam/nav/index.vue
  24. 11 10
      src/modules/analysis/view-marked-detail/index.vue
  25. 1 0
      src/modules/expert/nav/index.vue
  26. 1 1
      src/modules/marking/mark/index.vue
  27. 1 0
      src/modules/marking/nav/index.vue
  28. 1 0
      src/modules/marking/standard-nav/index.vue
  29. 8 3
      src/modules/monitor/training-monitoring/hooks/useFormFilter.ts
  30. 1 0
      src/modules/quality/nav/index.vue

+ 5 - 5
electron-plugin.ts

@@ -8,11 +8,11 @@ const useElectronPlugin: () => PluginOption = () =>
       publicDir: 'electron/main/public',
       build: { outDir: 'dist/electron/main', emptyOutDir: true },
     },
-    preload: {
-      entry: 'electron/preload/preload',
-      publicDir: 'electron/preload/public',
-      build: { outDir: 'dist/electron/preload', emptyOutDir: true },
-    },
+    // preload: {
+    //   entry: 'electron/preload/preload',
+    //   publicDir: 'electron/preload/public',
+    //   build: { outDir: 'dist/electron/preload', emptyOutDir: true },
+    // },
   })
 
 export default useElectronPlugin

+ 4 - 4
electron/main/main.ts

@@ -17,9 +17,9 @@ async function createWindow() {
     resizable: false,
     transparent: true,
     show: true,
-    webPreferences: {
-      preload: path.join(__dirname, '../preload/preload'),
-    },
+    // webPreferences: {
+    //   preload: path.join(__dirname, '../preload/preload'),
+    // },
   })
   loadingView.loadFile(resolve(__dirname, 'loading.html'))
   const mainWin = new BrowserWindow({
@@ -43,7 +43,7 @@ async function createWindow() {
       experimentalFeatures: true,
       navigateOnDragDrop: false,
       disableHtmlFullscreenWindowResize: false,
-      preload: path.join(__dirname, '../preload/preload'),
+      // preload: path.join(__dirname, '../preload/preload'),
     },
   })
 

+ 1 - 1
electron/main/public/loading.html

@@ -22,7 +22,7 @@
         display: inline-block;
         letter-spacing: -4px;
         font-size: 72px;
-        font-family: DouYu;
+        /* font-family: DouYu; */
         text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa,
           0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3),
           0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.2),

+ 0 - 75
electron/preload/preload.ts

@@ -1,75 +0,0 @@
-import path from 'path'
-function domReady(condition: DocumentReadyState[] = ['complete', 'interactive']) {
-  return new Promise((resolve) => {
-    if (condition.includes(document.readyState)) {
-      resolve(true)
-    } else {
-      document.addEventListener('readystatechange', () => {
-        if (condition.includes(document.readyState)) {
-          resolve(true)
-        }
-      })
-    }
-  })
-}
-
-const fontWeights: [number, string][] = [
-  [400, 'Normal'],
-  [500, 'Medium'],
-  [600, 'Medium'],
-  [700, 'Bold'],
-  [800, 'Heavy'],
-  [900, 'Heavy'],
-]
-
-const fontHanSanAbsolute = (weight: string) =>
-  `file://${path.resolve(__dirname, `fonts/SourceHanSansCN-${weight}.otf`)}`
-
-function prefetchFontLink(fontPath: string) {
-  const link = document.createElement('link')
-  link.rel = 'prefetch'
-  link.href = fontPath
-  link.as = 'font'
-  link.type = 'font/otf'
-  link.crossOrigin = 'crossOrigin'
-  return link
-}
-
-function setFontFace(fontFamily: string, weight: number, fontPath: string) {
-  return `
-    @font-face {
-      font-family: ${fontFamily};
-      src: url(${fontPath});
-      font-weight: ${weight};
-    }
-  `
-}
-
-function provideHanSansFont() {
-  const prefetchFragment = document.createDocumentFragment()
-  const style = document.createElement('style')
-  let styleContent = ''
-  fontWeights.forEach(([weight, type]) => {
-    const fontPath = fontHanSanAbsolute(type).replace(/\\/g, '/')
-    prefetchFragment.append(prefetchFontLink(fontPath))
-    styleContent += setFontFace('HanSan', weight, fontPath)
-  })
-  style.innerHTML = styleContent
-  document.head.insertBefore(prefetchFragment, null)
-  document.head.appendChild(style)
-}
-
-function provideDouYuFont() {
-  const fontDouYuAbsolute = `file://${path.resolve(__dirname, `fonts/DOUYU-Font.woff2`)}`.replace(/\\/g, '/')
-  const prefetchLink = prefetchFontLink(fontDouYuAbsolute)
-  const style = document.createElement('style')
-  style.innerHTML = setFontFace('DouYu', 700, fontDouYuAbsolute)
-  document.head.insertBefore(prefetchLink, null)
-  document.head.appendChild(style)
-}
-
-domReady().then(() => {
-  /** provideFont */
-  provideHanSansFont()
-  provideDouYuFont()
-})

BIN
electron/preload/public/fonts/DOUYU-Font.woff2


BIN
electron/preload/public/fonts/SourceHanSansCN-Bold.otf


BIN
electron/preload/public/fonts/SourceHanSansCN-Heavy.otf


BIN
electron/preload/public/fonts/SourceHanSansCN-Medium.otf


BIN
electron/preload/public/fonts/SourceHanSansCN-Normal.otf


+ 11 - 0
src/assets/icons/message2.svg

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="14px" height="16px" viewBox="0 0 14 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>消息</title>
+    <g id="大组长" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="修改样式2" transform="translate(-1445.000000, -20.000000)" fill="#CCCCCC">
+            <g id="编组-3" transform="translate(1445.000000, 20.000000)">
+                <path d="M7,16 C6.25996375,16 5.61380357,15.5980687 5.26790938,15.0005962 L8.73209062,15.0005962 C8.38619643,15.5980687 7.74003625,16 7,16 Z M0,14 C-6.76353751e-17,13.4477153 0.44771525,13 1,13 L1,7 C1,4.38442963 2.67362191,2.15975461 5.00838632,1.33845432 C5.088647,0.586479877 5.72583364,1.42212053e-16 6.5,0 L7.5,0 C8.27416636,-1.42212053e-16 8.911353,0.586479877 8.99150137,1.33938107 C11.3263781,2.15975461 13,4.38442963 13,7 L13,13 C13.5522847,13 14,13.4477153 14,14 C14,14.5522847 13.5522847,15 13,15 L1,15 C0.44771525,15 6.76353751e-17,14.5522847 0,14 Z M7,3 C4.85780461,3 3.10892112,4.68396847 3.00489531,6.80035966 L3,7 L3,13 L11,13 L11,7 C11,4.790861 9.209139,3 7,3 Z" id="形状结合"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 2 - 1
src/assets/styles/var.scss

@@ -50,7 +50,8 @@ $BlockTitleColor: map-get($ep-text-color, 'primary');
 
 /** layout */
 $MainLayoutHeaderHeight: 56px;
-$MainLayoutHeaderBg: $color--white;
+// $MainLayoutHeaderBg: $color--white;
+$MainLayoutHeaderBg: #333;
 $MainLayoutHeaderLogoFontSize: map-get($ep-font-size, 'medium');
 $MainLayoutHeaderLogoFontColor: $color--primary-plus;
 $LayoutLeftMenuBg: $color--white;

+ 1 - 1
src/components/shared/CurrentTime.vue

@@ -13,6 +13,6 @@ const time = useTime()
 
 <style scoped lang="scss">
 .current-time-box {
-  width: 125px;
+  width: 136px;
 }
 </style>

+ 19 - 8
src/components/shared/MarkHeader.vue

@@ -4,7 +4,7 @@
       <div v-for="button in usedOperations" :key="button.type" class="btn-item">
         <div
           :ref="(el) => bindRef(button.type, el)"
-          class="grid pointer radius-circle fill-light operation-button"
+          class="grid pointer radius-circle operation-button"
           :title="button.title"
           @click="onOperationClick(button)"
         >
@@ -13,7 +13,7 @@
             style="font-size: 15px"
           ></svg-icon>
         </div>
-        <p class="icon-title">{{ button.title }}</p>
+        <p class="icon-title">{{ button.smallTitle || button.title }}</p>
       </div>
     </div>
     <color-picker v-model="frontColor" :virtual-ref="refs['front-color']" virtual-triggering></color-picker>
@@ -26,7 +26,7 @@
       </span>
       <span class="data-item is-last"><user-info></user-info></span>
 
-      <div class="grid fill-light-gray pointer close-icon" @click="willLogout">
+      <div class="grid pointer close-icon" @click="willLogout">
         <el-icon><close /></el-icon>
       </div>
     </div>
@@ -65,6 +65,7 @@ type ButtonType =
 interface HeaderButton {
   title: string
   type: ButtonType
+  smallTitle?: string
 }
 
 type EventType = Exclude<ButtonType, 'scale-up' | 'scale-down'> | 'scale-change'
@@ -107,7 +108,7 @@ const buttons: HeaderButton[] = [
   { title: '问题卷', type: 'problem' },
   { title: '查看样卷', type: 'example' },
   { title: '评分标准', type: 'standard' },
-  { title: '删除当前专家卷', type: 'delete' },
+  { title: '删除当前专家卷', type: 'delete', smallTitle: '删除' },
   { title: '设置专家卷', type: 'bookmark' },
 ]
 
@@ -260,6 +261,8 @@ const willLogout = async () => {
       },
     })
     logout()
+  } else {
+    logout()
   }
 }
 // onUnmounted(() => {
@@ -288,12 +291,15 @@ const willLogout = async () => {
   .icon-title {
     font-size: 8px;
     transform: scale(0.9);
+    color: #999;
   }
   .operation-button {
     width: 30px;
     height: 30px;
     place-items: center;
     color: $RegularFontColor;
+    background-color: rgba(255, 255, 255, 0.1);
+    color: #fff;
     margin-left: auto;
     margin-right: auto;
     &:hover {
@@ -303,8 +309,10 @@ const willLogout = async () => {
   }
   .mark-header {
     margin-left: auto;
-    color: $RegularFontColor;
+    // color: $RegularFontColor;
+    color: #999;
     font-size: $SmallFont;
+    font-weight: bold;
     ::v-deep(.data-item) {
       padding-left: 20px;
       // display: flex;
@@ -329,6 +337,7 @@ const willLogout = async () => {
         font-weight: bold;
         color: $color--primary;
         margin-bottom: 5px;
+        max-width: 135px;
       }
     }
 
@@ -339,11 +348,13 @@ const willLogout = async () => {
       font-size: 1.4em;
       border-radius: 50%;
       place-items: center;
-      color: #666;
+      color: #ccc;
       transition: all 0.3s ease-in-out;
+      background-color: #222;
       &:hover {
-        background-color: #dfdfdf;
-        color: #444;
+        color: #fff;
+        font-weight: bold;
+        background-color: rgba(255, 255, 255, 0.1);
       }
     }
   }

+ 1 - 1
src/components/shared/ScoringPanel.vue

@@ -11,7 +11,7 @@
   >
     <div class="scoring-panel-box" :class="getClass('modal-box')">
       <template v-for="(question, index) in questionList" :key="question.mainNumber + question.subNumber">
-        <div class="flex dialog-name items-center">
+        <div v-if="dialogMode" class="flex dialog-name items-center">
           <p>{{ question.mainNumber }} - {{ question.subNumber }}</p>
           <p class="main-title">{{ question.mainTitle }}</p>
         </div>

+ 2 - 1
src/components/shared/ScoringPanelItem.vue

@@ -262,7 +262,8 @@ const onToggleClick = () => {
 
 <style scoped lang="scss">
 .scoring-panel {
-  background-color: $MainLayoutHeaderBg;
+  // background-color: $MainLayoutHeaderBg;
+  background-color: #fff;
   font-size: $MediumFont;
   margin-bottom: 6px;
 

+ 2 - 1
src/components/shared/UserInfo.vue

@@ -27,7 +27,8 @@ const visibleUpdatePwd = ref<boolean>(false)
 
 <style scoped lang="scss">
 .user-info {
-  color: $RegularFontColor;
+  // color: $RegularFontColor;
+  color: #999;
   font-size: $SmallFont;
 }
 </style>

+ 6 - 1
src/components/shared/message/Message.vue

@@ -4,7 +4,8 @@
       <span v-show="unReadMessages?.newCount" class="un-read-num">
         {{ (unReadMessages?.newCount || 0) > 99 ? '99+' : unReadMessages?.newCount }}
       </span>
-      <svg-icon name="message" class="bell"></svg-icon>
+      <svg-icon v-if="inLayout" name="message" class="bell"></svg-icon>
+      <svg-icon v-else name="message2" class="bell"></svg-icon>
     </div>
     <el-popover
       placement="bottom-start"
@@ -75,6 +76,7 @@ const props = withDefaults(
     replyUserId?: number | null
     messageVisible?: boolean | null
     paperPath?: string | null
+    inLayout?: boolean
   }>(),
   { type: 'view', replyUserId: null, paperPath: null, messageVisible: false }
 )
@@ -192,6 +194,9 @@ const onSendMessage = () => {
   position: relative;
   .bell {
     cursor: pointer;
+    &:hover {
+      color: #fff;
+    }
   }
   .un-read-num {
     position: absolute;

+ 10 - 0
src/layout/main/LeftMenu.vue

@@ -67,10 +67,20 @@ const onHandle = () => {
   padding: $BaseGapSpace 0;
   border-right: none;
   font-weight: bold;
+  background-color: #333;
 }
 .main-layout-left-menu {
   :deep(.el-sub-menu .el-menu-item) {
     height: 34px !important;
   }
+  :deep(.el-menu) {
+    background-color: #333;
+    .el-menu-item {
+      color: #999;
+      &.is-active {
+        color: #fff;
+      }
+    }
+  }
 }
 </style>

+ 14 - 2
src/layout/main/MainHeader.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="flex items-center main-layout-header">
+  <div class="flex items-center main-layout-header" :class="{ 'in-layout': inLayout }">
     <div class="pointer c-icon collapse-icon" @click="mainLayoutStore.toggleCollapse()">
       <el-icon>
         <expand v-if="mainLayoutStore.collapse" />
@@ -10,7 +10,11 @@
       <div>当前考试: {{ mainStore?.myUserInfo?.examName }}</div>
       <current-time class="m-l-auto m-r-base"></current-time>
       <div class="m-r-base">
-        <message :reply-user-id="props.replyUserId" :message-visible="props.messageVisible"></message>
+        <message
+          :reply-user-id="props.replyUserId"
+          :message-visible="props.messageVisible"
+          :in-layout="inLayout"
+        ></message>
       </div>
       <div class="m-r-base">
         <user-info></user-info>
@@ -35,6 +39,7 @@ import UserInfo from '@/components/shared/UserInfo.vue'
 const props = defineProps<{
   replyUserId?: number | null
   messageVisible?: boolean
+  inLayout?: boolean
 }>()
 
 const mainLayoutStore = useMainLayoutStore()
@@ -48,12 +53,19 @@ const mainStore = useMainStore()
   background-color: $MainLayoutHeaderBg;
   padding: 0 $BaseGapSpace 0 $ExtraSmallGapSpace;
   border-bottom: $OnePixelLine;
+  &.in-layout {
+    background-color: #fff;
+    :deep(.user-info) {
+      color: #666 !important;
+    }
+  }
   .collapse-icon {
     padding: $ExtraSmallGapSpace;
   }
   .header-info-view {
     color: $RegularFontColor;
     font-size: $SmallFont;
+    font-weight: bold;
     .close-icon {
       width: 32px;
       height: 32px;

+ 2 - 1
src/layout/main/MenuItem.vue

@@ -89,7 +89,8 @@ const hasChildren = computed(() => !!menuInfo.value.children.length)
     padding-left: $ExtraBaseGapSpace;
   }
   .main-layout-sub-menu-title {
-    color: $LayoutLeftSubMenuColor;
+    // color: $LayoutLeftSubMenuColor;
+    color: #fff;
     .menu-label {
       margin-left: $ExtraSmallGapSpace;
     }

+ 7 - 4
src/layout/main/index.vue

@@ -10,7 +10,7 @@
       </div>
     </div>
     <div class="flex flex-1 direction-column scroll-auto main-layout-right">
-      <main-header :reply-user-id="replyUserId" :message-visible="messageVisible"></main-header>
+      <main-header :reply-user-id="replyUserId" :message-visible="messageVisible" :in-layout="true"></main-header>
       <div class="flex-1 scroll-auto main-layout-right-content">
         <RouterView></RouterView>
       </div>
@@ -48,7 +48,8 @@ provide('setMessageVisible', setMessageVisible)
   height: 100%;
   .main-layout-left {
     width: $LayoutLeftMenuWidth;
-    background-color: $LayoutLeftMenuBg;
+    // background-color: $LayoutLeftMenuBg;
+    background-color: #333;
     transition: $LayoutLeftMenuTransition;
     border-right: $OnePixelLine;
     &.is-collapse {
@@ -57,9 +58,11 @@ provide('setMessageVisible', setMessageVisible)
     .main-layout-left-logo {
       min-height: $MainLayoutHeaderHeight;
       margin: 0 $BaseGapSpace;
-      border-bottom: $OnePixelLine;
+      // border-bottom: $OnePixelLine;
+      border-bottom: 1px solid #eee;
       font-size: $MainLayoutHeaderLogoFontSize;
-      color: $MainLayoutHeaderLogoFontColor;
+      // color: $MainLayoutHeaderLogoFontColor;
+      color: #fff;
     }
   }
   .main-layout-right {

+ 1 - 0
src/modules/admin-data/nav/index.vue

@@ -65,6 +65,7 @@ const { hasPermissions } = useNavPermissions()
     .nav-title {
       color: $PrimaryPlusFontColor;
       font-size: $MediumFont;
+      font-weight: bold;
     }
   }
 }

+ 1 - 0
src/modules/admin-exam/nav/index.vue

@@ -57,6 +57,7 @@ const { hasPermissions } = useNavPermissions()
     .nav-title {
       color: $PrimaryPlusFontColor;
       font-size: $MediumFont;
+      font-weight: bold;
     }
   }
 }

+ 11 - 10
src/modules/analysis/view-marked-detail/index.vue

@@ -20,6 +20,16 @@
         <div class="flex-1 p-base scroll-auto mark-content-paper">
           <img :src="dataUrl" alt="" class="paper-img" :style="{ 'background-color': frontColor }" />
         </div>
+        <scoring-panel-with-confirm
+          :id="current?.taskId"
+          v-model:visible="editScoreVisible"
+          v-model:score="modelScore"
+          :main-number="current?.mainNumber"
+          modal
+          :auto-visible="false"
+          :toggle-modal="false"
+          @submit="onSubmit"
+        ></scoring-panel-with-confirm>
       </div>
       <div class="flex direction-column p-base radius-base fill-blank m-l-base table-view">
         <div class="flex items-center p-b-base m-b-base marker-name">
@@ -58,16 +68,7 @@
     </div>
   </div>
   <image-preview v-model="previewModalVisible" :url="current?.filePath"></image-preview>
-  <scoring-panel-with-confirm
-    :id="current?.taskId"
-    v-model:visible="editScoreVisible"
-    v-model:score="modelScore"
-    :main-number="current?.mainNumber"
-    modal
-    :auto-visible="false"
-    :toggle-modal="false"
-    @submit="onSubmit"
-  ></scoring-panel-with-confirm>
+
   <mark-history-list :id="currentViewHistory?.taskId" v-model="visibleHistory"></mark-history-list>
 </template>
 

+ 1 - 0
src/modules/expert/nav/index.vue

@@ -81,6 +81,7 @@ const { hasPermissions } = useNavPermissions()
     .nav-title {
       color: $PrimaryPlusFontColor;
       font-size: $MediumFont;
+      font-weight: bold;
     }
   }
 }

+ 1 - 1
src/modules/marking/mark/index.vue

@@ -7,7 +7,7 @@
       </div>
       <!-- <span v-show="currentTask" class="data-item">密号: {{ currentTask?.secretNumber }}</span> -->
       <div v-show="currentTask" class="data-item">
-        <p class="main-ques-info">{{ currentTask?.mainNumber }}-{{ currentTask?.mainTitle }}</p>
+        <p class="main-ques-info truncate">{{ currentTask?.mainNumber }}-{{ currentTask?.mainTitle }}</p>
         <p>密号: {{ currentTask?.secretNumber }}</p>
       </div>
       <div class="data-item">

+ 1 - 0
src/modules/marking/nav/index.vue

@@ -121,6 +121,7 @@ const { hasPermissions } = useNavPermissions()
     .nav-title {
       color: $PrimaryPlusFontColor;
       font-size: $MediumFont;
+      font-weight: bold;
     }
   }
 }

+ 1 - 0
src/modules/marking/standard-nav/index.vue

@@ -54,6 +54,7 @@
     .nav-title {
       color: $PrimaryPlusFontColor;
       font-size: $MediumFont;
+      font-weight: bold;
     }
   }
 }

+ 8 - 3
src/modules/monitor/training-monitoring/hooks/useFormFilter.ts

@@ -80,8 +80,11 @@ const useFormFilter = () => {
     }
   })
 
+  const isSmallScreen = window.innerWidth < 1300
+  // let isMiddleScreen = window.innerWidth<1400;
   const OneRowSpan2 = defineColumn(_, 'row-1', { span: 2 })
-  const OneRowSpan5 = defineColumn(_, 'row-1', { span: 3 })
+  const OneRowSpan3 = defineColumn(_, 'row-1', { span: 3 })
+  const OneRowSpan5 = defineColumn(_, 'row-1', { span: isSmallScreen ? 5 : 4 })
   // const TwoRowSpan5 = defineColumn(_, 'row-2', { span: 5 })
 
   const items = computed<EpFormItem[]>(() => {
@@ -90,7 +93,7 @@ const useFormFilter = () => {
         label: '科目',
         prop: 'subjectCode',
         slotType: 'select',
-        labelWidth: '50px',
+        labelWidth: '38px',
         slot: {
           options: subjectList.value,
           onChange: changeModelValue('subject'),
@@ -144,9 +147,11 @@ const useFormFilter = () => {
             },
           })
         : null,
-      OneRowSpan5({
+      OneRowSpan2({
         label: '差值展示',
         slotType: 'checkbox',
+        labelWidth: 70,
+
         prop: 'diffShow',
         slot: { options: [{ label: '是' }] },
       }),

+ 1 - 0
src/modules/quality/nav/index.vue

@@ -73,6 +73,7 @@ const { hasPermissions } = useNavPermissions()
     .nav-title {
       color: $PrimaryPlusFontColor;
       font-size: $MediumFont;
+      font-weight: bold;
     }
   }
 }