OrderMessageScreen.jsx 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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 { useSet, useCreation } from '@umijs/hooks';
  7. import useModel from 'flooks';
  8. import Detail from '../Detail/model'; // detail模块通用方法
  9. import Header from '../../components/Header';
  10. const messages = ['饮料不加冰', '不要辣'];
  11. export default function OrderMessageScreen({ navigation }) {
  12. const { remark, setRemark } = useModel(Detail, ['remark']);
  13. const [message, setmessage] = React.useState('');
  14. const [chooseTab, tabEvent] = useSet([]);
  15. const cansubmit = useCreation(() => {
  16. if (message || chooseTab.size > 0) {
  17. return true;
  18. } else {
  19. return false;
  20. }
  21. }, [message, chooseTab]);
  22. return (
  23. <>
  24. <Header title="订单备注" />
  25. <ScrollView
  26. contentContainerStyle={{
  27. flexGrow: 1,
  28. backgroundColor: '#eee',
  29. }}
  30. >
  31. <Div py={20} px={15} bg="white" mt={5}>
  32. <TextareaItem
  33. defaultValue={remark}
  34. rows={4}
  35. placeholder="可额外填写订单备注"
  36. style={{
  37. backgroundColor: '#eeeeee',
  38. paddingVertical: 10,
  39. fontSize: 10,
  40. borderBottomWidth: 0,
  41. }}
  42. count={100}
  43. onChange={setmessage}
  44. />
  45. <Text textAlign="left" fontSize="xs" color="gray300" py={10}>
  46. 常用标签
  47. </Text>
  48. <Div row>
  49. {messages.map((item, index) => {
  50. const isChoose = tabEvent.has(item);
  51. return (
  52. <Tag
  53. key={index}
  54. bg={isChoose ? 'brand500' : 'white'}
  55. color={isChoose ? 'white' : 'gray300'}
  56. borderColor={isChoose ? 'brand500' : 'gray300'}
  57. borderWidth={1}
  58. ml={5}
  59. mt={5}
  60. fontSize="sm"
  61. rounded={3}
  62. onPress={() => {
  63. if (isChoose) {
  64. tabEvent.remove(item);
  65. } else {
  66. tabEvent.add(item);
  67. }
  68. }}
  69. >
  70. {item}
  71. </Tag>
  72. );
  73. })}
  74. </Div>
  75. </Div>
  76. <Button
  77. mx={20}
  78. my={10}
  79. bg="brand500"
  80. block
  81. disabled={!cansubmit}
  82. onPress={() => {
  83. setRemark(message, chooseTab);
  84. navigation.goBack();
  85. }}
  86. >
  87. 提交
  88. </Button>
  89. </ScrollView>
  90. </>
  91. );
  92. }