panhui 5 лет назад
Родитель
Сommit
6c775270cd
9 измененных файлов с 154 добавлено и 238 удалено
  1. 5 3
      App.js
  2. 24 9
      components/HomeHeader.js
  3. 11 5
      flooks/User.js
  4. 16 6
      flooks/Words.js
  5. 3 2
      hooks/useCachedResources.js
  6. 0 1
      language/index.js
  7. 87 29
      language/th.js
  8. 2 177
      language/zh.js
  9. 6 6
      screens/Home/HomeScreen.jsx

+ 5 - 3
App.js

@@ -25,9 +25,11 @@ const Stack = createStackNavigator()
 
 export default function App() {
   const isLoadingComplete = useCachedResources()
-  const { wordsInit } = useModel(words, ['local'])
-  // Load words
-  wordsInit()
+  const { wordsInit, local } = useModel(words, ['local'])
+  // Load words  local语言转变,切换语言
+  React.useEffect(() => {
+    wordsInit()
+  }, [local])
   const { id } = useModel(user, ['id'])
   useUpdateEffect(() => {
     let initName = ''

+ 24 - 9
components/HomeHeader.js

@@ -3,29 +3,44 @@ import { StatusBar, Platform } from 'react-native'
 import Constants from 'expo-constants'
 import { Appbar, Menu, Divider } from 'react-native-paper'
 import { useBoolean } from '@umijs/hooks'
+import useModel from 'flooks'
+import words from '../flooks/Words'
+import user from '../flooks/User'
 
 export default function Header() {
-  const { state, toggle } = useBoolean(false)
+  const { state, setTrue, setFalse } = useBoolean(false)
+  const {
+    setlocal,
+    TlocationWord,
+    TchangeToth,
+    TchangeToChinese,
+    local,
+  } = useModel(words)
+  const { logout } = useModel(user, [])
 
   return (
     <>
       {Platform.OS !== 'ios' && <StatusBar backgroundColor="#fff" />}
 
       <Appbar.Header
+        theme={{ colors: { primary: '#fff' } }}
         statusBarHeight={Platform.OS === 'ios' ? Constants.statusBarHeight : 0}
-        color="#fff"
       >
-        <Appbar.Content title="同进大厦" titleStyle={{ fontSize: 16 }} />
+        <Appbar.Content title={TlocationWord} titleStyle={{ fontSize: 16 }} />
 
         <Menu
           visible={state}
-          onDismiss={toggle}
-          anchor={<Appbar.Action icon="dots-vertical" />}
+          onDismiss={setFalse}
+          anchor={<Appbar.Action icon="dots-vertical" onPress={setTrue} />}
         >
-          <Menu.Item onPress={() => {}} title="Item 1" />
-          <Menu.Item onPress={() => {}} title="Item 2" />
-          <Divider />
-          <Menu.Item onPress={() => {}} title="Item 3" />
+          <Menu.Item onPress={logout} title="退出登录" />
+          <Menu.Item
+            onPress={() => {
+              setlocal()
+            }}
+            title={local ? TchangeToChinese : TchangeToth}
+          />
+          <Menu.Item onPress={() => {}} title="版本06.04.0.1" />
         </Menu>
       </Appbar.Header>
     </>

+ 11 - 5
flooks/User.js

@@ -1,5 +1,5 @@
 import request from '../Utils/RequestUtils'
-import { addAsyncStorage } from '../Utils/AsyncStorageUtils'
+import { addAsyncStorage, removeAsyncStorage } from '../Utils/AsyncStorageUtils'
 import submitPhone from '../Utils/FormUtils'
 import Toast from './Toast'
 
@@ -10,12 +10,10 @@ const app = (now) => ({
     return request
       .get('/user/my')
       .then((res) => {
-        console.log(res)
         now({
           id: res.id,
           userInfo: res,
         })
-        return Promise.resolve()
       })
       .catch((e) => {
         now({
@@ -43,14 +41,22 @@ const app = (now) => ({
         return getUser()
       })
       .then(() => {
-        const { id } = now()
-        console.log(id)
         success('登录成功')
       })
       .catch((e) => {
         warnning(e.error)
       })
   },
+  logout() {
+    const { loading, success } = now(Toast)
+    loading()
+    // 移除 token
+    return removeAsyncStorage('token').then(() => {
+      // 清除用户信息
+      now({ id: 0, userInfo: {} })
+      success('退出成功')
+    })
+  },
 })
 
 export default app

+ 16 - 6
flooks/Words.js

@@ -1,20 +1,30 @@
+import * as Localization from 'expo-localization'
 import { i18n, keys } from '../language'
+import Toast from './Toast'
 
 const wordsModel = (now) => ({
   local: '',
   wordsInit() {
     const { local } = now()
     if (local) {
-      i18n.local = local
+      i18n.locale = local
+    } else {
+      i18n.locale = Localization.locale
     }
-    const words = {}
+    const wordsInfo = {}
     keys.forEach((item) => {
-      words[`T${item}`] = i18n.t(item)
+      wordsInfo[`T${item}`] = i18n.t(item)
     })
-    now({ ...words })
+    now({ ...wordsInfo })
+
+    const { clearLoading } = now(Toast)
+    clearLoading()
   },
-  setlocal(local) {
-    now({ local })
+  setlocal(newLocal) {
+    const { loading } = now(Toast)
+    loading()
+    const { local } = now()
+    now({ local: newLocal || (local ? '' : 'th') })
   },
 })
 

+ 3 - 2
hooks/useCachedResources.js

@@ -4,6 +4,7 @@ import useModel from 'flooks'
 import * as Font from 'expo-font'
 import * as SplashScreen from 'expo-splash-screen'
 import * as React from 'react'
+import Toast from '../flooks/Toast'
 
 export default function useCachedResources() {
   const [isLoadingComplete, setLoadingComplete] = React.useState(false)
@@ -13,8 +14,8 @@ export default function useCachedResources() {
     async function loadResourcesAndDataAsync() {
       try {
         SplashScreen.preventAutoHideAsync()
-
-
+        // 初始化 Toast
+        useModel(Toast, [])
         // Load fonts
 
         await Font.loadAsync(

+ 0 - 1
language/index.js

@@ -9,7 +9,6 @@ i18n.translations = {
   th,
   zh,
 }
-i18n.locale = Localization.locale
 i18n.fallbacks = true
 
 const keys = Object.keys(zh)

+ 87 - 29
language/th.js

@@ -1,38 +1,96 @@
 export default {
   // 页面的文字
-
-  welcom: '欢迎使用叮咚外卖平台[泰文]',
-  login_form_1: '手机号',
-  login_pla_1: '输入商家手机号',
-  login_form_2: '密码',
-  login_pla_2: '输入密码',
-  login_btn_sub: '登录',
-  login_btn_rej: '注册',
-  register_form_1: '换成泰文换成泰文',
-  register_pla_1: '换成泰文换成泰文',
-  register_form_2: '换成泰文换成泰文',
-  register_pla_2: '换成泰文换成泰文',
-  register_form_3: '换成泰文换成泰文',
-  register_pla_3: '再次输入确认密码',
-
-  guideHome_title1: '很好!恭喜您已经完成了叮咚合作商家的第一步!',
-  guideHome_title2: '为了用户更好地认识您,请认真填写!',
-  guideHome_form_1: '所属品类',
-  guideHome_form_2: '商家地址',
-  guideHome_form_3: '商家联系电话',
-  guideHome_form_4: '营业时间',
-  guideHome_form_5: '营业资质',
-  guideHome_form_6: '商家性质',
-  guideHome_form_7: '上传logo',
-  guideHome_pla_1: '输入您的电话号码',
-  guideHome_pla_2: '(可后面再填)',
-  guideHome_pla_3: '(一旦选择不可更改)',
+  locationWord: '~~当~前~定~位',
 
   // 公共的文字
 
-  changeToEnglish: '切换到泰文',
-  changeToChinese: '切换到中文',
+  saveSuccess: '保存成功',
+  editSuccess: '修改成功',
+  yuan: '元',
+  changeToth: '~~切~换~到~泰~文',
+  changeToChinese: '切~换~到~中~文',
   appName: '叮咚外卖',
   connect: '联系客服',
   next: '下一步',
+  pass: '跳过',
+  cancel: '取消',
+  save: '保存',
+  confirm: '确认',
+  MONDAY: '周一',
+  TUESDAY: '周二',
+  WEDNESDAY: '周三',
+  THURSDAY: '周四',
+  FRIDAY: '周五',
+  SATURDAY: '周六',
+  SUNDAY: '周日',
+  every: '每天',
+  start: '开始时间',
+  end: '结束时间',
+  hour: '时',
+  min: '分',
+  minutes: '分钟',
+  weekName: '周期',
+  tip: '提示',
+  passTips: '确认要跳过吗?',
+  add: '添加',
+  remove: '移除',
+  complete: '完成',
+  tab1: '店面',
+  tab2: '订单',
+  tab3: '我的',
+  editText: '编辑',
+  uplaodText: '上传',
+  uplaodImg: '上传图片',
+  removeTips: '确定要移除吗?移除后不可恢复',
+  takeOffTips: '确定要下架该商品吗?',
+  autoBackText: '自动回复',
+  editAutoBack: '编辑自动回复',
+  storeBackInfo: '商家回复',
+  delText: '删除',
+  successText: '成功',
+  addClassTips: '当前已经有两个推荐商品,请先移除后添加。',
+  nothingTips: '暂无数据',
+  fullReduction1: '满',
+  fullReduction2: '减',
+  loading: '加载中',
+  sendCode: '发送验证码',
+  applySuccess: '申请成功',
+  rechargeTime: '预计到账时间',
+  rechargeTitle2: '银行卡',
+  rechargeTitle3: '提现金额',
+
+  // 订单状态
+  NOT_RECEIVED: '未接单',
+  RECEIVED: '已接单',
+  REJECTED: '退单',
+  COMPLETED: '已完成',
+  UNPAID: '未支付',
+  PAID: '已支付',
+  RATED: '待评价',
+  CANCELLED: '已取消',
+  REFUNDED_PENDING: '申请退款中',
+  REFUNDED: '已退款',
+  ALI_PAY: '支付宝',
+  CASH_DELIVERY: '货到付款',
+  CREDIT_CARD: '信用卡',
+  Re_RECEIVED: '待取餐',
+  TAKE_MEAL: '已到店',
+  MEAL_DELIVERY: '正在配送中',
+  CARRY_OUT: '送达',
+
+  // 账单状态
+  BUY: '购买',
+  INCOME: '收入',
+  REFUND: '退款',
+  WITHDRAW: '提现',
+
+  // 提现状态
+  Apply_SUCCESS: '提现成功',
+  Apply_PENDING: '提现处理中',
+  Apply_FAIL: '提现失败',
+
+  // myRecord
+  selectTiltle1: '全部账单',
+  selectTiltle2: '收入账单',
+  selectTiltle3: '提现账单',
 }

+ 2 - 177
language/zh.js

@@ -1,188 +1,13 @@
 export default {
   // 页面的文字
+  locationWord: '当前定位',
 
-  welcom: '欢迎使用叮咚外卖平台',
-  login_form_1: '手机号',
-  login_pla_1: '输入商家手机号',
-  login_form_2: '密码',
-  login_pla_2: '输入密码',
-  login_form_3: '验证码',
-  login_pla_3: '输入验证码',
-  login_tab_1: '密码登录',
-  login_tab_2: '验证码登陆',
-  login_btn_code_1: '发送验证码',
-  login_btn_code_2: '已发送',
-  login_btn_sub: '登录',
-  login_btn_forget: '忘记密码',
-  login_btn_rej: '商户注册',
-  register_form_1: '商家名称',
-  register_pla_1: '输入商家名称',
-  register_form_2: '显示名称',
-  register_pla_2: '输入显示名称',
-  register_form_3: '确认密码',
-  register_pla_3: '再次输入确认密码',
-  register_form_4: '手机号',
-  register_pla_4: '输入手机号',
-
-  guideHome_title1: '很好!恭喜您已经完成了叮咚合作商家的第一步!',
-  guideHome_title2: '为了用户更好地认识您,请认真填写!',
-  guideHome_form_1: '商家品类',
-  guideHome_form_2: '商家地址',
-  guideHome_form_3: '商家电话',
-  guideHome_form_4: '营业时间',
-  guideHome_form_5: '营业资质',
-  guideHome_form_6: '商家性质',
-  guideHome_form_7: '上传logo',
-  guideHome_pla_1: '输入您的电话号码',
-  guideHome_pla_2: '(可后面再填)',
-  guideHome_pla_3: '(一旦选择不可更改)',
-  guide1_title1: '太好了!您已经在叮咚的外卖版图上站有一席之地了!',
-  guide1_form_1: '商品名称',
-  guide1_pla_1: '输入商品名称',
-  guide1_form_2: '商品价格',
-  guide1_pla_2: '输入商品价格',
-  guide1_form_3: '优惠价格',
-  guide1_pla_3: '输入优惠价格',
-  guide1_form_4: '每日供应数量',
-  guide1_pla_4: '输入每日供应数量',
-  guide1_form_5: '供应时间',
-  guide1_pla_5: '添加商品简介(不超过50字)',
-  guide2_title1: 'woo!您的商品看上去就会很畅销!您可以再软件内添加更多的商品。',
-  guide2_title2:
-    'woo!为了用户更好地认识您,请为这些商品建立分类。分类将在商品的左侧栏!',
-  guide2_form_1: '类别名称',
-  guide2_pla_1: '输入类别名称',
-  guide2_pla_2: '比如单人套餐、前菜、主食等等',
-  guide2_form_2: '显示排序',
-  guide2_form_3: '包含商品',
-  guide3_title1: 'woo!太好了!您已经在叮咚的外卖版图上站有一席之地了!',
-  guide3_title2: '为了用户更好地认识您,请认真填写!',
-  guide3_form_1: '支付宝账号',
-  guide3_pla_1: '输入支付宝账号',
-  guide3_form_2: '支付宝账户名',
-  guide3_pla_2: '输入支付宝账账户名',
-  guide4_title1: '完美!您已经完成了本向导!',
-  guide4_title2: '完整的信息您可以在后续陆续添加。祝您轻松赚钱,开心生活',
-
-  goodsClassificationTitle1: '分类下的商品',
-  goodsClassificationTitle2: '已选择的商品',
-  goodsClassificationTitle3: '未选择的商品',
-  systemClassification1:
-    '该分类为系统预制分类,主要用于提醒用户相关的信息,您可以放餐具以及点单必读等信息。',
-  systemClassification2:
-    '如果您没有放置点单必读商品,系统将不显示该分类。所以,如果暂时没有符合标准的产品,也建议您打开。',
-  systemClassification3:
-    '该分类为系统预制分类,自动罗列了商户中的畅销产品和好评度高的产品,系统会根据销售和评价动态更新。',
-  systemClassification4: '所以,如果暂时没有符合标准的产品,也建议您打开。',
-  systemClassification5:
-    '该分类为系统预制分类,自动罗列了已设置的折扣商品,如果没有折扣商品,系统将不显示该分类。',
-  systemClassification6: '您可以在“我的”->“我的优惠活动”中配置折扣商品。',
-  systemClassTips1: '确定要关闭该系统分类吗?',
-
-  storeAudio: '审核店铺',
-  storeAudioText1: '您的店铺正在审核中',
-  storeAudioText2: '请耐心等待...',
-  storeAudioText3: '恭喜!!!',
-  storeAudioText4: '您的店铺审核成功!',
-  addGoods: '编辑(新增)商品',
-  addGoods2: '新增商品',
-  takeOff: '下架',
-  takeUp: '上架',
-
-  homeBar: '我的店面',
-  homeTip1: '添加banner',
-  homeTitle1: '店主推荐',
-  homeTitle2: '编辑分类',
-  homeTip2: '月售',
-  homeTip3: '公告',
-  homeTitle3: '公告编辑',
-  homeTab1: '点餐',
-  homeTab2: '评价',
-  homeTab3: '商家',
-
-  home3Title1: '商家故事',
-  home3Title2: '文字介绍/品牌故事等等,最多500字',
-
-  bannerTitle: 'banner',
-  logoTitle: '商家头像',
-  qualificationTitle: '营业资质',
-  userTitle1: '基本信息',
-  userTitle2: '我的优惠',
-  userTitle3: '我的商品',
-  userTitle4: '订单',
-  userTitle5: '评价',
-  userTitle6: '我的叮咚币',
-  userTitle21: '满减',
-  userTitle22: '折扣商品',
-  userTitle23: '首单',
-  userTitle24: '优惠券管理',
-  userTitle31: '编辑商品',
-  userTitle32: '商品分类',
-  userTitle33: '招牌商品',
-  userTitle34: '我的推荐位',
-  userTitle41: '自动接单、订单语音设置',
-  userTitle42: '我的对账单',
-  userTitle61: '账单查询',
-  userTitle62: '我的银行卡',
-
-  orderTitleBtn1: '手动接单',
-  orderTitleBtn2: '编辑语音',
-
-  orderInfo1: '流水号',
-  orderInfo2: '订单时间',
-  orderInfo3: '联系客户',
-  orderInfo4: '详细地址',
-  orderInfo5: '订单商品',
-  orderInfo6: '备注',
-  orderButton1: '拒单',
-  orderButton2: '接单',
-  overTips: '确定要拒单吗?',
-  orderSuceess: '操作成功',
-
-  // 银行卡
-  bankMainTitle: '选择银行卡',
-  bindBankText1: '绑定银行卡',
-  bankTitle1: '银行',
-  bankTitle2: '卡号',
-  bankTitle3: '姓名',
-  bankTitle4: '身份证号',
-  bankPla1: '输入银行名称',
-  bankPla2: '输入银行卡号',
-  bankPla3: '输入银行名称',
-  bankPla4: '输入银行名称',
-  bankTitle5: '同意《叮咚外卖快捷支付服务协议》',
-  rechargeBtnText: '预计两小时内到账,确认提现',
-  // 设置
-
-  automaticText1: '自动评价回复',
-  automaticText2: '好评自动评价回复',
-  automaticText3: '差评自动评价回复',
-  automaticText4: '添加回复(不超过100字)',
-
-  distributionTitle: '配送设置',
-  distributionText1: '起送金额',
-  distributionText2: '每餐平均准备时间',
-  distributionText3: '输入金额',
-  distributionText4: '输入时间',
-  distributionText5: '温馨提示',
-  distributionText6:
-    '起送金额为店铺外送起送金额,每餐平均准备时间用于计算商品配送时间,请根据店铺实际餐品准备情况设置。',
-
-  // 我的分类
-  ClassificationManage: '我的分类',
-  ClassificationManageText1: '合理的设置分类具有如下好处',
-  ClassificationManageText2: '(1)可以让用户快速找到适合的商品',
-  ClassificationManageText3:
-    '(2)可以让用户知道商家对于某一样商品的看法和态度',
-  ClassificationManageText4: '同一种商品可以置于不同的分类下。',
-  ClassificationManageText5: '当前有的分类',
-  ClassificationManageText6: '该分类包含了以下商品',
   // 公共的文字
 
   saveSuccess: '保存成功',
   editSuccess: '修改成功',
   yuan: '元',
-  changeToEnglish: '切换到泰文',
+  changeToth: '切换到泰文',
   changeToChinese: '切换到中文',
   appName: '叮咚外卖',
   connect: '联系客服',

+ 6 - 6
screens/Home/HomeScreen.jsx

@@ -2,16 +2,16 @@ import * as WebBrowser from 'expo-web-browser'
 import * as React from 'react'
 import { Platform, StyleSheet } from 'react-native'
 import { ScrollView } from 'react-native-gesture-handler'
+import { Button, Paragraph, Menu, Divider, Provider } from 'react-native-paper'
 import Header from '../../components/HomeHeader'
 
 export default function HomeScreen() {
   return (
-    <ScrollView
-      style={styles.container}
-      contentContainerStyle={styles.contentContainer}
-    >
-      <Header />
-    </ScrollView>
+    <Provider>
+      <ScrollView style={styles.container}>
+        <Header />
+      </ScrollView>
+    </Provider>
   )
 }