element-ui 表格没有内容点击插入数据,有内容点击删除(vue)

news2024/11/26 21:50:37

记录一下,希望能够帮到大家。

界面1
界面2

在这里插入图片描述

<template>
  <div>
    <div class="tabs" style="display: flex;line-height: 20px">
      <button href="javascript:;" :class="{active: dialogFormVisible3}" @click="dialogFormVisible3=true" style="font-size: 18px!important;">单次流程</button>
      <button href="javascript:;" :class="{active: !dialogFormVisible3}" @click="dialogFormVisible3=false" style="font-size: 18px!important;">批量排课</button>
    </div>
    <div v-show="dialogFormVisible3" >
      <div style="margin:0.4rem 1rem;line-height: 40px;float: left">
        <el-dropdown @command="handleCommand" style="float: left">
                  <span class="el-dropdown-link">
                    选择教室<i class="el-icon-arrow-down el-icon--right"></i>
                  </span>
          <el-dropdown-menu slot="dropdown">
            <el-dropdown-item command="404" divided>404教室</el-dropdown-item>
            <el-dropdown-item command="405" divided>405教室</el-dropdown-item>
            <el-dropdown-item command="406" divided>406教室</el-dropdown-item>
            <el-dropdown-item command="407" divided>407教室</el-dropdown-item>
          </el-dropdown-menu>
        </el-dropdown>
        <el-button type="primary" style="float: left;margin-left: 6px">当前教室:{{houseid}}</el-button>

        <el-dropdown @command="handleCommand2" style="float: right;margin-right: 40px;">
                  <span class="el-dropdown-link">
                    选择学期<i class="el-icon-arrow-down el-icon--right"></i>
                  </span>
          <el-dropdown-menu slot="dropdown">
            <el-dropdown-item command="2022年秋" divided>2022年秋</el-dropdown-item>
            <el-dropdown-item command="2023年春" divided>2023年春</el-dropdown-item>
          </el-dropdown-menu>
        </el-dropdown>
        <el-button type="primary" style="float: right;margin-right: 10px;">当前学期:{{term}}</el-button>

        <br>

        <div>
          <el-select clearable v-model="form.teachid" placeholder="请选择教学班" style="width: 20%;float: left;margin: 10px 0;" @change="changeInfo">
            <el-option v-for="item in techids" :key="item.teachid" :label="item.teachid" :value="item.teachid"></el-option>
          </el-select>

          <el-button type="primary" class="ml-5" v-show="this.remindinfo!=''" style="float: left;margin: 10px 10px;">{{this.remindinfo.object}}</el-button>
        </div>

        <br>

        <div style="margin-top: 10px;float: left">
          <el-button type="primary" plain style="float: left;margin-right: 6px;" @click="changeleft">上一周 </el-button>
          <el-radio-group v-model="week" @change="changeAll" >
            <el-radio-button :label="1" >第1周</el-radio-button>
            <el-radio-button :label="2">第2周</el-radio-button>
            <el-radio-button :label="3">第3周</el-radio-button>
            <el-radio-button :label="4">第4周</el-radio-button>
            <el-radio-button :label="5">第5周</el-radio-button>
            <el-radio-button :label="6">第6周</el-radio-button>
            <el-radio-button :label="7">第7周</el-radio-button>
            <el-radio-button :label="8">第8周</el-radio-button>
            <el-radio-button :label="9">第9周</el-radio-button>
            <el-radio-button :label="10">第10周</el-radio-button>
            <el-radio-button :label="11">第11周</el-radio-button>
            <el-radio-button :label="12">第12周</el-radio-button>
          </el-radio-group>
          <el-button type="primary" plain style="margin-left: 0.1rem;" @click="changeright">下一周</el-button>
        </div>
      </div>
      <el-table :data="tableData2" border stripe header-cell-class-name="'headerBg'" @selection-change="handleSelectionChange" style="line-height: 10px" @cell-click="changeClick">
        <el-table-column prop="day" label="星期\节次" width="60"></el-table-column>
        <el-table-column prop="class1" label="第1-2节8:00-9:35" width="220" ></el-table-column>
        <el-table-column prop="class2" label="第3-5节9:50-12:15" width="220" ></el-table-column>
        <el-table-column prop="class3" label="第6-7节14:30-16:05" width="220"></el-table-column>
        <el-table-column prop="class4" label="第8-9节16:20-17:55" width="220"></el-table-column>
        <el-table-column prop="class5" label="第10-12节7:00-21:25"  width="220"></el-table-column>
      </el-table>

      <el-dialog title="课程信息" :visible.sync="dialogFormVisible" width="40%" style="line-height: 10px">
        <div v-show="form.teachid==null">抱歉,请先选择教学班</div>
        <div v-show="form.teachid!=null">
          <el-form label-width="70px" size="small" style="margin-bottom: 20px">
            你确定在此时间段排{{form.teachid}}教学班的课吗?
          </el-form>
          <div slot="footer" class="dialog-footer">
            <el-button @click="dialogFormVisible = false">取 消</el-button>
            <el-button type="primary" @click="save">确 定</el-button>
          </div>
        </div>
      </el-dialog>

      <el-dialog title="你确定删除吗" :visible.sync="dialogFormVisible2" width="40%" style="line-height: 10px">
        <el-button @click="dialogFormVisible2 = false">取 消</el-button>
        <el-button type="primary" @click="save2">确 定</el-button>
      </el-dialog>
    </div>
    
    <div v-show="!dialogFormVisible3" style="margin: 0.8rem;line-height: 100px;float: left;width: 80%">
      <el-card  style="width: 100%;background-color: rgba(55,97,151,0.1)!important;color: #0CD1EA!important;display: inline-block;margin-top: 0.3rem;font-weight: bolder" class="panel" >
        <el-form label-width="100px" size="small" :model="form2" ref="pass">
          <el-form-item prop="houseid">
                        <span slot="label">
                            <span style="color: #024171">机房号</span>
                        </span>
            <el-select clearable v-model="form2.hoseid" placeholder="请选择机房号" style="width: 100%">
              <el-option v-for="item in houseids" :key="item.id" :label="item.id" :value="item.id"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item prop="week1">
                         <span slot="label">
                            <span style="color: #024171">起始周次</span>
                        </span>
            <el-input v-model="weeks.week1" autocomplete="off" placeholder="请填写起始周次"></el-input>
          </el-form-item>
          <el-form-item prop="week2">
                         <span slot="label">
                            <span style="color: #024171">结束周次</span>
                        </span>
            <el-input v-model="weeks.week2" autocomplete="off" placeholder="请填写结束周次"></el-input>
          </el-form-item>
          <el-form-item prop="day">
                    <span slot="label">
                        <span style="color: #024171">星期几</span>
                    </span>
            <el-select clearable v-model="form2.day" placeholder="请选择星期几" style="width: 100%">
              <el-option v-for="item in dayids" :key="item.day" :label="item.day" :value="item.day"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item prop="depart">
                     <span slot="label">
                        <span style="color: #024171">时间段</span>
                    </span>
            <el-select clearable v-model="form2.timeid" placeholder="请选择时间段" style="width: 100%">
              <el-option v-for="item in timeids" :key="item.time" :label="item.time" :value="item.time"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item prop="teachid">
                         <span slot="label">
                            <span style="color: #024171">教学班号</span>
                        </span>
            <el-select clearable v-model="form2.teachid" placeholder="请选择教学班" style="width: 100%">
              <el-option v-for="item in techids" :key="item.teachid" :label="item.teachid" :value="item.teachid"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item prop="term">
                         <span slot="label">
                            <span style="color:#024171">学期</span>
                        </span>
            <el-select clearable v-model="form2.term" placeholder="请选择学期" style="width: 100%">
              <el-option v-for="item in termids" :key="item.term" :label="item.term" :value="item.term"></el-option>
            </el-select>
          </el-form-item>

          <el-form-item style="margin-left: 38%">
            <el-button type="primary" style="background-color: #1F52A5!important;" @click="save3">确 定</el-button>

            <el-button type="primary" style="background-color: #1F52A5!important;" @click="form2 = {}">取 消</el-button>
          </el-form-item>
        </el-form>
      </el-card>

    </div>

  </div>
