上个小节我们用Swagger测试过了添加新罚款类型,这节课我们来把前端JS代码写一下。
一、熟悉弹窗页面
新建罚款类型的弹窗页面是amect_type-add-or-update.vue
,该弹窗既可以添加新罚款类型,也可以修改已有的付款类型,属于新增和修改共用的弹窗页面。下面我们来看看弹窗页面的模型层都定义了什么东西?
data: function() {
return {
visible: false,
dataForm: {
id: null,
type: null,
money: null
},
dataRule: {
type: [{ required: true, pattern: '^[a-zA-Z0-9\u4e00-\u9fa5]{2,10}$', message: '违纪类型格式错误' }],
money: [
{
required: true,
pattern: '(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)',
message: '罚款金额格式错误'
}
]
}
};
},
视图层部分的标签页不复杂,整个表单只有两个文本框需要我们输入数据。
<el-dialog
:title="!dataForm.id ? '新增' : '修改'"
v-if="isAuth(['ROOT'])"
:close-on-click-modal="false"
v-model="visible"
width="420px"
>
<el-form :model="dataForm" ref="dataForm" :rules="dataRule" label-width="80px">
<el-form-item label="违纪类型" prop="type">
<el-input v-model="dataForm.type" size="medium" style="width:100%" clearable />
</el-form-item>
<el-form-item label="罚款金额" prop="money">
<el-input v-model="dataForm.money" size="medium" style="width:100%" clearable />
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button size="medium" @click="visible = false">取消</el-button>
<el-button type="primary" size="medium" @click="dataFormSubmit">确定</el-button>
</span>
</template>
</el-dialog>
二、引用弹窗页面
在amect_type.vue
页面,引用了弹窗页面,所以我们才能调用弹窗页面。
<template>
<div v-if="isAuth(['ROOT'])">
……
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="loadDataList"></add-or-update>
……
</div>
</template>
<script>
import AddOrUpdate from './amect_type-add-or-update.vue';
export default {
components: {
AddOrUpdate
},
……
}
</script>
三、提交表单,添加新记录
弹窗页面中的确定按钮绑定了点击事件回调函数,所以我们来把这个函数给声明一下。
<el-button type="primary" size="medium" @click="dataFormSubmit">确定</el-button>
dataFormSubmit: function() {
let that = this;
let data = {
type: that.dataForm.type,
money: that.dataForm.money
};
if (that.dataForm.id) {
data.id = that.dataForm.id;
}
console.log(data);
this.$refs['dataForm'].validate(valid => {
if (valid) {
that.$http(`amect_type/${!that.dataForm.id ? 'insert' : 'update'}`, 'POST', data, true, function(
resp
) {
if (resp.rows > 0) {
that.visible = false;
that.$emit('refreshDataList');
that.$message({
message: '操作成功',
type: 'success',
duration: 1200
});
} else {
that.$message({
message: '操作失败',
type: 'error',
duration: 1200
});
}
});
}
});
}
四、显示弹窗页面
在amect_type.vue
页面中,声明新增按钮的点击事件回调函数,然后大家就可以调试添加新罚款记录功能了。
<el-button size="medium" type="primary" @click="addHandle()">新增</el-button>
addHandle: function() {
this.addOrUpdateVisible = true;
this.$nextTick(() => {
this.$refs.addOrUpdate.init();
});
},