所属站点

This commit is contained in:
白菜
2026-01-21 16:13:13 +08:00
parent feaeb0c7d7
commit b24d930f4f
4 changed files with 252 additions and 218 deletions

View File

@ -1,93 +1,93 @@
{ {
"name": "上动EMS", "name" : "上动EMS",
"appid": "__UNI__B330617", "appid" : "__UNI__B330617",
"description": "", "description" : "",
"versionName": "1.2.0", "versionName" : "1.2.0",
"versionCode": "100", "versionCode" : "100",
"transformPx": false, "transformPx" : false,
"app-plus": { "app-plus" : {
"usingComponents": true, "usingComponents" : true,
"nvueCompiler": "uni-app", "nvueCompiler" : "uni-app",
"safearea": { "safearea" : {
"background": "#FFFFFF", "background" : "#FFFFFF",
"top": { "top" : {
"offset": "auto" "offset" : "auto"
} }
}, },
"splashscreen": { "splashscreen" : {
"alwaysShowBeforeRender": true, "alwaysShowBeforeRender" : true,
"waiting": true, "waiting" : true,
"autoclose": true, "autoclose" : true,
"delay": 0 "delay" : 0
}, },
"modules": {}, "modules" : {},
"distribute": { "distribute" : {
"android": { "android" : {
"permissions": [ "permissions" : [
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>", "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>", "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>", "<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>", "<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
] ]
}, },
"ios": { "ios" : {
"dSYMs": false "dSYMs" : false
}, },
"sdkConfigs": {}, "sdkConfigs" : {},
"icons": { "icons" : {
"android": { "android" : {
"hdpi": "static/logo.png", "hdpi" : "static/logo.png",
"xhdpi": "static/logo.png", "xhdpi" : "static/logo.png",
"xxhdpi": "static/logo.png", "xxhdpi" : "static/logo.png",
"xxxhdpi": "static/logo.png" "xxxhdpi" : "static/logo.png"
}, },
"ios": { "ios" : {
"appstore": "" "appstore" : ""
} }
}, },
"splashscreen": { "splashscreen" : {
"androidStyle": "common" "androidStyle" : "common"
} }
} }
}, },
"quickapp": {}, "quickapp" : {},
"mp-weixin": { "mp-weixin" : {
"appid": "wxccd7e2a0911b3397", "appid" : "wxccd7e2a0911b3397",
"setting": { "setting" : {
"urlCheck": false, "urlCheck" : false,
"es6": false, "es6" : false,
"minified": true, "minified" : true,
"postcss": true "postcss" : true
}, },
"optimization": { "optimization" : {
"subPackages": true "subPackages" : true
}, },
"usingComponents": true "usingComponents" : true
}, },
"vueVersion": "2", "vueVersion" : "2",
"h5": { "h5" : {
"template": "static/index.html", "template" : "static/index.html",
"devServer": { "devServer" : {
"port": 9090, "port" : 9090,
"https": false "https" : false
}, },
"title": "上动EMS", "title" : "上动EMS",
"router": { "router" : {
"mode": "hash", "mode" : "hash",
"base": "./" "base" : "./"
} }
}, },
"locale": "zh-Hans", "locale" : "zh-Hans",
"fallbackLocale": "zh-Hans" "fallbackLocale" : "zh-Hans"
} }

View File

