欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解vue如何給特殊字段設(shè)置插槽

 更新時間:2023年09月13日 10:50:15   作者:明思齊  
這篇文章主要為大家詳細(xì)介紹了vue如何實現(xiàn)給特殊字段設(shè)置插槽,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以學(xué)習(xí)一下

大綱:

<template>
  <div>
    <div>
      <span>卡號</span>
      <el-input type="text" v-model="cardNo" clearable placeholder="請輸入卡號" />
      <el-button type="primary" plain icon="el-icon-search" @click="search">搜索</el-button>
    </div>
    <!-- 表格 -->
    <el-table class="fontTextStyle" border :header-cell-style="{background:'#f0f9eb'}" :data="data" style="width: 100%">
      <el-table-column align="center" prop="staffName" label="姓名"></el-table-column>
      <el-table-column align="center" prop="deptName" label="部門"></el-table-column>
      <el-table-column align="center" prop="cardNo" label="卡號" :show-overflow-tooltip="true"></el-table-column>
      <el-table-column align="center" prop="termNo" label="設(shè)備號"></el-table-column>
      <el-table-column align="center" prop="datails" label="菜品">
        <template slot-scope="scope">
          <el-popover placement="top-start" trigger="click">
            <el-tag size="small" style="margin-right: 10px;" v-for="item in scope.row.details" :key="item.pid">
              {{ item.name }} X {{ item.qty }}份
            </el-tag>
            <el-button type="text" slot="reference"> {{scope.row.details.length}}個菜品</el-button>
          </el-popover>
        </template>
      </el-table-column>
      <el-table-column align="center" prop="amt" label="消費金額"></el-table-column>
      <el-table-column align="center" prop="balance" label="余額"></el-table-column>
      <el-table-column align="center" prop="payTime" label="支付時間" :show-overflow-tooltip="true"></el-table-column>
    </el-table>
  </div>
</template>
<script>
  import API from '@/components/common/Api'
  export default {
    data() {
      return {
        //查詢參數(shù)
        pn: 1,
        ps: 10,
        count: 0,
        data: [],
        form: {},
        cardNo: '',//搜索鍵值
        datails: '',
      }
    },
    mounted() {
      this.getList()
    },
    methods: {
      search() {
        this.getList();
      },
      //獲取智盤支付記錄列表
      getList() {
        let params = {
          cardNo: this.cardNo,
        }
        API.getPosPayLog(params).then(result => {
          if (result.data && result.data.code == 0) {
            this.data = result.data.data.list || [];
            //循環(huán)遍歷菜品
            this.data.forEach(item => {
              item.details = JSON.parse(item.details)
            })
            this.count = result.data.data.total
          }
        });
      },
    },
  }
</script>
<style></style>

代碼詳解:

代碼中使用了 Element UI 的組件,包括 el-input (輸入框)、 el-button (按鈕)、 el-table (表格)、 el-table-column (表格列)和 el-popover (氣泡彈出框)等等。

第一步: 在頁面初始化時,通過 mounted 鉤子函數(shù)調(diào)用 getList 方法獲取支付記錄列表,并將結(jié)果保存在 data 數(shù)組中。當(dāng)點擊搜索按鈕時,會觸發(fā) search 方法,該方法再次調(diào)用 getList 方法進(jìn)行搜索。

第二步: getList 方法發(fā)送請求到后端接口,傳遞卡號作為參數(shù)。當(dāng)接口返回數(shù)據(jù)后,將數(shù)據(jù)賦值給 data 數(shù)組,并使用 JSON.parse 將菜品詳情從字符串解析為對象數(shù)組

第三步:通過循環(huán)遍歷 data 數(shù)組中的每一項,將菜品詳情 item.details 解析為對象數(shù)組,以便在表格中展示。

注意:具體的接口返回的數(shù)據(jù)類型可能會有所不同,可以根據(jù)實際需求進(jìn)行調(diào)整。

