PHP+ajax+layui实现双重列表的动态绑定

news2024/11/18 7:43:06

需求:商户下面有若干个门店,每个门店都需要绑定上收款账户

方案一:每个门店下面添加页面,可以选择账户去绑定。(难度:简单)

方案二:从商户进入,可以自由选择门店,以及账户,动态绑定(难度:较复杂)

页面:

        

实现方式,通过选择上面的门店,打勾之后,在选择账户里面的账户,即可实现下面的列表的动态返回,然后点击保存之后,即可将门店和账户的绑定规则传到后台,由后台统一处理

这里页面显示的字符串本来是可以由后台返回,然后js动态拼接的,但是,考虑到js写逻辑过于复杂,操作性不如PHP简易,所以由后台PHP,拼接字符串,然后返回的拼接html代码,直接显示

html代码

{extend name="base" /}
{block name="css"}
<link rel="stylesheet" href="/public/admin/lib/layui/css/layui.css">
<style>
.pic_set_list{width: 100px;display: inline-table;margin-right:10px}
.pic_set_pic{width:100px;float:left}
.pic_set_del{width:100px;float:left}
</style>
{/block}
{block name="body"}
        <div class="layui-fluid">
            <div class="layui-row" style="margin-top:10px">
                <form class="layui-form form-container">
                	<input type="hidden" name="shop_id" id="shop_id" value="{$shop_info['id']}">
					<div class="layui-form-item">
						<label for="L_px" class="layui-form-label">商户</label>
						<div class="layui-input-inline" style="color:red;margin-top: 10px;font-size:16px;">{$shop_info['title']}</div>
					</div>

					<div class="layui-form-item ">
                        <label class="layui-form-label">请选择门店<br>
                        	 <!-- <input type="checkbox" lay-skin="primary" lay-filter="all" name="all" id="all" value="all" title="全选/反选"> -->
                        </label>
                        
                        {foreach name="list" item="vo2"}
                         
                            <input type="checkbox" lay-skin="primary" class="store_check"  name="s_id" value="{$vo2.id}"  title="{$vo2.title}">
            
                        {/foreach}

                    </div>
                    <br>
                    <br>
                    <div class="layui-form-item">
						<label for="L_title_english" class="layui-form-label">账户选择</label>
						<div class="layui-input-inline">
							<select name="province_id" lay-filter="adapay" id="adapay">
								<option value="">请选择账户</option>
								{volist name="adapay" id="v"}
								<option value="{$v['id']}">{$v['name']}</option>
								{/volist}
							</select>
						</div>
					</div>
					<div class="layui-form-item">
						<label for="L_title_english" class="layui-form-label">选择情况</label>
						<div class="layui-input-inline" id="table-data">
							
						</div>
					</div>
					<div class="layui-form-item">
                        <label for="L_repass" class="layui-form-label"></label>
                        <button class="layui-btn" type="reset" id="clean">清空</button>
                        <button class="layui-btn" type="button" id="submit">保存</button>
					</div>
                </form>
            </div>
        </div>
{/block}
{block name="js"}
<script type="text/javascript" src="/public/admin/js/admin.js"></script>
<script type="text/javascript" src="/public/admin/js/xcity.js"></script>
<!-- 配置文件 -->
<script type="text/javascript" src="/public/admin/ueditor/ueditor.config.js"></script>
<script type="text/javascript" src="/public/admin/ueditor/ueditor.all.js"></script>
<script type="text/javascript" src="/public/admin/ueditor/lang/zh-cn/zh-cn.js"></script>
{/block}

