Explorar el Código

!1897 修复 Swagger登录后 “Authorize” 弹窗提示 Unknown security definition type
Merge pull request !1897 from 夜鹰/i18n

zuohuaijun hace 7 meses
padre
commit
6073bed04d

+ 1 - 1
Admin.NET/Admin.NET.Web.Core/Startup.cs

@@ -364,7 +364,7 @@ public class Startup : AppStartup
             {
                 groupInfo.Description += "<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>";
             }
-            options.ConfigureSwagger(m => { m.OpenApiVersion = Microsoft.OpenApi.OpenApiSpecVersion.OpenApi2_0; });
+            options.ConfigureSwagger(m => { m.OpenApiVersion = Microsoft.OpenApi.OpenApiSpecVersion.OpenApi3_0; });
         });
 
 #if NET9_0_OR_GREATER

+ 56 - 79
Web/src/components/table/index.vue

@@ -5,7 +5,7 @@
 				<slot name="command"></slot>
 			</div>
 			<div v-loading="state.exportLoading" class="table-footer-tool">
-                <el-dropdown v-if="config.hideExport" split-button trigger="click" @click="onExportTable">
+                <el-dropdown v-if="!config.hideExport" split-button trigger="click" @click="onExportTable">
                     <!-- <el-button icon="ele-Download"  /> -->
                      导出
                     <template #dropdown>
@@ -20,7 +20,7 @@
                     <el-button icon="ele-Refresh" v-if="!config.hideRefresh" title="刷新" @click="() => onRefreshTable()" />
                     <el-button icon="ele-Switch" v-if="state.haveFixed" :title="state.switchFixedContent" :color="state.fixedIconColor" @click="switchFixed" />
                     <el-button icon="ele-Printer" v-if="!config.hidePrint" title="打印" @click="onPrintTable"  />
-                    <el-popover v-if="!config.hideSet" placement="bottom-end" trigger="click" transition="el-zoom-in-top" popper-class="table-tool-popper" :width="180" :persistent="false" @show="onSetTable">
+                    <el-popover v-if="!config.hideSet" placement="bottom-end" trigger="click" transition="el-zoom-in-top" popper-class="table-tool-popper" :width="200" :persistent="false" @show="onSetTable">
                         <template #reference>
                             <el-button icon="ele-Setting"  />
                         </template>
@@ -30,13 +30,12 @@
                                 <el-checkbox v-model="getConfig.isSerialNo" class="ml12 mr1" label="序号" />
                                 <el-checkbox v-if="getConfig.showSelection" v-model="getConfig.isSelection" class="ml12 mr1" label="多选" />
                                 <el-tooltip content="拖动进行排序" placement="top-start">
-                                    <SvgIcon style="float: right; margin-right: 5px; margin-top: 2px" name="fa fa-question-circle-o" :size="17" class="ml11" color="#909399" />
+                                    <SvgIcon style="position: absolute; right: 15px; line-height: 32px;" name="fa fa-question-circle-o" :size="17" class="ml11" color="#909399" />
                                 </el-tooltip>
                             </div>
-                            <el-divider style="margin: 10px 0 10px -5px" />
                             <el-scrollbar>
                                 <div ref="toolSetRef" class="tool-sortable">
-                                    <div class="tool-sortable-item" v-for="v in columns" :key="v.prop" v-show="!v.hideCheck" :data-key="v.prop">
+                                    <div class="tool-sortable-item" v-for="v in columns" :key="v.prop" :fixed="v.hideCheck" :data-key="v.prop">
                                         <i class="fa fa-arrows-alt handle cursor-pointer"></i>
                                         <el-checkbox v-model="v.isCheck" size="default" class="ml12 mr8" :label="v.label" @change="onCheckChange" />
                                     </div>
@@ -48,18 +47,18 @@
 			</div>
 		</div>
 		<el-table
-				ref="tableRef"
-				:data="state.data"
-				:border="setBorder"
-				:stripe="setStripe"
-				v-bind="$attrs"
-				row-key="id"
-				default-expand-all
-				style="width: 100%"
-				v-loading="state.loading"
-				:default-sort="defaultSort"
-				@selection-change="onSelectionChange"
-				@sort-change="sortChange"
+            ref="tableRef"
+            :data="state.data"
+            :border="setBorder"
+            :stripe="setStripe"
+            v-bind="$attrs"
+            row-key="id"
+            default-expand-all
+            style="width: 100%"
+            v-loading="state.loading"
+            :default-sort="defaultSort"
+            @selection-change="onSelectionChange"
+            @sort-change="sortChange"
 		>
 			<el-table-column type="selection" :reserve-selection="true" :width="30" v-if="config.isSelection && config.showSelection" />
 			<el-table-column type="index" :fixed="state.currentFixed && state.serialNoFixed" label="序号" align="center" :width="60" v-if="config.isSerialNo" />
