Commit e91e3b37eb9f8156765847d41d1d49c1f3b6c339

Authored by boyang
1 parent 47b3c41c

修改打开图片bug

src/api/project/invoice.ts
@@ -25,6 +25,7 @@ enum Api { @@ -25,6 +25,7 @@ enum Api {
25 CHECK_ANALYSIS = '/order/erp/check_bill/list_analysis_by', //分析列表 25 CHECK_ANALYSIS = '/order/erp/check_bill/list_analysis_by', //分析列表
26 EXPORT_CHECK_ANALYSIS = '/order/erp/check_bill/export', //导出分析列表 26 EXPORT_CHECK_ANALYSIS = '/order/erp/check_bill/export', //导出分析列表
27 GETDEDUCTURL_BY_ID = '/order/erp/check_bill/getDeductUrl_by_id', //获取扣款信息 27 GETDEDUCTURL_BY_ID = '/order/erp/check_bill/getDeductUrl_by_id', //获取扣款信息
  28 + GETINVOICEURL_BY_ID = '/order/erp/check_bill/getInvoiceUrl_by_id', //获取扣款信息
28 } 29 }
29 30
30 export const getRefundDate = async (params: any, data?: any) => { 31 export const getRefundDate = async (params: any, data?: any) => {
@@ -177,3 +178,10 @@ export const getDeductUrlById = async (params: any) => { @@ -177,3 +178,10 @@ export const getDeductUrlById = async (params: any) => {
177 params, 178 params,
178 }); 179 });
179 }; 180 };
  181 +
  182 +export const getInvoiceUrlById = async (params: any) => {
  183 + return await defHttp.post<any>({
  184 + url: Api.GETDEDUCTURL_BY_ID,
  185 + params,
  186 + });
  187 +};
src/views/project/approve/PayPanel.vue
@@ -54,13 +54,20 @@ @@ -54,13 +54,20 @@
54 :data="mockData" 54 :data="mockData"
55 :schema="schema" 55 :schema="schema"
56 /> 56 />
57 - <a  
58 - v-if="mockData.invoiceName"  
59 - :href="mockData.invoiceUrl"  
60 - target="_blank"  
61 - rel="noopener noreferrer"  
62 - >{{ mockData.invoiceName }}</a  
63 - > 57 + <a v-if="mockData.invoiceName" @click="openPic(mockData.deductUrl)" rel="noopener noreferrer">{{
  58 + mockData.invoiceName
  59 + }}</a>
  60 + <!-- <a-list item-layout="horizontal" :data-source="itemArray">
  61 + <template #renderItem="{ item }">
  62 + <a-list-item>
  63 + <a-list-item-meta>
  64 + <template #title>
  65 + <a :href="item.url" target="_blank" rel="noopener noreferrer">{{ item.name }}</a>
  66 + </template>
  67 + </a-list-item-meta>
  68 + </a-list-item>
  69 + </template>
  70 + </a-list> -->
64 <template #appendFooter> 71 <template #appendFooter>
65 <a-button v-if="!isApproved && role === ROLE.ADMIN" @click="handleFalse"> 不通过</a-button> 72 <a-button v-if="!isApproved && role === ROLE.ADMIN" @click="handleFalse"> 不通过</a-button>
66 </template> 73 </template>
@@ -108,6 +115,11 @@ @@ -108,6 +115,11 @@
108 const showInvoice = ref(false); 115 const showInvoice = ref(false);
109 116
110 const mockData = ref(); 117 const mockData = ref();
  118 + interface Item {
  119 + name: string;
  120 + url: string;
  121 + }
  122 + const itemArray = ref<Item[]>([]);
