基于springboot vue 校园失物招领平台的设计与实现

博主介绍:专注于Java(springboot ssm springcloud等开发框架) vue  .net  php phython node.js    uniapp小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
更多项目地址 介绍 qq_251836457-CSDN博客
文末下方有源码获取地址

系统预览

  1. 系统设计
    1. 系统架构设计

本校园失物招领平台的架构设计主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。

系统架构如下图所示。

图4-1 系统架构

    1. 系统总体设计

校园失物招领平台总体分为前台用户模块和后台管理员模块。

两个模块表现上是分别独立存在,但是访问的数据库是一样的。每一个模块的功能都是根据先前完成的需求分析,并查阅相关资料后整理制作的。

综上所述,系统功能结构图如下图所示。

图4-2 系统功能结构图

    1. 系统功能设计

登录模块:登录模块是进入系统的入口,所有用户必须登录后才能访问系统。登录需要输入用户名和密码,如果多次尝试登录需要输入验证码。登录时需要选择用户的角色,是一般用户还是管理员登录等。登录成功后,会通过数据库获取用户的权限,并跳转至用户的主页面。

校园资讯模块:可分为校园资讯浏览、校园资讯检索、校园资讯维护三个模块,管理员对校园资讯有维护的权限,发布新的校园资讯、更新已有的校园资讯等。

认领管理模块:认领管理分为认领添加、修改和认领查询。认领信息由丢失者进行修改、添加、删除操作;认领查询由普通用户来执行。

招领管理模块:招领管理分为招领添加、修改和招领查询。招领信息由拾到者进行修改、添加、删除操作;招领查询由普通用户来执行。

    1. 数据库设计
      1. 数据需求分析

从前面可以分析到数据库中最重要的是认领信息,招领信息,公告信息。分析可以得到如下数据描述:

平台用户:用于记录用户的各种信息,包括用户名、密码、姓名、性别、地址、邮箱、联系方式等数据项。

管理员:记录管理员的登录信息。包括用户名,密码,权限等数据项。

认领:存放给认领的内容,包括物品名称、丢失时间、丢失地点、图片、用户名、姓名、性别、联系方式、备注、是否审核等数据项。

招领:存储各种招领信息。包括物品名称、拾取时间、拾取地点、拾取人、联系方式、备注、是否审核等数据项。

校园资讯:存储平台内的校园资讯内容。包括标题,校园资讯内容,时间等数据项。

      1. 数据库概念设计

根据前面的数据流程图,结合系统的功能模块设计,设计出符合系统的各信息实体。

系统ER图如下图所示。

图4-3 系统ER图

      1. 数据库表设计

校园失物招领平台所拥有的数据表有以下:用户信息表,认领信息表,招领信息表,公告表。

由于数据表较多,只展示系统主要数据表,如下表所示。

表access_token (登陆访问时长)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

token_id

int

10

0

N

Y

临时访问牌ID

2

token

varchar

64

0

Y

N

临时访问牌

3

info

text

65535

0

Y

N

4

maxage

int

10

0

N

N

2

最大寿命:默认2小时

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

user_id

int

10

0

N

N

0

用户编号:

表article (文章:用于内容管理系统的文章)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

article_id

mediumint

8

0

N

Y

文章id:[0,8388607]

2

title

varchar

125

0

N

Y

标题:[0,125]用于文章和html的title标签中

3

type

varchar

64

0

N

N

0

文章分类:[0,1000]用来搜索指定类型的文章

4

hits

int

10

0

N

N

0

点击数:[0,1000000000]访问这篇文章的人次

5

praise_len

int

10

0

N

N

0

点赞数

6

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

8

source

varchar

255

0

Y

N

来源:[0,255]文章的出处

9

url

varchar

255

0

Y

N

来源地址:[0,255]用于跳转到发布该文章的网站

10

tag

varchar

255

0

Y

N

标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开

11

content

longtext

2147483647

0

Y

N

正文:文章的主体内容

12

img

varchar

255

0

Y

N

封面图

13

description

text

65535

0

Y

N

文章描述

表article_type (文章分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

smallint

5

0

N

Y

分类ID:[0,10000]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]决定分类显示的先后顺序

3

name

varchar

16

0

N

N

