ReportCustomerDetail.js 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. import React, {Component} from 'react';
  2. import {
  3. View,
  4. Text,
  5. StatusBar,
  6. ScrollView, DeviceEventEmitter,
  7. } from 'react-native';
  8. import {
  9. Provider,
  10. Picker,
  11. Button,
  12. List,
  13. Modal, Toast,
  14. } from '@ant-design/react-native';
  15. import {connect} from 'react-redux';
  16. import CallPhone from '../../components/CallPhone';
  17. import ComponentsStyles from '../../components/ComponentsStyles';
  18. @connect(customer => ({...customer}))
  19. class ReportCustomerDetail extends Component {
  20. // 报备客户详情
  21. constructor(props) {
  22. super(props);
  23. this.state = {
  24. dispatchVisible: false,
  25. user: '',
  26. USERS: [],
  27. };
  28. };
  29. componentDidMount() {
  30. this._fetchData();
  31. }
  32. _fetchData = () => {
  33. this.props.dispatch({
  34. type: 'customer/getUser',
  35. callback: (data) => {
  36. let USERS = [];
  37. data.map((item, index) => {
  38. USERS.push({
  39. value: item.value, label: item.lable,
  40. });
  41. });
  42. this.setState({USERS});
  43. },
  44. });
  45. };
  46. onSignRepeat = (item) => {
  47. Modal.alert('提醒', '确定要标记为撞单客户吗?', [
  48. {
  49. text: '取消',
  50. style: 'cancel',
  51. },
  52. {
  53. text: '确定',
  54. onPress: () => this.props.dispatch({
  55. type: 'customer/signRepeat',
  56. payload: {id: item.id},
  57. callback: () => {
  58. DeviceEventEmitter.emit('backRefesh');
  59. this.props.navigation.goBack();
  60. },
  61. }),
  62. },
  63. ]);
  64. };
  65. dispatch = (item) => {
  66. if (!this.state.user) {
  67. Toast.info('请选择人员', 1);
  68. return;
  69. }
  70. this.props.dispatch({
  71. type: 'customer/dispatchUser',
  72. payload: {id: item.id, user: this.state.user},
  73. callback: () => {
  74. DeviceEventEmitter.emit('backRefesh');
  75. this.props.navigation.goBack();
  76. },
  77. });
  78. };
  79. render() {
  80. const item = this.props.navigation.state.params.item;
  81. const dispatchButtons = [
  82. {text: '取消', onPress: () => this.setState({dispatchVisible: false})},
  83. {text: '保存', onPress: () => this.dispatch(item)},
  84. ];
  85. return (
  86. <View style={{flex: 1, backgroundColor: '#fff'}}>
  87. <Provider>
  88. <ScrollView style={{marginBottom: 5}}>
  89. <StatusBar backgroundColor={'#fff'} barStyle='dark-content'/>
  90. <List>
  91. <List.Item extra={<Text style={ComponentsStyles.font15}>{item.name}</Text>} arrow="empty">
  92. <Text style={ComponentsStyles.font15}>姓名</Text>
  93. </List.Item>
  94. <List.Item extra={<Text style={ComponentsStyles.font15}>{item.gender_text}</Text>}
  95. arrow="empty">
  96. <Text style={ComponentsStyles.font15}>性别</Text>
  97. </List.Item>
  98. <View style={ComponentsStyles.telItemView}>
  99. <Text style={ComponentsStyles.telName}>电话</Text>
  100. <View style={ComponentsStyles.telView}>
  101. <Text style={[ComponentsStyles.icon, {marginLeft: 8}]}>{'\ue61a'}</Text>
  102. <Text style={ComponentsStyles.telText}
  103. onPress={() => CallPhone(item.tel, 1)}>
  104. {item.tel}
  105. </Text>
  106. </View>
  107. </View>
  108. <List.Item extra={<Text style={ComponentsStyles.font15}>{item.village}</Text>}
  109. arrow="empty">
  110. <Text style={ComponentsStyles.font15}>小区</Text>
  111. </List.Item>
  112. <List.Item extra={<Text style={ComponentsStyles.IDText}>{item.address}</Text>}
  113. arrow="empty">
  114. <Text style={ComponentsStyles.font15}>地址</Text>
  115. </List.Item>
  116. <List.Item extra={<Text style={ComponentsStyles.font15}>{item.source_text}</Text>}
  117. arrow="empty">
  118. <Text style={ComponentsStyles.font15}>来源</Text>
  119. </List.Item>
  120. <List.Item extra={<Text style={ComponentsStyles.font15}>{item.project_text}</Text>}
  121. arrow="empty">
  122. <Text style={ComponentsStyles.font15}>项目</Text>
  123. </List.Item>
  124. <List.Item extra={<Text style={ComponentsStyles.IDText}>{item.report_status_text}</Text>}
  125. arrow="empty">
  126. <Text style={ComponentsStyles.font15}>报备状态</Text>
  127. </List.Item>
  128. <List.Item extra={<Text style={ComponentsStyles.font15}>{item.create_time_f}</Text>}
  129. arrow="empty">
  130. <Text style={ComponentsStyles.font15}>报备时间</Text>
  131. </List.Item>
  132. <List.Item extra={<Text style={ComponentsStyles.font15}>{item.create_user_text}</Text>}
  133. arrow="empty">
  134. <Text style={ComponentsStyles.font15}>报备人</Text>
  135. </List.Item>
  136. <List.Item extra={<Text style={ComponentsStyles.font15}>{item.check_time_f}</Text>}
  137. arrow="empty">
  138. <Text style={ComponentsStyles.font15}>审核时间</Text>
  139. </List.Item>
  140. <List.Item extra={<Text style={ComponentsStyles.font15}>{item.check_user_text}</Text>}
  141. arrow="empty">
  142. <Text style={ComponentsStyles.font15}>审核人</Text>
  143. </List.Item>
  144. <List.Item extra={<Text style={ComponentsStyles.IDText}>{item.notes}</Text>}
  145. arrow="empty">
  146. <Text style={ComponentsStyles.font15}>备注</Text>
  147. </List.Item>
  148. </List>
  149. </ScrollView>
  150. {item.report_status === 0 &&
  151. <View style={{flexDirection: 'row', justifyContent: 'center', backgroundColor: '#fff'}}>
  152. <Button
  153. type="primary"
  154. onPress={() => this.setState({dispatchVisible: true})}
  155. style={{width: '45%', margin: 5}}
  156. >
  157. <Text
  158. style={{color: '#fff'}}>分配</Text></Button>
  159. <Button
  160. type="warning"
  161. onPress={() => this.onSignRepeat(item)}
  162. style={{width: '45%', margin: 5}}
  163. >
  164. <Text
  165. style={{color: '#fff'}}>标记撞单</Text></Button>
  166. </View>
  167. }
  168. <Modal
  169. transparent
  170. maskClosable
  171. visible={this.state.dispatchVisible}
  172. footer={dispatchButtons}
  173. >
  174. <Picker
  175. data={this.state.USERS}
  176. cols={1}
  177. value={this.state.user}
  178. onChange={(val) => this.setState({user: val})}
  179. >
  180. <List.Item arrow="horizontal">
  181. 选择人员
  182. </List.Item>
  183. </Picker>
  184. </Modal>
  185. </Provider>
  186. </View>
  187. );
  188. }
  189. }
  190. export default ReportCustomerDetail;