当前位置:   article > 正文

基于微信小程序云开(统计学生信息并导出excel)3.0版_微信小程序开发:统计人员信息并输出为excel文件

微信小程序开发:统计人员信息并输出为excel文件

前言
随着移动端的不断发展,人们大部分的办公及生活应用都开始趋向于移动端。然而在2017年“微信之父”张小龙带领团队,开发了一款叫做微信小程序的东西,它的出现打破了人们认识移动端的隔膜,由以前的需要先下载app然后在开始工作的老式模式,逐渐的趋向于小程序app(无需下载)的形式。

一、微信小程序是什么?
微信小程序是一种不需要下载安装即可使用的应用,它实现了应用的随开随用,用户只需要用微信扫一扫或者通过微信搜一下即可打开应用,使用完即可关闭,还可以把小程序添加到桌面,真正的做到了便捷方便,用完就走。

二、什么是微信小程序的云开发
云开发为开发者提供完整的云端支持,弱化了后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭代,同时这一能力,同开发者已经使用的云服务相互兼容,并不互斥。

从开发流程来看,以往开发一个微信小程序需要经过产品功能构思、模块划分、原型设计、UI 设计、前端开发、后端开发、接口联调、测试上线等开发阶段。有了「小程序·云开发」后,前端工程师将可以独立实现前端开发、后端开发、接口联调工作,且无需太多后端知识。

首先我讲一下3.0版本的这个系统多了那些变化:

1.首页不在是之前老套的直接显示填表页面,而是由一个首页的登录页面做支撑,添加的一些"授权登录"和"去填表"的功能模块

效果显示:

 2.背景由以前的单调的白色,变为3.0版的渐变色,这样更利于用户在填表时缓解视觉疲劳从而引起填表错误!

3.我们之前的版本的"浏览"页面都是单调的一个点击事件绑定的"表格获取并浏览"的按钮,这样如果经常填表时,用户就会遗忘是否天国此表,用户想查看是否天国此表时,还得点击按钮去浏览器下载excel表并查看自己是否真正的填过此表。

而我们的3.0版本增添了一项非常有用的功能,就是在我们的"浏览"页面增添了一个空间(提交记录显示),这个区域的显示,使得用户在授权登录的情况下,点击此页面,很快就可以明了自己是否真正的跳过此表!!!!

如果要实现下面的功能,我们必须在重新创建一个云数据库,这里我创建的名为:openid

它用来存放(当用户点击授权登录时,存储用户的数据)!!!!

 

效果展示:

 好!我们介绍完之后就上代码!!!

 我还要给大家分享一个网址Vant Weapp - 轻量、可靠的小程序 UI 组件库

 这个是基于GitHub官方的众多大佬打造的一个类似于第三方框架的东西,网站头部部分有使用说明!希望可以帮到更多的人!!!

渐变背景色的实现:

  1. page{
  2. background: -webkit-linear-gradient(top,rgb(241, 224, 123),#e294fa,rgb(33, 224, 238));
  3. }

 shouye.wxml:

  1. <!-- 显示用户登录开始 -->
  2. <view class="denglu">
  3. <view class="denglu1">
  4. <view class="denglu2">
  5. <image src="{{path}}" style="width: 70rpx;height: 70rpx;margin: 10rpx 0 0 20rpx;"></image>
  6. <view style="margin: 15rpx 0 0 20rpx;color: cornsilk;">{{name}}</view>
  7. </view>
  8. </view>
  9. </view>
  10. <!-- 显示用户登录结束 -->
  11. <!-- 轮播图开始 -->
  12. <!-- 轮播图开始 -->
  13. <view class="lunbo">
  14. <swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}">
  15. <block wx:for="{{imgUrls}}" wx:key="index">
  16. <swiper-item class="LB_a">
  17. <image class="LB_b" src="{{item}}" />
  18. </swiper-item>
  19. </block>
  20. </swiper>
  21. </view>
  22. <!-- 轮播图结束 -->
  23. <!-- 轮播图结束 -->
  24. <!-- 填表button -->
  25. <van-button class="tianbiao" type="primary" size="large" bindtap="tianbiao">去填表</van-button>
  26. <!-- 填表button -->
  27. <!-- button登录开始 -->
  28. <view class="shouquandenglu">
  29. <van-button type="warning" bindtap="denglu">授权登录</van-button>
  30. </view>
  31. <!-- button登录结束 -->

