GlobalPublicConfiguration.vue 3.3 KB
<script lang="ts" setup>
import { SettingItem, SettingItemBox } from '@/components/Pages/ChartItemSetting';
import { icon } from '@/plugins';
import { NButton, NCard, NCollapseTransition, NIcon, NInput, NInputGroup, NInputNumber, NSelect, NSpace, NTag, NTooltip, SelectOption } from 'naive-ui';
import { computed, ref, unref } from 'vue';
import GlobalParamsConfiguration from './GlobalParamsConfiguration.vue'
import { ChevronDown, ChevronUp } from '@vicons/carbon'
import { useDesignStore } from '@/store/modules/designStore/designStore';
import { selectTimeOptions } from '../../../index.d';
import { useTargetData } from '../../../../hooks/useTargetData.hook';
import { RequestHttpIntervalEnum } from '@/enums/httpEnum';

const { PencilIcon } = icon.ionicons5
const designStore = useDesignStore()
const editDisabled = ref(false)
const collapseHeaderTable = ref(false)

const { chartEditStore } = useTargetData()

const handleCollapse = () => {
  collapseHeaderTable.value = !unref(collapseHeaderTable)
}


// 颜色
const themeColor = computed(() => {
  return designStore.getAppTheme
})



</script>

<template>
  <NCard>
    <template #header>
      <NTag type="info">全局公共配置</NTag>
    </template>
    <NSpace vertical>
      <SettingItemBox name="服务" :itemRightStyle="{
        gridTemplateColumns: '5fr 2fr 1fr'
      }">
        <!-- 源地址 -->
        <SettingItem name="前置 URL">
          <NInput v-model:value="chartEditStore.requestGlobalConfig.requestOriginUrl" default-value="http://127.0.0.1" :disabled="editDisabled"
            size="small" placeholder="例:http://127.0.0.1"></NInput>
        </SettingItem>
        <SettingItem name="更新间隔,为 0 只会初始化">
          <NInputGroup>
            <NInputNumber v-model:value="chartEditStore.requestGlobalConfig.requestInterval" class="select-time-number"
              size="small" min="0" :show-button="false" :disabled="editDisabled" placeholder="请输入数字">
            </NInputNumber>
            <!-- 单位 -->
            <NSelect v-model:value="chartEditStore.requestGlobalConfig.requestIntervalUnit" class="select-time-options"
              size="small" :default-value="RequestHttpIntervalEnum.SECOND" :options="selectTimeOptions as SelectOption[]"
              :disabled="editDisabled" />
          </NInputGroup>
        </SettingItem>
        <NButton v-show="editDisabled" type="primary" ghost @click="editDisabled = false">
          <template #icon>
            <NIcon>
              <PencilIcon />
            </NIcon>
          </template>
          编辑配置
        </NButton>
      </SettingItemBox>
      <NCollapseTransition :show="collapseHeaderTable">
        <GlobalParamsConfiguration />
      </NCollapseTransition>
      <section class="arrow">
        <NTooltip>
          <template #trigger>
            <NIcon @click="handleCollapse" size="30">
              <ChevronDown v-show="!collapseHeaderTable" />
              <ChevronUp v-show="collapseHeaderTable" />
            </NIcon>
          </template>
          <span>{{ collapseHeaderTable ? '收起' : '展开' }}</span>
        </NTooltip>
      </section>
    </NSpace>
  </NCard>
</template>


<style lang="scss" scoped>
.arrow {
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;

  &:hover {
    color: v-bind('themeColor');

  }
}
</style>