| | |
| | | @register="registerDrawer" |
| | | showFooter |
| | | :title="getTitle" |
| | | width="600px" |
| | | width="580px" |
| | | @ok="handleSubmit" |
| | | > |
| | | <BasicForm @register="registerForm"> |
| | |
| | | preIcon="search|svg" |
| | | /> |
| | | <GeneralModal |
| | | @register="registerItemAdd" |
| | | v-if="showModal" |
| | | @register="useModaldata[item][0]" |
| | | @success="(d, u) => handleItemSuccess(d, u, item)" |
| | | /> |
| | | </template> |
| | |
| | | </BasicDrawer> |
| | | </template> |
| | | <script lang="ts" setup> |
| | | import { ref, computed, unref, onMounted } from 'vue'; |
| | | import { ref, computed, unref, onMounted, nextTick } from 'vue'; |
| | | import { BasicForm, FormSchema, useForm } from '/@/components/Form/index'; |
| | | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; |
| | | import { useGlobSetting } from '/@/hooks/setting'; |
| | | import GeneralModal from '/@/views/components/GeneralModal.vue'; |
| | | import { SaveEntity, fetchJson, formatValues } from '/@/api/tigerapi/system'; |
| | | import { useModal } from '/@/components/Modal'; |
| | | import { isNullOrUnDef } from '/@/utils/is'; |
| | | import { isNullOrUnDef, isTimeViaRegExp8601 } from '/@/utils/is'; |
| | | import { useMessage } from '/@/hooks/web/useMessage'; |
| | | import { useI18n } from '/@/hooks/web/useI18n'; |
| | | import { isFunction } from 'xe-utils'; |
| | | import { useUserStore } from '/@/store/modules/user'; |
| | | import { dateUtil } from '/@/utils/dateUtil'; |
| | | |
| | | const emit = defineEmits(['success', 'register']); |
| | | const { t } = useI18n(); |
| | |
| | | const formSchema = ref([]); |
| | | const crudColSlots = ref<any>([]); |
| | | const isExistSql = ref(''); |
| | | const [registerItemAdd, { openModal: openItemModal }] = useModal(); |
| | | const useModaldata = ref({}); |
| | | const showModal = ref(false); |
| | | const [registerForm, { resetFields, setFieldsValue, getFieldsValue, validate }] = useForm({ |
| | | labelWidth: 140, |
| | | schemas: formSchema as unknown as FormSchema[], |
| | |
| | | }); |
| | | |
| | | const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { |
| | | showModal.value = false; |
| | | /* 动态import实体名.ts的自定义方法 */ |
| | | let m = {} as any; |
| | | try { |
| | | m = await import(`./entityts/${data?.name}.ts`); |
| | | m = await import(`./entityts/${data?.keyName}.ts`); |
| | | } catch (e) {} |
| | | isUpdate.value = !!data?.isUpdate; |
| | | ifSave.value = !!data?.ifSave; |
| | |
| | | : data?.formJson; |
| | | crudColSlots.value = data?.crudColSlots; |
| | | isExistSql.value = data?.isExistSql; |
| | | /* 如果插槽列表不为空,则初始化模态窗口 */ |
| | | if (!isNullOrUnDef(crudColSlots.value) && crudColSlots.value.length > 0) { |
| | | await nextTick(); |
| | | crudColSlots.value.forEach((d) => { |
| | | useModaldata.value[d] = useModal(); |
| | | }); |
| | | showModal.value = true; |
| | | } |
| | | resetFields(); |
| | | setDrawerProps({ confirmLoading: false }); |
| | | |
| | | if (unref(isUpdate)) { |
| | | /* 循环字段名,判断如果是时间的就转换成dayjs格式,否则时间选择器会出错 */ |
| | | const Keys = Object.getOwnPropertyNames(data.record); |
| | | for (const k in Keys) { |
| | | if (!isNullOrUnDef(data.record[Keys[k]]) && isTimeViaRegExp8601(data.record[Keys[k]])) { |
| | | data.record[Keys[k]] = dateUtil(data.record[Keys[k]]); //转换成dayjs格式 |
| | | } |
| | | } |
| | | setFieldsValue({ |
| | | ...data.record, |
| | | }); |
| | |
| | | values = formatValues(values); |
| | | setDrawerProps({ confirmLoading: true }); |
| | | // TODO custom api |
| | | if (!unref(ifSave)) { |
| | | if (unref(ifSave)) { |
| | | values.AUTH_ORG = useUserStore().getUserInfo.orgCode; |
| | | //保存 |
| | | SaveEntity( |
| | | values, |
| | |
| | | ).then((action) => { |
| | | if (action.IsSuccessed) { |
| | | closeDrawer(); |
| | | emit('success'); |
| | | emit('success', values, { isUpdate: isUpdate.value }); |
| | | } else { |
| | | createErrorModal({ title: t('sys.api.errorTip'), content: action.Message }); |
| | | } |
| | |
| | | import(`./entityts/${getFieldsValue()[`${item.replace(/add/, '')}PSelect_0`]}.ts`) |
| | | .then((m) => { |
| | | const [{ OpenSelectItem }] = m.default(); |
| | | OpenSelectItem(openItemModal); |
| | | OpenSelectItem(useModaldata.value[item][1].openModal); |
| | | }) |
| | | .catch(() => { |
| | | openItemModal(true, { |
| | | .catch((err) => { |
| | | useModaldata.value[item][1].openModal(true, { |
| | | title: '物料列表', |
| | | schemas: [ |
| | | { |