Commit 63a64392402de46352f673c249aec82c1504ed5f
1 parent
f943a940
app点击消息后跳转第三方
Showing
3 changed files
with
60 additions
and
14 deletions
src/mobile/components/searchPicker.jsx
| @@ -3,7 +3,6 @@ import { List,} from 'antd-mobile-v2'; | @@ -3,7 +3,6 @@ import { List,} from 'antd-mobile-v2'; | ||
| 3 | import { useState, useMemo } from 'react'; | 3 | import { useState, useMemo } from 'react'; |
| 4 | import styles from "./selectInput.less"; | 4 | import styles from "./selectInput.less"; |
| 5 | export default function SearchablePicker(props) { | 5 | export default function SearchablePicker(props) { |
| 6 | - console.log("🚀 ~ SearchablePicker ~ props:", props) | ||
| 7 | const { onConfirm, initialValue, data, sTitle, onChange, value:newValue } = props; | 6 | const { onConfirm, initialValue, data, sTitle, onChange, value:newValue } = props; |
| 8 | 7 | ||
| 9 | const [searchValue, setSearchValue] = useState(''); | 8 | const [searchValue, setSearchValue] = useState(''); |
src/routes/mobile/IndexMobile.js
| @@ -125,7 +125,16 @@ class IndexMobile extends React.Component { | @@ -125,7 +125,16 @@ class IndexMobile extends React.Component { | ||
| 125 | touchStartPageY: e.changedTouches[0].pageY, | 125 | touchStartPageY: e.changedTouches[0].pageY, |
| 126 | }); | 126 | }); |
| 127 | }; | 127 | }; |
| 128 | - | 128 | + // 在 IndexMobile 组件中任意位置(比如加个按钮) |
| 129 | + closeDingtalkPage = () => { | ||
| 130 | + const { plus } = window; | ||
| 131 | + if (plus) { | ||
| 132 | + const webView = plus.webview.getWebviewById('dingtalk_message_page'); | ||
| 133 | + if (webView) { | ||
| 134 | + webView.close('auto'); // 'auto' 表示自动动画关闭 | ||
| 135 | + } | ||
| 136 | + } | ||
| 137 | + }; | ||
| 129 | handleTouchEnd = e => { | 138 | handleTouchEnd = e => { |
| 130 | const touchEndtPageX = e.changedTouches[0].pageX; | 139 | const touchEndtPageX = e.changedTouches[0].pageX; |
| 131 | const touchEndtPageY = e.changedTouches[0].pageY; | 140 | const touchEndtPageY = e.changedTouches[0].pageY; |
| @@ -266,7 +275,7 @@ class IndexMobile extends React.Component { | @@ -266,7 +275,7 @@ class IndexMobile extends React.Component { | ||
| 266 | <Quotation {...this.props} sModelType={pageText} sModelsId="101251240115016076506222050" /> | 275 | <Quotation {...this.props} sModelType={pageText} sModelsId="101251240115016076506222050" /> |
| 267 | </div> | 276 | </div> |
| 268 | ); | 277 | ); |
| 269 | - } else if (location.pathname === "/indexMobile/quotationDetail") { | 278 | + } else if (location.pathname === "/indexMobile/quotationDetail") { |
| 270 | return ( | 279 | return ( |
| 271 | <QuotationDetail {...this.props} sModelType={pageText} sModelsId="101251240115016076506222050" /> | 280 | <QuotationDetail {...this.props} sModelType={pageText} sModelsId="101251240115016076506222050" /> |
| 272 | ) | 281 | ) |
| @@ -274,7 +283,7 @@ class IndexMobile extends React.Component { | @@ -274,7 +283,7 @@ class IndexMobile extends React.Component { | ||
| 274 | return ( | 283 | return ( |
| 275 | <CommobileList {...this.props} sModelsId="101251240115017633494461850" /> | 284 | <CommobileList {...this.props} sModelsId="101251240115017633494461850" /> |
| 276 | ); | 285 | ); |
| 277 | - } | 286 | + } |
| 278 | } | 287 | } |
| 279 | } | 288 | } |
| 280 | 289 | ||
| @@ -324,8 +333,8 @@ class IndexMobile extends React.Component { | @@ -324,8 +333,8 @@ class IndexMobile extends React.Component { | ||
| 324 | } | 333 | } |
| 325 | : { height: 400 } | 334 | : { height: 400 } |
| 326 | } | 335 | } |
| 327 | - // onTouchStart={this.handleTouchStart.bind(this)} | ||
| 328 | - // onTouchEnd={this.handleTouchEnd.bind(this)} | 336 | + // onTouchStart={this.handleTouchStart.bind(this)} |
| 337 | + // onTouchEnd={this.handleTouchEnd.bind(this)} | ||
| 329 | > | 338 | > |
| 330 | <TabBar | 339 | <TabBar |
| 331 | tabBarPosition="bottom" | 340 | tabBarPosition="bottom" |
| @@ -360,15 +369,53 @@ class IndexMobile extends React.Component { | @@ -360,15 +369,53 @@ class IndexMobile extends React.Component { | ||
| 360 | badge={msgObj.iCount || 0} | 369 | badge={msgObj.iCount || 0} |
| 361 | onPress={() => { | 370 | onPress={() => { |
| 362 | const { app } = this.props; | 371 | const { app } = this.props; |
| 363 | - const { token , userinfo} = app; | ||
| 364 | - const {sBrandsId,sSubsidiaryId,sUserName} = userinfo || {} | 372 | + const { token, userinfo } = app; |
| 373 | + const { sBrandsId, sSubsidiaryId, sUserName } = userinfo || {} | ||
| 365 | commonBusiness.clearSocketData({ token, value: {}, sModelsId: 100 }); | 374 | commonBusiness.clearSocketData({ token, value: {}, sModelsId: 100 }); |
| 366 | - this.setState({ | ||
| 367 | - selectedTab: "message", | ||
| 368 | - title: message, | ||
| 369 | - }); | 375 | + // this.setState({ |
| 376 | + // selectedTab: "message", | ||
| 377 | + // title: message, | ||
| 378 | + // }); | ||
| 370 | const url = `${commonConfig.server_host}/phone/phoneMsgFlowDingTalk/${sBrandsId}/${sSubsidiaryId}/${sUserName}` | 379 | const url = `${commonConfig.server_host}/phone/phoneMsgFlowDingTalk/${sBrandsId}/${sSubsidiaryId}/${sUserName}` |
| 371 | - history.push(url); | 380 | + // history.push(url); |
| 381 | + const { plus } = window; | ||
| 382 | + if (plus) { | ||
| 383 | + // 创建一个唯一 ID 的 webview | ||
| 384 | + const webViewId = 'phoneMsgFlowWebView'; | ||
| 385 | + | ||
| 386 | + // 先尝试获取已存在的 webview(避免重复创建) | ||
| 387 | + let webView = plus.webview.getWebviewById(webViewId); | ||
| 388 | + if (!webView) { | ||
| 389 | + webView = plus.webview.create( | ||
| 390 | + url, | ||
| 391 | + webViewId, | ||
| 392 | + { | ||
| 393 | + top: '0px', | ||
| 394 | + bottom: '0px', | ||
| 395 | + scrollIndicator: 'none', | ||
| 396 | + scalable: false, | ||
| 397 | + } | ||
| 398 | + ); | ||
| 399 | + } | ||
| 400 | + webView.addEventListener('loaded', () => { | ||
| 401 | + // 注入返回键处理逻辑 | ||
| 402 | + webView.evalJS(` | ||
| 403 | + (function() { | ||
| 404 | + if (window.plus) { | ||
| 405 | + plus.key.addEventListener('backbutton', function() { | ||
| 406 | + // 关闭自己,自动回到下层页面(即 /indexMobile) | ||
| 407 | + plus.webview.currentWebview().close(); | ||
| 408 | + }); | ||
| 409 | + } | ||
| 410 | + })(); | ||
| 411 | + `); | ||
| 412 | + }); | ||
| 413 | + // 显示 webview(从右侧滑入) | ||
| 414 | + plus.webview.show(webView, 'slide-in-right', 200); | ||
| 415 | + } else { | ||
| 416 | + // 非 plus 环境(如浏览器调试),降级用新窗口打开 | ||
| 417 | + window.open(url, '_blank'); | ||
| 418 | + } | ||
| 372 | }} | 419 | }} |
| 373 | data-seed="logId" | 420 | data-seed="logId" |
| 374 | > | 421 | > |
src/utils/config.js
| @@ -9,7 +9,7 @@ const API = process.env.API; | @@ -9,7 +9,7 @@ const API = process.env.API; | ||
| 9 | const bHttps = false; | 9 | const bHttps = false; |
| 10 | export const webSite = { | 10 | export const webSite = { |
| 11 | faceAddress: isDev ? '//km5cjx.gnway.cc:36867/xlyFace' : '//' + location.host + '/xlyFace', | 11 | faceAddress: isDev ? '//km5cjx.gnway.cc:36867/xlyFace' : '//' + location.host + '/xlyFace', |
| 12 | - ipAddress: localStorage.ipAddress ? localStorage.ipAddress : isDev ? '//km5cjx.gnway.cc:36867/xlyEntry/' : '//' + location.host + '/xlyEntry/', | 12 | + ipAddress: localStorage.ipAddress ? localStorage.ipAddress : isDev ? '//km5cjx.gnway.cc:37845/xlyEntry/' : '//' + location.host + '/xlyEntry/', |
| 13 | 13 | ||
| 14 | // ipAddress: localStorage.ipAddress ? localStorage.ipAddress : isDev ? '//118.178.19.35:8088/xlyEntry/' : '//' + location.host + '/xlyEntry/', | 14 | // ipAddress: localStorage.ipAddress ? localStorage.ipAddress : isDev ? '//118.178.19.35:8088/xlyEntry/' : '//' + location.host + '/xlyEntry/', |
| 15 | // ipAddress: localStorage.ipAddress ? localStorage.ipAddress : isDev ? '//km5cjx.gnway.cc:36867/xlyEntry/' : '//' + location.host + '/xlyEntry/', | 15 | // ipAddress: localStorage.ipAddress ? localStorage.ipAddress : isDev ? '//km5cjx.gnway.cc:36867/xlyEntry/' : '//' + location.host + '/xlyEntry/', |