最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue實現(xiàn)彈窗翻頁多選效果

 更新時間:2022年08月30日 15:25:05   作者:朝陽39  
這篇文章主要為大家詳細介紹了vue實現(xiàn)彈窗翻頁多選效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了vue實現(xiàn)彈窗翻頁多選效果的具體代碼,供大家參考,具體內(nèi)容如下

最終效果

點選擇按鈕后,彈出選擇用戶彈窗,可翻頁勾多個用戶 

完整代碼

<template>
? ? <div>
? ? ? ? <el-button size="small" type="primary" @click="choose">選擇</el-button>
? ? ? ? <p>
? ? ? ? ? ? <el-tag v-for="(item,index) in allSelectedUserList" :key="index"
? ? ? ? ? ? ? ? ? ? @close="removeUser(index)"
? ? ? ? ? ? ? ? ? ? style="margin-right: 10px"
? ? ? ? ? ? ? ? ? ? closable>
? ? ? ? ? ? ? ? {{item.name}}
? ? ? ? ? ? </el-tag>
? ? ? ? </p>
? ? ? ? <el-dialog :visible.sync="dialogVisible" title="選擇用戶" v-if="dialogVisible" width="40%" append-to-body>
? ? ? ? ? ? <s-table ref="table" @selectionChange="selectionChange" @loadData="loadData" :data="tableData"
? ? ? ? ? ? ? ? ? ? ?:config="tableConfig"></s-table>
? ? ? ? ? ? <span slot="footer">
? ? <el-button @click="dialogVisible = false" size="mini">取 消</el-button>
? ? <el-button @click="chooseConfirm" size="mini" type="primary">確 定</el-button>
? ? </span>
? ? ? ? </el-dialog>
? ? </div>
</template>
<script>
? ? export default {
? ? ? ? data() {
? ? ? ? ? ? return {
? ? ? ? ? ? ? ? dialogVisible: false,
? ? ? ? ? ? ? ? // 最終選中的所有數(shù)據(jù)
? ? ? ? ? ? ? ? allSelectedUserList: [],
? ? ? ? ? ? ? ? // 最終選中的全部唯一字段列表
? ? ? ? ? ? ? ? allUniquePropList: [],
? ? ? ? ? ? ? ? // 唯一字段
? ? ? ? ? ? ? ? uniqueProp: 'id',
? ? ? ? ? ? ? ? // 每次彈窗中選中的所有數(shù)據(jù)
? ? ? ? ? ? ? ? allSelectedList: [],
?
? ? ? ? ? ? ? ? tableData: [],
? ? ? ? ? ? ? ? tableConfig: {
? ? ? ? ? ? ? ? ? ? showSelect: true,
? ? ? ? ? ? ? ? ? ? selectable: (row, rowIndex) => {
? ? ? ? ? ? ? ? ? ? ? ? if (this.allUniquePropList.indexOf(row[this.uniqueProp]) === -1) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (rowIndex === row.index) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return false
? ? ? ? ? ? ? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return true
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? pageConfig: {
? ? ? ? ? ? ? ? ? ? ? ? pageSizeList: [3, 5, 10],
? ? ? ? ? ? ? ? ? ? ? ? pageSize: 3,
? ? ? ? ? ? ? ? ? ? ? ? currentPage: 1,
? ? ? ? ? ? ? ? ? ? ? ? total: 0
? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? itemList: [
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? label: 'id',
? ? ? ? ? ? ? ? ? ? ? ? ? ? prop: 'id'
? ? ? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? label: '姓名',
? ? ? ? ? ? ? ? ? ? ? ? ? ? prop: 'name'
? ? ? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? label: '年齡',
? ? ? ? ? ? ? ? ? ? ? ? ? ? prop: 'age'
? ? ? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? ],
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? },
? ? ? ? mounted() {
? ? ? ? ? ? this.loadData()
? ? ? ? },
? ? ? ? methods: {
? ? ? ? ? ? // 點擊選擇按鈕
? ? ? ? ? ? choose() {
? ? ? ? ? ? ? ? this.allUniquePropList = []
? ? ? ? ? ? ? ? this.allSelectedUserList.forEach(
? ? ? ? ? ? ? ? ? ? item => {
? ? ? ? ? ? ? ? ? ? ? ? this.allUniquePropList.push(item[this.uniqueProp])
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? )
? ? ? ? ? ? ? ? this.allSelectedList = []
? ? ? ? ? ? ? ? this.dialogVisible = true
? ? ? ? ? ? },
? ? ? ? ? ? // 點擊選擇彈窗的確定按鈕
? ? ? ? ? ? chooseConfirm() {
? ? ? ? ? ? ? ? this.allSelectedUserList = this.allSelectedUserList.concat(this.allSelectedList)
? ? ? ? ? ? ? ? this.dialogVisible = false
? ? ? ? ? ? },
? ? ? ? ? ? // 加載數(shù)據(jù)
? ? ? ? ? ? loadData(newPageConfig) {
? ? ? ? ? ? ? ? if (newPageConfig && newPageConfig.currentPage) {
? ? ? ? ? ? ? ? ? ? this.tableConfig.pageConfig.currentPage = newPageConfig.currentPage
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if (newPageConfig && newPageConfig.pageSize) {
? ? ? ? ? ? ? ? ? ? this.tableConfig.pageConfig.pageSize = newPageConfig.pageSize
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? this.$http.get("/user/pages", {
? ? ? ? ? ? ? ? ? ? params: {
? ? ? ? ? ? ? ? ? ? ? ? currentPage: this.tableConfig.pageConfig.currentPage,
? ? ? ? ? ? ? ? ? ? ? ? pageSize: this.tableConfig.pageConfig.pageSize
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? ? ? .then(res => {
? ? ? ? ? ? ? ? ? ? ? ? let data = res.data
? ? ? ? ? ? ? ? ? ? ? ? this.tableData = data.records;
? ? ? ? ? ? ? ? ? ? ? ? this.tableConfig.pageConfig.total = data.total
? ? ? ? ? ? ? ? ? ? ? ? this.updateSelectedMark()
? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? },
? ? ? ? ? ? // 改變多選列的選中狀態(tài)時,更新選中列表
? ? ? ? ? ? selectionChange(pageSelectedList) {
? ? ? ? ? ? ? ? // 當頁唯一字段組成的列表
? ? ? ? ? ? ? ? let uniquePropList = []
? ? ? ? ? ? ? ? this.tableData.forEach(row => {
? ? ? ? ? ? ? ? ? ? uniquePropList.push(row[this.uniqueProp])
? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? // 從全部選中的數(shù)據(jù)中,過濾掉當前頁的數(shù)據(jù),再添加當前頁選中的數(shù)據(jù)
? ? ? ? ? ? ? ? this.allSelectedList = this.allSelectedList.filter(row =>
? ? ? ? ? ? ? ? ? ? !uniquePropList.includes(row[this.uniqueProp])
? ? ? ? ? ? ? ? ).concat(pageSelectedList)
? ? ? ? ? ? },
? ? ? ? ? ? // 更新選中標記--選中數(shù)據(jù)與當頁數(shù)據(jù)的交集,標記為選中狀態(tài)
? ? ? ? ? ? updateSelectedMark() {
? ? ? ? ? ? ? ? this.$nextTick(
? ? ? ? ? ? ? ? ? ? () => {
? ? ? ? ? ? ? ? ? ? ? ? let pageSelectedList = []
? ? ? ? ? ? ? ? ? ? ? ? this.allSelectedList.forEach(row1 => {
? ? ? ? ? ? ? ? ? ? ? ? ? ? this.tableData.forEach(row2 => {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (row1[this.uniqueProp] === row2[this.uniqueProp]) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pageSelectedList.push(row2)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? ? ? ? ? pageSelectedList.forEach(row => {
? ? ? ? ? ? ? ? ? ? ? ? ? ? this.$refs.table.toggleRowSelection(row);
? ? ? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? )
? ? ? ? ? ? },
? ? ? ? ? ? // 移除選擇的用戶
? ? ? ? ? ? removeUser(index) {
? ? ? ? ? ? ? ? this.allSelectedUserList.splice(index, 1);
? ? ? ? ? ? },
? ? ? ? }
? ? }
</script>
<style scoped>
</style>

s-table全局表格組件

<template>
? ? <div>
? ? ? ? <el-table
? ? ? ? ? ? ? ? ref="table"
? ? ? ? ? ? ? ? @select="rowSelectChange"
? ? ? ? ? ? ? ? @select-all="pageSelectChange"
? ? ? ? ? ? ? ? @row-click="getCurrentRow"
? ? ? ? ? ? ? ? :data="data"
? ? ? ? ? ? ? ? border
? ? ? ? ? ? ? ? :highlight-current-row="!config.closeHighlightRow"
? ? ? ? ? ? ? ? empty-text="暫無數(shù)據(jù)">
? ? ? ? ? ? <el-table-column
? ? ? ? ? ? ? ? ? ? :selectable="config.selectable"
? ? ? ? ? ? ? ? ? ? v-if="config.showSelect"
? ? ? ? ? ? ? ? ? ? type="selection"
? ? ? ? ? ? ? ? ? ? width="55">
? ? ? ? ? ? </el-table-column>
? ? ? ? ? ? <el-table-column
? ? ? ? ? ? ? ? ? ? :align="item.align?item.align:'center'"
? ? ? ? ? ? ? ? ? ? :label=item.label
? ? ? ? ? ? ? ? ? ? :prop=item.prop
? ? ? ? ? ? ? ? ? ? :min-width="item.minWidth?item.minWidth:'120'"
? ? ? ? ? ? ? ? ? ? :formatter="item.formatter"
? ? ? ? ? ? ? ? ? ? v-for="(item,index) in config.itemList"
? ? ? ? ? ? ? ? ? ? :key="index"
? ? ? ? ? ? >
? ? ? ? ? ? </el-table-column>
? ? ? ? ? ? <slot name="操作">
? ? ? ? ? ? </slot>
? ? ? ? </el-table>
? ? ? ? <!-- 分頁 -->
? ? ? ? <div style="text-align: right">
? ? ? ? ? ? <el-pagination
? ? ? ? ? ? ? ? ? ? :current-page="config.pageConfig.currentPage"
? ? ? ? ? ? ? ? ? ? :page-size="config.pageConfig.pageSize"
? ? ? ? ? ? ? ? ? ? :page-sizes="config.pageConfig.pageSizeList"
? ? ? ? ? ? ? ? ? ? :total="config.pageConfig.total"
? ? ? ? ? ? ? ? ? ? @current-change="currentPageChange"
? ? ? ? ? ? ? ? ? ? @size-change="pageSizeChange"
? ? ? ? ? ? ? ? ? ? layout="total, sizes, prev, pager, next, jumper"
? ? ? ? ? ? ? ? ? ? style="margin: 20px 0px"
? ? ? ? ? ? ></el-pagination>
? ? ? ? </div>
? ? </div>
</template>
<script>
? ? export default {
? ? ? ? props: {
? ? ? ? ? ? data: Array,
? ? ? ? ? ? config: Object,
? ? ? ? ? ? selectable: Function
? ? ? ? },
? ? ? ? data() {
? ? ? ? ? ? return {}
? ? ? ? },
? ? ? ? methods: {
? ? ? ? ? ? rowSelectChange(pageSelected, row) {
? ? ? ? ? ? ? ? this.$emit('selectionChange',
? ? ? ? ? ? ? ? ? ? pageSelected,
? ? ? ? ? ? ? ? )
? ? ? ? ? ? },
? ? ? ? ? ? pageSelectChange(pageSelected) {
? ? ? ? ? ? ? ? this.$emit('selectionChange', pageSelected)
? ? ? ? ? ? },
? ? ? ? ? ? toggleRowSelection(row) {
? ? ? ? ? ? ? ? this.$refs.table.toggleRowSelection(row);
? ? ? ? ? ? },
? ? ? ? ? ? selectionChange(pageSelected) {
? ? ? ? ? ? ? ? this.$emit('selectionChange', pageSelected)
? ? ? ? ? ? },
? ? ? ? ? ? currentPageChange(newPage) {
? ? ? ? ? ? ? ? this.$emit('loadData',
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? currentPage: newPage
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? )
? ? ? ? ? ? },
? ? ? ? ? ? pageSizeChange(newPageSize) {
? ? ? ? ? ? ? ? this.$emit('loadData',
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? pageSize: newPageSize
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? )
? ? ? ? ? ? },
? ? ? ? ? ? getCurrentRow(row) {
? ? ? ? ? ? ? ? this.$emit('getCurrentRow', row)
? ? ? ? ? ? }
? ? ? ? }
? ? }
</script>
<style scoped>
</style>

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue修改頁面標簽的方法示例

    Vue修改頁面標簽的方法示例

    vue項目有時候需要根據(jù)頁面需要動態(tài)的去修改頁面標題名稱,本文就來介紹一下,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • 淺談vue 多個變量同時賦相同值互相影響

    淺談vue 多個變量同時賦相同值互相影響

    這篇文章主要介紹了淺談vue 多個變量同時賦相同值互相影響,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 解決vue移動端適配問題

    解決vue移動端適配問題

    這篇文章主要介紹了解決vue移動端適配問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 在 Vue-CLI 中引入 simple-mock實現(xiàn)簡易的 API Mock 接口數(shù)據(jù)模擬

    在 Vue-CLI 中引入 simple-mock實現(xiàn)簡易的 API Mock 接口數(shù)據(jù)模擬

    本文以 Vue-CLI 為例介紹引入 simple-mock 實現(xiàn)前端開發(fā)數(shù)據(jù)模擬的步驟。感興趣的朋友跟隨小編一起看看吧
    2018-11-11
  • vue實現(xiàn)登錄時滑塊驗證

    vue實現(xiàn)登錄時滑塊驗證

    這篇文章主要為大家詳細介紹了vue實現(xiàn)登錄時滑塊驗證,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue版數(shù)字翻牌器的封裝

    vue版數(shù)字翻牌器的封裝

    這篇文章主要為大家詳細介紹了vue版數(shù)字翻牌器的封裝,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue實現(xiàn)輸入框只允許輸入數(shù)字

    vue實現(xiàn)輸入框只允許輸入數(shù)字

    在vue項目中,輸入框只允許輸入數(shù)字,現(xiàn)將自己使用的一種方法記錄,本文結(jié)合實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2023-11-11
  • 如何使用Vue3+Vite+TS快速搭建一套實用的腳手架

    如何使用Vue3+Vite+TS快速搭建一套實用的腳手架

    Vite是一個面向現(xiàn)代瀏覽器的一個更輕、更快的?Web?應(yīng)用開發(fā)工具,下面這篇文章主要給大家介紹了關(guān)于如何使用Vue3+Vite+TS快速搭建一套實用腳手架的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • Vue使用mixin分發(fā)組件的可復(fù)用功能

    Vue使用mixin分發(fā)組件的可復(fù)用功能

    這篇文章主要介紹了Vue使用mixin分發(fā)組件的可復(fù)用功能,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • vue3的二維碼組件vue3-next-qrcode

    vue3的二維碼組件vue3-next-qrcode

    這篇文章主要為大家介紹了vue3的二維碼組件vue3-next-qrcode示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09

最新評論

织金县| 丹巴县| 阿尔山市| 油尖旺区| 亳州市| 张家界市| 峨眉山市| 虹口区| 南宁市| 榆社县| 阿巴嘎旗| 巨鹿县| 永定县| 靖安县| 广饶县| 崇义县| 寿光市| 望江县| 唐山市| 雷波县| 金寨县| 葫芦岛市| 清苑县| 加查县| 尼木县| 监利县| 武清区| 南雄市| 博野县| 平度市| 奎屯市| 宣城市| 轮台县| 遂昌县| 华蓥市| 额尔古纳市| 延长县| 霞浦县| 桑植县| 巴楚县| 微博|