|
|
@@ -5,7 +5,7 @@
|
|
|
<el-dialog
|
|
|
:model-value="modelValue"
|
|
|
title="维护月初模板"
|
|
|
- width="1080px"
|
|
|
+ width="1280px"
|
|
|
class="dialog-form-layout material-batch-stock-dialog"
|
|
|
align-center
|
|
|
append-to-body
|
|
|
@@ -15,12 +15,12 @@
|
|
|
@update:model-value="emit('update:modelValue', $event)"
|
|
|
@open="handleOpen"
|
|
|
>
|
|
|
- <div class="batch-stock-move-lines-head" style="margin-bottom: 12px">
|
|
|
+ <div class="month-template-toolbar">
|
|
|
<div class="batch-stock-move-lines-head-left">
|
|
|
<span class="batch-stock-move-lines-title">模板明细</span>
|
|
|
<span class="batch-stock-move-lines-hint">共 {{ rows.length }} 项,保存后供「月初导入」使用</span>
|
|
|
</div>
|
|
|
- <el-button class="btn-ghost" @click="openEdit()">
|
|
|
+ <el-button class="btn-main" type="primary" @click="openEdit()">
|
|
|
<el-icon><Plus /></el-icon>
|
|
|
新增一行
|
|
|
</el-button>
|
|
|
@@ -62,7 +62,7 @@
|
|
|
<el-dialog
|
|
|
v-model="editVisible"
|
|
|
:title="editForm.id ? '编辑模板行' : '新增模板行'"
|
|
|
- width="720px"
|
|
|
+ width="960px"
|
|
|
class="dialog-form-layout"
|
|
|
align-center
|
|
|
append-to-body
|
|
|
@@ -78,7 +78,7 @@
|
|
|
scroll-to-error
|
|
|
:scroll-into-view-options="{ behavior: 'smooth', block: 'center' }"
|
|
|
>
|
|
|
- <div class="form-grid-2">
|
|
|
+ <div class="form-grid-3">
|
|
|
<el-form-item label="关联物资" class="form-col-span-2">
|
|
|
<el-select
|
|
|
v-model="editForm.materialId"
|
|
|
@@ -97,11 +97,11 @@
|
|
|
/>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="物料编码" prop="materialCode">
|
|
|
- <el-input v-model="editForm.materialCode" placeholder="必填" />
|
|
|
+ <el-form-item label="物料编码">
|
|
|
+ <el-input v-model="editForm.materialCode" placeholder="可选" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="物料名称" prop="materialName">
|
|
|
- <el-input v-model="editForm.materialName" placeholder="必填" />
|
|
|
+ <el-form-item label="物料名称">
|
|
|
+ <el-input v-model="editForm.materialName" placeholder="可选" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="规格型号">
|
|
|
<el-input v-model="editForm.specModel" placeholder="可选" />
|
|
|
@@ -109,25 +109,25 @@
|
|
|
<el-form-item label="单位">
|
|
|
<el-input v-model="editForm.unit" placeholder="可选" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="货号" prop="catalogNo">
|
|
|
- <el-input v-model="editForm.catalogNo" placeholder="必填" />
|
|
|
+ <el-form-item label="货号">
|
|
|
+ <el-input v-model="editForm.catalogNo" placeholder="可选" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="批号" prop="batchNo">
|
|
|
- <el-input v-model="editForm.batchNo" placeholder="必填" />
|
|
|
+ <el-form-item label="批号">
|
|
|
+ <el-input v-model="editForm.batchNo" placeholder="可选" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="厂家" prop="manufacturer">
|
|
|
- <el-input v-model="editForm.manufacturer" placeholder="必填" />
|
|
|
+ <el-form-item label="厂家">
|
|
|
+ <el-input v-model="editForm.manufacturer" placeholder="可选" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="过期日期" prop="expireDate">
|
|
|
+ <el-form-item label="过期日期">
|
|
|
<el-date-picker
|
|
|
v-model="editForm.expireDate"
|
|
|
type="date"
|
|
|
value-format="YYYY-MM-DD"
|
|
|
- placeholder="选择过期日期"
|
|
|
+ placeholder="可选"
|
|
|
style="width: 100%"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="单价(元)" prop="unitPrice">
|
|
|
+ <el-form-item label="单价(元)">
|
|
|
<el-input-number
|
|
|
v-model="editForm.unitPrice"
|
|
|
:min="0"
|
|
|
@@ -137,17 +137,17 @@
|
|
|
@change="onPriceOrQtyChange"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="数量" prop="inQty">
|
|
|
+ <el-form-item label="数量">
|
|
|
<el-input-number
|
|
|
v-model="editForm.inQty"
|
|
|
- :min="0.0001"
|
|
|
+ :min="0"
|
|
|
:precision="4"
|
|
|
controls-position="right"
|
|
|
style="width: 100%"
|
|
|
@change="onPriceOrQtyChange"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="金额(元)" prop="amount">
|
|
|
+ <el-form-item label="金额(元)">
|
|
|
<el-input-number
|
|
|
v-model="editForm.amount"
|
|
|
:min="0"
|
|
|
@@ -217,22 +217,12 @@
|
|
|
manufacturer: '',
|
|
|
unitPrice: 0,
|
|
|
amount: 0,
|
|
|
- inQty: 1,
|
|
|
+ inQty: 0,
|
|
|
expireDate: '',
|
|
|
remark: ''
|
|
|
})
|
|
|
|
|
|
- const editRules: FormRules = {
|
|
|
- materialCode: [{ required: true, message: '请输入物料编码', trigger: 'blur' }],
|
|
|
- materialName: [{ required: true, message: '请输入物料名称', trigger: 'blur' }],
|
|
|
- catalogNo: [{ required: true, message: '请输入货号', trigger: 'blur' }],
|
|
|
- batchNo: [{ required: true, message: '请输入批号', trigger: 'blur' }],
|
|
|
- manufacturer: [{ required: true, message: '请输入厂家', trigger: 'blur' }],
|
|
|
- expireDate: [{ required: true, message: '请选择过期日期', trigger: 'change' }],
|
|
|
- unitPrice: [{ required: true, message: '请输入单价', trigger: 'blur' }],
|
|
|
- amount: [{ required: true, message: '请输入金额', trigger: 'blur' }],
|
|
|
- inQty: [{ required: true, message: '请输入数量', trigger: 'blur' }]
|
|
|
- }
|
|
|
+ const editRules: FormRules = {}
|
|
|
|
|
|
async function loadRows() {
|
|
|
loading.value = true
|
|
|
@@ -272,7 +262,7 @@
|
|
|
editForm.manufacturer = ''
|
|
|
editForm.unitPrice = 0
|
|
|
editForm.amount = 0
|
|
|
- editForm.inQty = 1
|
|
|
+ editForm.inQty = 0
|
|
|
editForm.expireDate = ''
|
|
|
editForm.remark = ''
|
|
|
amountTouched.value = false
|
|
|
@@ -318,32 +308,21 @@
|
|
|
}
|
|
|
|
|
|
async function handleSave() {
|
|
|
- const form = editFormRef.value
|
|
|
- if (!form) return
|
|
|
- try {
|
|
|
- await form.validate()
|
|
|
- } catch {
|
|
|
- return
|
|
|
- }
|
|
|
- if (!(Number(editForm.inQty) > 0)) {
|
|
|
- ElMessage.warning('数量必须大于0')
|
|
|
- return
|
|
|
- }
|
|
|
saving.value = true
|
|
|
try {
|
|
|
const payload = {
|
|
|
materialId: editForm.materialId || undefined,
|
|
|
- materialCode: editForm.materialCode.trim(),
|
|
|
- materialName: editForm.materialName.trim(),
|
|
|
+ materialCode: (editForm.materialCode || '').trim(),
|
|
|
+ materialName: (editForm.materialName || '').trim(),
|
|
|
specModel: editForm.specModel?.trim() || undefined,
|
|
|
unit: editForm.unit?.trim() || undefined,
|
|
|
- catalogNo: editForm.catalogNo.trim(),
|
|
|
- batchNo: editForm.batchNo.trim(),
|
|
|
- manufacturer: editForm.manufacturer.trim(),
|
|
|
- unitPrice: Number(editForm.unitPrice),
|
|
|
- amount: Number(editForm.amount),
|
|
|
- inQty: Number(editForm.inQty),
|
|
|
- expireDate: editForm.expireDate,
|
|
|
+ catalogNo: (editForm.catalogNo || '').trim(),
|
|
|
+ batchNo: (editForm.batchNo || '').trim(),
|
|
|
+ manufacturer: (editForm.manufacturer || '').trim(),
|
|
|
+ unitPrice: Number(editForm.unitPrice) || 0,
|
|
|
+ amount: Number(editForm.amount) || 0,
|
|
|
+ inQty: Number(editForm.inQty) || 0,
|
|
|
+ expireDate: editForm.expireDate || undefined,
|
|
|
remark: editForm.remark?.trim() || undefined
|
|
|
}
|
|
|
if (editForm.id) {
|
|
|
@@ -377,3 +356,31 @@
|
|
|
emit('saved')
|
|
|
}
|
|
|
</script>
|
|
|
+
|
|
|
+<style scoped lang="scss">
|
|
|
+ .month-template-toolbar {
|
|
|
+ display: flex;
|
|
|
+ align-items: flex-end;
|
|
|
+ justify-content: space-between;
|
|
|
+ gap: 16px;
|
|
|
+ margin: 16px 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .batch-stock-move-lines-head-left {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 4px;
|
|
|
+ min-width: 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .batch-stock-move-lines-title {
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: 600;
|
|
|
+ color: var(--mint-text, #0f172a);
|
|
|
+ }
|
|
|
+
|
|
|
+ .batch-stock-move-lines-hint {
|
|
|
+ font-size: 12px;
|
|
|
+ color: var(--mint-text-muted, #64748b);
|
|
|
+ }
|
|
|
+</style>
|