diff --git a/apps/web-antd/src/api/mall/trade/brokerage/user/index.ts b/apps/web-antd/src/api/mall/trade/brokerage/user/index.ts index d523f1d6e4c61403f47baf0e47a5c409a0db08e8..51c24f25afa1e7c4786b48cefb0d80d9239be5c6 100644 --- a/apps/web-antd/src/api/mall/trade/brokerage/user/index.ts +++ b/apps/web-antd/src/api/mall/trade/brokerage/user/index.ts @@ -29,12 +29,14 @@ export namespace MallBrokerageUserApi { export interface CreateRequest { /** 用户编号 */ userId: number; + /** 推广员编号 */ + bindUserId: number; } /** 修改推广员请求 */ export interface UpdateBindUserRequest { /** 用户编号 */ - userId: number; + id: number; /** 推广员编号 */ bindUserId: number; } @@ -42,15 +44,15 @@ export namespace MallBrokerageUserApi { /** 清除推广员请求 */ export interface ClearBindUserRequest { /** 用户编号 */ - userId: number; + id: number; } /** 修改推广资格请求 */ export interface UpdateBrokerageEnabledRequest { /** 用户编号 */ - userId: number; + id: number; /** 是否启用分销 */ - brokerageEnabled: boolean; + enabled: boolean; } } diff --git a/apps/web-antd/src/components/cropper/cropper-avatar.vue b/apps/web-antd/src/components/cropper/cropper-avatar.vue index f9bc8dac071dc80f39224cfc15c9cfc95f7b6306..2c9e5703d8adf46249351764fe97bcfc495b148f 100644 --- a/apps/web-antd/src/components/cropper/cropper-avatar.vue +++ b/apps/web-antd/src/components/cropper/cropper-avatar.vue @@ -28,13 +28,10 @@ const props = withDefaults(defineProps(), { const emit = defineEmits(['update:value', 'change']); const sourceValue = ref(props.value || ''); -const prefixCls = 'cropper-avatar'; const [CropperModal, modalApi] = useVbenModal({ connectedComponent: cropperModal, }); -const getClass = computed(() => [prefixCls]); - const getWidth = computed(() => `${`${props.width}`.replace(/px/, '')}px`); const getIconWidth = computed( @@ -74,29 +71,42 @@ defineExpose({ - - diff --git a/apps/web-antd/src/components/cropper/cropper-modal.vue b/apps/web-antd/src/components/cropper/cropper-modal.vue index a28fd6b4e65e57cdda2d4dd0b77b40f1f298795e..d2dedb6de640b3254f14a98e051e90d375b35a86 100644 --- a/apps/web-antd/src/components/cropper/cropper-modal.vue +++ b/apps/web-antd/src/components/cropper/cropper-modal.vue @@ -37,13 +37,20 @@ const cropper = ref(); let scaleX = 1; let scaleY = 1; -const prefixCls = 'cropper-am'; const [Modal, modalApi] = useVbenModal({ onConfirm: handleOk, onOpenChange(isOpen) { if (isOpen) { // 打开时,进行 loading 加载。后续 CropperImage 组件加载完毕,会自动关闭 loading(通过 handleReady) modalLoading(true); + const img = new Image(); + img.src = src.value; + img.addEventListener('load', () => { + modalLoading(false); + }); + img.addEventListener('error', () => { + modalLoading(false); + }); } else { // 关闭时,清空右侧预览 previewSource.value = ''; @@ -121,9 +128,13 @@ async function handleOk() { :title="$t('ui.cropper.modalTitle')" class="w-2/3" > -
-
-
+
+ +
+ +
-
+ +
@@ -258,16 +270,26 @@ async function handleOk() {
-
-
+ + +
+ +
+ + - - diff --git a/apps/web-antd/src/components/cropper/cropper.vue b/apps/web-antd/src/components/cropper/cropper.vue index c2d62755eaa03a2f0f1311abaa6b68510449634c..cc8836c9fed24b8b61dc842e600530aab1b3065c 100644 --- a/apps/web-antd/src/components/cropper/cropper.vue +++ b/apps/web-antd/src/components/cropper/cropper.vue @@ -33,7 +33,6 @@ const imgElRef = ref>(); const cropper = ref(); const isReady = ref(false); -const prefixCls = 'cropper-image'; const debounceRealTimeCropped = useDebounceFn(realTimeCropped, 80); const getImageStyle = computed((): CSSProperties => { @@ -46,10 +45,9 @@ const getImageStyle = computed((): CSSProperties => { const getClass = computed(() => { return [ - prefixCls, attrs.class, { - [`${prefixCls}--circled`]: props.circled, + 'cropper-image--circled': props.circled, }, ]; }); @@ -115,10 +113,9 @@ function cropped() { imgInfo, }); }; - // eslint-disable-next-line unicorn/prefer-add-event-listener - fileReader.onerror = () => { + fileReader.addEventListener('error', () => { emit('cropendError'); - }; + }); }, 'image/png'); } @@ -157,6 +154,7 @@ function getRoundedCanvas() { :crossorigin="crossorigin" :src="src" :style="getImageStyle" + class="h-auto max-w-full" />
diff --git a/apps/web-antd/src/components/dict-tag/dict-tag.vue b/apps/web-antd/src/components/dict-tag/dict-tag.vue index 7d9a5f1f3e02e0661fe462fefc7e0fe9f9c59953..8aba7d261af31212c514c10e62a92ceac6859b4c 100644 --- a/apps/web-antd/src/components/dict-tag/dict-tag.vue +++ b/apps/web-antd/src/components/dict-tag/dict-tag.vue @@ -66,6 +66,7 @@ const dictTag = computed(() => { return { label: dict.label || '', colorType, + cssClass: dict.cssClass, }; }); diff --git a/apps/web-antd/src/components/form-create/components/dict-select.vue b/apps/web-antd/src/components/form-create/components/dict-select.vue index c137a5678271b9fefc7808d1bdc15014ec8a84f5..80c26cbad09547c94e69279f8d72976459085ae4 100644 --- a/apps/web-antd/src/components/form-create/components/dict-select.vue +++ b/apps/web-antd/src/components/form-create/components/dict-select.vue @@ -13,7 +13,7 @@ import { SelectOption, } from 'ant-design-vue'; -import { getDictObj, getIntDictOptions, getStrDictOptions } from '#/utils'; +import { getDictOptions } from '#/utils'; defineOptions({ name: 'DictSelect' }); @@ -25,17 +25,16 @@ const props = withDefaults(defineProps(), { const attrs = useAttrs(); // 获得字典配置 -// TODO @dhb:可以使用 getDictOptions 替代么? -const getDictOptions = computed(() => { +const getDictOption = computed(() => { switch (props.valueType) { case 'bool': { - return getDictObj(props.dictType, 'bool'); + return getDictOptions(props.dictType, 'boolean'); } case 'int': { - return getIntDictOptions(props.dictType); + return getDictOptions(props.dictType, 'number'); } case 'str': { - return getStrDictOptions(props.dictType); + return getDictOptions(props.dictType, 'string'); } default: { return []; @@ -47,7 +46,7 @@ const getDictOptions = computed(() => {