采购入库画面调整 up by dh
This commit is contained in:
@@ -219,7 +219,7 @@
|
|||||||
<el-select
|
<el-select
|
||||||
v-model="scope.row.itemId"
|
v-model="scope.row.itemId"
|
||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
@blur="handleBlur(scope.row, scope.$index)"
|
:class="{ 'error-border': scope.row.error }"
|
||||||
>
|
>
|
||||||
<el-option label="项目1" value="1" />
|
<el-option label="项目1" value="1" />
|
||||||
<el-option label="项目2" value="2" />
|
<el-option label="项目2" value="2" />
|
||||||
@@ -268,7 +268,7 @@
|
|||||||
<el-select
|
<el-select
|
||||||
v-model="scope.row.unitCode"
|
v-model="scope.row.unitCode"
|
||||||
placeholder="请选择计量单位"
|
placeholder="请选择计量单位"
|
||||||
@blur="handleBlur(scope.row, scope.$index)"
|
:class="{ 'error-border': scope.row.error }"
|
||||||
>
|
>
|
||||||
<el-option label="单位1" value="1" />
|
<el-option label="单位1" value="1" />
|
||||||
<el-option label="单位2" value="2" />
|
<el-option label="单位2" value="2" />
|
||||||
@@ -294,7 +294,7 @@
|
|||||||
<el-select
|
<el-select
|
||||||
v-model="scope.row.purposeLocationId"
|
v-model="scope.row.purposeLocationId"
|
||||||
placeholder="请选择仓库"
|
placeholder="请选择仓库"
|
||||||
@blur="handleBlur(scope.row, scope.$index)"
|
:class="{ 'error-border': scope.row.error }"
|
||||||
>
|
>
|
||||||
<el-option label="仓库1" value="1" />
|
<el-option label="仓库1" value="1" />
|
||||||
<el-option label="仓库2" value="2" />
|
<el-option label="仓库2" value="2" />
|
||||||
@@ -319,7 +319,7 @@
|
|||||||
<el-select
|
<el-select
|
||||||
v-model="scope.row.purposeLocationStoreId"
|
v-model="scope.row.purposeLocationStoreId"
|
||||||
placeholder="请选择货位"
|
placeholder="请选择货位"
|
||||||
@blur="handleBlur(scope.row, scope.$index)"
|
:class="{ 'error-border': scope.row.error }"
|
||||||
>
|
>
|
||||||
<el-option label="货位1" value="1" />
|
<el-option label="货位1" value="1" />
|
||||||
<el-option label="货位2" value="2" />
|
<el-option label="货位2" value="2" />
|
||||||
@@ -355,7 +355,7 @@
|
|||||||
<el-input
|
<el-input
|
||||||
v-model="scope.row.itemQuantity"
|
v-model="scope.row.itemQuantity"
|
||||||
placeholder=""
|
placeholder=""
|
||||||
@blur="handleBlur(scope.row, scope.$index)"
|
:class="{ 'error-border': scope.row.error }"
|
||||||
/>
|
/>
|
||||||
<el-tooltip content="该项目必填" placement="top">
|
<el-tooltip content="该项目必填" placement="top">
|
||||||
<el-icon style="color: red; margin-left: 5px"
|
<el-icon style="color: red; margin-left: 5px"
|
||||||
@@ -377,7 +377,7 @@
|
|||||||
<el-input
|
<el-input
|
||||||
v-model="scope.row.price"
|
v-model="scope.row.price"
|
||||||
placeholder=""
|
placeholder=""
|
||||||
@blur="handleBlur(scope.row, scope.$index)"
|
:class="{ 'error-border': scope.row.error }"
|
||||||
/>
|
/>
|
||||||
<el-tooltip content="该项目必填" placement="top">
|
<el-tooltip content="该项目必填" placement="top">
|
||||||
<el-icon style="color: red; margin-left: 5px"
|
<el-icon style="color: red; margin-left: 5px"
|
||||||
@@ -521,7 +521,7 @@
|
|||||||
link
|
link
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="Edit"
|
icon="Edit"
|
||||||
@click="handleBlur(scope.row, scope.$index)"
|
@click="handleSave(scope.row, scope.$index)"
|
||||||
v-hasPermi="['system:user:edit']"
|
v-hasPermi="['system:user:edit']"
|
||||||
>保存</el-button
|
>保存</el-button
|
||||||
>
|
>
|
||||||
@@ -613,34 +613,7 @@ const {
|
|||||||
"purchase_type"
|
"purchase_type"
|
||||||
);
|
);
|
||||||
|
|
||||||
const purchaseinventoryList = ref([
|
const purchaseinventoryList = ref([]);
|
||||||
{
|
|
||||||
"id": "2",
|
|
||||||
"busNo": "bs002",
|
|
||||||
"totalQuantity": 500,
|
|
||||||
"itemQuantity": 10,
|
|
||||||
"itemName": null,
|
|
||||||
"totalVolume": null,
|
|
||||||
"unitCode": "盒",
|
|
||||||
"unitCode_dictText": "",
|
|
||||||
"detailJson": "测试设备的数据",
|
|
||||||
"practitionerName": "雯雯",
|
|
||||||
"supplierName": "长春市有限公司测试器材",
|
|
||||||
"purposeTypeEnum": 0,
|
|
||||||
"purposeLocationName": "器材A库",
|
|
||||||
"purposeLocationStoreName": "器材A库A货位",
|
|
||||||
"applyTime": "2025-03-12T15:00:00.000+08:00",
|
|
||||||
"lotNumber": "bt002",
|
|
||||||
"traceNo": "zsm002",
|
|
||||||
"invoiceNo": "fp002",
|
|
||||||
"startTime": null,
|
|
||||||
"endTime": null,
|
|
||||||
"price": 7,
|
|
||||||
"totalPrice": 70,
|
|
||||||
"sellPrice": null,
|
|
||||||
"minSellPrice": null
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
const open = ref(false);
|
const open = ref(false);
|
||||||
const loading = ref(true);
|
const loading = ref(true);
|
||||||
const showSearch = ref(true);
|
const showSearch = ref(true);
|
||||||
@@ -725,31 +698,56 @@ const data = reactive({
|
|||||||
price: [{ required: true, message: "基础价格不能为空", trigger: "blur" }],
|
price: [{ required: true, message: "基础价格不能为空", trigger: "blur" }],
|
||||||
},
|
},
|
||||||
tableRules: {
|
tableRules: {
|
||||||
itemId: [{ required: true, message: '项目不能为空', trigger: 'blur' }],
|
itemId: [{ required: true, message: "项目不能为空", trigger: "blur" }],
|
||||||
itemQuantity: [{ required: true, message: '采购数量不能为空', trigger: 'blur' }],
|
itemQuantity: [
|
||||||
unitCode: [{ required: true, message: '计量单位不能为空', trigger: 'blur' }],
|
{ required: true, message: "采购数量不能为空", trigger: "blur" },
|
||||||
supplierId: [{ required: true, message: '供应商不能为空', trigger: 'blur' }],
|
],
|
||||||
purposeTypeEnum: [{ required: true, message: '仓库类型不能为空', trigger: 'blur' }],
|
unitCode: [
|
||||||
purposeLocationId: [{ required: true, message: '仓库不能为空', trigger: 'blur' }],
|
{ required: true, message: "计量单位不能为空", trigger: "blur" },
|
||||||
purposeLocationStoreId: [{ required: true, message: '货位不能为空', trigger: 'blur' }],
|
],
|
||||||
practitionerId: [{ required: true, message: '经手人不能为空', trigger: 'blur' }],
|
supplierId: [
|
||||||
lotNumber: [{ required: true, message: '产品批号不能为空', trigger: 'blur' }],
|
{ required: true, message: "供应商不能为空", trigger: "blur" },
|
||||||
traceNo: [{ required: true, message: '药品追溯码不能为空', trigger: 'blur' }],
|
],
|
||||||
startTime: [{ required: true, message: '生产日期不能为空', trigger: 'blur' }],
|
purposeTypeEnum: [
|
||||||
endTime: [{ required: true, message: '有效期至不能为空', trigger: 'blur' }],
|
{ required: true, message: "仓库类型不能为空", trigger: "blur" },
|
||||||
price: [{ required: true, message: '采购单价不能为空', trigger: 'blur' }],
|
],
|
||||||
totalPrice: [{ required: true, message: '合计金额不能为空', trigger: 'blur' }],
|
purposeLocationId: [
|
||||||
sellPrice: [{ required: true, message: '售价不能为空', trigger: 'blur' }],
|
{ required: true, message: "仓库不能为空", trigger: "blur" },
|
||||||
minSellPrice: [{ required: true, message: '拆零售价不能为空', trigger: 'blur' }],
|
],
|
||||||
|
purposeLocationStoreId: [
|
||||||
|
{ required: true, message: "货位不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
practitionerId: [
|
||||||
|
{ required: true, message: "经手人不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
lotNumber: [
|
||||||
|
{ required: true, message: "产品批号不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
traceNo: [
|
||||||
|
{ required: true, message: "药品追溯码不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
startTime: [
|
||||||
|
{ required: true, message: "生产日期不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
endTime: [{ required: true, message: "有效期至不能为空", trigger: "blur" }],
|
||||||
|
price: [{ required: true, message: "采购单价不能为空", trigger: "blur" }],
|
||||||
|
totalPrice: [
|
||||||
|
{ required: true, message: "合计金额不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
sellPrice: [{ required: true, message: "售价不能为空", trigger: "blur" }],
|
||||||
|
minSellPrice: [
|
||||||
|
{ required: true, message: "拆零售价不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const { queryParams, form, receiptHeaderForm, rules } = toRefs(data);
|
const { queryParams, form, receiptHeaderForm, rules, tableRules } =
|
||||||
|
toRefs(data);
|
||||||
const itemTypeOptions = ref(undefined); // 入库项目类型
|
const itemTypeOptions = ref(undefined); // 入库项目类型
|
||||||
const practitionerListOptions = ref(undefined); // 查询经手人列表
|
const practitionerListOptions = ref(undefined); // 查询经手人列表
|
||||||
const supplierListOptions = ref(undefined); // 供应商列表
|
const supplierListOptions = ref(undefined); // 供应商列表
|
||||||
const selectedRows = ref([]); // 用于存储选中的行
|
const selectedRows = ref([]); // 用于存储选中的行
|
||||||
const emit = defineEmits(['new-item-added']);
|
const emit = defineEmits(["new-item-added"]);
|
||||||
|
|
||||||
const addNewRow = () => {
|
const addNewRow = () => {
|
||||||
if (data.isAdding) {
|
if (data.isAdding) {
|
||||||
@@ -783,23 +781,56 @@ const addNewRow = () => {
|
|||||||
data.isAdding = true; // 设置标志位为 true,表示有未保存的
|
data.isAdding = true; // 设置标志位为 true,表示有未保存的
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleBlur = (row, index) => {
|
function handleBlur(row, index) {
|
||||||
|
let hasError = false;
|
||||||
if (receiptHeaderForm.value.medicationType === "1") {
|
if (receiptHeaderForm.value.medicationType === "1") {
|
||||||
row.itemTable = "med_medication_definition";
|
row.itemTable = "med_medication_definition";
|
||||||
} else {
|
} else {
|
||||||
row.itemTable = "adm_device_definition";
|
row.itemTable = "adm_device_definition";
|
||||||
}
|
}
|
||||||
console.log(row, "rowhandleBlurhandleBlurhandleBlurhandleBlurhandleBlur");
|
row.practitionerId = receiptHeaderForm.value.practitionerId;
|
||||||
if (
|
row.occurrenceTime = receiptHeaderForm.value.occurrenceTime;
|
||||||
row.itemTable &&
|
row.supplierId = receiptHeaderForm.value.supplierId;
|
||||||
row.unitCode &&
|
row.purposeTypeEnum = receiptHeaderForm.value.purposeTypeEnum;
|
||||||
row.purposeLocationStoreId &&
|
const fields = [
|
||||||
row.itemQuantity &&
|
"itemId",
|
||||||
row.price
|
"itemQuantity",
|
||||||
) {
|
"unitCode",
|
||||||
saveRow(row, index); // 调用保存方法
|
"supplierId",
|
||||||
|
"purposeTypeEnum",
|
||||||
|
"purposeLocationId",
|
||||||
|
"purposeLocationStoreId",
|
||||||
|
"practitionerId",
|
||||||
|
"lotNumber",
|
||||||
|
"traceNo",
|
||||||
|
"startTime",
|
||||||
|
"endTime",
|
||||||
|
"price",
|
||||||
|
"totalPrice",
|
||||||
|
"sellPrice",
|
||||||
|
"minSellPrice",
|
||||||
|
];
|
||||||
|
|
||||||
|
fields.forEach((field) => {
|
||||||
|
if (!row[field]) {
|
||||||
|
hasError = true;
|
||||||
|
proxy.$message.error(tableRules.value[field][0].message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
row.error = hasError;
|
||||||
|
|
||||||
|
console.log(row, "rowhandleBlurhandleBlurhandleBlurhandleBlurhandleBlur");
|
||||||
|
// if (
|
||||||
|
// row.itemTable &&
|
||||||
|
// row.unitCode &&
|
||||||
|
// row.purposeLocationStoreId &&
|
||||||
|
// row.itemQuantity &&
|
||||||
|
// row.price
|
||||||
|
// ) {
|
||||||
|
// saveRow(row, index); // 调用保存方法
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
const saveRow = (row, index) => {
|
const saveRow = (row, index) => {
|
||||||
console.log(row, "saveRowsaveRowsaveRowsaveRowsaveRowsaveRow");
|
console.log(row, "saveRowsaveRowsaveRowsaveRowsaveRowsaveRow");
|
||||||
@@ -812,10 +843,6 @@ const saveRow = (row, index) => {
|
|||||||
// } else {
|
// } else {
|
||||||
// row.itemTable = "adm_device_definition";
|
// row.itemTable = "adm_device_definition";
|
||||||
// }
|
// }
|
||||||
row.practitionerId = receiptHeaderForm.value.practitionerId;
|
|
||||||
row.occurrenceTime = receiptHeaderForm.value.occurrenceTime;
|
|
||||||
row.supplierId = receiptHeaderForm.value.supplierId;
|
|
||||||
row.purposeTypeEnum = receiptHeaderForm.value.purposeTypeEnum;
|
|
||||||
console.log(row, "rowabbbbbbbbbbbbbb");
|
console.log(row, "rowabbbbbbbbbbbbbb");
|
||||||
try {
|
try {
|
||||||
// 调用 API 保存数据
|
// 调用 API 保存数据
|
||||||
@@ -830,7 +857,7 @@ const saveRow = (row, index) => {
|
|||||||
data.isAdding = false; // 允许新增下一行
|
data.isAdding = false; // 允许新增下一行
|
||||||
proxy.$message.success("保存成功!");
|
proxy.$message.success("保存成功!");
|
||||||
visible.value = false;
|
visible.value = false;
|
||||||
emit('new-item-added'); // 通知父组件
|
emit("new-item-added"); // 通知父组件
|
||||||
// getList();
|
// getList();
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -840,6 +867,33 @@ const saveRow = (row, index) => {
|
|||||||
// proxy.$message.success("保存成功!");
|
// proxy.$message.success("保存成功!");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function handleSave( row , index ) {
|
||||||
|
let hasError = false;
|
||||||
|
// this.purchaseinventoryList.forEach((row) => {
|
||||||
|
handleBlur(row);
|
||||||
|
if (row.error) {
|
||||||
|
hasError = true;
|
||||||
|
}
|
||||||
|
// });
|
||||||
|
|
||||||
|
if (hasError) {
|
||||||
|
proxy.$message.error("请填写完整信息");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
addPurchaseinventory(row).then((response) => {
|
||||||
|
reset();
|
||||||
|
data.isAdding = false; // 允许新增下一行
|
||||||
|
proxy.$message.success("保存成功!");
|
||||||
|
visible.value = false;
|
||||||
|
emit("new-item-added"); // 通知父组件
|
||||||
|
// getList();
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
proxy.$message.error("保存失败,请重试!");
|
||||||
|
}
|
||||||
|
// 保存逻辑...
|
||||||
|
}
|
||||||
/** 查询挂号收费项目列表 */
|
/** 查询挂号收费项目列表 */
|
||||||
function getList() {
|
function getList() {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
@@ -914,6 +968,7 @@ function reset() {
|
|||||||
}
|
}
|
||||||
// 显示弹框
|
// 显示弹框
|
||||||
function show() {
|
function show() {
|
||||||
|
data.isAdding = false;
|
||||||
reset();
|
reset();
|
||||||
visible.value = true;
|
visible.value = true;
|
||||||
supplierListOptions.value = props.supplierListOptions;
|
supplierListOptions.value = props.supplierListOptions;
|
||||||
@@ -929,15 +984,16 @@ function show() {
|
|||||||
}
|
}
|
||||||
// 显示弹框
|
// 显示弹框
|
||||||
function edit() {
|
function edit() {
|
||||||
|
data.isAdding = false;
|
||||||
reset();
|
reset();
|
||||||
supplierListOptions.value = props.supplierListOptions;
|
supplierListOptions.value = props.supplierListOptions;
|
||||||
itemTypeOptions.value = props.itemTypeOptions;
|
itemTypeOptions.value = props.itemTypeOptions;
|
||||||
practitionerListOptions.value = props.practitionerListOptions;
|
practitionerListOptions.value = props.practitionerListOptions;
|
||||||
// receiptHeaderForm.value.busNo = props.busNoAdd;
|
// receiptHeaderForm.value.busNo = props.busNoAdd;
|
||||||
form.value = props.item;
|
form.value = props.item;
|
||||||
receiptHeaderForm.value = props.item;
|
receiptHeaderForm.value = props.item.length > 0 ? props.item[0] : {};
|
||||||
// receiptHeaderForm.value.busNo = props.item.supplyBusNo;
|
// receiptHeaderForm.value.busNo = props.item.supplyBusNo;
|
||||||
purchaseinventoryList.value.push(props.item);
|
purchaseinventoryList.value = props.item;
|
||||||
console.log(purchaseinventoryList.value, "purchaseinventoryList.value");
|
console.log(purchaseinventoryList.value, "purchaseinventoryList.value");
|
||||||
console.log(receiptHeaderForm.value, "receiptHeaderForm.value");
|
console.log(receiptHeaderForm.value, "receiptHeaderForm.value");
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
@@ -980,7 +1036,7 @@ function handleDelete(row) {
|
|||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
show,
|
show,
|
||||||
edit
|
edit,
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style scoped>
|
<style scoped>
|
||||||
@@ -994,4 +1050,8 @@ defineExpose({
|
|||||||
font-size: large;
|
font-size: large;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.error-border {
|
||||||
|
border: 1px solid red;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
Reference in New Issue
Block a user