メインコンテンツまでスキップ

公式で休暇日数を制限する

このケースは三者開発者「jing」から来た

1. 使用シーン

多くのユーザーは勤務管理、特に休暇管理に協力して、従業員一人一人の年俸時間をチェックする必要があります。年俸は会社の規定の年俸時間を超えてはいけませんしかし、病欠や休暇、その他の休暇のカテゴリをお願いする場合は制限する必要はありません。

2.機能を実現する

2.1設定ページ

(1) 従業員休暇時間表

従業員の異なるタイプの休暇を記録するための休暇時間。

(2) 休暇申請

2.2ページ機能の設定

実際のニーズに基づいてコンポーネントidを変更することに注意してください。

(1) データ連動

残りの休暇日数を連動させるようにデータ連動を設定します。

(2)公式編集

公式編集を設定して、休暇期間を計算します。

{"text":"DAYS(DATE(​请假结束时间​),DATE(​请假开始时间​))","marks":[{"from":{"line":0,"ch":10,"sticky":null},"to":{"line":0,"ch":18,"sticky":null},"value":"dateField_ksudx6ym","invalid":false},{"from":{"line":0,"ch":25,"sticky":null},"to":{"line":0,"ch":33,"sticky":null},"value":"dateField_ksudx6yk","invalid":false}],"isCmData":true}

(3) 設定ページの送信前イベント

ページの送信前イベントを設定して、送信前に残りの休暇日数をリアルタイムで照会し、複数の送信によるデータエラーを回避します。

参考ドキュメント:条件に基づいてフォームインスタンスの詳細リストを検索します

インタフェース構成図:

次のイベントをバインドします

export function beforeSubmit({ formDataMap }) {
// 注意:目前不支持在这里修改提交数据
return new Promise(resolve => {
this.dataSourceMap.getData.load({
formUuid: 'FORM-8Y866XB1QYR69Z5I684BVBUI6MBZ2H0BC84CL7',
searchFieldJson: JSON.stringify({
employeeField_ksu8iqm5: [this.$('employeeField_ksudx6yc').getValue()[0].value],
dateField_lc48ia6n: [this.$('dateField_lc48iwz8').getValue() - 1, this.$('dateField_lc48iwz8').getValue() + 1],
radioField_lc73huhr: this.$('radioField_ksudx6yi').getValue()
})
}).then(res => {
const { totalCount, data } = res;
if (!totalCount) {
this.utils.toast({
title: '该类型假期定额不足',
type: 'error',
});
resolve(false);
} else {
const { formData } = data[0];
const days = this.$('numberField_ksudx6yo').getValue(); // 请假时长
if (days > formData.numberField_ksu8iqm9) {
this.utils.toast({
title: '该类型假期定额不足,请重新提交',
type: 'error',
});
resolve(false);
} else {
resolve(true);
};
};
}).catch(error => {
this.utils.toast({
title: error.message,
type: 'error',
});
resolve(false);
});
});
}

(4) プロセス構成業務関連ルール

従業員が休暇を開始したときに休暇の余剰額を控除し、承認が拒否されたり、発起人が取り消されたりすると、控除額を解放し、対応するタイプの休暇額が不足すると提出を遮断する。

{"text":"UPDATE(​员工假期时长表​,AND(EQ(​员工假期时长表.员工姓名​,​请假人​),EQ(​员工假期时长表.年份​,​年份​),EQ(​员工假期时长表.假期类型​,​请假类型​)),\"\",​员工假期时长表.假期时长​,​员工假期时长表.假期时长​-​请假时长​)","marks":[{"from":{"line":0,"ch":7,"sticky":null},"to":{"line":0,"ch":16,"sticky":null},"value":"FORM-8Y866XB1QYR69Z5I684BVBUI6MBZ2H0BC84CL7/","invalid":false},{"from":{"line":0,"ch":24,"sticky":null},"to":{"line":0,"ch":38,"sticky":null},"value":"FORM-8Y866XB1QYR69Z5I684BVBUI6MBZ2H0BC84CL7/employeeField_ksu8iqm5","invalid":false},{"from":{"line":0,"ch":39,"sticky":null},"to":{"line":0,"ch":44,"sticky":null},"value":"employeeField_ksudx6yc","invalid":false},{"from":{"line":0,"ch":49,"sticky":null},"to":{"line":0,"ch":61,"sticky":null},"value":"FORM-8Y866XB1QYR69Z5I684BVBUI6MBZ2H0BC84CL7/dateField_lc48ia6n","invalid":false},{"from":{"line":0,"ch":62,"sticky":null},"to":{"line":0,"ch":66,"sticky":null},"value":"dateField_lc48iwz8","invalid":false},{"from":{"line":0,"ch":71,"sticky":null},"to":{"line":0,"ch":85,"sticky":null},"value":"FORM-8Y866XB1QYR69Z5I684BVBUI6MBZ2H0BC84CL7/radioField_lc73huhr","invalid":false},{"from":{"line":0,"ch":86,"sticky":null},"to":{"line":0,"ch":92,"sticky":null},"value":"radioField_ksudx6yi","invalid":false},{"from":{"line":0,"ch":98,"sticky":null},"to":{"line":0,"ch":112,"sticky":null},"value":"FORM-8Y866XB1QYR69Z5I684BVBUI6MBZ2H0BC84CL7/numberField_ksu8iqm9","invalid":false},{"from":{"line":0,"ch":113,"sticky":null},"to":{"line":0,"ch":127,"sticky":null},"value":"FORM-8Y866XB1QYR69Z5I684BVBUI6MBZ2H0BC84CL7/numberField_ksu8iqm9","invalid":false},{"from":{"line":0,"ch":128,"sticky":null},"to":{"line":0,"ch":134,"sticky":null},"value":"numberField_ksudx6yo","invalid":false}],"isCmData":true}

