接计算机专业大课作业或毕设系统

帮助计算机专业平时上课啥也没听的同学写大课作业的系统,移动端、web、html系统,保运行,或者毕设系统,前后端代码一起打包给你。。
后端技术栈:java spring node 数据库mysql MongoDB
前端技术栈:html vue,css jq,element UI,vant
手写代码不免费,有需要加qq774624654

  <ul id="container">
          <li class="ele"
              draggable="true"
              v-for="(item,index) in productTagList"
              :key="item.tagName">{{item.tagName}}<i @click="delProductTag(index)"
               class="el-icon-close"></i></li>
        </ul>
<template v-if="productIntroFileList.length>0">
          <div v-for="(item,idx) in productIntroFileList"
               :key="idx"
               :class="{'drag-list':true,'drag-view':operation_type=='view'
               ,'drag-action':operation_type=='edit'||operation_type=='create'}"
               draggable="true">
            <img :src="item.url"
                 style=""
                 alt=""
                 @dragover="onDragOver"
                 @dragend="onDragEnd(idx)">
            <span class="el-upload-list__item-actions">
              <span class="el-upload-list__item-preview"
                    @click="handlePreviewImg(item)"
                    style="margin-right:2px;cursor:pointer;">
                <i class="el-icon-zoom-in"></i>
              </span>
              <span class="el-upload-list__item-delete"
                    @click="delProductIntroImg(idx)"
                    style="cursor:pointer;">
                <i class="el-icon-delete"></i>
              </span>
            </span>
          </div>
        </template>
   onDragOver (event) {
      event.preventDefault()
      const { src } = event.target
      this.targetSrc = src
    },
    onDragEnd (idx) {
      console.log(this.targetSrc);
      const targetIdx = this.productIntroFileList.findIndex(item => item.url == this.targetSrc);
      [this.productIntroFileList[idx], this.productIntroFileList[targetIdx]] = [this.productIntroFileList[targetIdx], this.productIntroFileList[idx]]
      this.productIntroFileList = [...this.productIntroFileList]
    },

  _index (el) {
      var index = 0;

      if (!el || !el.parentNode) {
        return -1;
      }

      while (el && (el = el.previousElementSibling)) {
        //console.log(el);
        index++;
      }

      return index;
    },
    _animate (prevRect, target) {
      var ms = 300;

      if (ms) {
        var currentRect = target.getBoundingClientRect();

        if (prevRect.nodeType === 1) {
          prevRect = prevRect.getBoundingClientRect();
        }

        this._css(target, 'transition', 'none');
        this._css(target, 'transform', 'translate3d(' +
          (prevRect.left - currentRect.left) + 'px,' +
          (prevRect.top - currentRect.top) + 'px,0)'
        );

        target.offsetWidth; // 触发重绘
        //放在timeout里面也可以
        // setTimeout(function() {
        //     _css(target, 'transition', 'all ' + ms + 'ms');
        //     _css(target, 'transform', 'translate3d(0,0,0)');
        // }, 0);
        this._css(target, 'transition', 'all ' + ms + 'ms');
        this._css(target, 'transform', 'translate3d(0,0,0)');
        let that = this;
        clearTimeout(target.animated);
        target.animated = setTimeout(function () {
          that._css(target, 'transition', '');
          that._css(target, 'transform', '');
          target.animated = false;
        }, ms);
      }
    },
    _css (el, prop, val) {
      var style = el && el.style;

      if (style) {
        if (val === void 0) {
          if (document.defaultView && document.defaultView.getComputedStyle) {
            val = document.defaultView.getComputedStyle(el, '');
          } else if (el.currentStyle) {
            val = el.currentStyle;
          }

          return prop === void 0 ? val : val[prop];
        } else {
          if (!(prop in style)) {
            prop = '-webkit-' + prop;
          }

          style[prop] = val + (typeof val === 'string' ? '' : 'px');
        }
      }
    }

.drag-list {
  display: inline-block;
  width: 80px;
  height: 80px;
  margin: 8px 8px 8px 0;
  position: relative;
  img {
    width: 100%;
    height: 100%;
    position: relative;
    // z-index: 20;
  }
  .el-upload-list__item-actions {
    position: absolute;
    z-index: 10;
    width: 80%;
    height: 80%;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    cursor: default;
    text-align: center;
    color: #fff;
    opacity: 0;
    font-size: 20px;
    background-color: rgba(0, 0, 0, 0.5);
    -webkit-transition: opacity 0.3s;
    transition: opacity 0.3s;
    display: flex;
    justify-content: center;
    align-items: center;
  }
  .el-upload-list__item-actions:hover {
    opacity: 1;
  }
}
.drag-list:hover {
  .el-upload-list__item-actions {
  }
}
.drag-action {
  .el-upload-list__item-delete {
    display: block;
    font-size: inherit;
    position: static;
    color: inherit;
    i {
      width: 20px;
      height: 20px;
    }
  }
}
#container {
  display: flex;
  li {
    padding: 2px 10px;
    margin-right: 8px;
    background-color: #f4f4f5;
    // border-color: #e9e9eb;
    border: 1px solid #e9e9eb;
    color: #909399;
    border-radius: 4px;
    white-space: nowrap;
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值