Commit 88b5b090 authored by Zhang Xiaojie's avatar Zhang Xiaojie

Merge branch 'dev' of gitlab.33.cn:CassiniatSaturn/fns_backend into dev

parents 838c98df 63d5edf2
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
<a-form-model-item label="手机号" prop="tel"> <a-form-model-item label="手机号" prop="tel">
<a-input <a-input
v-model="form.tel" v-model="form.tel"
:maxLength="11"
placeholder="请输入手机号" placeholder="请输入手机号"
style="width: 200px;" style="width: 200px;"
/> />
...@@ -93,7 +94,7 @@ export default Vue.extend({ ...@@ -93,7 +94,7 @@ export default Vue.extend({
{ required: true, message: '请输入名称', max: 6, trigger: 'blur' }, { required: true, message: '请输入名称', max: 6, trigger: 'blur' },
], ],
tel: [ tel: [
{ required: true, message: '请输入手机号', max: 11, trigger: 'blur' }, { required: true, message: '请输入手机号', len: 11, trigger: 'blur' },
], ],
bank: [{ required: true, message: '请输入所属银行', trigger: 'blur' }], bank: [{ required: true, message: '请输入所属银行', trigger: 'blur' }],
} }
...@@ -142,6 +143,7 @@ export default Vue.extend({ ...@@ -142,6 +143,7 @@ export default Vue.extend({
) )
if (ret && ret.code === 200) { if (ret && ret.code === 200) {
message.success('发布成功') message.success('发布成功')
this.$store.dispatch('platformUserManagement/query')
} }
} else { } else {
return false return false
......
...@@ -8,29 +8,40 @@ ...@@ -8,29 +8,40 @@
style="text-align: center;" style="text-align: center;"
bordered bordered
> >
<span slot="level">超级管理员</span> <span slot="level">银行管理员</span>
<template #created_at="text"> <template #created_at="text">
{{ text | formatDate }} {{ text | formatDate }}
</template> </template>
<template #status="text"> <template #status="text">
{{ text | filterUserStatus }} {{ text | platformfilterUserStatus }}
</template> </template>
<div slot="action" slot-scope="text, record"> <div slot="action" slot-scope="text, record">
<a <a
:class="record.status == eUserStatus.enable ? 'undeleteable' : ' '" :class="
record.status == eUserResStatus.enable_notOnPosition ||
record.status === eUserResStatus.enable_onPosition
? 'undeleteable'
: ' '
"
@click="showModal(record, 0)" @click="showModal(record, 0)"
> >
删除 删除
</a> </a>
<a-divider type="vertical" /> <a-divider type="vertical" />
<a <a
v-if="record.status == eUserStatus.disable" v-if="
record.status == eUserResStatus.disable_noPosition ||
record.status === eUserResStatus.disable_notOnPosition
"
@click="showModal(record, 1)" @click="showModal(record, 1)"
> >
启用 启用
</a> </a>
<a <a
v-else-if="eUserStatus.enable === record.status" v-else-if="
record.status === eUserResStatus.enable_notOnPosition ||
eUserResStatus.enable_onPosition
"
@click="showModal(record, 2)" @click="showModal(record, 2)"
> >
禁用 禁用
...@@ -65,7 +76,7 @@ import { modalType } from './const' ...@@ -65,7 +76,7 @@ import { modalType } from './const'
import { getPlatformUserManagementTableColumns } from '@/const/columns/superManagerColumn' import { getPlatformUserManagementTableColumns } from '@/const/columns/superManagerColumn'
import { mapActions, mapMutations, mapState } from 'vuex' import { mapActions, mapMutations, mapState } from 'vuex'
import StaffService from '@/service/StaffService' import StaffService from '@/service/StaffService'
import { eUserStatus } from '@/types/user' import { eUserReqStatus, eUserResStatus } from '@/types/user'
export default Vue.extend({ export default Vue.extend({
computed: { computed: {
...@@ -90,7 +101,8 @@ export default Vue.extend({ ...@@ -90,7 +101,8 @@ export default Vue.extend({
show: false, show: false,
content: '', content: '',
title: '', title: '',
eUserStatus, eUserReqStatus,
eUserResStatus,
} }
}, },
methods: { methods: {
...@@ -121,19 +133,24 @@ export default Vue.extend({ ...@@ -121,19 +133,24 @@ export default Vue.extend({
} }
this.show = true this.show = true
}, },
handleOk() { async handleOk() {
if (this.type == modalType.delete) { if (this.type == modalType.delete) {
await StaffService.getInstance().deleteStaff(this.uuid)
} else if (this.type == modalType.on) { } else if (this.type == modalType.on) {
StaffService.getInstance().modifyStaffStatus({ await StaffService.getInstance().modifyStaffStatus({
uuid: this.uuid, uuid: this.uuid,
status: eUserStatus.enable, status: eUserReqStatus.enable,
}) })
} else if (this.type == modalType.off) { } else if (this.type == modalType.off) {
StaffService.getInstance().modifyStaffStatus({ await StaffService.getInstance().modifyStaffStatus({
uuid: this.uuid, uuid: this.uuid,
status: eUserStatus.disable, status: eUserReqStatus.disable,
}) })
} }
this.$store.commit('/platformUserManagement/save', {
page: 1,
})
this.$store.dispatch('/platformUserManagement/query')
this.show = false this.show = false
}, },
}, },
......
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
class="my-1" class="my-1"
:is="type == 1 ? 'addNormalManagerModal' : 'addSuperManagerModal'" :is="type == 1 ? 'addNormalManagerModal' : 'addSuperManagerModal'"
ref="addrModal" ref="addrModal"
:userType="type"
:level="level" :level="level"
/> />
</div> </div>
......
import { column } from "@/types/column" import { column } from '@/types/column'
const columns:Array<column>= const columns: Array<column> = [
[
{ {
title: '发布时间', title: '发布时间',
align:'center', align: 'center',
dataIndex: 'time', dataIndex: 'created_at',
scopedSlots: { customRender: 'created_at' },
}, },
{ {
title: 'banner名称', title: 'banner名称',
align:'center', align: 'center',
dataIndex: 'name', dataIndex: 'title',
}, },
{ {
title: 'banner位置', title: 'banner位置',
align:'center', align: 'center',
dataIndex: 'location', dataIndex: 'location',
scopedSlots: { customRender: 'location' },
}, },
{ {
title: '图片', title: '图片',
align:'center', align: 'center',
dataIndex: 'path', dataIndex: 'file_name',
scopedSlots: { customRender: 'path' }, scopedSlots: { customRender: 'file_name' },
}, },
{ {
title: '状态', title: '状态',
align:'center', align: 'center',
dataIndex: 'state', dataIndex: 'banner_status',
scopedSlots: { customRender: 'banner_status' },
}, },
{ {
title: '操作', title: '操作',
align:'center', align: 'center',
key: 'action', key: 'action',
scopedSlots: { customRender: 'action' }, scopedSlots: { customRender: 'action' },
} },
] ]
export { export { columns }
columns
}
\ No newline at end of file
export const ACCEPT_IMAGE_TYPE = '.jpg,.jpep,.png'
export function isAcceptImageType(file: File) {
const isCorrectType = file.name.match(/(\.jpg|\.jpep|\.png)$/)
return !!isCorrectType
}
export const TOAST_TEXT = '请上传jpg或jpep或png文件'
// 最大上传大小 40M
export const MAX_IMAGE_SIZE = 1024 * 1024 * 40
export const TOAST_TEXT2 = '请上传小于40M的图片'
import { eUserStatus } from '@/types/user' import { eBannerLocation, eBannerStatus } from '@/types/banner'
import { eUserResStatus } from '@/types/user'
import moment from 'moment' import moment from 'moment'
export default { export default {
...@@ -10,16 +11,44 @@ export default { ...@@ -10,16 +11,44 @@ export default {
return '' return ''
} }
}, },
filterUserStatus(status: eUserStatus) { filterUserStatus(status: eUserResStatus) {
switch (status) { switch (status) {
case eUserStatus.disable: case eUserResStatus.disable_noPosition:
return '禁用' return '禁用'
case eUserStatus.enable: case eUserResStatus.disable_notOnPosition:
return '禁用'
case eUserResStatus.enable_notOnPosition:
return '启用/不在岗'
case eUserResStatus.enable_onPosition:
return '启用/在岗'
}
},
platformfilterUserStatus(status: eUserResStatus) {
switch (status) {
case eUserResStatus.disable_noPosition:
return '禁用'
case eUserResStatus.disable_notOnPosition:
return '禁用'
case eUserResStatus.enable_notOnPosition:
return '启用'
case eUserResStatus.enable_onPosition:
return '启用' return '启用'
case eUserStatus.onPosition: }
return '在岗' },
case eUserStatus.notOnPosition: filterBannerLocation(status: eBannerLocation) {
return '不在岗' switch (status) {
case eBannerLocation.home:
return '首页'
}
},
filtereBannerStatus(status: eBannerStatus) {
switch (status) {
case eBannerStatus.editable:
return '未发布'
case eBannerStatus.delete:
return '删除'
case eBannerStatus.published:
return '已发布'
} }
}, },
} as { } as {
......
import baseAxios from '../index' import baseAxios from '../index'
import { banner_status } from '@/views/Root/Banner/const' import { banner_status } from '@/views/Root/Banner/const'
import { iBannerItem } from './types'
import { eBannerStatus } from '@/types/banner'
const prefix = '/banner/admin' const prefix = '/banner/admin'
// 新增banner信息 // 新增banner信息
...@@ -17,12 +19,18 @@ export function bannerAdd(data: { ...@@ -17,12 +19,18 @@ export function bannerAdd(data: {
// 查询banner列表 // 查询banner列表
export function bannerQuery(data: { export function bannerQuery(data: {
banner_status: 0 banner_status: eBannerStatus
location:0 location: number
end_time: number end_time?: number
start_time: number start_time?: number
limit?: number
offset?: number
}) { }) {
return baseAxios({ return baseAxios<{
count: number
items: iBannerItem[]
total: number
}>({
url: prefix + '/list', url: prefix + '/list',
method: 'POST', method: 'POST',
data, data,
...@@ -31,12 +39,12 @@ export function bannerQuery(data: { ...@@ -31,12 +39,12 @@ export function bannerQuery(data: {
// 修改banner状态 // 修改banner状态
export function bannerModify(data: { export function bannerModify(data: {
banner_status: banner_status banner_status: eBannerStatus
uuid:string uuid: string
}) { }) {
return baseAxios({ return baseAxios({
url: prefix + '/modify', url: prefix + '/modify',
method: 'POST', method: 'POST',
data, data,
}) })
} }
\ No newline at end of file
export interface iBannerItem {
banner_status: number
created_at: number
file_name: string
location: number
title: string
update_at: number
uuid: string
}
import baseAxios from '../index'
export default class FileService {
static instance: FileService
static getInstance() {
if (!FileService.instance) {
FileService.instance = new FileService()
}
return FileService.instance
}
download(file_hash: string) {
return (baseAxios({
method: 'get',
url: '/image/download',
params: {
file_hash,
},
}) as unknown) as Promise<File>
}
getImageSrc(file_hash: string) {
return `/proxyApi/api/v1/image/show?file_hash=${file_hash}`
}
showImage(file_hash: string) {
return (baseAxios({
method: 'get',
url: '/image/show',
params: {
file_hash,
},
}) as unknown) as Promise<File>
}
uploadImage(uploadFile: File) {
const fd = new FormData()
fd.append('uploadFile', uploadFile)
return baseAxios<string>({
method: 'post',
url: '/image/upload',
data: fd,
})
}
}
import { eUserStatus } from '@/types/user' import { eUserReqStatus } from '@/types/user'
import baseAxios from '../index' import baseAxios from '../index'
export default class StaffService { export default class StaffService {
...@@ -10,11 +10,18 @@ export default class StaffService { ...@@ -10,11 +10,18 @@ export default class StaffService {
return StaffService.instance return StaffService.instance
} }
modifyStaffStatus(data: { status: eUserStatus; uuid: string }) { modifyStaffStatus(data: { status: eUserReqStatus; uuid: string }) {
return baseAxios({ return baseAxios({
url: '/staff/modifyStatus', url: '/staff/modifyStatus',
method: 'PUT', method: 'PUT',
data, data,
}) })
} }
deleteStaff(uuid: string) {
return baseAxios({
url: '/staff/' + uuid,
method: 'delete',
})
}
} }
import { eLevel } from '@/types/level' import { eLevel } from '@/types/level'
import { eNewRoleRelatedToBackEnd } from '@/types/role' import { eNewRoleRelatedToBackEnd } from '@/types/role'
import { eUserStatus } from '@/types/user' import { eUserReqStatus } from '@/types/user'
import { eUserType } from '@/types/userType' import { eUserType } from '@/types/userType'
import baseAxios from '../index' import baseAxios from '../index'
...@@ -142,7 +142,7 @@ export default class UserService { ...@@ -142,7 +142,7 @@ export default class UserService {
role: string role: string
second_branch: string second_branch: string
second_sub_branch: string second_sub_branch: string
status: eUserStatus status: eUserReqStatus
user_name: string user_name: string
uuid: string uuid: string
}[] }[]
......
...@@ -14,8 +14,8 @@ const baseAxios = axios.create({ ...@@ -14,8 +14,8 @@ const baseAxios = axios.create({
baseAxios.interceptors.response.use( baseAxios.interceptors.response.use(
(value: AxiosResponse<iRet>) => { (value: AxiosResponse<iRet>) => {
const ret = value.data const ret = value.data
if (ret.code !== 200) { if (ret.code !== undefined && ret.code !== 200) {
if(ret.code === 504){ if (ret.code === 504) {
// deleteUserMsg(); // deleteUserMsg();
} }
message.error(ret.msg) message.error(ret.msg)
......
export interface banner{ export interface banner {
key:string key: string
time:string, time: string
name:string, name: string
location:string, location: string
path:string, path: string
state:string state: string
} }
\ No newline at end of file
export enum eBannerLocation {
all = 0,
home = 1,
}
// 0:全部状态,1:可编辑,2:已发布,3:删除
export enum eBannerStatus {
all = 0,
editable = 1,
published = 2,
delete = 3,
}
export enum eRole { export enum eRole {
platform_management, // 平台管理员 platform_management, // 平台管理员
superManager, // 超级管理员 也 叫 银行管理员 superManager, // 超级管理员 也叫 银行管理员
firstLevel_branch, // 一级分行管理员 firstLevel_branch, // 一级分行管理员
secondary_branch, // 二级分行管理员 secondary_branch, // 二级分行管理员
......
...@@ -7,9 +7,16 @@ export interface user { ...@@ -7,9 +7,16 @@ export interface user {
note?: string note?: string
} }
export enum eUserStatus { export enum eUserReqStatus {
disable = 0, disable = 1,
enable = 1, enable = 2,
onPosition = 2, onPosition = 3,
notOnPosition = 4, notOnPosition = 4,
} }
export enum eUserResStatus {
disable_notOnPosition = 0,
disable_noPosition = 1,
enable_notOnPosition = 2,
enable_onPosition = 3,
}
...@@ -235,8 +235,6 @@ export default Vue.extend({ ...@@ -235,8 +235,6 @@ export default Vue.extend({
this.$router.push({ this.$router.push({
name: "home", name: "home",
}); });
} else {
message.warn(ret.msg);
} }
}, },
async handleClickLogin() { async handleClickLogin() {
...@@ -256,15 +254,6 @@ export default Vue.extend({ ...@@ -256,15 +254,6 @@ export default Vue.extend({
console.log(err); console.log(err);
} }
this.loading = false; this.loading = false;
// setUserMsg({
// userInfo: 'lakds',
// token: 'aldksfj',
// role: eRole.superManager,
// })
// this.$router.push({
// name: 'home'
// })
} else { } else {
return false; return false;
} }
......
This diff is collapsed.
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div> <div>
<a-layout id="components-layout-demo-fixed-sider"> <a-layout id="components-layout-demo-fixed-sider">
<a-layout-sider width="256" style="background: white"> <a-layout-sider width="256" style="background: white">
<div class="text-center text-lg my-3">合同后台</div> <div class="text-center text-lg my-3">普惠金融后台</div>
<a-menu <a-menu
style="width: 256px" style="width: 256px"
:open-keys.sync="openKeys" :open-keys.sync="openKeys"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment