mirror of
https://github.com/Tencent/tdesign-vue-next-starter.git
synced 2024-12-22 18:33:44 +08:00
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:
parent
867532bd50
commit
93b9d53701
12
.gitignore
vendored
12
.gitignore
vendored
|
@ -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
1
.yarnrc.yml
Normal file
|
@ -0,0 +1 @@
|
||||||
|
nodeLinker: node-modules
|
6200
package-lock.json
generated
6200
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
|
@ -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",
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
});
|
});
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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'"
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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" />
|
||||||
|
|
|
@ -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 });
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -4,19 +4,19 @@
|
||||||
<div class="user-left-greeting">
|
<div class="user-left-greeting">
|
||||||
<div>
|
<div>
|
||||||
Hi,Image
|
Hi,Image
|
||||||
<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';
|
||||||
|
|
Loading…
Reference in New Issue
Block a user