yuanzhi_kuang 1 dzień temu
rodzic
commit
8d0356f117

+ 66 - 4
mbos/mbos_其他外出.js

@@ -45,6 +45,8 @@ mbos('entries').bind('afterRendered', function (e) {
     mbos('entries_person',e.index).show();
     mbos('entries_person',e.index).attr("mustinput",true)
   }
+  // 出国(境)事由控制具体事由必填
+  _this.controlRemarkRequired(e.index);
   // 初始化审批流
   _this.getNextPerson();
 })
@@ -108,6 +110,9 @@ _this.save = function (event) {
   if(!_this.verify()){
     return false;
   }
+  if(!_this.validateRemarkRequired()){
+    return false;
+  }
   setModel()
   //debugger
   var param = getModel('', 'save');
@@ -121,13 +126,16 @@ _this.save = function (event) {
 _this.submit = function (event) {
   if(!_this.verify()){
     return false;
+  }
+  if(!_this.validateRemarkRequired()){
+    return false;
   }
     // 确认提交 弹框
   mbos.ui.showConfirm({
     title: localeResource.confirmSubmit,
     iconclass: "kdfont kdfont-zhuangtai_jingshi the_info",
     callback: function (data) {
-      if (data == 0) {     
+      if (data == 0) {
         setModel()
          //debugger
         var param = getModel('', 'submit');
@@ -243,7 +251,7 @@ function getStartEndTime(i) {
     setModel(i)
     var params = _.cloneDeep(mbos('entity').data)
     var endTime = params.entries[i].endTime
-    if (endTime && endTime.includes('00:00')) { // 防止结束日期会一直触发 
+    if (endTime && endTime.includes('00:00')) { // 防止结束日期会一直触发
       params.entries[i].endTime = moment(endTime).subtract(1, "minutes").format("YYYY-MM-DD HH:mm")
     }
     // 【BT-01684276】改为传一条分录数据
@@ -309,6 +317,60 @@ _this.lengthChange = function(event){
     })
     return
   }
-  
+
+}
+
+// 出国(境)事由:处理个人事务(枚举值 = 3)
+var CGSY_PERSONAL_AFFAIRS = '3';
+
+function isPersonalAffairs(cgsy) {
+  if (cgsy == null || cgsy === '') {
+    return false;
+  }
+  if (typeof cgsy === 'object') {
+    return String(cgsy.value != null ? cgsy.value : cgsy) === CGSY_PERSONAL_AFFAIRS;
+  }
+  return String(cgsy) === CGSY_PERSONAL_AFFAIRS;
+}
+
+// 出国(境)事由变更,设计器绑定 onChange = _this.cgsyChange
+_this.cgsyChange = function (event) {
+  _this.controlRemarkRequired(event.index);
+}
+
+// 控制具体事由必填 + 前端红星
+_this.controlRemarkRequired = function (index) {
+  var needReq = isPersonalAffairs(mbos('entries_cgsy', index).value());
+
+  // 1. 设置 MBOS 内部必录属性(给后台校验用)
+  mbos('entries_remark', index).attr('mustinput', needReq);
+
+  // 2. 找到具体事由的 label
+  var $fieldContainer = $('#entries_remark_' + index);
+  var $label = $fieldContainer.find('label.lclabel');
+  if (!$label.length) return;
+
+  // 3. 先移除旧的红星(防止重复添加)
+  $label.find('i.mustinput').remove();
+
+  // 4. 需要必填时,添加 MBOS 原生红星
+  if (needReq) {
+    $label.append('<i class="mustinput">*</i>');
+  }
 }
-        
+
+// 多分录具体事由必填校验
+_this.validateRemarkRequired = function () {
+  var entries = mbos('entity').data.entries;
+  if (!entries || entries.length === 0) return true;
+
+  for (var i = 0; i < entries.length; i++) {
+    var cgsy = mbos('entries_cgsy', i).value();
+    var remark = mbos('entries_remark', i).value();
+    if (isPersonalAffairs(cgsy) && (!remark || !String(remark).trim())) {
+      mbos.msgBox.showError('第' + (i + 1) + '行:出国(境)事由为【处理个人事务】时,请填写具体事由!');
+      return false;
+    }
+  }
+  return true;
+};

+ 1 - 1
mbos/mbos_其他外出_备份_20260727.js

@@ -311,4 +311,4 @@ _this.lengthChange = function(event){
   }
   
 }
-        
+