158 lines
3.3 KiB
Vue
Raw Normal View History

2025-09-10 20:42:41 +08:00
<template>
<view class="demo-page">
<view class="demo-section">
<text class="section-title">基础用法</text>
<BasicNjBjSelect
v-model="selectedClass1"
placeholder="请选择年级班级"
@change="onClassChange1"
/>
<view v-if="selectedClass1" class="result-display">
<text>已选择{{ selectedClass1.njmc }} {{ selectedClass1.bjmc }}</text>
</view>
</view>
<view class="demo-section">
<text class="section-title">自定义样式</text>
<BasicNjBjSelect
v-model="selectedClass2"
:custom-style="{
backgroundColor: '#f0f9ff',
borderColor: '#0ea5e9',
borderRadius: '12px'
}"
placeholder="自定义样式选择器"
icon-color="#0ea5e9"
/>
</view>
<view class="demo-section">
<text class="section-title">不受权限控制</text>
<BasicNjBjSelect
v-model="selectedClass3"
:use-kz-tree="true"
title="选择年级班级(全部)"
placeholder="选择全部年级班级"
/>
</view>
<view class="demo-section">
<text class="section-title">禁用状态</text>
<BasicNjBjSelect
v-model="selectedClass4"
:disabled="true"
placeholder="禁用状态"
/>
</view>
<view class="demo-section">
<text class="section-title">操作按钮</text>
<view class="button-group">
<button @click="resetAll" class="demo-btn">重置所有</button>
<button @click="setDefaultValue" class="demo-btn">设置默认值</button>
</view>
</view>
</view>
</template>
<script setup>
import { ref } from 'vue'
import BasicNjBjSelect from './index.vue'
// 响应式数据
const selectedClass1 = ref(null)
const selectedClass2 = ref(null)
const selectedClass3 = ref(null)
const selectedClass4 = ref(null)
// 事件处理
const onClassChange1 = (result) => {
console.log('选择变化:', result)
}
// 重置所有选择
const resetAll = () => {
selectedClass1.value = null
selectedClass2.value = null
selectedClass3.value = null
selectedClass4.value = null
}
// 设置默认值
const setDefaultValue = () => {
// 这里可以设置一个默认的年级班级
// 注意:需要确保数据存在
console.log('设置默认值功能需要根据实际数据调整')
}
</script>
<style scoped lang="scss">
.demo-page {
padding: 20px;
background-color: #f5f5f5;
min-height: 100vh;
}
.demo-section {
margin-bottom: 30px;
background-color: #fff;
padding: 20px;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
.section-title {
display: block;
font-size: 16px;
font-weight: 600;
color: #333;
margin-bottom: 15px;
}
.result-display {
margin-top: 10px;
padding: 10px;
background-color: #f0f9ff;
border-radius: 6px;
border-left: 3px solid #0ea5e9;
text {
font-size: 14px;
color: #0369a1;
}
}
.button-group {
display: flex;
gap: 10px;
margin-top: 15px;
.demo-btn {
flex: 1;
height: 40px;
line-height: 40px;
background-color: #1890ff;
color: #fff;
border: none;
border-radius: 6px;
font-size: 14px;
&:active {
background-color: #1677ff;
}
&::after {
border: none;
}
}
}
}
</style>
2025-09-12 11:20:21 +08:00
2025-09-13 18:25:33 +08:00