本章目的:调用API实现页面功能一、安装axiosnpm install --save axiosView Code 二、封装axios调用方法 js/api.jsimport axios from axios;import Vue from vue;let base = http://localhost:8022;axios.def...

本章目的:调用API实现页面功能
一、安装axios


npm install --save axiosView Code
二、封装axios调用方法
js/api.js


import axios from 'axios'; import Vue from 'vue'; let base = 'http://localhost:8022'; axios.defaults.timeout = 20000 // 自定义判断元素类型JS function toType(obj) { return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase() } // 参数过滤函数 function filterNull(o) { for (var key in o) { if (o[key] === null) { delete o[key] } if (toType(o[key]) === 'string') { o[key] = o[key].trim() } else if (toType(o[key]) === 'object') { o[key] = filterNull(o[key]) } else if (toType(o[key]) === 'array') { o[key] = filterNull(o[key]) } } return o } axios.interceptors.request.use( config => { return config }, err => { return Promise.reject(err); } ); // http response 拦截器 axios.interceptors.response.use( response => { return response; }, error => { // 超时请求处理 var originalRequest = error.config; if (error.code == 'ECONNABORTED' && error.message.indexOf('timeout') != -1 && !originalRequest._retry) { Vue.prototype.$message({ message: '请求超时!', type: 'error' }); originalRequest._retry = true return null; } if (error.response) { if (error.response.status == 401) { //需要授权 } // 403 无权限 if (error.response.status == 403) { Vue.prototype.$message({ message: '失败!该操作无权限', type: 'error' }); return null; } // 429 ip限流 if (error.response.status == 429) { Vue.prototype.$message({ message: '刷新次数过多,请稍事休息重试!', type: 'error' }); return null; } } return ""; // 返回接口返回的错误信息 } ); // 角色管理 export const getRoleListPage = params => { return axios.get(`${base}/api/role/get`, { params: params }); }; export const removeRole = params => { return axios.delete(`${base}/api/role/delete`, { params: params }); }; export const editRole = params => { return axios.put(`${base}/api/role/put`, params); }; export const addRole = params => { return axios.post(`${base}/api/role/post`, params ); };View Code
三、页面代码
角色页面 views/User/Roles.vue


