mixins文件夹中的view-module.js

在此js中写一些公用的data配置如:查询条件,分页属性等和table表格有关的data属性

在此js中写一些公用的methods方法如:查询,分页,列表排序,删除,导出,导入方法等操作table表格的方法

import Cookies from 'js-cookie'
import qs from 'qs'
import { mapGetters } from 'vuex'
export default {data() {/* eslint-disable */return {// 设置属性mixinViewModuleOptions: {createdIsNeed: true, // 此页面是否在创建时,调用查询数据列表接口?activatedIsNeed: false, // 此页面是否在激活(进入)时,调用查询数据列表接口?getDataListURL: '', // 数据列表接口,API地址getDataListIsPage: false, // 数据列表接口,是否需要分页?deleteURL: '', // 删除接口,API地址deleteIsBatch: false, // 删除接口,是否需要批量?deleteIsBatchKey: 'id', // 删除接口,批量状态下由那个key进行标记操作?比如:pid,uid...exportURL: '' // 导出接口,API地址},// 默认属性dataForm: {}, // 查询条件dataList: [], // 数据列表order: '', // 排序,asc/descorderField: '', // 排序,字段page: 1, // 当前页码limit: 10, // 每页数total: 0, // 总条数dataListLoading: false, // 数据列表,loading状态dataListSelections: [], // 数据列表,多选项addOrUpdateVisible: false // 新增/更新,弹窗visible状态}/* eslint-enable */},computed: {...mapGetters(['currentActiveTab'])},created() {if (this.mixinViewModuleOptions.createdIsNeed) {if (!this.mixinViewModuleOptions.specialSearch) {this.query()}}},activated() {if (this.mixinViewModuleOptions.activatedIsNeed) {if (!this.mixinViewModuleOptions.specialSearch) {this.query()}}},methods: {// 获取数据列表query() {this.dataListLoading = truethis.$http.get(this.mixinViewModuleOptions.getDataListURL, {params: {order: this.order,orderField: this.orderField,page: this.mixinViewModuleOptions.getDataListIsPage ? this.page : null,limit: this.mixinViewModuleOptions.getDataListIsPage ? this.limit : null,...this.dataForm}}).then(({ data: res }) => {this.dataListLoading = falseif (res.code !== 0) {this.dataList = []this.total = 0return this.$message.error(res.msg)}this.dataList = this.mixinViewModuleOptions.getDataListIsPage ? res.data.list : res.datathis.total = this.mixinViewModuleOptions.getDataListIsPage ? res.data.total : 0}).catch(() => {this.dataListLoading = false})},// 多选dataListSelectionChangeHandle(val) {this.dataListSelections = val},// 排序dataListSortChangeHandle(data) {if (!data.order || !data.prop) {this.order = ''this.orderField = ''return false}this.order = data.order.replace(/ending$/, '')this.orderField = data.prop.replace(/([A-Z])/g, '_$1').toLowerCase()this.query()},// 分页, 每页条数pageSizeChangeHandle(val) {this.page = 1this.limit = valthis.query()},// 分页, 当前页pageCurrentChangeHandle(val) {this.page = valthis.query()},getDataList: function() {this.page = 1console.log(1)this.query()},// 新增 / 修改addOrUpdateHandle(id) {this.activeAC = ''this.addOrUpdateVisible = trueif (id === 1) {this.activeAC = id}this.$nextTick(() => {this.$refs.addOrUpdate.dataForm.id = idthis.$refs.addOrUpdate.init()})// console.log(this.activeAC)},// 删除deleteHandle(id) {if (this.mixinViewModuleOptions.deleteIsBatch && !id && this.dataListSelections.length <= 0) {return this.$message({message: this.$t('prompt.deleteBatch'),type: 'warning',duration: 500})}this.$confirm(this.$t('prompt.info', { 'handle': this.$t('delete') }), this.$t('prompt.title'), {confirmButtonText: this.$t('confirm'),cancelButtonText: this.$t('cancel'),type: 'warning'}).then(() => {this.$http.delete(`${this.mixinViewModuleOptions.deleteURL}${this.mixinViewModuleOptions.deleteIsBatch ? '' : '/' + id}`,this.mixinViewModuleOptions.deleteIsBatch ? {'data': id ? [id] : this.dataListSelections.map(item => item[this.mixinViewModuleOptions.deleteIsBatchKey])} : {}).then(({ data: res }) => {if (res.code !== 0) {return this.$message.error(res.msg)}this.$message({message: this.$t('prompt.success'),type: 'success',duration: 500,onClose: () => {this.query()}})}).catch(() => {})}).catch(() => {})},// 导出exportHandle() {var params = qs.stringify({'token': Cookies.get('token'),...this.dataForm})window.location.href = `${window.SITE_CONFIG['apiURL']}${this.mixinViewModuleOptions.exportURL}?${params}`}}
}

在vue组件中混入view-module.js

<template><el-card class="aui-card--fill" id="suggestion-list" shadow="never"><div class="mod-product__course}"><el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"><el-form-item><el-select clearable placeholder="请选择科目" style="width:220px" v-model="dataForm.category"><el-option :key="'lesson'+index" :label="lesson.dictLabel" :value="lesson.dictValue"v-for="(lesson,index) in lessons" /></el-select></el-form-item><el-form-item><el-input clearable placeholder="请输入搜索内容" v-model="dataForm.content"></el-input></el-form-item><el-form-item><el-button @click="getDataList()">{{ $t('query') }}</el-button></el-form-item></el-form><el-table :data="dataList" @sort-change="dataListSortChangeHandle" border style="width: 100%;"v-loading="dataListLoading"><el-table-column align="center" header-align="center" label="用户" width="250"><template slot-scope="scope">{{scope.row.userEntity?scope.row.userEntity.username:''}}</template></el-table-column><el-table-column align="center" header-align="center" label="时间" prop="createDate" width="250"><template v-slot="{ row }">{{row.createDate | datetime}}</template></el-table-column><el-table-column align="center" header-align="center" label="内容" prop="content"></el-table-column><el-table-column align="center" header-align="center" label="解决状态" prop="solve" sortable="custom" width="200"><template slot-scope="scope"><span>{{scope.row.solve ? '是' : '否'}}</span></template></el-table-column><!-- <el-table-column prop="" label="知识点" header-align="center" align="center"><template slot-scope="scope"><span class="knowledge" @click="showTree(scope.row)">知识点</span></template></el-table-column>--><el-table-column :label="$t('handle')" align="center" fixed="right" header-align="center" width="200"><template v-slot="{ row }"><el-button @click="confirmSolution(row)" size="small" type="text" v-if="row.solve==0">确认解决</el-button><el-button size="small" type="text" v-if="row.solve==1">————</el-button></template></el-table-column></el-table><el-pagination :current-page="page" :page-size="limit" :page-sizes="[10, 20, 50, 100]" :total="total"@current-change="pageCurrentChangeHandle" @size-change="pageSizeChangeHandle"layout="total, sizes, prev, pager, next, jumper"></el-pagination></div><el-dialog :close-on-click-modal="false" :title="$t('course.KnowledgePoints')" :visible.sync="dialog.show"width="30%"><div><el-input placeholder="输入关键字进行过滤" v-model="tree.filterText"></el-input><div class="tree-box"><el-tree :data="tree.data" :filter-node-method="filterNode" :props="tree.defaultProps" class="filter-tree"default-expand-all ref="tree"></el-tree></div></div><span class="dialog-footer" slot="footer"></span></el-dialog></el-card>
</template><script>
import mixinViewModule from '@/mixins/view-module'
import {mapGetters,mapActions
} from 'vuex'
export default {mixins: [mixinViewModule],props: ['category'],data() {return {mixinViewModuleOptions: {getDataListURL: '/prod/product/courseSuggest/courseSuggestList',getDataListIsPage: true,deleteURL: '/prod/product/course',deleteIsBatch: true,createdIsNeed: false},dialog: {show: false},lessons: [],tree: {filterText: '',defaultProps: {children: 'children',label: 'label'},data: []},dataForm: {id: '',category: null},stage: 'stage'}},computed: {...mapGetters(['dictMap', 'dictValueMap'])},watch: {'tree.filterText'(val) {this.$refs.tree.filter(val)}// category(val) {//   if (val) {//     this.dataForm.category = val//     this.query()//   }// }},created() {this.getAllDicts().then(() => {this.lessons = [...this.dictMap['100'].dataList,...this.dictMap['200'].dataList,...this.dictMap['300'].dataList,...this.dictMap['spec'].dataList]})},mounted() {this.query()},methods: {...mapActions(['getAllDicts']),filterNode(value, data) {if (!value) return truereturn data.label.indexOf(value) !== -1},showTree(rowData) {this.dialog.show = true},confirmSolution(rowData) {let confirmSolution = Object.assign({ tbUserId: rowData.userEntity.id }, rowData)this.$http.put('/prod/product/courseSuggest/confirmSolve', confirmSolution).then(res => {if (res.data.code === 0) {this.$message({message: this.$t('prompt.success'),type: 'success'})this.query()} else {this.$message.error(res.data.msg)}})}}
}
</script>
<style lang='scss'></style>

vue后台管理系统中,table表格页面使用mixins【混入自用】相关推荐

  1. 后台管理系统中的登录页面

    通常制作登录页面,主要有几方面内容: 1.登录页面要支持自适应,也就是手机登录和PC端登录,都可以根据分辨率或显示进行自动调整: 2.用户登录的方式:账号.手机验证码.微信扫码登录: 3.如何将登录信 ...

  2. element-ui中table表格页面汇总固定在第一行

    如图 首先需要以下样式--注意加入/deep//deep/ .el-table {display: flex;flex-direction: column;}/deep/ .el-table__bod ...

  3. vue+element后台管理系统(下载excel表格)

    标题 vue后台管理系统下载excel表格 1.调用后台接口传入三个参数,url,data参数,第三个参数为一个对象,表格下载返回类型. 2.创建 Blob实列传入后台返回的数据和以对象形式声明类型参 ...

  4. vue 后台系统中多页面标签

    在后台开发中,常用一种页面标签工具,每次点击菜单栏时,会在页面区域上方增加一个[标签页]如下图,可关闭,可切换页面等功能,常见于后台管理系统中. 以前,我以为这个是利用tabs组件开发的,但是后来看了 ...

  5. vue中table表格导出为图片格式

    vue中table表格点击下载为图片格式 实现思路:给页面中需要导出为图片的内容添加id名,调用封好的方法即可直接导出.以下是具体的实现方法 1.安装依赖 npm install --save htm ...

  6. 哔哩哔哩Allen前端vue后台管理系统笔记

    哔哩哔哩Allen前端vue后台管理系统笔记 Element ui 引入 全局引入 按需引入 嵌套路由 左侧菜单栏的样式 Container布局,左侧菜单栏commonAside组件 commonAs ...

  7. 正确姿势开发vue后台管理系统

    项目地址 vue-admin-webapp 欢迎star,fork 前言 相信许多人和我一样刚接触 vue 时看文档都很枯燥,看完 vue,还有 vueRouter .vuex .vue-cli.es ...

  8. vue后台管理系统搭建

    vue后台管理系统搭建 前提 安装node.js 控制台安装yarn:npm install -g yarn 查看yarn版本:yarn --version 注:-g表示的是全局安装 淘宝镜像安装:n ...

  9. layui table 弹出层刷新_layui 关闭open弹出框 刷新table表格页面的方法

    layui 关闭open弹出框 刷新table表格页面的方法 如下所示: 保存后刷新table表格 源码 //弹出框 layer.open({ type: 2, shadeClose: true, s ...

最新文章

  1. Sqlite3的安装Windows
  2. sort and uniq
  3. 工作108:vue里面wangEdit编辑器使用
  4. [word技巧]把标题、图表题注编号由“一.1”改为“1.1“
  5. 游戏笔记本计算机购买,2021大学生买电脑,容易犯的七种错误!游戏本和轻薄本买哪个?...
  6. 将 EndNote 文献信息导出成 BibTeX 格式(可根据label排序)以及出现三个问号
  7. Silverlight学习笔记四BusyIndicator控件(进度条)
  8. Shiro框架中有三个核心概念:Subject ,SecurityManager和Realms。
  9. SpringBoot+Vue项目校园闲置物品交易系统
  10. 华为OJ-奥运会排行榜C++
  11. 2019年9月全国计算机二级Office题库软件
  12. 《工业控制系统信息安全防护指南》产品措施匹配表
  13. 适合长期电脑办公人群的养生小技巧
  14. android获取设备的型号,Android获取手机设备信息
  15. 配置Oracle到MySQL透明网关
  16. stack.peek
  17. 自由职业者:提高效率的6个简单方法
  18. CAD标注:CAD软件中如何快速进行角度尺寸标注?
  19. 浪潮服务器安装windows2008系统,浪潮NF5280M3安装Windows Server 2008 R2注意事项
  20. 第二章 离散时间信号和系统的时域描述分析 2.2.2 线性时不变系统

热门文章

  1. artisan创建laravel的controller
  2. 学生党平价蓝牙耳机选购指南,2021五大优质蓝牙耳机推荐
  3. uniapp 在onLaunch中,使用redirectTo或reLaunch跳转页面后,点击事件失效解决方法
  4. NFS4中小企业存储实战
  5. 数据链路层协议之点对点协议 PPP
  6. 自定义view的viewpager(网络请求图片)
  7. RestFul接口设计
  8. Win10删除(选择哪些图标显示在任务栏上)上已卸载的软件图标
  9. 学Python必看!今年最火的五大Python框架
  10. jspxcms-模型管理字段开启与禁用