From 9f9792cae8f0ba0293e2ea5dc215896a3b6c20cc Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 09 一月 2026 13:51:06 +0800
Subject: [PATCH] 浪潮 1.采购管理和其他模块取消关联
---
src/views/index.vue | 244 +++++++-------
src/views/procurementManagement/procurementLedger/index.vue | 463 ----------------------------
src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue | 230 +++++++++-----
src/views/procurementManagement/paymentEntry/index.vue | 18
4 files changed, 284 insertions(+), 671 deletions(-)
diff --git a/src/views/index.vue b/src/views/index.vue
index 67c8654..e06a40b 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -18,126 +18,126 @@
</div>
</div>
</div>
- <div class="data-cards">
- <div class="data-card sales">
- <div class="data-title">閿�鍞暟鎹�</div>
- <div class="data-num">
- <div>
- <div class="data-desc">鏈湀閿�鍞/鍏�</div>
- <div class="data-value">{{businessInfo.monthSaleMoney}}</div>
- </div>
- <div>
- <div class="data-desc">鏈紑绁ㄩ噾棰�/鍏�</div>
- <div class="data-value">{{businessInfo.monthSaleHaveMoney}}</div>
- </div>
- </div>
-
- </div>
- <div class="data-card purchase">
- <div class="data-title">閲囪喘鏁版嵁</div>
- <div class="data-num">
- <div>
- <div class="data-desc">鏈湀閲囪喘棰�/鍏�</div>
- <div class="data-value">{{businessInfo.monthPurchaseMoney}}</div>
- </div>
- <div>
- <div class="data-desc">寰呬粯娆鹃噾棰�/鍏�</div>
- <div class="data-value">{{businessInfo.monthPurchaseHaveMoney}}</div>
- </div>
- </div>
- </div>
- <div class="data-card inventory">
- <div class="data-title">搴撳瓨鏁版嵁</div>
- <div class="data-num">
- <div>
- <div class="data-desc">褰撳墠搴撳瓨鎬婚噺/浠�</div>
- <div class="data-value">{{businessInfo.inventoryNum}}</div>
- </div>
- <div>
- <div class="data-desc">浠婃棩鍏ュ簱/浠�</div>
- <div class="data-value">{{businessInfo.todayInventoryNum}}</div>
- </div>
- </div>
- </div>
- </div>
+<!-- <div class="data-cards">-->
+<!-- <div class="data-card sales">-->
+<!-- <div class="data-title">閿�鍞暟鎹�</div>-->
+<!-- <div class="data-num">-->
+<!-- <div>-->
+<!-- <div class="data-desc">鏈湀閿�鍞/鍏�</div>-->
+<!-- <div class="data-value">{{businessInfo.monthSaleMoney}}</div>-->
+<!-- </div>-->
+<!-- <div>-->
+<!-- <div class="data-desc">鏈紑绁ㄩ噾棰�/鍏�</div>-->
+<!-- <div class="data-value">{{businessInfo.monthSaleHaveMoney}}</div>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- -->
+<!-- </div>-->
+<!-- <div class="data-card purchase">-->
+<!-- <div class="data-title">閲囪喘鏁版嵁</div>-->
+<!-- <div class="data-num">-->
+<!-- <div>-->
+<!-- <div class="data-desc">鏈湀閲囪喘棰�/鍏�</div>-->
+<!-- <div class="data-value">{{businessInfo.monthPurchaseMoney}}</div>-->
+<!-- </div>-->
+<!-- <div>-->
+<!-- <div class="data-desc">寰呬粯娆鹃噾棰�/鍏�</div>-->
+<!-- <div class="data-value">{{businessInfo.monthPurchaseHaveMoney}}</div>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- <div class="data-card inventory">-->
+<!-- <div class="data-title">搴撳瓨鏁版嵁</div>-->
+<!-- <div class="data-num">-->
+<!-- <div>-->
+<!-- <div class="data-desc">褰撳墠搴撳瓨鎬婚噺/浠�</div>-->
+<!-- <div class="data-value">{{businessInfo.inventoryNum}}</div>-->
+<!-- </div>-->
+<!-- <div>-->
+<!-- <div class="data-desc">浠婃棩鍏ュ簱/浠�</div>-->
+<!-- <div class="data-value">{{businessInfo.todayInventoryNum}}</div>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- </div>-->
</div>
<!-- 鍙筹細寰呭姙浜嬮」 -->
- <div class="todo-panel">
- <div class="section-title">寰呭姙浜嬮」</div>
- <ul class="todo-list" v-if="todoList.length > 0">
- <li v-for="item in todoList" :key="item.id">
- <div style="display: flex;flex-direction: column;justify-content: space-between;width: 100%;gap: 20px">
- <div style="display: flex;justify-content: space-between;align-items: center;">
- <div class="todo-title">娴佺▼缂栧彿锛歿{item.approveId}}</div>
- <div class="todo-division">鐢宠閮ㄩ棬锛歿{item.approveDeptName}}</div>
- <div class="todo-time">{{item.approveTime}}</div>
- </div>
- <div class="todo-division">瀹℃壒浜嬬敱锛歿{item.approveReason}}</div>
- </div>
- </li>
- </ul>
- <div v-else style="text-align: center">
- 鏆傛棤鏁版嵁
- </div>
- </div>
- </div>
-
- <!-- 涓儴妯悜涓ゆ爮 -->
- <div class="dashboard-row">
- <div class="main-panel">
- <div class="section-title">瀹㈡埛鍚堝悓閲戦鍒嗘瀽</div>
- <div class="contract-summary">
- <div class="contract-info">
- <img src="../assets/images/khtitle.png" alt="" style="width: 42px"/>
- <div class="contract-card">
- <div class="contract-name">鎬诲悎鍚岄噾棰�(鍏�)</div>
- <div class="contract-meta">
- <div class="main-amount">{{sum}}</div>
- <div>鍛ㄥ悓姣�: <span class="up">{{yny}}% </span> 鏃ョ幆姣�: <span class="up">{{chain}}% </span></div>
- </div>
- </div>
- </div>
- </div>
- <div style="display: flex;align-items: center;gap: 20px;justify-content: space-evenly;height: 180px;margin-top: 20px">
- <div>
- <Echarts ref="chart" :legend="pieLegend" :chartStyle="chartStylePie"
- :series="materialPieSeries"
- :tooltip="pieTooltip"></Echarts>
- </div>
- <ul class="contract-list">
- <li v-for="item in materialPieSeries[0].data" :key="item.name">
- <div style="display: flex;align-items: center;justify-content: space-between;width: 100%">
- <div class="line" :style="{color: item.itemStyle.color}">鈼弡{item.name}}</div>
- <div style="width: 70px">{{item.rate}}%</div>
- <div>锟{item.value}}</div>
- </div>
- </li>
- </ul>
- </div>
- </div>
- <div class="main-panel">
- <div style="display: flex;justify-content: space-between;">
- <div class="section-title">搴旀敹搴斾粯缁熻</div>
-<!-- <el-radio-group v-model="radio1" size="large" @change="statisticsReceivable">-->
-<!-- <el-radio-button label="鎸夊懆" :value="1" />-->
-<!-- <el-radio-button label="鎸夋湀" :value="2" />-->
-<!-- <el-radio-button label="鎸夊搴�" :value="3" />-->
-<!-- </el-radio-group>-->
- </div>
- <Echarts ref="chart"
- :color="barColors2"
- :chartStyle="chartStyle"
- :grid="grid"
- :series="barSeries"
- :tooltip="tooltip"
- :xAxis="xAxis"
- :yAxis="yAxis"
- style="height: 260px"></Echarts>
- </div>
- </div>
+<!-- <div class="todo-panel">-->
+<!-- <div class="section-title">寰呭姙浜嬮」</div>-->
+<!-- <ul class="todo-list" v-if="todoList.length > 0">-->
+<!-- <li v-for="item in todoList" :key="item.id">-->
+<!-- <div style="display: flex;flex-direction: column;justify-content: space-between;width: 100%;gap: 20px">-->
+<!-- <div style="display: flex;justify-content: space-between;align-items: center;">-->
+<!-- <div class="todo-title">娴佺▼缂栧彿锛歿{item.approveId}}</div>-->
+<!-- <div class="todo-division">鐢宠閮ㄩ棬锛歿{item.approveDeptName}}</div>-->
+<!-- <div class="todo-time">{{item.approveTime}}</div>-->
+<!-- </div>-->
+<!-- <div class="todo-division">瀹℃壒浜嬬敱锛歿{item.approveReason}}</div>-->
+<!-- </div>-->
+<!-- </li>-->
+<!-- </ul>-->
+<!-- <div v-else style="text-align: center">-->
+<!-- 鏆傛棤鏁版嵁-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- -->
+<!-- <!– 涓儴妯悜涓ゆ爮 –>-->
+<!-- <div class="dashboard-row">-->
+<!-- <div class="main-panel">-->
+<!-- <div class="section-title">瀹㈡埛鍚堝悓閲戦鍒嗘瀽</div>-->
+<!-- <div class="contract-summary">-->
+<!-- <div class="contract-info">-->
+<!-- <img src="../assets/images/khtitle.png" alt="" style="width: 42px"/>-->
+<!-- <div class="contract-card">-->
+<!-- <div class="contract-name">鎬诲悎鍚岄噾棰�(鍏�)</div>-->
+<!-- <div class="contract-meta">-->
+<!-- <div class="main-amount">{{sum}}</div>-->
+<!-- <div>鍛ㄥ悓姣�: <span class="up">{{yny}}% </span> 鏃ョ幆姣�: <span class="up">{{chain}}% </span></div>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- <div style="display: flex;align-items: center;gap: 20px;justify-content: space-evenly;height: 180px;margin-top: 20px">-->
+<!-- <div>-->
+<!-- <Echarts ref="chart" :legend="pieLegend" :chartStyle="chartStylePie"-->
+<!-- :series="materialPieSeries"-->
+<!-- :tooltip="pieTooltip"></Echarts>-->
+<!-- </div>-->
+<!-- <ul class="contract-list">-->
+<!-- <li v-for="item in materialPieSeries[0].data" :key="item.name">-->
+<!-- <div style="display: flex;align-items: center;justify-content: space-between;width: 100%">-->
+<!-- <div class="line" :style="{color: item.itemStyle.color}">鈼弡{item.name}}</div>-->
+<!-- <div style="width: 70px">{{item.rate}}%</div>-->
+<!-- <div>锟{item.value}}</div>-->
+<!-- </div>-->
+<!-- </li>-->
+<!-- </ul>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- <div class="main-panel">-->
+<!-- <div style="display: flex;justify-content: space-between;">-->
+<!-- <div class="section-title">搴旀敹搴斾粯缁熻</div>-->
+<!--<!– <el-radio-group v-model="radio1" size="large" @change="statisticsReceivable">–>-->
+<!--<!– <el-radio-button label="鎸夊懆" :value="1" />–>-->
+<!--<!– <el-radio-button label="鎸夋湀" :value="2" />–>-->
+<!--<!– <el-radio-button label="鎸夊搴�" :value="3" />–>-->
+<!--<!– </el-radio-group>–>-->
+<!-- </div>-->
+<!-- <Echarts ref="chart"-->
+<!-- :color="barColors2"-->
+<!-- :chartStyle="chartStyle"-->
+<!-- :grid="grid"-->
+<!-- :series="barSeries"-->
+<!-- :tooltip="tooltip"-->
+<!-- :xAxis="xAxis"-->
+<!-- :yAxis="yAxis"-->
+<!-- style="height: 260px"></Echarts>-->
+<!-- </div>-->
+<!-- </div>-->
<!-- 搴曢儴妯悜涓ゆ爮 -->
- <div class="dashboard-row">
+<!-- <div class="dashboard-row">-->
<!-- <div class="main-panel">-->
<!-- <div class="section-title">璐ㄩ噺缁熻</div>-->
<!-- <div class="quality-cards">-->
@@ -155,11 +155,11 @@
<!-- :yAxis="yAxis1"-->
<!-- style="height: 260px"></Echarts>-->
<!-- </div>-->
- <div class="main-panel">
- <div class="section-title">鍥炴涓庡紑绁ㄥ垎鏋�</div>
- <Echarts ref="chart" :chartStyle="chartStyle" :grid="grid" :legend="lineLegend" :series="lineSeries"
- :tooltip="tooltipLine" :xAxis="xAxis2" :yAxis="yAxis2" style="height: 270px;"></Echarts>
- </div>
+<!-- <div class="main-panel">-->
+<!-- <div class="section-title">鍥炴涓庡紑绁ㄥ垎鏋�</div>-->
+<!-- <Echarts ref="chart" :chartStyle="chartStyle" :grid="grid" :legend="lineLegend" :series="lineSeries"-->
+<!-- :tooltip="tooltipLine" :xAxis="xAxis2" :yAxis="yAxis2" style="height: 270px;"></Echarts>-->
+<!-- </div>-->
</div>
</div>
</template>
@@ -507,7 +507,7 @@
min-width: 0;
background-color: #EFF2FB; /* 浣跨敤鎸囧畾鐨勮儗鏅鑹� */
background-image: url("../assets/images/denglu.png");
- background-size: cover;
+ background-size: 100% 260%;
background-position: center;
background-repeat: no-repeat;
border-radius: 12px;
diff --git a/src/views/procurementManagement/paymentEntry/index.vue b/src/views/procurementManagement/paymentEntry/index.vue
index 3ce2a8d..02fda1a 100644
--- a/src/views/procurementManagement/paymentEntry/index.vue
+++ b/src/views/procurementManagement/paymentEntry/index.vue
@@ -83,15 +83,12 @@
</el-table-column>
<el-table-column label="浠樻鏂瑰紡" prop="paymentMethod">
<template #default="scope">
- <el-select
+ <el-input
:disabled="!scope.row.editType"
v-model="scope.row.paymentMethod"
- placeholder="璇烽�夋嫨"
+ placeholder="璇疯緭鍏�"
clearable
- >
- <el-option label="鐢垫眹" value="鐢垫眹" />
- <el-option label="鎵垮厬" value="鎵垮厬" />
- </el-select>
+ />
</template>
</el-table-column>
<el-table-column label="鐧昏浜�" prop="registrant" />
@@ -212,14 +209,11 @@
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="浠樻鏂瑰紡锛�" prop="paymentMethod">
- <el-select
+ <el-input
v-model="form.paymentMethod"
- placeholder="璇烽�夋嫨"
+ placeholder="璇疯緭鍏�"
clearable
- >
- <el-option label="鐢垫眹" value="鐢垫眹" />
- <el-option label="鎵垮厬" value="鎵垮厬" />
- </el-select>
+ />
</el-form-item>
</el-col>
<el-col :span="12">
diff --git a/src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue b/src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue
index f939be4..6290804 100644
--- a/src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue
+++ b/src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue
@@ -1,48 +1,48 @@
<template>
- <el-form :model="form">
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="閲囪喘鍚堝悓鍙凤細">
- <el-tag size="large">{{ form.purchaseContractNumber }}</el-tag>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="閿�鍞悎鍚屽彿锛�">
- <el-text>{{ form.salesContractNo }}</el-text>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鍚◣鍗曚环(鍏�)锛�">
- <el-text type="primary">{{ form.taxInclusiveUnitPrice }}</el-text>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鍒涘缓鏃堕棿锛�">
- <el-text>{{ form.createdAt }}</el-text>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鍙戠エ鍙凤細">
- <el-input disabled v-model="form.invoiceNumber" />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鏉ョエ鏁帮細">
- <el-input-number :step="0.1" :min="0" style="width: 100%" v-model="form.ticketsNum" @change="inputTicketsNum" :precision="2"/>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鏈鏉ョエ閲戦(鍏�)锛�">
+ <el-form :model="form">
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="閲囪喘鍚堝悓鍙凤細">
+ <el-tag size="large">{{ form.purchaseContractNumber }}</el-tag>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="閿�鍞悎鍚屽彿锛�">
+ <el-text>{{ form.salesContractNo }}</el-text>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍚◣鍗曚环(鍏�)锛�">
+ <el-text type="primary">{{ form.taxInclusiveUnitPrice }}</el-text>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍒涘缓鏃堕棿锛�">
+ <el-text>{{ form.createdAt }}</el-text>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍙戠エ鍙凤細">
+ <el-input v-model="form.invoiceNumber" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鏉ョエ鏁帮細">
+ <el-input-number :step="0.1" :min="0" style="width: 100%" v-model="form.ticketsNum" @change="inputTicketsNum" :precision="2"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鏈鏉ョエ閲戦(鍏�)锛�">
<el-input-number :step="0.1" :min="0" style="width: 100%" v-model="form.ticketsAmount" @change="inputTicketsAmount" :precision="2"/>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鏈潵绁ㄦ暟锛�">
- <el-text type="success">{{ form.futureTickets }}</el-text>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鏈潵绁ㄦ暟锛�">
+ <el-text type="success">{{ form.futureTickets }}</el-text>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
</template>
<script setup>
@@ -51,34 +51,43 @@
const { proxy } = getCurrentInstance()
defineOptions({
- name: "鏉ョエ鍙拌处琛ㄥ崟",
+ name: "鏉ョエ鍙拌处琛ㄥ崟",
});
-const temFutureTickets = ref(0)
+const temFutureTickets = ref(0) // 鍒濆鏈潵绁ㄦ暟
+const initialTicketsNum = ref(0) // 鍒濆鏉ョエ鏁�
+const initialTicketsAmount = ref(0) // 鍒濆鏉ョエ閲戦
+const quantity = ref(0) // 鎬绘暟閲�
const { form, resetForm } = useFormData({
- id: undefined,
- purchaseContractNumber: undefined, // 閲囪喘鍚堝悓鍙�
- salesContractNo: undefined, // 閿�鍞悎鍚屽彿
- createdAt: undefined, // 鍒涘缓鏃堕棿
- invoiceNumber: undefined, // 鍙戠エ鍙�
- ticketsNum: undefined, // 鏉ョエ鏁�
- ticketsAmount: undefined, // 鏉ョエ閲戦
+ id: undefined,
+ purchaseContractNumber: undefined, // 閲囪喘鍚堝悓鍙�
+ salesContractNo: undefined, // 閿�鍞悎鍚屽彿
+ createdAt: undefined, // 鍒涘缓鏃堕棿
+ invoiceNumber: undefined, // 鍙戠エ鍙�
+ ticketsNum: undefined, // 鏉ョエ鏁�
+ ticketsAmount: undefined, // 鏉ョエ閲戦
taxInclusiveUnitPrice: undefined, // 鍚◣鍗曚环
+ ticketRegistrationId: undefined, // 鍚◣鍗曚环
});
const load = async (id) => {
- const { code, data } = await getProductRecordById({ id });
- if (code === 200) {
- form.id = data.id;
- form.purchaseContractNumber = data.purchaseContractNumber;
- form.salesContractNo = data.salesContractNo;
- form.createdAt = data.createdAt;
- form.invoiceNumber = data.invoiceNumber;
- form.ticketsNum = data.ticketsNum;
- form.ticketsAmount = data.ticketsAmount.toFixed(2);
- form.taxInclusiveUnitPrice = data.taxInclusiveUnitPrice;
- form.futureTickets = data.futureTickets;
- temFutureTickets.value = data.futureTickets;
- }
+ const { code, data } = await getProductRecordById({ id });
+ if (code === 200) {
+ form.id = data.id;
+ form.purchaseContractNumber = data.purchaseContractNumber;
+ form.salesContractNo = data.salesContractNo;
+ form.createdAt = data.createdAt;
+ form.invoiceNumber = data.invoiceNumber;
+ form.ticketsNum = data.ticketsNum;
+ form.ticketsAmount = data.ticketsAmount ? Number(data.ticketsAmount).toFixed(2) : 0;
+ form.taxInclusiveUnitPrice = data.taxInclusiveUnitPrice;
+ form.futureTickets = data.futureTickets;
+ temFutureTickets.value = data.futureTickets;
+ initialTicketsNum.value = data.ticketsNum || 0;
+ initialTicketsAmount.value = data.ticketsAmount || 0;
+ form.ticketRegistrationId = data.ticketRegistrationId;
+ // 鑾峰彇鎬绘暟閲忥紝濡傛灉鏁版嵁涓湁 quantity 瀛楁鍒欎娇鐢紝鍚﹀垯浣跨敤鏉ョエ鏁�+鏈潵绁ㄦ暟
+ quantity.value = data.quantity || (Number(data.ticketsNum || 0) + Number(data.futureTickets || 0));
+ }
};
const inputTicketsNum = (val) => {
@@ -87,15 +96,44 @@
proxy.$modal.msgWarning("鍚◣鍗曚环涓嶈兘涓洪浂鎴栨湭瀹氫箟");
return;
}
- if (Number(form.ticketsNum) > Number(temFutureTickets.value)) {
- proxy.$modal.msgWarning("寮�绁ㄦ暟涓嶅緱澶т簬鏈紑绁ㄦ暟");
- form.ticketsNum = temFutureTickets.value
+
+ const newTicketsNum = Number(form.ticketsNum) || 0;
+ const currentTicketsNum = Number(initialTicketsNum.value) || 0;
+
+ // 璁$畻鏂板鐨勬潵绁ㄦ暟
+ const addedTicketsNum = newTicketsNum - currentTicketsNum;
+
+ // 璁$畻鏂扮殑鏈潵绁ㄦ暟 = 鍒濆鏈潵绁ㄦ暟 - 鏂板鐨勬潵绁ㄦ暟
+ const newFutureTickets = Number(temFutureTickets.value) - addedTicketsNum;
+
+ // 楠岃瘉锛氭柊鐨勬潵绁ㄦ暟 + 鏂扮殑鏈潵绁ㄦ暟 鈮� quantity
+ if (newTicketsNum + newFutureTickets > Number(quantity.value)) {
+ proxy.$modal.msgWarning(`鏉ョエ鏁�+鏈潵绁ㄦ暟涓嶈兘澶т簬鎬绘暟閲�(${quantity.value})`);
+ // 闄愬埗鏉ョエ鏁帮紝浣垮叾婊¤冻锛氭潵绁ㄦ暟 + 鏈潵绁ㄦ暟 鈮� quantity
+ // 鏈�澶ф潵绁ㄦ暟 = quantity - 鍒濆鏈潵绁ㄦ暟 + 鍒濆鏉ョエ鏁�
+ const maxTicketsNum = Number(quantity.value) - Number(temFutureTickets.value) + Number(initialTicketsNum.value);
+ form.ticketsNum = Math.max(0, Math.min(maxTicketsNum, newTicketsNum));
+ // 閲嶆柊璁$畻
+ const recalculatedAddedTicketsNum = Number(form.ticketsNum) - Number(initialTicketsNum.value);
+ const recalculatedFutureTickets = Number(temFutureTickets.value) - recalculatedAddedTicketsNum;
+ form.futureTickets = Number(recalculatedFutureTickets.toFixed(2));
+ const ticketsAmount = Number(form.ticketsNum) * Number(form.taxInclusiveUnitPrice);
+ form.ticketsAmount = Number(ticketsAmount.toFixed(2));
+ return;
+ }
+
+ // 妫�鏌ユ柊澧炵殑鏉ョエ鏁版槸鍚﹀ぇ浜庡垵濮嬫湭鏉ョエ鏁�
+ if (addedTicketsNum > Number(temFutureTickets.value)) {
+ proxy.$modal.msgWarning("鏂板寮�绁ㄦ暟涓嶅緱澶т簬鏈紑绁ㄦ暟");
+ form.ticketsNum = Number(initialTicketsNum.value) + Number(temFutureTickets.value);
}
// 纭繚鎵�鏈夋暟鍊奸兘杞崲涓烘暟瀛楃被鍨嬭繘琛岃绠�
- const ticketsAmount = Number(form.ticketsNum) * Number(form.taxInclusiveUnitPrice);
- const futureTickets = Number(temFutureTickets.value) - Number(form.ticketsNum);
- form.futureTickets = Number(futureTickets.toFixed(2));
+ const finalTicketsNum = Number(form.ticketsNum) || 0;
+ const finalAddedTicketsNum = finalTicketsNum - Number(initialTicketsNum.value);
+ const finalFutureTickets = Number(temFutureTickets.value) - finalAddedTicketsNum;
+ const ticketsAmount = finalTicketsNum * Number(form.taxInclusiveUnitPrice);
+ form.futureTickets = Number(finalFutureTickets.toFixed(2));
form.ticketsAmount = Number(ticketsAmount.toFixed(2));
};
const inputTicketsAmount = (val) => {
@@ -105,23 +143,53 @@
return;
}
- if (Number(val) > Number(form.futureTickets*form.taxInclusiveUnitPrice)) {
- proxy.$modal.msgWarning("鏈鏉ョエ閲戦涓嶅緱澶т簬鎬婚噾棰�");
- form.ticketsAmount = (form.futureTickets*form.taxInclusiveUnitPrice).toFixed(2)
- const ticketsNum = Number(form.ticketsAmount) / Number(form.taxInclusiveUnitPrice);
- form.ticketsNum = Number(ticketsNum.toFixed(2))
+ const newTicketsAmount = Number(val) || 0;
+
+ // 璁$畻鏂扮殑鏉ョエ鏁�
+ const newTicketsNum = newTicketsAmount / Number(form.taxInclusiveUnitPrice);
+ const currentTicketsNum = Number(initialTicketsNum.value) || 0;
+
+ // 璁$畻鏂板鐨勬潵绁ㄦ暟
+ const addedTicketsNum = newTicketsNum - currentTicketsNum;
+
+ // 璁$畻鏂扮殑鏈潵绁ㄦ暟 = 鍒濆鏈潵绁ㄦ暟 - 鏂板鐨勬潵绁ㄦ暟
+ const newFutureTickets = Number(temFutureTickets.value) - addedTicketsNum;
+
+ // 楠岃瘉锛氭柊鐨勬潵绁ㄦ暟 + 鏂扮殑鏈潵绁ㄦ暟 鈮� quantity
+ if (newTicketsNum + newFutureTickets > Number(quantity.value)) {
+ proxy.$modal.msgWarning(`鏉ョエ鏁�+鏈潵绁ㄦ暟涓嶈兘澶т簬鎬绘暟閲�(${quantity.value})`);
+ // 闄愬埗鏉ョエ鏁帮紝浣垮叾婊¤冻锛氭潵绁ㄦ暟 + 鏈潵绁ㄦ暟 鈮� quantity
+ const maxTicketsNum = Number(quantity.value) - Number(temFutureTickets.value) + Number(initialTicketsNum.value);
+ form.ticketsNum = Math.max(0, Math.min(maxTicketsNum, newTicketsNum));
+ form.ticketsAmount = Number((form.ticketsNum * Number(form.taxInclusiveUnitPrice)).toFixed(2));
+ const recalculatedAddedTicketsNum = Number(form.ticketsNum) - Number(initialTicketsNum.value);
+ const recalculatedFutureTickets = Number(temFutureTickets.value) - recalculatedAddedTicketsNum;
+ form.futureTickets = Number(recalculatedFutureTickets.toFixed(2));
+ return;
+ }
+
+ // 妫�鏌ユ柊澧炵殑鏉ョエ閲戦鏄惁澶т簬鍒濆鏈潵绁ㄦ暟瀵瑰簲鐨勯噾棰�
+ const maxAddedAmount = Number(temFutureTickets.value * form.taxInclusiveUnitPrice);
+ if (addedTicketsNum > 0 && addedTicketsNum * Number(form.taxInclusiveUnitPrice) > maxAddedAmount) {
+ proxy.$modal.msgWarning("鏂板鏉ョエ閲戦涓嶅緱澶т簬鏈紑绁ㄩ噾棰�");
+ form.ticketsAmount = Number((initialTicketsAmount.value + maxAddedAmount).toFixed(2));
+ form.ticketsNum = Number((currentTicketsNum + Number(temFutureTickets.value)).toFixed(2));
+ form.futureTickets = 0;
return;
}
// 纭繚鎵�鏈夋暟鍊奸兘杞崲涓烘暟瀛楃被鍨嬭繘琛岃绠�
- const ticketsNum = Number(val) / Number(form.taxInclusiveUnitPrice);
- form.ticketsNum = Number(ticketsNum.toFixed(2));
+ const finalTicketsNum = Number(newTicketsNum.toFixed(2));
+ const finalAddedTicketsNum = finalTicketsNum - Number(initialTicketsNum.value);
+ const finalFutureTickets = Number(temFutureTickets.value) - finalAddedTicketsNum;
+ form.ticketsNum = finalTicketsNum;
+ form.futureTickets = Number(finalFutureTickets.toFixed(2));
};
defineExpose({
- load,
- form,
- resetForm,
+ load,
+ form,
+ resetForm,
});
</script>
diff --git a/src/views/procurementManagement/procurementLedger/index.vue b/src/views/procurementManagement/procurementLedger/index.vue
index 4fbf775..30dacdb 100644
--- a/src/views/procurementManagement/procurementLedger/index.vue
+++ b/src/views/procurementManagement/procurementLedger/index.vue
@@ -39,7 +39,6 @@
<div class="table_list">
<div style="display: flex;justify-content: flex-end;margin-bottom: 20px;">
<el-button type="primary" @click="openForm('add')">鏂板鍙拌处</el-button>
- <el-button type="success" @click="openScanAddDialog">鎵爜鏂板</el-button>
<el-button @click="handleOut">瀵煎嚭</el-button>
<el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
</div>
@@ -148,7 +147,7 @@
<el-table-column
fixed="right"
label="鎿嶄綔"
- min-width="150"
+ min-width="100"
align="center"
>
<template #default="scope">
@@ -160,14 +159,6 @@
:disabled="scope.row.receiptPaymentAmount>0 || scope.row.recorderName !== userStore.nickName"
>缂栬緫</el-button
>
- <el-button
- link
- type="success"
- size="small"
- @click="showQRCode(scope.row)"
- >鐢熸垚浜岀淮鐮�</el-button
- >
-
</template>
</el-table-column>
</el-table>
@@ -204,20 +195,12 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="閿�鍞悎鍚屽彿锛�" prop="salesLedgerId">
- <el-select
- v-model="form.salesLedgerId"
- placeholder="璇烽�夋嫨"
+ <el-form-item label="閿�鍞悎鍚屽彿锛�" prop="salesContractNo">
+ <el-input
+ v-model="form.salesContractNo"
+ placeholder="璇疯緭鍏�"
clearable
- @change="salesLedgerChange"
- >
- <el-option
- v-for="item in salesContractList"
- :key="item.id"
- :label="item.salesContractNo"
- :value="item.id"
- />
- </el-select>
+ />
</el-form-item>
</el-col>
</el-row>
@@ -551,221 +534,6 @@
</div>
</template>
</el-dialog>
-
- <!-- 浜岀淮鐮佹樉绀哄璇濇 -->
- <el-dialog
- v-model="qrCodeDialogVisible"
- title="閲囪喘鍚堝悓鍙蜂簩缁寸爜"
- width="400px"
- center
- >
- <div style="text-align: center;">
- <img :src="qrCodeUrl" alt="浜岀淮鐮�" style="width:200px;height:200px;" />
- <div style="margin: 20px;">
- <el-button type="primary" @click="downloadQRCode">涓嬭浇浜岀淮鐮佸浘鐗�</el-button>
- </div>
- </div>
- </el-dialog>
-
- <!-- 鎵爜鏂板瀵硅瘽妗� -->
- <el-dialog
- v-model="scanAddDialogVisible"
- title="鎵爜鏂板閲囪喘鍙拌处"
- width="70%"
- @close="closeScanAddDialog"
- >
- <el-form
- :model="scanAddForm"
- label-width="140px"
- label-position="top"
- :rules="scanAddRules"
- ref="scanAddFormRef"
- >
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item label="鎵爜鍐呭锛�">
- <el-input
- v-model="scanAddForm.scanContent"
- type="textarea"
- :rows="3"
- placeholder="璇锋壂鎻忎簩缁寸爜鎴栨墜鍔ㄨ緭鍏ラ噰璐悎鍚屼俊鎭�"
- @input="parseScanContent"
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="閲囪喘鍚堝悓鍙凤細" prop="purchaseContractNumber">
- <el-input
- v-model="scanAddForm.purchaseContractNumber"
- placeholder="璇疯緭鍏�"
- clearable
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="渚涘簲鍟嗗悕绉帮細" prop="supplierName">
- <el-input
- v-model="scanAddForm.supplierName"
- placeholder="璇疯緭鍏�"
- clearable
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="椤圭洰鍚嶇О锛�" prop="projectName">
- <el-input
- v-model="scanAddForm.projectName"
- placeholder="璇疯緭鍏�"
- clearable
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鍚堝悓閲戦(鍏�)锛�" prop="contractAmount">
- <el-input-number
- v-model="scanAddForm.contractAmount"
- :precision="2"
- :step="0.1"
- clearable
- style="width: 100%"
- placeholder="璇疯緭鍏�"
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="浠樻鏂瑰紡锛�">
- <el-input
- v-model="scanAddForm.paymentMethod"
- placeholder="璇疯緭鍏�"
- clearable
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="褰曞叆浜猴細">
- <el-input v-model="scanAddForm.recorderName" disabled />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item label="澶囨敞锛�">
- <el-input
- v-model="scanAddForm.remark"
- type="textarea"
- :rows="2"
- placeholder="璇疯緭鍏ュ娉ㄤ俊鎭�"
- clearable
- />
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
- <div class="dialog-footer">
- <el-button type="primary" @click="submitScanAdd">纭鏂板</el-button>
- <el-button @click="closeScanAddDialog">鍙栨秷</el-button>
- </div>
- </template>
- </el-dialog>
-
- <!-- 鎵爜鐧昏瀵硅瘽妗� -->
- <el-dialog
- v-model="scanDialogVisible"
- title="鎵爜鐧昏"
- width="60%"
- @close="closeScanDialog"
- >
- <el-form
- :model="scanForm"
- label-width="120px"
- label-position="left"
- :rules="scanRules"
- ref="scanFormRef"
- >
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="閲囪喘鍚堝悓鍙凤細">
- <el-input v-model="scanForm.purchaseContractNumber" disabled />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="渚涘簲鍟嗗悕绉帮細">
- <el-input v-model="scanForm.supplierName" disabled />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="椤圭洰鍚嶇О锛�">
- <el-input v-model="scanForm.projectName" disabled />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鎵爜鏃堕棿锛�">
- <el-input v-model="scanForm.scanTime" disabled />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="鎵爜浜猴細">
- <el-input v-model="scanForm.scannerName" disabled />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鎵爜鐘舵�侊細">
- <el-tag :type="scanForm.scanStatus === '宸叉壂鐮�' ? 'success' : 'warning'">
- {{ scanForm.scanStatus }}
- </el-tag>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item label="鎵爜澶囨敞锛�">
- <el-input
- v-model="scanForm.scanRemark"
- type="textarea"
- :rows="3"
- placeholder="璇疯緭鍏ユ壂鐮佸娉ㄤ俊鎭�"
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item label="鎵爜璁板綍锛�">
- <el-table :data="scanRecords" border style="width: 100%" stripe>
- <el-table-column label="搴忓彿" type="index" width="60" align="center" />
- <el-table-column label="鎵爜鏃堕棿" prop="scanTime" width="180" />
- <el-table-column label="鎵爜浜�" prop="scannerName" width="120" />
- <el-table-column label="鎵爜鐘舵��" prop="scanStatus" width="100">
- <template #default="scope">
- <el-tag :type="scope.row.scanStatus === '宸叉壂鐮�' ? 'success' : 'warning'">
- {{ scope.row.scanStatus }}
- </el-tag>
- </template>
- </el-table-column>
- <el-table-column label="澶囨敞" prop="scanRemark" />
- </el-table>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
- <div class="dialog-footer">
- <el-button type="primary" @click="submitScan">纭鎵爜</el-button>
- <el-button @click="closeScanDialog">鍙栨秷</el-button>
- </div>
- </template>
- </el-dialog>
</div>
</template>
@@ -781,12 +549,10 @@
addOrUpdateSalesLedgerProduct,
delProduct,
delLedgerFile,
- getProductInfoByContractNo,
} from "@/api/salesManagement/salesLedger.js";
import {
addOrEditPurchase,
delPurchase,
- getSalesNo,
purchaseListPage,
productList,
getPurchaseById,
@@ -794,7 +560,6 @@
createPurchaseNo,
} from "@/api/procurementManagement/procurementLedger.js";
import useFormData from "@/hooks/useFormData.js";
-import QRCode from "qrcode";
const { proxy } = getCurrentInstance();
const tableData = ref([]);
const productData = ref([]);
@@ -803,7 +568,6 @@
const modelOptions = ref([]);
const userList = ref([]);
const productOptions = ref([]);
-const salesContractList = ref([]);
const supplierList = ref([]);
const tableLoading = ref(false);
const page = reactive({
@@ -817,10 +581,6 @@
import dayjs from "dayjs";
const userStore = useUserStore();
-
-// 浜岀淮鐮佺浉鍏冲彉閲�
-const qrCodeDialogVisible = ref(false);
-const qrCodeUrl = ref("");
// 鐢ㄦ埛淇℃伅琛ㄥ崟寮规鏁版嵁
const operationType = ref("");
@@ -840,7 +600,7 @@
},
form: {
purchaseContractNumber: "",
- salesLedgerId: "",
+ salesContractNo: "",
projectName: "",
recorderId: "",
entryDate: "",
@@ -1018,9 +778,6 @@
}
userListNoPage().then((res) => {
userList.value = res.data;
- });
- getSalesNo().then((res) => {
- salesContractList.value = res;
});
getOptions().then((res) => {
supplierList.value = res.data;
@@ -1364,212 +1121,6 @@
}
}
};
-// 閿�鍞悎鍚岄�夋嫨鏀瑰彉鏂规硶
-const salesLedgerChange = async (row) => {
- console.log("row", row);
- var index = salesContractList.value.findIndex((item) => item.id == row);
- console.log("index", index);
- if (index > -1) {
- form.value.projectName = salesContractList.value[index].projectName;
- await querygProductInfoByContractNo();
- }
-};
-
-const querygProductInfoByContractNo = async () => {
- const { code, data } = await getProductInfoByContractNo({
- contractNo: form.value.salesLedgerId,
- });
- if (code == 200) {
- productData.value = data;
- }
-};
-
-// 鏄剧ず浜岀淮鐮�
-const showQRCode = async (row) => {
- try {
- // 鏋勫缓浜岀淮鐮佸唴瀹癸紝鍙寘鍚噰璐悎鍚屽彿锛堢函鏂囨湰锛�
- const qrContent = row.purchaseContractNumber || '';
- // 妫�鏌ュ唴瀹规槸鍚︿负绌�
- if (!qrContent || qrContent.trim() === '') {
- proxy.$modal.msgWarning("璇ヨ娌℃湁閲囪喘鍚堝悓鍙凤紝鏃犳硶鐢熸垚浜岀淮鐮�");
- return;
- }
- qrCodeUrl.value = await QRCode.toDataURL(qrContent, {
- width: 200,
- margin: 2,
- color: {
- dark: '#000000',
- light: '#FFFFFF'
- }
- });
- qrCodeDialogVisible.value = true;
- } catch (error) {
- console.error('鐢熸垚浜岀淮鐮佸け璐�:', error);
- proxy.$modal.msgError("鐢熸垚浜岀淮鐮佸け璐ワ細" + error.message);
- }
-};
-
-// 涓嬭浇浜岀淮鐮�
-const downloadQRCode = () => {
- if (!qrCodeUrl.value) {
- proxy.$modal.msgWarning("浜岀淮鐮佹湭鐢熸垚");
- return;
- }
-
- const a = document.createElement('a');
- a.href = qrCodeUrl.value;
- a.download = `閲囪喘鍚堝悓鍙蜂簩缁寸爜_${new Date().getTime()}.png`;
- document.body.appendChild(a);
- a.click();
- document.body.removeChild(a);
- proxy.$modal.msgSuccess("涓嬭浇鎴愬姛");
-};
-
-// 鎵爜鏂板瀵硅瘽妗嗙浉鍏冲彉閲�
-const scanAddDialogVisible = ref(false);
-const scanAddForm = reactive({
- scanContent: "",
- purchaseContractNumber: "",
- supplierName: "",
- projectName: "",
- contractAmount: "",
- paymentMethod: "",
- recorderName: "",
- scanRemark: "",
-});
-const scanAddRules = {
- purchaseContractNumber: [{ required: true, message: "璇疯緭鍏ラ噰璐悎鍚屽彿", trigger: "blur" }],
- supplierName: [{ required: true, message: "璇疯緭鍏ヤ緵搴斿晢鍚嶇О", trigger: "blur" }],
- projectName: [{ required: true, message: "璇疯緭鍏ラ」鐩悕绉�", trigger: "blur" }],
-};
-
-// 鎵爜鐧昏瀵硅瘽妗嗙浉鍏冲彉閲�
-const scanDialogVisible = ref(false);
-const scanForm = reactive({
- purchaseContractNumber: "",
- supplierName: "",
- projectName: "",
- scanTime: "",
- scannerName: "",
- scanStatus: "鏈壂鐮�",
- scanRemark: "",
-});
-const scanRules = {
- scanRemark: [{ required: true, message: "璇疯緭鍏ユ壂鐮佸娉�", trigger: "blur" }],
-};
-const scanRecords = ref([]);
-
-// 鎵撳紑鎵爜鏂板瀵硅瘽妗�
-const openScanAddDialog = () => {
- scanAddForm.scanContent = "";
- scanAddForm.purchaseContractNumber = "";
- scanAddForm.supplierName = "";
- scanAddForm.projectName = "";
- scanAddForm.contractAmount = "";
- scanAddForm.paymentMethod = "";
- scanAddForm.recorderName = userStore.nickName;
- scanAddForm.scanRemark = "";
- scanAddDialogVisible.value = true;
-};
-
-// 瑙f瀽鎵爜鍐呭锛堟ā鎷熻В鏋愪簩缁寸爜鏁版嵁锛�
-const parseScanContent = (content) => {
- if (!content) return;
-
- // 妯℃嫙瑙f瀽浜岀淮鐮佸唴瀹癸紝杩欓噷鍙互鏍规嵁瀹為檯闇�姹傝皟鏁磋В鏋愰�昏緫
- // 鍋囪鎵爜鍐呭鏍煎紡涓猴細鍚堝悓鍙穦渚涘簲鍟唡椤圭洰|閲戦|浠樻鏂瑰紡
- const parts = content.split('|');
- if (parts.length >= 3) {
- scanAddForm.purchaseContractNumber = parts[0] || "";
- scanAddForm.supplierName = parts[1] || "";
- scanAddForm.projectName = parts[2] || "";
- scanAddForm.contractAmount = parts[3] || "";
- scanAddForm.paymentMethod = parts[4] || "";
- }
-};
-
-// 鍏抽棴鎵爜鏂板瀵硅瘽妗�
-const closeScanAddDialog = () => {
- scanAddDialogVisible.value = false;
- proxy.resetForm("scanAddFormRef");
-};
-
-// 鎻愪氦鎵爜鏂板
-const submitScanAdd = () => {
- proxy.$refs["scanAddFormRef"].validate((valid) => {
- if (valid) {
- // 鏋勫缓鏂板鏁版嵁
- const newData = {
- purchaseContractNumber: scanAddForm.purchaseContractNumber,
- supplierName: scanAddForm.supplierName,
- projectName: scanAddForm.projectName,
- contractAmount: scanAddForm.contractAmount,
- paymentMethod: scanAddForm.paymentMethod,
- recorderName: scanAddForm.recorderName,
- entryDate: getCurrentDate(),
- remark: scanAddForm.scanRemark,
- type: 2
- };
-
- // 妯℃嫙鏂板鎴愬姛
- proxy.$modal.msgSuccess("鎵爜鏂板鎴愬姛锛�");
- closeScanAddDialog();
-
- // 鍙互閫夋嫨鏄惁鍒锋柊鍒楄〃
- // getList();
- }
- });
-};
-
-// 鎵撳紑鎵爜鐧昏瀵硅瘽妗�
-const openScanDialog = (row) => {
- scanForm.purchaseContractNumber = row.purchaseContractNumber;
- scanForm.supplierName = row.supplierName;
- scanForm.projectName = row.projectName;
- scanForm.scanTime = getCurrentDateTime();
- scanForm.scannerName = userStore.nickName;
- scanForm.scanStatus = "鏈壂鐮�";
- scanForm.scanRemark = "";
- scanRecords.value = [];
- scanDialogVisible.value = true;
-};
-
-// 鍏抽棴鎵爜鐧昏瀵硅瘽妗�
-const closeScanDialog = () => {
- scanDialogVisible.value = false;
- proxy.resetForm("scanFormRef");
-};
-
-// 鎻愪氦鎵爜鐧昏
-const submitScan = () => {
- proxy.$refs["scanFormRef"].validate((valid) => {
- if (valid) {
- // 娣诲姞鎵爜璁板綍
- scanRecords.value.push({
- ...scanForm,
- id: Date.now(), // 妯℃嫙ID
- scanTime: getCurrentDateTime(),
- });
- scanForm.scanStatus = "宸叉壂鐮�";
- scanForm.scanRemark = scanForm.scanRemark || "鏃�";
- proxy.$modal.msgSuccess("鎵爜鐧昏鎴愬姛锛�");
- closeScanDialog();
- }
- });
-};
-
-// 鑾峰彇褰撳墠鏃ユ湡鏃堕棿
-function getCurrentDateTime() {
- const now = new Date();
- const year = now.getFullYear();
- const month = String(now.getMonth() + 1).padStart(2, "0");
- const day = String(now.getDate()).padStart(2, "0");
- const hours = String(now.getHours()).padStart(2, "0");
- const minutes = String(now.getMinutes()).padStart(2, "0");
- const seconds = String(now.getSeconds()).padStart(2, "0");
- return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
-}
-
onMounted(() => {
--
Gitblit v1.9.3