|
@@ -1,21 +1,31 @@
|
1
|
|
-import { View, Button, Text, Image, Switch, Input, Radio, Label, ScrollView } from '@tarojs/components'
|
|
1
|
+import { View, Button, Text, Image, Slot, Input, ScrollView } from '@tarojs/components'
|
2
|
2
|
import Taro from '@tarojs/taro';
|
3
|
3
|
import { useEffect, useState } from 'react';
|
4
|
4
|
import { setPersons } from '@/services/dogAPI';
|
5
|
5
|
import { useModel } from '@/store';
|
6
|
6
|
import { uploadFile } from '@/utils/request';
|
7
|
7
|
import Form from '@/components/Form';
|
|
8
|
+import FieldLabel from '@/components/Form/FieldLabel';
|
8
|
9
|
|
9
|
10
|
import './style.less'
|
10
|
11
|
|
|
12
|
+const rules = {
|
|
13
|
+ nickName: [{ required: true, message: '请填写姓名' }],
|
|
14
|
+ sex: [{ type: 'number', required: true, message: '请选择性别' }],
|
|
15
|
+ phone: [{ required: true, message: '请填写手机号' }, { len: 11, message: '请输入11位手机号' }],
|
|
16
|
+ idCard: [{ required: true, message: '请填写身份证号码' }, { len: 18, message: '请输入18位身份证号码' }],
|
|
17
|
+ cardImg1: [{ required: true, message: '请上传身份证照片' }],
|
|
18
|
+}
|
|
19
|
+
|
11
|
20
|
export default (props) => {
|
|
21
|
+ const [showTopTips, setShowTopTips] = useState(false)
|
|
22
|
+ const [errorMsg, setErrorMsg] = useState()
|
12
|
23
|
const { setPerson, person, setDogs } = useModel('userData')
|
13
|
24
|
// const [imgUrl, setImgUrl] = useState()
|
14
|
25
|
const [userInfo, setUserInfo] = useState({ cardImg1: null, sex: '请选择性别' })
|
15
|
26
|
useEffect(() => {
|
16
|
27
|
if (person) {
|
17
|
28
|
setUserInfo(person)
|
18
|
|
-
|
19
|
29
|
}
|
20
|
30
|
}, [person])
|
21
|
31
|
|
|
@@ -31,10 +41,6 @@ export default (props) => {
|
31
|
41
|
|
32
|
42
|
]
|
33
|
43
|
|
34
|
|
- const addImage = () => {
|
35
|
|
-
|
36
|
|
-
|
37
|
|
- }
|
38
|
44
|
const formSubmit = e => {
|
39
|
45
|
const formData = e
|
40
|
46
|
console.log(e)
|
|
@@ -55,20 +61,25 @@ export default (props) => {
|
55
|
61
|
})
|
56
|
62
|
}
|
57
|
63
|
|
|
64
|
+ const handleError = (errors) => {
|
|
65
|
+ setErrorMsg(errors[0].message)
|
|
66
|
+ setShowTopTips(true)
|
|
67
|
+ }
|
58
|
68
|
|
|
69
|
+ const handleFile = (e) => {
|
|
70
|
+ const { file, next } = e.detail
|
|
71
|
+ uploadFile(file.path).then(next)
|
|
72
|
+ }
|
59
|
73
|
|
60
|
74
|
const handleSetUser = (type, value) => {
|
61
|
75
|
// console.log(e)
|
62
|
|
- if (type == 'sex') {
|
63
|
|
- setUserInfo({ ...userInfo, sex: userSex[value] })
|
64
|
|
- console.log("🚀 ~ file: index.jsx ~ line 38 ~ handleSetUser ~ value", value)
|
65
|
|
-
|
66
|
|
- } else {
|
|
76
|
+ if (type == 'img') {
|
67
|
77
|
Taro.chooseImage({
|
68
|
78
|
count: 1, // 默认9
|
69
|
79
|
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
|
70
|
80
|
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有,在H5浏览器端支持使用 `user` 和 `environment`分别指定为前后摄像头
|
71
|
81
|
success: function (res) {
|
|
82
|
+ console.log('-------chooseImage----->', res)
|
72
|
83
|
// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
|
73
|
84
|
var tempFilePaths = res.tempFilePaths
|
74
|
85
|
uploadFile(tempFilePaths[0]).then((res2) => {
|
|
@@ -89,36 +100,39 @@ export default (props) => {
|
89
|
100
|
}
|
90
|
101
|
|
91
|
102
|
return (
|
92
|
|
- <ScrollView scrollY style={{
|
93
|
|
- height: '100vh'
|
94
|
|
- }}
|
95
|
|
- >
|
|
103
|
+ <ScrollView scrollY style={{ height: '100vh' }}>
|
|
104
|
+ <mp-toptips msg={errorMsg} type='error' show={showTopTips} onHide={() => setShowTopTips(false)}></mp-toptips>
|
96
|
105
|
<View class='page' >
|
97
|
|
- <Form onSubmit={formSubmit}>
|
|
106
|
+ <Form rules={rules} onSubmit={formSubmit} onError={handleError}>
|
98
|
107
|
<mp-form>
|
99
|
|
- <mp-cells title=' '>
|
100
|
|
- <mp-cell title='姓名' extClass=''>
|
|
108
|
+ <mp-cells>
|
|
109
|
+ <mp-cell>
|
|
110
|
+ <Slot name='title'><FieldLabel required>姓名</FieldLabel></Slot>
|
101
|
111
|
<Input name='nickName' placeholder='请输入姓名' value={person?.nickName} />
|
102
|
112
|
</mp-cell>
|
103
|
|
- <mp-cell title='性别' extClass=''>
|
104
|
|
- {/* <Input name='sex' placeholder='请输入卡号' /> */}
|
105
|
|
- <s-picker name='sex' rangeKey='text' rangeValue='value' range={userSex} value={person?.sex} onChange={(e) => handleSetUser('sex', e.detail.data.value)} />
|
|
113
|
+ <mp-cell>
|
|
114
|
+ <Slot name='title'><FieldLabel required>性别</FieldLabel></Slot>
|
|
115
|
+ <s-picker name='sex' rangeKey='text' rangeValue='value' range={userSex} value={person?.sex} />
|
106
|
116
|
</mp-cell>
|
107
|
|
- <mp-cell title='手机号' extClass=''>
|
|
117
|
+ <mp-cell>
|
|
118
|
+ <Slot name='title'><FieldLabel required>手机号</FieldLabel></Slot>
|
108
|
119
|
<Input name='phone' type='number' placeholder='请输入手机号' maxlength={11} value={person?.phone} />
|
109
|
120
|
</mp-cell>
|
110
|
|
- <mp-cell title='身份证号' extClass=''>
|
|
121
|
+ <mp-cell>
|
|
122
|
+ <Slot name='title'><FieldLabel required>身份证号</FieldLabel></Slot>
|
111
|
123
|
<Input name='idCard' placeholder='请输入身份证号' type='idcard' maxlength={18} value={person?.idCard} />
|
112
|
124
|
</mp-cell>
|
113
|
|
- <mp-cell title='身份证图片' extClass=''>
|
114
|
|
- {
|
|
125
|
+ <mp-cell>
|
|
126
|
+ <Slot name='title'><FieldLabel required>身份证图片</FieldLabel></Slot>
|
|
127
|
+ <uploader name='cardImg1' value={person?.cardImg1} onFile={handleFile} />
|
|
128
|
+ {/* {
|
115
|
129
|
!userInfo.cardImg1 ?
|
116
|
130
|
<View className='addImage' onClick={(e) => handleSetUser('img', e.detail.value)} >
|
117
|
131
|
<Text>+</Text>
|
118
|
132
|
</View>
|
119
|
133
|
:
|
120
|
134
|
<Image className='userImg1' name='cardImg1' src={userInfo.cardImg1} onClick={(e) => handleSetUser('img', e.detail.value)} />
|
121
|
|
- }
|
|
135
|
+ } */}
|
122
|
136
|
</mp-cell>
|
123
|
137
|
</mp-cells>
|
124
|
138
|
</mp-form>
|