pull/18/head
wny 2 years ago
parent 3d02960209
commit 4549d11492

@ -0,0 +1,31 @@
/*
* Eslint config file
* Documentation: https://eslint.org/docs/user-guide/configuring/
* Install the Eslint extension before using this feature.
*/
module.exports = {
env: {
es6: true,
browser: true,
node: true,
},
ecmaFeatures: {
modules: true,
},
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module',
},
globals: {
wx: true,
App: true,
Page: true,
getCurrentPages: true,
getApp: true,
Component: true,
requirePlugin: true,
requireMiniProgram: true,
},
// extends: 'eslint:recommended',
rules: {},
}

@ -0,0 +1,12 @@
# 云开发 quickstart
这是云开发的快速启动指引,其中演示了如何上手使用云开发的三大基础能力:
- 数据库:一个既可在小程序前端操作,也能在云函数中读写的 JSON 文档型数据库
- 文件存储:在小程序前端直接上传/下载云端文件,在云开发控制台可视化管理
- 云函数:在云端运行的代码,微信私有协议天然鉴权,开发者只需编写业务逻辑代码
## 参考文档
- [云开发文档](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html)

@ -0,0 +1,6 @@
{
"permissions": {
"openapi": [
]
}
}

@ -0,0 +1,83 @@
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
//写有关于数据库操作的地方
//获取数据库的连接对象
const db = cloud.database();
//在一个云函数里面有4种数据库操作。所以要先判断是什么操作增删改查
//增
if(event.option=='add'){
return await db.collection('users').add({
//花括号里面是你要添加的对象
data:event.addData
//可添加多条或一条
//event:包含传过来的所有数据的一个对象
});
}
//删
else if(event.option=="deleteuser"){
return await db.collection('users').where({
//将要删除的值赋给name
User_ID:event.delUser_ID
}).remove();
}
else if(event.option=="deleteusers"){
return await db.collection('users').where({
//将要删除的值赋给name
User_College:event.delUser_College,
User_Grade:event.delUser_Grade,
User_Class:event.delUser_Class
}).remove();
}
//查
else if(event.option=="getID"){
return await db.collection('users').where({
User_ID:event.getUser_ID
}).get({
success:function(res){
return res
}
})
}
else if(event.option=="getCollege"){
return await db.collection('users').where({
User_College:event.getUser_College,
User_Grade:event.getUser_Grade,
User_Class:event.getUser_Class
}).get({
success:function(res){
return res
}
})
}
else if(event.option=="getusers"){
return await db.collection('users').where({
}).get({
success:function(res){
return res
}
})
}
//改
else if(event.option=="update"){
return await db.collection('users').where({
User_ID:event.updateUser_ID
}).update({
data:{
User_College:event.updateUser_College
}
})
}
}

@ -0,0 +1,14 @@
{
"name": "useroption",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"wx-server-sdk": "~2.6.3"
}
}

@ -0,0 +1,20 @@
// app.js
App({
onLaunch: function () {
if (!wx.cloud) {
console.error('请使用 2.2.3 或以上的基础库以使用云能力');
} else {
wx.cloud.init({
// env 参数说明:
// env 参数决定接下来小程序发起的云开发调用wx.cloud.xxx会默认请求到哪个云环境的资源
// 此处请填入环境 ID, 环境 ID 可打开云控制台查看
// 如不填则使用默认环境(第一个创建的环境)
// env: 'my-env-id',
env:'cloud1-5gsqi02q8e4bd2dc',
traceUser: true,
});
}
this.globalData = {};
}
});

@ -0,0 +1,72 @@
{
"pages": [
"pages/login/login",
"pages/Find directions/Find directions",
"pages/text/text",
"pages/ModifyMap/ModifyMap",
"pages/ModifyInformation/ModifyInformation",
"pages/ManageAccount/ManageAccount",
"pages/index/index",
"pages/adduser/index",
"pages/addusers/index",
"pages/adduserssuccess/index",
"pages/delete/index",
"pages/deleteuser/index",
"pages/deleteusers/index",
"pages/deleteuserssuccess/index",
"pages/selectusers/index",
"pages/selectusers(ID)/index",
"pages/selectusers(college)/index",
"pages/selectuserss/index",
"pages/selectuserssuccess/index",
"pages/updateusers/index",
"pages/updateuserssuccess/index",
"pages/index_hjf/index_hjf",
"pages/index1/index1",
"pages/adlogin/adlogin",
"pages/login_1/login_1",
"pages/getWeather/getWeather",
"pages/map/map"
],
"window": {
"backgroundColor": "#F6F6F6",
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#F6F6F6",
"navigationBarTitleText": "管理用户",
"navigationBarTextStyle": "black"
},
"tabBar": {
"color": "#dddddd",
"selectedColor": "#3cc51f",
"borderStyle": "black",
"backgroundColor": "#ffffff",
"list": [{
"pagePath": "pages/map/map",
"iconPath": "image/wechat.png",
"selectedIconPath": "image/locate.png",
"text": "导航"
},{
"pagePath": "pages/text/text",
"iconPath": "image/locate.png",
"selectedIconPath": "image/locateHL.png",
"text": "信息栏"
}
]
},
"debug": true,
"style": "v2",
"sitemapLocation": "sitemap.json",
"requiredPrivateInfos":[
"getLocation"
],
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序位置接口的效果展示"
}
},
"navigateToMiniProgramAppIdList": [
"wx5e77d1bb9e24f179"
]
}

