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> <template>
<!-- 新增弹窗 --> <!-- 新增弹窗 -->
<a-modal v-model="show" title="新增" :centered="true" footer="" :level="level"> <a-modal
<a-form-model :model="form" :label-col="{span: 8}" :wrapper-col="{span: 14}" ref="addForm" :rules="addrules"> v-model="show"
<a-form-model-item label="名称" :required="true" prop="name"> :title="title"
<a-input v-model="form.name" placeholder="请输入名称" style="width: 200px"/> :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>
<a-form-model-item label="手机号" prop="tel"> <a-form-model-item
<a-input v-model="form.tel" placeholder="请输入手机号" style="width: 200px"/> label="UID"
v-show="modalMode === eAddManagerModalMode.edit"
>
<div>{{ personalMsg.uid }}</div>
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="初始密码" prop="password" > <a-form-model-item
<a-input v-model="form.password" style="width: 200px"/> label="手机号"
v-show="modalMode === eAddManagerModalMode.edit"
>
<div>{{ personalMsg.phone }}</div>
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="岗位角色" > <a-form-model-item
<span class=" text-sm text-black mr-2">sds</span> label="名称"
<a-switch @change="onChange" /> :required="true"
<span class=" ml-2">可对同级管理员进行管理调配</span> 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>
<a-form-model-item label="用户所在机构层级" > <a-form-model-item
<span class=" text-sm text-black">scs</span> 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>
<!-- 不可选层级 --> <a-form-model-item
<a-form-model-item :label="'所属'+label[i-1]" v-for="i in level" :key="i.id" > label="初始密码"
<span class=" text-sm text-black">fjhb</span> prop="password"
v-show="modalMode === eAddManagerModalMode.create"
>
<a-input v-model="form.password" style="width: 200px" />
</a-form-model-item> </a-form-model-item>
<!-- 可选层级 --> <a-form-model-item
<a-form-model-item :label="'所属'+labelList[n-1]" v-for="n in level_org-level" :key="n.id"> label="岗位角色"
<a-select :placeholder="'选择所属'+labelList[n-1]" style="width: 200px; margin-right:10px;"> v-show="modalMode === eAddManagerModalMode.create"
<a-select-option v-for="bank in bankList" :key="bank">{{bank}}</a-select-option> >
<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-select>
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="新地址" :required="true" prop="location" > <HeaderSelect
<a-input v-model="form.location" placeholder="请输入新地址" style="width: 200px"/> 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-item>
</a-form-model> </a-form-model>
<a-form-model-item :wrapper-col="{ span: 14, offset: 4 }"> <a-form-model-item :wrapper-col="{ span: 14, offset: 4 }">
<a-button type="primary" @click="onConfirm">发布</a-button> <a-button type="primary" @click="onConfirm">发布</a-button>
<a-button style="margin-left: 10px;" @click="show=false">取消</a-button> <a-button style="margin-left: 10px" @click="show = false">取消</a-button>
</a-form-model-item> </a-form-model-item>
</a-modal> </a-modal>
</template> </template>
<script lang="ts"> <script lang="ts">
import Vue from 'vue' import Vue, { PropType } from "vue";
import { PropType } from 'vue' import { FormModel, Switch } from "ant-design-vue";
import { FormModel,Switch } from 'ant-design-vue' import { eLevel } from "@/types/level";
import { eLevel } from '@/types/level' import { LEVE_ORG } from "@/views/Root/OutletManagement/const";
import { LEVE_ORG } from '@/views/Root/OutletManagement/const' import { mapMutations, mapState } from "vuex";
Vue.use(Switch) 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({ export default Vue.extend({
computed:{ components: {
bankList():Array<string>{ HeaderSelect,
return ['ada','ads','ds','dsa'] },
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>{ levelOptions() {
return this.label.slice(this.level,this.label.length) 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{ title(): string | undefined {
return LEVE_ORG if (this.modalMode === eAddManagerModalMode.create) {
} return "新增";
}, } else if (this.modalMode === eAddManagerModalMode.edit) {
props:{ return "调配";
label:{ }
type:Array as PropType<String[]>, },
default(){ theRole(): string | undefined {
return ['一级分行','二级分行','一级支行','二级支行'] if (this.typeOfOperatedObject === eTypeOfOperatedObject.manager) {
return "管理员";
} else if (
this.typeOfOperatedObject === eTypeOfOperatedObject.clientManager
) {
return "客户经理";
} }
}, },
level:{ isManager(): boolean {
type:Number as PropType<eLevel>, return this.typeOfOperatedObject === eTypeOfOperatedObject.manager;
default:0 },
} 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(){ props: {
const addrules={ label: {
name: [ type: Array as PropType<string[]>,
{ required: true, message: '请输入名称', trigger: 'blur' }, default() {
], return ["一级分行", "二级分行", "一级支行", "二级支行"];
tel: [
{ required: true, message: '请输入手机号', trigger: 'blur' },
],
location: [
{ required: true, message: '请输入详细地址', trigger: 'blur' },
]
}
return{
show:false,
addrules,
form:{
name:'',
tel:'',
password:'abc123456',
location:'',
privilege:false
}, },
} },
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:{ methods: {
showModal(){ handleLevelChange(value: any) {
this.show = true this.form.level = value;
}, },
onChange(checked:boolean){ async initFooList() {
this.form.privilege = checked 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(){ onChange(checked: boolean) {
(this.$refs.addForm as FormModel).validate(valid => { this.form.privilege = checked;
},
onConfirm() {
(this.$refs.addForm as FormModel).validate((valid) => {
if (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 { } else {
console.log('error submit!!');
return false; 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> </script>
<style scoped> <style scoped>
.ant-form-item{ .ant-form-item {
margin-bottom:5px; margin-bottom: 5px;
} }
</style> </style>
\ No newline at end of file
...@@ -58,6 +58,8 @@ import { eLevel } from '@/types/level' ...@@ -58,6 +58,8 @@ import { eLevel } from '@/types/level'
import { addUser } from './const' import { addUser } from './const'
import { mapActions, mapMutations, mapState } from 'vuex' import { mapActions, mapMutations, mapState } from 'vuex'
import { nextTick } from 'vue/types/umd' import { nextTick } from 'vue/types/umd'
import { eAddManagerModalMode } from '@/store/UserManagement/types'
import {eTypeOfOperatedObject, iUserManagementState} from "@/store/UserManagement/types"
export default Vue.extend({ export default Vue.extend({
components: { addNormalManagerModal, addSuperManagerModal, timerange }, components: { addNormalManagerModal, addSuperManagerModal, timerange },
...@@ -135,6 +137,23 @@ export default Vue.extend({ ...@@ -135,6 +137,23 @@ export default Vue.extend({
}) })
}, },
showModal() { 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() ;(this.$refs.addrModal as any).showModal()
}, },
}, },
......
<template> <template>
<div :columns="columns" :role="role" :dataSource="dataSource"> <div :columns="columns" :role="role">
<!-- 调配弹窗 --> <!-- 调配弹窗 -->
<deplot-modal ref="deployModal" :level="level"/> <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="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.key)">查看</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" > <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-divider type="vertical" />
<a @click="() => enable(record.key)">启用</a> <a @click="() => enable(record.uuid)">启用</a>
</span> </span>
<span v-else> <span v-if="record.status===tableStatus.enable_notOnPosition || record.status===tableStatus.enable_onPosition">
<a @click="disable(record.key)">禁用</a> <a-divider type="vertical" />
<a @click="disable(record.uuid)">禁用</a>
</span> </span>
<span v-if="record.state==('启用中/在岗')"> <span v-if="record.status===tableStatus.disable_noPosition || record.status === tableStatus.enable_onPosition">
<a-divider type="vertical" /> <a-divider type="vertical" />
<a @confirm="() => offJob(record.key)">不在岗</a> <a @click="offJob(record.uuid)">不在岗</a>
</span> </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-divider type="vertical" />
<a @click="inJob(record.key)">在岗</a> <a @click="inJob(record.uuid)">在岗</a>
</span> </span>
</p> </p>
</a-table> </a-table>
...@@ -55,15 +72,37 @@ ...@@ -55,15 +72,37 @@
<script lang="ts"> <script lang="ts">
import Vue, { PropType } from "vue" import Vue, { PropType } from "vue"
import { firstLevelManager } from '@/mock/index' import { firstLevelManager } from '@/mock/index'
import { staff } from '@/types/staff' import { staff , iStaffQueryResItem} from '@/types/staff'
import { eRole } from "@/types/role" import { eUserStatusAction, eUserStatus } from '@/types/user'
import { eRole, eNewRoleRelatedToBackEnd } from "@/types/role"
import { eLevel } from "@/types/level" import { eLevel } from "@/types/level"
import { getColumns } from '@/const/columns/userManagerCol' import { getColumns } from '@/const/columns/userManagerCol'
import { userModal } from './const' import { userModal } from './const'
import deplotModal from "@/components/UserManage/deployModal.vue" 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({ export default Vue.extend({
// mixins: [Mixin],
components:{ deplotModal }, 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:{ props:{
level:{ level:{
type: Number as PropType<eLevel>, type: Number as PropType<eLevel>,
...@@ -73,16 +112,15 @@ export default Vue.extend({ ...@@ -73,16 +112,15 @@ export default Vue.extend({
type: Number as PropType<eRole>, type: Number as PropType<eRole>,
default:0 default:0
}, },
dataSource:{
type: Array as PropType<staff[]>,
}
}, },
data(){ data(){
return{ return{
show:false, show:false,
title:'', title:'',
text:'', text:'',
type:userModal.enable type:userModal.enable,
id: '',
params: {} as any
} }
}, },
computed:{ computed:{
...@@ -91,77 +129,212 @@ export default Vue.extend({ ...@@ -91,77 +129,212 @@ export default Vue.extend({
}, },
columns(){ columns(){
return getColumns(this.role) 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:{ methods:{
deploy(record:staff){ ...mapMutations('platformUserManagement', {
(this.$refs.deployModal as any).showModal() 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){ enable(key:string){
this.type = userModal.enable this.type = userModal.enable
this.id = key
this.title = '启用用户' this.title = '启用用户'
this.text = '确定启用该用户?' this.text = '确定启用该用户?'
this.show = true this.show = true
}, },
disable(key:string){ disable(key:string){
this.type = userModal.disable this.type = userModal.disable
this.id = key
this.title = '禁用用户' this.title = '禁用用户'
this.text = '确定禁用该用户?' this.text = '确定禁用该用户?'
this.show = true this.show = true
}, },
inJob(key:string){ inJob(key:string){
this.type = userModal.enable this.type = userModal.enable
this.id = key
this.title = '设置在岗' this.title = '设置在岗'
this.text = '确定将该用户设置为在岗?' this.text = '确定将该用户设置为在岗?'
this.show = true this.show = true
}, },
offJob(key:string){ offJob(key:string){
this.type = userModal.enable this.type = userModal.enable
this.id = key
this.title = '设置不在岗' this.title = '设置不在岗'
this.text = '确定将该用户设置为在岗?' this.text = '确定将该用户设置为在岗?'
this.show = true 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){ handleOk(record:any){
if( this.type == userModal.enable ){ if( this.type == userModal.enable ){
this.modifyStauts(eUserStatusAction.enable)
} else if( this.type == userModal.disable ){ } else if( this.type == userModal.disable ){
this.modifyStauts(eUserStatusAction.disable)
} else if( this.type == userModal.inJob ){ } else if( this.type == userModal.inJob ){
this.modifyStauts(eUserStatusAction.onPosition)
} else if( this.type == userModal.offJob ){ } else if( this.type == userModal.offJob ){
this.modifyStauts(eUserStatusAction.notOnPosition)
} }
this.show = false this.show = false
}, },
// 二级分行管理员 // 二级分行管理员
getSecondaryManageList(key:string){ getSecondaryManageList(key:string, uuid: string, count: number){
this.$router.push({name:'secondary',query:{key}}) 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){ getfirstSubManageList(key:string, uuid: string, count: number){
this.$router.push({name:'firstSub',query:{key}}) const role = count === 1 ? eNewRoleRelatedToBackEnd.Management : eNewRoleRelatedToBackEnd.ACM
console.log(key) this.platformSave({
page: 1
})
this.$router.push({name:'firstSub',query:{level: key, rankVal: this.$route.query.rankVal, uuid, role}})
}, },
// 一级支行客户经理 // 一级支行客户经理
getFirstSubClientManagerList(key:string){ getFirstSubClientManagerList(key:string,uuid: string, count: number){
this.$router.push({name:'firstSubClientManager',query:{key}}) 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){ getFirstSubClientList(uuid:string){
this.$router.push({name:'firstSubClient',query:{key}}) this.platformSave({
page: 1
})
this.$router.push({name:'firstSubClient',query:{uuid}})
}, },
// 二级支行管理员 // 二级支行管理员
getSecondarySubManagerList(key:string){ getSecondarySubManagerList(key:string, uuid: string, count: number){
this.$router.push({name:'secondarySub',query:{key}}) 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){ getSecondarySubClientManageList(key:string, uuid:string, count: number){
this.$router.push({name:'secondarySubClientManager',query:{key}}) 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){ getSecondarySubClientList(uuid:string){
this.$router.push({name:'secondarySubClient',query:{key}}) this.platformSave({
page: 1
})
this.$router.push({name:'secondarySubClient',query:{uuid}})
}, },
},
created() {
this.getRouteQuery()
this.getLists()
} }
}) })
</script> </script>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<span slot="name" slot-scope="text"> <span slot="name" slot-scope="text">
{{ text.inst_name }}-{{ text.product_name }} {{ text.inst_name }}-{{ text.product_name }}
</span> </span>
<template #product_type="text"> <template #loan_type="text">
{{ text | filterLoanType }} {{ text | filterLoanType }}
</template> </template>
<span slot="date" slot-scope="text"> <span slot="date" slot-scope="text">
...@@ -53,12 +53,6 @@ ...@@ -53,12 +53,6 @@
<div v-if="record.product_status == eProductStatus.unpublished"> <div v-if="record.product_status == eProductStatus.unpublished">
<a @click="toAdd(record)">上架</a> <a @click="toAdd(record)">上架</a>
<a-divider type="vertical" /> <a-divider type="vertical" />
<a @click="toDelete(record)">删除</a>
</div>
<!-- 上架状态 -->
<div v-else>
<a @click="toRemove(record)">下架</a>
<a-divider type="vertical" />
<a <a
@click=" @click="
$router.push({ $router.push({
...@@ -69,6 +63,12 @@ ...@@ -69,6 +63,12 @@
>编辑</a >编辑</a
> >
<a-divider type="vertical" /> <a-divider type="vertical" />
<a @click="toDelete(record)">删除</a>
</div>
<!-- 上架状态 -->
<div v-else>
<a @click="toRemove(record)">下架</a>
<a-divider type="vertical" />
<a <a
v-if="record.product_status == eProductStatus.normal" v-if="record.product_status == eProductStatus.normal"
@click="setAsHot(record)" @click="setAsHot(record)"
......
...@@ -12,13 +12,14 @@ ...@@ -12,13 +12,14 @@
:startTime="searchPageReqParams.startTime" :startTime="searchPageReqParams.startTime"
:endTime="searchPageReqParams.endTime" :endTime="searchPageReqParams.endTime"
/> />
<span class="mr-3">消息分类</span> <span class="mr-3">产品分类</span>
<a-select <a-select
:default-value="productType[0]" :default-value="productType[0]"
style="width: 120px; margin-right: 10px" style="width: 120px; margin-right: 10px"
v-model="searchPageReqParams.type" 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 }} {{ type }}
</a-select-option> </a-select-option>
</a-select> </a-select>
...@@ -64,7 +65,7 @@ export default Vue.extend({ ...@@ -64,7 +65,7 @@ export default Vue.extend({
return { return {
searchPageReqParams: { searchPageReqParams: {
name: "", name: "",
type: "", type: 0,
startTime: undefined as undefined | number, startTime: undefined as undefined | number,
endTime: undefined as undefined | number, endTime: undefined as undefined | number,
offset: 0, offset: 0,
...@@ -86,6 +87,9 @@ export default Vue.extend({ ...@@ -86,6 +87,9 @@ export default Vue.extend({
}, },
}, },
methods: { methods: {
handleChange(val:any){
this.searchPageReqParams.type = val
},
...mapMutations('loanProductManagement', { ...mapMutations('loanProductManagement', {
productSave: 'save', productSave: 'save',
}), }),
...@@ -104,7 +108,7 @@ export default Vue.extend({ ...@@ -104,7 +108,7 @@ export default Vue.extend({
}, },
reset() { reset() {
this.searchPageReqParams.name = ""; this.searchPageReqParams.name = "";
this.searchPageReqParams.type = ""; this.searchPageReqParams.type = 0;
this.searchPageReqParams.startTime = undefined; this.searchPageReqParams.startTime = undefined;
this.searchPageReqParams.endTime = undefined; this.searchPageReqParams.endTime = undefined;
this.$nextTick(() => { this.$nextTick(() => {
......
...@@ -13,8 +13,8 @@ export default[ ...@@ -13,8 +13,8 @@ export default[
{ {
title: '产品分类', title: '产品分类',
align: 'center', align: 'center',
dataIndex: 'product_type', dataIndex: 'loan_type',
scopedSlots: { customRender: 'product_type' }, scopedSlots: { customRender: 'loan_type' },
}, },
{ {
title: '贷款期限(月)', title: '贷款期限(月)',
......
...@@ -5,21 +5,8 @@ const columns:Array<column> = ...@@ -5,21 +5,8 @@ const columns:Array<column> =
{ {
title: '创建日期', title: '创建日期',
align:'center', align:'center',
dataIndex: 'time', dataIndex: 'created_at',
role:[ scopedSlots: { customRender: 'created_at' },
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',
role:[ role:[
eRole.superManager, eRole.superManager,
eRole.firstLevel_branch, eRole.firstLevel_branch,
...@@ -30,10 +17,24 @@ const columns:Array<column> = ...@@ -30,10 +17,24 @@ const columns:Array<column> =
eRole.secondary_sub_clientManager, 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:'姓名', title:'姓名',
align:'center', align:'center',
dataIndex: 'name', dataIndex: 'user_name',
role:[ role:[
eRole.superManager, eRole.superManager,
eRole.firstLevel_branch, eRole.firstLevel_branch,
...@@ -61,7 +62,7 @@ const columns:Array<column> = ...@@ -61,7 +62,7 @@ const columns:Array<column> =
{ {
title: '手机号', title: '手机号',
align:'center', align:'center',
dataIndex: 'account', dataIndex: 'phone',
role:[ role:[
eRole.superManager, eRole.superManager,
eRole.firstLevel_branch, eRole.firstLevel_branch,
...@@ -75,7 +76,8 @@ const columns:Array<column> = ...@@ -75,7 +76,8 @@ const columns:Array<column> =
{ {
title: '所在机构层级', title: '所在机构层级',
align:'center', align:'center',
dataIndex: 'bank', dataIndex: 'level',
scopedSlots: { customRender: 'level' },
role:[ role:[
eRole.superManager, eRole.superManager,
eRole.firstLevel_branch, eRole.firstLevel_branch,
...@@ -89,7 +91,7 @@ const columns:Array<column> = ...@@ -89,7 +91,7 @@ const columns:Array<column> =
{ {
title: '所属二级支行', title: '所属二级支行',
align:'center', align:'center',
dataIndex: 'secondary_sub_branch', dataIndex: 'second_sub_branch',
role:[ role:[
eRole.secondary_sub_branch, eRole.secondary_sub_branch,
eRole.secondary_sub_clientManager, eRole.secondary_sub_clientManager,
...@@ -98,7 +100,7 @@ const columns:Array<column> = ...@@ -98,7 +100,7 @@ const columns:Array<column> =
{ {
title: '所属一级支行', title: '所属一级支行',
align:'center', align:'center',
dataIndex: 'firstLevel_sub_branch', dataIndex: 'first_sub_branch',
role:[ role:[
eRole.firstLevel_sub_branch, eRole.firstLevel_sub_branch,
eRole.secondary_sub_branch, eRole.secondary_sub_branch,
...@@ -109,7 +111,7 @@ const columns:Array<column> = ...@@ -109,7 +111,7 @@ const columns:Array<column> =
{ {
title: '所属二级分行', title: '所属二级分行',
align:'center', align:'center',
dataIndex: 'secondary_branch', dataIndex: 'second_branch',
role:[ role:[
eRole.secondary_branch, eRole.secondary_branch,
eRole.firstLevel_sub_branch, eRole.firstLevel_sub_branch,
...@@ -121,7 +123,7 @@ const columns:Array<column> = ...@@ -121,7 +123,7 @@ const columns:Array<column> =
{ {
title: '所属一级分行', title: '所属一级分行',
align:'center', align:'center',
dataIndex: 'firstLevel_branch', dataIndex: 'first_branch',
role:[ role:[
eRole.firstLevel_branch, eRole.firstLevel_branch,
eRole.secondary_branch, eRole.secondary_branch,
...@@ -212,7 +214,7 @@ const columns:Array<column> = ...@@ -212,7 +214,7 @@ const columns:Array<column> =
{ {
title:'操作uid', title:'操作uid',
align:'center', align:'center',
dataIndex: 'actionUid', dataIndex: 'operator_name',
role:[ role:[
eRole.superManager, eRole.superManager,
eRole.firstLevel_branch, eRole.firstLevel_branch,
...@@ -226,7 +228,8 @@ const columns:Array<column> = ...@@ -226,7 +228,8 @@ const columns:Array<column> =
{ {
title:'状态', title:'状态',
align:'center', align:'center',
dataIndex: 'state', dataIndex: 'status',
scopedSlots: { customRender: 'status' },
role:[ role:[
eRole.superManager, eRole.superManager,
eRole.firstLevel_branch, eRole.firstLevel_branch,
......
...@@ -4,6 +4,7 @@ import { editableProductStatus,eGuaranteeType,eProductType} from '@/types/loanPr ...@@ -4,6 +4,7 @@ import { editableProductStatus,eGuaranteeType,eProductType} from '@/types/loanPr
// import { activityStatus } from "@/service/ActivityService/type" // import { activityStatus } from "@/service/ActivityService/type"
import moment from 'moment' import moment from 'moment'
import { activityStatus } from '@/service/ActivityService/type' import { activityStatus } from '@/service/ActivityService/type'
import { eLevel } from '@/types/level'
export default { export default {
formatDate(timeStamp: number) { formatDate(timeStamp: number) {
...@@ -96,6 +97,20 @@ export default { ...@@ -96,6 +97,20 @@ export default {
return '已发布' 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){ filterWorkDay(weekend_status: number){
const silly = '周一至周五' const silly = '周一至周五'
if(weekend_status === 0){ if(weekend_status === 0){
...@@ -107,7 +122,7 @@ export default { ...@@ -107,7 +122,7 @@ export default {
} else if(weekend_status === 3){ } else if(weekend_status === 3){
return '周一至周日' return '周一至周日'
} }
} },
} as { } as {
[key: string]: (...args: any) => any [key: string]: (...args: any) => any
} }
...@@ -89,7 +89,7 @@ export default class LoanProductService { ...@@ -89,7 +89,7 @@ export default class LoanProductService {
items: iLoanProdcutItem[] items: iLoanProdcutItem[]
total: number total: number
}>({ }>({
url: prefix + '/list', url: '/loan/query/direct/list',
method: 'POST', method: 'POST',
data, data,
}) })
......
...@@ -12,26 +12,54 @@ export default class StaffService { ...@@ -12,26 +12,54 @@ export default class StaffService {
return StaffService.instance return StaffService.instance
} }
modifyStaffStatus(data: { status: eUserStatusAction; uuid: string }) { addAcm(data: {
return baseAxios({ attr: {
url: '/staff/modifyStatus', add_same_level: boolean
method: 'PUT', },
data, 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) { addNextLevel(data: {
return baseAxios({ attr: {
url: '/staff/' + uuid, add_same_level: boolean
method: 'delete', },
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[] }) { addSameLevel(data: {
return baseAxios({ attr: {
url: '/staff/import', 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', method: 'post',
data, data
}) })
} }
...@@ -47,6 +75,35 @@ export default class StaffService { ...@@ -47,6 +75,35 @@ export default class StaffService {
params: data, 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() { getSelfOutLet() {
return baseAxios<iOutLet>({ return baseAxios<iOutLet>({
url: '/staff/outlet', url: '/staff/outlet',
...@@ -54,4 +111,83 @@ export default class StaffService { ...@@ -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, {}>>{ ...@@ -30,7 +30,7 @@ export default <Module<iProductModuleState, {}>>{
const ret = await LoanProductService.getInstance().queryDirectLoanReq({ const ret = await LoanProductService.getInstance().queryDirectLoanReq({
end_time: state.end_time as number, end_time: state.end_time as number,
limit: state.limit, limit: state.limit,
loan_type: 0, loan_type: state.loan_type,
offset: state.offset as number, offset: state.offset as number,
product_status: 0, product_status: 0,
start_time: state.start_time as number, 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' ...@@ -4,19 +4,22 @@ import platformUserManagement from './platformUserManagement/index'
import { iPlatformModuleState } from './platformUserManagement/types' import { iPlatformModuleState } from './platformUserManagement/types'
import loanProductManagement from './LoanProductManagement/index' import loanProductManagement from './LoanProductManagement/index'
import { iProductModuleState } from './LoanProductManagement/type' import { iProductModuleState } from './LoanProductManagement/type'
import UserManagement from './UserManagement/index'
Vue.use(Vuex) Vue.use(Vuex)
const store = new Vuex.Store<{ platformUserManagement?: iPlatformModuleState,loanProductManagement?:iProductModuleState }>( const store = new Vuex.Store<{
{ platformUserManagement?: iPlatformModuleState
state: {}, loanProductManagement?: iProductModuleState
mutations: {}, }>({
actions: {}, state: {},
modules: { mutations: {},
platformUserManagement, actions: {},
loanProductManagement, modules: {
}, platformUserManagement,
loanProductManagement,
UserManagement,
}, },
) })
export default store export default store
\ No newline at end of file
import { PAGE_SIZE } from '@/const/config/page' import { PAGE_SIZE } from '@/const/config/page'
import UserService from '@/service/UserManagementService' import UserService from '@/service/UserManagementService'
import StaffService from '@/service/StaffService'
import { Module } from 'vuex' import { Module } from 'vuex'
import { iListItem, iPlatformModuleState } from './types' import { iListItem, iPlatformModuleState } from './types'
...@@ -21,6 +22,8 @@ export default <Module<iPlatformModuleState, {}>>{ ...@@ -21,6 +22,8 @@ export default <Module<iPlatformModuleState, {}>>{
userName: '', userName: '',
total: 0, total: 0,
loading: false, loading: false,
uuid: '',
role: ''
}, },
mutations: { mutations: {
save(state, payload) { save(state, payload) {
...@@ -46,5 +49,46 @@ export default <Module<iPlatformModuleState, {}>>{ ...@@ -46,5 +49,46 @@ export default <Module<iPlatformModuleState, {}>>{
state.loading = false 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 { ...@@ -31,5 +31,7 @@ export interface iPlatformModuleState {
start: number | undefined start: number | undefined
userName: string, userName: string,
total: number 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{ enum bank{
'一级分行', '一级分行',
...@@ -34,6 +36,24 @@ interface staff{ ...@@ -34,6 +36,24 @@ interface staff{
state:string 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{ export{
bank, bank,
role, role,
......
...@@ -18,7 +18,7 @@ export const fooList = [ ...@@ -18,7 +18,7 @@ export const fooList = [
value: undefined as number | undefined, value: undefined as number | undefined,
}, },
{ {
placeholder: '请选择级支行', placeholder: '请选择级支行',
options: [] as { ID: number; Name: string }[], options: [] as { ID: number; Name: string }[],
disable: false, disable: false,
value: undefined as number | undefined, value: undefined as number | undefined,
......
<template> <template>
<div> <div>
<!-- <input type="file" @input="handleInput"/> -->
<div v-if="showbranchFilter"> <div v-if="showbranchFilter">
<p class="text-2xl font-bold mb-5">网点管理</p> <p class="text-2xl font-bold mb-5">网点管理</p>
<div> <div>
...@@ -406,14 +407,26 @@ export default Vue.extend({ ...@@ -406,14 +407,26 @@ export default Vue.extend({
} }
}, },
methods: { methods: {
getLalo() { async handleInput(e: Event) {
window.navigator.geolocation.getCurrentPosition((position) => { const ret = await handle建设银行excelFileChange(e);
this.formData.la = position.coords.latitude.toString(); StaffService.getInstance().import({
this.formData.lo = position.coords.longitude.toString(); staffs: ret as any,
const form = this.$refs.form as FormModel;
form.validateField(["la", "lo"], (err) => {});
}); });
}, },
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) { async clickViewNote(record: any) {
console.log(record); console.log(record);
const id = record.id; const id = record.id;
......
...@@ -60,11 +60,11 @@ ...@@ -60,11 +60,11 @@
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="担保方式" :wrapper-col="{ span: 5 }"> <a-form-model-item label="担保方式" :wrapper-col="{ span: 5 }">
<a-select <a-select
:default-value="guaranteeType[0]"
style="width: 120px; margin-right: 10px" style="width: 120px; margin-right: 10px"
@change="changeGuarantee" @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 }} {{ type }}
</a-select-option> </a-select-option>
</a-select> </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 @@ ...@@ -5,8 +5,8 @@
<span class=" font-semibold">注册时间:</span> <span class=" font-semibold">注册时间:</span>
<timerange class=" mr-3" <timerange class=" mr-3"
@getNewTime="getNewTime"/> @getNewTime="getNewTime"/>
<a-input placeholder="姓名模糊搜索" v-model="queryParam.queryName" 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.queryTel" 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" style=" margin-right:10px;" @click="query">查询</a-button>
<a-button type="primary" @click="reset">重置</a-button> <a-button type="primary" @click="reset">重置</a-button>
<!-- 查看弹窗 --> <!-- 查看弹窗 -->
...@@ -44,7 +44,13 @@ ...@@ -44,7 +44,13 @@
</a-form-model> </a-form-model>
</a-modal> </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"> <div slot="note" slot-scope="text">
<a @click="check(text)">查看</a> <a @click="check(text)">查看</a>
</div> </div>
...@@ -61,13 +67,16 @@ import { userList } from '@/mock/index' ...@@ -61,13 +67,16 @@ import { userList } from '@/mock/index'
import { user } from '@/types/user' import { user } from '@/types/user'
import { columns } from '@/const/columns/userColumns' import { columns } from '@/const/columns/userColumns'
import timerange from '@/components/TimePicker/index.vue' import timerange from '@/components/TimePicker/index.vue'
import StaffService from '@/service/StaffService/index'
const staff = new StaffService()
export default Vue.extend({ export default Vue.extend({
components:{ timerange }, components:{ timerange },
computed: { computed: {
userList():Array<user>{ // userList():Array<user>{
return userList // return userList
}, // },
columns(){ columns(){
return columns return columns
} }
...@@ -78,11 +87,12 @@ export default Vue.extend({ ...@@ -78,11 +87,12 @@ export default Vue.extend({
notes:'' notes:''
}, },
queryParam:{ queryParam:{
startTime:undefined as undefined | number, start:undefined as undefined | number,
endTime:undefined as undefined | number, end:undefined as undefined | number,
queryName:'', user_name:'' as undefined | string,
queryTel:'', phone:'' as undefined | string,
}, },
userList: [] as Array<user>,
visible:false, visible:false,
show:false, show:false,
labelCol: { span: 10 }, labelCol: { span: 10 },
...@@ -90,22 +100,62 @@ export default Vue.extend({ ...@@ -90,22 +100,62 @@ export default Vue.extend({
rules:{ rules:{
notes: [{ required: true, message: '请输入备注内容', trigger: 'blur' }], notes: [{ required: true, message: '请输入备注内容', trigger: 'blur' }],
}, },
note:{} note:{},
pagination: {
current: 1,
defaultPageSize: 10,
total: 0
}
} }
}, },
created() {
this.getList()
},
methods:{ 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){ getNewTime(startTime:number,endTime:number){
this.queryParam.startTime = startTime this.queryParam.start = startTime
this.queryParam.endTime = endTime this.queryParam.end = endTime
}, },
query(){ query(){
console.log(this.queryParam) 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(){ reset(){
this.queryParam.startTime = undefined this.queryParam.start = undefined
this.queryParam.endTime = undefined this.queryParam.end = undefined
this.queryParam.queryName = '' this.queryParam.user_name = ''
this.queryParam.queryTel = '' this.queryParam.phone = ''
}, },
check(text:user){ check(text:user){
this.visible = true this.visible = true
...@@ -118,6 +168,7 @@ export default Vue.extend({ ...@@ -118,6 +168,7 @@ export default Vue.extend({
onSubmit(){ onSubmit(){
(this.$refs.ruleForm as FormModel).validate(valid => { (this.$refs.ruleForm as FormModel).validate(valid => {
if (valid) { if (valid) {
// staff.
this.show = false this.show = false
} else { } else {
console.log('error submit!!'); console.log('error submit!!');
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div> <div>
<p class=" text-2xl font-bold mb-5">浙江省分行信息</p> <p class=" text-2xl font-bold mb-5">浙江省分行信息</p>
<top-bar :level="level"/> <top-bar :level="level"/>
<user-table :level="level" :role="role" :dataSource="dataSource"/> <user-table :level="level" :role="role" />
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
...@@ -16,6 +16,11 @@ import { firstLevelManager } from "@/mock/index" ...@@ -16,6 +16,11 @@ import { firstLevelManager } from "@/mock/index"
export default Vue.extend({ export default Vue.extend({
components:{TopBar,userTable}, components:{TopBar,userTable},
data() {
return {
// dataSource: [] as PropType<staff[]>
}
},
props:{ props:{
level:{ level:{
type: Number as PropType<eLevel>, type: Number as PropType<eLevel>,
...@@ -25,12 +30,6 @@ export default Vue.extend({ ...@@ -25,12 +30,6 @@ export default Vue.extend({
type: Number as PropType<eRole>, type: Number as PropType<eRole>,
default: eRole.firstLevel_branch default: eRole.firstLevel_branch
}, },
dataSource:{
type: Array as PropType<staff[]>,
default(){
return firstLevelManager
}
}
}, },
}); });
</script> </script>
\ No newline at end of file
...@@ -3,12 +3,19 @@ ...@@ -3,12 +3,19 @@
<p class="text-2xl font-bold mb-5">用户管理</p> <p class="text-2xl font-bold mb-5">用户管理</p>
<div> <div>
<!-- 级联选择 --> <!-- 级联选择 -->
<a-cascader <!-- <a-cascader
:disabled="search.length == 0 ? false : true" :disabled="search.length == 0 ? false : true"
v-model="value" v-model="value"
@change="handleChange" @change="handleChange"
placeholder="通过选择搜索" placeholder="通过选择搜索"
style="width: 40%; margin-right: 15px" style="width: 40%; margin-right: 15px"
/> -->
<header-select
ref="headerSelect"
:setFooList="setFooList"
:fooList="fooList"
:level="level"
:role="role"
/> />
<!-- 搜索框 --> <!-- 搜索框 -->
<a-input <a-input
...@@ -36,30 +43,54 @@ import { message } from 'ant-design-vue' ...@@ -36,30 +43,54 @@ import { message } from 'ant-design-vue'
import StaffService from "@/service/StaffService"; import StaffService from "@/service/StaffService";
import { getUserMsg } from "@/utils/userMsg/userMsg" import { getUserMsg } from "@/utils/userMsg/userMsg"
import { eLevel } from '@/types/level'; import { eLevel } from '@/types/level';
import { fooList } from "@/views/Root/OutletManagement/components/HeaderSelect/const";
import { PAGE_SIZE } from "@/const/config/page" 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.use(Cascader)
Vue.prototype.$message = message Vue.prototype.$message = message
export default Vue.extend({ export default Vue.extend({
components: {
HeaderSelect
},
computed:{ computed:{
options(){ options(){
return options return options
} },
level(): number | undefined {
return getUserMsg()?.level;
},
role() {
return getUserMsg()?.newRole;
},
}, },
data(){ data(){
return{ return{
search:'', search:'',
value:[], value:[],
fooList
} }
}, },
mounted(){ mounted(){
this.clearPostion()
this.getBranchList() this.getBranchList()
}, },
methods:{ methods:{
handleChange(){ ...mapMutations('platformUserManagement', {
// 调用请求接口 platformSave: 'save',
console.log(1); }),
this.getBranchList() clearPostion() {
this.platformSave({
location: '',
firstBranch: undefined,
firstSubBranch: undefined,
secondBranch: undefined,
secondSubBranch: undefined,
})
},
setFooList(v: any[]) {
this.fooList = [...v];
}, },
async getBranchList(){ async getBranchList(){
const userLevel = getUserMsg()?.level const userLevel = getUserMsg()?.level
...@@ -75,16 +106,52 @@ export default Vue.extend({ ...@@ -75,16 +106,52 @@ export default Vue.extend({
}, },
query(){ query(){
if( this.value.length==0 && this.search.length == 0 ){ console.log(this.fooList)
this.$message.info('请通过选择或者输入详细地址搜索') const levelList = []
}else{ for (let item of this.fooList) {
const search:string|Array<string> = this.value.length==0? this.search:this.value 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) console.log(search)
this.selectTables(search)
} }
// this.$router.push({name:'firstLevel'}) // 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(){ reset(){
this.value = [] (this.$refs.headerSelect as any).init();
this.search = '' this.search = ''
}, },
} }
......
...@@ -170,7 +170,7 @@ export const menuList: iMenuConfigItem[] = [ ...@@ -170,7 +170,7 @@ export const menuList: iMenuConfigItem[] = [
roles: [ roles: [
eRole.superManager, eRole.superManager,
eRole.firstLevel_branch, eRole.firstLevel_branch,
eRole.firstLevel_sub_branch, eRole.secondary_branch,
], ],
}, },
{ {
...@@ -198,6 +198,7 @@ export const menuList: iMenuConfigItem[] = [ ...@@ -198,6 +198,7 @@ export const menuList: iMenuConfigItem[] = [
roles: [ roles: [
eRole.superManager, eRole.superManager,
eRole.firstLevel_branch, eRole.firstLevel_branch,
eRole.secondary_branch,
eRole.firstLevel_sub_branch, eRole.firstLevel_sub_branch,
eRole.secondary_sub_branch, eRole.secondary_sub_branch,
], ],
......
...@@ -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