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