导航功能示例,修复Preferences不生效的问题
This commit is contained in:
parent
d921b78951
commit
49011f6812
|
@ -9,5 +9,6 @@ export const overridesPreferences = defineOverridesPreferences({
|
|||
app: {
|
||||
name: import.meta.env.VITE_APP_TITLE,
|
||||
authPageLayout: 'panel-center',
|
||||
enablePreferences:true
|
||||
},
|
||||
});
|
||||
|
|
|
@ -89,9 +89,9 @@ const routes: RouteRecordRaw[] = [
|
|||
},
|
||||
component: () => import('#/views/meeting/edit/index.vue'),
|
||||
meta: {
|
||||
hideInMenu: true,
|
||||
hideInTab: true,
|
||||
activePath: '/meeting/list',
|
||||
// hideInMenu: true,
|
||||
// hideInTab: true,
|
||||
activePath: '/meeting/edit/:id?',
|
||||
icon: 'lucide:area-chart',
|
||||
title: '会议填报',
|
||||
},
|
||||
|
|
|
@ -35,7 +35,7 @@ const [SpokenPersonEditModal, spokenPersonEditModalApi] = useVbenModal({
|
|||
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
const id = route.params.id;
|
||||
const id = ref(route.params.id);
|
||||
|
||||
let sortable2: any;
|
||||
const showHelpTip = ref(false);
|
||||
|
@ -466,10 +466,15 @@ const currData = ref({});
|
|||
|
||||
onMounted(async () => {
|
||||
isLoading.value = true;
|
||||
console.log(id);
|
||||
|
||||
console.log(id.value)
|
||||
if(id.value === ':id'){
|
||||
id.value = ''
|
||||
}
|
||||
|
||||
try {
|
||||
if (id) {
|
||||
let data = await Apis.meeting.get_page({ params: { guid: id } });
|
||||
if (id.value) {
|
||||
let data = await Apis.meeting.get_page({ params: { guid: id.value } });
|
||||
data = data.rows[0];
|
||||
|
||||
console.log(data);
|
||||
|
@ -522,7 +527,7 @@ onMounted(async () => {
|
|||
let initTime: any;
|
||||
nextTick(() => {
|
||||
// 加载完成之后在绑定拖动事件
|
||||
if (id) {
|
||||
if (id.value) {
|
||||
initTime = setTimeout(() => {
|
||||
rowDrop();
|
||||
}, 500);
|
||||
|
|
|
@ -83,6 +83,7 @@ export function getColumns(params: any = {}): VxeGridPropTypes.Columns {
|
|||
|
||||
if (params.type !== 'taizhang') {
|
||||
columns.unshift({
|
||||
field: 'radio',
|
||||
type: 'radio',
|
||||
width: 40,
|
||||
slots: { radio: 'radio_cell' },
|
||||
|
|
|
@ -106,6 +106,9 @@ function handleExport() {
|
|||
if ($grid) {
|
||||
$grid.exportData({
|
||||
type: 'xlsx',
|
||||
columnFilterMethod: ({ column }) => {
|
||||
return column.type === 'radio' ? false : true;
|
||||
},
|
||||
});
|
||||
message.success('导出成功');
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ export function getColumns(params: any = {}): VxeGridPropTypes.Columns {
|
|||
},
|
||||
},
|
||||
{
|
||||
field: 'meetingDate',
|
||||
field: 'meetingInfo',
|
||||
title: '会议信息',
|
||||
width: 200,
|
||||
slots: { default: 'meetingInfoSlot' },
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script setup lang="ts">
|
||||
import { computed, onMounted, ref } from 'vue';
|
||||
import { computed, nextTick, onMounted, ref, watch } from 'vue';
|
||||
import { useRoute, useRouter } from 'vue-router';
|
||||
|
||||
import { message, Modal } from 'ant-design-vue';
|
||||
|
@ -34,6 +34,9 @@ const textColor = ref('text-gray-700');
|
|||
const bgColor = ref('bg-gray-50');
|
||||
const isBold = ref(false);
|
||||
|
||||
const textContainerRef = ref();
|
||||
let alignItemsValue = ref('center');
|
||||
|
||||
const currData = ref({
|
||||
guid: '',
|
||||
meetingTheme: '',
|
||||
|
@ -46,6 +49,11 @@ const currData = ref({
|
|||
fileUuidAfter: '',
|
||||
});
|
||||
|
||||
|
||||
watch(textSize, () => {
|
||||
checkOverflow()
|
||||
});
|
||||
|
||||
async function loadDataByMeeting() {
|
||||
try {
|
||||
const data = await Apis.meeting.get_page({
|
||||
|
@ -147,6 +155,7 @@ const startMeeting = () => {
|
|||
// 判断有无发言人员
|
||||
if (addressorData.value.length > 0) {
|
||||
meetingStarted.value = true;
|
||||
checkOverflow();
|
||||
} else {
|
||||
message.warning('暂无发言人员,请先添加发言人员后再试');
|
||||
}
|
||||
|
@ -156,12 +165,14 @@ const nextSpeaker = () => {
|
|||
if (currentIndex.value < addressorData.value.length - 1) {
|
||||
currentIndex.value++;
|
||||
}
|
||||
checkOverflow();
|
||||
};
|
||||
|
||||
const prevSpeaker = () => {
|
||||
if (currentIndex.value > 0) {
|
||||
currentIndex.value--;
|
||||
}
|
||||
checkOverflow();
|
||||
};
|
||||
|
||||
const endMeeting = () => {
|
||||
|
@ -179,6 +190,23 @@ function downloadFile(fileUrl) {
|
|||
link.click();
|
||||
link.remove();
|
||||
}
|
||||
|
||||
function checkOverflow() {
|
||||
nextTick(() => {
|
||||
const container = textContainerRef.value;
|
||||
if (container) {
|
||||
const containerHeight = container.clientHeight; // 可视区域高度
|
||||
const contentHeight = container.scrollHeight; // 内容实际高度
|
||||
console.log(containerHeight, contentHeight);
|
||||
// 如果内容高度超出容器高度,调整 `align-items`
|
||||
if (contentHeight > containerHeight) {
|
||||
alignItemsValue.value = 'flex-start'; // 内容太多时,靠顶部对齐
|
||||
} else {
|
||||
alignItemsValue.value = 'center'; // 内容太多时,靠顶部对齐
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
@ -372,15 +400,16 @@ function downloadFile(fileUrl) {
|
|||
class="content-area mb-4 flex h-[50vh] items-center overflow-y-auto rounded-lg p-4"
|
||||
>
|
||||
<div
|
||||
ref="textContainerRef"
|
||||
:class="[textColor, textSize, { 'font-bold': isBold }]"
|
||||
class="text-left"
|
||||
style="
|
||||
white-space: pre-line;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 100%;
|
||||
"
|
||||
:style="{
|
||||
whiteSpace: 'pre-line',
|
||||
display: 'flex',
|
||||
alignItems: alignItemsValue, // 动态绑定 align-items
|
||||
justifyContent: 'center',
|
||||
height: '100%',
|
||||
}"
|
||||
>
|
||||
{{ currentSpeaker.abstracts }}
|
||||
</div>
|
||||
|
|
|
@ -24,7 +24,7 @@ export const overridesPreferences = defineOverridesPreferences({
|
|||
enablePreferences: false,
|
||||
enableRefreshToken: false,
|
||||
isMobile: false,
|
||||
layout: 'sidebar-nav',
|
||||
layout: 'sidebar-topbar',
|
||||
locale: 'zh-CN',
|
||||
loginExpiredMode: 'page',
|
||||
preferencesButtonPosition: 'auto',
|
||||
|
|
|
@ -31,7 +31,7 @@ function mergeDeep(target: any, source: any) {
|
|||
*/
|
||||
|
||||
function defineOverridesPreferences(preferences: DeepPartial<Preferences>) {
|
||||
return mergeDeep(preferences, {
|
||||
let defaultPreferences: DeepPartial<Preferences> = {
|
||||
app: {
|
||||
accessMode: 'frontend',
|
||||
colorGrayMode: false,
|
||||
|
@ -45,7 +45,7 @@ function defineOverridesPreferences(preferences: DeepPartial<Preferences>) {
|
|||
// 检查更新的时间间隔,单位为分钟
|
||||
checkUpdatesInterval: 1,
|
||||
// 开启布局设置按钮
|
||||
enablePreferences: true,
|
||||
enablePreferences: false,
|
||||
enableRefreshToken: false,
|
||||
},
|
||||
theme: {
|
||||
|
@ -78,7 +78,9 @@ function defineOverridesPreferences(preferences: DeepPartial<Preferences>) {
|
|||
languageToggle: false,
|
||||
themeToggle: false,
|
||||
},
|
||||
});
|
||||
};
|
||||
console.log('页面配置信息:', mergeDeep(defaultPreferences, preferences));
|
||||
return mergeDeep(defaultPreferences, preferences);
|
||||
}
|
||||
|
||||
export { defineOverridesPreferences };
|
||||
|
|
Loading…
Reference in New Issue