Newer
Older
smart-metering-front / src / views / measure / file / quality.vue
liyaguang on 27 Feb 2023 2 KB fix(修改计量人员部分规范):
<script lang="ts" setup name="qualityFile">
import CNASfile from './components/CNASfile.vue' // casn文件
import homeworkFile from './components/homeworkFile.vue' // 作业文件
import statute from './components/statute.vue'// 计量法规
import programFile from './components/programFile.vue' // 程序文件
import qualityManual from './components/qualityManual.vue'// 质量手册
import technicalCapability from './components/technicalCapability.vue' // 技术能力
import type { menuType } from './file-interface'
import { getDictByCode } from '@/api/system/dict'
// 菜单 - 文件类别
const menu = ref<menuType[]>([
  { name: '', comp: statute },
  { name: '', comp: qualityManual },
  { name: '', comp: programFile },
  { name: '', comp: homeworkFile },
  { name: '', comp: technicalCapability },
  { name: '', comp: CNASfile },
])
// 文件类别列表
const getMenuList = async () => {
  const response = await getDictByCode('fileType')
  menu.value.forEach((item: menuType, index: Number) => {
    item.name = response.data[index].name
  })
  console.log(menu, 'menu')
}
const current = ref('计量法规')
const currentComp = shallowRef(statute)
watch(current, (newValue) => {
  currentComp.value = menu.value.filter(item => item.name === newValue)[0]?.comp
},
{
  deep: true,
})
// 保存当前状态信息
onUnmounted(() => {
  sessionStorage.setItem('fileMenu', current.value)
})
onMounted(async () => {
  await getMenuList() // 获取状态列表
  current.value = sessionStorage.getItem('fileMenu') || '计量法规' // 赋值上次的状态信息
  sessionStorage.getItem('fileMenu') ? sessionStorage.removeItem('fileMenu') : ''
})
</script>

<template>
  <div class="container">
    <div class="btns">
      <!-- 三级菜单 -->
      <el-radio-group v-model="current">
        <el-radio-button v-for="item in menu" :key="item.name" :label="item.name">
          {{ item.name }}
        </el-radio-button>
      </el-radio-group>
    </div>
    <!-- 展示区域 -->
    <component :is="currentComp" />
  </div>
</template>

<style lang="scss" scoped>
.container {
  position: relative;

  .btns {
    position: fixed;
    top: 67px;
    right: 15px;
    z-index: 999;
  }
}
</style>