使用vue實現複選框單選多選

 

界面樣式:數組

 <div class="right_con" v-if="isClickApply" style="border:none">
                    <table class="work-table base-table">
                        <thead>
                            <tr>
                                <th>
                                    <Checkbox v-model="hasAllChecked" @on-change="chooseAll"></Checkbox>
                                </th>
                                <th style="text-align:left;width:30%">姓名</th>
                                <th style="width:30%">手機號碼</th>
                                <th style="width:30%">申請時間</th>

                                <th style="width:10%">操做</th>
                            </tr>
                        </thead>
                        <tbody v-if="applyUserList&&applyUserList.length>0">
                            <tr v-for="(item,index) in applyUserList" :key="index">
                                <td>
                                    <Checkbox
                                        v-model="item.hasSelected"
                                        @on-change="chooseSingle(item)"
                                    ></Checkbox>
                                </td>
                                <td>{{item.trueName}}</td>
                                <td>{{item.phone}}</td>
                                <td>{{item.addTime}}</td>
                                <td style="display:flex;aligin-items:center">
                                    <Button class="agree" @click="agreeClick([item.id])">經過</Button>
                                    <!-- <div class="agree" @click="agreeClick([item.id])">經過</div> -->
                                    <!-- <div class="disagree" @click="disagreeClick([item.id])">駁回</div> -->
                                    <Button class="disagree" @click="disagreeClick([item.id])">駁回</Button>
                                </td>
                            </tr>
                        </tbody>

                        <tbody v-else>
                            <tr style="text-align: center;">
                                <td colspan="5">暫無數據</td>
                            </tr>
                        </tbody>
                    </table>

                    <Page
                        show-total
                        :total="total"
                        :page-size="size"
                        :current="current"
                        @on-change="changePage"
                        class="page_switch_class"
                        v-if="applyUserList&&applyUserList.length>0"
                    />
                </div>

關鍵參數:app

hasAllChecked(是否全選) 

全選方法:
 // 全選
        chooseAll(val) {
            var self = this
            if (val) {
                self.applyUserList.forEach(ele => {
                    ele.hasSelected = true
                })
            } else {
                self.applyUserList.forEach(ele => {
                    ele.hasSelected = false
                })
            }
        },

解釋:遍歷要顯示的數組,手動爲每一項增長hasSelected參數,點擊全選時,將全部參數中hasSelected置爲true,反之亦然。flex

單選方法:this

  // 單選
        chooseSingle(item) {
            var self = this
            self.hasAllChecked = true
            self.applyUserList.forEach(ele => {
                if (!ele.hasSelected) self.hasAllChecked = false
            })
        },

解釋:先將表明全選的hasSelected置爲true,遍歷要顯示的數組,若數組中有已被選中的項,則將hasSelected置爲false,表明非全選。spa

 批量經過:
  // 批量經過
        agreeAll() {
            var self = this
            var isSelected = false
            self.applyUserList.forEach(ele => {
                if (ele.hasSelected) isSelected = true
            })

            if (isSelected) {
                var members = []
                self.applyUserList.forEach(ele => {
                    if (ele.hasSelected) members.push(ele.id)
                })
                self.agreeClick(members)
            } else {
                self.$app.error('您尚未選擇須要審批的成員')
            }
        },

批量駁回:code

   // 批量駁回
        disagreeAll() {
            var self = this
            var isSelected = false
            self.rejectIds = []
            self.applyUserList.forEach(ele => {
                if (ele.hasSelected) isSelected = true
            })

            if (isSelected) {
                self.applyUserList.forEach(ele => {
                    if (ele.hasSelected) self.rejectIds.push(ele.id)
                })
                self.title =
                    self.rejectIds.length > 1 ? '批量駁回緣由' : '駁回緣由'
                self.rejectReason = ''
                self.modal12 = true
            } else {
                self.$app.error('您尚未選擇須要審批的成員')
            }
        },
相關文章
相關標籤/搜索