{block name="script"}
<script>

	//页面第一次进来时候,请求接口,返回已经有的信息
	$(document).ready(function(){
		
		
		var shop_id = $('#shop_id').val();
		$.ajax({
            url:'/admin/shop/return_data2',
            type:'post',
            data:{
                shop_id:shop_id
            },
            dataType:"json",
            success:function(data){
                document.getElementById('table-data').innerHTML = data.data;
            }
        });



		//给特定的函数绑定上删除事件
        $(document).on('click', '.delete_adapay', function() {
        	event.preventDefault();
        	var anchor = $(this).closest('a');
          	// 获取 <a> 标签的参数值
          	var id = anchor.attr('data_id');

          	console.log(id)


          	//获取门店id的多选框的值
			var obj = document.getElementsByName("s_id");
		    var checkList = [];
		    for(k in obj){
		        if(obj[k].checked)
		            checkList.push(obj[k].value);
		    }

		    //获取选择列表中的门店属性值
		    var arr1 = [];
		    $("input[name='title']").each(function(){
	            arr1.push($(this).val());
	        })
	        // console.log(arr1);

	        //获取选择列表中的账户属性值
		    var arr2 = [];
		    $("input[name='adapay']").each(function(){
	            arr2.push($(this).val());
	        })
	        // console.log(arr2);
	        var arr3 = [];
		    $("input[name='ids']").each(function(){
	            arr3.push($(this).val());
	        })
	        // console.log(arr3);


			var adapay = $('#adapay').val();
          	//添加上ajax请求
          	$.ajax({
                url:'/admin/shop/association_del',
                type:'post',
                data:{
                	id:id,
                	adapay:adapay,
                	s_id:checkList,
                	s_id_old:arr1,
                	adapay_old:arr2,
                	ids:arr3
                },
                dataType:"json",
                success:function(data){
                    document.getElementById('table-data').innerHTML = data.data;
                }
            });

    	});


	})


	layui.use('form', function(){
		var form = layui.form;

		layui.form.on('select(adapay)', function(data){

			//获取门店id的多选框的值
			var obj = document.getElementsByName("s_id");
		    var checkList = [];
		    for(k in obj){
		        if(obj[k].checked)
		            checkList.push(obj[k].value);
		    }

		    //获取选择列表中的门店属性值
		    var arr1 = [];
		    $("input[name='title']").each(function(){
	            arr1.push($(this).val());
	        })
	        console.log(arr1);

	        //获取选择列表中的账户属性值
		    var arr2 = [];
		    $("input[name='adapay']").each(function(){
	            arr2.push($(this).val());
	        })
	        console.log(arr2);
	        var arr3 = [];
		    $("input[name='ids']").each(function(){
	            arr3.push($(this).val());
	        })
	        // console.log(arr3);

			var adapay = $('#adapay').val();
			$.ajax({
                url:'/admin/shop/return_data',
                type:'post',
                data:{
                	adapay:adapay,
                	s_id:checkList,
                	s_id_old:arr1,
                	adapay_old:arr2,
                	ids:arr3
                },
                dataType:"json",
                success:function(data){
                    document.getElementById('table-data').innerHTML = data.data;
                }
            });
		})


		$('#clean').click(function(){
			var data = '';
			document.getElementById('table-data').innerHTML = data;

		})



		$('#submit').click(function(){
			var shop_id = $('#shop_id').val();
			var arr1 = [];
		    $("input[name='title']").each(function(){
	            arr1.push($(this).val());
	        })
	        console.log(arr1);

	        //获取选择列表中的账户属性值
		    var arr2 = [];
		    $("input[name='adapay']").each(function(){
	            arr2.push($(this).val());
	        })
	        console.log(arr2);

	        var arr3 = [];
		    $("input[name='ids']").each(function(){
	            arr3.push($(this).val());
	        })

	        $.ajax({
                url:'/admin/shop/associate_save',
                type:'post',
                data:{
                	shop_id:shop_id,
                	s_id_old:arr1,
                	adapay_old:arr2,
                	ids:arr3
                },
                dataType:"json",
                success:function(data){
                	layer.msg(data.msg)
                    window.reload();
                }
            });
		})



	})
</script>
{/block}

后端代码