@ -0,0 +1,27 @@
/**app.wxss**/
.container {
display: flex;
flex-direction: column;
align-items: center;
box-sizing: border-box;
}
button {
background: initial;
}
button:focus{
outline: 0;
}
button::after{
border: none;
}
page {
background: #f6f6f6;
display: flex;
flex-direction: column;
justify-content: flex-start;
}

@ -0,0 +1,37 @@
// miniprogram/components/cloudTipModal/index.js
const { isMac } = require('../../envList.js');
Component({
/**
* 页面的初始数据
*/
data: {
showUploadTip: false,
tipText: isMac ? 'sh ./uploadCloudFunction.sh' : './uploadCloudFunction.bat'
},
properties: {
showUploadTipProps: Boolean
},
observers: {
showUploadTipProps: function(showUploadTipProps) {
this.setData({
showUploadTip: showUploadTipProps
});
}
},
methods: {
onChangeShowUploadTip() {
this.setData({
showUploadTip: !this.data.showUploadTip
});
},
copyShell() {
wx.setClipboardData({
data: this.data.tipText,
});
},
}
});

@ -0,0 +1,4 @@
{
"usingComponents": {},
"component": true
}

@ -0,0 +1,13 @@
<!--miniprogram/components/cloudTipModal/index.wxml-->
<view class="install_tip" wx:if="{{showUploadTip}}">
<view class="install_tip_back"></view>
<view class="install_tip_detail">
<view class="install_tip_detail_title">体验前需部署云资源</view>
<view class="install_tip_detail_tip">请开启调试器进入终端窗口,复制并运行以下命令</view>
<view class="install_tip_detail_shell">
{{tipText}}
<view bindtap="copyShell" class="install_tip_detail_copy">复制</view>
</view>
<view bindtap="onChangeShowUploadTip" class="install_tip_detail_button">已执行命令</view>
</view>
</view>

@ -0,0 +1,57 @@
.install_tip_back {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: rgba(0,0,0,0.4);
z-index: 1;
}
.install_tip_detail {
position: fixed;
background-color: white;
right: 0;
bottom: 0;
left: 0;
top: 60%;
border-radius: 40rpx 40rpx 0 0;
padding: 50rpx;
z-index: 9;
}
.install_tip_detail_title {
font-weight: 400;
font-size: 40rpx;
text-align: center;
}
.install_tip_detail_tip {
font-size: 25rpx;
color: rgba(0,0,0,0.4);
margin-top: 20rpx;
text-align: center;
}
.install_tip_detail_shell {
margin: 70rpx 0;
display: flex;
justify-content: center;
}
.install_tip_detail_copy {
color: #546488;
margin-left: 10rpx;
}
.install_tip_detail_button {
color: #07C160;
font-weight: 500;
background-color: rgba(0,0,0,0.1);
width: 60%;
text-align: center;
height: 90rpx;
line-height: 90rpx;
border-radius: 10rpx;
margin: 0 auto;
}