111 const actualPayCalculate = ref(0); 123 const actualPayCalculate = ref(0);
112 const schema = [ 124 const schema = [
113 { 125 {
@@ -123,8 +135,8 @@ @@ -123,8 +135,8 @@
123 label: '实际付款日期', 135 label: '实际付款日期',
124 }, 136 },
125 { 137 {
126 - field: 'totalProductionAmount',  
127 - label: '生产科总金额汇总', 138 + field: 'unPayedAmount',
  139 + label: '未付金额',
128 }, 140 },
129 { 141 {
130 field: 'totalActualPayedAmount', 142 field: 'totalActualPayedAmount',
@@ -163,7 +175,7 @@ @@ -163,7 +175,7 @@
163 customRender: (column) => { 175 customRender: (column) => {
164 const { record } = column || {}; 176 const { record } = column || {};
165 if (record?.type === 40) { 177 if (record?.type === 40) {
166 - return '应付单申请'; 178 + return '应付单申请';
167 } else if (record?.type == 50) { 179 } else if (record?.type == 50) {
168 return '生产科发票申请'; 180 return '生产科发票申请';
169 } 181 }
@@ -247,13 +259,14 @@ @@ -247,13 +259,14 @@
247 showInvoice.value = true; 259 showInvoice.value = true;
248 } 260 }
249 openModal(true, { data }); 261 openModal(true, { data });
  262 + itemArray.value = [];
250 mockData.value = data.fieldInfos.checkBillOrderDO; 263 mockData.value = data.fieldInfos.checkBillOrderDO;
251 - const match = mockData.value.invoiceUrl.match(/aliyuncs\.com\/(.*?)\?/); 264 + const match = mockData.value.deductUrl.match(/aliyuncs\.com\/(.*?)\?/);
252 if (match && match[1]) { 265 if (match && match[1]) {
253 // 对提取的部分进行解码 266 // 对提取的部分进行解码
254 mockData.value.invoiceName = decodeURIComponent(match[1]); 267 mockData.value.invoiceName = decodeURIComponent(match[1]);
255 } else { 268 } else {
256 - mockData.value.invoiceName = mockData.value.invoiceUrl; 269 + mockData.value.invoiceName = mockData.value.deductUrl;
257 } 270 }
258 id.value = data.id; 271 id.value = data.id;
259 } 272 }
@@ -290,6 +303,18 @@ @@ -290,6 +303,18 @@
290 return false; 303 return false;
291 }; 304 };
292 305
  306 + function openPic(url) {
  307 + window.open('', '', '').document.write(`<!DOCTYPE html>
  308 + <html>
  309 + <body
  310 + style="display: flex;
  311 + justify-content: center;
  312 + align-items: center;">
  313 + <img src='${url}' width="500px" height="500px"/>
  314 + </body>
  315 + </html>`);
  316 + }
  317 +
293 return { 318 return {
294 handleProfitModal, 319 handleProfitModal,
295 registerTable, 320 registerTable,
@@ -312,6 +337,7 @@ @@ -312,6 +337,7 @@
312 mockData, 337 mockData,
313 schema, 338 schema,
314 showInvoice, 339 showInvoice,
  340 + openPic,
315 }; 341 };
316 }, 342 },
317 }); 343 });
src/views/project/approve/ReceivePanel.vue
@@ -99,7 +99,7 @@ @@ -99,7 +99,7 @@
99 const mockData = ref(); 99 const mockData = ref();
100 const schema: DescItem[] = [ 100 const schema: DescItem[] = [
101 { 101 {
102 - field: 'actualReceivableAmount', 102 + field: 'totalPayAmount',
103 label: '实际收款金额汇总', 103 label: '实际收款金额汇总',
104 }, 104 },
105 { 105 {
src/views/project/config/CreateModal.vue
@@ -39,17 +39,50 @@ @@ -39,17 +39,50 @@
39 info.value = ''; 39 info.value = '';
40 }); 40 });
41 41
42 - const { customerCode: customerCodeOptions } = useOrderInfo(orderStore); 42 + const { customerCode: customerCodeOptions, productionDepartment: productDepartmentOptions } =
  43 + useOrderInfo(orderStore);
