apple 1 dzień temu
rodzic
commit
f156a96f78

BIN
image/logo/largeLogo.png


+ 13 - 15
js/vue/ss-index-components.js

@@ -280,7 +280,7 @@ export const GlobalMenu = {
         // 当前菜单模式(默认收起)
         const currentMenuMode = Vue.ref(menuModeDict.collapse);
 
-        // 切换菜单模式(循环:收起 → 固定 → 展开 → 收起)
+        // 切换菜单模式(循环:收起 → 固定 → 展开 → 收起)by xu 20251219
         const toggleMenuMode = () => {
             const modeOrder = ['collapse', 'fixed', 'expand'];
             const currentIndex = modeOrder.indexOf(currentMenuMode.value.key);
@@ -293,6 +293,15 @@ export const GlobalMenu = {
             updateLayoutWidth(nextMode.width);
         };
 
+        // v3.0 通过事件总线监听菜单模式切换 by xu 20251219
+        Vue.onMounted(() => {
+            eventBus.subscribe('toggleGlobalMenuMode', toggleMenuMode);
+        });
+
+        Vue.onUnmounted(() => {
+            eventBus.unsubscribe('toggleGlobalMenuMode', toggleMenuMode);
+        });
+
         // 更新布局宽度
         const updateLayoutWidth = (width) => {
             const layoutContainer = document.querySelector('.layout-container');
@@ -389,11 +398,9 @@ export const GlobalMenu = {
                             }
                         }, [
                             Vue.h('div', { class: 'menu-item-content' }, [
-                                // v3.0 收起时显示自定义图标,展开时统一显示 folder-open by xu 20251215
+                                // v3.0 只显示原图标,不需要保底图标 by xu 20251219
                                 Vue.h(SsIcon, {
-                                    class: (expandedMenus.value.has(icon.name)
-                                        ? 'icon-folder-open'
-                                        : (icon.class || 'menu-base-icon icon-folder-close')) + ' menu-icon'
+                                    class: icon.class + ' menu-icon'
                                 }),
                                 Vue.h('div', { class: 'menu-item-label' }, icon.name || ''),
                                 // 有子菜单时显示小圆点(在一级菜单右上角)
@@ -423,17 +430,8 @@ export const GlobalMenu = {
                             ) : []
                         )
                     ]).flat()
-                ]),
-
-                // ===== 固定区域:菜单模式按钮 =====
-                Vue.h('div', { class: 'fixed-bottom' }, [
-                    Vue.h('div', {
-                        class: 'menu-mode-btn',
-                        onClick: toggleMenuMode
-                    }, [
-                        Vue.h(SsIcon, { class: 'menu-base-icon icon-qiehuan' })
-                    ])
                 ])
+                // v3.0 移除底部切换按钮,功能移至 header 右侧图标 by xu 20251219
             ])
         ]);
     }

+ 16 - 35
page/home.jsp

