|
@@ -1,11 +1,6 @@
|
|
|
<template>
|
|
|
<div style="width: 100%; padding: 0px 15px">
|
|
|
- <el-form
|
|
|
- :model="formData.data"
|
|
|
- :rules="rules"
|
|
|
- ref="formDom"
|
|
|
- label-position="top"
|
|
|
- >
|
|
|
+ <el-form :model="formData.data" :rules="rules" ref="formDom" label-position="top">
|
|
|
<div class="_t">基础信息</div>
|
|
|
<el-row :gutter="10">
|
|
|
<el-col :span="6">
|
|
@@ -22,114 +17,58 @@
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="采购时间" prop="purchaseTime">
|
|
|
- <el-date-picker
|
|
|
- v-model="formData.data.purchaseTime"
|
|
|
- type="datetime"
|
|
|
- placeholder="请选择"
|
|
|
- />
|
|
|
+ <el-date-picker v-model="formData.data.purchaseTime" type="datetime" placeholder="请选择" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="10">
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="供应商" prop="supplyId">
|
|
|
- <el-select
|
|
|
- v-model="formData.data.supplyId"
|
|
|
- placeholder="请选择"
|
|
|
- @change="handleChangeSupplier"
|
|
|
- filterable
|
|
|
- style="width: 100%"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in supplierData"
|
|
|
- :label="item.name"
|
|
|
- :value="item.id"
|
|
|
- >
|
|
|
+ <el-select v-model="formData.data.supplyId" placeholder="请选择" @change="handleChangeSupplier" filterable
|
|
|
+ style="width: 100%">
|
|
|
+ <el-option v-for="item in supplierData" :label="item.name" :value="item.id">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-form-item label="采购说明" prop="purchaseContent">
|
|
|
- <el-input
|
|
|
- v-model="formData.data.purchaseContent"
|
|
|
- placeholder="请输入"
|
|
|
- type="textarea"
|
|
|
- >
|
|
|
+ <el-input v-model="formData.data.purchaseContent" placeholder="请输入" type="textarea">
|
|
|
</el-input>
|
|
|
</el-form-item>
|
|
|
<div class="_t">采购明细</div>
|
|
|
<el-form-item>
|
|
|
- <el-button
|
|
|
- type="primary"
|
|
|
- @click="openProduct = true"
|
|
|
- style="margin: 10px 0"
|
|
|
- v-if="ids.length == 0"
|
|
|
- >
|
|
|
+ <el-button type="primary" @click="openProduct = true" style="margin: 10px 0" v-if="ids.length == 0">
|
|
|
添加货品
|
|
|
</el-button>
|
|
|
<el-table :data="formData.data.purchaseDetailList">
|
|
|
- <el-table-column
|
|
|
- prop="goodType"
|
|
|
- label="货品类型"
|
|
|
- :formatter="(row) => (row.goodType == 1 ? '产品' : '物料')"
|
|
|
- />
|
|
|
+ <el-table-column prop="goodType" label="货品类型" :formatter="(row) => (row.goodType == 1 ? '产品' : '物料')" />
|
|
|
<el-table-column prop="productCode" label="货品编码" />
|
|
|
<el-table-column prop="productName" label="货品名称" />
|
|
|
<el-table-column prop="productSpec" label="规格型号" />
|
|
|
<el-table-column prop="productUnit" label="单位" />
|
|
|
- <el-table-column
|
|
|
- prop="subscribeCount"
|
|
|
- label="申购数量"
|
|
|
- v-if="ids.length > 0"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="purchaseCount"
|
|
|
- label="已采购数量"
|
|
|
- v-if="ids.length > 0"
|
|
|
- />
|
|
|
+ <el-table-column prop="subscribeCount" label="申购数量" v-if="ids.length > 0" />
|
|
|
+ <el-table-column prop="purchaseCount" label="已采购数量" v-if="ids.length > 0" />
|
|
|
<el-table-column prop="count" label="本次采购" min-width="150">
|
|
|
<template #default="{ row, $index }">
|
|
|
- <el-form-item
|
|
|
- :prop="'purchaseDetailList.' + $index + '.count'"
|
|
|
- :rules="rules.count"
|
|
|
- :inline-message="true"
|
|
|
- >
|
|
|
- <el-input-number
|
|
|
- onmousewheel="return false;"
|
|
|
- v-model="row.count"
|
|
|
- :precision="4"
|
|
|
- :controls="false"
|
|
|
- :min="0"
|
|
|
- @change="handleChangeAmount"
|
|
|
- />
|
|
|
+ <el-form-item :prop="'purchaseDetailList.' + $index + '.count'" :rules="rules.count" :inline-message="true">
|
|
|
+ <el-input-number onmousewheel="return false;" :value="formData.data.purchaseDetailList[$index].count"
|
|
|
+ :precision="4" :controls="false" :min="0" @change="(e) => handleChangeAmount(e, $index, 'count')" />
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="price" label="单价" min-width="150">
|
|
|
<template #default="{ row, $index }">
|
|
|
- <el-form-item
|
|
|
- :prop="'purchaseDetailList.' + $index + '.price'"
|
|
|
- :rules="rules.price"
|
|
|
- :inline-message="true"
|
|
|
- >
|
|
|
- <el-input-number
|
|
|
- onmousewheel="return false;"
|
|
|
- v-model="row.price"
|
|
|
- :precision="4"
|
|
|
- :controls="false"
|
|
|
- :min="0"
|
|
|
- @change="handleChangeAmount"
|
|
|
- />
|
|
|
+ <el-form-item :prop="'purchaseDetailList.' + $index + '.price'" :rules="rules.price" :inline-message="true">
|
|
|
+ <el-input-number onmousewheel="return false;" :value="formData.data.purchaseDetailList[$index].price"
|
|
|
+ :precision="4" :controls="false" :min="0" @change="(e) => handleChangeAmount(e, $index, 'price')" />
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="amount" label="金额" />
|
|
|
<el-table-column prop="zip" label="操作" width="100">
|
|
|
<template #default="{ $index }">
|
|
|
- <el-button type="primary" link @click="handleRemove($index)"
|
|
|
- >删除</el-button
|
|
|
- >
|
|
|
+ <el-button type="primary" link @click="handleRemove($index)">删除</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -137,25 +76,13 @@
|
|
|
<el-row>
|
|
|
<el-col :span="4">
|
|
|
<el-form-item label="采购金额" prop="amount">
|
|
|
- <el-input
|
|
|
- v-model="formData.data.amount"
|
|
|
- placeholder="请输入"
|
|
|
- disabled
|
|
|
- />
|
|
|
+ <el-input v-model="formData.data.amount" placeholder="请输入" disabled />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</el-form>
|
|
|
- <el-dialog
|
|
|
- v-model="openProduct"
|
|
|
- title="选择货品"
|
|
|
- width="70%"
|
|
|
- append-to-body
|
|
|
- >
|
|
|
- <SelectGoods
|
|
|
- @cancel="openProduct = false"
|
|
|
- @pushGoods="pushGoods"
|
|
|
- ></SelectGoods>
|
|
|
+ <el-dialog v-model="openProduct" title="选择货品" width="70%" append-to-body>
|
|
|
+ <SelectGoods @cancel="openProduct = false" @pushGoods="pushGoods"></SelectGoods>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -325,14 +252,16 @@ const handleChangeSupplier = (val) => {
|
|
|
console.log(val, "as");
|
|
|
};
|
|
|
// 计算采购总金额
|
|
|
-const handleChangeAmount = () => {
|
|
|
+const handleChangeAmount = (value, index, key) => {
|
|
|
+ formData.data.purchaseDetailList[index][key] = value;
|
|
|
+ console.log(formData.data.purchaseDetailList[index])
|
|
|
+ formData.data.purchaseDetailList[index].amount = parseFloat(formData.data.purchaseDetailList[index].count * formData.data.purchaseDetailList[index].price).toFixed(4)
|
|
|
let sum = 0;
|
|
|
- for (let i = 0; i < formData.data.purchaseDetailList.length; i++) {
|
|
|
- const e = formData.data.purchaseDetailList[i];
|
|
|
- e.amount = e.count * e.price;
|
|
|
- sum += e.amount;
|
|
|
- }
|
|
|
- formData.data.amount = sum;
|
|
|
+ formData.data.purchaseDetailList.forEach((x) => {
|
|
|
+ sum += x.amount;
|
|
|
+ });
|
|
|
+ formData.data.amount = parseFloat(sum).toFixed(2)
|
|
|
+
|
|
|
};
|
|
|
// 向父组件暴露
|
|
|
defineExpose({
|