招投标管理系统-JAVA.VUE【源码论文】

  博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到

🔎千套JAVA项目实战持续更新中~

🔎百套小程序APP项目实战持续更新中~

🔎百套Python实战项目持续更新中~
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,帮你完成文档

⚠️文末联系方式获取完整资料⚠️

 

3系统设计

    系统设计要提出具体的软件功能及要求,是系统分析后进行的流程。它的主要目的是提供软件开发的思路和具体流程,是系统运行的根本保障。它要确定软件各个模块的功能,并形成相应的流程图,方便设计者思考。同时要将每个模块需要完成的任务详细的表达出来,并对每个模块进行具体化的设计分析,提供相当数量的设计方案,再通过设计者的详细分析和比对,选择出最佳的方案进行设计开发。并对相应的方案进行验证和拓展。

3.1系统功能结构

3.1.1系统结构图

系统结构图可以把杂乱无章的模块按照设计者的思维方式进行调整排序,可以让设计者在之后的添加,修改程序内容的过程中有一个很明显的思维方向。同时结构图还可以让设计者以外的其他人更直观的看出整个系统的设计理论和设计过程。让系统的设计变的更直观。该系统的功能架构图如图3-1所示:

             

        图3-1 招投标管理系统功能结构图

3.2数据库设计

3.2.1 数据库概念设计

从系统运行完整的角度出发,设置相应的实体,明确各实体之间的联系。下面列举整个系统中涉及核心功能的实体:

  1. 评标专家信息实体

图3-2评标专家信息实体图

  1. 投标单位信息实体

图3-3投标单位信息实体图

  1. 归档保存实体

图3-4归档保存实体图

4、评标记录实体

图3-5 评标记录实体图

3.2.2数据逻辑结构

在综合了以上对系统的设计,和对数据库的分析,同时结合了以往对数据库的使用经验后,构建了以下几张表,以下为每张表的内容:

3-1:投标单位

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

toubiaodanwei

varchar

200

投标单位

mima

varchar

200

密码

lianxiren

varchar

200

联系人

toubiaojibie

varchar

200

投标级别

bangongdizhi

varchar

200

办公地址

jingyingfanwei

varchar

200

经营范围

lianxidianhua

varchar

200

联系电话

表3-2:token表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

userid

bigint

用户id

username

varchar

100

用户名

tablename

varchar

100

表名

role

varchar

100

角色

token

varchar

200

密码

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

expiratedtime

timestamp

过期时间

CURRENT_TIMESTAMP

表3-3:关于我们

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

标题

subtitle

varchar

200

副标题

content

longtext

4294967295

内容

picture1

longtext

4294967295

图片1

picture2

longtext

4294967295

图片2

picture3

longtext

4294967295

图片3

表3-4:收藏表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

userid

bigint

用户id

refid

bigint

商品id

tablename

varchar

200

表名

name

varchar

200

名称

picture

longtext

4294967295

图片

type

varchar

200

类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注)

1

inteltype

varchar

200

推荐类型

remark

varchar

200

备注

表3-5:评标专家

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

zhuanjiaxingming

varchar

200

专家姓名

mima

varchar

200

密码

touxiang

longtext

4294967295

头像

nianling

int

年龄

zhicheng

varchar

200

职称

lianxifangshi

varchar

200

联系方式

表3-6:评标记录

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

zhaobiaomingcheng

varchar

200

招标名称

biaoshujiage

int

标书价格

zhaobiaodanwei

varchar

200

招标单位

pingbiaoqingkuang

varchar

200

评标情况

toubiaodanwei

varchar

200

投标单位

pingbiaoneirong

longtext

4294967295

评标内容

pingbiaoriqi

date

评标日期

zhuanjiaxingming

varchar

200

专家姓名

表3-7:公告信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

标题

introduction

longtext

4294967295

简介

picture

longtext

4294967295

图片

content

longtext

4294967295

内容

表3-8:招标项目

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

zhaobiaomingcheng

varchar

200

招标名称

xiangmutupian

longtext

4294967295

项目图片

zhaobiaowenjian

longtext

4294967295

招标文件

biaoshujiage

int

标书价格

buchongshuoming

varchar

200

补充说明

zhaobiaoneirong

longtext

4294967295

招标内容

faburiqi

date

发布日期

zhaobiaodanwei

varchar

200

招标单位

zixundianhua

varchar

200

咨询电话

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

reversetime

datetime

倒计结束时间

表3-9:归档保存

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

guidangdanhao

varchar

200

归档单号

zhaobiaomingcheng

varchar

200

招标名称

