Browse Source

add logic for tid1509

tid1509
刘嘉炜 3 months ago
parent
commit
2297e706e6
  1. 1
      src/subpackage/account/js/api.js
  2. 30
      src/subpackage/account/pages/permission/edit.vue
  3. 5
      src/subpackage/account/pages/permission/info.vue
  4. 80
      src/subpackage/account/pages/permission/modules/edit/admin_jurisdiction.vue
  5. 44
      src/subpackage/account/pages/permission/modules/edit/stadium_jurisdiction.vue
  6. 7
      src/subpackage/account/pages/permission/modules/info/admin_permission.vue

1
src/subpackage/account/js/api.js

@ -6,4 +6,5 @@ export const ACCOUNT_API = {
userGet:`${ORIGIN}/admin/user/get`, // B会员管理-小程序用户管理-用户信息列表-用户信息详情 userGet:`${ORIGIN}/admin/user/get`, // B会员管理-小程序用户管理-用户信息列表-用户信息详情
userEdit:`${ORIGIN}/admin/user/edit`, // 权限管理-编辑管理员信息 userEdit:`${ORIGIN}/admin/user/edit`, // 权限管理-编辑管理员信息
stadiumList:`${ORIGIN}/admin/stadium/list`, // A店铺管理-店铺列表-店铺列表/A首页公告-店铺列表 stadiumList:`${ORIGIN}/admin/stadium/list`, // A店铺管理-店铺列表-店铺列表/A首页公告-店铺列表
getAllGroup:`${ORIGIN}/admin/permission/getAllGroup`, // 权限管理-获取所有权限组
} }

30
src/subpackage/account/pages/permission/edit.vue

@ -4,10 +4,10 @@
:name="userInfo.name" :name="userInfo.name"
:account="userInfo.account" :account="userInfo.account"
></user-info> ></user-info>
<admin-jurisdiction></admin-jurisdiction>
<admin-jurisdiction ref="adminJurisdiction" v-model="admin_permission_id"></admin-jurisdiction>
<min-jurisdiction v-model="miniPermissionLs"></min-jurisdiction> <min-jurisdiction v-model="miniPermissionLs"></min-jurisdiction>
<cashier-jurisdiction></cashier-jurisdiction> <cashier-jurisdiction></cashier-jurisdiction>
<stadium-jurisdiction ref="stadiumJurisdiction"></stadium-jurisdiction>
<stadium-jurisdiction ref="stadiumJurisdiction" v-model="stadiumPermissionLs"></stadium-jurisdiction>
<fixed-button @click="saveBtn">保存</fixed-button> <fixed-button @click="saveBtn">保存</fixed-button>
</view> </view>
</template> </template>
@ -33,12 +33,6 @@ export default {
userInfo(){ userInfo(){
return this.optionsQuery?.userInfo ?? {}; return this.optionsQuery?.userInfo ?? {};
}, },
// miniPermissionLs(){
// return this.optionsQuery?.miniPermissionLs ?? [];
// },
stadiumPermissionLs(){
return this.optionsQuery?.stadiumPermissionLs ?? [];
},
}, },
data(){ data(){
return { return {
@ -47,30 +41,44 @@ export default {
/** /**
* @param {Array} miniPermissionLs 商家助手小程序权限列表 * @param {Array} miniPermissionLs 商家助手小程序权限列表
* @param {Array} stadiumPermissionLs 门店权限列表 * @param {Array} stadiumPermissionLs 门店权限列表
* @param {Number} admin_permission_id 后台权限
* @param {Object} userInfo 用户信息 * @param {Object} userInfo 用户信息
* @param {Number} userInfo.id * @param {Number} userInfo.id
* @param {String} userInfo.account * @param {String} userInfo.account
* @param {String} userInfo.name * @param {String} userInfo.name
*/ */
}, },
//
miniPermissionLs: [], miniPermissionLs: [],
//
stadiumPermissionLs: [],
//
admin_permission_id: -1,
} }
}, },
onReady(){ onReady(){
let { brand_id } = this; let { brand_id } = this;
this.$refs.stadiumJurisdiction?.getStadiumLs?.(brand_id); this.$refs.stadiumJurisdiction?.getStadiumLs?.(brand_id);
this.$refs.adminJurisdiction?.getAllGroup?.({ brand_id });
}, },
onLoad(options){ onLoad(options){
let { brand_id, query_json } = options; let { brand_id, query_json } = options;
this.brand_id = brand_id ?? '';
this.optionsQuery = jsonPar(query_json ?? '{}');
let optQuery = jsonPar(query_json ?? '{}'); let optQuery = jsonPar(query_json ?? '{}');
console.warn('edit options =>', optQuery);
this.brand_id = brand_id ?? '';
this.optionsQuery = optQuery;
this.miniPermissionLs = optQuery?.miniPermissionLs ?? []; this.miniPermissionLs = optQuery?.miniPermissionLs ?? [];
this.stadiumPermissionLs = optQuery?.stadiumPermissionLs ?? [];
this.admin_permission_id = optQuery?.admin_permission_id ?? -1;
}, },
methods: { methods: {
saveBtn: debounce(function(){ saveBtn: debounce(function(){
let { miniPermissionLs, stadiumPermissionLs, admin_permission_id } = this;
showModal({ content: '是否保存该账号权限?', }); showModal({ content: '是否保存该账号权限?', });
}, 300, true)
console.warn('miniPermissionLs =>', miniPermissionLs);
console.warn('stadiumPermissionLs =>', stadiumPermissionLs);
console.warn('admin_permission_id =>', admin_permission_id);
}, 300, true),
} }
} }
</script> </script>

