微信小程序开发之会议OA首页后台数据交互(内带新知识点分享)

news2024/11/19 23:17:42

目录

前言

一、后台数据库交互

1.后台操作

1.1 导入会议OA后台项目

1.2 导入数据库文件以及配置数据库连接

1.3 启动后台验证是否拿到数据库数据

2. 前台操作

2.1 关闭mock.js

2.2  删除原有死数据及配置接口

 2.3 定义函数访问获取后台数据

页面效果 

 二、利用工具类优化代码

 util.js

三、 wxs的使用及完善页面显示

3.1 wxs的介绍

模块

 3.2 使用wxs完善页面显示

 comm.wxs

3.3 最终页面显示

 ​编辑


前言

        在前面的几期博客中我们都对会议OA项目进行一个布局以及数据模拟显示,都不是从后台实现数据库交互,显示的都是死数据。今天我来给大家带来有关实现小程序前端数据后台交互,其中还涉及其他新的知识点,请老铁们认真观看。

一、后台数据库交互

1.后台操作

1.1 导入会议OA后台项目

         将资料中的minoa项目导入到我们的IDEA开发工具中,并验证是否能获取后台数据库数据,选择该项目的pom.xml文件

 

         导入项目成之后还要检查Maven以及网络地址是否是阿里云的网址,通过点击右下角项目导入进度条查看

 

1.2 导入数据库文件以及配置数据库连接

         将数据库压缩包解压,在mysql数据库中新建一个mybatis_oapro数据库,在该数据库中运行文件

 

1.3 启动后台验证是否拿到数据库数据

        在MinoaApplication.java类中运行main方法即可,在网页中访问接口看是否有json数据显示。

 

 

2. 前台操作

2.1 关闭mock.js

        防止干扰我们实现后台交互

 

2.2  删除原有死数据及配置接口

 

 2.3 定义函数访问获取后台数据

 loadMeetingInfo(){
    let that=this;
    wx.request({
            url: api.IndexUrl,
            dataType: 'json',
            success(res) {
              console.log(res)
              that.setData({
                lists:res.data.data.infoList
                  
              })

            }
          })
  },

调用函数

 

         因为我们后台数据库中没有图片,设置默认图片

页面效果 

 二、利用工具类优化代码

        在utils文件中的util.js文件封装一个函数用于方便使用请求后台数据方法

 util.js