類型:字符串json

<template>
  <div>
    <avue-crud ref="crud" v-model="form" :data="data" :option="option">
      <!-- 消費商品 -->
      <template slot-scope="scope" slot="payOrder">
        <el-popover trigger="click" title="" v-if="scope.row.payOrder.length">
          <div>
            <el-tag size="small" v-for="(item,index) in viewList" :key="index">
              {{ item.name }}X{{ item.num }}份
            </el-tag>
          </div>
          <el-button slot="reference" type="text" size="small" @click="getmenu(scope.row.payOrder)">
            {{ scope.row.payOrder.length }}個菜品
          </el-button>
        </el-popover>
        <div v-else>無</div>
      </template>
    </avue-crud>
  </div>
</template>
<script>
  import API from '@/components/common/Api';
  export default {
    data() {
      return {
        /* data:[]后端獲取到的數(shù)據(jù)列表。option表格配置項.form 表單*/
        data: [],
        form: {},
        query: {}, //搜索鍵值
        viewList: [],
        option: {
          size: 'mini', //表格大小 medium/small/mini
          border: true,
          align: 'center',
          viewBtn: false, //查看詳情按鈕
          editBtn: false, //編輯修改按鈕
          delBtn: false, //刪除按鈕
          addBtn: false,
          menu: false,
          column: [{
              label: '消費商品', //表頭
              prop: 'payOrder', //鍵值
              slot: true,
            }]
        },
      }
    },
    mounted() {
      this.onLoad()
    },
    methods: {
      // 根據(jù)接口獲取data數(shù)據(jù)
      onLoad() {
        let params = {
          data: this.query,
        }
        API.yktPosPayLogAll(params).then(res => {
          if (res.data.code == 0) {
            this.data = res.data.data.list;
            //循環(huán)遍歷商品
            this.data.forEach(item => {
              item.payOrder = JSON.parse(item.payOrder);
            })
          }
        })
      },
      getmenu(arr) {
        this.viewList = arr;
      },
    }
  }
</script>
<style></style>
<template>
    <avue-crud :option="option" :data="data" v-model="form" ref="crud">
      <template slot-scope="scope" slot="posFoodReserveDetail">
        <el-popover trigger="click" title="菜單">
          <div>
            <el-tag size="small" v-for="item in viewList" :key="item.foodId">
              {{ item.foodName }}X{{ item.reserveNum }}份
            </el-tag>
          </div>
          <el-button slot="reference" type="text" size="small" @click="getmenu(scope.row.posFoodReserveDetail)">
            {{ scope.row.posFoodReserveDetail.length }}個菜品
          </el-button>
        </el-popover>
      </template>
    </avue-crud>
</template>
<script>
  import API from '@/components/common/newApi';
  export default {
    data() {
      return {
        data: [],
        form: {},
        query: {},
        option: {
          border: true,
          column: [{
              label: '預(yù)定內(nèi)容',
              prop: 'posFoodReserveDetail',
              slot: true,
              overHidden: true,
            }]
        },
        viewList: []
      };
    },
    mounted() {
      this.onLoad();
    },
    methods: {
      // 加載表格數(shù)據(jù)
      onLoad() {
        let param = {
          data: this.query
        };
        API.selectMyReserve(param).then(res => {
          if (res.data.code === 0) {
            this.data = res.data.data.list;
          }
        });
      },
      getmenu(arr) {
        this.viewList = arr;
      },
    }
  };
</script>
<style></style>

代碼詳解:

在這個插槽中,我使用了 el-popover 組件來顯示菜單信息,并通過點擊按鈕觸發(fā)了 getmenu 方法。根據(jù)我這邊的業(yè)務(wù)需求,我將在點擊按鈕時調(diào)用 getmenu 方法,并將傳入的 scope.row.posFoodReserveDetail 賦值給 viewList。

類型:數(shù)組

