深圳全飞鸿

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 86|回复: 3
打印 上一主题 下一主题

beacon框架C与L的交互功能开发(L触发C)

[复制链接]

228

主题

466

帖子

2184

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2184
跳转到指定楼层
楼主
发表于 2025-2-9 14:22:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
beacon框架C与L的交互功能开发(L触发C)
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" layuimini-content-href="S.php/bom/bomupload" data-title="新增BOM" data-icon="fa fa-search"> 新增BOM </button>


1、看L触发L的处理逻辑
搜索:layuimini-content-href

>>>>d:\project.syant\0005php\htdocs\wms\js\lay-module\layuimini\minitab.js<<<<<
            $('body').on('click', '[layuimini-content-href]', function () {

处理代码:
  1. /**
  2.              * 在iframe子菜单上打开新窗口
  3.              */
  4.             $('body').on('click', '[layuimini-content-href]', function () {
  5.                 var loading = parent.layer.load(0, {shade: false, time: 2 * 1000});
  6.                 var tabId = $(this).attr('layuimini-content-href'),
  7.                     href = $(this).attr('layuimini-content-href'),
  8.                     title = $(this).attr('data-title'),
  9.                     target = $(this).attr('target');
  10.                 if (target === '_blank') {
  11.                     parent.layer.close(loading);
  12.                     window.open(href, "_blank");
  13.                     return false;
  14.                 }
  15.                 if (tabId === null || tabId === undefined) tabId = new Date().getTime();
  16.                 var checkTab = miniTab.check(tabId, true);
  17.                 if (!checkTab) {
  18.                     miniTab.create({
  19.                         tabId: tabId,
  20.                         href: href,
  21.                         title: title,
  22.                         isIframe: true,
  23.                         maxTabNum: options.maxTabNum,
  24.                     });
  25.                 }
  26.                 parent.layui.element.tabChange('layuiminiTab', tabId);
  27.                 parent.layer.close(loading);
  28.             });
复制代码


回复

使用道具 举报

228

主题

466

帖子

2184

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2184
沙发
 楼主| 发表于 2025-2-9 14:41:58 | 只看该作者
二、看C触发C的逻辑
<li class="active" pid="103"><a href="/erp/C.php/custinfo?ref=addtabs" addtabs="111" class="" url="/erp/C.php/custinfo" py="khpz" pinyin="kehupeizhi"><i class="fa fa-circle-o fa-fw"></i> <span>客户配置</span> <span class="pull-right-container"> </span></a> </li>
搜索:addtabs
>>>>c:\apache24\htdocs\dba\assets\js\backend.js<<<<<
            $(document).on('click', '.btn-addtabs,.addtabsit', function (e) {

  1. //点击包含.btn-addtabs的元素时新增选项卡
  2.             $(document).on('click', '.btn-addtabs,.addtabsit', function (e) {
  3.                 var that = this;
  4.                 var options = $.extend({}, $(that).data() || {});
  5.                 var url = Backend.api.replaceids(that, $(that).data("url") || $(that).attr('href'));
  6.                 var title = $(that).attr("title") || $(that).data("title") || $(that).data('original-title');
  7.                 var icon = $(that).attr("icon") || $(that).data("icon");
  8.                 if (typeof options.confirm !== 'undefined') {
  9.                     Layer.confirm(options.confirm, function (index) {
  10.                         Backend.api.addtabs(url, title, icon);
  11.                         Layer.close(index);
  12.                     });
  13.                 } else {
  14.                     Backend.api.addtabs(url, title, icon);
  15.                 }
  16.                 return false;
  17.             });
复制代码


回复 支持 反对

使用道具 举报

228

主题

466

帖子

2184

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2184
板凳
 楼主| 发表于 2025-2-9 15:13:28 | 只看该作者
三、验证C触发C
用了关键函数: Backend.api.addtabs(url, title, icon);
<a href="javascript:Backend.api.addtabs('http://www.baidu.com', 'test', '');" class="btn btn-primary" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>

可以实现!
回复 支持 反对

使用道具 举报

228

主题

466

帖子

2184

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2184
地板
 楼主| 发表于 2025-2-9 20:20:38 | 只看该作者
发布兼容函数:
  1. window.callOuterFunction = function(url, title, icon) {
  2.             if (window.parent) {         // 调用外层页面的函数
  3.                                 if(window.parent.Backend){        //如果外层是C
  4.                                         window.parent.Backend.api.addtabs(url, title, icon);
  5.                                 }else{                                                //如果外层是L
  6.                                         var tabId = url;
  7.                                         var checkTab = parent.layui.miniTab.check(tabId, true);
  8.                                         if (!checkTab) {
  9.                                                 parent.layui.miniTab.create({
  10.                                                         tabId: tabId,
  11.                                                         href: url,
  12.                                                         title: title,
  13.                                                         isIframe: true,
  14.                                                         maxTabNum:100000,
  15.                                                 });
  16.                                         }
  17.                                     parent.layui.element.tabChange('layuiminiTab', tabId);
  18.                 }
  19.             } else {
  20.             }
  21.         }       
复制代码


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|nagomes  

GMT+8, 2025-5-5 03:15 , Processed in 0.029882 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表