张延森 3 vuotta sitten
vanhempi
commit
ed516a61bd

+ 1
- 1
project.config.json Näytä tiedosto

@@ -4,7 +4,7 @@
4 4
     "description": "项目配置文件,详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
5 5
     "appid": "wxe44244d1a5ea3364",
6 6
     "setting": {
7
-        "urlCheck": true,
7
+        "urlCheck": false,
8 8
         "es6": false,
9 9
         "postcss": false,
10 10
         "minified": false,

+ 0
- 61
src/components/Picker/index.jsx Näytä tiedosto

@@ -1,61 +0,0 @@
1
-import Taro from '@tarojs/taro';
2
-import { Picker, View } from '@tarojs/components';
3
-import { useMemo, useState } from 'react';
4
-import PropTypes from 'prop-types';
5
-
6
-// 暂时只支持单列普通选择器
7
-const XPicker = (props) => {
8
-  const { bindchange, onChange, range, value : propValue, rangeKey, rangeValue, placeholder = '请选择', ...leftProps } = props
9
-
10
-  const [innerValue, setInnerValue] = useState()
11
-
12
-  const handleChange = (e) => {
13
-    const data = range[e.detail.value]
14
-    const val = data[rangeValue]
15
-    e.detail.value = val
16
-    setInnerValue(data)
17
-
18
-    console.log('-----bindchange----->', bindchange)
19
-    console.log('-----onChange----->', onChange)
20
-
21
-    if (bindchange) {
22
-      bindchange(e, data)
23
-    }
24
-    if (onChange) {
25
-      onChange(e, data)
26
-    }
27
-  }
28
-
29
-  const value = useMemo(() => {
30
-    if (propValue === undefined || propValue === null) {
31
-      return undefined
32
-    }
33
-
34
-    for (let i in range) {
35
-      if (range[i][rangeValue] === propValue) {
36
-        setInnerValue(range[i])
37
-        return i;
38
-      }
39
-    }
40
-
41
-    return undefined;
42
-  }, [propValue, range, rangeValue])
43
-
44
-  const childViewStyle = useMemo(() => {
45
-    return innerValue ? {} : { color: '#858585' }
46
-  }, [innerValue])
47
-
48
-  return (
49
-    <Picker {...leftProps} mode='selector' range={range} value={value} rangeKey={rangeKey} onChange={handleChange}>
50
-      <View style={childViewStyle}>{innerValue === undefined ? placeholder : innerValue[rangeKey]}</View>
51
-    </Picker>
52
-  )
53
-}
54
-
55
-XPicker.behaviors = ['wx://form-field']
56
-XPicker.propTypes = {
57
-  behaviors: PropTypes.array
58
-}
59
-
60
-
61
-export default XPicker

+ 48
- 0
src/components/s-picker/index.js Näytä tiedosto

@@ -0,0 +1,48 @@
1
+Component({
2
+  behaviors: ['wx://form-field'],
3
+  options: {
4
+    addGlobalClass: true,
5
+  },
6
+  properties: {
7
+    name: {
8
+      type: String
9
+    },
10
+    value: {
11
+      type: undefined,
12
+    },
13
+    range: {
14
+      type: Array,
15
+    },
16
+    rangeKey: {
17
+      type: String,
18
+    },
19
+    rangeValue: {
20
+      type: String,
21
+    },
22
+    placeholder: {
23
+      type: String,
24
+      value: '请选择'
25
+    },
26
+  },
27
+  data: {
28
+    text: undefined,
29
+    index: undefined,
30
+  },
31
+  methods: {
32
+    bindChange: function(e) {
33
+
34
+      const index = e.detail.value
35
+      const data = this.data.range[index]
36
+      const value = data[this.data.rangeValue]
37
+      const text = data[this.data.rangeKey]
38
+
39
+      this.setData({
40
+        index,
41
+        text,
42
+        value,
43
+      })
44
+
45
+      this.triggerEvent('change', { value, data })
46
+    }
47
+  }
48
+})

+ 3
- 0
src/components/s-picker/index.json Näytä tiedosto

@@ -0,0 +1,3 @@
1
+{
2
+  "component": true
3
+}

+ 4
- 0
src/components/s-picker/index.wxml Näytä tiedosto

@@ -0,0 +1,4 @@
1
+<picker mode="selector" range="{{range}}" value="{{index}}" range-key="{{rangeKey}}" bindchange="bindChange" >
2
+  <view class="s-picker-placeholder" wx:if="{{index == undefined}}">{{placeholder}}</view>
3
+  <view wx:else>{{text}}</view>
4
+</picker>

+ 3
- 0
src/components/s-picker/index.wxss Näytä tiedosto

@@ -0,0 +1,3 @@
1
+.s-picker-placeholder {
2
+  color: #858585
3
+}

+ 2
- 1
src/pages/setUser/index.config.js Näytä tiedosto

@@ -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
+    "s-picker": "../../components/s-picker/index"
12 13
   }
13 14
 
14 15
 }

+ 1
- 2
src/pages/setUser/index.jsx Näytä tiedosto

@@ -5,7 +5,6 @@ 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 Picker from '@/components/Picker';
9 8
 
10 9
 import './style.less'
11 10
 
@@ -103,7 +102,7 @@ export default (props) => {
103 102
               </mp-cell>
104 103
               <mp-cell title='性别' extClass=''>
105 104
                 {/* <Input name='sex' placeholder='请输入卡号' /> */}
106
-                <Picker name='sex' rangeKey='text' rangeValue='value' range={userSex} />
105
+                <s-picker name='sex' rangeKey='text' rangeValue='value' range={userSex} />
107 106
               </mp-cell>
108 107
               <mp-cell title='手机号' extClass=''>
109 108
                 <Input name='phone' type='number' placeholder='请输入手机号' maxlength={11} value={person?.phone} />