5
src/subpackage/account/pages/permission/info.vue

@ -109,9 +109,10 @@ export default {
account: userInfo?.username ?? '', account: userInfo?.username ?? '',
}, },
miniPermissionLs, miniPermissionLs,
stadiumPermissionLs
stadiumPermissionLs,
admin_permission_id: userInfo?.extension?.permission?.id ?? '',
} }
routeTo(`/subpackage/account/pages/permission/edit?brand_id=${this.brand_id}&query_json=${jsonStr(_query)}`, 'nT');
routeTo(`/subpackage/account/pages/permission/edit?brand_id=${brand_id}&query_json=${jsonStr(_query)}`, 'nT');
}, },
unbindWXAccount(){ unbindWXAccount(){
showModal({ content: '是否解绑该账号?', }); showModal({ content: '是否解绑该账号?', });

80
src/subpackage/account/pages/permission/modules/edit/admin_jurisdiction.vue

@ -2,14 +2,14 @@
<info-container title="后台权限"> <info-container title="后台权限">
<template v-slot:title-right> <template v-slot:title-right>
<view class="aj-title-right"> <view class="aj-title-right">
<switch color="#009874" style="transform:scale(0.7)"></switch>
<switch color="#009874" style="transform:scale(0.7)" :checked="switchChecked"></switch>
</view> </view>
</template> </template>
<template v-slot:content> <template v-slot:content>
<view class="aj-content"> <view class="aj-content">
<picker>
<picker :range="permissionList" range-key="permission_name" :value="curPickerIdx" @change="pickerChange">
<view class="ac-frame"> <view class="ac-frame">
<input class="af-ipt" disabled type="text" />
<input class="af-ipt" disabled type="text" :value="curPermissionInfo.permission_name || ''" />
<image class="af-icon" mode="aspectFit" src="/subpackage/account/static/images/arrow.png"></image> <image class="af-icon" mode="aspectFit" src="/subpackage/account/static/images/arrow.png"></image>
</view> </view>
</picker> </picker>
@ -20,10 +20,84 @@
<script> <script>
import infoContainer from '../../../../components/info_container.vue'; import infoContainer from '../../../../components/info_container.vue';
import { routeTo, showModal, showLoad, hideLoad, showNone, jsonStr } from "@/utils/util.js";
import { ACCOUNT_API } from "../../../../js/api.js";
import server from "../../../../js/server.js";
export default { export default {
components: { components: {
'info-container': infoContainer 'info-container': infoContainer
}, },
props: {
value: {
default: -1,
}
},
computed: {
adminId: {
get(){
return +this.value;
},
set(val){
this.$emit('input', val);
}
},
curPermissionInfo(){
let { adminId, permissionList } = this;
return permissionList.find(ele => +ele.id === +adminId) || {};
},
curPickerIdx(){
let { permissionList, adminId } = this;
return permissionList.findIndex(ele => +ele.id === +adminId);
}
},
data(){
return {
permissionList: [],
switchChecked: false
}
},
methods: {
pickerChange(e){
let { permissionList } = this;
let { value } = e.detail;
let _curInfo = permissionList?.[value] || {};
if(!_curInfo.id)return;
this.adminId = _curInfo.id;
},
// -
getAllGroup({ brand_id }){
showLoad();
return server.post({
url: ACCOUNT_API.getAllGroup,
data: { role_id: `ADMIN-BRAND-${brand_id}`, brand_id },
isDefaultGet: false,
})
.then(res => {
hideLoad();
let _data = res?.data || {};
if(_data.code === 0){
let _ls = _data?.data ?? [];
if(_ls?.length)this.echoData(_ls);
return this.permissionList = _ls;
}else{
return Promise.reject(_data);
}
})
.catch(err => {
showModal({
title: '提示',
content: err.message || '加载失败!'
})
console.warn('subpackage account pages permission modules info admin_permission err --->', err);
// return Promise.reject(err);
})
},
echoData(list){
let { adminId } = this;
this.switchChecked = list.some(ele=> ele.id === +adminId)
}
}
} }
</script> </script>

44
src/subpackage/account/pages/permission/modules/edit/stadium_jurisdiction.vue

@ -1,9 +1,10 @@
<template> <template>
<select-container title="门店权限" :is-all="isAll" @click:all="isAll = !isAll">
<select-container title="门店权限" :is-all="isAll" @click:all="allSelectedBtn">
<view class="jurisdiction-content"> <view class="jurisdiction-content">
<view class="mjc-item" v-for="(e, i) in stadiumLs" :key="i"> <view class="mjc-item" v-for="(e, i) in stadiumLs" :key="i">
<jurisdiction-item <jurisdiction-item
:active='i%2 === 0'
:active='selectedIds.includes(+e.id)'
@click="itemClick(e)"
>{{ e.name || '-' }}</jurisdiction-item> >{{ e.name || '-' }}</jurisdiction-item>
</view> </view>
</view> </view>
@ -22,10 +23,29 @@ export default {
}, },
data(){ data(){
return { return {
isAll: false,
stadiumLs: [], stadiumLs: [],
} }
}, },
props: {
value: {
type: Array,
default: []
}
},
computed: {
selectedIds: {
get(){
return this.value?.map?.(item=>+item);
},
set(val){
this.$emit('input', val);
}
},
isAll(){
let { stadiumLs, selectedIds } = this;
return stadiumLs.every(item=>selectedIds.includes(+item.id));
}
},
onLoad(){ onLoad(){
}, },
@ -34,6 +54,24 @@ export default {
let _res = await getStadiumList({ brand_id: bid }); let _res = await getStadiumList({ brand_id: bid });
let _ls = _res?.list ?? []; let _ls = _res?.list ?? [];
this.stadiumLs = _ls; this.stadiumLs = _ls;
},
itemClick(e){
let { selectedIds } = this;
if(selectedIds.includes(+e.id)){
this.selectedIds = selectedIds.filter(item=>item !== +e.id);
}else{
this.selectedIds = selectedIds.concat(+e.id);
}
},
//
allSelectedBtn(){
let { stadiumLs, selectedIds, isAll } = this;
let _pIds = stadiumLs.map(item => +item.id);
if(isAll){
this.selectedIds = selectedIds.filter(item => !_pIds.includes(item));
}else{
this.selectedIds = [ ...new Set([...selectedIds, ..._pIds]) ];
}
} }
} }
} }

7
src/subpackage/account/pages/permission/modules/info/admin_permission.vue

@ -16,7 +16,8 @@
<script> <script>
import infoContainer from '../../../../components/info_container.vue'; import infoContainer from '../../../../components/info_container.vue';
import { showModal } from "@/utils/util.js";
export default { export default {
components: { components: {
'info-container': infoContainer 'info-container': infoContainer
@ -30,11 +31,7 @@ export default {
type: String, type: String,
default: '' default: ''
}, },
}, },
methods: {
}
} }
</script> </script>

Loading…
Cancel
Save