OrderMessageScreen.jsx 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import * as WebBrowser from 'expo-web-browser';
  2. import * as React from 'react';
  3. import { Div, Button, Image, Text, Avatar, Tag } from 'react-native-magnus';
  4. import { ScrollView } from 'react-native-gesture-handler';
  5. import { TextareaItem } from '@ant-design/react-native';
  6. import { useTranslation } from 'react-i18next';
  7. import { useSet, useCreation } from '@umijs/hooks';
  8. import useModel from 'flooks';
  9. import Detail from '../Detail/model'; // detail模块通用方法
  10. import Header from '../../components/Header';
  11. const messages = ['饮料不加冰', '不要辣'];
  12. export default function OrderMessageScreen({ navigation }) {
  13. const { t } = useTranslation();
  14. const { remark, setRemark } = useModel(Detail, ['remark']);
  15. const [message, setmessage] = React.useState('');
  16. const [chooseTab, tabEvent] = useSet([]);
  17. const cansubmit = useCreation(() => {
  18. if (message || chooseTab.size > 0) {
  19. return true;
  20. } else {
  21. return false;
  22. }
  23. }, [message, chooseTab]);
  24. return (
  25. <>
  26. <Header title={t('ding-dan-bei-zhu')} />
  27. <ScrollView
  28. contentContainerStyle={{
  29. flexGrow: 1,
  30. backgroundColor: '#eee',
  31. }}
  32. >
  33. <Div py={20} px={15} bg="white" mt={5}>
  34. <TextareaItem
  35. defaultValue={remark}
  36. rows={4}
  37. placeholder={t('keewai-tian-xie-ding-dan-bei-zhu')}
  38. style={{
  39. backgroundColor: '#eeeeee',
  40. paddingVertical: 10,
  41. fontSize: 10,
  42. borderBottomWidth: 0,
  43. }}
  44. count={100}
  45. onChange={setmessage}
  46. />
  47. <Text textAlign="left" fontSize="xs" color="gray300" py={10}>
  48. {t('chang-yong-biao-qian')}
  49. </Text>
  50. <Div row>
  51. {messages.map((item, index) => {
  52. const isChoose = tabEvent.has(item);
  53. return (
  54. <Tag
  55. key={index}
  56. bg={isChoose ? 'brand500' : 'white'}
  57. color={isChoose ? 'white' : 'gray300'}
  58. borderColor={isChoose ? 'brand500' : 'gray300'}
  59. borderWidth={1}
  60. ml={5}
  61. mt={5}
  62. fontSize="sm"
  63. rounded={3}
  64. onPress={() => {
  65. if (isChoose) {
  66. tabEvent.remove(item);
  67. } else {
  68. tabEvent.add(item);
  69. }
  70. }}
  71. >
  72. {item}
  73. </Tag>
  74. );
  75. })}
  76. </Div>
  77. </Div>
  78. <Button
  79. mx={20}
  80. my={10}
  81. bg="brand500"
  82. block
  83. disabled={!cansubmit}
  84. onPress={() => {
  85. setRemark(message, chooseTab);
  86. navigation.goBack();
  87. }}
  88. >
  89. {t('ti-jiao')}
  90. </Button>
  91. </ScrollView>
  92. </>
  93. );
  94. }