Vue 单表 CRUD模板 前端

news/2024/12/23 18:04:18 标签: 前端, vue.js, javascript

结合后端CRUD模板食用更佳
后端CRUD模板

js文件 指向了后端的方法

页面基本模板

import request from '@/utils/request'
// 查询关键词列表
export function page(param) {
  return request({
    url: '/systemConfig/page',
    method: 'post',
    params: param
  })
}

// 新增
export function add(param) {
  return request({
    url: '/systemConfig/add',
    method: 'post',
    data: param,
    headers: {
      'Content-Type': 'application/json'
    }
  })
}

// 编辑
export function update(param) {
  return request({
    url: '/systemConfig/update',
    method: 'post',
    data: param,
    headers: {
      'Content-Type': 'application/json'
    }
  })
}

// 删除
export function deleteData(id) {
  return request({
    url: '/systemConfig/delete?id=' + id,
    method: 'get'
  })
}

// 导出
export function exportData(param) {
  return request({
    url: '/systemConfig/export',
    method: 'post',
    data: param,
    headers: {
      'Content-Type': 'application/json'
    },
    responseType: 'blob'
  })
}

//导入
export function importData(formData) {
  return request({
    url: '/systemConfig/import',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}
<template>
  <div class="app-container">
  </div>
 </template>
<script>javascript">

//这些是等会引用的js文件中的方法
import { page, add, update, deleteData,exportData,importData } from '@/api/systemConfig'

export default {
  data() {
    return {
      param: {
        pageIndex: 1,
        pageSize: 10,
        total: 0
      },
      isQuery: false,
      stores: [],
      tableData: [],
      needShowImg: false,
      showImgUrl: '',
      pickerOptions: {
        disabledDate(time) {
          const today = new Date()
          today.setHours(0, 0, 0, 0)
          return time.getTime() > today.getTime()
        }
      },
      addView: false,
      updateView: false,
      systemConfigDto: {
        id: '',
        configName: '',
        configCName: '',
        configValue: '',
        remark: ''
      },
      uploadFileList:[]
    }
  },
  created() {
    this.doQuery()
  },
  methods: {
    doQuery(pageIndex, pageSize) {
    },
    doPageChange(pageIndex) {
      this.doQuery(pageIndex, this.param.pageSize)
    },
    doPageSizeChange(size) {
      this.param.pageSize = size
      this.doQuery(1, this.param.pageSize)
    },
    showImg(url) {
      this.needShowImg = true
      this.showImgUrl = url
    }

  }
}
</script>

功能1:分页:

html页面代码:

 <div>
      <div>
        <span>配置属性:</span>
        <el-input v-model="param.configName" placeholder="" clearable style="width:15%" />
        <span>配置中文名:</span>
        <el-input v-model="param.configCName" placeholder="" clearable style="width:15%" />
        <span>配置属性值:</span>
        <el-input v-model="param.configValue" placeholder="" clearable style="width:15%" />
        <el-button type="primary" :loading="isQuery" @click="doQuery(0)">查询</el-button>
      </div>
      <div style="margin-left: 2rem;margin-top: 6px">
        <el-button type="warning" style="margin-left: 2%" @click="openAddView()">新增</el-button>
        <el-button type="primary" :loading="downloading" @click="doExport()">导出</el-button>
        <el-upload
            style="display: inline-block;margin: 0 10px 0 10px"
            action="#"
            accept="xlsx"
            :auto-upload="false"
            :show-file-list="false"
            :file-list="uploadFileList"
            :on-change="importExcel"
          >
            <el-button :loading="uploading" type="success">导入</el-button>
          </el-upload>  
      </div>
    </div>
    <div>
      <el-table ref="multipleTable" :data="tableData" style="width: 100%;margin-top: 6px" border>
        <el-table-column label="操作" width="160px">
          <template v-slot="scope">
            <el-button type="primary" size="mini" @click="OpenUpdateView(scope.row)">编辑</el-button>
            <el-button type="warning" size="mini" @click="beginDelete(scope.row)">删除</el-button>
          </template>
        </el-table-column>
        <el-table-column label="配置属性" prop="configName" width="240px" />
        <el-table-column label="配置中文名" prop="configCName" width="240px" />
        <el-table-column label="配置属性值" prop="configValue" width="800px" />
        <el-table-column label="备注" prop="remark" width="200px" />
      </el-table>
    </div>
    <el-pagination style="margin-top: 12px;text-align: center" :current-page="param.pageIndex" :total="param.total" background :page-size="param.pageSize" :page-sizes="[10, 20, 30]" layout="total, sizes, prev, pager, next" @current-change="doPageChange" @size-change="doPageSizeChange" />

method方法:

 doQuery(pageIndex, pageSize) {
      if (this.isQuery) {
        return
      }
      this.isQuery = true
      var _this = this
      this.param.pageIndex = pageIndex || 1
      this.param.pageSize = pageSize || 10
      var param = this.param
      //调用引入的page分页方法
      page(param).then(response => {
        _this.tableData = response.data.list
        _this.param.total = response.data.totalCount
        _this.isQuery = false
      })
    },
    doPageChange(pageIndex) {
      this.doQuery(pageIndex, this.param.pageSize)
    },
    doPageSizeChange(size) {
      this.param.pageSize = size
      this.doQuery(1, this.param.pageSize)
    },

功能2:打开弹窗,编辑/新增

只有method代码。html代码已经在上面了。

//打开弹窗:
openAddView() {
      this.systemConfigDto.id = ''
      this.systemConfigDto.configName = ''
      this.systemConfigDto.configCName = ''
      this.systemConfigDto.configValue = ''
      this.systemConfigDto.remark = ''
      this.addView = true
    },
 OpenUpdateView(row) {
      this.systemConfigDto.id = row.id
      this.systemConfigDto.configName = row.configName
      this.systemConfigDto.configCName = row.configCName
      this.systemConfigDto.configValue = row.configValue
      this.systemConfigDto.remark = row.remark
      this.updateView = true
    }, 
 //往后端添加数据 
  beginAdd() {
      if (this.saveLoading) {
        return
      }
      this.saveLoading = true
      const param = {
        configName: this.systemConfigDto.configName,
        configCName: this.systemConfigDto.configCName,
        configValue: this.systemConfigDto.configValue,
        remark: this.systemConfigDto.remark
      }
      const _this = this
      add(param).then(response => {
        _this.saveLoading = false
        _this.$message.success('新增成功')
        _this.addView = false
        _this.doQuery()
      }).catch(error => {
        console.log(error)
        _this.saveLoading = false
      })
    },
     beginUpdate() {
      if (this.saveLoading) {
        return
      }
      this.saveLoading = true
      const param = {
        id: this.systemConfigDto.id,
        configName: this.systemConfigDto.configName,
        configCName: this.systemConfigDto.configCName,
        configValue: this.systemConfigDto.configValue,
        remark: this.systemConfigDto.remark
      }
      const _this = this
      update(param).then(response => {
        _this.saveLoading = false
        _this.$message.success('编辑成功')
        _this.updateView = false
        _this.doQuery()
      }).catch(error => {
        console.log(error)
        _this.saveLoading = false
      })
    },
 

功能3:删除

只有method代码。html代码已经在上面了。

    beginDelete(row) {
      const _this = this
      // 弹出确认对话框
      this.$confirm('确定删除配置属性:' + row.configName, '删除确认', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        // 用户点击了确认,执行删除逻辑
        deleteData(row.id).then(response => {
          _this.saveLoading = false
          _this.$message.success('删除成功')
          _this.doQuery()
        }).catch(error => {
          console.log(error)
          _this.saveLoading = false
        })
      }).catch(() => {
        // 用户点击了取消,不做任何操作
        _this.$message.info('已取消删除操作')
      })
    }

功能4:导出

 doExport() {
      const param = {
        page: this.searchParam.page,
        pageSize: this.searchParam.pageSize,
        title: this.searchParam.title,
        origin: this.searchParam.origin,
        subject: this.searchParam.subject
      }
      exportData (param).then(data => {
      })
    },
    

功能5:导入

    importExcel(file, fileList) {
      const formData = new FormData()
      if (!file) {
        this.$message.error('请上传文件')
        return
      }
      formData.append('file', file.raw)
      const _this = this
      importData(formData).then(response => {
        _this.$message.success('导入成功')
        _this.search(1)
      }).catch(error => {
        console.log(error)
      })
    }

http://www.niftyadmin.cn/n/5796793.html

相关文章

2024年图像处理、多媒体技术与机器学习

重要信息 官网&#xff1a;www.ipmml.org 时间&#xff1a;2024年12月27-29日 地点&#xff1a;中国-大理 简介 2024年图像处理、多媒体技术与机器学习&#xff08;CIPMT 2024&#xff09;将于2024年12月27-29日于中国大理召开。将围绕图像处理与多媒体技术、机器学习等在…

RabbitMQ中的Topic模式

在现代分布式系统中&#xff0c;消息队列&#xff08;Message Queue&#xff09;是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个广泛使用的开源消息代理&#xff0c;支持多种消息传递模式&#xff0c;其中 Topic 模式 是一种灵活且强大的模式&#xff0c;允许生产者…

C++简明教程(文章要求学过一点C语言)(12)

C 编程命名规范 一、引言 在 C 编程中&#xff0c;采用统一且清晰的命名规范对于代码的可读性、可维护性以及团队协作至关重要。良好的命名能够让代码“自解释”&#xff0c;使其他开发者&#xff08;包括未来的自己&#xff09;能够迅速理解代码的意图和功能&#xff0c;减少…

酷黑金色配色 影片素材不过时 色彩丰富 电影主题html

本套大作业共计8个HTML页面&#xff0c;网页中包含&#xff1a;DIVCSS、下拉菜单栏、banner轮播图、图片放大效果、鼠标滑过效果、视频、小图标及按钮设计、登录注册页等&#xff0c;同时设计了logo&#xff1b;本作品花费大量时间去整理素材&#xff0c;大部分素材均使用Photo…

linux定时器操作

目录 1 简单示例2 timer_create方式2.1 SIGEV_SIGNAL信号方式通知2.2 SIGEV_THREAD启动线程方式通知2.3 参数 1 简单示例 #include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <signal.h> #include <unistd.h>void setup_t…

pset4filter less: helpers.c

&#xff08;&#xff14;&#xff09;blur function 简单画图熟悉一下要做什么 可以看到3种情况&#xff0c;顶格&#xff0c;边界&#xff0c;里面如果分开算的话&#xff0c;是真的麻烦&#xff1b;但是当时还真的没有想到更好的&#xff0c;就先写一写&#xff08;此处摘取…

机器学习基础算法 (一)-线性回归

python 环境的配置参考 从零开始&#xff1a;Python 环境搭建与工具配置 线性回归的 Python 实现 线性回归是一种经典的机器学习算法&#xff0c;用于预测连续的目标变量。它假设目标变量和特征之间存在线性关系。本文将详细介绍线性回归的原理、Python 实现、模型评估和调优&…

YOLO-World:Real-Time Open-Vocabulary Object Detection

目录 摘要 Abstract YOLO-World 1 模型架构 1.1 Text Encoder 1.2 YOLO Backbone 2 RepVL-PAN 2.1 T-CSPLayer 2.2 I-Pooling Attention 2.3 预测 3 消融实验 3.1 预训练数据 3.2 RepVL-PAN的消融实验 3.3 文本编码器 4 效果展示 4.1 零样本 4.2 根据词汇表检…