<template> <section> <!--工具条--> <el-col :span="24" class="toolbar" style="padding-bottom: 0px;"> <el-form :inline="true" @submit.native.prevent> <el-form-item> <el-input v-model="filters.name" placeholder="请输入内容"></el-input> </el-form-item> <el-button type="primary" @click="getRoles">查询</el-button> <el-button type="primary" @click="handleAdd">新增</el-button> <el-button type="primary" @click="handleEdit">修改</el-button> <el-button type="danger" @click="handleDel">删除</el-button> </el-form> </el-col> <!--列表--> <el-table :data="datalist" highlight-current-row v-loading="listLoading" @current-change="selectCurrentRow" style="width: 100%;"> <el-table-column type="index" width="80"></el-table-column> <el-table-column prop="RoleName" label="角色名" width sortable></el-table-column> <el-table-column prop="Description" label="说明" width sortable></el-table-column> <el-table-column prop="CreateTime" label="创建时间" :formatter="formatCreateTime" width sortable></el-table-column> <el-table-column prop="Enabled" label="状态" width="200" sortable> <template slot-scope="scope"> <el-tag :type="scope.row.Enabled ? 'success' : 'danger'" disable-transitions>{{scope.row.Enabled ? "正常":"禁用"}}</el-tag> </template> </el-table-column> </el-table> <VuePagination ref="vuePagination" :current-page="pagination.currentPage" :pageSize="pagination.pageSize" :totals="pagination.totals" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> <!--编辑界面--> <el-dialog title="编辑" :visible.sync="editFormVisible" v-model="editFormVisible" :close-on-click-modal="false"> <el-form :model="editForm" label-width="80px" :rules="editFormRules" ref="editForm"> <el-form-item label="角色名" prop="RoleName"> <el-input v-model="editForm.RoleName" auto-complete="off"></el-input> </el-form-item> <el-form-item label="状态" prop="Enabled"> <el-select v-model="editForm.Enabled" placeholder="请选择角色状态"> <el-option v-for="item in statusList" :key="item.value" :label="item.name" :value="item.value"></el-option> </el-select> </el-form-item> <el-form-item label="说明" prop="Description"> <el-input v-model="editForm.Description" auto-complete="off"></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click.native="editFormVisible = false">取消</el-button> <el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交</el-button> </div> </el-dialog> <!--新增界面--> <el-dialog title="新增" :visible.sync="addFormVisible" v-model="addFormVisible" :close-on-click-modal="false"> <el-form :model="addForm" label-width="80px" :rules="addFormRules" ref="addForm"> <el-form-item label="角色名" prop="RoleName"> <el-input v-model="addForm.RoleName" auto-complete="off"></el-input> </el-form-item> <el-form-item label="状态" prop="Enabled"> <el-select v-model="addForm.Enabled" placeholder="请选择角色状态"> <el-option label="激活" value="true"></el-option> <el-option label="禁用" value="false"></el-option> </el-select> </el-form-item> <el-form-item label="说明" prop="Description"> <el-input v-model="addForm.Description" auto-complete="off"></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click.native="addFormVisible = false">取消</el-button> <el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button> </div> </el-dialog> </section> </template> <script> import util from "../../js/date"; import { getRoleListPage, removeRole, editRole, addRole } from "../../js/api"; import VuePagination from '@/components/Pager' export default { name: 'Users', components: { "VuePagination": VuePagination }, data() { return { filters: { name: "" }, datalist: [], statusList: [ { name: "激活", value: "true" }, { name: "禁用", value: "false" } ], total: 0, page: 1, listLoading: false, sels: [], //列表选中列 currentRow: null, addDialogFormVisible: false, editFormVisible: false, //编辑界面是否显示 editLoading: false, editFormRules: { RoleName: [{ required: true, message: "请输入角色名", trigger: "blur" }], Enabled: [{ required: true, message: "请选择状态", trigger: "blur" }] }, //编辑界面数据 editForm: { Id: 0, CreateBy: "", RoleName: "", Description: "", Enabled: false }, addFormVisible: false, //新增界面是否显示 addLoading: false, addFormRules: { RoleName: [{ required: true, message: "请输入角色名", trigger: "blur" }], Enabled: [{ required: true, message: "请选择状态", trigger: "blur" }] }, //新增界面数据 addForm: { CreateBy: "", CreateId: 0, RoleName: "", Description: "", Enabled: true }, pagination: { pageSize: 2, // 显示的条数 totals: 0, // 总数 currentPage: 1 // 当前第几页 }, }; }, methods: { // 改变每页的显示数量 handleSizeChange(val) { this.pagination.pageSize = val.pageSize; this.getRoles() }, // 翻页 handleCurrentChange(val) { val.totals = this.pagination.totals; this.pagination = { ...val, }; this.getRoles() }, selectCurrentRow(val) { this.currentRow = val; }, formatCreateTime: function (row, column) { return !row.CreateTime || row.CreateTime == "" ? "" : util.formatDate.format(new Date(row.CreateTime), "yyyy-MM-dd"); }, //获取列表 getRoles() { let _this = this; let para = { page: _this.pagination.currentPage, intPageSize: _this.pagination.pageSize, key: this.filters.name }; this.listLoading = true; getRoleListPage(para).then(res => { this.total = res.data.response.dataCount; this.datalist = res.data.response.data; this.pagination.totals = res.data.response.dataCount; this.pagination.currentPage = res.data.response.data; this.listLoading = false; }); }, //删除 handleDel() { let row = this.currentRow; if (!row) { this.$message({ message: "请选择要删除的一行数据!", type: "error" }); return; } this.$confirm("确认删除该记录吗?", "提示", { type: "warning" }) .then(() => { this.listLoading = true; let para = { id: row.Id }; removeRole(para).then(res => { if (util.isEmt.format(res)) { this.listLoading = false; return; } this.listLoading = false; if (res.data.success) { this.$message({ message: "删除成功", type: "success" }); } else { this.$message({ message: res.data.msg, type: "error" }); } this.getRoles(); }); }) .catch(() => { }); }, //显示编辑界面 handleEdit() { let row = this.currentRow; if (!row) { this.$message({ message: "请选择要编辑的一行数据!", type: "error" }); return; } this.editFormVisible = true; this.editForm = Object.assign({}, row); this.editForm.Enabled = this.editForm.Enabled ? "true" : "false"; }, //显示新增界面 handleAdd() { this.addFormVisible = true; this.addForm = { CreateBy: "", RoleName: "", Enabled: "" }; }, //编辑 editSubmit: function () { this.$refs.editForm.validate(valid => { if (valid) { this.$confirm("确认提交吗?", "提示", {}).then(() => { this.editLoading = true; let para = Object.assign({}, this.editForm); para.Enabled = para.Enabled === 'true'; editRole(para).then(res => { if (util.isEmt.format(res)) { this.editLoading = false; return; } if (res.data.success) { this.editLoading = false; this.$message({ message: res.data.msg, type: "success" }); this.$refs["editForm"].resetFields(); this.editFormVisible = false; this.getRoles(); } else { this.$message({ message: res.data.msg, type: "error" }); } }); }); } }); }, //新增 addSubmit: function () { let _this = this; this.$refs.addForm.validate(valid => { if (valid) { this.$confirm("确认提交吗?", "提示", {}).then(() => { this.addLoading = true; let para = Object.assign({}, this.addForm); //var user = JSON.parse(window.localStorage.user); //if (user && user.uID > 0) { para.CreateId = 1; para.CreateBy = ""; /
沃梦达教程
本文标题为:(十一).netcore+vue axios实现页面功能


猜你喜欢
- 作为iOS开发,这道面试题你能答出来,说明你基础很OK! 2023-09-14
- Android实现轮询的三种方式 2023-02-17
- iOS 对当前webView进行截屏的方法 2023-03-01
- 最好用的ios数据恢复软件:PhoneRescue for Mac 2023-09-14
- SurfaceView播放视频发送弹幕并实现滚动歌词 2023-01-02
- Android实现监听音量的变化 2023-03-30
- Android MaterialButton使用实例详解(告别shape、selector) 2023-06-16
- Android studio实现动态背景页面 2023-05-23
- Flutter实现底部和顶部导航栏 2022-08-31
- 详解flutter engine 那些没被释放的东西 2022-12-04