mirror of
https://github.com/Tencent/tdesign-vue-next-starter.git
synced 2024-12-23 04:26:30 +08:00
Merge branch 'develop' of github.com:Tencent/tdesign-vue-next-starter
This commit is contained in:
commit
8d8d1267af
7
.gitignore
vendored
7
.gitignore
vendored
|
@ -18,8 +18,11 @@ yarn-error.log
|
|||
*.zip
|
||||
.history
|
||||
.stylelintcache
|
||||
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# lock文件 请根据自身项目或团队需求选择具体的包管理工具 并移除具体的ignore的lock文件
|
||||
yarn.lock
|
||||
package-lock.json
|
||||
pnpm-lock.yaml
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
#!/bin/sh
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
if [[ "$OS" == "Windows_NT" ]]; then
|
||||
npx.cmd --no-install commitlint -e $GIT_PARAMS
|
||||
else
|
||||
npx --no-install commitlint -e $GIT_PARAMS
|
||||
fi
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
#!/bin/sh
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
if [[ "$OS" == "Windows_NT" ]]; then
|
||||
npx.cmd lint-staged
|
||||
else
|
||||
npx lint-staged
|
||||
fi
|
||||
|
|
|
@ -3,4 +3,8 @@
|
|||
[ -n "$CI" ] && exit 0
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
if [[ "$OS" == "Windows_NT" ]]; then
|
||||
exec < /dev/tty && npx.cmd git-cz --hook || true
|
||||
else
|
||||
exec < /dev/tty && npx git-cz --hook || true
|
||||
fi
|
||||
|
|
|
@ -145,7 +145,7 @@ export default [
|
|||
},
|
||||
},
|
||||
{
|
||||
url: '/api/get-menu-list',
|
||||
url: '/api/get-menu-list-i18n',
|
||||
method: 'get',
|
||||
timeout: 2000,
|
||||
response: {
|
||||
|
@ -159,7 +159,10 @@ export default [
|
|||
component: 'LAYOUT',
|
||||
redirect: '/list/base',
|
||||
meta: {
|
||||
title: '列表页',
|
||||
title: {
|
||||
zh_CN: '列表页',
|
||||
en_US: 'List',
|
||||
},
|
||||
icon: 'view-list',
|
||||
},
|
||||
children: [
|
||||
|
@ -168,7 +171,10 @@ export default [
|
|||
name: 'ListBase',
|
||||
component: '/list/base/index',
|
||||
meta: {
|
||||
title: '基础列表页',
|
||||
title: {
|
||||
zh_CN: '基础列表页',
|
||||
en_US: 'Base List',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -176,7 +182,10 @@ export default [
|
|||
name: 'ListCard',
|
||||
component: '/list/card/index',
|
||||
meta: {
|
||||
title: '卡片列表页',
|
||||
title: {
|
||||
zh_CN: '卡片列表页',
|
||||
en_US: 'Card List',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -184,7 +193,10 @@ export default [
|
|||
name: 'ListFilter',
|
||||
component: '/list/filter/index',
|
||||
meta: {
|
||||
title: '筛选列表页',
|
||||
title: {
|
||||
zh_CN: '筛选列表页',
|
||||
en_US: 'Filter List',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -192,7 +204,10 @@ export default [
|
|||
name: 'ListTree',
|
||||
component: '/list/tree/index',
|
||||
meta: {
|
||||
title: '树状筛选列表页',
|
||||
title: {
|
||||
zh_CN: '树状筛选列表页',
|
||||
en_US: 'Tree List',
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
|
@ -203,7 +218,10 @@ export default [
|
|||
component: 'LAYOUT',
|
||||
redirect: '/form/base',
|
||||
meta: {
|
||||
title: '表单页',
|
||||
title: {
|
||||
zh_CN: '表单页',
|
||||
en_US: 'Form',
|
||||
},
|
||||
icon: 'edit-1',
|
||||
},
|
||||
children: [
|
||||
|
@ -212,7 +230,10 @@ export default [
|
|||
name: 'FormBase',
|
||||
component: '/form/base/index',
|
||||
meta: {
|
||||
title: '基础表单页',
|
||||
title: {
|
||||
zh_CN: '基础表单页',
|
||||
en_US: 'Base Form',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -220,8 +241,10 @@ export default [
|
|||
name: 'FormStep',
|
||||
component: '/form/step/index',
|
||||
meta: {
|
||||
title: '分步表单页',
|
||||
keepAlive: false,
|
||||
title: {
|
||||
zh_CN: '分步表单页',
|
||||
en_US: 'Step Form',
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
|
@ -232,7 +255,10 @@ export default [
|
|||
component: 'LAYOUT',
|
||||
redirect: '/detail/base',
|
||||
meta: {
|
||||
title: '详情页',
|
||||
title: {
|
||||
zh_CN: '详情页',
|
||||
en_US: 'Detail',
|
||||
},
|
||||
icon: 'layers',
|
||||
},
|
||||
children: [
|
||||
|
@ -241,7 +267,10 @@ export default [
|
|||
name: 'DetailBase',
|
||||
component: '/detail/base/index',
|
||||
meta: {
|
||||
title: '基础详情页',
|
||||
title: {
|
||||
zh_CN: '基础详情页',
|
||||
en_US: 'Base Detail',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -249,7 +278,10 @@ export default [
|
|||
name: 'DetailAdvanced',
|
||||
component: '/detail/advanced/index',
|
||||
meta: {
|
||||
title: '多卡片详情页',
|
||||
title: {
|
||||
zh_CN: '多卡片详情页',
|
||||
en_US: 'Card Detail',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -257,7 +289,10 @@ export default [
|
|||
name: 'DetailDeploy',
|
||||
component: '/detail/deploy/index',
|
||||
meta: {
|
||||
title: '数据详情页',
|
||||
title: {
|
||||
zh_CN: '数据详情页',
|
||||
en_US: 'Data Detail',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -265,7 +300,10 @@ export default [
|
|||
name: 'DetailSecondary',
|
||||
component: '/detail/secondary/index',
|
||||
meta: {
|
||||
title: '二级详情页',
|
||||
title: {
|
||||
zh_CN: '二级详情页',
|
||||
en_US: 'Secondary Detail',
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
|
@ -277,7 +315,10 @@ export default [
|
|||
redirect: '/frame/doc',
|
||||
meta: {
|
||||
icon: 'internet',
|
||||
title: '外部页面',
|
||||
title: {
|
||||
zh_CN: '外部页面',
|
||||
en_US: 'External',
|
||||
},
|
||||
},
|
||||
children: [
|
||||
{
|
||||
|
@ -286,7 +327,10 @@ export default [
|
|||
component: 'IFrame',
|
||||
meta: {
|
||||
frameSrc: 'https://tdesign.tencent.com/starter/docs/vue-next/get-started',
|
||||
title: '使用文档(内嵌)',
|
||||
title: {
|
||||
zh_CN: '使用文档(内嵌)',
|
||||
en_US: 'Documentation(IFrame)',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -295,7 +339,10 @@ export default [
|
|||
component: 'IFrame',
|
||||
meta: {
|
||||
frameSrc: 'https://tdesign.tencent.com/vue-next/getting-started',
|
||||
title: 'TDesign 文档(内嵌)',
|
||||
title: {
|
||||
zh_CN: 'TDesign 文档(内嵌)',
|
||||
en_US: 'TDesign (IFrame)',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -305,7 +352,10 @@ export default [
|
|||
meta: {
|
||||
frameSrc: 'https://tdesign.tencent.com/vue-next/getting-started',
|
||||
frameBlank: true,
|
||||
title: 'TDesign 文档(外链)',
|
||||
title: {
|
||||
zh_CN: 'TDesign 文档(外链',
|
||||
en_US: 'TDesign Doc(Link)',
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
|
|
68
package.json
68
package.json
|
@ -19,61 +19,61 @@
|
|||
"test:coverage": "echo \"no test:coverage specified,work in process\""
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^1.4.0",
|
||||
"dayjs": "^1.11.9",
|
||||
"@vueuse/core": "^10.6.1",
|
||||
"axios": "^1.6.2",
|
||||
"dayjs": "^1.11.10",
|
||||
"echarts": "5.1.2",
|
||||
"lodash": "^4.17.21",
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^2.1.6",
|
||||
"pinia": "^2.1.7",
|
||||
"pinia-plugin-persistedstate": "^3.2.0",
|
||||
"qrcode.vue": "^3.4.0",
|
||||
"qrcode.vue": "^3.4.1",
|
||||
"qs": "^6.11.2",
|
||||
"tdesign-icons-vue-next": "^0.2.0",
|
||||
"tdesign-vue-next": "^1.4.1",
|
||||
"tdesign-icons-vue-next": "^0.2.2",
|
||||
"tdesign-vue-next": "^1.6.8",
|
||||
"tvision-color": "^1.6.0",
|
||||
"vue": "^3.3.4",
|
||||
"vue-clipboard3": "^2.0.0",
|
||||
"vue-i18n": "^9.4.1",
|
||||
"vue": "~3.3.8",
|
||||
"vue-i18n": "^9.6.5",
|
||||
"vue-router": "~4.2.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@commitlint/cli": "^17.6.7",
|
||||
"@commitlint/config-conventional": "^17.6.7",
|
||||
"@types/echarts": "^4.9.18",
|
||||
"@types/lodash": "^4.14.196",
|
||||
"@types/nprogress": "^0.2.0",
|
||||
"@types/qs": "^6.9.7",
|
||||
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
||||
"@typescript-eslint/parser": "^5.62.0",
|
||||
"@vitejs/plugin-vue": "^4.2.3",
|
||||
"@vitejs/plugin-vue-jsx": "^3.0.1",
|
||||
"@vue/compiler-sfc": "^3.3.4",
|
||||
"@vue/eslint-config-typescript": "^11.0.3",
|
||||
"@commitlint/cli": "^18.4.1",
|
||||
"@commitlint/config-conventional": "^18.4.0",
|
||||
"@types/echarts": "^4.9.21",
|
||||
"@types/lodash": "^4.14.201",
|
||||
"@types/nprogress": "^0.2.3",
|
||||
"@types/qs": "^6.9.10",
|
||||
"@typescript-eslint/eslint-plugin": "^6.11.0",
|
||||
"@typescript-eslint/parser": "^6.11.0",
|
||||
"@vitejs/plugin-vue": "^4.4.1",
|
||||
"@vitejs/plugin-vue-jsx": "^3.0.2",
|
||||
"@vue/compiler-sfc": "^3.3.8",
|
||||
"@vue/eslint-config-typescript": "^12.0.0",
|
||||
"commitizen": "^4.3.0",
|
||||
"cz-conventional-changelog": "^3.3.0",
|
||||
"eslint": "^8.45.0",
|
||||
"eslint": "^8.53.0",
|
||||
"eslint-config-airbnb-base": "^15.0.0",
|
||||
"eslint-config-prettier": "^8.9.0",
|
||||
"eslint-plugin-import": "^2.28.0",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"eslint-config-prettier": "^9.0.0",
|
||||
"eslint-plugin-import": "^2.29.0",
|
||||
"eslint-plugin-prettier": "^5.0.1",
|
||||
"eslint-plugin-simple-import-sort": "^10.0.0",
|
||||
"eslint-plugin-vue": "^9.15.1",
|
||||
"eslint-plugin-vue-scoped-css": "^2.5.0",
|
||||
"eslint-plugin-vue": "^9.18.1",
|
||||
"eslint-plugin-vue-scoped-css": "^2.5.1",
|
||||
"husky": "^8.0.3",
|
||||
"less": "^4.1.3",
|
||||
"lint-staged": "^13.2.3",
|
||||
"less": "^4.2.0",
|
||||
"lint-staged": "^15.1.0",
|
||||
"mockjs": "^1.1.0",
|
||||
"postcss-html": "^1.5.0",
|
||||
"postcss-less": "^6.0.0",
|
||||
"prettier": "^2.8.8",
|
||||
"stylelint": "~15.10.2",
|
||||
"prettier": "^3.1.0",
|
||||
"stylelint": "~15.11.0",
|
||||
"stylelint-config-standard": "^34.0.0",
|
||||
"stylelint-order": "~6.0.3",
|
||||
"typescript": "~5.1.6",
|
||||
"vite": "^4.4.7",
|
||||
"typescript": "~5.3.2",
|
||||
"vite": "^4.5.0",
|
||||
"vite-plugin-mock": "^3.0.0",
|
||||
"vite-svg-loader": "^4.0.0",
|
||||
"vue-tsc": "^1.8.8"
|
||||
"vue-tsc": "^1.8.22"
|
||||
},
|
||||
"config": {
|
||||
"commitizen": {
|
||||
|
|
|
@ -294,7 +294,7 @@ const headerAffixedTop = computed(
|
|||
({
|
||||
offsetTop: store.isUseTabsRouter ? 48 : 0,
|
||||
container: `.${prefix}-layout`,
|
||||
} as any), // TO BE FIXED
|
||||
}) as any, // TO BE FIXED
|
||||
);
|
||||
</script>
|
||||
|
||||
|
|
|
@ -83,10 +83,10 @@ const dynamicComponent = computed(() => {
|
|||
}
|
||||
|
||||
&-title {
|
||||
font: var(--td-font-title-large);
|
||||
font-style: normal;
|
||||
margin-top: var(--td-comp-margin-l);
|
||||
color: var(--td-text-color-primary);
|
||||
font: var(--td-font-title-large);
|
||||
}
|
||||
|
||||
&-tip {
|
||||
|
|
|
@ -24,7 +24,7 @@ const className = computed(() => {
|
|||
});
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('@/style/index.less');
|
||||
@import '@/style/index.less';
|
||||
|
||||
.thumbnail {
|
||||
&-container {
|
||||
|
|
|
@ -75,7 +75,7 @@ const iconCls = computed(() => ['trend-icon-container']);
|
|||
}
|
||||
|
||||
&__reverse {
|
||||
color: #ffffff;
|
||||
color: #fff;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
|
|
@ -1,16 +1,14 @@
|
|||
import * as echarts from 'echarts/core';
|
||||
import { onMounted, onUnmounted, Ref, ref } from 'vue';
|
||||
import { onMounted, onUnmounted, Ref, ref, ShallowRef, shallowRef } from 'vue';
|
||||
|
||||
/**
|
||||
* eChart hook
|
||||
* @param domId
|
||||
* @param chart
|
||||
*/
|
||||
export const useChart = (domId: string): Ref<echarts.ECharts> => {
|
||||
export const useChart = (domId: string): ShallowRef<echarts.ECharts> => {
|
||||
let chartContainer: HTMLCanvasElement;
|
||||
const selfChart = ref<echarts.ECharts | any>();
|
||||
const selfChart = shallowRef<echarts.ECharts | any>();
|
||||
const updateContainer = () => {
|
||||
// TODO resize 报错,响应式的问题,待处理
|
||||
selfChart.value.resize({
|
||||
width: chartContainer.clientWidth,
|
||||
height: chartContainer.clientHeight,
|
||||
|
|
|
@ -24,7 +24,8 @@
|
|||
:min-column-width="128"
|
||||
:popup-props="{
|
||||
overlayClassName: 'route-tabs-dropdown',
|
||||
onVisibleChange: (visible: boolean, ctx: PopupVisibleChangeContext) => handleTabMenuClick(visible, ctx, routeItem.path),
|
||||
onVisibleChange: (visible: boolean, ctx: PopupVisibleChangeContext) =>
|
||||
handleTabMenuClick(visible, ctx, routeItem.path),
|
||||
visible: activeTabPath === routeItem.path,
|
||||
}"
|
||||
>
|
||||
|
|
|
@ -98,10 +98,10 @@
|
|||
</t-drawer>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { useClipboard } from '@vueuse/core';
|
||||
import type { PopupVisibleChangeContext } from 'tdesign-vue-next';
|
||||
import { MessagePlugin } from 'tdesign-vue-next';
|
||||
import { computed, onMounted, ref, watchEffect } from 'vue';
|
||||
import useClipboard from 'vue-clipboard3';
|
||||
|
||||
import SettingAutoIcon from '@/assets/assets-setting-auto.svg';
|
||||
import SettingDarkIcon from '@/assets/assets-setting-dark.svg';
|
||||
|
@ -169,9 +169,9 @@ const onPopupVisibleChange = (visible: boolean, context: PopupVisibleChangeConte
|
|||
};
|
||||
|
||||
const handleCopy = () => {
|
||||
const text = JSON.stringify(formData.value, null, 4);
|
||||
const { toClipboard } = useClipboard();
|
||||
toClipboard(text)
|
||||
const sourceText = JSON.stringify(formData.value, null, 4);
|
||||
const { copy } = useClipboard({ source: sourceText });
|
||||
copy()
|
||||
.then(() => {
|
||||
MessagePlugin.closeAll();
|
||||
MessagePlugin.success('复制成功');
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { useLocalStorage, usePreferredLanguages } from '@vueuse/core';
|
||||
import { DropdownOption } from 'tdesign-vue-next';
|
||||
import { computed } from 'vue';
|
||||
import { createI18n } from 'vue-i18n';
|
||||
|
@ -12,19 +13,17 @@ export const langCode: Array<string> = [];
|
|||
export const localeConfigKey = 'tdesign-starter-locale';
|
||||
|
||||
// 获取浏览器默认语言环境
|
||||
const browserLanguage = navigator.language.replace('-', '_');
|
||||
const languages = usePreferredLanguages();
|
||||
|
||||
// 生成语言模块列表
|
||||
const generateLangModuleMap = () => {
|
||||
const fullPaths = Object.keys(langModules);
|
||||
console.log(langModules, 'langModules');
|
||||
fullPaths.forEach((fullPath) => {
|
||||
const k = fullPath.replace('./lang', '');
|
||||
const startIndex = 1;
|
||||
const lastIndex = k.lastIndexOf('/');
|
||||
const code = k.substring(startIndex, lastIndex);
|
||||
langCode.push(code);
|
||||
console.log(langCode, 'langCode');
|
||||
langModuleMap.set(code, langModules[fullPath]);
|
||||
});
|
||||
};
|
||||
|
@ -42,7 +41,7 @@ const importMessages = computed(() => {
|
|||
|
||||
export const i18n = createI18n({
|
||||
legacy: false,
|
||||
locale: localStorage.getItem(localeConfigKey) || browserLanguage || 'zh_CN',
|
||||
locale: useLocalStorage(localeConfigKey, 'zh_CN').value || languages.value[0] || 'zh_CN',
|
||||
fallbackLocale: 'zh_CN',
|
||||
messages: importMessages.value,
|
||||
globalInjection: true,
|
||||
|
|
|
@ -15,7 +15,7 @@ export default {
|
|||
title: '创建失败',
|
||||
subtitle: '抱歉,您的项目创建失败,企业微信联系检查创建者权限,或返回修改。',
|
||||
back: '回到首页',
|
||||
progress: '返回修改',
|
||||
modify: '返回修改',
|
||||
},
|
||||
success: {
|
||||
title: '项目已创建成功',
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { useLocalStorage } from '@vueuse/core';
|
||||
import { computed } from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
|
@ -12,7 +13,7 @@ export function useLocale() {
|
|||
}
|
||||
|
||||
locale.value = lang;
|
||||
localStorage.setItem(localeConfigKey, lang);
|
||||
useLocalStorage(localeConfigKey, 'zh_CN').value = lang;
|
||||
}
|
||||
|
||||
const getComponentsLocale = computed(() => {
|
||||
|
|
|
@ -43,11 +43,12 @@
|
|||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useWindowSize } from '@vueuse/core';
|
||||
import { LineChart, PieChart } from 'echarts/charts';
|
||||
import { GridComponent, LegendComponent, TooltipComponent } from 'echarts/components';
|
||||
import * as echarts from 'echarts/core';
|
||||
import { CanvasRenderer } from 'echarts/renderers';
|
||||
import { computed, nextTick, onDeactivated, onMounted, onUnmounted, ref, watch } from 'vue';
|
||||
import { computed, nextTick, onDeactivated, onMounted, ref, watch } from 'vue';
|
||||
|
||||
import { useSettingStore } from '@/store';
|
||||
import { changeChartsTheme } from '@/utils/color';
|
||||
|
@ -128,11 +129,11 @@ onMounted(() => {
|
|||
nextTick(() => {
|
||||
updateContainer();
|
||||
});
|
||||
window.addEventListener('resize', updateContainer, false);
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
window.removeEventListener('resize', updateContainer);
|
||||
const { width, height } = useWindowSize();
|
||||
watch([width, height], () => {
|
||||
updateContainer();
|
||||
});
|
||||
|
||||
onDeactivated(() => {
|
||||
|
|
|
@ -70,11 +70,12 @@ export default {
|
|||
</script>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useWindowSize } from '@vueuse/core';
|
||||
import { LineChart } from 'echarts/charts';
|
||||
import { GridComponent, LegendComponent, TooltipComponent } from 'echarts/components';
|
||||
import * as echarts from 'echarts/core';
|
||||
import { CanvasRenderer } from 'echarts/renderers';
|
||||
import { computed, nextTick, onMounted, onUnmounted, ref, watch } from 'vue';
|
||||
import { computed, nextTick, onMounted, ref, watch } from 'vue';
|
||||
|
||||
// 导入样式
|
||||
import Trend from '@/components/trend/index.vue';
|
||||
|
@ -127,11 +128,11 @@ onMounted(() => {
|
|||
nextTick(() => {
|
||||
updateContainer();
|
||||
});
|
||||
window.addEventListener('resize', updateContainer, false);
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
window.removeEventListener('resize', updateContainer);
|
||||
const { width, height } = useWindowSize();
|
||||
watch([width, height], () => {
|
||||
updateContainer();
|
||||
});
|
||||
|
||||
watch(
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<t-row :gutter="[16, 16]">
|
||||
<t-col v-for="(item, index) in PANE_LIST" :key="item.title" :xs="6" :xl="3">
|
||||
<t-card
|
||||
:title="item.title"
|
||||
:title="t(item.title)"
|
||||
:bordered="false"
|
||||
:class="{ 'dashboard-item': true, 'dashboard-item--main-color': index == 0 }"
|
||||
>
|
||||
|
@ -55,11 +55,12 @@ export default {
|
|||
</script>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useWindowSize } from '@vueuse/core';
|
||||
import { BarChart, LineChart } from 'echarts/charts';
|
||||
import * as echarts from 'echarts/core';
|
||||
import { CanvasRenderer } from 'echarts/renderers';
|
||||
import { FileIcon, UsergroupIcon } from 'tdesign-icons-vue-next';
|
||||
import { nextTick, onMounted, onUnmounted, ref, watch } from 'vue';
|
||||
import { nextTick, onMounted, ref, watch } from 'vue';
|
||||
|
||||
// 导入样式
|
||||
import Trend from '@/components/trend/index.vue';
|
||||
|
@ -76,25 +77,25 @@ const resizeTime = ref(1);
|
|||
|
||||
const PANE_LIST = [
|
||||
{
|
||||
title: t('pages.dashboardBase.topPanel.card1'),
|
||||
title: 'pages.dashboardBase.topPanel.card1',
|
||||
number: '¥ 28,425.00',
|
||||
upTrend: '20.5%',
|
||||
leftType: 'echarts-line',
|
||||
},
|
||||
{
|
||||
title: t('pages.dashboardBase.topPanel.card2'),
|
||||
title: 'pages.dashboardBase.topPanel.card2',
|
||||
number: '¥ 768.00',
|
||||
downTrend: '20.5%',
|
||||
leftType: 'echarts-bar',
|
||||
},
|
||||
{
|
||||
title: t('pages.dashboardBase.topPanel.card3'),
|
||||
title: 'pages.dashboardBase.topPanel.card3',
|
||||
number: '1126',
|
||||
upTrend: '20.5%',
|
||||
leftType: 'icon-usergroup',
|
||||
},
|
||||
{
|
||||
title: t('pages.dashboardBase.topPanel.card4'),
|
||||
title: 'pages.dashboardBase.topPanel.card4',
|
||||
number: 527,
|
||||
downTrend: '20.5%',
|
||||
leftType: 'icon-file-paste',
|
||||
|
@ -152,11 +153,11 @@ onMounted(() => {
|
|||
nextTick(() => {
|
||||
updateContainer();
|
||||
});
|
||||
window.addEventListener('resize', updateContainer, false);
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
window.removeEventListener('resize', updateContainer);
|
||||
const { width, height } = useWindowSize();
|
||||
watch([width, height], () => {
|
||||
updateContainer();
|
||||
});
|
||||
|
||||
watch(
|
||||
|
|
|
@ -69,11 +69,12 @@ export default {
|
|||
</script>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useWindowSize } from '@vueuse/core';
|
||||
import { LineChart, ScatterChart } from 'echarts/charts';
|
||||
import { GridComponent, LegendComponent, TooltipComponent } from 'echarts/components';
|
||||
import * as echarts from 'echarts/core';
|
||||
import { CanvasRenderer } from 'echarts/renderers';
|
||||
import { computed, nextTick, onDeactivated, onMounted, onUnmounted, watch } from 'vue';
|
||||
import { computed, nextTick, onDeactivated, onMounted, watch } from 'vue';
|
||||
|
||||
import ProductCard from '@/components/product-card/index.vue';
|
||||
import Trend from '@/components/trend/index.vue';
|
||||
|
@ -126,14 +127,14 @@ const renderCharts = () => {
|
|||
|
||||
onMounted(() => {
|
||||
renderCharts();
|
||||
window.addEventListener('resize', updateContainer, false);
|
||||
nextTick(() => {
|
||||
updateContainer();
|
||||
});
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
window.removeEventListener('resize', updateContainer);
|
||||
const { width, height } = useWindowSize();
|
||||
watch([width, height], () => {
|
||||
updateContainer();
|
||||
});
|
||||
|
||||
onDeactivated(() => {
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
</div>
|
||||
<div class="operator-item">
|
||||
<span class="operator-item-info">{{ data.info }}</span>
|
||||
<t-icon class="operator-item-icon" name="chevron-right" size="small" style="color: rgba(0, 0, 0, 0.26)" />
|
||||
<t-icon class="operator-item-icon" name="chevron-right" size="small" style="color: rgb(0 0 0 / 26%)" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="operator-footer">
|
||||
|
@ -70,6 +70,9 @@ export default defineComponent({
|
|||
font-size: var(--td-comp-size-xxxl);
|
||||
padding: calc(var(--td-comp-size-xxxl) - var(--td-comp-size-xl));
|
||||
border-radius: 100%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.operator-title {
|
||||
|
@ -95,12 +98,6 @@ export default defineComponent({
|
|||
border: unset;
|
||||
}
|
||||
|
||||
&-icon {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
svg {
|
||||
circle {
|
||||
fill: var(--td-brand-color-focus);
|
||||
|
@ -136,7 +133,7 @@ export default defineComponent({
|
|||
.operator-footer {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
bottom: 0px;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
|
||||
.t-progress--thin {
|
||||
|
@ -158,11 +155,11 @@ export default defineComponent({
|
|||
display: unset;
|
||||
|
||||
:deep(.t-progress__bar) {
|
||||
border-radius: 0px 0px var(--td-radius-medium) var(--td-radius-medium);
|
||||
border-radius: 0 0 var(--td-radius-medium) var(--td-radius-medium);
|
||||
}
|
||||
|
||||
:deep(.t-progress__inner) {
|
||||
border-radius: 0px 0px 0px var(--td-radius-medium);
|
||||
border-radius: 0 0 0 var(--td-radius-medium);
|
||||
}
|
||||
|
||||
:deep(.t-progress__info) {
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
padding: 0;
|
||||
margin-bottom: var(--td-comp-margin-m);
|
||||
}
|
||||
|
||||
:deep(.t-card__body) {
|
||||
padding: 0;
|
||||
}
|
||||
|
@ -50,8 +51,7 @@
|
|||
width: 100%;
|
||||
height: 240px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-items: center;
|
||||
place-items: center center;
|
||||
border: dashed 1px var(--td-component-border);
|
||||
border-radius: var(--td-radius-medium);
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
.t-list-item {
|
||||
cursor: pointer;
|
||||
padding: var(--td-comp-paddingTB-l) 0;
|
||||
transition: .2s linear;
|
||||
transition: 0.2s linear;
|
||||
|
||||
&:hover {
|
||||
background-color: var(--td-bg-color-container-hover);
|
||||
|
@ -60,7 +60,7 @@
|
|||
.msg-action {
|
||||
display: none;
|
||||
margin-right: var(--td-comp-margin-xxl);
|
||||
transition: .2s linear;
|
||||
transition: 0.2s linear;
|
||||
|
||||
.set-read-icon {
|
||||
margin-right: var(--td-comp-margin-l);
|
||||
|
|
|
@ -14,8 +14,6 @@
|
|||
margin-top: var(--td-comp-margin-xxxl);
|
||||
}
|
||||
|
||||
|
||||
.step-form {
|
||||
margin-top: var(--td-comp-margin-xxxl);
|
||||
}
|
||||
|
||||
|
|
|
@ -242,7 +242,7 @@ const headerAffixedTop = computed(
|
|||
({
|
||||
offsetTop: store.isUseTabsRouter ? 48 : 0,
|
||||
container: `.${prefix}-layout`,
|
||||
} as any),
|
||||
}) as any,
|
||||
);
|
||||
</script>
|
||||
|
||||
|
|
|
@ -53,6 +53,7 @@ const navToHelper = () => {
|
|||
.operations-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.t-button {
|
||||
margin-left: var(--td-comp-margin-l);
|
||||
}
|
||||
|
|
|
@ -124,5 +124,5 @@ const switchType = (val: string) => {
|
|||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import url('../index.less');
|
||||
@import '../index.less';
|
||||
</style>
|
||||
|
|
|
@ -187,7 +187,7 @@
|
|||
color: var(--td-text-color-secondary);
|
||||
}
|
||||
|
||||
@media screen and (max-height: 700px) {
|
||||
@media screen and (height <= 700px) {
|
||||
.copyright {
|
||||
display: none;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
import { t } from '@/locales';
|
||||
|
||||
export interface UserInfoListType {
|
||||
title: string;
|
||||
content: string;
|
||||
|
@ -8,39 +6,39 @@ export interface UserInfoListType {
|
|||
|
||||
export const USER_INFO_LIST: Array<UserInfoListType> = [
|
||||
{
|
||||
title: t('pages.user.personalInfo.desc.mobile'),
|
||||
title: 'pages.user.personalInfo.desc.mobile',
|
||||
content: '+86 13923734567',
|
||||
},
|
||||
{
|
||||
title: t('pages.user.personalInfo.desc.phone'),
|
||||
title: 'pages.user.personalInfo.desc.phone',
|
||||
content: '734567',
|
||||
},
|
||||
{
|
||||
title: t('pages.user.personalInfo.desc.email'),
|
||||
title: 'pages.user.personalInfo.desc.email',
|
||||
content: 'Account@qq.com',
|
||||
},
|
||||
{
|
||||
title: t('pages.user.personalInfo.desc.seat'),
|
||||
title: 'pages.user.personalInfo.desc.seat',
|
||||
content: 'T32F 012',
|
||||
},
|
||||
{
|
||||
title: t('pages.user.personalInfo.desc.entity'),
|
||||
title: 'pages.user.personalInfo.desc.entity',
|
||||
content: '腾讯集团',
|
||||
},
|
||||
{
|
||||
title: t('pages.user.personalInfo.desc.leader'),
|
||||
title: 'pages.user.personalInfo.desc.leader',
|
||||
content: 'Michael Wang',
|
||||
},
|
||||
{
|
||||
title: t('pages.user.personalInfo.desc.position'),
|
||||
title: 'pages.user.personalInfo.desc.position',
|
||||
content: '高级 UI 设计师',
|
||||
},
|
||||
{
|
||||
title: t('pages.user.personalInfo.desc.joinDay'),
|
||||
title: 'pages.user.personalInfo.desc.joinDay',
|
||||
content: '2021-07-01',
|
||||
},
|
||||
{
|
||||
title: t('pages.user.personalInfo.desc.group'),
|
||||
title: 'pages.user.personalInfo.desc.group',
|
||||
content: '腾讯/腾讯公司/某事业群/某产品部/某运营中心/商户服务组',
|
||||
span: 6,
|
||||
},
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
}
|
||||
|
||||
.contract {
|
||||
|
||||
&-title {
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
|
@ -149,6 +148,7 @@
|
|||
|
||||
.card-padding-no {
|
||||
margin-top: var(--td-comp-margin-xxxl);
|
||||
|
||||
:deep(.t-card__body) {
|
||||
margin-top: var(--td-comp-margin-xxl);
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<t-row class="content" justify="space-between">
|
||||
<t-col v-for="(item, index) in USER_INFO_LIST" :key="index" class="contract" :span="item.span ?? 3">
|
||||
<div class="contract-title">
|
||||
{{ item.title }}
|
||||
{{ $t(item.title) }}
|
||||
</div>
|
||||
<div class="contract-detail">
|
||||
{{ item.content }}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
@font-face {
|
||||
font-family: 'TencentSansW7';
|
||||
src: url('data:application/font-woff;charset=utf-8;base64,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') format('woff');
|
||||
src: url('data:application/font-woff;charset=utf-8;base64,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')
|
||||
format('woff');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
|
|
@ -36,4 +36,3 @@ p {
|
|||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ LayoutMap.set('IFRAME', IFRAME);
|
|||
let dynamicViewsModules: Record<string, () => Promise<Recordable>>;
|
||||
|
||||
// 动态从包内引入单个Icon
|
||||
async function getMenuIcon(iconName: string) {
|
||||
async function getMenuIcon(iconName: string): Promise<string> {
|
||||
const RenderIcon = iconsPath[`../../../node_modules/tdesign-icons-vue-next/esm/components/${iconName}.js`];
|
||||
|
||||
const Icon = await RenderIcon();
|
||||
|
@ -51,6 +51,7 @@ function asyncImportRoute(routes: RouteItem[] | undefined) {
|
|||
} else if (name) {
|
||||
item.component = PARENT_LAYOUT();
|
||||
}
|
||||
|
||||
if (item.meta.icon) item.meta.icon = await getMenuIcon(item.meta.icon);
|
||||
|
||||
// eslint-disable-next-line no-unused-expressions
|
||||
|
|
|
@ -13,6 +13,7 @@ module.exports = {
|
|||
ignorePseudoClasses: ['deep'],
|
||||
},
|
||||
],
|
||||
'media-query-no-invalid': null, // 官方表示此规则应当仅对于原生CSS启用,对于预处理器(Less)不应启用
|
||||
},
|
||||
overrides: [
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue
Block a user