dingxin 6 年 前
コミット
8ba80d1b49

+ 12
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/model/TpActivity.java ファイルの表示

@@ -47,6 +47,18 @@ public class TpActivity {
47 47
      * 报名状态
48 48
      */
49 49
     private String signStatus;
50
+    /**
51
+     * 签到状态
52
+     */
53
+    private  String signType;
54
+
55
+    public String getSignType() {
56
+        return signType;
57
+    }
58
+
59
+    public void setSignType(String signType) {
60
+        this.signType = signType;
61
+    }
50 62
 
51 63
     private List<String> imgList;
52 64
 

+ 4
- 1
CODE/smart-community/app-api/src/main/java/com/community/huiju/service/impl/SocialServiceImpl.java ファイルの表示

@@ -197,7 +197,10 @@ public class SocialServiceImpl implements SocialServiceI {
197 197
             activity.setViewCount(allViewNum);
198 198
             tpActivityMapper.updateByPrimaryKeySelective(activity);
199 199
         }
200
-
200
+        TpActivitySignIn tpActivitySignIn= tpActivitySignInMapper.selectByPrimaryKey(userId);
201
+        if (null!=tpActivitySignIn) {
202
+//            tpActivitySignIn.signType()
203
+        }
201 204
         TpActivity tpActivity = tpActivityMapper.selectByPrimaryKey(activityId,communityId);
202 205
         TpUser tpUser = tpUserMapper.selectByPrimaryKey(tpActivity.getCreateUser());
203 206
         if (null != tpUser) {

+ 1
- 1
CODE/smart-community/property-api/src/main/java/com/community/huiju/controller/ActivityController.java ファイルの表示

@@ -80,7 +80,7 @@ public class ActivityController extends BaseController {
80 80
             @ApiImplicitParam(paramType = "header", dataTypeClass = String.class, name = "Login-Type", value = "值为 web"),
81 81
             @ApiImplicitParam(paramType = "body", dataTypeClass = String.class, name = "parameter", value = "id活动编号;activityTitle活动标题;" +
82 82
                     "activityCarouselImg轮播图;activityContent活动详情;contentImg活动内容配图;signUpMax活动人数上限;" +
83
-                    "registrationEndTime报名活动结束时间;sort权重;status状态 0 是已作废 1 是已发布   2 是草稿,radio:1是需要二维码,2是不需要")
83
+                    "registrationEndTime报名活动结束时间;sort权重;status状态 0 是已作废 1 是已发布   2 是草稿,signInCode:1是需要二维码,2是不需要")
84 84
     })
85 85
     @RequestMapping(value = "/activity/update", method = RequestMethod.PUT)
86 86
     public ResponseBean updateActivity(@RequestBody String parameter, HttpSession session) {

+ 5
- 2
CODE/smart-community/property-api/src/main/java/com/community/huiju/service/impl/TaUserVerifyServiceImpl.java ファイルの表示

@@ -7,9 +7,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
7 7
 import com.community.commom.constant.Constant;
8 8
 import com.community.commom.mode.ResponseBean;
9 9
 import com.community.commom.session.UserElement;
10
+import com.community.huiju.dao.MessageMapper;
10 11
 import com.community.huiju.dao.TaUserMapper;
11 12
 import com.community.huiju.dao.TaUserVerifyMapper;
12 13
 import com.community.huiju.dao.UserMapper;
14
+import com.community.huiju.model.Message;
13 15
 import com.community.huiju.model.TaUser;
14 16
 import com.community.huiju.model.TaUserVerify;
15 17
 import com.community.huiju.model.User;
@@ -18,6 +20,8 @@ import org.apache.commons.lang.StringUtils;
18 20
 import org.springframework.beans.factory.annotation.Autowired;
19 21
 import org.springframework.stereotype.Service;
20 22
 
23
+import java.time.LocalDateTime;
24
+import java.util.Date;
21 25
 import java.util.List;
22 26
 
23 27
 /**
@@ -67,9 +71,8 @@ public class TaUserVerifyServiceImpl extends ServiceImpl<TaUserVerifyMapper, TaU
67 71
         String status = verifyStatus == true ? Constant.APPROVED : Constant.REJECTED;
68 72
         userVerify.setVerifyStatus(status);
69 73
         userVerify.setVerifyName(user.getUserName());
70
-
71
-        taUserVerifyMapper.updateById(userVerify);
72 74
         responseBean.addSuccess("操作成功!");
75
+
73 76
         return responseBean;
74 77
     }
75 78
 }

+ 9
- 18
CODE/smart-community/property-api/src/main/java/com/community/huiju/service/impl/TpActivityServiceImpl.java ファイルの表示

@@ -236,21 +236,17 @@ public class TpActivityServiceImpl extends ServiceImpl<TpActivityMapper, TpActiv
236 236
                 // 扫码签到
237 237
 
238 238
                 if (radio==1){
239
-                    try {
240
-                       InputStream inputStream= QRCode.encode(qrCodePerproties.getUrl(),tpActivity.getId()+"");
241
-                        String codeUrl= imageServiceI.getImageUrl(inputStream);
239
+
240
+//                       InputStream inputStream= QRCode.encode(qrCodePerproties.getUrl(),tpActivity.getId()+"");
241
+//                        String codeUrl= imageServiceI.getImageUrl(inputStream);
242 242
                         TdImages tdImages= new TdImages();
243
-                        tdImages.setImageUrl(codeUrl);
243
+                        tdImages.setImageUrl(qrCodePerproties.getUrl() + tpActivity.getId());
244 244
                         tdImages.setUuid(tpActivity.getId());
245 245
                         tdImages.setType("activityCode");
246 246
                         tdImages.setCreateUser(userElement.getId());
247 247
                         tdImages.setCreateTime(LocalDateTime.now());
248 248
                         tdImagesMapper.insert(tdImages);
249
-                    } catch (WriterException e) {
250
-                        e.printStackTrace();
251
-                    } catch (IOException e) {
252
-                        e.printStackTrace();
253
-                    }
249
+
254 250
 
255 251
                 }
256 252
 
@@ -344,21 +340,16 @@ public class TpActivityServiceImpl extends ServiceImpl<TpActivityMapper, TpActiv
344 340
          tdImagesMapper.delete(queryWrapper);
345 341
 
346 342
         if (radio==1){
347
-            try {
348
-                InputStream inputStream= QRCode.encode(qrCodePerproties.getUrl(), tpActivity.getId()+"");
349
-                String codeUrl= imageServiceI.getImageUrl(inputStream);
343
+
344
+//                InputStream inputStream= QRCode.encode(qrCodePerproties.getUrl(), tpActivity.getId()+"");
345
+//                String codeUrl= imageServiceI.getImageUrl(inputStream);
350 346
                 TdImages tdImages= new TdImages();
351
-                tdImages.setImageUrl(codeUrl);
347
+                tdImages.setImageUrl(qrCodePerproties.getUrl() + tpActivity.getId());
352 348
                 tdImages.setUuid(tpActivity.getId());
353 349
                 tdImages.setType(Constant.ACTIVITY);
354 350
                 tdImages.setCreateUser(userElement.getId());
355 351
                 tdImages.setCreateTime(LocalDateTime.now());
356 352
                 tdImagesMapper.insert(tdImages);
357
-            } catch (WriterException e) {
358
-                e.printStackTrace();
359
-            } catch (IOException e) {
360
-                e.printStackTrace();
361
-            }
362 353
 
363 354
         }
364 355
 

+ 1
- 0
VUECODE/smart-property-manage/package.json ファイルの表示

@@ -23,6 +23,7 @@
23 23
     "js-cookie": "2.2.0",
24 24
     "normalize.css": "7.0.0",
25 25
     "nprogress": "0.2.0",
26
+    "qrcode": "^1.3.3",
26 27
     "qs": "^6.6.0",
27 28
     "vue": "2.5.17",
28 29
     "vue-amap": "^0.5.8",

+ 1
- 1
VUECODE/smart-property-manage/src/api/activity.js ファイルの表示

@@ -39,7 +39,7 @@ export function updateActivity(data) {
39 39
     url: '/activity/update',
40 40
     method: 'put',
41 41
     data: {
42
-      radio: data.radio,
42
+      signInCode: data.signInCode,
43 43
       id: data.id,
44 44
       activityTitle: data.activityTitle,
45 45
       activityCarouselImg: data.activityCarouselImg, // 轮播图

+ 10
- 1
VUECODE/smart-property-manage/src/views/social/activity/edi/index.vue ファイルの表示

@@ -50,6 +50,13 @@
50 50
             placeholder="选择日期"/>
51 51
         </div>
52 52
       </el-form-item>
53
+      <el-form-item>
54
+      <div style="display: flex;">
55
+          <span style="width: 200px;transform:translateY(-1%);">是否需要报名人扫码签到</span>
56
+          <el-radio v-model="ruleForm.signInCode" label="1" style="padding-left:4%;font-weight:bold;font-size:12px;transform:translateY(30%);">需要</el-radio>
57
+          <el-radio v-model="ruleForm.signInCode" label="2" style="padding-left:8%;font-weight:bold;font-size:12px;transform:translateY(30%);">不需要</el-radio> 
58
+      </div>
59
+      </el-form-item>
53 60
       <el-form-item prop="sort">
54 61
         <div style="display: flex; justify-content: flex-start;">
55 62
           <span style="width: 120px;">权重值</span>
@@ -70,6 +77,7 @@ export default {
70 77
   data() {
71 78
     return {
72 79
       ruleForm: {
80
+        signInCode: '',
73 81
         id: '',
74 82
         activityTitle: '',
75 83
         activityCarouselImg: '', // 轮播图
@@ -78,7 +86,8 @@ export default {
78 86
         signUpMax: '', //  活动人数上限
79 87
         registrationEndTime: '', // 报名活动结束时间
80 88
         sort: 1, // 权重
81
-        status: '' // 状态 0 是已作废 1 是已发布   2 是草稿 3 是已修改
89
+        status: '', // 状态 0 是已作废 1 是已发布   2 是草稿 3 是已修改
90
+        radio: ''
82 91
       },
83 92
       activityContentList: [], // 活动配图预览列表
84 93
       imageUrl: '', // 轮播图预览

+ 55
- 24
VUECODE/smart-property-manage/src/views/social/activity/info/index.vue ファイルの表示

@@ -6,24 +6,20 @@
6 6
       {{ ruleForm.activityContent }}
7 7
     </div>
8 8
     <div class="activityContextImg">
9
-      <img v-for="item in ruleForm.contentImg" :src="item" width="80" height="80" >
9
+      <img v-for="item in ruleForm.contentImg" :src="item" width="80" height="80" />
10 10
     </div>
11
+    <span v-if="ruleForm.signInCode=='1'">
11 12
     <div style="display: flex;">
12 13
           <span style="width: 200px;transform:translateY(25%);">是否需要报名人扫码签到</span>
13
-          <el-radio v-model="ruleForm.radio" label="1" style="padding-left:4%;font-weight:bold;font-size:12px;transform:translateY(30%);">需要</el-radio>
14
-          <el-radio v-model="ruleForm.radio" label="2" style="padding-left:8%;font-weight:bold;font-size:12px;transform:translateY(30%);">不需要</el-radio> 
15
-          <el-button type="primary" style="float:left;" @click="singn">查看签到名单</el-button> 
14
+          <el-radio v-model="ruleForm.signInCode" label="1" style="padding-left:4%;font-weight:bold;font-size:12px;transform:translateY(30%);">需要</el-radio>
15
+          <el-radio v-model="ruleForm.signInCode" label="2" style="padding-left:8%;font-weight:bold;font-size:12px;transform:translateY(30%);">不需要</el-radio> 
16
+          <span style="padding-left:20%"><el-button type="primary" style="float:left;" @click="singn">查看签到名单</el-button></span> 
16 17
     </div>
17
-      <div style="padding-left:30%;">
18
-        <div><img :src="ruleForm.activityCode" width="200" height="200" ></div>
19
-        
20
-        <a :href="ruleForm.activityCode" download="图片">
21
-      <img :src="ruleForm.activityCode" alt="图片">
22
-        </a>
23
-
24
-        <!-- <a download="图片" :href="ruleForm.activityCode + 'admin/miniProgram.jpg'">点击下载</a>
25
-        <div><el-button type="primary" style="float:left;" @click=" downloadCodeImg()">查看签到名单</el-button> </div> -->
26
-      </div>
18
+    <div style="padding-left:30%;">
19
+        <div><img :src="qrcode" width="200" height="200" ></div>
20
+        <a :href="qrcode" download="qrcode.jpg"  style="color:#00BFFF;padding-left:15%">点击下载</a>
21
+    </div>
22
+    </span>
27 23
     <div class="progress">
28 24
       <div class="text-progress">
29 25
         <span class="people-number">已报名人数 {{ ruleForm.signUpCount }}</span>
@@ -32,7 +28,7 @@
32 28
       </div>
33 29
       <div class="circular"/>
34 30
       <div class="people-limit">限制{{ ruleForm.signUpMax }}人</div>
35
-      <a type="primary" style="float: left;" @click="lockSignUp">查看报名名单</a>
31
+      <el-button type="primary" style="float: left;" @click="lockSignUp">查看报名名单</el-button>
36 32
     </div>
37 33
     <span>报名截止时间:{{ formatDate(ruleForm.registrationEndTime) }}</span>
38 34
     <div class="bom-button">
@@ -43,6 +39,8 @@
43 39
 
44 40
 <script>
45 41
 import html2canvas from 'html2canvas';
42
+import QRCode from 'qrcode'
43
+
46 44
 export default {
47 45
   name: 'Index',
48 46
   data() {
@@ -61,8 +59,11 @@ export default {
61 59
         sort: 1, // 权重
62 60
         status: '' // 状态 0 是已作废 1 是已发布   2 是草稿 3 是已修改
63 61
       },
62
+      codeIMG: '',
63
+      ownerDocument: '',
64 64
       isEdi: true, // 显示修改按钮
65
-      innerW: 0 // 进度条
65
+      innerW: 0, // 进度条
66
+      qrcode: '',
66 67
     }
67 68
   },
68 69
   mounted() {
@@ -76,12 +77,10 @@ export default {
76 77
         this.ruleForm = resData.info
77 78
         this.codeIMG =resData.info.activityCode
78 79
         this.ruleForm.contentImg = resData.contentImg
79
-        if (this.ruleForm.signUpMax !== 0) {
80
-          const tempNum = 450 / this.ruleForm.signUpMax
81
-          this.innerW = this.ruleForm.signUpCount * tempNum
82
-          console.log(this.$refs.innerDiv.style.width)
83
-          console.log(this.innerW)
84
-        }
80
+
81
+        QRCode.toDataURL(this.codeIMG, (err, url)=> {
82
+          this.qrcode = url
83
+        })
85 84
         if (this.ruleForm.status === '0') {
86 85
           this.isEdi = false
87 86
         }
@@ -121,8 +120,40 @@ export default {
121 120
   alink.href = this.ruleForm.activityCode;
122 121
   alink.download = "pic"; //图片名
123 122
   alink.click();
124
-  }
125
-  
123
+  },
124
+
125
+   dataURLToBlob(dataurl) {//ie 图片转格式
126
+          var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
127
+            bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
128
+          while (n--) {
129
+            u8arr[n] = bstr.charCodeAt(n);
130
+          }
131
+          return new Blob([u8arr], {type: mime})
132
+        },
133
+        
134
+        downloadResult() {
135
+          html2canvas(document.getElementById('mymap')).then(canvas => {
136
+				this.imgmap = canvas.toDataURL()
137
+				console.log(999, this.imgmap)
138
+				if (window.navigator.msSaveOrOpenBlob) {
139
+					var bstr = atob(this.imgmap.split(',')[1])
140
+					var n = bstr.length
141
+					var u8arr = new Uint8Array(n)
142
+					while (n--) {
143
+						u8arr[n] = bstr.charCodeAt(n)
144
+					}
145
+					var blob = new Blob([u8arr])
146
+					window.navigator.msSaveOrOpenBlob(blob, 'chart-download' + '.' + 'png')
147
+				} else {
148
+					// 这里就按照chrome等新版浏览器来处理
149
+					const a = document.createElement('a')
150
+					a.href = this.imgmap
151
+					a.setAttribute('download', 'chart-download')
152
+					a.click()
153
+				}
154
+ 
155
+			});
156
+        }
126 157
 }
127 158
   }
128 159
 </script>