</template>

<script>

  export default {
    name: "Home",
    data(){
      return {
        term:'2023年春',
        id:0,
        pageNum: 1,
        pageSize: 20,
        tableData: [],
        tableData2:[],
        weekAll:[],
        timeAll:[],
        timeid:1,
        houseid: 407,
        week: 1,
        day:1,
        form: {},
        form2: {},
        weeks:{},
        dialogFormVisible: false,
        dialogFormVisible2: false,
        dialogFormVisible3: true,
        user:localStorage.getItem("user") ?JSON.parse(localStorage.getItem("user")) : {},
        multipleSelection: [],
        total: 0,
        info:[],
        radio1: '第一周',
        classArr:[],
        techids:[],
        timeids:[{'time':1},{'time':2},{'time':3},{'time':4},{'time':5}],
        dayids:[{'day':1},{'day':2},{'day':3},{'day':4},{'day':5},{'day':6},{'day':7}],
        houseids:[{'id':404},{'id':405},{'id':406},{'id':407}],
        termids:[{'term':'2022年秋'},{'term':'2023年春'}],
        remindinfo:"",

      }
    },
    mounted() {
      this.changeAll();
    },
    computed:{
      sortedItems(){
        return this.tableData.sort((a,b)=>a.day - b.day)
      }
    },
    methods:{
     //这个是第二页的批量排课的。上面的图没有显示出来,但是运行这些代码会有
      save3(){
        if(Number(this.weeks.week1)>Number(this.weeks.week2)){
          this.$message.error('抱歉,你输入的周次存在逻辑错误!')
        }
        else {
          //请求分页查询数据
          this.$http.defaults.headers.common['Authorization'] = sessionStorage.getItem("token");
          this.$http.get("/api/classes/search",{

            params: {
              hoseid:this.form2.hoseid,
              term:this.form2.term,
            }
          }).then(res => {
            this.timeAll=[]
            this.weekAll=[]
            var temp = [];
            temp = res.data.object;
            for(var i=0;i<temp.length;i++) {
              this.timeAll.push(temp[i].timeid)
              this.weekAll.push(temp[i].week)
            }


            var flag =true;
            for(var i=this.weeks.week1;i<=this.weeks.week2;i++) {
              for (var j = 0; j < this.weekAll.length && flag; j++) {
                if (this.weekAll[j] == i && this.timeAll[j] == this.form2.timeid) {
                  this.$message.error('抱歉,第' + this.form2.term + '学期' + '第' + this.form2.hoseid + '教室' + i + '周' + '星期' + this.day + "的" + this.form2.timeid + '时间段已有排课安排');
                  flag = false;
                  break
                }
              }
            }

            if (flag) {

            for(var i=this.weeks.week1;i<=this.weeks.week2;i++) {
                this.form2.week = i;
                this.$http.defaults.headers.common['Authorization'] = sessionStorage.getItem("token");
                this.$http.post("/api/classes", this.form2).then(res => {
                  if (res.data) {
                    this.changeAll();
                  } else {
                    this.$message.error("保存失败")
                  }
                })

              }
            this.$message.success("批量排课成功")
            }

          })
        }
      },

		 //点击确认排课后调用的方法
      save(){
        this.form.hoseid = this.houseid;
        this.form.week=this.week;
        this.form.day=this.day;
        this.form.timeid=this.timeid;
        this.form.term = this.term;
        this.$http.defaults.headers.common['Authorization'] = sessionStorage.getItem("token");
        this.$http.post("/api/classes", this.form).then(res => {
          if(res.data) {
            this.$message.success("保存成功");
            this.dialogFormVisible = false;
            this.changeAll();
          }else{
            this.$message.error("保存失败")
          }
        })
      },
      
		 // 点击确认删除后调用的方法
      save2(){
        this.$http.defaults.headers.common['Authorization'] = sessionStorage.getItem("token");
        this.$http.delete('/api/classes/' + this.id).then(res => {
          if(res.data){
            this.$message.success("删除成功")
            this.dialogFormVisible2=false
            this.changeAll();
          }else{
            this.$message.error("删除失败")
          }
        })
      },
      
      // 点击表格后调用的方法,会先判断一下表格是否有值
      changeClick(row,column,cell,event){
          this.day = row.day
          if (row[column.property] != null) {
            this.dialogFormVisible2 = true;
            if (column.label === '第1-2节8:00-9:35') {
              this.timeid = 1;
              this.id = row.id1;
            } else if (column.label === '第3-5节9:50-12:15') {
              this.timeid = 2;
              this.id = row.id2;
            } else if (column.label === '第6-7节14:30-16:05') {
              this.timeid = 3;
              this.id = row.id3;
            } else if (column.label === '第8-9节16:20-17:55') {
              this.timeid = 4;
              this.id = row.id4;
            } else if (column.label === '第10-12节7:00-21:25') {
              this.timeid = 5;
              this.id = row.id5;
            }
          } else {
            this.dialogFormVisible = true
            if (column.label === '第1-2节8:00-9:35') {
              this.timeid = 1;
            } else if (column.label === '第3-5节9:50-12:15') {
              this.timeid = 2;
            } else if (column.label === '第6-7节14:30-16:05') {
              this.timeid = 3;
            } else if (column.label === '第8-9节16:20-17:55') {
              this.timeid = 4;
            } else if (column.label === '第10-12节7:00-21:25') {
              this.timeid = 5;
            }
        }
      },
      
      // 这个是用来显示该教学班详细信息的
      changeInfo(){
        this.$http.defaults.headers.common['Authorization'] = sessionStorage.getItem("token");
        this.$http.get('/api/classes/' + this.form.teachid).then(res => {
          this.remindinfo=res.data;
        });
      },

		 //点击上一周
      changeleft(){
        if(this.week!=1) {
          this.week = this.week - 1
          this.changeAll();
        }
      },
      
   //点击下一周
      changeright(){
        if(this.week!=12) {
          this.week = this.week + 1
          this.changeAll();
        }
      },
      
      changeAll(){
        this.load();

			 //下面这两个都是用来接下拉框显示的值的。
        this.$http.defaults.headers.common['Authorization'] = sessionStorage.getItem("token");
        this.$http.get("/api/teach").then(res =>{
          this.techids = res.data.object;
        })
  
        this.$http.defaults.headers.common['Authorization'] = sessionStorage.getItem("token");
        this.$http.get("/api/teach").then(res =>{
          this.hoseids = res.data.object;
        })
      },

      handleCommand(command) {
        this.houseid = command;
        this.changeAll();
        this.$message('更改教室成功,当前教室为' + command);
      },
      
      handleCommand2(command) {
        this.term = command;
        this.changeAll();
        this.$message('更改学期成功,当前学期为' + command);
      },
      
      load(){
       //请求后台数据,也就是表格中的数据
        const _this = this;
        this.$http.defaults.headers.common['Authorization'] = sessionStorage.getItem("token");
        this.$http.get("/api/classes/page",{
          params: {
            currentPage:this.pageNum,
            pageSize:this.pageSize,
            hoseid:this.houseid,
            week:this.week,
            term:this.term,
          }
        }).then(res => {
          _this.tableData = res.data.object.userInfo;
          _this.tableData.sort((a,b)=>a.classes.day - b.classes.day)
          _this.infoImport();

          this.total = res.data.object.totals;
        })
      },
      
      handleSelectionChange(val){
        this.multipleSelection = val
      },
      //这个函数是处理返回的数据的用来显示,看起来有些复杂,其实就是新建一个数组,重新赋值用来显示的
      finalCut(){
        var _this = this;
        var tempday = 1;
        _this.tableData2 = [];
        _this.tableData2.push({'day':tempday});
        if(_this.tableData[0].classes.timeid != null) {
          if (_this.tableData[0].classes.timeid == 1) {
            _this.$set(_this.tableData2[0], 'class1', _this.tableData[0].class1)
            _this.$set(_this.tableData2[0], 'id1', _this.tableData[0].classes.id)
          } else if (_this.tableData[0].classes.timeid == 2) {
            _this.$set(_this.tableData2[0], 'class2', _this.tableData[0].class2)
            _this.$set(_this.tableData2[0], 'id2', _this.tableData[0].classes.id)
          } else if (_this.tableData[0].classes.timeid == 3) {
            _this.$set(_this.tableData2[0], 'class3', _this.tableData[0].class3)
            _this.$set(_this.tableData2[0], 'id3', _this.tableData[0].classes.id)
          } else if (_this.tableData[0].classes.timeid == 4) {
            _this.$set(_this.tableData2[0], 'class4', _this.tableData[0].class4)
            _this.$set(_this.tableData2[0], 'id4', _this.tableData[0].classes.id)
          } else if (_this.tableData[0].classes.timeid == 5) {
            _this.$set(_this.tableData2[0], 'class5', _this.tableData[0].class5)
            _this.$set(_this.tableData2[0], 'id5', _this.tableData[0].classes.id)
          }
        }

        for(var j=1;j<_this.tableData.length;j++) {

          if (_this.tableData[j].classes.day != tempday){
            tempday = tempday + 1;
            _this.tableData2.push({'day':tempday})
          }
          if(_this.tableData[j].classes.timeid != null) {
            if (_this.tableData[j].classes.timeid == 1) {
              _this.$set(_this.tableData2[tempday-1], 'class1', _this.tableData[j].class1)
              _this.$set(_this.tableData2[tempday-1], 'id1', _this.tableData[j].classes.id)
            }
            else if(_this.tableData[j].classes.timeid == 2){
              _this.$set(_this.tableData2[tempday-1],'class2',_this.tableData[j].class2)
              _this.$set(_this.tableData2[tempday-1], 'id2', _this.tableData[j].classes.id)
            }
            else if(_this.tableData[j].classes.timeid == 3){
              _this.$set(_this.tableData2[tempday-1],'class3',_this.tableData[j].class3)
              _this.$set(_this.tableData2[tempday-1], 'id3', _this.tableData[j].classes.id)

            }
            else if(_this.tableData[j].classes.timeid == 4){
              _this.$set(_this.tableData2[tempday-1],'class4',_this.tableData[j].class4)
              _this.$set(_this.tableData2[tempday-1], 'id4', _this.tableData[j].classes.id)
            }
            else if(_this.tableData[j].classes.timeid == 5){
              _this.$set(_this.tableData2[tempday-1],'class5',_this.tableData[j].class5)
              _this.$set(_this.tableData2[tempday-1], 'id5', _this.tableData[j].classes.id)
            }
          }
        }
      },
      //下面这个函数是用来将即使某一天没有课,也要显示显示出一行空格
      infoImport(){
        const _this = this;
          for(var l=1;l<=7;l++) {
            for (var k = 0; k < _this.tableData.length; k++) {
              if (l == _this.tableData[k].classes.day){
                break;
              }
            }
            if(k==_this.tableData.length){
              _this.tableData.unshift({'classes':{day:l}})
            }
          }
          _this.tableData.sort((a,b)=>a.classes.day - b.classes.day)
          this.finalCut();
      },
    }
  }