public function return_data()
    {
        $request = $this->request-> param();
        // dump($request);die; 
        //查询出所要拼接的字符串的项
        $s_ids = $request['s_id'];
        $where['id'] = array('in',$s_ids);
        $store = Db::name('shop_store')->where($where)->select();

        $adapay = Db::name('adapay_user')->where(['id'=> $request['adapay']])->find();

        $string1 = '<div class="layui-card-body layui-table-body layui-table-main">
                                <table class="layui-table">
                                    <thead>
                                        <tr>
                                            <th>门店</th>
                                            <th>账户</th>
                                            <th>操作</th>
                                        </tr>
                                    </thead>
                                    <tbody>';
                                        
        $string3 = '</tbody>
                   </table>
                 </div>';


        //对新旧字符串进行处理和分析
        //拼接字符串
        $string2 = '';


        //第一次传值
        if(!isset($request['s_id_old']) && !isset($request['adapay_old'])){
            $id = -1;
            foreach($store as $value){
                
                $string2 = $string2 . '<tr><td><input type="hidden" name="ids" value="'.$id.'" style=" display:none"><input type="text" name="title" value="'.$value["id"].'" style=" display:none">'.$value["title"].'</input></td><td><input type="text" name="adapay" value="'.$adapay["id"].'" style=" display:none">'.$adapay["name"].'</td><td><a href="javascript:(0)" class="layui-btn layui-btns ajax-delete delete_adapay" data_id="'.$id.'" style="background: #e90d24;">删除</a></td></tr>';

                    $id -- ;
            }
        //后续传值
        }else{
            //拼接旧的关联关系
            //如果是新的有,旧的没有的,就直接以新的为标准
            $new_list1=[];

            $min = min($request['ids']);//此时需要将原来的数据都拿过来,然后取最大的,在继续增加变化

            foreach($s_ids as $k => $v){
                if (!in_array($s_ids[$k],$request['s_id_old'])) {
                    $min --;
                    $new_list1['store_id'] =$s_ids[$k];
                    $new_list1['adapay_id'] =$request['adapay'];
                    $new_list1['ids'] =$min;
                    $new_list[] = $new_list1;
                }
                
            }

            //如果两个都有,也就是有需要修改的,会以新的为准
            $new_list2 = [];
            foreach ($s_ids as $key => $value) {
                foreach ($request['s_id_old'] as $key2 => $value2) {
                    
                    if($s_ids[$key] == $request['s_id_old'][$key2]){
                        $new_list2['store_id'] = $request['s_id_old'][$key2];
                        $new_list2['adapay_id'] = $request['adapay'];
                        $new_list2['ids'] = $request['ids'][$key2];
                        $new_list[] = $new_list2;
                        
                    }

                }
            }

            $new_list3 = [];
            //如果是新的没有,旧的有,就按照旧的为准
            foreach ($request['s_id_old'] as $key => $value) {
                if (!in_array($request['s_id_old'][$key],$request['s_id'])) {
                    $new_list3['store_id'] =$request['s_id_old'][$key];
                    $new_list3['adapay_id'] =$request['adapay_old'][$key];
                    $new_list3['ids'] =$request['ids'][$key];
                    $new_list[] = $new_list3;
                }
                 
            }

            foreach ($new_list as $key => $value) {

                $store_info = Db::name('shop_store')->where(['id'=>$new_list[$key]['store_id']])->find();
                $adapay_info = Db::name('adapay_user')->where(['id'=>$new_list[$key]['adapay_id']])->find();
                
                $id = $new_list[$key]['ids'];
                $string2 = $string2 . '<tr><td><input type="hidden" name="ids" value="'.$id.'" style=" display:none"><input type="text" name="title" value="'.$store_info["id"].'" style=" display:none">'.$store_info["title"].'</input></td><td><input type="text" name="adapay" value="'.$adapay_info["id"].'" style=" display:none">'.$adapay_info["name"].'</td><td><a href="#" class="layui-btn delete_adapay ajax-delete" data_id="'.$id.'" style="background: #e90d24;">删除</a></td></tr>';
            }
                
        }




        

        $string = $string1.$string2.$string3;

        $res['code'] = 200;
        $res['data'] = $string;

        $this->ajaxReturn($res);
        
    }

    //修改时候进去,返回已经修改好的情况
    public function return_data2()
    {   
        $request = $this->request-> param();
        $where['shop_id'] = $request['shop_id'];
        $where['is_delete'] = 0;
        $list = Db::name('shop_adapay_user')->where($where)->select();

        $string1 = '<div class="layui-card-body layui-table-body layui-table-main">
                                <table class="layui-table">
                                    <thead>
                                        <tr>
                                            <th>门店</th>
                                            <th>账户</th>
                                            <th>操作</th>
                                        </tr>
                                    </thead>
                                    <tbody>';
                                        
        $string3 = '</tbody>
                   </table>
                 </div>';

        $string2 = '';
        foreach ($list as $key => $value) {
            $store_info = Db::name('shop_store')->where(['id'=>$list[$key]['store_id']])->find();
            $adapay_info = Db::name('adapay_user')->where(['id'=>$list[$key]['member_id']])->find();

            $id = $list[$key]['id'];

            $string2 = $string2 . '<tr><td><input type="hidden" name="ids" value="'.$id.'" style=" display:none"><input type="text" name="title" value="'.$store_info["id"].'" style=" display:none">'.$store_info["title"].'</input></td><td><input type="text" name="adapay" value="'.$adapay_info["id"].'" style=" display:none">'.$adapay_info["name"].'</td><td><a href="#" class="layui-btn  delete_adapay ajax-delete" data_id="'.$id.'" style="background: #e90d24;">删除</a></td></tr>';


        }


        $string = $string1.$string2.$string3;

        $res['code'] = 200;
        $res['data'] = $string;

        $this->ajaxReturn($res);
    }

    //保存门店和账户的关联情况
    public function associate_save()
    {
        $request = $this->request-> param();
        // dump($request);die;
        
        $s_id_old = isset($request['s_id_old'])?$request['s_id_old']:[];
        $adapay_old = isset($request['adapay_old'])?$request['adapay_old']:[];
        $num = count($s_id_old);

        for ($i=0; $i < $num; $i++) { 
            $value['shop_id'] = $shop_id;
            $value['store_id'] = $s_id_old[$i];
            $value['member_id'] = $adapay_old[$i];

            //查询出关联的银行卡id
            $where_bank['member_id'] = $adapay_old[$i];
            $where_bank['is_default'] = 1;
            $bank_info = Db::name('shop_account')->where($where_bank)->find();
            if(empty($bank_info)){
                $this->error('请先添加账户对应银行卡!');
            }

            $value['account_id'] = $bank_info['id'];

            $where['shop_id'] = $shop_id;
            $where['store_id'] = $s_id_old[$i];
            $where['is_delete'] = 0;
            //先查询是否有了,有了就修改,没有在插入
            $is_have = Db::name('shop_adapay_user')->where($where)->find();

            if (empty($is_have)) {
                $res = Db::name('shop_adapay_user')->insertGetId($value);
            }else{
                //判断其他字段是否相等,相等就跳过,不相等就去修改
                if($is_have['member_id'] !== $value['member_id'] || $is_have['account_id'] !== $value['account_id']){
                    $res = Db::name('shop_adapay_user')->where(['id'=>$is_have['id']])->update($value);
                }else{
                    $res = true;
                }
            }

        }

        //添加判断,如果是传过来的值没有,但是数据库有,那就删除,修改is_delete为1
        $where_is['is_delete'] = 0;
        $where_is['shop_id'] = $request['shop_id'];
        $list = Db::name('shop_adapay_user')->where($where_is)->select();
        foreach ($list as $key => $value) {
            if(!in_array($list[$key]['store_id'],$request['s_id_old'])){
                $res2 = Db::name('shop_adapay_user')->where(['id'=>$list[$key]['id']])->update(['is_delete'=>1]);
            }
        }

        if($res){
            $this->success('操作成功!');
        }else{
            $this->error('操作失败!');
        }
    }


    //删除功能
    public function association_del()
    {
        $request = $this->request-> param();
        $id_jian = $request['id'];
        // dump($request);die; 
        //查询出所要拼接的字符串的项
        $s_ids = isset($request['s_id'])?$request['s_id']:[];
        $where['id'] = array('in',$s_ids);
        $store = Db::name('shop_store')->where($where)->select();

        $adapay = Db::name('adapay_user')->where(['id'=> $request['adapay']])->find();

        $string1 = '<div class="layui-card-body layui-table-body layui-table-main">
                                <table class="layui-table">
                                    <thead>
                                        <tr>
                                            <th>门店</th>
                                            <th>账户</th>
                                            <th>操作</th>
                                        </tr>
                                    </thead>
                                    <tbody>';
                                        
        $string3 = '</tbody>
                   </table>
                 </div>';


        //对新旧字符串进行处理和分析
        //拼接字符串
        $string2 = '';


        //第一次传值
        if(!isset($request['s_id_old']) && !isset($request['adapay_old'])){
            $id = -1;
            foreach($store as $value){
                
                $string2 = $string2 . '<tr><td><input type="hidden" name="ids" value="'.$id.'" style=" display:none"><input type="text" name="title" value="'.$value["id"].'" style=" display:none">'.$value["title"].'</input></td><td><input type="text" name="adapay" value="'.$adapay["id"].'" style=" display:none">'.$adapay["name"].'</td><td><a href="javascript:(0)" class="layui-btn layui-btns ajax-delete delete_adapay" data_id="'.$id.'" style="background: #e90d24;">删除</a></td></tr>';

                    $id -- ;
            }
        //后续传值
        }else{
            //拼接旧的关联关系
            //如果是新的有,旧的没有的,就直接以新的为标准
            $new_list1=[];


            //如果两个都有,也就是有需要修改的,会以新的为准
            $new_list2 = [];
            foreach ($s_ids as $key => $value) {
                foreach ($request['s_id_old'] as $key2 => $value2) {
                    
                    if($s_ids[$key] == $request['s_id_old'][$key2]){
                        $new_list2['store_id'] = $request['s_id_old'][$key2];
                        $new_list2['adapay_id'] = $request['adapay'];
                        $new_list2['ids'] = $request['ids'][$key2];
                        $new_list[] = $new_list2;
                        
                    }

                }
            }

            $new_list3 = [];
            //如果是新的没有,旧的有,就按照旧的为准
            foreach ($request['s_id_old'] as $key => $value) {
                if (!in_array($request['s_id_old'][$key],$s_ids)) {
                    $new_list3['store_id'] =$request['s_id_old'][$key];
                    $new_list3['adapay_id'] =$request['adapay_old'][$key];
                    $new_list3['ids'] =$request['ids'][$key];
                    $new_list[] = $new_list3;
                }
                 
            }

            foreach ($new_list as $key => $value) {

                $store_info = Db::name('shop_store')->where(['id'=>$new_list[$key]['store_id']])->find();
                $adapay_info = Db::name('adapay_user')->where(['id'=>$new_list[$key]['adapay_id']])->find();
                
                $id = $new_list[$key]['ids'];
                if($id !== $id_jian){
                    $string2 = $string2 . '<tr><td><input type="hidden" name="ids" value="'.$id.'" style=" display:none"><input type="text" name="title" value="'.$store_info["id"].'" style=" display:none">'.$store_info["title"].'</input></td><td><input type="text" name="adapay" value="'.$adapay_info["id"].'" style=" display:none">'.$adapay_info["name"].'</td><td><a href="#" class="layui-btn delete_adapay ajax-delete" data_id="'.$id.'" style="background: #e90d24;">删除</a></td></tr>';
                }
                
            }
                
        }

        

        $string = $string1.$string2.$string3;

        $res['code'] = 200;
        $res['data'] = $string;

        $this->ajaxReturn($res);
    }

