99 lines
3.2 KiB
Vue
99 lines
3.2 KiB
Vue
|
|
<!--
|
|||
|
|
* 主应用页面
|
|||
|
|
*
|
|||
|
|
* @Author: 1024创新实验室-主任:卓大
|
|||
|
|
* @Date: 2022-09-12 23:46:47
|
|||
|
|
* @Wechat: zhuda1024
|
|||
|
|
* @Email: lab1024@163.com
|
|||
|
|
* @Copyright 1024创新实验室 ( https://1024lab.net ),Since 2012
|
|||
|
|
-->
|
|||
|
|
|
|||
|
|
<template>
|
|||
|
|
<a-config-provider
|
|||
|
|
:locale="antdLocale"
|
|||
|
|
:theme="{
|
|||
|
|
algorithm: compactFlag ? theme.compactAlgorithm : theme.defaultAlgorithm,
|
|||
|
|
token: {
|
|||
|
|
colorPrimary: themeColors[colorIndex].primaryColor,
|
|||
|
|
colorLink: themeColors[colorIndex].primaryColor,
|
|||
|
|
colorLinkActive: themeColors[colorIndex].activeColor,
|
|||
|
|
colorLinkHover: themeColors[colorIndex].hoverColor,
|
|||
|
|
colorIcon: themeColors[colorIndex].primaryColor,
|
|||
|
|
borderRadius: borderRadius,
|
|||
|
|
},
|
|||
|
|
components: {
|
|||
|
|
Button: {
|
|||
|
|
colorLink: themeColors[colorIndex].primaryColor,
|
|||
|
|
colorLinkActive: themeColors[colorIndex].activeColor,
|
|||
|
|
colorLinkHover: themeColors[colorIndex].hoverColor,
|
|||
|
|
},
|
|||
|
|
Icon: {
|
|||
|
|
colorIcon: themeColors[colorIndex].primaryColor,
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
}"
|
|||
|
|
:transformCellText="transformCellText"
|
|||
|
|
>
|
|||
|
|
<!---全局loading--->
|
|||
|
|
<a-spin :spinning="spinning" tip="稍等片刻,我在拼命加载中..." size="large">
|
|||
|
|
<!--- 路由 -->
|
|||
|
|
<RouterView />
|
|||
|
|
</a-spin>
|
|||
|
|
</a-config-provider>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script setup lang="ts">
|
|||
|
|
import dayjs from 'dayjs';
|
|||
|
|
import { computed, h, useSlots } from 'vue';
|
|||
|
|
import { messages } from '/@/i18n';
|
|||
|
|
import { useAppConfigStore } from '/@/store/modules/system/app-config';
|
|||
|
|
import { useSpinStore } from '/@/store/modules/system/spin';
|
|||
|
|
import { theme } from 'ant-design-vue';
|
|||
|
|
import { themeColors } from '/@/theme/color.js';
|
|||
|
|
import { Popover } from 'ant-design-vue';
|
|||
|
|
import SmartCopyIcon from '/@/components/framework/smart-copy-icon/index.vue';
|
|||
|
|
|
|||
|
|
const slots = useSlots();
|
|||
|
|
const antdLocale = computed(() => messages[useAppConfigStore().language].antdLocale);
|
|||
|
|
const dayjsLocale = computed(() => messages[useAppConfigStore().language].dayjsLocale);
|
|||
|
|
dayjs.locale(dayjsLocale);
|
|||
|
|
|
|||
|
|
// 全局loading
|
|||
|
|
let spinStore = useSpinStore();
|
|||
|
|
const spinning = computed(() => spinStore.loading);
|
|||
|
|
// 是否紧凑
|
|||
|
|
const compactFlag = computed(() => useAppConfigStore().compactFlag);
|
|||
|
|
// 主题颜色
|
|||
|
|
const colorIndex = computed(() => {
|
|||
|
|
return useAppConfigStore().colorIndex;
|
|||
|
|
});
|
|||
|
|
// 圆角
|
|||
|
|
const borderRadius = computed(() => {
|
|||
|
|
return useAppConfigStore().borderRadius;
|
|||
|
|
});
|
|||
|
|
function transformCellText({ text, column, record, index }) {
|
|||
|
|
if (column && column.textEllipsisFlag === true) {
|
|||
|
|
return h(
|
|||
|
|
Popover,
|
|||
|
|
{ placement: 'bottom' },
|
|||
|
|
{
|
|||
|
|
default: () =>
|
|||
|
|
h('div', { style: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }, id: `${column.dataIndex}${index}` }, text),
|
|||
|
|
content: () =>
|
|||
|
|
h('div', { style: { display: 'flex' } }, [
|
|||
|
|
h('div', text),
|
|||
|
|
h(SmartCopyIcon, { value: document.getElementById(`${column.dataIndex}${index}`).innerText }),
|
|||
|
|
]),
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
} else {
|
|||
|
|
return text;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
<style scoped lang="less">
|
|||
|
|
:deep(.ant-table-column-sorters) {
|
|||
|
|
align-items: flex-start !important;
|
|||
|
|
}
|
|||
|
|
</style>
|