| | |
| | | style="width: 20%" |
| | | :options="options" |
| | | :readonly="true" |
| | | @change="(value, option) => searchOnChange(value, option, field)" |
| | | /> |
| | | </a-input-group> |
| | | </template> |
| | | <template #[item]="{ model, field }" v-for="item in swSlots" :key="item"> |
| | | <a-switch v-model:checked="model[field]" /> |
| | | </template> |
| | | <template #[item]="{ model, field }" v-for="item in searchApiSlots" :key="item"> |
| | | <a-input v-model:value="model[field]" /> |
| | | </template> |
| | | <template #[item]="{ model, field }" v-for="item in searchParamsSlots" :key="item"> |
| | | <a-input v-model:value="model[field]" /> |
| | | </template> |
| | | <template #[item]="{ model, field }" v-for="item in searchResultFieldSlots" :key="item"> |
| | | <a-input v-model:value="model[field]" /> |
| | | </template> |
| | | <template #[item]="{ model, field }" v-for="item in searchLabelFieldSlots" :key="item"> |
| | | <a-input v-model:value="model[field]" /> |
| | | </template> |
| | | <template #[item]="{ model, field }" v-for="item in searchValueFieldSlots" :key="item"> |
| | | <a-input v-model:value="model[field]" /> |
| | | </template> |
| | | </BasicForm> |
| | | </a-card> |
| | |
| | | style="width: 20%" |
| | | :options="options" |
| | | :readonly="true" |
| | | @change="(value, option) => componentChange(value, option, field)" |
| | | /> |
| | | </a-input-group> |
| | | </template> |
| | |
| | | </template> |
| | | <template #[item]="{ model, field }" v-for="item in crudrSwSlots" :key="item"> |
| | | <a-switch v-model:checked="model[field]" /> |
| | | </template> |
| | | <template #[item]="{ model, field }" v-for="item in crudApiSlots" :key="item"> |
| | | <a-input v-model:value="model[field]" /> |
| | | </template> |
| | | <template #[item]="{ model, field }" v-for="item in crudParamsSlots" :key="item"> |
| | | <a-input v-model:value="model[field]" /> |
| | | </template> |
| | | <template #[item]="{ model, field }" v-for="item in crudResultFieldSlots" :key="item"> |
| | | <a-input v-model:value="model[field]" /> |
| | | </template> |
| | | <template #[item]="{ model, field }" v-for="item in crudLabelFieldSlots" :key="item"> |
| | | <a-input v-model:value="model[field]" /> |
| | | </template> |
| | | <template #[item]="{ model, field }" v-for="item in crudValueFieldSlots" :key="item"> |
| | | <a-input v-model:value="model[field]" /> |
| | | </template> |
| | | <template #[item]="{ model, field }" v-for="item in crudOptionsSlots" :key="item"> |
| | | <a-input v-model:value="model[field]" /> |
| | | </template> |
| | | <template #[item]="{ model, field }" v-for="item in crudOnChangeSlots" :key="item"> |
| | | <a-input v-model:value="model[field]" /> |
| | | </template> |
| | | </BasicForm> |
| | | </a-card> |
| | |
| | | </PageWrapper> |
| | | </template> |
| | | <script lang="ts" setup> |
| | | import { BasicForm, useForm } from '/@/components/Form'; |
| | | import { BasicForm, FormSchema, useForm } from '/@/components/Form'; |
| | | import { nextTick, onMounted, ref, unref } from 'vue'; |
| | | import { Card, InputGroup, Select, Input, Switch } from 'ant-design-vue'; |
| | | import { ApiSelect } from '/@/components/Form/index'; |
| | |
| | | validate, |
| | | }, |
| | | ] = useForm({ |
| | | labelWidth: 120, |
| | | labelWidth: 130, |
| | | baseColProps: { |
| | | span: 24, |
| | | }, |
| | |
| | | validate: crudvalidate, |
| | | }, |
| | | ] = useForm({ |
| | | labelWidth: 120, |
| | | labelWidth: 130, |
| | | baseColProps: { |
| | | span: 24, |
| | | }, |
| | |
| | | validate: validateMainForm, |
| | | }, |
| | | ] = useForm({ |
| | | labelWidth: 120, |
| | | labelWidth: 130, |
| | | baseColProps: { |
| | | span: 24, |
| | | }, |
| | | schemas: mainSchemas, |
| | | showActionButtonGroup: false, |
| | | }); |
| | | /* 查询 */ |
| | | const SearchEntName = ref(''); |
| | | const MainEntName = ref(''); |
| | | const CrudEntName = ref(''); |
| | | const objInputs = ref({} as { [key: string]: any }); |
| | | const mainInputs = ref({} as { [key: string]: any }); |
| | | const crudInputs = ref({} as { [key: string]: any }); |
| | | const searchProperties = ref([] as EntityPropertie[]); |
| | | const mainProperties = ref([] as EntityPropertie[]); |
| | | const crudProperties = ref([] as EntityPropertie[]); |
| | | const searchSlots = ref([] as string[]); |
| | | const mainSlots = ref([] as string[]); |
| | | const crudSlots = ref([] as string[]); |
| | | const searchSelectVals = ref({} as { [key: string]: any }); |
| | | const swSlots = ref([] as string[]); |
| | | const searchApiSlots = ref([] as string[]); |
| | | const searchParamsSlots = ref([] as string[]); |
| | | const searchResultFieldSlots = ref([] as string[]); |
| | | const searchLabelFieldSlots = ref([] as string[]); |
| | | const searchValueFieldSlots = ref([] as string[]); |
| | | /* 主表 */ |
| | | const MainEntName = ref(''); |
| | | const mainSelectVals = ref({} as { [key: string]: any }); |
| | | const mainProperties = ref([] as EntityPropertie[]); |
| | | const mainInputs = ref({} as { [key: string]: any }); |
| | | const mainSlots = ref([] as string[]); |
| | | const mainSwSlots = ref([] as string[]); |
| | | const crudSwSlots = ref([] as string[]); |
| | | const mainsSwSlots = ref([] as string[]); |
| | | const mainwSwSlots = ref([] as string[]); |
| | | const mainIaSlots = ref([] as string[]); |
| | | const crudrSwSlots = ref([] as string[]); |
| | | const searchSelectVals = ref({} as { [key: string]: any }); |
| | | const mainSelectVals = ref({} as { [key: string]: any }); |
| | | /* 增删改 */ |
| | | const CrudEntName = ref(''); |
| | | const crudInputs = ref({} as { [key: string]: any }); |
| | | const crudProperties = ref([] as EntityPropertie[]); |
| | | const crudSelectVals = ref({} as { [key: string]: any }); |
| | | const crudSlots = ref([] as string[]); |
| | | const crudSwSlots = ref([] as string[]); |
| | | const crudrSwSlots = ref([] as string[]); |
| | | const crudApiSlots = ref([] as string[]); |
| | | const crudParamsSlots = ref([] as string[]); |
| | | const crudResultFieldSlots = ref([] as string[]); |
| | | const crudLabelFieldSlots = ref([] as string[]); |
| | | const crudValueFieldSlots = ref([] as string[]); |
| | | const crudOptionsSlots = ref([] as string[]); |
| | | const crudOnChangeSlots = ref([] as string[]); |
| | | |
| | | const options = ref<SelectTypes['options']>([ |
| | | { |
| | | value: 'Input', |
| | |
| | | for (const i in searchForms) { |
| | | if (searchForms[i]['field'] != '0') { |
| | | condAdd(); |
| | | if (searchForms[i]['component'] == 'ApiSelect') { |
| | | addApiSelectOption(`${SearchEntName.value}${Number(i) + 1}a`, 'search'); |
| | | setFieldsValue({ |
| | | [`ApiSelect${SearchEntName.value}${Number(i) + 1}a`]: |
| | | searchForms[i]['componentProps']['api'], |
| | | [`Params${SearchEntName.value}${Number(i) + 1}a`]: JSON.stringify( |
| | | searchForms[i]['componentProps']['params'], |
| | | ), |
| | | [`Result${SearchEntName.value}${Number(i) + 1}a`]: |
| | | searchForms[i]['componentProps']['resultField'], |
| | | [`Label${SearchEntName.value}${Number(i) + 1}a`]: |
| | | searchForms[i]['componentProps']['labelField'], |
| | | [`Value${SearchEntName.value}${Number(i) + 1}a`]: |
| | | searchForms[i]['componentProps']['valueField'], |
| | | }); |
| | | } |
| | | setFieldsValue({ |
| | | [`${SearchEntName.value}${Number(i) + 1}a`]: searchForms[i]['field'], |
| | | [`InputNumber${Number(i) + 1}`]: searchForms[i]['colProps'].span, |
| | |
| | | setFieldsValueCrud({ crudAssemblyName: data.Data.Items[0].CRUD_ASSY_NAME }); |
| | | for (const i in crudForms) { |
| | | crudCondAdd(); |
| | | if (crudForms[i]['component'] == 'ApiSelect') { |
| | | addApiSelectOption(`${CrudEntName.value}${Number(i) + 1}a`, 'crud'); |
| | | setFieldsValueCrud({ |
| | | [`ApiSelect${CrudEntName.value}${Number(i) + 1}a`]: |
| | | crudForms[i]['componentProps']['api'], |
| | | [`Params${CrudEntName.value}${Number(i) + 1}a`]: JSON.stringify( |
| | | crudForms[i]['componentProps']['params'], |
| | | ), |
| | | [`Result${CrudEntName.value}${Number(i) + 1}a`]: |
| | | crudForms[i]['componentProps']['resultField'], |
| | | [`Label${CrudEntName.value}${Number(i) + 1}a`]: |
| | | crudForms[i]['componentProps']['labelField'], |
| | | [`Value${CrudEntName.value}${Number(i) + 1}a`]: |
| | | crudForms[i]['componentProps']['valueField'], |
| | | }); |
| | | } |
| | | if (crudForms[i]['component'] == 'Select') { |
| | | addSelectOption(`${CrudEntName.value}${Number(i) + 1}a`, 'crud'); |
| | | setFieldsValueCrud({ |
| | | [`XSelect${CrudEntName.value}${Number(i) + 1}a`]: JSON.stringify( |
| | | crudForms[i]['componentProps']['options'], |
| | | ), |
| | | [`XOnChange${CrudEntName.value}${Number(i) + 1}a`]: |
| | | crudForms[i]['componentProps']['onChange'], |
| | | }); |
| | | } |
| | | setFieldsValueCrud({ |
| | | [`${CrudEntName.value}${Number(i) + 1}a`]: crudForms[i]['field'], |
| | | [`InputNumber${Number(i) + 1}`]: crudForms[i]['colProps'].span, |
| | |
| | | _json['label'] = objInputs.value[Keys[k]]; |
| | | _json['defaultValue'] = ''; |
| | | _json['component'] = searchSelectVals.value[Keys[k]]; |
| | | if (searchSelectVals.value[Keys[k]] == 'ApiSelect') { |
| | | _json['componentProps'] = { |
| | | api: values[`ApiSelect${Keys[k]}`], |
| | | params: JSON.parse(values[`Params${Keys[k]}`]), |
| | | resultField: values[`Result${Keys[k]}`], |
| | | labelField: values[`Label${Keys[k]}`], |
| | | valueField: values[`Value${Keys[k]}`], |
| | | }; |
| | | } |
| | | _n = _n + 4; |
| | | } |
| | | if (Keys[k].toString().startsWith('InputNumber')) { |
| | |
| | | console.log(`${k}:${cKeys[k]}`); |
| | | if (cKeys[k].toString().startsWith(getFieldsValueCrud().crudAssemblyName)) { |
| | | cjson['field'] = isNullOrEmpty(crudvalues[cKeys[k]]) ? '' : crudvalues[cKeys[k]]; |
| | | cjson['label'] = isNullOrEmpty(crudvalues[cKeys[k]]) ? '' : crudInputs.value[cKeys[k]]; |
| | | cjson['label'] = isNullOrEmpty(crudInputs.value[cKeys[k]]) |
| | | ? '' |
| | | : crudInputs.value[cKeys[k]]; |
| | | cjson['component'] = crudSelectVals.value[cKeys[k]]; |
| | | if (crudSelectVals.value[cKeys[k]] == 'ApiSelect') { |
| | | cjson['componentProps'] = { |
| | | api: crudvalues[`ApiSelect${cKeys[k]}`], |
| | | params: JSON.parse(crudvalues[`Params${cKeys[k]}`]), |
| | | resultField: crudvalues[`Result${cKeys[k]}`], |
| | | labelField: crudvalues[`Label${cKeys[k]}`], |
| | | valueField: crudvalues[`Value${cKeys[k]}`], |
| | | }; |
| | | } |
| | | if (crudSelectVals.value[cKeys[k]] == 'Select') { |
| | | cjson['componentProps'] = { |
| | | options: JSON.parse(crudvalues[`XSelect${cKeys[k]}`]), |
| | | onChange: crudvalues[`XOnChange${cKeys[k]}`], |
| | | }; |
| | | } |
| | | c = c + 3; |
| | | } |
| | | if (cKeys[k].toString().startsWith('Switch')) { |
| | |
| | | console.log(value, option, field); |
| | | crudInputs.value[field] = option.label; |
| | | } |
| | | /* 查询组件选择事件 */ |
| | | function searchOnChange(value, option, field) { |
| | | console.log(value, option, field); |
| | | if (value == 'ApiSelect') { |
| | | addApiSelectOption(field, 'search'); |
| | | } else { |
| | | delApiSelectOption(field, 'search'); |
| | | } |
| | | // if (value == 'PoPSelect') {} |
| | | } |
| | | /* 增删改组件选择事件 */ |
| | | function componentChange(value, option, field) { |
| | | console.log(value, option, field); |
| | | if (value == 'ApiSelect') { |
| | | addApiSelectOption(field, 'crud'); |
| | | delSelectOption(field, 'crud'); |
| | | } else { |
| | | delApiSelectOption(field, 'crud'); |
| | | } |
| | | if (value == 'Select') { |
| | | addSelectOption(field, 'crud'); |
| | | delApiSelectOption(field, 'crud'); |
| | | } else { |
| | | delSelectOption(field, 'crud'); |
| | | } |
| | | // if (value == 'PoPSelect') {} |
| | | } |
| | | |
| | | function addApiSelectOption(field: string, type: string) { |
| | | const appendData: FormSchema[] = [ |
| | | { |
| | | field: `ApiSelect${field}`, |
| | | component: 'Input', |
| | | label: `api`, |
| | | slot: `Api${field}`, |
| | | colProps: { span: 5 }, |
| | | }, |
| | | { |
| | | field: `Params${field}`, |
| | | component: 'Input', |
| | | label: 'params', |
| | | slot: `Params_${field}`, |
| | | colProps: { span: 6 }, |
| | | }, |
| | | { |
| | | field: `Result${field}`, |
| | | component: 'Input', |
| | | label: 'resultField', |
| | | slot: `ResultField${field}`, |
| | | colProps: { span: 5 }, |
| | | }, |
| | | { |
| | | field: `Label${field}`, |
| | | component: 'Input', |
| | | label: 'labelField', |
| | | slot: `LabelField${field}`, |
| | | colProps: { span: 4 }, |
| | | }, |
| | | { |
| | | field: `Value${field}`, |
| | | component: 'Input', |
| | | label: 'valueField', |
| | | slot: `ValueField${field}`, |
| | | colProps: { span: 4 }, |
| | | }, |
| | | ]; |
| | | switch (type) { |
| | | case 'search': |
| | | appendSchemaByField(appendData, ''); |
| | | searchSlotsPush(field); |
| | | break; |
| | | case 'crud': |
| | | appendSchemaByFieldCrud(appendData, ''); |
| | | crudSlotsPush(field); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | /* 增删改ApiSelect插槽数据添加 */ |
| | | function crudSlotsPush(field: string) { |
| | | crudApiSlots.value.push(`Api${field}`); |
| | | crudParamsSlots.value.push(`Params_${field}`); |
| | | crudResultFieldSlots.value.push(`ResultField${field}`); |
| | | crudLabelFieldSlots.value.push(`LabelField${field}`); |
| | | crudValueFieldSlots.value.push(`ValueField${field}`); |
| | | } |
| | | /* 查询ApiSelect插槽数据添加 */ |
| | | function searchSlotsPush(field: string) { |
| | | searchApiSlots.value.push(`Api${field}`); |
| | | searchParamsSlots.value.push(`Params_${field}`); |
| | | searchResultFieldSlots.value.push(`ResultField${field}`); |
| | | searchLabelFieldSlots.value.push(`LabelField${field}`); |
| | | searchValueFieldSlots.value.push(`ValueField${field}`); |
| | | } |
| | | |
| | | function delApiSelectOption(field: string, type: string) { |
| | | const removeData: string[] = [ |
| | | `ApiSelect${field}`, |
| | | `Params${field}`, |
| | | `Result${field}`, |
| | | `Label${field}`, |
| | | `Value${field}`, |
| | | ]; |
| | | switch (type) { |
| | | case 'search': |
| | | //if (!isNullOrEmpty(getFieldsValue()[`ApiSelect${field}`])) { |
| | | removeSchemaByField(removeData); |
| | | searchSlotsSplice(field); |
| | | //} |
| | | break; |
| | | case 'crud': |
| | | //if (!isNullOrEmpty(getFieldsValueCrud()[`ApiSelect${field}`])) { |
| | | removeSchemaByFieldCrud(removeData); |
| | | crudSlotsSplice(field); |
| | | //} |
| | | break; |
| | | } |
| | | } |
| | | |
| | | /* 增删改插槽删除项 */ |
| | | function crudSlotsSplice(field: string) { |
| | | crudApiSlots.value = crudApiSlots.value.filter((item) => item !== `Api${field}`); |
| | | crudParamsSlots.value = crudParamsSlots.value.filter((item) => item !== `Params_${field}`); |
| | | crudResultFieldSlots.value = crudResultFieldSlots.value.filter( |
| | | (item) => item !== `ResultField${field}`, |
| | | ); |
| | | crudLabelFieldSlots.value = crudLabelFieldSlots.value.filter( |
| | | (item) => item !== `LabelField${field}`, |
| | | ); |
| | | crudValueFieldSlots.value = crudValueFieldSlots.value.filter( |
| | | (item) => item !== `ValueField${field}`, |
| | | ); |
| | | } |
| | | /* 增删改插槽删除项 */ |
| | | function searchSlotsSplice(field: string) { |
| | | searchApiSlots.value = searchApiSlots.value.filter((item) => item !== `Api${field}`); |
| | | searchParamsSlots.value = searchParamsSlots.value.filter((item) => item !== `Params_${field}`); |
| | | searchResultFieldSlots.value = searchResultFieldSlots.value.filter( |
| | | (item) => item !== `ResultField${field}`, |
| | | ); |
| | | searchLabelFieldSlots.value = searchLabelFieldSlots.value.filter( |
| | | (item) => item !== `LabelField${field}`, |
| | | ); |
| | | searchValueFieldSlots.value = searchValueFieldSlots.value.filter( |
| | | (item) => item !== `ValueField${field}`, |
| | | ); |
| | | } |
| | | |
| | | function addSelectOption(field: string, type: string) { |
| | | const appendData: FormSchema[] = [ |
| | | { |
| | | field: `XSelect${field}`, |
| | | component: 'Input', |
| | | label: `options`, |
| | | slot: `Select_${field}`, |
| | | colProps: { span: 12 }, |
| | | }, |
| | | { |
| | | field: `XOnChange${field}`, |
| | | component: 'Input', |
| | | label: 'onChange', |
| | | slot: `OnChange_${field}`, |
| | | colProps: { span: 12 }, |
| | | }, |
| | | ]; |
| | | switch (type) { |
| | | case 'search': |
| | | appendSchemaByField(appendData, ''); |
| | | // searchSelSlotsPush(field); |
| | | break; |
| | | case 'crud': |
| | | appendSchemaByFieldCrud(appendData, ''); |
| | | crudSelSlotsPush(field); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | function delSelectOption(field: string, type: string) { |
| | | const removeData: string[] = [`XSelect${field}`, `XOnChange${field}`]; |
| | | switch (type) { |
| | | case 'search': |
| | | //if (!isNullOrEmpty(getFieldsValue()[`XSelect${field}`])) { |
| | | removeSchemaByField(removeData); |
| | | // searchSelSlotsSplice(field); |
| | | //} |
| | | break; |
| | | case 'crud': |
| | | //if (!isNullOrEmpty(getFieldsValueCrud()[`XSelect${field}`])) { |
| | | removeSchemaByFieldCrud(removeData); |
| | | crudSelSlotsSplice(field); |
| | | //} |
| | | break; |
| | | } |
| | | } |
| | | |
| | | /* 增删改Select插槽数据添加 */ |
| | | function crudSelSlotsPush(field: string) { |
| | | crudOptionsSlots.value.push(`Select_${field}`); |
| | | crudOnChangeSlots.value.push(`OnChange_${field}`); |
| | | } |
| | | |
| | | /* 增删改插槽删除项 */ |
| | | function crudSelSlotsSplice(field: string) { |
| | | crudOptionsSlots.value = crudOptionsSlots.value.filter((item) => item !== `Select_${field}`); |
| | | crudOnChangeSlots.value = crudOnChangeSlots.value.filter((item) => item !== `Select_${field}`); |
| | | } |
| | | |
| | | const n = ref(1); |
| | | const m = ref(1); |
| | | const j = ref(1); |
| | |
| | | `InputNumber${field}`, |
| | | `${field}`, |
| | | ]); |
| | | swSlots.value.splice(swSlots.value.indexOf(`sw${field}`), 1); |
| | | searchSlots.value.splice(searchSlots.value.indexOf(`fac${field}`), 1); |
| | | swSlots.value = swSlots.value.filter((item) => item !== `sw${field}`); |
| | | searchSlots.value = searchSlots.value.filter((item) => item !== `fac${field}`); |
| | | if (searchSlots.value.length == 0) { |
| | | n.value = 1; |
| | | } |
| | |
| | | `InputTextArea${field}`, |
| | | `${field}`, |
| | | ]); |
| | | mainSwSlots.value.splice(mainSwSlots.value.indexOf(`mainSw${field}`), 1); |
| | | mainsSwSlots.value.splice(mainsSwSlots.value.indexOf(`mainsSw${field}`), 1); |
| | | mainwSwSlots.value.splice(mainwSwSlots.value.indexOf(`mainwSw${field}`), 1); |
| | | mainIaSlots.value.splice(mainIaSlots.value.indexOf(`mainwIa${field}`), 1); |
| | | mainSlots.value.splice(mainSlots.value.indexOf(`mainfac${field}`), 1); |
| | | mainSwSlots.value = mainSwSlots.value.filter((item) => item !== `mainSw${field}`); |
| | | mainsSwSlots.value = mainsSwSlots.value.filter((item) => item !== `mainsSw${field}`); |
| | | mainwSwSlots.value = mainwSwSlots.value.filter((item) => item !== `mainwSw${field}`); |
| | | mainIaSlots.value = mainIaSlots.value.filter((item) => item !== `mainwIa${field}`); |
| | | mainSlots.value = mainSlots.value.filter((item) => item !== `mainfac${field}`); |
| | | if (mainSlots.value.length == 0) { |
| | | m.value = 1; |
| | | } |
| | |
| | | `InputNumber${field}`, |
| | | `${field}`, |
| | | ]); |
| | | crudSwSlots.value.splice(crudSwSlots.value.indexOf(`crudSw${field}`), 1); |
| | | crudrSwSlots.value.splice(crudrSwSlots.value.indexOf(`crudrSw${field}`), 1); |
| | | crudSlots.value.splice(crudSlots.value.indexOf(`crudfac${field}`), 1); |
| | | crudSwSlots.value = crudSwSlots.value.filter((item) => item !== `crudSw${field}`); |
| | | crudrSwSlots.value = crudrSwSlots.value.filter((item) => item !== `crudrSw${field}`); |
| | | crudSlots.value = crudSlots.value.filter((item) => item !== `crudfac${field}`); |
| | | if (crudSlots.value.length == 0) { |
| | | j.value = 1; |
| | | } |
| | | delApiSelectOption(`${CrudEntName.value}${field}a`, 'crud'); |
| | | } |
| | | |
| | | function goBack() { |