@@ -351,10 +351,12 @@
 				}]
               },
 			  iconItems: [
+				{ name: 'qiehuan', size: '22px', class: 'header-menu-toggle', action: () => eventBus.publish('toggleGlobalMenuMode') }, // v3.0 切换左侧菜单模式 by xu 20251219
 			 	{ name: 'question', size: '22px', class: 'header-help', action: () => wd.display.showComponent({show:["wdDialog"],url:"<ss:serv name='querySYSHelp' parm='{"wdConfirmationCaptchaService":"0","ishelp":"true","dialogid":"1"}' dest='cmsPlay'/>",title:"使用指南",width:900,height:800,minHeight:1,maxHeight:800}) },
 				{ name: 'check', size: '22px',class: 'header-save', condition: () => currentMode.value === sysMode.edit.key, action: () => toggoleSysMode()},
 				{ name: 'setting-fill', size: '22px', class: 'header-setting',condition: () => currentMode.value !== sysMode.edit.key, action: () => toggoleSysMode() },
 				{ name: 'list-fill', size: '22px', class: 'header-menu', action: () => console.log('list-fill clicked') },
+				
 				{ name: 'topic-fill', size: '22px', class: 'header-skin', action: () => wd.display.showComponent({show:["wdDialog"],url:"<ss:serv name='gxhpf_cx' parm='{"wdConfirmationCaptchaService":"0"}' dest='ty_hf'/>",title:"换肤",width:799,height:757}) },
 				{ name: 'lock-fill', size: '22px', class: 'header-lock', action: () => this.lockScreenFun() },
 				{ name: 'quit', class: 'big', size: '36px', class: 'header-logout', action: () => wd.display.exit() },
@@ -561,48 +563,27 @@
 
 					that.menuData["1"].unshift({
 						desc: "首页",
-						icon: "icon-shouye",  // v3.0 改为使用新图标库 by xu 20251215
+						iconName: "icon-shouye",  // v3.0 改为使用新图标库 by xu 20251215
 						pid:"00001",
 						type:"2",
 						url:'/initDesktop?'
 					});
 
-					// v3.0 设置菜单图标 - 使用业务图标库 by xu 20251215
+					// v3.0 使用后端返回的 iconName 设置图标 by xu 20251219
 					that.menuData["1"].forEach(item => {
-						// 一级菜单(文件夹类型)- 有同名二级菜单的用同样图标
-						if(item.id === "1021775") item.icon = "icon-obj-ry";     // 人员
-						if(item.id === "1021812") item.icon = "icon-obj-xy";     // 学员
-						if(item.id === "1021809") item.icon = "icon-biz-grxf";   // 个人消费
-						if(item.id === "1021783") item.icon = "icon-biz-men";    // 门
-						if(item.id === "1021806") item.icon = "icon-caipin";     // 菜品
-						if(item.id === "1021786") item.icon = "icon-biz-rc";     // 日程
-						if(item.id === "1021789") item.icon = "icon-biz-xc";     // 巡查
-						if(item.id === "1021793") item.icon = "icon-biz-kq";     // 考勤
-						if(item.id === "1021795") item.icon = "icon-biz-wp";     // 物品
-						if(item.id === "1021804") item.icon = "icon-biz-cl";     // 车辆
-						// 评价(1021780)、场地(1021800) 暂无图标,使用默认文件夹图标
-
-						// 二级菜单使用对象图标
-						if(item.id === "ry_search") item.icon = "icon-obj-ry";   // 人员
-						if(item.id === "gw_search") item.icon = "icon-obj-gw";   // 岗位
-						if(item.id === "qz_search") item.icon = "icon-obj-qz";   // 群组
-						if(item.id === "dw_search") item.icon = "icon-obj-dw";   // 单位
-						if(item.id === "xy_search") item.icon = "icon-obj-xy";   // 学员
-						if(item.id === "grcz_search") item.icon = "icon-obj-grcz"; // 个人充值
-						if(item.id === "xfj_search") item.icon = "icon-obj-xfj";   // 消费机
-						if(item.id === "jcjl_search") item.icon = "icon-obj-jcjl"; // 进出记录
-						if(item.id === "mjd_search") item.icon = "icon-obj-mjd";   // 门禁点
-						if(item.id === "mtcp_search") item.icon = "icon-mingricaipin"; // 明天菜品
-						if(item.id === "cp_search") item.icon = "icon-caipin";     // 菜品
-						if(item.id === "rc_search") item.icon = "icon-biz-rc";     // 日程
-						if(item.id === "rcjh_search") item.icon = "icon-obj-rcjh"; // 日程计划
-						if(item.id === "xcdjl_search") item.icon = "icon-obj-xcjl"; // 巡查记录
-						if(item.id === "xcd_search") item.icon = "icon-obj-xcd";   // 巡查点
-						if(item.id === "kqjl_search") item.icon = "icon-obj-kqjl"; // 考勤记录
-						if(item.id === "wp_search") item.icon = "icon-biz-wp";     // 物品
-						if(item.id === "cl_search") item.icon = "icon-biz-cl";     // 车辆
-						if(item.id === "cd_search") item.icon = "icon-biz-cd";     // 场地
+						if(item.iconName) {
+							item.icon = item.iconName;
+						}
 					});
+
+					// v3.0 header 菜单也使用后端返回的 iconName by xu 20251219
+					if(that.menuData["8"]) {
+						that.menuData["8"].forEach(item => {
+							if(item.iconName) {
+								item.icon = item.iconName;
+							}
+						});
+					}
 				},
 			});
 

+ 46 - 27
skin/easy/css/base.css

@@ -74,16 +74,6 @@
   -webkit-font-smoothing: antialiased;
   -moz-osx-font-smoothing: grayscale;
 }
-/* 文件夹图标 - 使用旧图标库 iconfont(新库暂无文件夹图标) */
-.icon-folder-open::before {
-  content: "\e60c";
-  font-family: "iconfont" !important;
-}
-.icon-folder-close::before {
-  content: "\e60b";
-  font-family: "iconfont" !important;
-}
-
 
 /* 通用icon */
 .common-icon{
@@ -325,6 +315,11 @@
   /* 菜单图标 */
 }
 
