200 lines
6.0 KiB
TypeScript
200 lines
6.0 KiB
TypeScript
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)
|
||
}
|