Commit 580b9f83 by peii

Merge branch 'develop' into product

parents ffa9fabc 1db8029c
Showing with 1358 additions and 83 deletions
...@@ -77,7 +77,7 @@ project.ext.react = [ ...@@ -77,7 +77,7 @@ project.ext.react = [
entryFile: "index.js" entryFile: "index.js"
] ]
//apply from: "../../node_modules/react-native/react.gradle" apply from: "../../node_modules/react-native/react.gradle"
/** /**
* Set this to true to create two separate APKs instead of one: * Set this to true to create two separate APKs instead of one:
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent" android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/launch_screen" android:scaleType="centerCrop" /> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@mipmap/launch_screen" android:scaleType="centerCrop" />
</RelativeLayout> </RelativeLayout>
<!-- <?xml version="1.0" encoding="utf-8"?> <!-- <?xml version="1.0" encoding="utf-8"?>
......
...@@ -11,8 +11,9 @@ import ChooseProductPage from './containers/selfOrder/module/ChooseProductPage'; ...@@ -11,8 +11,9 @@ import ChooseProductPage from './containers/selfOrder/module/ChooseProductPage';
import EditThirdLevelPage from './containers/selfOrder/module/EditThirdLevelPage'; import EditThirdLevelPage from './containers/selfOrder/module/EditThirdLevelPage';
import EquipConsuPage from './containers/equipConsu/EquipConsuPage'; import EquipConsuPage from './containers/equipConsu/EquipConsuPage';
import ConsumDetailsPage from './containers/equipConsu/module/ConsumDetailsPage'; import ConsumDetailsPage from './containers/equipConsu/module/ConsumDetailsPage';
import ChargeDetailsPage from './containers/equipConsu/module/ChargeDetailsPage'; import ChargeDetailsPage from './containers/equipConsu/module/ChargeDetailsPageRef';
import FillUnitPricePage from './containers/equipConsu/module/FillUnitPricePage'; import FillUnitPricePage from './containers/equipConsu/module/FillUnitPricePage';
import OrdersPage from './containers/equipConsu/module/OrdersPage';
import ShowDetailPage from './containers/equipConsu/module/ShowDetailPage'; import ShowDetailPage from './containers/equipConsu/module/ShowDetailPage';
import QuickOrderPage from './containers/quickOrder/QuickOrderPage'; import QuickOrderPage from './containers/quickOrder/QuickOrderPage';
import surgeryTemplatePage from './containers/quickOrder/module/surgeryTemplatePage'; import surgeryTemplatePage from './containers/quickOrder/module/surgeryTemplatePage';
...@@ -35,6 +36,7 @@ const Router = createAppContainer(createStackNavigator({ ...@@ -35,6 +36,7 @@ const Router = createAppContainer(createStackNavigator({
ConsumDetailsPage: {screen: ConsumDetailsPage}, ConsumDetailsPage: {screen: ConsumDetailsPage},
ChargeDetailsPage: {screen: ChargeDetailsPage}, ChargeDetailsPage: {screen: ChargeDetailsPage},
FillUnitPricePage: {screen: FillUnitPricePage}, FillUnitPricePage: {screen: FillUnitPricePage},
OrdersPage: {screen: OrdersPage},
ShowDetailPage: {screen: ShowDetailPage}, ShowDetailPage: {screen: ShowDetailPage},
QuickOrderPage: {screen: QuickOrderPage}, QuickOrderPage: {screen: QuickOrderPage},
surgeryTemplatePage: {screen: surgeryTemplatePage}, surgeryTemplatePage: {screen: surgeryTemplatePage},
......
...@@ -125,6 +125,16 @@ export const reqEquipOrderInfo = async (global_domain_config, params) => { ...@@ -125,6 +125,16 @@ export const reqEquipOrderInfo = async (global_domain_config, params) => {
return await GetRequest(global_domain_config, getUrlParams('/surgery/collect_order/search', params)) return await GetRequest(global_domain_config, getUrlParams('/surgery/collect_order/search', params))
} }
/**
* @description: 请求费用行
* @param {*} global_domain_config
* @param {*} params
* @return {*}
*/
export const reqConsumeFeeLines = async (global_domain_config, params) => {
return await GetRequest(global_domain_config, getUrlParams('/surgery/consume_fee_line/search', params))
}
function requestListDataing() { function requestListDataing() {
return { return {
type: EQUIP_CONSU_LIST_DOING type: EQUIP_CONSU_LIST_DOING
......
...@@ -91,6 +91,9 @@ class DateModel extends Component { ...@@ -91,6 +91,9 @@ class DateModel extends Component {
renderDialog() { renderDialog() {
let { currentDate, date_mode } = this.state let { currentDate, date_mode } = this.state
const {minuteInterval, maximumDate, minimumDate} = this.props
const date = currentDate && new Date(currentDate)
return ( return (
<View style={styles.opt_area}> <View style={styles.opt_area}>
<View style={styles.modal_style}> <View style={styles.modal_style}>
...@@ -113,10 +116,13 @@ class DateModel extends Component { ...@@ -113,10 +116,13 @@ class DateModel extends Component {
</View> </View>
<View style={styles.date_box}> <View style={styles.date_box}>
<DatePicker <DatePicker
date={currentDate} date={date}
onDateChange={(date) => this.currentDateChange(date)} onDateChange={(date) => this.currentDateChange(date)}
locale="zh" locale="zh"
minuteInterval={minuteInterval || 5}
mode={date_mode} mode={date_mode}
maximumDate={maximumDate}
minimumDate={minimumDate}
/> />
</View> </View>
</View> </View>
......
...@@ -6,7 +6,8 @@ import { ...@@ -6,7 +6,8 @@ import {
Text, Text,
Image, Image,
TouchableOpacity, TouchableOpacity,
Clipboard Clipboard,
ScrollView
} from 'react-native'; } from 'react-native';
import HeadBackItem from './HeadBackItem'; import HeadBackItem from './HeadBackItem';
import { import {
...@@ -58,7 +59,7 @@ class SubSuccPage extends Component { ...@@ -58,7 +59,7 @@ class SubSuccPage extends Component {
render() { render() {
let { navigation } = this.props let { navigation } = this.props
let { title } = navigation.state.params let { title, warnTip } = navigation.state.params
let { state } = this let { state } = this
return ( return (
<View style={styles.succ_container}> <View style={styles.succ_container}>
...@@ -67,8 +68,9 @@ class SubSuccPage extends Component { ...@@ -67,8 +68,9 @@ class SubSuccPage extends Component {
backgroundColor={promary_color} backgroundColor={promary_color}
barStyle = 'light-content' barStyle = 'light-content'
/> />
<SafeAreaView style={safe_view}> <View style={safe_view}>
<HeadBackItem title={title} navigation={navigation} /> <HeadBackItem title={title} navigation={navigation} />
<ScrollView style={safe_view}>
<View style={styles.succ_inner}> <View style={styles.succ_inner}>
<View style={styles.img_box}> <View style={styles.img_box}>
<Image source={require('../../images/cor_green.png')} style={styles.img_icon}/> <Image source={require('../../images/cor_green.png')} style={styles.img_icon}/>
...@@ -79,6 +81,9 @@ class SubSuccPage extends Component { ...@@ -79,6 +81,9 @@ class SubSuccPage extends Component {
<Text style={styles.succ_text}>{'订单号:'} { state.orderVal }</Text> <Text style={styles.succ_text}>{'订单号:'} { state.orderVal }</Text>
: null : null
} }
{
!!warnTip && <View><Text style={styles.warn_tip} numberOfLines={50}>{warnTip}</Text></View>
}
<TouchableOpacity <TouchableOpacity
activeOpacity={.9} activeOpacity={.9}
style={styles.succ_btn} style={styles.succ_btn}
...@@ -89,7 +94,8 @@ class SubSuccPage extends Component { ...@@ -89,7 +94,8 @@ class SubSuccPage extends Component {
</Text> </Text>
</TouchableOpacity> </TouchableOpacity>
</View> </View>
</SafeAreaView> </ScrollView>
</View>
</View> </View>
); );
...@@ -103,7 +109,7 @@ const styles = StyleSheet.create({ ...@@ -103,7 +109,7 @@ const styles = StyleSheet.create({
succ_inner: { succ_inner: {
justifyContent: 'center', justifyContent: 'center',
alignItems: 'center', alignItems: 'center',
paddingTop: '26%' marginTop: pxSize(100)
}, },
img_box: { img_box: {
width: pxSize(80), width: pxSize(80),
...@@ -126,6 +132,14 @@ const styles = StyleSheet.create({ ...@@ -126,6 +132,14 @@ const styles = StyleSheet.create({
paddingBottom: 30, paddingBottom: 30,
fontFamily: font_family_regular fontFamily: font_family_regular
}, },
warn_tip: {
fontSize: 14,
paddingLeft: 20,
paddingRight: 20,
paddingBottom: 20,
color: '#fdbe34',
lineHeight: 22
},
succ_btn: { succ_btn: {
backgroundColor: promary_color, backgroundColor: promary_color,
width: pxSize(330), width: pxSize(330),
......
...@@ -60,11 +60,11 @@ class PageListArrow extends Component { ...@@ -60,11 +60,11 @@ class PageListArrow extends Component {
> >
<CellTextStyle style={listCellStyle ? listCellStyle : ''}> <CellTextStyle style={listCellStyle ? listCellStyle : ''}>
{ listHasAster ? <AsteriskTextStyle>*</AsteriskTextStyle> : null } { listHasAster ? <AsteriskTextStyle>*</AsteriskTextStyle> : null }
<TitleTextStyle style={isTitInputStyle ? styles.cell_title : ''}>{listItem[listTitle]}</TitleTextStyle> <TitleTextStyle style={isTitInputStyle ? styles.cell_title : ''}>{listItem[listTitle] || listTitle}</TitleTextStyle>
{ (listEditAble || inputCallBack) ? <ContInputTextStyle { (listEditAble || inputCallBack) ? <ContInputTextStyle
style={isTitInputStyle ? styles.cell_input : ''} style={isTitInputStyle ? styles.cell_input : ''}
editable={!listEditAble} editable={listEditAble}
defaultValue={listItem[listDefaValue]} defaultValue={listItem[listDefaValue] && listItem[listDefaValue].toString()}
placeholder={listInputPlace} placeholder={listInputPlace}
keyboardType={inputKeyboardType ? inputKeyboardType : 'default'} keyboardType={inputKeyboardType ? inputKeyboardType : 'default'}
onChangeText={(text) => {return inputCallBack ? inputCallBack(text) : ''}} onChangeText={(text) => {return inputCallBack ? inputCallBack(text) : ''}}
......
...@@ -9,10 +9,10 @@ import { dedupQuoteArray, show, formatStrForDate, cloneObject } from '../../util ...@@ -9,10 +9,10 @@ import { dedupQuoteArray, show, formatStrForDate, cloneObject } from '../../util
import DateModel from '../common/DateModel'; import DateModel from '../common/DateModel';
import DialogModel from '../common/DialogModel'; import DialogModel from '../common/DialogModel';
import ZoomPictureModel from '../common/ZoomPictureModel'; import ZoomPictureModel from '../common/ZoomPictureModel';
import { requestEquipOrganizations, requestEquipSurgeryHospital, requestEquipOrderInfo, uploadEquipImg, setSubdetailOption, setCharDetailsOption, requestEquipSumbit, setEquipInitData, reqEquipSurgeryHospital, reqEquipOrderInfo, requestListDataSuccess, reqEquipOrganizations, requestEquipDetails, reqOrgDepartments } from '../../action/EquipAction'; import { requestEquipOrganizations, requestEquipSurgeryHospital, requestEquipOrderInfo, uploadEquipImg, setSubdetailOption, setCharDetailsOption, requestEquipSumbit, setEquipInitData, reqEquipSurgeryHospital, reqEquipOrderInfo, requestListDataSuccess, reqEquipOrganizations, requestEquipDetails, reqOrgDepartments, reqConsumeFeeLines } from '../../action/EquipAction';
import { EQUIP_CONSU_LIST_DOING, EQUIP_CONSU_LIST_SUCCESS, EQUIP_CONSU_LIST_FAILURE, LOGIN_NO, EQUIP_SUBMIT_DOING, EQUIP_SUBMIT_SUCCESS, EQUIP_SUBMIT_FAILURE } from '../../base/ActionTypes'; import { EQUIP_CONSU_LIST_DOING, EQUIP_CONSU_LIST_SUCCESS, EQUIP_CONSU_LIST_FAILURE, LOGIN_NO, EQUIP_SUBMIT_DOING, EQUIP_SUBMIT_SUCCESS, EQUIP_SUBMIT_FAILURE } from '../../base/ActionTypes';
import moment from 'moment'; import moment from 'moment';
import { isNotBlank } from "../../utils/Utils"; import { isNotBlank, isBlank } from "../../utils/Utils";
import ImagePicker from 'react-native-image-picker'; import ImagePicker from 'react-native-image-picker';
import { exitLoginStatus, requestSysProfile } from '../../action/LoginAction'; import { exitLoginStatus, requestSysProfile } from '../../action/LoginAction';
import LodingModel from '../common/LodingModel'; import LodingModel from '../common/LodingModel';
...@@ -25,6 +25,7 @@ class EquipConsuPage extends Component { ...@@ -25,6 +25,7 @@ class EquipConsuPage extends Component {
super(props); super(props);
this.state = { this.state = {
canSubFlag: false, // 生成订单按钮样式改变 canSubFlag: false, // 生成订单按钮样式改变
userEnteredPrice: "Y",
listOptionData: [ // 页面元素 listOptionData: [ // 页面元素
{ {
"id": "0", "id": "0",
...@@ -52,7 +53,7 @@ class EquipConsuPage extends Component { ...@@ -52,7 +53,7 @@ class EquipConsuPage extends Component {
}, },
{ {
"id": "4", "id": "4",
title: '消耗时间', title: '手术时间',
name: '请选择', name: '请选择',
value: '', value: '',
dateValue: new Date() dateValue: new Date()
...@@ -183,12 +184,14 @@ class EquipConsuPage extends Component { ...@@ -183,12 +184,14 @@ class EquipConsuPage extends Component {
sysValues: { sysValues: {
OBS_MOBILE_CONSU_DEPARTMENT_DISPLAY: 0, OBS_MOBILE_CONSU_DEPARTMENT_DISPLAY: 0,
OBS_MOBILE_CONSU_DOCTOR_DISPLAY: 0, OBS_MOBILE_CONSU_DOCTOR_DISPLAY: 0,
OBS_MOBILE_CONSU_FOLLOW_DISPLAY: 0 OBS_MOBILE_CONSU_FOLLOW_DISPLAY: 0,
OBS_MOBILE_CONSUME_FEE: 'Y'
}, },
departments: [], departments: [],
localDoctors: [], localDoctors: [],
localFollowers: [], localFollowers: [],
orderInfos: {} orderInfos: {},
fees: {}
} }
} }
...@@ -273,6 +276,8 @@ class EquipConsuPage extends Component { ...@@ -273,6 +276,8 @@ class EquipConsuPage extends Component {
listOptionData[13].subOption = nextProps.charDetailOption listOptionData[13].subOption = nextProps.charDetailOption
this.setState({ this.setState({
listOptionData listOptionData
}, () => {
that.changeCanSub()
}) })
} }
if(submit_equip_order_status != nextProps.submit_equip_order_status) { if(submit_equip_order_status != nextProps.submit_equip_order_status) {
...@@ -391,10 +396,11 @@ class EquipConsuPage extends Component { ...@@ -391,10 +396,11 @@ class EquipConsuPage extends Component {
tempTit = `“${listOptionData[chIndex].title}”未输入` tempTit = `“${listOptionData[chIndex].title}”未输入`
tempStatus = true tempStatus = true
break break
} else if( chIndex == 12 } else if( chIndex == 12 || chIndex == 13 ) {
&& !listOptionData[chIndex].subOption.length ) { if (isBlank(listOptionData[12].subOption) && isBlank(listOptionData[13].subOption)) {
tempTit = `“${listOptionData[chIndex].title}”未添加` tempTit = `“耗材明细”或“费用明细”必须添加一项`
tempStatus = true tempStatus = true
}
break break
} else if ( sysValues.OBS_MOBILE_CONSU_DEPARTMENT_DISPLAY == 3 && chIndex == 15 && !listOptionData[15].value) { } else if ( sysValues.OBS_MOBILE_CONSU_DEPARTMENT_DISPLAY == 3 && chIndex == 15 && !listOptionData[15].value) {
tempTit = `“${listOptionData[chIndex].title}”未选择` tempTit = `“${listOptionData[chIndex].title}”未选择`
...@@ -446,6 +452,7 @@ class EquipConsuPage extends Component { ...@@ -446,6 +452,7 @@ class EquipConsuPage extends Component {
that.clearInitNameAndValue(3) that.clearInitNameAndValue(3)
that.getCurOrderDetail() that.getCurOrderDetail()
that.autoSetDoctorAndFollower() that.autoSetDoctorAndFollower()
that.setUserEnteredPrice(item.value)
} }
} }
return chItem return chItem
...@@ -497,10 +504,12 @@ class EquipConsuPage extends Component { ...@@ -497,10 +504,12 @@ class EquipConsuPage extends Component {
let tempName = `${collect_number}-${surgery_name}-${item.doctor_name ? (item.doctor_name + '-') : ''}${create_time}` let tempName = `${collect_number}-${surgery_name}-${item.doctor_name ? (item.doctor_name + '-') : ''}${create_time}`
obj.name = tempName, obj.name = tempName,
obj.value = item.collect_number obj.value = item.collect_number
obj.userEnteredPrice = item.user_entered_price || 'Y'
resultArr.push(obj) resultArr.push(obj)
}) })
tempOption = [...resultArr] tempOption = [...resultArr]
orderInfos[`${listOptionData[1].value}_${listOptionData[2].value}`] = tempOption orderInfos[`${listOptionData[1].value}_${listOptionData[2].value}`] = tempOption
orderInfos[`${listOptionData[1].value}_${listOptionData[2].value}_source`] = equipOrderOption
const doctors = R.map(R.applySpec({ const doctors = R.map(R.applySpec({
collect_number: R.prop('collect_number'), collect_number: R.prop('collect_number'),
...@@ -516,11 +525,14 @@ class EquipConsuPage extends Component { ...@@ -516,11 +525,14 @@ class EquipConsuPage extends Component {
localDoctors: doctors, localDoctors: doctors,
localFollowers: followers localFollowers: followers
}) })
this.props.navigation.navigate('OrdersPage', {orders: equipOrderOption, title: '选择借货订单', selectCallback: this.selectOrderCallback.bind(this)})
return
} }
this.setState({ this.setState({
listCurrentOption: [...tempOption] listCurrentOption: [...tempOption],
// showTypePop: true
}, () => { }, () => {
// 解决 IOS 弹窗显示问题 // 解决 IOS 弹窗显示问题, 这个问题可能是弹出来点不动?
setTimeout(() => { setTimeout(() => {
that.setState({ that.setState({
showTypePop: true showTypePop: true
...@@ -529,6 +541,18 @@ class EquipConsuPage extends Component { ...@@ -529,6 +541,18 @@ class EquipConsuPage extends Component {
}) })
} }
/**
* @description: 设置是否可以用户输入价格
* @param {*}
* @return {*}
*/
setUserEnteredPrice(collectNumber) {
const {orderInfos, listOptionData} = this.state
const orders = orderInfos[`${listOptionData[1].value}_${listOptionData[2].value}`]
const order = R.find(R.propEq('value', collectNumber))(orders)
this.setState({userEnteredPrice: order.userEnteredPrice || 'Y'})
}
// 修改选择器为属性 name 和 value // 修改选择器为属性 name 和 value
changeNameAndValue(data, nameType, valueType) { changeNameAndValue(data, nameType, valueType) {
let result = [] let result = []
...@@ -646,6 +670,9 @@ class EquipConsuPage extends Component { ...@@ -646,6 +670,9 @@ class EquipConsuPage extends Component {
*/ */
async getDepartmentsByOrg(org_code) { async getDepartmentsByOrg(org_code) {
const {token, global_domain_config, userInfo} = this.props const {token, global_domain_config, userInfo} = this.props
const {sysValues} = this.state
if (sysValues.OBS_MOBILE_CONSU_DEPARTMENT_DISPLAY < 2) return
const params = { const params = {
access_token: token, access_token: token,
org_code, org_code,
...@@ -761,7 +788,9 @@ class EquipConsuPage extends Component { ...@@ -761,7 +788,9 @@ class EquipConsuPage extends Component {
const { orderInfos, listOptionData } = state const { orderInfos, listOptionData } = state
const options = orderInfos[`${listOptionData[1].value}_${listOptionData[2].value}`] const options = orderInfos[`${listOptionData[1].value}_${listOptionData[2].value}`]
if (isNotBlank(options)) { if (isNotBlank(options)) {
this.setState({ listCurrentOption: options, showTypePop: true }) // this.setState({ listCurrentOption: options, showTypePop: true })
const equipOrderOption = orderInfos[`${listOptionData[1].value}_${listOptionData[2].value}_source`]
this.props.navigation.navigate('OrdersPage', {orders: equipOrderOption, title: '选择借货订单', selectCallback: this.selectOrderCallback.bind(this)})
return return
} }
let params = { let params = {
...@@ -780,6 +809,49 @@ class EquipConsuPage extends Component { ...@@ -780,6 +809,49 @@ class EquipConsuPage extends Component {
}) })
} }
} }
/**
* @description: 订单选择回调
* @param {*} item
* @return {*}
*/
selectOrderCallback(item) {
const { listOptionData, sysValues } = this.state
listOptionData[3].value = item.collect_number
listOptionData[3].name = item.collect_number
this.setState({ listOptionData}, () => {
this.clearInitNameAndValue(3)
this.getCurOrderDetail()
this.autoSetDoctorAndFollower()
this.setUserEnteredPrice(item.collect_number)
sysValues.OBS_MOBILE_CONSUME_FEE && this.getConsumeFeeLines(item.collect_number)
})
}
/**
* @description: 获取消耗费用
* @param {*}
* @return {*}
*/
async getConsumeFeeLines(collect_number) {
const params = {
access_token: this.props.token,
surgery_collect_number: collect_number
}
try {
const res = await reqConsumeFeeLines(this.props.global_domain_config, params)
console.log(res);
if (res.error_code !== 0) return {}
this.setState({fees: res.data})
this.props.setCharDetailsOption(res.data.collect_fee_lines)
return res.data
} catch (error) {
console.log(error);
return {}
}
}
// 客户名称选择后,判断订单信息是否只有一条数据 // 客户名称选择后,判断订单信息是否只有一条数据
async customerGetOrderInfo() { async customerGetOrderInfo() {
let { state, props } = this let { state, props } = this
...@@ -834,7 +906,8 @@ class EquipConsuPage extends Component { ...@@ -834,7 +906,8 @@ class EquipConsuPage extends Component {
listOptionData[3].name = tempName listOptionData[3].name = tempName
listOptionData[3].value = surgery_collect_headers[0].collect_number listOptionData[3].value = surgery_collect_headers[0].collect_number
that.setState({ that.setState({
listOptionData listOptionData,
userEnteredPrice: surgery_collect_headers[0].user_entered_price || 'Y'
}, () => { }, () => {
that.getCurOrderDetail() that.getCurOrderDetail()
this.autoSetDoctorAndFollower() this.autoSetDoctorAndFollower()
...@@ -904,7 +977,7 @@ class EquipConsuPage extends Component { ...@@ -904,7 +977,7 @@ class EquipConsuPage extends Component {
if(date) { if(date) {
listOptionData.map(function (item) { listOptionData.map(function (item) {
if (item.title === curData.title) { if (item.title === curData.title) {
item.dateValue = formatStrForDate(date) item.dateValue = date
} }
}) })
this.setState({ this.setState({
...@@ -927,10 +1000,10 @@ class EquipConsuPage extends Component { ...@@ -927,10 +1000,10 @@ class EquipConsuPage extends Component {
let that = this let that = this
this.setState({ this.setState({
listOptionData: listOptionData.map((item, index) => { listOptionData: listOptionData.map((item, index) => {
if(item.title === '消耗时间') { if(item.title === '手术时间') {
item.name = date item.name = date
item.value = date item.value = date
item.dateValue = formatStrForDate(date) item.dateValue = date
} }
return item return item
}) })
...@@ -1096,19 +1169,29 @@ class EquipConsuPage extends Component { ...@@ -1096,19 +1169,29 @@ class EquipConsuPage extends Component {
// 耗材明细 点击 // 耗材明细 点击
handleConsumDetailCheck() { handleConsumDetailCheck() {
let { listOptionData } = this.state let { listOptionData, userEnteredPrice } = this.state
if(this.judgeOrgIsNull() && this.judgeCustomerIsNull() if(this.judgeOrgIsNull() && this.judgeCustomerIsNull()
&& this.judgeOrderInfoIsNull()) { && this.judgeOrderInfoIsNull()) {
this.props.navigation.navigate('ConsumDetailsPage', { this.props.navigation.navigate('ConsumDetailsPage', {
title: '器械消耗 - 添加明细', title: '器械消耗 - 添加明细',
orderId: listOptionData[3].value orderId: listOptionData[3].value,
userEnteredPrice
}) })
} }
} }
// 费用明细 点击 // 费用明细 点击
handleChargeDetailsCheck() { async handleChargeDetailsCheck() {
this.props.navigation.navigate('ChargeDetailsPage', { title: '器械消耗 - 添加明细' }) const { listOptionData, fees } = this.state
if (isBlank(listOptionData[3].value)) {
return show('请先选择订单信息')
}
let storeFees = fees
if (isBlank(fees)) {
storeFees = await this.getConsumeFeeLines(listOptionData[3].value)
}
this.props.navigation.navigate('ChargeDetailsPage', { title: '器械消耗 - 添加明细', fees: storeFees })
} }
// 添加图片 点击 // 添加图片 点击
...@@ -1250,7 +1333,10 @@ class EquipConsuPage extends Component { ...@@ -1250,7 +1333,10 @@ class EquipConsuPage extends Component {
tempSubOption.patient_id = state.listOptionData[9].value tempSubOption.patient_id = state.listOptionData[9].value
// tempSubOption.settled_flag = state.listOptionData[10].isRedio // tempSubOption.settled_flag = state.listOptionData[10].isRedio
tempSubOption.remark = state.listOptionData[11].value tempSubOption.remark = state.listOptionData[11].value
tempSubOption.lines = state.listOptionData[12].subOption tempSubOption.lines = R.clone(state.listOptionData[12].subOption)
if (OBS_MOBILE_EQU_CON_DISPLAY_PRICE === 'N' || state.userEnteredPrice === 'N') {
tempSubOption.lines = R.map(R.dissoc('sale_price'))(tempSubOption.lines)
}
// 部门等信息 // 部门等信息
sysValues.OBS_MOBILE_CONSU_DEPARTMENT_DISPLAY > 0 && (tempSubOption.department_code = state.listOptionData[15].value) sysValues.OBS_MOBILE_CONSU_DEPARTMENT_DISPLAY > 0 && (tempSubOption.department_code = state.listOptionData[15].value)
...@@ -1258,17 +1344,20 @@ class EquipConsuPage extends Component { ...@@ -1258,17 +1344,20 @@ class EquipConsuPage extends Component {
sysValues.OBS_MOBILE_CONSU_FOLLOW_DISPLAY > 0 && (tempSubOption.surgery_follower_code = state.listOptionData[17].value) sysValues.OBS_MOBILE_CONSU_FOLLOW_DISPLAY > 0 && (tempSubOption.surgery_follower_code = state.listOptionData[17].value)
if(state.listOptionData[13].subOption && state.listOptionData[13].subOption.length > 0){ if(state.listOptionData[13].subOption && state.listOptionData[13].subOption.length > 0){
tempSubOption.fee_lines = [] tempSubOption.fee_lines = R.compose(
state.listOptionData[13].subOption.forEach(item => { R.map((item) => {
if(item.fee_amount && item.fee_type){ item.quantity = isNotBlank(item.quantity) ? Number(item.quantity) : 1
let obj_val = { item.sale_price = Number(item.sale_price)
fee_amount : item.fee_amount, item.unit_code = 'JIAN'
fee_type : item.fee_type, if (item.line_number) {
remark: item.remark item.surgery_collect_fee_line_number = item.line_number
} item.surgery_collect_number = tempSubOption.surgery_collect_number
tempSubOption.fee_lines.push(obj_val)
} }
}) return item
}),
R.map(R.dissocPath(['id'])),
R.pathOr([], ['listOptionData', 13, 'subOption'])
)(state)
} }
if( tempSubOption.lines.length ) { if( tempSubOption.lines.length ) {
tempSubOption.lines = tempSubOption.lines.map(item => { tempSubOption.lines = tempSubOption.lines.map(item => {
...@@ -1281,7 +1370,7 @@ class EquipConsuPage extends Component { ...@@ -1281,7 +1370,7 @@ class EquipConsuPage extends Component {
access_token: props.token, access_token: props.token,
data: { ...tempSubOption } data: { ...tempSubOption }
} }
console.log('==params====', params) // console.log('==params====', params)
props.requestEquipSumbit(params) props.requestEquipSumbit(params)
} }
} }
...@@ -1326,7 +1415,8 @@ class EquipConsuPage extends Component { ...@@ -1326,7 +1415,8 @@ class EquipConsuPage extends Component {
this.clearAllData() // 清空数据 this.clearAllData() // 清空数据
let { state: { params: { title } } } = this.props.navigation let { state: { params: { title } } } = this.props.navigation
this.props.navigation.navigate('SubSuccPage', { // 现在没返回订单号 this.props.navigation.navigate('SubSuccPage', { // 现在没返回订单号
title: `${title} - 下单成功` title: `${title} - 下单成功`,
warnTip: equipOrderOption.get_price_error_list
}) })
} }
} }
...@@ -1373,12 +1463,14 @@ class EquipConsuPage extends Component { ...@@ -1373,12 +1463,14 @@ class EquipConsuPage extends Component {
feeSum() { feeSum() {
try { try {
const {listOptionData} = this.state const {listOptionData} = this.state
return R.compose( const sum = R.compose(
R.sum, R.reduce((acc, elem) => {
R.map(x => Number(x)), return acc + elem.sale_price * (elem.quantity || 1)
R.pluck('fee_amount'), }, 0),
R.filter(R.allPass([R.compose(isNotBlank, R.prop('sale_price'))])),
R.pathOr([], [13, 'subOption']) R.pathOr([], [13, 'subOption'])
)(listOptionData) )(listOptionData)
return sum
} catch (error) { } catch (error) {
return 0 return 0
} }
...@@ -1574,6 +1666,7 @@ class EquipConsuPage extends Component { ...@@ -1574,6 +1666,7 @@ class EquipConsuPage extends Component {
date={listOptionData[4].dateValue} date={listOptionData[4].dateValue}
closeModal={(show) => this.closeDateModal(show)} closeModal={(show) => this.closeDateModal(show)}
show={dateModelPop} show={dateModelPop}
date_mode="date"
callback={(date) => this.dateModalCallback(date, listOptionData[4])} callback={(date) => this.dateModalCallback(date, listOptionData[4])}
/> />
{ this.renderPickerModel() } { this.renderPickerModel() }
...@@ -1645,7 +1738,11 @@ class EquipConsuPage extends Component { ...@@ -1645,7 +1738,11 @@ class EquipConsuPage extends Component {
// 返回耗材明细 // 返回耗材明细
renderConsumablesDetailsItem() { renderConsumablesDetailsItem() {
let { state } = this let { state } = this
const sum = this.consumeSum() let {userEnteredPrice} = state
let sum = 0
if (userEnteredPrice !== 'N') {
sum = this.consumeSum()
}
return ( return (
<CellTextStyle style={list_common_item.consu_detail}> <CellTextStyle style={list_common_item.consu_detail}>
...@@ -1662,7 +1759,9 @@ class EquipConsuPage extends Component { ...@@ -1662,7 +1759,9 @@ class EquipConsuPage extends Component {
<Text style={list_common_item.detail_tit_text}> <Text style={list_common_item.detail_tit_text}>
耗材({state.listOptionData[12].subOption.length} 耗材({state.listOptionData[12].subOption.length}
</Text> </Text>
<Text style={list_common_item.detail_tit_text}>耗材总金额:{sum}</Text> {
userEnteredPrice !== 'N' && <Text style={list_common_item.detail_tit_text}>耗材总金额:{sum}</Text>
}
</View> </View>
{ {
state.listOptionData[12].isShowSub ? state.listOptionData[12].isShowSub ?
...@@ -1690,6 +1789,8 @@ class EquipConsuPage extends Component { ...@@ -1690,6 +1789,8 @@ class EquipConsuPage extends Component {
// 返回耗材明细子项 // 返回耗材明细子项
renderConDeSubItem(item, index) { renderConDeSubItem(item, index) {
const {userEnteredPrice} = this.state
return( return(
<View style={list_common_item.con_de_sub} key={index}> <View style={list_common_item.con_de_sub} key={index}>
<Text style={[list_common_item.de_sub_tit]}> <Text style={[list_common_item.de_sub_tit]}>
...@@ -1698,7 +1799,7 @@ class EquipConsuPage extends Component { ...@@ -1698,7 +1799,7 @@ class EquipConsuPage extends Component {
<Text style={list_common_item.de_tip}> <Text style={list_common_item.de_tip}>
序列号:{item.serial_number ? item.serial_number : '无'} 序列号:{item.serial_number ? item.serial_number : '无'}
</Text> </Text>
{ OBS_MOBILE_EQU_CON_DISPLAY_PRICE === 'Y' ? { OBS_MOBILE_EQU_CON_DISPLAY_PRICE === 'Y' && userEnteredPrice !== 'N' ?
<Text style={list_common_item.de_tip}> <Text style={list_common_item.de_tip}>
单价(¥){ item.sale_price } 单价(¥){ item.sale_price }
</Text> : null } </Text> : null }
...@@ -1754,10 +1855,10 @@ class EquipConsuPage extends Component { ...@@ -1754,10 +1855,10 @@ class EquipConsuPage extends Component {
return( return(
<View style={list_common_item.con_de_sub} key={index}> <View style={list_common_item.con_de_sub} key={index}>
<Text style={[list_common_item.de_sub_tit]}> <Text style={[list_common_item.de_sub_tit]}>
{index+1}{ item.fee_type_name } {index+1}{ item.fee_category_name }
</Text> </Text>
<Text style={list_common_item.de_tip}> <Text style={list_common_item.de_tip}>
{item.fee_amount_title}(¥){ item.fee_amount } {item.item_name}:¥{ item.sale_price } * { item.quantity || 1 }
</Text> </Text>
</View> </View>
) )
...@@ -1766,14 +1867,18 @@ class EquipConsuPage extends Component { ...@@ -1766,14 +1867,18 @@ class EquipConsuPage extends Component {
// 返回添加图片 // 返回添加图片
renderAddPicturesItem() { renderAddPicturesItem() {
let { state } = this let { state } = this
const sum = this.feeSum() + this.consumeSum() const userEnteredPrice = state.userEnteredPrice
let sum = this.feeSum()
if (userEnteredPrice !== 'N') {
sum += this.consumeSum()
}
return ( return (
<CellTextStyle style={list_common_item.consu_addpic}> <CellTextStyle style={list_common_item.consu_addpic}>
<View style={list_common_item.addpic_inner}> <View style={list_common_item.addpic_inner}>
<View style={list_common_item.detail_title_box}> <View style={list_common_item.detail_title_box}>
<Text style={list_common_item.addpic_tit}>添加图片</Text> <Text style={list_common_item.addpic_tit}>添加图片</Text>
<Text style={list_common_item.detail_tit}>耗材+费用总金额:{sum}</Text> <Text style={list_common_item.detail_tit}>{userEnteredPrice !== 'N' && '耗材+'}费用总金额:{sum}</Text>
</View> </View>
<View style={list_common_item.addpic_cont}> <View style={list_common_item.addpic_cont}>
{state.localPhoOption.length {state.localPhoOption.length
...@@ -1845,7 +1950,7 @@ class EquipConsuPage extends Component { ...@@ -1845,7 +1950,7 @@ class EquipConsuPage extends Component {
} }
render() { render() {
let { canSubFlag } = this.state let { canSubFlag, sysValues } = this.state
let { navigation } = this.props let { navigation } = this.props
let { title } = navigation.state.params let { title } = navigation.state.params
return ( return (
...@@ -1864,7 +1969,7 @@ class EquipConsuPage extends Component { ...@@ -1864,7 +1969,7 @@ class EquipConsuPage extends Component {
{this.renderListItem()} {this.renderListItem()}
{this.renderRemarksItem()} {this.renderRemarksItem()}
{this.renderConsumablesDetailsItem()} {this.renderConsumablesDetailsItem()}
{this.renderChargeDetailsItem()} {sysValues.OBS_MOBILE_CONSUME_FEE === 'Y' && this.renderChargeDetailsItem()}
{this.renderAddPicturesItem()} {this.renderAddPicturesItem()}
{this.renderZoomPicture()} {this.renderZoomPicture()}
<FooterBtnStyle <FooterBtnStyle
...@@ -1982,7 +2087,7 @@ const mapDispatchToProps = (dispatch) => { ...@@ -1982,7 +2087,7 @@ const mapDispatchToProps = (dispatch) => {
}, },
requestListDataSuccess: (data) => { requestListDataSuccess: (data) => {
dispatch(requestListDataSuccess(data)) dispatch(requestListDataSuccess(data))
} },
} }
} }
......
...@@ -12,8 +12,12 @@ import { connect } from 'react-redux'; ...@@ -12,8 +12,12 @@ import { connect } from 'react-redux';
import PageListArrow from '../../common/listDataComponent/PageListArrow'; import PageListArrow from '../../common/listDataComponent/PageListArrow';
import { CellTextStyle } from '../../common/CellTextStyle'; import { CellTextStyle } from '../../common/CellTextStyle';
import LoadingModel from '../../common/listDataComponent/LoadingModel'; import LoadingModel from '../../common/listDataComponent/LoadingModel';
/**
// 费用明细 * @description: // 费用明细
* @param {*}
* @return {*}
* @deprecated 已废弃,使用ChargeDetailsPageRef
*/
class ChargeDetailsPage extends Component { class ChargeDetailsPage extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
......
import React, { Component } from 'react'
import { View, Text, StyleSheet, SafeAreaView, TouchableOpacity, ScrollView, FlatList, TextInput } from 'react-native'
import * as R from 'ramda'
import {
home_background_color,
promary_color,
safe_view,
list_common_item,
placehold_text_color,
second_text_size,
promary_text_color,
font_family_regular,
font_family_medium,
font_family_semibold,
first_text_color,
foundation_color,
Width,
pxSize,
} from '../../../base/BaseStyle'
import StatusBarView from '../../common/StatusBarView'
import HeadBackItem from '../../common/HeadBackItem'
import DialogModel from '../../common/DialogModel'
import { show, isBlank, isNotBlank } from '../../../utils/Utils'
import { setCharDetailsOption } from '../../../action/EquipAction'
import { connect } from 'react-redux'
import PageListArrow from '../../common/listDataComponent/PageListArrow'
import { CellTextStyle } from '../../common/CellTextStyle'
import LoadingModel from '../../common/listDataComponent/LoadingModel'
// 费用明细
class ChargeDetailsPage extends Component {
constructor(props) {
super(props)
this.state = {
charDetaOption: [],
charItems: [
{
field: 'fee_category_code',
name: 'fee_category_name',
label: '费用类型',
type: 'select',
options: [],
listHasAster: true,
listHasArrow: true,
listEditAble: true,
callback: this.categoryCallback.bind(this),
},
{
field: 'item_code',
name: 'item_name',
label: '物料名称',
type: 'select',
listHasAster: true,
listHasArrow: true,
listEditAble: true,
callback: this.itemCallback.bind(this),
},
{
field: 'general_name',
name: 'general_name',
label: '通用名称',
type: 'text',
listHasAster: false,
listHasArrow: false,
listEditAble: false,
},
{
field: 'specification',
name: 'specification',
label: '规格型号',
listEditAble: false,
listHasAster: false,
listHasArrow: false,
type: 'text',
},
{
field: 'sale_price',
name: 'sale_price',
label: '费用价格',
type: 'textinput',
inputKeyboardType: 'numeric',
listHasAster: true,
callback: (text, item, index) => {
const { charDetaOption } = this.state
charDetaOption[index].sale_price = text
this.setState({ charDetaOption })
},
},
{
field: 'quantity',
name: 'quantity',
label: '数量',
type: 'textinput',
inputKeyboardType: 'numeric',
listHasAster: true,
callback: (text, item, index) => {
const { charDetaOption } = this.state
charDetaOption[index].quantity = text
this.setState({ charDetaOption })
},
},
{
field: 'line_remark',
name: 'line_remark',
label: '备注',
type: 'textinput',
callback: (text, item, index) => {
const { charDetaOption } = this.state
charDetaOption[index].line_remark = text
this.setState({ charDetaOption })
},
},
],
listCurrentOption: [], // 当前选择器数据
showTypePop: false,
currentItem: {
name: '请选择',
value: '-1',
},
currentTitle: '费用类型', // 当前点击项
currentIndex: 0, // 当前点击项
// 新增费用项
newFeeLines: [],
}
}
componentDidMount() {
this.getLocalSelectedData()
this.getFeeTypes()
}
/**
* @description: 费用类型
* @param {*}
* @return {*}
*/
getFeeTypes() {
const { fees } = this.props.navigation.state.params
const { new_fee_lines } = fees
const newFeeLines = R.clone(new_fee_lines)
this.setState({ newFeeLines })
}
// 获取选择的数据
getLocalSelectedData() {
let { charDetailOption } = this.props
const { new_fee_lines } = this.props.navigation.state.params.fees
if (isNotBlank(charDetailOption)) {
let charDetaOption = R.compose(
R.map(it => {
it.quantity = it.quantity || 1
return it
}),
R.clone,
)(charDetailOption)
this.setState({
charDetaOption,
})
} else if (isNotBlank(new_fee_lines)) {
this.handleAddListItem()
}
}
/**
* @description: 费用类型回调
* @param {Object} item 费用项
* @return {*}
*/
categoryCallback(item, index) {
if (!item.newFlag) return show('已提交的费用明细只能删除')
const { newFeeLines } = this.state
if (isBlank(newFeeLines)) {
return show('当前数据为空')
}
const options = R.map(
R.applySpec({
value: R.prop('fee_category_code'),
name: R.prop('fee_category_name'),
}),
)(newFeeLines)
const currentItem = {
name: item.fee_category_name,
value: item.fee_category_code,
}
this.setState(
{
currentItem,
listCurrentOption: options,
currentIndex: index,
currentTitle: {
field: 'fee_category_code',
name: 'fee_category_name',
callback: selectItem => {
const { charDetaOption, currentIndex } = this.state
const charDetail = charDetaOption[currentIndex]
charDetail.item_code = ''
charDetail.item_name = ''
charDetail.general_name = ''
charDetail.specification = ''
charDetail.sale_price = ''
charDetail.quantity = 1
this.setState({ charDetaOption })
},
},
},
() => {
this.handleCloseModal(true)
},
)
}
/**
* @description: 物料回调
* @param {Object} item 费用项
* @return {*}
*/
itemCallback(item, index) {
if (!item.newFlag) return show('已提交的费用明细只能删除')
const { newFeeLines } = this.state
if (isBlank(item.fee_category_code)) {
return show('请先选择费用类型')
}
const feeItem = R.find(R.propEq('fee_category_code', item.fee_category_code))(newFeeLines)
if (isBlank(feeItem) || isBlank(feeItem.fee_lines)) {
return show('当前数据为空')
}
const options = R.map(
R.applySpec({
value: R.prop('item_code'),
name: R.prop('item_name'),
}),
)(feeItem.fee_lines)
const currentItem = {
name: item.item_name,
value: item.item_code,
}
this.setState(
{
currentItem,
listCurrentOption: options,
currentIndex: index,
currentTitle: {
field: 'item_code',
name: 'item_name',
// 选择完物料的其他操作
callback: selectItem => {
const { charDetaOption, currentIndex, newFeeLines } = this.state
const charDetail = charDetaOption[currentIndex]
const fee = R.find(R.propEq('fee_category_code', charDetail.fee_category_code))(newFeeLines)
const line = R.find(R.propEq('item_code', selectItem.value))(fee.fee_lines)
charDetail.general_name = line.general_name
charDetail.specification = line.specification
charDetail.sale_price = line.sale_price
charDetail.quantity = line.quantity || 1
this.setState({ charDetaOption })
},
},
},
() => {
this.handleCloseModal(true)
},
)
}
/**
* @description: 删除费用项
* @param {*} index
* @return {*}
*/
handleDelListItem(index) {
let { charDetaOption } = this.state
charDetaOption = R.remove(index, 1, charDetaOption)
this.setState({
charDetaOption,
})
}
/**
* @description: 新增一项费用
* @param {*}
* @return {*}
*/
handleAddListItem() {
let { charDetaOption, charItems } = this.state
// 有费用项但还没填写
if (isNotBlank(charDetaOption)) {
const lastItem = R.last(charDetaOption)
for (const key of ['fee_category_code', 'item_code', 'quantity', 'sale_price']) {
if (isBlank(lastItem[key])) {
return show('请先输入最后一项的必填信息')
}
}
}
const charOption = {
id: (Math.random() * 9999).toFixed(0),
fee_category_code: '',
fee_category_name: '',
item_code: '',
item_name: '',
general_name: '',
specification: '',
manufacturer_product_code: '',
sale_price: '',
quantity: 1,
line_remark: '',
newFlag: true,
}
charDetaOption = R.append(charOption, charDetaOption)
this.setState({
charDetaOption,
})
let cur_len = this.curScrollItemY
setTimeout(() => {
// 滚动到指定位置
this._scrollDetailView.scrollTo({ x: cur_len, y: cur_len, animated: true })
}, 100)
}
// 设置费用类型
handleSetChargeType(curDa, curIndex) {
let _this = this
let { listCurrentOption } = _this.state
_this.setState(
{
currentIndex: curIndex,
currentItem: {
name: curDa.fee_type_name,
value: curDa.fee_type,
},
},
() => {
if (listCurrentOption && listCurrentOption.length === 0) {
show('当前数据为空!')
return
}
// 解决 IOS 弹窗显示问题
setTimeout(() => {
_this.handleCloseModal(true)
}, 500)
},
)
}
// 设置费用金额
handleSetChargePrice(curIndex, curText) {
let _this = this
let { charDetaOption } = _this.state
charDetaOption[curIndex].fee_amount = curText
_this.setState({
currentIndex: curIndex,
charDetaOption,
})
}
// 设置费用备注
handleSetChargeMark(curIndex, curText) {
let _this = this
let { charDetaOption } = _this.state
charDetaOption[curIndex].remark = curText
_this.setState({
currentIndex: curIndex,
charDetaOption,
})
}
/**
* @description: 选择器回调
* @param {*} item 选中项
* @param {*} itemTitle
* @return {*}
*/
handleCallBack(item, extObj) {
let { charDetaOption, currentIndex } = this.state
// 选择了同一个
if (item.value === charDetaOption[currentIndex][extObj.field]) return
charDetaOption[currentIndex][extObj.field] = item.value
charDetaOption[currentIndex][extObj.name] = item.name
this.setState(
{
charDetaOption,
},
() => {
extObj.callback && extObj.callback(item)
},
)
}
// 关闭 选择器弹窗
handleCloseModal(show) {
this.setState({
showTypePop: show,
})
}
/**
* @description: 总数量
* @param {*}
* @return {*}
*/
count() {
const { charDetaOption } = this.state
const count = R.compose(R.sum, R.filter(isNotBlank), R.pluck('quantity'))(charDetaOption)
const sum = R.compose(
R.reduce((acc, elem) => {
return acc + elem.sale_price * elem.quantity
}, 0),
R.filter(R.allPass([R.compose(isNotBlank, R.prop('quantity')), R.compose(isNotBlank, R.prop('sale_price'))])),
)(charDetaOption)
return { count, sum }
}
/**
* @description: 确认明细 点击
* @param {*}
* @return {*}
*/
handleSubmit() {
let { charDetaOption } = this.state
const requireKeys = ['fee_category_code', 'item_code', 'sale_price', 'quantity']
for (let idx in charDetaOption) {
const item = charDetaOption[idx]
if (R.anyPass(R.map(k => R.compose(isBlank, R.prop(k)), requireKeys))(item)) {
return show('请先完成最后一项必填信息')
}
}
this.setState({
charDetaOption,
})
// 存储于store中,并跳转
this.props.setCharDetailsOption(charDetaOption)
this.props.navigation.goBack()
}
// 返回主要元素
renderContItem() {
const { charDetaOption } = this.state
return (
<ScrollView style={styles.cons_cont_scroll} ref={component => (this._scrollDetailView = component)}>
<FlatList
style={styles.cons_cont}
keyExtractor={item => item.id}
data={charDetaOption}
extraData={this.state}
renderItem={({ item, index }) => this.renderSubListItem(item, index)}
/>
{this.renderAddBtnItem()}
{this.renderLodingItem()}
</ScrollView>
)
}
// 返回每一列元素
renderSubListItem(item, index) {
const { charItems } = this.state
return (
<View style={styles.cons_sub_list} key={index + '_im'}>
<View style={styles.cons_sub_inner}>
<View style={styles.sub_list_cont}>
<Text style={styles.sub_list_tit}>费用明细({index + 1})</Text>
<TouchableOpacity
activeOpacity={0.8}
style={styles.btn_del_list}
onPress={() => this.handleDelListItem(index)}
>
<Text style={[styles.sub_list_tit, styles.sub_del_tit]}>删除</Text>
</TouchableOpacity>
</View>
{charItems.map(it => {
if (R.includes(it.type, ['select', 'text', 'textinput'])) {
const editable = item.newFlag ? (isBlank(it.listEditAble) ? true : it.listEditAble) : false
return (
<PageListArrow
key={item.id + '_' + it.field}
listActOpa={0.8}
listItem={item}
listName={it.name}
listDefaValue={it.name}
listTitle={it.label}
listHasAster={it.listHasAster}
listHasArrow={it.listHasArrow}
listEditAble={it.type === 'textinput' ? editable : false}
listCallBack={() => it.type === 'select' && it.callback && it.callback(item, index)}
listInputPlace={`请输入${it.label}`}
inputCallBack={editable ? text => it.callback(text, item, index) : null}
listCellStyle={styles.list_cell_box}
inputKeyboardType={it.inputKeyboardType}
/>
)
}
})}
</View>
</View>
)
}
// 返回增加元素
renderAddBtnItem() {
return (
<View
style={[styles.add_btn_box]}
ref={'curScrollItem'}
onLayout={e => {
this.curScrollItemY = e.nativeEvent.layout.y
}}
>
<View style={[styles.add_btn_inner]}>
<TouchableOpacity
activeOpacity={0.8}
style={[styles.sub_list_tit, styles.add_btn_cont]}
onPress={() => this.handleAddListItem()}
>
<Text style={[styles.sub_list_tit, styles.sub_del_tit, styles.add_btn_txt]}>{'+添加'}</Text>
</TouchableOpacity>
</View>
{this.renderPickerModel()}
</View>
)
}
// 返回底部元素
renderFooterBtnItem() {
return (
<View style={list_common_item.sub_box}>
<View style={list_common_item.sub_two_btn}>
<TouchableOpacity
activeOpacity={0.8}
style={[list_common_item.rig_btn, styles.fot_btn]}
onPress={() => this.handleSubmit()}
>
<Text style={list_common_item.rig_tip}>{'确定费用'}</Text>
</TouchableOpacity>
</View>
</View>
)
}
// 返回选择器
renderPickerModel() {
let { listCurrentOption, currentItem, currentTitle, showTypePop } = this.state
return (
<SafeAreaView style={styles.item_container}>
<DialogModel
entityList={listCurrentOption}
callback={(item, itemTitle) => this.handleCallBack(item, itemTitle)}
show={showTypePop}
itemValue={currentItem.value}
itemTitle={currentTitle}
closeModal={show => this.handleCloseModal(show)}
/>
</SafeAreaView>
)
}
// 返回加载中
renderLodingItem() {
return <LoadingModel ref="LoadingModel" />
}
render() {
let { navigation } = this.props
let { title } = navigation.state.params
const { newFeeLines } = this.state
const total = this.count()
return (
<View style={styles.cu_dl_container}>
<StatusBarView isReactStackNavigator={true} backgroundColor={promary_color} barStyle="light-content" />
<SafeAreaView style={safe_view}>
<HeadBackItem title={title} navigation={navigation} />
{isNotBlank(newFeeLines) && (
<View style={styles.sum_box}>
<Text style={styles.sum_box_text}>总数量:{total.count}</Text>
<Text style={styles.sum_box_text}>总费用:{total.sum}</Text>
</View>
)}
{isNotBlank(newFeeLines) && <View style={styles.cu_dl_main}>{this.renderContItem()}</View>}
{isNotBlank(newFeeLines) && this.renderFooterBtnItem()}
{isBlank(newFeeLines) && (
<View style={styles.blank_list}>
<Text style={styles.blank_list_text}>该订单无可添加费用</Text>
</View>
)}
</SafeAreaView>
</View>
)
}
}
const styles = StyleSheet.create({
cu_dl_container: {
flex: 1,
backgroundColor: home_background_color,
padding: 0,
margin: 0,
},
cu_dl_main: {
flex: 1,
},
cons_cont_scroll: {},
cons_cont: {
paddingHorizontal: 20,
},
cons_sub_list: {
backgroundColor: foundation_color,
borderRadius: 10,
marginVertical: 16,
paddingTop: 16,
},
cons_sub_inner: {},
sub_list_cont: {
display: 'flex',
flexDirection: 'row',
justifyContent: 'space-between',
marginHorizontal: 20,
paddingBottom: 10,
borderBottomWidth: 1,
borderColor: 'rgba(241, 241, 241, 0.87)',
backgroundColor: foundation_color,
},
sub_list_tit: {
fontSize: second_text_size,
fontFamily: font_family_semibold,
color: first_text_color,
},
sub_del_tit: {
color: promary_color,
},
cont_tit: {
fontSize: second_text_size,
color: promary_text_color,
fontFamily: font_family_regular,
},
cont_ser: {
fontSize: 14,
color: '#A3A3A3',
fontFamily: font_family_regular,
},
cont_pri: {
flexDirection: 'row',
alignItems: 'center',
},
pri_icon: {
color: '#EC3A2E',
fontSize: 16,
fontFamily: font_family_medium,
},
pri_inner: {
fontFamily: font_family_medium,
fontSize: second_text_size,
color: promary_text_color,
},
cont_pri_box: {
flex: 1,
paddingRight: 20,
},
pri_txt: {
fontFamily: font_family_medium,
fontSize: second_text_size,
color: promary_text_color,
},
fot_btn: {
width: '100%',
borderRadius: 10,
},
list_cell_box: {
marginBottom: 0,
borderBottomWidth: 1,
borderColor: 'rgba(241, 241, 241, 0.87)',
backgroundColor: foundation_color,
paddingHorizontal: 0,
marginHorizontal: 20,
},
add_btn_box: {
marginHorizontal: 20,
},
add_btn_inner: {
alignItems: 'center',
justifyContent: 'center',
backgroundColor: foundation_color,
marginBottom: 30,
borderRadius: 10,
},
add_btn_cont: {
alignItems: 'center',
width: '100%',
},
add_btn_txt: {
height: 46,
lineHeight: 46,
},
blank_list: {
flex: 1,
alignItems: 'center',
},
blank_list_text: {
fontSize: 20,
paddingTop: 100,
},
sum_box: {
flexDirection: 'row',
justifyContent: 'space-around',
padding: 20,
paddingBottom: 0,
},
sum_box_text: {
fontSize: 16,
fontFamily: font_family_regular,
color: '#666666',
},
})
const mapStateToProps = state => {
return {
token: state.login.token,
loginState: state.login.loginState,
global_domain_config: state.login.global_domain_config,
charDetailOption: state.equip.charDetailOption,
}
}
const mapDispatchToProps = dispatch => {
return {
exitLoginStatus: () => {
dispatch(exitLoginStatus())
},
setCharDetailsOption: data => {
dispatch(setCharDetailsOption(data))
},
}
}
export default connect(mapStateToProps, mapDispatchToProps)(ChargeDetailsPage)
...@@ -27,6 +27,7 @@ class ConsumDetailsPage extends Component { ...@@ -27,6 +27,7 @@ class ConsumDetailsPage extends Component {
localSelectOption: [], // 已选数据 localSelectOption: [], // 已选数据
isSubLoding: true, // 加载中弹窗 isSubLoding: true, // 加载中弹窗
lodingTitle: '加载中', lodingTitle: '加载中',
userEnteredPrice: 'Y'
} }
} }
...@@ -57,7 +58,7 @@ class ConsumDetailsPage extends Component { ...@@ -57,7 +58,7 @@ class ConsumDetailsPage extends Component {
// 获取当前订单的消耗明细 // 获取当前订单的消耗明细
async getCurOrderDetail() { async getCurOrderDetail() {
let {orderId} = this.props.navigation.state.params let {orderId, userEnteredPrice} = this.props.navigation.state.params
let {global_domain_config} = this.props let {global_domain_config} = this.props
let params = { let params = {
access_token: this.props.token, access_token: this.props.token,
...@@ -88,7 +89,8 @@ class ConsumDetailsPage extends Component { ...@@ -88,7 +89,8 @@ class ConsumDetailsPage extends Component {
this.setState({ this.setState({
isSubLoding: false, isSubLoding: false,
conDetaOption: lines, conDetaOption: lines,
allConOption: lines allConOption: lines,
userEnteredPrice
}) })
this.changeIsSelected() this.changeIsSelected()
} else if(detailResult.error_code === 41006) { } else if(detailResult.error_code === 41006) {
...@@ -217,12 +219,12 @@ class ConsumDetailsPage extends Component { ...@@ -217,12 +219,12 @@ class ConsumDetailsPage extends Component {
// 点击 确定耗材 // 点击 确定耗材
handleSubmit() { handleSubmit() {
this.handleCloseSelectModal(false) this.handleCloseSelectModal(false)
let {localSelectOption} = this.state let {localSelectOption, userEnteredPrice} = this.state
if(!localSelectOption.length) { if(!localSelectOption.length) {
show('请选择耗材') show('请选择耗材')
return return
} }
if(OBS_MOBILE_EQU_CON_DISPLAY_PRICE === 'Y'){ if(OBS_MOBILE_EQU_CON_DISPLAY_PRICE === 'Y' && userEnteredPrice !== 'N'){
this.props.navigation.navigate('FillUnitPricePage', { this.props.navigation.navigate('FillUnitPricePage', {
title: '器械消耗 - 填写单价', title: '器械消耗 - 填写单价',
localSelectOption: localSelectOption localSelectOption: localSelectOption
......
/*
* @FilePath: /BoneHouse_Business_APP/app/containers/equipConsu/module/OrdersPage.js
* @Author: peii
* @Date: 2021-07-06 15:29:45
* @LastEditTime: 2021-07-08 15:58:39
* @LastEditors: peii
* @Vision: 1.0
* @Description: 消耗时选择借货单
*/
import React, { Component } from 'react'
import {
View,
Text,
StyleSheet,
SafeAreaView,
ScrollView,
TouchableOpacity,
FlatList,
TextInput,
Image,
} from 'react-native'
import {
home_background_color,
promary_color,
safe_view,
icon_style,
placehold_text_color,
first_text_color,
font_family_regular,
pxSize,
list_common_item,
} from '../../../base/BaseStyle'
import StatusBarView from '../../common/StatusBarView'
import HeadBackItem from '../../common/HeadBackItem'
import { isBlank, isNotBlank, changeDateFormat } from '../../../utils/Utils'
import debounce from 'lodash.debounce'
import * as R from 'ramda'
export default class CollectOrder extends Component {
state = {
orders: [],
}
constructor(props) {
super(props)
this.renderItem = this.renderItem.bind(this)
this.selectHandler = this.selectHandler.bind(this)
this.changeTextHandler = debounce(this.changeTextHandler.bind(this), 300)
}
componentDidMount() {
const { orders } = this.props.navigation.state.params
this.setState({ orders: R.clone(orders) })
}
/**
* @description: 选择操作
* @param {*} item
* @return {*}
*/
selectHandler(item) {
const { navigation } = this.props
const { selectCallback } = navigation.state.params
selectCallback && selectCallback(item)
navigation.goBack()
}
/**
* @description: 搜索
* @param {*} text
* @return {*}
*/
changeTextHandler(text) {
const { orders } = this.props.navigation.state.params
let ords = R.clone(orders)
if (isBlank(text)) {
return this.setState({ orders: ords })
}
const match = R.test(new RegExp(text, 'g'))
const keys = ['collect_number', 'seller_name', 'doctor_name', 'surgery_desc', 'remark']
ords = R.filter(R.anyPass(R.map(k => R.compose(match, R.prop(k)), keys)))(ords)
this.setState({ orders: ords })
}
/**
* @description: 渲染单个
* @param {*} item
* @param {*} index
* @return {*}
*/
renderItem({ item, index }) {
return (
<TouchableOpacity style={styles.item} activeOpacity={0.8} onPress={() => this.selectHandler(item)}>
<Text style={styles.item_text}>借货单号: {item.collect_number}</Text>
<Text style={styles.item_text}> : {item.seller_name || '无'}</Text>
<Text style={styles.item_text}>主治医生: {item.doctor_name || '无'}</Text>
<Text style={styles.item_text}>
手术日期: {(item.surgery_date && changeDateFormat(item.surgery_date, 'yyyy-MM-dd')) || '无'}
</Text>
<Text style={styles.item_text}>手术说明: {item.surgery_desc || '无'}</Text>
{!!item.remark && (
<Text style={styles.item_text} numberOfLines={3}>
{item.remark}
</Text>
)}
</TouchableOpacity>
)
}
render() {
const { navigation } = this.props
const { title } = navigation.state.params
const { orders } = this.state
return (
<View style={styles.container}>
<StatusBarView isReactStackNavigator={true} backgroundColor={promary_color} barStyle="light-content" />
<View style={safe_view}>
<HeadBackItem title={title} navigation={navigation} />
<View style={styles.search_bar}>
<Image source={require('../../../images/search_icon.png')} style={styles.search_icon} />
<TextInput
style={styles.search_input}
placeholder="搜索单号、业务员、主治、备注"
onChangeText={ev => {
this.changeTextHandler(ev)
}}
></TextInput>
</View>
<FlatList
style={styles.list}
data={orders}
renderItem={this.renderItem}
keyExtractor={item => item.collect_number}
/>
</View>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: home_background_color,
},
list: {
flex: 1,
padding: 16,
marginBottom: 16,
},
item: {
marginBottom: 16,
padding: 15,
backgroundColor: '#fff',
},
item_text: {
fontSize: 16,
fontFamily: font_family_regular,
},
search_bar: {
height: 48,
flexDirection: 'row',
alignItems: 'center',
backgroundColor: promary_color,
paddingLeft: 20,
paddingRight: 20,
},
search_icon: {
position: 'absolute',
left: 30,
zIndex: 9,
width: 20,
height: 20,
},
search_input: {
height: 32,
backgroundColor: '#FFFFFF',
flex: 1,
paddingLeft: 30,
paddingTop: 0,
paddingBottom: 0,
borderRadius: 20,
color: '#666',
},
})
...@@ -132,9 +132,24 @@ class EquipConsuPage extends Component { ...@@ -132,9 +132,24 @@ class EquipConsuPage extends Component {
{ {
"id": "8", "id": "8",
title: '手术时间', title: '手术时间',
name: moment(new Date()).format("YYYY-MM-DD HH:mm"), name: (() => {
value: moment(new Date()).format("YYYY-MM-DD HH:mm"), let date = moment(new Date()).add(1, 'd')
dateValue: new Date(), date.set('hour', 10)
date.set('minute', 0)
return date.format('YYYY-MM-DD HH:mm')
})(),
value: (() => {
let date = moment(new Date()).add(1, 'd')
date.set('hour', 10)
date.set('minute', 0)
return date.format('YYYY-MM-DD HH:mm')
})(),
dateValue: (() => {
let date = moment(new Date()).add(1, 'd')
date.set('hour', 10)
date.set('minute', 0)
return date
})(),
showDatePicker: true showDatePicker: true
}, },
{ {
...@@ -1797,6 +1812,7 @@ class EquipConsuPage extends Component { ...@@ -1797,6 +1812,7 @@ class EquipConsuPage extends Component {
closeModal={(show) => this.closeDateModal(show)} closeModal={(show) => this.closeDateModal(show)}
show={dateModelPop} show={dateModelPop}
callback={(date) => this.dateModalCallback(date, listOptionData[8])} callback={(date) => this.dateModalCallback(date, listOptionData[8])}
minuteInterval={60}
/> />
{ this.renderPickerModel() } { this.renderPickerModel() }
</View> </View>
......
...@@ -71,10 +71,25 @@ class SelfOrderPage extends Component { ...@@ -71,10 +71,25 @@ class SelfOrderPage extends Component {
}, },
{ {
"id": "6", "id": "6",
title: '需求时间', title: '手术时间',
name: moment(new Date()).format("YYYY-MM-DD HH:mm"), name: (() => {
value: moment(new Date()).format("YYYY-MM-DD HH:mm"), let date = moment(new Date()).add(1, 'd')
dateValue: new Date(), date.set('hour', 10)
date.set('minute', 0)
return date.format('YYYY-MM-DD HH:mm')
})(),
value: (() => {
let date = moment(new Date()).add(1, 'd')
date.set('hour', 10)
date.set('minute', 0)
return date.format('YYYY-MM-DD HH:mm')
})(),
dateValue: (() => {
let date = moment(new Date()).add(1, 'd')
date.set('hour', 10)
date.set('minute', 0)
return date
})(),
showDatePicker: true showDatePicker: true
}, },
{ {
...@@ -1998,6 +2013,7 @@ class SelfOrderPage extends Component { ...@@ -1998,6 +2013,7 @@ class SelfOrderPage extends Component {
closeModal={(show) => this.closeDateModal(show)} closeModal={(show) => this.closeDateModal(show)}
show={dateModelPop} show={dateModelPop}
callback={(date) => this.dateModalCallback(date, listOptionData[6])} callback={(date) => this.dateModalCallback(date, listOptionData[6])}
minuteInterval={60}
/> />
{ this.renderPickerModel()} { this.renderPickerModel()}
{/* { this.renderTipModelPackage()} {/* { this.renderTipModelPackage()}
......
...@@ -127,7 +127,7 @@ class ChooseProductPage extends Component { ...@@ -127,7 +127,7 @@ class ChooseProductPage extends Component {
let { data } = pur_sup_search let { data } = pur_sup_search
let { topProcOptionList } = that.state let { topProcOptionList } = that.state
if (data.length > 0) { if (data.length > 0) {
topProcOptionList = cloneObject(data) topProcOptionList = R.compose(cloneObject, R.filter(isNotBlank))(data)
topProcOptionList.forEach(function (topObj) { topProcOptionList.forEach(function (topObj) {
topObj[LocalVariable.SELECTED_QUQNTITY] = 0 topObj[LocalVariable.SELECTED_QUQNTITY] = 0
topObj['leftOptionList'] = [] topObj['leftOptionList'] = []
......
...@@ -63,9 +63,7 @@ const screenH = Dimensions.get('window').height; ...@@ -63,9 +63,7 @@ const screenH = Dimensions.get('window').height;
export const isIphoneX = () => { export const isIphoneX = () => {
return ( return (
Platform.OS === 'ios' && Platform.OS === 'ios' &&
((screenH === X_HEIGHT && screenW === X_WIDTH) || screenH >= 728
(screenH === X_MAX_HEIGHT && screenW === X_MAX_WIDTH) ||
(screenH === XS_MAX_HEIGHT && screenW === XS_MAX_WIDTH))
) )
}; };
......
{ {
"name": "BoneHouse_Business_APP", "name": "BoneHouse_Business_APP",
"version": "1.2.6", "version": "1.2.7",
"private": true, "private": true,
"scripts": { "scripts": {
"postinstall": "npx jetify", "postinstall": "npx jetify",
...@@ -8,7 +8,12 @@ ...@@ -8,7 +8,12 @@
"test": "jest" "test": "jest"
}, },
"dependencies": { "dependencies": {
"@ant-design/react-native": "^4.2.0",
"@react-native-community/cameraroll": "^4.0.4",
"@react-native-community/segmented-control": "^2.2.2",
"@react-native-community/slider": "^3.0.3",
"@types/ramda": "^0.27.39", "@types/ramda": "^0.27.39",
"lodash.debounce": "^4.0.8",
"moment": "2.29.1", "moment": "2.29.1",
"ramda": "^0.27.1", "ramda": "^0.27.1",
"react": "16.8.3", "react": "16.8.3",
...@@ -20,6 +25,7 @@ ...@@ -20,6 +25,7 @@
"react-native-fs": "2.14.1", "react-native-fs": "2.14.1",
"react-native-image-picker": "0.28.0", "react-native-image-picker": "0.28.0",
"react-native-image-zoom-viewer": "3.0.1", "react-native-image-zoom-viewer": "3.0.1",
"react-native-pager-view": "^5.2.1",
"react-native-root-toast": "3.1.1", "react-native-root-toast": "3.1.1",
"react-native-scrollable-tab-view": "0.9.0", "react-native-scrollable-tab-view": "0.9.0",
"react-native-sound": "0.11.0", "react-native-sound": "0.11.0",
......
...@@ -2,6 +2,29 @@ ...@@ -2,6 +2,29 @@
# yarn lockfile v1 # yarn lockfile v1
"@ant-design/icons-react-native@^2.3.1":
version "2.3.1"
resolved "https://registry.yarnpkg.com/@ant-design/icons-react-native/-/icons-react-native-2.3.1.tgz#62eb3a0c5371c35b069dd60b7c02901016ffd7eb"
integrity sha512-nLUhEP6doFtavnRO95mxTD8NoLcVJXT0fEvIQca5BJjHQeqJxroAFKbSBkS0TvRi6dJurAel38b+b8IWVXY8uQ==
"@ant-design/react-native@^4.2.0":
version "4.2.0"
resolved "https://registry.yarnpkg.com/@ant-design/react-native/-/react-native-4.2.0.tgz#f06c1fe0caa216398f7dc81ee0419670d237e0f5"
integrity sha512-dv7a7xWxAVUSawqsQlxUqJR4HS8QxFJn5SJxTQL4weUrj5ClwDN/tbBthszZuh9rUvUZvPSlDL6UFyh4+IO59w==
dependencies:
"@ant-design/icons-react-native" "^2.3.1"
"@bang88/react-native-ultimate-listview" "^4.0.0"
"@types/shallowequal" "^1.1.1"
array-tree-filter "~2.1.0"
babel-runtime "^6.x"
deepmerge "^4.2.2"
normalize-css-color "^1.0.2"
react-native-collapsible "^1.6.0"
react-native-modal-popover "^2.0.1"
shallowequal "^1.1.0"
tslint "^6.1.3"
utility-types "^3.10.0"
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13": "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13":
version "7.12.13" version "7.12.13"
resolved "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" resolved "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
...@@ -664,6 +687,11 @@ ...@@ -664,6 +687,11 @@
lodash "^4.17.19" lodash "^4.17.19"
to-fast-properties "^2.0.0" to-fast-properties "^2.0.0"
"@bang88/react-native-ultimate-listview@^4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@bang88/react-native-ultimate-listview/-/react-native-ultimate-listview-4.0.0.tgz#f8c0daee1d091ea5b81891501d7f75d4717c4347"
integrity sha512-cEk3PbgvoBepByYVj0M+nRTN+V6aJWkCUY0lBRcvMcgc614RVqArZ0Q7wBBGlXRzndfq8m8BU1bLWQL+vOxc0g==
"@cnakazawa/watch@^1.0.3": "@cnakazawa/watch@^1.0.3":
version "1.0.4" version "1.0.4"
resolved "https://registry.npm.taobao.org/@cnakazawa/watch/download/@cnakazawa/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" resolved "https://registry.npm.taobao.org/@cnakazawa/watch/download/@cnakazawa/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a"
...@@ -820,6 +848,11 @@ ...@@ -820,6 +848,11 @@
"@types/istanbul-reports" "^1.1.1" "@types/istanbul-reports" "^1.1.1"
"@types/yargs" "^13.0.0" "@types/yargs" "^13.0.0"
"@react-native-community/cameraroll@^4.0.4":
version "4.0.4"
resolved "https://registry.yarnpkg.com/@react-native-community/cameraroll/-/cameraroll-4.0.4.tgz#3e2567ce54e3985e8e0a51832dfa0e1c5317f75b"
integrity sha512-3SY96Xh1yQjV5M7dFisl5kQmrO/K09URarZwmTN801KEalOoo/opsd/e8Vu1dwSKe0NGCK7A2u0oJQpeNbWbnA==
"@react-native-community/cli@^1.2.1": "@react-native-community/cli@^1.2.1":
version "1.12.0" version "1.12.0"
resolved "https://registry.npm.taobao.org/@react-native-community/cli/download/@react-native-community/cli-1.12.0.tgz#f4cbc2204af63a87d5736d2fa6a018c1fd5efd44" resolved "https://registry.npm.taobao.org/@react-native-community/cli/download/@react-native-community/cli-1.12.0.tgz#f4cbc2204af63a87d5736d2fa6a018c1fd5efd44"
...@@ -860,6 +893,16 @@ ...@@ -860,6 +893,16 @@
xcode "^2.0.0" xcode "^2.0.0"
xmldoc "^0.4.0" xmldoc "^0.4.0"
"@react-native-community/segmented-control@^2.2.2":
version "2.2.2"
resolved "https://registry.yarnpkg.com/@react-native-community/segmented-control/-/segmented-control-2.2.2.tgz#4014256819ab8f40f6bc3a3929ff14a9d149cf04"
integrity sha512-14+4HnGVrg3USqMzcHCPCqPmPmaEj0ogQH4pHRFXjoVvJokzidXBcYyXl5yrwFcKGW6zTXI6Fx9Qgt4ydtS6tw==
"@react-native-community/slider@^3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@react-native-community/slider/-/slider-3.0.3.tgz#830167fd757ba70ac638747ba3169b2dbae60330"
integrity sha512-8IeHfDwJ9/CTUwFs6x90VlobV3BfuPgNLjTgC6dRZovfCWigaZwVNIFFJnHBakK3pW2xErAPwhdvNR4JeNoYbw==
"@react-navigation/core@~3.4.1": "@react-navigation/core@~3.4.1":
version "3.4.2" version "3.4.2"
resolved "https://registry.npm.taobao.org/@react-navigation/core/download/@react-navigation/core-3.4.2.tgz#bec563e94fde40fbab3730cdc97f22afbb2a1498" resolved "https://registry.npm.taobao.org/@react-navigation/core/download/@react-navigation/core-3.4.2.tgz#bec563e94fde40fbab3730cdc97f22afbb2a1498"
...@@ -944,6 +987,11 @@ ...@@ -944,6 +987,11 @@
dependencies: dependencies:
ts-toolbelt "^6.15.1" ts-toolbelt "^6.15.1"
"@types/shallowequal@^1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@types/shallowequal/-/shallowequal-1.1.1.tgz#aad262bb3f2b1257d94c71d545268d592575c9b1"
integrity sha512-Lhni3aX80zbpdxRuWhnuYPm8j8UQaa571lHP/xI4W+7BAFhSIhRReXnqjEgT/XzPoXZTJkCqstFMJ8CZTK6IlQ==
"@types/stack-utils@^1.0.1": "@types/stack-utils@^1.0.1":
version "1.0.1" version "1.0.1"
resolved "https://registry.npm.taobao.org/@types/stack-utils/download/@types/stack-utils-1.0.1.tgz?cache=0&sync_timestamp=1605057309059&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fstack-utils%2Fdownload%2F%40types%2Fstack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" resolved "https://registry.npm.taobao.org/@types/stack-utils/download/@types/stack-utils-1.0.1.tgz?cache=0&sync_timestamp=1605057309059&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fstack-utils%2Fdownload%2F%40types%2Fstack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
...@@ -1200,6 +1248,11 @@ array-slice@^0.2.3: ...@@ -1200,6 +1248,11 @@ array-slice@^0.2.3:
resolved "https://registry.npm.taobao.org/array-slice/download/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" resolved "https://registry.npm.taobao.org/array-slice/download/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5"
integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU=
array-tree-filter@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190"
integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==
array-unique@^0.2.1: array-unique@^0.2.1:
version "0.2.1" version "0.2.1"
resolved "https://registry.npm.taobao.org/array-unique/download/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" resolved "https://registry.npm.taobao.org/array-unique/download/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
...@@ -1364,6 +1417,14 @@ babel-preset-jest@^24.9.0: ...@@ -1364,6 +1417,14 @@ babel-preset-jest@^24.9.0:
"@babel/plugin-syntax-object-rest-spread" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.0.0"
babel-plugin-jest-hoist "^24.9.0" babel-plugin-jest-hoist "^24.9.0"
babel-runtime@^6.x:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
dependencies:
core-js "^2.4.0"
regenerator-runtime "^0.11.0"
balanced-match@^1.0.0: balanced-match@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" resolved "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
...@@ -1494,6 +1555,11 @@ buffer-from@^1.0.0: ...@@ -1494,6 +1555,11 @@ buffer-from@^1.0.0:
resolved "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" resolved "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
integrity sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8= integrity sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=
builtin-modules@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
bytes@3.0.0: bytes@3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" resolved "https://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
...@@ -1591,7 +1657,7 @@ chalk@^1.1.1: ...@@ -1591,7 +1657,7 @@ chalk@^1.1.1:
strip-ansi "^3.0.0" strip-ansi "^3.0.0"
supports-color "^2.0.0" supports-color "^2.0.0"
chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2" version "2.4.2"
resolved "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1592843133653&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" resolved "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1592843133653&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ= integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=
...@@ -1741,7 +1807,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: ...@@ -1741,7 +1807,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
dependencies: dependencies:
delayed-stream "~1.0.0" delayed-stream "~1.0.0"
commander@^2.19.0, commander@^2.9.0: commander@^2.12.1, commander@^2.19.0, commander@^2.9.0:
version "2.20.3" version "2.20.3"
resolved "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1610702173050&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" resolved "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1610702173050&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha1-/UhehMA+tIgcIHIrpIA16FMa6zM= integrity sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=
...@@ -1823,7 +1889,7 @@ copy-descriptor@^0.1.0: ...@@ -1823,7 +1889,7 @@ copy-descriptor@^0.1.0:
resolved "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" resolved "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
core-js@^2.2.2, core-js@^2.4.1: core-js@^2.2.2, core-js@^2.4.0, core-js@^2.4.1:
version "2.6.12" version "2.6.12"
resolved "https://registry.npm.taobao.org/core-js/download/core-js-2.6.12.tgz?cache=0&sync_timestamp=1611040749668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" resolved "https://registry.npm.taobao.org/core-js/download/core-js-2.6.12.tgz?cache=0&sync_timestamp=1611040749668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
integrity sha1-2TM9+nsGXjR8xWgiGdb2kIWcwuw= integrity sha1-2TM9+nsGXjR8xWgiGdb2kIWcwuw=
...@@ -1945,6 +2011,11 @@ deep-is@~0.1.3: ...@@ -1945,6 +2011,11 @@ deep-is@~0.1.3:
resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
deepmerge@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
define-properties@^1.1.3: define-properties@^1.1.3:
version "1.1.3" version "1.1.3"
resolved "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" resolved "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
...@@ -2028,6 +2099,11 @@ diff-sequences@^24.9.0: ...@@ -2028,6 +2099,11 @@ diff-sequences@^24.9.0:
resolved "https://registry.npm.taobao.org/diff-sequences/download/diff-sequences-24.9.0.tgz?cache=0&sync_timestamp=1607352548704&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdiff-sequences%2Fdownload%2Fdiff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" resolved "https://registry.npm.taobao.org/diff-sequences/download/diff-sequences-24.9.0.tgz?cache=0&sync_timestamp=1607352548704&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdiff-sequences%2Fdownload%2Fdiff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5"
integrity sha1-VxXWJE4qpl9Iu6C8ly2wsLEelbU= integrity sha1-VxXWJE4qpl9Iu6C8ly2wsLEelbU=
diff@^4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
dom-walk@^0.1.0: dom-walk@^0.1.0:
version "0.1.2" version "0.1.2"
resolved "https://registry.npm.taobao.org/dom-walk/download/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" resolved "https://registry.npm.taobao.org/dom-walk/download/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84"
...@@ -3059,6 +3135,13 @@ is-core-module@^2.1.0: ...@@ -3059,6 +3135,13 @@ is-core-module@^2.1.0:
dependencies: dependencies:
has "^1.0.3" has "^1.0.3"
is-core-module@^2.2.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1"
integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==
dependencies:
has "^1.0.3"
is-data-descriptor@^0.1.4: is-data-descriptor@^0.1.4:
version "0.1.4" version "0.1.4"
resolved "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" resolved "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
...@@ -3929,6 +4012,11 @@ locate-path@^3.0.0: ...@@ -3929,6 +4012,11 @@ locate-path@^3.0.0:
p-locate "^3.0.0" p-locate "^3.0.0"
path-exists "^3.0.0" path-exists "^3.0.0"
lodash.debounce@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
lodash.pad@^4.1.0: lodash.pad@^4.1.0:
version "4.5.1" version "4.5.1"
resolved "https://registry.npm.taobao.org/lodash.pad/download/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" resolved "https://registry.npm.taobao.org/lodash.pad/download/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70"
...@@ -3959,7 +4047,7 @@ lodash@^4.17.14, lodash@^4.17.19, lodash@^4.3.0, lodash@^4.6.1: ...@@ -3959,7 +4047,7 @@ lodash@^4.17.14, lodash@^4.17.19, lodash@^4.3.0, lodash@^4.6.1:
resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.20.tgz?cache=0&sync_timestamp=1597336125847&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.20.tgz?cache=0&sync_timestamp=1597336125847&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
integrity sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI= integrity sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI=
lodash@^4.17.5: lodash@^4.17.20, lodash@^4.17.5:
version "4.17.21" version "4.17.21"
resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.21.tgz?cache=0&sync_timestamp=1613835838133&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.21.tgz?cache=0&sync_timestamp=1613835838133&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw= integrity sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=
...@@ -4479,7 +4567,7 @@ mixin-deep@^1.2.0: ...@@ -4479,7 +4567,7 @@ mixin-deep@^1.2.0:
for-in "^1.0.2" for-in "^1.0.2"
is-extendable "^1.0.1" is-extendable "^1.0.1"
mkdirp@^0.5.1: mkdirp@^0.5.1, mkdirp@^0.5.3:
version "0.5.5" version "0.5.5"
resolved "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" resolved "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
integrity sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8= integrity sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=
...@@ -4608,6 +4696,11 @@ node-notifier@^5.2.1, node-notifier@^5.4.2: ...@@ -4608,6 +4696,11 @@ node-notifier@^5.2.1, node-notifier@^5.4.2:
shellwords "^0.1.1" shellwords "^0.1.1"
which "^1.3.0" which "^1.3.0"
normalize-css-color@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/normalize-css-color/-/normalize-css-color-1.0.2.tgz#02991e97cccec6623fe573afbbf0de6a1f3e9f8d"
integrity sha1-Apkel8zOxmI/5XOvu/Deah8+n40=
normalize-package-data@^2.3.2: normalize-package-data@^2.3.2:
version "2.5.0" version "2.5.0"
resolved "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz?cache=0&sync_timestamp=1602547356577&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-package-data%2Fdownload%2Fnormalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" resolved "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz?cache=0&sync_timestamp=1602547356577&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-package-data%2Fdownload%2Fnormalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
...@@ -5244,6 +5337,11 @@ react-native-code-push@7.0.0: ...@@ -5244,6 +5337,11 @@ react-native-code-push@7.0.0:
semver "^7.3.2" semver "^7.3.2"
xcode "3.0.1" xcode "3.0.1"
react-native-collapsible@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/react-native-collapsible/-/react-native-collapsible-1.6.0.tgz#ca261ffff16914f872059bb0972e3a78c4b37f9c"
integrity sha512-beZjdgbT9Y/Pg591Xy5XkKG20HffJiVad4n9bfcUF/f783A+tvOVXnqvbS58Lkaym93mi4jcDPMuW9Vc1t6rqg==
react-native-date-picker@2.7.9: react-native-date-picker@2.7.9:
version "2.7.9" version "2.7.9"
resolved "https://registry.npm.taobao.org/react-native-date-picker/download/react-native-date-picker-2.7.9.tgz#f662d8741a3f78148eccf492d70a1740b035024b" resolved "https://registry.npm.taobao.org/react-native-date-picker/download/react-native-date-picker-2.7.9.tgz#f662d8741a3f78148eccf492d70a1740b035024b"
...@@ -5285,6 +5383,19 @@ react-native-image-zoom-viewer@3.0.1: ...@@ -5285,6 +5383,19 @@ react-native-image-zoom-viewer@3.0.1:
dependencies: dependencies:
react-native-image-pan-zoom "^2.1.12" react-native-image-pan-zoom "^2.1.12"
react-native-modal-popover@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/react-native-modal-popover/-/react-native-modal-popover-2.0.1.tgz#119fb04606a205ffff41fc56666ea4c0cc833aa6"
integrity sha512-4aqjeNf3TNSUH4tK0t9ADNGqNQmY/xb0XKGtdNGhhdSZDp0oME36dj92AKxoFeU3AzfQdmd0ehOXvYUu7aaj8g==
dependencies:
lodash "^4.17.20"
prop-types "^15.7.2"
react-native-pager-view@^5.2.1:
version "5.2.1"
resolved "https://registry.yarnpkg.com/react-native-pager-view/-/react-native-pager-view-5.2.1.tgz#ad69a6035edd998771daf302830f73602e5204a9"
integrity sha512-6aqsVr6Z4MjYP57lMwNEurlOPah0Lw34L6x+/nI6SxY+wyqZI+uaEB7sWS5EIcgQ9cGKMo925LnVWd6Xilu33A==
react-native-root-siblings@^3.0.0: react-native-root-siblings@^3.0.0:
version "3.2.3" version "3.2.3"
resolved "https://registry.npm.taobao.org/react-native-root-siblings/download/react-native-root-siblings-3.2.3.tgz#df5a1cff3a3a1f433f57320e1cae719f1b15a3f2" resolved "https://registry.npm.taobao.org/react-native-root-siblings/download/react-native-root-siblings-3.2.3.tgz#df5a1cff3a3a1f433f57320e1cae719f1b15a3f2"
...@@ -5754,6 +5865,14 @@ resolve@^1.10.0, resolve@^1.5.0: ...@@ -5754,6 +5865,14 @@ resolve@^1.10.0, resolve@^1.5.0:
is-core-module "^2.1.0" is-core-module "^2.1.0"
path-parse "^1.0.6" path-parse "^1.0.6"
resolve@^1.3.2:
version "1.20.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
dependencies:
is-core-module "^2.2.0"
path-parse "^1.0.6"
restore-cursor@^2.0.0: restore-cursor@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" resolved "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
...@@ -5901,7 +6020,7 @@ scheduler@^0.13.3: ...@@ -5901,7 +6020,7 @@ scheduler@^0.13.3:
loose-envify "^1.1.0" loose-envify "^1.1.0"
object-assign "^4.1.1" object-assign "^4.1.1"
"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: "semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
version "5.7.1" version "5.7.1"
resolved "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1606854493763&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" resolved "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1606854493763&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc= integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=
...@@ -5977,6 +6096,11 @@ setprototypeof@1.1.1: ...@@ -5977,6 +6096,11 @@ setprototypeof@1.1.1:
resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
integrity sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM= integrity sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=
shallowequal@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
shebang-command@^1.2.0: shebang-command@^1.2.0:
version "1.2.0" version "1.2.0"
resolved "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" resolved "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
...@@ -6536,7 +6660,7 @@ ts-toolbelt@^6.15.1: ...@@ -6536,7 +6660,7 @@ ts-toolbelt@^6.15.1:
resolved "https://registry.npm.taobao.org/ts-toolbelt/download/ts-toolbelt-6.15.5.tgz#cb3b43ed725cb63644782c64fbcad7d8f28c0a83" resolved "https://registry.npm.taobao.org/ts-toolbelt/download/ts-toolbelt-6.15.5.tgz#cb3b43ed725cb63644782c64fbcad7d8f28c0a83"
integrity sha1-yztD7XJctjZEeCxk+8rX2PKMCoM= integrity sha1-yztD7XJctjZEeCxk+8rX2PKMCoM=
tslib@^1.9.0: tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0:
version "1.14.1" version "1.14.1"
resolved "https://registry.npm.taobao.org/tslib/download/tslib-1.14.1.tgz?cache=0&sync_timestamp=1609887539329&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" resolved "https://registry.npm.taobao.org/tslib/download/tslib-1.14.1.tgz?cache=0&sync_timestamp=1609887539329&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha1-zy04vcNKE0vK8QkcQfZhni9nLQA= integrity sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=
...@@ -6546,6 +6670,32 @@ tslib@^2.0.1: ...@@ -6546,6 +6670,32 @@ tslib@^2.0.1:
resolved "https://registry.npm.taobao.org/tslib/download/tslib-2.1.0.tgz?cache=0&sync_timestamp=1609887539329&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" resolved "https://registry.npm.taobao.org/tslib/download/tslib-2.1.0.tgz?cache=0&sync_timestamp=1609887539329&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
integrity sha1-2mCGDxwuyqVwOrfTm8Bba/mIuXo= integrity sha1-2mCGDxwuyqVwOrfTm8Bba/mIuXo=
tslint@^6.1.3:
version "6.1.3"
resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904"
integrity sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==
dependencies:
"@babel/code-frame" "^7.0.0"
builtin-modules "^1.1.1"
chalk "^2.3.0"
commander "^2.12.1"
diff "^4.0.1"
glob "^7.1.1"
js-yaml "^3.13.1"
minimatch "^3.0.4"
mkdirp "^0.5.3"
resolve "^1.3.2"
semver "^5.3.0"
tslib "^1.13.0"
tsutils "^2.29.0"
tsutils@^2.29.0:
version "2.29.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99"
integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==
dependencies:
tslib "^1.8.1"
tunnel-agent@^0.6.0: tunnel-agent@^0.6.0:
version "0.6.0" version "0.6.0"
resolved "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" resolved "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
...@@ -6700,6 +6850,11 @@ util.promisify@^1.0.0: ...@@ -6700,6 +6850,11 @@ util.promisify@^1.0.0:
has-symbols "^1.0.1" has-symbols "^1.0.1"
object.getownpropertydescriptors "^2.1.1" object.getownpropertydescriptors "^2.1.1"
utility-types@^3.10.0:
version "3.10.0"
resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b"
integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==
utils-merge@1.0.1: utils-merge@1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" resolved "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment