|
@@ -17,33 +17,19 @@
|
|
|
<span>{{ $index + 1 }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="仓库" prop="material_type" align="center">
|
|
|
+ <el-table-column label="物资名称" prop="material_name" align="center">
|
|
|
<template #default="scope">
|
|
|
- <el-form-item :prop="'detail.' + scope.$index + '.warehouse_id'" :rules="rules.warehouse_id" disabled>
|
|
|
- <el-select v-model="scope.row.warehouse_id" @change="handleWarehouseChange">
|
|
|
- <el-option v-for="item in warehouseList" :key="item.warehouse_id" :label="item.warehouse_name" :value="item.warehouse_id" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="物资类型" prop="material_type" align="center">
|
|
|
- <template #default="scope">
|
|
|
- <el-form-item :prop="'detail.' + scope.$index + '.material_type'" :rules="rules.material_type" disabled>
|
|
|
- <el-select v-model="scope.row.material_type">
|
|
|
- <el-option v-for="(item, index) in material_type" :key="index" :label="item.label" :value="item.value" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="物资名称" prop="material_code" align="center">
|
|
|
- <template #default="scope">
|
|
|
- <el-form-item :prop="'detail.' + scope.$index + '.material_type'" :rules="rules.material_type">
|
|
|
- <el-select v-model="scope.row.material_code">
|
|
|
- <el-option v-for="(item, index) in materialList" :key="index" :label="item.material_name" :value="item.material_id" />
|
|
|
- </el-select>
|
|
|
+ <el-form-item :prop="'detail.' + scope.$index + '.material_type'" :rules="rules.material_name">
|
|
|
+ <el-input v-model="scope.row.material_name" readonly>
|
|
|
+ <template #append>
|
|
|
+ <el-button @click="handleShowSelect(scope.$index)">选择</el-button>
|
|
|
+ </template>
|
|
|
+ </el-input>
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
+ <el-table-column label="仓库" prop="warehouse_id" align="center" />
|
|
|
+ <el-table-column label="物资类型" prop="material_type" align="center" />
|
|
|
<el-table-column label="物资数量(件)" prop="material_quantity" align="center">
|
|
|
<template #default="scope">
|
|
|
<el-form-item :prop="`detail.${scope.$index}.material_quantity`" :rules="rules.material_quantity">
|
|
@@ -53,14 +39,14 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column label="物资单价(元)" prop="material_unit_price" align="center">
|
|
|
<template #default="scope">
|
|
|
- <el-form-item :prop="'detail.' + scope.$index + '.material_type'" :rules="rules.material_type">
|
|
|
+ <el-form-item :prop="'detail.' + scope.$index + '.material_unit_price'" :rules="rules.material_unit_price">
|
|
|
<el-input v-model="scope.row.material_unit_price" type="number" placeholder="请输入" @input="calcTotalAmount" />
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="物资用途" prop="material_purpose" align="center">
|
|
|
<template #default="scope">
|
|
|
- <el-form-item :prop="'detail.' + scope.$index + '.material_type'" :rules="rules.material_type">
|
|
|
+ <el-form-item :prop="'detail.' + scope.$index + '.material_purpose'" :rules="rules.material_purpose">
|
|
|
<el-input v-model="scope.row.material_purpose" type="textarea" autosize placeholder="请输入" />
|
|
|
</el-form-item>
|
|
|
</template>
|
|
@@ -82,17 +68,18 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <materialTreeSelect v-model="showSelect" @confirm="handleSelectChange" />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
-import { getMaterialList } from '@/api/comprehensiveGuarantee/materialReserveManagement/MaterialStatistics';
|
|
|
import {
|
|
|
createProcurement,
|
|
|
getDeclarationDetail,
|
|
|
updateProcurement
|
|
|
} from '@/api/comprehensiveGuarantee/materialReserveManagement/materialsDeclaration';
|
|
|
import BigNumber from 'bignumber.js';
|
|
|
+import materialTreeSelect from './materialTreeSelect'
|
|
|
import { formatToTwoDecimalPlaces, isNumericString } from '@/utils';
|
|
|
import { getMaterialWarehouseList } from '@/api/comprehensiveGuarantee/materialReserveManagement/godownManagement';
|
|
|
|
|
@@ -101,7 +88,6 @@ const props = defineProps({
|
|
|
});
|
|
|
|
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
|
-const { material_type } = toRefs<any>(proxy?.useDict('material_type'));
|
|
|
const emits = defineEmits(['close']);
|
|
|
|
|
|
const formRef = ref();
|
|
@@ -110,9 +96,7 @@ let detailData = reactive({
|
|
|
detail: []
|
|
|
});
|
|
|
const rules = reactive({
|
|
|
- warehouse_id: [{ required: true, message: '请选择仓库', trigger: 'change' }],
|
|
|
- material_type: [{ required: true, message: '请选择物资类型', trigger: 'change' }],
|
|
|
- material_code: [{ required: true, message: '请选择物资名称', trigger: 'change' }],
|
|
|
+ material_name: [{ required: true, message: '请选择物资名称', trigger: 'change' }],
|
|
|
material_quantity: [{ required: true, message: '请输入物资数量', trigger: 'blur' }],
|
|
|
material_unit_price: [{ required: true, message: '请输入物资单价', trigger: 'blur' }],
|
|
|
material_purpose: [{ required: true, message: '请输入物资用途', trigger: 'blur' }]
|
|
@@ -120,22 +104,7 @@ const rules = reactive({
|
|
|
let buttonLoading = ref(false);
|
|
|
let warehouseList = ref([]);
|
|
|
let materialList = ref([]);
|
|
|
-// 新增一列
|
|
|
-const addDefaultRow = () => {
|
|
|
- const newRow = {
|
|
|
- warehouse_id: '',
|
|
|
- material_type: '',
|
|
|
- material_code: '',
|
|
|
- material_quantity: '',
|
|
|
- material_unit_price: '',
|
|
|
- material_purpose: ''
|
|
|
- };
|
|
|
- detailData.detail.push(newRow);
|
|
|
-};
|
|
|
-// 选择仓库
|
|
|
-const handleWarehouseChange = () => {
|
|
|
|
|
|
-}
|
|
|
// 计算总额
|
|
|
const calcTotalAmount = () => {
|
|
|
let total = new BigNumber('0');
|
|
@@ -148,7 +117,18 @@ const calcTotalAmount = () => {
|
|
|
detailData.declaration_amount = total.toString();
|
|
|
};
|
|
|
|
|
|
-const handleAddRow = () => addDefaultRow();
|
|
|
+const handleAddRow = () => {
|
|
|
+ const newRow = {
|
|
|
+ warehouse_id: '',
|
|
|
+ material_name: '',
|
|
|
+ material_type: '',
|
|
|
+ material_code: '',
|
|
|
+ material_quantity: '',
|
|
|
+ material_unit_price: '',
|
|
|
+ material_purpose: ''
|
|
|
+ };
|
|
|
+ detailData.detail.push(newRow);
|
|
|
+};
|
|
|
|
|
|
const handleReturn = () => {
|
|
|
emits('close');
|
|
@@ -186,6 +166,19 @@ const submitForm = async (formEl) => {
|
|
|
});
|
|
|
};
|
|
|
|
|
|
+let showSelect = ref(false);
|
|
|
+let selectIndex = ref('');
|
|
|
+const handleShowSelect = (index) => {
|
|
|
+ selectIndex.value = index;
|
|
|
+ showSelect.value = true;
|
|
|
+};
|
|
|
+const handleSelectChange = (data) => {
|
|
|
+ detailData.detail[selectIndex.value].material_code = data.id;
|
|
|
+ detailData.detail[selectIndex.value].material_name = data.label;
|
|
|
+ detailData.detail[selectIndex.value].warehouse_id = data.warehouse_id;
|
|
|
+ detailData.detail[selectIndex.value].material_type = data.type;
|
|
|
+};
|
|
|
+
|
|
|
let height = ref(300);
|
|
|
// 计算表格高度
|
|
|
const calcHeight = () => {
|
|
@@ -199,7 +192,7 @@ onMounted(() => {
|
|
|
detailData.detail = res.data.detail;
|
|
|
});
|
|
|
} else {
|
|
|
- addDefaultRow();
|
|
|
+ handleAddRow();
|
|
|
}
|
|
|
getMaterialWarehouseList().then((res) => {
|
|
|
warehouseList.value = res.data;
|
|
@@ -233,4 +226,17 @@ onUnmounted(() => {
|
|
|
.el-form-item {
|
|
|
margin: 18px 0;
|
|
|
}
|
|
|
+:deep(.custom-disabled) {
|
|
|
+ .el-select__wrapper.is-disabled,
|
|
|
+ .el-input__wrapper,
|
|
|
+ .el-textarea__inner {
|
|
|
+ background-color: #ffffff !important;
|
|
|
+ }
|
|
|
+ .el-select__wrapper.is-disabled .el-select__selected-item,
|
|
|
+ .el-input__inner,
|
|
|
+ .el-textarea__inner {
|
|
|
+ color: rgba(0, 0, 0, 0.85) !important;
|
|
|
+ -webkit-text-fill-color: rgba(0, 0, 0, 0.85) !important;
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|