From 0b80fceef84459f8edadc17398e2b2b8e2b4ef74 Mon Sep 17 00:00:00 2001 From: lzq <2495532633@qq.com> Date: Thu, 29 Jan 2026 18:11:56 +0800 Subject: [PATCH] 1 --- src/assets/stylus/index.styl | 13 ++++ src/common/utils/v-model.ts | 26 +++++++ src/components/a-form-panel/AFormPanel.vue | 2 + src/components/uploader/Uploader.vue | 34 +++++++- src/dts/components.d.ts | 4 + src/pages/gds/goods/ExpenseConfig.vue | 90 ++++++++++++++++++++++ src/pages/gds/goods/GoodsForm.vue | 42 +++++++++- src/pages/gds/goods/constants.ts | 43 +++++++++++ 8 files changed, 248 insertions(+), 6 deletions(-) create mode 100644 src/common/utils/v-model.ts create mode 100644 src/pages/gds/goods/ExpenseConfig.vue create mode 100644 src/pages/gds/goods/constants.ts diff --git a/src/assets/stylus/index.styl b/src/assets/stylus/index.styl index 5d9bbf2..d5efabf 100644 --- a/src/assets/stylus/index.styl +++ b/src/assets/stylus/index.styl @@ -50,6 +50,19 @@ padding 0 12px 0 0 !important; } + +.el-form-item.is-required .el-form-item__label { + padding 0 12px !important; +} + +.el-form-item.is-required ~ .el-form-item:not(.is-required) .el-form-item__label { + padding 0 12px !important; +} + +.el-form-item:has(+ .el-form-item.is-required):not(.is-required) .el-form-item__label { + padding 0 12px !important; +} + .el-form-item.is-error { .a-uploader { .el-upload { diff --git a/src/common/utils/v-model.ts b/src/common/utils/v-model.ts new file mode 100644 index 0000000..432a721 --- /dev/null +++ b/src/common/utils/v-model.ts @@ -0,0 +1,26 @@ +type EventT = { + // @ts-ignore + [key in `update:${keyof T}`]: 1 +} +export default function (props: T, propName: keyof T, emits: (event: keyof EventT, ...args: any[]) => void) { + return computed({ + get() { + return new Proxy(props[propName], { + get(target, key) { + return Reflect.get(target, key) + }, + set(target, key, value) { + Reflect.set(target, key, value) + emits(('update:' + (propName as string)) as keyof EventT, { + ...target, + [key]: value, + }) + return true + }, + }) + }, + set(val) { + emits(('update:' + (propName as string)) as keyof EventT, val) + }, + }) +} diff --git a/src/components/a-form-panel/AFormPanel.vue b/src/components/a-form-panel/AFormPanel.vue index f2cca11..b5ded69 100644 --- a/src/components/a-form-panel/AFormPanel.vue +++ b/src/components/a-form-panel/AFormPanel.vue @@ -16,6 +16,7 @@ const props = withDefaults( doSubmit: (data: T) => Promise rules?: Partial>> labelWidth?: string + width?: string }>(), { rules: () => ({} as Partial>>), @@ -69,6 +70,7 @@ defineExpose({ :closed="dialogCloseHandler" :submit-handler="submitHandler" :title="title" + :width="width" > > }>(), { limit: 1, + height: '100px', + width: '100px', // @ts-ignore uploadProps: { // @ts-ignore @@ -129,11 +133,13 @@ defineExpose({ diff --git a/src/pages/gds/goods/GoodsForm.vue b/src/pages/gds/goods/GoodsForm.vue index 8f4547f..a9d65d5 100644 --- a/src/pages/gds/goods/GoodsForm.vue +++ b/src/pages/gds/goods/GoodsForm.vue @@ -4,6 +4,7 @@ :title="status === 'add' ? '新建产品' : '修改产品'" :details-loader="detailsLoader" :do-submit="doSubmit" + label-width="90px" :rules="rules" >