diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/base/codegen/components/SegmentEditor.vue b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/base/codegen/components/SegmentEditor.vue new file mode 100644 index 00000000..0ccd0a6a --- /dev/null +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/base/codegen/components/SegmentEditor.vue @@ -0,0 +1,303 @@ + + + + + diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/base/codegen/data.ts b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/base/codegen/data.ts index c79735dd..3dfd9382 100644 --- a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/base/codegen/data.ts +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/base/codegen/data.ts @@ -23,7 +23,7 @@ const STATUS_OPTIONS = [ { label: '禁用', value: 1 }, ]; -/** 新增/修改的表单 */ +/** 新增/修改的表单(不含 segments,segments 使用自定义组件) */ export function useFormSchema(): VbenFormSchema[] { return [ { @@ -52,18 +52,6 @@ export function useFormSchema(): VbenFormSchema[] { placeholder: '请输入规则编码(唯一标识)', }, }, - { - fieldName: 'segments', - label: '分段配置', - rules: 'required', - component: 'Textarea', - componentProps: { - placeholder: - 'JSON数组格式,例如:\n[{"type":"PREFIX","value":"ORD"},{"type":"DATE","format":"yyyyMMdd"},{"type":"SEQUENCE","resetBy":"DAY","startAt":1,"paddingLen":4,"paddingChar":"0","maxValue":9999}]', - rows: 6, - }, - help: 'JSON数组格式。type: PREFIX/DATE/SEQUENCE', - }, { fieldName: 'separator', label: '分隔符', @@ -115,8 +103,9 @@ export function useFormSchema(): VbenFormSchema[] { { fieldName: 'remark', label: '备注', - component: 'Textarea', + component: 'Input', componentProps: { + type: 'textarea', placeholder: '请输入备注', rows: 3, }, @@ -184,10 +173,23 @@ export function useGridColumns(): VxeTableGridOptions[ { field: 'segmentConfig', title: '分段配置', - minWidth: 200, + minWidth: 240, formatter: ({ cellValue }: { cellValue: BaseCodeRuleApi.SegmentConfig[] }) => { if (!cellValue || cellValue.length === 0) return '-'; - return cellValue.map((s) => s.type).join(' + '); + return cellValue + .map((s) => { + switch (s.type) { + case 'PREFIX': + return `前缀:${s.value || ''}`; + case 'DATE': + return `日期(${s.format || 'yyyyMMdd'})`; + case 'SEQUENCE': + return `序号(${s.resetBy || 'DAY'}/${s.paddingLen || 4}位)`; + default: + return s.type; + } + }) + .join(' + '); }, }, { diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/base/codegen/index.vue b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/base/codegen/index.vue index 8a9b5679..f9e0740f 100644 --- a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/base/codegen/index.vue +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/base/codegen/index.vue @@ -59,7 +59,6 @@ async function handleDeleteBatch() { duration: 0, }); try { - // 逐个删除 for (const id of checkedIds.value) { await deleteCodeRule(id); } @@ -81,6 +80,9 @@ function handleRowCheckboxChange({ } const [Grid, gridApi] = useVbenVxeGrid({ + formOptions: { + schema: useGridFormSchema(), + }, gridOptions: { columns: useGridColumns(), height: 'auto', @@ -89,13 +91,12 @@ const [Grid, gridApi] = useVbenVxeGrid({ }, proxyConfig: { ajax: { - query: async ({ page }) => { - const params = { + query: async ({ page }, formValues) => { + return await getCodeRulePage({ pageNo: page.currentPage, pageSize: page.pageSize, - ...formData.value, - }; - return await getCodeRulePage(params); + ...formValues, + }); }, }, }, @@ -112,12 +113,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ checkboxAll: handleRowCheckboxChange, checkboxChange: handleRowCheckboxChange, }, - formOptions: { - schema: useGridFormSchema(), - }, }); - -const formData = ref>({});