Files
school-developer/src/api/order/order-key-vue.ts
吴红兵 94c3473958 fix
2026-03-07 01:34:48 +08:00

135 lines
4.0 KiB
TypeScript

/**
* 用于获取表单组件路径
* @author luolin
*/
import { validateNull } from '/@/utils/validate';
import { DIC_PROP } from '/@/flow/support/dict-prop';
import { PROP_CONST } from '/@/flow/support/prop-const';
import { deepClone } from '/@/utils/other';
// 定制化工单Key
export const orderKeyMap = {
HandoverFlow: 'HandoverFlow',
AskLeave: 'AskLeave',
};
// 跳转页面路径
export const locationHash = {
TodoJobHash: '#/jsonflow/run-job/do-job',
RunApplicationHash: '#/order/run-application/index',
SignJobHash: '#/jsonflow/run-job/sign-job',
HiJobHash: '#/jsonflow/run-job/hi-job',
};
// Vue页面路径
export const vueKey = {
HandoverNodeRecordFlow: '/order/handover-node-record/flow',
RunApplicationForm: '/order/run-application/flow',
CommentFlow: '/jsonflow/comment/flow',
CommentFlowId: '1',
FlowDesignView: '/jsonflow/flow-design/view',
FlowDesignViewId: '2',
CommentTimeline: '/jsonflow/comment/timeline',
};
export const vueKeySys = {
sysPaths: [vueKey.CommentFlow, vueKey.CommentTimeline, vueKey.FlowDesignView],
sysPathIds: [vueKey.CommentFlowId, vueKey.FlowDesignViewId],
};
export function handleCustomForm(data, row) {
// TODO form为默认发起页面
let rowClone = deepClone(row);
rowClone.path = rowClone.path.replace('flow', 'form');
data.currFlowForm.currElTab = deepClone(rowClone);
}
/**
* 用于控制页面的显隐
* 显隐条件->工单path
*/
export function handleElTab(currJob) {
let order = currJob.order,
conditions: any = [];
// 业务任务页面无order信息
if (validateNull(order)) return conditions;
// 判断工作交接切换不同页面
if (currJob.flowKey === orderKeyMap.HandoverFlow) {
let handoverNode = order.type === '-1';
conditions.push({ isShow: handoverNode ? '1' : '0', path: vueKey.HandoverNodeRecordFlow });
}
return conditions;
}
export function compatibleAppHeight(isApp) {
if (!isApp) return;
// 兼容移动端 自适应页面高度
let app = document.getElementById('app');
if (app) app.style.overflow = 'auto';
}
export function validateFormTypeSave(form) {
// 设计表单默认表
let isDesign = form.type !== DIC_PROP.FORM_TYPE[1].value;
if (isDesign && !form.tableName) form.tableName = PROP_CONST.COMMON.tableName;
// 设计表单path
if (isDesign) {
form.path = vueKey.RunApplicationForm;
} else {
form.formInfo = null;
}
}
export function currElTabIsExist(currJob, elTabId) {
// 兼容移动端
let currElTab = currJob.elTabs.find((f) => f.id === elTabId);
// 查看则只读
if (currJob.hiJob) {
currElTab.isAutoAudit = '0';
currElTab.isFormEdit = '0';
}
return currElTab;
}
// 发起时只读或可编辑
export async function currFormIsView(_this, find, existRoleId, callback?, widgetList?) {
if (find.isFormEdit === '0' || !existRoleId) {
if (callback) await callback(_this);
if (_this && _this.disableForm) _this.disableForm(true);
if (_this && _this.disableSubmit) _this.disableSubmit();
return;
}
// 全部只读部分可编辑
if (find.defFormEdit === '0') {
if (_this && _this.disableForm) _this.disableForm(null, widgetList);
if (_this && _this.enableSubmit) _this.enableSubmit();
if (callback) await callback(_this);
} else {
if (callback) await callback(_this);
}
}
// 审批时只读或可编辑
export async function currElTabIsView(_this, currJob, elTabId, submitForm?, callback?, widgetList?) {
// 从elTabs中获取
let find = currElTabIsExist(currJob, elTabId);
if (find.isFormEdit !== '0' || find.isAutoAudit === '1') {
if (submitForm) currJob.resolveSaves?.push(submitForm);
}
await currFormIsView(_this, find, currJob.roleId, callback, widgetList);
// 重置保存按钮状态
currElTabIsSave(currJob, elTabId, false);
}
// 处理修改时保存状态
export function currElTabIsSave(currJob, elTabId, bool, emits?) {
// 从elTabs中获取
let find = currElTabIsExist(currJob, elTabId);
if (find.isFormEdit !== '0') find.isSave = bool;
// 提交时自动审批
if (emits && find.isAutoAudit === '1') {
emits('handleJob', DIC_PROP.JOB_BTNS[0].value);
}
}