[baozhangchao] 3 年前
父节点
当前提交
9107b26f27

+ 2
- 0
src/app.config.js 查看文件

@@ -7,6 +7,8 @@ export default {
7 7
     'pages/setDogLicense/index',
8 8
     'pages/dogLicenseList/index',
9 9
     'pages/LicenseInfo/index',
10
+    'pages/dogList/index',
11
+    'pages/setDogInfo/index',
10 12
   ],
11 13
   window: {
12 14
     backgroundTextStyle: 'light',

+ 16
- 38
src/pages/dogLicenseList/index.jsx 查看文件

@@ -1,8 +1,18 @@
1 1
 import { View, ScrollView, Image } from '@tarojs/components'
2
-import Taro from '@tarojs/taro';
2
+import Taro, { useDidShow } from '@tarojs/taro';
3
+import { useState } from 'react';
4
+import { getDogCardList } from '../../services/dogAPI';
3 5
 import './style.less'
4 6
 
5 7
 export default (props) => {
8
+  const [dogCardList, setDogCardList] = useState([])
9
+
10
+  useDidShow(() => {
11
+    getDogCardList().then((e) => {
12
+      setDogCardList(e.records)
13
+
14
+    })
15
+  })
6 16
 
7 17
   const goDogList = () => {
8 18
     console.log('e',);
@@ -12,49 +22,18 @@ export default (props) => {
12 22
       url: '/pages/LicenseInfo/index'
13 23
     })
14 24
   }
15
-  const List = [
16
-    {
17
-      img: 'https://tse1-mm.cn.bing.net/th/id/R-C.20cb4bf5b22ca1b67f69ea29fb2af8fc?rik=XCvrM0gKEAHIVA&riu=http%3a%2f%2fnews.hainan.net%2fEditor%2fimg%2f201410%2f20141023%2fbig%2f2014102320332887_4718693.jpg&ehk=GnaUVphTAgEeLq%2b2rPn8qJnONF3aIPUKuw%2bVaECvyZo%3d&risl=&pid=ImgRaw&r=0',
18
-      dogNmae: '王小狗',
19
-      dogNum: 202221588650021,
20
-    },
21
-    {
22
-      img: 'https://tse1-mm.cn.bing.net/th/id/R-C.20cb4bf5b22ca1b67f69ea29fb2af8fc?rik=XCvrM0gKEAHIVA&riu=http%3a%2f%2fnews.hainan.net%2fEditor%2fimg%2f201410%2f20141023%2fbig%2f2014102320332887_4718693.jpg&ehk=GnaUVphTAgEeLq%2b2rPn8qJnONF3aIPUKuw%2bVaECvyZo%3d&risl=&pid=ImgRaw&r=0',
23
-      dogNmae: '王小狗',
24
-      dogNum: 202221588650021,
25
-    }, {
26
-      img: 'https://tse1-mm.cn.bing.net/th/id/R-C.20cb4bf5b22ca1b67f69ea29fb2af8fc?rik=XCvrM0gKEAHIVA&riu=http%3a%2f%2fnews.hainan.net%2fEditor%2fimg%2f201410%2f20141023%2fbig%2f2014102320332887_4718693.jpg&ehk=GnaUVphTAgEeLq%2b2rPn8qJnONF3aIPUKuw%2bVaECvyZo%3d&risl=&pid=ImgRaw&r=0',
27
-      dogNmae: '王小狗',
28
-      dogNum: 202221588650021,
29
-    }, {
30
-      img: 'https://tse1-mm.cn.bing.net/th/id/R-C.20cb4bf5b22ca1b67f69ea29fb2af8fc?rik=XCvrM0gKEAHIVA&riu=http%3a%2f%2fnews.hainan.net%2fEditor%2fimg%2f201410%2f20141023%2fbig%2f2014102320332887_4718693.jpg&ehk=GnaUVphTAgEeLq%2b2rPn8qJnONF3aIPUKuw%2bVaECvyZo%3d&risl=&pid=ImgRaw&r=0',
31
-      dogNmae: '王小狗',
32
-      dogNum: 202221588650021,
33
-    }, {
34
-      img: 'https://tse1-mm.cn.bing.net/th/id/R-C.20cb4bf5b22ca1b67f69ea29fb2af8fc?rik=XCvrM0gKEAHIVA&riu=http%3a%2f%2fnews.hainan.net%2fEditor%2fimg%2f201410%2f20141023%2fbig%2f2014102320332887_4718693.jpg&ehk=GnaUVphTAgEeLq%2b2rPn8qJnONF3aIPUKuw%2bVaECvyZo%3d&risl=&pid=ImgRaw&r=0',
35
-      dogNmae: '王小狗',
36
-      dogNum: 202221588650021,
37
-    }, {
38
-      img: 'https://tse1-mm.cn.bing.net/th/id/R-C.20cb4bf5b22ca1b67f69ea29fb2af8fc?rik=XCvrM0gKEAHIVA&riu=http%3a%2f%2fnews.hainan.net%2fEditor%2fimg%2f201410%2f20141023%2fbig%2f2014102320332887_4718693.jpg&ehk=GnaUVphTAgEeLq%2b2rPn8qJnONF3aIPUKuw%2bVaECvyZo%3d&risl=&pid=ImgRaw&r=0',
39
-      dogNmae: '王小狗',
40
-      dogNum: 202221588650021,
41
-    }, {
42
-      img: 'https://tse1-mm.cn.bing.net/th/id/R-C.20cb4bf5b22ca1b67f69ea29fb2af8fc?rik=XCvrM0gKEAHIVA&riu=http%3a%2f%2fnews.hainan.net%2fEditor%2fimg%2f201410%2f20141023%2fbig%2f2014102320332887_4718693.jpg&ehk=GnaUVphTAgEeLq%2b2rPn8qJnONF3aIPUKuw%2bVaECvyZo%3d&risl=&pid=ImgRaw&r=0',
43
-      dogNmae: '王小狗',
44
-      dogNum: 202221588650021,
45
-    },
46
-  ]
25
+
47 26
   const widgetView = (value) => {
48 27
     return (
49 28
       <View className='user-box-DogListCard' onClick={goLicenseInfo}>
50 29
         <View className='user-box-DogListCard-DogImage'>
51 30
           {/* <ViewIcon icon='morentouxiang' size={50} color='#FBD804' /> */}
52
-          <Image src={value.img} />
31
+          <Image src={value.petImg1} />
53 32
         </View>
54 33
 
55 34
         <View className='user-box-DogListCard-DogImage'>
56
-          <View>姓名:{value.dogNmae}</View>
57
-          <View>证件号:{value.dogNum}</View>
35
+          <View>姓名:{value.petName}</View>
36
+          <View>证件号:{value.cardNo}</View>
58 37
         </View>
59 38
         <View className='user-box-DogListCard-right' >
60 39
           <View style={{ paddingRight: '5px' }}>
@@ -69,10 +48,9 @@ export default (props) => {
69 48
   return (
70 49
     <ScrollView scrollY style={{ height: '100vh' }}>
71 50
       {
72
-        List.map((item, index) => {
51
+        dogCardList.map((item, index) => {
73 52
           return (
74 53
             widgetView(item)
75
-
76 54
           )
77 55
         })
78 56
       }

+ 11
- 0
src/pages/dogList/index.config.js 查看文件

@@ -0,0 +1,11 @@
1
+export default {
2
+  navigationBarTitleText: '我的狗狗',
3
+  disableScroll: true,
4
+  navigationBarBackgroundColor: "#FBD804",
5
+  navigationBarTextStyle: "black",
6
+  backgroundColor: "#FBD804",
7
+  usingComponents: {
8
+
9
+  }
10
+
11
+}

+ 70
- 0
src/pages/dogList/index.jsx 查看文件

@@ -0,0 +1,70 @@
1
+import { View, ScrollView, Image, Button } from '@tarojs/components'
2
+import Taro, { useDidShow } from '@tarojs/taro';
3
+import ViewIcon from '../../components/ViewIcon';
4
+import { useEffect, useState } from 'react';
5
+import './style.less'
6
+import { addDogList } from '../../services/dogAPI';
7
+import { useModel } from '../../store';
8
+
9
+export default (props) => {
10
+  const { dogs, person, setDogs } = useModel('userData')
11
+  const [dogList, setDogList] = useState([])
12
+
13
+  const goDogList = () => {
14
+    console.log('e',);
15
+  }
16
+  const goLicenseInfo = (id) => {
17
+    Taro.navigateTo({
18
+      url: `/pages/setDogInfo/index?petId=${id}`
19
+    })
20
+  }
21
+  useDidShow(() => {
22
+    addDogList().then((e) => {
23
+      setDogList(e.records)
24
+      setDogs(e.records)
25
+
26
+    })
27
+  })
28
+
29
+
30
+
31
+  const widgetView = (value) => {
32
+    return (
33
+      <View className='user-box-addDog' onClick={() => goLicenseInfo(value.petId)}>
34
+        <View className='user-box-addDog-DogImage'>
35
+          {/* <ViewIcon icon='morentouxiang' size={50} color='#FBD804' /> */}
36
+          <Image src={value.image} />
37
+        </View>
38
+
39
+        <View className='user-box-addDog-DogImage'>
40
+          <View>姓名:{value.name}</View>
41
+          <View>犬种:{value.petType}</View>
42
+        </View>
43
+        <View className='user-box-addDog-rightDog' >
44
+          <View style={{ paddingRight: '5px' }}>
45
+            <ViewIcon icon='bianji' size={17} color='#2f2f2f' />
46
+          </View>
47
+          修改狗狗
48
+        </View>
49
+      </View>
50
+    )
51
+  }
52
+
53
+  return (
54
+    <ScrollView scrollY style={{ height: '100vh' }}>
55
+      {
56
+        dogList.map((item, index) => {
57
+          return (
58
+            widgetView(item)
59
+
60
+          )
61
+        })
62
+      }
63
+
64
+      <View slot='button' style={{ margin: '4em 0 2em 0' }} onClick={goLicenseInfo}>
65
+        <Button style={{ width: '50vw', backgroundColor: '#fbd804', borderRadius: '40px', color: '#000', border: '0px' }} class='weui-btn' type='primary' loading={false} formType='submit'>+ 添加狗狗</Button>
66
+      </View>
67
+    </ScrollView>
68
+  )
69
+}
70
+

+ 35
- 0
src/pages/dogList/style.less 查看文件

@@ -0,0 +1,35 @@
1
+.user-box-addDog {
2
+  background-color: #fff;
3
+  display: flex;
4
+  align-items: center;
5
+  padding: 25px 15px;
6
+  margin: 20px auto;
7
+  border-bottom-right-radius: 15px;
8
+  border-bottom-left-radius: 15px;
9
+  &-DogImage {
10
+    margin-left: 20px;
11
+    height: 130px;
12
+    line-height: 60px;
13
+    > Image {
14
+      width: 125px;
15
+      height: 125px;
16
+      border-radius: 10px;
17
+    }
18
+    > View:nth-child(1) {
19
+      font-size: 30px;
20
+      font-weight: 600;
21
+    }
22
+    > View:nth-child(2) {
23
+      color: rgb(175, 175, 175);
24
+      font-size: 25px;
25
+    }
26
+  }
27
+  &-rightDog {
28
+    display: flex;
29
+    align-items: center;
30
+    text-align: center;
31
+    font-size: 25px;
32
+    position: absolute;
33
+    right: 4vw;
34
+  }
35
+}

+ 23
- 6
src/pages/main/index.jsx 查看文件

@@ -1,18 +1,35 @@
1 1
 import { View, Text, Image } from '@tarojs/components'
2 2
 import Taro from '@tarojs/taro';
3
+import { useEffect, useState } from 'react';
3 4
 import ViewIcon from '../../components/ViewIcon';
5
+import { useModel } from '../../store';
4 6
 
5 7
 
6 8
 import './style.less'
7 9
 
8 10
 export default (props) => {
11
+  const { dogs, person, setDogs } = useModel('userData')
9 12
 
13
+  const [useInfo, setUseInfo] = useState()
14
+
15
+  useEffect(() => {
16
+    if (person) {
17
+      setUseInfo(person)
18
+    }
19
+  }, [person])
10 20
   const goDogList = () => {
11
-    console.log('e',);
21
+    Taro.navigateTo({
22
+      url: '/pages/dogList/index'
23
+    })
24
+  }
25
+  const goDogApplyList = () => {
26
+    Taro.navigateTo({
27
+      // url: '/pages/setUser/index'
28
+    })
12 29
   }
13
-  const goSetUser = (e) => {
30
+  const goSetUser = (personId) => {
14 31
     Taro.navigateTo({
15
-      url: '/pages/setUser/index'
32
+      url: `/pages/setUser/index?personId=${personId}`
16 33
     })
17 34
   }
18 35
   return (
@@ -23,10 +40,10 @@ export default (props) => {
23 40
         </View>
24 41
 
25 42
         <View className='user-box-Card-NameCard'>
26
-          <View>王王王</View>
43
+          <View>{useInfo?.nickName}</View>
27 44
           <View>文明养狗,遵纪守法</View>
28 45
         </View>
29
-        <View className='user-box-Card-right' onClick={goSetUser}>
46
+        <View className='user-box-Card-right' onClick={() => { goSetUser(useInfo?.personId) }}>
30 47
           <View style={{ paddingRight: '5px' }}>
31 48
             <ViewIcon icon='bianji' size={19} color='#2f2f2f' />
32 49
           </View>
@@ -38,7 +55,7 @@ export default (props) => {
38 55
         <mp-cell link hover>
39 56
           <View className='iconCell'>
40 57
             <ViewIcon icon='dingdan' size={22} />
41
-            <View onClick={goDogList} style='padding-left:5px;width:80%'>申请列表</View>
58
+            <View onClick={goDogApplyList} style='padding-left:5px;width:80%'>申请列表</View>
42 59
           </View>
43 60
         </mp-cell>
44 61
       </mp-cells>

+ 69
- 21
src/pages/setDogInfo/index.jsx 查看文件

@@ -1,22 +1,71 @@
1 1
 import { View, Button, Form, Text, RadioGroup, Picker, Image, Input, Radio, Label, ScrollView } from '@tarojs/components'
2 2
 import Taro from '@tarojs/taro';
3
-import { useState } from 'react';
3
+import { useState, useEffect } from 'react';
4
+import { addDogInfo, getDogInfo, setDogInfo } from '../../services/dogAPI';
5
+import { uploadFile } from '../../utils/request';
4 6
 import './style.less'
5 7
 
6 8
 export default (props) => {
7 9
   const [dogDate, setDogDate] = useState({ birthday: '请选择生日', sex: '请选择性别', petType: '请选择犬种' })
8 10
   const [imgUrl, setImgUrl] = useState()
11
+  const [formData, setFormData] = useState()
12
+  const petId = Taro.getCurrentInstance().router.params.petId
13
+
14
+  useEffect(() => {
15
+    if (petId) {
16
+      getDogInfo(petId).then((e) => {
17
+        setFormData(e)
18
+        setDogDate(e)
19
+        setImgUrl(e.image)
20
+
21
+      })
22
+    }
23
+  }, [petId])
9 24
 
10 25
   const formSubmit = (res) => {
11 26
     console.log('formVlue', res);
27
+    const value = res.detail.value
28
+    if (petId) {
29
+      console.log('y ID',);
30
+      setDogInfo(petId, { ...value, ...dogDate, image: imgUrl }).then((e) => {
31
+        Taro.showToast({
32
+          title: '修改成功',
33
+          icon: 'none',
34
+          duration: 1000
35
+        })
36
+        setTimeout(() => {
37
+          Taro.navigateBack({
38
+            delta: 1
39
+          })
40
+        }, 600);
41
+      })
42
+    } else {
43
+      console.log('没有ID',);
44
+      addDogInfo({ ...value, ...dogDate, image: imgUrl }).then((e) => {
45
+        Taro.showToast({
46
+          title: '保存成功',
47
+          icon: 'none',
48
+          duration: 1000
49
+        })
50
+        setTimeout(() => {
51
+          Taro.navigateBack({
52
+            delta: 1
53
+          })
54
+        }, 600);
55
+
56
+      })
57
+    }
58
+
12 59
   }
13 60
   const onDateChange = (type, value) => {
14 61
     switch (type) {
15 62
       case 'petSex':
16
-        setDogDate({ ...dogDate, petSex: selector[value] })
63
+        setDogDate({ ...dogDate, sex: value - 0 + 1 })
64
+        console.log("🚀 ~ file: index.jsx ~ line 38 ~ handleSetUser ~ value", value, dogDate)
65
+
17 66
         break;
18 67
       case 'petBirthday':
19
-        setDogDate({ ...dogDate, petBirthday: value })
68
+        setDogDate({ ...dogDate, birthday: value })
20 69
         break;
21 70
       case 'petType':
22 71
         setDogDate({ ...dogDate, petType: dogType[value].text })//value 01  text 文字
@@ -39,9 +88,7 @@ export default (props) => {
39 88
 
40 89
   ]
41 90
 
42
-
43 91
   const addImage = () => {
44
-
45 92
     Taro.chooseImage({
46 93
       count: 1, // 默认9
47 94
       sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
@@ -49,7 +96,11 @@ export default (props) => {
49 96
       success: function (res) {
50 97
         // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
51 98
         var tempFilePaths = res.tempFilePaths
52
-        setImgUrl(tempFilePaths[0])
99
+        console.log('dogImage', tempFilePaths[0]);
100
+        uploadFile(res.tempFilePaths[0]).then((res2) => {
101
+          console.log("🚀 ~ file: index.jsx ~ line 61 ~ uploadFile ~ res2", res2)
102
+          setImgUrl(res2)
103
+        })
53 104
       },
54 105
       fail () {
55 106
         Taro.showToast({
@@ -69,16 +120,16 @@ export default (props) => {
69 120
   return (
70 121
     <ScrollView scrollY style={{ height: '100vh' }}>
71 122
       <View class='page' >
72
-        <Form onSubmit={formSubmit}  >
73
-          <mp-form  >
123
+        <Form onSubmit={formSubmit}    >
124
+          <mp-form models={formData}  >
74 125
             <mp-cells title=''>
75
-              <mp-cell title='宠物名称' extClass=''>
76
-                <Input name='name' placeholder='请输入宠养区域' />
126
+              <mp-cell title='狗狗名称' extClass=''>
127
+                <Input value={formData?.name} name='name' placeholder='请输入狗狗名称' />
77 128
               </mp-cell>
78
-              <mp-cell title='宠物性别' extClass=''>
129
+              <mp-cell title='狗狗性别' extClass=''>
79 130
                 <Picker name='sex' mode='selector' range={selector} onChange={(e) => { onDateChange('petSex', e.detail.value) }}>
80 131
                   <View className='picker'>
81
-                    {dogDate.petSex}
132
+                    {dogDate.sex == 1 ? '雄' : dogDate.sex == 2 ? '雌' : dogDate.sex}
82 133
                   </View>
83 134
                 </Picker>
84 135
               </mp-cell>
@@ -92,26 +143,23 @@ export default (props) => {
92 143
               <mp-cell title='生日' extClass=''>
93 144
                 <Picker name='birthday' mode='date' onChange={(e) => { onDateChange('petBirthday', e.detail.value) }}>
94 145
                   <View className='picker'>
95
-                    {dogDate.petBirthday}
146
+                    {dogDate.birthday}
96 147
                   </View>
97 148
                 </Picker>
98 149
               </mp-cell>
99 150
               <mp-cell title='毛色' extClass=''>
100
-                <Input name='color' placeholder='请输入宠养区域' />
151
+                <Input name='color' placeholder='请输入毛色' value={formData?.color} />
101 152
               </mp-cell>
102
-              <mp-cell title='宠物照片' extClass=''>
153
+              <mp-cell title='狗狗照片' extClass=''>
103 154
                 {
104
-                  !imgUrl.image ?
105
-                    <View className='addImage' onClick={addImage} >
155
+                  !imgUrl ?
156
+                    <View className='addDogImage' onClick={addImage} >
106 157
                       <Text>+</Text>
107 158
                     </View>
108 159
                     :
109
-                    <Image className='dogImg1' name='image' src={imgUrl.img1} onClick={addImage} />
160
+                    <Image className='dogImage' name='image' src={imgUrl} onClick={addImage} />
110 161
                 }
111
-
112 162
               </mp-cell>
113
-
114
-
115 163
             </mp-cells>
116 164
           </mp-form>
117 165
           <View slot='button' style={{ margin: '4em 0 2em 0' }}>

+ 18
- 0
src/pages/setDogInfo/style.less 查看文件

@@ -0,0 +1,18 @@
1
+.addDogImage {
2
+  width: 100px;
3
+  height: 100px;
4
+  border: 1px dashed #666;
5
+  display: flex;
6
+  align-items: center;
7
+  > Text {
8
+    text-align: center;
9
+    margin: 0 auto;
10
+    font-size: 60px;
11
+    font-weight: bold;
12
+  }
13
+}
14
+
15
+.dogImage {
16
+  width: 200px;
17
+  height: 150px;
18
+}

+ 2
- 1
src/pages/setDogLicense/index.config.js 查看文件

@@ -8,7 +8,8 @@ export default {
8 8
     "mp-cells": "weui-miniprogram/cells/cells",
9 9
     "mp-cell": "weui-miniprogram/cell/cell",
10 10
     "mp-form-page": "weui-miniprogram/form-page/form-page",
11
-    "mp-form": "weui-miniprogram/form/form"
11
+    "mp-form": "weui-miniprogram/form/form",
12
+    "mp-dialog": "weui-miniprogram/dialog/dialog"
12 13
   }
13 14
 
14 15
 }

+ 61
- 24
src/pages/setDogLicense/index.jsx 查看文件

@@ -1,13 +1,28 @@
1 1
 import { View, Button, Form, Text, RadioGroup, Picker, Image, Input, Radio, Label, ScrollView } from '@tarojs/components'
2
-import Taro from '@tarojs/taro';
3
-import { useState } from 'react';
4
-import { addDogInfo } from '../../services/dogAPI';
2
+import Taro, { useDidShow } from '@tarojs/taro';
3
+import { useState, useEffect } from 'react';
4
+import { addlication } from '../../services/dogAPI';
5
+import { useModel } from '../../store';
5 6
 
6 7
 import './style.less'
7 8
 
8 9
 export default (props) => {
10
+  const { dogs, person, setDogs } = useModel('userData')
11
+
9 12
   const [dogDate, setDogDate] = useState({ petBirthday: '请选择生日', petSex: '请选择性别', petType: '请选择犬种' })
10 13
   const [imgUrl, setImgUrl] = useState({ img1: null, immunization: null })
14
+  const [showDialog, setShowDialog] = useState(false)
15
+
16
+  useDidShow(() => {
17
+    if (dogs.length == 0 || person.phone == null) {
18
+      console.log('不可以', dogs);
19
+      setShowDialog(true)
20
+
21
+    }
22
+  }, [dogs, person])
23
+
24
+
25
+
11 26
 
12 27
 
13 28
   const onDateChange = (type, value) => {
@@ -26,6 +41,25 @@ export default (props) => {
26 41
     }
27 42
 
28 43
   }
44
+  const handleDialog = () => {
45
+    console.log('handleDialog',);
46
+    if (dogs.length == 0 && person.phone == null) {
47
+      //如果 人 狗都没有维护,那么先维护人的。回到这个页面后,必定只有狗没维护 跳 狗
48
+
49
+      Taro.navigateTo({
50
+        url: '/pages/setUser/index'
51
+      })
52
+      setShowDialog(false)
53
+
54
+    } else {
55
+      Taro.navigateTo({
56
+        url: '/pages/setDogInfo/index'
57
+      })
58
+      setShowDialog(false)
59
+
60
+    }
61
+  }
62
+  const buttons = [{ text: '确定' }]
29 63
   const selector = ['雄', '雌']
30 64
   const dogType = [
31 65
     {
@@ -100,37 +134,40 @@ export default (props) => {
100 134
   const formSubmit = e => {
101 135
     console.log(e)
102 136
     const value = e.detail.value
103
-    addDogInfo({ ...value, ...dogDate, ...imgUrl }).then((res) => {
137
+    addlication({ ...value, ...dogDate, ...imgUrl }).then((res) => {
104 138
       console.log('dogInfo xinwe', res);
139
+      Taro.showToast({
140
+        title: '保存成功',
141
+        icon: 'none',
142
+        duration: 1000
143
+      })
144
+      setTimeout(() => {
145
+        Taro.navigateBack({
146
+          delta: 1
147
+        })
148
+      }, 600);
105 149
     })
106 150
   }
107 151
 
108 152
   const formReset = e => {
109 153
     console.log(e)
110 154
   }
111
-  const rules = [
112
-    {
113
-      name: 'name',
114
-      rules: { required: true, message: '请填写收货人姓名' },
115
-    },
116
-    {
117
-      name: 'telNumber',
118
-      rules: [{ required: true, message: '请填写收货人电话' }, { mobile: true, message: '电话格式不对' }]
119
-    },
120
-  ]
155
+
121 156
   return (
122
-    <ScrollView scrollY style={{
123
-      height: '100vh'
124
-    }}
125
-    >
157
+    <ScrollView scrollY style={{ height: '100vh' }} >
158
+      <mp-dialog show={showDialog} title='提示' maskClosable={false} buttons={buttons} onButtonTap={handleDialog} >
159
+        <View>
160
+          请先添加本人信息或狗狗信息
161
+        </View>
162
+      </mp-dialog>
126 163
       <View class='page' >
127 164
         <Form onSubmit={formSubmit} onReset={formReset} >
128
-          <mp-form rules={rules} >
165
+          <mp-form  >
129 166
             <mp-cells title=''>
130
-              <mp-cell title='宠物名称' extClass=''>
131
-                <Input name='petName' placeholder='请输入宠养区域' />
167
+              <mp-cell title='狗狗名称' extClass=''>
168
+                <Input name='petName' placeholder='请输入狗狗名称' />
132 169
               </mp-cell>
133
-              <mp-cell title='宠物性别' extClass=''>
170
+              <mp-cell title='狗狗性别' extClass=''>
134 171
                 <Picker name='petSex' mode='selector' range={selector} onChange={(e) => { onDateChange('petSex', e.detail.value) }}>
135 172
                   <View className='picker'>
136 173
                     {dogDate.petSex}
@@ -152,9 +189,9 @@ export default (props) => {
152 189
                 </Picker>
153 190
               </mp-cell>
154 191
               <mp-cell title='毛色' extClass=''>
155
-                <Input name='petColor' placeholder='请输入宠养区域' />
192
+                <Input name='petColor' placeholder='请输入毛色' />
156 193
               </mp-cell>
157
-              <mp-cell title='宠物照片' extClass=''>
194
+              <mp-cell title='狗狗照片' extClass=''>
158 195
                 {
159 196
                   !imgUrl.img1 ?
160 197
                     <View className='addImage' onClick={() => addImage('img1')} >

+ 39
- 26
src/pages/setUser/index.jsx 查看文件

@@ -1,13 +1,22 @@
1 1
 import { View, Button, Form, Text, Image, Picker, Switch, Input, Radio, Label, ScrollView } from '@tarojs/components'
2 2
 import Taro from '@tarojs/taro';
3
-import { useState } from 'react';
4
-import { setPerson } from '../../services/dogAPI';
3
+import { useEffect, useState } from 'react';
4
+import { setPersons } from '../../services/dogAPI';
5
+import { useModel } from '../../store';
6
+import { uploadFile } from '../../utils/request';
5 7
 
6 8
 import './style.less'
7 9
 
8 10
 export default (props) => {
11
+  const { setPerson, person, setDogs } = useModel('userData')
9 12
   // const [imgUrl, setImgUrl] = useState()
10 13
   const [userInfo, setUserInfo] = useState({ cardImg1: null, sex: '请选择性别' })
14
+  useEffect(() => {
15
+    if (person) {
16
+      setUserInfo(person)
17
+
18
+    }
19
+  }, [person])
11 20
 
12 21
   const userSex = [
13 22
     {
@@ -26,33 +35,33 @@ export default (props) => {
26 35
 
27 36
   }
28 37
   const formSubmit = e => {
38
+    const formData = e.detail.value
29 39
     console.log(e)
30
-    const value = e.detail.value
31
-    Taro.showToast({
32
-      title: '保存成功',
33
-      icon: 'none',
34
-      duration: 1000
35
-    })
36
-    Taro.navigateBack({
37
-      delta: 1
38
-    })
39
-    // setPerson({ ...value, ...userInfo }).then((e) => {
40
-    //   console.log('e', e);
41 40
 
42
-    // })
41
+    // setPerson
42
+    setPersons({ ...userInfo, ...formData, sex: userSex[formData.sex].value, }).then((e) => {
43
+      console.log('e', e);
44
+      setPerson(e)
45
+      Taro.showToast({
46
+        title: '保存成功',
47
+        icon: 'none',
48
+        duration: 1000
49
+      })
50
+      setTimeout(() => {
51
+        Taro.navigateBack({
52
+          delta: 1
53
+        })
54
+      }, 600);
55
+    })
43 56
   }
44 57
 
45 58
 
46 59
   const handleSetUser = (type, value) => {
47
-    console.log("🚀 ~ file: index.jsx ~ line 38 ~ handleSetUser ~ value", value)
48 60
     // console.log(e)
49 61
     if (type == 'sex') {
50
-      if (value == 0) {
51
-        setUserInfo({ ...userInfo, sex: 1 })
62
+      setUserInfo({ ...userInfo, sex: userSex[value].value })
63
+      console.log("🚀 ~ file: index.jsx ~ line 38 ~ handleSetUser ~ value", value)
52 64
 
53
-      } else {
54
-        setUserInfo({ ...userInfo, sex: 2 })
55
-      }
56 65
     } else {
57 66
       Taro.chooseImage({
58 67
         count: 1, // 默认9
@@ -61,7 +70,11 @@ export default (props) => {
61 70
         success: function (res) {
62 71
           // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
63 72
           var tempFilePaths = res.tempFilePaths
64
-          setUserInfo({ ...userInfo, cardImg1: tempFilePaths[0] })
73
+          uploadFile(tempFilePaths[0]).then((res2) => {
74
+            console.log("🚀 ~ file: index.jsx ~ line 61 ~ uploadFile ~ res2", res2)
75
+            setUserInfo({ ...userInfo, cardImg1: res2 })
76
+
77
+          })
65 78
         },
66 79
         fail () {
67 80
           Taro.showToast({
@@ -84,21 +97,21 @@ export default (props) => {
84 97
           <mp-form  >
85 98
             <mp-cells title=' '>
86 99
               <mp-cell title='姓名' extClass=''>
87
-                <Input name='nickName' placeholder='请输入姓名' />
100
+                <Input name='nickName' placeholder='请输入姓名' value={person?.nickName} />
88 101
               </mp-cell>
89 102
               <mp-cell title='性别' extClass=''>
90 103
                 {/* <Input name='sex' placeholder='请输入卡号' /> */}
91
-                <Picker name='sex' mode='selector' range={userSex} rangeKey='text' onChange={(e) => { handleSetUser('sex', e.detail.value - 0) }}>
104
+                <Picker name='sex' mode='selector' rangeKey='text' range={userSex} onChange={(e) => { handleSetUser('sex', e.detail.value) }}>
92 105
                   <View className='picker'>
93 106
                     {userInfo.sex == 1 ? '男' : userInfo.sex == 2 ? '女' : userInfo.sex}
94 107
                   </View>
95 108
                 </Picker>
96 109
               </mp-cell>
97 110
               <mp-cell title='手机号' extClass=''>
98
-                <Input name='phone' type='number' placeholder='请输入手机号' maxlength={11} />
111
+                <Input name='phone' type='number' placeholder='请输入手机号' maxlength={11} value={person?.phone} />
99 112
               </mp-cell>
100 113
               <mp-cell title='身份证号' extClass=''>
101
-                <Input name='idCard' placeholder='请输入身份证号' type='idcard' maxlength={18} />
114
+                <Input name='idCard' placeholder='请输入身份证号' type='idcard' maxlength={18} value={person?.idCard} />
102 115
               </mp-cell>
103 116
               <mp-cell title='身份证图片' extClass=''>
104 117
                 {
@@ -118,7 +131,7 @@ export default (props) => {
118 131
           </View>
119 132
         </Form>
120 133
       </View>
121
-    </ScrollView>
134
+    </ScrollView >
122 135
   )
123 136
 }
124 137
 

+ 54
- 3
src/services/dogAPI.js 查看文件

@@ -15,13 +15,64 @@ export const login = (data) => request('/login', { data, method: 'POST' })
15 15
  * @param {*} data
16 16
  * @returns
17 17
  */
18
-export const setPerson = (data) => request('/person', { data, method: 'PUT' })
18
+export const setPersons = (data) => request('/person', { data, method: 'PUT' })
19 19
 
20 20
 
21 21
 
22 22
 /**
23
- * 狗狗信息维护
23
+ * 办卡
24 24
  * @param {*} data
25 25
  * @returns
26 26
  */
27
-export const addDogInfo = (data) => request('/application', { data, method: 'POST' })
27
+export const addlication = (data) => request('/application', { data, method: 'POST' })
28
+
29
+
30
+
31
+/**
32
+ * 狗狗列表
33
+ * @param {*} data
34
+ * @returns
35
+ */
36
+export const addDogList = (data) => request('/pet', { data, method: 'GET' })
37
+
38
+
39
+
40
+/**
41
+ * 添加狗狗
42
+ * @param {*} data
43
+ * @returns
44
+ */
45
+export const addDogInfo = (data) => request('/pet', { data, method: 'POST' })
46
+
47
+
48
+/**
49
+ * 狗狗详情
50
+ * @param {*} data
51
+ * @returns
52
+ */
53
+export const getDogInfo = (id, data) => request(`/pet/${id}`, { data, method: 'GET' })
54
+
55
+/**
56
+ * 修改狗狗
57
+ * @param {*} data
58
+ * @returns
59
+ */
60
+export const setDogInfo = (id, data) => request(`/pet/${id}`, { data, method: 'PUT' })
61
+
62
+
63
+
64
+
65
+
66
+/**
67
+ * 狗狗证件
68
+ * @param {*} data
69
+ * @returns
70
+ */
71
+export const getDogCardList = (id, data) => request(`/card`, { data, method: 'GET' })
72
+
73
+/**
74
+* 证件详情
75
+* @param {*} data
76
+* @returns
77
+*/
78
+export const getDogCardInfo = (id, data) => request(`/card/${id}`, { data, method: 'GET' })

+ 7
- 7
src/store/userData.js 查看文件

@@ -5,7 +5,7 @@ import { login } from "../services/dogAPI"
5 5
 
6 6
 
7 7
 export default () => {
8
-  const [user, setUser] = useState()
8
+  const [dogs, setDogs] = useState([])
9 9
   const [person, setPerson] = useState()
10 10
   const [sessionKey, setSessionKey] = useState()
11 11
 
@@ -13,19 +13,19 @@ export default () => {
13 13
     console.log('login');
14 14
 
15 15
     login(params).then((res) => {
16
-
17
-      const { person: taPerson, sessionKey: skey, user: taUser } = res;
16
+      const { person: taPerson, sessionKey: skey, user: taUser, pets: taPets } = res;
18 17
       // taPerson.phone = null
19
-
20 18
       setPerson(taPerson);
21
-      setUser(taUser);
19
+      setDogs(taPets);
22 20
       setSessionKey(skey);
21
+      console.log(taPets, dogs);
22
+
23 23
     })
24 24
   }
25 25
 
26 26
   return {
27
-    user,
28
-    setUser,
27
+    dogs,
28
+    setDogs,
29 29
 
30 30
     person,
31 31
     setPerson,

+ 52
- 0
src/utils/request.js 查看文件

@@ -2,6 +2,7 @@ import Taro from '@tarojs/taro'
2 2
 import { getQueryString } from './codeSegment.js'
3 3
 
4 4
 let appid
5
+const logger = Taro.getRealtimeLogManager()
5 6
 
6 7
 export default (url, options) => {
7 8
   const { params, skipError, header, ...leftOptions } = options || {}
@@ -63,3 +64,54 @@ export default (url, options) => {
63 64
     })
64 65
   })
65 66
 }
67
+
68
+
69
+
70
+export function uploadFile (filePath) {
71
+
72
+  const authToken = Taro.getStorageSync('token')
73
+  const tokenHeader = authToken ? { 'Authorization': authToken } : {}
74
+
75
+  return new Promise((resolve, reject) => {
76
+    Taro.uploadFile({
77
+      // eslint-disable-next-line no-undef
78
+      url: `${HOST}/api/wx/image`,
79
+      filePath,
80
+      name: 'file',
81
+      header: tokenHeader,
82
+      success: (res) => {
83
+        if (res.errMsg === 'uploadFile:ok') {
84
+          const { code, message, data, token } = JSON.parse(res.data)
85
+
86
+          if (token || data?.token) {
87
+            Taro.setStorage({ key: 'token', data: token || data?.token })
88
+          }
89
+          if (code === 1000) {
90
+            resolve(data)
91
+          } else {
92
+            console.error(res)
93
+            logger.error("上传文件失败")
94
+            logger.error(res)
95
+            reject(message?.indexOf('java') > -1 ? '系统内部错误' : message)
96
+          }
97
+        } else {
98
+          console.error(res)
99
+
100
+          logger.error("上传文件失败")
101
+          logger.error(res)
102
+
103
+          reject(res.errMsg)
104
+        }
105
+      },
106
+      fail: (err) => {
107
+        console.error(err)
108
+
109
+        logger.error("上传文件失败")
110
+        logger.error(err)
111
+
112
+        const message = err.message || err.errMsg || err
113
+        reject(message)
114
+      }
115
+    })
116
+  })
117
+}