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 = [
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:
......
......@@ -2,7 +2,7 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="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>
<!-- <?xml version="1.0" encoding="utf-8"?>
......
......@@ -11,8 +11,9 @@ import ChooseProductPage from './containers/selfOrder/module/ChooseProductPage';
import EditThirdLevelPage from './containers/selfOrder/module/EditThirdLevelPage';
import EquipConsuPage from './containers/equipConsu/EquipConsuPage';
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 OrdersPage from './containers/equipConsu/module/OrdersPage';
import ShowDetailPage from './containers/equipConsu/module/ShowDetailPage';
import QuickOrderPage from './containers/quickOrder/QuickOrderPage';
import surgeryTemplatePage from './containers/quickOrder/module/surgeryTemplatePage';
......@@ -35,6 +36,7 @@ const Router = createAppContainer(createStackNavigator({
ConsumDetailsPage: {screen: ConsumDetailsPage},
ChargeDetailsPage: {screen: ChargeDetailsPage},
FillUnitPricePage: {screen: FillUnitPricePage},
OrdersPage: {screen: OrdersPage},
ShowDetailPage: {screen: ShowDetailPage},
QuickOrderPage: {screen: QuickOrderPage},
surgeryTemplatePage: {screen: surgeryTemplatePage},
......
......@@ -125,6 +125,16 @@ export const reqEquipOrderInfo = async (global_domain_config, 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() {
return {
type: EQUIP_CONSU_LIST_DOING
......
......@@ -91,6 +91,9 @@ class DateModel extends Component {
renderDialog() {
let { currentDate, date_mode } = this.state
const {minuteInterval, maximumDate, minimumDate} = this.props
const date = currentDate && new Date(currentDate)
return (
<View style={styles.opt_area}>
<View style={styles.modal_style}>
......@@ -113,10 +116,13 @@ class DateModel extends Component {
</View>
<View style={styles.date_box}>
<DatePicker
date={currentDate}
date={date}
onDateChange={(date) => this.currentDateChange(date)}
locale="zh"
minuteInterval={minuteInterval || 5}
mode={date_mode}
maximumDate={maximumDate}
minimumDate={minimumDate}
/>
</View>
</View>
......
......@@ -6,7 +6,8 @@ import {
Text,
Image,
TouchableOpacity,
Clipboard
Clipboard,
ScrollView
} from 'react-native';
import HeadBackItem from './HeadBackItem';
import {
......@@ -58,7 +59,7 @@ class SubSuccPage extends Component {
render() {
let { navigation } = this.props
let { title } = navigation.state.params
let { title, warnTip } = navigation.state.params
let { state } = this
return (
<View style={styles.succ_container}>
......@@ -67,8 +68,9 @@ class SubSuccPage extends Component {
backgroundColor={promary_color}
barStyle = 'light-content'
/>
<SafeAreaView style={safe_view}>
<View style={safe_view}>
<HeadBackItem title={title} navigation={navigation} />
<ScrollView style={safe_view}>
<View style={styles.succ_inner}>
<View style={styles.img_box}>
<Image source={require('../../images/cor_green.png')} style={styles.img_icon}/>
......@@ -79,6 +81,9 @@ class SubSuccPage extends Component {
<Text style={styles.succ_text}>{'订单号:'} { state.orderVal }</Text>
: null
}
{
!!warnTip && <View><Text style={styles.warn_tip} numberOfLines={50}>{warnTip}</Text></View>
}
<TouchableOpacity
activeOpacity={.9}
style={styles.succ_btn}
......@@ -89,7 +94,8 @@ class SubSuccPage extends Component {
</Text>
</TouchableOpacity>
</View>
</SafeAreaView>
</ScrollView>
</View>
</View>
);
......@@ -103,7 +109,7 @@ const styles = StyleSheet.create({
succ_inner: {
justifyContent: 'center',
alignItems: 'center',
paddingTop: '26%'
marginTop: pxSize(100)
},
img_box: {
width: pxSize(80),
......@@ -126,6 +132,14 @@ const styles = StyleSheet.create({
paddingBottom: 30,
fontFamily: font_family_regular
},
warn_tip: {
fontSize: 14,
paddingLeft: 20,
paddingRight: 20,
paddingBottom: 20,
color: '#fdbe34',
lineHeight: 22
},
succ_btn: {
backgroundColor: promary_color,
width: pxSize(330),
......
......@@ -60,11 +60,11 @@ class PageListArrow extends Component {
>
<CellTextStyle style={listCellStyle ? listCellStyle : ''}>
{ 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
style={isTitInputStyle ? styles.cell_input : ''}
editable={!listEditAble}
defaultValue={listItem[listDefaValue]}
editable={listEditAble}
defaultValue={listItem[listDefaValue] && listItem[listDefaValue].toString()}
placeholder={listInputPlace}
keyboardType={inputKeyboardType ? inputKeyboardType : 'default'}
onChangeText={(text) => {return inputCallBack ? inputCallBack(text) : ''}}
......
......@@ -9,10 +9,10 @@ import { dedupQuoteArray, show, formatStrForDate, cloneObject } from '../../util
import DateModel from '../common/DateModel';
import DialogModel from '../common/DialogModel';
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 moment from 'moment';
import { isNotBlank } from "../../utils/Utils";
import { isNotBlank, isBlank } from "../../utils/Utils";
import ImagePicker from 'react-native-image-picker';
import { exitLoginStatus, requestSysProfile } from '../../action/LoginAction';
import LodingModel from '../common/LodingModel';
......@@ -25,6 +25,7 @@ class EquipConsuPage extends Component {
super(props);
this.state = {
canSubFlag: false, // 生成订单按钮样式改变
userEnteredPrice: "Y",
listOptionData: [ // 页面元素
{
"id": "0",
......@@ -52,7 +53,7 @@ class EquipConsuPage extends Component {
},
{
"id": "4",
title: '消耗时间',
title: '手术时间',
name: '请选择',
value: '',
dateValue: new Date()
......@@ -183,12 +184,14 @@ class EquipConsuPage extends Component {
sysValues: {
OBS_MOBILE_CONSU_DEPARTMENT_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: [],
localDoctors: [],
localFollowers: [],
orderInfos: {}
orderInfos: {},
fees: {}
}
}
......@@ -273,6 +276,8 @@ class EquipConsuPage extends Component {
listOptionData[13].subOption = nextProps.charDetailOption
this.setState({
listOptionData
}, () => {
that.changeCanSub()
})
}
if(submit_equip_order_status != nextProps.submit_equip_order_status) {
......@@ -391,10 +396,11 @@ class EquipConsuPage extends Component {
tempTit = `“${listOptionData[chIndex].title}”未输入`
tempStatus = true
break
} else if( chIndex == 12
&& !listOptionData[chIndex].subOption.length ) {
tempTit = `“${listOptionData[chIndex].title}”未添加`
} else if( chIndex == 12 || chIndex == 13 ) {
if (isBlank(listOptionData[12].subOption) && isBlank(listOptionData[13].subOption)) {
tempTit = `“耗材明细”或“费用明细”必须添加一项`
tempStatus = true
}
break
} else if ( sysValues.OBS_MOBILE_CONSU_DEPARTMENT_DISPLAY == 3 && chIndex == 15 && !listOptionData[15].value) {
tempTit = `“${listOptionData[chIndex].title}”未选择`
......@@ -446,6 +452,7 @@ class EquipConsuPage extends Component {
that.clearInitNameAndValue(3)
that.getCurOrderDetail()
that.autoSetDoctorAndFollower()
that.setUserEnteredPrice(item.value)
}
}
return chItem
......@@ -497,10 +504,12 @@ class EquipConsuPage extends Component {
let tempName = `${collect_number}-${surgery_name}-${item.doctor_name ? (item.doctor_name + '-') : ''}${create_time}`
obj.name = tempName,
obj.value = item.collect_number
obj.userEnteredPrice = item.user_entered_price || 'Y'
resultArr.push(obj)
})
tempOption = [...resultArr]
orderInfos[`${listOptionData[1].value}_${listOptionData[2].value}`] = tempOption
orderInfos[`${listOptionData[1].value}_${listOptionData[2].value}_source`] = equipOrderOption
const doctors = R.map(R.applySpec({
collect_number: R.prop('collect_number'),
......@@ -516,11 +525,14 @@ class EquipConsuPage extends Component {
localDoctors: doctors,
localFollowers: followers
})
this.props.navigation.navigate('OrdersPage', {orders: equipOrderOption, title: '选择借货订单', selectCallback: this.selectOrderCallback.bind(this)})
return
}
this.setState({
listCurrentOption: [...tempOption]
listCurrentOption: [...tempOption],
// showTypePop: true
}, () => {
// 解决 IOS 弹窗显示问题
// 解决 IOS 弹窗显示问题, 这个问题可能是弹出来点不动?
setTimeout(() => {
that.setState({
showTypePop: true
......@@ -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
changeNameAndValue(data, nameType, valueType) {
let result = []
......@@ -646,6 +670,9 @@ class EquipConsuPage extends Component {
*/
async getDepartmentsByOrg(org_code) {
const {token, global_domain_config, userInfo} = this.props
const {sysValues} = this.state
if (sysValues.OBS_MOBILE_CONSU_DEPARTMENT_DISPLAY < 2) return
const params = {
access_token: token,
org_code,
......@@ -761,7 +788,9 @@ class EquipConsuPage extends Component {
const { orderInfos, listOptionData } = state
const options = orderInfos[`${listOptionData[1].value}_${listOptionData[2].value}`]
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
}
let params = {
......@@ -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() {
let { state, props } = this
......@@ -834,7 +906,8 @@ class EquipConsuPage extends Component {
listOptionData[3].name = tempName
listOptionData[3].value = surgery_collect_headers[0].collect_number
that.setState({
listOptionData
listOptionData,
userEnteredPrice: surgery_collect_headers[0].user_entered_price || 'Y'
}, () => {
that.getCurOrderDetail()
this.autoSetDoctorAndFollower()
......@@ -904,7 +977,7 @@ class EquipConsuPage extends Component {
if(date) {
listOptionData.map(function (item) {
if (item.title === curData.title) {
item.dateValue = formatStrForDate(date)
item.dateValue = date
}
})
this.setState({
......@@ -927,10 +1000,10 @@ class EquipConsuPage extends Component {
let that = this
this.setState({
listOptionData: listOptionData.map((item, index) => {
if(item.title === '消耗时间') {
if(item.title === '手术时间') {
item.name = date
item.value = date
item.dateValue = formatStrForDate(date)
item.dateValue = date
}
return item
})
......@@ -1096,19 +1169,29 @@ class EquipConsuPage extends Component {
// 耗材明细 点击
handleConsumDetailCheck() {
let { listOptionData } = this.state
let { listOptionData, userEnteredPrice } = this.state
if(this.judgeOrgIsNull() && this.judgeCustomerIsNull()
&& this.judgeOrderInfoIsNull()) {
this.props.navigation.navigate('ConsumDetailsPage', {
title: '器械消耗 - 添加明细',
orderId: listOptionData[3].value
orderId: listOptionData[3].value,
userEnteredPrice
})
}
}
// 费用明细 点击
handleChargeDetailsCheck() {
this.props.navigation.navigate('ChargeDetailsPage', { title: '器械消耗 - 添加明细' })
async handleChargeDetailsCheck() {
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 {
tempSubOption.patient_id = state.listOptionData[9].value
// tempSubOption.settled_flag = state.listOptionData[10].isRedio
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)
......@@ -1258,17 +1344,20 @@ class EquipConsuPage extends Component {
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){
tempSubOption.fee_lines = []
state.listOptionData[13].subOption.forEach(item => {
if(item.fee_amount && item.fee_type){
let obj_val = {
fee_amount : item.fee_amount,
fee_type : item.fee_type,
remark: item.remark
}
tempSubOption.fee_lines.push(obj_val)
tempSubOption.fee_lines = R.compose(
R.map((item) => {
item.quantity = isNotBlank(item.quantity) ? Number(item.quantity) : 1
item.sale_price = Number(item.sale_price)
item.unit_code = 'JIAN'
if (item.line_number) {
item.surgery_collect_fee_line_number = item.line_number
item.surgery_collect_number = tempSubOption.surgery_collect_number
}
})
return item
}),
R.map(R.dissocPath(['id'])),
R.pathOr([], ['listOptionData', 13, 'subOption'])
)(state)
}
if( tempSubOption.lines.length ) {
tempSubOption.lines = tempSubOption.lines.map(item => {
......@@ -1281,7 +1370,7 @@ class EquipConsuPage extends Component {
access_token: props.token,
data: { ...tempSubOption }
}
console.log('==params====', params)
// console.log('==params====', params)
props.requestEquipSumbit(params)
}
}
......@@ -1326,7 +1415,8 @@ class EquipConsuPage extends Component {
this.clearAllData() // 清空数据
let { state: { params: { title } } } = this.props.navigation
this.props.navigation.navigate('SubSuccPage', { // 现在没返回订单号
title: `${title} - 下单成功`
title: `${title} - 下单成功`,
warnTip: equipOrderOption.get_price_error_list
})
}
}
......@@ -1373,12 +1463,14 @@ class EquipConsuPage extends Component {
feeSum() {
try {
const {listOptionData} = this.state
return R.compose(
R.sum,
R.map(x => Number(x)),
R.pluck('fee_amount'),
const sum = R.compose(
R.reduce((acc, elem) => {
return acc + elem.sale_price * (elem.quantity || 1)
}, 0),
R.filter(R.allPass([R.compose(isNotBlank, R.prop('sale_price'))])),
R.pathOr([], [13, 'subOption'])
)(listOptionData)
return sum
} catch (error) {
return 0
}
......@@ -1574,6 +1666,7 @@ class EquipConsuPage extends Component {
date={listOptionData[4].dateValue}
closeModal={(show) => this.closeDateModal(show)}
show={dateModelPop}
date_mode="date"
callback={(date) => this.dateModalCallback(date, listOptionData[4])}
/>
{ this.renderPickerModel() }
......@@ -1645,7 +1738,11 @@ class EquipConsuPage extends Component {
// 返回耗材明细
renderConsumablesDetailsItem() {
let { state } = this
const sum = this.consumeSum()
let {userEnteredPrice} = state
let sum = 0
if (userEnteredPrice !== 'N') {
sum = this.consumeSum()
}
return (
<CellTextStyle style={list_common_item.consu_detail}>
......@@ -1662,7 +1759,9 @@ class EquipConsuPage extends Component {
<Text style={list_common_item.detail_tit_text}>
耗材({state.listOptionData[12].subOption.length}
</Text>
<Text style={list_common_item.detail_tit_text}>耗材总金额:{sum}</Text>
{
userEnteredPrice !== 'N' && <Text style={list_common_item.detail_tit_text}>耗材总金额:{sum}</Text>
}
</View>
{
state.listOptionData[12].isShowSub ?
......@@ -1690,6 +1789,8 @@ class EquipConsuPage extends Component {
// 返回耗材明细子项
renderConDeSubItem(item, index) {
const {userEnteredPrice} = this.state
return(
<View style={list_common_item.con_de_sub} key={index}>
<Text style={[list_common_item.de_sub_tit]}>
......@@ -1698,7 +1799,7 @@ class EquipConsuPage extends Component {
<Text style={list_common_item.de_tip}>
序列号:{item.serial_number ? item.serial_number : '无'}
</Text>
{ OBS_MOBILE_EQU_CON_DISPLAY_PRICE === 'Y' ?
{ OBS_MOBILE_EQU_CON_DISPLAY_PRICE === 'Y' && userEnteredPrice !== 'N' ?
<Text style={list_common_item.de_tip}>
单价(¥){ item.sale_price }
</Text> : null }
......@@ -1754,10 +1855,10 @@ class EquipConsuPage extends Component {
return(
<View style={list_common_item.con_de_sub} key={index}>
<Text style={[list_common_item.de_sub_tit]}>
{index+1}{ item.fee_type_name }
{index+1}{ item.fee_category_name }
</Text>
<Text style={list_common_item.de_tip}>
{item.fee_amount_title}(¥){ item.fee_amount }
{item.item_name}:¥{ item.sale_price } * { item.quantity || 1 }
</Text>
</View>
)
......@@ -1766,14 +1867,18 @@ class EquipConsuPage extends Component {
// 返回添加图片
renderAddPicturesItem() {
let { state } = this
const sum = this.feeSum() + this.consumeSum()
const userEnteredPrice = state.userEnteredPrice
let sum = this.feeSum()
if (userEnteredPrice !== 'N') {
sum += this.consumeSum()
}
return (
<CellTextStyle style={list_common_item.consu_addpic}>
<View style={list_common_item.addpic_inner}>
<View style={list_common_item.detail_title_box}>
<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 style={list_common_item.addpic_cont}>
{state.localPhoOption.length
......@@ -1845,7 +1950,7 @@ class EquipConsuPage extends Component {
}
render() {
let { canSubFlag } = this.state
let { canSubFlag, sysValues } = this.state
let { navigation } = this.props
let { title } = navigation.state.params
return (
......@@ -1864,7 +1969,7 @@ class EquipConsuPage extends Component {
{this.renderListItem()}
{this.renderRemarksItem()}
{this.renderConsumablesDetailsItem()}
{this.renderChargeDetailsItem()}
{sysValues.OBS_MOBILE_CONSUME_FEE === 'Y' && this.renderChargeDetailsItem()}
{this.renderAddPicturesItem()}
{this.renderZoomPicture()}
<FooterBtnStyle
......@@ -1982,7 +2087,7 @@ const mapDispatchToProps = (dispatch) => {
},
requestListDataSuccess: (data) => {
dispatch(requestListDataSuccess(data))
}
},
}
}
......
......@@ -12,8 +12,12 @@ import { connect } from 'react-redux';
import PageListArrow from '../../common/listDataComponent/PageListArrow';
import { CellTextStyle } from '../../common/CellTextStyle';
import LoadingModel from '../../common/listDataComponent/LoadingModel';
// 费用明细
/**
* @description: // 费用明细
* @param {*}
* @return {*}
* @deprecated 已废弃,使用ChargeDetailsPageRef
*/
class ChargeDetailsPage extends Component {
constructor(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 {
localSelectOption: [], // 已选数据
isSubLoding: true, // 加载中弹窗
lodingTitle: '加载中',
userEnteredPrice: 'Y'
}
}
......@@ -57,7 +58,7 @@ class ConsumDetailsPage extends Component {
// 获取当前订单的消耗明细
async getCurOrderDetail() {
let {orderId} = this.props.navigation.state.params
let {orderId, userEnteredPrice} = this.props.navigation.state.params
let {global_domain_config} = this.props
let params = {
access_token: this.props.token,
......@@ -88,7 +89,8 @@ class ConsumDetailsPage extends Component {
this.setState({
isSubLoding: false,
conDetaOption: lines,
allConOption: lines
allConOption: lines,
userEnteredPrice
})
this.changeIsSelected()
} else if(detailResult.error_code === 41006) {
......@@ -217,12 +219,12 @@ class ConsumDetailsPage extends Component {
// 点击 确定耗材
handleSubmit() {
this.handleCloseSelectModal(false)
let {localSelectOption} = this.state
let {localSelectOption, userEnteredPrice} = this.state
if(!localSelectOption.length) {
show('请选择耗材')
return
}
if(OBS_MOBILE_EQU_CON_DISPLAY_PRICE === 'Y'){
if(OBS_MOBILE_EQU_CON_DISPLAY_PRICE === 'Y' && userEnteredPrice !== 'N'){
this.props.navigation.navigate('FillUnitPricePage', {
title: '器械消耗 - 填写单价',
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 {
{
"id": "8",
title: '手术时间',
name: moment(new Date()).format("YYYY-MM-DD HH:mm"),
value: moment(new Date()).format("YYYY-MM-DD HH:mm"),
dateValue: new Date(),
name: (() => {
let date = moment(new Date()).add(1, 'd')
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
},
{
......@@ -1797,6 +1812,7 @@ class EquipConsuPage extends Component {
closeModal={(show) => this.closeDateModal(show)}
show={dateModelPop}
callback={(date) => this.dateModalCallback(date, listOptionData[8])}
minuteInterval={60}
/>
{ this.renderPickerModel() }
</View>
......
......@@ -71,10 +71,25 @@ class SelfOrderPage extends Component {
},
{
"id": "6",
title: '需求时间',
name: moment(new Date()).format("YYYY-MM-DD HH:mm"),
value: moment(new Date()).format("YYYY-MM-DD HH:mm"),
dateValue: new Date(),
title: '手术时间',
name: (() => {
let date = moment(new Date()).add(1, 'd')
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
},
{
......@@ -1998,6 +2013,7 @@ class SelfOrderPage extends Component {
closeModal={(show) => this.closeDateModal(show)}
show={dateModelPop}
callback={(date) => this.dateModalCallback(date, listOptionData[6])}
minuteInterval={60}
/>
{ this.renderPickerModel()}
{/* { this.renderTipModelPackage()}
......
......@@ -127,7 +127,7 @@ class ChooseProductPage extends Component {
let { data } = pur_sup_search
let { topProcOptionList } = that.state
if (data.length > 0) {
topProcOptionList = cloneObject(data)
topProcOptionList = R.compose(cloneObject, R.filter(isNotBlank))(data)
topProcOptionList.forEach(function (topObj) {
topObj[LocalVariable.SELECTED_QUQNTITY] = 0
topObj['leftOptionList'] = []
......
......@@ -63,9 +63,7 @@ const screenH = Dimensions.get('window').height;
export const isIphoneX = () => {
return (
Platform.OS === 'ios' &&
((screenH === X_HEIGHT && screenW === X_WIDTH) ||
(screenH === X_MAX_HEIGHT && screenW === X_MAX_WIDTH) ||
(screenH === XS_MAX_HEIGHT && screenW === XS_MAX_WIDTH))
screenH >= 728
)
};
......
{
"name": "BoneHouse_Business_APP",
"version": "1.2.6",
"version": "1.2.7",
"private": true,
"scripts": {
"postinstall": "npx jetify",
......@@ -8,7 +8,12 @@
"test": "jest"
},
"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",
"lodash.debounce": "^4.0.8",
"moment": "2.29.1",
"ramda": "^0.27.1",
"react": "16.8.3",
......@@ -20,6 +25,7 @@
"react-native-fs": "2.14.1",
"react-native-image-picker": "0.28.0",
"react-native-image-zoom-viewer": "3.0.1",
"react-native-pager-view": "^5.2.1",
"react-native-root-toast": "3.1.1",
"react-native-scrollable-tab-view": "0.9.0",
"react-native-sound": "0.11.0",
......
......@@ -2,6 +2,29 @@
# 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":
version "7.12.13"
resolved "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
......@@ -664,6 +687,11 @@
lodash "^4.17.19"
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":
version "1.0.4"
resolved "https://registry.npm.taobao.org/@cnakazawa/watch/download/@cnakazawa/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a"
......@@ -820,6 +848,11 @@
"@types/istanbul-reports" "^1.1.1"
"@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":
version "1.12.0"
resolved "https://registry.npm.taobao.org/@react-native-community/cli/download/@react-native-community/cli-1.12.0.tgz#f4cbc2204af63a87d5736d2fa6a018c1fd5efd44"
......@@ -860,6 +893,16 @@
xcode "^2.0.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":
version "3.4.2"
resolved "https://registry.npm.taobao.org/@react-navigation/core/download/@react-navigation/core-3.4.2.tgz#bec563e94fde40fbab3730cdc97f22afbb2a1498"
......@@ -944,6 +987,11 @@
dependencies:
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":
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"
......@@ -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"
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:
version "0.2.1"
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:
"@babel/plugin-syntax-object-rest-spread" "^7.0.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:
version "1.0.0"
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:
resolved "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
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:
version "3.0.0"
resolved "https://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
......@@ -1591,7 +1657,7 @@ chalk@^1.1.1:
strip-ansi "^3.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"
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=
......@@ -1741,7 +1807,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
dependencies:
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"
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=
......@@ -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"
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"
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=
......@@ -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"
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:
version "1.1.3"
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:
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=
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:
version "0.1.2"
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:
dependencies:
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:
version "0.1.4"
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:
p-locate "^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:
version "4.5.1"
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:
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=
lodash@^4.17.5:
lodash@^4.17.20, lodash@^4.17.5:
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"
integrity sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=
......@@ -4479,7 +4567,7 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
mkdirp@^0.5.1:
mkdirp@^0.5.1, mkdirp@^0.5.3:
version "0.5.5"
resolved "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
integrity sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=
......@@ -4608,6 +4696,11 @@ node-notifier@^5.2.1, node-notifier@^5.4.2:
shellwords "^0.1.1"
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:
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"
......@@ -5244,6 +5337,11 @@ react-native-code-push@7.0.0:
semver "^7.3.2"
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:
version "2.7.9"
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:
dependencies:
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:
version "3.2.3"
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:
is-core-module "^2.1.0"
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:
version "2.0.0"
resolved "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
......@@ -5901,7 +6020,7 @@ scheduler@^0.13.3:
loose-envify "^1.1.0"
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"
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=
......@@ -5977,6 +6096,11 @@ setprototypeof@1.1.1:
resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
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:
version "1.2.0"
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:
resolved "https://registry.npm.taobao.org/ts-toolbelt/download/ts-toolbelt-6.15.5.tgz#cb3b43ed725cb63644782c64fbcad7d8f28c0a83"
integrity sha1-yztD7XJctjZEeCxk+8rX2PKMCoM=
tslib@^1.9.0:
tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0:
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"
integrity sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=
......@@ -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"
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:
version "0.6.0"
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:
has-symbols "^1.0.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:
version "1.0.1"
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