From 946f4e9e2beadbe2fd8436d690ed42df5aa1a191 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期三, 12 二月 2025 15:04:55 +0800
Subject: [PATCH] feat: mine

---
 /dev/null |   72 ------------------------------------
 1 files changed, 0 insertions(+), 72 deletions(-)

diff --git a/apps/cMiniApp/src/components/Input/ChooseInput.vue b/apps/cMiniApp/src/components/Input/ChooseInput.vue
deleted file mode 100644
index 6486c46..0000000
--- a/apps/cMiniApp/src/components/Input/ChooseInput.vue
+++ /dev/null
@@ -1,37 +0,0 @@
-<template>
-  <nut-input
-    class="nut-input-text bole-input-text"
-    type="text"
-    readonly
-    alwaysEmbed
-    v-bind="$attrs"
-  >
-    <template #clear>
-      <slot name="clear"></slot>
-    </template>
-    <template #right>
-      <slot name="right">
-        <RectRight :size="12" class="common-choose-input-icon" />
-      </slot>
-    </template>
-  </nut-input>
-</template>
-
-<script setup lang="ts">
-import { RectRight } from '@nutui/icons-vue-taro';
-
-defineOptions({
-  name: 'ChooseInput',
-});
-</script>
-
-<style lang="scss">
-@import '@/styles/common.scss';
-
-.common-choose-input-icon {
-  //   width: 13px;
-  //   height: 23px;
-  margin-left: 18px;
-  color: boleGetCssVar('text-color', 'primary');
-}
-</style>
diff --git a/apps/cMiniApp/src/components/Input/ChooseInputWithAreaPicker.vue b/apps/cMiniApp/src/components/Input/ChooseInputWithAreaPicker.vue
deleted file mode 100644
index b7eaec8..0000000
--- a/apps/cMiniApp/src/components/Input/ChooseInputWithAreaPicker.vue
+++ /dev/null
@@ -1,76 +0,0 @@
-<template>
-  <ChooseInput :modelValue="inputValue" @click="handleOpen()"></ChooseInput>
-</template>
-
-<script setup lang="ts">
-import { useAllAreaList } from '@/hooks';
-import Portal from '../Portal';
-import ChooseInput from './ChooseInput.vue';
-import { Popup, Picker } from '@nutui/nutui-taro';
-
-defineOptions({
-  name: 'ChooseInputWithAreaPicker',
-});
-
-const { findAreaNameFromCode } = useAllAreaList();
-
-type Props = {
-  fieldNames?: object;
-  columns: API.AreaTreeNode[];
-  modelValue: Array<string | number>;
-  title?: string;
-};
-
-const props = withDefaults(defineProps<Props>(), {
-  title: '閫夋嫨鍦板潃',
-  fieldNames: () => ({
-    text: 'areaName',
-    value: 'areaCode',
-    children: 'children',
-  }),
-});
-const inputValue = computed(() =>
-  props.modelValue.map((x) => findAreaNameFromCode(Number(x))).join(',')
-);
-
-const emit = defineEmits<{
-  (e: 'update:modelValue', val: Array<string | number>): void;
-}>();
-
-function handleOpen() {
-  Portal.add((key) => {
-    return h(
-      Portal.Container,
-      { keyNumber: key, delayOpen: true },
-      {
-        default: ({ open, onClose }) =>
-          h(
-            Popup,
-            {
-              visible: open.value,
-              'onUpdate:visible': (value) => !value && onClose(),
-              position: 'bottom',
-            },
-            {
-              default: () =>
-                h(Picker, {
-                  modelValue: props.modelValue,
-                  columns: props.columns,
-                  fieldNames: props.fieldNames,
-                  title: props.title,
-                  onCancel: onClose,
-                  onConfirm: ({ selectedValue, selectedOptions }) => {
-                    emit(
-                      'update:modelValue',
-                      selectedOptions.map((x) => x.areaCode)
-                    );
-                    onClose();
-                  },
-                }),
-            }
-          ),
-      }
-    );
-  });
-}
-</script>
diff --git a/apps/cMiniApp/src/components/Input/ChooseInputWithPicker.vue b/apps/cMiniApp/src/components/Input/ChooseInputWithPicker.vue
deleted file mode 100644
index 572583a..0000000
--- a/apps/cMiniApp/src/components/Input/ChooseInputWithPicker.vue
+++ /dev/null
@@ -1,72 +0,0 @@
-<template>
-  <ChooseInput :modelValue="inputValue" @click="handleOpen()"></ChooseInput>
-</template>
-
-<script setup lang="ts">
-import Portal from '../Portal';
-import ChooseInput from './ChooseInput.vue';
-import { Popup, Picker } from '@nutui/nutui-taro';
-import { convertOptions, ValueEnum } from './input';
-
-defineOptions({
-  name: 'ChooseInputWithPicker',
-});
-
-type Props = {
-  enumLabelKey?: string;
-  enumValueKey?: string;
-  valueEnum?: ValueEnum;
-  modelValue: string | number;
-};
-
-const props = withDefaults(defineProps<Props>(), {
-  enumLabelKey: 'name',
-  enumValueKey: 'id',
-});
-
-const emit = defineEmits<{
-  (e: 'update:modelValue', val: string | number): void;
-}>();
-
-const options = computed(() =>
-  convertOptions(props.valueEnum, props.enumLabelKey, props.enumValueKey)
-);
-
-const inputValue = computed(
-  () => options.value?.find((x) => x.value === props.modelValue)?.text ?? ''
-);
-
-function handleOpen() {
-  const _modelValue = [props.modelValue];
-  Portal.add((key) => {
-    return h(
-      Portal.Container,
-      { keyNumber: key, delayOpen: true },
-      {
-        default: ({ open, onClose }) =>
-          h(
-            Popup,
-            {
-              visible: open.value,
-              'onUpdate:visible': (value) => !value && onClose(),
-              position: 'bottom',
-            },
-            {
-              default: () =>
-                h(Picker, {
-                  modelValue: _modelValue,
-                  columns: options.value,
-                  onCancel: onClose,
-                  onConfirm: ({ selectedValue, selectedOptions }) => {
-                    console.log('selectedValue: ', selectedValue, selectedOptions);
-                    emit('update:modelValue', selectedOptions[0].value);
-                    onClose();
-                  },
-                }),
-            }
-          ),
-      }
-    );
-  });
-}
-</script>
diff --git a/apps/cMiniApp/src/components/Input/NumberInput.vue b/apps/cMiniApp/src/components/Input/NumberInput.vue
deleted file mode 100644
index 05ba733..0000000
--- a/apps/cMiniApp/src/components/Input/NumberInput.vue
+++ /dev/null
@@ -1,55 +0,0 @@
-<template>
-  <nut-input type="number" :formatter="formatter" formatTrigger="onBlur">
-    <template #right>
-      <slot name="right"></slot>
-    </template>
-  </nut-input>
-</template>
-
-<script setup lang="ts">
-defineOptions({
-  name: 'NumberInput',
-});
-
-type Props = {
-  min?: number;
-  max?: number;
-  precision?: number;
-};
-
-const props = withDefaults(defineProps<Props>(), {
-  max: Math.pow(2, 53) - 1,
-});
-
-function formatter(value: string): string {
-  const newVal = value !== '' ? Number.parseFloat(value) : '';
-  if (Number.isNaN(newVal)) {
-    return '';
-  }
-  if (newVal && newVal > props.max) {
-    return `${toPrecision(props.max)}`;
-  }
-  if (props.min !== undefined && newVal && newVal < props.min) {
-    return `${toPrecision(props.min)}`;
-  }
-  return newVal !== '' ? `${toPrecision(newVal)}` : newVal;
-}
-
-function toPrecision(num: number) {
-  if (props.precision) {
-    if (props.precision === 0) return Math.round(num);
-    let snum = String(num);
-    const pointPos = snum.indexOf('.');
-    if (pointPos === -1) return num;
-    const nums = snum.replace('.', '').split('');
-    const datum = nums[pointPos + props.precision];
-    if (!datum) return num;
-    const length = snum.length;
-    if (snum.charAt(length - 1) === '5') {
-      snum = `${snum.slice(0, Math.max(0, length - 1))}6`;
-    }
-    return Number(snum).toFixed(props.precision);
-  }
-  return String(num);
-}
-</script>
diff --git a/apps/cMiniApp/src/components/Input/input.ts b/apps/cMiniApp/src/components/Input/input.ts
deleted file mode 100644
index d1a5309..0000000
--- a/apps/cMiniApp/src/components/Input/input.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import _ from 'lodash';
-
-export type ValueEnumItem = { [key: string]: any };
-export type ValueEnum = ValueEnumItem[] | Record<string | number, string>;
-export type OptionItem = {
-  text: string;
-  value: string | number;
-  [key: string]: any;
-};
-
-export function convertOptions(
-  valueEnum: ValueEnum,
-  enumLabelKey: string,
-  enumValueKey: string
-): OptionItem[] {
-  return _.isArray(valueEnum)
-    ? valueEnum.map((x) => ({
-        ...x,
-        text: x[enumLabelKey],
-        value: _.isNaN(Number(x[enumValueKey])) ? x[enumValueKey] : Number(x[enumValueKey]),
-      }))
-    : Object.keys(valueEnum).map((x) => ({
-        value: _.isNaN(Number(x)) ? x : Number(x),
-        text: valueEnum[x],
-      }));
-}
-
-export type ChooseCheckBoxOptionItem = {
-  text: string;
-  value: string | number;
-};
diff --git a/apps/cMiniApp/src/components/Portal/Portal.vue b/apps/cMiniApp/src/components/Portal/Portal.vue
deleted file mode 100644
index 06d5c1a..0000000
--- a/apps/cMiniApp/src/components/Portal/Portal.vue
+++ /dev/null
@@ -1,19 +0,0 @@
-<template>
-  <PortalConsumer :manager="portalContext">
-    <template #default>
-      <slot />
-    </template>
-  </PortalConsumer>
-</template>
-
-<script setup lang="ts">
-import PortalConsumer from './portal-consumer.vue';
-// import PortalContainer from './portal-container';
-import { portal, usePortalContext } from './portal';
-
-defineOptions({
-  name: 'Portal',
-});
-
-const portalContext = usePortalContext();
-</script>
diff --git a/apps/cMiniApp/src/components/Portal/PortalManager.vue b/apps/cMiniApp/src/components/Portal/PortalManager.vue
deleted file mode 100644
index 4f0a6cd..0000000
--- a/apps/cMiniApp/src/components/Portal/PortalManager.vue
+++ /dev/null
@@ -1,44 +0,0 @@
-<script lang="ts">
-import { State, PortalNode } from './portal';
-
-export default defineComponent({
-  name: 'PortalManager',
-  setup(props, { expose }) {
-    const state = reactive<State>({
-      portals: [],
-    });
-
-    const mount = (key: number, children: PortalNode) => {
-      state.portals.push({ key, children });
-    };
-    const update = (key: number, children: PortalNode) => {
-      state.portals = state.portals.map((item) => {
-        if (item.key === key) {
-          return { ...item, children };
-        }
-        return item;
-      });
-    };
-
-    const unmount = (key: number) => {
-      state.portals = state.portals.filter((item) => item.key !== key);
-    };
-
-    expose({
-      mount,
-      update,
-      unmount,
-    });
-
-    return () => {
-      return h(
-        'div',
-        null,
-        state.portals.map((item) => {
-          return h('div', { key: item.key }, [item.children]);
-        })
-      );
-    };
-  },
-});
-</script>
diff --git a/apps/cMiniApp/src/components/Portal/index.ts b/apps/cMiniApp/src/components/Portal/index.ts
deleted file mode 100644
index 29fbcf8..0000000
--- a/apps/cMiniApp/src/components/Portal/index.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import PortalContainer from './portal-container.vue';
-import PortalHost from './portal-host.vue';
-import { portal } from './portal';
-import Portal from './Portal.vue';
-
-export default {
-  Host: PortalHost,
-  add: portal.add,
-  remove: portal.remove,
-  Portal: Portal,
-  Container: PortalContainer,
-};
diff --git a/apps/cMiniApp/src/components/Portal/portal-consumer.vue b/apps/cMiniApp/src/components/Portal/portal-consumer.vue
deleted file mode 100644
index ba1a582..0000000
--- a/apps/cMiniApp/src/components/Portal/portal-consumer.vue
+++ /dev/null
@@ -1,37 +0,0 @@
-<script lang="ts">
-import { PortalMethods } from './portal';
-
-export default defineComponent({
-  name: 'PortalConsumer',
-  props: {
-    manager: {
-      type: Object as PropType<PortalMethods>,
-    },
-  },
-  setup(props) {
-    const _key = ref<number>();
-
-    const slots = useSlots();
-
-    onMounted(() => {
-      if (!props.manager) {
-        throw new Error('forgot');
-      }
-      const defaultSlot = slots.default();
-      props.manager.update(_key.value, defaultSlot);
-      _key.value = props.manager.mount(defaultSlot);
-    });
-
-    onUpdated(() => {
-      const defaultSlot = slots.default();
-      props.manager.update(_key.value, defaultSlot);
-    });
-
-    onUnmounted(() => {
-      props.manager.unmount(_key.value);
-    });
-
-    return () => null;
-  },
-});
-</script>
diff --git a/apps/cMiniApp/src/components/Portal/portal-container.vue b/apps/cMiniApp/src/components/Portal/portal-container.vue
deleted file mode 100644
index 7c12a7e..0000000
--- a/apps/cMiniApp/src/components/Portal/portal-container.vue
+++ /dev/null
@@ -1,50 +0,0 @@
-<script lang="ts">
-import { VNode } from 'vue';
-import { portal } from './portal';
-
-export default defineComponent({
-  name: 'portal-container',
-  props: {
-    render: {
-      type: Function as PropType<(open: Ref<boolean>, onClose?: () => any) => VNode>,
-    },
-    keyNumber: {
-      type: Number,
-    },
-    /**
-     * 鏄惁寤惰繜璁剧疆open涓簍rue
-     */
-    delayOpen: {
-      type: Boolean,
-    },
-  },
-  setup(props, { slots }) {
-    const open = ref(!props.delayOpen);
-
-    function onClose() {
-      open.value = false;
-    }
-
-    onMounted(() => {
-      if (props.delayOpen) {
-        setTimeout(() => {
-          open.value = true;
-        }, 30);
-      }
-    });
-
-    watch(open, (open, preOpen) => {
-      if (preOpen && !open) {
-        setTimeout(() => {
-          portal.remove(props.keyNumber);
-        }, 300);
-      }
-    });
-
-    return () => {
-      //   const childrenNode = props.render(open, onClose);
-      return slots.default?.({ open, onClose });
-    };
-  },
-});
-</script>
diff --git a/apps/cMiniApp/src/components/Portal/portal-host.vue b/apps/cMiniApp/src/components/Portal/portal-host.vue
deleted file mode 100644
index 05068a7..0000000
--- a/apps/cMiniApp/src/components/Portal/portal-host.vue
+++ /dev/null
@@ -1,104 +0,0 @@
-<template>
-  <slot></slot>
-  <PortalManager ref="_manager" />
-</template>
-
-<script lang="ts">
-defineComponent({
-  name: 'portal-host',
-  inheritAttrs: false,
-});
-</script>
-
-<script setup lang="ts">
-import {
-  PortalContextKey,
-  Operation,
-  getUniqueKey,
-  addType,
-  removeType,
-  TopViewEventEmitter,
-  PortalNode,
-  PortalManagerInstance,
-} from './portal';
-import PortalManager from './PortalManager.vue';
-
-const _nextKey = ref(0);
-const _queue = ref<Operation[]>([]);
-const _manager = ref<PortalManagerInstance>();
-
-onMounted(() => {
-  TopViewEventEmitter.on(getUniqueKey(addType), _mount);
-  TopViewEventEmitter.on(getUniqueKey(removeType), _unmount);
-
-  while (_queue.value.length && _manager.value) {
-    const action = _queue.value.pop();
-    if (!action) {
-      continue;
-    }
-
-    switch (action.type) {
-      case 'mount':
-        _manager.value.mount(action.key, action.children);
-        break;
-      case 'update':
-        _manager.value.update(action.key, action.children);
-        break;
-      case 'unmount':
-        _manager.value.unmount(action.key);
-        break;
-    }
-  }
-});
-
-onUnmounted(() => {
-  TopViewEventEmitter.off(getUniqueKey(addType), _mount);
-  TopViewEventEmitter.off(getUniqueKey(removeType), _unmount);
-});
-
-const _setManager = (manager?: any) => {
-  _manager.value = manager;
-};
-
-const _mount = (children: PortalNode, _key?: number) => {
-  const key = _key || _nextKey.value++;
-  if (_manager.value) {
-    _manager.value.mount(key, children);
-  } else {
-    _queue.value.push({ type: 'mount', key, children });
-  }
-
-  return key;
-};
-
-const _update = (key: number, children: PortalNode) => {
-  if (_manager.value) {
-    _manager.value.update(key, children);
-  } else {
-    const op: Operation = { type: 'mount', key, children };
-    const index = _queue.value.findIndex(
-      (o) => o.type === 'mount' || (o.type === 'update' && o.key === key)
-    );
-
-    if (index > -1) {
-      _queue.value[index] = op;
-    } else {
-      _queue.value.push(op);
-    }
-  }
-};
-
-const _unmount = (key: number) => {
-  if (_manager.value) {
-    _manager.value.unmount(key);
-  } else {
-    _queue.value.push({ type: 'unmount', key });
-  }
-};
-
-provide(PortalContextKey, {
-  mount: _mount,
-  update: _update,
-  unmount: _unmount,
-});
-</script>
diff --git a/apps/cMiniApp/src/components/Portal/portal.ts b/apps/cMiniApp/src/components/Portal/portal.ts
deleted file mode 100644
index 38b8216..0000000
--- a/apps/cMiniApp/src/components/Portal/portal.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-import type { VNode } from 'vue';
-import Taro from '@tarojs/taro';
-
-export type PortalNode = VNode | VNode[];
-
-export type State = {
-  portals: Array<{
-    key: number;
-    children: PortalNode;
-  }>;
-};
-export type PortalManagerState = {
-  portals: Array<{
-    key: number;
-    children: PortalNode;
-  }>;
-};
-
-export type PortalMethods = {
-  mount: (children: PortalNode) => number;
-  update: (key: number, children: PortalNode) => void;
-  unmount: (key: number) => void;
-};
-
-export type Operation =
-  | { type: 'mount'; key: number; children: PortalNode }
-  | { type: 'update'; key: number; children: PortalNode }
-  | { type: 'unmount'; key: number };
-
-export const PortalContextKey: InjectionKey<PortalMethods> = Symbol('PortalContextKey');
-
-export function usePortalContext() {
-  return inject(PortalContextKey);
-}
-
-export function getUniqueKey(key: string) {
-  const router = Taro.getCurrentInstance().router;
-  const prefix = router.path;
-  return `${prefix}_${key}`;
-}
-
-// events
-export const addType = 'ADD_PORTAL';
-export const removeType = 'REMOVE_PORTAL';
-
-export const TopViewEventEmitter = new Taro.Events();
-
-class PortalGuard {
-  private nextKey = 10000;
-  add = (render: (_key: number) => PortalNode) => {
-    const key = this.nextKey++;
-    const node = render(key);
-    TopViewEventEmitter.trigger(getUniqueKey(addType), node, key);
-    return key;
-  };
-  remove = (key: number) => {
-    TopViewEventEmitter.trigger(getUniqueKey(removeType), key);
-  };
-}
-/**
- * portal
- */
-export const portal = new PortalGuard();
-
-export type PortalManagerInstance = {
-  mount: (key: number, children: PortalNode) => void;
-  update: (key: number, children: PortalNode) => void;
-  unmount: (key: number) => {
-    key: number;
-    children: PortalNode;
-  }[];
-};

--
Gitblit v1.9.1