Browse Source

add logic for tid1509

tid1509
刘嘉炜 3 months ago
parent
commit
82c04031fc
  1. 18
      src/subpackage/account/components/user_info.vue
  2. 7
      src/subpackage/account/js/api.js
  3. 2
      src/subpackage/account/js/server.js
  4. 110
      src/subpackage/account/pages/list/index.vue
  5. 21
      src/subpackage/account/pages/list/modules/item.vue
  6. 8
      src/subpackage/account/pages/manage/add.vue
  7. 44
      src/subpackage/account/pages/manage/modules/apply/success_modal.vue
  8. 41
      src/subpackage/account/pages/permission/info.vue

18
src/subpackage/account/components/user_info.vue

@ -2,21 +2,21 @@
<view class="info-user">
<view class="iu-top">
<view class="it-left">
<view class="il-name">周小舞</view>
<view class="il-name">{{ name || "-" }}</view>
<image @click="$emit('click:edit')" class="il-edit" v-if="edit" mode="aspectFit" src="/subpackage/account/static/images/edit.png"></image>
</view>
<image @click="$emit('click:delete')" class="it-delete" v-if="edit" mode="aspectFit" src="/subpackage/account/static/images/delete.png"></image>
</view>
<view class="iu-box">
<view class="iu-line">
<text class="il-txt">登录账号</text> liuhuo2524
<text class="il-txt">登录账号</text> {{ account || "-" }}
</view>
<block v-if="edit">
<view class="iu-line">
<text class="il-txt">密码</text> <text class="il-link" @click="$emit('click:changePSW')">修改密码</text>
</view>
<view class="iu-line">
<text class="il-txt">创建时间</text> 2024-12-09 11:21:40
<text class="il-txt">创建时间</text> {{ time || "-" }}
</view>
</block>
@ -31,6 +31,18 @@ export default {
edit: {
type: Boolean,
default: false
},
name: {
type: String,
default: ''
},
account: {
type: String,
default: ''
},
time: {
type: String,
default: ''
}
}
}

7
src/subpackage/account/js/api.js

@ -0,0 +1,7 @@
import { ORIGIN } from '@/js/api';
export const ACCOUNT_API = {
userRest:`${ORIGIN}/admin/user/rest`, // 权限管理-获取管理员
userDelete:`${ORIGIN}/admin/user/delete`, // 权限管理-删除权限组
userGet:`${ORIGIN}/admin/user/get`, // B会员管理-小程序用户管理-用户信息列表-用户信息详情
}

2
src/subpackage/account/js/server.js