@@ -76,12 +75,12 @@
 					<formatter v-if="item.formatter" :fn="item.formatter(scope.row, scope.column, scope.cellValue, scope.index)"> </formatter>
 					<template v-else-if="item.type === 'image'">
 						<el-image
-								:style="{ width: `${item.width}px`, height: `${item.height}px` }"
-								:src="scope.row[item.prop]"
-								:zoom-rate="1.2"
-								:preview-src-list="[scope.row[item.prop]]"
-								preview-teleported
-								fit="cover"
+						    :style="{ width: `${item.width}px`, height: `${item.height}px` }"
+						    :src="scope.row[item.prop]"
+						    :zoom-rate="1.2"
+						    :preview-src-list="[scope.row[item.prop]]"
+						    preview-teleported
+						    fit="cover"
 						/>
 					</template>
 					<template v-else>
@@ -98,12 +97,12 @@
 						<formatter v-if="childrenItem.formatter" :fn="childrenItem.formatter(scope.row, scope.column, scope.cellValue, scope.index)"> </formatter>
 						<template v-else-if="childrenItem.type === 'image'">
 							<el-image
-									:style="{ width: `${childrenItem.width}px`, height: `${childrenItem.height}px` }"
-									:src="scope.row[childrenItem.prop]"
-									:zoom-rate="1.2"
-									:preview-src-list="[scope.row[childrenItem.prop]]"
-									preview-teleported
-									fit="cover"
+							    :style="{ width: `${childrenItem.width}px`, height: `${childrenItem.height}px` }"
+							    :src="scope.row[childrenItem.prop]"
+							    :zoom-rate="1.2"
+							    :preview-src-list="[scope.row[childrenItem.prop]]"
+							    preview-teleported
+							    fit="cover"
 							/>
 						</template>
 						<template v-else>
@@ -112,24 +111,24 @@
 					</template>
 				</el-table-column>
 			</el-table-column>
-			<template #empty>
+			<!-- <template #empty>
 				<el-empty description="暂无数据" />
-			</template>
+			</template> -->
 		</el-table>
-		<div v-if="!config.hidePagination && state.showPagination" class="table-footer mt15">
-			<el-pagination
-					v-model:current-page="state.page.page"
-					v-model:page-size="state.page.pageSize"
-					size="small"
-					:pager-count="5"
-					:page-sizes="config.pageSizes"
-					:total="state.total"
-					layout="total, sizes, prev, pager, next, jumper"
-					background
-					@size-change="onHandleSizeChange"
-					@current-change="onHandleCurrentChange"
-			>
-			</el-pagination>
+		<div v-if="!config.hidePagination && state.showPagination" class="table-footer mt2">
+			<el-pagination 
+                v-model:current-page="state.page.page"
+                v-model:page-size="state.page.pageSize"
+                size="small"
+                :pager-count="5"
+                :page-sizes="config.pageSizes"
+                :total="state.total"
+                layout="total, sizes, prev, pager, next, jumper"
+                background
+                @size-change="onHandleSizeChange"
+                @current-change="onHandleCurrentChange"
+            >
+            </el-pagination>
 		</div>
 	</div>
 </template>
@@ -365,6 +364,14 @@ const onSetTable = () => {
 			handle: '.handle',
 			dataIdAttr: 'data-key',
 			animation: 150,
+            onMove: (evt) => {
+                // 禁止固定列拖动
+                const srcItem = evt.dragged.getAttribute('fixed');
+                const targetItem = evt.related.getAttribute('fixed');
+                if(srcItem || targetItem) {
+                    return false;
+                }
+            },
 			onEnd: () => {
 				const headerList: EmptyObjectType[] = [];
 				sortable.toArray().forEach((val: any) => {
@@ -372,8 +379,9 @@ const onSetTable = () => {
 						if (v.prop === val) headerList.push({ ...v });
 					});
 				});
-				emit('sortHeader', headerList);
-			},
+				//emit('sortHeader', headerList);
+                state.columns = headerList;
+			}
 		});
 	});
 };
