<template>
<div class="jeecg-flow-demo">
<BasicForm @register="registerForm"></BasicForm>
<a-tabs v-model:activeKey="activeKey" @change="handleChangeTabs">
<a-tab-pane tab="客户信息" key="jeecgOrderCustomerForm" :forceRender="true">
<JeecgOrderCustomerForm ref="jeecgOrderCustomerFormRef" :formData="formData"></JeecgOrderCustomerForm>
</a-tab-pane>
<a-tab-pane tab="机票信息" key="jeecgOrderTicket" :forceRender="true">
<JVxeTable v-if="ok" ref="jeecgOrderTicketRef" stripe rowSelection keepSource :maxHeight="300" :loading="table2.loading" :columns="table2.columns" :dataSource="table2.dataSource"> </JVxeTable>
</a-tab-pane>
</a-tabs>
</div>
</template>
<script>
import { BasicForm, useForm } from '/@/components/Form/index';
import { computed, defineComponent, ref, reactive } from 'vue';
import { defHttp } from '/@/utils/http/axios';
import { propTypes } from '/@/utils/propTypes';
import { getBpmFormSchema, jeecgOrderTicketColumns } from '../data';
import JeecgOrderCustomerForm from './JeecgOrderCustomerForm.vue';
export default defineComponent({
name: 'JeecgOrderMainForm',
components: {
BasicForm,
JeecgOrderCustomerForm,
},
props: {
formData: propTypes.object.def({}),
formBpm: propTypes.bool.def(true),
},
setup(props) {
const [registerForm, { setFieldsValue, setProps, getFieldsValue, updateSchema }] = useForm({
labelWidth: 150,
schemas: getBpmFormSchema(props.formData),
showActionButtonGroup: false,
baseColProps: { span: 8 },
});
const formDisabled = computed(() => {
if (props.formData.disabled === false) {
return false;
}
return true;
});
const jeecgOrderCustomerFormRef = ref();
const jeecgOrderTicketRef = ref();
const ok = ref(false);
let formData = {};
const queryByIdUrl = '/test/jeecgOrderMain/queryById';
async function initFormData() {
console.log('props.formData', props.formData);
let params = { id: props.formData.dataId };
const data = await defHttp.get({ url: queryByIdUrl, params });
console.log('data', data);
formData = { ...data };
//设置表单的值
await setFieldsValue(formData);
await setProps({ disabled: formDisabled.value });
await jeecgOrderCustomerFormRef.value.initFormData(props.formData.dataId);
await loadOrderTicketData(props.formData.dataId);
ok.value = true;
}
async function submitForm() {
let data = getFieldsValue();
let params = Object.assign({}, formData, data);
console.log('表单数据', params);
await saveOrUpdate(params, true);
}
initFormData();
const activeKey = ref('jeecgOrderCustomerForm');
function handleChangeTabs() {}
// 机票信息
const table2 = reactive({
loading: false,
dataSource: [],
columns: filterSubTableColnmns(jeecgOrderTicketColumns, 'order:'),
});
async function loadOrderTicketData(mainId) {
const queryByIdUrl = '/test/jeecgOrderMain/queryOrderTicketListByMainId';
let params = { id: mainId };
table2.dataSource = [];
const data = await defHttp.get({ url: queryByIdUrl, params });
if (data && data.length > 0) {
table2.dataSource = [...data];
}
}
//新增权限处理方法
function filterSubTableColnmns(columns, pre) {
let authList = props.formData.permissionList;
//注意:如果子表配置显示反向 这里不处理其逻辑 即隐藏无法在流程表单中实现,请使用全局表单权限实现
let temp = columns.filter((item) => {
let oneAuth = authList.find((auth) => {
return auth.action === pre + item.key;
});
if (!oneAuth) {
return true;
}
//代码严谨处理,防止一个授权标识,配置多次
if (oneAuth instanceof Array) {
oneAuth = oneAuth[0];
}
//禁用逻辑
if (oneAuth.type == '2' && !oneAuth.isAuth) {
item['disabled'] = true;
return true;
}
//隐藏逻辑逻辑
if (oneAuth.type == '1' && !oneAuth.isAuth) {
return false;
}
return true;
});
return temp;
}
return {
registerForm,
formDisabled,
submitForm,
jeecgOrderCustomerFormRef,
activeKey,
handleChangeTabs,
table2,
jeecgOrderTicketRef,
ok,
};
},
});
</script>
<style lang="less">
/*.jeecg-flow-demo{
.vxe-header--row{
.vxe-header--column .vxe-cell{
width: 180px !important;
}
.vxe-header--column:first-child .vxe-cell{
width: 40px !important;
}
}
}*/
</style>