@ -0,0 +1,6 @@
const envList = [{"envId":"cloud1-7gnkwzfv6ba72e50","alias":"cloud1"}]
const isMac = false
module.exports = {
envList,
isMac
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="8px" height="14px" viewBox="0 0 8 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>☀ iOS/☀ 图标/线型/icons_outlined_arrow@3x</title>
<g id="控件" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" fill-opacity="0.3">
<g id="4.列表/z.覆盖层/右边/箭头" transform="translate(-334.000000, -21.000000)" fill="#000000">
<g id="☀-iOS/☀-图标/线型/icons_outlined_arrow" transform="translate(332.000000, 16.000000)">
<path d="M2.45405845,6.58064919 L3.51471863,5.51998901 L9.29361566,11.298886 C9.68374096,11.6890113 9.6872014,12.318069 9.29361566,12.7116547 L3.51471863,18.4905518 L2.45405845,17.4298916 L7.87867966,12.0052704 L2.45405845,6.58064919 Z" id="Combined-Shape"></path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 906 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

@ -0,0 +1,66 @@
// pages/Find directions/Find directions.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

@ -0,0 +1,2 @@
<!--pages/Find directions/Find directions.wxml-->
<text>pages/Find directions/Find directions.wxml</text>

@ -0,0 +1,17 @@
Page({
data: {
loginOK: false
},
//information
information() {
wx.navigateTo({
url: '/pages/ModifyInformation/ModifyInformation',
})
},
//account
account() {
wx.navigateTo({
url: '/pages/index/index'
})
}
})

@ -0,0 +1,4 @@
<view class="ModifyAccount">
<button class="information" type="primary" bindtap="information" style="width: 387rpx; height: 108rpx; display: block; box-sizing: border-box; left: -182rpx; top: 1081rpx; position: relative">修改信息</button>
<button class="account" type="primary" bindtap="account" style="width: 361rpx; height: 108rpx; display: block; box-sizing: border-box; left: 194rpx; top: 973rpx; position: relative">管理账户</button>
</view>

@ -0,0 +1 @@
/* pages/ManageAccount/ManageAccount.wxss */

@ -0,0 +1,32 @@
Page({
check() {
wx.navigateToMiniProgram({
appId: 'wx5e77d1bb9e24f179', // 小程序B的appid**
path: 'pages/index/index', //小程序B的页面路径**
extraData: {},
envVersion: 'release', //打开版本 开发版 develop体验版trial 正式版release
success(res) {
// 打开成功
},
fail(res){
//打开失败
}
})
},
data: {
loginOK: false
},
//information
information() {
wx.navigateTo({
url: '/pages/ModifyInformation/ModifyInformation',
})
},
//account
account() {
wx.navigateTo({
url: '/pages/index/index'
})
}
})

@ -0,0 +1,6 @@
<button class="account" type="primary" bindtap="check" style="width: 462rpx; height: 101rpx; display: block; box-sizing: border-box; left: 0rpx; top: 404rpx; position: relative">发布公告</button>
<view class="ModifyInformation">
<button class="information" type="primary" bindtap="information" style="width: 425rpx; height: 99rpx; display: block; box-sizing: border-box; left: -211rpx; top: 983rpx; position: relative">修改公告栏信息</button>
<button class="account" type="primary" bindtap="account" style="width: 392rpx; height: 99rpx; display: block; box-sizing: border-box; left: 197rpx; top: 884rpx; position: relative">管理账户信息</button>
</view>

@ -0,0 +1 @@
/* pages/ModifyInformation/ModifyInformation.wxss */

@ -0,0 +1,66 @@
// pages/ModifyMap/ModifyMap.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

@ -0,0 +1,2 @@
<!--pages/ModifyMap/ModifyMap.wxml-->
<text>pages/ModifyMap/ModifyMap.wxml</text>

@ -0,0 +1,89 @@
// pages/index/index.js
//连接数据库
const db = wx.cloud.database()
Page({
/**
* 页面的初始数据
*/
data: {
User_ID:'',
User_College:'',
User_Key:'',
User_Class:'',
User_Grade:''
},
//监听并修改用户名和年龄的输入
inputID:function(e){
this.setData({
User_ID:e.detail.value
})
},
inputCollege:function(e){
this.setData({
User_College:e.detail.value
})
},
inputGrade:function(e){
this.setData({
User_Grade:e.detail.value
})
},
inputClass:function(e){
this.setData({
User_Class:e.detail.value
})
},
inputKey:function(e){
this.setData({
User_Key:e.detail.value
})
},
//使用云函数
//插入数据(增)
add:function(e){
//要添加的数据是一个对象
// var user={
// username:this.data.username,
// age:this.data.age
// };
console.log(e);
wx.cloud.callFunction({
name: 'useroption',
data: {
option: 'add',
addData:{
User_ID:this.data.User_ID,
User_College:this.data.User_College,
User_Grade:this.data.User_Grade,
User_Class:this.data.User_Class,
User_Key:this.data.User_Key
}
},
success: res => {
wx.showToast({
title: '用户添加成功',
})
console.log("添加成功")
console.log(res)
},
fail:err => {
wx.showToast({
title: '用户添加失败',
})
}
})
},
getback:function(){
wx.navigateBack({
delta:1,
})
}
})

@ -0,0 +1,35 @@
<!--pages/addusers/index.wxml-->
<view class="add">
<input
type="text"
value="{{User_ID}}"
placeholder="请输入学号"
bindblur="inputID"
/>
<input
type="text"
value="{{User_College}}"
bindblur="inputCollege"
placeholder="请输入用户院系"
/>
<input
type="text"
value="{{User_Class}}"
bindblur="inputClass"
placeholder="请输入用户班级"
/>
<input
type="text"
value="{{User_Grade}}"
bindblur="inputGrade"
placeholder="请输入用户年级"
/>
<input
type="text"
value="{{User_Key}}"
bindblur="inputKey"
placeholder="请输入用户密码"
/>
<button class="button" bindtap="add" type="primary">增加</button>
</view>
<button class="button" type="primary" bindtap="getback">返回</button>

@ -0,0 +1,100 @@
/* pages/addusers/index.wxss */
page {
padding-top: 54rpx;
background-color: #f6f6f6;
padding-bottom: 60rpx;
}
.button {
margin-top: 50px;
margin-left: 50px;
margin-right: 50px;
}
.title {
font-family: PingFang SC;
font-weight: 500;
color: #000000;
font-size: 44rpx;
margin-bottom: 40rpx;
}
.top_tip {
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #888888;
margin-bottom: 28rpx;
}
.power {
margin-top: 30rpx;
border-radius: 5px;
background-color: white;
width: 93%;
padding-bottom: 1rpx;
}
.power_info {
display: flex;
padding: 30rpx 25rpx;
align-items: center;
justify-content: space-between;
}
.power_info_more {
width: 30rpx;
height: 30rpx;
transform: rotate(90deg);
}
.power_info_less {
width: 30rpx;
height: 30rpx;
transform: rotate(270deg);
}
.power_info_text {
display: flex;
flex-direction: column;
}
.power_info_text_title {
margin-bottom: 10rpx;
font-weight: 400;
font-size: 35rpx;
}
.power_info_text_tip {
color: rgba(0, 0, 0, 0.4);
font-size: 25rpx;
}
.power_item {
padding: 30rpx 25rpx;
display: flex;
justify-content: space-between;
}
.power_item_title {
font-size: 30rpx;
}
.power_item_icon {
width: 30rpx;
height: 30rpx;
}
.line {
width: 95%;
margin: 0 auto;
height: 2rpx;
background-color: rgba(0, 0, 0, 0.1);
}
.environment {
color: rgba(0, 0, 0, 0.4);
font-size: 24rpx;
margin-top: 25%;
}

@ -0,0 +1,88 @@
// pages/addusers/index.js
const db = wx.cloud.database()
Page({
/**
* 页面的初始数据
*/
data: {
User_ID:'',
User_College:'',
User_Key:'',
User_Class:'',
User_Grade:''
},
//监听并修改用户名和年龄的输入
inputID:function(e){
this.setData({
User_ID:e.detail.value
})
},
inputCollege:function(e){
this.setData({
User_College:e.detail.value
})
},
inputGrade:function(e){
this.setData({
User_Grade:e.detail.value
})
},
inputClass:function(e){
this.setData({
User_Class:e.detail.value
})
},
inputKey:function(e){
this.setData({
User_Key:e.detail.value
})
},
//使用云函数
//插入数据(增)
add:function(e){
//要添加的数据是一个对象
// var user={
// username:this.data.username,
// age:this.data.age
// };
console.log(e);
wx.cloud.callFunction({
name: 'useroption',
data: {
option: 'add',
addData:{
User_ID:this.data.User_ID,
User_College:this.data.User_College,
User_Grade:this.data.User_Grade,
User_Class:this.data.User_Class,
User_Key:this.data.User_Key
}
},
success: res => {
wx.showToast({
title: '用户添加成功',
})
console.log("添加成功")
console.log(res)
},
fail:err => {
wx.showToast({
title: '用户添加失败',
})
}
})
},
getback:function(){
wx.navigateBack({
delta:1,
})
}
})

@ -0,0 +1,36 @@
<!--pages/addusers/index.wxml-->
<!--pages/addusers/index.wxml-->
<view class="add">
<input
type="text"
value="{{User_ID}}"
placeholder="请输入学号"
bindblur="inputID"
/>
<input
type="text"
value="{{User_College}}"
bindblur="inputCollege"
placeholder="请输入用户院系"
/>
<input
type="text"
value="{{User_Class}}"
bindblur="inputClass"
placeholder="请输入用户班级"
/>
<input
type="text"
value="{{User_Grade}}"
bindblur="inputGrade"
placeholder="请输入用户年级"
/>
<input
type="text"
value="{{User_Key}}"
bindblur="inputKey"
placeholder="请输入用户密码"
/>
<button class="button" bindtap="add" type="primary">增加</button>
</view>
<button class="button" type="primary" bindtap="getback">返回</button>

@ -0,0 +1,100 @@
/* pages/addusers/index.wxss */
page {
padding-top: 54rpx;
background-color: #f6f6f6;
padding-bottom: 60rpx;
}
.button {
margin-top: 50px;
margin-left: 50px;
margin-right: 50px;
}
.title {
font-family: PingFang SC;
font-weight: 500;
color: #000000;
font-size: 44rpx;
margin-bottom: 40rpx;
}
.top_tip {
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #888888;
margin-bottom: 28rpx;
}
.power {
margin-top: 30rpx;
border-radius: 5px;
background-color: white;
width: 93%;
padding-bottom: 1rpx;
}
.power_info {
display: flex;
padding: 30rpx 25rpx;
align-items: center;
justify-content: space-between;
}
.power_info_more {
width: 30rpx;
height: 30rpx;
transform: rotate(90deg);
}
.power_info_less {
width: 30rpx;
height: 30rpx;
transform: rotate(270deg);
}
.power_info_text {
display: flex;
flex-direction: column;
}
.power_info_text_title {
margin-bottom: 10rpx;
font-weight: 400;
font-size: 35rpx;
}
.power_info_text_tip {
color: rgba(0, 0, 0, 0.4);
font-size: 25rpx;
}
.power_item {
padding: 30rpx 25rpx;
display: flex;
justify-content: space-between;
}
.power_item_title {
font-size: 30rpx;
}
.power_item_icon {
width: 30rpx;
height: 30rpx;
}
.line {
width: 95%;
margin: 0 auto;
height: 2rpx;
background-color: rgba(0, 0, 0, 0.1);
}
.environment {
color: rgba(0, 0, 0, 0.4);
font-size: 24rpx;
margin-top: 25%;
}

@ -0,0 +1,66 @@
// pages/adduserssuccess/index.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

@ -0,0 +1,2 @@
<!--pages/adduserssuccess/index.wxml-->
<text>pages/adduserssuccess/index.wxml</text>

@ -0,0 +1,82 @@
// pages/adlogin/adlogin.js
Page({
data: {
account:'',
password:''
},
//获取输入的账号
getAccount(evt) {
//console.log('账号', evt.detail.value)
this.setData({
account: evt.detail.value
})
},
//获取管理员输入的密码
getPassword(event) {
// console.log('密码', event.detail.value)
this.setData({
password: event.detail.value
})
},
//点击管理员登陆
guanliyuanlogin() {
let account = this.data.account
let password = this.data.password
console.log('管理员账号', account, '管理员密码', password)
if (account.length < 4) {
wx.showToast({
icon: 'none',
title: '账号至少4位',
})
return
}
if (password.length < 4) {
wx.showToast({
icon: 'none',
title: '密码至少4位',
})
return
}
//管理员登陆
wx.cloud.database().collection('manager').where({
account: account
}).get({
success(res) {
console.log("获取数据成功", res)
let manager = res.data[0]
console.log("manager", manager)
if (password == manager.password) {
console.log('登陆成功')
wx.showToast({
title: '登陆成功',
})
// wx.navigateTo({
// url: '../home/home?name=' + user.name,
// })
wx.navigateTo({
url: '../index/index',
})
//保存管理员登陆状态
wx.setStorageSync('manager', manager)
} else {
console.log('登陆失败')
wx.showToast({
icon: 'none',
title: '账号或密码不正确',
})
}
},
fail(res) {
console.log("获取数据失败", res)
}
})
}
})

@ -0,0 +1,5 @@
输入管理员账号
<input class="input" bindinput="getAccount"></input>
输入管理员密码
<input class="input" bindinput="getPassword"></input>
<button bindtap="guanliyuanlogin" type="primary">登录</button>

@ -0,0 +1,5 @@
/* pages/adlogin/adlogin.wxss */
.input{
border: 1px solid gainsboro;
margin: 20rpx;
}

@ -0,0 +1,14 @@
// pages/delete/index.js
const db = wx.cloud.database()
Page({
removeuser:function(){
wx.navigateTo({
url: '/pages/deleteuser/index',
})
},
removeusers:function(){
wx.navigateTo({
url: '/pages/deleteusers/index',
})
},
})

@ -0,0 +1,7 @@
<!--pages/delete/index.wxml-->
<view class="delete">
<button class="button" type="primary" bindtap="removeuser">删除单个用户</button>
</view>
<view class="delete">
<button class="button" type="primary" bindtap="removeusers">删除一批用户</button>
</view>

@ -0,0 +1,100 @@
/* pages/delete/index.wxss */
page {
padding-top: 54rpx;
background-color: #f6f6f6;
padding-bottom: 60rpx;
}
.button {
margin-top: 50px;
margin-left: 50px;
margin-right: 50px;
}
.title {
font-family: PingFang SC;
font-weight: 500;
color: #000000;
font-size: 44rpx;
margin-bottom: 40rpx;
}
.top_tip {
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #888888;
margin-bottom: 28rpx;
}
.power {
margin-top: 30rpx;
border-radius: 5px;
background-color: white;
width: 93%;
padding-bottom: 1rpx;
}
.power_info {
display: flex;
padding: 30rpx 25rpx;
align-items: center;
justify-content: space-between;
}
.power_info_more {
width: 30rpx;
height: 30rpx;
transform: rotate(90deg);
}
.power_info_less {
width: 30rpx;
height: 30rpx;
transform: rotate(270deg);
}
.power_info_text {
display: flex;
flex-direction: column;
}
.power_info_text_title {
margin-bottom: 10rpx;
font-weight: 400;
font-size: 35rpx;
}
.power_info_text_tip {
color: rgba(0, 0, 0, 0.4);
font-size: 25rpx;
}
.power_item {
padding: 30rpx 25rpx;
display: flex;
justify-content: space-between;
}
.power_item_title {
font-size: 30rpx;
}
.power_item_icon {
width: 30rpx;
height: 30rpx;
}
.line {
width: 95%;
margin: 0 auto;
height: 2rpx;
background-color: rgba(0, 0, 0, 0.1);
}
.environment {
color: rgba(0, 0, 0, 0.4);
font-size: 24rpx;
margin-top: 25%;
}

@ -0,0 +1,34 @@
// pages/deleteuser/index.js
Page({
inputdelID:function(e){
this.setData({
delUser_ID:e.detail.value
})
},
removeDataFn:function(){
wx.cloud.callFunction({
name: 'useroption',
data: {
option: 'deleteuser',
//要删除的数据
delUser_ID:this.data.delUser_ID
},
success: res => {
wx.showToast({
title: '用户删除成功',
})
console.log(res)
},
fail: err => {
wx.showToast({
title: '用户删除失败',
})
}
})
},
getback:function(){
wx.navigateBack({
delta:2,
})
}
})

@ -0,0 +1,10 @@
<!--pages/deleteuser/index.wxml-->
<view class="delete">
<input
value="{{delUser_ID}}"
placeholder="请输入要删除用户的学号"
bindblur="inputdelID"
/>
</view>
<button class="button" type="primary" bindtap="removeDataFn">删除用户</button>
<button class="button" type="primary" bindtap="getback">返回</button>

@ -0,0 +1,100 @@
/* pages/deleteuser/index.wxss */
page {
padding-top: 54rpx;
background-color: #f6f6f6;
padding-bottom: 60rpx;
}
.button {
margin-top: 50px;
margin-left: 50px;
margin-right: 50px;
}
.title {
font-family: PingFang SC;
font-weight: 500;
color: #000000;
font-size: 44rpx;
margin-bottom: 40rpx;
}
.top_tip {
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #888888;
margin-bottom: 28rpx;
}
.power {
margin-top: 30rpx;
border-radius: 5px;
background-color: white;
width: 93%;
padding-bottom: 1rpx;
}
.power_info {
display: flex;
padding: 30rpx 25rpx;
align-items: center;
justify-content: space-between;
}
.power_info_more {
width: 30rpx;
height: 30rpx;
transform: rotate(90deg);
}
.power_info_less {
width: 30rpx;
height: 30rpx;
transform: rotate(270deg);
}
.power_info_text {
display: flex;
flex-direction: column;
}
.power_info_text_title {
margin-bottom: 10rpx;
font-weight: 400;
font-size: 35rpx;
}
.power_info_text_tip {
color: rgba(0, 0, 0, 0.4);
font-size: 25rpx;
}
.power_item {
padding: 30rpx 25rpx;
display: flex;
justify-content: space-between;
}
.power_item_title {
font-size: 30rpx;
}
.power_item_icon {
width: 30rpx;
height: 30rpx;
}
.line {
width: 95%;
margin: 0 auto;
height: 2rpx;
background-color: rgba(0, 0, 0, 0.1);
}
.environment {
color: rgba(0, 0, 0, 0.4);
font-size: 24rpx;
margin-top: 25%;
}

@ -0,0 +1,46 @@
// pages/deleteusers/index.js
Page({
inputdelCollege:function(e){
this.setData({
delUser_College:e.detail.value,
})
},
inputdelGrade:function(e){
this.setData({
delUser_Grade:e.detail.value,
})
},
inputdelClass:function(e){
this.setData({
delUser_Class:e.detail.value,
})
},
removeDataFn:function(){
wx.cloud.callFunction({
name: 'useroption',
data: {
option: 'deleteusers',
//要删除的数据
delUser_College:this.data.delUser_College,
delUser_Grade:this.data.delUser_Grade,
delUser_Class:this.data.delUser_Class
},
success: res => {
wx.showToast({
title: '用户删除成功',
})
console.log(res)
},
fail: err => {
wx.showToast({
title: '用户删除失败',
})
}
})
},
getback:function(){
wx.navigateBack({
delta:2,
})
}
})

@ -0,0 +1,20 @@
<!--pages/deleteusers/index.wxml-->
<view class="delete">
<input
value="{{delUser_College}}"
placeholder="请输入要删除用户的院系"
bindblur="inputdelCollege"
/>
<input
value="{{delUser_Grade}}"
placeholder="请输入要删除用户的年级"
bindblur="inputdelGrade"
/>
<input
value="{{delUser_Class}}"
placeholder="请输入要删除用户的班级"
bindblur="inputdelClass"
/>
</view>
<button class="button" type="primary" bindtap="removeDataFn">删除用户</button>
<button class="button" type="primary" bindtap="getback">返回</button>

@ -0,0 +1,100 @@
/* pages/deleteusers/index.wxss */
page {
padding-top: 54rpx;
background-color: #f6f6f6;
padding-bottom: 60rpx;
}
.button {
margin-top: 50px;
margin-left: 50px;
margin-right: 50px;
}
.title {
font-family: PingFang SC;
font-weight: 500;
color: #000000;
font-size: 44rpx;
margin-bottom: 40rpx;
}
.top_tip {
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #888888;
margin-bottom: 28rpx;
}
.power {
margin-top: 30rpx;
border-radius: 5px;
background-color: white;
width: 93%;
padding-bottom: 1rpx;
}
.power_info {
display: flex;
padding: 30rpx 25rpx;
align-items: center;
justify-content: space-between;
}
.power_info_more {
width: 30rpx;
height: 30rpx;
transform: rotate(90deg);
}
.power_info_less {
width: 30rpx;
height: 30rpx;
transform: rotate(270deg);
}
.power_info_text {
display: flex;
flex-direction: column;
}
.power_info_text_title {
margin-bottom: 10rpx;
font-weight: 400;
font-size: 35rpx;
}
.power_info_text_tip {
color: rgba(0, 0, 0, 0.4);
font-size: 25rpx;
}
.power_item {
padding: 30rpx 25rpx;
display: flex;
justify-content: space-between;
}
.power_item_title {
font-size: 30rpx;
}
.power_item_icon {
width: 30rpx;
height: 30rpx;
}
.line {
width: 95%;
margin: 0 auto;
height: 2rpx;
background-color: rgba(0, 0, 0, 0.1);
}
.environment {
color: rgba(0, 0, 0, 0.4);
font-size: 24rpx;
margin-top: 25%;
}

@ -0,0 +1,66 @@
// pages/deleteuserssuccess/index.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

@ -0,0 +1,2 @@
<!--pages/deleteuserssuccess/index.wxml-->
<text>pages/deleteuserssuccess/index.wxml</text>

@ -0,0 +1,36 @@
var amapFile = require('../../utils/amap-wx.js');
var app = getApp();
Page({
data: {
city:"天津",
weather:"晴",
temperature:"10",
windpower:"18级",
winddirection:"南",
humidity:"5",
},
onLoad: function(options){
var that = this;
var myAmapFun = new amapFile.AMapWX({key:'78a99442f6e5cad3bfb832e33bdcf629'});
myAmapFun.getWeather({
success: function(res){
//成功回调
console.log("调取天气接口成功", res)
// 一定要在接口里进行赋值,否则接口数据还未返回,页面就已经将数据取走进行显示
that.setData({
city: res.city.data,
weather: res.weather.data,
temperature: res.temperature.data,
windpower: res.windpower.data,
winddirection: res.winddirection.data,
humidity: res.humidity.data
})
},
fail: function(info){
//失败回调
console.log(info)
}
})
}
})

@ -0,0 +1,4 @@
{
"navigationBarTitleText": "天气",
"usingComponents": {}
}

@ -0,0 +1,10 @@
<!--pages/getWeather/getWeather.wxml-->
<view class="container">
<!--定义页面结构,使用文本组件或其他组件 -->
<view class="weather">城市:{{city}}</view>
<view>天气:{{weather}}</view>
<view>温度:{{temperature}}</view>
<view>风力:{{windpower}}</view>
<view>风向:{{winddirection}}</view>
<view>湿度:{{humidity}}</view>
</view>

@ -0,0 +1,14 @@
/* pages/getWeather/getWeather.wxss */
.container{
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: #4D8AD7;
color: #fff;
font-size: 18px;
padding-top: 200rpx;
padding-left: 150rpx;
}

@ -0,0 +1,66 @@
// pages/home/home.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

@ -0,0 +1,2 @@
<!--pages/home/home.wxml-->
<text>pages/home/home.wxml</text>

@ -0,0 +1,64 @@
// pages/index/index.js
//连接数据库
const db = wx.cloud.database()
Page({
data: {
loginOK: false
},
//information
information() {
wx.navigateTo({
url: '/pages/ModifyInformation/ModifyInformation',
})
},
//account
account() {
wx.navigateTo({
url: '/pages/index/index'
})
},
/**
* 页面的初始数据
*/
//使用云函数
//插入数据(增)
add:function(e){
wx.navigateTo({
url: '/pages/adduser/index',
})
},
//删除数据(删)
removeDataFn:function(){
wx.navigateTo({
url: '/pages/delete/index',
})
},
//查询数据(查)
searchDataNameFn:function(){
wx.navigateTo({
url: '/pages/selectusers/index',
})
},
//修改数据(改)
updateDataFn(){
wx.navigateTo({
url: '/pages/updateusers/index',
})
},
//返回
getback:function(){
wx.navigateBack({
delta: 1,
})
},
})

@ -0,0 +1,5 @@
{
"usingComponents": {
"cloud-tip-modal": "/components/cloudTipModal/index"
}
}

@ -0,0 +1,23 @@
<!--pages/index/index.wxml-->
<view class="add">
<button class="button" bindtap="add" type="primary">增加用户</button>
</view>
<view class="delete">
<button class="button" type="primary" bindtap="removeDataFn">删除用户</button>
</view>
<view class="get">
<button class="button" type="primary" bindtap="searchDataNameFn">查询用户</button>
</view>
<view class="update">
<button class="button" type="primary" bindtap="updateDataFn">修改用户</button>
</view>
<view class="ModifyAccount">
<button class="information" type="primary" bindtap="information" style="width: 425rpx; height: 99rpx; display: block; box-sizing: border-box; left: -213rpx; top: 197rpx; position: relative">修改公告栏信息</button>
<button class="account" type="primary" bindtap="account" style="width: 392rpx; height: 99rpx; display: block; box-sizing: border-box; left: 197rpx; top: 99rpx; position: relative">管理账户信息</button>
</view>

@ -0,0 +1,101 @@
/**index.wxss**/
page {
padding-top: 54rpx;
background-color: #f6f6f6;
padding-bottom: 60rpx;
}
.button {
margin-top: 50px;
margin-left: 50px;
margin-right: 50px;
}
.title {
font-family: PingFang SC;
font-weight: 500;
color: #000000;
font-size: 44rpx;
margin-bottom: 40rpx;
}
.top_tip {
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #888888;
margin-bottom: 28rpx;
}
.power {
margin-top: 30rpx;
border-radius: 5px;
background-color: white;
width: 93%;
padding-bottom: 1rpx;
}
.power_info {
display: flex;
padding: 30rpx 25rpx;
align-items: center;
justify-content: space-between;
}
.power_info_more {
width: 30rpx;
height: 30rpx;
transform: rotate(90deg);
}
.power_info_less {
width: 30rpx;
height: 30rpx;
transform: rotate(270deg);
}
.power_info_text {
display: flex;
flex-direction: column;
}
.power_info_text_title {
margin-bottom: 10rpx;
font-weight: 400;
font-size: 35rpx;
}
.power_info_text_tip {
color: rgba(0, 0, 0, 0.4);
font-size: 25rpx;
}
.power_item {
padding: 30rpx 25rpx;
display: flex;
justify-content: space-between;
}
.power_item_title {
font-size: 30rpx;
}
.power_item_icon {
width: 30rpx;
height: 30rpx;
}
.line {
width: 95%;
margin: 0 auto;
height: 2rpx;
background-color: rgba(0, 0, 0, 0.1);
}
.environment {
color: rgba(0, 0, 0, 0.4);
font-size: 24rpx;
margin-top: 25%;
}

@ -0,0 +1,90 @@
Page({
data: {
name: '',
account: '',
password: ''
},
//获取用户名
getName(event) {
console.log('获取输入的用户名', event.detail.value)
this.setData({
name: event.detail.value
})
},
//获取用户账号
getAccount(event) {
console.log('获取输入的账号', event.detail.value)
this.setData({
account: event.detail.value
})
},
// 获取密码
getPassword(event) {
console.log('获取输入的密码', event.detail.value)
this.setData({
password: event.detail.value
})
},
//注册
adzhuce() {
let name = this.data.name
let account = this.data.account
let password = this.data.password
console.log("点击了注册")
console.log("name", name)
console.log("account", account)
console.log("password", password)
//校验用户名
if (name.length < 2) {
wx.showToast({
icon: 'none',
title: '用户名至少2位',
})
return
}
if (name.length > 10) {
wx.showToast({
icon: 'none',
title: '用户名最多10位',
})
return
}
//校验账号
if (account.length < 4) {
wx.showToast({
icon: 'none',
title: '账号至少4位',
})
return
}
//校验密码
if (password.length < 4) {
wx.showToast({
icon: 'none',
title: '密码至少4位',
})
return
}
//注册功能的实现
wx.cloud.database().collection('manager').add({
data: {
name: name,
account: account,
password: password
},
success(res) {
console.log('注册成功', res)
wx.showToast({
title: '注册成功',
})
wx.navigateTo({
url: '../adlogin/adlogin',
})
},
fail(res) {
console.log('注册失败', res)
}
})
}
})

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save