</script>

后端代码这里就不上传了,传个数据库吧:
在这里插入图片描述
加油,相信你是最棒的!!!

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

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

相关文章

SSD网络介绍

1. 目标检测 计算机视觉关于图像识别有四大类任务&#xff1a; 分类 Classfication&#xff1a;解决“是什么&#xff1f;”的问题&#xff0c;即给定一张图片或一段视频&#xff0c;判断里面包含什么类别的目标&#xff1b;定位 Location&#xff1a;解决“在哪里&#xff1…

2321. 拼接数组的最大分数;768. 最多能完成排序的块 II;2192. 有向无环图中一个节点的所有祖先

2321. 拼接数组的最大分数 核心思想&#xff1a;数学思维。假设nums1的和为a0a1a2a3...an-1 sum(nums1),nums2的和为b0b1b2b3...bn-1 sum(nums2),交换al...ar与bl..br&#xff0c;现在nums1的和要最大&#xff0c;则s sum(nums1) (br-ar)(br-1-ar-1)...(bl-al),所以你要使…

项目名称:驱动开发(控LED灯,控制蜂鸣器)

一&#xff0c;简述 (1)Linux系统组成 ()app: [0-3G] ---------------------------------系统调用&#xff08;软中断&#xff09;--------------------- kernel&#xff1a; 【3-4G】…