@ -1,4 +1,4 @@
import { Server } from '../../../js/server';
import { Server } from '@/js/server';
class AccountServer extends Server {
constructor(props){

110
src/subpackage/account/pages/list/index.vue

@ -5,11 +5,17 @@
<check-status-bar @click="accountCheck"></check-status-bar>
</view>
<view class="li-list">
<list-item
@click:message="messageSubscription"
@click:account="accountAuthority"
@click:delete="itemDeleteBtn"
></list-item>
<block v-for="(e, i) in userLs" :key="i">
<list-item
:name="e.actual_name"
:account="e.username"
:time="e.created_at"
@click:message="messageSubscription"
@click:account="accountAuthority(e)"
@click:delete="itemDeleteBtn(e, i)"
></list-item>
<view style="height: 24rpx;"></view>
</block>
</view>
</view>
</template>
@ -18,7 +24,10 @@
import inputBar from './modules/input_bar.vue';
import checkStatusBar from './modules/check_status_bar.vue';
import listItem from './modules/item.vue';
import { routeTo, showModal } from "@/utils/util.js";
import { routeTo, showModal, showLoad, hideLoad, showNone } from "@/utils/util.js";
import { ACCOUNT_API } from "../../js/api.js";
import server from "../../js/server.js";
export default {
components: {
'input-bar': inputBar,
@ -27,25 +36,100 @@ export default {
},
data(){
return {
brand_id: '',
brand_id: '',
userLs: [],
page: 1
}
},
onLoad(options){
this.brand_id = options?.brand_id || '';
let _bid = options?.brand_id ?? '';
this.getUserLs({ brand_id: _bid });
this.brand_id = _bid;
},
onReachBottom(){
this.getUserLs({ brand_id: this.brand_id, page: this.page + 1 });
},
methods: {
messageSubscription(){
routeTo(`/subpackage/account/pages/message/info?brand_id=${this.brand_id}`, 'nT');
},
accountAuthority(){
routeTo(`/subpackage/account/pages/permission/info?brand_id=${this.brand_id}`, 'nT');
accountAuthority(e){
routeTo(`/subpackage/account/pages/permission/info?brand_id=${this.brand_id}&id=${e.id}`, 'nT');
},
accountCheck(){
routeTo(`/subpackage/account/pages/manage/check?brand_id=${this.brand_id}`, 'nT');
},
itemDeleteBtn(){
showModal({ content: '是否删除该账号?', });
}
itemDeleteBtn(e, idx){
showModal({
content: '是否删除该账号?',
showCancel: true,
success: async res => {
if(res.confirm){
let _delRes = await this.userDelete({ id: e?.id ?? '' });
if(_delRes === 'success'){
showNone('操作成功!');
this.userLs.splice(idx, 1);
}
}
}
});
},
// -
getUserLs({ brand_id, page = 1, limit = 20 }){
showLoad();
return server.post({
url: ACCOUNT_API.userRest,
data: { 'filter[role]': `ADMIN-BRAND-${brand_id}`, page, limit },
isDefaultGet: false,
})
.then(res => {
hideLoad();
let _data = res?.data || {};
if(_data.code === 0){
let _ls = _data?.data?.data ?? [];
if(page === 1)return this.userLs = _ls;
if(_ls.length <= 0)return showNone('暂无更多!');
this.page = page;
return this.userLs = [ ...this.userLs, ..._ls ];
}else{
return Promise.reject(_data);
}
})
.catch(err => {
showModal({
title: '提示',
content: err.message || '加载用户失败!'
})
console.warn('subpackage account pages list index getUserLs err --->', err);
// return Promise.reject(err);
})
},
// -
userDelete({ id }){
showLoad();
return server.post({
url: ACCOUNT_API.userDelete,
data: { id },
isDefaultGet: false,
})
.then(res => {
hideLoad();
let _data = res?.data || {};
if(_data.code === 0){
return 'success';
}else{
return Promise.reject(_data);
}
})
.catch(err => {
showModal({
title: '提示',
content: err.message || '操作失败!'
})
console.warn('subpackage account pages list index userDelete err --->', err);
// return Promise.reject(err);
})
},
}
}
</script>

21
src/subpackage/account/pages/list/modules/item.vue

@ -1,8 +1,8 @@
<template>
<view class="list-item">
<view class="li-line">姓名周小舞</view>
<view class="li-line">登录账号P1531653</view>
<view class="li-line">创建时间2024-12-09 11:21:40</view>
<view class="li-line">姓名{{ name || '' }}</view>
<view class="li-line">登录账号{{ account || '' }}</view>
<view class="li-line">创建时间{{ time || '' }}</view>
<view class="li-btns">
<view class="lb-btn" @click="$emit('click:message')">消息订阅</view>
<view class="lb-btn" @click="$emit('click:account')">账号权限</view>
@ -18,7 +18,20 @@
<script>
export default {
props: {
name: {
type: String,
default: ''
},
account: {
type: String,
default: ''
},
time: {
type: String,
default: ''
}
}
}
</script>

8
src/subpackage/account/pages/manage/add.vue

@ -1,14 +1,20 @@
<template>
<view class="manage-add">
<account-form></account-form>
<fixed-button>提交</fixed-button>
<success-modal title="提交成功" tip="请耐心等待管理员审核" ></success-modal>
</view>
</template>
<script>
import account_form from "./modules/account_form.vue";
import fixedButton from "../../components/fixed_button.vue";
import success_modal from "./modules/apply/success_modal.vue";
export default {
components: {
'account-form': account_form
'account-form': account_form,
'success-modal': success_modal,
fixedButton,
},
data(){
return {

44
src/subpackage/account/pages/manage/modules/apply/success_modal.vue

@ -1,12 +1,16 @@
<template>
<fixed-modal>
<fixed-modal :show="isShow">
<view class="success-modal">
<image class="sm-icon"></image>
<view class="sm-txt">账号创建成功</view>
<view class="sm-btn" v-if="false">
<modal-button green>确认修改</modal-button>
<image class="sm-icon" mode="aspectFit" src="/subpackage/account/static/images/success.png"></image>
<view class="sm-txt" v-if="title">
<slot name="title">{{ title }}</slot>
</view>
<view class="sm-tip">请耐心等待管理员审核</view>
<view class="sm-btn" v-if="isButton">
<modal-button green @click="$emit('click:button')">
<slot name="button">{{ buttonTxt }}</slot>
</modal-button>
</view>
<view class="sm-tip" v-if="tip">{{ tip }}</view>
</view>
</fixed-modal>
</template>
@ -15,20 +19,43 @@
import fixedModal from "../../../../components/fixed_modal.vue";
import modalButton from "../../../../components/modal_button.vue";
export default {
props: {
title: {
type: String,
default: ''
},
tip: {
type: String,
default: ''
},
buttonTxt: {
type: String,
default: '确认'
},
isButton: {
type: Boolean,
default: false
}
},
components: {
'fixed-modal': fixedModal,
'modal-button': modalButton
},
data(){
return {
isShow: false
}
},
onLoad(){
},
methods: {
show(){
this.isShow = true
},
hide(){
this.isShow = false
}
}
}
</script>
@ -40,7 +67,6 @@ export default {
margin: 0 auto;
width: 100upx;
height: 100upx;
background: skyblue;
}
.sm-txt{
margin-top: 32upx;

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

@ -1,6 +1,9 @@
<template>
<view class="permission-info">
<user-info
:name="userInfo.actual_name"
:account="userInfo.username"
:time="userInfo.created_at"
edit
@click:edit="userInfoEdit"
@click:delete="userDelete"
@ -28,7 +31,10 @@ import stadiumPermission from "./modules/info/stadium_permission.vue";
import fixedButton from "../../components/fixed_button.vue";
import editPassword from "./modules/info/edit_password.vue";
import edit_account from "./modules/info/edit_account.vue";
import { routeTo, showModal } from "@/utils/util.js";
import { routeTo, showModal, showLoad, hideLoad, showNone } from "@/utils/util.js";
import { ACCOUNT_API } from "../../js/api.js";
import server from "../../js/server.js";
export default {
components: {
'admin-permission': adminPermission,
@ -42,11 +48,13 @@ export default {
},
data(){
return {
brand_id: ''
brand_id: '',
userInfo: {},
}
},
onLoad(options){
this.brand_id = options?.brand_id || '';
this.userGet({ id: options?.id });
},
methods: {
userInfoEdit(){
@ -63,7 +71,34 @@ export default {
},
unbindWXAccount(){
showModal({ content: '是否解绑该账号?', });
}
},
// B---
userGet({ id, scene = "商家助手成员" }){
showLoad();
return server.post({
url: ACCOUNT_API.userGet + `/${id}`,
data: { scene },
isDefaultGet: false,
})
.then(res => {
hideLoad();
let _data = res?.data || {};
if(_data.code === 0){
console.log('subpackage account pages permission info userGet res --->', _data?.data);
return this.userInfo = _data?.data ?? {};
}else{
return Promise.reject(_data);
}
})
.catch(err => {
showModal({
title: '提示',
content: err.message || '加载失败!'
})
console.warn('subpackage account pages permission info userGet err --->', err);
// return Promise.reject(err);
})
},
}
}
</script>

Loading…
Cancel
Save