Compare commits

..

No commits in common. "5def8e859aac400d73e9c8c0083e7f68d4bc15b5" and "1059a1f3b7942313046734b2c00cc1981da6226a" have entirely different histories.

9 changed files with 72 additions and 261 deletions

View File

@ -10,24 +10,6 @@
"navigationBarTitleText": "" "navigationBarTitleText": ""
} }
}, },
{
"path": "pages/adminHome/index",
"style": {
"navigationBarTitleText": "首页"
}
},
{
"path": "pages/adminNfc/index",
"style": {
"navigationBarTitleText": "nfc写入"
}
},
{
"path": "pages/adminMy/index",
"style": {
"navigationBarTitleText": "nfc写入"
}
},
{ {
"path": "pages/login/login", "path": "pages/login/login",
"style": { "style": {
@ -247,29 +229,17 @@
"selectedIconPath": "static/tab/home_cur.png", "selectedIconPath": "static/tab/home_cur.png",
"text": "首页" "text": "首页"
}, },
// {
// "pagePath": "pages/my/index",
// "iconPath": "static/tab/my.png",
// "selectedIconPath": "static/tab/my_cur.png",
// "text": "我的"
// },
{ {
"pagePath": "pages/user/index", "pagePath": "pages/user/index",
"iconPath": "static/tab/my.png", "iconPath": "static/tab/my.png",
"selectedIconPath": "static/tab/my_cur.png", "selectedIconPath": "static/tab/my_cur.png",
"text": "设置" "text": "设置"
},
{
"pagePath": "pages/adminHome/index",
"iconPath": "static/tab/my.png",
"selectedIconPath": "static/tab/my_cur.png",
"text": "首页"
},
{
"pagePath": "pages/adminNfc/index",
"iconPath": "static/tab/my.png",
"selectedIconPath": "static/tab/my_cur.png",
"text": "nfc写入"
},
{
"pagePath": "pages/adminMy/index",
"iconPath": "static/tab/my.png",
"selectedIconPath": "static/tab/my_cur.png",
"text": "我的"
} }
] ]
}, },

View File

@ -1,30 +0,0 @@
<template>
<view class="content">
<view>管理员首页</view>
<u-tabbar :list="vuex_tabbar"></u-tabbar>
</view>
</template>
<script>
import { loginApi } from "@/api/apiList";
export default {
data() {
return {
phone: "13800451500",
pwd: "123456",
};
},
mounted() {
uni.hideLoading(); // Loading
},
onLoad() {},
methods: {},
};
</script>
<style lang="scss" scoped>
.content {
height: 100vh; //
// background-color: skyblue;
overflow: hidden;
padding-bottom: 100rpx;
}
</style>

View File

@ -1,30 +0,0 @@
<template>
<view class="content">
<view>管理员--我的</view>
<u-tabbar :list="vuex_tabbar"></u-tabbar>
</view>
</template>
<script>
import { loginApi } from "@/api/apiList";
export default {
data() {
return {
phone: "13800451500",
pwd: "123456",
};
},
mounted() {
uni.hideLoading(); // Loading
},
onLoad() {},
methods: {},
};
</script>
<style lang="scss" scoped>
.content {
height: 100vh; //
// background-color: skyblue;
overflow: hidden;
padding-bottom: 100rpx;
}
</style>

View File

@ -1,30 +0,0 @@
<template>
<view class="content">
<view>管理员--NFC</view>
<u-tabbar :list="vuex_tabbar"></u-tabbar>
</view>
</template>
<script>
import { loginApi } from "@/api/apiList";
export default {
data() {
return {
phone: "13800451500",
pwd: "123456",
};
},
mounted() {
uni.hideLoading(); // Loading
},
onLoad() {},
methods: {},
};
</script>
<style lang="scss" scoped>
.content {
height: 100vh; //
// background-color: skyblue;
overflow: hidden;
padding-bottom: 100rpx;
}
</style>

View File

@ -104,7 +104,6 @@
</view> </view>
</view> </view>
</view> </view>
<u-tabbar :list="vuex_tabbar"></u-tabbar>
</view> </view>
</template> </template>
<script> <script>

View File

@ -105,7 +105,6 @@
mode="range" mode="range"
@change="changeDate" @change="changeDate"
></u-calendar> ></u-calendar>
<u-tabbar :list="vuex_tabbar"></u-tabbar>
</view> </view>
</template> </template>

View File

