Commit 7efc20c3be1531de051744e077d00997e4fb773c
Merge branch 'bug_fix' of gitlab.feewee.cn:FEV2/fw-cms into bug_fix
Showing
3 changed files
with
95 additions
and
41 deletions
src/pages/admin/Role/entity.ts
1 | 1 | /* |
2 | 2 | * @Date: 2021-07-14 10:54:47 |
3 | 3 | * @LastEditors: wangqiang@feewee.cn |
4 | - * @LastEditTime: 2021-07-29 14:50:55 | |
4 | + * @LastEditTime: 2023-02-27 17:18:17 | |
5 | 5 | */ |
6 | 6 | export enum RoleTypeEnum { |
7 | - '系统角色' = 1, | |
8 | - '流程角色', | |
9 | - '功能角色' | |
7 | + "系统角色" = 1, | |
8 | + "流程角色", | |
9 | + "功能角色", | |
10 | 10 | } |
11 | 11 | |
12 | 12 | export const roleTypeTag = { |
13 | - 1: 'geekblue', | |
14 | - 2: 'purple', | |
15 | - 3: 'orange' | |
13 | + 1: "geekblue", | |
14 | + 2: "purple", | |
15 | + 3: "orange", | |
16 | 16 | }; |
17 | 17 | |
18 | 18 | export const roleRange = [1, 2, 3, 4]; |
19 | 19 | export const roleRangeType = { |
20 | - 1: '展厅', | |
21 | - 2: '服务站', | |
22 | - 3: '二手车店', | |
23 | - 4: '租赁店', | |
20 | + 1: "展厅", | |
21 | + 2: "服务站", | |
22 | + 3: "二手车店", | |
23 | + 4: "租赁店", | |
24 | 24 | }; |
25 | 25 | |
26 | +export enum EnumRoleRangeType { | |
27 | + "展厅" = 1, | |
28 | + "服务站", | |
29 | + "二手车店", | |
30 | + "租赁店", | |
31 | +} | |
32 | + | |
26 | 33 | /** 角色输入类型 */ |
27 | 34 | export enum RoleRangeTypeEnum { |
28 | - '允许' = 1, | |
29 | - '不允许' | |
35 | + "允许" = 1, | |
36 | + "不允许", | |
30 | 37 | } |
31 | 38 | |
32 | 39 | /** 角色用途枚举 */ |
33 | 40 | export enum UseTypeEnum { |
34 | - '默认' = 1, | |
35 | - '业务', | |
36 | - '审批', | |
37 | - '管理' | |
41 | + "默认" = 1, | |
42 | + "业务", | |
43 | + "审批", | |
44 | + "管理", | |
38 | 45 | } |
39 | 46 | |
40 | 47 | /** 角色用途颜色枚举 */ |
41 | 48 | export enum UseTypeColorEnum { |
42 | - '#4189FD' = 1, | |
43 | - '#20C688', | |
44 | - '#FF921C', | |
45 | - '#F93939' | |
46 | -} | |
47 | 49 | \ No newline at end of file |
50 | + "#4189FD" = 1, | |
51 | + "#20C688", | |
52 | + "#FF921C", | |
53 | + "#F93939", | |
54 | +} | ... | ... |
src/pages/ehr/ProgramOfStudy/Settings/components/Modal.tsx
1 | 1 | import SelectBrandOrSeries from "@/pages/ehr/ProgramOfStudy/components/SelectBrandOrSeries"; |
2 | -import RangeRoleSelector from "@/pages/ehr/ProgramOfStudy/components/RangeRoleSelector"; | |
2 | +import RangeRoleSelector, { | |
3 | + RangeRoleSelectorRef, | |
4 | +} from "@/pages/ehr/ProgramOfStudy/components/RangeRoleSelector"; | |
3 | 5 | import { |
4 | 6 | Button, |
5 | 7 | DatePicker, |
... | ... | @@ -49,6 +51,7 @@ export default function ProgramOfStudySettingsModal() { |
49 | 51 | const [confirmLoading, setConfirmLoading] = useState(false); |
50 | 52 | const submitType = useRef<"save" | "draft">("save"); |
51 | 53 | const tempItem = useRef<EHrProgramOfStudySettings.ListVO>(); |
54 | + const rangeRoleSelectorRef = useRef<RangeRoleSelectorRef>(null); | |
52 | 55 | |
53 | 56 | useEffect(() => { |
54 | 57 | if (visible) { |
... | ... | @@ -354,6 +357,13 @@ export default function ProgramOfStudySettingsModal() { |
354 | 357 | type?: number; |
355 | 358 | list?: { value?: string; label?: string }[]; |
356 | 359 | }) => { |
360 | + console.log("x", form.getFieldValue("rangeRole")); | |
361 | + // 如果选择的是 1 按品牌 或 2 按车系 则角色的 authRange 必须包含 1 展厅 3 二手车店 | |
362 | + if (value?.type === 1 || value?.type === 2) { | |
363 | + rangeRoleSelectorRef.current?.setIncludesPreSale(true); | |
364 | + } else { | |
365 | + rangeRoleSelectorRef.current?.setIncludesPreSale(false); | |
366 | + } | |
357 | 367 | questionBankInitial.setParams( |
358 | 368 | { |
359 | 369 | adapterType: value?.type, |
... | ... | @@ -390,7 +400,12 @@ export default function ProgramOfStudySettingsModal() { |
390 | 400 | return value; |
391 | 401 | }} |
392 | 402 | > |
393 | - <RangeRoleSelector disabled={isView} labelInValue mode="multiple" /> | |
403 | + <RangeRoleSelector | |
404 | + ref={rangeRoleSelectorRef} | |
405 | + disabled={isView} | |
406 | + labelInValue | |
407 | + mode="multiple" | |
408 | + /> | |
394 | 409 | </Form.Item> |
395 | 410 | <Form.Item |
396 | 411 | label="过期时间" | ... | ... |
src/pages/ehr/ProgramOfStudy/components/RangeRoleSelector/index.tsx
... | ... | @@ -2,18 +2,25 @@ |
2 | 2 | * @Author: wangqiang@feewee.cn |
3 | 3 | * @Date: 2022-11-21 16:07:40 |
4 | 4 | * @LastEditors: wangqiang@feewee.cn |
5 | - * @LastEditTime: 2022-11-30 16:17:02 | |
5 | + * @LastEditTime: 2023-02-27 17:46:14 | |
6 | 6 | */ |
7 | -import React, { useMemo } from "react"; | |
7 | +import React, { | |
8 | + forwardRef, | |
9 | + Ref, | |
10 | + useImperativeHandle, | |
11 | + useMemo, | |
12 | + useState, | |
13 | +} from "react"; | |
8 | 14 | import { Radio, Select } from "antd"; |
9 | 15 | import useInitail from "@/hooks/useInitail"; |
10 | 16 | import { getAllRoleCodeApi } from "@/common/api"; |
11 | 17 | import { CommonUseType } from "@/common/utils"; |
12 | -import FeeweeFilterOption from '@/pages/notice/components/FeeweeFilterOption'; | |
18 | +import FeeweeFilterOption from "@/pages/notice/components/FeeweeFilterOption"; | |
19 | +import { EnumRoleRangeType } from "@/pages/admin/Role/entity"; | |
13 | 20 | |
14 | 21 | interface ValueVO { |
15 | 22 | type?: number; // 1 全部 2 部分 |
16 | - list?: { value?: string; label?: string }[]; | |
23 | + list?: { value?: string; label?: string; authRange?: string; }[]; | |
17 | 24 | } |
18 | 25 | |
19 | 26 | interface Props { |
... | ... | @@ -26,25 +33,43 @@ interface Props { |
26 | 33 | useFilter?: boolean; // 是否用作筛选 |
27 | 34 | } |
28 | 35 | |
36 | +export interface RangeRoleSelectorRef { | |
37 | + setIncludesPreSale: (includesPreSale: boolean) => void; | |
38 | +} | |
39 | + | |
29 | 40 | /** |
30 | 41 | * @description: 根据授权查询角色选择器-适用于表单 |
31 | 42 | */ |
32 | -export default function StandardAuthRoleSelector({ | |
33 | - value, | |
34 | - onChange, | |
35 | - style, | |
36 | - disabled = false, | |
37 | - mode, | |
38 | - labelInValue, | |
39 | - useFilter, | |
40 | -}: Props) { | |
43 | +export default forwardRef(StandardAuthRoleSelector); | |
44 | + | |
45 | +function StandardAuthRoleSelector( | |
46 | + { | |
47 | + value, | |
48 | + onChange, | |
49 | + style, | |
50 | + disabled = false, | |
51 | + mode, | |
52 | + labelInValue, | |
53 | + useFilter, | |
54 | + }: Props, | |
55 | + ref: Ref<RangeRoleSelectorRef> | |
56 | +) { | |
57 | + const [includesPreSale, setIncludesPreSale] = useState(false); | |
41 | 58 | const { data } = useInitail(getAllRoleCodeApi, [], { roleType: 2 }); |
42 | 59 | const roleList = useMemo( |
43 | - () => data.filter((role) => [CommonUseType.业务, CommonUseType.管理].includes(role.useType!) | |
60 | + () => data.filter((role) => ([CommonUseType.业务, CommonUseType.管理].includes(role.useType!) && | |
61 | + includesPreSale | |
62 | + ? role.authRange?.includes("" + EnumRoleRangeType.展厅) || | |
63 | + role.authRange?.includes("" + EnumRoleRangeType.二手车店) | |
64 | + : true) | |
44 | 65 | ), |
45 | - [data] | |
66 | + [data, includesPreSale] | |
46 | 67 | ); |
47 | 68 | |
69 | + useImperativeHandle(ref, () => ({ | |
70 | + setIncludesPreSale, | |
71 | + })); | |
72 | + | |
48 | 73 | return !useFilter ? ( |
49 | 74 | <div style={style}> |
50 | 75 | <Radio.Group |
... | ... | @@ -70,12 +95,19 @@ export default function StandardAuthRoleSelector({ |
70 | 95 | value={value?.list} |
71 | 96 | showSearch |
72 | 97 | optionFilterProp="children" |
73 | - onChange={(list) => onChange && onChange({ type: value?.type, list })} | |
98 | + onChange={(selected, list: any) => { | |
99 | + onChange && onChange({ type: value?.type, list }); | |
100 | + }} | |
74 | 101 | style={{ flex: 1, width: "100%" }} |
75 | 102 | getPopupContainer={(triggerNode) => triggerNode.parentNode} |
76 | 103 | > |
77 | 104 | {(roleList || []).map((role) => ( |
78 | - <Select.Option key={role.roleCode} value={role.roleCode!}> | |
105 | + <Select.Option | |
106 | + key={role.roleCode} | |
107 | + value={role.roleCode!} | |
108 | + label={role.roleName} | |
109 | + authRange={role.authRange} | |
110 | + > | |
79 | 111 | {role.roleName} |
80 | 112 | </Select.Option> |
81 | 113 | ))} | ... | ... |