Python补充笔记3-bug问题

目录 一、Bug 粗心导致的语法错误​ ​编辑 知识不熟练导致的错误​ 思路不清晰导致的问题​ 被动掉坑​ 二、try…except…else结构​ 三、try…except…else…finally结构​ 四、常见异常类型​编辑traceback模块 pycharm调试 一、Bug 粗心导致的语法错误 知识不熟练导致的…

C++进阶:c++11

C11 相比于C98&#xff0c;C11则带来了数量可观的变化&#xff0c;以及对C03缺陷的修正。C11语法更加泛化简单化、更加稳定安全&#xff0c;功能更强大&#xff0c;提升开发效率。 cpp11 1. 列表初始化 C11扩大了用{}&#xff08;初始化列表&#xff09;的使用范围&#xff…

Spring Cloud+Uniapp+企业工程管理系统源码之提高工程项目管理软件的效率

高效的工程项目管理软件不仅能够提高效率还应可以帮你节省成本提升利润 在工程行业中&#xff0c;管理不畅以及不良的项目执行&#xff0c;往往会导致项目延期、成本上升、回款拖后&#xff0c;最终导致项目整体盈利下降。企企管理云业财一体化的项目管理系统&#xff0c;确保…

Mac端虚拟定位 AnyGo mac中文 6.2.1