以上就是詳解vue如何給特殊字段設(shè)置插槽的詳細(xì)內(nèi)容,更多關(guān)于vue插槽的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue3使用xgPalyer實現(xiàn)截圖功能的方法詳解

    vue3使用xgPalyer實現(xiàn)截圖功能的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何在vue3中使用xgPalyer截圖功能,以及自定義插件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • Vue替代marquee標(biāo)簽超出寬度文字橫向滾動效果

    Vue替代marquee標(biāo)簽超出寬度文字橫向滾動效果

    這篇文章主要介紹了Vue替代marquee標(biāo)簽超出寬度文字橫向滾動效果,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • Vue.js實現(xiàn)一個todo-list的上移下移刪除功能

    Vue.js實現(xiàn)一個todo-list的上移下移刪除功能

    這篇文章主要介紹了Vue.js實現(xiàn)一個todo-list的上移下移刪除功能,需要的朋友可以參考下
    2017-06-06
  • vue router點擊打開新的標(biāo)簽頁的方法(最新推薦)

    vue router點擊打開新的標(biāo)簽頁的方法(最新推薦)

    vue router點擊打開新的標(biāo)簽頁的方法,只需要在router-link中加入target="_blank"即可在新的頁面打開標(biāo)簽,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-10-10
  • VUE3基礎(chǔ)學(xué)習(xí)之click事件詳解

    VUE3基礎(chǔ)學(xué)習(xí)之click事件詳解

    由于vue是一個雙向數(shù)據(jù)綁定的框架,它的點擊事件與以前常用的還是有很大的差別的,下面這篇文章主要給大家介紹了關(guān)于VUE3基礎(chǔ)學(xué)習(xí)之click事件的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Vue 實時監(jiān)聽窗口變化 windowresize的兩種方法

    Vue 實時監(jiān)聽窗口變化 windowresize的兩種方法

    這篇文章主要介紹了Vue 實時監(jiān)聽窗口變化 windowresize的兩種方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • 基于Vue + Axios實現(xiàn)全局Loading自動顯示關(guān)閉效果

    基于Vue + Axios實現(xiàn)全局Loading自動顯示關(guān)閉效果

    在vue項目中,我們通常會使用Axios來與后臺進(jìn)行數(shù)據(jù)交互,而當(dāng)我們發(fā)起請求時,常常需要在頁面上顯示一個加載框(Loading),然后等數(shù)據(jù)返回后自動將其隱藏,本文介紹了基于Vue + Axios實現(xiàn)全局Loading自動顯示關(guān)閉效果,需要的朋友可以參考下
    2024-03-03
  • 源碼剖析Vue3中如何進(jìn)行錯誤處理

    源碼剖析Vue3中如何進(jìn)行錯誤處理

    錯誤處理是框架設(shè)計的核心要素之一,框架的錯誤處理好壞,直接決定用戶應(yīng)用程序的健壯性以及用戶開發(fā)應(yīng)用時處理錯誤的心智負(fù)擔(dān),本文將從源碼入手,剖析一下Vue3中是如何進(jìn)行錯誤處理的,需要的可以參考下
    2024-01-01
  • Vue數(shù)據(jù)代理的實現(xiàn)流程逐步講解

    Vue數(shù)據(jù)代理的實現(xiàn)流程逐步講解

    通過一個對象代理對另一個對象中的屬性的操作(讀/寫),就是數(shù)據(jù)代理。要搞懂Vue數(shù)據(jù)代理這個概念,那我們就要從Object.defineProperty()入手,Object.defineProperty()是Vue中比較底層的一個方法,在數(shù)據(jù)劫持,數(shù)據(jù)代理以及計算屬性等地方都或多或少的用到了本函數(shù)
    2023-01-01
  • vuepress打包部署踩坑及解決

    vuepress打包部署踩坑及解決

    這篇文章主要介紹了vuepress打包部署踩坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09

最新評論