{"text":"UPDATE(​员工假期时长表​,AND(EQ(​员工假期时长表.员工姓名​,​请假人​),EQ(​员工假期时长表.年份​,​年份​),EQ(​员工假期时长表.假期类型​,​请假类型​)),\"\",​员工假期时长表.假期时长​,​员工假期时长表.假期时长​+​请假时长​)","marks":[{"from":{"line":0,"ch":7,"sticky":null},"to":{"line":0,"ch":16,"sticky":null},"value":"FORM-8Y866XB1QYR69Z5I684BVBUI6MBZ2H0BC84CL7/","invalid":false},{"from":{"line":0,"ch":24,"sticky":null},"to":{"line":0,"ch":38,"sticky":null},"value":"FORM-8Y866XB1QYR69Z5I684BVBUI6MBZ2H0BC84CL7/employeeField_ksu8iqm5","invalid":false},{"from":{"line":0,"ch":39,"sticky":null},"to":{"line":0,"ch":44,"sticky":null},"value":"employeeField_ksudx6yc","invalid":false},{"from":{"line":0,"ch":49,"sticky":null},"to":{"line":0,"ch":61,"sticky":null},"value":"FORM-8Y866XB1QYR69Z5I684BVBUI6MBZ2H0BC84CL7/dateField_lc48ia6n","invalid":false},{"from":{"line":0,"ch":62,"sticky":null},"to":{"line":0,"ch":66,"sticky":null},"value":"dateField_lc48iwz8","invalid":false},{"from":{"line":0,"ch":71,"sticky":null},"to":{"line":0,"ch":85,"sticky":null},"value":"FORM-8Y866XB1QYR69Z5I684BVBUI6MBZ2H0BC84CL7/radioField_lc73huhr","invalid":false},{"from":{"line":0,"ch":86,"sticky":null},"to":{"line":0,"ch":92,"sticky":null},"value":"radioField_ksudx6yi","invalid":false},{"from":{"line":0,"ch":98,"sticky":null},"to":{"line":0,"ch":112,"sticky":null},"value":"FORM-8Y866XB1QYR69Z5I684BVBUI6MBZ2H0BC84CL7/numberField_ksu8iqm9","invalid":false},{"from":{"line":0,"ch":113,"sticky":null},"to":{"line":0,"ch":127,"sticky":null},"value":"FORM-8Y866XB1QYR69Z5I684BVBUI6MBZ2H0BC84CL7/numberField_ksu8iqm9","invalid":false},{"from":{"line":0,"ch":128,"sticky":null},"to":{"line":0,"ch":134,"sticky":null},"value":"numberField_ksudx6yo","invalid":false}],"isCmData":true}

{"text":"OR(ISEMPTY(​剩余假期天数​),GT(​请假时长​,​剩余假期天数​))","marks":[{"from":{"line":0,"ch":11,"sticky":null},"to":{"line":0,"ch":19,"sticky":null},"value":"numberField_ksudx6yg","invalid":false},{"from":{"line":0,"ch":24,"sticky":null},"to":{"line":0,"ch":30,"sticky":null},"value":"numberField_ksudx6yo","invalid":false},{"from":{"line":0,"ch":31,"sticky":null},"to":{"line":0,"ch":39,"sticky":null},"value":"numberField_ksudx6yg","invalid":false}],"isCmData":true}

3.効果を実現する

4.オンラインで試してみます

この文書は機械翻訳により生成されています。翻訳により生じた齟齬や相違点は拘束力を持たず、コンプライアンスや執行目的において法的効力はありません。
© DingTalk (Singapore) Private Limited