关联表的数据表结构

可能有其他的办法,我这个也或许不是最优解,因为本该前端处理的dom数据,由PHP处理返回了

另外,如果是前端直接写在页面上的HTML代码,一些,onclick等事件,可以直接绑定,进行监听操作,但是如果是由拼接上的字符串,动态显示的,类似于,富文本内容,则需要加上限定

需要把代码都放在$(document)的后面才能执行,不能直接写js代码

 $(document).on('click', '.delete_adapay', function() {
    //内容
}

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

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

相关文章

【程序员养生心得】—— 编程之路,健康同行

身为程序员&#xff0c;我们似乎总和亚健康、熬夜、颈椎病等标签紧密相连。但工作虽重要&#xff0c;健康价更高。在此&#xff0c;我想与大家分享一些在编程之路上的养生心得&#xff0c;希望我们都能在职业发展的同时&#xff0c;照顾好自己。 定时休息&#xff0c;活动身体&…

创建SpringBoot流程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、操作步骤总结 前言 我使用的是jdk1.8版本的&#xff0c;idea社区版的&#xff08;专业版的应该也差不多吧&#xff09; 提示…

leetcode二叉树

下面的两个题呢是比较类似的所以放在一起讲&#xff0c;更好的理解起来。 https://leetcode.cn/problems/same-tree/description/ 这个题就是比较两颗树是不是一样的&#xff0c;这个其实看起来就只要比较当前节点&#xff0c;我们分析成子问题就是判断两颗树当前节点是不是一致…

用HeidiSQL在MySQL中新建用户

用HeidiSQL登录到MySQL数据库&#xff0c;注意登录的时候要使用有权限的用户&#xff1a; 选择工具-》用户管理&#xff1a; 点击左上角的“添加”&#xff1a; 输入用户名、密码&#xff0c;并且分配权限&#xff1a; 点击右边的“添加对象”&#xff1a; 可以根据自己…

使用OpenCompass评测rwkv模型教程

0x0. 前言 继续MLC-LLM 支持RWKV-5推理以及对RWKV-5的一些思考文章里面提到的想法&#xff0c;探索一下使用OpenCompass来评测RWKV模型&#xff0c;对模型的实际表现有一个更客观的了解。我在尝试的过程中也碰到了一些问题&#xff0c;所以这里记录一下使用OpenCompass评测的流…

数据的另一面:数据可视化为何备受推崇?

数据可视化&#xff0c;作为当今信息时代的重要工具&#xff0c;正逐渐受到更多人的关注和重视。它的重要性不仅在于帮助人们更直观地理解数据&#xff0c;更在于为我们揭示数据背后的故事&#xff0c;以及对决策和发现见解的巨大价值。那么&#xff0c;为何数据可视化越来越被…

LeetCode(36)旋转图像【矩阵】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 48. 旋转图像 1.题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在** 原地** 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 …

Nuxt.js:下一代Web开发框架的革命性力量

文章目录 一、Nuxt.js简介二、Nuxt.js的特点1. 集成Vue.js和Node.js2. 自动代码分割和优化3. 服务端渲染&#xff08;SSR&#xff09;4. 强大的路由管理5. 丰富的插件系统 三、Nuxt.js的优势1. 提高开发效率2. 降低维护成本3. 提高用户体验 四、Nuxt.js在实际应用中的案例1. 电…

深兰科技入选工信部首批“5G+智慧旅游”应用试点项目名

近日&#xff0c;国家文旅部与工信部确定并公布了我国首批《“5G智慧旅游”应用试点项目名单》&#xff0c;深兰科技基于AIGC多模态融合大模型技术开发打造的江汉路“5G智慧旅游”试点项目——武汉市江汉路步行街5G智慧商街创新应用&#xff0c;成功入选该名单。 作为由湖北省文…

电脑突然死机怎么办?教你几招快速拯救

当今社会&#xff0c;电脑成为我们日常生活和工作不可或缺的一部分。然而&#xff0c;有时电脑可能会突然死机&#xff0c;给我们的操作和数据带来不便。那电脑突然死机怎么办呢&#xff1f;本文将介绍解决电脑突然死机的三种方法&#xff0c;通过详细的步骤指南&#xff0c;帮…

SaaS模式C/S检验科LIS系统源码

适用于医院检验科实际需要的管理系统, 实现检验业务全流程的计算机管理。从检验申请、标本编号、联机采集、中文报告单的生成与打印、质控图的绘制和数据的检索与备份。通过将所有仪器自身提供的端口与科室LIS系统中的工作站点连接,实现与医院HIS系统的对接。 通过门诊医生和住…

【古月居《ros入门21讲》学习笔记】05_ROS是什么及其核心概念

目录 说明 1. ROS发展史 ROS版本演变 2. ROS是什么 ROS中的通信机制 ROS中的开发工具 ROS中的应用功能 ROS中的生态系统 3. ROS核心概念 节点与节点管理器 通信方式1&#xff1a;话题 通信方式2&#xff1a;服务 话题与服务的区别 参数 文件系统 说明 1. 本系列…

智能优化算法应用:基于帝国主义竞争算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于帝国主义竞争算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于帝国主义竞争算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.帝国主义竞争算法4.实验参数设定5.算…

php爬虫实现把目标页面变成自己的网站页面

最近又被烦的不行&#xff0c;琐事不断&#xff0c;要是比起懒来一个人比一个人懒&#xff0c;但是懒要转换成动力啊&#xff0c;能让自己真正的偷懒&#xff0c;而不是浪费时间。每天还是需要不断的学习的&#xff0c;才能更好的提高效率&#xff0c;把之前做的简单小功能爬虫…

计算机网络(一)| 概述 因特网 性能 协议基本

文章目录 1. 因特网组成1.1 四元素组成1.2 二元素组成1.3 核心部分 2.计算机网路的功能3. 几种不同类别的网络4 性能指标5 网路协议5.1网络体系结构 6 PDU 互联网&#xff08;或因特网&#xff09;之所以能够向用户提供服务&#xff0c;是因为互联网具有两个重要基本特点 连通性…

Wireshark之Intro, HTTP, DNS

源码地址&#x1f447; moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES: 《计算机网络&#xff0d;自顶向下方法(原书第6版)》编程作业&#xff0c;Wireshark实验文档的翻译和解答。 (github.com) 目录 &#x1f33c;Introduce &#x1f3a7;前置 &#x1f3a7;过…

java:IDEA中Maven常用操作

文章目录 背景1、Reload All Maven Projects:2、Generate Sources and Update Folders For All Projects:3、Download Sources and/or Documentation:4、Add Maven Projects5、Run Maven Build6、Execute Maven Goal7、Toggle Offline Mode8、Toggle Skip Tests Mode9、Collaps…

10分钟的时间,带你彻底搞懂JavaScript数据类型转换

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热衷分享有趣实用的文章&#xff0c;希望大家多多支持&#xff0c;一起进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 目录 JS数据类型 3种转换类型 ToBoolean ToString ToNumber 对象转原…

Go语言多线程爬虫万能模板:实现高效数据采集

随着互联网的快速发展&#xff0c;网络爬虫已经成为数据采集的重要工具。Go语言作为高性能编程语言之一&#xff0c;具有出色的并发性能和丰富的网络库&#xff0c;非常适合用于编写多线程爬虫。本文将介绍一个基于Go语言的多线程爬虫万能模板&#xff0c;并阐述其设计思路、核…

精密制造ERP系统包含哪些模块?精密制造ERP软件是做什么的

不同种类的精密制造成品有区别化的制造工序、工艺流转、品质标准、生产成本、营销策略等&#xff0c;而多工厂、多仓库、多车间、多部门协同问题却是不少精密制造企业遇到的管理难题。 有些产品结构较为复杂&#xff0c;制造工序繁多&#xff0c;关联业务多&#xff0c;传统的…