Commit 43dc180b28eee9d199842a49093c08484d2451d2
1 parent
1faf485d
修改审核
Showing
11 changed files
with
168 additions
and
31 deletions
src/api/project/invoice.ts
... | ... | @@ -11,6 +11,7 @@ enum Api { |
11 | 11 | UPDATE_AMOUNT = '/order/erp/invoice_bill/update_amount_info', //更新其他金额信息 |
12 | 12 | INVOICE_DELETE = '/order/erp/invoice_bill/delete_by_id', //删除数据 |
13 | 13 | COMMIT = '/order/erp/invoice_bill/commit_apply', //提交审核 |
14 | + GETINVOICEDEDUCTURL_BY_ID = '/order/erp/invoice_bill/getDeductUrl_by_id', //获取扣款信息 | |
14 | 15 | |
15 | 16 | PRODUCT_CREATE = '/order/erp/check_bill/create', //创建生产科应付单据 |
16 | 17 | PAYED_DATE = '/order/erp/check_bill/get_payed_date', //获取生产科应回款日期 |
... | ... | @@ -163,6 +164,13 @@ export const exportCheckAnalysis = async (params: any) => { |
163 | 164 | }); |
164 | 165 | }; |
165 | 166 | |
167 | +export const getInvoiceDeductUrlById = async (params: any) => { | |
168 | + return await defHttp.post<any>({ | |
169 | + url: Api.GETINVOICEDEDUCTURL_BY_ID, | |
170 | + params, | |
171 | + }); | |
172 | +}; | |
173 | + | |
166 | 174 | export const getDeductUrlById = async (params: any) => { |
167 | 175 | return await defHttp.post<any>({ |
168 | 176 | url: Api.GETDEDUCTURL_BY_ID, | ... | ... |
src/views/project/approve/PayPanel.vue
... | ... | @@ -46,6 +46,7 @@ |
46 | 46 | :showOkBtn="!isApproved && role === ROLE.ADMIN" |
47 | 47 | > |
48 | 48 | <Description |
49 | + v-if="!mockData.invoiceName" | |
49 | 50 | class="mt-4" |
50 | 51 | layout="vertical" |
51 | 52 | :collapseOptions="{ canExpand: true, helpMessage: 'help me' }" |
... | ... | @@ -53,6 +54,13 @@ |
53 | 54 | :data="mockData" |
54 | 55 | :schema="schema" |
55 | 56 | /> |
57 | + <a | |
58 | + v-if="mockData.invoiceName" | |
59 | + :href="mockData.invoiceUrl" | |
60 | + target="_blank" | |
61 | + rel="noopener noreferrer" | |
62 | + >{{ mockData.invoiceName }}</a | |
63 | + > | |
56 | 64 | <template #appendFooter> |
57 | 65 | <a-button v-if="!isApproved && role === ROLE.ADMIN" @click="handleFalse"> 不通过</a-button> |
58 | 66 | </template> |
... | ... | @@ -97,6 +105,7 @@ |
97 | 105 | const fieldInfos = ref({}); |
98 | 106 | const baseInfos = ref({}); |
99 | 107 | const id = ref(''); |
108 | + const showInvoice = ref(false); | |
100 | 109 | |
101 | 110 | const mockData = ref(); |
102 | 111 | const actualPayCalculate = ref(0); |
... | ... | @@ -154,9 +163,9 @@ |
154 | 163 | customRender: (column) => { |
155 | 164 | const { record } = column || {}; |
156 | 165 | if (record?.type === 40) { |
157 | - return '生产科应付款'; | |
166 | + return '应付帐单申请'; | |
158 | 167 | } else if (record?.type == 50) { |
159 | - return '生产科发票'; | |
168 | + return '生产科发票申请'; | |
160 | 169 | } |
161 | 170 | }, |
162 | 171 | }, |
... | ... | @@ -166,8 +175,11 @@ |
166 | 175 | width: 150, |
167 | 176 | customRender: (column) => { |
168 | 177 | const { record } = column || {}; |
169 | - console.log(record, '56565repro'); | |
170 | - return record?.fieldInfos?.checkBillOrderDO?.deductDept; | |
178 | + if (record?.type === 40) { | |
179 | + return record?.fieldInfos?.checkBillOrderDO?.deductDept; | |
180 | + } else if (record?.type == 50) { | |
181 | + return record?.fieldInfos?.checkBillOrderDO?.productionName; | |
182 | + } | |
171 | 183 | }, |
172 | 184 | }, |
173 | 185 | ]; |
... | ... | @@ -190,7 +202,7 @@ |
190 | 202 | |
191 | 203 | const [registerTable, { reload }] = useTable({ |
192 | 204 | api: props.isApproved ? getApprovedListApi : getWaitListApi, |
193 | - searchInfo: { type: 40 }, | |
205 | + searchInfo: { type: 4050 }, | |
194 | 206 | // scroll: { |
195 | 207 | // scrollToFirstRowOnChange: true, |
196 | 208 | // }, |
... | ... | @@ -231,8 +243,18 @@ |
231 | 243 | function handleProfitModal() {} |
232 | 244 | |
233 | 245 | async function handleDetail(data) { |
246 | + if (data.type == 50) { | |
247 | + showInvoice.value = true; | |
248 | + } | |
234 | 249 | openModal(true, { data }); |
235 | 250 | mockData.value = data.fieldInfos.checkBillOrderDO; |
251 | + const match = mockData.value.invoiceUrl.match(/aliyuncs\.com\/(.*?)\?/); | |
252 | + if (match && match[1]) { | |
253 | + // 对提取的部分进行解码 | |
254 | + mockData.value.invoiceName = decodeURIComponent(match[1]); | |
255 | + } else { | |
256 | + mockData.value.invoiceName = mockData.value.invoiceUrl; | |
257 | + } | |
236 | 258 | id.value = data.id; |
237 | 259 | } |
238 | 260 | |
... | ... | @@ -289,6 +311,7 @@ |
289 | 311 | handlePreview, |
290 | 312 | mockData, |
291 | 313 | schema, |
314 | + showInvoice, | |
292 | 315 | }; |
293 | 316 | }, |
294 | 317 | }); | ... | ... |
src/views/project/approve/ReceivePanel.vue
... | ... | @@ -140,7 +140,6 @@ |
140 | 140 | dataIndex: 'invoiceNo', |
141 | 141 | width: 150, |
142 | 142 | customRender: (column) => { |
143 | - console.log(column, '5656coapprove'); | |
144 | 143 | const { record } = column || {}; |
145 | 144 | return record?.fieldInfos?.invoiceBillOrderDO?.invoiceNo; |
146 | 145 | }, |
... | ... | @@ -226,7 +225,6 @@ |
226 | 225 | async function handleDetail(data) { |
227 | 226 | openModal(true, { data }); |
228 | 227 | mockData.value = data.fieldInfos.invoiceBillOrderDO; |
229 | - console.log(data, 5656777); | |
230 | 228 | id.value = data.id; |
231 | 229 | } |
232 | 230 | ... | ... |
src/views/project/finance/pay/pay.data.tsx
... | ... | @@ -77,7 +77,7 @@ export const columns: BasicColumn[] = [ |
77 | 77 | { |
78 | 78 | title: '生产科实际应付金额', |
79 | 79 | dataIndex: 'actualPayedAmount', |
80 | - width: 120, | |
80 | + width: 150, | |
81 | 81 | }, |
82 | 82 | { |
83 | 83 | title: '生产科发票上传', |
... | ... | @@ -106,19 +106,16 @@ export const columns: BasicColumn[] = [ |
106 | 106 | dataIndex: 'actualPayedAmount3', |
107 | 107 | width: 120, |
108 | 108 | }, |
109 | - //需修改 | |
110 | 109 | { |
111 | - title: '生产科发票', | |
112 | - dataIndex: 'invoiceStatus', | |
110 | + title: '生产科发票审核', | |
111 | + dataIndex: 'departmentInvoiceStatus', | |
113 | 112 | width: 120, |
114 | 113 | customRender: (column) => { |
115 | - if (column.record.invoiceStatus == -1) { | |
116 | - return '未提交审核'; | |
117 | - } else if (column.record.invoiceStatus == 0) { | |
114 | + if (column.record.departmentInvoiceStatus == 0) { | |
118 | 115 | return '待审核'; |
119 | - } else if (column.record.invoiceStatus == 1) { | |
116 | + } else if (column.record.departmentInvoiceStatus == 10) { | |
120 | 117 | return '审核通过'; |
121 | - } else if (column.record.invoiceStatus == 2) { | |
118 | + } else if (column.record.departmentInvoiceStatus == 20) { | |
122 | 119 | return '审核驳回'; |
123 | 120 | } |
124 | 121 | }, |
... | ... | @@ -132,9 +129,9 @@ export const columns: BasicColumn[] = [ |
132 | 129 | return '未提交审核'; |
133 | 130 | } else if (column.record.status == 0) { |
134 | 131 | return '待审核'; |
135 | - } else if (column.record.status == 1) { | |
132 | + } else if (column.record.status == 10) { | |
136 | 133 | return '审核通过'; |
137 | - } else if (column.record.status == 2) { | |
134 | + } else if (column.record.status == 20) { | |
138 | 135 | return '审核驳回'; |
139 | 136 | } |
140 | 137 | }, | ... | ... |
src/views/project/finance/receive/DeductShow.vue
0 → 100644
1 | +<template> | |
2 | + <BasicModal | |
3 | + v-bind="$attrs" | |
4 | + @register="register" | |
5 | + title="扣款单" | |
6 | + width="700px" | |
7 | + :bodyStyle="{ height: '240px' }" | |
8 | + @ok="handleOk" | |
9 | + > | |
10 | + <a-list item-layout="horizontal" :data-source="itemArray"> | |
11 | + <template #renderItem="{ item }"> | |
12 | + <a-list-item> | |
13 | + <a-list-item-meta> | |
14 | + <template #title> | |
15 | + <a :href="item.url" target="_blank" rel="noopener noreferrer">{{ item.name }}</a> | |
16 | + </template> | |
17 | + </a-list-item-meta> | |
18 | + </a-list-item> | |
19 | + </template> | |
20 | + </a-list> | |
21 | + </BasicModal> | |
22 | +</template> | |
23 | +<script lang="ts" setup> | |
24 | + import { BasicModal, useModalInner } from '@/components/Modal'; | |
25 | + import { computed, ref } from 'vue'; | |
26 | + import type { UploadProps, UploadChangeParam } from 'ant-design-vue'; | |
27 | + import { InboxOutlined } from '@ant-design/icons-vue'; | |
28 | + import { message } from 'ant-design-vue'; | |
29 | + import { getInvoiceDeductUrlById } from '@/api/project/invoice'; | |
30 | + | |
31 | + interface Item { | |
32 | + name: string; | |
33 | + url: string; | |
34 | + } | |
35 | + | |
36 | + const list = ref(); | |
37 | + const id = ref(); | |
38 | + const itemArray = ref<Item[]>([]); | |
39 | + | |
40 | + const [register, { closeModal }] = useModalInner(async (data) => { | |
41 | + itemArray.value = []; | |
42 | + const res = await getInvoiceDeductUrlById({ id: data.data.id }); | |
43 | + console.log(res, '5656resssdata'); | |
44 | + for (let item in res) { | |
45 | + const url = res[item]; | |
46 | + const name = item; | |
47 | + // 将 name 和 url 放入对象并添加到数组中 | |
48 | + itemArray.value.push({ name, url }); | |
49 | + } | |
50 | + }); | |
51 | + | |
52 | + async function handleOk() { | |
53 | + itemArray.value = []; | |
54 | + closeModal(); | |
55 | + } | |
56 | +</script> | ... | ... |
src/views/project/finance/receive/index.vue
... | ... | @@ -12,6 +12,7 @@ |
12 | 12 | <InvoiceAnalysis @register="registerInvoiceAnalysis" /> |
13 | 13 | <TrackEdit @register="registerTrackEdit" @success="handleSuccess" /> |
14 | 14 | <InvoiceDetail @register="registerInvoiceDetail" /> |
15 | + <DeductShow @register="registerDeductShow" /> | |
15 | 16 | </template> |
16 | 17 | <template #bodyCell="{ column, record }"> |
17 | 18 | <template v-if="column.key === 'action'"> |
... | ... | @@ -39,6 +40,10 @@ |
39 | 40 | label: '删除', |
40 | 41 | onClick: handleDelete.bind(null, record), |
41 | 42 | }, |
43 | + { | |
44 | + label: '扣款单', | |
45 | + onClick: handleDeductShow.bind(null, record), | |
46 | + }, | |
42 | 47 | ]" |
43 | 48 | /> |
44 | 49 | </template> |
... | ... | @@ -54,6 +59,7 @@ |
54 | 59 | import TrackEdit from './TrackEdit.vue'; |
55 | 60 | import InvoiceAnalysis from './InvoiceAnalysis.vue'; |
56 | 61 | import InvoiceDetail from './InvoiceDetail.vue'; |
62 | + import DeductShow from './DeductShow.vue'; | |
57 | 63 | import { useDrawer } from '/@/components/Drawer'; |
58 | 64 | import { getInvoice, deleteInvoice, commit, getBaseInvoice } from '@/api/project/invoice'; |
59 | 65 | import { useModal } from '/@/components/Modal'; |
... | ... | @@ -68,6 +74,7 @@ |
68 | 74 | const [registerFinanceEdit, { openDrawer: openFinanceEdit }] = useDrawer(); |
69 | 75 | const [registerTrackEdit, { openDrawer: openTrackEdit }] = useDrawer(); |
70 | 76 | const [registerInvoiceDetail, { openDrawer: openInvoiceDetail }] = useDrawer(); |
77 | + const [registerDeductShow, { openModal: openDeductShow }] = useModal(); | |
71 | 78 | const checkedKeys = ref<Array<string | number>>([]); |
72 | 79 | const userStore = useUserStoreWithOut(); |
73 | 80 | const user = userStore.getUserInfo; |
... | ... | @@ -214,6 +221,11 @@ |
214 | 221 | reload(); |
215 | 222 | }, 50); |
216 | 223 | } |
224 | + function handleDeductShow(record) { | |
225 | + openDeductShow(true, { | |
226 | + data: record, | |
227 | + }); | |
228 | + } | |
217 | 229 | function handleCommit(record) { |
218 | 230 | commit({ id: record.id }); |
219 | 231 | setTimeout(() => { | ... | ... |
src/views/project/finance/receive/receive.data.tsx
... | ... | @@ -71,7 +71,8 @@ export const columns: BasicColumn[] = [ |
71 | 71 | if (deductUrl == undefined) { |
72 | 72 | return; |
73 | 73 | } |
74 | - return <FilePptOutlined style="font-size:25px" onClick={() => window.open(deductUrl)} />; | |
74 | + // return <FilePptOutlined style="font-size:25px" onClick={() => window.open(deductUrl[0])} />; | |
75 | + return <FilePptOutlined style="font-size:25px" />; | |
75 | 76 | }, |
76 | 77 | }, |
77 | 78 | { |
... | ... | @@ -108,9 +109,9 @@ export const columns: BasicColumn[] = [ |
108 | 109 | return '未提交审核'; |
109 | 110 | } else if (column.record.status == 0) { |
110 | 111 | return '待审核'; |
111 | - } else if (column.record.status == 1) { | |
112 | + } else if (column.record.status == 10) { | |
112 | 113 | return '审核通过'; |
113 | - } else if (column.record.status == 2) { | |
114 | + } else if (column.record.status == 20) { | |
114 | 115 | return '审核驳回'; |
115 | 116 | } |
116 | 117 | }, | ... | ... |
src/views/project/order/ExportModal.vue
... | ... | @@ -112,7 +112,13 @@ |
112 | 112 | ]; |
113 | 113 | } |
114 | 114 | |
115 | - // 质检不能导出任何 | |
115 | + if (props.role === ROLE.INSPECT) { | |
116 | + return [ | |
117 | + { label: '基本信息', value: 'baseFields' }, | |
118 | + { label: '质检信息', value: 'inspectionStageFields' }, | |
119 | + ]; | |
120 | + } | |
121 | + | |
116 | 122 | return [ |
117 | 123 | { label: '基本信息', value: 'baseFields' }, |
118 | 124 | { label: '质检信息', value: 'inspectionStageFields' }, | ... | ... |
src/views/project/order/ProductProfit.vue
... | ... | @@ -145,11 +145,15 @@ |
145 | 145 | const projectNo = ref(); // 项目号 |
146 | 146 | const projectStartTime = ref(); // 项目开发开始时间 |
147 | 147 | const filteredItems = ref(); |
148 | + const ids = ref(); | |
148 | 149 | |
149 | 150 | const [register, { closeModal }] = useModalInner(async (data) => { |
150 | 151 | res.value = data.data; |
151 | 152 | customerCode.value = data.customerCode[0][0]; |
152 | - projectNo.value = data.projectNo[0][0]; | |
153 | + const extractedValues = ref<string[]>(data.projectNo.map((item) => item[0])); | |
154 | + projectNo.value = extractedValues.value; | |
155 | + ids.value = data.data; | |
156 | + console.log(data.projectNo, '5656projectNo'); | |
153 | 157 | console.log(Input2.value, 565656); |
154 | 158 | filteredItems.value = data.filteredItems; |
155 | 159 | }); |
... | ... | @@ -160,6 +164,7 @@ |
160 | 164 | { |
161 | 165 | customerCode: customerCode.value, |
162 | 166 | projectNo: projectNo.value, |
167 | + ids: ids.value, | |
163 | 168 | projectStartTime: projectStartTime.value, |
164 | 169 | projectEndTime: projectEndTime.value, |
165 | 170 | productionDepartmentPredictPrice: productionDepartmentPredictPrice.value, |
... | ... | @@ -206,6 +211,8 @@ |
206 | 211 | projectEndTime.value = null; |
207 | 212 | productionDepartmentPredictPrice.value = null; |
208 | 213 | productionActualPrice.value = null; |
214 | + projectNo.value = null; | |
215 | + ids.value = null; | |
209 | 216 | } |
210 | 217 | } |
211 | 218 | function formatDateTime(dateTime: string): string { |
... | ... | @@ -218,6 +225,7 @@ |
218 | 225 | const res = await calculateInnerProfitRatio({ |
219 | 226 | customerCode: customerCode.value, |
220 | 227 | projectNo: projectNo.value, |
228 | + ids: ids.value, | |
221 | 229 | projectStartTime: projectStartTime.value, |
222 | 230 | projectEndTime: projectEndTime.value, |
223 | 231 | productionDepartmentPredictPrice: productionDepartmentPredictPrice.value, | ... | ... |
src/views/project/order/ServiceProfit.vue
... | ... | @@ -147,6 +147,20 @@ |
147 | 147 | <td style="border: 1px solid black"></td> |
148 | 148 | </tr> |
149 | 149 | <tr> |
150 | + <td style="border: 1px solid black" colspan="2">实际汇率</td> | |
151 | + <td style="border: 1px solid black" | |
152 | + ><a-input v-model:value="actualRatio" placeholder="请输入" | |
153 | + /></td> | |
154 | + <td style="border: 1px solid black"></td> | |
155 | + </tr> | |
156 | + <tr> | |
157 | + <td style="border: 1px solid black" colspan="2">实际跟单费用</td> | |
158 | + <td style="border: 1px solid black" | |
159 | + ><a-input v-model:value="actualdocumentaryPrice" placeholder="请输入" | |
160 | + /></td> | |
161 | + <td style="border: 1px solid black"></td> | |
162 | + </tr> | |
163 | + <tr> | |
150 | 164 | <td style="border: 1px solid black" colspan="2">实际跟单单价=实际跟单费用/件数</td> |
151 | 165 | <td style="border: 1px solid black">{{ actualRmbPrice }}</td> |
152 | 166 | <td style="border: 1px solid black"></td> |
... | ... | @@ -203,8 +217,9 @@ |
203 | 217 | const chinaRatio = ref(0); |
204 | 218 | const actualRmbPrice = ref(0); //实际跟单单价 |
205 | 219 | const actualPrice = ref(0); //实际跟单单价折算美金 |
206 | - const actualRatio = ref(6.2); //实际汇率 | |
220 | + const actualRatio = ref(); //实际汇率 | |
207 | 221 | const customerTotalPrice = ref(); //客户总价合计 |
222 | + const actualdocumentaryPrice = ref(); //实际跟单费用 | |
208 | 223 | const actualRatioProfitPrice = ref(); //汇率收益 |
209 | 224 | const grossProfit = ref(); //毛利润合计 |
210 | 225 | const actualRatiactualRatioProfitPriceo = ref(); //汇率收益计算 |
... | ... | @@ -218,6 +233,7 @@ |
218 | 233 | const productionDepartmentTotalPrice = ref(); //生成科总价¥ |
219 | 234 | const totalProfitPrice = ref(); //综合收益计算 |
220 | 235 | const spainRatioProfitPrice = ref(); //西班牙提成金额 |
236 | + const ids = ref(); | |
221 | 237 | |
222 | 238 | // const orderRes = await getOrderList({}); |
223 | 239 | // console.log(orderRes, '5656orderRes'); |
... | ... | @@ -225,7 +241,9 @@ |
225 | 241 | res.value = data.data; |
226 | 242 | orderList.value = data.res; |
227 | 243 | customerCode.value = data.customerCode[0][0]; |
228 | - projectNo.value = data.projectNo[0][0]; | |
244 | + ids.value = data.data; | |
245 | + const extractedValues = ref<string[]>(data.projectNo.map((item) => item[0])); | |
246 | + projectNo.value = extractedValues.value; | |
229 | 247 | console.log(orderList.value, 565656); |
230 | 248 | }); |
231 | 249 | async function handleOk() { |
... | ... | @@ -235,11 +253,13 @@ |
235 | 253 | { |
236 | 254 | customerCode: customerCode.value, |
237 | 255 | projectNo: projectNo.value, |
256 | + ids: ids.value, | |
238 | 257 | projectStartTime: projectStartTime.value, |
239 | 258 | projectEndTime: projectEndTime.value, |
240 | 259 | produceStartTime: produceStartTime.value, |
241 | 260 | produceEndTime: produceEndTime.value, |
242 | 261 | developTotalPrice: developTotalPrice.value, |
262 | + actualdocumentaryPrice: actualdocumentaryPrice.value, | |
243 | 263 | copyTotalPrice: copyTotalPrice.value, |
244 | 264 | spainRatio: spainRatio.value, |
245 | 265 | chinaRatio: chinaRatio.value, |
... | ... | @@ -291,7 +311,9 @@ |
291 | 311 | produceEndTime.value = null; |
292 | 312 | customerCode.value = null; |
293 | 313 | projectNo.value = null; |
314 | + ids.value = null; | |
294 | 315 | developTotalPrice.value = null; |
316 | + actualdocumentaryPrice.value = null; | |
295 | 317 | copyTotalPrice.value = null; |
296 | 318 | packetActualTotalPrice.value = null; |
297 | 319 | } |
... | ... | @@ -340,11 +362,13 @@ |
340 | 362 | const params = { |
341 | 363 | customerCode: customerCode.value, |
342 | 364 | projectNo: projectNo.value, |
365 | + ids: ids.value, | |
343 | 366 | projectStartTime: projectStartTime.value, |
344 | 367 | projectEndTime: projectEndTime.value, |
345 | 368 | produceStartTime: produceStartTime.value, |
346 | 369 | produceEndTime: produceEndTime.value, |
347 | 370 | developTotalPrice: developTotalPrice.value, |
371 | + actualdocumentaryPrice: actualdocumentaryPrice.value, | |
348 | 372 | copyTotalPrice: copyTotalPrice.value, |
349 | 373 | spainRatio: spainRatio.value, |
350 | 374 | chinaRatio: chinaRatio.value, |
... | ... | @@ -357,11 +381,13 @@ |
357 | 381 | const res = await calculateBusinessProfit({ |
358 | 382 | customerCode: customerCode.value, |
359 | 383 | projectNo: projectNo.value, |
384 | + ids: ids.value, | |
360 | 385 | projectStartTime: projectStartTime.value, |
361 | 386 | projectEndTime: projectEndTime.value, |
362 | 387 | produceStartTime: produceStartTime.value, |
363 | 388 | produceEndTime: produceEndTime.value, |
364 | 389 | developTotalPrice: developTotalPrice.value, |
390 | + actualdocumentaryPrice: actualdocumentaryPrice.value, | |
365 | 391 | copyTotalPrice: copyTotalPrice.value, |
366 | 392 | spainRatio: spainRatio.value, |
367 | 393 | chinaRatio: chinaRatio.value, | ... | ... |
src/views/project/order/index.vue
... | ... | @@ -155,12 +155,14 @@ |
155 | 155 | :style="{ borderRadius: '5px 5px 5px 5px' }" |
156 | 156 | type="primary" |
157 | 157 | @click="handleProductProfitModal" |
158 | + v-if="role === ROLE.ADMIN || role === ROLE.FINANCE" | |
158 | 159 | >内部生产净利润分析</a-button |
159 | 160 | > |
160 | 161 | <a-button |
161 | 162 | :style="{ borderRadius: '5px 5px 5px 5px' }" |
162 | 163 | type="primary" |
163 | 164 | @click="handleServiceProfitModal" |
165 | + v-if="role === ROLE.ADMIN || role === ROLE.FINANCE" | |
164 | 166 | >业务/研发净利润分析</a-button |
165 | 167 | > |
166 | 168 | <a-button |
... | ... | @@ -177,7 +179,6 @@ |
177 | 179 | v-if="role === ROLE.ADMIN" |
178 | 180 | >比重计算</a-button |
179 | 181 | > |
180 | - <!-- 质检角色不能导出任何信息 --> | |
181 | 182 | <a-button |
182 | 183 | :style="{ borderRadius: '5px 5px 5px 5px' }" |
183 | 184 | type="primary" |
... | ... | @@ -186,7 +187,8 @@ |
186 | 187 | role === ROLE.ADMIN || |
187 | 188 | role === ROLE.TRACKER || |
188 | 189 | role === ROLE.BUSINESS || |
189 | - role === ROLE.FINANCE | |
190 | + role === ROLE.FINANCE || | |
191 | + role === ROLE.INSPECT | |
190 | 192 | " |
191 | 193 | >导出</a-button |
192 | 194 | > |
... | ... | @@ -990,10 +992,10 @@ |
990 | 992 | error('勾选订单的客户编码需一致'); |
991 | 993 | return; |
992 | 994 | } |
993 | - if (selectedProjectNos.value.length > 1) { | |
994 | - error('勾选订单的项目号需一致'); | |
995 | - return; | |
996 | - } | |
995 | + // if (selectedProjectNos.value.length > 1) { | |
996 | + // error('勾选订单的项目号需一致'); | |
997 | + // return; | |
998 | + // } | |
997 | 999 | const form = getForm(); |
998 | 1000 | const values = form.getFieldsValue(); |
999 | 1001 | const resAll = await getOrderList({}); | ... | ... |