Commit 43dc180b28eee9d199842a49093c08484d2451d2

Authored by boyang
1 parent 1faf485d

修改审核

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({});