|
@@ -17,7 +17,7 @@
|
|
:placeholder="t('chooseMaintain.materialName')"
|
|
:placeholder="t('chooseMaintain.materialName')"
|
|
clearable
|
|
clearable
|
|
@keyup.enter="handleQuery"
|
|
@keyup.enter="handleQuery"
|
|
- class="!w-240px"
|
|
|
|
|
|
+ class="!w-200px"
|
|
/>
|
|
/>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item :label="t('chooseMaintain.materialCode')" prop="code">
|
|
<el-form-item :label="t('chooseMaintain.materialCode')" prop="code">
|
|
@@ -26,7 +26,7 @@
|
|
:placeholder="t('chooseMaintain.materialCode')"
|
|
:placeholder="t('chooseMaintain.materialCode')"
|
|
clearable
|
|
clearable
|
|
@keyup.enter="handleQuery"
|
|
@keyup.enter="handleQuery"
|
|
- class="!w-240px"
|
|
|
|
|
|
+ class="!w-200px"
|
|
/>
|
|
/>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-form-item>
|
|
@@ -71,18 +71,24 @@
|
|
<el-table-column :label="t('workOrderMaterial.unitPrice')" align="center" prop="unitPrice">
|
|
<el-table-column :label="t('workOrderMaterial.unitPrice')" align="center" prop="unitPrice">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-input
|
|
<el-input
|
|
|
|
+ type="number"
|
|
|
|
+ :controls="false"
|
|
v-model="scope.row.unitPrice"
|
|
v-model="scope.row.unitPrice"
|
|
@click.stop=""
|
|
@click.stop=""
|
|
@focus="handleInputFocus(scope.row)"
|
|
@focus="handleInputFocus(scope.row)"
|
|
|
|
+ @blur="(event) => handleUnitPriceBlur(event, scope.row)"
|
|
/>
|
|
/>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column :label="t('route.quantity')" align="center" prop="quantity">
|
|
<el-table-column :label="t('route.quantity')" align="center" prop="quantity">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-input
|
|
<el-input
|
|
|
|
+ type="number"
|
|
|
|
+ :controls="false"
|
|
v-model="scope.row.quantity"
|
|
v-model="scope.row.quantity"
|
|
@click.stop=""
|
|
@click.stop=""
|
|
@focus="handleInputFocus(scope.row)"
|
|
@focus="handleInputFocus(scope.row)"
|
|
|
|
+ @blur="(event) => handleQuantityBlur(event, scope.row)"
|
|
/>
|
|
/>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
@@ -164,6 +170,18 @@ const selectRow = (row) => {
|
|
|
|
|
|
// 确认选择
|
|
// 确认选择
|
|
const handleConfirm = () => {
|
|
const handleConfirm = () => {
|
|
|
|
+ // 检查是否有未通过校验的行
|
|
|
|
+ const invalidRows = selectedRows.value.filter(row => {
|
|
|
|
+ const quantity = parseFloat(row.quantity);
|
|
|
|
+ const unitPrice = parseFloat(row.unitPrice);
|
|
|
|
+ return isNaN(quantity) || quantity <= 0 || isNaN(unitPrice) || unitPrice <= 0;
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ if (invalidRows.length > 0) {
|
|
|
|
+ ElMessage.error('存在无效的 单价 或 数量,请检查');
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
if (selectedRows.value.length === 0) {
|
|
if (selectedRows.value.length === 0) {
|
|
ElMessage.warning('请至少选择一个物料')
|
|
ElMessage.warning('请至少选择一个物料')
|
|
return
|
|
return
|
|
@@ -180,6 +198,42 @@ const handleConfirm = () => {
|
|
handleClose()
|
|
handleClose()
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+// 处理 单价 unitPrice 输入框失焦事件
|
|
|
|
+const handleUnitPriceBlur = (event: Event, row: any) => {
|
|
|
|
+ const inputValue = (event.target as HTMLInputElement).value;
|
|
|
|
+ let num = parseFloat(inputValue);
|
|
|
|
+ // 处理无效值
|
|
|
|
+ if (isNaN(num)) {
|
|
|
|
+ row.unitPrice = 0;
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ // 处理小于等于0的情况
|
|
|
|
+ if (num <= 0) {
|
|
|
|
+ row.unitPrice = 0;
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ // 保留两位小数
|
|
|
|
+ row.unitPrice = parseFloat(num.toFixed(2));
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+// 处理 入库数量 quantity 输入框失焦事件
|
|
|
|
+const handleQuantityBlur = (event: Event, row: any) => {
|
|
|
|
+ const inputValue = (event.target as HTMLInputElement).value;
|
|
|
|
+ let num = parseFloat(inputValue);
|
|
|
|
+ // 处理无效值
|
|
|
|
+ if (isNaN(num)) {
|
|
|
|
+ row.quantity = 0;
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ // 处理小于等于0的情况
|
|
|
|
+ if (num <= 0) {
|
|
|
|
+ row.quantity = 0;
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ // 保留两位小数
|
|
|
|
+ row.quantity = parseFloat(num.toFixed(2));
|
|
|
|
+};
|
|
|
|
+
|
|
// 点击整行选中
|
|
// 点击整行选中
|
|
const handleRowClick = (row) => {
|
|
const handleRowClick = (row) => {
|
|
toggleRow(row);
|
|
toggleRow(row);
|