Files
school-developer/src/flow/index.ts
吴红兵 1f645dad3e init
2025-12-02 10:37:49 +08:00

200 lines
6.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import {validateNull} from "/@/utils/validate";
import {ElNotification} from 'element-plus'
import printJS from 'print-js'
import {DIC_PROP} from "/@/flow/support/dict-prop";
import {Local} from "/@/utils/storage";
import FcDesigner from 'form-create-designer';
import {validateFormTypeSave} from "/@/api/order/order-key-vue";
// 判断是否为实例
export const validateRunFlow = (props) => {
if (props.currFlowForm) return props.currFlowForm.flowInstId
else {
if (props.flowData.attrs.orderId) return props.flowData.attrs.id
}
return null
}
// 判断是否为实例
export const validateRunFlowId = (props, form) => {
if (!props.currFlowForm) return form
let flowInstId = validateRunFlow(props);
let id = props.currFlowForm.id;
if (flowInstId) {
let tableName = props.currFlowForm.tableName;
// 判断是否为低代码
form.formId = tableName ? props.currFlowForm.formId: id
form.flowInstId = props.currFlowForm.flowInstId
} else {
form.formId = id
}
return form
}
// 初始化流程表单参数
export const initDefFlowFromAttrs = (props, form) => {
if (!props.currFlowForm) return
// 流程比表单先保存
validateFormTypeSave(props.currFlowForm)
validateRunFlowId(props, form)
// 表单权限主表单首次未入库
form.formName = props.currFlowForm.formName
form.formType = props.currFlowForm.type
form.formPath = props.currFlowForm.path
// 判断是否为低代码
let tableName = props.currFlowForm.tableName;
form.fromType = tableName ? '0' : '1'
}
// 初始化表单必要参数
export const initFromSomeAttrs = (props, form) => {
if (!props.currFlowForm) return
// 字段定义比表单先保存在initDefFlowFromAttrs之后
validateRunFlowId(props, form) // 可能会升版本
form.formName = props.currFlowForm.formName
form.formType = props.currFlowForm.type
form.path = props.currFlowForm.path
}
export function getLabelByLanguage(item) {
let language = Local.get('themeConfig').globalI18n;
return language === 'en' && item.labelEn ? item.labelEn : item.label
}
export function getJobBtnName(jobBtn) {
let item = DIC_PROP.JOB_BTNS.find((f) => f.value === jobBtn);
return getLabelByLanguage(item)
}
export function handleChangeJobType(dicData, item) {
let exist
if (item.jobType === DIC_PROP.JOB_USER_TYPE[0].value) {
exist = !dicData.users ? null : dicData.users.find(f => f.userId === item.roleId);
} else if (item.jobType === DIC_PROP.JOB_USER_TYPE[1].value) {
exist = !dicData.roles ? null : dicData.roles.find(f => f.roleId === item.roleId);
} else if (item.jobType === DIC_PROP.JOB_USER_TYPE[2].value) {
exist = !dicData.posts ? null : dicData.posts.find(f => f.postId === item.roleId);
} else if (item.jobType === DIC_PROP.JOB_USER_TYPE[3].value) {
exist = !dicData.depts ? null : dicData.depts.find(f => f.deptId === item.roleId);
}
// 当不存在情况已选值
if (!exist) item.roleId = null
}
export function handleShowRoleNameByJobType(role, isJobType){
let name = '';
if (isJobType === '0') {
name = role.roleName ? role.roleName.substring(0, role.roleName.indexOf('(')) : ''
} else {
name = role.roleName ? role.roleName + (isJobType ? '(' + getLabelByLanguage(DIC_PROP.JOB_USER_TYPE[1]) + ')' : '') : ''
}
return name
}
export function handleShowNameByJobType(role, isJobType){
let name = '';
if (role.jobType === DIC_PROP.JOB_USER_TYPE[0].value) {
if (isJobType === '0') {
name = role.name ? role.name.substring(0, role.name.indexOf('(')) : ''
} else {
name = role.name ? role.name + (isJobType ? '(' + getLabelByLanguage(DIC_PROP.JOB_USER_TYPE[0]) + ')' : '') : ''
}
} else if (role.jobType === DIC_PROP.JOB_USER_TYPE[1].value) {
name = handleShowRoleNameByJobType(role, isJobType)
} else if (role.jobType === DIC_PROP.JOB_USER_TYPE[2].value) {
if (isJobType === '0') {
name = role.postName ? role.postName.substring(0, role.postName.indexOf('(')) : ''
} else {
name = role.postName ? role.postName + (isJobType ? '(' + getLabelByLanguage(DIC_PROP.JOB_USER_TYPE[2]) + ')' : '') : ''
}
} else if (role.jobType === DIC_PROP.JOB_USER_TYPE[3].value) {
if (isJobType === '0') {
name = role.name ? role.name.substring(0, role.name.indexOf('(')) : ''
} else {
name = role.name ? role.name + (isJobType ? '(' + getLabelByLanguage(DIC_PROP.JOB_USER_TYPE[3]) + ')' : '') : ''
}
}
return name
}
/**
* 请求参数去重,并去掉$与空值
*/
export function paramsFilter(params) {
if (validateNull(params)) return null
let res = {}
let map = new Map(Object.entries(params))
map.forEach((value, key) => {
if (key.includes("$") || validateNull(value)) return
res[key] = value
})
return res
}
export function notifyLeft(msg, type = 'success', time = 2000) {
ElNotification({
title: '提示',
message: msg,
// @ts-ignore
type: type,
// @ts-ignore
position: 'top-left',
duration: time
})
}
export function parseRemoveNullKey(jsonStr) {
const obj = JSON.parse(jsonStr);
return JSON.stringify(obj, (key, value) => {
if (validateNull(value)) {
return undefined; // 返回undefined跳过属性
}
return value;
});
}
export function stringifyRemoveNullKey(object) {
return JSON.stringify(object, (key, value) => {
if (validateNull(value)) {
return undefined; // 返回undefined跳过属性
}
return value;
})
}
export function stringifyWithFunctions(object) {
return FcDesigner.formCreate.toJson(object)
}
export const parseWithFunctions = (obj, func?) => {
if (!func) {
return parseWithString(obj)
}
if (typeof obj === "string") {
return FcDesigner.formCreate.parseJson(obj)
}
return obj;
}
export const parseWithString = (obj) => {
if (typeof obj === "string") {
return JSON.parse(obj);
} else {
return obj;
}
}
export const printHtml = (id, header, data) => {
setTimeout(() => {
printJS({
type: 'html',
printable: id,
header: header,
targetStyles: ["*"],
scanStyles: true,
maxWidth: 1100,
})
if (data) data.width = "-"
}, 100)
}