@ -66,6 +66,9 @@
</template> </template>
<script> <script>
import {
mapGetters
} from 'vuex'
import DateRangeSelect from './DateRangeSelect.vue' import DateRangeSelect from './DateRangeSelect.vue'
import { import {
getAllSites, getAllSites,
@ -156,7 +159,6 @@
children: [] children: []
} }
], ],
siteList: [],
siteId: '', //选择的站点ID siteId: '', //选择的站点ID
baseInfo: {}, //站点基本信息 baseInfo: {}, //站点基本信息
gridList: [{ gridList: [{
@ -193,6 +195,7 @@
} }
}, },
computed: { computed: {
...mapGetters(['belongSite']),
siteGirdList() { siteGirdList() {
return this.gridList.filter(i => this.deviceCategoryOptions.includes(i.categoryName)) return this.gridList.filter(i => this.deviceCategoryOptions.includes(i.categoryName))
} }
@ -242,14 +245,18 @@
return { return {
text: item.siteName, text: item.siteName,
value: item.siteId, value: item.siteId,
id: item.id id: item.id,
disable: !this.belongSite || this.belongSite.length === 0 || this
.belongSite.includes('all') ? false : !this.belongSite.includes(item
.siteId)
} }
}) })
// 设置默认展示的站点 // 设置默认展示的站点
if (data.length > 0) { this.siteId = this.siteTypeOptions.find(i => i.children && i.children.length > 0)?.children
this.siteId = data[0].siteId .find(
this.updateSiteInfo() item => !item
} .disable)?.value || ''
this.siteId && this.updateSiteInfo()
}) })
}, },
getSiteBaseInfo() { getSiteBaseInfo() {

View File

@ -1,9 +1,10 @@
const getters = { const getters = {
token: state => state.user.token, token: state => state.user.token,
avatar: state => state.user.avatar, avatar: state => state.user.avatar,
id: state => state.user.id, id: state => state.user.id,
name: state => state.user.name, name: state => state.user.name,
roles: state => state.user.roles, roles: state => state.user.roles,
permissions: state => state.user.permissions permissions: state => state.user.permissions,
} belongSite: state => state.user.belongSite
export default getters }
export default getters

View File

@ -1,110 +1,136 @@
import config from '@/config' import config from '@/config'
import storage from '@/utils/storage' import storage from '@/utils/storage'
import constant from '@/utils/constant' import constant from '@/utils/constant'
import { isHttp, isEmpty } from "@/utils/validate" import {
import { login, logout, getInfo } from '@/api/login' isHttp,
import { getToken, setToken, removeToken } from '@/utils/auth' isEmpty
import defAva from '@/static/images/profile.jpg' } from "@/utils/validate"
import {
const baseUrl = config.baseUrl login,
logout,
const user = { getInfo
state: { } from '@/api/login'
token: getToken(), import {
id: storage.get(constant.id), getToken,
name: storage.get(constant.name), setToken,
avatar: storage.get(constant.avatar), removeToken
roles: storage.get(constant.roles), } from '@/utils/auth'
permissions: storage.get(constant.permissions) import defAva from '@/static/images/profile.jpg'
},
const baseUrl = config.baseUrl
mutations: {
SET_TOKEN: (state, token) => { const user = {
state.token = token state: {
}, token: getToken(),
SET_ID: (state, id) => { id: storage.get(constant.id),
state.id = id name: storage.get(constant.name),
storage.set(constant.id, id) avatar: storage.get(constant.avatar),
}, roles: storage.get(constant.roles),
SET_NAME: (state, name) => { permissions: storage.get(constant.permissions),
state.name = name belongSite: storage.get(constant.belongSite)
storage.set(constant.name, name) },
},
SET_AVATAR: (state, avatar) => { mutations: {
state.avatar = avatar SET_TOKEN: (state, token) => {
storage.set(constant.avatar, avatar) state.token = token
}, },
SET_ROLES: (state, roles) => { SET_ID: (state, id) => {
state.roles = roles state.id = id
storage.set(constant.roles, roles) storage.set(constant.id, id)
}, },
SET_PERMISSIONS: (state, permissions) => { SET_NAME: (state, name) => {
state.permissions = permissions state.name = name
storage.set(constant.permissions, permissions) storage.set(constant.name, name)
} },
}, SET_AVATAR: (state, avatar) => {
state.avatar = avatar
actions: { storage.set(constant.avatar, avatar)
// 登录 },
Login({ commit }, userInfo) { SET_ROLES: (state, roles) => {
const username = userInfo.username.trim() state.roles = roles
const password = userInfo.password storage.set(constant.roles, roles)
const code = userInfo.code },
const uuid = userInfo.uuid SET_PERMISSIONS: (state, permissions) => {
return new Promise((resolve, reject) => { state.permissions = permissions
login(username, password, code, uuid).then(res => { storage.set(constant.permissions, permissions)
setToken(res.token) },
commit('SET_TOKEN', res.token) SET_BELONGSITE: (state, belongSite = []) => {
resolve() state.belongSite = belongSite || []
}).catch(error => { storage.set(constant.belongSite, belongSite || [])
reject(error) }
}) },
})
}, actions: {
// 登录
// 获取用户信息 Login({
GetInfo({ commit, state }) { commit
return new Promise((resolve, reject) => { }, userInfo) {
getInfo().then(res => { const username = userInfo.username.trim()
const user = res.user const password = userInfo.password
let avatar = user.avatar || "" const code = userInfo.code
if (!isHttp(avatar)) { const uuid = userInfo.uuid
avatar = (isEmpty(avatar)) ? defAva : baseUrl + avatar return new Promise((resolve, reject) => {
} login(username, password, code, uuid).then(res => {
const userid = (isEmpty(user) || isEmpty(user.userId)) ? "" : user.userId setToken(res.token)
const username = (isEmpty(user) || isEmpty(user.userName)) ? "" : user.userName commit('SET_TOKEN', res.token)
if (res.roles && res.roles.length > 0) { resolve()
commit('SET_ROLES', res.roles) }).catch(error => {
commit('SET_PERMISSIONS', res.permissions) reject(error)
} else { })
commit('SET_ROLES', ['ROLE_DEFAULT']) })
} },
commit('SET_ID', userid)
commit('SET_NAME', username) // 获取用户信息
commit('SET_AVATAR', avatar) GetInfo({
resolve(res) commit,
}).catch(error => { state
reject(error) }) {
}) return new Promise((resolve, reject) => {
}) getInfo().then(res => {
}, const user = res.user
const belongSite = user?.belongSite ? JSON.parse(user?.belongSite) || [] : []
// 退出系统 let avatar = user.avatar || ""
LogOut({ commit, state }) { if (!isHttp(avatar)) {
return new Promise((resolve, reject) => { avatar = (isEmpty(avatar)) ? defAva : baseUrl + avatar
logout(state.token).then(() => { }
commit('SET_TOKEN', '') const userid = (isEmpty(user) || isEmpty(user.userId)) ? "" : user.userId
commit('SET_ROLES', []) const username = (isEmpty(user) || isEmpty(user.userName)) ? "" : user.userName
commit('SET_PERMISSIONS', []) if (res.roles && res.roles.length > 0) {
removeToken() commit('SET_ROLES', res.roles)
storage.clean() commit('SET_PERMISSIONS', res.permissions)
resolve() } else {
}).catch(error => { commit('SET_ROLES', ['ROLE_DEFAULT'])
reject(error) }
}) commit('SET_ID', userid)
}) commit('SET_NAME', username)
} commit('SET_AVATAR', avatar)
} commit('SET_BELONGSITE', belongSite)
} resolve(res)
}).catch(error => {
export default user reject(error)
})
})
},
// 退出系统
LogOut({
commit,
state
}) {
return new Promise((resolve, reject) => {
logout(state.token).then(() => {
commit('SET_TOKEN', '')
commit('SET_ROLES', [])
commit('SET_PERMISSIONS', [])
removeToken()
storage.clean()
resolve()
}).catch(error => {
reject(error)
})
})
}
}
}
export default user