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 .DS_Store
# dependencies manager
node_modules/
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
# build files # build files
es/ es/
lib/ 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", "echarts": "5.4.3",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
"pinia": "^2.1.7", "pinia": "2.1.7",
"pinia-plugin-persistedstate": "^3.2.0", "pinia-plugin-persistedstate": "^3.2.0",
"qrcode.vue": "^3.4.1", "qrcode.vue": "^3.4.1",
"qs": "^6.11.2", "qs": "^6.11.2",
@ -43,6 +43,7 @@
"@commitlint/config-conventional": "^18.6.0", "@commitlint/config-conventional": "^18.6.0",
"@types/echarts": "^4.9.21", "@types/echarts": "^4.9.21",
"@types/lodash": "^4.17.6", "@types/lodash": "^4.17.6",
"@types/mockjs": "^1.0.10",
"@types/nprogress": "^0.2.3", "@types/nprogress": "^0.2.3",
"@types/qs": "^6.9.11", "@types/qs": "^6.9.11",
"@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/eslint-plugin": "^6.21.0",
@ -65,7 +66,6 @@
"less": "^4.2.0", "less": "^4.2.0",
"lint-staged": "^15.2.2", "lint-staged": "^15.2.2",
"mockjs": "^1.1.0", "mockjs": "^1.1.0",
"@types/mockjs": "^1.0.10",
"postcss-html": "^1.6.0", "postcss-html": "^1.6.0",
"postcss-less": "^6.0.0", "postcss-less": "^6.0.0",
"prettier": "^3.2.5", "prettier": "^3.2.5",

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="detail-advanced"> <div class="detail-advanced">
<t-card :bordered="false"> <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"> <t-descriptions-item v-for="(item, index) in BASE_INFO_DATA" :key="index" :label="item.name">
<span <span
:class="{ :class="{
@ -17,32 +17,32 @@
</t-card> </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-row justify="space-between">
<t-steps :current="updateCurrent"> <t-steps :current="updateCurrent">
<t-step-item <t-step-item
:title="$t('pages.detailCard.invoice.step1.title')" :title="t('pages.detailCard.invoice.step1.title')"
:content="$t('pages.detailCard.invoice.step1.content')" :content="t('pages.detailCard.invoice.step1.content')"
/> />
<t-step-item <t-step-item
:title="$t('pages.detailCard.invoice.step2.title')" :title="t('pages.detailCard.invoice.step2.title')"
:content="$t('pages.detailCard.invoice.step2.content')" :content="t('pages.detailCard.invoice.step2.content')"
/> />
<t-step-item <t-step-item
:title="$t('pages.detailCard.invoice.step3.title')" :title="t('pages.detailCard.invoice.step3.title')"
:content="$t('pages.detailCard.invoice.step3.content')" :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-steps>
</t-row> </t-row>
</t-card> </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> <template #actions>
<t-radio-group default-value="dateVal"> <t-radio-group default-value="dateVal">
<t-radio-button value="dateVal"> {{ $t('pages.detailCard.product.quarter') }} </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-button value="monthVal"> {{ t('pages.detailCard.product.month') }} </t-radio-button>
</t-radio-group> </t-radio-group>
</template> </template>
<t-row :gutter="16" class="product-block-container"> <t-row :gutter="16" class="product-block-container">
@ -50,7 +50,7 @@
<div class="product-add"> <div class="product-add">
<div class="product-sub"> <div class="product-sub">
<t-icon name="add" class="product-sub-icon" /> <t-icon name="add" class="product-sub-icon" />
<span>{{ $t('pages.detailCard.product.add') }}</span> <span>{{ t('pages.detailCard.product.add') }}</span>
</div> </div>
</div> </div>
</t-col> </t-col>
@ -61,7 +61,7 @@
</t-card> </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 <t-table
:columns="columns" :columns="columns"
:data="data" :data="data"
@ -109,7 +109,7 @@
</t-table> </t-table>
</t-card> </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> <template #body>
<div class="dialog-info-block"> <div class="dialog-info-block">
<t-descriptions :column="1"> <t-descriptions :column="1">

View File

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

View File

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

View File

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

View File

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

View File

@ -3,16 +3,16 @@
<t-card class="list-card-container" :bordered="false"> <t-card class="list-card-container" :bordered="false">
<t-row justify="space-between"> <t-row justify="space-between">
<div class="left-operation-container"> <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-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"> <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> </p>
</div> </div>
<div class="search-input"> <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> <template #suffix-icon>
<search-icon size="16px" /> <search-icon size="16px" />
</template> </template>
@ -35,41 +35,41 @@
> >
<template #status="{ row }"> <template #status="{ row }">
<t-tag v-if="row.status === CONTRACT_STATUS.FAIL" theme="danger" variant="light"> <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-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>
<t-tag v-if="row.status === CONTRACT_STATUS.EXEC_PENDING" theme="warning" variant="light"> <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>
<t-tag v-if="row.status === CONTRACT_STATUS.EXECUTING" theme="success" variant="light"> <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>
<t-tag v-if="row.status === CONTRACT_STATUS.FINISH" theme="success" variant="light"> <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> </t-tag>
</template> </template>
<template #contractType="{ row }"> <template #contractType="{ row }">
<p v-if="row.contractType === CONTRACT_TYPES.MAIN">{{ $t('pages.listBase.contractStatusEnum.fail') }}</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.SUB">{{ t('pages.listBase.contractStatusEnum.audit') }}</p>
<p v-if="row.contractType === CONTRACT_TYPES.SUPPLEMENT"> <p v-if="row.contractType === CONTRACT_TYPES.SUPPLEMENT">
{{ $t('pages.listBase.contractStatusEnum.pending') }} {{ t('pages.listBase.contractStatusEnum.pending') }}
</p> </p>
</template> </template>
<template #paymentType="{ row }"> <template #paymentType="{ row }">
<div v-if="row.paymentType === CONTRACT_PAYMENT_TYPES.PAYMENT" class="payment-col"> <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>
<div v-if="row.paymentType === CONTRACT_PAYMENT_TYPES.RECEIPT" class="payment-col"> <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> </div>
</template> </template>
<template #op="slotProps"> <template #op="slotProps">
<t-space> <t-space>
<t-link theme="primary" @click="handleClickDetail()"> {{ $t('pages.listBase.detail') }}</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-link theme="danger" @click="handleClickDelete(slotProps)"> {{ t('pages.listBase.delete') }}</t-link>
</t-space> </t-space>
</template> </template>
</t-table> </t-table>

View File

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

View File

@ -1,9 +1,9 @@
<template> <template>
<div> <div>
<div class="list-card-operation"> <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"> <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> <template #suffix-icon>
<search-icon v-if="searchValue === ''" size="var(--td-comp-size-xxxs)" /> <search-icon v-if="searchValue === ''" size="var(--td-comp-size-xxxs)" />
</template> </template>
@ -75,6 +75,7 @@ import { computed, onMounted, ref } from 'vue';
import { getCardList } from '@/api/list'; import { getCardList } from '@/api/list';
import type { CardProductType } from '@/components/product-card/index.vue'; import type { CardProductType } from '@/components/product-card/index.vue';
import ProductCard 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 type { FormData } from './components/DialogForm.vue';
import DialogForm from './components/DialogForm.vue'; import DialogForm from './components/DialogForm.vue';

View File

@ -2,7 +2,7 @@
<div class="table-tree-container"> <div class="table-tree-container">
<div class="list-tree-wrapper"> <div class="list-tree-wrapper">
<div class="list-tree-operator"> <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> <template #suffix-icon>
<search-icon size="var(--td-comp-size-xxxs)" /> <search-icon size="var(--td-comp-size-xxxs)" />
</template> </template>
@ -28,6 +28,7 @@ import type { TreeNodeModel } from 'tdesign-vue-next';
import { ref } from 'vue'; import { ref } from 'vue';
import CommonTable from '@/components/common-table/index.vue'; import CommonTable from '@/components/common-table/index.vue';
import { t } from '@/locales';
import { TREE_DATA } from './constants'; import { TREE_DATA } from './constants';

View File

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

View File

@ -4,12 +4,12 @@
<div class="login-container"> <div class="login-container">
<div class="title-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> <h1 class="title">TDesign Starter</h1>
<div class="sub-title"> <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')"> <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> </p>
</div> </div>
</div> </div>
@ -31,6 +31,7 @@ export default {
import { ref } from 'vue'; import { ref } from 'vue';
import TdesignSetting from '@/layouts/setting.vue'; import TdesignSetting from '@/layouts/setting.vue';
import { t } from '@/locales';
import LoginHeader from './components/Header.vue'; import LoginHeader from './components/Header.vue';
import Login from './components/Login.vue'; import Login from './components/Login.vue';

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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