# 狮牙仓库管理系统 **Repository Path**: sleaf123/Lowenzahn ## Basic Information - **Project Name**: 狮牙仓库管理系统 - **Description**: 狮牙仓库管理系统,一个基于Vue 3.0、Spingboot和MySQL的前后端分离仓库管理系统 - **Primary Language**: JavaScript - **License**: WTFPL - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 0 - **Created**: 2022-07-05 - **Last Updated**: 2025-03-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: Vue, SpringBoot, MySQL, MyBatis ## README # README 这是一个前后端分离的项目。 This is a front and rear end separation project. ## 项目示例 *** [Löwenzahn 狮牙仓库管理系统](http://www.elysia.website/lowenzahn/) ## 如何运行 How to run *** ### 数据库 Database *** 安装MySQL或者Mariadb。新建数据库zuizhong,将zuizhong.sql导入数据库 Import the database zuizhong to MySQL. ### 连接 Connection *** 修改 `src/main/resources/application.yml`, 更改MySQL username和password ### 后端 Back End - Spring *** - 用Maven打包项目 ```shell cd ./ mvn clean # 清理已生成文件(可选) mvn package # 打包项目可运行jar ``` - 运行可执行jar文件 ```shell cd ./target java -jar xxx.jar ``` ### 前端 Front end - Vue *** Then is the front end system. This is a Vue project. - 先安装node.js或者bun ```shell cd ./src/webapp/LwenzahnWeb npm i # npm install 或者 bun i ``` - Wait and start. ```shell npm run serve # 或者 bun run serve ``` - 打包成静态网页(可选),可以在根目录得到dist文件夹,打开index.html即可浏览。 ```shell npm run build # 或者 bun run build ``` ## 项目结构 *** 1. 后端项目: Lowenzahn Warehouse Management System src/main下的文件结构 ``` ├─java │ └─com │ └─Lwenzahn │ ├─controller │ │ └─dto │ ├─mapper │ ├─pojo │ └─service │ └─impl └─resources └─mybatis ``` - com.Lwenzahn包是后端项目的逻辑核心,main方法所在的主运行程序文件LwenzahnApplication.java就在这个目录下。 - com.Lwenzahn包下的pojo包是存放描述各角色实体对象(管理员、货物、仓库以及工人)的类文件命名规则为实体类名.java。 - com.Lwenzahn包下的mapper包是声明对各实体对象进行操作的Mapper接口类文件,命名规则为实体类名Mapper.java。当Controller类调用经过MyBatis的@Autowired注解的对应mapper,实际上是调用MyBatis自动生成的查询方法。 - com.Lwenzahn包下的service包是声明对各实体对象所提供的服务的Service接口类文件,命名规则为实体类名Service.java。其实现类则存放在Service包的impl包中,命名规则为实体类名ServiceImpl.java。当Controller类调用经过@Resource注解的Service接口类变量的方法时,实际上是调用实现类的重写方法。 - com.Lwenzahn包下的controller包则是存放操作个各实体对象,能够对实体对象进行转换使得数据前后端传输,并实现前后端分离的Controller类。 - 内置经过MyBatis的@Autowired注解的对应Mapper,或者经过@Resource注解的对应Service。 - 以此为基础提供能响应前端post或get的方法,命名规则为实体类名Controller.java。 - 包下的DTO包为各对应实体的实体子集,仅包含实体的部分属性,以方便调用,命名规则为实体类名DTO.java。 Resouces下目前只有项目配置文件application.yml,其他文件暂时没有任何作用。 2. 前端项目: Lowenzahn Web 由于是修改开源项目而成,而且项目设计也非常工程化,有很多我暂时无力使用和控制的功能。 ``` src ├─api │ └─modules ├─assets ├─components │ ├─dashboard │ ├─layout │ │ └─components │ └─veBaseComponents ├─directives │ └─modules ├─plugins ├─router ├─store │ └─modules │ └─app ├─styles ├─utils └─views └─layoutpages ├─leisure ├─management │ └─components └─system └─components ``` - Api文件夹下面是一些工程配置文件,包括文件形式存储的数据(在modules子文件夹中),以及mock等的配置文件。 - Components文件夹下面是应用于主界面的一些组件的vue文件。 - Plugins文件夹下面是一些用于直接引入axios、element plus等模组并进行基本配置的文件。 - Views文件夹下的layoutpages的management是实际上真正自主可控的部分,包括各个显示页面及其部件(Component子目录下)。大部分的组建的vue文件就在这里。 - Router文件架下面主要是vue router转跳的设置。每一个界面的转跳都需要用到router.push()方法。 - system文件下主要是主界面,其中login.vue是着力修改的文件,并在此文件实现了登录功能的前端部分。基本吃透了这个文件相关的部分。 ## Q&A *** ### How to add typescript to a vue project ### 1. How to transmit data to subcomponents dynamically? Example: We can add key to subComponent in _SuperComponent.vue_: ```html ``` When the value of aKey change, the subComponent will be re-rendered. At this moment, this.Data will be transmitted to subComponent again ### 2. How to automatically refresh a web page in vue3? In vue3 setup is important, so in App.vue, we can write a reload function: ```html ``` And in the target vue file, we can write these: ```html ``` Then we can call reload() statement where we need to refresh the web page. ### 3. How to locate a row in an el-table? At any el-table-column in the el-table, we can run such codes: ```html ``` ### 4. How to init the web pages? Using mounted() function in export default ```html mounted() { // this.getGoods(); // ... // Do what you want to init } ```