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="单图"></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="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="onSubmit">发表</el-button><el-button>存入草稿</el-button></el-form-item></el-form></div></el-card></div>
</template>
<script>
import { getArticalChannels } from '@/api/artical'export default {data () {return {channels: [],artical: {title: '',content: '',cover: {type: 0,images: []},channel_id: null}}},created () {this.loadChannels()},methods: {onSubmit () {console.log('submit!')},loadChannels () {getArticalChannels().then(({ data }) => {this.channels = data.data.channels})}}
}
</script>
<style></style>

运行结果

前端学习(2451):表单数据的绑定相关推荐

  1. v html是双向绑定吗,vue自定v-model实现表单数据双向绑定问题

    vue.js的一大功能便是实现数据的双向绑定,本文给大家介绍vue自定v-model实现表单数据双向绑定,具体内容如下所示: 子组件代码如下 v-model语法糖 v-model实现了表单输入的双向绑 ...

  2. vue.js的一些事件绑定和表单数据双向绑定

    知识点: v-on:相当于: 例如:v-on:click==@click ,menthods事件绑定 v-on修饰符可以指定键盘事件v-model进行表单数据的双向绑定 <template> ...

  3. extjs4 学习笔记------表单数据上传

    extjs 表单数据上传 js代码 Ext.onReady(function(ite) {// 所有的操作定义在函数showform中var showform = function() {var ad ...

  4. 前端学习之表单验证(超详细)

    表单验证: 主要用于验证input框的非空或者类型是否正确. iView表单验证: 参数详解(html部分): <Form ref="form" :model="f ...

  5. html表单存储功能,纯前端实现保存表单数据功能

    本文作者:IMWeb zzbozheng 未经同意,禁止转载 最近在用管理后台配置数据时,发现辛辛苦苦配置好的表单无缘无故地被覆盖,之后了解到由于我们都是在同一台开发机上做开发,难免会遇到其他同学做数 ...

  6. springMVC带文件的表单数据无法绑定到参数中

    2019独角兽企业重金招聘Python工程师标准>>> 在一个带enctype="multipart/form-data"属性的表单提交时发现,该表单中包含的其他 ...

  7. 前端学习 -- HtmlCss -- 表单

    表单的作用就是用来将用户信息提交给服务器的,比如:百度的搜索框 注册 登录这些操作都需要填写表单. 使用form标签创建一个表单,form标签中必须指定一个action属性,该属性指向的是一个服务器的 ...

  8. 前端学习(2916):事件绑定

  9. 前端学习(2124):双向绑定的案例图示分析

最新文章

  1. poj3692(二分匹配)
  2. 转-完成端口高效的三个原因
  3. Python中join 和 split详解
  4. 分布式与人工智能课程(part13)--模型验证
  5. [CQOI2014]通配符匹配
  6. Ssm手机电脑自适应新闻博客系统实战开发
  7. 【Vue】—动态绑定v-bind
  8. mysql binlog限流问题总结
  9. 来自运维伪大佬的叨叨
  10. 什么?都2021年了还不会ajax嘛,来这里让您快速学会Ajax
  11. window环境下Redies安装和服务启用
  12. android-应用签名
  13. sql列转行(字段)逗号分割
  14. 值得推荐的在线报表设计器
  15. Elasticsearch 映射参数 fields
  16. mentohust联网报错“系统提示:用户使用了不允许的接入方式!(有线网络请选择“有线1x上网”服务)”
  17. ENVI制作土壤干旱墒情专题图/地域干旱分布
  18. 小木虫内蒙古科技大学计算机,2019年内蒙古科技大学招收考研调剂(二)
  19. 2020年英文取名大数据分析及图形化
  20. 《仙剑奇侠传3》仙术合集

热门文章

  1. 显示“打不开“XXX”,因为它来着身份不明的开发者【打开任何来源】
  2. 大数据能力提升项目|学生成果展系列之五
  3. 自考《管理经济学》之宏观理解
  4. 计算机wlan打不开怎么回事,笔记本电脑wlan打不开怎么回事
  5. OpenFaaS实战之二:函数入门
  6. matlab符号矩阵入门
  7. D. Unusual Sequences (数论,质因子分解,dp)
  8. Unusual Minesweeper
  9. KanBan系统WeKan安装和使用
  10. 皇视268四芯最新BIN谁有啊