Commit 521c8bd762a6d450d577b5dbaf0b7f301ee677aa
1 parent
32aef76f
feat: 调整权限
Showing
5 changed files
with
98 additions
and
18 deletions
README.md
@@ -7,3 +7,41 @@ vue-admin-vben | @@ -7,3 +7,41 @@ vue-admin-vben | ||
7 | 39: /home/web/qingdao-order-erp/dist | 7 | 39: /home/web/qingdao-order-erp/dist |
8 | 8 | ||
9 | 47: /order-erp/dist | 9 | 47: /order-erp/dist |
10 | + | ||
11 | +# 权限整理 | ||
12 | + | ||
13 | +### 管理员 | ||
14 | + | ||
15 | +所有按钮权限,所有订单列表展示,所有订单字段编辑 | ||
16 | + | ||
17 | +### 总监 | ||
18 | + | ||
19 | +读:基本信息,跟单,质检 | ||
20 | + | ||
21 | +写:没有权限 | ||
22 | + | ||
23 | +导出: 基本信息,跟单,质检 | ||
24 | + | ||
25 | +### 跟单员(只有自己订单) | ||
26 | + | ||
27 | +读:基本信息,利润分析(只有单价美元,客户单价,客户总价),跟单,质检 | ||
28 | + | ||
29 | +写:基本信息,跟单 | ||
30 | + | ||
31 | +导出:基本信息,利润分析(只有单价美元,客户单价,客户总价),跟单,质检 | ||
32 | + | ||
33 | +### 质检员(所有人订单) | ||
34 | + | ||
35 | +读:基本信息,跟单,质检 | ||
36 | + | ||
37 | +写:质检 | ||
38 | + | ||
39 | +导出:无导出权限 | ||
40 | + | ||
41 | +### 业务员(只有自己订单) | ||
42 | + | ||
43 | +读:所有列 | ||
44 | + | ||
45 | +写:利润分析,项目报告书 | ||
46 | + | ||
47 | +导出:基本信息,利润分析,跟单,质检 |
src/views/project/account/account.data.tsx
src/views/project/order/ExportModal.vue
@@ -67,6 +67,22 @@ | @@ -67,6 +67,22 @@ | ||
67 | }); | 67 | }); |
68 | 68 | ||
69 | const options = computed(() => { | 69 | const options = computed(() => { |
70 | + // 运营总监-基本信息,跟单,质检 | ||
71 | + if (props.role === ROLE.DATA_REPORT_USER) { | ||
72 | + return [ | ||
73 | + { label: '基本信息', value: 'baseFields' }, | ||
74 | + { label: '跟单信息', value: 'trackStageFields' }, | ||
75 | + { label: '质检信息', value: 'inspectionStageFields' }, | ||
76 | + ]; | ||
77 | + } | ||
78 | + if (props.role === ROLE.BUSINESS) { | ||
79 | + return [ | ||
80 | + { label: '基本信息', value: 'baseFields' }, | ||
81 | + { label: '利润分析', value: 'profitAnalysisFields' }, | ||
82 | + { label: '跟单信息', value: 'trackStageFields' }, | ||
83 | + { label: '质检信息', value: 'inspectionStageFields' }, | ||
84 | + ]; | ||
85 | + } | ||
70 | if (props.role === ROLE.TRACKER) { | 86 | if (props.role === ROLE.TRACKER) { |
71 | return [ | 87 | return [ |
72 | { label: '基本信息', value: 'baseFields' }, | 88 | { label: '基本信息', value: 'baseFields' }, |
@@ -75,20 +91,19 @@ | @@ -75,20 +91,19 @@ | ||
75 | { label: '质检信息', value: 'inspectionStageFields' }, | 91 | { label: '质检信息', value: 'inspectionStageFields' }, |
76 | ]; | 92 | ]; |
77 | } | 93 | } |
78 | - if (props.role === ROLE.INSPECT) { | 94 | + |
95 | + if (props.role === ROLE.ADMIN) { | ||
79 | return [ | 96 | return [ |
80 | { label: '基本信息', value: 'baseFields' }, | 97 | { label: '基本信息', value: 'baseFields' }, |
98 | + { label: '项目报告', value: 'reportFields' }, | ||
99 | + { label: '利润分析', value: 'profitAnalysisFields' }, | ||
81 | { label: '跟单信息', value: 'trackStageFields' }, | 100 | { label: '跟单信息', value: 'trackStageFields' }, |
82 | { label: '质检信息', value: 'inspectionStageFields' }, | 101 | { label: '质检信息', value: 'inspectionStageFields' }, |
83 | ]; | 102 | ]; |
84 | } | 103 | } |
85 | - return [ | ||
86 | - { label: '基本信息', value: 'baseFields' }, | ||
87 | - { label: '项目报告', value: 'reportFields' }, | ||
88 | - { label: '利润分析', value: 'profitAnalysisFields' }, | ||
89 | - { label: '跟单信息', value: 'trackStageFields' }, | ||
90 | - { label: '质检信息', value: 'inspectionStageFields' }, | ||
91 | - ]; | 104 | + |
105 | + // 质检不能导出任何 | ||
106 | + return []; | ||
92 | }); | 107 | }); |
93 | 108 | ||
94 | function handleShow(visible: boolean) { | 109 | function handleShow(visible: boolean) { |
@@ -117,9 +132,8 @@ | @@ -117,9 +132,8 @@ | ||
117 | .filter((k) => | 132 | .filter((k) => |
118 | [ | 133 | [ |
119 | 'customerPrice', | 134 | 'customerPrice', |
120 | - 'customerRmbPrice', | ||
121 | - 'customerTotalPrice', | ||
122 | - 'customerRmbTotalPrice', | 135 | + 'productionDepartmentPrice', |
136 | + 'productionDepartmentTotalPrice', | ||
123 | ].includes(k.dataIndex), | 137 | ].includes(k.dataIndex), |
124 | ) | 138 | ) |
125 | .map((item) => ({ | 139 | .map((item) => ({ |
src/views/project/order/index.vue
@@ -85,14 +85,17 @@ | @@ -85,14 +85,17 @@ | ||
85 | <a-button type="primary" @click="handleRateModal" v-if="role === ROLE.ADMIN" | 85 | <a-button type="primary" @click="handleRateModal" v-if="role === ROLE.ADMIN" |
86 | >比重计算</a-button | 86 | >比重计算</a-button |
87 | > | 87 | > |
88 | - <a-button type="primary" @click="handleExportModal">导出</a-button> | 88 | + <!-- 质检角色不能导出任何信息 --> |
89 | + <a-button type="primary" @click="handleExportModal" v-if="role !== ROLE.INSPECT" | ||
90 | + >导出</a-button | ||
91 | + > | ||
89 | <a-button type="primary" @click="handleProfitModal" v-if="role === ROLE.ADMIN" | 92 | <a-button type="primary" @click="handleProfitModal" v-if="role === ROLE.ADMIN" |
90 | >分析利润</a-button | 93 | >分析利润</a-button |
91 | > | 94 | > |
92 | <a-button | 95 | <a-button |
93 | type="primary" | 96 | type="primary" |
94 | @click="handleAdd" | 97 | @click="handleAdd" |
95 | - v-if="role === ROLE.ADMIN || role === ROLE.BUSINESS || role === ROLE.TRACKER" | 98 | + v-if="role === ROLE.ADMIN || role === ROLE.TRACKER" |
96 | >创建订单</a-button | 99 | >创建订单</a-button |
97 | > | 100 | > |
98 | </template> | 101 | </template> |
src/views/project/order/tableData.tsx
@@ -610,7 +610,7 @@ const ORDER_LIST_SCHEDULE = [ | @@ -610,7 +610,7 @@ const ORDER_LIST_SCHEDULE = [ | ||
610 | // 订单列表,也就是读权限 | 610 | // 订单列表,也就是读权限 |
611 | export function getOrderColumns(role: ROLE) { | 611 | export function getOrderColumns(role: ROLE) { |
612 | // 管理员/业务员看到所有列 | 612 | // 管理员/业务员看到所有列 |
613 | - if (role === ROLE.ADMIN || role === ROLE.BUSINESS) { | 613 | + if (role === ROLE.ADMIN) { |
614 | return [ | 614 | return [ |
615 | ...ORDER_LIST_BASE_FIELDS, | 615 | ...ORDER_LIST_BASE_FIELDS, |
616 | ...ORDER_LIST_PROFIT_FIELDS, | 616 | ...ORDER_LIST_PROFIT_FIELDS, |
@@ -620,13 +620,28 @@ export function getOrderColumns(role: ROLE) { | @@ -620,13 +620,28 @@ export function getOrderColumns(role: ROLE) { | ||
620 | ...ORDER_LIST_SCHEDULE, | 620 | ...ORDER_LIST_SCHEDULE, |
621 | ]; | 621 | ]; |
622 | } | 622 | } |
623 | - // 跟单 -基本信息-利润分析(单价,总价),跟单,质检 | 623 | + //业务员看到-基本,项目报告书,利润分析,跟单信息,质检 |
624 | + if (role === ROLE.BUSINESS) { | ||
625 | + return [ | ||
626 | + ...ORDER_LIST_BASE_FIELDS, | ||
627 | + ...ORDER_LIST_PROFIT_FIELDS, | ||
628 | + ...ORDER_LIST_REPORT_FIELDS, | ||
629 | + ...ORDER_LIST_TRACK_FIELDS, | ||
630 | + ...ORDER_LIST_INSPECT_FIELDS, | ||
631 | + ...ORDER_LIST_SCHEDULE, | ||
632 | + ]; | ||
633 | + } | ||
634 | + | ||
635 | + // 跟单 -基本信息-利润分析(单价美元,生产科单价,生产科总价),跟单,质检 | ||
624 | if (role === ROLE.TRACKER) { | 636 | if (role === ROLE.TRACKER) { |
625 | return [ | 637 | return [ |
626 | ...ORDER_LIST_BASE_FIELDS, | 638 | ...ORDER_LIST_BASE_FIELDS, |
627 | ...ORDER_LIST_PROFIT_FIELDS.map((item) => { | 639 | ...ORDER_LIST_PROFIT_FIELDS.map((item) => { |
628 | const children = item.children.filter( | 640 | const children = item.children.filter( |
629 | - (k) => k.dataIndex === 'customerPrice' || k.dataIndex === 'customerTotalPrice', | 641 | + (k) => |
642 | + k.dataIndex === 'customerPrice' || | ||
643 | + k.dataIndex === 'productionDepartmentPrice' || | ||
644 | + k.dataIndex === 'productionDepartmentTotalPrice', | ||
630 | ); | 645 | ); |
631 | item.children = children; | 646 | item.children = children; |
632 | 647 | ||
@@ -639,7 +654,17 @@ export function getOrderColumns(role: ROLE) { | @@ -639,7 +654,17 @@ export function getOrderColumns(role: ROLE) { | ||
639 | } | 654 | } |
640 | 655 | ||
641 | // 质检-基本,跟单,质检 | 656 | // 质检-基本,跟单,质检 |
642 | - if (role === ROLE.INSPECT || role === ROLE.DATA_REPORT_USER) { | 657 | + if (role === ROLE.INSPECT) { |
658 | + return [ | ||
659 | + ...ORDER_LIST_BASE_FIELDS, | ||
660 | + ...ORDER_LIST_TRACK_FIELDS, | ||
661 | + ...ORDER_LIST_INSPECT_FIELDS, | ||
662 | + ...ORDER_LIST_SCHEDULE, | ||
663 | + ]; | ||
664 | + } | ||
665 | + | ||
666 | + // 运营总监-基本,跟单,质检 | ||
667 | + if (role === ROLE.DATA_REPORT_USER) { | ||
643 | return [ | 668 | return [ |
644 | ...ORDER_LIST_BASE_FIELDS, | 669 | ...ORDER_LIST_BASE_FIELDS, |
645 | ...ORDER_LIST_TRACK_FIELDS, | 670 | ...ORDER_LIST_TRACK_FIELDS, |