const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}`
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : `0${n}`
}
/**
 * 封装微信的request请求
 */
function request(url, data = {}, method = "GET") {
  return new Promise(function (resolve, reject) {
    wx.request({
      url: url,
      data: data,
      method: method,
      header: {
        'Content-Type': 'application/json',
      },
      success: function (res) {
        if (res.statusCode == 200) {
            resolve(res.data);//会把进行中改变成已成功
        } else {
          reject(res.errMsg);//会把进行中改变成已失败
        }
      },
      fail: function (err) {
        reject(err)
      }
    })
  });
}

module.exports = {
  formatTime,request
}

        在我们界面.js中应用工具类

 

         优化我们的请求代码

 

这就是我们优化后的请求方法,reqest()中填写请求路径,then中是绑定数据 

三、 wxs的使用及完善页面显示

3.1 wxs的介绍

        在微信小程序中,WXS 是指微信小程序的自定义模板语言,全称是 “Weixin Script”。WXS 可以在小程序的 wxml 文件中使用,用于对数据进行处理和展示。它类似于 JavaScript,但相比之下更加简洁和轻量,适用于小程序的前端开发场景。

        通过 WXS,你可以进行一些简单的逻辑运算、数据格式化、条件判断等操作,方便地对数据进行处理和渲染。可以在 wxml 文件中使用 <wxs> 标签定义和引用 WXS 模块,并在模块中编写相应的逻辑代码。

模块

每一个 .wxs 文件和 <wxs> 标签都是一个单独的模块。

每个模块都有自己独立的作用域。即在一个模块里面定义的变量与函数,默认为私有的,对其他模块不可见。

一个模块要想对外暴露其内部的私有变量与函数,只能通过 module.exports 实现

 3.2 使用wxs完善页面显示

        在utils文件下创建一个coom.wxs用于编写函数实现数据转换,定义所需函数

 comm.wxs

// /pages/comm.wxs

// 将状态数字转为汉字
function getStateName(state){
   if(state == 1){
    return "待审核"
   }else if(state == 2){
    return "审核通过"
   }else if(state == 3){
    return "审核不通过"
   }else if(state == 4){
    return "待开会议"
   }
   return "未定"
}
// 计算参加会议的人数
function getPersonNum(canyuze,liexize,zhuchiren){
     var person = canyuze + "," + liexize + "," + zhuchiren;
     var personnum = [];
     personnum= person.split(",");
     var num =[];
     for (var i = 0; i < personnum.length; i++) {
      if (num.indexOf(personnum[i]) === -1) {
        num.push(personnum[i]);
      }
    }
    return num.length;
}
function formatDate(ts, option) {
  var date = getDate(ts)
  var year = date.getFullYear()
  var month = date.getMonth() + 1
  var day = date.getDate()
  var week = date.getDay()
  var hour = date.getHours()
  var minute = date.getMinutes()
  var second = date.getSeconds()
  
  //获取 年月日
  if (option == 'YY-MM-DD') return [year, month, day].map(formatNumber).join('-')

  //获取 年月
  if (option == 'YY-MM') return [year, month].map(formatNumber).join('-')

  //获取 年
  if (option == 'YY') return [year].map(formatNumber).toString()

  //获取 月
  if (option == 'MM') return  [mont].map(formatNumber).toString()

  //获取 日
  if (option == 'DD') return [day].map(formatNumber).toString()

  //获取 年月日 周一 至 周日
  if (option == 'YY-MM-DD Week')  return [year, month, day].map(formatNumber).join('-') + ' ' + getWeek(week)

  //获取 月日 周一 至 周日
  if (option == 'MM-DD Week')  return [month, day].map(formatNumber).join('-') + ' ' + getWeek(week)

  //获取 周一 至 周日
  if (option == 'Week')  return getWeek(week)

  //获取 时分秒
  if (option == 'hh-mm-ss') return [hour, minute, second].map(formatNumber).join(':')

  //获取 时分
  if (option == 'hh-mm') return [hour, minute].map(formatNumber).join(':')

  //获取 分秒
  if (option == 'mm-dd') return [minute, second].map(formatNumber).join(':')

  //获取 时
  if (option == 'hh')  return [hour].map(formatNumber).toString()

  //获取 分
  if (option == 'mm')  return [minute].map(formatNumber).toString()

  //获取 秒
  if (option == 'ss') return [second].map(formatNumber).toString()

  //默认 时分秒 年月日
  return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
function formatNumber(n) {
  n = n.toString()
  return n[1] ? n : '0' + n
}

function getWeek(n) {
  switch(n) {
      case 1:
      return '星期一'
      case 2:
      return '星期二'
      case 3:
      return '星期三'
      case 4:
      return '星期四'
      case 5:
      return '星期五'
      case 6:
      return '星期六'
      case 7:
      return '星期日'
  }
}
module.exports = {
  getStateName:getStateName,
  getPersonNum:getPersonNum,
  formatDate:formatDate
};

        在.wxml中引用coom.wxs文件,并使用函数

 <wxs src="/utils/coom.wxs" module="tools" />

3.3 最终页面显示

 

 

         本期的博客分享到此结束,希望大家能够三连加关注博客,这是对博主最大的支持。后续会继续分享该项目的博客文章继续完善该项目

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1116903.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《深度学习推荐系统》王喆 笔记

这个笔记&#xff0c;是我记录的阅读该书&#xff0c;对我比较有用的一些点。不算是能完全覆盖全书知识点的笔记。 能完全覆盖全书知识点&#xff0c;比较详尽的笔记&#xff0c;可以参考如下。 《深度学习推荐系统》超级详细读书笔记https://www.zhihu.com/tardis/bd/art/44…

网安周报|OpenSSF 推出恶意软件包存储库

1.OpenSSF 推出恶意软件包存储库 为了应对恶意开源软件包日益增长的威胁&#xff0c;开源安全基金会 ( OpenSSF ) 推出了一项名为“恶意软件包存储库”的新计划。该存储库可能会成为打击恶意代码的主要参与者&#xff0c;旨在增强开源软件生态系统的安全性和完整性。该存储库已…

前端开发中遇到的复杂数据求和问题

在js中常用的数学计算库就是Math&#xff0c;但是Math库中没有能够进行求和的方法 那我们有两种解决办法 1.可以使用另外一种库&#xff1a;BigDecimal.js…或者可以去寻找更合适的库进行操作 2.使用reduce函数 首先我们的数据结构大概是这样子&#xff0c;detials里边的数据可…

软件工程与计算总结(二十三)软件工程职业基础

本系列最后一更&#xff0c;《软计》系列总结的大结局&#xff01;本栏目告一段落&#xff0c;之后会结合真题和练习题再发布新的总结~ 往期链接&#xff1a; 《软件工程与计算》总结 一.软件工程职业 1.行业的发展 20世纪50年代&#xff1a;计算机还是研究型机器&#xff…

STM32基于HAL库RT-Thread Demo测试

STM32基于HAL库RT-Thread Demo测试 &#x1f388;源码地址&#xff1a;https://github.com/RT-Thread/rt-thread/tree/master&#x1f4cc;基于STM32CUBEMX中间件安装《基于 CubeMX 移植 RT-Thread Nano》&#x1f4cd;环境搭建《使用 Env 创建 RT-Thread 项目工程》&#x1f5…

【QT开发(10)】QT 进程

运行一个进程 使用类 QProcess&#xff0c;允许将一个进程堪称一个顺序IO设备。 在Qt中&#xff0c;QProcess类是用于启动外部进程的类。它可以启动任何可执行文件&#xff0c;包括命令行工具和图形用户界面&#xff08;GUI&#xff09;应用程序。 启动一个线程分4步 1、在…

探索图像分割技术:使用 OpenCV 的分水岭算法

贾斯卡兰巴蒂亚 一、说明 图像分割是计算机视觉的一个基本方面&#xff0c;多年来经历了巨大的转变。这将是一系列三篇博客文章&#xff0c;深入研究三种不同的图像分割技术 - 1使用OpenCV的经典分水岭算法&#xff0c;2使用PyTorch实现的基于深度学习的UNet模型&#xff0c;3 …

httpd服务

文章目录 httpd服务1.安装httpd服务2.开启服务&#xff0c;设置服务开机自启立马生效&#xff0c;并查看服务状态3.查看监听端口4.关闭防火墙&#xff0c;设置防火墙开机不自启立马生效&#xff1b;关闭selinux5.写一个index.html文件&#xff0c;在真机浏览器访问测试效果6.查…

【活体检测】“深度学习驱动的人脸反欺诈检测系统:性能提升与多模型支持“

微调小视科技开源静默活体检测模型加载方式&#xff0c;性能提升8倍 I. 引言 在当今数字化时代&#xff0c;人脸反欺诈检测在各种应用中发挥着重要作用&#xff0c;从人脸识别到金融欺诈检测。为了满足不断增长的需求&#xff0c;深度学习技术已成为关键工具&#xff0c;但性…

openGauss学习笔记-105 openGauss 数据库管理-管理用户及权限-默认权限机制

文章目录 openGauss学习笔记-105 openGauss 数据库管理-管理用户及权限-默认权限机制 openGauss学习笔记-105 openGauss 数据库管理-管理用户及权限-默认权限机制 数据库对象创建后&#xff0c;进行对象创建的用户就是该对象的所有者。openGauss安装后的默认情况下&#xff0c…

PowerShell 实现email发送消息

前言 通过Windows powershel​​​​​​​l脚本实现邮件发送 前提条件 开启wmi,配置网卡,参考 脚本说明解释 配置SMTP服务器信息 $smtpServer = "smtp.qiye.163.com"$smtpPort = "25"$username = "XXXX@YOU_email"$password = "YOU_…

改造xxl-job适配nacos注册中心

xxl-job并没有对nacos、zookeeper这一类注册中心进行适配&#xff0c;所以需要进行改造。 改造目标 1.对调度器&#xff0c;需要能注册到nacos上&#xff0c;并且执行器管理里的 机器地址 能使用 lb://serviceName 这种地址 2.对执行器&#xff0c;需要能注册到nacos上&…

激活MacBook的时候有个“文件保险箱磁盘加密“的选项,要不要开启

背景 在激活MacBook的时候&#xff0c;如果填了Apple ID&#xff0c;就会有 “文件保险箱磁盘加密” 的选项&#xff0c;到底是开还是不开呢&#xff1f; 注意&#xff0c;如果激活时跳过Apple ID&#xff0c;则没这选项&#xff0c;可以后续在 “设置->安全性和隐私->文…

天鹰340亿(AquilaChat2-34B-16K)本地部署的解决方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

用WordCloud绘制词云

文章目录 初步认识基本参数掩模参数 初步认识 wordcloud是词云绘图模块&#xff0c;封装了WordCloud词云类&#xff0c;是词云的基本载体。在新建一个词云之后&#xff0c;通过generate装载用以生成词云的字符串&#xff0c;最后用to_file把词云图保存到文件中&#xff0c;例如…

TechSmith Camtasia Studio 23.3.2.49471 Crack

全新的Camtasia 2023.2 Camtasia Studio是专业的屏幕录像和视频编辑的软件套装。软件提供了强大的屏幕录像&#xff08;Camtasia Recorder&#xff09;、视频的剪辑和编辑&#xff08;Camtasia Studio&#xff09;、视频菜单制作&#xff08;Camtasia MenuMaker&#xff09;、视…

基于沙猫群优化的BP神经网络(分类应用) - 附代码

基于沙猫群优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于沙猫群优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.沙猫群优化BP神经网络3.1 BP神经网络参数设置3.2 沙猫群算法应用 4.测试结果&#x…

Linux常用命令——cmp命令

在线Linux命令查询工具 cmp 比较两个文件是否有差异 补充说明 cmp命令用来比较两个文件是否有差异。当相互比较的两个文件完全一样时&#xff0c;则该指令不会显示任何信息。若发现有差异&#xff0c;预设会标示出第一个不通之处的字符和列数编号。若不指定任何文件名称或是…

TIA博途中通过SCATTER指令实现将字节BYTE拆分成单个位的具体方法示例

TIA博途中通过SCATTER指令实现将字节BYTE拆分成单个位的具体方法示例 例如: 我们想判断某个字节中各个位的状态是1还是0 ,如何实现呢? 这里介绍通过SCATTER指令拆分字节的方法,仅供大家参考。 首先,我们先了解以下SCATTER指令的基本功能和使用方法: 如下图所示,在基本指…

无纸化办公小程序数据交互、wxs的使用

前言 很多同志们再写小程序的过程中&#xff0c;不知道该怎么发起HTTP请求到后端&#xff0c;在Web环境中发起HTTPS请求是很常见的&#xff0c;但是微信小程序是腾讯内部的产品&#xff0c;不能直接打开一个外部的链接。例如&#xff0c;在微信小程序中不能直接打开www.taobao…