管理员小程序端登录

This commit is contained in:
caoqianming 2021-05-24 17:39:46 +08:00
parent 663c07276f
commit 1c3cb8ab7f
15 changed files with 299 additions and 7 deletions

View File

@ -31,7 +31,9 @@
"pages/qtest/form",
"pages/main/start",
"pages/exam/index",
"pages/exam/note"
"pages/exam/note",
"pages/admin/index",
"pages/admin/login"
],
"window": {
"backgroundTextStyle": "light",
@ -88,7 +90,7 @@
},
"plugins": {
"tencentvideo": {
"version": "1.3.15",
"version": "1.3.31",
"provider": "wxa75efa648b60994b"
}
},

View File

@ -0,0 +1,72 @@
// pages/admin/index.js
const api = require("../../utils/request.js");
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
api.requesta('/rbac/user/info/', 'GET').then(res => {
getApp().globalData.admininfo = res.data
this.setData({
admininfo:res.data
})
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@ -0,0 +1,4 @@
{
"usingComponents": {},
"navigationBarTitleText": "管理员控制台"
}

View File

@ -0,0 +1,26 @@
<!--pages/admin/index.wxml-->
<view class="page">
<view class="page__bd">
<view class="weui-cells weui-cells_after-title" style="margin-top:0px">
<view class="weui-panel__bd">
<view class="weui-media-box weui-media-box_appmsg" hover-class="weui-cell_active">
<view class="weui-media-box__bd weui-media-box__bd_in-appmsg">
<view class="weui-media-box__title">
<span>账号:</span>
<span style="font-weight:bold;">{{admininfo.username}}</span>
</view>
<view class="weui-media-box__desc">昵称:
<span >{{ admininfo.name }}</span>
</view>
<view class="weui-media-box__desc">角色:
<span >{{ admininfo.roles }}</span>
</view>
<view class="weui-media-box__desc">
</view>
</view>
</view>
</view>
</view>
</view>
</view>

View File

@ -0,0 +1 @@
/* pages/admin/index.wxss */

View File

@ -0,0 +1,84 @@
// pages/admin/login.js
const api = require("../../utils/request.js");
Page({
/**
* 页面的初始数据
*/
data: {
form:{
username:'',
password:''
}
},
usernameChange: function (e) {
this.data.form.username = e.detail.value
},
passwordChange: function (e) {
this.data.form.password = e.detail.value
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
denglu: function ( ) {
var form = this.data.form
api.requesta('/token/', 'POST', form).then(res => {
getApp().globalData.admintoken = res.data.token
wx.redirectTo({
url: '/pages/admin/index',
})
})
},
})

View File

@ -0,0 +1,4 @@
{
"usingComponents": {},
"navigationBarTitleText": "管理员登录"
}

View File

@ -0,0 +1,33 @@
<!--pages/admin/login.wxml-->
<view class="page">
<view class="page__hd" >
<view class="page__title" style="text-align:center">中科辐射学堂</view>
<view class="page__desc" style="text-align:center">管理员登录</view>
</view>
<view class="page__bd">
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell weui-cell_input">
<view class="weui-cell__hd">
<view class="weui-label">账号</view>
</view>
<view class="weui-cell__bd">
<input class="weui-input" placeholder="请输入管理员账号" bindinput="usernameChange" />
</view>
</view>
<view class="weui-cell weui-cell_input">
<view class="weui-cell__hd">
<view class="weui-label">密码</view>
</view>
<view class="weui-cell__bd">
<input class="weui-input" placeholder="请输入密码" bindinput="passwordChange" type="password"/>
</view>
</view>
</view>
</view>
<button class="weui-btn" type="primary" bindtap="denglu">登陆</button>
</view>
<view class="weui-footer weui-footer_fixed-bottom">
<!-- <view class="weui-footer__text" bindtap="intro">点击下载系统/小程序文档介绍</view> -->
<view class="weui-footer__text">Copyright © 2018-2021 国检集团</view>
<view class="weui-footer__text">中存大数据提供技术支持</view>
</view>

View File

@ -0,0 +1 @@
/* pages/admin/login.wxss */

View File

@ -33,6 +33,6 @@
</view>
<view class="weui-footer weui-footer_fixed-bottom">
<!-- <view class="weui-footer__text" bindtap="intro">点击下载系统/小程序文档介绍</view> -->
<view class="weui-footer__text">Copyright © 2018-2020 国检集团</view>
<view class="weui-footer__text">Copyright © 2018-2021 国检集团</view>
<view class="weui-footer__text">中存大数据提供技术支持</view>
</view>

View File

@ -72,6 +72,13 @@
<view class="weui-cell__ft weui-cell__ft_in-access" style="color:red"></view>
</navigator>
</view>
<view class="weui-cells__title">管理员操作台</view>
<view class="weui-cells weui-cells_after-title">
<navigator url="/pages/admin/login" class="weui-cell weui-cell_access">
<view class="weui-cell__bd">管理员入口</view>
<view class="weui-cell__ft weui-cell__ft_in-access" style="color:red"></view>
</navigator>
</view>
<view class="weui-footer weui-footer_fixed-bottom">
<!-- <view class="weui-footer__text" bindtap="intro">点击下载系统/小程序文档介绍</view> -->
<view class="weui-footer__text">更多服务请联系课程顾问</view>

View File

@ -21,13 +21,15 @@
"checkSiteMap": true,
"uploadWithSourceMap": true,
"compileHotReLoad": false,
"useMultiFrameRuntime": false,
"useMultiFrameRuntime": true,
"useApiHook": true,
"useApiHostProcess": false,
"babelSetting": {
"ignore": [],
"disablePlugins": [],
"outputPath": ""
},
"enableEngineNative": false,
"bundle": false,
"useIsolateContext": true,
"useCompilerModule": true,
@ -38,7 +40,7 @@
"minifyWXSS": true
},
"compileType": "miniprogram",
"libVersion": "2.14.1",
"libVersion": "2.16.1",
"appid": "wxf1e9471c93f05ad6",
"projectname": "test_mini",
"debugOptions": {

View File

@ -51,6 +51,57 @@ function request(url, method, data) {
return promise;
}
function requesta(url, method, data) {
let promise = new Promise((resolve, reject) => {
wx.showNavigationBarLoading();
wx.request({
url: getApp().globalData.host + url,
method: method,
data: data,
header:{
'Authorization': 'JWT ' + getApp().globalData.admintoken
},
success: (res => {
if (res.data.code >= 200 && res.data.code < 400) {
resolve(res.data);
}else if(res.data.code == 401){
}
else {
var msg = '请求错误'
if(res.data.msg){
msg = res.data.msg
}
if (msg.indexOf('该操作的权限')!=-1){
msg = '权限不足或账户过期,请联系课程顾问'
}
wx.showToast({
title: msg,
icon: 'none',
duration: 1000
})
}
}),
fail: (res => {
wx.showToast({
title: '请求出错',
icon: 'none',
duration: 1500
})
console.log(res)
reject('网络出错');
}),
complete: function () {
wx.hideNavigationBarLoading();
}
})
})
return promise;
}
module.exports = {
request: request
request: request,
requesta: requesta
}

View File

@ -47,6 +47,7 @@ class UserInfoView(APIView):
# 'avatar': request._request._current_scheme_host + '/media/' + str(user.image),
'avatar': user.avatar,
'perms': perms,
'roles':user.roles.values_list('name', flat=True)
}
return Response(data)

View File

@ -45,7 +45,11 @@ class FitJSONRenderer(JSONRenderer):
response = renderer_context.get("response")
response_body.code = response.status_code
if response_body.code >= 400: # drf异常
response_body.msg = data['detail'] if 'detail' in data else data
if isinstance(data, dict):
data = data[list(data.keys())[0]]
if isinstance(data, list):
data = data[0]
response_body.msg = data
elif data and 'error' in data and data['error']:# 自传异常,key为error
response_body.code = data.get("code",400)
response_body.msg = data.get("error", "")