From 39953e56484db8aace3ae056ac0bdf67c40dd44b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98huanghaiixia=E2=80=99?= <980486410@.com> Date: Thu, 23 Oct 2025 14:02:27 +0800 Subject: [PATCH] =?UTF-8?q?=E9=93=B6=E8=A1=8C=20=E5=9B=BD=E5=AE=B6?= =?UTF-8?q?=E5=9C=B0=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + src/api/mdm/Bank/index.ts | 18 +- src/api/mdm/CountryRegion/index.ts | 16 + src/components/Form/src/componentMap.ts | 3 +- src/main.ts | 2 + src/views/mdm/Bank/components/DataLog.vue | 93 + src/views/mdm/Bank/components/Form.vue | 18 +- src/views/mdm/Bank/components/config.ts | 504 +- src/views/mdm/Bank/index.vue | 50 +- .../mdm/CountryRegion/components/Form.vue | 8 + .../mdm/CountryRegion/components/config.ts | 105 +- src/views/mdm/CountryRegion/index.vue | 42 +- yarn.lock | 5316 +++++++++-------- 13 files changed, 3378 insertions(+), 2798 deletions(-) create mode 100644 src/views/mdm/Bank/components/DataLog.vue diff --git a/package.json b/package.json index 8d93e45..a9377fd 100644 --- a/package.json +++ b/package.json @@ -79,6 +79,7 @@ "nzh": "^1.0.8", "path-to-regexp": "^6.2.0", "pinia": "2.0.12", + "pnpm": "^10.18.2", "print-js": "^1.6.0", "qrcode": "^1.5.0", "qs": "^6.10.3", diff --git a/src/api/mdm/Bank/index.ts b/src/api/mdm/Bank/index.ts index 782f23a..c0fb382 100644 --- a/src/api/mdm/Bank/index.ts +++ b/src/api/mdm/Bank/index.ts @@ -136,4 +136,20 @@ export async function disableLngBBank(ids: string[], mode: ErrorMessageMode = 'm errorMessageMode: mode, }, ); - } \ No newline at end of file + } + + /** + * @description: 获取数据日志 + */ + export async function getDataLog(id: string, mode: ErrorMessageMode = 'modal', path:string) { + return defHttp.post( + { + url: path, + params: { id }, + }, + { + errorMessageMode: mode, + }, + ); + } + diff --git a/src/api/mdm/CountryRegion/index.ts b/src/api/mdm/CountryRegion/index.ts index 29d51d8..2976d5a 100644 --- a/src/api/mdm/CountryRegion/index.ts +++ b/src/api/mdm/CountryRegion/index.ts @@ -14,6 +14,22 @@ enum Api { Disable= '/mdm/countryRegion/disable', DataLog = '/mdm/countryRegion/datalog', + TreeData = '/mdm/countryRegion/tree' +} + +/** + * @description: 查询LngBRegion分页列表 + */ +export async function getTreeData(params: LngBRegionPageParams, mode: ErrorMessageMode = 'modal') { + return defHttp.get( + { + url: Api.TreeData, + params, + }, + { + errorMessageMode: mode, + }, + ); } /** diff --git a/src/components/Form/src/componentMap.ts b/src/components/Form/src/componentMap.ts index 54e95f0..ae16bb2 100644 --- a/src/components/Form/src/componentMap.ts +++ b/src/components/Form/src/componentMap.ts @@ -4,7 +4,7 @@ import type { ComponentType } from './types/index'; /** * Component list, register here to setting it in the form */ -import { Input, InputNumber, Select, Radio, Checkbox, DatePicker, TreeSelect, Rate, Divider } from 'ant-design-vue'; +import { Input, InputNumber,Cascader, Select, Radio, Checkbox, DatePicker, TreeSelect, Rate, Divider } from 'ant-design-vue'; const DatasourceSelect = defineAsyncComponent({ loader: () => import('/@/components/DataSourceSelect/src/DatasourceSelect.vue') }); @@ -81,6 +81,7 @@ componentMap.set('InputPassword', XjrInputPassword); componentMap.set('InputSearch', Input.Search); componentMap.set('InputTextArea', Input.TextArea); componentMap.set('InputNumber', InputNumber); +componentMap.set('Cascader', Cascader); // componentMap.set('AutoComplete', AutoComplete); componentMap.set('AutoCodeRule', AutoCodeRule); componentMap.set('MoneyChineseInput', MoneyChineseInput); diff --git a/src/main.ts b/src/main.ts index 113690e..924e2e3 100644 --- a/src/main.ts +++ b/src/main.ts @@ -14,6 +14,7 @@ import { setupStore } from '/@/store'; import { setupGlobDirectives } from '/@/directives'; import { setupI18n } from '/@/locales/setupI18n'; import { registerGlobComp } from '/@/components/registerGlobComp'; +import DataLog from '/@/views/mdm/Bank/components/DataLog.vue'; import axios from 'axios'; import VueGridLayout from 'vue-grid-layout'; import Antd from 'ant-design-vue'; @@ -73,6 +74,7 @@ async function bootstrap() { app.use(Antd); app.use(VueGridLayout); + app.component('DataLog', DataLog); //如果需要使用葡萄城报表 放开代码注释 //这里是viewer的key diff --git a/src/views/mdm/Bank/components/DataLog.vue b/src/views/mdm/Bank/components/DataLog.vue new file mode 100644 index 0000000..c4057cc --- /dev/null +++ b/src/views/mdm/Bank/components/DataLog.vue @@ -0,0 +1,93 @@ + + + + \ No newline at end of file diff --git a/src/views/mdm/Bank/components/Form.vue b/src/views/mdm/Bank/components/Form.vue index 57f2657..7ec809a 100644 --- a/src/views/mdm/Bank/components/Form.vue +++ b/src/views/mdm/Bank/components/Form.vue @@ -20,7 +20,7 @@ import { changeWorkFlowForm, changeSchemaDisabled } from '/@/hooks/web/useWorkFlowForm'; import { WorkFlowFormParams } from '/@/model/workflow/bpmnConfig'; import { useRouter } from 'vue-router'; - + import { getTreeData } from '/@/api/mdm/CountryRegion'; const { filterFormSchemaAuth } = usePermission(); const { mergeFormSchemas,mergeFormEventConfigs } = useFormConfig(); const { currentRoute } = useRouter(); @@ -42,8 +42,15 @@ }); let customFormEventConfigs=[]; - + onMounted(async () => { + const treeData = await getTreeData({}) + formProps.schemas?.forEach(v => { + if (v.field == 'regionCode') { + v.componentProps.options = treeData + } + }) + console.log(formProps.schemas, 667) try { // 合并渲染覆盖配置中的字段配置、表单事件配置 await mergeCustomFormRenderConfig(); @@ -117,7 +124,8 @@ // 根据行唯一ID查询行数据,并设置表单数据 【编辑】 async function setFormDataFromId(rowId, skipUpdate) { try { - const record = await getLngBBank(rowId); + let record = await getLngBBank(rowId); + record = {...record, regionCode: (record.regionCode || []).split(',')} if (skipUpdate) { return record; } @@ -150,7 +158,7 @@ try { values[RowKey] = rowId; state.formModel = values; - let saveVal = await updateLngBBank(values); + let saveVal = await updateLngBBank({...values, regionCode: (values.regionCode||[]).join(',')}); await submitFormEvent(customFormEventConfigs, state.formModel, systemFormRef.value, formProps.schemas); //表单事件:提交表单 @@ -161,7 +169,7 @@ async function add(values) { try { state.formModel = values; - let saveVal = await addLngBBank(values); + let saveVal = await addLngBBank({...values, regionCode: (values.regionCode||[]).join(',')}); await submitFormEvent(customFormEventConfigs, state.formModel, systemFormRef.value, formProps.schemas); //表单事件:提交表单 diff --git a/src/views/mdm/Bank/components/config.ts b/src/views/mdm/Bank/components/config.ts index 88a74a9..a2e27c1 100644 --- a/src/views/mdm/Bank/components/config.ts +++ b/src/views/mdm/Bank/components/config.ts @@ -1,5 +1,9 @@ import { FormProps, FormSchema } from '/@/components/Form'; import { BasicColumn } from '/@/components/Table'; +import { useI18n } from '/@/hooks/web/useI18n'; +const { t } = useI18n(); +import { h } from 'vue'; +import { Tag } from 'ant-design-vue'; export const formConfig = { useCustomConfig: false, @@ -12,12 +16,12 @@ export const searchFormSchema: FormSchema[] = [ component: 'Input', }, { - field: 'bankCode', + field: 'code', label: '编码', component: 'Input', }, { - field: 'regionCode', + field: 'bankCode', label: '联行号', component: 'Input', }, @@ -34,26 +38,26 @@ export const searchFormSchema: FormSchema[] = [ getPopupContainer: () => document.body, }, }, - { - field: 'fullName', - label: '银行名称', - component: 'Input', - }, - { - field: 'code', - label: '所属国家和地区', - component: 'Input', - }, - { - field: 'swift', - label: 'SWIFT', - component: 'Input', - }, + // { + // field: 'fullName', + // label: '银行名称', + // component: 'Input', + // }, + // { + // field: 'code', + // label: '所属国家和地区', + // component: 'Input', + // }, + // { + // field: 'swift', + // label: 'SWIFT', + // component: 'Input', + // }, ]; export const columns: BasicColumn[] = [ { - dataIndex: 'bankCode', + dataIndex: 'code', title: '编码', componentType: 'input', align: 'left', @@ -63,33 +67,30 @@ export const columns: BasicColumn[] = [ { dataIndex: 'fullName', - title: '银行名称', + title: '名称', componentType: 'input', align: 'left', sorter: true, }, - { dataIndex: 'shortName', - title: '银行名称/简称', + title: '简称', componentType: 'input', align: 'left', sorter: true, }, - { - dataIndex: 'regionCode', + dataIndex: 'bankCode', title: '联行号', componentType: 'input', align: 'left', sorter: true, }, - { - dataIndex: 'code', + dataIndex: 'regionName', title: '所属国家和地区', componentType: 'input', align: 'left', @@ -113,6 +114,13 @@ export const columns: BasicColumn[] = [ align: 'left', sorter: true, + // customRender: ({ record }) => { + // const enabledMark = record.valid; + // const enable = ~~enabledMark === '有效'; + // const color = enable ? 'green' : 'red'; + // const text = enable ? t('有效') : t('无效'); + // return h(Tag, { color: color }, () => text); + // } }, ]; //表单事件 @@ -185,42 +193,8 @@ export const formProps: FormProps = { size: 'default', schemas: [ { - key: '151d6e797f7e411297992bd2460ddd29', - field: 'shortName', - label: '银行名称/简称', - type: 'input', - component: 'Input', - colProps: { span: 24 }, - defaultValue: '', - componentProps: { - width: '100%', - span: '', - defaultValue: '', - labelWidthMode: 'fix', - labelFixWidth: 120, - responsive: false, - respNewRow: false, - placeholder: '请输入银行名称/简称', - maxlength: null, - prefix: '', - suffix: '', - addonBefore: '', - addonAfter: '', - disabled: false, - allowClear: false, - showLabel: true, - required: false, - rules: [], - events: {}, - isSave: false, - isShow: true, - scan: false, - style: { width: '100%' }, - }, - }, - { - key: 'df917f42491f4a8888a9d661a89ac3ce', - field: 'bankCode', + key: '1', + field: 'code', label: '编码', type: 'input', component: 'Input', @@ -234,13 +208,13 @@ export const formProps: FormProps = { labelFixWidth: 120, responsive: false, respNewRow: false, - placeholder: '请输入编码', + placeholder: '', maxlength: null, prefix: '', suffix: '', addonBefore: '', addonAfter: '', - disabled: false, + disabled: true, allowClear: false, showLabel: true, required: false, @@ -253,12 +227,80 @@ export const formProps: FormProps = { }, }, { - key: '0e4069a334ea44219d6f1d364d830ffe', - field: 'regionCode', + key: '5fdaec7802364d16a979fc9d3218bbfa', + field: 'fullName', + label: '银行名称', + type: 'input', + component: 'Input', + colProps: { span: 16 }, + defaultValue: '', + componentProps: { + width: '100%', + span: '', + defaultValue: '', + labelWidthMode: 'fix', + labelFixWidth: 120, + responsive: false, + respNewRow: false, + placeholder: '请输入银行名称', + maxlength: null, + prefix: '', + suffix: '', + addonBefore: '', + addonAfter: '', + disabled: false, + allowClear: false, + showLabel: true, + required: true, + rules: [], + events: {}, + isSave: false, + isShow: true, + scan: false, + style: { width: '100%' }, + }, + }, + { + key: '2', + field: 'shortName', + label: '简称', + type: 'input', + component: 'Input', + colProps: { span: 8 }, + defaultValue: '', + componentProps: { + width: '100%', + span: '', + defaultValue: '', + labelWidthMode: 'fix', + labelFixWidth: 120, + responsive: false, + respNewRow: false, + placeholder: '请输入银行名称简称', + maxlength: null, + prefix: '', + suffix: '', + addonBefore: '', + addonAfter: '', + disabled: false, + allowClear: false, + showLabel: true, + required: true, + rules: [], + events: {}, + isSave: false, + isShow: true, + scan: false, + style: { width: '100%' }, + }, + }, + { + key: '38bd834c265446658be6f9784672e1ae', + field: 'bankCode', label: '联行号', type: 'input', component: 'Input', - colProps: { span: 24 }, + colProps: { span: 8 }, defaultValue: '', componentProps: { width: '100%', @@ -287,59 +329,33 @@ export const formProps: FormProps = { }, }, { - key: 'e00cdcea0ed14c99b7f7901526f5a5fe', - field: 'valid', - label: '有效标志', - type: 'select', - component: 'XjrSelect', - colProps: { span: 24 }, + key: '4', + field: 'regionCode', + label: '所属国家/地区', + type: 'cascader', + component: 'Cascader', + colProps: { span: 8 }, + defaultValue: [], componentProps: { - width: '100%', - span: '', - labelWidthMode: 'fix', - labelFixWidth: 120, - responsive: false, - respNewRow: false, - placeholder: '请选择下拉选择', - sepTextField: '', - showLabel: true, - showSearch: false, - clearable: false, - disabled: false, - mode: 'multiple', - staticOptions: [ - { key: 1, label: 'Option 1', value: 'Option 1' }, - { key: 2, label: 'Option 2', value: 'Option 2' }, - { key: 3, label: 'Option 3', value: 'Option 3' }, + options: [ + // { + // value: 'zhejiang', + // label: '浙江省', + // children: [ + // { + // value: 'hangzhou', + // label: '杭州市', + // children: [ + // { + // value: 'xihu', + // label: '西湖区', + // }, + // ], + // }, + // ], + // } ], - defaultSelect: null, - datasourceType: 'dic', - params: { itemId: '1978057078528327681' }, - labelField: 'name', - valueField: 'value', - apiConfig: { - path: 'CodeGeneration/selection', - method: 'GET', - apiId: '93d735dcb7364a0f8102188ec4d77ac7', - }, - dicOptions: [], - required: false, - rules: [], - events: {}, - isShow: true, - itemId: '1978057078528327681', - style: { width: '100%' }, - }, - }, - { - key: 'fe4822ade6334198965e983ab26c4100', - field: 'fullName', - label: '银行名称', - type: 'input', - component: 'Input', - colProps: { span: 24 }, - defaultValue: '', - componentProps: { + fieldNames: {label: 'fullName', value: 'code', children: 'children'}, width: '100%', span: '', defaultValue: '', @@ -347,7 +363,7 @@ export const formProps: FormProps = { labelFixWidth: 120, responsive: false, respNewRow: false, - placeholder: '请输入银行名称', + placeholder: '请选择', maxlength: null, prefix: '', suffix: '', @@ -366,46 +382,12 @@ export const formProps: FormProps = { }, }, { - key: '503adbb6dd024e0f934a41ec1ccbff07', - field: 'code', - label: '所属国家和地区', - type: 'input', - component: 'Input', - colProps: { span: 24 }, - defaultValue: '', - componentProps: { - width: '100%', - span: '', - defaultValue: '', - labelWidthMode: 'fix', - labelFixWidth: 120, - responsive: false, - respNewRow: false, - placeholder: '请输入所属国家和地区', - maxlength: null, - prefix: '', - suffix: '', - addonBefore: '', - addonAfter: '', - disabled: false, - allowClear: false, - showLabel: true, - required: false, - rules: [], - events: {}, - isSave: false, - isShow: true, - scan: false, - style: { width: '100%' }, - }, - }, - { - key: '08b8ef5bc2a148e2b14093e97be20305', + key: '6461a5e152124abca28bd2114dd577e6', field: 'swift', label: 'SWIFT', type: 'input', component: 'Input', - colProps: { span: 24 }, + colProps: { span: 8 }, defaultValue: '', componentProps: { width: '100%', @@ -433,6 +415,220 @@ export const formProps: FormProps = { style: { width: '100%' }, }, }, + { + key: '5', + field: 'ib', + label: '中转行', + type: 'input', + component: 'Input', + colProps: { span: 16 }, + defaultValue: '', + componentProps: { + width: '100%', + span: '', + defaultValue: '', + labelWidthMode: 'fix', + labelFixWidth: 120, + responsive: false, + respNewRow: false, + placeholder: '请输入中转行', + maxlength: null, + prefix: '', + suffix: '', + addonBefore: '', + addonAfter: '', + disabled: false, + allowClear: false, + showLabel: true, + required: false, + rules: [], + events: {}, + isSave: false, + isShow: true, + scan: false, + style: { width: '100%' }, + }, + }, + { + key: '6', + field: 'ibSwift', + label: '中转行SWIFT', + type: 'input', + component: 'Input', + colProps: { span: 8 }, + defaultValue: '', + componentProps: { + width: '100%', + span: '', + defaultValue: '', + labelWidthMode: 'fix', + labelFixWidth: 120, + responsive: false, + respNewRow: false, + placeholder: '请输入中转行SWIFT', + maxlength: null, + prefix: '', + suffix: '', + addonBefore: '', + addonAfter: '', + disabled: false, + allowClear: false, + showLabel: true, + required: false, + rules: [], + events: {}, + isSave: false, + isShow: true, + scan: false, + style: { width: '100%' }, + }, + }, + { + key: '7', + field: 'routing', + label: 'Routing', + type: 'input', + component: 'Input', + colProps: { span: 8 }, + defaultValue: '', + componentProps: { + width: '100%', + span: '', + defaultValue: '', + labelWidthMode: 'fix', + labelFixWidth: 120, + responsive: false, + respNewRow: false, + placeholder: '请输入Routing', + maxlength: null, + prefix: '', + suffix: '', + addonBefore: '', + addonAfter: '', + disabled: false, + allowClear: false, + showLabel: true, + required: false, + rules: [], + events: {}, + isSave: false, + isShow: true, + scan: false, + style: { width: '100%' }, + }, + }, + { + key: '8', + field: 'soft', + label: '显示顺序', + type: 'input', + component: 'InputNumber', + colProps: { span: 8 }, + defaultValue: '', + componentProps: { + width: '100%', + span: '', + defaultValue: '', + labelWidthMode: 'fix', + labelFixWidth: 120, + responsive: false, + respNewRow: false, + placeholder: '请输入显示顺序', + maxlength: null, + prefix: '', + suffix: '', + addonBefore: '', + addonAfter: '', + disabled: false, + allowClear: false, + showLabel: true, + required: false, + rules: [], + events: {}, + isSave: false, + isShow: true, + scan: false, + style: { width: '100%' }, + }, + }, + { + key: '714953d458d9402bb507893c92913d44', + field: 'valid', + label: '有效标志', + type: 'select', + component: 'XjrSelect', + colProps: { span: 8 }, + componentProps: { + width: '100%', + span: '', + labelWidthMode: 'fix', + labelFixWidth: 120, + responsive: false, + respNewRow: false, + placeholder: '请选择下拉选择', + sepTextField: '', + showLabel: true, + showSearch: false, + clearable: false, + disabled: true, + staticOptions: [ + { key: 1, label: 'Option 1', value: 'Option 1' }, + { key: 2, label: 'Option 2', value: 'Option 2' }, + { key: 3, label: 'Option 3', value: 'Option 3' }, + ], + defaultSelect: 'Y', + datasourceType: 'dic', + params: { itemId: '1978057078528327681' }, + labelField: 'name', + valueField: 'value', + apiConfig: { + path: 'CodeGeneration/selection', + method: 'GET', + apiId: '93d735dcb7364a0f8102188ec4d77ac7', + }, + dicOptions: [], + required: false, + rules: [], + events: {}, + isShow: true, + itemId: '1978057078528327681', + style: { width: '100%' }, + }, + }, + { + key: '9', + field: 'note', + label: '备注', + type: 'input', + component: 'InputTextArea', + colProps: { span: 24 }, + defaultValue: '', + componentProps: { + width: '100%', + span: '', + defaultValue: '', + labelWidthMode: 'fix', + labelFixWidth: 120, + responsive: false, + respNewRow: false, + placeholder: '请输入内容,最多200字', + maxlength: 200, + prefix: '', + suffix: '', + addonBefore: '', + addonAfter: '', + disabled: false, + allowClear: false, + showLabel: true, + required: false, + rules: [], + events: {}, + isSave: false, + isShow: true, + scan: false, + style: { width: '100%' }, + }, + }, ], showActionButtonGroup: false, buttonLocation: 'center', diff --git a/src/views/mdm/Bank/index.vue b/src/views/mdm/Bank/index.vue index 5c0c96e..a36f262 100644 --- a/src/views/mdm/Bank/index.vue +++ b/src/views/mdm/Bank/index.vue @@ -21,13 +21,18 @@ +