6f2383a7e5
付款申请汇票筛选与提示去重、结算菜单拆分与金蝶同步弹框、应收应付详情高度、合同计费与半月结调整,以及导入运单批量删除校验。 Co-authored-by: Cursor <cursoragent@cursor.com>
40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
/** 结算菜单拆分后的展示名与权限前缀 */
|
||
|
||
export const SETTLEMENT_TYPE_PAYABLE = 'payable';
|
||
export const SETTLEMENT_TYPE_RECEIVABLE = 'receivable';
|
||
|
||
export function settlementBillLabel(settlementType) {
|
||
return settlementType === SETTLEMENT_TYPE_RECEIVABLE ? '收款结算单' : '付款结算单';
|
||
}
|
||
|
||
export function settlementPermissionPrefix(settlementType) {
|
||
return settlementType === SETTLEMENT_TYPE_RECEIVABLE
|
||
? 'receipt_settlement'
|
||
: 'payment_settlement';
|
||
}
|
||
|
||
export function settlementListPath(settlementType) {
|
||
return settlementType === SETTLEMENT_TYPE_RECEIVABLE
|
||
? '/settlement/receipt-settlement'
|
||
: '/settlement/payment-settlement';
|
||
}
|
||
|
||
/**
|
||
* 权限判断:优先新菜单码,兼容旧 formal_settlement_*。
|
||
* @param {Object} ctx 组件实例(需含 permission、isAdmin、validData)
|
||
* @param {string} settlementType payable|receivable
|
||
* @param {string} action add|edit|view...
|
||
*/
|
||
export function hasSettlementPermission(ctx, settlementType, action) {
|
||
if (ctx?.isAdmin) return true;
|
||
const prefix = settlementPermissionPrefix(settlementType);
|
||
const codes = [`${prefix}_${action}`, `formal_settlement_${action}`];
|
||
return codes.some(code => {
|
||
const value = ctx?.permission?.[code];
|
||
if (typeof ctx?.validData === 'function') {
|
||
return ctx.validData(value, false);
|
||
}
|
||
return value === true;
|
||
});
|
||
}
|