zhaobiaodanwei

varchar

200

招标单位

pingbiaoqingkuang

varchar

200

评标情况

toubiaodanwei

varchar

200

投标单位

guidangwenjian

longtext

4294967295

归档文件

guidangshuoming

longtext

4294967295

归档说明

guidangriqi

date

归档日期

crossuserid

bigint

跨表用户id

crossrefid

bigint

跨表主键id

表3-10:招标单位

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

zhaobiaodanwei

varchar

200

招标单位

mima

varchar

200

密码

lianxiren

varchar

200

联系人

zhaobiaozige

longtext

4294967295

招标资格

zixundianhua

varchar

200

咨询电话

bangongdizhi

varchar

200

办公地址

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

表3-14:投标记录

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

toubiaodanhao

varchar

200

投标单号

zhaobiaomingcheng

varchar

200

招标名称

biaoshujiage

int

标书价格

zhaobiaodanwei

varchar

200

招标单位

toubiaoriqi

date

投标日期

toubiaowenjian

longtext

4294967295

投标文件

toubiaoneirong

longtext

4294967295

投标内容

pingbiaozhuangtai

varchar

200

评标状态

toubiaodanwei

varchar

200

投标单位

lianxidianhua

varchar

200

联系电话

crossuserid

bigint

跨表用户id

crossrefid

bigint

跨表主键id

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

4系统详细设计

4.1登录模块设计

这个功能模块用来让工作人员进行后端登录。管理人员通过网站。在输入自己的用户名和密码、角色进行登录,登录后管理人员就可以对后台的信息相关的操作。

首先,设计后端管理的登陆页面。对页面的各个板块进行详细的设计,规划它们的字体大小,背景颜色,字体颜色和板块大小等。还要加上图片,让页面被设计的更加美观。以便让以后需要登陆的管理员可以直观的使用。

4.2管理员功能模块

管理员通过登录页面填写用户名和密码,完成后进行登录,如图4-1所示。

图4-1管理员登录页面

管理员登录进入招投标管理系统的实现可以查看系统首页、个人中心、招标单位管理、评标专家管理、投标单位管理、招标项目管理、投标记录管理、评标记录管理、归档保存管理、系统管理等信息,如图4-2所示。

图4-2管理员功能界面图

管理员点击招标单位管理;在招标单位管理页面对招标单位、联系人、招标资格、咨询电话、办公地址、审核回复、审核状态、审核等信息,进行查询,新增或删除招标单位信息等操作;如图4-3所示。

图4-3招标单位管理界面图

JAVA后端代码实现

package com.controller;
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

源码获取

大家点赞、收藏、关注 ,让更多需要的同学看到

不同开发语言专栏推荐订阅

 🔎千套JAVA项目实战持续更新中~

🔎百套小程序APP项目实战持续更新中~

🔎百套Python实战项目持续更新中~

👇下方有我的微信名片👇

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
oa-list-cell.vue 是一个用于在 OA(Office Automation 办公自动化)系统中展示列表项的 Vue 组件。该组件通常用于显示表格、列表或者其他类型的数据。它的主要作用是根据传入的数据,以特定的样式和布局展示列表项的内容。 oa-list-cell.vue 组件通常包含以下功能: 1. 数据展示:通过接收父组件传入的数据,oa-list-cell.vue 可以动态地展示不同类型的信息,比如文本、图片、数字等。 2. 自定义样式:开发者可以根据具体需求自定义 oa-list-cell.vue 的样式,比如文字大小、颜色、背景等。 3. 交互处理:在需要用户交互的情况下,oa-list-cell.vue 也可以添加点击事件或者其他交互处理函数,以响应用户的操作。 oa-list-cell.vue 组件在 OA 系统中具有较广泛的应用,比如在审批流程中展示审批单据的详情,或者在报表系统中展示数据列表。它的灵活性和可定制性使得开发者可以根据具体业务需求快速构建出适合的数据展示界面。 在开发和使用 oa-list-cell.vue 组件时,需要注意以下几点: 1. 数据传递:确保父组件传递给 oa-list-cell.vue 的数据格式正确,并且包含了必要的信息。 2. 样式设计:根据 OA 系统的整体风格和设计规范,统一 oa-list-cell.vue 的样式,保持界面的整体统一性。 3. 性能优化:在数据量较大的情况下,需要考虑对 oa-list-cell.vue 进行性能优化,以保证页面加载和展示的流畅性。 综上所述,oa-list-cell.vue 是一个用于在 OA 系统中展示列表项的 Vue 组件,通过它可以快速构建出符合业务需求的数据展示界面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值