panhui 5 лет назад
Родитель
Сommit
ca85eeb0f9
3 измененных файлов с 143 добавлено и 3 удалено
  1. 0 2
      models/userModel.js
  2. 142 0
      screens/Comment.jsx
  3. 1 1
      screens/HomeScreen.js

+ 0 - 2
models/userModel.js

@@ -150,8 +150,6 @@ export default {
       const { success } = model("loadingModel");
       const { httpPost, addAsyncStorage } = model("httpModel");
       const { saveVeriFied, registerVerifiedInfo } = model("verifiedModel");
-      console.log(data);
-      return;
       httpPost("/auth/merchantRegister", data, {}, true)
         .then(res => {
           return addAsyncStorage("token", res);

+ 142 - 0
screens/Comment.jsx

@@ -0,0 +1,142 @@
+import * as WebBrowser from "expo-web-browser";
+import * as React from "react";
+import { Div, Image, Text, Icon, Tag } from "react-native-magnus";
+import { useRequest } from "@umijs/hooks";
+import { useModel } from "flooks";
+
+const AppraisalSortMap = new Map([
+  [
+    "ALL",
+    {
+      name: "全部",
+    },
+  ],
+  [
+    "LATEST",
+    {
+      name: "最新",
+    },
+  ],
+  [
+    "PRAISE",
+    {
+      name: "好评",
+    },
+  ],
+  [
+    "BAD_REVIEW",
+    {
+      name: "差评",
+      isBad: true,
+    },
+  ],
+  [
+    "HAVE_PIC",
+    {
+      name: "有图",
+    },
+  ],
+]);
+const CommentItem = ({ info }) => {
+  const imgs = info.img ? info.img.split(",") : [];
+
+  const imageSize = imgs.length > 1 ? 80 : 167;
+  return (
+    <Div row py={10} px={15} bg="white" mt={10}>
+      <Image source={{ uri: info.avatar }} w={33} h={33} />
+      <Div flex={1} ml={5}>
+        <Div row>
+          <Div flex={1}>
+            <Text fontSize="sm" textAlign="left">
+              {info.nickname}
+            </Text>
+            <Div row>
+              <Icon name="like1" color="yellow500" />
+              <Text fontSize="sm" color="yellow500" textAlign="left">
+                {info.likes || 0}
+              </Text>
+            </Div>
+          </Div>
+          <Text fontSize="sm" color="gray400" textAlign="left">
+            {info.appraiseTime}
+          </Text>
+        </Div>
+        <Text my={5} textAlign="left">
+          {info.goodsAppraise}
+        </Text>
+        <Div row>
+          {imgs.map((item, index) => {
+            return (
+              <Image
+                key={index}
+                mt={5}
+                mr={5}
+                source={{ uri: item }}
+                w={imageSize}
+                h={imageSize}
+                rounded={3}
+              />
+            );
+          })}
+        </Div>
+      </Div>
+    </Div>
+  );
+};
+
+export default function Comment() {
+  const { mid } = useModel("userModel");
+  const { httpGet } = useModel("httpModel");
+  const [comments, setcomments] = React.useState([]);
+
+  const [appraisalSort, setappraisalSort] = React.useState("ALL");
+  useRequest(
+    () => {
+      return httpGet(
+        `/appraisal/my?merchantId=${mid}&appraisalSort=${appraisalSort}`
+      );
+    },
+    {
+      refreshDeps: [mid, appraisalSort],
+      onSuccess: result => {
+        setcomments(result);
+      },
+    }
+  );
+
+  return (
+    <Div flex={1} bg="gray100">
+      <Div row p={15}>
+        {[...AppraisalSortMap.keys()].map(item => {
+          const info = AppraisalSortMap.get(item);
+          const isChoose = appraisalSort === item;
+          return (
+            <Tag
+              key={item}
+              bg={isChoose ? "yellow500" : info.isBad ? "gray200" : "yellow100"}
+              color={isChoose ? "white" : info.isBad ? "gray500" : "yellow500"}
+              fontSize="sm"
+              mr={5}
+              mb={5}
+              onPress={() => setappraisalSort(item)}
+            >
+              {info.name}
+            </Tag>
+          );
+        })}
+      </Div>
+
+      {comments.map(item => {
+        return <CommentItem info={item} key={item.goodsAppraise} />;
+      })}
+
+      {comments.length === 0 && (
+        <Div px={10} py={20}>
+          <Text color="gray300" textAlign="center">
+            暂无数据
+          </Text>
+        </Div>
+      )}
+    </Div>
+  );
+}

+ 1 - 1
screens/HomeScreen.js

@@ -25,7 +25,7 @@ import { createMaterialTopTabNavigator } from "@react-navigation/material-top-ta
 import { useFocusEffect } from "@react-navigation/native";
 import Badge from "../components/Badge";
 import HomePage1 from "./HomeScreenPage1";
-import HomePage2 from "./HomeScreenPage2";
+import HomePage2 from "./Comment";
 import HomePage3 from "./HomeScreenPage3";
 import * as RootNavigation from "../navigation/RootNavigation";