43 var [registerForm, { getFieldsValue, validate }] = useForm({ 44 var [registerForm, { getFieldsValue, validate }] = useForm({
44 labelWidth: 100, 45 labelWidth: 100,
  46 + // schemas: [
  47 + // {
  48 + // field: 'settingValue',
  49 + // component: 'Select',
  50 + // label: '客户编码',
  51 + // rules: [{ required: true }],
  52 + // componentProps: {
  53 + // options: customerCodeOptions,
  54 + // },
  55 + // colProps: {
  56 + // span: 24,
  57 + // },
  58 + // },
  59 + // {
  60 + // field: 'relationValue',
  61 + // component: 'InputNumber',
  62 + // label:
  63 + // props.column === 1
  64 + // ? '利润率'
  65 + // : props.column === 2
  66 + // ? '包装费用'
  67 + // : props.column === 5
  68 + // ? '最后回款日期'
  69 + // : props.column === 7
  70 + // ? '销售额'
  71 + // : '生产科回款日期',
  72 + // rules: [{ required: true }],
  73 + // colProps: {
  74 + // span: 24,
  75 + // },
  76 + // },
  77 + // ],
45 schemas: [ 78 schemas: [
46 { 79 {
47 field: 'settingValue', 80 field: 'settingValue',
48 component: 'Select', 81 component: 'Select',
49 - label: '客户编码', 82 + label: props.column === 8 ? '生产科' : '客户编码',
50 rules: [{ required: true }], 83 rules: [{ required: true }],
51 componentProps: { 84 componentProps: {
52 - options: customerCodeOptions, 85 + options: props.column === 8 ? productDepartmentOptions : customerCodeOptions,
53 }, 86 },
54 colProps: { 87 colProps: {
55 span: 24, 88 span: 24,
src/views/project/config/data.tsx
@@ -119,7 +119,7 @@ export const COLUMNS = { @@ -119,7 +119,7 @@ export const COLUMNS = {
119 ], 119 ],
120 8: [ 120 8: [
121 { 121 {
122 - title: '客户编码', 122 + title: '生产科',
123 dataIndex: 'settingValue', 123 dataIndex: 'settingValue',
124 width: 150, 124 width: 150,
125 }, 125 },
src/views/project/finance/pay/DeductShow.vue
@@ -12,7 +12,8 @@ @@ -12,7 +12,8 @@
12 <a-list-item> 12 <a-list-item>
13 <a-list-item-meta> 13 <a-list-item-meta>
14 <template #title> 14 <template #title>
15 - <a :href="item.url" target="_blank" rel="noopener noreferrer">{{ item.name }}</a> 15 + <!-- <a :href="item.url" target="_blank" rel="noopener noreferrer">{{ item.name }}</a> -->
  16 + <a @click="openPic(item.url)">{{ item.name }}</a>
16 </template> 17 </template>
17 </a-list-item-meta> 18 </a-list-item-meta>
18 </a-list-item> 19 </a-list-item>
@@ -52,4 +53,15 @@ @@ -52,4 +53,15 @@
52 itemArray.value = []; 53 itemArray.value = [];
53 closeModal(); 54 closeModal();
54 } 55 }
  56 + function openPic(url) {
  57 + window.open('', '', '').document.write(`<!DOCTYPE html>
  58 + <html>
  59 + <body
  60 + style="display: flex;
  61 + justify-content: center;
  62 + align-items: center;">
  63 + <img src='${url}' width="500px" height="500px"/>
  64 + </body>
  65 + </html>`);
  66 + }
55 </script> 67 </script>
src/views/project/finance/pay/InvoiceShow.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 + <a @click="openPic(item.url)">{{ item.name }}</a>
  17 + </template>
  18 + </a-list-item-meta>
  19 + </a-list-item>
  20 + </template>
  21 + </a-list>
  22 + </BasicModal>
  23 +</template>
  24 +<script lang="ts" setup>
  25 + import { BasicModal, useModalInner } from '@/components/Modal';
  26 + import { computed, ref } from 'vue';
  27 + import type { UploadProps, UploadChangeParam } from 'ant-design-vue';
  28 + import { InboxOutlined } from '@ant-design/icons-vue';
  29 + import { message } from 'ant-design-vue';
  30 + import { getDeductUrlById, getInvoiceUrlById } from '@/api/project/invoice';
  31 +
  32 + interface Item {
  33 + name: string;
  34 + url: string;
  35 + }
  36 +
  37 + const list = ref();
  38 + const id = ref();
  39 + const itemArray = ref<Item[]>([]);
  40 +
  41 + const [register, { closeModal }] = useModalInner(async (data) => {
  42 + itemArray.value = [];
  43 + const res = await getInvoiceUrlById({ id: data.data.id });
  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 + function openPic(url) {
  57 + window.open('', '', '').document.write(`<!DOCTYPE html>
  58 + <html>
  59 + <body
  60 + style="display: flex;
  61 + justify-content: center;
  62 + align-items: center;">
  63 + <img src='${url}' width="500px" height="500px"/>
  64 + </body>
  65 + </html>`);
  66 + }
  67 +</script>
src/views/project/finance/pay/index.vue
@@ -14,6 +14,7 @@ @@ -14,6 +14,7 @@
14 <InvoiceUpload @register="registerInvoiceUpload" @success="handleSuccess" /> 14 <InvoiceUpload @register="registerInvoiceUpload" @success="handleSuccess" />
15 <CheckDetail @register="registerInvoiceDetail" /> 15 <CheckDetail @register="registerInvoiceDetail" />
16 <DeductShow @register="registerDeductShow" /> 16 <DeductShow @register="registerDeductShow" />
  17 + <InvoiceShow @register="registerInvoiceShow" />
17 </template> 18 </template>
18 <template #bodyCell="{ column, record }"> 19 <template #bodyCell="{ column, record }">
19 <template v-if="column.key === 'action'"> 20 <template v-if="column.key === 'action'">
@@ -70,6 +71,7 @@ @@ -70,6 +71,7 @@
70 import CheckDetail from './CheckDetail.vue'; 71 import CheckDetail from './CheckDetail.vue';
71 import CheckSum from './CheckSum.vue'; 72 import CheckSum from './CheckSum.vue';
72 import DeductShow from './DeductShow.vue'; 73 import DeductShow from './DeductShow.vue';
  74 + import InvoiceShow from './InvoiceShow.vue';
73 import { useDrawer } from '/@/components/Drawer'; 75 import { useDrawer } from '/@/components/Drawer';
74 import { useModal } from '/@/components/Modal'; 76 import { useModal } from '/@/components/Modal';
75 import { getCheck, checkDelete, checkCommit, checkDetail } from '@/api/project/invoice'; 77 import { getCheck, checkDelete, checkCommit, checkDetail } from '@/api/project/invoice';
@@ -80,6 +82,7 @@ @@ -80,6 +82,7 @@
80 const [registerTrackEdit, { openDrawer: openTrackEdit }] = useDrawer(); 82 const [registerTrackEdit, { openDrawer: openTrackEdit }] = useDrawer();
81 const [registerInvoiceUpload, { openModal: openInvoiceUpload }] = useModal(); 83 const [registerInvoiceUpload, { openModal: openInvoiceUpload }] = useModal();
82 const [registerDeductShow, { openModal: openDeductShow }] = useModal(); 84 const [registerDeductShow, { openModal: openDeductShow }] = useModal();
  85 + const [registerInvoiceShow, { openModal: openInvoiceShow }] = useModal();
83 const [registerInvoiceDetail, { openDrawer: openCheckDetail }] = useDrawer(); 86 const [registerInvoiceDetail, { openDrawer: openCheckDetail }] = useDrawer();
84 const checkedKeys = ref<Array<string | number>>([]); 87 const checkedKeys = ref<Array<string | number>>([]);
85 88
@@ -393,7 +396,9 @@ @@ -393,7 +396,9 @@
393 }, 50); 396 }, 50);
394 } 397 }
395 function handleInvoiceShow(record) { 398 function handleInvoiceShow(record) {
396 - window.open(record.invoiceUrl); 399 + openInvoiceShow(true, {
  400 + data: record,
  401 + });
397 } 402 }
398 function handleDeductShow(record) { 403 function handleDeductShow(record) {
399 openDeductShow(true, { 404 openDeductShow(true, {
@@ -406,7 +411,14 @@ @@ -406,7 +411,14 @@
406 }); 411 });
407 } 412 }
408 function handleCommit(record) { 413 function handleCommit(record) {
409 - checkCommit({ id: record.id }); 414 + const currentDate: string = (() => {
  415 + const date = new Date();
  416 + const year = date.getFullYear();
  417 + const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始
  418 + const day = String(date.getDate()).padStart(2, '0');
  419 + return `${year}-${month}-${day}`;
  420 + })();
  421 + checkCommit({ id: record.id, actualPayedDate: currentDate });
410 setTimeout(() => { 422 setTimeout(() => {
411 reload(); 423 reload();
412 }, 50); 424 }, 50);
src/views/project/finance/receive/DeductShow.vue
@@ -12,7 +12,8 @@ @@ -12,7 +12,8 @@
12 <a-list-item> 12 <a-list-item>
13 <a-list-item-meta> 13 <a-list-item-meta>
14 <template #title> 14 <template #title>
15 - <a :href="item.url" target="_blank" rel="noopener noreferrer">{{ item.name }}</a> 15 + <!-- <a :href="item.url" target="_blank" rel="noopener noreferrer">{{ item.name }}</a> -->
  16 + <a @click="openPic(item.url)">{{ item.name }}</a>
16 </template> 17 </template>
17 </a-list-item-meta> 18 </a-list-item-meta>
18 </a-list-item> 19 </a-list-item>
@@ -53,4 +54,15 @@ @@ -53,4 +54,15 @@
53 itemArray.value = []; 54 itemArray.value = [];
54 closeModal(); 55 closeModal();
55 } 56 }
  57 + function openPic(url) {
  58 + window.open('', '', '').document.write(`<!DOCTYPE html>
  59 + <html>
  60 + <body
  61 + style="display: flex;
  62 + justify-content: center;
  63 + align-items: center;">
  64 + <img src='${url}' width="500px" height="500px"/>
  65 + </body>
  66 + </html>`);
  67 + }
56 </script> 68 </script>
src/views/project/finance/receive/FinanceEdit.vue
@@ -33,7 +33,7 @@ @@ -33,7 +33,7 @@
33 const emit = defineEmits(['success']); 33 const emit = defineEmits(['success']);
34 const schemas: FormSchema[] = [ 34 const schemas: FormSchema[] = [
35 // { 35 // {
36 - // field: 'actualReceivableAmount', 36 + // field: 'totalPayAmount',
37 // component: 'InputNumber', 37 // component: 'InputNumber',
38 // labelWidth: 250, 38 // labelWidth: 250,
39 // colProps: { 39 // colProps: {
src/views/project/finance/receive/InvoiceAnalysis.vue
@@ -54,7 +54,7 @@ @@ -54,7 +54,7 @@
54 }, 54 },
55 { 55 {
56 title: '实际收款金额汇总$', 56 title: '实际收款金额汇总$',
57 - dataIndex: 'actualReceivableAmount', 57 + dataIndex: 'totalPayAmount',
58 width: 50, 58 width: 50,
59 }, 59 },
60 { 60 {
src/views/project/finance/receive/InvoiceDetail.vue
@@ -74,12 +74,12 @@ @@ -74,12 +74,12 @@
74 { 74 {
75 title: '客户单价$', 75 title: '客户单价$',
76 width: 150, 76 width: 150,
77 - dataIndex: 'orderCount', 77 + dataIndex: 'customerPrice',
78 }, 78 },
79 { 79 {
80 title: '客户总价$', 80 title: '客户总价$',
81 width: 150, 81 width: 150,
82 - dataIndex: 'orderCount', 82 + dataIndex: 'customerTotalPrice',
83 }, 83 },
84 ]; 84 ];
85 const invoiceNo = ref(); 85 const invoiceNo = ref();
src/views/project/finance/receive/index.vue
@@ -227,7 +227,14 @@ @@ -227,7 +227,14 @@
227 }); 227 });
228 } 228 }
229 function handleCommit(record) { 229 function handleCommit(record) {
230 - commit({ id: record.id }); 230 + const currentDate: string = (() => {
  231 + const date = new Date();
  232 + const year = date.getFullYear();
  233 + const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始
  234 + const day = String(date.getDate()).padStart(2, '0');
  235 + return `${year}-${month}-${day}`;
  236 + })();
  237 + commit({ id: record.id, actualRefundDate: currentDate });
231 setTimeout(() => { 238 setTimeout(() => {
232 reload(); 239 reload();
233 }, 50); 240 }, 50);
src/views/project/finance/receive/receive.data.tsx
@@ -77,7 +77,7 @@ export const columns: BasicColumn[] = [ @@ -77,7 +77,7 @@ export const columns: BasicColumn[] = [
77 }, 77 },
78 { 78 {
79 title: '实际应收金额$', 79 title: '实际应收金额$',
80 - dataIndex: 'actualReceivableAmount', 80 + dataIndex: 'totalPayAmount',
81 width: 120, 81 width: 120,
82 }, 82 },
83 { 83 {
@@ -130,7 +130,7 @@ export const columnsAnalysis: BasicColumn[] = [ @@ -130,7 +130,7 @@ export const columnsAnalysis: BasicColumn[] = [
130 }, 130 },
131 { 131 {
132 title: '实际应收金额总计$', 132 title: '实际应收金额总计$',
133 - dataIndex: 'actualReceivableAmount', 133 + dataIndex: 'totalPayAmount',
134 width: 50, 134 width: 50,
135 }, 135 },
136 { 136 {
@@ -145,7 +145,7 @@ export const columnsAnalysis: BasicColumn[] = [ @@ -145,7 +145,7 @@ export const columnsAnalysis: BasicColumn[] = [
145 }, 145 },
146 { 146 {
147 title: '实际应收金额总计$', 147 title: '实际应收金额总计$',
148 - dataIndex: 'actualReceivableAmount', 148 + dataIndex: 'totalPayAmount',
149 width: 50, 149 width: 50,
150 }, 150 },
151 { 151 {
src/views/project/order/ProductText.vue
@@ -173,7 +173,7 @@ @@ -173,7 +173,7 @@
173 } 173 }
174 //查看pdf 174 //查看pdf
175 function handlePdf() { 175 function handlePdf() {
176 - window.open(resText.value.productionUrl); 176 + window.open(resText.value.productionUrl, '_blank');
177 } 177 }
178 //发送按钮 178 //发送按钮
179 async function handleExport() { 179 async function handleExport() {
src/views/project/order/ServiceProfit.vue
@@ -390,7 +390,7 @@ @@ -390,7 +390,7 @@
390 allList.forEach((item) => { 390 allList.forEach((item) => {
391 console.log(item, '5656orderList'); 391 console.log(item, '5656orderList');
392 console.log(item.profitAnalysisInfo.packetPrice, '5656orderList'); 392 console.log(item.profitAnalysisInfo.packetPrice, '5656orderList');
393 - packetCalculatePrice.value += item.profitAnalysisInfo.packetPrice; 393 + packetCalculatePrice.value += item?.profitAnalysisInfo?.packetPrice;
394 orderCalculateCount.value += item.orderCount; 394 orderCalculateCount.value += item.orderCount;
395 actualRmbPrice.value += packetCalculatePrice.value / orderCalculateCount.value; 395 actualRmbPrice.value += packetCalculatePrice.value / orderCalculateCount.value;
396 }); 396 });