Compare commits

...

4 Commits

26 changed files with 106 additions and 45 deletions

View File

@ -144,7 +144,6 @@ export function getFormSchema(params: any = {}) {
vModel: 'value',
class: 'w-full',
min: 0,
max: 9999,
disabled: readOnly,
},
},

View File

@ -92,7 +92,6 @@ export function getFormSchema(params: any = {}) {
vModel: 'value',
class: 'w-full',
min: 0,
max: 9999,
},
},
priceType: {

View File

@ -108,7 +108,6 @@ export function getFormSchema(params: any = {}) {
vModel: 'value',
class: 'w-full',
min: 0,
max: 9999,
},
},
priceType: {

View File

@ -98,7 +98,6 @@ export function getFormSchema(params: any = {}) {
vModel: 'value',
class: 'w-full',
min: 0,
max: 9999,
disabled: true,
},
},

View File

@ -221,7 +221,6 @@ export function getFormSchema(params: any = {}): any {
vModel: 'value',
class: 'w-full',
min: 0,
max: 9999,
},
conditionalRender: {
match({ form }) {

View File

@ -236,7 +236,6 @@ export function getFormSchema(params: any = {}) {
vModel: 'value',
class: 'w-full',
min: 0,
max: 9999,
},
conditionalRender: {
match({ form }) {

View File

@ -249,7 +249,6 @@ export function getFormSchemaByBusiness(params: any = {}) {
vModel: 'value',
class: 'w-full',
min: 0,
max: 9999,
},
conditionalRender: {
match({ form }) {

View File

@ -95,7 +95,6 @@ const formBinding = ref({
name: 'a-input-number',
allowClear: true,
min: 0,
max: 9999,
},
},
status: {

View File

@ -9,5 +9,6 @@ export const overridesPreferences = defineOverridesPreferences({
app: {
name: import.meta.env.VITE_APP_TITLE,
authPageLayout: 'panel-center',
enablePreferences:true
},
});

View File

@ -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: '会议填报',
},

View File

@ -134,7 +134,6 @@ function openModal(type) {
name: 'a-input-number',
vModel: 'value',
min: 0,
max: 9999,
addonAfter: '元',
},
},
@ -152,7 +151,6 @@ function openModal(type) {
name: 'a-input-number',
vModel: 'value',
min: 0,
max: 9999,
addonAfter: '元',
},
},
@ -171,7 +169,6 @@ function openModal(type) {
name: 'a-input-number',
vModel: 'value',
min: 0,
max: 9999,
addonAfter: '元',
},
},
@ -189,7 +186,6 @@ function openModal(type) {
name: 'a-input-number',
vModel: 'value',
min: 0,
max: 9999,
addonAfter: '元',
},
},

View File

@ -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);

View File

@ -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' },

View File

@ -106,6 +106,9 @@ function handleExport() {
if ($grid) {
$grid.exportData({
type: 'xlsx',
columnFilterMethod: ({ column }) => {
return column.type === 'radio' ? false : true;
},
});
message.success('导出成功');
}

View File

@ -31,7 +31,7 @@ export function getColumns(params: any = {}): VxeGridPropTypes.Columns {
},
},
{
field: 'meetingDate',
field: 'meetingInfo',
title: '会议信息',
width: 200,
slots: { default: 'meetingInfoSlot' },

View File

@ -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>

View File

@ -95,7 +95,6 @@ const formBinding = ref({
name: 'a-input-number',
allowClear: true,
min: 0,
max: 9999,
},
},
status: {

View File

@ -30,14 +30,14 @@ export default defineConfig(async () => {
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api\/app/, '/'),
// target: `http://10.71.220.24:8083/rl`,
target: `http://192.168.147.164:8083/rl`,
target: `http://192.168.148.88:8083/rl`,
ws: true,
},
'/api/uc': {
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api\/uc/, '/'),
// target: `http://10.71.220.24:8082`,
target: `http://192.168.147.164:8082`,
target: `http://192.168.148.88:8082`,
ws: true,
},
'/api/czg/app': {
@ -51,7 +51,7 @@ export default defineConfig(async () => {
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api\/czg\/uc/, '/'),
// mock代理目标地址
target: `http://192.168.147.164:8082`,
target: `http://192.168.148.88:8082`,
ws: true,
},
'/api/zp/app': {
@ -65,7 +65,7 @@ export default defineConfig(async () => {
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api\/zp\/uc/, '/'),
// mock代理目标地址
target: `http://192.168.147.164:8082`,
target: `http://192.168.148.88:8082`,
ws: true,
},
'/api/xmh/app': {
@ -80,7 +80,7 @@ export default defineConfig(async () => {
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api\/xmh\/uc/, '/'),
// mock代理目标地址
target: `http://192.168.147.164:8082`,
target: `http://192.168.148.88:8082`,
ws: true,
},
},

View File

@ -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',

View File

@ -3,7 +3,8 @@ type LayoutType =
| 'header-nav'
| 'mixed-nav'
| 'sidebar-mixed-nav'
| 'sidebar-nav';
| 'sidebar-nav'
| 'sidebar-topbar';
type ThemeModeType = 'auto' | 'dark' | 'light';

View File

@ -104,6 +104,8 @@ interface HeaderPreferences {
hidden: boolean;
/** header显示模式 */
mode: LayoutHeaderModeType;
/** header高度适用于 layout 为 sidebar-topbar 模式 */
height: number;
}
interface LogoPreferences {

View File

@ -97,6 +97,7 @@ interface VbenLayoutProps {
* header-nav
* mixed-nav &
* sidebar-mixed-nav
* sidebar-topbar +
* full-content
* @default sidebar-nav
*/

View File

@ -120,7 +120,11 @@ const sidebarEnableState = computed(() => {
*/
const sidebarMarginTop = computed(() => {
const { headerHeight, isMobile } = props;
return isMixedNav.value && !isMobile ? headerHeight : 0;
console.log(props);
return (isMixedNav.value && !isMobile) ||
currentLayout.value === 'sidebar-topbar'
? headerHeight
: 0;
});
/**
@ -167,7 +171,8 @@ const isSideMode = computed(
() =>
currentLayout.value === 'mixed-nav' ||
currentLayout.value === 'sidebar-mixed-nav' ||
currentLayout.value === 'sidebar-nav',
currentLayout.value === 'sidebar-nav' ||
currentLayout.value === 'sidebar-topbar',
);
/**
@ -199,6 +204,7 @@ const mainStyle = computed(() => {
headerFixed.value &&
currentLayout.value !== 'header-nav' &&
currentLayout.value !== 'mixed-nav' &&
currentLayout.value !== 'sidebar-topbar' &&
showSidebar.value &&
!props.isMobile
) {
@ -291,7 +297,10 @@ const headerWrapperStyle = computed((): CSSProperties => {
const fixed = headerFixed.value;
return {
height: isFullContent.value ? '0' : `${headerWrapperHeight.value}px`,
left: isMixedNav.value ? 0 : mainStyle.value.sidebarAndExtraWidth,
left:
isMixedNav.value || currentLayout.value === 'sidebar-topbar'
? 0
: mainStyle.value.sidebarAndExtraWidth,
position: fixed ? 'fixed' : 'static',
top:
headerIsHidden.value || isFullContent.value
@ -335,12 +344,18 @@ const showHeaderToggleButton = computed(() => {
isSideMode.value &&
!isSidebarMixedNav.value &&
!isMixedNav.value &&
!props.isMobile)
!props.isMobile &&
currentLayout.value !== 'sidebar-topbar')
);
});
const showHeaderLogo = computed(() => {
return !isSideMode.value || isMixedNav.value || props.isMobile;
return (
!isSideMode.value ||
isMixedNav.value ||
props.isMobile ||
currentLayout.value === 'sidebar-topbar'
);
});
watch(
@ -454,7 +469,10 @@ function handleHeaderToggle() {
:z-index="sidebarZIndex"
@leave="() => emit('sideMouseLeave')"
>
<template v-if="isSideMode && !isMixedNav" #logo>
<template
v-if="isSideMode && !isMixedNav && currentLayout !== 'sidebar-topbar'"
#logo
>
<slot name="logo"></slot>
</template>

View File

@ -153,6 +153,7 @@ const headerSlots = computed(() => {
<VbenAdminLayout
v-model:sidebar-extra-visible="sidebarExtraVisible"
:content-compact="preferences.app.contentCompact"
:header-height="preferences.header.height"
:footer-enable="preferences.footer.enable"
:footer-fixed="preferences.footer.fixed"
:header-hidden="preferences.header.hidden"
@ -211,6 +212,7 @@ const headerSlots = computed(() => {
#breadcrumb
>
<Breadcrumb
v-if="preferences.app.layout !== 'sidebar-topbar'"
:hide-when-only-one="preferences.breadcrumb.hideOnlyOne"
:show-home="preferences.breadcrumb.showHome"
:show-icon="preferences.breadcrumb.showIcon"

View File

@ -33,6 +33,7 @@ const components: Record<LayoutType, Component> = {
'mixed-nav': MixedNav,
'sidebar-mixed-nav': SidebarMixedNav,
'sidebar-nav': SidebarNav,
'sidebar-topbar': MixedNav,
};
const PRESET = computed((): PresetItem[] => [
@ -61,6 +62,11 @@ const PRESET = computed((): PresetItem[] => [
tip: $t('preferences.fullContentTip'),
type: 'full-content',
},
{
name: '侧边菜单 + 顶部栏布局',
tip: '顶部栏仅用于显示全局信息或操作,不包含菜单。',
type: 'sidebar-topbar',
},
]);
function activeClass(theme: string): string[] {

View File

@ -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,
@ -59,6 +59,9 @@ function defineOverridesPreferences(preferences: DeepPartial<Preferences>) {
semiDarkHeader: false,
semiDarkSidebar: true,
},
header: {
height: 50,
},
footer: {
enable: false,
fixed: false,
@ -75,7 +78,9 @@ function defineOverridesPreferences(preferences: DeepPartial<Preferences>) {
languageToggle: false,
themeToggle: false,
},
});
};
console.log('页面配置信息:', mergeDeep(defaultPreferences, preferences));
return mergeDeep(defaultPreferences, preferences);
}
export { defineOverridesPreferences };