AnyGo for Mac是一款一键将iPhone的Gps位置更改为任何位置的强大软件&#xff01;使用AnyGo在其iOS或Android设备上改变其Gps位置&#xff0c;并在任何想要的地方显示自己的位置。这对那些需要测试应用程序、游戏或其他依赖于地理位置信息的应用程序的开发人员来说非常有用&…

C# List 详解六

目录 35.MemberwiseClone() 36.Remove(T) 37.RemoveAll(Predicate) 38.RemoveAt(Int32) 39.RemoveRange(Int32, Int32) 40.Reverse() 41.Reverse(Int32, Int32) C# List 详解一 1.Add(T)&#xff0c;2.AddRange(IEnumerable)&#xff0c;3…

【SpringCloud Alibaba】(一)微服务介绍

此专栏内容皆来自于【冰河】的《SpringCloud Alibaba 实战》文档。 1. 专栏介绍 我们先来看看《SpringCloud Alibaba实战》专栏的整体结构吧&#xff0c;先上图 从上图&#xff0c;大家可以看到&#xff0c;专栏从整体上分为十个大的篇章&#xff0c;分别为 专栏设计、微服务…

MGER-OSPF的LSA-OSPF的优化 综合实验报告

题目&#xff1a; 步骤一&#xff1a;拓扑设计&#xff0c;地址规划 地址规划&#xff1a; 有题意知&#xff1a;整个OSPF环境基于172.16.0.0/16划分。则据提意划分出子网掩码长度为20的&#xff0c;十六个网段&#xff0c;如下&#xff1a; 骨干链路&#xff1a;使用172.16.…

