> 250501基线
> 
> 最低服务版本：weapp-ebdfpage 1.30.0-hotfix19

方案分步：

1、做一个二维码页面，并设置二维码地址

[图片附件未整合: ../../../../_assets/386264571549057024/001-15e59bfe44.png]

2、通过按钮js动作，获取sjkey → 传入并打开二维码页面

按钮js动作代码示例：

```javascript
const getSJKey = async () => {
  const { weappUtils } = window;
  const res = await weappUtils.request({
    url: `/api/secondev/reservationaction/createsjkey?minute_time=1440`,
    method: 'GET'
  });
  if (res?.data?.sjkey) {
    const url = `/sp/ebdpage/view/1178746219727577092?sjkey=${res?.data?.sjkey}`;
    /*weappUtils.webOpenSDK.exec({ //新窗口打开
      url,
      type: 'open'
    });*/
    window.ebdfpageSDK.openCustomDialog({  //弹出弹框
    	title:'扫描二维码',
      width:270,
    	height:300,
    	url:url
		})
  }else{
      console.error('service errror')
  }
};

getSJKey()
```

3、调整二维码的展示样式，示例

```javascript
const elements = document.querySelectorAll('[data-type="QrAndBarCode"]');

// 遍历元素列表并为每个元素设置样式
elements.forEach(element => {
  element.style.width = '200px';
  element.style.height = '200px';
  element.style.left = '50px';
  element.style.top = '0';
  element.querySelector('.ui-qrcode').style.height = '200px';
});
```

4、前台拦截的ecode

需要在公共租户下，设置拦截的ecode

示例：

```javascript
//拦截的项目weappEbdfpage
//拦截的组件DistributeLayout
import { regOvProps } from '@weapp/utils';

regOvProps(
  'weappEbdfpage',
  'DistributeLayout',
  (props) => {
    const checkCustomize = (resolve, params,setState) => {
      const {sjkey} = params;
      const {wbsqr} = params;
      window.weappUtils.request({
        url: '/papi/secondev/reservationaction/checksjkey',
        method: 'get',
        params: {
          sjkey,wbsqr
        },
      }).then((res)=>{
        if(!res.data?.isSuccess){
          setState({
            descTipCode:'outdate'
          })
          resolve(true);
        }else{
          resolve(true); 
        }
      })
      
    };
    const newProps = {
      ...props,
      checkCustomize,
    };
    return newProps;
  },
  0,
);
```

5、如前台拦截的ecode方案不行，又紧急要用，暂时可以通过设置 ` window.openeb\_sjkey=true `，这样会直接启用内置校验，然后联系开发进行修改调试。（不过这个方式，后续基线会去掉）
