Your Name 3 years ago
parent
commit
048a2c0fcf

+ 2
- 1
config/index.js View File

@@ -24,11 +24,12 @@ const config = {
24 24
     '@/store': path.resolve(__dirname, '..', 'src/store'),
25 25
     '@/services': path.resolve(__dirname, '..', 'src/services'),
26 26
     '@/utils': path.resolve(__dirname, '..', 'src/utils'),
27
+    '@/native': path.resolve(__dirname, '..', 'src/native'),
27 28
     '@/pages': path.resolve(__dirname, '..', 'src/pages'),
28 29
   },
29 30
   copy: {
30 31
     patterns: [
31
-      { from: 'src/native/', to: 'dist/native/' },
32
+      // { from: 'src/native/', to: 'dist/native/' },
32 33
     ],
33 34
     options: {
34 35
     }

BIN
src/assets/poster-empty.png View File


+ 48
- 20
src/components/Poster/Poster.jsx View File

@@ -39,32 +39,60 @@ export default (props) => {
39 39
         }
40 40
       })
41 41
 
42
-      Promise.all([
43
-        sdk.getImage(poster),
44
-        sdk.getImage(miniCode),
45
-        sdk.getImage(avatar),
46
-      ]).then((res) => {
47
-        const [posterImg, miniCodeImg, avatarImg] = res
42
+      // 名称
43
+      sdk.darwText(name, conf.name)
44
+      // 小程序码
45
+      sdk.darwText(desc, conf.desc)
48 46
 
49
-        // 封面
47
+      let cnt = 0
48
+      // 封面
49
+      sdk.getImage(poster).then((posterImg) => {
50 50
         sdk.drawImage(posterImg, conf.poster)
51
-        // 头像
51
+        cnt += 1
52
+      }).catch(() => cnt += 1)
53
+      // 头像
54
+      sdk.getImage(avatar).then((avatarImg) => {
52 55
         sdk.drawImage(avatarImg, conf.avatar)
53
-        // 小程序码
56
+        cnt += 1
57
+      }).catch(() => cnt += 1)
58
+      // 小程序码
59
+      sdk.getImage(miniCode).then((miniCodeImg) => {
54 60
         sdk.drawImage(miniCodeImg, conf.miniCode)
55
-        // 名称
56
-        sdk.darwText(name, conf.name)
57
-        // 小程序码
58
-        sdk.darwText(desc, conf.desc)
61
+        cnt += 1
62
+      }).catch(() => cnt += 1)
59 63
 
60
-        //
61
-        const image = sdk.toDataURL()
62
-        onEnd(image, sdk)
63
-      }).catch(([e1, e2, e3]) => {
64
-        if (onError) {
65
-          onError([e1, e2, e3])
64
+      const ticker = setInterval(() => {
65
+        if (cnt >= 3) {
66
+          // 图片全部处理完
67
+          const image = sdk.toDataURL()
68
+          onEnd(image, sdk)
69
+          clearInterval(ticker)
66 70
         }
67
-      })
71
+      }, 200);
72
+
73
+
74
+      // Promise.all([
75
+      //   // sdk.getImage(poster),
76
+      //   sdk.getImage(miniCode),
77
+      //   // sdk.getImage(avatar),
78
+      // ]).then((res) => {
79
+      //   const [posterImg, miniCodeImg, avatarImg] = res
80
+
81
+      //   // 封面
82
+      //   sdk.drawImage(posterImg, conf.poster)
83
+      //   // 头像
84
+      //   sdk.drawImage(avatarImg, conf.avatar)
85
+      //   // 小程序码
86
+      //   sdk.drawImage(miniCodeImg, conf.miniCode)
87
+
88
+      //   //
89
+      //   const image = sdk.toDataURL()
90
+      //   onEnd(image, sdk)
91
+      // }).catch(([e1, e2, e3]) => {
92
+      //   if (onError) {
93
+      //     onError([e1, e2, e3])
94
+      //   }
95
+      // })
68 96
     }
69 97
   }, [sdk, dataSource, onStart, onEnd, onError])
70 98
 

+ 10
- 6
src/components/Poster/index.jsx View File

@@ -84,23 +84,27 @@ export default (props) => {
84 84
     })
85 85
   }
86 86
 
87
+  const handleImage = (e) => {
88
+    Taro.previewImage({ current: img, urls: [img] })
89
+  }
90
+
87 91
   return (
88 92
     // <Modal title={title} visible={show} onClose={onClose}>
89 93
     // eslint-disable-next-line react/jsx-no-undef
90
-    <page-container show={show} position='bottom' onClickOverlay={onClose}>
91
-      <View className='modal-poster' onClick={onClose}>
94
+    <page-modal show={show} position='bottom' onClickOverlay={onClose} height="60vh">
95
+      <View className='modal-poster'>
92 96
         <View className='modal-poster-img-box'>
93
-        {
97
+        {/* {
94 98
           !processing
95
-            ? <Image src={img} mode='scaleToFill' onClick={() => Taro.previewImage({ current: img, urls: [img] })} />
99
+            ? <Image src={img} mode='scaleToFill' onClick={handleImage} />
96 100
             : <Spin2 spinning={processing} size={32} />
97
-        }
101
+        } */}
98 102
         </View>
99 103
         <Button className='modal-poster-action' onClick={handleSave} disabled={!img} loading={loading}>
100 104
           {btnText}
101 105
         </Button>
102 106
       </View>
103 107
       <Poster dataSource={dataSource} onStart={() => setProcessing(true)} onEnd={handlePoster} />
104
-    </page-container>
108
+    </page-modal>
105 109
   )
106 110
 }

+ 8
- 4
src/components/Poster/style.scss View File

@@ -1,19 +1,23 @@
1 1
 .modal-poster {
2
-  width: 100vw;
3
-  height: 100vh;
2
+  // width: 100vw;
3
+  // height: 100vh;
4 4
   // height: calc(100vh - 62rpx);
5
+  height: 100%;
5 6
   box-sizing: border-box;
6 7
   padding: 40rpx;
7 8
 
8 9
   &-img-box {
9
-    flex: auto;
10
-    width: 70%;
11 10
     height: calc(100% - 92rpx - 40rpx);
12 11
     margin: 0 auto;
13 12
     background: #fff;
14 13
     box-shadow: 0 14rpx 24rpx 0 rgba(0, 0, 0, 0.2);
15 14
     position: relative;
16 15
 
16
+    .empty-poster {
17
+      width: auto;
18
+      height: 100%;
19
+    }
20
+
17 21
     image {
18 22
       width: 100%;
19 23
       height: 100%;

+ 1
- 1
src/pages/index/buildingDetail/index.config.js View File

@@ -2,6 +2,6 @@ export default {
2 2
   navigationBarTitleText: '楼盘详情',
3 3
   enableShareAppMessage: true,
4 4
   usingComponents: {
5
-    'page-container': '/native/PageContainer/index'
5
+    'page-modal': '@/native/PageContainer/index'
6 6
   }
7 7
 }

+ 7
- 0
src/utils/hooks/usePoster.js View File

@@ -16,6 +16,13 @@ export default function usePoster(person, poster, router, paramsRef) {
16 16
           name: person.name || person.nickname,
17 17
           avatar: person.avatarurl,
18 18
         })
19
+      }).catch(() => {
20
+        setPosterData({
21
+          poster,
22
+          miniCode: undefined,
23
+          name: person.name || person.nickname,
24
+          avatar: person.avatarurl,
25
+        })
19 26
       })
20 27
     }
21 28
   // eslint-disable-next-line react-hooks/exhaustive-deps