Appium+python自动化(十九)- Monkey(猴子)参数(超详解)

前边几篇介绍了Monkey以及Monkey的事件&#xff0c;今天就给小伙伴们介绍和分享一下Monkey的参数。 首先我们看一下这幅图来大致了解一下&#xff1a; 1、Monkey 命令 基本参数介绍 -p <允许的包名列表> 用此参数指定一个或多个包。指定包之后&#xff0c;mon…

18 常用控件--按钮组

QPushButton 可以显示图标QToolButton 工具按钮 可以显示图标 可以设置透明效果QRadioButton 单选按钮QCheckBox 多选按钮 多个单选按钮可以用GroupBox分组 按钮可以设置默认选中状态&#xff0c;多选按钮可以设置半选状态 代码&#xff1a; //widget.h #ifndef WIDGET_H #def…

Llama2开源大模型的新篇章以及在阿里云的实践

Llama一直被誉为AI社区中最强大的开源大模型。然而&#xff0c;由于开源协议的限制&#xff0c;它一直不能被免费用于商业用途。然而&#xff0c;这一切在7月19日发生了改变&#xff0c;当Meta终于发布了大家期待已久的免费商用版本Llama2。Llama2是一个由Meta AI开发的预训练大…

前端工程师的岗位职责(合集)

