123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- <template>
- <uni-popup ref="popupKechengLeixingRef" type="top" :animation="false" :is-mask-click="false"
- mask-background-color="rgba(0, 0, 0, 0.4)">
- <view class="phone-filter-page">
- <view class="icon-title-navBar-box">
- <view @click="goUpPage" class="nav-bar-icon"></view>
- <text class="nav-bar-title">筛选</text>
- </view>
- <view class="filter-body-box">
- <radio-group @change="handleChange">
- <!-- 报证机构 -->
- <view class="filter-body-radio" v-for="item in data.list">
- <label class="radio-name-box"
- :class="{radioActive: activeSelect && activeSelect.id==item.id}">
- <radio :value="`${item.id}`" :checked="item.checked" activeBackgroundColor="#3fd2a1" style="transform:scale(0.8)"/>
- {{item.lable}}
- </label>
- <view class="phone-radio-group filter-radio-group">
- <view class="phone-radio-item" v-for="citem in item.children"
- :class="{radioActive: activeSelect && activeSelect.id == citem.id}"
- @click.stop="handleSelect(citem,item)">
- {{citem.lable}}
- </view>
- </view>
- </view>
- </radio-group>
- </view>
- <view class="filter-btn-box">
- <button type="default" class="phone-white-btn filter-btn" @click="handleReset">重置</button>
- <button type="default" class="phone-green-btn filter-btn" @click="handleConfirm">筛选</button>
- </view>
- </view>
- </uni-popup>
- </template>
- <script setup>
- import {
- reactive,
- ref
- } from "vue";
- const emits = defineEmits(['select', 'reset']);
- const data = reactive({
- list: []
- })
- const activeSelect = ref(null);
- const popupKechengLeixingRef = ref(null);
- function goUpPage() {
- popupKechengLeixingRef.value.close();
- }
- function handleConfirm() {
- emits('select', activeSelect.value)
- popupKechengLeixingRef.value.close();
- }
- function handleReset() {
- activeSelect.value = null;
- emits('reset')
- popupKechengLeixingRef.value.close();
- }
- function handleChange(myData) {
- const activeD = myData.detail.value;
- data.list.forEach(item => {
- if (item.id != activeD) {
- item.checked = false
- } else {
- item.checked = true;
- activeSelect.value = item;
- }
- })
- }
- function handleSelect(myData) {
- data.list.forEach(item => {
- item.checked = false
- })
- activeSelect.value = myData;
- }
- function showPopup({
- data: myData
- }) {
- data.list = myData;
- popupKechengLeixingRef.value.open('top')
- }
- defineExpose({
- showPopup
- })
- </script>
- <style lang="scss">
- .active {
- color: red
- }
- </style>
|