增加权限
This commit is contained in:
parent
da5084d1d8
commit
58b8174e1e
@ -14,32 +14,35 @@
|
||||
<!-- 宫格组件 -->
|
||||
<uni-section title="订单管理" type="line"></uni-section>
|
||||
<view class="grid-body">
|
||||
<uni-grid :column="2" :showBorder="false" @change="changeGrid">
|
||||
<uni-grid-item @click="gotoOrderManager">
|
||||
<uni-grid :column="3" :showBorder="false" @change="changeGrid">
|
||||
<uni-grid-item @click="gotoOrderManager" v-if="checkRole(['shangwu','shangyeUser','gylzy','gylfujinli','zhangmj','dazhongadmin'])">
|
||||
<view class="grid-item-box">
|
||||
<uni-icons size="30" type="person-filled"></uni-icons>
|
||||
<text class="text">订单管理</text>
|
||||
</view>
|
||||
</uni-grid-item>
|
||||
<uni-grid-item @click="gotoOrder">
|
||||
<uni-grid-item @click="gotoOrder" v-if="checkRole(['gylzy','scshoukuan','gddingdancangku','zjdingdancangku','scdindanshenhe','gylfujinli','dazhongadmin','gspcangku'])">
|
||||
<view class="grid-item-box">
|
||||
<uni-icons size="30" type="compose"></uni-icons>
|
||||
<text class="text">订单审核</text>
|
||||
</view>
|
||||
</uni-grid-item>
|
||||
<uni-grid-item @click="gotoFinalcial">
|
||||
<uni-grid-item @click="gotoFinalcial" v-if="checkRole(['gylzy','scshoukuan','gddingdancangku','gylfujinli','zjhexiaocaiwushenhe','DLMshenhe'
|
||||
,'dazhongadmin','zjshouzhang','HOPdingdancangku'])">
|
||||
<view class="grid-item-box">
|
||||
<uni-icons size="30" type="list"></uni-icons>
|
||||
<text class="text">财务审批</text>
|
||||
</view>
|
||||
</uni-grid-item>
|
||||
<uni-grid-item @click="gotoBusiness">
|
||||
<uni-grid-item @click="gotoBusiness" v-if="checkRole(['shangwu','gylzy','gylfujinli','zhangmj','dazhongadmin','daqu_zongbu'])">
|
||||
<view class="grid-item-box">
|
||||
<uni-icons size="30" type="staff"></uni-icons>
|
||||
<text class="text">商务审批</text>
|
||||
</view>
|
||||
</uni-grid-item>
|
||||
<uni-grid-item @click="gotoOrderSearchQuery">
|
||||
<uni-grid-item @click="gotoOrderSearchQuery" v-if="checkRole(['shangwu','daqu_dong','shangyeUser','gylzy','scshoukuan','gddingdancangku',
|
||||
'zjdingdancangku','scdindanshenhe','gylfujinli','chaxun','baishufei','zhangmj','fuzongjian','zhangp','dazhongadmin','zjkaipiao','zjshouzhang','gspcangku',
|
||||
'daqu_nan','daqu_xi','daqu_bei','daqu_zongbu'])">
|
||||
<view class="grid-item-box">
|
||||
<uni-icons size="30" type="person-filled"></uni-icons>
|
||||
<text class="text">订单综合查询</text>
|
||||
@ -50,13 +53,14 @@
|
||||
<uni-section title="开户管理" type="line" />
|
||||
<view class="grid-body">
|
||||
<uni-grid :column="4" :showBorder="false" @change="changeGrid">
|
||||
<uni-grid-item @click="navigateTo('/pages/work/AccountPricePreliminaryRreview/index')">
|
||||
<uni-grid-item @click="navigateTo('/pages/work/AccountPricePreliminaryRreview/index')" v-if="checkRole(['daqu_dong','gylzy','gylfujinli','fuzongjian',
|
||||
'dazhongadmin','daqu_nan','daqu_xi','daqu_bei','daqu_zongbu'])">
|
||||
<view class="grid-item-box">
|
||||
<uni-icons size="30" type="person-filled"></uni-icons>
|
||||
<text class="text">账期价格初审</text>
|
||||
</view>
|
||||
</uni-grid-item>
|
||||
<uni-grid-item @click="navigateTo('/pages/work/AccountPriceFinallReview/index')">
|
||||
<uni-grid-item @click="navigateTo('/pages/work/AccountPriceFinallReview/index')" v-if="checkRole(['gylzy','gylfujinli','dazhongadmin'])">
|
||||
<view class="grid-item-box">
|
||||
<uni-icons size="30" type="person-filled"></uni-icons>
|
||||
<text class="text">账期价格复审</text>
|
||||
@ -122,13 +126,37 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {getCurrentInstance, ref} from "vue"
|
||||
import { getCurrentInstance, onMounted, ref } from "vue"
|
||||
import { navigateTo } from "../../utils/utils";
|
||||
import { useUserStore } from '@/store'
|
||||
import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
|
||||
|
||||
const { proxy } = getCurrentInstance()
|
||||
const current = ref(0)
|
||||
const swiperDotIndex = ref(0)
|
||||
const data = ref([{image: '/static/images/banner/background.jpg'}])
|
||||
const userStore = useUserStore()
|
||||
|
||||
|
||||
|
||||
// 检查角色
|
||||
// function checkRole(roles) {
|
||||
// const userRoles = userStore.roles || []
|
||||
// return userRoles.some(role => roles.includes(role))
|
||||
// }
|
||||
|
||||
// 检查权限
|
||||
// function checkPermi(permissions) {
|
||||
// const userPermissions = userStore.permissions || []
|
||||
// return permissions.some(perm => userPermissions.includes(perm))
|
||||
// }
|
||||
|
||||
onMounted(async () => {
|
||||
try {
|
||||
await userStore.getInfo()
|
||||
} finally {
|
||||
}
|
||||
})
|
||||
|
||||
function clickBannerItem(item) {
|
||||
console.info(item)
|
||||
@ -166,13 +194,11 @@ const gotoOrderManager = () => {
|
||||
url: '/pages/work/OrderManager/index'
|
||||
})
|
||||
}
|
||||
|
||||
const gotoOrderSearchQuery = () => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/work/OrderSearchQuery/index'
|
||||
})
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@ -1,29 +1,5 @@
|
||||
import store from '@/store'
|
||||
|
||||
/**
|
||||
* 字符权限校验
|
||||
* @param {Array} value 校验值
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
export function checkPermi(value) {
|
||||
if (value && value instanceof Array && value.length > 0) {
|
||||
const permissions = store.getters && store.getters.permissions
|
||||
const permissionDatas = value
|
||||
const all_permission = "*:*:*"
|
||||
|
||||
const hasPermission = permissions.some(permission => {
|
||||
return all_permission === permission || permissionDatas.includes(permission)
|
||||
})
|
||||
|
||||
if (!hasPermission) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
} else {
|
||||
console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`)
|
||||
return false
|
||||
}
|
||||
}
|
||||
import { useUserStore } from '@/store' // 导入 userStore
|
||||
|
||||
/**
|
||||
* 角色权限校验
|
||||
@ -32,20 +8,51 @@ export function checkPermi(value) {
|
||||
*/
|
||||
export function checkRole(value) {
|
||||
if (value && value instanceof Array && value.length > 0) {
|
||||
const roles = store.getters && store.getters.roles
|
||||
// 方式1:通过 store.getters 获取,但需要确保 getters 返回的是值
|
||||
// const roles = store.getters?.roles || []
|
||||
|
||||
// 方式2:直接使用 useUserStore
|
||||
const userStore = useUserStore()
|
||||
const roles = userStore.roles || [] // 这里 roles 是 ref,需要 .value
|
||||
const permissionRoles = value
|
||||
const super_admin = "admin"
|
||||
|
||||
const hasRole = roles.some(role => {
|
||||
// 确保 roles 是数组,处理 ref
|
||||
const rolesArray = Array.isArray(roles) ? roles : (roles.value || [])
|
||||
|
||||
const hasRole = rolesArray.some(role => {
|
||||
return super_admin === role || permissionRoles.includes(role)
|
||||
})
|
||||
|
||||
if (!hasRole) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
return hasRole
|
||||
} else {
|
||||
console.error(`need roles! Like checkRole="['admin','editor']"`)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 权限校验
|
||||
* @param {Array} value 校验值
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
export function checkPermi(value) {
|
||||
if (value && value instanceof Array && value.length > 0) {
|
||||
const userStore = useUserStore()
|
||||
const permissions = userStore.permissions || []
|
||||
const permissionDatas = value
|
||||
const all_permission = "*:*:*"
|
||||
|
||||
// 确保 permissions 是数组,处理 ref
|
||||
const permissionsArray = Array.isArray(permissions) ? permissions : (permissions.value || [])
|
||||
|
||||
const hasPermission = permissionsArray.some(permission => {
|
||||
return all_permission === permission || permissionDatas.includes(permission)
|
||||
})
|
||||
|
||||
return hasPermission
|
||||
} else {
|
||||
console.error(`need permissions! Like checkPermi="['system:user:add','system:user:edit']"`)
|
||||
return false
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user