<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=&quot;margin: 10px 0&quot;&gt;
  &lt;el-pagination
      @current-change=&quot;handleCurrentChange&quot;
      :current-page=&quot;pageNum&quot;
      :page-size=&quot;pageSize&quot;
      layout=&quot;total, prev, pager, next&quot;
      :total=&quot;total&quot;&gt;
  &lt;/el-pagination&gt;
&lt;/div&gt;

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

  &lt;div slot=&quot;footer&quot; class=&quot;dialog-footer&quot;&gt;
    &lt;el-button @click=&quot;fromVisible = false&quot;&gt;取 消&lt;/el-button&gt;
    &lt;el-button type=&quot;primary&quot; @click=&quot;save&quot;&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>
<p>为什么这个vue组件新增不了,add请求报500错误
package com.example.springboot.controller;</p>
<p>import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.springboot.common.Result;
import com.example.springboot.entity.Notice;
import com.example.springboot.entity.User;
import com.example.springboot.service.NoticeService;
import com.example.springboot.service.UserService;
import com.example.springboot.utils.TokenUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;</p>
<p>import java.util.List;</p>
<p>@RestController
@RequestMapping(&quot;/notice&quot;)
public class NoticeController {</p>
<pre><code>@Autowired
NoticeService noticeService;

@Autowired
UserService userService;

/**
 * 新增信息
 */
@PostMapping(&quot;/add&quot;)
public Result add(@RequestBody Notice notice) {
    User currentUser = TokenUtils.getCurrentUser();  // 获取到当前登录的用户信息
    notice.setUserid(currentUser.getId());
    notice.setTime(DateUtil.now());  //   2023-09-12 21:09:12
    noticeService.save(notice);
    return Result.success();
}

/**
 * 修改信息
 */
@PutMapping(&quot;/update&quot;)
public Result update(@RequestBody Notice notice) {
    noticeService.updateById(notice);
    return Result.success();
}

/**
 * 删除信息
 */
@DeleteMapping(&quot;/delete/{id}&quot;)
public Result delete(@PathVariable Integer id) {
    noticeService.removeById(id);
    return Result.success();
}


/**
 * 批量删除信息
 */
@DeleteMapping(&quot;/delete/batch&quot;)
public Result batchDelete(@RequestBody List&lt;Integer&gt; ids) {
    noticeService.removeBatchByIds(ids);
    return Result.success();
}

/**
 * 查询全部信息
 */
@GetMapping(&quot;/selectAll&quot;)
public Result selectAll() {
    List&lt;Notice&gt; userList = noticeService.list(new QueryWrapper&lt;Notice&gt;().orderByDesc(&quot;id&quot;));
    return Result.success(userList);
}

/**
 * 查询用户公告
 */
@GetMapping(&quot;/selectUserData&quot;)
public Result selectUserData() {
    QueryWrapper&lt;Notice&gt; queryWrapper = new QueryWrapper&lt;Notice&gt;().orderByDesc(&quot;id&quot;);
    queryWrapper.eq(&quot;open&quot;,1);
    List&lt;Notice&gt; userList = noticeService.list();
    return Result.success(userList);
}

/**
 * 根据ID查询信息
 */
@GetMapping(&quot;/selectById/{id}&quot;)
public Result selectById(@PathVariable Integer id) {
    Notice notice = noticeService.getById(id);
    User user = userService.getById(notice.getUserid());
    if (user != null) {
        notice.setUser(user.getName());
    }
    return Result.success(notice);
}


/**
 * 多条件模糊查询信息
 * pageNum 当前的页码
 * pageSize 每页查询的个数
 */
@GetMapping(&quot;/selectByPage&quot;)
public Result selectByPage(@RequestParam Integer pageNum,
                           @RequestParam Integer pageSize,
                           @RequestParam String title) {
    QueryWrapper&lt;Notice&gt; queryWrapper = new QueryWrapper&lt;Notice&gt;().orderByDesc(&quot;id&quot;);  // 默认倒序,让最新的数据在最上面
    queryWrapper.like(StrUtil.isNotBlank(title), &quot;title&quot;, title);
    Page&lt;Notice&gt; page = noticeService.page(new Page&lt;&gt;(pageNum, pageSize), queryWrapper);
    List&lt;Notice&gt; records = page.getRecords();
</code></pre>
<p>//        List<User> list = userService.list();
for (Notice record : records) {
Integer authorid = record.getUserid();
User user = userService.getById(authorid);
//            String author = list.stream().filter(u -&gt; u.getId().equals(authorid)).findFirst().map(User::getName).orElse(&quot;&quot;);
if (user != null) {
record.setUser(user.getName());
}
}
return Result.success(page);
}</p>
<p>}
这个是接口,应该如何解决内容:根据提供的代码,新增公告信息时出现500错误的原因可能是以下几点:</p>
<ol>
<li>
<p><code>TokenUtils.getCurrentUser()</code> 返回了null:请确保在请求中附带了正确的身份验证信息,以便获取当前登录的用户信息。</p>
</li>
<li>
<p><code>noticeService.save(notice)</code> 抛出了异常:请检查保存公告信息的方法是否存在任何可能抛出异常的情况,例如数据库连接错误或数据验证失败等。</p>
</li>
<li>
<p>其他错误:请检查应用程序的日志文件以获取更详细的错误信息,并根据错误信息进行调试和排查。</p>
</li>
</ol>
<p>建议您进行逐步调试,确认问题所在,并根据错误信息进行相应的修正。如果问题仍然存在,请提供更多的错误信息或日志,以便我们能够更好地帮助您解决问题。</p>

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

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