<template>
  <div>
    <div>
      <el-input style='width: 200px' placeholder='查询标题' v-model='title'></el-input>
      <el-button type='primary' style='margin-left: 10px' @click='load(1)'>查询</el-button>
      <el-button type='info' @click='reset'>重置</el-button>
    </div>
    <div style='margin: 10px 0'>
      <el-button type='primary' plain @click='handleAdd'>新增</el-button>
      <el-button type='danger' plain @click='delBatch'>批量删除</el-button>
    </div>
    <el-table :data='tableData' stripe :header-cell-style='{ backgroundColor: 'aliceblue', color: '#666' }' @selection-change='handleSelectionChange'>
      <el-table-column type='selection' width='55' align='center'></el-table-column>
      <el-table-column prop='id' label='序号' width='70' align='center'></el-table-column>
      <el-table-column prop='title' label='标题'></el-table-column>
      <el-table-column prop='content' label='内容' show-overflow-tooltip></el-table-column>
      <el-table-column prop='user' label='发布人'></el-table-column>
      <el-table-column prop='time' label='发布时间'></el-table-column>
      <el-table-column label='是否公开'>
        <template v-slot='scope'>
          <el-switch v-model='scope.row.open' @change='changeOpen(scope.row)'></el-switch>
        </template>
      </el-table-column>
      <el-table-column label='操作' align='center' width='180'>
        <template v-slot='scope'>
          <el-button size='mini' type='primary' plain @click='handleEdit(scope.row)'>编辑</el-button>
          <el-button size='mini' type='danger' plain @click='del(scope.row.id)'>删除</el-button>
        </template>
      </el-table-column>
    </el-table>
<pre><code>&lt;div style='margin: 10px 0'&gt;
  &lt;el-pagination
      @current-change='handleCurrentChange'
      :current-page='pageNum'
      :page-size='pageSize'
      layout='total, prev, pager, next'
      :total='total'&gt;
  &lt;/el-pagination&gt;
&lt;/div&gt;

&lt;el-dialog title='公告信息' :visible.sync='fromVisible' width='40%' :close-on-click-modal='false'&gt;
  &lt;el-form :model='form' label-width='80px' style='padding-right: 20px' :rules='rules' ref='formRef'&gt;
    &lt;el-form-item label='标题' prop='title'&gt;
      &lt;el-input v-model='form.title' placeholder='标题'&gt;&lt;/el-input&gt;
    &lt;/el-form-item&gt;
    &lt;el-form-item label='内容' prop='content'&gt;
      &lt;el-input type='textarea' v-model='form.content' placeholder='内容'&gt;&lt;/el-input&gt;
    &lt;/el-form-item&gt;
  &lt;/el-form&gt;

  &lt;div slot='footer' class='dialog-footer'&gt;
    &lt;el-button @click='fromVisible = false'&gt;取 消&lt;/el-button&gt;
    &lt;el-button type='primary' @click='save'&gt;确 定&lt;/el-button&gt;
  &lt;/div&gt;
&lt;/el-dialog&gt;
</code></pre>
  </div>
</template>
<script>

export default {
  name: 'Notice',
  data() {
    return {
      tableData: [],  // 所有的数据
      pageNum: 1,   // 当前的页码
      pageSize: 5,  // 每页显示的个数
      username: '',
      title: '',
      total: 0,
      fromVisible: false,
      form: {},
      user: JSON.parse(localStorage.getItem('text-user') || '{}'),
      rules: {
        title: [
          { required: true, message: '请输入标题', trigger: 'blur' },
        ],
        content: [
          { required: true, message: '请输入内容', trigger: 'blur' },
        ]
      },
      ids: [],
      content: '',
    }
  },
  created() {
    this.load()
  },
  methods: {
    // changeOpen(form) {
    //   // 调用更新的接口  更新数据到数据库
    //   this.form = JSON.parse(JSON.stringify(form))
    //   this.sendSaveRequest()   // 直接发请求就可以了
    // },
    delBatch() {
      if (!this.ids.length) {
        this.$message.warning('请选择数据')
        return
      }
      this.$confirm('您确认批量删除这些数据吗?', '确认删除', {type: 'warning'}).then(response => {
        this.$request.delete('/notice/delete/batch', { data: this.ids }).then(res => {
          if (res.code === '200') {   // 表示操作成功
            this.$message.success('操作成功')
            this.load(1)
          } else {
            this.$message.error(res.msg)  // 弹出错误的信息
          }
        })
      }).catch(() => {})
    },
    handleSelectionChange(rows) {   // 当前选中的所有的行数据
      this.ids = rows.map(v => v.id)
    },
    del(id) {
      this.$confirm('您确认删除吗?', '确认删除', {type: 'warning'}).then(response => {
        this.$request.delete('/notice/delete/' + id).then(res => {
          if (res.code === '200') {   // 表示操作成功
            this.$message.success('操作成功')
            this.load(1)
          } else {
            this.$message.error(res.msg)  // 弹出错误的信息
          }
        })
      }).catch(() => {})
    },
    handleEdit(row) {   // 编辑数据
      this.form = JSON.parse(JSON.stringify(row))  // 给form对象赋值  注意要深拷贝数据
      this.fromVisible = true   // 打开弹窗
    },
    handleAdd() {   // 新增数据
      this.form = {}  // 新增数据的时候清空数据
      this.fromVisible = true   // 打开弹窗
    },
    save() {   // 保存按钮触发的逻辑  它会触发新增或者更新
      this.$refs.formRef.validate((valid) => {
        if (valid) {
          this.sendSaveRequest()
        }
      })
    },
    sendSaveRequest() {
      this.$request({
        url: this.form.id ? '/notice/update': '/notice/add',
        method: this.form.id ? 'PUT' : 'POST',
        data: this.form
      }).then(res => {
        if (res.code === '200') {  // 表示成功保存
          this.$message.success('保存成功')
          this.load(1)
          this.fromVisible = false
        } else {
          this.$message.error(res.msg)  // 弹出错误的信息
        }
      })
    },
    reset() {
      this.title = ''
      this.load()
    },
    load(pageNum) {  // 分页查询
      if (pageNum)  this.pageNum = pageNum
      this.$request.get('/notice/selectByPage', {
        params: {
          pageNum: this.pageNum,
          pageSize: this.pageSize,
          title: this.title
        }
      }).then(res => {
        this.tableData = res.data.records
        this.total = res.data.total
      })
    },
    handleCurrentChange(pageNum) {
      this.load(pageNum)
    },
  }
}
</script>
<style>
.el-tooltip__popper{ max-width:300px !important; }
</style>

原文地址: http://www.cveoy.top/t/topic/pkAk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录