Initial commit of akmon project

This commit is contained in:
2026-01-20 08:04:15 +08:00
commit 77a2bab985
1309 changed files with 343305 additions and 0 deletions

View File

@@ -0,0 +1,124 @@
<template>
<l-picker
v-model="innerValue"
:cancelBtn="cancelBtn"
:cancelStyle="cancelStyle"
:confirmBtn="confirmBtn"
:confirmStyle="confirmStyle"
:title="title"
:titleStyle="titleStyle"
:loading="loading"
:loadingColor="loadingColor"
:loadingMaskColor="loadingMaskColor"
:loadingSize="loadingSize"
:itemHeight="itemHeight"
:itemColor="itemColor"
:itemFontSize="itemFontSize"
:itemActiveColor="itemActiveColor"
:indicatorStyle="indicatorStyle"
:bgColor="bgColor"
:groupHeight="groupHeight"
:radius="radius"
:resetIndex="resetIndex"
:columns="innerColumns"
@cancel="onCancel"
@confirm="onConfirm"
@pick="onPick">
</l-picker>
</template>
<script lang="ts">
// @ts-nocheck
/**
* Cascade 级联选择器组件
* @description 支持多层级联数据选择,适用于地址选择、分类选择等场景
* <br>插件类型LCascadeComponentPublicInstance
* @tutorial https://ext.dcloud.net.cn/plugin?name=lime-cascade
*
* @property {string} cancelBtn 取消按钮文字(默认:"取消"
* @property {string} cancelStyle 取消按钮样式支持CSS字符串
* @property {string} confirmBtn 确定按钮文字(默认:"确定"
* @property {string} confirmStyle] 确定按钮样式支持CSS字符串
* @property {string} title 标题文字
* @property {string} titleStyle 标题样式支持CSS字符串
* @property {UTSJSONObject} keys 字段别名配置参考KeysType结构
* @property {UTSJSONObject]} columns 级联数据源(必填)
* @property {PickerValue]} modelValue 选中值支持v-model
* @property {PickerValue]} defaultValue 默认选中值
* @property {PickerValue]} value 选中值(兼容旧版)
* @property {boolean} loading 是否显示加载状态
* @property {string} loadingColor 加载图标颜色(默认:主题色)
* @property {string} loadingMaskColor 加载遮罩颜色默认rgba(255,255,255,0.8)
* @property {string} loadingSize 加载图标尺寸支持CSS单位
* @property {string} itemHeight 选项行高默认44px
* @property {string} itemColor 选项文字颜色(默认:#333
* @property {string} itemFontSize 选项文字大小默认16px
* @property {string} itemActiveColor 选中项高亮颜色(默认:主题色)
* @property {string} indicatorStyle 指示器样式支持CSS字符串
* @property {string} bgColor 背景颜色(默认:#ffffff
* @property {string} groupHeight 选项组高度默认240px
* @property {string} radius 圆角半径支持CSS单位
* @property {boolean} resetIndex 是否重置选中索引(用于动态更新数据时)
* @event {Function} change 选项变化时触发(返回当前选中路径)
* @event {Function} cancel 点击关闭时触发
* @event {Function} confirm 点击确定时触发(返回最终选中值)
*/
import { defineComponent, ref, computed} from '@/uni_modules/lime-shared/vue';
import { PickerValue, PickerColumn, PickerColumnItem, PickerPickEvent} from '../l-picker/type';
import { CascadeProps } from './type';
import { parseKeys, formatCascadeColumns } from './utils';
import cascadeProps from '../l-picker/props';
export default defineComponent({
name: 'l-cascade',
props:cascadeProps,
emits: ['change', 'cancel', 'pick', 'confirm', 'update:modelValue', 'update:value', 'input'],
setup(props, {emit}) {
type UTSJSONObject = Record<string, any>
const keys = parseKeys(props.keys)
const curValueArray = ref(props.value || props.modelValue || props.defaultValue||[]);
const innerValue = computed({
set(value: PickerValue[]) {
curValueArray.value = value;
emit('update:modelValue', value)
// #ifdef VUE2
emit('input', value)
// #endif
},
get(): PickerValue[]{
return props.value || props.modelValue || curValueArray.value
}
} as WritableComputedOptions<PickerValue[]>)
const innerColumns = computed((): PickerColumn[] => {
return formatCascadeColumns(props.columns, keys, innerValue)
})
const onPick = ({values, column, index} : PickerPickEvent) => {
innerValue.value = values
}
const onConfirm = (options: PickerConfirmEvent) => {
emit('confirm', options)
}
const onCancel = () => {
emit('cancel')
}
return {
innerValue,
innerColumns,
onPick,
onConfirm,
onCancel
}
}
})
</script>
<style>
</style>