+.header-menu-toggle::after {
+  content: "\e640";
+  /* 切换菜单模式图标 by xu 20251219 */
+}
+
 .header-home::after {
   content: "\e600";
   /* 主页图标 */
@@ -795,7 +790,7 @@ input::placeholder ,textarea::placeholder{
   right: 0;
   top: 0;
   background: #dadee2;
-  box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.24);
+  /* box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.24); */
   z-index: 0;
 }
 
@@ -876,7 +871,8 @@ input::placeholder ,textarea::placeholder{
 .layout-container .left-side-container[data-mode="collapse"][size="max"] {
   --left-size-width: 230px;
   z-index: 1000;
-  box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15);
+  /* v3.0 去掉悬停展开阴影 by xu 20251219 */
+  /* box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15); */
 }
 
 /* 固定模式:隐藏文字 */
@@ -929,15 +925,16 @@ input::placeholder ,textarea::placeholder{
   background: transparent;
 }
 
+/* v3.0 移除底部切换按钮样式,功能移至 header by xu 20251219 */
 /* 固定区域:底部(模式按钮) */
-.layout-container .fixed-bottom {
+/* .layout-container .fixed-bottom {
   flex-shrink: 0;
   border-top: none;
   background: #edf1f5;
   height: 40px;
   position: relative;
   z-index: 1;
-}
+} */
 
 /* 一级菜单分隔线(使用:after伪类,90%宽度居中) */
 .layout-container .menu-item.level-1 {
@@ -1000,8 +997,9 @@ input::placeholder ,textarea::placeholder{
   display: none;
 }
 
+/* v3.0 移除菜单模式按钮样式,功能移至 header by xu 20251219 */
 /* 菜单模式按钮 */
-.layout-container .menu-mode-btn {
+/* .layout-container .menu-mode-btn {
   display: flex;
   align-items: center;
   justify-content: center;
@@ -1022,7 +1020,7 @@ input::placeholder ,textarea::placeholder{
 .layout-container .menu-mode-btn .mode-label {
   text-align: center;
   user-select: none;
-}
+} */
 
 
 .layout-container  .main-content {
@@ -1357,10 +1355,24 @@ input::placeholder ,textarea::placeholder{
 .left-side-container .icon-container.icon-qiehuan{
   padding: 0 !important;
 }
+
+/* v3.0 菜单图标大小分层:首页+一级24px,二级20px by xu 20251219 */
+/* 首页和一级菜单图标 24px */
+.layout-container .menu-item.level-1 .menu-icon,
+.layout-container .menu-item.level-1 .menu-base-icon {
+  font-size: 24px !important;
+}
+
+/* 二级菜单图标 20px */
+.layout-container .menu-item.level-2 .menu-icon,
+.layout-container .menu-item.level-2 .menu-base-icon {
+  font-size: 20px !important;
+}
+
 /* 选中菜单项隐藏右边框 by xu 20251212 */
 .left-side-container .menu-item.active .menu-item-content{
-  background: #edf1f5;
-  border-right-color: #edf1f5; /* 边框与背景同色,视觉上消失 */
+  background: #fff;
+  border-right-color: #fff; /* 边框与背景同色,视觉上消失 */
 }
 /* 全局左部边框结束 */
 
@@ -4798,7 +4810,7 @@ input::placeholder ,textarea::placeholder{
   height: 100%;
 }
 
-/* v3.0 左侧菜单默认60px收起 by xu 20251216 */
+/* v3.0 左侧菜单始终absolute定位,不占文本流 by xu 20251219 */
 .project-edit-container .left-side {
   width: 60px;
   background-color: #fafbfe;
@@ -4806,8 +4818,12 @@ input::placeholder ,textarea::placeholder{
   display: flex;
   flex-direction: column;
   overflow: hidden;
-  flex-shrink: 0;
-  position: relative;
+  /* v3.0 始终absolute定位,避免收起时右侧内容区跟着动 by xu 20251219 */
+  position: absolute;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  z-index: 10;
 }
 
 /* v3.0 右侧边框线,覆盖整个左侧高度 by xu 20251216 */
@@ -4819,13 +4835,15 @@ input::placeholder ,textarea::placeholder{
   right: 0;
   top: 0;
   background: #dadee2;
-  box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.24);
+  /* v3.0 去掉边框阴影 by xu 20251219 */
+  /* box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.24); */
   z-index: 0;
 }
 
-/* v3.0 展开状态200px by xu 20251216 */
+/* v3.0 展开状态200px by xu 20251219 */
 .project-edit-container .left-side.is-expanded {
   width: 200px;
+  z-index: 1000;  /* 展开时提升层级 */
 }
 
 /* v3.0 固定模式:始终收起 by xu 20251216 */
@@ -4880,10 +4898,10 @@ input::placeholder ,textarea::placeholder{
   background: #edf1f5;
 }
 
-/* active效果,隐藏右边框 */
+/* active效果,隐藏右边框 by xu 20251219 改为白色 */
 .project-edit-container .menu-item.active {
-  background: #edf1f5;
-  border-right-color: #edf1f5;
+  background: #fff;
+  border-right-color: #fff;
 }
 
 .project-edit-container .menu-item .arrow {
@@ -5086,10 +5104,11 @@ input::placeholder ,textarea::placeholder{
   display: block;
 }
 
-/* v3.0 右侧内容区改为flex:1自适应 by xu 20251216 */
+/* v3.0 右侧内容区留出60px空间给左侧菜单 by xu 20251219 */
 .project-edit-container>div.content-area {
   flex: 1;
   overflow-y: auto;
+  margin-left: 60px;  /* 为左侧菜单留出空间 */
 }
 
 /* 项目基本信息结束 */

+ 1 - 1
skin/easy/main.css

@@ -7163,7 +7163,7 @@ li.mobileLongCardList-highlight {
 		} */
 
 #app iframe {
-    width: 100%;
+    width: 100% !important;
     min-height: 0px;
     height: 100vh;
     border: none;

+ 0 - 1
skin/mp_easy/base.css

@@ -279,7 +279,6 @@ td.td-error::before {
   flex: 1;
   text-align: center;
   line-height: 1.2;
-
 }
 
 .ss-onoff-button .button-mark {

+ 3 - 113
ss/js/display.js

@@ -740,63 +740,7 @@
 
 	url=wd.base.setRowCountPerPage(url,high-this.Yi,width);
 
-	// if ( params.bjgd && params.wdFitHeightAttrs && params.wdFitHeightAttrs.length > 0  ){
-	//     var minHigh = params.bjgd;
-	//     var maxHigh = params.bjgd;
-	//     for( var i = 0 ; i < params.wdFitHeightAttrs.length; i ++ ){
-	//         var attr = params.wdFitHeightAttrs[i];
-	//         var max = attr.max;
-	//         var min = attr.min;
-	//         if( typeof(max) == 'string' ) {
-	//             var temp = /\d+/.exec(max);
-	//             if ( temp != null ) {
-	//                 max = parseInt(temp[0]);
-	//             }else{
-	//                 max = null;
-	//             }
-	//         }
-	//         if( typeof(min) == 'string' ) {
-	//             var temp = /\d+/.exec(min);
-	//             if ( temp != null ) {
-	//                 min = parseInt(temp[0]);
-	//             } else {
-	//                 min = null;
-	//             }
-	//         }
-	//         if( max != null ) {
-	//             maxHigh += max;
-	//         }
-	//         if ( min != null ) {
-	//             minHigh += min;
-	//         }
-	//     }
-	//     if(minHigh + 38 > wd.topWindow.innerHeight) {
-	//         high = minHigh + 38;
-	//         showNameOrId = 'wdFullScreen';
-	//         fullScreenLimitHeight = false;
-	//     } else if ( maxHigh + 38 < wd.topWindow.innerHeight ){
-	//         high = maxHigh + 38;
-	//     } else {
-	//         showNameOrId = 'wdFullScreen';
-	//     }
 
-	// }
-
-	// var topBodyHeight = wd.topWindow.document.body.offsetHeight;
-	//var dialogHeight = wd.topWindow.document.querySelector('.dhtmlx_window_active').offsetHeight;
-	// var dialogClientHeight = wd.topWindow.document.querySelector('.dhtmlx_wins_body_inner').offsetHeight;
-	//var maxDialogClientHeight = topBodyHeight-(dialogHeight-dialogClientHeight);
-	// if ( !!params.maxHigh && !!params.minHigh ) {
-
-	//     if(params.minHigh + 38 > topBodyHeight ) {
-	//         high = params.minHigh + 38;
-	//         showNameOrId = 'wdFullScreen';
-	//     }else if(params.maxHigh + 38 < topBodyHeight){
-	//         high = params.maxHigh + 38;
-	//     }else {
-	//         showNameOrId = 'wdFullScreen';
-	//     }
-	// }
 
 
 	var title = params.title || "无题,可能没找到部件"; // 窗口标题,(可选参数,可以不填)
@@ -854,34 +798,6 @@
 		var positionParam = oneNameOrId.position;
 		var btnParam = oneNameOrId.button;
 
-		/**
-		 * 下面是原来有 show:[{"name":"wdDialog","size":"450*380"}]
-		 * 这一part时,会走到的代码,但是这部分代码与wddialog这部分分离了,暂时不要了,以后看如何重写
-		 *
-		 * if(nameParam){ //参数格式为json的弹出窗口 if(selfParam){ //在本窗口弹出
-		 * if(!window.dhxWins){ window.dhxWins = new dhtmlXWindows(); } var
-		 * dhxWins = window.dhxWins;
-		 * dhxWinsdhxWins.setImagePath('/wd/theme/window/dhx_blue/image/active/'); //
-		 * //alert(dhxWinsdhxWins.vp.style.border);
-		 * //dhxWinsdhxWins.vp.style.border = ""; //
-		 * dhxWins.enableAutoViewport(true);
-		 * //dhxWins.attachViewportTo("dt");
-		 * //把当前窗口的window对象,保存到window窗口中,以便关闭窗口时使用 var ele =
-		 * {dom:window,wdDialogId:wdDialogId}; wd.display.windowToObj(ele);
-		 * var winParam =
-		 * {dom:window,wdDialogId:wdDialogId,btnParam:btnParam,sizeParam:sizeParam,title:titleParam,url:url,positionParam:positionParam};
-		 * wd.display.setDhtmlXWinParam(winParam); }else{ //弹窗在顶层
-		 * //把当前窗口的window对象,保存到wd.topWindow窗口中,以便关闭窗口时使用 var ele =
-		 * {dom:wd.topWindow,wdDialogId:wdDialogId};
-		 * wd.display.windowToObj(ele);
-		 *
-		 * if(!wd.topWindow.wd.display.wdDialogOpeners)
-		 * wd.topWindow.wd.display.wdDialogOpeners = {};
-		 * wd.topWindow.wd.display.wdDialogOpeners[wdDialogId]=window; var
-		 * winParam =
-		 * {dom:wd.topWindow,wdDialogId:wdDialogId,btnParam:btnParam,sizeParam:sizeParam,title:titleParam,url:url,positionParam:positionParam};
-		 * wd.display.setDhtmlXWinParam(winParam); } }
-		 */
 
 		// wd.display.showComponent({show:[{"name":"wdDialog","size":"450*380"}],hide:[],url:"/service?wdApplication=jw&wdService=ty_gg_ck&wdOutputComponent=44786&wdtest=false&ggid=44000059",dest:"gg.ty_gg_ck",title:"查看",width:450,high:380,wdDialogId:44786,form:""})
 		if (typeof (oneNameOrId) == 'object') {
@@ -1008,37 +924,11 @@
 			w.button('close').setAttribute("title", "关闭"); // 修改关闭按钮提示
 			var containerObj = wd.topWindow.wd.display;
 			var currentDialogZIndex = w.zi; // 弹出窗口的z-index
-			// wd.display.createMaskDiv(containerObj,wd.topWindow.wd.display.wdDialogOpeners[wdDialogId],currentDialogZIndex);
-			/*
-			 * wd.display.createMaskDiv(containerObj, wd.topWindow,
-			 * currentDialogZIndex);
-			 */
-			wd.display.dxwindowsCreateMaskDiv(currentDialogZIndex);
-			/*
-			 * var parentWdDialogId = wd.display.getwdDialogId(); if(typeof
-			 * parentWdDialogId != 'undefined' && parentWdDialogId ){ var
-			 * parentDialog = wd.topWindow.dhxWins.window(parentWdDialogId);
-			 * if( typeof parentDialog != 'undefined' && parentDialog ){
-			 * //parentDialog.button('close').disable(); } }
-			 */
-
-			//              // 点击时弹出帮助提示信息
-			//              w.button("help").attachEvent("onClick", function () {
-			//                  alert("button \"help\" was clicked");
-			//              });
 
+			wd.display.dxwindowsCreateMaskDiv(currentDialogZIndex);
+	
 			w.attachEvent("onClose", function (win) {
-				/*
-				 * var containerObj = wd.topWindow.wd.display.mask; var
-				 * currentMaskEleID = containerObj.pop(); // var currMaskEle = //
-				 * wd.topWindow.wd.display.wdDialogOpeners[wdDialogId].document.getElementById(currentMaskEleID);
-				 * var currMaskEle = wd.topWindow.document
-				 * .getElementById(currentMaskEleID); if (typeof currMaskEle !=
-				 * 'undefined' && currMaskEle) { if (typeof
-				 * currMaskEle.remove != 'undefined') {
-				 * currMaskEle.remove(); } else { currMaskEle.parentNode
-				 * .removeChild(currMaskEle); } }
-				 */
+
 				wd.display.dxwindowsCloseMaskDiv();
 
 				/*