# 智慧社区管理系统-核心信息管理-02物业收费管理

news2024/12/23 20:19:11

一 后端

1:entity

package com.woniu.community.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class PropertyInfo {
    private int  id;
    private int typeId;
    private Double money;
    private String startDate;
    private String endDate;
    private Integer status;
    private int houseId;
    private  String remarks;
    private String numbers;
    private String userName;
    private String typeName;


}

2:PropertyInfoMapper

package com.woniu.community.mapper;

import com.woniu.community.entity.PropertyInfo;

import java.util.List;

public interface PropertyInfoMapper {
    List<PropertyInfo> selectAll(int start,int size ,String numbers,Integer status);
    int  count(String numbers,Integer status);
    int  insertPropertyInfo(PropertyInfo propertyInfo);
    int  deletePropertyInfo(int id);
    int updatePropertyInfo(PropertyInfo propertyInfo);
    PropertyInfo getById(int id);
}

3:IPropertyInfoService

package com.woniu.community.service;

import com.woniu.community.entity.HttpResult;
import com.woniu.community.entity.PropertyInfo;

import java.util.List;

public interface IPropertyInfoService {
   HttpResult selectAll(int pageIndex, int pageSize , String numbers, Integer status);
    HttpResult  insertPropertyInfo(PropertyInfo propertyInfo);
    HttpResult  deletePropertyInfo(int id);
    HttpResult updatePropertyInfo(PropertyInfo propertyInfo);
    HttpResult getById(int id);

}

4:PropertyInfoServiceImpl

package com.woniu.community.service.impl;

import com.woniu.community.entity.HttpResult;
import com.woniu.community.entity.PropertyInfo;
import com.woniu.community.mapper.PropertyInfoMapper;
import com.woniu.community.service.IPropertyInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class PropertyInfoServiceImpl implements IPropertyInfoService {

    @Autowired(required=false)
    private PropertyInfoMapper propertyInfoMapper;

    @Override
    public HttpResult selectAll(int pageIndex, int pageSize, String numbers, Integer status) {
        HttpResult  result=null;
        List<PropertyInfo> propertyInfos = propertyInfoMapper.selectAll((pageIndex - 1) * pageSize, pageSize, numbers, status);
        int count = propertyInfoMapper.count(numbers, status);
        if (propertyInfos!=null&&propertyInfos.size()>0){
            result=new HttpResult(propertyInfos,count,200,null);
        }else{
            result=new HttpResult(null,0,500,null);

        }
        return result;
    }


    @Override
    public HttpResult insertPropertyInfo(PropertyInfo propertyInfo) {
        HttpResult  result=null;
        int count = propertyInfoMapper.insertPropertyInfo(propertyInfo);
        if (count>0){
            result=new HttpResult(null,0,200,"新增成功");
        }else{
            result=new HttpResult(null,0,500,"新增失败");

        }

        return result;
    }

    @Override
    public HttpResult deletePropertyInfo(int id) {
        HttpResult  result=null;
        int count = propertyInfoMapper.deletePropertyInfo(id);
        if (count>0){
            result=new HttpResult(null,0,200,"删除成功");
        }else{
            result=new HttpResult(null,0,500,"删除失败");

        }

        return result;
    }

    @Override
    public HttpResult updatePropertyInfo(PropertyInfo propertyInfo) {
        HttpResult  result=null;
        int count = propertyInfoMapper.updatePropertyInfo(propertyInfo);
        if (count>0){
            result=new HttpResult(null,0,200,"修改成功");
        }else{
            result=new HttpResult(null,0,500,"修改失败");

        }

        return result;
    }

    @Override
    public HttpResult getById(int id) {
        HttpResult  result=null;
        PropertyInfo info = propertyInfoMapper.getById(id);
        if (info!=null){
            result=new HttpResult(info,0,200,null);
        }else{
            result=new HttpResult(null,0,500,"没有更多数据");

        }
        return result;
    }
}

