fix(deps): 修正因锁文件错误导致的编译失败 (#777)

* fix(i18n): 修复Vue2遗留的语法

* fix(deps): 修正因锁文件导致编译失败的问题

* chore: update lock

* chore: update lock

---------

Co-authored-by: Uyarn <uyarnchen@gmail.com>
This commit is contained in:
悠静萝莉 2024-11-01 14:45:15 +08:00 committed by GitHub
parent 867532bd50
commit 93b9d53701
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
37 changed files with 3074 additions and 3698 deletions

12
.gitignore vendored
View File

@ -1,6 +1,16 @@
node_modules
# OS specific files
.DS_Store
# dependencies manager
node_modules/
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
# build files
es/
lib/

1
.yarnrc.yml Normal file
View File

@ -0,0 +1 @@
nodeLinker: node-modules

6200
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -27,7 +27,7 @@
"echarts": "5.4.3",
"lodash": "^4.17.21",
"nprogress": "^0.2.0",
"pinia": "^2.1.7",
"pinia": "2.1.7",
"pinia-plugin-persistedstate": "^3.2.0",
"qrcode.vue": "^3.4.1",
"qs": "^6.11.2",
@ -43,6 +43,7 @@
"@commitlint/config-conventional": "^18.6.0",
"@types/echarts": "^4.9.21",
"@types/lodash": "^4.17.6",
"@types/mockjs": "^1.0.10",
"@types/nprogress": "^0.2.3",
"@types/qs": "^6.9.11",
"@typescript-eslint/eslint-plugin": "^6.21.0",
@ -65,7 +66,6 @@
"less": "^4.2.0",
"lint-staged": "^15.2.2",
"mockjs": "^1.1.0",
"@types/mockjs": "^1.0.10",
"postcss-html": "^1.6.0",
"postcss-less": "^6.0.0",
"prettier": "^3.2.5",

View File

@ -5,45 +5,45 @@
<t-col :span="10">
<t-row :gutter="[24, 24]">
<t-col :span="4">
<t-form-item :label="$t('components.commonTable.contractName')" name="name">
<t-form-item :label="t('components.commonTable.contractName')" name="name">
<t-input
v-model="formData.name"
class="form-item-content"
type="search"
:placeholder="$t('components.commonTable.contractNamePlaceholder')"
:placeholder="t('components.commonTable.contractNamePlaceholder')"
:style="{ minWidth: '134px' }"
/>
</t-form-item>
</t-col>
<t-col :span="4">
<t-form-item :label="$t('components.commonTable.contractStatus')" name="status">
<t-form-item :label="t('components.commonTable.contractStatus')" name="status">
<t-select
v-model="formData.status"
class="form-item-content"
:options="CONTRACT_STATUS_OPTIONS"
:placeholder="$t('components.commonTable.contractStatusPlaceholder')"
:placeholder="t('components.commonTable.contractStatusPlaceholder')"
clearable
/>
</t-form-item>
</t-col>
<t-col :span="4">
<t-form-item :label="$t('components.commonTable.contractNum')" name="no">
<t-form-item :label="t('components.commonTable.contractNum')" name="no">
<t-input
v-model="formData.no"
class="form-item-content"
:placeholder="$t('components.commonTable.contractNumPlaceholder')"
:placeholder="t('components.commonTable.contractNumPlaceholder')"
:style="{ minWidth: '134px' }"
/>
</t-form-item>
</t-col>
<t-col :span="4">
<t-form-item :label="$t('components.commonTable.contractType')" name="type">
<t-form-item :label="t('components.commonTable.contractType')" name="type">
<t-select
v-model="formData.type"
style="display: inline-block"
class="form-item-content"
:options="CONTRACT_TYPE_OPTIONS"
:placeholder="$t('components.commonTable.contractTypePlaceholder')"
:placeholder="t('components.commonTable.contractTypePlaceholder')"
clearable
/>
</t-form-item>
@ -53,9 +53,9 @@
<t-col :span="2" class="operation-container">
<t-button theme="primary" type="submit" :style="{ marginLeft: 'var(--td-comp-margin-s)' }">
{{ $t('components.commonTable.query') }}
{{ t('components.commonTable.query') }}
</t-button>
<t-button type="reset" variant="base" theme="default"> {{ $t('components.commonTable.reset') }} </t-button>
<t-button type="reset" variant="base" theme="default"> {{ t('components.commonTable.reset') }} </t-button>
</t-col>
</t-row>
</t-form>
@ -75,40 +75,40 @@
>
<template #status="{ row }">
<t-tag v-if="row.status === CONTRACT_STATUS.FAIL" theme="danger" variant="light">
{{ $t('components.commonTable.contractStatusEnum.fail') }}
{{ t('components.commonTable.contractStatusEnum.fail') }}
</t-tag>
<t-tag v-if="row.status === CONTRACT_STATUS.AUDIT_PENDING" theme="warning" variant="light">
{{ $t('components.commonTable.contractStatusEnum.audit') }}
{{ t('components.commonTable.contractStatusEnum.audit') }}
</t-tag>
<t-tag v-if="row.status === CONTRACT_STATUS.EXEC_PENDING" theme="warning" variant="light">
{{ $t('components.commonTable.contractStatusEnum.pending') }}
{{ t('components.commonTable.contractStatusEnum.pending') }}
</t-tag>
<t-tag v-if="row.status === CONTRACT_STATUS.EXECUTING" theme="success" variant="light">
{{ $t('components.commonTable.contractStatusEnum.executing') }}
{{ t('components.commonTable.contractStatusEnum.executing') }}
</t-tag>
<t-tag v-if="row.status === CONTRACT_STATUS.FINISH" theme="success" variant="light">
{{ $t('components.commonTable.contractStatusEnum.finish') }}
{{ t('components.commonTable.contractStatusEnum.finish') }}
</t-tag>
</template>
<template #contractType="{ row }">
<p v-if="row.contractType === CONTRACT_TYPES.MAIN">{{ $t('pages.listBase.contractStatusEnum.fail') }}</p>
<p v-if="row.contractType === CONTRACT_TYPES.SUB">{{ $t('pages.listBase.contractStatusEnum.audit') }}</p>
<p v-if="row.contractType === CONTRACT_TYPES.MAIN">{{ t('pages.listBase.contractStatusEnum.fail') }}</p>
<p v-if="row.contractType === CONTRACT_TYPES.SUB">{{ t('pages.listBase.contractStatusEnum.audit') }}</p>
<p v-if="row.contractType === CONTRACT_TYPES.SUPPLEMENT">
{{ $t('pages.listBase.contractStatusEnum.pending') }}
{{ t('pages.listBase.contractStatusEnum.pending') }}
</p>
</template>
<template #paymentType="{ row }">
<div v-if="row.paymentType === CONTRACT_PAYMENT_TYPES.PAYMENT" class="payment-col">
{{ $t('pages.listBase.pay') }}<trend class="dashboard-item-trend" type="up" />
{{ t('pages.listBase.pay') }}<trend class="dashboard-item-trend" type="up" />
</div>
<div v-if="row.paymentType === CONTRACT_PAYMENT_TYPES.RECEIPT" class="payment-col">
{{ $t('pages.listBase.receive') }}<trend class="dashboard-item-trend" type="down" />
{{ t('pages.listBase.receive') }}<trend class="dashboard-item-trend" type="down" />
</div>
</template>
<template #op="slotProps">
<t-space>
<t-link theme="primary" @click="handleClickDetail()"> {{ $t('pages.listBase.detail') }}</t-link>
<t-link theme="danger" @click="handleClickDelete(slotProps)"> {{ $t('pages.listBase.delete') }}</t-link>
<t-link theme="primary" @click="handleClickDetail()"> {{ t('pages.listBase.detail') }}</t-link>
<t-link theme="danger" @click="handleClickDelete(slotProps)"> {{ t('pages.listBase.delete') }}</t-link>
</t-space>
</template>
</t-table>

View File

@ -13,7 +13,7 @@
</template>
<template #status>
<t-tag :theme="product.isSetup ? 'success' : 'default'" :disabled="!product.isSetup">{{
product.isSetup ? $t('components.isSetup.on') : $t('components.isSetup.off')
product.isSetup ? t('components.isSetup.on') : t('components.isSetup.off')
}}</t-tag>
</template>
<template #content>
@ -36,12 +36,12 @@
trigger="click"
:options="[
{
content: $t('components.manage'),
content: t('components.manage'),
value: 'manage',
onClick: () => handleClickManage(product),
},
{
content: $t('components.delete'),
content: t('components.delete'),
value: 'delete',
onClick: () => handleClickDelete(product),
},
@ -66,6 +66,8 @@ import {
} from 'tdesign-icons-vue-next';
import type { PropType } from 'vue';
import { t } from '@/locales';
export interface CardProductType {
type: number;
isSetup: boolean;

View File

@ -23,12 +23,12 @@
<!-- 全局通知 -->
<notice />
<t-tooltip placement="bottom" :content="$t('layout.header.code')">
<t-tooltip placement="bottom" :content="t('layout.header.code')">
<t-button theme="default" shape="square" variant="text" @click="navToGitHub">
<t-icon name="logo-github" />
</t-button>
</t-tooltip>
<t-tooltip placement="bottom" :content="$t('layout.header.help')">
<t-tooltip placement="bottom" :content="t('layout.header.help')">
<t-button theme="default" shape="square" variant="text" @click="navToHelper">
<t-icon name="help-circle" />
</t-button>
@ -51,10 +51,10 @@
<template #dropdown>
<t-dropdown-menu>
<t-dropdown-item class="operations-dropdown-container-item" @click="handleNav('/user/index')">
<user-circle-icon />{{ $t('layout.header.user') }}
<user-circle-icon />{{ t('layout.header.user') }}
</t-dropdown-item>
<t-dropdown-item class="operations-dropdown-container-item" @click="handleLogout">
<poweroff-icon />{{ $t('layout.header.signOut') }}
<poweroff-icon />{{ t('layout.header.signOut') }}
</t-dropdown-item>
</t-dropdown-menu>
</template>
@ -66,7 +66,7 @@
<template #suffix><chevron-down-icon /></template>
</t-button>
</t-dropdown>
<t-tooltip placement="bottom" :content="$t('layout.header.setting')">
<t-tooltip placement="bottom" :content="t('layout.header.setting')">
<t-button theme="default" shape="square" variant="text" @click="toggleSettingPanel">
<setting-icon />
</t-button>
@ -85,7 +85,7 @@ import { useRouter } from 'vue-router';
import LogoFull from '@/assets/assets-logo-full.svg?component';
import { prefix } from '@/config/global';
import { langList } from '@/locales/index';
import { langList, t } from '@/locales';
import { useLocale } from '@/locales/useLocale';
import { getActive } from '@/router';
import { useSettingStore, useUserStore } from '@/store';

View File

@ -37,22 +37,22 @@
<t-dropdown-menu>
<t-dropdown-item @click="() => handleRefresh(routeItem, index)">
<t-icon name="refresh" />
{{ $t('layout.tagTabs.refresh') }}
{{ t('layout.tagTabs.refresh') }}
</t-dropdown-item>
<t-dropdown-item v-if="index > 1" @click="() => handleCloseAhead(routeItem.path, index)">
<t-icon name="arrow-left" />
{{ $t('layout.tagTabs.closeLeft') }}
{{ t('layout.tagTabs.closeLeft') }}
</t-dropdown-item>
<t-dropdown-item
v-if="index < tabRouters.length - 1"
@click="() => handleCloseBehind(routeItem.path, index)"
>
<t-icon name="arrow-right" />
{{ $t('layout.tagTabs.closeRight') }}
{{ t('layout.tagTabs.closeRight') }}
</t-dropdown-item>
<t-dropdown-item v-if="tabRouters.length > 2" @click="() => handleCloseOther(routeItem.path, index)">
<t-icon name="close-circle" />
{{ $t('layout.tagTabs.closeOther') }}
{{ t('layout.tagTabs.closeOther') }}
</t-dropdown-item>
</t-dropdown-menu>
</template>
@ -76,6 +76,7 @@ import { computed, nextTick, ref } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import { prefix } from '@/config/global';
import { t } from '@/locales';
import { useLocale } from '@/locales/useLocale';
import { useSettingStore, useTabsRouterStore } from '@/store';
import type { TRouterInfo, TTabRemoveOptions } from '@/types/interface';

View File

@ -3,14 +3,14 @@
<template #content>
<div class="header-msg">
<div class="header-msg-top">
<p>{{ $t('layout.notice.title') }}</p>
<p>{{ t('layout.notice.title') }}</p>
<t-button
v-if="unreadMsg.length > 0"
class="clear-btn"
variant="text"
theme="primary"
@click="setRead('all')"
>{{ $t('layout.notice.clear') }}</t-button
>{{ t('layout.notice.clear') }}</t-button
>
</div>
<t-list v-if="unreadMsg.length > 0" class="narrow-scrollbar" :split="false">
@ -22,7 +22,7 @@
<p class="msg-time">{{ item.date }}</p>
<template #action>
<t-button size="small" variant="outline" @click="setRead('radio', item)">
{{ $t('layout.notice.setRead') }}
{{ t('layout.notice.setRead') }}
</t-button>
</template>
</t-list-item>
@ -30,11 +30,11 @@
<div v-else class="empty-list">
<img src="https://tdesign.gtimg.com/pro-template/personal/nothing.png" alt="空" />
<p>{{ $t('layout.notice.empty') }}</p>
<p>{{ t('layout.notice.empty') }}</p>
</div>
<div v-if="unreadMsg.length > 0" class="header-msg-bottom">
<t-button class="header-msg-bottom-link" variant="text" theme="default" block @click="goDetail">{{
$t('layout.notice.viewAll')
t('layout.notice.viewAll')
}}</t-button>
</div>
</div>
@ -51,6 +51,7 @@
import { storeToRefs } from 'pinia';
import { useRouter } from 'vue-router';
import { t } from '@/locales';
import { useNotificationStore } from '@/store';
import type { NotificationItem } from '@/types/interface';

View File

@ -2,7 +2,7 @@
<div v-if="layout === 'side'" class="header-menu-search">
<t-input
:class="['header-search', { 'hover-active': isSearchFocus }]"
:placeholder="$t('layout.searchPlaceholder')"
:placeholder="t('layout.searchPlaceholder')"
@blur="changeSearchFocus(false)"
@focus="changeSearchFocus(true)"
>
@ -39,6 +39,8 @@
<script setup lang="ts">
import { ref } from 'vue';
import { t } from '@/locales';
defineProps({
layout: String,
});

View File

@ -3,14 +3,14 @@
v-model:visible="showSettingPanel"
size="408px"
:footer="false"
:header="$t('layout.setting.title')"
:header="t('layout.setting.title')"
:close-btn="true"
class="setting-drawer-container"
@close-btn-click="handleCloseDrawer"
>
<div class="setting-container">
<t-form ref="form" :data="formData" label-align="left">
<div class="setting-group-title">{{ $t('layout.setting.theme.mode') }}</div>
<div class="setting-group-title">{{ t('layout.setting.theme.mode') }}</div>
<t-radio-group v-model="formData.mode">
<div v-for="(item, index) in MODE_OPTIONS" :key="index" class="setting-layout-drawer">
<div>
@ -21,7 +21,7 @@
</div>
</div>
</t-radio-group>
<div class="setting-group-title">{{ $t('layout.setting.theme.color') }}</div>
<div class="setting-group-title">{{ t('layout.setting.theme.color') }}</div>
<t-radio-group v-model="formData.brandTheme">
<div v-for="(item, index) in DEFAULT_COLOR_OPTIONS" :key="index" class="setting-layout-drawer">
<t-radio-button :key="index" :value="item" class="setting-layout-color-group">
@ -52,7 +52,7 @@
</t-popup>
</div>
</t-radio-group>
<div class="setting-group-title">{{ $t('layout.setting.navigationLayout') }}</div>
<div class="setting-group-title">{{ t('layout.setting.navigationLayout') }}</div>
<t-radio-group v-model="formData.layout">
<div v-for="(item, index) in LAYOUT_OPTION" :key="index" class="setting-layout-drawer">
<t-radio-button :key="index" :value="item">
@ -61,48 +61,44 @@
</div>
</t-radio-group>
<t-form-item v-show="formData.layout === 'mix'" :label="$t('layout.setting.splitMenu')" name="splitMenu">
<t-form-item v-show="formData.layout === 'mix'" :label="t('layout.setting.splitMenu')" name="splitMenu">
<t-switch v-model="formData.splitMenu" />
</t-form-item>
<t-form-item
v-show="formData.layout === 'mix'"
:label="$t('layout.setting.fixedSidebar')"
name="isSidebarFixed"
>
<t-form-item v-show="formData.layout === 'mix'" :label="t('layout.setting.fixedSidebar')" name="isSidebarFixed">
<t-switch v-model="formData.isSidebarFixed" />
</t-form-item>
<div class="setting-group-title">{{ $t('layout.setting.element.title') }}</div>
<t-form-item :label="$t('layout.setting.sideMode')" name="sideMode">
<div class="setting-group-title">{{ t('layout.setting.element.title') }}</div>
<t-form-item :label="t('layout.setting.sideMode')" name="sideMode">
<t-radio-group v-model="formData.sideMode" class="side-mode-radio">
<t-radio-button key="light" value="light" :label="$t('layout.setting.theme.options.light')" />
<t-radio-button key="dark" value="dark" :label="$t('layout.setting.theme.options.dark')" />
<t-radio-button key="light" value="light" :label="t('layout.setting.theme.options.light')" />
<t-radio-button key="dark" value="dark" :label="t('layout.setting.theme.options.dark')" />
</t-radio-group>
</t-form-item>
<t-form-item
v-show="formData.layout === 'side'"
:label="$t('layout.setting.element.showHeader')"
:label="t('layout.setting.element.showHeader')"
name="showHeader"
>
<t-switch v-model="formData.showHeader" />
</t-form-item>
<t-form-item :label="$t('layout.setting.element.showBreadcrumb')" name="showBreadcrumb">
<t-form-item :label="t('layout.setting.element.showBreadcrumb')" name="showBreadcrumb">
<t-switch v-model="formData.showBreadcrumb" />
</t-form-item>
<t-form-item :label="$t('layout.setting.element.showFooter')" name="showFooter">
<t-form-item :label="t('layout.setting.element.showFooter')" name="showFooter">
<t-switch v-model="formData.showFooter" />
</t-form-item>
<t-form-item :label="$t('layout.setting.element.useTagTabs')" name="isUseTabsRouter">
<t-form-item :label="t('layout.setting.element.useTagTabs')" name="isUseTabsRouter">
<t-switch v-model="formData.isUseTabsRouter"></t-switch>
</t-form-item>
<t-form-item :label="$t('layout.setting.element.menuAutoCollapsed')" name="menuAutoCollapsed">
<t-form-item :label="t('layout.setting.element.menuAutoCollapsed')" name="menuAutoCollapsed">
<t-switch v-model="formData.menuAutoCollapsed"></t-switch>
</t-form-item>
</t-form>
<div class="setting-info">
<p>{{ $t('layout.setting.tips') }}</p>
<p>{{ t('layout.setting.tips') }}</p>
<t-button theme="primary" variant="text" @click="handleCopy">
{{ $t('layout.setting.copy.title') }}
{{ t('layout.setting.copy.title') }}
</t-button>
</div>
</div>

View File

@ -2,7 +2,7 @@
<t-row :gutter="16" class="row-container">
<t-col :xs="12" :xl="9">
<t-card
:title="$t('pages.dashboardBase.topPanel.analysis.title')"
:title="t('pages.dashboardBase.topPanel.analysis.title')"
:subtitle="currentMonth"
class="dashboard-chart-card"
:bordered="false"
@ -27,7 +27,7 @@
</t-col>
<t-col :xs="12" :xl="3">
<t-card
:title="$t('pages.dashboardBase.topPanel.analysis.channels')"
:title="t('pages.dashboardBase.topPanel.analysis.channels')"
:subtitle="currentMonth"
class="dashboard-chart-card"
:bordered="false"
@ -50,6 +50,7 @@ import * as echarts from 'echarts/core';
import { CanvasRenderer } from 'echarts/renderers';
import { computed, nextTick, onDeactivated, onMounted, ref, watch } from 'vue';
import { t } from '@/locales';
import { useSettingStore } from '@/store';
import { changeChartsTheme } from '@/utils/color';
import { LAST_7_DAYS } from '@/utils/date';

View File

@ -4,8 +4,8 @@
<t-col :xs="12" :xl="9">
<t-card
:bordered="false"
:title="$t('pages.dashboardBase.outputOverview.title')"
:subtitle="$t('pages.dashboardBase.outputOverview.subtitle')"
:title="t('pages.dashboardBase.outputOverview.title')"
:subtitle="t('pages.dashboardBase.outputOverview.subtitle')"
:class="{ 'dashboard-overview-card': true, 'overview-panel': true }"
>
<template #actions>
@ -23,19 +23,19 @@
<t-col :xs="12" :xl="3">
<t-card :bordered="false" :class="{ 'dashboard-overview-card': true, 'export-panel': true }">
<template #actions>
<t-button>{{ $t('pages.dashboardBase.outputOverview.export') }}</t-button>
<t-button>{{ t('pages.dashboardBase.outputOverview.export') }}</t-button>
</template>
<t-row>
<t-col :xs="6" :xl="12">
<t-card
:bordered="false"
:subtitle="$t('pages.dashboardBase.outputOverview.month.input')"
:subtitle="t('pages.dashboardBase.outputOverview.month.input')"
class="inner-card"
>
<div class="inner-card__content">
<div class="inner-card__content-title">1726</div>
<div class="inner-card__content-footer">
{{ $t('pages.dashboardBase.outputOverview.since') }}
{{ t('pages.dashboardBase.outputOverview.since') }}
<trend class="trend-tag" type="down" :is-reverse-color="false" describe="20.3%" />
</div>
</div>
@ -44,13 +44,13 @@
<t-col :xs="6" :xl="12">
<t-card
:bordered="false"
:subtitle="$t('pages.dashboardBase.outputOverview.month.output')"
:subtitle="t('pages.dashboardBase.outputOverview.month.output')"
class="inner-card"
>
<div class="inner-card__content">
<div class="inner-card__content-title">226</div>
<div class="inner-card__content-footer">
{{ $t('pages.dashboardBase.outputOverview.since') }}
{{ t('pages.dashboardBase.outputOverview.since') }}
<trend class="trend-tag" type="down" :is-reverse-color="false" describe="20.3%" />
</div>
</div>
@ -79,6 +79,7 @@ import { computed, nextTick, onMounted, ref, watch } from 'vue';
//
import Trend from '@/components/trend/index.vue';
import { t } from '@/locales';
import { useSettingStore } from '@/store';
import { changeChartsTheme } from '@/utils/color';
import { LAST_7_DAYS } from '@/utils/date';

View File

@ -1,11 +1,11 @@
<template>
<t-row :gutter="16" class="row-container">
<t-col :xs="12" :xl="6">
<t-card :title="$t('pages.dashboardBase.rankList.title')" class="dashboard-rank-card" :bordered="false">
<t-card :title="t('pages.dashboardBase.rankList.title')" class="dashboard-rank-card" :bordered="false">
<template #actions>
<t-radio-group default-value="dateVal" variant="default-filled">
<t-radio-button value="dateVal">{{ $t('pages.dashboardBase.rankList.week') }}</t-radio-button>
<t-radio-button value="monthVal">{{ $t('pages.dashboardBase.rankList.month') }}</t-radio-button>
<t-radio-button value="dateVal">{{ t('pages.dashboardBase.rankList.week') }}</t-radio-button>
<t-radio-button value="monthVal">{{ t('pages.dashboardBase.rankList.month') }}</t-radio-button>
</t-radio-group>
</template>
<t-table :data="SALE_TEND_LIST" :columns="SALE_COLUMNS" row-key="productName">
@ -21,18 +21,18 @@
</template>
<template #operation="slotProps">
<t-link theme="primary" @click="rehandleClickOp(slotProps)">{{
$t('pages.dashboardBase.rankList.info')
t('pages.dashboardBase.rankList.info')
}}</t-link>
</template>
</t-table>
</t-card>
</t-col>
<t-col :xs="12" :xl="6">
<t-card :title="$t('pages.dashboardBase.rankList.title')" class="dashboard-rank-card" :bordered="false">
<t-card :title="t('pages.dashboardBase.rankList.title')" class="dashboard-rank-card" :bordered="false">
<template #actions>
<t-radio-group default-value="dateVal" variant="default-filled">
<t-radio-button value="dateVal">{{ $t('pages.dashboardBase.rankList.week') }}</t-radio-button>
<t-radio-button value="monthVal">{{ $t('pages.dashboardBase.rankList.month') }}</t-radio-button>
<t-radio-button value="dateVal">{{ t('pages.dashboardBase.rankList.week') }}</t-radio-button>
<t-radio-button value="monthVal">{{ t('pages.dashboardBase.rankList.month') }}</t-radio-button>
</t-radio-group>
</template>
<t-table :data="BUY_TEND_LIST" :columns="BUY_COLUMNS" row-key="productName">
@ -46,7 +46,7 @@
</template>
<template #operation="slotProps">
<t-link theme="primary" @click="rehandleClickOp(slotProps)">{{
$t('pages.dashboardBase.rankList.info')
t('pages.dashboardBase.rankList.info')
}}</t-link>
</template>
</t-table>

View File

@ -32,7 +32,7 @@
<template #footer>
<div class="dashboard-item-bottom">
<div class="dashboard-item-block">
{{ $t('pages.dashboardBase.topPanel.cardTips') }}
{{ t('pages.dashboardBase.topPanel.cardTips') }}
<trend
class="dashboard-item-trend"
:type="item.upTrend ? 'up' : 'down'"

View File

@ -1,13 +1,13 @@
<template>
<div class="dashboard-panel-detail">
<t-card :title="$t('pages.dashboardDetail.topPanel.title')" class="dashboard-detail-card" :bordered="false">
<t-card :title="t('pages.dashboardDetail.topPanel.title')" class="dashboard-detail-card" :bordered="false">
<t-row :gutter="[16, 16]">
<t-col v-for="(item, index) in PANE_LIST_DATA" :key="index" :xs="6" :xl="3">
<t-card class="dashboard-list-card" :description="item.title">
<div class="dashboard-list-card__number">{{ item.number }}</div>
<div class="dashboard-list-card__text">
<div class="dashboard-list-card__text-left">
{{ $t('pages.dashboardDetail.topPanel.quarter') }}
{{ t('pages.dashboardDetail.topPanel.quarter') }}
<trend class="icon" :type="item.upTrend ? 'up' : 'down'" :describe="item.upTrend || item.downTrend" />
</div>
<t-icon name="chevron-right" />
@ -18,7 +18,7 @@
</t-card>
<t-row :gutter="[16, 16]" class="row-margin">
<t-col :xs="12" :xl="9">
<t-card class="dashboard-detail-card" :title="$t('pages.dashboardDetail.procurement.title')" :bordered="false">
<t-card class="dashboard-detail-card" :title="t('pages.dashboardDetail.procurement.title')" :bordered="false">
<template #actions>
<t-date-range-picker
class="card-date-picker-container"
@ -43,7 +43,7 @@
</t-row>
<t-card
:class="['dashboard-detail-card', 'row-margin']"
:title="$t('pages.dashboardDetail.satisfaction.title')"
:title="t('pages.dashboardDetail.satisfaction.title')"
:bordered="false"
>
<template #actions>
@ -55,7 +55,7 @@
style="display: inline-block; margin-right: var(--td-comp-margin-s); width: 248px"
@change="onSatisfyChange"
/>
<t-button class="card-date-button"> {{ $t('pages.dashboardDetail.satisfaction.export') }} </t-button>
<t-button class="card-date-button"> {{ t('pages.dashboardDetail.satisfaction.export') }} </t-button>
</template>
<div id="scatterContainer" style="width: 100%; height: 434px" />
</t-card>
@ -78,6 +78,7 @@ import { computed, nextTick, onDeactivated, onMounted, watch } from 'vue';
import ProductCard from '@/components/product-card/index.vue';
import Trend from '@/components/trend/index.vue';
import { t } from '@/locales';
import { useSettingStore } from '@/store';
import { changeChartsTheme } from '@/utils/color';
import { LAST_7_DAYS } from '@/utils/date';

View File

@ -1,7 +1,7 @@
<template>
<div class="detail-advanced">
<t-card :bordered="false">
<t-descriptions :title="$t('pages.detailCard.baseInfo.title')">
<t-descriptions :title="t('pages.detailCard.baseInfo.title')">
<t-descriptions-item v-for="(item, index) in BASE_INFO_DATA" :key="index" :label="item.name">
<span
:class="{
@ -17,32 +17,32 @@
</t-card>
<!-- 发票进度 -->
<t-card :title="$t('pages.detailCard.invoice.title')" class="container-base-margin-top" :bordered="false">
<t-card :title="t('pages.detailCard.invoice.title')" class="container-base-margin-top" :bordered="false">
<t-row justify="space-between">
<t-steps :current="updateCurrent">
<t-step-item
:title="$t('pages.detailCard.invoice.step1.title')"
:content="$t('pages.detailCard.invoice.step1.content')"
:title="t('pages.detailCard.invoice.step1.title')"
:content="t('pages.detailCard.invoice.step1.content')"
/>
<t-step-item
:title="$t('pages.detailCard.invoice.step2.title')"
:content="$t('pages.detailCard.invoice.step2.content')"
:title="t('pages.detailCard.invoice.step2.title')"
:content="t('pages.detailCard.invoice.step2.content')"
/>
<t-step-item
:title="$t('pages.detailCard.invoice.step3.title')"
:content="$t('pages.detailCard.invoice.step3.content')"
:title="t('pages.detailCard.invoice.step3.title')"
:content="t('pages.detailCard.invoice.step3.content')"
/>
<t-step-item :title="$t('pages.detailCard.invoice.step4.title')" />
<t-step-item :title="t('pages.detailCard.invoice.step4.title')" />
</t-steps>
</t-row>
</t-card>
<!-- 产品目录 -->
<t-card :title="$t('pages.detailCard.product.title')" class="container-base-margin-top" :bordered="false">
<t-card :title="t('pages.detailCard.product.title')" class="container-base-margin-top" :bordered="false">
<template #actions>
<t-radio-group default-value="dateVal">
<t-radio-button value="dateVal"> {{ $t('pages.detailCard.product.quarter') }} </t-radio-button>
<t-radio-button value="monthVal"> {{ $t('pages.detailCard.product.month') }} </t-radio-button>
<t-radio-button value="dateVal"> {{ t('pages.detailCard.product.quarter') }} </t-radio-button>
<t-radio-button value="monthVal"> {{ t('pages.detailCard.product.month') }} </t-radio-button>
</t-radio-group>
</template>
<t-row :gutter="16" class="product-block-container">
@ -50,7 +50,7 @@
<div class="product-add">
<div class="product-sub">
<t-icon name="add" class="product-sub-icon" />
<span>{{ $t('pages.detailCard.product.add') }}</span>
<span>{{ t('pages.detailCard.product.add') }}</span>
</div>
</div>
</t-col>
@ -61,7 +61,7 @@
</t-card>
<!-- 产品采购明细 -->
<t-card :title="$t('pages.detailCard.detail.title')" class="container-base-margin-top" :bordered="false">
<t-card :title="t('pages.detailCard.detail.title')" class="container-base-margin-top" :bordered="false">
<t-table
:columns="columns"
:data="data"
@ -109,7 +109,7 @@
</t-table>
</t-card>
<t-dialog v-model:visible="visible" :header="$t('pages.detailCard.baseInfo.title')" @confirm="onConfirm">
<t-dialog v-model:visible="visible" :header="t('pages.detailCard.baseInfo.title')" @confirm="onConfirm">
<template #body>
<div class="dialog-info-block">
<t-descriptions :column="1">

View File

@ -1,7 +1,7 @@
<template>
<div class="detail-base">
<t-card :bordered="false">
<t-descriptions :title="$t('pages.detailBase.baseInfo.title')">
<t-descriptions :title="t('pages.detailBase.baseInfo.title')">
<t-descriptions-item v-for="(item, index) in BASE_INFO_DATA" :key="index" :label="item.name">
<span
:class="{
@ -16,19 +16,19 @@
</t-descriptions>
</t-card>
<t-card :title="$t('pages.detailBase.changelog.title')" class="container-base-margin-top" :bordered="false">
<t-card :title="t('pages.detailBase.changelog.title')" class="container-base-margin-top" :bordered="false">
<t-steps class="detail-base-info-steps" layout="vertical" theme="dot" :current="1">
<t-step-item
:title="$t('pages.detailBase.changelog.step1.title')"
:content="$t('pages.detailBase.changelog.step1.subtitle')"
:title="t('pages.detailBase.changelog.step1.title')"
:content="t('pages.detailBase.changelog.step1.subtitle')"
/>
<t-step-item
:title="$t('pages.detailBase.changelog.step2.title')"
:content="$t('pages.detailBase.changelog.step2.subtitle')"
:title="t('pages.detailBase.changelog.step2.title')"
:content="t('pages.detailBase.changelog.step2.subtitle')"
/>
<t-step-item
:title="$t('pages.detailBase.changelog.step3.title')"
:content="$t('pages.detailBase.changelog.step3.desc')"
:title="t('pages.detailBase.changelog.step3.title')"
:content="t('pages.detailBase.changelog.step3.desc')"
/>
</t-steps>
</t-card>

View File

@ -2,18 +2,18 @@
<div class="detail-deploy">
<t-row :gutter="16">
<t-col :lg="6" :xs="12">
<t-card :title="$t('pages.detailDeploy.deployTrend.title')" :bordered="false">
<t-card :title="t('pages.detailDeploy.deployTrend.title')" :bordered="false">
<div class="deploy-panel-left">
<div id="monitorContainer" style="width: 100%; height: 265px" />
</div>
</t-card>
</t-col>
<t-col :lg="6" :xs="12">
<t-card :title="$t('pages.detailDeploy.deployTrend.warning')" :bordered="false">
<t-card :title="t('pages.detailDeploy.deployTrend.warning')" :bordered="false">
<template #actions>
<t-radio-group default-value="dateVal" @change="onAlertChange">
<t-radio-button value="dateVal"> {{ $t('pages.detailDeploy.deployTrend.thisWeek') }} </t-radio-button>
<t-radio-button value="monthVal"> {{ $t('pages.detailDeploy.deployTrend.thisMonth') }} </t-radio-button>
<t-radio-button value="dateVal"> {{ t('pages.detailDeploy.deployTrend.thisWeek') }} </t-radio-button>
<t-radio-button value="monthVal"> {{ t('pages.detailDeploy.deployTrend.thisMonth') }} </t-radio-button>
</t-radio-group>
</template>
<div id="dataContainer" style="width: 100%; height: 265px" />
@ -22,7 +22,7 @@
</t-row>
<!-- 项目列表 -->
<t-card :title="$t('pages.detailDeploy.projectList.title')" class="container-base-margin-top" :bordered="false">
<t-card :title="t('pages.detailDeploy.projectList.title')" class="container-base-margin-top" :bordered="false">
<t-table
:columns="columns"
:data="data"
@ -41,11 +41,9 @@
</template>
<template #op="slotProps">
<t-space>
<t-link theme="primary" @click="listClick()">{{
$t('pages.detailDeploy.projectList.table.manage')
}}</t-link>
<t-link theme="primary" @click="listClick()">{{ t('pages.detailDeploy.projectList.table.manage') }}</t-link>
<t-link theme="danger" @click="deleteClickOp(slotProps)">{{
$t('pages.detailDeploy.projectList.table.delete')
t('pages.detailDeploy.projectList.table.delete')
}}</t-link>
</t-space>
</template>
@ -55,11 +53,7 @@
</t-table>
</t-card>
<t-dialog
v-model:visible="visible"
:header="$t('pages.detailDeploy.projectList.dialog.title')"
@confirm="onConfirm"
>
<t-dialog v-model:visible="visible" :header="t('pages.detailDeploy.projectList.dialog.title')" @confirm="onConfirm">
<template #body>
<div class="dialog-info-block">
<div class="dialog-info-block">

View File

@ -18,7 +18,7 @@
<t-tooltip
class="set-read-icon"
:overlay-style="{ margin: '6px' }"
:content="item.status ? $t('pages.detailSecondary.setRead') : $t('pages.detailSecondary.setUnread')"
:content="item.status ? t('pages.detailSecondary.setRead') : t('pages.detailSecondary.setUnread')"
>
<span class="msg-action-icon" @click="setReadStatus(item)">
<t-icon v-if="!!item.status" name="queue" size="16px" />

View File

@ -11,18 +11,18 @@
>
<div class="form-basic-container">
<div class="form-basic-item">
<div class="form-basic-container-title">{{ $t('pages.formBase.title') }}</div>
<div class="form-basic-container-title">{{ t('pages.formBase.title') }}</div>
<!-- 表单内容 -->
<!-- 合同名称,合同类型 -->
<t-row class="row-gap" :gutter="[32, 24]">
<t-col :span="6">
<t-form-item :label="$t('pages.formBase.contractName')" name="name">
<t-form-item :label="t('pages.formBase.contractName')" name="name">
<t-input v-model="formData.name" :style="{ width: '322px' }" placeholder="请输入内容" />
</t-form-item>
</t-col>
<t-col :span="6">
<t-form-item :label="$t('pages.formBase.contractType')" name="type">
<t-form-item :label="t('pages.formBase.contractType')" name="type">
<t-select v-model="formData.type" :style="{ width: '322px' }" class="demo-select-base" clearable>
<t-option v-for="(item, index) in TYPE_OPTIONS" :key="index" :value="item.value" :label="item.label">
{{ item.label }}
@ -33,25 +33,25 @@
<!-- 合同收付类型 -->
<t-col :span="8">
<t-form-item :label="$t('pages.formBase.contractPayType')" name="payment">
<t-form-item :label="t('pages.formBase.contractPayType')" name="payment">
<t-radio-group v-model="formData.payment">
<t-radio value="1"> {{ $t('pages.formBase.receive') }} </t-radio>
<t-radio value="2"> {{ $t('pages.formBase.pay') }} </t-radio>
<t-radio value="1"> {{ t('pages.formBase.receive') }} </t-radio>
<t-radio value="2"> {{ t('pages.formBase.pay') }} </t-radio>
</t-radio-group>
<span class="space-item" />
<div>
<t-input :placeholder="$t('pages.formBase.contractAmountPlaceholder')" :style="{ width: '160px' }" />
<t-input :placeholder="t('pages.formBase.contractAmountPlaceholder')" :style="{ width: '160px' }" />
</div>
</t-form-item>
</t-col>
<t-col :span="6">
<t-form-item :label="$t('pages.formBase.company')" name="partyA">
<t-form-item :label="t('pages.formBase.company')" name="partyA">
<t-select
v-model="formData.partyA"
:style="{ width: '322px' }"
class="demo-select-base"
:placeholder="$t('pages.formBase.contractTypePlaceholder')"
:placeholder="t('pages.formBase.contractTypePlaceholder')"
clearable
>
<t-option v-for="(item, index) in PARTY_A_OPTIONS" :key="index" :value="item.value" :label="item.label">
@ -61,11 +61,11 @@
</t-form-item>
</t-col>
<t-col :span="6">
<t-form-item :label="$t('pages.formBase.employee')" name="partyB">
<t-form-item :label="t('pages.formBase.employee')" name="partyB">
<t-select
v-model="formData.partyB"
:style="{ width: '322px' }"
:placeholder="$t('pages.formBase.contractTypePlaceholder')"
:placeholder="t('pages.formBase.contractTypePlaceholder')"
class="demo-select-base"
clearable
>
@ -76,7 +76,7 @@
</t-form-item>
</t-col>
<t-col :span="6">
<t-form-item :label="$t('pages.formBase.contractSignDate')" name="signDate">
<t-form-item :label="t('pages.formBase.contractSignDate')" name="signDate">
<t-date-picker
v-model="formData.signDate"
:style="{ width: '322px' }"
@ -87,7 +87,7 @@
</t-form-item>
</t-col>
<t-col :span="6">
<t-form-item :label="$t('pages.formBase.contractEffectiveDate')" name="startDate">
<t-form-item :label="t('pages.formBase.contractEffectiveDate')" name="startDate">
<t-date-picker
v-model="formData.startDate"
:style="{ width: '322px' }"
@ -98,7 +98,7 @@
</t-form-item>
</t-col>
<t-col :span="6">
<t-form-item :label="$t('pages.formBase.contractEndDate')" name="endDate">
<t-form-item :label="t('pages.formBase.contractEndDate')" name="endDate">
<t-date-picker
v-model="formData.endDate"
:style="{ width: '322px' }"
@ -109,30 +109,30 @@
</t-form-item>
</t-col>
<t-col :span="6">
<t-form-item :label="$t('pages.formBase.upload')" name="files">
<t-form-item :label="t('pages.formBase.upload')" name="files">
<t-upload
v-model="formData.files"
action="https://service-bv448zsw-1257786608.gz.apigw.tencentcs.com/api/upload-demo"
:tips="$t('pages.formBase.uploadTips')"
:tips="t('pages.formBase.uploadTips')"
:size-limit="{ size: 60, unit: 'MB' }"
:format-response="formatResponse"
:before-upload="beforeUpload"
@fail="handleFail"
>
<t-button class="form-submit-upload-btn" variant="outline">
{{ $t('pages.formBase.uploadFile') }}
{{ t('pages.formBase.uploadFile') }}
</t-button>
</t-upload>
</t-form-item>
</t-col>
</t-row>
<div class="form-basic-container-title form-title-gap">{{ $t('pages.formBase.otherInfo') }}</div>
<div class="form-basic-container-title form-title-gap">{{ t('pages.formBase.otherInfo') }}</div>
<t-form-item :label="$t('pages.formBase.remark')" name="comment">
<t-textarea v-model="formData.comment" :height="124" :placeholder="$t('pages.formBase.remarkPlaceholder')" />
<t-form-item :label="t('pages.formBase.remark')" name="comment">
<t-textarea v-model="formData.comment" :height="124" :placeholder="t('pages.formBase.remarkPlaceholder')" />
</t-form-item>
<t-form-item :label="$t('pages.formBase.notaryPublic')">
<t-form-item :label="t('pages.formBase.notaryPublic')">
<t-avatar-group>
<t-avatar>D</t-avatar>
<t-avatar>S</t-avatar>
@ -146,10 +146,10 @@
<div class="form-submit-sub">
<div class="form-submit-left">
<t-button theme="primary" class="form-submit-confirm" type="submit">
{{ $t('pages.formBase.confirm') }}
{{ t('pages.formBase.confirm') }}
</t-button>
<t-button type="reset" class="form-submit-cancel" theme="default" variant="base">
{{ $t('pages.formBase.cancel') }}
{{ t('pages.formBase.cancel') }}
</t-button>
</div>
</div>
@ -168,6 +168,8 @@ import type { SubmitContext, UploadFailContext, UploadFile } from 'tdesign-vue-n
import { MessagePlugin } from 'tdesign-vue-next';
import { ref } from 'vue';
import { t } from '@/locales';
import { FORM_RULES, INITIAL_DATA, PARTY_A_OPTIONS, PARTY_B_OPTIONS, TYPE_OPTIONS } from './constants';
const formData = ref({ ...INITIAL_DATA });

View File

@ -4,22 +4,22 @@
<!-- 简单步骤条 -->
<t-card :bordered="false">
<t-steps class="step-container" :current="1" status="process">
<t-step-item :title="$t('pages.formStep.step1.title')" :content="$t('pages.formStep.step1.subtitle')" />
<t-step-item :title="$t('pages.formStep.step2.title')" :content="$t('pages.formStep.step2.subtitle')" />
<t-step-item :title="$t('pages.formStep.step3.title')" :content="$t('pages.formStep.step3.subtitle')" />
<t-step-item :title="$t('pages.formStep.step4.title')" :content="$t('pages.formStep.step4.subtitle')" />
<t-step-item :title="t('pages.formStep.step1.title')" :content="t('pages.formStep.step1.subtitle')" />
<t-step-item :title="t('pages.formStep.step2.title')" :content="t('pages.formStep.step2.subtitle')" />
<t-step-item :title="t('pages.formStep.step3.title')" :content="t('pages.formStep.step3.subtitle')" />
<t-step-item :title="t('pages.formStep.step4.title')" :content="t('pages.formStep.step4.subtitle')" />
</t-steps>
</t-card>
<!-- 分步表单1 -->
<div v-show="activeForm === 0" class="rule-tips">
<t-alert theme="info" :title="$t('pages.formStep.step1.rules')" :close="true">
<t-alert theme="info" :title="t('pages.formStep.step1.rules')" :close="true">
<template #message>
<p>
{{ $t('pages.formStep.step1.rule1') }}
{{ t('pages.formStep.step1.rule1') }}
</p>
<p>{{ $t('pages.formStep.step1.rule2') }}</p>
<p>{{ $t('pages.formStep.step1.rule3') }}</p>
<p>{{ t('pages.formStep.step1.rule2') }}</p>
<p>{{ t('pages.formStep.step1.rule3') }}</p>
</template>
</t-alert>
</div>
@ -31,23 +31,23 @@
label-align="right"
@submit="(result: SubmitContext) => onSubmit(result, 1)"
>
<t-form-item :label="$t('pages.formStep.step1.contractName')" name="name">
<t-form-item :label="t('pages.formStep.step1.contractName')" name="name">
<t-select v-model="formData1.name" :style="{ width: '480px' }" class="demo-select-base" clearable>
<t-option v-for="(item, index) in NAME_OPTIONS" :key="index" :value="item.value" :label="item.label">
{{ item.label }}
</t-option>
</t-select>
</t-form-item>
<t-form-item :label="$t('pages.formStep.step1.invoiceType')" name="type">
<t-form-item :label="t('pages.formStep.step1.invoiceType')" name="type">
<t-select v-model="formData1.type" :style="{ width: '480px' }" class="demo-select-base" clearable>
<t-option v-for="(item, index) in TYPE_OPTIONS" :key="index" :value="item.value" :label="item.label">
{{ item.label }}
</t-option>
</t-select>
</t-form-item>
<t-form-item :label="$t('pages.formStep.step1.amount')"> ¥ {{ amount }} </t-form-item>
<t-form-item :label="t('pages.formStep.step1.amount')"> ¥ {{ amount }} </t-form-item>
<t-form-item>
<t-button theme="primary" type="submit"> {{ $t('pages.formStep.step1.submit') }} </t-button>
<t-button theme="primary" type="submit"> {{ t('pages.formStep.step1.submit') }} </t-button>
</t-form-item>
</t-form>
@ -61,58 +61,58 @@
@reset="onReset(0)"
@submit="(result: SubmitContext) => onSubmit(result, 2)"
>
<t-form-item :label="$t('pages.formStep.step2.invoiceTitle')" name="title">
<t-form-item :label="t('pages.formStep.step2.invoiceTitle')" name="title">
<t-input
v-model="formData2.title"
:style="{ width: '480px' }"
:placeholder="$t('pages.formStep.step2.invoiceTitlePlaceholder')"
:placeholder="t('pages.formStep.step2.invoiceTitlePlaceholder')"
/>
</t-form-item>
<t-form-item :label="$t('pages.formStep.step2.taxNum')" name="taxNum">
<t-form-item :label="t('pages.formStep.step2.taxNum')" name="taxNum">
<t-input
v-model="formData2.taxNum"
:style="{ width: '480px' }"
:placeholder="$t('pages.formStep.step2.taxNumPlaceholder')"
:placeholder="t('pages.formStep.step2.taxNumPlaceholder')"
/>
</t-form-item>
<t-form-item :label="$t('pages.formStep.step2.address')" name="address">
<t-form-item :label="t('pages.formStep.step2.address')" name="address">
<t-input
v-model="formData2.address"
:style="{ width: '480px' }"
:placeholder="$t('pages.formStep.step2.addressPlaceholder')"
:placeholder="t('pages.formStep.step2.addressPlaceholder')"
/>
</t-form-item>
<t-form-item :label="$t('pages.formStep.step2.bank')" name="bank">
<t-form-item :label="t('pages.formStep.step2.bank')" name="bank">
<t-input
v-model="formData2.bank"
:style="{ width: '480px' }"
:placeholder="$t('pages.formStep.step2.bankPlaceholder')"
:placeholder="t('pages.formStep.step2.bankPlaceholder')"
/>
</t-form-item>
<t-form-item :label="$t('pages.formStep.step2.bankAccount')" name="bankAccount">
<t-form-item :label="t('pages.formStep.step2.bankAccount')" name="bankAccount">
<t-input
v-model="formData2.bankAccount"
:style="{ width: '480px' }"
:placeholder="$t('pages.formStep.step2.bankAccountPlaceholder')"
:placeholder="t('pages.formStep.step2.bankAccountPlaceholder')"
/>
</t-form-item>
<t-form-item :label="$t('pages.formStep.step2.email')" name="email">
<t-form-item :label="t('pages.formStep.step2.email')" name="email">
<t-input
v-model="formData2.email"
:style="{ width: '480px' }"
:placeholder="$t('pages.formStep.step2.emailPlaceholder')"
:placeholder="t('pages.formStep.step2.emailPlaceholder')"
/>
</t-form-item>
<t-form-item :label="$t('pages.formStep.step2.tel')" name="tel">
<t-form-item :label="t('pages.formStep.step2.tel')" name="tel">
<t-input
v-model="formData2.tel"
:style="{ width: '480px' }"
:placeholder="$t('pages.formStep.step2.telPlaceholder')"
:placeholder="t('pages.formStep.step2.telPlaceholder')"
/>
</t-form-item>
<t-form-item>
<t-button type="reset" theme="default" variant="base"> {{ $t('pages.formStep.preStep') }} </t-button>
<t-button theme="primary" type="submit"> {{ $t('pages.formStep.nextStep') }} </t-button>
<t-button type="reset" theme="default" variant="base"> {{ t('pages.formStep.preStep') }} </t-button>
<t-button theme="primary" type="submit"> {{ t('pages.formStep.nextStep') }} </t-button>
</t-form-item>
</t-form>
@ -126,25 +126,25 @@
@reset="onReset(1)"
@submit="(result: SubmitContext) => onSubmit(result, 6)"
>
<t-form-item :label="$t('pages.formStep.step3.consignee')" name="consignee">
<t-form-item :label="t('pages.formStep.step3.consignee')" name="consignee">
<t-input v-model="formData3.consignee" :style="{ width: '480px' }" />
</t-form-item>
<t-form-item :label="$t('pages.formStep.step3.mobileNum')" name="mobileNum">
<t-form-item :label="t('pages.formStep.step3.mobileNum')" name="mobileNum">
<t-input v-model="formData3.mobileNum" :style="{ width: '480px' }" />
</t-form-item>
<t-form-item :label="$t('pages.formStep.step3.deliveryAddress')" name="deliveryAddress">
<t-form-item :label="t('pages.formStep.step3.deliveryAddress')" name="deliveryAddress">
<t-select v-model="formData3.deliveryAddress" :style="{ width: '480px' }" class="demo-select-base" clearable>
<t-option v-for="(item, index) in ADDRESS_OPTIONS" :key="index" :value="item.value" :label="item.label">
{{ item.label }}
</t-option>
</t-select>
</t-form-item>
<t-form-item :label="$t('pages.formStep.step3.fullAddress')" name="fullAddress">
<t-form-item :label="t('pages.formStep.step3.fullAddress')" name="fullAddress">
<t-textarea v-model="formData3.fullAddress" :style="{ width: '480px' }" />
</t-form-item>
<t-form-item>
<t-button type="reset" theme="default" variant="base"> {{ $t('pages.formStep.preStep') }} </t-button>
<t-button theme="primary" type="submit"> {{ $t('pages.formStep.nextStep') }} </t-button>
<t-button type="reset" theme="default" variant="base"> {{ t('pages.formStep.preStep') }} </t-button>
<t-button theme="primary" type="submit"> {{ t('pages.formStep.nextStep') }} </t-button>
</t-form-item>
</t-form>
@ -152,12 +152,12 @@
<div v-show="activeForm === 6" class="step-form-4">
<t-space direction="vertical" style="align-items: center">
<t-icon name="check-circle-filled" style="color: green" size="52px" />
<p class="text">{{ $t('pages.formStep.step4.finishTitle') }}</p>
<p class="tips">{{ $t('pages.formStep.step4.finishTips') }}</p>
<p class="text">{{ t('pages.formStep.step4.finishTitle') }}</p>
<p class="tips">{{ t('pages.formStep.step4.finishTips') }}</p>
<div class="button-group">
<t-button theme="primary" @click="onReset(0)"> {{ $t('pages.formStep.step4.reapply') }} </t-button>
<t-button theme="primary" @click="onReset(0)"> {{ t('pages.formStep.step4.reapply') }} </t-button>
<t-button variant="base" theme="default" @click="complete">
{{ $t('pages.formStep.step4.check') }}
{{ t('pages.formStep.step4.check') }}
</t-button>
</div>
</t-space>
@ -177,6 +177,8 @@ import { SubmitContext } from 'tdesign-vue-next';
import { computed, ref } from 'vue';
import { useRouter } from 'vue-router';
import { t } from '@/locales';
import {
ADDRESS_OPTIONS,
FORM_RULES,

View File

@ -3,16 +3,16 @@
<t-card class="list-card-container" :bordered="false">
<t-row justify="space-between">
<div class="left-operation-container">
<t-button @click="handleSetupContract"> {{ $t('pages.listBase.create') }} </t-button>
<t-button @click="handleSetupContract"> {{ t('pages.listBase.create') }} </t-button>
<t-button variant="base" theme="default" :disabled="!selectedRowKeys.length">
{{ $t('pages.listBase.export') }}</t-button
{{ t('pages.listBase.export') }}</t-button
>
<p v-if="!!selectedRowKeys.length" class="selected-count">
{{ $t('pages.listBase.select') }} {{ selectedRowKeys.length }} {{ $t('pages.listBase.items') }}
{{ t('pages.listBase.select') }} {{ selectedRowKeys.length }} {{ t('pages.listBase.items') }}
</p>
</div>
<div class="search-input">
<t-input v-model="searchValue" :placeholder="$t('pages.listBase.placeholder')" clearable>
<t-input v-model="searchValue" :placeholder="t('pages.listBase.placeholder')" clearable>
<template #suffix-icon>
<search-icon size="16px" />
</template>
@ -35,41 +35,41 @@
>
<template #status="{ row }">
<t-tag v-if="row.status === CONTRACT_STATUS.FAIL" theme="danger" variant="light">
{{ $t('pages.listBase.contractStatusEnum.fail') }}</t-tag
{{ t('pages.listBase.contractStatusEnum.fail') }}</t-tag
>
<t-tag v-if="row.status === CONTRACT_STATUS.AUDIT_PENDING" theme="warning" variant="light">
{{ $t('pages.listBase.contractStatusEnum.audit') }}
{{ t('pages.listBase.contractStatusEnum.audit') }}
</t-tag>
<t-tag v-if="row.status === CONTRACT_STATUS.EXEC_PENDING" theme="warning" variant="light">
{{ $t('pages.listBase.contractStatusEnum.pending') }}
{{ t('pages.listBase.contractStatusEnum.pending') }}
</t-tag>
<t-tag v-if="row.status === CONTRACT_STATUS.EXECUTING" theme="success" variant="light">
{{ $t('pages.listBase.contractStatusEnum.executing') }}
{{ t('pages.listBase.contractStatusEnum.executing') }}
</t-tag>
<t-tag v-if="row.status === CONTRACT_STATUS.FINISH" theme="success" variant="light">
{{ $t('pages.listBase.contractStatusEnum.finish') }}
{{ t('pages.listBase.contractStatusEnum.finish') }}
</t-tag>
</template>
<template #contractType="{ row }">
<p v-if="row.contractType === CONTRACT_TYPES.MAIN">{{ $t('pages.listBase.contractStatusEnum.fail') }}</p>
<p v-if="row.contractType === CONTRACT_TYPES.SUB">{{ $t('pages.listBase.contractStatusEnum.audit') }}</p>
<p v-if="row.contractType === CONTRACT_TYPES.MAIN">{{ t('pages.listBase.contractStatusEnum.fail') }}</p>
<p v-if="row.contractType === CONTRACT_TYPES.SUB">{{ t('pages.listBase.contractStatusEnum.audit') }}</p>
<p v-if="row.contractType === CONTRACT_TYPES.SUPPLEMENT">
{{ $t('pages.listBase.contractStatusEnum.pending') }}
{{ t('pages.listBase.contractStatusEnum.pending') }}
</p>
</template>
<template #paymentType="{ row }">
<div v-if="row.paymentType === CONTRACT_PAYMENT_TYPES.PAYMENT" class="payment-col">
{{ $t('pages.listBase.pay') }}<trend class="dashboard-item-trend" type="up" />
{{ t('pages.listBase.pay') }}<trend class="dashboard-item-trend" type="up" />
</div>
<div v-if="row.paymentType === CONTRACT_PAYMENT_TYPES.RECEIPT" class="payment-col">
{{ $t('pages.listBase.receive') }}<trend class="dashboard-item-trend" type="down" />
{{ t('pages.listBase.receive') }}<trend class="dashboard-item-trend" type="down" />
</div>
</template>
<template #op="slotProps">
<t-space>
<t-link theme="primary" @click="handleClickDetail()"> {{ $t('pages.listBase.detail') }}</t-link>
<t-link theme="danger" @click="handleClickDelete(slotProps)"> {{ $t('pages.listBase.delete') }}</t-link>
<t-link theme="primary" @click="handleClickDetail()"> {{ t('pages.listBase.detail') }}</t-link>
<t-link theme="danger" @click="handleClickDelete(slotProps)"> {{ t('pages.listBase.delete') }}</t-link>
</t-space>
</template>
</t-table>

View File

@ -1,28 +1,28 @@
<template>
<t-dialog v-model:visible="formVisible" :header="$t('pages.listCard.create')" :width="680" :footer="false">
<t-dialog v-model:visible="formVisible" :header="t('pages.listCard.create')" :width="680" :footer="false">
<template #body>
<!-- 表单内容 -->
<t-form ref="form" :data="formData" :rules="rules" :label-width="100" @submit="onSubmit">
<t-form-item :label="$t('pages.listCard.productName')" name="name">
<t-form-item :label="t('pages.listCard.productName')" name="name">
<t-input v-model="formData.name" :style="{ width: '480px' }" />
</t-form-item>
<t-form-item :label="$t('pages.listCard.productStatus')" name="status">
<t-form-item :label="t('pages.listCard.productStatus')" name="status">
<t-radio-group v-model="formData.status">
<t-radio value="0">{{ $t('pages.listCard.productStatusEnum.off') }}</t-radio>
<t-radio value="1">{{ $t('pages.listCard.productStatusEnum.on') }}</t-radio>
<t-radio value="0">{{ t('pages.listCard.productStatusEnum.off') }}</t-radio>
<t-radio value="1">{{ t('pages.listCard.productStatusEnum.on') }}</t-radio>
</t-radio-group>
</t-form-item>
<t-form-item :label="$t('pages.listCard.productDescription')" name="description">
<t-form-item :label="t('pages.listCard.productDescription')" name="description">
<t-input v-model="formData.description" :style="{ width: '480px' }" />
</t-form-item>
<t-form-item :label="$t('pages.listCard.productType')" name="type">
<t-form-item :label="t('pages.listCard.productType')" name="type">
<t-select v-model="formData.type" clearable :style="{ width: '480px' }">
<t-option v-for="(item, index) in SELECT_OPTIONS" :key="index" :value="item.value" :label="item.label">
{{ item.label }}
</t-option>
</t-select>
</t-form-item>
<t-form-item :label="$t('pages.listCard.productRemark')" name="mark">
<t-form-item :label="t('pages.listCard.productRemark')" name="mark">
<t-textarea v-model="textareaValue" :style="{ width: '480px' }" name="description" />
</t-form-item>
<t-form-item style="float: right">
@ -39,6 +39,8 @@ import { FormRules, MessagePlugin, SubmitContext } from 'tdesign-vue-next';
import type { PropType } from 'vue';
import { ref, watch } from 'vue';
import { t } from '@/locales';
export interface FormData {
name: string;
status: string;

View File

@ -1,9 +1,9 @@
<template>
<div>
<div class="list-card-operation">
<t-button @click="formDialogVisible = true"> {{ $t('pages.listCard.create') }} </t-button>
<t-button @click="formDialogVisible = true"> {{ t('pages.listCard.create') }} </t-button>
<div class="search-input">
<t-input v-model="searchValue" :placeholder="$t('pages.listCard.placeholder')" clearable>
<t-input v-model="searchValue" :placeholder="t('pages.listCard.placeholder')" clearable>
<template #suffix-icon>
<search-icon v-if="searchValue === ''" size="var(--td-comp-size-xxxs)" />
</template>
@ -75,6 +75,7 @@ import { computed, onMounted, ref } from 'vue';
import { getCardList } from '@/api/list';
import type { CardProductType } from '@/components/product-card/index.vue';
import ProductCard from '@/components/product-card/index.vue';
import { t } from '@/locales';
import type { FormData } from './components/DialogForm.vue';
import DialogForm from './components/DialogForm.vue';

View File

@ -2,7 +2,7 @@
<div class="table-tree-container">
<div class="list-tree-wrapper">
<div class="list-tree-operator">
<t-input v-model="filterText" :placeholder="$t('pages.listTree.placeholder')" @change="onInput">
<t-input v-model="filterText" :placeholder="t('pages.listTree.placeholder')" @change="onInput">
<template #suffix-icon>
<search-icon size="var(--td-comp-size-xxxs)" />
</template>
@ -28,6 +28,7 @@ import type { TreeNodeModel } from 'tdesign-vue-next';
import { ref } from 'vue';
import CommonTable from '@/components/common-table/index.vue';
import { t } from '@/locales';
import { TREE_DATA } from './constants';

View File

@ -9,7 +9,7 @@
>
<template v-if="type == 'password'">
<t-form-item name="account">
<t-input v-model="formData.account" size="large" :placeholder="`${$t('pages.login.input.account')}admin`">
<t-input v-model="formData.account" size="large" :placeholder="`${t('pages.login.input.account')}admin`">
<template #prefix-icon>
<t-icon name="user" />
</template>
@ -22,7 +22,7 @@
size="large"
:type="showPsw ? 'text' : 'password'"
clearable
:placeholder="`${$t('pages.login.input.password')}admin`"
:placeholder="`${t('pages.login.input.password')}admin`"
>
<template #prefix-icon>
<t-icon name="lock-on" />
@ -34,16 +34,16 @@
</t-form-item>
<div class="check-container remember-pwd">
<t-checkbox>{{ $t('pages.login.remember') }}</t-checkbox>
<span class="tip">{{ $t('pages.login.forget') }}</span>
<t-checkbox>{{ t('pages.login.remember') }}</t-checkbox>
<span class="tip">{{ t('pages.login.forget') }}</span>
</div>
</template>
<!-- 扫码登录 -->
<template v-else-if="type == 'qrcode'">
<div class="tip-container">
<span class="tip">{{ $t('pages.login.wechatLogin') }}</span>
<span class="refresh">{{ $t('pages.login.refresh') }} <t-icon name="refresh" /> </span>
<span class="tip">{{ t('pages.login.wechatLogin') }}</span>
<span class="refresh">{{ t('pages.login.refresh') }} <t-icon name="refresh" /> </span>
</div>
<qrcode-vue value="" :size="160" level="H" />
</template>
@ -51,7 +51,7 @@
<!-- 手机号登录 -->
<template v-else>
<t-form-item name="phone">
<t-input v-model="formData.phone" size="large" :placeholder="$t('pages.login.input.phone')">
<t-input v-model="formData.phone" size="large" :placeholder="t('pages.login.input.phone')">
<template #prefix-icon>
<t-icon name="mobile" />
</template>
@ -59,25 +59,23 @@
</t-form-item>
<t-form-item class="verification-code" name="verifyCode">
<t-input v-model="formData.verifyCode" size="large" :placeholder="$t('pages.login.input.verification')" />
<t-input v-model="formData.verifyCode" size="large" :placeholder="t('pages.login.input.verification')" />
<t-button size="large" variant="outline" :disabled="countDown > 0" @click="sendCode">
{{ countDown == 0 ? $t('pages.login.sendVerification') : `${countDown}秒后可重发` }}
{{ countDown == 0 ? t('pages.login.sendVerification') : `${countDown}秒后可重发` }}
</t-button>
</t-form-item>
</template>
<t-form-item v-if="type !== 'qrcode'" class="btn-container">
<t-button block size="large" type="submit"> {{ $t('pages.login.signIn') }} </t-button>
<t-button block size="large" type="submit"> {{ t('pages.login.signIn') }} </t-button>
</t-form-item>
<div class="switch-container">
<span v-if="type !== 'password'" class="tip" @click="switchType('password')">{{
$t('pages.login.accountLogin')
t('pages.login.accountLogin')
}}</span>
<span v-if="type !== 'qrcode'" class="tip" @click="switchType('qrcode')">{{
$t('pages.login.wechatLogin')
}}</span>
<span v-if="type !== 'phone'" class="tip" @click="switchType('phone')">{{ $t('pages.login.phoneLogin') }}</span>
<span v-if="type !== 'qrcode'" class="tip" @click="switchType('qrcode')">{{ t('pages.login.wechatLogin') }}</span>
<span v-if="type !== 'phone'" class="tip" @click="switchType('phone')">{{ t('pages.login.phoneLogin') }}</span>
</div>
</t-form>
</template>

View File

@ -4,12 +4,12 @@
<div class="login-container">
<div class="title-container">
<h1 class="title margin-no">{{ $t('pages.login.loginTitle') }}</h1>
<h1 class="title margin-no">{{ t('pages.login.loginTitle') }}</h1>
<h1 class="title">TDesign Starter</h1>
<div class="sub-title">
<p class="tip">{{ type == 'register' ? $t('pages.login.existAccount') : $t('pages.login.noAccount') }}</p>
<p class="tip">{{ type == 'register' ? t('pages.login.existAccount') : t('pages.login.noAccount') }}</p>
<p class="tip" @click="switchType(type == 'register' ? 'login' : 'register')">
{{ type == 'register' ? $t('pages.login.signIn') : $t('pages.login.createAccount') }}
{{ type == 'register' ? t('pages.login.signIn') : t('pages.login.createAccount') }}
</p>
</div>
</div>
@ -31,6 +31,7 @@ export default {
import { ref } from 'vue';
import TdesignSetting from '@/layouts/setting.vue';
import { t } from '@/locales';
import LoginHeader from './components/Header.vue';
import Login from './components/Login.vue';

View File

@ -1,6 +1,6 @@
<template>
<result title="403 Forbidden" :tip="$t('pages.result.403.tips')">
<t-button @click="() => $router.push('/')">{{ $t('pages.result.403.back') }}</t-button>
<result title="403 Forbidden" :tip="t('pages.result.403.tips')">
<t-button @click="() => $router.push('/')">{{ t('pages.result.403.back') }}</t-button>
</result>
</template>
<script lang="ts">
@ -10,4 +10,5 @@ export default {
</script>
<script setup lang="ts">
import Result from '@/components/result/index.vue';
import { t } from '@/locales';
</script>

View File

@ -1,6 +1,6 @@
<template>
<result title="404 Not Found" :tip="$t('pages.result.404.subtitle')" type="404">
<t-button @click="() => $router.push('/')">{{ $t('pages.result.404.back') }}</t-button>
<result title="404 Not Found" :tip="t('pages.result.404.subtitle')" type="404">
<t-button @click="() => $router.push('/')">{{ t('pages.result.404.back') }}</t-button>
</result>
</template>
@ -12,4 +12,5 @@ export default {
<script setup lang="ts">
import Result from '@/components/result/index.vue';
import { t } from '@/locales';
</script>

View File

@ -1,6 +1,6 @@
<template>
<result title="500 Internal Server Error" type="500" :tip="$t('pages.result.500.subtitle')">
<t-button @click="() => $router.push('/')">{{ $t('pages.result.500.back') }}</t-button>
<result title="500 Internal Server Error" type="500" :tip="t('pages.result.500.subtitle')">
<t-button @click="() => $router.push('/')">{{ t('pages.result.500.back') }}</t-button>
</result>
</template>
<script lang="ts">
@ -10,4 +10,5 @@ export default {
</script>
<script setup lang="ts">
import Result from '@/components/result/index.vue';
import { t } from '@/locales';
</script>

View File

@ -1,15 +1,15 @@
<template>
<result
:title="$t('pages.result.browserIncompatible.title')"
:title="t('pages.result.browserIncompatible.title')"
type="ie"
:tip="$t('pages.result.browserIncompatible.subtitle')"
:tip="t('pages.result.browserIncompatible.subtitle')"
>
<div class="result-slot-container">
<t-button class="result-button" @click="() => $router.push('/')">{{
$t('pages.result.browserIncompatible.back')
t('pages.result.browserIncompatible.back')
}}</t-button>
<div class="recommend-container">
<div>{{ $t('pages.result.browserIncompatible.recommend') }}</div>
<div>{{ t('pages.result.browserIncompatible.recommend') }}</div>
<div class="recommend-browser">
<div>
<thumbnail class="browser-icon" url="https://tdesign.gtimg.com/starter/result-page/chorme.png" />
@ -32,6 +32,7 @@ export default {
<script setup lang="ts">
import Result from '@/components/result/index.vue';
import Thumbnail from '@/components/thumbnail/index.vue';
import { t } from '@/locales';
</script>
<style lang="less" scoped>

View File

@ -1,13 +1,13 @@
<template>
<div class="result-success">
<t-icon class="result-success-icon" name="error-circle" />
<div class="result-success-title">{{ $t('pages.result.fail.title') }}</div>
<div class="result-success-describe">{{ $t('pages.result.fail.subtitle') }}</div>
<div class="result-success-title">{{ t('pages.result.fail.title') }}</div>
<div class="result-success-describe">{{ t('pages.result.fail.subtitle') }}</div>
<div>
<t-button theme="default" @click="() => $router.push('/dashboard/base')">{{
$t('pages.result.fail.back')
t('pages.result.fail.back')
}}</t-button>
<t-button @click="() => $router.push('/form/base')">{{ $t('pages.result.fail.modify') }} </t-button>
<t-button @click="() => $router.push('/form/base')">{{ t('pages.result.fail.modify') }} </t-button>
</div>
</div>
</template>
@ -16,6 +16,11 @@ export default {
name: 'ResultFail',
};
</script>
<script lang="ts" setup>
import { t } from '@/locales';
</script>
<style lang="less" scoped>
.result-success {
display: flex;

View File

@ -1,10 +1,6 @@
<template>
<result
:title="$t('pages.result.maintenance.title')"
:tip="$t('pages.result.maintenance.subtitle')"
type="maintenance"
>
<t-button theme="primary" @click="() => $router.push('/')">{{ $t('pages.result.maintenance.back') }}</t-button>
<result :title="t('pages.result.maintenance.title')" :tip="t('pages.result.maintenance.subtitle')" type="maintenance">
<t-button theme="primary" @click="() => $router.push('/')">{{ t('pages.result.maintenance.back') }}</t-button>
</result>
</template>
@ -15,4 +11,5 @@ export default {
</script>
<script setup lang="ts">
import Result from '@/components/result/index.vue';
import { t } from '@/locales';
</script>

View File

@ -1,8 +1,8 @@
<template>
<result :title="$t('pages.result.networkError.title')" :tip="$t('pages.result.networkError.subtitle')" type="wifi">
<result :title="t('pages.result.networkError.title')" :tip="t('pages.result.networkError.subtitle')" type="wifi">
<div>
<t-button theme="default" @click="() => $router.push('/')">{{ $t('pages.result.networkError.back') }}</t-button>
<t-button @click="() => $router.push('/')">{{ $t('pages.result.networkError.reload') }}</t-button>
<t-button theme="default" @click="() => $router.push('/')">{{ t('pages.result.networkError.back') }}</t-button>
<t-button @click="() => $router.push('/')">{{ t('pages.result.networkError.reload') }}</t-button>
</div>
</result>
</template>
@ -14,4 +14,5 @@ export default {
</script>
<script setup lang="ts">
import Result from '@/components/result/index.vue';
import { t } from '@/locales';
</script>

View File

@ -1,13 +1,13 @@
<template>
<div class="result-success">
<t-icon class="result-success-icon" name="check-circle" />
<div class="result-success-title">{{ $t('pages.result.success.title') }}</div>
<div class="result-success-describe">{{ $t('pages.result.success.subtitle') }}</div>
<div class="result-success-title">{{ t('pages.result.success.title') }}</div>
<div class="result-success-describe">{{ t('pages.result.success.subtitle') }}</div>
<div>
<t-button theme="default" @click="() => $router.push('/detail/advanced')">
{{ $t('pages.result.success.progress') }}
{{ t('pages.result.success.progress') }}
</t-button>
<t-button @click="() => $router.push('/dashboard/base')"> {{ $t('pages.result.success.back') }} </t-button>
<t-button @click="() => $router.push('/dashboard/base')"> {{ t('pages.result.success.back') }} </t-button>
</div>
</div>
</template>
@ -16,6 +16,11 @@ export default {
name: 'ResultSuccess',
};
</script>
<script setup lang="ts">
import { t } from '@/locales';
</script>
<style lang="less" scoped>
.result-success {
display: flex;

View File

@ -4,19 +4,19 @@
<div class="user-left-greeting">
<div>
HiImage
<span class="regular"> {{ $t('pages.user.markDay') }}</span>
<span class="regular"> {{ t('pages.user.markDay') }}</span>
</div>
<img src="@/assets/assets-tencent-logo.png" class="logo" />
</div>
<t-card class="user-info-list" :title="$t('pages.user.personalInfo.title')" :bordered="false">
<t-card class="user-info-list" :title="t('pages.user.personalInfo.title')" :bordered="false">
<template #actions>
<t-button theme="default" shape="square" variant="text">
<t-icon name="ellipsis" />
</t-button>
</template>
<t-descriptions :column="4" item-layout="vertical">
<t-descriptions-item v-for="(item, index) in USER_INFO_LIST" :key="index" :label="$t(item.title)">
<t-descriptions-item v-for="(item, index) in USER_INFO_LIST" :key="index" :label="t(item.title)">
{{ item.content }}
</t-descriptions-item>
</t-descriptions>
@ -24,11 +24,11 @@
<t-card class="content-container" :bordered="false">
<t-tabs value="second">
<t-tab-panel value="first" :label="$t('pages.user.contentList')">
<p>{{ $t('pages.user.contentList') }}</p>
<t-tab-panel value="first" :label="t('pages.user.contentList')">
<p>{{ t('pages.user.contentList') }}</p>
</t-tab-panel>
<t-tab-panel value="second" :label="$t('pages.user.contentList')">
<t-card :bordered="false" class="card-padding-no" :title="$t('pages.user.visitData')" describe="(次)">
<t-tab-panel value="second" :label="t('pages.user.contentList')">
<t-card :bordered="false" class="card-padding-no" :title="t('pages.user.visitData')" describe="(次)">
<template #actions>
<t-date-range-picker
class="card-date-picker-container"
@ -41,8 +41,8 @@
<div id="lineContainer" style="width: 100%; height: 328px" />
</t-card>
</t-tab-panel>
<t-tab-panel value="third" :label="$t('pages.user.contentList')">
<p>{{ $t('pages.user.contentList') }}</p>
<t-tab-panel value="third" :label="t('pages.user.contentList')">
<p>{{ t('pages.user.contentList') }}</p>
</t-tab-panel>
</t-tabs>
</t-card>
@ -52,10 +52,10 @@
<t-card class="user-intro" :bordered="false">
<t-avatar size="80px">T</t-avatar>
<div class="name">My Account</div>
<div class="position">{{ $t('pages.user.personalInfo.position') }}</div>
<div class="position">{{ t('pages.user.personalInfo.position') }}</div>
</t-card>
<t-card :title="$t('pages.user.teamMember')" class="user-team" :bordered="false">
<t-card :title="t('pages.user.teamMember')" class="user-team" :bordered="false">
<template #actions>
<t-button theme="default" shape="square" variant="text">
<t-icon name="ellipsis" />
@ -68,7 +68,7 @@
</t-list>
</t-card>
<t-card :title="$t('pages.user.serviceProduction')" class="product-container" :bordered="false">
<t-card :title="t('pages.user.serviceProduction')" class="product-container" :bordered="false">
<template #actions>
<t-button theme="default" shape="square" variant="text">
<t-icon name="ellipsis" />
@ -100,6 +100,7 @@ import ProductAIcon from '@/assets/assets-product-1.svg';
import ProductBIcon from '@/assets/assets-product-2.svg';
import ProductCIcon from '@/assets/assets-product-3.svg';
import ProductDIcon from '@/assets/assets-product-4.svg';
import { t } from '@/locales';
import { useSettingStore } from '@/store';
import { changeChartsTheme } from '@/utils/color';
import { LAST_7_DAYS } from '@/utils/date';