OrderCard.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. import React from "react";
  2. import { StyleSheet, Dimensions } from "react-native";
  3. import {
  4. Modal,
  5. Card,
  6. Text,
  7. Button,
  8. Layout,
  9. Avatar,
  10. MenuGroup,
  11. MenuItem,
  12. Menu,
  13. } from "@ui-kitten/components";
  14. import { useModel } from "flooks";
  15. export default function OrderCard(props) {
  16. const {
  17. orderInfo2,
  18. orderInfo3,
  19. orderInfo4,
  20. orderInfo5,
  21. orderInfo6,
  22. getWordsStr,
  23. orderButton1,
  24. orderButton2,
  25. overTips,
  26. } = useModel("wordsModel");
  27. const { showDialog } = useModel("dialogModel");
  28. const { receivedOrder } = useModel("orderInfoModel");
  29. const { info } = props;
  30. const { id, payMethod, orderTime, merchantStatus } = info || {};
  31. const Footer = (props) => (
  32. <Layout {...props} style={[props.style, styles.footerContainer]}>
  33. <Button
  34. style={styles.footerControl}
  35. appearance='outline'
  36. onPress={() => {
  37. showDialog({
  38. bodyText: overTips,
  39. status: "danger",
  40. cancelable: true,
  41. confirmCallback: () => {
  42. receivedOrder(id,false).then((res) => {
  43. updateInfo(res)
  44. });
  45. },
  46. });
  47. }}
  48. >
  49. {orderButton1}
  50. </Button>
  51. <Button
  52. style={styles.footerControl}
  53. onPress={() => {
  54. receivedOrder(id,true).then((res) => {
  55. updateInfo(res)
  56. });
  57. }}
  58. appearance='outline'
  59. >
  60. {orderButton2}
  61. </Button>
  62. </Layout>
  63. );
  64. return (
  65. <Card
  66. appearance='orderCard'
  67. disabled={true}
  68. style={[props.style]}
  69. footer={Footer}
  70. >
  71. <Text>{getWordsStr(merchantStatus)}</Text>
  72. <Layout style={styles.orderItem1}>
  73. <Text category='c2'>{id}</Text>
  74. <Text category='c2'>
  75. {orderInfo2}:{orderTime}
  76. </Text>
  77. </Layout>
  78. <Layout style={styles.orderItem1}>
  79. <Text category='h6'>用户名称</Text>
  80. <Text category='h6'>{getWordsStr(payMethod)}</Text>
  81. </Layout>
  82. <Layout style={styles.orderItem1}>
  83. <Text category='c2'>电话号码</Text>
  84. <Button appearance='outline'>{orderInfo3}</Button>
  85. </Layout>
  86. <Layout style={styles.orderItem2}>
  87. <Text category='c2' style={styles.leftText}>
  88. {orderInfo4}
  89. </Text>
  90. <Text category='h1'>
  91. 南京市建邺区奥体大街198号同进大南京市建邺区奥体大街198号同进大厦三单元三楼1005室南京市建邺区奥体大街198号同进大厦三单元三楼1005室厦三单元三楼1005室
  92. fsdfdsfsdf
  93. </Text>
  94. </Layout>
  95. <Layout style={styles.orderItem2}>
  96. <Text category='c2' style={styles.leftText}>
  97. {orderInfo5}
  98. </Text>
  99. <Layout style={styles.lay}>
  100. <MenuGroup
  101. appearance='orderProduct'
  102. title={() => MenuTitle("圣诞节副科", "¥9999.99")}
  103. style={styles.menuGroup}
  104. >
  105. <MenuItem
  106. disabled={true}
  107. style={styles.menuItem}
  108. title={lsitMenu}
  109. />
  110. </MenuGroup>
  111. </Layout>
  112. </Layout>
  113. <Layout style={styles.orderItem2}>
  114. <Text category='c2' style={styles.leftText}>
  115. {orderInfo6}
  116. </Text>
  117. </Layout>
  118. </Card>
  119. );
  120. }
  121. const MenuTitle = (title, sub, num, index) => (
  122. <Layout style={styles.menuTitle} key={index || 0}>
  123. <Text category='h1' style={styles.sub}>
  124. {title}
  125. </Text>
  126. {num && (
  127. <Text category='h1' style={[styles.sub, styles.center]}>
  128. {num}
  129. </Text>
  130. )}
  131. <Text category='h1' style={[styles.sub, styles.right]}>
  132. {sub}
  133. </Text>
  134. </Layout>
  135. );
  136. const lsitMenu = () => {
  137. return (
  138. <Layout style={styles.menuItem}>
  139. {[1, 2].map((item, index) => {
  140. return MenuTitle("圣诞节副科" + item, "¥9999.99", 2, index + 1);
  141. })}
  142. </Layout>
  143. );
  144. };
  145. const styles = StyleSheet.create({
  146. orderItem1: {
  147. justifyContent: "space-between",
  148. flexDirection: "row",
  149. marginBottom: 10,
  150. },
  151. orderItem2: {
  152. alignItems: "flex-start",
  153. flexDirection: "row",
  154. marginBottom: 15,
  155. },
  156. leftText: {
  157. flexShrink: 0,
  158. marginRight: 8,
  159. minWidth: 60,
  160. },
  161. menuGroup: {
  162. padding: 0,
  163. margin: 0,
  164. },
  165. lay: {
  166. flex: 1,
  167. },
  168. menuTitle: {
  169. flexDirection: "row",
  170. flex: 1,
  171. },
  172. footerContainer: {
  173. flexDirection: "row",
  174. justifyContent: "flex-end",
  175. },
  176. footerControl: {
  177. width: 112,
  178. marginLeft: 5,
  179. },
  180. sub: {
  181. flex: 1,
  182. flexShrink: 0,
  183. },
  184. menuItem: {
  185. flex: 1,
  186. // paddingHorizontal: 0,
  187. // paddingVertical: 0,
  188. // paddingLeft: 0,
  189. // marginTop: 5,
  190. // marginHorizontal: 5,
  191. },
  192. right: {
  193. textAlign: "right",
  194. },
  195. center: {
  196. textAlign: "center",
  197. },
  198. });