UNPKG

autobots-lib

Version:

汽车人基础库

156 lines (123 loc) 3.93 kB
'use strict'; import React, { Component } from 'react'; import ReactNative from 'react-native'; import Native from '../native'; import Toast from './toast'; import PropTypes from 'prop-types'; const { StyleSheet, requireNativeComponent, NativeModules, DeviceEventEmitter, Platform, View, Text, Alert, } = ReactNative; let received_emps = []; let openNative = function (type, title, fection, selectedEmp, callback, selectedPerson) { if (!title || title == "") { title = "选择员工"; } if (!fection || fection == "") { title = "最近选择员工"; } //selectedPerson如果定义并有值,表示联系人预置选中 if (selectedPerson) { if (Array.isArray(selectedPerson)) { received_emps = selectedPerson.map(function (item) { return { empName: item.empName, empCode: item.empCode, photoUrl: "https://app.corpautohome.com/sys/sp/getHeadPortrait.html?empId=" + item.empCode }; }); } else { received_emps = [{ empName: selectedPerson.empName, empCode: selectedPerson.empCode, photoUrl: "https://app.corpautohome.com/sys/sp/getHeadPortrait.html?empId=" + selectedPerson.empCode }]; } } else { if (selectedEmp && received_emps.length <= 0) { if (Array.isArray(selectedEmp)) { received_emps = selectedEmp.map(function (item) { return { empName: item.empName, empCode: item.empCode, photoUrl: "https://app.corpautohome.com/sys/sp/getHeadPortrait.html?empId=" + item.empCode }; }); } else { received_emps = [{ empName: selectedEmp.empName, empCode: selectedEmp.empCode, photoUrl: "https://app.corpautohome.com/sys/sp/getHeadPortrait.html?empId=" + selectedEmp.empCode }]; } } } let url = 'autobots://testrn/callSinglePersonSelect?title=' + title + '&fection=' + fection; if (type == "muti") { url = 'autobots://testrn/callMultPersonSelect?title=' + title + '&fection=' + fection; } url = url + '&selected=' + JSON.stringify(received_emps); // Native.callNative(url,function(result,data){ // if(callback) // { // callback(result,data); // } // }); } class EmpPicker extends Component { MutiPick(title, fection, callback, selectedPerson) { openNative('muti', title, fection, this.props.selectedEmp, callback, selectedPerson); } SinglePick(title, fection, callback, selectedPerson) { openNative('', title, fection, this.props.selectedEmp, callback, selectedPerson); } componentWillMount() { var that = this; received_emps = []; function cb_android(e: Event) { var data = JSON.parse(e.result); received_emps = data; if (that.props.onPicked) { that.props.onPicked(data); } } function cb_ios(p) { //alert(JSON.stringify(p)); received_emps = p; if (that.props.onPicked) { that.props.onPicked(p); } } if (Platform.OS === 'android') { this.multListener = DeviceEventEmitter.addListener('react_event_callMultPersonSelect', cb_android); this.sinListener = DeviceEventEmitter.addListener('react_event_callSinglePersonSelect', cb_android); } else { this.multListener = DeviceEventEmitter.addListener("react_event_callMultPersonSelect", cb_ios); this.sinListener = DeviceEventEmitter.addListener("react_event_callSinglePersonSelect", cb_ios); } } componentWillUnmount() { if (this.multListener != null) { this.multListener.remove(); this.multListener = null; } if (this.sinListener != null) { this.sinListener.remove(); this.sinListener = null; } } render() { return (<View />); } } EmpPicker.propTypes = { display: PropTypes.bool, onPicked: PropTypes.func, } module.exports = EmpPicker;