autobots-lib
Version:
汽车人基础库
156 lines (123 loc) • 3.93 kB
JavaScript
;
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;