Commit 26dba2cd authored by lshan's avatar lshan

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

parents 44bda148 e2cdb1de
export const fooList = [
{
label: '所属一级分行',
placeholder: '请选择一级分行',
options: [] as { ID: number; Name: string }[],
disable: false,
value: undefined as number | undefined,
},
{
label: '所属二级分行',
placeholder: '请选择二级分行',
options: [] as { ID: number; Name: string }[],
disable: false,
value: undefined as number | undefined,
},
{
label: '所属一级支行',
placeholder: '请选择一级支行',
options: [] as { ID: number; Name: string }[],
disable: false,
value: undefined as number | undefined,
},
{
label: '所属一级支行',
placeholder: '请选择二级支行',
options: [] as { ID: number; Name: string }[],
disable: false,
value: undefined as number | undefined,
},
]
<template>
<div class="header-select">
<FormModelItem
v-for="(item, index) in fooList"
:prop="`fooProp${index}`"
:key="index"
:label="item.label"
>
<a-select
class="header-select-item mx-3 my-2"
@change="(value) => handleSelectChange(value, index)"
:placeholder="item.placeholder"
:value="item.value"
:disabled="index + 1 <= userLevel ? true : item.disable"
>
<a-select-option
:value="option.ID"
:key="option.ID"
v-for="option in item.options"
>{{ option.Name }}</a-select-option
>
</a-select>
</FormModelItem>
</div>
</template>
<script lang="ts">
import { eLevel } from "@/types/level";
import { message } from "ant-design-vue";
import StaffService from "@/service/StaffService";
import { fooList } from "./const";
import Vue, { PropType } from "vue";
import { iOutLet } from "@/service/StaffService/types";
import { FormModel } from "ant-design-vue";
const FormModelItem = FormModel.Item;
export default Vue.extend({
components: {
FormModelItem,
FormModel,
},
props: {
fooList: {
type: Array as PropType<typeof fooList>,
},
setFooList: Function,
level: Number,
userLevel: Number,
},
data() {
return {};
},
mounted() {
this.init();
},
methods: {
handleSelectChange(value: number, index: number) {
const baseList = [...this.fooList];
baseList[index].value = value;
const newList = baseList.map((i, idx) => {
idx > index && console.log(i);
return {
...i,
options: idx > index ? [] : i.options,
value: idx > index ? undefined : i.value,
};
});
this.changeFooList([...newList]);
index + 1 !== 4 && this.fetchOptions(index + 1);
},
async fetchOptions(index: number) {
const ret = await StaffService.getInstance().getBranch({
level: index + 1,
page_size: 10000,
parent_id: this.fooList[index - 1].value,
});
if (ret.code === 200) {
const baseList = [...this.fooList];
baseList[index].options = ret.data.item;
this.changeFooList(baseList);
}
},
changeFooList(v: any[]) {
let lastIndexhasValue = true;
const newList = v.map((item, index) => {
if (index >= this.level) {
const shouldDisable = !lastIndexhasValue;
lastIndexhasValue = item.value !== undefined;
return {
...item,
disable: shouldDisable,
options: shouldDisable ? [] : item.options,
};
} else {
return {
...item,
};
}
});
this.setFooList(newList);
},
resetList() {
const list = this.fooList.map((i) => {
return {
...i,
disable: false,
value: undefined,
options: [],
};
});
this.setFooList([...list]);
},
async init() {
this.$nextTick(() => {
// if (this.level === eLevel.firstLevel_branch) {
// this.init_firstLevel(selfOutLet);
// } else if (this.level === eLevel.secondary_branch) {
// this.init_secondLevel(selfOutLet);
// } else if (this.level === eLevel.firstLevel_sub_branch) {
// this.init_first_sub_Level(selfOutLet);
// } else if (this.level === eLevel.secondary_sub_branch) {
// this.init_second_sub_Level(selfOutLet);
// }
});
},
async initBackAdmin(selfOutLet: iOutLet) {
const ret = await StaffService.getInstance().getBranch({
level: eLevel.firstLevel_branch,
});
if (ret.code === 200) {
const options = ret.data.item;
const baseList = [...this.fooList];
baseList[0].options = options;
const newList = baseList.map((item, i) => {
return {
...item,
disable: i >= 1,
};
});
this.setFooList(newList);
}
},
init_firstLevel(selfOutLet: iOutLet) {
const list = this.initFooListBasicValues(
selfOutLet,
eLevel.firstLevel_branch
);
this.setFooList(list);
},
async init_secondLevel(selfOutLet: iOutLet) {
const { fid, first_branch, sid, second_branch } = selfOutLet;
const list = this.initFooListBasicValues(
selfOutLet,
eLevel.secondary_branch
);
this.setFooList(list);
const ret = await StaffService.getInstance().getBranch({
level: eLevel.firstLevel_sub_branch,
page_size: 10000,
parent_id: sid,
});
const baseList = [...this.fooList];
if (ret.code === 200) {
baseList[2].options = ret.data.item;
}
this.setFooList(baseList);
},
async init_first_sub_Level(selfOutLet: iOutLet) {
const baseList = [...this.fooList];
const { fid, first_branch, sid, second_branch, fs_id, first_sub_branch } =
selfOutLet;
const list = this.initFooListBasicValues(
selfOutLet,
eLevel.firstLevel_sub_branch
);
this.setFooList(list);
const ret = await StaffService.getInstance().getBranch({
level: eLevel.secondary_sub_branch,
page_size: 1000,
parent_id: fs_id,
});
if (ret.code === 200) {
baseList[3].options = ret.data.item;
}
this.setFooList(baseList);
},
init_second_sub_Level(selfOutLet: iOutLet) {
this.initFooListBasicValues(selfOutLet, eLevel.secondary_sub_branch);
},
initFooListBasicValues(selfOutLet: iOutLet, level: eLevel) {
let list = this.fooList;
const {
fid,
first_branch,
sid,
second_branch,
fs_id,
first_sub_branch,
ss_id,
second_sub_branch,
} = selfOutLet;
if (
[
eLevel.firstLevel_branch,
eLevel.secondary_branch,
eLevel.firstLevel_sub_branch,
eLevel.secondary_sub_branch,
].includes(level)
) {
list[0].value = fid;
list[0].options = [{ ID: fid, Name: first_branch }];
list[0].disable = true;
}
if (
[
eLevel.secondary_branch,
eLevel.firstLevel_sub_branch,
eLevel.secondary_sub_branch,
].includes(level)
) {
list[1].value = sid;
list[1].options = [{ ID: sid, Name: second_branch }];
list[1].disable = true;
}
if (
[eLevel.firstLevel_sub_branch, eLevel.secondary_sub_branch].includes(
level
)
) {
list[2].value = fs_id;
list[2].options = [{ ID: fs_id, Name: first_sub_branch }];
list[2].disable = true;
}
if ([eLevel.secondary_sub_branch].includes(level)) {
list[3].value = ss_id;
list[3].options = [{ ID: ss_id, Name: second_sub_branch }];
list[3].disable = true;
}
return list;
},
popupScroll1(e: Event) {
let h = e.target as HTMLElement;
if (h.scrollHeight - h.scrollTop <= h.clientHeight) {
message.info("臣妾做不到啊");
}
},
popupScroll2(e: Event) {
let h = e.target as HTMLElement;
if (h.scrollHeight - h.scrollTop <= h.clientHeight) {
message.info("臣妾做不到啊");
}
},
popupScroll3(e: Event) {
let h = e.target as HTMLElement;
if (h.scrollHeight - h.scrollTop <= h.clientHeight) {
message.info("臣妾做不到啊");
}
},
popupScroll4(e: Event) {
let h = e.target as HTMLElement;
if (h.scrollHeight - h.scrollTop <= h.clientHeight) {
message.info("臣妾做不到啊");
}
},
},
});
</script>
<style scoped lang="less">
.header-select {
.header-select-item {
width: 200px;
}
}
</style>
\ No newline at end of file
<template>
<!-- 新增弹窗 -->
<a-modal v-model="show" title="新增" :centered="true" footer="" :level="level">
<a-form-model :model="form" :label-col="{span: 8}" :wrapper-col="{span: 14}" ref="addForm" :rules="addrules">
<a-form-model-item label="名称" :required="true" prop="name">
<a-input v-model="form.name" placeholder="请输入名称" style="width: 200px"/>
<a-modal
v-model="show"
:title="title"
:centered="true"
footer=""
:level="level"
>
<a-form-model
:model="form"
:label-col="{ span: 8 }"
:wrapper-col="{ span: 14 }"
ref="addForm"
:rules="formRules"
>
<a-form-model-item
label="名称"
v-show="modalMode === eAddManagerModalMode.edit"
>
<div>{{ personalMsg.name }}</div>
</a-form-model-item>
<a-form-model-item label="手机号" prop="tel">
<a-input v-model="form.tel" placeholder="请输入手机号" style="width: 200px"/>
<a-form-model-item
label="UID"
v-show="modalMode === eAddManagerModalMode.edit"
>
<div>{{ personalMsg.uid }}</div>
</a-form-model-item>
<a-form-model-item label="初始密码" prop="password" >
<a-input v-model="form.password" style="width: 200px"/>
<a-form-model-item
label="手机号"
v-show="modalMode === eAddManagerModalMode.edit"
>
<div>{{ personalMsg.phone }}</div>
</a-form-model-item>
<a-form-model-item label="岗位角色" >
<span class=" text-sm text-black mr-2">sds</span>
<a-switch @change="onChange" />
<span class=" ml-2">可对同级管理员进行管理调配</span>
<a-form-model-item
label="名称"
:required="true"
prop="name"
v-show="modalMode === eAddManagerModalMode.create"
>
<a-input
v-model="form.name"
placeholder="请输入名称"
style="width: 200px"
/>
</a-form-model-item>
<a-form-model-item label="用户所在机构层级" >
<span class=" text-sm text-black">scs</span>
<a-form-model-item
label="手机号"
prop="tel"
v-show="modalMode === eAddManagerModalMode.create"
>
<a-input
v-model="form.tel"
placeholder="请输入手机号"
style="width: 200px"
/>
</a-form-model-item>
<!-- 不可选层级 -->
<a-form-model-item :label="'所属'+label[i-1]" v-for="i in level" :key="i.id" >
<span class=" text-sm text-black">fjhb</span>
<a-form-model-item
label="初始密码"
prop="password"
v-show="modalMode === eAddManagerModalMode.create"
>
<a-input v-model="form.password" style="width: 200px" />
</a-form-model-item>
<!-- 可选层级 -->
<a-form-model-item :label="'所属'+labelList[n-1]" v-for="n in level_org-level" :key="n.id">
<a-select :placeholder="'选择所属'+labelList[n-1]" style="width: 200px; margin-right:10px;">
<a-select-option v-for="bank in bankList" :key="bank">{{bank}}</a-select-option>
<a-form-model-item
label="岗位角色"
v-show="modalMode === eAddManagerModalMode.create"
>
<span class="text-sm text-black mr-2">{{ theRole }}</span>
<!-- <a-switch @change="onChange" v-show="isManager" /> -->
<!-- <span class="ml-2" v-show="isManager">可对同级管理员进行管理调配</span> -->
</a-form-model-item>
<a-form-model-item label="用户所在机构层级">
<span class="text-sm text-black">{{ searchLevel | filterLevel }}</span>
</a-form-model-item>
<a-form-model-item
label="现属一级分行"
v-show="modalMode === eAddManagerModalMode.edit"
>
<div>
{{ personalMsg.branchDetailMsg && personalMsg.branchDetailMsg.fb }}
</div>
</a-form-model-item>
<a-form-model-item
label="现属二级分行"
v-show="modalMode === eAddManagerModalMode.edit"
>
<div>
{{ personalMsg.branchDetailMsg && personalMsg.branchDetailMsg.sb }}
</div>
</a-form-model-item>
<a-form-model-item
label="现属一级支行"
v-show="modalMode === eAddManagerModalMode.edit"
>
<div>
{{ personalMsg.branchDetailMsg && personalMsg.branchDetailMsg.fsb }}
</div>
</a-form-model-item>
<a-form-model-item
label="现属二级支行"
v-show="modalMode === eAddManagerModalMode.edit"
>
<div>
{{ personalMsg.branchDetailMsg && personalMsg.branchDetailMsg.ssb }}
</div>
</a-form-model-item>
<a-form-model-item
label="现地址"
v-show="modalMode === eAddManagerModalMode.edit"
>
<div>
{{
personalMsg.branchDetailMsg && personalMsg.branchDetailMsg.address
}}
</div>
</a-form-model-item>
<a-form-model-item
label="选择调配级别"
v-show="modalMode === eAddManagerModalMode.edit"
>
<a-select
class="header-select-item mx-3 my-2"
placeholder="选择调配级别"
:value="form.level"
@change="handleLevelChange"
>
<a-select-option
v-for="option in levelOptions"
:value="option.value"
:key="option.value"
>{{ option.value | filterLevel }}</a-select-option
>
</a-select>
</a-form-model-item>
<a-form-model-item label="新地址" :required="true" prop="location" >
<a-input v-model="form.location" placeholder="请输入新地址" style="width: 200px"/>
<HeaderSelect
ref="headerSelect"
:setFooList="setFooList"
:fooList="fooList"
:level="level"
:userLevel="searchLevel"
/>
<a-form-model-item label="新地址" prop="location">
<a-input
class="mx-3 my-2"
:disabled="true"
v-model="form.location"
style="width: 200px"
/>
</a-form-model-item>
</a-form-model>
<a-form-model-item :wrapper-col="{ span: 14, offset: 4 }">
<a-button type="primary" @click="onConfirm">发布</a-button>
<a-button style="margin-left: 10px;" @click="show=false">取消</a-button>
<a-button type="primary" @click="onConfirm">发布</a-button>
<a-button style="margin-left: 10px" @click="show = false">取消</a-button>
</a-form-model-item>
</a-modal>
</template>
<script lang="ts">
import Vue from 'vue'
import { PropType } from 'vue'
import { FormModel,Switch } from 'ant-design-vue'
import { eLevel } from '@/types/level'
import { LEVE_ORG } from '@/views/Root/OutletManagement/const'
Vue.use(Switch)
import Vue, { PropType } from "vue";
import { FormModel, Switch } from "ant-design-vue";
import { eLevel } from "@/types/level";
import { LEVE_ORG } from "@/views/Root/OutletManagement/const";
import { mapMutations, mapState } from "vuex";
import {
eAddManagerModalMode,
eTypeOfOperatedObject,
iBranchDetailMsg,
} from "@/store/UserManagement/types";
import HeaderSelect from "@/components/HeaderSelect2/index.vue";
import { fooList } from "@/components/HeaderSelect2/const";
import StaffService from "@/service/StaffService";
import AddressService from "@/service/AddressService";
Vue.use(Switch);
export default Vue.extend({
computed:{
bankList():Array<string>{
return ['ada','ads','ds','dsa']
components: {
HeaderSelect,
},
computed: {
formRules() {
const rules: any = {
name: [{ required: true, message: "请输入名称", trigger: "blur" }],
tel: [{ required: true, message: "请输入手机号", trigger: "blur" }],
location: [],
fooProp0: [
{
required: true,
message: "请选择一级分行",
trigger: "blur",
},
],
fooProp1: [
{
required: true,
message: "请选择二级分行",
trigger: "blur",
},
],
fooProp2: [
{
required: true,
message: "请选择一级支行",
trigger: "blur",
},
],
fooProp3: [
{
required: true,
message: "请选择二级支行",
trigger: "blur",
},
],
};
if (this.modalMode === eAddManagerModalMode.create) {
} else if (this.modalMode === eAddManagerModalMode.edit) {
delete rules.name;
delete rules.tel;
}
console.log(rules);
return rules;
},
labelList():Array<String>{
return this.label.slice(this.level,this.label.length)
levelOptions() {
const optionList = [
{ value: eLevel.firstLevel_branch },
{ value: eLevel.secondary_branch },
{ value: eLevel.firstLevel_sub_branch },
{ value: eLevel.secondary_sub_branch },
];
return optionList.filter((i) => i.value >= this.searchLevel);
},
level_org():Number{
return LEVE_ORG
}
},
props:{
label:{
type:Array as PropType<String[]>,
default(){
return ['一级分行','二级分行','一级支行','二级支行']
title(): string | undefined {
if (this.modalMode === eAddManagerModalMode.create) {
return "新增";
} else if (this.modalMode === eAddManagerModalMode.edit) {
return "调配";
}
},
theRole(): string | undefined {
if (this.typeOfOperatedObject === eTypeOfOperatedObject.manager) {
return "管理员";
} else if (
this.typeOfOperatedObject === eTypeOfOperatedObject.clientManager
) {
return "客户经理";
}
},
level:{
type:Number as PropType<eLevel>,
default:0
}
isManager(): boolean {
return this.typeOfOperatedObject === eTypeOfOperatedObject.manager;
},
show: {
set(v: boolean) {
this.setModal(v);
},
get(): boolean {
return this.modalShow;
},
},
bankList(): string[] {
return ["ada", "ads", "ds", "dsa"];
},
labelList(): string[] {
return this.label.slice(this.level, this.label.length);
},
level_org(): number {
return LEVE_ORG;
},
...mapState("UserManagement", {
modalShow: "modalShow",
modalMode: "modalMode",
searchLevel: "searchLevel",
personalMsg: "personalMsg",
branchDetailMsg: "branchDetailMsg",
typeOfOperatedObject: "typeOfOperatedObject",
}),
},
data(){
const addrules={
name: [
{ required: true, message: '请输入名称', trigger: 'blur' },
],
tel: [
{ required: true, message: '请输入手机号', trigger: 'blur' },
],
location: [
{ required: true, message: '请输入详细地址', trigger: 'blur' },
]
}
return{
show:false,
addrules,
form:{
name:'',
tel:'',
password:'abc123456',
location:'',
privilege:false
props: {
label: {
type: Array as PropType<string[]>,
default() {
return ["一级分行", "二级分行", "一级支行", "二级支行"];
},
}
},
level: {
type: Number as PropType<eLevel>,
default: 0,
},
},
data() {
return {
eAddManagerModalMode,
fooList,
form: {
name: "",
tel: "",
password: "abc123456",
location: "",
privilege: false,
fooProp0: undefined as number | undefined,
fooProp1: undefined as number | undefined,
fooProp2: undefined as number | undefined,
fooProp3: undefined as number | undefined,
level: eLevel.firstLevel_branch,
},
outletName: "",
};
},
methods:{
showModal(){
this.show = true
methods: {
handleLevelChange(value: any) {
this.form.level = value;
},
onChange(checked:boolean){
this.form.privilege = checked
async initFooList() {
const list = this.fooList.map((i) => {
return {
...i,
disable: false,
value: undefined,
options: [],
};
});
this.fooList = list;
let branchDetailMsg: iBranchDetailMsg =
undefined as unknown as iBranchDetailMsg;
if (this.modalMode === eAddManagerModalMode.create) {
branchDetailMsg = this.branchDetailMsg;
} else if (this.modalMode === eAddManagerModalMode.edit) {
branchDetailMsg = this.personalMsg.branchDetailMsg;
this.form.level = this.level;
}
if (branchDetailMsg.fb !== undefined) {
this.fooList[0].options = [
{ Name: branchDetailMsg.fb, ID: branchDetailMsg.fb_id },
];
this.fooList[0].value = branchDetailMsg.fb_id;
if (this.modalMode === eAddManagerModalMode.create) {
this.fooList[0].disable = true;
}
}
if (branchDetailMsg.sb !== undefined) {
this.fooList[1].options = [
{ Name: branchDetailMsg.sb, ID: branchDetailMsg.sb_id },
];
this.fooList[1].value = branchDetailMsg.sb_id;
if (this.modalMode === eAddManagerModalMode.create) {
this.fooList[1].disable = true;
}
}
if (branchDetailMsg.fsb !== undefined) {
this.fooList[2].options = [
{ Name: branchDetailMsg.fsb, ID: branchDetailMsg.fsb_id },
];
this.fooList[2].value = branchDetailMsg.fsb_id;
if (this.modalMode === eAddManagerModalMode.create) {
this.fooList[2].disable = true;
}
}
if (branchDetailMsg.ssb !== undefined) {
this.fooList[3].options = [
{ Name: branchDetailMsg.ssb, ID: branchDetailMsg.ssb_id },
];
this.fooList[3].value = branchDetailMsg.ssb_id;
if (this.modalMode === eAddManagerModalMode.create) {
this.fooList[3].disable = true;
}
}
const fetchOptionListForEverySettledBranchEdit = async (
list: typeof fooList
) => {
list.forEach(async (item, index) => {
if (index === 0) {
const ret = await StaffService.getInstance().getBranch({
level: eLevel.firstLevel_branch,
page: 1,
page_size: 10000,
});
if (ret.code === 200) {
this.fooList[0].options = ret.data.item;
}
} else {
const ret = await StaffService.getInstance().getBranch({
level: index + 1,
page: 1,
page_size: 10000,
parent_id: this.fooList[index - 1].value,
});
if (ret.code === 200) {
this.fooList[index].options = ret.data.item;
}
}
});
};
if (this.modalMode === eAddManagerModalMode.edit) {
await fetchOptionListForEverySettledBranchEdit(this.fooList);
}
this.fooList = [...this.fooList];
await this.fetchNextOptions();
},
async fetchNextOptions() {
const fooIndex = this.fooList.findIndex(
(item) => item.value === undefined
);
if (fooIndex === -1) {
} else {
if (fooIndex === 0) {
/* 银行管理员添加 一级分行管理员 */
const ret = await StaffService.getInstance().getBranch({
level: eLevel.firstLevel_branch,
page: 1,
page_size: 10000,
});
if (ret.code === 200) {
this.fooList[0].options = ret.data.item;
}
} else {
const ret = await StaffService.getInstance().getBranch({
level: fooIndex + 1,
page: 1,
page_size: 10000,
parent_id: this.fooList[fooIndex - 1].value,
});
if (ret.code === 200) {
this.fooList[fooIndex].options = ret.data.item;
}
}
}
},
setFooList(v: any[]) {
this.fooList = [...v];
},
...mapMutations("UserManagement", {
save: "save",
}),
showModal() {
this.setModal(true);
},
setModal(show: boolean) {
this.save({
modalShow: show,
});
},
onConfirm(){
(this.$refs.addForm as FormModel).validate(valid => {
onChange(checked: boolean) {
this.form.privilege = checked;
},
onConfirm() {
(this.$refs.addForm as FormModel).validate((valid) => {
if (valid) {
this.show = false
if (this.modalMode === eAddManagerModalMode.create) {
StaffService.getInstance()
.addNextLevel({
attr: {
add_same_level: false,
},
level: this.searchLevel,
name: this.form.name,
password: this.form.password,
phone: this.form.tel,
second_sub_branch: this.form.fooProp3 as number,
})
.then(() => {
this.save({
refreshMark: new Date().getTime(),
});
});
} else if (this.modalMode === eAddManagerModalMode.edit) {
StaffService.getInstance()
.deploy({
level: this.form.level,
second_sub_branch: this.fooList[3].value as number,
uuid: this.personalMsg.uid,
})
.then(() => {
this.save({
refreshMark: new Date().getTime(),
});
});
}
this.setModal(false);
} else {
console.log('error submit!!');
return false;
}
})
});
},
async handleOutLetName(newV: string) {
if (newV !== "") {
const ret = await AddressService.getInstance().getOutlet({
outlet_name: newV,
});
if (ret.code === 200) {
this.form.location = ret.data.location;
}
} else {
this.form.location = "";
}
},
},
watch: {
show(newV) {
if (newV === true) {
this.initFooList();
} else {
const form = this.$refs.addForm as FormModel;
form.resetFields();
}
},
}
})
fooList(newV: typeof fooList, oldV: typeof fooList) {
newV.forEach((item, index) => {
(this.form as any)[`fooProp${index}`] = item.value;
});
if (newV[3].value !== undefined) {
this.outletName =
newV[3].options.find((i) => i.ID === newV[3].value)?.Name || "";
this.handleOutLetName(this.outletName);
} else {
this.outletName = "";
}
},
},
});
</script>
<style scoped>
.ant-form-item{
margin-bottom:5px;
.ant-form-item {
margin-bottom: 5px;
}
</style>
\ No newline at end of file
......@@ -58,6 +58,8 @@ import { eLevel } from '@/types/level'
import { addUser } from './const'
import { mapActions, mapMutations, mapState } from 'vuex'
import { nextTick } from 'vue/types/umd'
import { eAddManagerModalMode } from '@/store/UserManagement/types'
import {eTypeOfOperatedObject, iUserManagementState} from "@/store/UserManagement/types"
export default Vue.extend({
components: { addNormalManagerModal, addSuperManagerModal, timerange },
......@@ -135,6 +137,23 @@ export default Vue.extend({
})
},
showModal() {
const rankVal = (JSON.parse(this.$route.query.rankVal as string)) as {name: string, value: number}[];
this.$store.commit('UserManagement/save', {
modalMode: eAddManagerModalMode.create, // create表示新增
typeOfOperatedObject: eTypeOfOperatedObject.manager, // !!!!要改 表示管理员还是客服经理
searchLevel: this.level, // 当前搜索的层级 如果展示一级分行页面 则是 eLevel.firstLevel_branch
branchDetailMsg: { // 分支行下拉栏的值
fb: rankVal[0].name,
fb_id: rankVal[0].value,
sb: rankVal[1] && rankVal[1].name || undefined,
sb_id: rankVal[1] && rankVal[1].value || undefined,
fsb: rankVal[2] && rankVal[2].name || undefined,
fsb_id: rankVal[2] && rankVal[2].value || undefined,
ssb: rankVal[1] && rankVal[1].name || undefined,
ssb_id: rankVal[1] && rankVal[1].value || undefined,
}
} as iUserManagementState)
;(this.$refs.addrModal as any).showModal()
},
},
......
<template>
<div :columns="columns" :role="role" :dataSource="dataSource">
<div :columns="columns" :role="role">
<!-- 调配弹窗 -->
<deplot-modal ref="deployModal" :level="level"/>
<!-- 信息列表 -->
<a-table :columns="columns" :data-source="dataSource" style=" text-align: center; margin-top:40px;" bordered >
<a-table
:columns="columns"
:data-source="dataSource"
style=" text-align: center; margin-top:40px;"
bordered
:pagination="pagination"
@change="changeHandle"
>
<span slot="created_at" slot-scope="text,record">
{{ record.created_at | formatTime }}
</span>
<span slot="level" slot-scope="text,record">
{{ record.level | filterLevel }}
</span>
<span slot="status" slot-scope="text,record">
{{ record.status | filterStatus }}
</span>
<!-- 二级分行管理员 -->
<span slot="secondaryManager" slot-scope="text,record"> <a @click="getSecondaryManageList(record.key)">查看</a> </span>
<span slot="secondaryManager" slot-scope="text,record"> <a @click="getSecondaryManageList(record.level, record.uuid, 1)">查看</a> </span>
<!-- 一级支行管理员 -->
<span slot="firstSubManager" slot-scope="text,record"> <a @click="getfirstSubManageList(record.key)">查看</a> </span>
<!-- 一级支行客户经理 -->
<span slot="firstSubClientManager" slot-scope="text,record"> <a @click="getFirstSubClientManagerList(record.key)">查看</a> </span>
<span slot="firstSubManager" slot-scope="text,record"> <a @click="getfirstSubManageList(record.level, record.uuid, 1)">查看</a> </span>
<!-- 一级支行客户经理(无) -->
<span slot="firstSubClientManager" slot-scope="text,record"> <a @click="getFirstSubClientManagerList(record.level, record.uuid)">查看</a> </span>
<!-- 一级支行客户 -->
<span slot="firstSubClient" slot-scope="text,record"> <a @click="getFirstSubClientList(record.key)">查看</a> </span>
<span slot="firstSubClient" slot-scope="text,record"> <a @click="getFirstSubClientList(record.uuid)">查看</a> </span>
<!-- 二级支行管理员 -->
<span slot="secondarySubManager" slot-scope="text,record"> <a @click="getSecondarySubManagerList(record.key)">查看</a> </span>
<span slot="secondarySubManager" slot-scope="text,record"> <a @click="getSecondarySubManagerList(record.level, record.uuid, 1)">查看</a> </span>
<!-- 二级支行客户经理 -->
<span slot="secondarySubClientManager" slot-scope="text,record"> <a @click="getSecondarySubClientManageList(record.key)">查看</a> </span>
<span slot="secondarySubClientManager" slot-scope="text,record"> <a @click="getSecondarySubClientManageList(record.level, record.uuid)">查看</a> </span>
<!-- 二级支行客户 -->
<span slot="secondarySubClient" slot-scope="text,record"> <a @click="getSecondarySubClientList(record.key)">查看</a> </span>
<span slot="secondarySubClient" slot-scope="text,record"> <a @click="getSecondarySubClientList(record.uuid)">查看</a> </span>
<!-- 操作 -->
<p slot="action" slot-scope="text,record" >
<span v-if="record.state!='已禁用'">
<a @click="deploy(record)">调配</a>
<a @click="deploy(record)">调配</a>
<span v-if="record.status===tableStatus.disable_notOnPosition || record.status===tableStatus.disable_noPosition">
<a-divider type="vertical" />
<a @click="() => enable(record.key)">启用</a>
<a @click="() => enable(record.uuid)">启用</a>
</span>
<span v-else>
<a @click="disable(record.key)">禁用</a>
<span v-if="record.status===tableStatus.enable_notOnPosition || record.status===tableStatus.enable_onPosition">
<a-divider type="vertical" />
<a @click="disable(record.uuid)">禁用</a>
</span>
<span v-if="record.state==('启用中/在岗')">
<span v-if="record.status===tableStatus.disable_noPosition || record.status === tableStatus.enable_onPosition">
<a-divider type="vertical" />
<a @confirm="() => offJob(record.key)">不在岗</a>
<a @click="offJob(record.uuid)">不在岗</a>
</span>
<span v-else-if="record.state==('启用中/不在岗')">
<span v-if="record.status===tableStatus.disable_notOnPosition || record.status === tableStatus.enable_notOnPosition">
<a-divider type="vertical" />
<a @click="inJob(record.key)">在岗</a>
<a @click="inJob(record.uuid)">在岗</a>
</span>
</p>
</a-table>
......@@ -55,15 +72,37 @@
<script lang="ts">
import Vue, { PropType } from "vue"
import { firstLevelManager } from '@/mock/index'
import { staff } from '@/types/staff'
import { eRole } from "@/types/role"
import { staff , iStaffQueryResItem} from '@/types/staff'
import { eUserStatusAction, eUserStatus } from '@/types/user'
import { eRole, eNewRoleRelatedToBackEnd } from "@/types/role"
import { eLevel } from "@/types/level"
import { getColumns } from '@/const/columns/userManagerCol'
import { userModal } from './const'
import deplotModal from "@/components/UserManage/deployModal.vue"
import Filter from '@/filter/index'
import { mapActions, mapMutations, mapState } from 'vuex'
// import Mixin from "@/views/Root/User/Mixin/index"
import StaffService from '@/service/StaffService'
import { message } from "ant-design-vue"
import { eAddManagerModalMode, eTypeOfOperatedObject } from "@/store/UserManagement/types"
const staff = new StaffService()
export default Vue.extend({
// mixins: [Mixin],
components:{ deplotModal },
filters: {
filterStatus(val: number) {
return Filter.filterUserStatus(val)
},
formatTime(val: number) {
return Filter.formatDate(val)
},
filterLevel(val: number) {
return Filter.filterLevel(val)
}
},
props:{
level:{
type: Number as PropType<eLevel>,
......@@ -73,16 +112,15 @@ export default Vue.extend({
type: Number as PropType<eRole>,
default:0
},
dataSource:{
type: Array as PropType<staff[]>,
}
},
data(){
return{
show:false,
title:'',
text:'',
type:userModal.enable
type:userModal.enable,
id: '',
params: {} as any
}
},
computed:{
......@@ -91,77 +129,212 @@ export default Vue.extend({
},
columns(){
return getColumns(this.role)
},
pagination() {
return {
current: this.$store.state.platformUserManagement.page,
defaultPageSize: this.$store.state.platformUserManagement.page_size,
total: this.$store.state.platformUserManagement.total
}
},
dataSource() {
return this.$store.state.platformUserManagement.list
},
tableStatus() {
return eUserStatus
}
},
methods:{
deploy(record:staff){
(this.$refs.deployModal as any).showModal()
...mapMutations('platformUserManagement', {
platformSave: 'save',
}),
...mapActions('platformUserManagement', {
platformQuery: 'queryUser',
platform: 'queryNext'
}),
getRouteQuery() {
if (this.$route.query.rankVal) {
const keys = JSON.parse(this.$route.query.rankVal as string)
const level = this.$route.query.level
const uuid = this.$route.query.uuid
const role = this.$route.query.role
this.params = {
firstBranch: +keys[0]?.value || undefined,
firstSubBranch: +keys[2]?.value || undefined,
secondBranch: +keys[1]?.value || undefined,
secondSubBranch: +keys[3]?.value || undefined,
level,
uuid,
role
}
} else {
this.params = {
location: this.$route.query.address
}
}
},
getLists() {
this.platformSave({
...this.params
})
const uuid = this.$route.query.uuid
if (uuid) {
this.platform()
} else {
this.platformQuery()
}
},
changeHandle(e: any) {
this.platformSave({
page: e.current,
})
this.platformQuery()
},
deploy(record:iStaffQueryResItem){
const rankVal = (JSON.parse(this.$route.query.rankVal as string)) as {name: string, value: number}[];
this.$store.commit('UserManagement/save', {
modalMode: eAddManagerModalMode.edit,
typeOfOperatedObject: eTypeOfOperatedObject.manager, //!!!!需要调整 表示管理员还是客户经理
searchLevel: this.level,
branchDetailMsg: { //
fb: rankVal[0].name,
fb_id: rankVal[0].value,
sb: rankVal[1] && rankVal[1].name || undefined,
sb_id: rankVal[1] && rankVal[1].value || undefined,
fsb: rankVal[2] && rankVal[2].name || undefined,
fsb_id: rankVal[2] && rankVal[2].value || undefined,
ssb: rankVal[1] && rankVal[1].name || undefined,
ssb_id: rankVal[1] && rankVal[1].value || undefined,
},
personalMsg: { // 被调配人员信息
name: record.user_name,
uid: record.uuid,
phone: record.phone,
branchDetailMsg: {
fb: record.first_branch,
fb_id: 1, // 后端没有传ID,但是任意设置不影响,制作展示,不做接口数据回传
sb: record.second_branch,
sb_id: 1,
fsb: record.first_sub_branch,
fsb_id: 1,
ssb: record.second_sub_branch,
ssb_id: 1,
address: record.location,
},
},
modalShow: true,
})
},
enable(key:string){
this.type = userModal.enable
this.id = key
this.title = '启用用户'
this.text = '确定启用该用户?'
this.show = true
},
disable(key:string){
this.type = userModal.disable
this.id = key
this.title = '禁用用户'
this.text = '确定禁用该用户?'
this.show = true
},
inJob(key:string){
this.type = userModal.enable
this.id = key
this.title = '设置在岗'
this.text = '确定将该用户设置为在岗?'
this.show = true
},
offJob(key:string){
this.type = userModal.enable
this.id = key
this.title = '设置不在岗'
this.text = '确定将该用户设置为在岗?'
this.show = true
},
modifyStauts(status: number) {
staff.modifyStaffStatus({
status: status,
uuid: this.id
}).then(res => {
if (res.code === 200) {
message.success('操作成功')
this.getLists()
}
})
},
handleOk(record:any){
if( this.type == userModal.enable ){
this.modifyStauts(eUserStatusAction.enable)
} else if( this.type == userModal.disable ){
this.modifyStauts(eUserStatusAction.disable)
} else if( this.type == userModal.inJob ){
this.modifyStauts(eUserStatusAction.onPosition)
} else if( this.type == userModal.offJob ){
this.modifyStauts(eUserStatusAction.notOnPosition)
}
this.show = false
},
// 二级分行管理员
getSecondaryManageList(key:string){
this.$router.push({name:'secondary',query:{key}})
getSecondaryManageList(key:string, uuid: string, count: number){
const role = count === 1 ? eNewRoleRelatedToBackEnd.Management : eNewRoleRelatedToBackEnd.ACM
this.platformSave({
page: 1
})
this.$router.push({name:'secondary',query:{level: key, rankVal: this.$route.query.rankVal, uuid, role}})
},
// 一级支行管理员
getfirstSubManageList(key:string){
this.$router.push({name:'firstSub',query:{key}})
console.log(key)
getfirstSubManageList(key:string, uuid: string, count: number){
const role = count === 1 ? eNewRoleRelatedToBackEnd.Management : eNewRoleRelatedToBackEnd.ACM
this.platformSave({
page: 1
})
this.$router.push({name:'firstSub',query:{level: key, rankVal: this.$route.query.rankVal, uuid, role}})
},
// 一级支行客户经理
getFirstSubClientManagerList(key:string){
this.$router.push({name:'firstSubClientManager',query:{key}})
getFirstSubClientManagerList(key:string,uuid: string, count: number){
const role = count === 1 ? eNewRoleRelatedToBackEnd.Management : eNewRoleRelatedToBackEnd.ACM
this.platformSave({
page: 1
})
this.$router.push({name:'firstSubClientManager',query:{level: key, rankVal: this.$route.query.rankVal, uuid, role}})
},
// 一级支行客户
getFirstSubClientList(key:string){
this.$router.push({name:'firstSubClient',query:{key}})
getFirstSubClientList(uuid:string){
this.platformSave({
page: 1
})
this.$router.push({name:'firstSubClient',query:{uuid}})
},
// 二级支行管理员
getSecondarySubManagerList(key:string){
this.$router.push({name:'secondarySub',query:{key}})
getSecondarySubManagerList(key:string, uuid: string, count: number){
const role = count === 1 ? eNewRoleRelatedToBackEnd.Management : eNewRoleRelatedToBackEnd.ACM
this.platformSave({
page: 1
})
this.$router.push({name:'secondarySub',query:{level: key, rankVal: this.$route.query.rankVal, uuid, role}})
},
// 二级支行客户经理
getSecondarySubClientManageList(key:string){
this.$router.push({name:'secondarySubClientManager',query:{key}})
getSecondarySubClientManageList(key:string, uuid:string, count: number){
const role = count === 1 ? eNewRoleRelatedToBackEnd.Management : eNewRoleRelatedToBackEnd.ACM
this.platformSave({
page: 1
})
this.$router.push({name:'secondarySubClientManager',query:{level: key, rankVal: this.$route.query.rankVal, uuid, role}})
},
// 二级支行客户
getSecondarySubClientList(key:string){
this.$router.push({name:'secondarySubClient',query:{key}})
getSecondarySubClientList(uuid:string){
this.platformSave({
page: 1
})
this.$router.push({name:'secondarySubClient',query:{uuid}})
},
},
created() {
this.getRouteQuery()
this.getLists()
}
})
</script>
......
......@@ -14,7 +14,7 @@
<span slot="name" slot-scope="text">
{{ text.inst_name }}-{{ text.product_name }}
</span>
<template #product_type="text">
<template #loan_type="text">
{{ text | filterLoanType }}
</template>
<span slot="date" slot-scope="text">
......@@ -53,12 +53,6 @@
<div v-if="record.product_status == eProductStatus.unpublished">
<a @click="toAdd(record)">上架</a>
<a-divider type="vertical" />
<a @click="toDelete(record)">删除</a>
</div>
<!-- 上架状态 -->
<div v-else>
<a @click="toRemove(record)">下架</a>
<a-divider type="vertical" />
<a
@click="
$router.push({
......@@ -69,6 +63,12 @@
>编辑</a
>
<a-divider type="vertical" />
<a @click="toDelete(record)">删除</a>
</div>
<!-- 上架状态 -->
<div v-else>
<a @click="toRemove(record)">下架</a>
<a-divider type="vertical" />
<a
v-if="record.product_status == eProductStatus.normal"
@click="setAsHot(record)"
......
......@@ -12,13 +12,14 @@
:startTime="searchPageReqParams.startTime"
:endTime="searchPageReqParams.endTime"
/>
<span class="mr-3">消息分类</span>
<span class="mr-3">产品分类</span>
<a-select
:default-value="productType[0]"
style="width: 120px; margin-right: 10px"
v-model="searchPageReqParams.type"
@change="handleChange"
>
<a-select-option v-for="(type, i) in productType" :key="i">
<a-select-option v-for="(type, i) in productType" :key="i" :value="i">
{{ type }}
</a-select-option>
</a-select>
......@@ -64,7 +65,7 @@ export default Vue.extend({
return {
searchPageReqParams: {
name: "",
type: "",
type: 0,
startTime: undefined as undefined | number,
endTime: undefined as undefined | number,
offset: 0,
......@@ -86,6 +87,9 @@ export default Vue.extend({
},
},
methods: {
handleChange(val:any){
this.searchPageReqParams.type = val
},
...mapMutations('loanProductManagement', {
productSave: 'save',
}),
......@@ -104,7 +108,7 @@ export default Vue.extend({
},
reset() {
this.searchPageReqParams.name = "";
this.searchPageReqParams.type = "";
this.searchPageReqParams.type = 0;
this.searchPageReqParams.startTime = undefined;
this.searchPageReqParams.endTime = undefined;
this.$nextTick(() => {
......
......@@ -13,8 +13,8 @@ export default[
{
title: '产品分类',
align: 'center',
dataIndex: 'product_type',
scopedSlots: { customRender: 'product_type' },
dataIndex: 'loan_type',
scopedSlots: { customRender: 'loan_type' },
},
{
title: '贷款期限(月)',
......
......@@ -5,21 +5,8 @@ const columns:Array<column> =
{
title: '创建日期',
align:'center',
dataIndex: 'time',
role:[
eRole.superManager,
eRole.firstLevel_branch,
eRole.secondary_branch,
eRole.firstLevel_sub_branch,
eRole.firstLevel_sub_clientManager,
eRole.secondary_sub_branch,
eRole.secondary_sub_clientManager,
]
},
{
title:'uid',
align:'center',
dataIndex:'key',
dataIndex: 'created_at',
scopedSlots: { customRender: 'created_at' },
role:[
eRole.superManager,
eRole.firstLevel_branch,
......@@ -30,10 +17,24 @@ const columns:Array<column> =
eRole.secondary_sub_clientManager,
]
},
// {
// title:'uid',
// align:'center',
// dataIndex:'uuid',
// role:[
// eRole.superManager,
// eRole.firstLevel_branch,
// eRole.secondary_branch,
// eRole.firstLevel_sub_branch,
// eRole.firstLevel_sub_clientManager,
// eRole.secondary_sub_branch,
// eRole.secondary_sub_clientManager,
// ]
// },
{
title:'姓名',
align:'center',
dataIndex: 'name',
dataIndex: 'user_name',
role:[
eRole.superManager,
eRole.firstLevel_branch,
......@@ -61,7 +62,7 @@ const columns:Array<column> =
{
title: '手机号',
align:'center',
dataIndex: 'account',
dataIndex: 'phone',
role:[
eRole.superManager,
eRole.firstLevel_branch,
......@@ -75,7 +76,8 @@ const columns:Array<column> =
{
title: '所在机构层级',
align:'center',
dataIndex: 'bank',
dataIndex: 'level',
scopedSlots: { customRender: 'level' },
role:[
eRole.superManager,
eRole.firstLevel_branch,
......@@ -89,7 +91,7 @@ const columns:Array<column> =
{
title: '所属二级支行',
align:'center',
dataIndex: 'secondary_sub_branch',
dataIndex: 'second_sub_branch',
role:[
eRole.secondary_sub_branch,
eRole.secondary_sub_clientManager,
......@@ -98,7 +100,7 @@ const columns:Array<column> =
{
title: '所属一级支行',
align:'center',
dataIndex: 'firstLevel_sub_branch',
dataIndex: 'first_sub_branch',
role:[
eRole.firstLevel_sub_branch,
eRole.secondary_sub_branch,
......@@ -109,7 +111,7 @@ const columns:Array<column> =
{
title: '所属二级分行',
align:'center',
dataIndex: 'secondary_branch',
dataIndex: 'second_branch',
role:[
eRole.secondary_branch,
eRole.firstLevel_sub_branch,
......@@ -121,7 +123,7 @@ const columns:Array<column> =
{
title: '所属一级分行',
align:'center',
dataIndex: 'firstLevel_branch',
dataIndex: 'first_branch',
role:[
eRole.firstLevel_branch,
eRole.secondary_branch,
......@@ -212,7 +214,7 @@ const columns:Array<column> =
{
title:'操作uid',
align:'center',
dataIndex: 'actionUid',
dataIndex: 'operator_name',
role:[
eRole.superManager,
eRole.firstLevel_branch,
......@@ -226,7 +228,8 @@ const columns:Array<column> =
{
title:'状态',
align:'center',
dataIndex: 'state',
dataIndex: 'status',
scopedSlots: { customRender: 'status' },
role:[
eRole.superManager,
eRole.firstLevel_branch,
......
......@@ -4,6 +4,7 @@ import { editableProductStatus,eGuaranteeType,eProductType} from '@/types/loanPr
// import { activityStatus } from "@/service/ActivityService/type"
import moment from 'moment'
import { activityStatus } from '@/service/ActivityService/type'
import { eLevel } from '@/types/level'
export default {
formatDate(timeStamp: number) {
......@@ -96,6 +97,20 @@ export default {
return '已发布'
}
},
filterLevel(level: eLevel) {
switch(level) {
case eLevel.firstLevel_branch:
return '一级分行'
case eLevel.firstLevel_sub_branch:
return '一级支行'
case eLevel.secondary_branch:
return '二级分行'
case eLevel.secondary_sub_branch:
return '二级支行'
default:
return false
}
},
filterWorkDay(weekend_status: number){
const silly = '周一至周五'
if(weekend_status === 0){
......@@ -107,7 +122,7 @@ export default {
} else if(weekend_status === 3){
return '周一至周日'
}
}
},
} as {
[key: string]: (...args: any) => any
}
......@@ -89,7 +89,7 @@ export default class LoanProductService {
items: iLoanProdcutItem[]
total: number
}>({
url: prefix + '/list',
url: '/loan/query/direct/list',
method: 'POST',
data,
})
......
......@@ -12,26 +12,54 @@ export default class StaffService {
return StaffService.instance
}
modifyStaffStatus(data: { status: eUserStatusAction; uuid: string }) {
return baseAxios({
url: '/staff/modifyStatus',
method: 'PUT',
data,
addAcm(data: {
attr: {
add_same_level: boolean
},
level: number,
name: string,
password: string,
phone: string,
second_sub_branch: number
}) {
return baseAxios<{data: any}>({
url: '/staff/add/acm',
method: 'post',
data
})
}
deleteStaff(uuid: string) {
return baseAxios({
url: '/staff/' + uuid,
method: 'delete',
addNextLevel(data: {
attr: {
add_same_level: boolean
},
level: number,
name: string,
password: string,
phone: string,
second_sub_branch: number
}) {
return baseAxios<{data: any}>({
url: '/staff/add/next_level',
method: 'post',
data
})
}
import(data: { staffs: iStaffItem[] }) {
return baseAxios({
url: '/staff/import',
addSameLevel(data: {
attr: {
add_same_level: boolean
},
level: number,
name: string,
password: string,
phone: string,
second_sub_branch: number
}) {
return baseAxios<{data: any}>({
url: '/staff/add/same_level',
method: 'post',
data,
data
})
}
......@@ -47,6 +75,35 @@ export default class StaffService {
params: data,
})
}
deploy(data: {
level: number,
second_sub_branch: number,
uuid: string
}) {
return baseAxios<{data: any}>({
url: '/staff/deploy',
method: 'put',
data: data
})
}
import(data: { staffs: iStaffItem[] }) {
return baseAxios({
url: '/staff/import',
method: 'post',
data,
})
}
modifyStaffStatus(data: { status: eUserStatusAction; uuid: string }) {
return baseAxios({
url: '/staff/modifyStatus',
method: 'PUT',
data,
})
}
getSelfOutLet() {
return baseAxios<iOutLet>({
url: '/staff/outlet',
......@@ -54,4 +111,83 @@ export default class StaffService {
})
}
queryStaff(data: {
end?: number,
first_branch?: number,
first_sub_branch?: number,
level?: number,
location?: string,
page?: number,
page_size?: number,
phone?: string,
second_branch?: number,
second_sub_branch?: number,
start?: number,
user_name?: string
}) {
return baseAxios({
url: '/staff/query',
method: 'get',
params: data
})
}
remarkStaff(data: {
remark: string,
uuid: string
}) {
return baseAxios({
url: '/staff/remark/user',
method: 'put',
params: data
})
}
getUserList(data: {
page: number,
page_size: number
}) {
return baseAxios({
url: '/staff/self/users',
method: 'get',
params: data
})
}
getNextLevel(data: {
uuid: string,
role: string
}) {
return baseAxios({
url: '/staff/next_level',
method: 'get',
params: data
})
}
getStaffList(data: {
page: number,
page_size: number,
uuid: string
}) {
return baseAxios({
url: '/staff/query/users',
method: 'get',
params: data
})
}
deleteStaff(uuid: string) {
return baseAxios({
url: '/staff/' + uuid,
method: 'delete',
})
}
getBankList() {
}
}
......@@ -30,7 +30,7 @@ export default <Module<iProductModuleState, {}>>{
const ret = await LoanProductService.getInstance().queryDirectLoanReq({
end_time: state.end_time as number,
limit: state.limit,
loan_type: 0,
loan_type: state.loan_type,
offset: state.offset as number,
product_status: 0,
start_time: state.start_time as number,
......
import { eLevel } from '@/types/level'
import { Module } from 'vuex'
import {
eAddManagerModalMode,
eTypeOfOperatedObject,
iUserManagementState,
} from './types'
export default <Module<iUserManagementState, {}>>{
namespaced: true,
state: {
refreshMark: NaN,
modalShow: false,
modalMode: eAddManagerModalMode.create,
typeOfOperatedObject: eTypeOfOperatedObject.manager,
searchLevel: eLevel.secondary_branch,
branchDetailMsg: {
// fb: 'zhejiang',
// fb_id: 1,
// sb: 'hz',
// sb_id: 1,
},
personalMsg: {
name: '',
uid: '',
phone: '',
branchDetailMsg: {},
address: '',
},
address: '',
},
mutations: {
save(state, payload) {
Object.assign(state, payload)
},
},
actions: {},
}
import { eLevel } from '@/types/level'
export enum eAddManagerModalMode {
edit,
create,
}
export enum eTypeOfOperatedObject {
manager,
clientManager,
}
export interface iBranchDetailMsg {
fb: string
sb: string
fsb: string
ssb: string
fb_id: number
sb_id: number
fsb_id: number
ssb_id: number
}
export interface iPersonalMsg {
name: string
uid: any
phone: string
branchDetailMsg: Partial<
Omit<iBranchDetailMsg, 'fb_id' | 'sb_id' | 'fsb_id' | 'ssb_id'>
>
address: string
}
export interface iUserManagementState {
modalShow: boolean
modalMode: eAddManagerModalMode /* 模态框的形态 */
typeOfOperatedObject: eTypeOfOperatedObject | undefined
searchLevel: eLevel | undefined /* 当前搜索的层级 */
branchDetailMsg: Partial<iBranchDetailMsg> /* 分支行搜索页面所选中的信息需要设在此处 */
personalMsg: iPersonalMsg /* 调配人员时 该人员的个人信息 */
address: string /* 新地址 */
refreshMark: number /* 供表格刷新的标记,组件监听refreshMark,若变化,则刷新表格 */
}
......@@ -4,19 +4,22 @@ import platformUserManagement from './platformUserManagement/index'
import { iPlatformModuleState } from './platformUserManagement/types'
import loanProductManagement from './LoanProductManagement/index'
import { iProductModuleState } from './LoanProductManagement/type'
import UserManagement from './UserManagement/index'
Vue.use(Vuex)
const store = new Vuex.Store<{ platformUserManagement?: iPlatformModuleState,loanProductManagement?:iProductModuleState }>(
{
state: {},
mutations: {},
actions: {},
modules: {
platformUserManagement,
loanProductManagement,
},
const store = new Vuex.Store<{
platformUserManagement?: iPlatformModuleState
loanProductManagement?: iProductModuleState
}>({
state: {},
mutations: {},
actions: {},
modules: {
platformUserManagement,
loanProductManagement,
UserManagement,
},
)
})
export default store
\ No newline at end of file
export default store
import { PAGE_SIZE } from '@/const/config/page'
import UserService from '@/service/UserManagementService'
import StaffService from '@/service/StaffService'
import { Module } from 'vuex'
import { iListItem, iPlatformModuleState } from './types'
......@@ -21,6 +22,8 @@ export default <Module<iPlatformModuleState, {}>>{
userName: '',
total: 0,
loading: false,
uuid: '',
role: ''
},
mutations: {
save(state, payload) {
......@@ -46,5 +49,46 @@ export default <Module<iPlatformModuleState, {}>>{
state.loading = false
}
},
async queryUser({ state, commit }, payload) {
state.loading = true
console.log(state)
StaffService.getInstance().queryStaff({
end: state.end,
first_branch: state.firstBranch,
first_sub_branch: state.firstSubBranch,
location: state.location,
page: state.page,
page_size: state.page_size,
phone: state.phone,
second_branch: state.secondBranch,
second_sub_branch: state.secondSubBranch,
start: state.start,
user_name: state.userName,
level: state.level
}).then(res => {
if (res.code === 200) {
commit('save', {
list: res.data.item,
total: res.data.total
})
}
state.loading = false
})
},
async queryNext({ state, commit }, payload) {
state.loading = true
StaffService.getInstance().getNextLevel({
uuid: state.uuid,
role: state.role
}).then(res => {
if (res.code === 200) {
commit('save', {
list: res.data.item,
total: res.data.total
})
}
state.loading = false
})
}
},
}
......@@ -31,5 +31,7 @@ export interface iPlatformModuleState {
start: number | undefined
userName: string,
total: number
loading: boolean
loading: boolean,
uuid: string,
role: string
}
import { eRole } from "./role";
import { eLevel } from "./level";
import { eNewRoleRelatedToBackEnd, eRole } from "./role";
import { eUserStatus } from "./user";
enum bank{
'一级分行',
......@@ -34,6 +36,24 @@ interface staff{
state:string
}
export interface iStaffQueryResItem{
bank_name: string
created_at: number
first_branch: string
first_sub_branch: string
level: eLevel
location: string
operator_name: string
operator_uuid: string
phone: string
role: eNewRoleRelatedToBackEnd
second_branch: string
second_sub_branch: string
status: eUserStatus
user_name: string
uuid: string
}
export{
bank,
role,
......
......@@ -18,7 +18,7 @@ export const fooList = [
value: undefined as number | undefined,
},
{
placeholder: '请选择级支行',
placeholder: '请选择级支行',
options: [] as { ID: number; Name: string }[],
disable: false,
value: undefined as number | undefined,
......
<template>
<div>
<!-- <input type="file" @input="handleInput"/> -->
<div v-if="showbranchFilter">
<p class="text-2xl font-bold mb-5">网点管理</p>
<div>
......@@ -406,14 +407,26 @@ export default Vue.extend({
}
},
methods: {
getLalo() {
window.navigator.geolocation.getCurrentPosition((position) => {
this.formData.la = position.coords.latitude.toString();
this.formData.lo = position.coords.longitude.toString();
const form = this.$refs.form as FormModel;
form.validateField(["la", "lo"], (err) => {});
async handleInput(e: Event) {
const ret = await handle建设银行excelFileChange(e);
StaffService.getInstance().import({
staffs: ret as any,
});
},
getLalo() {
if ("geolocation" in window.navigator) {
window.navigator.geolocation.getCurrentPosition((position) => {
this.formData.la = position.coords.latitude.toString();
this.formData.lo = position.coords.longitude.toString();
const form = this.$refs.form as FormModel;
form.validateField(["la", "lo"], (err) => {});
}, (error)=>{
message.error('获取失败')
});
}else{
message.error("浏览器不支持获取GPS")
}
},
async clickViewNote(record: any) {
console.log(record);
const id = record.id;
......
......@@ -60,11 +60,11 @@
</a-form-model-item>
<a-form-model-item label="担保方式" :wrapper-col="{ span: 5 }">
<a-select
:default-value="guaranteeType[0]"
style="width: 120px; margin-right: 10px"
@change="changeGuarantee"
v-model="form.guarantee"
>
<a-select-option v-for="(type, i) in guaranteeType" :key="i">
<a-select-option v-for="(type,i) in guaranteeType" :key="type" :value="i+1">
{{ type }}
</a-select-option>
</a-select>
......
import Vue, { PropType } from "vue"
import StaffService from '@/service/StaffService/index'
import { eLevel } from "@/types/level"
import { mapActions, mapMutations, mapState } from 'vuex'
const staff = new StaffService()
export default Vue.extend({
data() {
return {
}
},
methods: {
...mapMutations('platformUserManagement', {
platformSave: 'save',
}),
...mapActions('platformUserManagement', {
platformQuery: 'queryUser',
}),
// getLevel(s: string) {
// switch(s) {
// case '1':
// return eLevel.firstLevel_branch
// case '2':
// return eLevel.secondary_branch
// case '3':
// return eLevel.firstLevel_sub_branch
// default:
// return eLevel.secondary_sub_branch
// }
// },
getLists(params: any) {
// const keys = JSON.parse(this.$route.query.rankVal as string)
// const level = keys.length + ''
// const _level = this.getLevel(level)
this.platformSave({
...params
})
this.platformQuery()
}
},
created() {
const keys = JSON.parse(this.$route.query.rankVal as string)
const level = this.$route.query.level
const params = {
firstBranch: +keys[0] || undefined,
firstSubBranch: +keys[2] || undefined,
secondBranch: +keys[1] || undefined,
secondSubBranch: +keys[3] || undefined,
level
}
this.getLists(params)
}
})
\ No newline at end of file
......@@ -5,8 +5,8 @@
<span class=" font-semibold">注册时间:</span>
<timerange class=" mr-3"
@getNewTime="getNewTime"/>
<a-input placeholder="姓名模糊搜索" v-model="queryParam.queryName" style=" width:150px; margin-right:10px;"/>
<a-input placeholder="手机号模糊搜索" v-model="queryParam.queryTel" style=" width:150px; margin-right:10px;" />
<a-input placeholder="姓名模糊搜索" v-model="queryParam.user_name" style=" width:150px; margin-right:10px;"/>
<a-input placeholder="手机号模糊搜索" v-model="queryParam.phone" style=" width:150px; margin-right:10px;" />
<a-button type="primary" style=" margin-right:10px;" @click="query">查询</a-button>
<a-button type="primary" @click="reset">重置</a-button>
<!-- 查看弹窗 -->
......@@ -44,7 +44,13 @@
</a-form-model>
</a-modal>
<!-- 客户信息列表 -->
<a-table :columns="columns" :data-source="userList" style=" text-align: center; margin-top:40px;" bordered >
<a-table
:columns="columns"
:data-source="userList"
style=" text-align: center; margin-top:40px;"
bordered
:pagination="pagination"
@change="changePage">
<div slot="note" slot-scope="text">
<a @click="check(text)">查看</a>
</div>
......@@ -61,13 +67,16 @@ import { userList } from '@/mock/index'
import { user } from '@/types/user'
import { columns } from '@/const/columns/userColumns'
import timerange from '@/components/TimePicker/index.vue'
import StaffService from '@/service/StaffService/index'
const staff = new StaffService()
export default Vue.extend({
components:{ timerange },
computed: {
userList():Array<user>{
return userList
},
// userList():Array<user>{
// return userList
// },
columns(){
return columns
}
......@@ -78,11 +87,12 @@ export default Vue.extend({
notes:''
},
queryParam:{
startTime:undefined as undefined | number,
endTime:undefined as undefined | number,
queryName:'',
queryTel:'',
start:undefined as undefined | number,
end:undefined as undefined | number,
user_name:'' as undefined | string,
phone:'' as undefined | string,
},
userList: [] as Array<user>,
visible:false,
show:false,
labelCol: { span: 10 },
......@@ -90,22 +100,62 @@ export default Vue.extend({
rules:{
notes: [{ required: true, message: '请输入备注内容', trigger: 'blur' }],
},
note:{}
note:{},
pagination: {
current: 1,
defaultPageSize: 10,
total: 0
}
}
},
created() {
this.getList()
},
methods:{
getList() {
const uuid = this.$route.query.uuid as string
if (uuid) {
staff.getStaffList({
uuid: uuid,
page: this.pagination.current,
page_size: this.pagination.defaultPageSize
}).then(res => {
this.userList = res.data.item
this.pagination.total = res.data.total
})
} else {
staff.getUserList({
page: this.pagination.current,
page_size: this.pagination.defaultPageSize
}).then(res => {
this.userList = res.data.item
this.pagination.total = res.data.total
})
}
},
changePage(v: { current: number }) {
this.pagination.current = v.current
this.getList()
},
getNewTime(startTime:number,endTime:number){
this.queryParam.startTime = startTime
this.queryParam.endTime = endTime
this.queryParam.start = startTime
this.queryParam.end = endTime
},
query(){
console.log(this.queryParam)
staff.queryStaff({
...this.queryParam
}).then(res => {
console.log(res)
this.userList = res.data.item
this.pagination.total = res.data.total
})
},
reset(){
this.queryParam.startTime = undefined
this.queryParam.endTime = undefined
this.queryParam.queryName = ''
this.queryParam.queryTel = ''
this.queryParam.start = undefined
this.queryParam.end = undefined
this.queryParam.user_name = ''
this.queryParam.phone = ''
},
check(text:user){
this.visible = true
......@@ -118,6 +168,7 @@ export default Vue.extend({
onSubmit(){
(this.$refs.ruleForm as FormModel).validate(valid => {
if (valid) {
// staff.
this.show = false
} else {
console.log('error submit!!');
......
......@@ -2,7 +2,7 @@
<div>
<p class=" text-2xl font-bold mb-5">浙江省分行信息</p>
<top-bar :level="level"/>
<user-table :level="level" :role="role" :dataSource="dataSource"/>
<user-table :level="level" :role="role" />
</div>
</template>
<script lang="ts">
......@@ -16,6 +16,11 @@ import { firstLevelManager } from "@/mock/index"
export default Vue.extend({
components:{TopBar,userTable},
data() {
return {
// dataSource: [] as PropType<staff[]>
}
},
props:{
level:{
type: Number as PropType<eLevel>,
......@@ -25,12 +30,6 @@ export default Vue.extend({
type: Number as PropType<eRole>,
default: eRole.firstLevel_branch
},
dataSource:{
type: Array as PropType<staff[]>,
default(){
return firstLevelManager
}
}
},
});
</script>
\ No newline at end of file
......@@ -3,12 +3,19 @@
<p class="text-2xl font-bold mb-5">用户管理</p>
<div>
<!-- 级联选择 -->
<a-cascader
<!-- <a-cascader
:disabled="search.length == 0 ? false : true"
v-model="value"
@change="handleChange"
placeholder="通过选择搜索"
style="width: 40%; margin-right: 15px"
/> -->
<header-select
ref="headerSelect"
:setFooList="setFooList"
:fooList="fooList"
:level="level"
:role="role"
/>
<!-- 搜索框 -->
<a-input
......@@ -36,30 +43,54 @@ import { message } from 'ant-design-vue'
import StaffService from "@/service/StaffService";
import { getUserMsg } from "@/utils/userMsg/userMsg"
import { eLevel } from '@/types/level';
import { fooList } from "@/views/Root/OutletManagement/components/HeaderSelect/const";
import { PAGE_SIZE } from "@/const/config/page"
import HeaderSelect from "@/views/Root/OutletManagement/components/HeaderSelect/index.vue";
import { mapActions, mapMutations, mapState } from 'vuex'
Vue.use(Cascader)
Vue.prototype.$message = message
export default Vue.extend({
components: {
HeaderSelect
},
computed:{
options(){
return options
}
},
level(): number | undefined {
return getUserMsg()?.level;
},
role() {
return getUserMsg()?.newRole;
},
},
data(){
return{
search:'',
value:[],
fooList
}
},
mounted(){
this.clearPostion()
this.getBranchList()
},
methods:{
handleChange(){
// 调用请求接口
console.log(1);
this.getBranchList()
...mapMutations('platformUserManagement', {
platformSave: 'save',
}),
clearPostion() {
this.platformSave({
location: '',
firstBranch: undefined,
firstSubBranch: undefined,
secondBranch: undefined,
secondSubBranch: undefined,
})
},
setFooList(v: any[]) {
this.fooList = [...v];
},
async getBranchList(){
const userLevel = getUserMsg()?.level
......@@ -75,16 +106,52 @@ export default Vue.extend({
},
query(){
if( this.value.length==0 && this.search.length == 0 ){
this.$message.info('请通过选择或者输入详细地址搜索')
}else{
const search:string|Array<string> = this.value.length==0? this.search:this.value
console.log(this.fooList)
const levelList = []
for (let item of this.fooList) {
if (item.value) {
let name = ''
for (let i of item.options) {
if (i.ID === item.value) {
name = i.Name
}
}
levelList.push({ value: item.value, name })
} else {
break
}
}
if( levelList.length==0 && this.search.length == 0 ){
this.$message.info('请通过选择或者输入详细地址搜索')
}else{
const search:string|Array<{value: number, name: string}> = levelList.length==0? this.search:levelList
console.log(search)
this.selectTables(search)
}
// this.$router.push({name:'firstLevel'})
},
selectTables(arr: Array<{value: number, name: string}>|string) {
if (typeof arr === 'string') {
this.$router.push({path: '/backend/user/secondarySub', query: { address: arr }})
} else {
const count = arr.length
switch (count) {
case 1:
this.$router.push({path: '/backend/user/firstLevel', query: { rankVal: JSON.stringify(arr) }})
break
case 2:
this.$router.push({path: '/backend/user/secondary', query: { rankVal: JSON.stringify(arr) }})
break
case 3:
this.$router.push({path: '/backend/user/firstSub', query: { rankVal: JSON.stringify(arr) }})
break
case 4:
this.$router.push({path: '/backend/user/secondarySub', query: { rankVal: JSON.stringify(arr) }})
}
}
},
reset(){
this.value = []
(this.$refs.headerSelect as any).init();
this.search = ''
},
}
......
......@@ -170,7 +170,7 @@ export const menuList: iMenuConfigItem[] = [
roles: [
eRole.superManager,
eRole.firstLevel_branch,
eRole.firstLevel_sub_branch,
eRole.secondary_branch,
],
},
{
......@@ -198,6 +198,7 @@ export const menuList: iMenuConfigItem[] = [
roles: [
eRole.superManager,
eRole.firstLevel_branch,
eRole.secondary_branch,
eRole.firstLevel_sub_branch,
eRole.secondary_sub_branch,
],
......
......@@ -2,7 +2,7 @@
<div>
<a-layout id="components-layout-demo-fixed-sider">
<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
style="width: 256px"
: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