shouye.wxss:

  1. /* <!-- 显示用户登录开始 --> */
  2. page{
  3. background: -webkit-linear-gradient(top,rgb(4, 156, 244),#e294fa,rgb(241, 224, 123));
  4. }
  5. .denglu{
  6. margin-top: 20rpx;
  7. display: flex;
  8. flex-direction: row;
  9. justify-content: space-around;
  10. }
  11. .denglu1{
  12. height: 100rpx;
  13. width: 80%;
  14. background-color: rgb(186, 28, 235);
  15. border-radius: 20rpx;
  16. }
  17. .denglu2{
  18. display: flex;
  19. flex-direction: row;
  20. }
  21. /* <!-- 显示用户登录结束 --> */
  22. /* 轮播开始 */
  23. .lunbo{
  24. margin: 50rpx 5% 20rpx 5%;
  25. }
  26. .LB_a{
  27. display: flex;
  28. flex-direction: row;
  29. justify-content: space-around;
  30. }
  31. .LB_b{
  32. width: 96%;
  33. height: 300rpx;
  34. display: inline-block;
  35. box-sizing: border-box;
  36. border-radius:20px;
  37. }
  38. /* 轮播结束 */
  39. .tianbiao{
  40. margin: 0 10% 0 10%;
  41. margin-top: 100rpx;
  42. width: 80%;
  43. }
  44. /* 登录button开始 */
  45. .shouquandenglu{
  46. margin-top: 100rpx;
  47. display: flex;
  48. flex-direction: row;
  49. justify-content: space-around;
  50. }
  51. /* 登录button结束 */

 shouye.js:

  1. // pages/shouye/shouye.js
  2. Page({
  3. /**
  4. * 页面的初始数据
  5. */
  6. data: {
  7. name:"昵称",
  8. path:"/images/touxiang(moren).png",
  9. isshow:true,
  10. show:true,
  11. // 轮播图开始
  12. imgUrls: [
  13. 'cloud://xinwen-0gefvi6q76e983c0.7869-xinwen-0gefvi6q76e983c0-1312066094/xinxiluru_img/hz2.png',
  14. 'cloud://xinwen-0gefvi6q76e983c0.7869-xinwen-0gefvi6q76e983c0-1312066094/xinxiluru_img/hz1.png',
  15. 'cloud://xinwen-0gefvi6q76e983c0.7869-xinwen-0gefvi6q76e983c0-1312066094/xinxiluru_img/hz3.png',
  16. 'cloud://xinwen-0gefvi6q76e983c0.7869-xinwen-0gefvi6q76e983c0-1312066094/xinxiluru_img/hz.png'
  17. ],
  18. indicatorDots: true, //是否显示面板指示点
  19. autoplay: true, //是否自动切换
  20. interval: 2000, //自动切换时间间隔
  21. duration: 300, //滑动动画时长
  22. inputShowed: false,
  23. inputVal: "",
  24. // 轮播图结束
  25. },
  26. denglu(){
  27. let that = this
  28. wx.getUserProfile({
  29. desc: '正在获取',
  30. success:function(res){
  31. console.log('获取成功: ',res)
  32. //添加用户信息到openid数据库
  33. wx.cloud.database().collection('openid').add({
  34. data:{
  35. name:res.userInfo.nickName,
  36. path:res.userInfo.avatarUrl
  37. }
  38. })
  39. //显示用户信息到首页
  40. that.setData({
  41. name:res.userInfo.nickName,
  42. path:res.userInfo.avatarUrl,
  43. show:false
  44. })
  45. //
  46. },
  47. fail:function(err){
  48. console.log("获取失败:",err)
  49. }
  50. })
  51. // return that.setData
  52. },
  53. tianbiao(){
  54. let that = this
  55. if (that.data.name=="昵称") {
  56. wx.showToast({
  57. title: '您还未登录!',
  58. icon:"none"
  59. })
  60. }else{
  61. wx.navigateTo({
  62. url: '../tianbiao/tianbiao',
  63. })
  64. }
  65. },
  66. /**
  67. * 生命周期函数--监听页面加载
  68. */
  69. onLoad(options) {
  70. },
  71. /**
  72. * 生命周期函数--监听页面初次渲染完成
  73. */
  74. onReady() {
  75. },
  76. /**
  77. * 生命周期函数--监听页面显示
  78. */
  79. onShow() {
  80. },
  81. /**
  82. * 生命周期函数--监听页面隐藏
  83. */
  84. onHide() {
  85. },
  86. /**
  87. * 生命周期函数--监听页面卸载
  88. */
  89. onUnload() {
  90. },
  91. /**
  92. * 页面相关事件处理函数--监听用户下拉动作
  93. */
  94. onPullDownRefresh() {
  95. },
  96. /**
  97. * 页面上拉触底事件的处理函数
  98. */
  99. onReachBottom() {
  100. },
  101. /**
  102. * 用户点击右上角分享
  103. */
  104. onShareAppMessage() {
  105. }
  106. })

 shouye.json:

  1. {
  2. "usingComponents": {
  3. "van-icon": "@vant/weapp/icon/index",
  4. "van-button": "@vant/weapp/button/index"
  5. }
  6. }

 

liulan.wxml:

  1. <button bindtap="shuaxin"type="primary">刷新填表记录</button>
  2. <view style="font-size: 30rpx;">提交记录显示:</view>
  3. <view class="xianshi_tianbiao">
  4. <view class="xianshi_tianbiao1">
  5. <!-- 显示用户头像及昵称 -->
  6. <view class="paihao2">
  7. <view class="boxR" wx:for="{{openid}}" wx:key="index">
  8. <view class="yonghuxinxi">
  9. <image style="width: 40rpx;height: 40rpx;" src="{{item.path}}"></image>
  10. <view style="font-size: 25rpx;margin-top:5rpx;">{{item.name}}</view>
  11. </view>
  12. </view>
  13. </view>
  14. </view>
  15. <view class="xianshi_tianbiao1">
  16. <!-- 显示用户琐鲦表中的真实姓名 -->
  17. <view wx:for="{{list}}" wx:key="index">
  18. <view style="font-size: 25rpx;margin-top:5rpx;">姓名:{{item.xingming}}</view>
  19. </view>
  20. </view>
  21. </view>
  22. <view class="jiange"></view>
  23. <view style="margin-top: 300rpx;">
  24. <button type="primary" bindtap="getyunhanshu">表格获取并浏览</button>
  25. </view>
  26. <view class="shuoming">说明:点击“表格获取并浏览”后系统会自动把表格网页地址赋值到您的设备的粘贴板,直接可以在浏览器粘贴浏览,无需再次手动复制。感谢使用本小程序!</view>
  27. <view class="jiange"></view>

liulan.wxss:

  1. page{
  2. background: -webkit-linear-gradient(top,rgb(241, 224, 123),#e294fa,rgb(33, 224, 238));
  3. }
  4. .shuoming{
  5. padding: 50rpx 50rpx 0 50rpx;
  6. color: red;
  7. }
  8. .yonghuxinxi{
  9. display: flex;
  10. flex-direction: row;
  11. }
  12. .xianshi_tianbiao{
  13. display: flex;
  14. flex-direction: row;
  15. justify-content: space-around;
  16. }
  17. .xianshi_tianbiao1{
  18. display: flex;
  19. flex-direction: row;
  20. }

liulan.js:

  1. const db = wx.cloud.database()
  2. Page({
  3. /**
  4. * 页面的初始数据
  5. */
  6. data: {
  7. list:[],
  8. openid:[]
  9. },
  10. shuaxin(){
  11. let that = this
  12. db.collection('users').get({
  13. success(res){
  14. console.log(res.data)
  15. that.setData({
  16. list:res.data
  17. })
  18. }
  19. })
  20. db.collection('openid').get({
  21. success:function(res){
  22. console.log('用户信息获取成功',res.data)
  23. that.setData({
  24. openid:res.data
  25. })
  26. },
  27. fail:function(res){
  28. console.log('用户信息获取失败',res)
  29. }
  30. })
  31. },
  32. //响应云函数按钮
  33. getyunhanshu(){
  34. wx.cloud.callFunction({
  35. name:"stuexcel", // 调用的云函数名
  36. data:{
  37. clssdata:'1111' //根据班级字段,导出班级成员信息 ===对应云函数clssdata
  38. },
  39. complete:res=>{
  40. console.log(res.result)
  41. // return
  42. //获取文件下载地址(24小时内有效)
  43. wx.cloud.getTempFileURL({
  44. fileList:[res.result.fileID],
  45. success:res=>{
  46. console.log('文件下载链接:',res.fileList[0].tempFileURL)
  47. this.setData({ //设置data中定义相应的变量
  48. tempFileURL:res.fileList[0].tempFileURL,
  49. })
  50. //复制刚获取到链接,成功后会自动弹窗提示已复制
  51. wx.setClipboardData({
  52. data:this.data.tempFileURL,
  53. success (res) {
  54. wx.getClipboardData({
  55. success (res) {
  56. console.log('复制成功:',res.data) // data
  57. }
  58. })
  59. }
  60. })
  61. }
  62. })
  63. }
  64. })
  65. },
  66. /**
  67. * 生命周期函数--监听页面加载
  68. */
  69. onLoad: function (options) {
  70. },
  71. /**
  72. * 生命周期函数--监听页面初次渲染完成
  73. */
  74. onReady: function () {
  75. },
  76. /**
  77. * 生命周期函数--监听页面显示
  78. */
  79. onShow: function () {
  80. },
  81. /**
  82. * 生命周期函数--监听页面隐藏
  83. */
  84. onHide: function () {
  85. },
  86. /**
  87. * 生命周期函数--监听页面卸载
  88. */
  89. onUnload: function () {
  90. },
  91. /**
  92. * 页面相关事件处理函数--监听用户下拉动作
  93. */
  94. onPullDownRefresh: function () {
  95. },
  96. /**
  97. * 页面上拉触底事件的处理函数
  98. */
  99. onReachBottom: function () {
  100. },
  101. /**
  102. * 用户点击右上角分享
  103. */
  104. onShareAppMessage: function () {
  105. }
  106. })

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/571061
推荐阅读
  

闽ICP备14008679号