篇一 岗位职责&#xff1a; 1、负责网站前端开发&#xff0c;实现产品的页面交互及功能实现; 2、与程序开发人员紧密合作&#xff0c;制作前端及后端程序接口标准; 3、完成产品的设计、开发、测试、修改bug等工作&#xff0c;包括业务需求的沟通&#xff0c;功能模块详细设计…

防火墙入门指南:了解防火墙的基础知识

目录 防火墙&#xff08;四层设备&#xff09; 1.1防火墙是什么 1.2 防火墙是如何诞生的 1.2.1包过滤防火墙----访问控制列表技术---三层技术 1.2.2代理防火墙----中间人技术---应用层 1.2.3状态防火墙---会话追踪技术---三层、四层 1.2.4UTM---深度包检查技术----应用层…

element-ui动态编辑标签

点击叉叉&#xff0c;标签消失&#xff0c;点击New Tag&#xff0c;显示输入框&#xff0c;输入完成后生成标签&#xff0c;并且出现New Tag标签。 代码&#xff1a; <el-tag:key"tag"v-for"tag in dynamicTags"closable:disable-transitions"fa…

【Hive 01】简介、安装部署、高级函数使用

1 Hive简介 1.1 Hive系统架构 Hive是建立在 Hadoop上的数据仓库基础构架&#xff0c;它提供了一系列的工具&#xff0c;可以进行数据提取、转化、加载&#xff08; ETL &#xff09;Hive定义了简单的类SQL查询语言&#xff0c;称为HQL&#xff0c;它允许熟悉SQL的用户直接查询…

redux源码阅读总结(一)- createStore.js详细解析与思考

redux数据流分析 在阅读redux源码之前&#xff0c;先整理一下redux的数据流&#xff0c;官网的数据流程图如下所示。该图十分清晰明了的展示了redux的数据流&#xff1a; 点击UI&#xff0c;发起一个存钱的点击事件。在点击事件处理函数中&#xff0c;dispatch分发一个action…

AE 3D粒子插件trapcode particular 新版本

Trapcode Particular for Mac是目前AE系列的插件中最火爆最流行的一款三维粒子插件&#xff0c;是属于Red Giant Trapcode Suite&#xff08;红巨人粒子特效套装插件&#xff09;中的一款粒子插件。该软件提供了多达一百余种粒子效果供用户使用&#xff0c;可以产生各种各样的自…

【算法基础:搜索与图论】3.4 求最短路算法(Dijkstrabellman-fordspfaFloyd)

文章目录 求最短路算法总览Dijkstra朴素 Dijkstra 算法&#xff08;⭐原理讲解&#xff01;⭐重要&#xff01;&#xff09;&#xff08;用于稠密图&#xff09;例题&#xff1a;849. Dijkstra求最短路 I代码1——使用邻接表代码2——使用邻接矩阵 补充&#xff1a;稠密图和稀疏…