你先解析一下这页vue代码的修改相关的代码
时间: 2024-12-22 13:21:28 浏览: 6
在这段 Vue 代码中,与“修改”相关的功能主要涉及以下几个部分:
### 1. 修改按钮和权限控制
在表格的操作列中,有一个“修改”按钮,只有当满足某些条件时才会显示:
```html
<el-table-column fixed="right" label="操作" width="200" align="center" header-align="center">
<template slot-scope="scope">
<el-button v-if="allowedEdit(scope.row)" type="primary" size="mini" @click="handleEdit(scope.row)">修改</el-button>
<el-button v-if="allowedReset(scope.row)" type="danger" size="mini" @click="handleReset(scope.row)">数据复原</el-button>
</template>
</el-table-column>
```
### 2. 权限控制方法 `allowedEdit`
`allowedEdit` 方法用于判断是否允许编辑某一行记录:
```javascript
methods: {
allowedEdit(row) {
if (row.batchCreateMode === '自动创建' || row.batchCreateMode === '0') {
return false;
} else {
return row.summaryStatus === '待导入' && row.detailStatus === '待导入' && row.batchStatus === '待处理';
}
},
// 其他方法...
}
```
### 3. 编辑按钮点击事件 `handleEdit`
点击“修改”按钮时,会调用 `handleEdit` 方法,打开一个对话框并填充表单数据:
```javascript
methods: {
handleEdit(row) {
console.log('before-formData', this.formData);
if (row) {
console.log('row ---> ', row);
const [my, mm] = row.periodName.split('-');
this.rowData = { ...row };
this.rowData.documentBatchId = row.documentBatchId;
row.settlementYear = my;
row.settlementMonth = mm;
console.log('formData ---> ', this.formData);
console.log('quarterName ---> ', row.quarterName);
if (row.quarterName !== null) {
const [qy, qq] = row.quarterName.split('Q');
row.quarterYear = qy;
row.quarterNumber = qq;
}
this.formData = row;
}
console.log('handleEdit-row', row);
console.log('after-formData', this.formData);
++this.ubKey;
this.dialogEditVisible = true;
},
// 其他方法...
}
```
### 4. 编辑对话框组件
编辑对话框使用了 `createOrUpdateBatch` 组件,并传递了一些数据:
```html
<el-dialog title="批次修改" :visible.sync="dialogEditVisible" :close-on-click-modal="false" :before-close="cancelEdit" width="50%">
<create-or-update-batch
:key="ubKey"
ref="updateBatchRef"
:original-form-data="formData"
:company-info="companyInfo"
:available-years="availableYears"
:months="months"
:special-items="specialItems"
@closeDialogVisible="closeDialogVisible"
@closeDialogEditVisible="closeDialogEditVisible"
@getData="getData"
@resetForm="resetForm"
/>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="editForm">更新</el-button>
<el-button @click="cancelEdit()">取消</el-button>
</div>
</el-dialog>
```
### 5. 提交编辑表单 `editForm`
点击“更新”按钮时,会调用 `editForm` 方法,提交表单数据:
```javascript
methods: {
editForm() {
this.$refs.updateBatchRef.submitEditBatch();
},
// 其他方法...
}
```
### 6. 取消编辑 `cancelEdit`
点击“取消”按钮时,会调用 `cancelEdit` 方法,关闭对话框并重置表单:
```javascript
methods: {
cancelEdit() {
this.dialogEditVisible = false;
this.resetForm();
},
// 其他方法...
}
```
### 7. 重置表单 `resetForm`
重置表单的方法,用于清除表单中的数据:
```javascript
methods: {
resetForm() {
this.formData = {
documentBatchId: '',
transactionType: '',
settlementYear: '',
settlementMonth: '',
quarterYear: '',
quarterNumber: '',
reinsuranceCompanyCode: '',
reinsuranceContractType: '',
reinsuranceType: '',
yyOrJz: ''
};
},
// 其他方法...
}
```
### 总结
- **修改按钮**:只在满足特定条件时显示。
- **权限控制**:通过 `allowedEdit` 方法判断是否允许编辑。
- **编辑逻辑**:点击“修改”按钮时,打开对话框并填充表单数据。
- **提交编辑**:点击“更新”按钮时,提交表单数据。
- **取消编辑**:点击“取消”按钮时,关闭对话框并重置表单。
这些步骤共同实现了对批次记录的修改功能。
阅读全文