工作需求ElementUi组件的使用

加油,新时代打工人!

组件源码

html 复制代码
<template>
  <div @mouseenter="mousein = true" @mouseleave="mousein = false">
     <el-input type="text" clearable autocomplete="off" v-model="searchDoc.originName"  placeholder="请选择" size="small" :style="style"
      @focus="handleShowDatatable(true)" @blur="handleShowDatatable(false)" @input="getList" />
    <div ref="tableContainer" :style="tableStyle" v-show="showDatatable" >
       <el-table
      :data="tableData"
        border
      style="width: 100%"
      @row-click="handleRowClick">
      <el-table-column
        prop="originCode"
        label="产地编码"
        width="180">
      </el-table-column>
      <el-table-column
        prop="originName"
        label="产地名称"
        width="180">
      </el-table-column>
      <el-table-column
        prop="zjm"
        label="助记码"
        width="70">
      </el-table-column>
       </el-table>
    <div class="paginationclass">
      <pagination
        v-show="total > 0"
        :total="total"
        :page.sync="pagination.pageIndex"
        :limit.sync="pagination.pageSize"
        @pagination="getList"
      />
    </div>
    </div>
  </div>
  
</template>

<script>
import{  
    getMnufacturerList
} from "@/api/manufacturer/manufacturer.js"

export default {
  name: 'MyFacturerName',
  props: {
    value: {
      type: Object
    },
    width: {
      type: [Number, String]
    },
      index:{
          type: [Number, String]

      },
  },
  data(){
    return {
      loading: false,
      searchDoc: {
        originName: '',
        id: 0
      },
      mousein: false,
      showDatatable: false,
      tableStyle: {
        'position':'absolute',
        'background-color':'#FFFFFF',
        'z-index':10,
        'max-height':'200px',
        'overflow-y':'auto',
      },
       pagination: {
        pageIndex: 1,
        pageSize: 10,
      },
      queryParams: {
        originName: "",
      },

      total: 0,
      tableData: [],
      selectRow: null,
    }
  },
  methods: {
   getList() {
      getMnufacturerList({
        ...this.pagination,
        ...this.queryParams,
        originName:this.searchDoc.originName
      }).then((res) => {
        this.tableData = res.data.list;
        this.total = res.data.total;
      }).catch((err) => {
          this.$Message.error('请求产地信息时异常: ', err)
      }).finally(() => {
          this.loading = false
      });
    },

      handleRowClick(item){
          this.searchDoc = {
              originCode: item.originCode,
              originName:item.originName,
              zjm:item.zjm,
              providerName:item.providerName
          }
          let data={
              index:this.index,
              searchDoc:this.searchDoc
          }
          this.$emit('sendname',data.searchDoc.providerName)
          this.closeDatatable()
      },
    handleShowDatatable(isShow){
      if(!this.mousein && !isShow){
        this.showDatatable = false
      }else{
        this.showDatatable = true
        if(this.tableData.length == 0){
          this.getList()
        }
      }
    },
    closeDatatable(){
      this.showDatatable = false
    }
  },
  computed: {
    style(){
      let style = {width: '180px'}
      if(this.width){
        style.width = `${this.width}px`
      }
      return style
    }
  },
  watch: {
    searchDoc: function(val){
      if(!val.originName){
        this.searchDoc.id = 0
      }
      this.$emit('input', this.searchDoc)
    }
  },
  mounted(){

  }
  
}
</script>
<style scoped>
.paginationclass {
  margin-left: 40%;
  margin-top: 20px;
  margin-bottom: 20px;
}
</style>

导入

html 复制代码
import MyFacturerName from "@/components/MyFacturerMedid/My-Facturer-medid.vue";

使用

html 复制代码
<MyFacturerName @sendzjm="setfaceturerName" :index1="scope.$index">
</MyFacturerName>
相关推荐
不老刘16 分钟前
前端面试八股文:JavaScript 原型链
javascript·原型链
行走的陀螺仪17 分钟前
使用uniapp,实现根据时间倒计时执行进度条变化
前端·javascript·uni-app·vue2·h5
科技D人生23 分钟前
Vue.js 学习总结(19)—— Vue3 按钮防重复点击三种方案总结
前端·vue.js·uniapp·vue3 防重复提交·uniapp 防重复提交·前端防抖
指尖跳动的光33 分钟前
前端视角-如何保证系统稳定性
前端
John_ToDebug35 分钟前
Chromium WebUI 定制实践:从 C++ 注入到 JS 安全展示全链路解析
javascript·c++·chrome
fruge35 分钟前
2025全栈技术深耕与实践:从框架融合到工程落地
前端
拼命_小李39 分钟前
使用intro.js实现简单下一步引导demo
javascript
长不大的蜡笔小新39 分钟前
私人健身房管理系统
java·javascript·spring boot
秋4271 小时前
tomcat与web服务器
服务器·前端·tomcat
hdsoft_huge1 小时前
Java 实现高效查询海量 geometry 及 Protobuf 序列化与天地图前端分片加载
java·前端·状态模式