request.js

<template>
<div class="artical-container"><!--卡片--><el-card class="filter-card"><div slot="header" class="clearfix"><!--面包屑导航--><el-breadcrumb separator-class="el-icon-arrow-right"><el-breadcrumb-item :to="{ path: 'home' }">首页</el-breadcrumb-item><el-breadcrumb-item>首页管理</el-breadcrumb-item></el-breadcrumb></div><!--数据--><el-form ref="form" :model="form" label-width="40px" size="mini"><el-form-item label="状态"><el-radio-group v-model="status"><el-radio :label="null">全部</el-radio><el-radio :label="0">草稿</el-radio><el-radio :label="1">待审核</el-radio><el-radio :label="2">审核通过</el-radio><el-radio :label="3">审核失败</el-radio><el-radio :label="4">已删除</el-radio></el-radio-group></el-form-item><el-form-item label="频道"><el-select v-model="channelId" placeholder="请选择频道"><el-option label="全部" :value="null"></el-option><el-option :label="channel.name" :value="channel.id" v-for="(channel,index) in channels" :key="index"></el-option></el-select></el-form-item><el-form-item label="日期"><el-date-pickerv-model="rangeDate"type="datetimerange"placeholder="选择日期时间"align="right"format="yyyy-MM-dd"value-format="yyyy-MM-dd"></el-date-picker></el-form-item><el-form-item><el-button type="primary" :disabled="loading" @click="loadArticals(1)">查询</el-button></el-form-item></el-form></el-card><el-card class="filter-card"><div slot="header" class="clearfix">根据筛选条件有{{totalCount}}条结果</div><!--数据列表--><el-table:data="articals"style="width: 100%" stripe size="mini" ><el-table-columnprop="date"label="封面"v-loading="loading"><template slot-scope="scope"><img v-if="scope.row.cover.images[0]" :src="scope.row.cover.images[0]" class="artical-cover" alt=""><img v-else class="artical-cover" src="./pic_bg.png" alt=""></template></el-table-column><el-table-columnprop="title"label="标题"></el-table-column><el-table-columnprop="status"label="状态"><!--如果需要自定义遍历当前数据--><template slot-scope="scope"><el-tag :type="articalsStatus[scope.row.status].type">{{articalsStatus[scope.row.status].text}}</el-tag><!-- <el-tag v-else-if="scope.row.status===1">待审核</el-tag><el-tag v-else-if="scope.row.status===2" type="success">审核通过</el-tag><el-tag v-else-if="scope.row.status===3" type="danger">审核失败</el-tag><el-tag v-else-if="scope.row.status===4" type="info">已删除</el-tag>--></template></el-table-column><el-table-columnprop="pubdate"label="发布时间"></el-table-column><el-table-columnprop="cover"label="操作"><template slot-scope="scope"><el-button size="mini" icon="el-icon-edit" type="primary" circle></el-button><el-button size="mini" icon="el-icon-delete" type="danger" @click="onDeleteArtical(scope.row.id)" circle></el-button></template></el-table-column></el-table><!--分页--><el-pagination class="list-table"layout="prev, pager, next":total="totalCount" :page-size="pageSize":disabled="loading"@current-change="OnCurrentChange" ></el-pagination></el-card></div>
</template>
<script>
import {getArtical,deleteArtical,getArticalChannels
} from '@/api/artical'export default {name: 'ArticalIndex',created () {this.loadArticals(1)this.loadChannels()},data () {return {loading: true,form: {name: '',region: '',date1: '',date2: '',delivery: false,type: [],resource: '',desc: ''},status: null, // 状态为空 查询文章的状态totalCount: 0, // 初始数据pageSize: 20, // 每页大小articals: [], // 记录文章的数据channels: [],channelId: null, // 文章的频道rangeDate: null, // 日期数据articalsStatus: [{ status: 0, text: '草稿', type: 'info' },{ status: 1, text: '待审核', type: '' },{ status: 2, text: '审核通过', type: 'success' },{ status: 3, text: '审核失败', type: 'warning' },{ status: 4, text: '已删除', type: 'danger' }]}},methods: {// 文章删除onDeleteArtical (articleId) {this.$confirm('确认删除吗', '删除提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {/* 要删除的文章id */deleteArtical(articleId.toString()).then(res => {console.log(res)})}).catch(() => {this.$message({type: 'info',message: '已取消删除'})})},onSubmit () {console.log('submit!')},loadArticals (page = 1) {this.loading = truegetArtical({page,per_page: this.pageSize,status: this.status,channel_id: this.channelId,/**  */begin_pubdate: this.rangeDate ? this.rangeDate[0] : null,end_pubdate: this.rangeDate ? this.rangeDate[1] : null}).then(res => {const { results, total_count: totalCount } = res.data.datathis.totalCount = totalCountthis.articals = results// 关闭加载this.loading = false})},loadChannels () {getArticalChannels().then(res => {console.log(res)this.channels = res.data.data.channels})},OnCurrentChange (page) {this.loadArticals(page)}}
}</script>
<style scope lang="less">
.filter-card{margin-bottom: 30px;
}
.list-table{margin-bottom: 20px;
}
.artical-cover{width: 60px;background-size:cover;
}
</style>

app.vue

<template><div id="app"><router-view/></div>
</template>
<script>
export default {name: 'App'
}
</script>
<style lang="less"></style>

index.vue

<template><div class="login-container"><!--必须用el-form进行包裹--><div class="login-head"></div><!--配置表单验证//必须为表单提供验证对象2添加prop属性3通过el-form组件库里面的rules--><el-form class="login-form" ref="login-form" :model="user" :rules="formRules"><el-form-item prop="mobile"><el-input v-model="user.mobile" placeholder="请输入手机号"></el-input></el-form-item><el-form-item prop="code"><el-input v-model="user.code" placeholder="请输入验证码"></el-input></el-form-item><el-form-item prop="agree"><el-checkbox v-model="checked">我已阅读并同意用户协议和隐私条款</el-checkbox></el-form-item><el-form-item><el-button class="login-btn" type="primary" :loading="loginLoading" @click="onLogin">登录</el-button></el-form-item></el-form></div>
</template><script>import { login } from '@/api/user'
export default {name: 'LoginIndex',components: {},props: {},data () {return {user: {mobile: '', // 手机号code: '', // 验证码agree: false// 是否同意协议},loginLoading: false, // 登录的loding状态/*  checked: false, // 是否同意协议 */formRules: {mobile: [{required: true,message: '手机号不能为空',trigger: 'change'},{ pattern: /^1[3|5|7|9]\d{9}$/, message: '请输入正确的号码格式', trigger: 'change' }],code: [{required: true,message: '验证码不能为空',trigger: 'change'},{ pattern: /^\d{6}$/, message: '请输入正确的验证码格式', trigger: 'change' }],agree: [{// 调用validator: (rule, value, callback) => {if (value) {callback()} else {callback(new Error('请同意用户协议'))}},trigger: 'change'}]}}},methods: {onLogin () {// 获取表单数据// const user = this.user// 触发表单验证 validate是异步this.$refs['login-form'].validate((valid, err) => {console.log(valid)console.log(err)// 如果if (!valid) {return}this.login()})},login () {// 开启loadingthis.loginLoading = true// 验证通过// 请求直接封装login(this.user).then(res => {console.log(res)this.$message({message: '登录成功',type: 'success'})this.loginLoading = false}).catch(err => {console.log('登录失败', err)this.$message.error({message: '手机号或者验证码错误',type: 'warning'})this.loginLoading = false})}}}
</script>
<style scoped lang="less">
.login-container{
position: fixed;left: 0;top: 0;right: 0;bottom: 0;display: flex;justify-content: center;align-items: center;flex-direction: column;background: url("./login_bg.jpg") no-repeat;background-size: cover;.login-head{width: 300px;height: 57px;background:url("./logo_index.png") no-repeat;margin-bottom: 30px;}.login-form{background-color: #fff;padding: 50px;min-width: 300px;.login-btn{width: 100%;}}
}
</style>

main.js

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import './styles/index.less'
// 加载组件库
import ElementUI from 'element-ui'
// 加载样式
import 'element-ui/lib/theme-chalk/index.css'
Vue.config.productionTip = false
// 注册组件库
Vue.use(ElementUI)
new Vue({router,render: h => h(App)
}).$mount('#app')

index.js

import Vue from 'vue'
import VueRouter from 'vue-router'
import Login from '@/views/login/index'
Vue.use(VueRouter)// 路由配置表
const routes = [{path: '/login',name: 'login',component: Login
}]
const router = new VueRouter({routes
})export default router

user.js

// 用户登录的请求模块
import request from '@/utils/request'export const login = data => {return request({method: 'POST',url: '/mp/v1_0/authorizations',data})
}// 获取用户信息

index.vue

<template><div class="home-container">首页</div>
</template>
<script>
export default {name: 'HomeIndex',data () {return {}}
}
</script>
<style scoped lang="less"></style>

index.vue

<template><el-container class="layout-container"><el-aside class="aside"><app-aside class="aside-menu"></app-aside></el-aside><el-container><el-header class="header"><div><i class="el-icon-s-fold"></i><span>江苏传智播客科技教育有限公司</span></div><el-dropdown><div class="avatar-wrap"><img class="avatar" src="./avatar.jpg" alt=""><span>歌谣</span><i class="el-icon-arrow-down el-icon--right"></i></div><!--<span>下拉菜单<i class="el-icon-arrow-down el-icon--right"></i></span>--><el-dropdown-menu slot="dropdown"><el-dropdown-item>设置</el-dropdown-item><el-dropdown-item>退出</el-dropdown-item></el-dropdown-menu></el-dropdown></el-header><el-main class="main"><router-view /></el-main></el-container></el-container></template>
<script>
import AppAside from './component/aside'export default {name: 'LayoutIndex',components: { AppAside },component: {AppAside},data () {return {}}
}
</script>
<style scoped lang="less">
.layout-container{position: fixed;left:0;right:0;top:0;bottom: 0;}.aside{width: 100px;background-color: #d3dce6;.aside-menu{height: 100%;}
}
.header{height: 60px;background-color: #b3c0d1;display: flex;justify-content: space-between;align-items: center;border-bottom: 1px solid #ccc;
}
.main{background-color: #e9eef3;
}
.avatar-wrap{display: flex;align-items: center;.avatar{width: 40px;height: 40px;border-radius: 50%;margin-right: 10px;}
}
</style>

aside.vue

<template>
<div class="artical-container"><!--卡片--><el-card class="filter-card"><div slot="header" class="clearfix"><!--面包屑导航--><el-breadcrumb separator-class="el-icon-arrow-right"><el-breadcrumb-item :to="{ path: 'home' }">首页</el-breadcrumb-item><el-breadcrumb-item>首页管理</el-breadcrumb-item></el-breadcrumb></div><!--数据--><el-form ref="form" :model="form" label-width="40px" size="mini"><el-form-item label="状态"><el-radio-group v-model="form.resource"><el-radio label="全部"></el-radio><el-radio label="查找"></el-radio><el-radio label="待审核"></el-radio><el-radio label="审核通过"></el-radio><el-radio label="审核失败"></el-radio><el-radio label="已删除"></el-radio></el-radio-group></el-form-item><el-form-item label="频道"><el-select v-model="form.region" placeholder="请选择频道"><el-option label="区域一" value="shanghai"></el-option><el-option label="区域二" value="beijing"></el-option></el-select></el-form-item><el-form-item label="日期"><el-date-pickerv-model="form.date1"type="datetime"placeholder="选择日期时间"align="right"></el-date-picker></el-form-item><el-form-item><el-button type="primary" @click="onSubmit">查询</el-button></el-form-item></el-form></el-card><el-card class="filter-card"><div slot="header" class="clearfix">根据筛选条件有1314520条结果</div><!--数据列表--><el-table:data="articals"style="width: 100%" stripe size="mini" ><el-table-columnprop="date"label="封面"></el-table-column><el-table-columnprop="title"label="标题"></el-table-column><el-table-columnprop="status"label="状态"><!--如果需要自定义遍历当前数据--><template slot-scope="scope"><el-tag v-if="scope.row.status===0">草稿</el-tag><el-tag v-else-if="scope.row.status===1">待审核</el-tag><el-tag v-else-if="scope.row.status===2" type="success">审核通过</el-tag><el-tag v-else-if="scope.row.status===3" type="danger">审核失败</el-tag><el-tag v-else-if="scope.row.status===4" type="info">已删除</el-tag></template></el-table-column><el-table-columnprop="pubdate"label="发布时间"></el-table-column><el-table-columnprop="cover"label="操作"><template><el-button size="mini" icon="el-icon-edit" type="primary" circle></el-button><el-button size="mini" icon="el-icon-delete" type="danger" circle></el-button></template></el-table-column></el-table><!--分页--><el-pagination class="list-table"layout="prev, pager, next":total="1000"></el-pagination></el-card></div>
</template>
<script>
import { getArtical } from '@/api/artical'export default {name: 'ArticalIndex',created () {this.loadArticals()},data () {return {form: {name: '',region: '',date1: '',date2: '',delivery: false,type: [],resource: '',desc: ''},articals: [] // 记录文章的数据}},methods: {onSubmit () {console.log('submit!')},loadArticals () {getArtical().then(res => {console.log(res)console.log(res)console.log(res)this.articals = res.data.data.results})}}
}</script>
<style scope lang="less">
.filter-card{margin-bottom: 30px;
}
.list-table{margin-bottom: 20px;
}
</style>

content--->index.vue

<template>
<div class="artical-container"><!--卡片--><el-card class="filter-card"><div slot="header" class="clearfix"><!--面包屑导航--><el-breadcrumb separator-class="el-icon-arrow-right"><el-breadcrumb-item :to="{ path: 'home' }">首页</el-breadcrumb-item><el-breadcrumb-item>首页管理</el-breadcrumb-item></el-breadcrumb></div><!--数据--><el-form ref="form" :model="form" label-width="40px" size="mini"><el-form-item label="状态"><el-radio-group v-model="status"><el-radio :label="null">全部</el-radio><el-radio :label="0">草稿</el-radio><el-radio :label="1">待审核</el-radio><el-radio :label="2">审核通过</el-radio><el-radio :label="3">审核失败</el-radio><el-radio :label="4">已删除</el-radio></el-radio-group></el-form-item><el-form-item label="频道"><el-select v-model="channelId" placeholder="请选择频道"><el-option label="全部" :value="null"></el-option><el-option :label="channel.name" :value="channel.id" v-for="(channel,index) in channels" :key="index"></el-option></el-select></el-form-item><el-form-item label="日期"><el-date-pickerv-model="rangeDate"type="datetimerange"placeholder="选择日期时间"align="right"format="yyyy-MM-dd"value-format="yyyy-MM-dd"></el-date-picker></el-form-item><el-form-item><el-button type="primary" :disabled="loading" @click="loadArticals(1)">查询</el-button></el-form-item></el-form></el-card><el-card class="filter-card"><div slot="header" class="clearfix">根据筛选条件有{{totalCount}}条结果</div><!--数据列表--><el-table:data="articals"style="width: 100%" stripe size="mini" ><el-table-columnprop="date"label="封面"v-loading="loading"><template slot-scope="scope"><img v-if="scope.row.cover.images[0]" :src="scope.row.cover.images[0]" class="artical-cover" alt=""><img v-else class="artical-cover" src="./pic_bg.png" alt=""></template></el-table-column><el-table-columnprop="title"label="标题"></el-table-column><el-table-columnprop="status"label="状态"><!--如果需要自定义遍历当前数据--><template slot-scope="scope"><el-tag :type="articalsStatus[scope.row.status].type">{{articalsStatus[scope.row.status].text}}</el-tag><!-- <el-tag v-else-if="scope.row.status===1">待审核</el-tag><el-tag v-else-if="scope.row.status===2" type="success">审核通过</el-tag><el-tag v-else-if="scope.row.status===3" type="danger">审核失败</el-tag><el-tag v-else-if="scope.row.status===4" type="info">已删除</el-tag>--></template></el-table-column><el-table-columnprop="pubdate"label="发布时间"></el-table-column><el-table-columnprop="cover"label="操作"><template slot-scope="scope"><el-button size="mini" icon="el-icon-edit" type="primary" circle></el-button><el-button size="mini" icon="el-icon-delete" type="danger" @click="onDeleteArtical(scope.row.id)" circle></el-button></template></el-table-column></el-table><!--分页--><el-pagination class="list-table"layout="prev, pager, next":total="totalCount" :page-size="pageSize":disabled="loading"@current-change="OnCurrentChange" ></el-pagination></el-card></div>
</template>
<script>
import {getArtical,deleteArtical,getArticalChannels
} from '@/api/artical'export default {name: 'ArticalIndex',created () {this.loadArticals(1)this.loadChannels()},data () {return {loading: true,form: {name: '',region: '',date1: '',date2: '',delivery: false,type: [],resource: '',desc: ''},status: null, // 状态为空 查询文章的状态totalCount: 0, // 初始数据pageSize: 20, // 每页大小articals: [], // 记录文章的数据channels: [],channelId: null, // 文章的频道rangeDate: null, // 日期数据articalsStatus: [{ status: 0, text: '草稿', type: 'info' },{ status: 1, text: '待审核', type: '' },{ status: 2, text: '审核通过', type: 'success' },{ status: 3, text: '审核失败', type: 'warning' },{ status: 4, text: '已删除', type: 'danger' }]}},methods: {// 文章删除onDeleteArtical (articleId) {this.$confirm('确认删除吗', '删除提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {/* 要删除的文章id */deleteArtical(articleId)}).catch(() => {this.$message({type: 'info',message: '已取消删除'})})},onSubmit () {console.log('submit!')},loadArticals (page = 1) {this.loading = truegetArtical({page,per_page: this.pageSize,status: this.status,channel_id: this.channelId,/**  */begin_pubdate: this.rangeDate ? this.rangeDate[0] : null,end_pubdate: this.rangeDate ? this.rangeDate[1] : null}).then(res => {const { results, total_count: totalCount } = res.data.datathis.totalCount = totalCountthis.articals = results// 关闭加载this.loading = false})},loadChannels () {getArticalChannels().then(res => {console.log(res)this.channels = res.data.data.channels})},OnCurrentChange (page) {this.loadArticals(page)}}
}</script>
<style scope lang="less">
.filter-card{margin-bottom: 30px;
}
.list-table{margin-bottom: 20px;
}
.artical-cover{width: 60px;background-size:cover;
}
</style>

publish-->index.vue

<template><!--card插件--><div class="publish-container"><el-card class="box-card"><div slot="header" class="clearfix"><el-breadcrumb separator-class="el-icon-arrow-right"><el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item><el-breadcrumb-item>发布文章</el-breadcrumb-item></el-breadcrumb><el-form ref="form" :model="artical" label-width="80px"><el-form-item label="标题"><el-input v-model="artical.title"></el-input></el-form-item><el-form-item label="内容"><el-input type="textarea" v-model="artical.content"></el-input></el-form-item><el-form-item label="封面"><el-radio-group v-model="artical.cover.type"><el-radio :label="1">单图</el-radio><el-radio :label="3">三图</el-radio><el-radio :label="0">无图</el-radio><el-radio :label="-1">自动</el-radio></el-radio-group></el-form-item><el-form-item label="频道"><el-select v-model="artical.channel_id" placeholder="请选择频道"><el-option :label="channel.name" :value="channel.id"v-for="(channel,index) in channels" :key="index"></el-option></el-select></el-form-item><el-form-item><el-button type="primary" @click="onPublish(false)">发表</el-button><el-button @click="onPublish(true)">存入草稿</el-button></el-form-item></el-form></div></el-card></div>
</template>
<script>
import { getArticalChannels, addArtical } from '@/api/artical'export default {name: 'PublishIndex',data () {return {channels: [],artical: {title: '',content: '',cover: {type: 1,images: []},channel_id: null}}},created () {this.loadChannels()if (this.$route.query.id) {this.loadArticals()}},methods: {onPublish (draft = false) {addArtical(this.artical, draft).then(res => {console.log(res)this.$message({message: '发布成功',type: 'success'})})},loadChannels () {getArticalChannels().then(({ data }) => {this.channels = data.data.channels})},loadArticals () {console.log(1)}}
}
</script>
<style></style>

运行结果

前端学习(2482):关于接口的调错相关推荐

  1. 前端学习(3089):vue+element今日头条管理-关于接口的调错

  2. 前端学习(2481):关于接口的调错

  3. 调用后台接口返回报错前端隐藏提示_腾讯社交联盟广告

    开发者帮助中心 优量汇服务体系升级了,除查阅本页常见问题外,还可以通过以下渠道解决您遇到的问题 1. 实时智能客服 入口:优量汇官网.开发者平台.优量汇服务号 时间:7*24即时问答 服务内容:涵盖 ...

  4. 调用后台接口返回报错前端隐藏提示_从零开始的Android新项目9 - 前端用后台接口设计...

    这回来讲讲后台接口的设计. 可能有同学会觉得后台的接口和我们大前端开发有什么关系?试想一下,在碰到一些不合理的接口设计的时候,你们开发是否觉得很别扭--需要为了坑爹的接口写很多脏代码引坑?甚至,这么开 ...

  5. 有理有据:一篇来自前端同学对后端接口的吐槽!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | juejin.im/post/5cfbe8c7 ...

  6. 前端学习总结,经验分享,项目经验分享过程

    前言 来,和魔王哪吒总结一下,分享一下自己对前端学习总结,经验分享,以及写过的项目经验分享过程. 如果觉得还不错的话,浏览的过程中,需要您: 点赞,分享,评论 有钱的捧个钱场,没钱的捧个人场 技术实践 ...

  7. 一篇来自前端同学对后端接口的吐槽:痛!

    前言 去年的某个时候就想写一篇关于接口的吐槽,当时后端提出了接口方案对于我来说调用起来非常难受,但又说不上为什么,没有论点论据所以也就作罢.最近因为写全栈的缘故,团队内部也遇到了一些关于接口设计的问题 ...

  8. webstorm前端调用后端接口_一篇前端同学对后端接口的吐槽

    来源:juejin.im/post/5cfbe8c7e51d4556da53d07f 前言 去年的某个时候就想写一篇关于接口的吐槽,当时后端提出了接口方案对于我来说调用起来非常难受,但又说不上为什么, ...

  9. 一篇来自前端同学对后端接口的吐槽

    来自:掘金,作者:李熠 链接:https://juejin.im/post/5cfbe8c7e51d4556da53d07f 前言 去年的某个时候就想写一篇关于接口的吐槽,当时后端提出了接口方案对于我 ...

最新文章

  1. 一个winform带你玩转rabbitMQ
  2. nginx limit_rate突然限速失败
  3. BCP BIA DRP 灾后业务连续性方案简述
  4. 【MFC三天一个游戏】之 局域网黑白棋
  5. C++:MFC SetTimer定时执行某一函数;
  6. ubuntu如何实现双屏显示(转)
  7. Scala数组和Java集合List的互转
  8. JAVA知识基础(二):基本语法
  9. python当前日期加n天_利用python获取当前日期前后N天或N月日期的方法示例
  10. python asyncio_Python中asyncio神器的入门
  11. ue设置MySQL_MySQL的安装与配置——详细教程 - Winton-Q
  12. oracle pl sql面试题,SQL面试:PL/SQL面试问题和答案大全
  13. 微信调试弹出报错信息
  14. adobe bridge cs6怎么卸载_Adobe Bridge CS6 使用教程(一)
  15. 80386常用内部寄存器
  16. http的响应码200,404,302,500表示的含义分别是?
  17. 1.Modbus通信协议-什么是Modbus?
  18. Linux下清理删除last登录日志
  19. 我是怎样的一个人感悟
  20. 为什么将机器学习应用于资产定价?

热门文章

  1. Cross-Site Scripting(XSS)的类型
  2. wpf 去除按钮点击时会画一个点线的矩形
  3. Weblogic EJB 学习笔记(2)精
  4. linux core无权限,linux – 为什么编辑core_pattern受限制?
  5. 调用接口返回500_公交卡余额查询接口开放使用啦!
  6. 塔塔建网站服务器,塔塔帝国忘记哪个区怎么办
  7. python怎样连续输入两个数字_python实现输入数字的连续加减
  8. java jespa_Jespa实际运用的一点心得
  9. jsp页面页面post传值_几种JSP页面传值方式
  10. React Native获取设备信息组件