panhui 5 years ago
parent
commit
a50fcdf81c

+ 19 - 13
components/OrderCard.js

@@ -11,6 +11,7 @@ import {
     MenuItem,
     MenuItem,
     Menu,
     Menu,
 } from "@ui-kitten/components";
 } from "@ui-kitten/components";
+import { Linking } from "expo";
 import { useModel } from "flooks";
 import { useModel } from "flooks";
 export default function OrderCard(props) {
 export default function OrderCard(props) {
     const {
     const {
@@ -27,7 +28,8 @@ export default function OrderCard(props) {
     const { showDialog } = useModel("dialogModel");
     const { showDialog } = useModel("dialogModel");
     const { receivedOrder } = useModel("orderInfoModel");
     const { receivedOrder } = useModel("orderInfoModel");
     const { info } = props;
     const { info } = props;
-    const { id, payMethod, orderTime, merchantStatus } = info || {};
+    const { id, payMethod, orderTime, userAddress, merchantStatus, user } =
+        info || {};
 
 
     const Footer = (props) => (
     const Footer = (props) => (
         <Layout {...props} style={[props.style, styles.footerContainer]}>
         <Layout {...props} style={[props.style, styles.footerContainer]}>
@@ -40,8 +42,8 @@ export default function OrderCard(props) {
                         status: "danger",
                         status: "danger",
                         cancelable: true,
                         cancelable: true,
                         confirmCallback: () => {
                         confirmCallback: () => {
-                            receivedOrder(id,false).then((res) => {
-                                updateInfo(res)
+                            receivedOrder(id, false).then((res) => {
+                                updateInfo(res);
                             });
                             });
                         },
                         },
                     });
                     });
@@ -52,8 +54,8 @@ export default function OrderCard(props) {
             <Button
             <Button
                 style={styles.footerControl}
                 style={styles.footerControl}
                 onPress={() => {
                 onPress={() => {
-                    receivedOrder(id,true).then((res) => {
-                        updateInfo(res)
+                    receivedOrder(id, true).then((res) => {
+                        updateInfo(res);
                     });
                     });
                 }}
                 }}
                 appearance='outline'
                 appearance='outline'
@@ -78,22 +80,26 @@ export default function OrderCard(props) {
                 </Text>
                 </Text>
             </Layout>
             </Layout>
             <Layout style={styles.orderItem1}>
             <Layout style={styles.orderItem1}>
-                <Text category='h6'>用户名称</Text>
+                <Text category='h6'>{user.nickname}</Text>
                 <Text category='h6'>{getWordsStr(payMethod)}</Text>
                 <Text category='h6'>{getWordsStr(payMethod)}</Text>
             </Layout>
             </Layout>
             <Layout style={styles.orderItem1}>
             <Layout style={styles.orderItem1}>
-                <Text category='c2'>电话号码</Text>
-                <Button appearance='outline'>{orderInfo3}</Button>
+                <Text category='c2'>{user.phone}</Text>
+                <Button
+                    appearance='outline'
+                    onPress={() => {
+                        Linking.openURL("tel:+" + user.phone);
+                    }}
+                >
+                    {orderInfo3}
+                </Button>
             </Layout>
             </Layout>
 
 
             <Layout style={styles.orderItem2}>
             <Layout style={styles.orderItem2}>
                 <Text category='c2' style={styles.leftText}>
                 <Text category='c2' style={styles.leftText}>
                     {orderInfo4}
                     {orderInfo4}
                 </Text>
                 </Text>
-                <Text category='h1'>
-                    南京市建邺区奥体大街198号同进大南京市建邺区奥体大街198号同进大厦三单元三楼1005室南京市建邺区奥体大街198号同进大厦三单元三楼1005室厦三单元三楼1005室
-                    fsdfdsfsdf
-                </Text>
+                <Text category='h1'>{userAddress}</Text>
             </Layout>
             </Layout>
 
 
             <Layout style={styles.orderItem2}>
             <Layout style={styles.orderItem2}>
@@ -117,7 +123,7 @@ export default function OrderCard(props) {
 
 
             <Layout style={styles.orderItem2}>
             <Layout style={styles.orderItem2}>
                 <Text category='c2' style={styles.leftText}>
                 <Text category='c2' style={styles.leftText}>
-                    {orderInfo6}
+                    {orderInfo6}:多放辣椒
                 </Text>
                 </Text>
             </Layout>
             </Layout>
         </Card>
         </Card>

+ 31 - 2
components/UpLoadImage.js

@@ -7,14 +7,18 @@ import { Image, Platform } from "react-native";
 import * as FileSystem from "expo-file-system";
 import * as FileSystem from "expo-file-system";
 
 
 export default function UpLoadImage(props) {
 export default function UpLoadImage(props) {
-    const { connect } = useModel("wordsModel");
+    const { connect, removeTips } = useModel("wordsModel");
     const { httpPost } = useModel("httpModel", true);
     const { httpPost } = useModel("httpModel", true);
+    const { showDialog } = useModel("dialogModel", true);
     const renderPulseIcon = (props) => <Icon {...props} name='plus-outline' />;
     const renderPulseIcon = (props) => <Icon {...props} name='plus-outline' />;
 
 
     return (
     return (
         <>
         <>
             <Button
             <Button
-                style={[props.style]}
+                style={[
+                    props.style,
+                    props.size ? { width: props.size, height: props.size } : {},
+                ]}
                 appearance='imageButton'
                 appearance='imageButton'
                 onPress={() => {
                 onPress={() => {
                     _pickImage().then((img) => {
                     _pickImage().then((img) => {
@@ -42,9 +46,34 @@ export default function UpLoadImage(props) {
                     }
                     }
                 }}
                 }}
             />
             />
+            {props.hasCancel && props.value && (
+                <Button
+                    size='tiny'
+                    status='danger'
+                    accessoryLeft={ForwardIcon}
+                    appearance='imgButton'
+                    style={{
+                        position: "absolute",
+                        right: -5,
+                        top: -5,
+                        borderRadius: 30,
+                    }}
+                    onPress={() => {
+                        showDialog({
+                            bodyText: removeTips,
+                            status: "danger",
+                            cancelable: true,
+                            confirmCallback: () => {
+                                props.delEvent();
+                            },
+                        });
+                    }}
+                />
+            )}
         </>
         </>
     );
     );
 }
 }
+const ForwardIcon = (props) => <Icon {...props} name='minus' fill='#fff' />;
 
 
 const getPermissionAsync = async () => {
 const getPermissionAsync = async () => {
     if (Constants.platform.ios) {
     if (Constants.platform.ios) {

+ 10 - 7
language/zh.js

@@ -15,7 +15,7 @@ export default {
     login_btn_sub: "登录",
     login_btn_sub: "登录",
     login_btn_forget: "忘记密码",
     login_btn_forget: "忘记密码",
     login_btn_rej: "商户注册",
     login_btn_rej: "商户注册",
-    register_form_1: "商家称",
+    register_form_1: "商家称",
     register_pla_1: "输入商家名称",
     register_pla_1: "输入商家名称",
     register_form_2: "显示名称",
     register_form_2: "显示名称",
     register_pla_2: "输入显示名称",
     register_pla_2: "输入显示名称",
@@ -26,9 +26,9 @@ export default {
 
 
     guideHome_title1: "很好!恭喜您已经完成了叮咚合作商家的第一步!",
     guideHome_title1: "很好!恭喜您已经完成了叮咚合作商家的第一步!",
     guideHome_title2: "为了用户更好地认识您,请认真填写!",
     guideHome_title2: "为了用户更好地认识您,请认真填写!",
-    guideHome_form_1: "所属品类",
+    guideHome_form_1: "商家品类",
     guideHome_form_2: "商家地址",
     guideHome_form_2: "商家地址",
-    guideHome_form_3: "商家联系电话",
+    guideHome_form_3: "商家电话",
     guideHome_form_4: "营业时间",
     guideHome_form_4: "营业时间",
     guideHome_form_5: "营业资质",
     guideHome_form_5: "营业资质",
     guideHome_form_6: "商家性质",
     guideHome_form_6: "商家性质",
@@ -88,9 +88,12 @@ export default {
     homeTab2: "评价",
     homeTab2: "评价",
     homeTab3: "商家",
     homeTab3: "商家",
 
 
+    home3Title1: "商家故事",
+    home3Title2: "文字介绍/品牌故事等等,最多500字",
+
     bannerTitle: "banner",
     bannerTitle: "banner",
     logoTitle: "商家头像",
     logoTitle: "商家头像",
-
+    qualificationTitle: "营业资质",
     userTitle1: "基本信息",
     userTitle1: "基本信息",
     userTitle2: "我的优惠",
     userTitle2: "我的优惠",
     userTitle3: "我的商品",
     userTitle3: "我的商品",
@@ -121,8 +124,8 @@ export default {
     orderInfo6: "备注",
     orderInfo6: "备注",
     orderButton1: "拒单",
     orderButton1: "拒单",
     orderButton2: "接单",
     orderButton2: "接单",
-    overTips:"确定要拒单吗?",
-    orderSuceess:"操作成功",
+    overTips: "确定要拒单吗?",
+    orderSuceess: "操作成功",
 
 
     //公共的文字
     //公共的文字
 
 
@@ -167,7 +170,7 @@ export default {
     nothingTips: "暂无数据",
     nothingTips: "暂无数据",
     fullReduction1: "满",
     fullReduction1: "满",
     fullReduction2: "减",
     fullReduction2: "减",
-    loading:'加载中',
+    loading: "加载中",
 
 
     NOT_RECEIVED: "未接单",
     NOT_RECEIVED: "未接单",
     RECEIVED: "已接单",
     RECEIVED: "已接单",

+ 20 - 0
mapping.json

@@ -1019,6 +1019,26 @@
                             }
                             }
                         }
                         }
                     }
                     }
+                },
+                "imgButton": {
+                    "variantGroups": {
+                        "size": {
+                            "tiny": {
+                                "minWidth": 15,
+                                "minHeight": 15,
+                                "borderRadius": "border-radius",
+                                "borderWidth": 0,
+                                "paddingHorizontal": 0,
+                                "paddingVertical": 0,
+                                "textMarginHorizontal": 0,
+                                "textFontSize": 12,
+                                "textFontWeight": "bold",
+                                "iconWidth": 15,
+                                "iconHeight": 15,
+                                "iconMarginHorizontal": 0
+                            }
+                        }
+                    }
                 }
                 }
             }
             }
         },
         },

+ 1 - 0
models/httpModel.js

@@ -77,6 +77,7 @@ export default {
         },
         },
         httpPost(url, body, options, needWarning) {
         httpPost(url, body, options, needWarning) {
             const { getAxiosInstance } = model();
             const { getAxiosInstance } = model();
+            const { warnning } = model("loadingModel");
             options = options || {};
             options = options || {};
             body = body || {};
             body = body || {};
             if (!(body instanceof FormData)) {
             if (!(body instanceof FormData)) {

+ 4 - 1
models/userModel.js

@@ -160,7 +160,8 @@ export default {
                     ...data,
                     ...data,
                     mid: mid,
                     mid: mid,
                 },
                 },
-                { body: "json" }
+                { body: "json" },
+                true
             ).then((res) => {
             ).then((res) => {
                 // success("修改成功");
                 // success("修改成功");
                 if (res) {
                 if (res) {
@@ -172,6 +173,8 @@ export default {
             const { updateMerchant } = model();
             const { updateMerchant } = model();
             if (type == "banner") {
             if (type == "banner") {
                 return updateMerchant({ banner: img });
                 return updateMerchant({ banner: img });
+            } else if (type == "qualification") {
+                return updateMerchant({ qualification: img });
             } else {
             } else {
                 return updateMerchant({ logo: img });
                 return updateMerchant({ logo: img });
             }
             }

+ 1 - 1
navigation/BottomTabNavigator.js

@@ -14,7 +14,7 @@ export default function BottomTabNavigator({ navigation, route }) {
     const theme = useTheme();
     const theme = useTheme();
     const { tab1, tab2, tab3 } = useModel("wordsModel");
     const { tab1, tab2, tab3 } = useModel("wordsModel");
     return (
     return (
-        <BottomTab.Navigator headerMode='none' initialRouteName='Home'>
+        <BottomTab.Navigator headerMode='none' initialRouteName='Order'>
             <BottomTab.Screen
             <BottomTab.Screen
                 name='Home'
                 name='Home'
                 component={HomeScreen}
                 component={HomeScreen}

+ 26 - 5
screens/EditBannerScreen.js

@@ -29,13 +29,16 @@ import UpLoadImage from "../components/UpLoadImage";
 export default function EditBannerScreen({ navigation, route }) {
 export default function EditBannerScreen({ navigation, route }) {
     const theme = useTheme();
     const theme = useTheme();
     const { changeBackground } = useModel("barModel");
     const { changeBackground } = useModel("barModel");
-    const { banner, logo, uploadStoreImg } = useModel("userModel");
+    const { banner, logo, qualification, uploadStoreImg } = useModel(
+        "userModel"
+    );
     const [img, changeImg] = React.useState("");
     const [img, changeImg] = React.useState("");
     const [type, setType] = React.useState("banner");
     const [type, setType] = React.useState("banner");
     const { showDialog } = useModel("dialogModel");
     const { showDialog } = useModel("dialogModel");
     const {
     const {
         bannerTitle,
         bannerTitle,
         logoTitle,
         logoTitle,
+        qualificationTitle,
         remove,
         remove,
         editText,
         editText,
         uplaodText,
         uplaodText,
@@ -54,15 +57,29 @@ export default function EditBannerScreen({ navigation, route }) {
     return (
     return (
         <>
         <>
             <NavHeaderBar
             <NavHeaderBar
-                title={editText + (type == "banner" ? bannerTitle : logoTitle)}
+                title={
+                    editText +
+                    (type == "banner"
+                        ? bannerTitle
+                        : type == "qualification"
+                        ? qualificationTitle
+                        : logoTitle)
+                }
             />
             />
             <ScrollPage>
             <ScrollPage>
                 <Layout style={styles.container}>
                 <Layout style={styles.container}>
                     <Layout style={styles.top}>
                     <Layout style={styles.top}>
                         <Image
                         <Image
-                            source={{ uri: type == "banner" ? banner : logo }}
+                            source={{
+                                uri:
+                                    type == "banner"
+                                        ? banner
+                                        : type == "qualification"
+                                        ? qualification
+                                        : logo,
+                            }}
                             style={[
                             style={[
-                                type == "banner" ? styles.banner : styles.logo,
+                                type == "logo" ? styles.logo : styles.banner,
                             ]}
                             ]}
                         />
                         />
                         <Button
                         <Button
@@ -86,7 +103,11 @@ export default function EditBannerScreen({ navigation, route }) {
                     <Layout style={styles.main}>
                     <Layout style={styles.main}>
                         <Text category='c1'>
                         <Text category='c1'>
                             {uplaodText +
                             {uplaodText +
-                                (type == "banner" ? bannerTitle : logoTitle)}
+                                (type == "banner"
+                                    ? bannerTitle
+                                    : type == "qualification"
+                                    ? qualificationTitle
+                                    : logoTitle)}
                         </Text>
                         </Text>
                         <UpLoadImage
                         <UpLoadImage
                             style={styles.upload}
                             style={styles.upload}

+ 193 - 4
screens/HomeScreenPage3.js

@@ -8,6 +8,8 @@ import {
     List,
     List,
     ListItem,
     ListItem,
     Button,
     Button,
+    Menu,
+    MenuItem,
 } from "@ui-kitten/components";
 } from "@ui-kitten/components";
 import {
 import {
     Image,
     Image,
@@ -22,6 +24,9 @@ import { useFocusEffect } from "@react-navigation/native";
 import { useModel } from "flooks";
 import { useModel } from "flooks";
 import CommentCard from "../components/Comment";
 import CommentCard from "../components/Comment";
 import Badge from "../components/Badge";
 import Badge from "../components/Badge";
+import UpLoadImage from "../components/UpLoadImage";
+import Textarea from "react-native-textarea";
+import * as RootNavigation from "../navigation/RootNavigation.js";
 
 
 const width = Dimensions.get("window").width;
 const width = Dimensions.get("window").width;
 const height = Dimensions.get("window").height;
 const height = Dimensions.get("window").height;
@@ -31,20 +36,169 @@ export default function HomePage3(props) {
     const [commentList, setCommentList] = React.useState([{}, {}, {}]);
     const [commentList, setCommentList] = React.useState([{}, {}, {}]);
     const [selectId, changeSelectId] = React.useState(0);
     const [selectId, changeSelectId] = React.useState(0);
     const { showDialog } = useModel("dialogModel", true);
     const { showDialog } = useModel("dialogModel", true);
+    const [text, changeText] = React.useState("");
+    const { img, updateMerchant, introduction } = useModel("userModel");
+    const { loading, success } = useModel("loadingModel");
 
 
-    const { editText, autoBackText } = useModel("wordsModel");
+    const {
+        editText,
+        autoBackText,
+        home3Title1,
+        home3Title2,
+        confirm,
+        getWordsStr,
+    } = useModel("wordsModel");
 
 
+    const imgList = React.useMemo(() => {
+        let list = img ? img.split(",") : [];
+        list.push("");
+        console.log(list);
+        return [...new Set(list)];
+    }, [img]);
+
+    function changeImg(img, index) {
+        let _imgs = [...imgList];
+        _imgs.splice(index, 1, img);
+        let _img1 = new Set(_imgs);
+        updateMerchant({
+            img: [..._img1].join(","),
+        });
+    }
+
+    function delImg(index) {
+        let _imgs = [...imgList];
+        _imgs.splice(index, 1);
+        let _img1 = new Set(_imgs);
+        updateMerchant({
+            img: [..._img1].join(","),
+        });
+    }
+
+    const showImgList = (list) => {
+        return list.map((item, index) => {
+            return (
+                <Layout key={index} style={styles.upload}>
+                    <UpLoadImage
+                        value={item}
+                        changeIcon={(img) => changeImg(img, index)}
+                        size={67}
+                        hasCancel={true}
+                        delEvent={() => {
+                            delImg(index);
+                        }}
+                    />
+                </Layout>
+            );
+        });
+    };
 
 
     return (
     return (
         <Layout style={styles.tabContainer}>
         <Layout style={styles.tabContainer}>
             <Layout style={styles.top}>
             <Layout style={styles.top}>
-                <Layout style={styles.imgList}>
-                    
+                <Layout style={styles.imgList}>{showImgList(imgList)}</Layout>
+
+                <Layout>
+                    <Text style={styles.text}>{home3Title1}</Text>
+                    <Textarea
+                        containerStyle={styles.textareaContainer}
+                        style={styles.textarea}
+                        onChangeText={changeText}
+                        defaultValue={introduction}
+                        maxLength={500}
+                        placeholder={home3Title2}
+                        placeholderTextColor={"#B4B4B4"}
+                        underlineColorAndroid={"transparent"}
+                    />
+                    <Button
+                        size='small'
+                        style={styles.button}
+                        onPress={() => {
+                            updateMerchant({
+                                introduction: text,
+                            }).then((res) => {
+                                success("成功");
+                            });
+                        }}
+                    >
+                        {confirm}
+                    </Button>
                 </Layout>
                 </Layout>
             </Layout>
             </Layout>
+
+            <Menu style={styles.menu}>
+                <MenuItem
+                    title={getWordsStr("register_form_1")}
+                    accessoryRight={ForwardIcon}
+                    style={styles.menuItem}
+                    onPress={() => {
+                        navigation.navigate("Home", {
+                            screen: "homeTab3",
+                        });
+                    }}
+                />
+                <MenuItem
+                    title={getWordsStr("guideHome_form_1")}
+                    accessoryRight={ForwardIcon}
+                    style={styles.menuItem}
+                    onPress={() => {
+                        navigation.navigate("Home", {
+                            screen: "homeTab3",
+                        });
+                    }}
+                />
+                <MenuItem
+                    title={getWordsStr("guideHome_form_2")}
+                    accessoryRight={ForwardIcon}
+                    style={styles.menuItem}
+                    onPress={() => {
+                        navigation.navigate("Home", {
+                            screen: "homeTab3",
+                        });
+                    }}
+                />
+                <MenuItem
+                    title={getWordsStr("guideHome_form_3")}
+                    accessoryRight={ForwardIcon}
+                    style={styles.menuItem}
+                    onPress={() => {
+                        navigation.navigate("Home", {
+                            screen: "homeTab3",
+                        });
+                    }}
+                />
+                <MenuItem
+                    title={getWordsStr("guideHome_form_4")}
+                    accessoryRight={ForwardIcon}
+                    style={styles.menuItem}
+                    onPress={() => {
+                        navigation.navigate("Home", {
+                            screen: "homeTab3",
+                        });
+                    }}
+                />
+                <MenuItem
+                    title={getWordsStr("guideHome_form_5")}
+                    accessoryRight={ForwardIcon}
+                    style={styles.menuItem}
+                    onPress={() => {
+                        RootNavigation.navigate("EditBanner", {
+                            type: "qualification",
+                        })
+                    }}
+                />
+            </Menu>
         </Layout>
         </Layout>
     );
     );
 }
 }
+
+const ForwardIcon = (props) => (
+    <Icon
+        {...props}
+        name='arrow-ios-forward'
+        fill='#B4B4B4'
+        style={{ width: 15, height: 15, fontWeight: 500 }}
+    />
+);
 const classificationItem = ({ item, index }) => <CommentCard />;
 const classificationItem = ({ item, index }) => <CommentCard />;
 const StarIcon = (props) => <Icon {...props} name='plus-outline' />;
 const StarIcon = (props) => <Icon {...props} name='plus-outline' />;
 
 
@@ -59,9 +213,44 @@ const styles = StyleSheet.create({
     },
     },
     top: {
     top: {
         paddingVertical: 20,
         paddingVertical: 20,
-        paddingVertical: 13,
+        paddingHorizontal: 13,
     },
     },
     imgList: {
     imgList: {
         flexDirection: "row",
         flexDirection: "row",
     },
     },
+    upload: {
+        marginRight: 10,
+        width: 67,
+        width: 67,
+        flexShrink: 0,
+    },
+    textareaContainer: {
+        backgroundColor: "#F0F0F0",
+        height: 100,
+        alignSelf: "stretch",
+        borderRadius: 4,
+    },
+    textarea: {
+        textAlignVertical: "top", // hack android
+        fontSize: 13,
+        color: "#333",
+        paddingHorizontal: 14,
+        paddingVertical: 10,
+        height: 100,
+    },
+    text: {
+        paddingVertical: 10,
+    },
+    button: {
+        alignSelf: "flex-end",
+        marginTop: 10,
+        marginRight: 14,
+    },
+    menu: {
+        borderColor: "#EEEEEE",
+        borderTopWidth: 6,
+        backgroundColor: "#fff",
+        paddingHorizontal: 15,
+    },
+    menuItem: {},
 });
 });