@@ -478,6 +486,7 @@ defineExpose({
 </script>
 
 <style scoped lang="scss">
+@import url('/@/theme/tableTool.scss');
 .table-container {
 	display: flex !important;
 	flex-direction: column;
@@ -501,38 +510,6 @@ defineExpose({
 			align-items: center;
 			justify-content: flex-end;
             gap: 8px;
-
-			i {
-				margin-right: 5px !important;
-				cursor: pointer;
-				color: var(--el-text-color-regular);
-
-				&:last-of-type {
-					margin-right: 0;
-				}
-			}
-
-			.el-dropdown {
-				i {
-					margin-right: 10px;
-					color: var(--el-text-color-regular);
-				}
-			}
-
-			.tool-icon {
-				border: 1px solid #a7a7a7;
-				border-radius: 20%;
-				padding: 1px;
-				display: inline-flex;
-				align-items: center;
-				justify-content: center;
-			}
-
-			.el-icon.tool-icon {
-				font-size: 25px;
-				border: 1px solid #a7a7a7;
-				padding: 4px;
-			}
 		}
 	}
 }

+ 34 - 34
Web/src/theme/element.scss

@@ -425,6 +425,40 @@
 	}
 }
 
+.el-table .el-table__cell {
+    &:has(.cell .el-button, .el-tag, .el-switch, .el-avatar) {
+        padding: 0;
+        .cell { text-overflow: clip; }
+    }
+
+    .el-button.is-text {
+        height: 20px;
+    }
+
+    .el-text--large {
+        font-size: var(--el-font-size-base);;
+    }
+    .el-button--large {
+        --el-button-size: 32px;
+    }
+    .el-tag--large {
+        height: 28px;
+    }
+    .el-button--default {
+        height: 28px;
+    }
+    .el-button [class*=el-icon]+span{
+        margin-left: 4px;
+    }
+}
+.el-table [class*=el-table__row--level] .el-table__expand-icon {
+    height: 14px;
+    line-height: 14px;
+    width: 14px;
+}
+
+$--el-table-text-color: #fb6d49;
+
 /*防止分栏布局二级菜单很多时,滚动条消失问题*/
 .layout-columns-warp .layout-aside .el-scrollbar__view {
 	height: unset !important;
@@ -536,40 +570,6 @@
     --el-tree-node-content-height: 30px;
 }
 
-.el-table .el-table__cell {
-    &:has(.cell .el-button, .el-tag, .el-switch, .el-avatar) {
-        padding: 0;
-        .cell { text-overflow: clip; }
-    }
-
-    .el-button.is-text {
-        height: 20px;
-    }
-
-    .el-text--large {
-        font-size: var(--el-font-size-base);;
-    }
-    .el-button--large {
-        --el-button-size: 32px;
-    }
-    .el-tag--large {
-        height: 28px;
-    }
-    .el-button--default {
-        height: 28px;
-    }
-    .el-button [class*=el-icon]+span{
-        margin-left: 4px;
-    }
-}
-.el-table [class*=el-table__row--level] .el-table__expand-icon {
-    height: 14px;
-    line-height: 14px;
-    width: 14px;
-}
-
-$--el-table-text-color: #fb6d49;
-
 // hack列表页
 .layout-parent {
 	height: 0;

+ 7 - 0
Web/src/theme/tableTool.scss

@@ -3,6 +3,7 @@
 	.tool-box {
 		display: flex;
 		border-bottom: 1px solid var(--el-border-color-lighter);
+        margin-bottom: 5px;
 		box-sizing: border-box;
 		color: var(--el-text-color-primary);
 		height: 40px;
@@ -11,6 +12,7 @@
 	.tool-sortable {
 		max-height: 303px;
 		.tool-sortable-item {
+            height: var(--el-checkbox-height, 32px);;
 			display: flex;
 			box-sizing: border-box;
 			color: var(--el-text-color-primary);
@@ -23,5 +25,10 @@
 				opacity: 0.7;
 			}
 		}
+        .sortable-ghost{ 
+            background: var(--el-fill-color-lighter);
+            border: 1px dashed var(--w-e-toolbar-disabled-color) !important;
+            opacity: 0.3; /* 减淡颜色,使其半透明 */
+        }
 	}
 }

+ 1 - 1
Web/src/views/system/print/component/editPrint.vue

@@ -122,7 +122,7 @@ const loadTemplate = () => {
 	hiprintDesignRef.value?.hiprintTemplate.clear();
 	hiprintDesignRef.value?.setPrintDataDemo(state.ruleForm.printDataDemo);
 	if (JSON.stringify(state.ruleForm) !== '{}') {
-		hiprintDesignRef.value?.hiprintTemplate.update(JSON.parse(state.ruleForm.template));
+		hiprintDesignRef.value?.hiprintTemplate.update(JSON.parse(state.ruleForm.template || '{}'));
 		hiprintDesignRef.value?.initPaper();
 	}
 };