小程序 实现用户和管理员两种权限登录 给出代码
时间: 2023-10-05 16:08:15 浏览: 32
以下是一个简单的小程序示例,实现了用户和管理员两种权限的登录功能。用户可以查看商品列表和购买商品,管理员可以添加、修改和删除商品。
app.js
```js
App({
globalData: {
isAdmin: false, // 默认不是管理员
goodsList: [] // 商品列表
}
})
```
pages/login/login.js
```js
const app = getApp()
Page({
data: {
isManager: false // 默认不是管理员登录
},
handleLogin() {
// 根据登录类型设置全局变量 isAdmin
app.globalData.isAdmin = this.data.isManager
// 跳转到商品列表页面
wx.navigateTo({
url: '/pages/goods/goods'
})
},
handleSwitch(e) {
this.setData({
isManager: e.detail.value
})
}
})
```
pages/goods/goods.js
```js
const app = getApp()
Page({
data: {
goodsList: []
},
onLoad() {
// 根据 isAdmin 加载不同权限的商品列表
if (app.globalData.isAdmin) {
this.setData({
goodsList: app.globalData.goodsList
})
} else {
// 用户只能查看商品名称和价格
this.setData({
goodsList: app.globalData.goodsList.map(item => {
return {
name: item.name,
price: item.price
}
})
})
}
},
handleBuy(e) {
if (app.globalData.isAdmin) {
wx.showToast({
title: '管理员不能购买商品',
icon: 'none'
})
} else {
wx.showToast({
title: `成功购买 ${e.currentTarget.dataset.name}`,
icon: 'success'
})
}
}
})
```
pages/goods/manage.js
```js
const app = getApp()
Page({
data: {
goodsList: []
},
onLoad() {
this.setData({
goodsList: app.globalData.goodsList
})
},
handleAdd() {
// 跳转到添加商品页面
wx.navigateTo({
url: '/pages/goods/add'
})
},
handleEdit(e) {
// 跳转到编辑商品页面并传递商品 id
wx.navigateTo({
url: `/pages/goods/edit?id=${e.currentTarget.dataset.id}`
})
},
handleDelete(e) {
const { id } = e.currentTarget.dataset
wx.showModal({
title: '提示',
content: '确定要删除该商品吗?',
success: res => {
if (res.confirm) {
// 在全局变量中删除商品
app.globalData.goodsList = app.globalData.goodsList.filter(item => item.id !== id)
// 更新页面数据
this.setData({
goodsList: app.globalData.goodsList
})
wx.showToast({
title: '删除成功',
icon: 'success'
})
}
}
})
}
})
```
pages/goods/add.js
```js
const app = getApp()
Page({
handleFormSubmit(e) {
const { name, price } = e.detail.value
// 生成新商品 id
const id = Date.now().toString()
// 在全局变量中添加新商品
app.globalData.goodsList.push({
id,
name,
price
})
wx.showToast({
title: '添加成功',
icon: 'success'
})
// 返回上一页
wx.navigateBack()
}
})
```
pages/goods/edit.js
```js
const app = getApp()
Page({
data: {
goods: {}
},
onLoad(options) {
// 根据商品 id 获取商品信息
const { id } = options
const goods = app.globalData.goodsList.find(item => item.id === id)
this.setData({
goods
})
},
handleFormSubmit(e) {
const { name, price } = e.detail.value
// 修改商品信息
const goods = Object.assign(this.data.goods, {
name,
price
})
wx.showToast({
title: '修改成功',
icon: 'success'
})
// 返回上一页并传递修改后的商品信息
wx.navigateBack({
success: () => {
const pages = getCurrentPages()
const prevPage = pages[pages.length - 2]
prevPage.setData({
goods
})
}
})
}
})
```