@ -14,10 +14,10 @@
</view> </view>
<u-button type="primary" @click="loginFn" style="margin-top: 50rpx">登陆</u-button> <u-button type="primary" @click="loginFn" style="margin-top: 50rpx">登陆</u-button>
<u-button type="primary" @click="login1Fn" style="margin-top: 50rpx" <u-button type="primary" @click="login1Fn" style="margin-top: 50rpx"
>登陆13800451500管理员</u-button >登陆13800451500</u-button
> >
<u-button type="primary" @click="login2Fn" style="margin-top: 50rpx" <u-button type="primary" @click="login2Fn" style="margin-top: 50rpx"
>登陆18174010562清洁工</u-button >登陆18174010562</u-button
> >
</view> </view>
</template> </template>
@ -40,69 +40,23 @@ export default {
login1Fn() { login1Fn() {
this.phone = "13800451500"; this.phone = "13800451500";
this.pwd = "123456"; this.pwd = "123456";
this.loginFn();
const normalTabBar = [
{
pagePath: "/pages/index/planList",
iconPath: "/static/tab/list.png",
selectedIconPath: "/static/tab/list_cur.png",
text: "计划",
},
{
pagePath: "/pages/index/index",
iconPath: "/static/tab/home.png",
selectedIconPath: "/static/tab/home_cur.png",
text: "首页",
},
{
pagePath: "/pages/user/index",
iconPath: "/static/tab/my.png",
selectedIconPath: "/static/tab/my_cur.png",
text: "设置",
},
];
this.$u.vuex("vuex_tabbar", normalTabBar);
this.loginFn(false);
}, },
login2Fn() { login2Fn() {
this.phone = "18174010562"; this.phone = "18174010562";
this.pwd = "123456"; this.pwd = "123456";
this.loginFn();
const adminTabBar = [
{
pagePath: "/pages/adminHome/index",
iconPath: "/static/tab/list.png",
selectedIconPath: "/static/tab/list_cur.png",
text: "首页",
},
{
pagePath: "/pages/adminNfc/index",
iconPath: "/static/tab/list.png",
selectedIconPath: "/static/tab/list_cur.png",
text: "nfc写入",
},
{
pagePath: "/pages/adminMy/index",
iconPath: "/static/tab/list.png",
selectedIconPath: "/static/tab/list_cur.png",
text: "我的",
},
];
this.$u.vuex("vuex_tabbar", adminTabBar);
this.loginFn(true);
}, },
// async loginFn() {
normalizePath(path) {
return path.startsWith("/") ? path : `/${path}`;
},
async loginFn(type) {
let salt = bcrypt.genSaltSync(12); let salt = bcrypt.genSaltSync(12);
console.log("666");
let req = { let req = {
phone: this.phone, phone: this.phone,
password: bcrypt.hashSync(this.pwd, salt), password: bcrypt.hashSync(this.pwd, salt),
}; };
console.log(req, "req--");
const res = await loginApi(req); const res = await loginApi(req);
console.log(res, "res--");
if (!res.succeed) { if (!res.succeed) {
uni.showToast({ uni.showToast({
title: res.error || "登录失败", title: res.error || "登录失败",
@ -112,16 +66,16 @@ export default {
} }
let token = res.data; let token = res.data;
uni.setStorageSync("token", "Bearer " + token); uni.setStorageSync("token", "Bearer " + token);
let userRole = "admin"; uni.switchTab({
if (type) { url: "/pages/index/index",
uni.switchTab({ success() {
url: `/pages/index/planList`, console.log("跳转成功");
}); window.initFn = null; //
} else { },
uni.switchTab({ fail(err) {
url: `/pages/adminHome/index`, console.error("跳转失败", err);
}); },
} });
}, },
}, },
}; };

View File

@ -59,7 +59,6 @@
</view> </view>
</view> </view>
</view> </view>
<u-tabbar :list="vuex_tabbar"></u-tabbar>
</view> </view>
</template> </template>

View File

@ -4,81 +4,61 @@ Vue.use(Vuex)
let lifeData = {}; let lifeData = {};
try { try{
// 尝试获取本地是否存在lifeData变量第一次启动APP时是不存在的 // 尝试获取本地是否存在lifeData变量第一次启动APP时是不存在的
lifeData = uni.getStorageSync('lifeData'); lifeData = uni.getStorageSync('lifeData');
} catch (e) { }catch(e){
} }
// 需要永久存储且下次APP启动需要取出的在state中的变量名 // 需要永久存储且下次APP启动需要取出的在state中的变量名
let saveStateKeys = ['vuex_user', 'vuex_token', 'vuex_tabbar']; let saveStateKeys = ['vuex_user', 'vuex_token'];
// 保存变量到本地存储中 // 保存变量到本地存储中
const saveLifeData = function (key, value) { const saveLifeData = function(key, value){
// 判断变量名是否在需要存储的数组中 // 判断变量名是否在需要存储的数组中
if (saveStateKeys.indexOf(key) != -1) { if(saveStateKeys.indexOf(key) != -1) {
// 获取本地存储的lifeData对象将变量添加到对象中 // 获取本地存储的lifeData对象将变量添加到对象中
let tmp = uni.getStorageSync('lifeData'); let tmp = uni.getStorageSync('lifeData');
// 第一次打开APP不存在lifeData变量故放一个{}空对象 // 第一次打开APP不存在lifeData变量故放一个{}空对象
tmp = tmp ? tmp : {}; tmp = tmp ? tmp : {};
tmp[key] = value; tmp[key] = value;
// 执行这一步后所有需要存储的变量都挂载在本地的lifeData对象中 // 执行这一步后所有需要存储的变量都挂载在本地的lifeData对象中
uni.setStorageSync('lifeData', tmp); uni.setStorageSync('lifeData', tmp);
} }
} }
const store = new Vuex.Store({ const store = new Vuex.Store({
// 下面这些值仅为示例,使用过程中请删除 // 下面这些值仅为示例,使用过程中请删除
state: { state: {
// 如果上面从本地获取的lifeData对象下有对应的属性就赋值给state中对应的变量 // 如果上面从本地获取的lifeData对象下有对应的属性就赋值给state中对应的变量
// 加上vuex_前缀是防止变量名冲突也让人一目了然 // 加上vuex_前缀是防止变量名冲突也让人一目了然
vuex_user: lifeData.vuex_user ? lifeData.vuex_user : { name: '明月' }, vuex_user: lifeData.vuex_user ? lifeData.vuex_user : {name: '明月'},
vuex_token: lifeData.vuex_token ? lifeData.vuex_token : '', vuex_token: lifeData.vuex_token ? lifeData.vuex_token : '',
vuex_tabbar: lifeData.vuex_tabbar ? lifeData.vuex_tabbar : [ // 如果vuex_version无需保存到本地永久存储无需lifeData.vuex_version方式
// { vuex_version: '1.0.1',
// "pagePath": "/pages/adminHome/index", },
// "iconPath": "/static/tab/my.png", mutations: {
// "selectedIconPath": "/static/tab/my_cur.png", $uStore(state, payload) {
// "text": "首页" // 判断是否多层级调用state中为对象存在的情况诸如user.info.score = 1
// }, let nameArr = payload.name.split('.');
// { let saveKey = '';
// "pagePath": "/pages/adminNfc/index", let len = nameArr.length;
// "iconPath": "/static/tab/my.png", if(nameArr.length >= 2) {
// "selectedIconPath": "/static/tab/my_cur.png", let obj = state[nameArr[0]];
// "text": "nfc写入" for(let i = 1; i < len - 1; i ++) {
// }, obj = obj[nameArr[i]];
// { }
// "pagePath": "/pages/adminMy/index", obj[nameArr[len - 1]] = payload.value;
// "iconPath": "/static/tab/my.png", saveKey = nameArr[0];
// "selectedIconPath": "/static/tab/my_cur.png", } else {
// "text": "我的" // 单层级变量在state就是一个普通变量的情况
// } state[payload.name] = payload.value;
], saveKey = payload.name;
// 如果vuex_version无需保存到本地永久存储无需lifeData.vuex_version方式 }
vuex_version: '1.0.1', // 保存变量到本地,见顶部函数定义
}, saveLifeData(saveKey, state[saveKey])
mutations: { }
$uStore(state, payload) { }
// 判断是否多层级调用state中为对象存在的情况诸如user.info.score = 1
let nameArr = payload.name.split('.');
let saveKey = '';
let len = nameArr.length;
if (nameArr.length >= 2) {
let obj = state[nameArr[0]];
for (let i = 1; i < len - 1; i++) {
obj = obj[nameArr[i]];
}
obj[nameArr[len - 1]] = payload.value;
saveKey = nameArr[0];
} else {
// 单层级变量在state就是一个普通变量的情况
state[payload.name] = payload.value;
saveKey = payload.name;
}
// 保存变量到本地,见顶部函数定义
saveLifeData(saveKey, state[saveKey])
}
}
}) })
export default store export default store