5:PropertyInfoController

package com.woniu.community.controller;

import com.woniu.community.entity.HttpResult;
import com.woniu.community.entity.PropertyInfo;
import com.woniu.community.service.IPropertyInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping ("/property")
@CrossOrigin(origins = "*")
public class PropertyInfoController {
    @Autowired
    private IPropertyInfoService  iPropertyInfoService;
    @RequestMapping("/list")
    HttpResult selectAll(int pageIndex, int pageSize , String numbers, Integer status){
        return iPropertyInfoService.selectAll(pageIndex,pageSize,numbers,status);
    }
    @RequestMapping("/add")
    HttpResult  insertPropertyInfo(PropertyInfo propertyInfo){
        return  iPropertyInfoService.insertPropertyInfo(propertyInfo);
    }
    @RequestMapping("/delete")
    HttpResult  deletePropertyInfo(int id){
        return iPropertyInfoService.deletePropertyInfo(id);
    }
    @RequestMapping("/update")
    HttpResult updatePropertyInfo(PropertyInfo propertyInfo){
        return  iPropertyInfoService.updatePropertyInfo(propertyInfo);
    }
    @RequestMapping("/info")
    HttpResult getById(int id){
        return iPropertyInfoService.getById(id);
    }
}

6:PropertyInfoMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.woniu.community.mapper.PropertyInfoMapper">
    <resultMap id="infoMap" type="PropertyInfo">
        <result column="id" property="id"/>
        <result column="type_id" property="typeId"/>
        <result column="money" property="money"/>
        <result column="start_date" property="startDate"/>
        <result column="end_date" property="endDate"/>
        <result column="status" property="status"/>
        <result column="house_id" property="houseId"/>
        <result column="remarks" property="remarks"/>
        <result column="remarks" property="remarks"/>
        <result column="numbers" property="numbers"/>
        <result column="name" property="typeName"/>
        <result column="username" property="userName"/>
        <result column="name" property="typeName"/>


    </resultMap>
    <select id="selectAll" resultMap="infoMap">
        select  o.username,h.numbers,c.name,p
        .* from  property_info p
        left  join property_type c  on
        p.type_id=c.id left  join house h  on
        p.house_id=h.id  left  join   owner o on
        o.house_id=h.id
        <where>
            <if test="numbers !=null  and numbers !='' and numbers!='null'">
                and  h.numbers=#{numbers}
            </if>
            <if test="status!=null">
                and  p.status=#{status}
            </if>
        </where>
        limit #{start},#{size}
    </select>

    <select id="count" resultType="int">
        select
      count(p.id)
        from
        property_info p
        left  join property_type c  on
        p.type_id=c.id left  join house h  on
        p.house_id=h.id  left  join   owner o on
        o.house_id=h.id
        <where>
            <if test="numbers !=null  and numbers !='' and numbers!='null'">
                and  h.numbers=#{numbers}
            </if>
            <if test="status!=null">
                and  p.status=#{status}
            </if>
        </where>
    </select>

    <insert id="insertPropertyInfo">
    insert  into property_info(house_id,type_id,start_date,end_date,money,status)
            values (#{houseId},#{typeId},#{startDate},#{endDate},#{money},#{status})
    </insert>

    <delete id="deletePropertyInfo">
        delete  from property_info where id=#{id}
    </delete>

    <update id="updatePropertyInfo">
        update property_info set money=#{money},status=#{status} where id=#{id}
    </update>

    <select id="getById" resultMap="infoMap" >
        select  *  from property_info where id=#{id}
    </select>
</mapper>

二 前端代码


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="assets/bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="assets/css/right.css" rel="stylesheet">
    <script src="assets/jquery-3.5.1.min.js"></script>
    <script src="assets/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
    <script src="assets/vue.min-v2.5.16.js"></script>
    <script src="assets/vue-router.min-2.7.0.js"></script>
    <script src="assets/axios.min.js"></script>
</head>
<body>
<div id="app" class="container">
    <div class="row">
        <div class="col-md-12" style="height: 80px; line-height: 20px;">
            <div class="row">
                <div class="col-md-3" style="height: 20px;margin-bottom: 15px">
                    房间号:<input type="text" v-model="numbers">
                </div>
                <div class="col-md-3" style="height: 20px;margin-bottom: 15px;">
                    缴费状态:<select style="width: 150px;" v-model="status">
                    <option value="1">已缴费</option>
                    <option value="0">未缴费</option>
                </select>
                </div>
                <div class="col-md-3" style="height: 20px;margin-bottom: 15px">
                    <button class="btn btn-primary" @click="doQuery">搜索</button>

                </div>
            </div>
            <button class="btn btn-info" @click="doAdd">新增</button>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <table class="table table-striped">
                <caption>物业收费</caption>
                <thead>
                <tr>
                    <th>房间号</th>
                    <th>房东</th>
                    <th>费用类型</th>
                    <th>开始时间</th>
                    <th>结束时间</th>
                    <th>金额</th>
                    <th>状态</th>
                    <th>操作</th>
                </tr>
                </thead>
                <tbody>
                <tr v-for="p  in proInfo">
                    <td>{{p.numbers}}</td>
                    <td>{{p.userName}}</td>
                    <td>{{p.typeName}}</td>
                    <td>{{p.startDate}}</td>
                    <td>{{p.endDate}}</td>
                    <td>{{p.money}}</td>
                    <td>{{p.status==1?"已缴费":"未缴费"}}</td>

                    <td v-if="p.status==1">
                        <button class="btn btn-danger" @click="doDelete(p.id)">删除</button>
                    </td>
                    <td v-else="p.status==0">
                        <button class="btn btn-info" @click="doUpdate(p.id)">缴费</button>
                        <button class="btn btn-danger" @click="doDelete(p.id)">删除</button>
                    </td>
                </tr>
                </tbody>
            </table>
            <ul class="pagination" v-for="p in pageNum">
                <li v-if="p==pageIndex" class="active"><a @click="doGO(p)">{{p}}</a></li>
                <li v-else="p==pageIndex"><a @click="doGO(p)">{{p}}</a></li>
            </ul>
        </div>
    </div>
</div>
<script>
    new Vue({
        el: '#app',
        data: {
            proInfo:null,
            pageIndex:1,
            pageSize:5,
            pageTotal:0,
            pageNum:0,
            numbers:'',
            status:'',
        },
        methods: {
            requestCarList(url){
                axios.get(url).then(response=>{
                    this.proInfo=response.data.data;
                    this.pageTotal=response.data.pageTotal;//总条数
                    this.pageNum=Math.ceil(this.pageTotal / this.pageSize);
                })
            },
            doQuery(){
                this.doGO(1);
            },
            doGO(p){
                this.pageIndex=p;
                var  url="http://localhost:8080/property/list?pageIndex="+p+"&pageSize="+this.pageSize+"&numbers="+this.numbers+"&status="+this.status;
                console.log(url);
                this.requestCarList(url);
            },
            doAdd(){
                window.parent.main_right.location.href = "proInfo_add_update.html";
            },
            doDelete(id){
                var url="http://localhost:8080/property/delete?id="+id;
                axios.get(url).then(response=>{
                    if (response.data.code==200){
                        var  url="http://localhost:8080/property/list?pageIndex="+this.pageIndex+"&pageSize="+this.pageSize;
                        this.requestCarList(url);
                    }else{
                        alert(response.data.msg)
                    }
                })

            },
            doUpdate(id){
                window.parent.main_right.location.href = "proInfo_add_update.html?id="+id;
            },
        },
        created: function () {
            var  url="http://localhost:8080/property/list?pageIndex="+this.pageIndex+"&pageSize="+this.pageSize;
            this.requestCarList(url);
        }
    });
</script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="assets/bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="assets/css/right.css" rel="stylesheet">
    <script src="assets/jquery-3.5.1.min.js"></script>
    <script src="assets/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
    <script src="assets/vue.min-v2.5.16.js"></script>
    <script src="assets/vue-router.min-2.7.0.js"></script>
    <script src="assets/axios.min.js"></script>
    <script src="assets/date_picker.js"></script>
</head>
<body>
<div id="app" class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="row">
                <div class="col-md-12" style="text-align: center; font-weight: bold; font-size: 18px; height: 80px; line-height: 80px;">
                    {{title}}
                </div>
            </div>
            <div class="row">
                <div class="col-md-6 col-md-offset-3" style="height: 240px;">
                    房间号:<select v-model="houseId">
                    <option v-for="h in houseList":value="h.id">{{h.numbers}}</option>
                </select><br>

                    费用类型:<select v-model="typeId">
                    <option value="2">水费</option>
                    <option value="3">电费</option>
                    <option value="1">物业费</option>
                    <option value="4">停车费</option>
                </select><br>

                    <label>开始时间:</label>
                    <input type="date" class="form-control" v-model="startDate"/>
                    <label>结束时间:</label>
                    <input type="date" class="form-control" v-model="endDate"/>
                    <lable>金额</lable>
                    <input type="text" v-model="money"><br>
                    状态:<select v-model="status">
                    <option value="1">缴费</option>
                    <option value="0">未缴费</option>
                </select>
                </div>
            </div>
            <div class="row">
                <div class="col-md-6 col-md-offset-3" style="height: 80px;">
                    <button class="btn btn-primary" @click="doSave">保存</button>
                    <button class="btn btn-default" @click="doNot">取消</button>
                </div>
            </div>
        </div>
    </div>
</div>
<script>
    new Vue({
        el: '#app',
        data: {
            title: null,
            houseId:null,
            houseList:null,
            ownerId:null,
            ownerList:null,
            startDate:null,
            endDate:null,
            money:null,
            status:null,
            typeId:null,
            proInfoId:null,
            userName:null,

            },
        methods: {
            requestParkingList(){
                var url="http://localhost:8080/house/list?pageIndex=1&pageSize=100";
                axios.get(url).then(response=>{
                    this.houseList=response.data.data;
                })
            },
            // requestOwnerList(){
            //     var url="http://localhost:8080/owner/list?pageIndex=1&pageSize=100";
            //     axios.get(url).then(response=>{
            //         this.ownerList=response.data.data;
            //     })
            // },
            getById(){
                var url="http://localhost:8080/property/info?id="+this.proInfoId;
                console.log(url);
                axios.get(url).then(response=>{
                    this.houseId=response.data.data.houseId;
                    this.ownerId=response.data.data.ownerId;
                    this.typeId=response.data.data.typeId;
                    this.startDate=response.data.data.payDate;
                    this.endDate=response.data.data.endDate;
                    this.money=response.data.data.money;
                    this.status=response.data.data.status;
                })
            },
            doSave(){
                    if (this.proInfoId==null){
                        this.title="添加信息"
                        var  url="http://localhost:8080/property/add?houseId="+this.houseId+"&typeId="+this.typeId+"&startDate="+this.startDate+"&endDate="+this.endDate+"&money="+this.money+"&status="+this.status;
                        console.log(url)
                        axios.get(url).then(response=>{
                            if (response.data.code==200){
                                window.parent.main_right.location.href = "proInfo_list.html";

                            }else{
                                alert(response.data.msg)
                            }

                        })
                    }else{
                        this.title="缴费"
                        var   url="http://localhost:8080/property/update?money="+this.money+"&status="+this.status+"&id="+this.proInfoId;
                        console.log(url)
                        axios.get(url).then(response=>{
                            if (response.data.code==200){
                                window.parent.main_right.location.href = "proInfo_list.html";

                            }else{
                                alert(response.data.msg)
                            }

                        })
                    }
                },
            doNot(){
                history.go(-1);
            }
            },



        created: function () {
            this.requestParkingList();
            // this.requestOwnerList();
            var  url=window.location.href;
            if (url.indexOf("id")!=-1){
                this.proInfoId=url.substring(url.indexOf("=")+1);
            }
            if (this.proInfoId==null){
                this.title="添加信息"
            }else{
                this.title="缴费"
                this.getById();

            }
        }
    });
</script>
</body>
</html>

三 运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

制作php的composer包

目录 1、初始化包 2、将代码推送到github远程仓库 3、为写好扩展包打上tag标签标记当前代码版本 4、将包发布到包管理平台 初始化包&#xff0c;生成 创建配置文件composer.json composer init composer init 按照引导就可以生成了 , 详细的引导解释如下 This command wil…

计算机图形学中的曲线问题——拉格朗日插值曲线绘制实践

拉格朗日插值曲线的绘制 限于篇幅&#xff0c;我们将在这篇文章中介绍拉格朗日插值曲线绘制实践&#xff0c;主文章链接&#xff1a; GGN_2015 计算机图形学中的曲线问题 在主文章中我们已经介绍了拉格朗日插值函数的绘制方法。给定一个函数必须通过的点的集合&#xff0c;保证…

学习spring源码的意义是什么呢?有什么高效的源码学习方式吗?

这不是准备跳槽了&#xff0c;所以最近摸鱼比较多一些&#xff0c;老大默许了&#xff0c;我觉得我老大还是很好的。也在网上看了一些资料&#xff0c;但是&#xff0c;我发现很多讲解注解的时候&#xff0c;对于一些可以直接点击源码查看的内容讲解的占多数&#xff0c;但是授…

【学习笔记】《Python深度学习》第六章:深度学习用于文本和序列

文章目录1 处理文本数据1.1 单词和字符的one-hot编码1.2 使用词嵌入1.3 从原始文本到词嵌入2 循环神经网络2.1 Keras中的循环层2.2 LSTM层和GRU层2.3 实例&#xff1a;使用 LSTM 进行 IMDB 电影评论分类3 循环神经网络的高级用法3.1 温度预测问题3.2 准备数据3.3 基于常识、非机…

eclipse导入svn项目,项目有红色的感叹号/叉号

eclipse导入svn项目&#xff0c;项目左下角有红色的感叹号/叉号 1.首先调出Problems ( window -> show view-> Problems ) 查看报错信息 其次&#xff0c;看看Project是否开启了项目自动构建&#xff08;Build Automatically&#xff09; 2.根据报错信息逐一解决 3.…

【Linux内核代码分析1】Linux时间子系统及HRTIMER实现

Linux时间子系统软件架构 &#xff08;1&#xff09;嵌入式设备需要较好的电源管理策略。传统的linux会有一个周期性的时钟&#xff0c;即便是系统无事可做的时候也要醒来&#xff0c;这样导致系统不断的从低功耗&#xff08;idle&#xff09;状态进入高功耗的状态。这样的设计…

从 Nauty 数据结构出发认识群论

在阅读本文前&#xff0c;强烈建议有志入门群论的同学观看 3blue1brown 魔群 视频。 对于计算机方向同学&#xff0c;可以尝试从数据结构的角度理解。本文主要基于文档、网站 Nauty 和 Nauty 的 python binding, pynauty(github.com) 展开。 Nauty 数据结构 本小节截选自 Na…

字节跳动虚拟数字人技术与应用

导读&#xff1a;火山引擎正在打造完善的虚拟数字人技术和应用体系&#xff0c;那么火山引擎是如何定义虚拟数字人的呢&#xff1f;火山引擎 2D 虚拟数字人和 3D 数字人采用了怎样先进的技术&#xff1f;火山引擎数字人有哪些应用和前景展望&#xff1f;今天我们就来一起探秘火…

[附源码]计算机毕业设计基于SpringBoot的毕业生就业系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

浅谈操作系统和进程

前言 操作系统是一个软件&#xff0c;对下要管理硬件设备&#xff0c;对上要给软件运行提供稳定的运行环境。操作系统是软硬件及用户之间交互的媒介。最常见的操作系统有Windows 98&#xff0c;2000&#xff0c;xp&#xff0c;vista&#xff0c;win7&#xff0c;win8&#xff…

# 智慧社区管理系统-核心业务功能-04保修信息

一 后端 1:entity package com.woniu.community.entity;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data AllArgsConstructor NoArgsConstructor public class Repair {private int id;private String comId;private String co…

[附源码]计算机毕业设计springboot医院挂号住院管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

LeetCode 441. 排列硬币

&#x1f308;&#x1f308;&#x1f604;&#x1f604; 欢迎来到茶色岛独家岛屿&#xff0c;本期将为大家揭晓LeetCode 441. 排列硬币 &#xff0c;做好准备了么&#xff0c;那么开始吧。 &#x1f332;&#x1f332;&#x1f434;&#x1f434; 一、题目名称 LeetCode 441. …

Java基于springboot+vue的游戏物品销售购物商城系统 前后端分离

随着时代和计算机的发展&#xff0c;出现了越来越多的网络游戏&#xff0c;相对应的也拥有了越来越多的玩家&#xff0c;这些玩家在玩了一段游戏之后&#xff0c;可能会有游戏交易的需求。如果直接在私下个人交易很不安全&#xff0c;容易被骗。为了能够让广大游戏爱好者拥有一…

.net6 web api中使用SqlSugar(MySQL数据库)

其中SqlSugar&#xff0c;也可以是EFcore&#xff0c;或者Dapper&#xff0c;或者其他ORM框架。 其中mysql&#xff0c;也可以是SqlServer&#xff0c;或者oracle&#xff0c;或者其他数据库类型。 1.首先使用vs2022建立.net6 web api 2.增加SqlSugar和MySQL依赖项。 Newton…

17.前端笔记-CSS-定位

1、为什么要定位 先看看以下这些场景是否可以用标准流或浮动实现 &#xff08;1&#xff09;某个元素可以自由的在一个盒子内移动位置&#xff0c;并且压住其他盒子 &#xff08;2&#xff09;滚动窗口时&#xff0c;某些盒子是可以固定在屏幕某个位置的 以上这种场景使用标准…

# 智慧社区管理系统-核心业务管理-01车位收费

一 后端 1:entity package com.woniu.community.entity;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data AllArgsConstructor NoArgsConstructor public class CarCharge {private int id;private String payDate;//开始时间pr…

Vue 官方文档2.x教程学习笔记 1 基础 1.6 Class 与 Style 绑定 1.6.1 绑定HTML Class

Vue 官方文档2.x教程学习笔记 文章目录Vue 官方文档2.x教程学习笔记1 基础1.6 Class 与 Style 绑定1.6.1 绑定HTML Class1 基础 1.6 Class 与 Style 绑定 操作元素的 class 列表和内联样式是数据绑定的一个常见需求。 因为它们都是 attribute&#xff0c;所以我们可以用 v-b…

浅析Vue3动态组件怎么进行异常处理

Vue3动态组件怎么进行异常处理&#xff1f;下面本篇文章带大家聊聊Vue3 动态组件异常处理的方法&#xff0c;希望对大家有所帮助&#xff01; 动态组件有两种常用场景&#xff1a; 一是动态路由&#xff1a; // 动态路由 export const asyncRouterMap: Array<RouteRecordR…

【算法】山东大学人工智能限选课实验一(八数码问题)

实验一 八数码问题 1. 题目介绍 八数码问题描述为&#xff1a;在 33 组成的九宫格棋盘上&#xff0c;摆有 8 张牌&#xff0c;每张牌都刻有 1-8 中的某一个数码。棋盘中留有一个空格&#xff0c;允许其周围的某张牌向空格移动&#xff0c;这样通过移动牌就可以不断改变棋盘布…