|
@@ -3,7 +3,9 @@
|
|
<el-row :gutter="20">
|
|
<el-row :gutter="20">
|
|
<el-col :span="6">
|
|
<el-col :span="6">
|
|
<h2>编辑</h2>
|
|
<h2>编辑</h2>
|
|
- <p class="report-period">申报金额:20000.00元</p>
|
|
|
|
|
|
+ <el-form-item label="调度目的:">
|
|
|
|
+ <el-input v-model="queryParams.purpose" placeholder="请输入内容" clearable></el-input>
|
|
|
|
+ </el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
<el-col :lg="24" :xs="24">
|
|
<el-col :lg="24" :xs="24">
|
|
<el-table :data="tableData" border height="400">
|
|
<el-table :data="tableData" border height="400">
|
|
@@ -42,23 +44,13 @@
|
|
></span>
|
|
></span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="物资单价(元)" prop="unitPrice">
|
|
|
|
|
|
+ <el-table-column label="物资用途" prop="materials">
|
|
<template #default="{ row, $index }">
|
|
<template #default="{ row, $index }">
|
|
<span
|
|
<span
|
|
class="editable-span"
|
|
class="editable-span"
|
|
contenteditable="true"
|
|
contenteditable="true"
|
|
- @blur="saveEdit($index, 'unitPrice', $event.target.innerText)"
|
|
|
|
- v-text="row.unitPrice"
|
|
|
|
- ></span>
|
|
|
|
- </template>
|
|
|
|
- </el-table-column>
|
|
|
|
- <el-table-column label="物资用途" prop="purpose">
|
|
|
|
- <template #default="{ row, $index }">
|
|
|
|
- <span
|
|
|
|
- class="editable-span"
|
|
|
|
- contenteditable="true"
|
|
|
|
- @blur="saveEdit($index, 'purpose', $event.target.innerText)"
|
|
|
|
- v-text="row.purpose"
|
|
|
|
|
|
+ @blur="saveEdit($index, 'materials', $event.target.innerText)"
|
|
|
|
+ v-text="row.materials"
|
|
></span>
|
|
></span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
@@ -84,42 +76,42 @@
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
import { ref, onMounted } from 'vue';
|
|
import { ref, onMounted } from 'vue';
|
|
import { ElTable, ElButton, ElCol, ElRow, ElTableColumn } from 'element-plus';
|
|
import { ElTable, ElButton, ElCol, ElRow, ElTableColumn } from 'element-plus';
|
|
-import { defineProps, defineEmits } from 'vue';
|
|
|
|
|
|
+import axios from 'axios'; // 引入axios
|
|
|
|
|
|
|
|
+// 定义父组件传递的属性
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
eventId: String
|
|
eventId: String
|
|
});
|
|
});
|
|
|
|
|
|
|
|
+// 定义子组件触发的事件
|
|
const emits = defineEmits(['close']);
|
|
const emits = defineEmits(['close']);
|
|
|
|
|
|
-const tableData = ref<any[]>([]);
|
|
|
|
|
|
+// 定义查询参数对象,包含调度目的
|
|
|
|
+const queryParams = ref({
|
|
|
|
+ purpose: '' // 调度目的
|
|
|
|
+});
|
|
|
|
|
|
-const loadFromLocalStorage = () => {
|
|
|
|
- const storedData = localStorage.getItem('tableData');
|
|
|
|
- if (storedData) {
|
|
|
|
- tableData.value = JSON.parse(storedData);
|
|
|
|
- } else {
|
|
|
|
- tableData.value = [
|
|
|
|
- { materialType: '三防物资', materialName: '雨衣', quantity: '100', unitPrice: '5.00', purpose: '2025年汛期储备' },
|
|
|
|
- { materialType: '三防物资', materialName: '水鞋', quantity: '10', unitPrice: '5000.00', purpose: '2025年汛期储备' },
|
|
|
|
- { materialType: '三防物资', materialName: '雨伞', quantity: '50', unitPrice: '100.00', purpose: '2025年汛期储备' }
|
|
|
|
- ];
|
|
|
|
- }
|
|
|
|
-};
|
|
|
|
|
|
+// 表格数据
|
|
|
|
+const tableData = ref([
|
|
|
|
+ { materialType: '三防物资', materialName: '雨衣', quantity: '100', materials: '高州泰利台风前置' },
|
|
|
|
+ { materialType: '三防物资', materialName: '水鞋', quantity: '10', materials: '高州泰利台风前置' },
|
|
|
|
+ { materialType: '三防物资', materialName: '雨伞', quantity: '50', materials: '高州泰利台风前置' }
|
|
|
|
+]);
|
|
|
|
|
|
|
|
+// 添加默认行
|
|
const addDefaultRow = () => {
|
|
const addDefaultRow = () => {
|
|
const newRow = {
|
|
const newRow = {
|
|
materialType: '',
|
|
materialType: '',
|
|
materialName: '',
|
|
materialName: '',
|
|
quantity: '',
|
|
quantity: '',
|
|
- unitPrice: '',
|
|
|
|
- purpose: ''
|
|
|
|
|
|
+ materials: ''
|
|
};
|
|
};
|
|
tableData.value.push(newRow);
|
|
tableData.value.push(newRow);
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+// 保存编辑
|
|
const saveEdit = (index: number, key: string, value: string) => {
|
|
const saveEdit = (index: number, key: string, value: string) => {
|
|
- if (key === 'quantity' || key === 'unitPrice') {
|
|
|
|
|
|
+ if (key === 'quantity') {
|
|
const numValue = parseFloat(value);
|
|
const numValue = parseFloat(value);
|
|
if (isNaN(numValue)) {
|
|
if (isNaN(numValue)) {
|
|
return;
|
|
return;
|
|
@@ -127,22 +119,29 @@ const saveEdit = (index: number, key: string, value: string) => {
|
|
value = numValue.toString();
|
|
value = numValue.toString();
|
|
}
|
|
}
|
|
tableData.value[index][key] = value;
|
|
tableData.value[index][key] = value;
|
|
- localStorage.setItem('tableData', JSON.stringify(tableData.value));
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+// 处理新增一行
|
|
const handleAddRow = () => addDefaultRow();
|
|
const handleAddRow = () => addDefaultRow();
|
|
|
|
|
|
|
|
+// 处理返回
|
|
const handleReturn = () => {
|
|
const handleReturn = () => {
|
|
emits('close');
|
|
emits('close');
|
|
};
|
|
};
|
|
|
|
|
|
-const handleSave = () => {
|
|
|
|
- // 这里可以添加保存到服务器的逻辑
|
|
|
|
- console.log('数据已保存:', tableData.value);
|
|
|
|
|
|
+// 处理保存
|
|
|
|
+const handleSave = async () => {
|
|
|
|
+ try {
|
|
|
|
+ const response = await axios.post('/api/submitData', { data: tableData.value, purpose: queryParams.value.purpose });
|
|
|
|
+ console.log('数据已成功提交:', response.data);
|
|
|
|
+ } catch (error) {
|
|
|
|
+ console.error('提交数据时发生错误:', error);
|
|
|
|
+ }
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+// 页面加载完成后执行
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
- loadFromLocalStorage();
|
|
|
|
|
|
+ // 如果需要从后端加载数据,可以在这里调用相应的API
|
|
});
|
|
});
|
|
</script>
|
|
</script>
|
|
|
|
|