OrderScreen.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. import * as WebBrowser from "expo-web-browser";
  2. import * as React from "react";
  3. import { StyleSheet } from "react-native";
  4. import { setModel, useModel } from "flooks";
  5. import { useFocusEffect } from "@react-navigation/native";
  6. import { Layout, Button, TabBar, Tab, useTheme } from "@ui-kitten/components";
  7. import NavHeaderBar from "../components/NavHeaderBar";
  8. import OrderCard from "../components/OrderCard";
  9. import ListComponent from "../components/ListComponent";
  10. // 订单功能模块
  11. import orderInfoModel from "../models/orderInfoModel";
  12. // const Tab = createMaterialTopTabNavigator();
  13. const orderStatus = ["NOT_RECEIVED", "RECEIVED", "REJECTED", "COMPLETED"];
  14. const styles = StyleSheet.create({
  15. tabBack: {
  16. backgroundColor: "#eee",
  17. borderWidth: 0,
  18. },
  19. indicatorStyle: {
  20. backgroundColor: "#FFC21C",
  21. },
  22. buttonGroup: {
  23. justifyContent: "center",
  24. paddingVertical: 7,
  25. flexDirection: "row",
  26. backgroundColor: "#eee",
  27. },
  28. separatorStyle: {
  29. height: 0,
  30. },
  31. list: {
  32. flex: 1,
  33. backgroundColor: "#eee",
  34. marginTop: 10,
  35. },
  36. label: {
  37. backgroundColor: "#eee",
  38. },
  39. });
  40. export default function OrderScreen({ navigation }) {
  41. const {
  42. NOT_RECEIVED,
  43. RECEIVED,
  44. REJECTED,
  45. COMPLETED,
  46. tab2,
  47. orderTitleBtn2,
  48. KWQKHQ,
  49. DTEOMV,
  50. GLWBTR,
  51. } = useModel("wordsModel");
  52. const { automaticOrder, updateMerchant } = useModel("userModel");
  53. const { success } = useModel("loadingModel");
  54. const theme = useTheme();
  55. setModel("orderInfoModel", orderInfoModel);
  56. const { getOrderList } = useModel("orderInfoModel");
  57. const [startState, changeStart] = React.useState(false);
  58. const [selectedIndex, setSelectedIndex] = React.useState(0);
  59. const { changeBackground } = useModel("barModel");
  60. const { clearLoading } = useModel("loadingModel");
  61. useFocusEffect(
  62. React.useCallback(() => {
  63. changeBackground(theme["color-primary-500"]);
  64. setSelectedIndex(0);
  65. changeStart(true);
  66. }, [])
  67. );
  68. const orderItem = ({ item }) => (
  69. <OrderCard
  70. style={{ marginHorizontal: 10, marginBottom: 15 }}
  71. appearance="classification"
  72. key={item.id}
  73. info={item}
  74. updateInfo={() => {
  75. changeStart(true);
  76. }}
  77. />
  78. );
  79. function getList(page, size) {
  80. const query = {
  81. merchantStatus: orderStatus[selectedIndex],
  82. cancel: false,
  83. };
  84. return getOrderList(page, size, query).then(res => {
  85. changeStart(false);
  86. clearLoading();
  87. return Promise.resolve(res);
  88. });
  89. }
  90. return (
  91. <>
  92. <Layout style={[styles.tabBack, { flex: 1 }]}>
  93. <NavHeaderBar title={tab2} />
  94. <Layout style={styles.buttonGroup}>
  95. <Button
  96. style={{ marginRight: 10 }}
  97. appearance={automaticOrder ? "outline" : "filled"}
  98. onPress={() =>
  99. updateMerchant({
  100. automaticOrder: !automaticOrder,
  101. }).then(() => {
  102. success(DTEOMV);
  103. })
  104. }
  105. >
  106. {automaticOrder ? KWQKHQ : GLWBTR}
  107. </Button>
  108. <Button
  109. appearance="outline"
  110. status="success"
  111. onPress={() => {
  112. navigation.navigate("OrderSetting");
  113. }}
  114. >
  115. {orderTitleBtn2}
  116. </Button>
  117. </Layout>
  118. <TabBar
  119. selectedIndex={selectedIndex}
  120. indicatorStyle={styles.indicatorStyle}
  121. style={styles.label}
  122. onSelect={index => {
  123. setSelectedIndex(index);
  124. changeStart(true);
  125. }}
  126. >
  127. <Tab appearance="homeTab" title={NOT_RECEIVED} />
  128. <Tab appearance="homeTab" title={RECEIVED} />
  129. <Tab appearance="homeTab" title={REJECTED} />
  130. <Tab appearance="homeTab" title={COMPLETED} />
  131. </TabBar>
  132. <ListComponent
  133. initialNumToRender={3}
  134. getInfo={getList}
  135. renderItem={orderItem}
  136. style={styles.list}
  137. separatorStyle={styles.separatorStyle}
  138. showEmpty
  139. startState={startState}
  140. />
  141. </Layout>
  142. </>
  143. );
  144. }