分类名称:[2,16]

4

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

5

description

varchar

255

0

Y

N

描述:[0,255]描述该分类的作用

6

icon

text

65535

0

Y

N

分类图标:

7

url

varchar

255

0

Y

N

外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表auth (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

auth_id

int

10

0

N

Y

授权ID:

2

user_group

varchar

64

0

Y

N

用户组:

3

mod_name

varchar

64

0

Y

N

模块名:

4

table_name

varchar

64

0

Y

N

表名:

5

page_title

varchar

255

0

Y

N

页面标题:

6

path

varchar

255

0

Y

N

路由路径:

7

position

varchar

32

0

Y

N

位置:

8

mode

varchar

32

0

N

N

_blank

跳转方式:

9

add

tinyint

3

0

N

N

1

是否可增加:

10

del

tinyint

3

0

N

N

1

是否可删除:

11

set

tinyint

3

0

N

N

1

是否可修改:

12

get

tinyint

3

0

N

N

1

是否可查看:

13

field_add

text

65535

0

Y

N

添加字段:

14

field_set

text

65535

0

Y

N

修改字段:

15

field_get

text

65535

0

Y

N

查询字段:

16

table_nav_name

varchar

500

0

Y

N

跨表导航名称:

17

table_nav

varchar

500

0

Y

N

跨表导航:

18

option

text

65535

0

Y

N

配置:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表claim_information (认领信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

claim_information_id

int

10

0

N

Y

认领信息ID

2

publish_users

int

10

0

Y

N

0

发布用户

3

contact_number

varchar

64

0

Y

N

联系电话

4

collect_items

varchar

64

0

Y

N

招领物品

5

item_category

varchar

64

0

Y

N

物品类别

6

claiming_users

int

10

0

Y

N

0

认领用户

7

claimants_name

varchar

64

0

Y

N

认领人姓名

8

claim_voucher

varchar

255

0

Y

N

认领凭证

9

claim_instructions

text

65535

0

Y

N

认领说明

10

examine_state

varchar

16

0

N

N

未审核

审核状态

11

examine_reply

varchar

16

0

Y

N

审核回复

12

recommend

int

10

0

N

N

0

智能推荐

13

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

14

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表collect (收藏)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

collect_id

int

10

0

N

Y

收藏ID:

2

user_id

int

10

0

N

N

0

收藏人ID:

3

source_table

varchar

255

0

Y

N

来源表:

4

source_field

varchar

255

0

Y

N

来源字段:

5

source_id

int

10

0

N

N

0

来源ID:

6

title

varchar

255

0

Y

N

标题:

7

img

varchar

255

0

Y

N

封面:

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表comment (评论)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

comment_id

int

10

0

N

Y

评论ID:

2

user_id

int

10

0

N

N

0

评论人ID:

3

reply_to_id

int

10

0

N

N

0

回复评论ID:空为0

4

content

longtext

2147483647

0

Y

N

内容:

5

nickname

varchar

255

0

Y

N

昵称:

6

avatar

varchar

255

0

Y

N

头像地址:[0,255]

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

9

source_table

varchar

255

0

Y

N

来源表:

10

source_field

varchar

255

0

Y

N

来源字段:

11

source_id

int

10

0

N

N

0

来源ID:

表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hits_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

表item_category (物品类别)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

item_category_id

int

10

0

N

Y

物品类别ID

2

item_category

varchar

64

0

Y

N

物品类别

3

recommend

int

10

0

N

N

0

智能推荐

4

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表notice (公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

notice_id

mediumint

8

0

N

Y

公告id:

2

title

varchar

125

0

N

N

标题:

3

content

longtext

2147483647

0

Y

N

正文:

4

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表ordinary_users (普通用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

ordinary_users_id

int

10

0

N

Y

普通用户ID

2

user_name

varchar

64

0

Y

N

用户姓名

3

gender

varchar

64

0

Y

N

性别

4

examine_state

varchar

16

0

N

N

已通过

审核状态

5

recommend

int

10

0

N

N

0

智能推荐

6

user_id

int

10

0

N

N

0

用户ID

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表praise (点赞)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

praise_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

status

bit

1

0

N

N

1

点赞状态:1为点赞,0已取消

表recruitment_information (招领信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

recruitment_information_id

int

10

0

N

Y

招领信息ID

2

publish_users

int

10

0

Y

N

0

发布用户

3

contact_number

varchar

64

0

Y

N

联系电话

4

collect_items

varchar

64

0

Y

N

招领物品

5

item_category

varchar

64

0

Y

N

物品类别

6

picture

varchar

255

0

Y

N

图片

7

pickup_location

varchar

64

0

Y

N

拾物地点

8

pick_up_time

varchar

64

0

Y

N

拾物时间

9

pick_up_quantity

int

10

0

Y

N

0

拾物数量

10

item_introduction

text

65535

0

Y

N

物品简介

11

details

text

65535

0

Y

N

详情

12

hits

int

10

0

N

N

0

点击数

13

praise_len

int

10

0

N

N

0

点赞数

14

recommend

int

10

0

N

N

0

智能推荐

15

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

16

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表slides (轮播图)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

slides_id

int

10

0

N

Y

轮播图ID:

2

title

varchar

64

0

Y

N

标题:

3

content

varchar

255

0

Y

N

内容:

4

url

varchar

255

0

Y

N

链接:

5

img

varchar

255

0

Y

N

轮播图:

6

hits

int

10

0

N

N

0

点击量:

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表upload (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

upload_id

int

10

0

N

Y

上传ID

2

name

varchar

64

0

Y

N

文件名

3

path

varchar

255

0

Y

N

访问路径

4

file

varchar

255

0

Y

N

文件路径

5

display

varchar

255

0

Y

N

显示顺序

6

father_id

int

10

0

Y

N

0

父级ID

7

dir

varchar

255

0

Y

N

文件夹

8

type

varchar

32

0

Y

N

文件类型

表user (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_id

mediumint

8

0

N

Y

用户ID:[0,8388607]用户获取其他与用户相关的数据

2

state

smallint

5

0

N

N

1

账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

3

user_group

varchar

32

0

Y

N

所在用户组:[0,32767]决定用户身份和权限

4

login_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

上次登录时间:

5

phone

varchar

11

0

Y

N

手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

6

phone_state

smallint

5

0

N

N

0

手机认证:[0,1](0未认证|1审核中|2已认证)

7

username

varchar

16

0

N

N

用户名:[0,16]用户登录时所用的账户名称

8

nickname

varchar

16

0

Y

N

昵称:[0,16]

9

password

varchar

64

0

N

N

密码

10

email

varchar

64

0

Y

N

邮箱:

11

email_state

smallint

5

0

N

N

0

邮箱认证:[0,1](0未认证|1审核中|2已认证)

12

avatar

varchar

255

0

Y

N

头像地址:[0,255]

13

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

表user_group (用户组:用于用户前端身份和鉴权)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

group_id

mediumint

8

0

N

Y

用户组ID:[0,8388607]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]

3

name

varchar

16

0

N

N

名称:[0,16]

4

description

varchar

255

0

Y

N

描述:[0,255]描述该用户组的特点或权限范围

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

register

smallint

5

0

Y

N

0

注册位置:

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

  1. 系统实现
    1. 数据库访问层的实现

该系统是通过jdbc和MySQL达成连接的,新建一个jdbc.properties文件来填写与数据库连接所需要的驱动和参数。

jdbc.driverClass=com.MySQL.jdbc.Driver

jdbc.url=jdbc:MySQL://localhost:3306/tsi

jdbc.username=root

jdbc.password=123

第一个参数代表MySQL数据库的驱动,第二个参数代表要连接的数据库,第三个和第四个参数代表数据库连接名和密码。

后台与数据库访问主要是通过HQL语句来进行查询的,查询语句中的表名是表格的实体类名,在这种查询语句中*是不允许使用的,除非适合聚合函数一起使用才可以。

    1. 注册模块的实现

用户在填写数据的时候必须与注册页面上的验证相匹配否则会注册失败,注册页面的表单验证是通过JavaScript进行验证的,用户名的长度必须在6到18之间,邮箱必须带有@符号,密码和密码确认必须相同,你输入的密码,系统会根据你输入密码的强度给出指定的值,电话号码和身份证号码必须要求输入格式与生活相符合,当你前台验证通过的时候你点击注册,表单会将你输入的值通过name值传递给后台并保存到数据库中。

用户注册流程图如下图所示。

图5-1用户注册流程图

用户注册界面如下图所示。

图5-2用户注册界面

    1. 登录模块的实现

主要由两部分组成,登录前的登录界面以及登录后的用户功能界面。登录界面,要求用户输入用户名和密码,当用户名和密码其中一个输入为空时,给出提示“用户名,密码不能为空”。获取用户名和密码后到数据库中查找,如果用户名存在,以及对应的密码正确,则登录成功,否则登录失败。登录失败后给出提示,并把焦点停在文本框中。登录成功后将该次会话的全局变量username设置为用户名。登录成功后进入会员的功能模块,主要有会员基本信息修改,已经发布认领信息管理,发布信息,和退出功能。退出功能是清除全局变量username的值,并跳回到首页。

登录流程图如下图所示。

图5-4登录流程图

用户登录界面如下图所示。

图5-5用户登录界面

    1. 料修改模块的实现

用户登录/注册成功之后可以修改自己的基本信息。修改页面的表单中每一个input的name值都要与实体类中的参数相匹配,在用户点击修改页面的时候,如果改后用户名与数据库里面重复了,页面会提示该用户名已经存在了,否则通过Id来查询用户,并将用户的信息修改为表单提交的数据。

    1. 校园资讯管理模块的实现

如果校园资讯的信息需要修改,管理员可以通过查询校园资讯的基本信息来查询校园资讯,查询校园资讯是通过ajax技术来进行查询的,需要传递校园资讯的标题、编号等参数然后在返回到该页面中,可以选中要修改或删除的那条信息,如果选中了超过一条数据,页面会挑一个窗口提醒只能选择一条数,如果没有选中数据会挑一个窗口题型必须选择一条数据。当选择确认修改的时候,后台会根据传过来的id到数据库查询,并将结果返回到修改页面中,可以在修改页面中修改刚刚选中的信息当点击确认的时候from表单会将修改的数据提交到后台并保存到数据库中,就是说如果提交的数据数据库中存在就修改,否则就保存。

校园资讯展示界面如下图所示。

图5-6校园资讯展示界面

校园资讯管理界面如下图所示。

图5-7校园资讯管理界面

    1. 认领管理模块的实现

此页面的关键是编写认领信息,包括认领编号,名称,详情等。单击提交按钮以完成信息的添加。如果未写入完整的认领信息,例如,如果未写入认领编号,系统将给出相应的错误提示,并且无法成功输入。数据以概念的形式以onsubmit =“return checkForm()”的形式写入以进行检查,checkForm()函数是一种用于写入数据的不同类型的校对方法,是不是为空也是经过form表单中的οnsubmit=”return checkForm()来检查。

管理员点击左侧菜单“认领信息管理”,页面跳转到认领信息管理外观,调用后台认领查询所有认领信息。并将信息密封到数据集合List,绑定到请求对象,然后页面跳转到相应的jsp,显示出认领信息,单击删除按钮完成认领信息的删除。

认领管理流程图如下图所示。

图5-17认领管理流程图

认领添加界面如下图所示。

图5-18认领添加界面

认领管理界面如下图所示。

图5-19认领管理界面

部分代码

<template><el-main class="bg table_wrap"><el-form label-position="right" :model="query" class="form p_4" label-width="120"><el-row><el-col :xs="24" :sm="24" :lg="8" class="el_form_search_wrap"><el-form-item label="招领物品"><el-input v-model="query.collect_items"></el-input></el-form-item></el-col><el-col :xs="24" :sm="24" :lg="8" class="el_form_search_wrap"><el-form-item label="物品类别"><el-select v-model="query.item_category"><el-option v-for="o in list_item_category" :key="o.item_category" :label="o.item_category":value="o.item_category"></el-option></el-select></el-form-item></el-col><el-col :xs="24" :sm="10" :lg="8" class="search_btn_wrap_1"><el-form-item><el-button type="primary" @click="search()" class="search_btn_find">查询</el-button><el-button @click="reset()" style="margin-right: 74px;" class="search_btn_reset">重置</el-button><router-link v-if="user_group == '管理员' || $check_action('/recruitment_information/table','add') || $check_action('/recruitment_information/view','add')" class="el-button el-button--default el-button--primary search_btn_add" to="./view?">添加</router-link><el-button v-if="user_group == '管理员' || $check_action('/recruitment_information/table','del') || $check_action('/recruitment_information/view','del')" class="search_btn_del" type="danger" @click="delInfo()">删除</el-button></el-form-item></el-col></el-row></el-form><el-table :data="list" @selection-change="selectionChange" @sort-change="$sortChange" style="width: 100%" id="dataTable"><el-table-column fixed type="selection" tooltip-effect="dark" width="55"></el-table-column><el-table-column prop="publish_users" @sort-change="$sortChange" label="发布用户"v-if="user_group == '管理员' || $check_field('get','publish_users')" min-width="200"><template slot-scope="scope">{{ get_user_publish_users(scope.row['publish_users']) }}</template></el-table-column><el-table-column prop="contact_number" @sort-change="$sortChange" label="联系电话"v-if="user_group == '管理员' || $check_field('get','contact_number')" min-width="200"></el-table-column><el-table-column prop="collect_items" @sort-change="$sortChange" label="招领物品"v-if="user_group == '管理员' || $check_field('get','collect_items')" min-width="200"></el-table-column><el-table-column prop="item_category" @sort-change="$sortChange" label="物品类别"v-if="user_group == '管理员' || $check_field('get','item_category')" min-width="200"></el-table-column><el-table-column prop="picture" @sort-change="$sortChange" label="图片"v-if="user_group == '管理员' || $check_field('get','picture')" min-width="200"><template slot-scope="scope"><el-image style="width: 100px; height: 100px" :src="$fullUrl(scope.row['picture'])":preview-src-list="[$fullUrl(scope.row['picture'])]"><div slot="error" class="image-slot"><img src="../../../public/img/error.png" style="width: 90px; height: 90px" /></div></el-image></template></el-table-column><el-table-column prop="pickup_location" @sort-change="$sortChange" label="拾物地点"v-if="user_group == '管理员' || $check_field('get','pickup_location')" min-width="200"></el-table-column><el-table-column prop="pick_up_time" @sort-change="$sortChange" label="拾物时间"v-if="user_group == '管理员' || $check_field('get','pick_up_time')" min-width="200"></el-table-column><el-table-column prop="pick_up_quantity" @sort-change="$sortChange" label="拾物数量"v-if="user_group == '管理员' || $check_field('get','pick_up_quantity')" min-width="200"></el-table-column><el-table-column prop="item_introduction" @sort-change="$sortChange" label="物品简介"v-if="user_group == '管理员' || $check_field('get','item_introduction')" min-width="200"></el-table-column><el-table-column prop="details" @sort-change="$sortChange" label="详情"v-if="user_group == '管理员' || $check_field('get','details')" min-width="200"></el-table-column><el-table-column sortable prop="create_time" label="创建时间" min-width="200"><template slot-scope="scope">{{ $toTime(scope.row["create_time"],"yyyy-MM-dd hh:mm:ss") }}</template></el-table-column><el-table-column sortable prop="update_time" label="更新时间" min-width="200"><template slot-scope="scope">{{ $toTime(scope.row["update_time"],"yyyy-MM-dd hh:mm:ss") }}</template></el-table-column><el-table-column fixed="right" label="操作" min-width="120" v-if="user_group == '管理员' || $check_action('/recruitment_information/table','set') || $check_action('/recruitment_information/view','set') || $check_action('/recruitment_information/view','get') || $check_action('/认领/table','add') || $check_action('/认领/view','add')" ><template slot-scope="scope"><router-link class="el-button el-button--small is-plain el-button--success" style="margin: 5px !important;"v-if="user_group == '管理员' || $check_action('/recruitment_information/table','set') || $check_action('/recruitment_information/view','set') || $check_action('/recruitment_information/view','get')":to="'./view?' + field + '=' + scope.row[field]"size="small"><span>详情</span></router-link><router-link v-if="user_group == '管理员' || $check_comment('/recruitment_information/table')" class="el-button el-button--small is-plain el-button--primary":to="'../comment/table?size=10&page=1&source_table=recruitment_information&source_field=' + field + '&source_id=' + scope.row[field]" size="small">查看评论</router-link></template></el-table-column></el-table><!-- 分页器 --><div class="mt text_center"><el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange":current-page="query.page" :page-sizes="[7, 10, 30, 100]" :page-size="query.size"layout="total, sizes, prev, pager, next, jumper" :total="count"></el-pagination></div><!-- /分页器 --><div class="modal_wrap" v-if="showModal"><div class="modal_box"><!-- <div class="modal_box_close" @click="closeModal">X</div> --><p class="modal_box_title">重要提醒</p><p class="modal_box_text">当前有数据达到预警值!</p><div class="btn_box"><span @click="closeModal">取消</span><span @click="closeModal">确定</span></div></div></div></el-main>
</template>
<script>import mixin from "@/mixins/page.js";export default {mixins: [mixin],data() {return {// 弹框showModal: false,// 获取数据地址url_get_list: "~/api/recruitment_information/get_list?like=0",url_del: "~/api/recruitment_information/del?",// 字段IDfield: "recruitment_information_id",// 查询query: {"size": 7,"page": 1,"collect_items": "","item_category": "","login_time": "","create_time": "","orderby": `create_time desc`},// 数据list: [],// 用户列表list_user_publish_users: [],// 物品类别列表list_item_category: [""],}},methods: {// 关闭弹框closeModal(){this.showModal = false;},get_list_before(param){var user_group = this.user.user_group;if(user_group != "管理员"){let sqlwhere = "(";if(user_group=="普通用户"){sqlwhere+= "publish_users = " + this.user.user_id + " or ";}if (sqlwhere.length>1){sqlwhere = sqlwhere.substr(0,sqlwhere.length-4);sqlwhere += ")";param["sqlwhere"] = sqlwhere;}}return param;},/*** 获取物品类别列表*/async get_list_item_category() {var json = await this.$get("~/api/item_category/get_list?");if(json.result){this.list_item_category = json.result.list;}else if (json.error){console.log(json.error);}},/*** 获取普通用户用户列表*/async get_list_user_publish_users() {var json = await this.$get("~/api/user/get_list?user_group=普通用户");if(json.result && json.result.list){this.list_user_publish_users = json.result.list;}else if(json.error){console.error(json.error);}},get_user_publish_users(id){var obj = this.list_user_publish_users.getObj({"user_id":id});var ret = "";if(obj){ret = obj.nickname+"-"+obj.username;// if(obj.nickname){// 	ret = obj.nickname;// }// else{// 	ret = obj.username;// }}return ret;},deleteRow(index, rows) {rows.splice(index, 1);}},created() {this.get_list_user_publish_users();// 初始化物品类别列表this.get_list_item_category();}}
</script><style type="text/css">.bg {background: white;}.form.p_4 {padding: 1rem;}.form .el-input {width: initial;}.mt {margin-top: 1rem;}.text_center {text-align: center;}.float-right {float: right;}.modal_wrap{width: 100vw;height: 100vh;position: fixed;top: 0;left: 0;background: rgba(0,0,0,0.5);z-index: 9999999999;}.modal_wrap .modal_box{width: 400px;height: 200px;background: url("../../assets/modal_bg.jpg") no-repeat center;background-size: cover;position: absolute;top: 50%;left: 50%;margin-left: -200px;margin-top: -100px;border-radius: 10px;}.modal_wrap .modal_box .modal_box_close{font-size: 20px;position: absolute;top: 10px;right: 10px;cursor: pointer;}.modal_wrap .modal_box .modal_box_title{text-align: center;font-size: 18px;margin: 16px auto;color: #fff;border-bottom: 1px solid rgba(117, 116, 116,0.5);padding-bottom: 16px;width: 356px;}.modal_wrap .modal_box .modal_box_text{text-align: center;font-size: 15px;color: #fff;margin-top: 25px;}.modal_wrap .modal_box .btn_box{display: flex;flex-direction: row;justify-content: center;margin-top: 42px;}.modal_wrap .modal_box .btn_box span{display: inline-block;width: 80px;height: 30px;line-height: 30px;text-align: center;border: 1px solid #ccc;font-size: 14px;cursor: pointer;color: #fff;}.modal_wrap .modal_box .btn_box span:nth-child(2){background: #409EFF;color: #fff;border-color: #409EFF;margin-left: 15px;}
</style>
    1. 招领管理模块的实现

根据需求,需要对招领进行添加、删除或修改详情信息。删除或修改招领时,系统根据招领的状态判定为可删除状态下,才会给出删除和修改链接,点击删除链接按钮时,请求到达后台,还会先查询招领状态再次做出判定能否删除。点击修改链接按钮时,会跳转到修改信息的页面,重新填写好数据后,数据提交到后台会对数据库中相应的记录做出修改。

添加招领时,会给出数据填写的页面,该页面根据填写好的招领编号同样会事先发送Ajax请求查询编号是否已存在,数据填写好之后提交到后台,会调用相关服务在数据库中插入记录。

招领管理流程图如下图所示。

图5-20招领管理流程图

招领添加页面设计效果如下图所示。

图5-21招领添加界面

文档源码下载地址

springboot校园失物招领平台.zip资源-CSDN文库

大家点赞、收藏、关注、评论啦  其他的定制服务  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1559317.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

SAP_SD模块-销售订单抬头折扣金额分摊到行项目的业务记录

前言&#xff1a; 本文主要是记录24年9月份支持财务月结过程中&#xff0c;用户提出的一个问题&#xff1a;“为什么KE30有部分物料9月份的销售数量少于FAGLL03H的销售数量&#xff1f;&#xff1f;”&#xff0c;主要包括以下两个内容&#xff1b; 1、问题发生的场景复现&am…

毕设分享 基于协同过滤的电影推荐系统

文章目录 0 简介1 设计概要2 课题背景和目的3 协同过滤算法原理3.1 基于用户的协同过滤推荐算法实现原理3.1.1 步骤13.1.2 步骤23.1.3 步骤33.1.4 步骤4 4 系统实现4.1 开发环境4.2 系统功能描述4.3 系统数据流程4.3.1 用户端数据流程4.3.2 管理员端数据流程 4.4 系统功能设计 …

【hot100-java】二叉树的最近公共祖先

二叉树篇 我觉得是比两个节点的深度&#xff0c;取min&#xff08;一种情况&#xff09; DFS解题。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/ clas…

Apache Flink Dashboard

1、Overview Apache Flink Web Dashboardhttp://110.40.130.231:8081/#/overview 这张图片显示的是Apache Flink的Web UI界面&#xff0c;其中包含了以下几个部分&#xff1a; Available Task Slots: 显示当前可用的任务槽位数量。任务槽位是指Flink集群中可用于运行任务的资…

Django makemigrations时出现ModuleNotFoundError: No module named ‘MySQLdb‘

使用Python 3.11、Django 5.1.2 写完model进行makemigrations时出现报错 查找资料发现说是mysqldb适用于Python2&#xff0c;不支持Python3&#xff1b;python3可以使用pymysql 安装pymsql pip install pymysql 然后要在项目的__init__.py中加如下代码&#xff1a; import …

K8s(学习笔记)

swap分区是什么呀&#xff1f; 什么是ipvs呀&#xff1f; yaml是什么呀&#xff1f;&#xff1f;&#xff1f; p20看不下去了&#xff01;&#xff01;&#xff01;

【LeetCode】修炼之路-0004-Median of Two Sorted Arrays【python】

题目 Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays. The overall run time complexity should be O(log (mn)). Example 1: Input: nums1 [1,3], nums2 [2] Output: 2.00000 Explanation: merged…

SPIE出版-EI会议-人机交互 虚拟现实 <<< 11月杭州

EI、Scopus检索|人机交互与虚拟现实国际会议征稿进行中❗会议已通过SPIE出版❗ 2024人机交互与虚拟现实国际会议 ✅大会时间&#xff1a;2024年11月15-17日 ✅大会地点&#xff1a;中国-杭州 ✅报名/截稿&#xff1a;2024年10月15日&#xff08;团队投稿可享优惠&#xff…

实现std::sort,replace,fill,accumulate,equal等函数

std::sort /// <summary>/// std::sort 是从小到大排列的/// </summary>/// <typeparam name"IteratorClass"></typeparam>/// <typeparam name"ComparingFunctions"></typeparam>/// <param name"itBegin&qu…

基于IDEA+SpringBoot+Vue+Uniapp的投票评选小程序系统的详细设计和实现

2. 详细视频演示 文章底部名片&#xff0c;联系我获取更详细的演示视频 3. 论文参考 4. 项目运行截图 代码运行效果图 代码运行效果图 代码运行效果图 代码运行效果图 代码运行效果图 5. 技术框架 5.1 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框…

大数据毕业设计选题推荐-B站热门视频数据分析-Python数据可视化-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

AI助力农作物自动采摘,基于嵌入式端超轻量级模型LeYOLO全系列【n/s/m/l】参数模型开发构建作物生产场景下番茄采摘检测计数分析系统

去年十一那会无意间刷到一个视频展示的就是德国机械收割机非常高效自动化地24小时不间断地在超广阔的土地上采摘各种作物&#xff0c;专家设计出来了很多用于采摘不同农作物的大型机械&#xff0c;看着非常震撼&#xff0c;但是我们国内农业的发展还是相对比较滞后的&#xff0…

计算机的错误计算(一百一十八)

摘要 探讨一个不动点的计算精度问题。 不动点是一类特殊的循环迭代。它有形式 例1. 已知迭代[1] 计算 显然&#xff0c;每个 均为 0.5 . 不妨在Visual Studio 2010 下用下列C语言代码计算&#xff1a; #include <stdio.h> #include <math.h>int main() {do…

【大语言模型-论文速读】GPT的不确定性判断

【大语言模型-论文精读】GPT’s Judgements Under Uncertainty Authors: Payam Saeedi and Mahsa Goodarzi 论文&#xff1a;https://arxiv.org/pdf/2410.02820 文章标题翻译 GPT的不确定性判断 Payam Saeedi Rochester Institute of Technology Mahsa Goodarzi The State …

【exp报错注入】

整数范围 最大整数 exp 函数介绍 报错盲注注入 payload分析 709C-ASCII 值就等于我们下面的 7091-1 &#xff0c;C就是我们要猜的值&#xff0c;当我们猜测的值和ASCII码相等时&#xff0c;那么exp就不会出现报错&#xff0c;因为1-1还是等于709&#xff1a; 练习 id1 an…

【AIGC】OpenAI API在快速开发中的实践与应用:优化ChatGPT提示词Prompt加速工程

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;使用最新型号确保最佳实践利用最新模型进行高效任务处理为什么要选择最新模型&#xff1f;结论 &#x1f4af;指令与上下文的分隔最佳实践分隔指令和上下文的重要性使用符…

Win32 API 控制台鼠标操作、坐标获取与相关函数介绍

Win32 API 控制台鼠标操作、坐标获取与相关函数介绍 一、前置介绍读取控制台输入缓冲区数据 ReadConsoleInput 函数控制台输入缓冲区中的输入事件 INPUT_RECORD 结构鼠标输入事件 MOUSE_EVENT_RECORD 结构更改输入模式 SetConsoleMode 函数 二、鼠标坐标获取(以下代码环境为 VS…

PCL 3D-SIFT关键点检测(Z方向梯度约束

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 SIFT关键点检测 2.1.2 可视化函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff08;长期更新&#…

SQL优化 where谓词条件OR优化

1.测试表&#xff0c;及测试语句where条件中OR对应两个字段选择度很高 create table t618 as select * from dba_objects; select object_name from t618 where (object_id12043 or DATA_OBJECT_ID12043) and STATUSVALID; 2.没有索引情况下&#xff0c;全表扫描逻辑读…

C++核心编程和桌面应用开发 第九天(静态多态 动态多态 纯虚函数 抽象类 虚析构 纯虚析构 向上向下类型转换 重载重写重定义)

目录 1.1静态多态 1.2动态多态 1.2.1满足条件 1.2.2动态多态的使用条件 1.3纯虚函数和抽象类 1.3.1纯虚函数 1.3.2抽象类 1.4虚析构/纯虚析构 1.5向上向下类型转换 1.5.1向下类型转换 1.5.2向上类型转换 1.5.3多态中的类型转换 1.6重载重写重定义 1.6.1重载 1.6…