/*
|
* __----~~~~~~~~~~~------___
|
* . . ~~//====...... __--~ ~~
|
* -. \_|// |||\\ ~~~~~~::::... /~
|
* ___-==_ _-~o~ \/ ||| \\ _/~~-
|
* __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~
|
* _-~~ .=~ | \\-_ '-~7 /- / || \ /
|
* .~ .~ | \\ -_ / /- / || \ /
|
* / ____ / | \\ ~-_/ /|- _/ .|| \ /
|
* |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\
|
* ' ~-| /| |-~\~~ __--~~
|
* |-~~-_/ | | ~\_ _-~ /\
|
* / \ \__ \/~ \__
|
* _--~ _/ | .-~~____--~-/ ~~==.
|
* ((->/~ '.|||' -_| ~~-/ , . _||
|
* -_ ~\ ~~---l__i__i__i--~~_/
|
* _-~-__ ~) \--______________--~~
|
* //.-~~~-~_--~- |-------~~~~~~~~
|
* //.-~~~--\
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
*
|
* 神兽保佑 永无BUG
|
*/
|
|
|
/*
|
* @Description: 通用低代码呈现页面主数据
|
* @Author: Ben Lin
|
* @version:
|
* @Date: 2024-06-02 17:52:35
|
* @LastEditors: Ben Lin
|
* @LastEditTime: 2024-06-14 09:08:11
|
*/
|
|
import {
|
dftGrpOpenSelectItem,
|
dftGrpGetSelectSuccess,
|
dftGrpactionColumn,
|
baseSchema,
|
DftGrpEdit,
|
searchSchema,
|
defectBaseColumn,
|
crudSchema,
|
DftGrpDel,
|
dftEditeOperation,
|
} from './normal/basDefectGrp';
|
import { onChangeFns, rsnGrpEdit, rsGrpGetSelectSuccess, rsGrpOpenSelectItem, rsnBaseSchema, rsnCrudSchema, rsnSearchSchema, rsnBaseColumn, rsnGrpDel, rsnEditeOperation } from './normal/basReasonGrp';
|
import { DeleteEntity } from '/@/api/tigerapi/system';
|
import { ActionItem, BasicColumn, FormSchema } from '/@/components/Table';
|
import { useI18n } from '/@/hooks/web/useI18n';
|
import { isNullOrEmpty } from '/@/utils/is';
|
import { woCustFn, woformSchema } from '/@/views/components/bizMesWo';
|
import { useModal } from '/@/components/Modal';
|
import { goDetail, labelActionItem, labelGetSelectSuccess, labelOpenSelectItem } from './detail/basLabelVar';
|
import { buildUUID } from '/@/utils/uuid';
|
import { Tag } from 'ant-design-vue';
|
import { Ref, h } from 'vue';
|
import { pkgBaseColumn, pkgBaseSchema, pkgCrudSchema, pkgEditeOperation, pkgGrpEdit, pkgSearchSchema } from './basPkgrule';
|
|
const { t } = useI18n();
|
|
/**
|
* @description: 低代码页面获取操作字段结构Json,如增加按钮及方法
|
* 攻略:
|
* 1. 另新建驼峰实体名.ts的文件,如:basDefectGrp.ts。以便区别不同页面的方法
|
* 2. 替换主页面编辑按钮方法变为跳转到高级页面,方法中传入 { CODE: 主表记录的关键字段值,一般是XXX_CODE的值, ID: 当前记录的ID, Name: 'BAS_DEFECT'(跳转过去需要新增编辑的实体名), Title: `编辑不良代码组:${params['record']['DFTG_CODE']}`(定义tab页签的标题), pCode: 'DFTG_CODE'(主表的关键字段代码) }
|
* 替换主页面新增按钮方法同上
|
* 3. 在菜单管理新建一个高级页面。
|
* 4. 配置高级页面,定义表单列 getFormSchema
|
* 5. 初始化表格 GetBasicColumnAndInit
|
* 6. 设置返回 getHomeUrl
|
* 7. 设置标题 getTitle
|
* 8. 设置新增时就默认的值 getOthersValues
|
* 9. 替换删除方法 GetActionsData
|
* @param {*} params
|
* @param {array} args
|
* @return {*}
|
*/
|
export function GetActionsData(params: {}, ...args: Fn[]) {
|
let data = [
|
{
|
icon: 'clarity:note-edit-line',
|
onClick: editRecord.bind(null, args[0], params),
|
},
|
{
|
icon: 'ant-design:delete-outlined',
|
color: 'error',
|
popConfirm: {
|
title: '是否确认删除?',
|
placement: 'left',
|
confirm: deleteRecord.bind(null, args[1], params),
|
},
|
},
|
] as ActionItem[];
|
switch (params['entityName']) {
|
/* 不良代码组 */
|
case 'BAS_DEFECT_GRP':
|
data[0].onClick = DftGrpEdit.bind(null, args, params); //替换主页面编辑按钮方法变为跳转到高级页面
|
break;
|
/* 不良代原因组 */
|
case 'BAS_REASON_GRP':
|
data[0].onClick = rsnGrpEdit.bind(null, args, params); //替换主页面编辑按钮方法变为跳转到高级页面
|
break;
|
case 'BAS_DEFECT':
|
data[1].popConfirm.confirm = DftGrpDel.bind(null, args, params);
|
break;
|
case 'BAS_REASON':
|
data[1].popConfirm.confirm = rsnGrpDel.bind(null, args, params);
|
break;
|
/* 包装规则 */
|
case 'BAS_PKG_RULE':
|
data[0].onClick = pkgGrpEdit.bind(null, args, params); //替换主页面编辑按钮方法变为跳转到高级页面
|
break;
|
case 'BAS_PKG_DTL':
|
data[1].popConfirm.confirm = custDel.bind(null, args, params);
|
break;
|
/* 标签模板 */
|
case 'BAS_LABEL_TEMP':
|
const _data = labelActionItem;
|
_data[0].onClick = goDetail.bind(null, args[5], params['record'])
|
data = [...data, ..._data];
|
break;
|
}
|
return data;
|
}
|
|
|
/**
|
* @description: 自定义删除方法
|
* @param {Fn} args
|
* @param {*} params
|
* @return {*}
|
*/
|
export function custDel(args: Fn[], params: {}) {
|
if (!isNullOrEmpty(params['data'])) {
|
var _data = params['data'].value.filter((item) => item['ID'] != params['record']['ID']);
|
params['data'].value = _data;
|
args[6]({
|
dataSource: [],
|
});
|
args[6]({
|
dataSource: params['data'],
|
});
|
args[1]();
|
} else {
|
DeleteEntity(params['record'], params['entityName']).then((action) => {
|
if (action.IsSuccessed) {
|
args[1]();
|
}
|
});
|
}
|
}
|
|
/**
|
* @description: 明细表中编辑方法
|
* @return {*}
|
*/
|
export function EditOperation(type: string, data: Ref<any[]>, d, u) {
|
switch (type) {
|
case 'BAS_PKG_DTL':
|
return pkgEditeOperation(data, d, u);
|
break;
|
case 'BAS_REASON':
|
return rsnEditeOperation(data, d, u);
|
case 'BAS_DEFECT':
|
return dftEditeOperation(data, d, u);
|
}
|
}
|
|
/**
|
* @description: 获取新增按钮的行为
|
* @param {string} type
|
* @return {*}
|
*/
|
export function getCreateAction(type: string) {
|
let data = { action: 'drawer', url: '', params: {} }; //drawer(打开左侧抽屉框) | go(跳转到新的页面)
|
switch (type) {
|
case 'BAS_DEFECT_GRP':
|
data.action = 'go';
|
data.url = 'BAS_DEFECT/High';
|
data.params = { CODE: '0', ID: buildUUID(), Name: 'BAS_DEFECT', Title: '新增不良代码组', pCode: 'DFTG_CODE', IsID: false };
|
break;
|
case 'BAS_REASON_GRP':
|
data.action = 'go';
|
data.url = 'BAS_REASON/High';
|
data.params = { CODE: '0', ID: buildUUID(), Name: 'BAS_REASON', Title: '新增不良原因组', pCode: 'RSNG_CODE', IsID: false };
|
break;
|
case 'BAS_PKG_RULE':
|
data.action = 'go';
|
data.url = 'BAS_PKG_DTL/High';
|
data.params = { CODE: '0', ID: buildUUID(), Name: 'BAS_PKG_DTL', Title: '新增包装规则', pCode: 'PKG_RULE_ID', IsID: true };
|
break;
|
}
|
return data;
|
}
|
|
export function GetUseModalData(type: string) {
|
let data = {};
|
switch (type) {
|
case 'BAS_DEFECT_GRP':
|
data = {
|
add: useModal(),
|
set: useModal(),
|
addRot: useModal(),
|
setRot: useModal(),
|
};
|
break;
|
}
|
return data;
|
}
|
|
/**
|
* @description: 公用编辑方法
|
* @param {Fn} fn
|
* @param {*} params
|
* @return {*}
|
*/
|
function editRecord(fn: Fn, params: {}) {
|
fn(true, params);
|
}
|
|
/**
|
* @description: 公用删除方法
|
* @param {Fn} fn
|
* @param {*} params
|
* @return {*}
|
*/
|
function deleteRecord(fn: Fn, params: {}) {
|
console.log(params['record']);
|
//删除
|
DeleteEntity(params['record'], params['entityName']).then((action) => {
|
if (action.IsSuccessed) {
|
fn();
|
}
|
});
|
}
|
|
/**
|
* @description: 获取操作列样式方法
|
* @param {string} entityName
|
* @return {*}
|
*/
|
export function GetActionColumn(entityName: string) {
|
let data: BasicColumn = {};
|
switch (entityName) {
|
case 'BAS_DEFECT_GRP':
|
data = dftGrpactionColumn;
|
break;
|
case 'BAS_LABEL_TEMP':
|
data = {
|
width: 120,
|
title: '操作',
|
dataIndex: 'action',
|
slots: { customRender: 'action' },
|
fixed: 'right',
|
};
|
break;
|
default:
|
data = {
|
width: 80,
|
title: '操作',
|
dataIndex: 'action',
|
slots: { customRender: 'action' },
|
fixed: undefined,
|
};
|
break;
|
}
|
return data;
|
}
|
|
/**
|
* @description: 打开弹出选择框选择成功后返回方法
|
* @param {*} d
|
* @param {*} u
|
* @param {string} entityName
|
* @return {*}
|
*/
|
export function GetSelectSuccess(d, u, entityName: string) {
|
let data = {};
|
switch (entityName) {
|
case 'BAS_DEFECT_GRP':
|
data = dftGrpGetSelectSuccess(d, u);
|
break;
|
case 'BAS_REASON_GRP':
|
data = rsGrpGetSelectSuccess(d, u);
|
break;
|
case 'BAS_LABEL_PV':
|
data = labelGetSelectSuccess(d, u);
|
break;
|
default:
|
data = {
|
ITEM_CODE: d.values['val'],
|
};
|
break;
|
}
|
return data;
|
}
|
|
/**
|
* @description: 打开弹出选择框
|
* @param {Fn} openItemModal
|
* @param {string} entityName
|
* @return {*}
|
*/
|
export function OpenSelectItem(openItemModal: Fn, entityName: string) {
|
switch (entityName) {
|
case 'BAS_DEFECT_GRP':
|
dftGrpOpenSelectItem(openItemModal);
|
break;
|
case 'BAS_REASON_GRP':
|
rsGrpOpenSelectItem(openItemModal);
|
break;
|
case 'BAS_LABEL_PV':
|
labelOpenSelectItem(openItemModal);
|
break;
|
default:
|
openItemModal(true, {
|
title: '物料列表',
|
schemas: [
|
{
|
field: 'ITEM_CODE',
|
component: 'Input',
|
label: '物料编码',
|
colProps: {
|
span: 12,
|
},
|
},
|
],
|
ItemColumns: [
|
{
|
title: t('物料编码'),
|
dataIndex: 'ITEM_CODE',
|
resizable: true,
|
sorter: true,
|
width: 200,
|
},
|
{
|
title: t('物料名称'),
|
dataIndex: 'ITEM_NAME',
|
resizable: true,
|
sorter: true,
|
width: 180,
|
},
|
],
|
tableName: 'BAS_ITEM',
|
rowKey: 'ITEM_CODE',
|
searchInfo: {TABLE_NAME: 'BAS_ITEM'}
|
});
|
break;
|
}
|
}
|
|
/**
|
* @description: Select 自定义onChange方法
|
* @param {any} e
|
* @param {string} fnName
|
* @param {string} entityName
|
* @return {*}
|
*/
|
export function custOnChange(e: any, fnName: string, entityName: string) {
|
if (!isNullOrEmpty(fnName)) {
|
switch (entityName) {
|
case 'BAS_REASON':
|
onChangeFns[fnName](e);
|
break;
|
default:
|
break;
|
(e) => { };
|
}
|
} else {
|
(e) => { };
|
}
|
}
|
|
/**
|
* @description: 打开自定义弹出框方法
|
* @return {*}
|
*/
|
export function OpenCustModal(
|
openItemModal: Fn,
|
entityName: string,
|
slotName: string,
|
others: Fn[],
|
...args
|
) {
|
switch (entityName) {
|
case 'BIZ_MES_WO':
|
case 'BIZ_MES_WO_Config': //根据带入的名称打开不同的实体列表
|
woCustFn(openItemModal, slotName, others, args);
|
break;
|
default: //默认打开物料列表
|
openItemModal(true, {
|
title: '物料列表',
|
schemas: [
|
{
|
field: 'ITEM_CODE',
|
component: 'Input',
|
label: '物料编码',
|
colProps: {
|
span: 12,
|
},
|
},
|
],
|
ItemColumns: [
|
{
|
title: t('物料编码'),
|
dataIndex: 'ITEM_CODE',
|
resizable: true,
|
sorter: true,
|
width: 200,
|
},
|
{
|
title: t('物料名称'),
|
dataIndex: 'ITEM_NAME',
|
resizable: true,
|
sorter: true,
|
width: 180,
|
},
|
],
|
tableName: 'BAS_ITEM',
|
rowKey: 'ITEM_CODE',
|
searchInfo: {TABLE_NAME: 'BAS_ITEM'}
|
});
|
break;
|
}
|
}
|
|
/**
|
* @description: 获取自定义弹出框中表单的结构
|
* @param {string} type
|
* @return {*}
|
*/
|
export function getFormSchema(type: string) {
|
let _formSchema = [] as FormSchema[];
|
switch (type) {
|
case 'BIZ_MES_WO':
|
_formSchema = woformSchema;
|
break;
|
case 'BAS_DEFECT_BaseForm':
|
_formSchema = baseSchema;
|
break;
|
case 'BAS_DEFECT_Search':
|
_formSchema = searchSchema;
|
break;
|
case 'BAS_DEFECT_Crud':
|
_formSchema = crudSchema;
|
break;
|
case 'BAS_REASON_BaseForm':
|
_formSchema = rsnBaseSchema;
|
break;
|
case 'BAS_REASON_Search':
|
_formSchema = rsnSearchSchema;
|
break;
|
case 'BAS_REASON_Crud':
|
_formSchema = rsnCrudSchema;
|
break;
|
case 'BAS_PKG_DTL_BaseForm':
|
_formSchema = pkgBaseSchema;
|
break;
|
case 'BAS_PKG_DTL_Search':
|
_formSchema = pkgSearchSchema;
|
break;
|
case 'BAS_PKG_DTL_Crud':
|
_formSchema = pkgCrudSchema;
|
break;
|
default:
|
break;
|
}
|
return _formSchema;
|
}
|
|
/**
|
* @description: 获取表格列
|
* @param {string} entityName
|
* @return {*}
|
*/
|
export function GetBasicColumnAndInit(entityName: string, ...args) {
|
let data: BasicColumn[] = [];
|
switch (entityName) {
|
case 'BAS_DEFECT':
|
data = defectBaseColumn;
|
args[0].value[entityName] = getFormSchema(entityName);
|
args[0].value['BaseForm'] = getFormSchema('BAS_DEFECT_BaseForm');
|
args[1].value = {
|
BaseForm: args[4]({
|
labelWidth: 120,
|
schemas: args[0].value['BaseForm'],
|
actionColOptions: {
|
span: 24,
|
},
|
showActionButtonGroup: false,
|
}),
|
};
|
args[2].value = [
|
{ name: 'BaseForm', slots: [], preIcons: {}, title: '不良代码组信息', entityName: 'BAS_DEFECT_GRP' },
|
// {
|
// name: 'prodinfo',
|
// slots: ['addRot', 'setRot'],
|
// preIcons: { addRot: 'search|svg', setRot: 'config|svg' },
|
// title: '产品信息',
|
// },
|
// { name: 'rotinfo', slots: ['add'], preIcons: { add: 'search|svg' }, title: '工艺信息' },
|
];
|
break;
|
case 'BAS_REASON':
|
data = rsnBaseColumn;
|
args[0].value['BaseForm'] = getFormSchema('BAS_REASON_BaseForm');
|
args[1].value = {
|
BaseForm: args[4]({
|
labelWidth: 120,
|
schemas: args[0].value['BaseForm'],
|
actionColOptions: {
|
span: 24,
|
},
|
showActionButtonGroup: false,
|
}),
|
};
|
args[2].value = [
|
{ name: 'BaseForm', slots: [], preIcons: {}, title: '不良原因组信息', entityName: 'BAS_REASON_GRP' },
|
];
|
break;
|
case 'BAS_PKG_DTL':
|
data = pkgBaseColumn;
|
args[0].value['BaseForm'] = getFormSchema('BAS_PKG_DTL_BaseForm');
|
args[1].value = {
|
BaseForm: args[4]({
|
labelWidth: 120,
|
schemas: args[0].value['BaseForm'],
|
actionColOptions: {
|
span: 24,
|
},
|
showActionButtonGroup: false,
|
}),
|
};
|
args[2].value = [
|
{ name: 'BaseForm', slots: [], preIcons: {}, title: '包装信息', entityName: 'BAS_PKG_RULE' },
|
];
|
break;
|
default:
|
break;
|
}
|
return data;
|
}
|
|
/**
|
* @description: 获取goback的url
|
* @param {string} type
|
* @return {*}
|
*/
|
export function getHomeUrl(type: string) {
|
let url = '';
|
switch (type) {
|
case 'BAS_DEFECT':
|
const param = { ID: 'BAS_DEFECT_GRP', colSlots: [], crudColSlots: [] };
|
url = `/BAS_DEFECT_GRP/LC/${encodeURI(JSON.stringify(param))}`;
|
break;
|
case 'BAS_REASON':
|
url = `/BAS_REASON_GRP/LC/${encodeURI(JSON.stringify({ ID: 'BAS_REASON_GRP', colSlots: [], crudColSlots: [] }))}`;
|
break;
|
case 'BAS_PKG_DTL':
|
url = `/BAS_PKG_RULE/LC/${encodeURI(JSON.stringify({ ID: 'BAS_PKG_RULE', colSlots: [], crudColSlots: [] }))}`;
|
break;
|
case 'BAS_LABEL_VAR':
|
url = `/BAS_LABEL_TEMP/LC/${encodeURI(JSON.stringify({ ID: 'BAS_LABEL_TEMP', colSlots: [], crudColSlots: [] }))}`;
|
break;
|
default:
|
break;
|
}
|
return url;
|
}
|
|
/**
|
* @description: 获取标题信息
|
* @param {string} type
|
* @return {*}
|
*/
|
export function getTitle(type: string) {
|
let title = {};
|
switch (type) {
|
case 'BAS_DEFECT':
|
title = { pageTitle: '不良代码组管理', pageContent: '这里可以添加和修改不良代码组和不良代码。', baseTableTitle: '不良代码管理' };
|
break;
|
case 'BAS_REASON':
|
title = { pageTitle: '不良原因组管理', pageContent: '这里可以添加和修改不良原因组和不良代码。', baseTableTitle: '不良原因管理' };
|
break;
|
case 'BAS_PKG_DTL':
|
title = { pageTitle: '包装规则管理', pageContent: '这里可以添加和修改包装规则和包装信息。', baseTableTitle: '包装信息管理' };
|
break;
|
default:
|
break;
|
}
|
return title;
|
}
|
|
/**
|
* @description: 获取需要新增时就默认的值,一般是主表信息
|
* @param {string} type
|
* @param {string} val
|
* @return {*}
|
*/
|
export function getOthersValues(type: string, val: string, id: string) {
|
let Values = {};
|
switch (type) {
|
case 'BAS_DEFECT':
|
Values = { DFTG_CODE: val };
|
break;
|
case 'BAS_REASON':
|
Values = { RSNG_CODE: val };
|
break;
|
case 'BAS_PKG_DTL':
|
Values = { PKG_RULE_ID: id };
|
break;
|
default:
|
break;
|
}
|
return Values;
|
}
|