This commit is contained in:
2024-09-10 10:49:08 +08:00
parent b5fd06b800
commit dd4f5938da
6391 changed files with 722800 additions and 0 deletions

View File

@@ -0,0 +1,249 @@
<template>
<JeepayBackground :bgColorStyle="{}">
<JeepayCustomNavbar textColor="#fff" bgDefaultColor="linear-gradient(270deg, rgba(72, 192, 255, 1) 0%, rgba(51, 157, 255, 1) 100%)" title="详情" backCtrl="back" />
<view class="sta-info">
<image class="sta-photo" :src="vdata.record.avatarUrl" mode="scaleToFill" />
<view class="info-main">
<view class="info-name">
{{ vdata.record.realname }}
<image src="/pageDevice/static/devIconImg/icon-more-white.svg" mode="scaleToFill" @tap="single.open('delete')" />
</view>
<view class="info-phone">{{ vdata.record.telphone }}</view>
</view>
</view>
<JeepayCard viewStyle="margin-top: 50rpx" editText="编辑信息" @editTap="go.to('PAGES_USER_EDIT', {sysUserId: vdata.record.sysUserId})">
<JeepayDescview>
<JeepayDescviewItem title="用户ID" :desc="vdata.record.sysUserId" />
<JeepayDescviewItem title="完整手机号" :desc="vdata.record.telphone" />
<JeepayDescviewItem title="用户登录名" :desc="vdata.record.loginUsername" />
<JeepayDescviewItem title="用户性别" >
<template #desc>
<view class="sex-info-text">
<template v-if="vdata.record.sex == 1">
<image src="/pageDevice/static/devIconImg/icon-man.svg" mode="scaleToFill" />
</template>
<template v-else-if="vdata.record.sex == 2">
<image src="/pageDevice/static/devIconImg/icon-woman.svg" mode="scaleToFill" />
</template>
<template v-else>
未知
</template>
</view>
</template>
</JeepayDescviewItem>
<JeepayDescviewItem title="用户编号" :desc="vdata.record.userNo" />
<JeepayDescviewItem title="用户类型" >
<template #desc>
<JeepayTag :type="datamap.userType(vdata.record.userType).type">{{ datamap.userType(vdata.record.userType).text }}</JeepayTag>
</template>
</JeepayDescviewItem>
<JeepayDescviewItem title="创建时间" :desc="vdata.record.createdAt" />
</JeepayDescview>
</JeepayCard>
<!-- 仅非超管显示 -->
<JeepayCard v-if="vdata.record.userType != 1" title="已绑定门店" viewStyle="margin-top: 40rpx">
<JeepayDescview>
<template v-for="(r) in vdata.selectedStoreList">
<JeepayDescviewItem :title="r.storeName" :desc="r.storeId" />
</template>
</JeepayDescview>
</JeepayCard>
<JeepayCard title="权限管理" viewStyle="margin-top: 40rpx">
<JeepayTableListItem v-if="ent.has('ENT_UR_USER_EDIT')" title="用户状态" subtitle="状态禁用后用户将无法登录APP和后台管理系统">
<template #titleRight>
<JeepayStateSwitch v-model:state="vdata.record.state" :showSwitchType="true" :updateStateFunc="updateStateFunc"/>
</template>
</JeepayTableListItem>
<JeepayTableListItem v-if="vdata.record.userType == 11" title="门店编辑权限" subtitle="权限禁用后,该用户将不支持编辑门店信息功能">
<template #titleRight>
<JeepayStateSwitch v-model:state="vdata.userRules['STORE']" :showSwitchType="true" :updateStateFunc="(state) => updateRuleFunc('STORE', state)"/>
</template>
</JeepayTableListItem>
<JeepayTableListItem v-if="vdata.record.userType == 12" title="收银权限" subtitle="权限禁用后,该用户将不支持快捷收银功能">
<template #titleRight>
<JeepayStateSwitch v-model:state="vdata.userRules['QUICK_PAY']" :showSwitchType="true" :updateStateFunc="(state) => updateRuleFunc('QUICK_PAY', state)"/>
</template>
</JeepayTableListItem>
<JeepayTableListItem v-if="vdata.record.userType == 12" title="订单退款权限" subtitle="权限禁用后,该用户将不支持订单退款操作">
<template #titleRight>
<JeepayStateSwitch v-model:state="vdata.userRules['REFUND']" :showSwitchType="true" :updateStateFunc="(state) => updateRuleFunc('REFUND', state)"/>
</template>
</JeepayTableListItem>
<JeepayTableListItem v-if="vdata.record.userType == 12" title="设备管理权限" subtitle="权限禁用后,该用户将不支持门店设备管理功能">
<template #titleRight>
<JeepayStateSwitch v-model:state="vdata.userRules['DEVICE']" :showSwitchType="true" :updateStateFunc="(state) => updateRuleFunc('DEVICE', state)"/>
</template>
</JeepayTableListItem>
<JeepayTableListItem v-if="vdata.record.userType == 12" title="统计报表权限" subtitle="权限禁用后,该用户将不支持查看门店统计报表数据">
<template #titleRight>
<JeepayStateSwitch v-model:state="vdata.userRules['STATS']" :showSwitchType="true" :updateStateFunc="(state) => updateRuleFunc('STATS', state)"/>
</template>
</JeepayTableListItem>
</JeepayCard>
<JSinglePopup ref="single" :list="list" activeColor="#FF5B4C" />
<JeepayPopupConfirm ref="jeepayPopupConfirmRef" />
</JeepayBackground>
</template>
<script setup>
import { reactive, ref } from 'vue'
import { onLoad, onUnload } from '@dcloudio/uni-app'
import { reqLoad, API_URL_SYS_USER_LIST, API_URL_USER_BIND_STORE_LIST, $getUserEntRoles, $updateUserEntRoles } from '@/http/apiManager.js'
import datamap from '@/commons/utils/datamap.js'
import infoBox from '@/commons/utils/infoBox.js';
import go from '@/commons/utils/go.js'
import formUtil from '@/commons/utils/formUtil.js'
import emit from '@/commons/utils/emit.js'
import ent from '@/commons/utils/ent.js'
const single = ref()
const jeepayPopupConfirmRef = ref()
const list = reactive([
{ label: '删除用户', value: 'delete', fun: confirmFunc},
])
onLoad((options) => {
refData(options.sysUserId)
})
const vdata = reactive({
record : { },
selectedStoreList: [],
// 用户权限集合
userRules: {
"STORE": 0, "QUICK_PAY": 0, "REFUND": 0, "DEVICE": 0, "STATS": 0,
},
})
// 监听 更新事件
onUnload(() => uni.$off(emit.ENAME_REF_SYS_USER_DETAIL))
uni.$on(emit.ENAME_REF_SYS_USER_DETAIL, function(data){
refData(vdata.record.sysUserId)
})
function refData(sysUserId){
reqLoad.getById(API_URL_SYS_USER_LIST, sysUserId).then(({bizData}) => {
vdata.record = bizData
vdata.selectedStoreList = []
// 店长 or 店员。 查询权限
if(bizData.userType == 11 || bizData.userType == 12){
// 查询已绑定门店
reqLoad.list(API_URL_USER_BIND_STORE_LIST, {sysUserId: sysUserId, pageSize: -1}).then((storeRes) => {
vdata.selectedStoreList = storeRes.bizData.records
})
$getUserEntRoles(sysUserId).then(roleRes => {
let roleBizData = roleRes.bizData;
if(roleBizData && roleBizData.rules){
let ruleList = JSON.parse(roleBizData.rules)
Object.keys(vdata.userRules).forEach(k => {
vdata.userRules[k] = ruleList.indexOf(k) >= 0 ? 1: 0
})
}
})
}
})
}
function updateStateFunc(state){
return reqLoad.updateById(API_URL_SYS_USER_LIST, vdata.record.sysUserId, { state: state }).then(() => {
emit.pageEmit(emit.ENAME_REF_SYS_USER_LIST)
infoBox.showSuccessToast("修改成功");
})
}
// 修改用户权限。
function updateRuleFunc(ruleName, state){
return $updateUserEntRoles(vdata.record.sysUserId, ruleName, state).then(() => {
infoBox.showSuccessToast("修改成功",{mask:false});
})
}
function confirmFunc() {
jeepayPopupConfirmRef.value.open('确定删除用户?').then(() => {
deleteFunc()
}).catch(() => {
single.value.open('delete')
})
}
function deleteFunc(){
return reqLoad.delById(API_URL_SYS_USER_LIST, vdata.record.sysUserId).then(() => {
infoBox.showSuccessToast("删除成功");
go.back(1, emit.ENAME_REF_SYS_USER_LIST) // 返回页面 && 更新
})
}
</script>
<style lang="scss" scoped>
.sex-info-text {
image {
width: 30rpx;
height: 30rpx;
margin-right: 10rpx;
}
}
.sta-info {
display: flex;
margin-top: 50rpx;
padding: 0 50rpx;
.sta-photo {
width: 120rpx;
height: 120rpx;
border-radius: 50%;
image {
width: 100%;
height: 100%;
}
}
.info-main {
flex: 1;
margin-left: 30rpx;
color: #fff;
.info-name {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 33rpx;
font-weight: 400;
image {
width: 70rpx;
height: 70rpx;
}
}
.info-phone {
margin-top: 16rpx;
color: rgba(251, 252, 253, 0.7);
font-size: 25rpx;
font-weight: 400;
}
}
}
</style>